character encodings - first attempt
authorClaus Gittinger <cg@exept.de>
Tue, 10 Feb 2004 18:09:07 +0100
changeset 7899 7577df77ba95
parent 7898 05909f220181
child 7900 060183ed2ac8
character encodings - first attempt
CharacterArray.st
CharacterEncoder.st
StringCollection.st
--- a/CharacterArray.st	Tue Feb 10 18:03:35 2004 +0100
+++ b/CharacterArray.st	Tue Feb 10 18:09:07 2004 +0100
@@ -4263,7 +4263,8 @@
 !CharacterArray methodsFor:'encoding & decoding'!
 
 decodeFrom:encodingSymbol
-    "given the receiver encoded as described by encodingSymbol, 
+    "SOON OBSOLETED by CharacterEncoder
+     given the receiver encoded as described by encodingSymbol, 
      convert it into internal ST/X encoding and return a corresponding CharacterArray.
      Currently, only a few encodings are supported 
      (and those are untested/incomplete):
@@ -4355,7 +4356,8 @@
 !
 
 encodeForDisplayInto:encodingSymbol
-    "given the receiver in internal ST/X encoding, 
+    "SOON OBSOLETED by CharacterEncoder
+     given the receiver in internal ST/X encoding, 
      convert it into the format as described by encodingSymbol
      for display.
      The receiver may contain roman characters in 0..255, which
@@ -4408,8 +4410,13 @@
     "Modified: 2.7.1997 / 15:02:56 / cg"
 !
 
+encodeFrom:oldEncoding into:newEncoding
+    ^ CharacterEncoder encode:self from:oldEncoding into:newEncoding
+!
+
 encodeInto:encodingSymbol
-    "given the receiver in internal ST/X encoding, 
+    "SOON OBSOLETED by CharacterEncoder
+     given the receiver in internal ST/X encoding, 
      convert it into the format as described by encodingSymbol
      and return a corresponding CharacterArray.
      Currently, only a few encodings are supported 
@@ -6636,7 +6643,7 @@
 !CharacterArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.269 2004-02-06 10:41:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.270 2004-02-10 17:09:07 cg Exp $'
 ! !
 
 CharacterArray initialize!
--- a/CharacterEncoder.st	Tue Feb 10 18:03:35 2004 +0100
+++ b/CharacterEncoder.st	Tue Feb 10 18:09:07 2004 +0100
@@ -1,8 +1,20 @@
-"{ Package: 'stx:libbasic' }"
+"
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+
+"{ Package: '__NoProject__' }"
 
 Object subclass:#CharacterEncoder
 	instanceVariableNames:'name alternativeNames'
-	classVariableNames:'encodings'
+	classVariableNames:'EncodersByName'
 	poolDictionaries:''
 	category:'Collections-Text-Encodings'
 !
@@ -14,28 +26,35 @@
 "
 !
 
-CharacterEncoder subclass:#BIG5
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-CharacterEncoder subclass:#CNS11643
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-CharacterEncoder subclass:#GB2313_1980
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#GSM0338
+CharacterEncoder subclass:#SingleByteEncoder
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder subclass:#TwoByteEncoder
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::TwoByteEncoder subclass:#CNS11643
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::TwoByteEncoder subclass:#GB2313_1980
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#GSM0338
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -56,105 +75,105 @@
 	privateIn:CharacterEncoder
 !
 
-SingleByteEncoder subclass:#ISO8859_1
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_10
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_11
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_13
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_14
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_15
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_16
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_2
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_3
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_4
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_5
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_6
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_7
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_8
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#ISO8859_9
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_1
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_10
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_11
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_13
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_14
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_15
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_16
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_2
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_3
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_4
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_5
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_6
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_7
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_8
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ISO8859_9
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -189,14 +208,14 @@
 	privateIn:CharacterEncoder
 !
 
-SingleByteEncoder subclass:#KOI8_R
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#KOI8_U
+CharacterEncoder::SingleByteEncoder subclass:#KOI8_R
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#KOI8_U
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -210,245 +229,175 @@
 	privateIn:CharacterEncoder
 !
 
-SingleByteEncoder subclass:#MAC_Arabic
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_CentralEuropean
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Croatian
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Cyrillic
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Dingbats
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Farsi
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Greek
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Hebrew
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Iceland
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Japanese
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Korean
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Roman
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Romanian
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Symbol
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Thai
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Turkish
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MAC_Ukraine
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1006
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1250
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1251
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1252
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1253
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1254
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1255
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1256
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1257
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP1258
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP424
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP856
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP874
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP932
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP936
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP949
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#MS_CP950
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:CharacterEncoder
-!
-
-SingleByteEncoder subclass:#NEXT
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Arabic
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_CentralEuropean
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Croatian
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Cyrillic
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Dingbats
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Farsi
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Greek
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Hebrew
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Iceland
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Japanese
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Korean
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Roman
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Romanian
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Symbol
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Thai
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MAC_Turkish
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MS_Ansi
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MS_Arabic
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MS_Cyrillic
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MS_EastEuropean
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MS_Greek
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MS_Hebrew
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#MS_Turkish
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#NEXT
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder subclass:#NullEncoder
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -462,7 +411,21 @@
 	privateIn:CharacterEncoder
 !
 
-CharacterEncoder subclass:#SJIS
+CharacterEncoder::TwoByteEncoder subclass:#SJIS
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::SingleByteEncoder subclass:#ASCII
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
+!
+
+CharacterEncoder::TwoByteEncoder subclass:#BIG5
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -471,23 +434,132 @@
 
 !CharacterEncoder class methodsFor:'documentation'!
 
+copyright
+"
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
 documentation
 "
-    unfinished code.
-
-    Code is generated from charmaps found at:
-        ftp://dkuug.dk/i18n/charmaps
-"
-! !
-
-!CharacterEncoder class methodsFor:'defaults'!
-
-alternativeNamesOfEncoding
-    ^ #()
-!
-
-nameOfEncoding
-    ^ self nameWithoutPrefix asLowercase asSymbol
+    unfinished code - please read howToAddMoreCoders.
+
+    Character mappings are based on information in character maps found at either:
+        http://std.dkuug.dk/i18n/charmaps
+    or:
+        http://www.unicode.org/Public/MAPPINGS
+
+    No Warranty.
+"
+!
+
+examples
+"
+    |s1 s2|
+
+    s1 := 'hello'.
+    s2 := CharacterEncoder encode:s1 from:#'iso8859-1' into:#'unicode'.
+    s2
+
+
+    |s1 s2|
+
+    s1 := 'hello'.
+    s2 := CharacterEncoder encode:s1 from:#'iso8859-1' into:#'iso8859-7'.
+    s2
+"
+!
+
+howToAddMoreCoders
+"
+    The table driven encode/decode methods can be generated from a character mapping document
+    as found on the unicode consortium host
+        (for example: 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT')
+
+    or from the i18n character maps:
+        (for example: 'http://std.dkuug.dk/i18n/charmaps/ISO-8859-1
+
+    In order to add another coder (for example: for finish EBCDIC or ms-codePage 278),
+    perform the following steps:
+        - create a private subclass of SingleByteEncoder named (for example) CP267.
+
+        - define the mappingURL1_relativeName (if the table is found on 'www.unicode.org')
+          or the mappingURL2_relativeName (if it is found on 'std.dkuug.dk') method, which
+          should return the name of the tables file, relative to the top directory there
+          (which is '.../Public/MAPPINGS' on www.unicode.org and '.../i18n/charmaops' on 'std.dkuug.dk'.
+
+          In this example, the table from 'std.dkuug.dk' is used, and named 'EBCDIC-CP-FI' there.
+
+        - generate code by evaluating:
+            CharacterEncoder::CP267 generateCode
+
+    Thats all !!
+
+    CharacterEncoder::SingleByteEncoder allSubclassesDo:[:cls | cls flushCode; generateCode ]
+
+    CharacterEncoder::ASCII flushCode; generateCode
+    CharacterEncoder::ISO8859_1 flushCode; generateCode
+    CharacterEncoder::ISO8859_2 flushCode; generateCode
+    CharacterEncoder::ISO8859_3 flushCode; generateCode
+    CharacterEncoder::ISO8859_4 flushCode; generateCode
+    CharacterEncoder::ISO8859_5 flushCode; generateCode
+    CharacterEncoder::ISO8859_6 flushCode; generateCode
+    CharacterEncoder::ISO8859_7 flushCode; generateCode
+    CharacterEncoder::ISO8859_8 flushCode; generateCode
+    CharacterEncoder::ISO8859_9 flushCode; generateCode
+    CharacterEncoder::ISO8859_10 flushCode; generateCode
+    CharacterEncoder::ISO8859_11 flushCode; generateCode
+    CharacterEncoder::ISO8859_13 flushCode; generateCode
+    CharacterEncoder::ISO8859_14 flushCode; generateCode
+    CharacterEncoder::ISO8859_15 flushCode; generateCode
+    CharacterEncoder::ISO8859_16 flushCode; generateCode
+    CharacterEncoder::KOI8_R flushCode; generateCode
+
+"
+! !
+
+!CharacterEncoder class methodsFor:'class initialization'!
+
+initialize
+    EncodersByName := IdentityDictionary new.
+    EncodersByName at:#'iso8859-1' put:ISO8859_1.    
+    EncodersByName at:#'iso8859-2' put:ISO8859_2.    
+    EncodersByName at:#'iso8859-3' put:ISO8859_3.    
+    EncodersByName at:#'iso8859-4' put:ISO8859_4.    
+    EncodersByName at:#'iso8859-5' put:ISO8859_5.    
+    EncodersByName at:#'iso8859-6' put:ISO8859_6.    
+    EncodersByName at:#'iso8859-7' put:ISO8859_7.    
+    EncodersByName at:#'iso8859-8' put:ISO8859_8.    
+    EncodersByName at:#'iso8859-9' put:ISO8859_9.    
+    EncodersByName at:#'iso8859-10' put:ISO8859_10.    
+    EncodersByName at:#'iso8859-11' put:ISO8859_11.    
+    EncodersByName at:#'iso8859-13' put:ISO8859_13.    
+    EncodersByName at:#'iso8859-14' put:ISO8859_14.    
+    EncodersByName at:#'iso8859-15' put:ISO8859_15.    
+    EncodersByName at:#'iso8859-16' put:ISO8859_16.    
+
+    EncodersByName at:#'big5' put:BIG5.    
+    EncodersByName at:#'cns11643' put:CNS11643.    
+    EncodersByName at:#'gb2313-1980' put:GB2313_1980.    
+    EncodersByName at:#'jis0201' put:JIS0201.    
+    EncodersByName at:#'jis0208' put:JIS0208.    
+    EncodersByName at:#'jis0212' put:JIS0212.    
+    EncodersByName at:#'sjis' put:SJIS.    
+    EncodersByName at:#'ksc5601' put:KSC5601.    
+    EncodersByName at:#'koi8-r' put:KOI8_R.    
+    EncodersByName at:#'koi8-u' put:KOI8_U.    
+
+    "
+     self initialize
+    "
 ! !
 
 !CharacterEncoder class methodsFor:'encoding & decoding'!
@@ -509,24 +581,64 @@
      ISO8859_1 encodeString:(ISO8859_1 decodeString:'hello') 
 
      ISO8859_5 decodeString:(String 
-                                with:(Character value:16rE4)
-                                with:(Character value:16rE0)) 
+				with:(Character value:16rE4)
+				with:(Character value:16rE0)) 
     "
 !
 
-encode:aString as:newEncodingArg
-    |oldEncoding newEncoding|
-
+encode:aString from:oldEncodingArg into:newEncodingArg
+    |oldEncoding newEncoding encoder decoder encodedString decodedString|
+
+    oldEncoding := oldEncodingArg ? #'iso8859-1'.
     newEncoding := newEncodingArg ? #'iso8859-1'.
-
-    oldEncoding := aString encoding.
     oldEncoding == newEncoding ifTrue:[^ aString].
-    self halt.
-    ^ aString.
-!
-
-encodeString:aString
-    ^ self new encodeString:aString
+
+    oldEncoding == #unicode ifTrue:[
+        "/ unicode -> something
+        encoder := self encoderForName:newEncoding.
+        encodedString := encoder encodeString:aString.
+        ^ encodedString.
+    ].
+    newEncoding == #unicode ifTrue:[
+        "/ something -> unicode 
+        decoder := self encoderForName:oldEncoding.
+        decodedString := decoder decodeString:aString.
+        ^ decodedString.
+    ].
+
+    "/ do it as: oldEncoding -> unicode -> newEncoding
+
+    "/ something -> unicode 
+    decoder := self encoderForName:oldEncoding.
+    decodedString := decoder decodeString:aString.
+
+    "/ unicode -> something
+    encoder := self encoderForName:newEncoding.
+    encodedString := encoder encodeString:decodedString.
+    ^ encodedString
+
+!
+
+encode:aString into:newEncodingArg
+    ^ self encode:aString from:(aString encoding) into:newEncodingArg
+!
+
+encodeString:aUnicodeString
+    "given a string in unicode, return a string in my encoding for it"
+
+    |newString myCode uniCodePoint|
+
+    newString := self newString:(aUnicodeString size).
+    1 to:aUnicodeString size do:[:idx |
+        uniCodePoint := (aUnicodeString at:idx) asciiValue.
+        myCode := self encode:uniCodePoint.
+        newString at:idx put:(Character value:myCode).
+    ].
+    ^ newString
+
+    "
+     ISO8859_1 decodeString:'hello'
+    "
 ! !
 
 !CharacterEncoder class methodsFor:'private'!
@@ -542,7 +654,7 @@
     ].
     self allSubclassesDo:[:cls | 
         cls isAbstract ifFalse:[
-            cls generateEncoderCode.
+            cls generateCode.
         ]
     ].
 
@@ -564,21 +676,27 @@
     ^ self == CharacterEncoder
 !
 
+isSingleByteCode
+    self subclassResponsibility
+!
+
 new
     "singleton - there is only one"
 
     mySingleInstance isNil ifTrue:[
-        mySingleInstance := self basicNew initialize.
+	mySingleInstance := self basicNew initialize.
     ].
     ^ mySingleInstance
 ! !
 
 !CharacterEncoder class methodsFor:'private-mapping setup'!
 
-generateEncoderCode
+generateCode
     |tables codeTable nameTable 
      minCode maxCode minUnicode maxUnicode
-     firstDiff lastDiff source
+     firstDiff lastDiff 
+     firstUnicodeDiff lastUnicodeDiff
+     source unicodeTable unicodeNameTable
     |
 
     tables := self mappingTables.
@@ -588,6 +706,8 @@
     ].
     codeTable := tables at:1.
     nameTable := tables at:2.
+    unicodeTable := IdentityDictionary new.
+    unicodeNameTable := IdentityDictionary new.
 
     minCode := 16rFFFFFFF.
     maxCode := -1.
@@ -599,72 +719,365 @@
         maxCode := maxCode max:code.
         minUnicode := minUnicode min:uniCode.
         maxUnicode := maxUnicode max:uniCode.
+
+        unicodeTable at:uniCode put:code.
+        unicodeNameTable at:uniCode put:(nameTable at:code).
     ].
 
     "/ first difference...
     firstDiff := (minCode to:maxCode) detect:[:code | (codeTable at:code ifAbsent:nil) ~~ code] ifNone:nil.
     lastDiff := (maxCode to:minCode by:-1) detect:[:code | (codeTable at:code ifAbsent:nil) ~~ code] ifNone:nil.
 
+    firstUnicodeDiff := (minUnicode to:maxUnicode) detect:[:unicode | (unicodeTable at:unicode ifAbsent:nil) ~~ unicode] ifNone:nil.
+    lastUnicodeDiff := (maxUnicode to:minUnicode by:-1) detect:[:unicode | (unicodeTable at:unicode ifAbsent:nil) ~~ unicode] ifNone:nil.
+
     "/ generate the decoder...
 
     source := WriteStream on:(String new:200).
     source nextPutLine:'decode:code'.
-    source nextPutLine:'    "automatically generated by generateEncoderCode"'.
+    source nextPutLine:'    "decode from my encoding into unicode.'.
+    source nextPutLine:'     Do not modify - automatically generated by generateCode"'.
     source nextPutLine:''.
     firstDiff isNil ifTrue:[
         minCode ~~ 0 ifTrue:[
             source nextPutLine:'    code < ' , minCode printString , ' ifTrue:['.
-            source nextPutLine:'        self error:''invalid code''.'.
-            source nextPutLine:'        ^ $? asciiValue'. 
+            source nextPutLine:'        ^ self decodingError.'.
             source nextPutLine:'    ].'.
         ].
-        maxCode ~~ 255 ifTrue:[
+        true "maxCode ~~ 255" ifTrue:[
             source nextPutLine:'    code > ' , maxCode printString , ' ifTrue:['.
-            source nextPutLine:'        self error:''invalid code''.'.
-            source nextPutLine:'        ^ $? asciiValue'. 
+            source nextPutLine:'        ^ self decodingError.'.
             source nextPutLine:'    ].'.
         ].
         source nextPutLine:'    ^ code.'.
     ] ifFalse:[
         source nextPutLine:'    code < ' , firstDiff printString , ' ifTrue:[ ^ code ].'.
-        source nextPutLine:'    code > ' , maxCode printString , ' ifTrue:['.
-        source nextPutLine:'        self error:''invalid code''.'.
-        source nextPutLine:'        ^ $? asciiValue'. 
-        source nextPutLine:'    ].'.
+        true "maxCode ~~ 255" ifTrue:[
+            source nextPutLine:'    code > ' , maxCode printString , ' ifTrue:['.
+            source nextPutLine:'        ^ self decodingError.'.
+            source nextPutLine:'    ].'.
+        ].
         lastDiff > maxCode ifTrue:[
             source nextPutLine:'    code > ' , lastDiff printString , ' ifTrue:[ ^ code ].'.
         ].
-        source nextPutLine:'    ^ #('.
-        firstDiff to:lastDiff do:[:code |
-            |unicode unicodeCharacterName|
-
-            unicode := codeTable at:code ifAbsent:nil.
-            unicodeCharacterName := nameTable at:code ifAbsent:nil.
-            unicode isNil ifTrue:[
-                unicode := 16rFFFF.
-                unicodeCharacterName := 'invalid'.
-            ].
-            source nextPutAll:'       "' , '16r' , ((code printStringRadix:16) leftPaddedTo:4 with:$0).
-            source nextPutAll:'"    ' , '16r' , ((unicode printStringRadix:16) leftPaddedTo:4 with:$0).
-            unicodeCharacterName notNil ifTrue:[
-                source nextPutAll:' " ' , unicodeCharacterName , ' " '.
-            ].
-            source cr.
-        ].
-        source nextPutLine:'       ) at:(code - ' , (firstDiff-1) printString , ')'.
-    ].
+
+        self 
+            generateLookupFor:codeTable nameTable:nameTable from:firstDiff to:lastDiff varName:'code' 
+            errorCode:'^ self decodingError.' 
+            indent:4 onto:source.
+    ].
+self halt.
     self 
         compile:source contents
         classified:'encoding & decoding'.
 
+
+    "/ generate the encoder...
+
+    source := WriteStream on:(String new:200).
+    source nextPutLine:'encode:unicode'.
+    source nextPutLine:'    "encode from unicode into my encoding.'.
+    source nextPutLine:'     Do not modify - automatically generated by generateCode"'.
+    source nextPutLine:''.
+    firstDiff isNil ifTrue:[
+        minUnicode ~~ 0 ifTrue:[
+            source nextPutLine:'    unicode < ' , minUnicode printString , ' ifTrue:['.
+            source nextPutLine:'        ^ self encodingError.'.
+            source nextPutLine:'    ].'.
+        ].
+        true "maxUnicode ~~ 255" ifTrue:[
+            source nextPutLine:'    unicode > ' , maxUnicode printString , ' ifTrue:['.
+            source nextPutLine:'        ^ self encodingError.'.
+            source nextPutLine:'    ].'.
+        ].
+        source nextPutLine:'    ^ unicode.'.
+    ] ifFalse:[
+        source nextPutLine:'    unicode < ' , firstUnicodeDiff printString , ' ifTrue:[ ^ unicode ].'.
+        source nextPutLine:'    unicode > ' , maxUnicode printString , ' ifTrue:['.
+        source nextPutLine:'        ^ self encodingError.'.
+        source nextPutLine:'    ].'.
+        lastDiff > maxCode ifTrue:[
+            source nextPutLine:'    unicode > ' , lastUnicodeDiff printString , ' ifTrue:[ ^ unicode ].'.
+        ].
+
+        self 
+            generateLookupFor:unicodeTable nameTable:unicodeNameTable from:firstUnicodeDiff to:lastUnicodeDiff varName:'unicode' 
+            errorCode:'^ self encodingError'  
+            indent:4 onto:source.
+    ].
+
+    self 
+        compile:source contents
+        classified:'encoding & decoding'
+        logged:false.
+
     "
-     ISO8859_1 flushCode; generateEncoderCode
-     ISO8859_2 flushCode; generateEncoderCode
-     KOI8_U flushCode; generateEncoderCode
-     NEXT flushCode; generateEncoderCode
+     ISO8859_1 flushCode; generateCode
+     ISO8859_2 flushCode; generateCode
+     KOI8_U flushCode; generateCode
+     NEXT flushCode; generateCode
     "
 !
 
+generateDirectTableLookupFor:codeTable nameTable:nameTable from:firstIndex to:lastIndex varName:codeVar errorCode:errorCode indent:indent onto:stream
+    "/ generate direct table lookup
+
+    |maxElement useByteArray valPad anyInvalid usedElements invalidMarker|
+
+    anyInvalid := false.
+    usedElements := IdentitySet new.
+    maxElement := -1.
+    firstIndex to:lastIndex do:[:code |
+        |unicode|
+
+        unicode := codeTable at:code ifAbsent:nil.
+        unicode notNil ifTrue:[
+            usedElements add:unicode.
+            maxElement := maxElement max:unicode.  
+        ] ifFalse:[
+            anyInvalid := true.
+        ]
+    ].
+
+    useByteArray := maxElement <= 255.
+
+    (usedElements includes:0) ifFalse:[
+        invalidMarker := 0.
+    ] ifTrue:[
+        useByteArray ifTrue:[
+            (usedElements includes:255) ifFalse:[
+                invalidMarker := 255.
+            ] ifFalse:[
+                invalidMarker := (1 to:255) detect:[:n | (usedElements includes:n) not].
+            ].
+        ] ifFalse:[
+            (usedElements includes:16rFFFF) ifFalse:[
+                invalidMarker := 16rFFFF.
+            ] ifTrue:[
+                invalidMarker := maxElement + 1.
+            ]
+        ].
+    ].
+
+    anyInvalid ifTrue:[
+        stream spaces:indent; nextPutLine:'['.
+        stream spaces:indent; nextPutLine:'|t|'.
+        stream spaces:indent; nextPutLine:'t := '.
+    ] ifFalse:[
+        stream spaces:indent; nextPutLine:'^ '.
+    ].
+    useByteArray ifTrue:[
+        valPad := 2.
+        stream nextPutLine:'#['.
+    ] ifFalse:[
+        valPad := 4.
+        stream nextPutLine:'#('.
+    ].
+    firstIndex to:lastIndex do:[:code |
+        |unicode unicodeCharacterName|
+
+        unicode := codeTable at:code ifAbsent:nil.
+        unicodeCharacterName := nameTable at:code ifAbsent:nil.
+        unicode isNil ifTrue:[
+            unicode := invalidMarker.
+            unicodeCharacterName := 'invalid'.
+        ].
+        stream spaces:indent; nextPutAll:'   "' , '16r' , ((code printStringRadix:16) leftPaddedTo:4 with:$0).
+        stream nextPutAll:'"    ' , '16r' , ((unicode printStringRadix:16) leftPaddedTo:valPad with:$0).
+        unicodeCharacterName notNil ifTrue:[
+            stream nextPutAll:' " ' , unicodeCharacterName , ' " '.
+        ].
+        stream cr.
+    ].
+    useByteArray ifTrue:[
+        stream spaces:indent; nextPutAll:'   ]'.
+    ] ifFalse:[
+        stream spaces:indent; nextPutAll:'   )'.
+    ].
+    stream nextPutLine:' at:(',codeVar,' - ' , (firstIndex-1) printString , ').'.
+
+    anyInvalid ifTrue:[
+        stream spaces:indent; nextPutLine:'t == ',invalidMarker printString,' ifFalse:[^ t].'.
+        stream spaces:indent; nextPutLine:errorCode.
+        stream spaces:indent; nextPutLine:'] value.'.
+    ].
+!
+
+generateLookupFor:codeTable nameTable:nameTable from:firstIndex to:lastIndex varName:codeVar errorCode:errorCode indent:indent onto:stream
+    |info fillRatio firstValidNonIdentical lastValidNonIdentical|
+
+    info := self mapInfoFor:codeTable from:firstIndex to:lastIndex.
+    fillRatio := info validRangeSize / info domainSize.
+
+    fillRatio < 1 ifTrue:[
+        "/ some mappings are invalid
+
+        info domainSize > 100 ifTrue:[
+            "/ is there a part of the mapping which is either identtity-mapping or error ?
+            firstValidNonIdentical := (firstIndex to:lastIndex) detect:[:idx | (codeTable includesKey:idx)
+                                                                               and:[(codeTable at:idx) ~~ idx]].
+    
+            lastValidNonIdentical := (lastIndex to:firstIndex by:-1) detect:[:idx | (codeTable includesKey:idx)
+                                                                               and:[(codeTable at:idx) ~~ idx]].
+
+            (firstIndex to:firstValidNonIdentical-1) size > 40 ifTrue:[
+                stream spaces:indent; nextPutLine:codeVar,' < ',firstValidNonIdentical printString,' ifTrue:['.
+                self 
+                    generateLookupForIdenticalOrInvalid:codeTable nameTable:nameTable from:firstIndex to:firstValidNonIdentical-1 varName:codeVar 
+                    errorCode:errorCode 
+                    indent:indent+4 onto:stream.
+                stream spaces:indent; nextPutLine:'].'.
+                self 
+                    generateLookupFor:codeTable nameTable:nameTable from:firstValidNonIdentical to:lastIndex varName:codeVar 
+                    errorCode:errorCode 
+                    indent:indent onto:stream.
+                ^ self.
+            ].
+            info largestInvalidBlock size > 40 ifTrue:[
+                stream spaces:indent; nextPutLine:codeVar,' < ',info largestInvalidBlock start printString,' ifTrue:['.
+                self 
+                    generateLookupFor:codeTable nameTable:nameTable from:firstIndex to:(info largestInvalidBlock start-1) varName:codeVar 
+                    errorCode:errorCode 
+                    indent:indent+4 onto:stream.
+                stream spaces:indent; nextPutLine:'].'.
+                "/ invalid block...
+                stream spaces:indent; nextPutLine:codeVar,' <= ',info largestInvalidBlock stop printString,' ifTrue:['.
+                stream spaces:indent+4; nextPutLine:errorCode,'.'.
+                stream spaces:indent; nextPutLine:'].'.
+                self 
+                    generateLookupFor:codeTable nameTable:nameTable from:(info largestInvalidBlock stop+1) to:lastIndex varName:codeVar 
+                    errorCode:errorCode 
+                    indent:indent onto:stream.
+                ^ self.
+            ].
+            "/ how would it look if we did it page-wise ?
+self halt.
+        ] ifFalse:[    
+            info firstInvalid == firstIndex ifTrue:[
+                (firstIndex to:info firstValid) size > 10 ifTrue:[
+                    "/ invalid block at beginning...
+                    stream spaces:indent; nextPutLine:codeVar,' < ',info firstValid printString,' ifTrue:['.
+                    stream spaces:indent+4; nextPutLine:errorCode,'.'.
+                    stream spaces:indent; nextPutLine:'].'.
+
+                    self 
+                        generateLookupFor:codeTable nameTable:nameTable from:(info firstValid) to:lastIndex varName:codeVar 
+                        errorCode:errorCode 
+                        indent:indent onto:stream.
+                    ^ self.
+                ].
+            ].
+            info lastInvalid == lastIndex ifTrue:[
+self halt.
+            ].
+self halt.
+        ]
+    ].
+
+    self 
+        generateDirectTableLookupFor:codeTable nameTable:nameTable from:firstIndex to:lastIndex varName:codeVar 
+        errorCode:errorCode 
+        indent:indent onto:stream
+!
+
+generateLookupForIdenticalOrInvalid:codeTable nameTable:nameTable from:firstIndex to:lastIndex varName:codeVar errorCode:errorCode indent:indent onto:stream.
+    "/ generate flag lookup for either identity or invalid
+
+    stream spaces:indent; nextPutLine:'(#['.
+    firstIndex to:lastIndex do:[:code |
+        |unicode unicodeCharacterName flag|
+
+        unicode := codeTable at:code ifAbsent:nil.
+        unicodeCharacterName := nameTable at:code ifAbsent:nil.
+        unicode notNil ifTrue:[
+            flag := 1
+        ] ifFalse:[
+            flag := 0.
+            unicodeCharacterName := 'invalid'.
+        ].
+        stream spaces:indent; nextPutAll:'   "' , '16r' , ((code printStringRadix:16) leftPaddedTo:4 with:$0).
+        stream nextPutAll:'"    ' , flag printString.
+        unicodeCharacterName notNil ifTrue:[
+            stream nextPutAll:' " ' , unicodeCharacterName , ' " '.
+        ].
+        stream cr.
+    ].
+    stream spaces:indent; nextPutLine:'] at:(',codeVar,' - ' , (firstIndex-1) printString , ')) ~~ 0 ifTrue:[^ ',codeVar,'].'..
+    stream spaces:indent; nextPutLine:errorCode,'.'.
+!
+
+mapInfoFor:codeTable from:firstIndex to:lastIndex
+    |minCode maxCode domainSize rangeSize validRangeSize firstDiff lastDiff firstValid lastValid firstInvalid lastInvalid info
+     largestInvalidBlock invalidBlockStart invalidBlockEnd sizeOfLargestInvalidBlock|
+
+    minCode := 16rFFFFFFF.
+    maxCode := -1.
+    validRangeSize := 0.
+
+    sizeOfLargestInvalidBlock := 0.
+    largestInvalidBlock := nil.
+    invalidBlockStart := nil.
+    invalidBlockEnd := nil.
+
+    (firstIndex to:lastIndex) do:[:index |
+        |code|
+
+        code := codeTable at:index ifAbsent:nil.
+        code notNil ifTrue:[
+            validRangeSize := validRangeSize + 1.
+            minCode := minCode min:code.
+            maxCode := maxCode max:code.
+
+            invalidBlockStart notNil ifTrue:[    
+                (invalidBlockStart to:invalidBlockEnd) size > sizeOfLargestInvalidBlock ifTrue:[
+                    largestInvalidBlock := (invalidBlockStart to:invalidBlockEnd).
+                    sizeOfLargestInvalidBlock := largestInvalidBlock size.
+                ].
+            ].
+            invalidBlockStart := nil.
+            invalidBlockEnd := nil.
+        ] ifFalse:[
+            invalidBlockStart isNil ifTrue:[
+                invalidBlockStart := invalidBlockEnd := index.
+            ] ifFalse:[
+                invalidBlockEnd := index.
+            ].
+        ]
+    ].
+    invalidBlockStart notNil ifTrue:[    
+self halt.
+        (invalidBlockStart to:invalidBlockEnd) size > sizeOfLargestInvalidBlock ifTrue:[
+            largestInvalidBlock := (invalidBlockStart to:invalidBlockEnd).
+        ].
+    ].
+
+    domainSize := (firstIndex to:lastIndex) size.
+    rangeSize := (minCode to:maxCode) size.
+
+    "/ first difference...
+    firstDiff := (firstIndex to:lastIndex) detect:[:code | (codeTable at:code ifAbsent:nil) ~~ code] ifNone:nil.
+    lastDiff := (lastIndex to:firstIndex by:-1) detect:[:code | (codeTable at:code ifAbsent:nil) ~~ code] ifNone:nil.
+
+    firstValid := (firstIndex to:lastIndex) detect:[:code | (codeTable includesKey:code)] ifNone:nil.
+    lastValid := (lastIndex to:firstIndex by:-1) detect:[:code | (codeTable includesKey:code)] ifNone:nil.
+
+    firstInvalid := (firstIndex to:lastIndex) detect:[:code | (codeTable includesKey:code) not] ifNone:nil.
+    lastInvalid := (lastIndex to:firstIndex by:-1) detect:[:code | (codeTable includesKey:code) not] ifNone:nil.
+
+    info := Structure newWith:#( domainSize rangeSize validRangeSize firstDiff lastDiff firstValid lastValid firstInvalid lastInvalid largestInvalidBlock ).
+    info domainSize:domainSize.
+    info rangeSize:rangeSize.
+    info validRangeSize:validRangeSize.
+    info firstDiff:firstDiff.
+    info lastDiff:lastDiff.
+    info firstValid:firstValid.
+    info lastValid:lastValid.
+    info firstInvalid:firstInvalid.
+    info lastInvalid:lastInvalid.
+    info largestInvalidBlock:largestInvalidBlock.
+    ^ info.
+!
+
 mappingSource
     |url m response text source|
 
@@ -674,8 +1087,11 @@
         url notNil ifTrue:[
             response := HTTPInterface get:url.
         ] ifFalse:[
-            url := self mappingURL.
-            response := HTTPInterface get:(self mappingURL).
+            url := self mappingURL1.
+            url isNil ifTrue:[
+                self error:'neither url1 nor url2 is defined (needed for mappingTables)'.
+            ].
+            response := HTTPInterface get:(self mappingURL1).
         ].
         text := response data.
         text replaceAll:$" with:$'.
@@ -683,7 +1099,6 @@
         source := 'mapping\"\# From: ' withCRs, url, '\\' withCRs, text , '\"' withCRs.
 
         source size > 30000 ifTrue:[ 
-            self halt.
             ^ source
         ].
         
@@ -704,8 +1119,16 @@
 !
 
 mappingTables
+    "reads and parses the character maps;
+     Returns an array with 2 tables:
+     - the first maps codes to uniCode
+     - the second maps codes to uniCode character names."
+
     |src codeTable nameTable|
 
+    "/ the code here reads mappings from unicode.org.
+    "/ the i18n charactermaps are read in a separate method.
+
     src := self mappingSource.
     src readStream linesDo:[:line |
         |l|
@@ -753,22 +1176,36 @@
     "
 !
 
-mappingURL
+mappingURL1
     "raise an error: must be redefined in concrete subclass(es)"
 
-    ^ self subclassResponsibility
+    |rel|
+
+    rel := self mappingURL1_relativePathName.
+    rel isNil ifTrue:[^ nil].
+    ^ 'http://www.unicode.org/Public/MAPPINGS/' , rel
+!
+
+mappingURL1_relativePathName
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ nil
 !
 
 mappingURL2
     "raise an error: must be redefined in concrete subclass(es)"
-
-    ^ 'http://std.dkuug.dk/i18n/charmaps/' , self mappingURL2_baseName
-!
-
-mappingURL2_baseName
+    
+    |rel|
+
+    rel := self mappingURL2_relativePathName.
+    rel isNil ifTrue:[^ nil].
+    ^ 'http://std.dkuug.dk/i18n/charmaps/' , rel
+!
+
+mappingURL2_relativePathName
     "raise an error: must be redefined in concrete subclass(es)"
-
-    ^ self subclassResponsibility
+    
+    ^ nil
 !
 
 readI18NCharmapFrom:src
@@ -778,85 +1215,85 @@
     |codeTable nameTable commentChar escapeChar|
 
     src readStream linesDo:[:line |
-        |l|
-
-        l := line withoutSeparators.
-        (l startsWith:commentChar) ifTrue:[
-        ] ifFalse:[
-            (l startsWith:'<') ifTrue:[
-                |s w code uniCode characterComment rest|
-
-                s := l readStream.
-                w := WriteStream on:(String new:10).
-                s next.
-
-                [                                        
-                    |ch|
-                    [
-
-                        ch := s nextOrNil.
-                        ch == escapeChar ifTrue:[
-                            s nextOrNil.
-                            true
-                        ] ifFalse:[
-                            ch notNil and:[ch ~~ $>] 
-                        ]
-                    ] whileTrue:[ w nextPut:ch ].
-                ] doUntil:[(s atEnd or:[s peek ~~ $>])].
-                w := w contents.
-                s skipSeparators.
-                rest := s upToEnd.
-                w = 'code_set_name' ifTrue:[
-                ] ifFalse:[
-                    w = 'comment_char' ifTrue:[
-                        commentChar := rest first.
-                    ] ifFalse:[
-                        w = 'escape_char' ifTrue:[
-                            escapeChar := rest first.
-                        ] ifFalse:[
-                            s := rest readStream.
-                            s peek == escapeChar ifTrue:[
-                                s next.
-                                s peek == $x ifTrue:[
-                                    s next.
-                                    code := Integer readFrom:s radix:16.
-                                    s skipSeparators.
-                                    s peek == $< ifTrue:[
-                                        s next.
-                                        s peek == $U ifTrue:[
-                                            s next.
-                                            uniCode := Integer readFrom:s radix:16.
-                                            s peek == $> ifTrue:[
-                                                s next.
-                                                s skipSeparators.
-                                                characterComment := s upToEnd withoutSeparators.
-                                                codeTable isNil ifTrue:[
-                                                    codeTable := IdentityDictionary new.
-                                                    nameTable := IdentityDictionary new.
-                                                ].
-                                                codeTable at:code put:uniCode.
-                                                nameTable at:code put:characterComment.
-
-                                            ] ifFalse:[
-                                                self halt.    
-                                            ].
-                                        ] ifFalse:[
-                                            self halt.    
-                                        ].
-                                    ] ifFalse:[
-                                        self halt.    
-                                    ].
-                                ] ifFalse:[
-                                    self halt.    
-                                ].
-                            ] ifFalse:[
-                                self halt.    
-                            ]
-                        ]
-                    ]
-                ].
-            ].
-        ].
+	|l|
+
+	l := line withoutSeparators.
+	(l startsWith:commentChar) ifTrue:[
+	] ifFalse:[
+	    (l startsWith:'<') ifTrue:[
+		|s w code uniCode characterComment rest|
+
+		s := l readStream.
+		w := WriteStream on:(String new:10).
+		s next.
+
+		[                                        
+		    |ch|
+		    [
+
+			ch := s nextOrNil.
+			ch == escapeChar ifTrue:[
+			    s nextOrNil.
+			    true
+			] ifFalse:[
+			    ch notNil and:[ch ~~ $>] 
+			]
+		    ] whileTrue:[ w nextPut:ch ].
+		] doUntil:[(s atEnd or:[s peek ~~ $>])].
+		w := w contents.
+		s skipSeparators.
+		rest := s upToEnd.
+		w = 'code_set_name' ifTrue:[
+		] ifFalse:[
+		    w = 'comment_char' ifTrue:[
+			commentChar := rest first.
+		    ] ifFalse:[
+			w = 'escape_char' ifTrue:[
+			    escapeChar := rest first.
+			] ifFalse:[
+			    s := rest readStream.
+			    s peek == escapeChar ifTrue:[
+				s next.
+				s peek == $x ifTrue:[
+				    s next.
+				    code := Integer readFrom:s radix:16.
+				    s skipSeparators.
+				    s peek == $< ifTrue:[
+					s next.
+					s peek == $U ifTrue:[
+					    s next.
+					    uniCode := Integer readFrom:s radix:16.
+					    s peek == $> ifTrue:[
+						s next.
+						s skipSeparators.
+						characterComment := s upToEnd withoutSeparators.
+						codeTable isNil ifTrue:[
+						    codeTable := IdentityDictionary new.
+						    nameTable := IdentityDictionary new.
+						].
+						codeTable at:code put:uniCode.
+						nameTable at:code put:characterComment.
+
+					    ] ifFalse:[
+						self halt.    
+					    ].
+					] ifFalse:[
+					    self halt.    
+					].
+				    ] ifFalse:[
+					self halt.    
+				    ].
+				] ifFalse:[
+				    self halt.    
+				].
+			    ] ifFalse:[
+				self halt.    
+			    ]
+			]
+		    ]
+		].
+	    ].
+	].
     ].
     codeTable isNil ifTrue:[^ nil].
     ^ Array with:codeTable with:nameTable
@@ -869,6 +1306,48 @@
     "
 ! !
 
+!CharacterEncoder class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #()
+!
+
+encoderForName:encodingNameSymbol
+    |cls lcName name|
+
+    lcName := encodingNameSymbol asLowercase asSymbolIfInterned.
+    name := lcName ? encodingNameSymbol.
+
+    cls := EncodersByName at:name ifAbsent:nil.
+    cls notNil ifTrue:[^ cls ].
+
+    self allSubclassesDo:[:cls |
+        cls nameOfEncoding = name ifTrue:[
+            EncodersByName at:name put:cls.    
+            ^ cls.
+        ].
+    ].
+    self allSubclassesDo:[:cls |
+        (cls alternativeNamesOfEncoding includes:name) ifTrue:[
+            EncodersByName at:name put:cls.    
+            ^ cls.
+        ].
+    ].
+    self error:'no encoder for ' , encodingNameSymbol mayProceed:true.
+    ^ NullEncoder
+
+    "
+     self encoderForName:#'arabic'
+     self encoderForName:#'iso8859-5'
+     self encoderForName:#'koi8-r'
+     self encoderForName:#'koi8-u'
+    "
+!
+
+nameOfEncoding
+    ^ self nameWithoutPrefix asLowercase asSymbol
+! !
+
 !CharacterEncoder methodsFor:'encoding & decoding'!
 
 decode:anEncoding
@@ -884,11 +1363,11 @@
 
     newString := UnicodeString new:(anEncodedString size).
     1 to:anEncodedString size do:[:idx |
-        |myCode uniCodePoint|
-
-        myCode := (anEncodedString at:idx) asciiValue.
-        uniCodePoint := self decode:myCode.
-        newString at:idx put:(Character value:uniCodePoint).
+	|myCode uniCodePoint|
+
+	myCode := (anEncodedString at:idx) asciiValue.
+	uniCodePoint := self decode:myCode.
+	newString at:idx put:(Character value:uniCodePoint).
     ].
     ^ newString
 
@@ -906,12 +1385,10 @@
 encodeString:aUnicodeString
     "given a string in unicode, return a string in my encoding for it"
 
-    |newString|
+    |newString myCode uniCodePoint|
 
     newString := self newString:(aUnicodeString size).
     1 to:aUnicodeString size do:[:idx |
-        |myCode uniCodePoint|
-
         uniCodePoint := (aUnicodeString at:idx) asciiValue.
         myCode := self encode:uniCodePoint.
         newString at:idx put:(Character value:myCode).
@@ -923,6 +1400,32 @@
     "
 ! !
 
+!CharacterEncoder methodsFor:'error handling'!
+
+decodingError 
+    ^ CharacterEncoderError raiseRequestWith:(self defaultEncoderValue) errorString:'invalid code'    
+!
+
+defaultDecoderValue
+    "placed into a decoded string, in case there is no unicode codePoint
+     for a given encoded codePoint.
+     (typically $?)."
+    
+    ^ $? asciiValue
+!
+
+defaultEncoderValue
+    "placed into an encoded string, in case there is no codePoint
+     for a given unicode codePoint.
+     (typically $?)."
+
+    ^ $? asciiValue
+!
+
+encodingError
+    ^ CharacterEncoderError raiseRequestWith:(self defaultDecoderValue) errorString:'unrepresentable unicode'    
+! !
+
 !CharacterEncoder methodsFor:'private'!
 
 initialize
@@ -938,28 +1441,46 @@
     self subclassResponsibility
 ! !
 
-!CharacterEncoder::BIG5 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT'
-! !
-
-!CharacterEncoder::BIG5 methodsFor:'private'!
+!CharacterEncoder::SingleByteEncoder class methodsFor:'private'!
+
+isAbstract
+    self == CharacterEncoder::SingleByteEncoder ifTrue:[^ true].
+    ^ super isAbstract
+!
+
+isSingleByteCode
+    ^ true
+!
 
 newString:size
-    ^ BIG5EncodedString new:size
+    ^ String uninitializedNew:size
+! !
+
+!CharacterEncoder::TwoByteEncoder class methodsFor:'private'!
+
+isAbstract
+    self == CharacterEncoder::TwoByteEncoder ifTrue:[^ true].
+    ^ super isAbstract
+!
+
+isSingleByteCode
+    ^ false
+!
+
+newString:size
+    ^ TwoByteString uninitializedNew:size
 ! !
 
 !CharacterEncoder::CNS11643 class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/CNS11643.TXT'
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/OTHER/CNS11643.TXT'
 ! !
 
 !CharacterEncoder::GB2313_1980 class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/GB/GB2312.TXT'
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/GB/GB2312.TXT'
 ! !
 
 !CharacterEncoder::GB2313_1980 methodsFor:'private'!
@@ -970,20 +1491,7289 @@
 
 !CharacterEncoder::GSM0338 class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ETSI/GSM0338.TXT'
+mapping
+"
+# From: http://www.unicode.org/Public/MAPPINGS/ETSI/GSM0338.TXT
+
+#
+#	Name:             GSM 03.38 to Unicode
+#	Unicode version:  3.0
+#	Table version:    1.1
+#	Table format:     Format A
+#	Date:             2000 May 30
+#	Authors:          Ken Whistler <kenw@sybase.com>,
+#                         Kent Karlsson <keka@im.se>,
+#                         Markus Kuhn <mkuhn@acm.org>
+#
+#	Copyright (c) 2000 Unicode, Inc.  All Rights reserved.
+#
+#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
+#	No claims are made as to fitness for any particular purpose.  No
+#	warranties of any kind are expressed or implied.  The recipient
+#	agrees to determine applicability of information provided.  If this
+#	file has been provided on optical media by Unicode, Inc., the sole
+#	remedy for any claim will be exchange of defective media within 90
+#	days of receipt.
+#
+#	Unicode, Inc. hereby grants the right to freely use the information
+#	supplied in this file in the creation of products supporting the
+#	Unicode Standard, and to make copies of this file in any form for
+#	internal or external distribution as long as this notice remains
+#	attached.
+#
+#	General notes:
+#
+#	This table contains the data the Unicode Consortium has on how
+#       ETSI GSM 03.38 7-bit default alphabet characters map into Unicode.
+#	This mapping is based on ETSI TS 100 900 V7.2.0 (1999-07), with
+#	a correction of 0x09 to *small* c-cedilla, instead of *capital*
+#	C-cedilla.
+#
+#	Format:  Three tab-separated columns
+#		 Column #1 is the ETSI GSM 03.38 7-bit default alphabet 
+#                             code (in hex as 0xXX, or 0xXXXX for double-byte
+#                             sequences)
+#		 Column #2 is the Unicode scalar value (in hex as 0xXXXX)
+#		 Column #3 the Unicode name (follows a comment sign, '#')
+#
+#	The entries are in ETSI GSM 03.38 7-bit default alphabet code order.
+#
+#       Note that ETSI GSM 03.38 also allows for the use of UCS-2 (UTF-16
+#       restricted to the BMP) in GSM/SMS messages.
+#
+#	Note also that there are commented Greek mappings for some 
+#	capital Latin characters. This follows from the clear intent
+#	of the ETSI GSM 03.38 to have glyph coverage for the uppercase
+#	Greek alphabet by reusing Latin letters that have the same 
+#	form as an uppercase Greek letter. Conversion implementations 
+#	should be aware of this fact.
+#
+#       The ETSI GSM 03.38 specification shows an uppercase C-cedilla
+#       glyph at 0x09. This may be the result of limited display
+#       capabilities for handling characters with descenders. However, the
+#       language coverage intent is clearly for the lowercase c-cedilla, as shown
+#       in the mapping below. The mapping for uppercase C-cedilla is shown
+#       in a commented line in the mapping table.
+#
+#	The ESC character 0x1B is
+#	mapped to the no-break space character, unless it is part of a
+#	valid ESC sequence, to facilitate round-trip compatibility in
+#	the presence of unknown ESC sequences.
+#
+#	0x00 is NULL (when followed only by 0x00 up to the
+#	end of (fixed byte length) message, possibly also up to
+#	FORM FEED.  But 0x00 is also the code for COMMERCIAL AT
+#	when some other character (CARRIAGE RETURN if nothing else)
+#	comes after the 0x00.
+#
+#	Version history
+#	1.0 version: first creation
+#	1.1 version: fixed problem with the wrong line being a comment,
+#			added text regarding 0x00's interpretation,
+#                       added second mapping for C-cedilla,
+#                       added mapping of 0x1B escape to NBSP for display.
+#
+#	Updated versions of this file may be found in:
+#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
+#
+#	Any comments or problems, contact <errata@unicode.org>
+#	Please note that <errata@unicode.org> is an archival address;
+#	notices will be checked, but do not expect an immediate response.
+#
+0x00	0x0040	#	COMMERCIAL AT
+#0x00	0x0000	#	NULL (see note above)
+0x01	0x00A3	#	POUND SIGN
+0x02	0x0024	#	DOLLAR SIGN
+0x03	0x00A5	#	YEN SIGN
+0x04	0x00E8	#	LATIN SMALL LETTER E WITH GRAVE
+0x05	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
+0x06	0x00F9	#	LATIN SMALL LETTER U WITH GRAVE
+0x07	0x00EC	#	LATIN SMALL LETTER I WITH GRAVE
+0x08	0x00F2	#	LATIN SMALL LETTER O WITH GRAVE
+0x09	0x00E7	#	LATIN SMALL LETTER C WITH CEDILLA
+#0x09	0x00C7	#	LATIN CAPITAL LETTER C WITH CEDILLA (see note above)
+0x0A	0x000A	#	LINE FEED
+0x0B	0x00D8	#	LATIN CAPITAL LETTER O WITH STROKE
+0x0C	0x00F8	#	LATIN SMALL LETTER O WITH STROKE
+0x0D	0x000D	#	CARRIAGE RETURN
+0x0E	0x00C5	#	LATIN CAPITAL LETTER A WITH RING ABOVE
+0x0F	0x00E5	#	LATIN SMALL LETTER A WITH RING ABOVE
+0x10	0x0394	#	GREEK CAPITAL LETTER DELTA
+0x11	0x005F	#	LOW LINE
+0x12	0x03A6	#	GREEK CAPITAL LETTER PHI
+0x13	0x0393	#	GREEK CAPITAL LETTER GAMMA
+0x14	0x039B	#	GREEK CAPITAL LETTER LAMDA
+0x15	0x03A9	#	GREEK CAPITAL LETTER OMEGA
+0x16	0x03A0	#	GREEK CAPITAL LETTER PI
+0x17	0x03A8	#	GREEK CAPITAL LETTER PSI
+0x18	0x03A3	#	GREEK CAPITAL LETTER SIGMA
+0x19	0x0398	#	GREEK CAPITAL LETTER THETA
+0x1A	0x039E	#	GREEK CAPITAL LETTER XI
+0x1B	0x00A0	#	ESCAPE TO EXTENSION TABLE (or displayed as NBSP, see note above)
+0x1B0A	0x000C	#	FORM FEED
+0x1B14	0x005E	#	CIRCUMFLEX ACCENT
+0x1B28	0x007B	#	LEFT CURLY BRACKET
+0x1B29	0x007D	#	RIGHT CURLY BRACKET
+0x1B2F	0x005C	#	REVERSE SOLIDUS
+0x1B3C	0x005B	#	LEFT SQUARE BRACKET
+0x1B3D	0x007E	#	TILDE
+0x1B3E	0x005D	#	RIGHT SQUARE BRACKET
+0x1B40	0x007C	#	VERTICAL LINE
+0x1B65	0x20AC	#	EURO SIGN
+0x1C	0x00C6	#	LATIN CAPITAL LETTER AE
+0x1D	0x00E6	#	LATIN SMALL LETTER AE
+0x1E	0x00DF	#	LATIN SMALL LETTER SHARP S (German)
+0x1F	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
+0x20	0x0020	#	SPACE
+0x21	0x0021	#	EXCLAMATION MARK
+0x22	0x0022	#	QUOTATION MARK
+0x23	0x0023	#	NUMBER SIGN
+0x24	0x00A4	#	CURRENCY 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	0x00A1	#	INVERTED EXCLAMATION MARK
+0x41	0x0041	#	LATIN CAPITAL LETTER A
+#0x41	0x0391	#	GREEK CAPITAL LETTER ALPHA
+0x42	0x0042	#	LATIN CAPITAL LETTER B
+#0x42	0x0392	#	GREEK CAPITAL LETTER BETA
+0x43	0x0043	#	LATIN CAPITAL LETTER C
+0x44	0x0044	#	LATIN CAPITAL LETTER D
+0x45	0x0045	#	LATIN CAPITAL LETTER E
+#0x45	0x0395	#	GREEK CAPITAL LETTER EPSILON
+0x46	0x0046	#	LATIN CAPITAL LETTER F
+0x47	0x0047	#	LATIN CAPITAL LETTER G
+0x48	0x0048	#	LATIN CAPITAL LETTER H
+#0x48	0x0397	#	GREEK CAPITAL LETTER ETA
+0x49	0x0049	#	LATIN CAPITAL LETTER I
+#0x49	0x0399	#	GREEK CAPITAL LETTER IOTA
+0x4A	0x004A	#	LATIN CAPITAL LETTER J
+0x4B	0x004B	#	LATIN CAPITAL LETTER K
+#0x4B	0x039A	#	GREEK CAPITAL LETTER KAPPA
+0x4C	0x004C	#	LATIN CAPITAL LETTER L
+0x4D	0x004D	#	LATIN CAPITAL LETTER M
+#0x4D	0x039C	#	GREEK CAPITAL LETTER MU
+0x4E	0x004E	#	LATIN CAPITAL LETTER N
+#0x4E	0x039D	#	GREEK CAPITAL LETTER NU
+0x4F	0x004F	#	LATIN CAPITAL LETTER O
+#0x4F	0x039F	#	GREEK CAPITAL LETTER OMICRON
+0x50	0x0050	#	LATIN CAPITAL LETTER P
+#0x50	0x03A1	#	GREEK CAPITAL LETTER RHO
+0x51	0x0051	#	LATIN CAPITAL LETTER Q
+0x52	0x0052	#	LATIN CAPITAL LETTER R
+0x53	0x0053	#	LATIN CAPITAL LETTER S
+0x54	0x0054	#	LATIN CAPITAL LETTER T
+#0x54	0x03A4	#	GREEK CAPITAL LETTER TAU
+0x55	0x0055	#	LATIN CAPITAL LETTER U
+#0x55	0x03A5	#	GREEK CAPITAL LETTER UPSILON
+0x56	0x0056	#	LATIN CAPITAL LETTER V
+0x57	0x0057	#	LATIN CAPITAL LETTER W
+0x58	0x0058	#	LATIN CAPITAL LETTER X
+#0x58	0x03A7	#	GREEK CAPITAL LETTER CHI
+0x59	0x0059	#	LATIN CAPITAL LETTER Y
+0x5A	0x005A	#	LATIN CAPITAL LETTER Z
+#0x5A	0x0396	#	GREEK CAPITAL LETTER ZETA
+0x5B	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
+0x5C	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
+0x5D	0x00D1	#	LATIN CAPITAL LETTER N WITH TILDE
+0x5E	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
+0x5F	0x00A7	#	SECTION SIGN
+0x60	0x00BF	#	INVERTED QUESTION MARK
+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	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
+0x7C	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
+0x7D	0x00F1	#	LATIN SMALL LETTER N WITH TILDE
+0x7E	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
+0x7F	0x00E0	#	LATIN SMALL LETTER A WITH GRAVE
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'ETSI/GSM0338.TXT'
+! !
+
+!CharacterEncoder::GSM0338 methodsFor:'encoding & decoding'!
+
+decode:code
+    "automatically generated by generateEncoderCode"
+
+    code < 0 ifTrue:[ ^ code ].
+    code > 7013 ifTrue:[
+        self error:'invalid code'.
+        ^ $? asciiValue
+    ].
+    ^ #(
+       "16r0000"    16r0040 " COMMERCIAL AT " 
+       "16r0001"    16r00A3 " POUND SIGN " 
+       "16r0002"    16r0024 " DOLLAR SIGN " 
+       "16r0003"    16r00A5 " YEN SIGN " 
+       "16r0004"    16r00E8 " LATIN SMALL LETTER E WITH GRAVE " 
+       "16r0005"    16r00E9 " LATIN SMALL LETTER E WITH ACUTE " 
+       "16r0006"    16r00F9 " LATIN SMALL LETTER U WITH GRAVE " 
+       "16r0007"    16r00EC " LATIN SMALL LETTER I WITH GRAVE " 
+       "16r0008"    16r00F2 " LATIN SMALL LETTER O WITH GRAVE " 
+       "16r0009"    16r00E7 " LATIN SMALL LETTER C WITH CEDILLA " 
+       "16r000A"    16r000A " LINE FEED " 
+       "16r000B"    16r00D8 " LATIN CAPITAL LETTER O WITH STROKE " 
+       "16r000C"    16r00F8 " LATIN SMALL LETTER O WITH STROKE " 
+       "16r000D"    16r000D " CARRIAGE RETURN " 
+       "16r000E"    16r00C5 " LATIN CAPITAL LETTER A WITH RING ABOVE " 
+       "16r000F"    16r00E5 " LATIN SMALL LETTER A WITH RING ABOVE " 
+       "16r0010"    16r0394 " GREEK CAPITAL LETTER DELTA " 
+       "16r0011"    16r005F " LOW LINE " 
+       "16r0012"    16r03A6 " GREEK CAPITAL LETTER PHI " 
+       "16r0013"    16r0393 " GREEK CAPITAL LETTER GAMMA " 
+       "16r0014"    16r039B " GREEK CAPITAL LETTER LAMDA " 
+       "16r0015"    16r03A9 " GREEK CAPITAL LETTER OMEGA " 
+       "16r0016"    16r03A0 " GREEK CAPITAL LETTER PI " 
+       "16r0017"    16r03A8 " GREEK CAPITAL LETTER PSI " 
+       "16r0018"    16r03A3 " GREEK CAPITAL LETTER SIGMA " 
+       "16r0019"    16r0398 " GREEK CAPITAL LETTER THETA " 
+       "16r001A"    16r039E " GREEK CAPITAL LETTER XI " 
+       "16r001B"    16r00A0 " ESCAPE TO EXTENSION TABLE (or displayed as NBSP, see note above) " 
+       "16r001C"    16r00C6 " LATIN CAPITAL LETTER AE " 
+       "16r001D"    16r00E6 " LATIN SMALL LETTER AE " 
+       "16r001E"    16r00DF " LATIN SMALL LETTER SHARP S (German) " 
+       "16r001F"    16r00C9 " LATIN CAPITAL LETTER E WITH ACUTE " 
+       "16r0020"    16r0020 " SPACE " 
+       "16r0021"    16r0021 " EXCLAMATION MARK " 
+       "16r0022"    16r0022 " QUOTATION MARK " 
+       "16r0023"    16r0023 " NUMBER SIGN " 
+       "16r0024"    16r00A4 " CURRENCY SIGN " 
+       "16r0025"    16r0025 " PERCENT SIGN " 
+       "16r0026"    16r0026 " AMPERSAND " 
+       "16r0027"    16r0027 " APOSTROPHE " 
+       "16r0028"    16r0028 " LEFT PARENTHESIS " 
+       "16r0029"    16r0029 " RIGHT PARENTHESIS " 
+       "16r002A"    16r002A " ASTERISK " 
+       "16r002B"    16r002B " PLUS SIGN " 
+       "16r002C"    16r002C " COMMA " 
+       "16r002D"    16r002D " HYPHEN-MINUS " 
+       "16r002E"    16r002E " FULL STOP " 
+       "16r002F"    16r002F " SOLIDUS " 
+       "16r0030"    16r0030 " DIGIT ZERO " 
+       "16r0031"    16r0031 " DIGIT ONE " 
+       "16r0032"    16r0032 " DIGIT TWO " 
+       "16r0033"    16r0033 " DIGIT THREE " 
+       "16r0034"    16r0034 " DIGIT FOUR " 
+       "16r0035"    16r0035 " DIGIT FIVE " 
+       "16r0036"    16r0036 " DIGIT SIX " 
+       "16r0037"    16r0037 " DIGIT SEVEN " 
+       "16r0038"    16r0038 " DIGIT EIGHT " 
+       "16r0039"    16r0039 " DIGIT NINE " 
+       "16r003A"    16r003A " COLON " 
+       "16r003B"    16r003B " SEMICOLON " 
+       "16r003C"    16r003C " LESS-THAN SIGN " 
+       "16r003D"    16r003D " EQUALS SIGN " 
+       "16r003E"    16r003E " GREATER-THAN SIGN " 
+       "16r003F"    16r003F " QUESTION MARK " 
+       "16r0040"    16r00A1 " INVERTED EXCLAMATION MARK " 
+       "16r0041"    16r0041 " LATIN CAPITAL LETTER A " 
+       "16r0042"    16r0042 " LATIN CAPITAL LETTER B " 
+       "16r0043"    16r0043 " LATIN CAPITAL LETTER C " 
+       "16r0044"    16r0044 " LATIN CAPITAL LETTER D " 
+       "16r0045"    16r0045 " LATIN CAPITAL LETTER E " 
+       "16r0046"    16r0046 " LATIN CAPITAL LETTER F " 
+       "16r0047"    16r0047 " LATIN CAPITAL LETTER G " 
+       "16r0048"    16r0048 " LATIN CAPITAL LETTER H " 
+       "16r0049"    16r0049 " LATIN CAPITAL LETTER I " 
+       "16r004A"    16r004A " LATIN CAPITAL LETTER J " 
+       "16r004B"    16r004B " LATIN CAPITAL LETTER K " 
+       "16r004C"    16r004C " LATIN CAPITAL LETTER L " 
+       "16r004D"    16r004D " LATIN CAPITAL LETTER M " 
+       "16r004E"    16r004E " LATIN CAPITAL LETTER N " 
+       "16r004F"    16r004F " LATIN CAPITAL LETTER O " 
+       "16r0050"    16r0050 " LATIN CAPITAL LETTER P " 
+       "16r0051"    16r0051 " LATIN CAPITAL LETTER Q " 
+       "16r0052"    16r0052 " LATIN CAPITAL LETTER R " 
+       "16r0053"    16r0053 " LATIN CAPITAL LETTER S " 
+       "16r0054"    16r0054 " LATIN CAPITAL LETTER T " 
+       "16r0055"    16r0055 " LATIN CAPITAL LETTER U " 
+       "16r0056"    16r0056 " LATIN CAPITAL LETTER V " 
+       "16r0057"    16r0057 " LATIN CAPITAL LETTER W " 
+       "16r0058"    16r0058 " LATIN CAPITAL LETTER X " 
+       "16r0059"    16r0059 " LATIN CAPITAL LETTER Y " 
+       "16r005A"    16r005A " LATIN CAPITAL LETTER Z " 
+       "16r005B"    16r00C4 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+       "16r005C"    16r00D6 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+       "16r005D"    16r00D1 " LATIN CAPITAL LETTER N WITH TILDE " 
+       "16r005E"    16r00DC " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+       "16r005F"    16r00A7 " SECTION SIGN " 
+       "16r0060"    16r00BF " INVERTED QUESTION MARK " 
+       "16r0061"    16r0061 " LATIN SMALL LETTER A " 
+       "16r0062"    16r0062 " LATIN SMALL LETTER B " 
+       "16r0063"    16r0063 " LATIN SMALL LETTER C " 
+       "16r0064"    16r0064 " LATIN SMALL LETTER D " 
+       "16r0065"    16r0065 " LATIN SMALL LETTER E " 
+       "16r0066"    16r0066 " LATIN SMALL LETTER F " 
+       "16r0067"    16r0067 " LATIN SMALL LETTER G " 
+       "16r0068"    16r0068 " LATIN SMALL LETTER H " 
+       "16r0069"    16r0069 " LATIN SMALL LETTER I " 
+       "16r006A"    16r006A " LATIN SMALL LETTER J " 
+       "16r006B"    16r006B " LATIN SMALL LETTER K " 
+       "16r006C"    16r006C " LATIN SMALL LETTER L " 
+       "16r006D"    16r006D " LATIN SMALL LETTER M " 
+       "16r006E"    16r006E " LATIN SMALL LETTER N " 
+       "16r006F"    16r006F " LATIN SMALL LETTER O " 
+       "16r0070"    16r0070 " LATIN SMALL LETTER P " 
+       "16r0071"    16r0071 " LATIN SMALL LETTER Q " 
+       "16r0072"    16r0072 " LATIN SMALL LETTER R " 
+       "16r0073"    16r0073 " LATIN SMALL LETTER S " 
+       "16r0074"    16r0074 " LATIN SMALL LETTER T " 
+       "16r0075"    16r0075 " LATIN SMALL LETTER U " 
+       "16r0076"    16r0076 " LATIN SMALL LETTER V " 
+       "16r0077"    16r0077 " LATIN SMALL LETTER W " 
+       "16r0078"    16r0078 " LATIN SMALL LETTER X " 
+       "16r0079"    16r0079 " LATIN SMALL LETTER Y " 
+       "16r007A"    16r007A " LATIN SMALL LETTER Z " 
+       "16r007B"    16r00E4 " LATIN SMALL LETTER A WITH DIAERESIS " 
+       "16r007C"    16r00F6 " LATIN SMALL LETTER O WITH DIAERESIS " 
+       "16r007D"    16r00F1 " LATIN SMALL LETTER N WITH TILDE " 
+       "16r007E"    16r00FC " LATIN SMALL LETTER U WITH DIAERESIS " 
+       "16r007F"    16r00E0 " LATIN SMALL LETTER A WITH GRAVE " 
+       "16r0080"    16rFFFF " invalid " 
+       "16r0081"    16rFFFF " invalid " 
+       "16r0082"    16rFFFF " invalid " 
+       "16r0083"    16rFFFF " invalid " 
+       "16r0084"    16rFFFF " invalid " 
+       "16r0085"    16rFFFF " invalid " 
+       "16r0086"    16rFFFF " invalid " 
+       "16r0087"    16rFFFF " invalid " 
+       "16r0088"    16rFFFF " invalid " 
+       "16r0089"    16rFFFF " invalid " 
+       "16r008A"    16rFFFF " invalid " 
+       "16r008B"    16rFFFF " invalid " 
+       "16r008C"    16rFFFF " invalid " 
+       "16r008D"    16rFFFF " invalid " 
+       "16r008E"    16rFFFF " invalid " 
+       "16r008F"    16rFFFF " invalid " 
+       "16r0090"    16rFFFF " invalid " 
+       "16r0091"    16rFFFF " invalid " 
+       "16r0092"    16rFFFF " invalid " 
+       "16r0093"    16rFFFF " invalid " 
+       "16r0094"    16rFFFF " invalid " 
+       "16r0095"    16rFFFF " invalid " 
+       "16r0096"    16rFFFF " invalid " 
+       "16r0097"    16rFFFF " invalid " 
+       "16r0098"    16rFFFF " invalid " 
+       "16r0099"    16rFFFF " invalid " 
+       "16r009A"    16rFFFF " invalid " 
+       "16r009B"    16rFFFF " invalid " 
+       "16r009C"    16rFFFF " invalid " 
+       "16r009D"    16rFFFF " invalid " 
+       "16r009E"    16rFFFF " invalid " 
+       "16r009F"    16rFFFF " invalid " 
+       "16r00A0"    16rFFFF " invalid " 
+       "16r00A1"    16rFFFF " invalid " 
+       "16r00A2"    16rFFFF " invalid " 
+       "16r00A3"    16rFFFF " invalid " 
+       "16r00A4"    16rFFFF " invalid " 
+       "16r00A5"    16rFFFF " invalid " 
+       "16r00A6"    16rFFFF " invalid " 
+       "16r00A7"    16rFFFF " invalid " 
+       "16r00A8"    16rFFFF " invalid " 
+       "16r00A9"    16rFFFF " invalid " 
+       "16r00AA"    16rFFFF " invalid " 
+       "16r00AB"    16rFFFF " invalid " 
+       "16r00AC"    16rFFFF " invalid " 
+       "16r00AD"    16rFFFF " invalid " 
+       "16r00AE"    16rFFFF " invalid " 
+       "16r00AF"    16rFFFF " invalid " 
+       "16r00B0"    16rFFFF " invalid " 
+       "16r00B1"    16rFFFF " invalid " 
+       "16r00B2"    16rFFFF " invalid " 
+       "16r00B3"    16rFFFF " invalid " 
+       "16r00B4"    16rFFFF " invalid " 
+       "16r00B5"    16rFFFF " invalid " 
+       "16r00B6"    16rFFFF " invalid " 
+       "16r00B7"    16rFFFF " invalid " 
+       "16r00B8"    16rFFFF " invalid " 
+       "16r00B9"    16rFFFF " invalid " 
+       "16r00BA"    16rFFFF " invalid " 
+       "16r00BB"    16rFFFF " invalid " 
+       "16r00BC"    16rFFFF " invalid " 
+       "16r00BD"    16rFFFF " invalid " 
+       "16r00BE"    16rFFFF " invalid " 
+       "16r00BF"    16rFFFF " invalid " 
+       "16r00C0"    16rFFFF " invalid " 
+       "16r00C1"    16rFFFF " invalid " 
+       "16r00C2"    16rFFFF " invalid " 
+       "16r00C3"    16rFFFF " invalid " 
+       "16r00C4"    16rFFFF " invalid " 
+       "16r00C5"    16rFFFF " invalid " 
+       "16r00C6"    16rFFFF " invalid " 
+       "16r00C7"    16rFFFF " invalid " 
+       "16r00C8"    16rFFFF " invalid " 
+       "16r00C9"    16rFFFF " invalid " 
+       "16r00CA"    16rFFFF " invalid " 
+       "16r00CB"    16rFFFF " invalid " 
+       "16r00CC"    16rFFFF " invalid " 
+       "16r00CD"    16rFFFF " invalid " 
+       "16r00CE"    16rFFFF " invalid " 
+       "16r00CF"    16rFFFF " invalid " 
+       "16r00D0"    16rFFFF " invalid " 
+       "16r00D1"    16rFFFF " invalid " 
+       "16r00D2"    16rFFFF " invalid " 
+       "16r00D3"    16rFFFF " invalid " 
+       "16r00D4"    16rFFFF " invalid " 
+       "16r00D5"    16rFFFF " invalid " 
+       "16r00D6"    16rFFFF " invalid " 
+       "16r00D7"    16rFFFF " invalid " 
+       "16r00D8"    16rFFFF " invalid " 
+       "16r00D9"    16rFFFF " invalid " 
+       "16r00DA"    16rFFFF " invalid " 
+       "16r00DB"    16rFFFF " invalid " 
+       "16r00DC"    16rFFFF " invalid " 
+       "16r00DD"    16rFFFF " invalid " 
+       "16r00DE"    16rFFFF " invalid " 
+       "16r00DF"    16rFFFF " invalid " 
+       "16r00E0"    16rFFFF " invalid " 
+       "16r00E1"    16rFFFF " invalid " 
+       "16r00E2"    16rFFFF " invalid " 
+       "16r00E3"    16rFFFF " invalid " 
+       "16r00E4"    16rFFFF " invalid " 
+       "16r00E5"    16rFFFF " invalid " 
+       "16r00E6"    16rFFFF " invalid " 
+       "16r00E7"    16rFFFF " invalid " 
+       "16r00E8"    16rFFFF " invalid " 
+       "16r00E9"    16rFFFF " invalid " 
+       "16r00EA"    16rFFFF " invalid " 
+       "16r00EB"    16rFFFF " invalid " 
+       "16r00EC"    16rFFFF " invalid " 
+       "16r00ED"    16rFFFF " invalid " 
+       "16r00EE"    16rFFFF " invalid " 
+       "16r00EF"    16rFFFF " invalid " 
+       "16r00F0"    16rFFFF " invalid " 
+       "16r00F1"    16rFFFF " invalid " 
+       "16r00F2"    16rFFFF " invalid " 
+       "16r00F3"    16rFFFF " invalid " 
+       "16r00F4"    16rFFFF " invalid " 
+       "16r00F5"    16rFFFF " invalid " 
+       "16r00F6"    16rFFFF " invalid " 
+       "16r00F7"    16rFFFF " invalid " 
+       "16r00F8"    16rFFFF " invalid " 
+       "16r00F9"    16rFFFF " invalid " 
+       "16r00FA"    16rFFFF " invalid " 
+       "16r00FB"    16rFFFF " invalid " 
+       "16r00FC"    16rFFFF " invalid " 
+       "16r00FD"    16rFFFF " invalid " 
+       "16r00FE"    16rFFFF " invalid " 
+       "16r00FF"    16rFFFF " invalid " 
+       "16r0100"    16rFFFF " invalid " 
+       "16r0101"    16rFFFF " invalid " 
+       "16r0102"    16rFFFF " invalid " 
+       "16r0103"    16rFFFF " invalid " 
+       "16r0104"    16rFFFF " invalid " 
+       "16r0105"    16rFFFF " invalid " 
+       "16r0106"    16rFFFF " invalid " 
+       "16r0107"    16rFFFF " invalid " 
+       "16r0108"    16rFFFF " invalid " 
+       "16r0109"    16rFFFF " invalid " 
+       "16r010A"    16rFFFF " invalid " 
+       "16r010B"    16rFFFF " invalid " 
+       "16r010C"    16rFFFF " invalid " 
+       "16r010D"    16rFFFF " invalid " 
+       "16r010E"    16rFFFF " invalid " 
+       "16r010F"    16rFFFF " invalid " 
+       "16r0110"    16rFFFF " invalid " 
+       "16r0111"    16rFFFF " invalid " 
+       "16r0112"    16rFFFF " invalid " 
+       "16r0113"    16rFFFF " invalid " 
+       "16r0114"    16rFFFF " invalid " 
+       "16r0115"    16rFFFF " invalid " 
+       "16r0116"    16rFFFF " invalid " 
+       "16r0117"    16rFFFF " invalid " 
+       "16r0118"    16rFFFF " invalid " 
+       "16r0119"    16rFFFF " invalid " 
+       "16r011A"    16rFFFF " invalid " 
+       "16r011B"    16rFFFF " invalid " 
+       "16r011C"    16rFFFF " invalid " 
+       "16r011D"    16rFFFF " invalid " 
+       "16r011E"    16rFFFF " invalid " 
+       "16r011F"    16rFFFF " invalid " 
+       "16r0120"    16rFFFF " invalid " 
+       "16r0121"    16rFFFF " invalid " 
+       "16r0122"    16rFFFF " invalid " 
+       "16r0123"    16rFFFF " invalid " 
+       "16r0124"    16rFFFF " invalid " 
+       "16r0125"    16rFFFF " invalid " 
+       "16r0126"    16rFFFF " invalid " 
+       "16r0127"    16rFFFF " invalid " 
+       "16r0128"    16rFFFF " invalid " 
+       "16r0129"    16rFFFF " invalid " 
+       "16r012A"    16rFFFF " invalid " 
+       "16r012B"    16rFFFF " invalid " 
+       "16r012C"    16rFFFF " invalid " 
+       "16r012D"    16rFFFF " invalid " 
+       "16r012E"    16rFFFF " invalid " 
+       "16r012F"    16rFFFF " invalid " 
+       "16r0130"    16rFFFF " invalid " 
+       "16r0131"    16rFFFF " invalid " 
+       "16r0132"    16rFFFF " invalid " 
+       "16r0133"    16rFFFF " invalid " 
+       "16r0134"    16rFFFF " invalid " 
+       "16r0135"    16rFFFF " invalid " 
+       "16r0136"    16rFFFF " invalid " 
+       "16r0137"    16rFFFF " invalid " 
+       "16r0138"    16rFFFF " invalid " 
+       "16r0139"    16rFFFF " invalid " 
+       "16r013A"    16rFFFF " invalid " 
+       "16r013B"    16rFFFF " invalid " 
+       "16r013C"    16rFFFF " invalid " 
+       "16r013D"    16rFFFF " invalid " 
+       "16r013E"    16rFFFF " invalid " 
+       "16r013F"    16rFFFF " invalid " 
+       "16r0140"    16rFFFF " invalid " 
+       "16r0141"    16rFFFF " invalid " 
+       "16r0142"    16rFFFF " invalid " 
+       "16r0143"    16rFFFF " invalid " 
+       "16r0144"    16rFFFF " invalid " 
+       "16r0145"    16rFFFF " invalid " 
+       "16r0146"    16rFFFF " invalid " 
+       "16r0147"    16rFFFF " invalid " 
+       "16r0148"    16rFFFF " invalid " 
+       "16r0149"    16rFFFF " invalid " 
+       "16r014A"    16rFFFF " invalid " 
+       "16r014B"    16rFFFF " invalid " 
+       "16r014C"    16rFFFF " invalid " 
+       "16r014D"    16rFFFF " invalid " 
+       "16r014E"    16rFFFF " invalid " 
+       "16r014F"    16rFFFF " invalid " 
+       "16r0150"    16rFFFF " invalid " 
+       "16r0151"    16rFFFF " invalid " 
+       "16r0152"    16rFFFF " invalid " 
+       "16r0153"    16rFFFF " invalid " 
+       "16r0154"    16rFFFF " invalid " 
+       "16r0155"    16rFFFF " invalid " 
+       "16r0156"    16rFFFF " invalid " 
+       "16r0157"    16rFFFF " invalid " 
+       "16r0158"    16rFFFF " invalid " 
+       "16r0159"    16rFFFF " invalid " 
+       "16r015A"    16rFFFF " invalid " 
+       "16r015B"    16rFFFF " invalid " 
+       "16r015C"    16rFFFF " invalid " 
+       "16r015D"    16rFFFF " invalid " 
+       "16r015E"    16rFFFF " invalid " 
+       "16r015F"    16rFFFF " invalid " 
+       "16r0160"    16rFFFF " invalid " 
+       "16r0161"    16rFFFF " invalid " 
+       "16r0162"    16rFFFF " invalid " 
+       "16r0163"    16rFFFF " invalid " 
+       "16r0164"    16rFFFF " invalid " 
+       "16r0165"    16rFFFF " invalid " 
+       "16r0166"    16rFFFF " invalid " 
+       "16r0167"    16rFFFF " invalid " 
+       "16r0168"    16rFFFF " invalid " 
+       "16r0169"    16rFFFF " invalid " 
+       "16r016A"    16rFFFF " invalid " 
+       "16r016B"    16rFFFF " invalid " 
+       "16r016C"    16rFFFF " invalid " 
+       "16r016D"    16rFFFF " invalid " 
+       "16r016E"    16rFFFF " invalid " 
+       "16r016F"    16rFFFF " invalid " 
+       "16r0170"    16rFFFF " invalid " 
+       "16r0171"    16rFFFF " invalid " 
+       "16r0172"    16rFFFF " invalid " 
+       "16r0173"    16rFFFF " invalid " 
+       "16r0174"    16rFFFF " invalid " 
+       "16r0175"    16rFFFF " invalid " 
+       "16r0176"    16rFFFF " invalid " 
+       "16r0177"    16rFFFF " invalid " 
+       "16r0178"    16rFFFF " invalid " 
+       "16r0179"    16rFFFF " invalid " 
+       "16r017A"    16rFFFF " invalid " 
+       "16r017B"    16rFFFF " invalid " 
+       "16r017C"    16rFFFF " invalid " 
+       "16r017D"    16rFFFF " invalid " 
+       "16r017E"    16rFFFF " invalid " 
+       "16r017F"    16rFFFF " invalid " 
+       "16r0180"    16rFFFF " invalid " 
+       "16r0181"    16rFFFF " invalid " 
+       "16r0182"    16rFFFF " invalid " 
+       "16r0183"    16rFFFF " invalid " 
+       "16r0184"    16rFFFF " invalid " 
+       "16r0185"    16rFFFF " invalid " 
+       "16r0186"    16rFFFF " invalid " 
+       "16r0187"    16rFFFF " invalid " 
+       "16r0188"    16rFFFF " invalid " 
+       "16r0189"    16rFFFF " invalid " 
+       "16r018A"    16rFFFF " invalid " 
+       "16r018B"    16rFFFF " invalid " 
+       "16r018C"    16rFFFF " invalid " 
+       "16r018D"    16rFFFF " invalid " 
+       "16r018E"    16rFFFF " invalid " 
+       "16r018F"    16rFFFF " invalid " 
+       "16r0190"    16rFFFF " invalid " 
+       "16r0191"    16rFFFF " invalid " 
+       "16r0192"    16rFFFF " invalid " 
+       "16r0193"    16rFFFF " invalid " 
+       "16r0194"    16rFFFF " invalid " 
+       "16r0195"    16rFFFF " invalid " 
+       "16r0196"    16rFFFF " invalid " 
+       "16r0197"    16rFFFF " invalid " 
+       "16r0198"    16rFFFF " invalid " 
+       "16r0199"    16rFFFF " invalid " 
+       "16r019A"    16rFFFF " invalid " 
+       "16r019B"    16rFFFF " invalid " 
+       "16r019C"    16rFFFF " invalid " 
+       "16r019D"    16rFFFF " invalid " 
+       "16r019E"    16rFFFF " invalid " 
+       "16r019F"    16rFFFF " invalid " 
+       "16r01A0"    16rFFFF " invalid " 
+       "16r01A1"    16rFFFF " invalid " 
+       "16r01A2"    16rFFFF " invalid " 
+       "16r01A3"    16rFFFF " invalid " 
+       "16r01A4"    16rFFFF " invalid " 
+       "16r01A5"    16rFFFF " invalid " 
+       "16r01A6"    16rFFFF " invalid " 
+       "16r01A7"    16rFFFF " invalid " 
+       "16r01A8"    16rFFFF " invalid " 
+       "16r01A9"    16rFFFF " invalid " 
+       "16r01AA"    16rFFFF " invalid " 
+       "16r01AB"    16rFFFF " invalid " 
+       "16r01AC"    16rFFFF " invalid " 
+       "16r01AD"    16rFFFF " invalid " 
+       "16r01AE"    16rFFFF " invalid " 
+       "16r01AF"    16rFFFF " invalid " 
+       "16r01B0"    16rFFFF " invalid " 
+       "16r01B1"    16rFFFF " invalid " 
+       "16r01B2"    16rFFFF " invalid " 
+       "16r01B3"    16rFFFF " invalid " 
+       "16r01B4"    16rFFFF " invalid " 
+       "16r01B5"    16rFFFF " invalid " 
+       "16r01B6"    16rFFFF " invalid " 
+       "16r01B7"    16rFFFF " invalid " 
+       "16r01B8"    16rFFFF " invalid " 
+       "16r01B9"    16rFFFF " invalid " 
+       "16r01BA"    16rFFFF " invalid " 
+       "16r01BB"    16rFFFF " invalid " 
+       "16r01BC"    16rFFFF " invalid " 
+       "16r01BD"    16rFFFF " invalid " 
+       "16r01BE"    16rFFFF " invalid " 
+       "16r01BF"    16rFFFF " invalid " 
+       "16r01C0"    16rFFFF " invalid " 
+       "16r01C1"    16rFFFF " invalid " 
+       "16r01C2"    16rFFFF " invalid " 
+       "16r01C3"    16rFFFF " invalid " 
+       "16r01C4"    16rFFFF " invalid " 
+       "16r01C5"    16rFFFF " invalid " 
+       "16r01C6"    16rFFFF " invalid " 
+       "16r01C7"    16rFFFF " invalid " 
+       "16r01C8"    16rFFFF " invalid " 
+       "16r01C9"    16rFFFF " invalid " 
+       "16r01CA"    16rFFFF " invalid " 
+       "16r01CB"    16rFFFF " invalid " 
+       "16r01CC"    16rFFFF " invalid " 
+       "16r01CD"    16rFFFF " invalid " 
+       "16r01CE"    16rFFFF " invalid " 
+       "16r01CF"    16rFFFF " invalid " 
+       "16r01D0"    16rFFFF " invalid " 
+       "16r01D1"    16rFFFF " invalid " 
+       "16r01D2"    16rFFFF " invalid " 
+       "16r01D3"    16rFFFF " invalid " 
+       "16r01D4"    16rFFFF " invalid " 
+       "16r01D5"    16rFFFF " invalid " 
+       "16r01D6"    16rFFFF " invalid " 
+       "16r01D7"    16rFFFF " invalid " 
+       "16r01D8"    16rFFFF " invalid " 
+       "16r01D9"    16rFFFF " invalid " 
+       "16r01DA"    16rFFFF " invalid " 
+       "16r01DB"    16rFFFF " invalid " 
+       "16r01DC"    16rFFFF " invalid " 
+       "16r01DD"    16rFFFF " invalid " 
+       "16r01DE"    16rFFFF " invalid " 
+       "16r01DF"    16rFFFF " invalid " 
+       "16r01E0"    16rFFFF " invalid " 
+       "16r01E1"    16rFFFF " invalid " 
+       "16r01E2"    16rFFFF " invalid " 
+       "16r01E3"    16rFFFF " invalid " 
+       "16r01E4"    16rFFFF " invalid " 
+       "16r01E5"    16rFFFF " invalid " 
+       "16r01E6"    16rFFFF " invalid " 
+       "16r01E7"    16rFFFF " invalid " 
+       "16r01E8"    16rFFFF " invalid " 
+       "16r01E9"    16rFFFF " invalid " 
+       "16r01EA"    16rFFFF " invalid " 
+       "16r01EB"    16rFFFF " invalid " 
+       "16r01EC"    16rFFFF " invalid " 
+       "16r01ED"    16rFFFF " invalid " 
+       "16r01EE"    16rFFFF " invalid " 
+       "16r01EF"    16rFFFF " invalid " 
+       "16r01F0"    16rFFFF " invalid " 
+       "16r01F1"    16rFFFF " invalid " 
+       "16r01F2"    16rFFFF " invalid " 
+       "16r01F3"    16rFFFF " invalid " 
+       "16r01F4"    16rFFFF " invalid " 
+       "16r01F5"    16rFFFF " invalid " 
+       "16r01F6"    16rFFFF " invalid " 
+       "16r01F7"    16rFFFF " invalid " 
+       "16r01F8"    16rFFFF " invalid " 
+       "16r01F9"    16rFFFF " invalid " 
+       "16r01FA"    16rFFFF " invalid " 
+       "16r01FB"    16rFFFF " invalid " 
+       "16r01FC"    16rFFFF " invalid " 
+       "16r01FD"    16rFFFF " invalid " 
+       "16r01FE"    16rFFFF " invalid " 
+       "16r01FF"    16rFFFF " invalid " 
+       "16r0200"    16rFFFF " invalid " 
+       "16r0201"    16rFFFF " invalid " 
+       "16r0202"    16rFFFF " invalid " 
+       "16r0203"    16rFFFF " invalid " 
+       "16r0204"    16rFFFF " invalid " 
+       "16r0205"    16rFFFF " invalid " 
+       "16r0206"    16rFFFF " invalid " 
+       "16r0207"    16rFFFF " invalid " 
+       "16r0208"    16rFFFF " invalid " 
+       "16r0209"    16rFFFF " invalid " 
+       "16r020A"    16rFFFF " invalid " 
+       "16r020B"    16rFFFF " invalid " 
+       "16r020C"    16rFFFF " invalid " 
+       "16r020D"    16rFFFF " invalid " 
+       "16r020E"    16rFFFF " invalid " 
+       "16r020F"    16rFFFF " invalid " 
+       "16r0210"    16rFFFF " invalid " 
+       "16r0211"    16rFFFF " invalid " 
+       "16r0212"    16rFFFF " invalid " 
+       "16r0213"    16rFFFF " invalid " 
+       "16r0214"    16rFFFF " invalid " 
+       "16r0215"    16rFFFF " invalid " 
+       "16r0216"    16rFFFF " invalid " 
+       "16r0217"    16rFFFF " invalid " 
+       "16r0218"    16rFFFF " invalid " 
+       "16r0219"    16rFFFF " invalid " 
+       "16r021A"    16rFFFF " invalid " 
+       "16r021B"    16rFFFF " invalid " 
+       "16r021C"    16rFFFF " invalid " 
+       "16r021D"    16rFFFF " invalid " 
+       "16r021E"    16rFFFF " invalid " 
+       "16r021F"    16rFFFF " invalid " 
+       "16r0220"    16rFFFF " invalid " 
+       "16r0221"    16rFFFF " invalid " 
+       "16r0222"    16rFFFF " invalid " 
+       "16r0223"    16rFFFF " invalid " 
+       "16r0224"    16rFFFF " invalid " 
+       "16r0225"    16rFFFF " invalid " 
+       "16r0226"    16rFFFF " invalid " 
+       "16r0227"    16rFFFF " invalid " 
+       "16r0228"    16rFFFF " invalid " 
+       "16r0229"    16rFFFF " invalid " 
+       "16r022A"    16rFFFF " invalid " 
+       "16r022B"    16rFFFF " invalid " 
+       "16r022C"    16rFFFF " invalid " 
+       "16r022D"    16rFFFF " invalid " 
+       "16r022E"    16rFFFF " invalid " 
+       "16r022F"    16rFFFF " invalid " 
+       "16r0230"    16rFFFF " invalid " 
+       "16r0231"    16rFFFF " invalid " 
+       "16r0232"    16rFFFF " invalid " 
+       "16r0233"    16rFFFF " invalid " 
+       "16r0234"    16rFFFF " invalid " 
+       "16r0235"    16rFFFF " invalid " 
+       "16r0236"    16rFFFF " invalid " 
+       "16r0237"    16rFFFF " invalid " 
+       "16r0238"    16rFFFF " invalid " 
+       "16r0239"    16rFFFF " invalid " 
+       "16r023A"    16rFFFF " invalid " 
+       "16r023B"    16rFFFF " invalid " 
+       "16r023C"    16rFFFF " invalid " 
+       "16r023D"    16rFFFF " invalid " 
+       "16r023E"    16rFFFF " invalid " 
+       "16r023F"    16rFFFF " invalid " 
+       "16r0240"    16rFFFF " invalid " 
+       "16r0241"    16rFFFF " invalid " 
+       "16r0242"    16rFFFF " invalid " 
+       "16r0243"    16rFFFF " invalid " 
+       "16r0244"    16rFFFF " invalid " 
+       "16r0245"    16rFFFF " invalid " 
+       "16r0246"    16rFFFF " invalid " 
+       "16r0247"    16rFFFF " invalid " 
+       "16r0248"    16rFFFF " invalid " 
+       "16r0249"    16rFFFF " invalid " 
+       "16r024A"    16rFFFF " invalid " 
+       "16r024B"    16rFFFF " invalid " 
+       "16r024C"    16rFFFF " invalid " 
+       "16r024D"    16rFFFF " invalid " 
+       "16r024E"    16rFFFF " invalid " 
+       "16r024F"    16rFFFF " invalid " 
+       "16r0250"    16rFFFF " invalid " 
+       "16r0251"    16rFFFF " invalid " 
+       "16r0252"    16rFFFF " invalid " 
+       "16r0253"    16rFFFF " invalid " 
+       "16r0254"    16rFFFF " invalid " 
+       "16r0255"    16rFFFF " invalid " 
+       "16r0256"    16rFFFF " invalid " 
+       "16r0257"    16rFFFF " invalid " 
+       "16r0258"    16rFFFF " invalid " 
+       "16r0259"    16rFFFF " invalid " 
+       "16r025A"    16rFFFF " invalid " 
+       "16r025B"    16rFFFF " invalid " 
+       "16r025C"    16rFFFF " invalid " 
+       "16r025D"    16rFFFF " invalid " 
+       "16r025E"    16rFFFF " invalid " 
+       "16r025F"    16rFFFF " invalid " 
+       "16r0260"    16rFFFF " invalid " 
+       "16r0261"    16rFFFF " invalid " 
+       "16r0262"    16rFFFF " invalid " 
+       "16r0263"    16rFFFF " invalid " 
+       "16r0264"    16rFFFF " invalid " 
+       "16r0265"    16rFFFF " invalid " 
+       "16r0266"    16rFFFF " invalid " 
+       "16r0267"    16rFFFF " invalid " 
+       "16r0268"    16rFFFF " invalid " 
+       "16r0269"    16rFFFF " invalid " 
+       "16r026A"    16rFFFF " invalid " 
+       "16r026B"    16rFFFF " invalid " 
+       "16r026C"    16rFFFF " invalid " 
+       "16r026D"    16rFFFF " invalid " 
+       "16r026E"    16rFFFF " invalid " 
+       "16r026F"    16rFFFF " invalid " 
+       "16r0270"    16rFFFF " invalid " 
+       "16r0271"    16rFFFF " invalid " 
+       "16r0272"    16rFFFF " invalid " 
+       "16r0273"    16rFFFF " invalid " 
+       "16r0274"    16rFFFF " invalid " 
+       "16r0275"    16rFFFF " invalid " 
+       "16r0276"    16rFFFF " invalid " 
+       "16r0277"    16rFFFF " invalid " 
+       "16r0278"    16rFFFF " invalid " 
+       "16r0279"    16rFFFF " invalid " 
+       "16r027A"    16rFFFF " invalid " 
+       "16r027B"    16rFFFF " invalid " 
+       "16r027C"    16rFFFF " invalid " 
+       "16r027D"    16rFFFF " invalid " 
+       "16r027E"    16rFFFF " invalid " 
+       "16r027F"    16rFFFF " invalid " 
+       "16r0280"    16rFFFF " invalid " 
+       "16r0281"    16rFFFF " invalid " 
+       "16r0282"    16rFFFF " invalid " 
+       "16r0283"    16rFFFF " invalid " 
+       "16r0284"    16rFFFF " invalid " 
+       "16r0285"    16rFFFF " invalid " 
+       "16r0286"    16rFFFF " invalid " 
+       "16r0287"    16rFFFF " invalid " 
+       "16r0288"    16rFFFF " invalid " 
+       "16r0289"    16rFFFF " invalid " 
+       "16r028A"    16rFFFF " invalid " 
+       "16r028B"    16rFFFF " invalid " 
+       "16r028C"    16rFFFF " invalid " 
+       "16r028D"    16rFFFF " invalid " 
+       "16r028E"    16rFFFF " invalid " 
+       "16r028F"    16rFFFF " invalid " 
+       "16r0290"    16rFFFF " invalid " 
+       "16r0291"    16rFFFF " invalid " 
+       "16r0292"    16rFFFF " invalid " 
+       "16r0293"    16rFFFF " invalid " 
+       "16r0294"    16rFFFF " invalid " 
+       "16r0295"    16rFFFF " invalid " 
+       "16r0296"    16rFFFF " invalid " 
+       "16r0297"    16rFFFF " invalid " 
+       "16r0298"    16rFFFF " invalid " 
+       "16r0299"    16rFFFF " invalid " 
+       "16r029A"    16rFFFF " invalid " 
+       "16r029B"    16rFFFF " invalid " 
+       "16r029C"    16rFFFF " invalid " 
+       "16r029D"    16rFFFF " invalid " 
+       "16r029E"    16rFFFF " invalid " 
+       "16r029F"    16rFFFF " invalid " 
+       "16r02A0"    16rFFFF " invalid " 
+       "16r02A1"    16rFFFF " invalid " 
+       "16r02A2"    16rFFFF " invalid " 
+       "16r02A3"    16rFFFF " invalid " 
+       "16r02A4"    16rFFFF " invalid " 
+       "16r02A5"    16rFFFF " invalid " 
+       "16r02A6"    16rFFFF " invalid " 
+       "16r02A7"    16rFFFF " invalid " 
+       "16r02A8"    16rFFFF " invalid " 
+       "16r02A9"    16rFFFF " invalid " 
+       "16r02AA"    16rFFFF " invalid " 
+       "16r02AB"    16rFFFF " invalid " 
+       "16r02AC"    16rFFFF " invalid " 
+       "16r02AD"    16rFFFF " invalid " 
+       "16r02AE"    16rFFFF " invalid " 
+       "16r02AF"    16rFFFF " invalid " 
+       "16r02B0"    16rFFFF " invalid " 
+       "16r02B1"    16rFFFF " invalid " 
+       "16r02B2"    16rFFFF " invalid " 
+       "16r02B3"    16rFFFF " invalid " 
+       "16r02B4"    16rFFFF " invalid " 
+       "16r02B5"    16rFFFF " invalid " 
+       "16r02B6"    16rFFFF " invalid " 
+       "16r02B7"    16rFFFF " invalid " 
+       "16r02B8"    16rFFFF " invalid " 
+       "16r02B9"    16rFFFF " invalid " 
+       "16r02BA"    16rFFFF " invalid " 
+       "16r02BB"    16rFFFF " invalid " 
+       "16r02BC"    16rFFFF " invalid " 
+       "16r02BD"    16rFFFF " invalid " 
+       "16r02BE"    16rFFFF " invalid " 
+       "16r02BF"    16rFFFF " invalid " 
+       "16r02C0"    16rFFFF " invalid " 
+       "16r02C1"    16rFFFF " invalid " 
+       "16r02C2"    16rFFFF " invalid " 
+       "16r02C3"    16rFFFF " invalid " 
+       "16r02C4"    16rFFFF " invalid " 
+       "16r02C5"    16rFFFF " invalid " 
+       "16r02C6"    16rFFFF " invalid " 
+       "16r02C7"    16rFFFF " invalid " 
+       "16r02C8"    16rFFFF " invalid " 
+       "16r02C9"    16rFFFF " invalid " 
+       "16r02CA"    16rFFFF " invalid " 
+       "16r02CB"    16rFFFF " invalid " 
+       "16r02CC"    16rFFFF " invalid " 
+       "16r02CD"    16rFFFF " invalid " 
+       "16r02CE"    16rFFFF " invalid " 
+       "16r02CF"    16rFFFF " invalid " 
+       "16r02D0"    16rFFFF " invalid " 
+       "16r02D1"    16rFFFF " invalid " 
+       "16r02D2"    16rFFFF " invalid " 
+       "16r02D3"    16rFFFF " invalid " 
+       "16r02D4"    16rFFFF " invalid " 
+       "16r02D5"    16rFFFF " invalid " 
+       "16r02D6"    16rFFFF " invalid " 
+       "16r02D7"    16rFFFF " invalid " 
+       "16r02D8"    16rFFFF " invalid " 
+       "16r02D9"    16rFFFF " invalid " 
+       "16r02DA"    16rFFFF " invalid " 
+       "16r02DB"    16rFFFF " invalid " 
+       "16r02DC"    16rFFFF " invalid " 
+       "16r02DD"    16rFFFF " invalid " 
+       "16r02DE"    16rFFFF " invalid " 
+       "16r02DF"    16rFFFF " invalid " 
+       "16r02E0"    16rFFFF " invalid " 
+       "16r02E1"    16rFFFF " invalid " 
+       "16r02E2"    16rFFFF " invalid " 
+       "16r02E3"    16rFFFF " invalid " 
+       "16r02E4"    16rFFFF " invalid " 
+       "16r02E5"    16rFFFF " invalid " 
+       "16r02E6"    16rFFFF " invalid " 
+       "16r02E7"    16rFFFF " invalid " 
+       "16r02E8"    16rFFFF " invalid " 
+       "16r02E9"    16rFFFF " invalid " 
+       "16r02EA"    16rFFFF " invalid " 
+       "16r02EB"    16rFFFF " invalid " 
+       "16r02EC"    16rFFFF " invalid " 
+       "16r02ED"    16rFFFF " invalid " 
+       "16r02EE"    16rFFFF " invalid " 
+       "16r02EF"    16rFFFF " invalid " 
+       "16r02F0"    16rFFFF " invalid " 
+       "16r02F1"    16rFFFF " invalid " 
+       "16r02F2"    16rFFFF " invalid " 
+       "16r02F3"    16rFFFF " invalid " 
+       "16r02F4"    16rFFFF " invalid " 
+       "16r02F5"    16rFFFF " invalid " 
+       "16r02F6"    16rFFFF " invalid " 
+       "16r02F7"    16rFFFF " invalid " 
+       "16r02F8"    16rFFFF " invalid " 
+       "16r02F9"    16rFFFF " invalid " 
+       "16r02FA"    16rFFFF " invalid " 
+       "16r02FB"    16rFFFF " invalid " 
+       "16r02FC"    16rFFFF " invalid " 
+       "16r02FD"    16rFFFF " invalid " 
+       "16r02FE"    16rFFFF " invalid " 
+       "16r02FF"    16rFFFF " invalid " 
+       "16r0300"    16rFFFF " invalid " 
+       "16r0301"    16rFFFF " invalid " 
+       "16r0302"    16rFFFF " invalid " 
+       "16r0303"    16rFFFF " invalid " 
+       "16r0304"    16rFFFF " invalid " 
+       "16r0305"    16rFFFF " invalid " 
+       "16r0306"    16rFFFF " invalid " 
+       "16r0307"    16rFFFF " invalid " 
+       "16r0308"    16rFFFF " invalid " 
+       "16r0309"    16rFFFF " invalid " 
+       "16r030A"    16rFFFF " invalid " 
+       "16r030B"    16rFFFF " invalid " 
+       "16r030C"    16rFFFF " invalid " 
+       "16r030D"    16rFFFF " invalid " 
+       "16r030E"    16rFFFF " invalid " 
+       "16r030F"    16rFFFF " invalid " 
+       "16r0310"    16rFFFF " invalid " 
+       "16r0311"    16rFFFF " invalid " 
+       "16r0312"    16rFFFF " invalid " 
+       "16r0313"    16rFFFF " invalid " 
+       "16r0314"    16rFFFF " invalid " 
+       "16r0315"    16rFFFF " invalid " 
+       "16r0316"    16rFFFF " invalid " 
+       "16r0317"    16rFFFF " invalid " 
+       "16r0318"    16rFFFF " invalid " 
+       "16r0319"    16rFFFF " invalid " 
+       "16r031A"    16rFFFF " invalid " 
+       "16r031B"    16rFFFF " invalid " 
+       "16r031C"    16rFFFF " invalid " 
+       "16r031D"    16rFFFF " invalid " 
+       "16r031E"    16rFFFF " invalid " 
+       "16r031F"    16rFFFF " invalid " 
+       "16r0320"    16rFFFF " invalid " 
+       "16r0321"    16rFFFF " invalid " 
+       "16r0322"    16rFFFF " invalid " 
+       "16r0323"    16rFFFF " invalid " 
+       "16r0324"    16rFFFF " invalid " 
+       "16r0325"    16rFFFF " invalid " 
+       "16r0326"    16rFFFF " invalid " 
+       "16r0327"    16rFFFF " invalid " 
+       "16r0328"    16rFFFF " invalid " 
+       "16r0329"    16rFFFF " invalid " 
+       "16r032A"    16rFFFF " invalid " 
+       "16r032B"    16rFFFF " invalid " 
+       "16r032C"    16rFFFF " invalid " 
+       "16r032D"    16rFFFF " invalid " 
+       "16r032E"    16rFFFF " invalid " 
+       "16r032F"    16rFFFF " invalid " 
+       "16r0330"    16rFFFF " invalid " 
+       "16r0331"    16rFFFF " invalid " 
+       "16r0332"    16rFFFF " invalid " 
+       "16r0333"    16rFFFF " invalid " 
+       "16r0334"    16rFFFF " invalid " 
+       "16r0335"    16rFFFF " invalid " 
+       "16r0336"    16rFFFF " invalid " 
+       "16r0337"    16rFFFF " invalid " 
+       "16r0338"    16rFFFF " invalid " 
+       "16r0339"    16rFFFF " invalid " 
+       "16r033A"    16rFFFF " invalid " 
+       "16r033B"    16rFFFF " invalid " 
+       "16r033C"    16rFFFF " invalid " 
+       "16r033D"    16rFFFF " invalid " 
+       "16r033E"    16rFFFF " invalid " 
+       "16r033F"    16rFFFF " invalid " 
+       "16r0340"    16rFFFF " invalid " 
+       "16r0341"    16rFFFF " invalid " 
+       "16r0342"    16rFFFF " invalid " 
+       "16r0343"    16rFFFF " invalid " 
+       "16r0344"    16rFFFF " invalid " 
+       "16r0345"    16rFFFF " invalid " 
+       "16r0346"    16rFFFF " invalid " 
+       "16r0347"    16rFFFF " invalid " 
+       "16r0348"    16rFFFF " invalid " 
+       "16r0349"    16rFFFF " invalid " 
+       "16r034A"    16rFFFF " invalid " 
+       "16r034B"    16rFFFF " invalid " 
+       "16r034C"    16rFFFF " invalid " 
+       "16r034D"    16rFFFF " invalid " 
+       "16r034E"    16rFFFF " invalid " 
+       "16r034F"    16rFFFF " invalid " 
+       "16r0350"    16rFFFF " invalid " 
+       "16r0351"    16rFFFF " invalid " 
+       "16r0352"    16rFFFF " invalid " 
+       "16r0353"    16rFFFF " invalid " 
+       "16r0354"    16rFFFF " invalid " 
+       "16r0355"    16rFFFF " invalid " 
+       "16r0356"    16rFFFF " invalid " 
+       "16r0357"    16rFFFF " invalid " 
+       "16r0358"    16rFFFF " invalid " 
+       "16r0359"    16rFFFF " invalid " 
+       "16r035A"    16rFFFF " invalid " 
+       "16r035B"    16rFFFF " invalid " 
+       "16r035C"    16rFFFF " invalid " 
+       "16r035D"    16rFFFF " invalid " 
+       "16r035E"    16rFFFF " invalid " 
+       "16r035F"    16rFFFF " invalid " 
+       "16r0360"    16rFFFF " invalid " 
+       "16r0361"    16rFFFF " invalid " 
+       "16r0362"    16rFFFF " invalid " 
+       "16r0363"    16rFFFF " invalid " 
+       "16r0364"    16rFFFF " invalid " 
+       "16r0365"    16rFFFF " invalid " 
+       "16r0366"    16rFFFF " invalid " 
+       "16r0367"    16rFFFF " invalid " 
+       "16r0368"    16rFFFF " invalid " 
+       "16r0369"    16rFFFF " invalid " 
+       "16r036A"    16rFFFF " invalid " 
+       "16r036B"    16rFFFF " invalid " 
+       "16r036C"    16rFFFF " invalid " 
+       "16r036D"    16rFFFF " invalid " 
+       "16r036E"    16rFFFF " invalid " 
+       "16r036F"    16rFFFF " invalid " 
+       "16r0370"    16rFFFF " invalid " 
+       "16r0371"    16rFFFF " invalid " 
+       "16r0372"    16rFFFF " invalid " 
+       "16r0373"    16rFFFF " invalid " 
+       "16r0374"    16rFFFF " invalid " 
+       "16r0375"    16rFFFF " invalid " 
+       "16r0376"    16rFFFF " invalid " 
+       "16r0377"    16rFFFF " invalid " 
+       "16r0378"    16rFFFF " invalid " 
+       "16r0379"    16rFFFF " invalid " 
+       "16r037A"    16rFFFF " invalid " 
+       "16r037B"    16rFFFF " invalid " 
+       "16r037C"    16rFFFF " invalid " 
+       "16r037D"    16rFFFF " invalid " 
+       "16r037E"    16rFFFF " invalid " 
+       "16r037F"    16rFFFF " invalid " 
+       "16r0380"    16rFFFF " invalid " 
+       "16r0381"    16rFFFF " invalid " 
+       "16r0382"    16rFFFF " invalid " 
+       "16r0383"    16rFFFF " invalid " 
+       "16r0384"    16rFFFF " invalid " 
+       "16r0385"    16rFFFF " invalid " 
+       "16r0386"    16rFFFF " invalid " 
+       "16r0387"    16rFFFF " invalid " 
+       "16r0388"    16rFFFF " invalid " 
+       "16r0389"    16rFFFF " invalid " 
+       "16r038A"    16rFFFF " invalid " 
+       "16r038B"    16rFFFF " invalid " 
+       "16r038C"    16rFFFF " invalid " 
+       "16r038D"    16rFFFF " invalid " 
+       "16r038E"    16rFFFF " invalid " 
+       "16r038F"    16rFFFF " invalid " 
+       "16r0390"    16rFFFF " invalid " 
+       "16r0391"    16rFFFF " invalid " 
+       "16r0392"    16rFFFF " invalid " 
+       "16r0393"    16rFFFF " invalid " 
+       "16r0394"    16rFFFF " invalid " 
+       "16r0395"    16rFFFF " invalid " 
+       "16r0396"    16rFFFF " invalid " 
+       "16r0397"    16rFFFF " invalid " 
+       "16r0398"    16rFFFF " invalid " 
+       "16r0399"    16rFFFF " invalid " 
+       "16r039A"    16rFFFF " invalid " 
+       "16r039B"    16rFFFF " invalid " 
+       "16r039C"    16rFFFF " invalid " 
+       "16r039D"    16rFFFF " invalid " 
+       "16r039E"    16rFFFF " invalid " 
+       "16r039F"    16rFFFF " invalid " 
+       "16r03A0"    16rFFFF " invalid " 
+       "16r03A1"    16rFFFF " invalid " 
+       "16r03A2"    16rFFFF " invalid " 
+       "16r03A3"    16rFFFF " invalid " 
+       "16r03A4"    16rFFFF " invalid " 
+       "16r03A5"    16rFFFF " invalid " 
+       "16r03A6"    16rFFFF " invalid " 
+       "16r03A7"    16rFFFF " invalid " 
+       "16r03A8"    16rFFFF " invalid " 
+       "16r03A9"    16rFFFF " invalid " 
+       "16r03AA"    16rFFFF " invalid " 
+       "16r03AB"    16rFFFF " invalid " 
+       "16r03AC"    16rFFFF " invalid " 
+       "16r03AD"    16rFFFF " invalid " 
+       "16r03AE"    16rFFFF " invalid " 
+       "16r03AF"    16rFFFF " invalid " 
+       "16r03B0"    16rFFFF " invalid " 
+       "16r03B1"    16rFFFF " invalid " 
+       "16r03B2"    16rFFFF " invalid " 
+       "16r03B3"    16rFFFF " invalid " 
+       "16r03B4"    16rFFFF " invalid " 
+       "16r03B5"    16rFFFF " invalid " 
+       "16r03B6"    16rFFFF " invalid " 
+       "16r03B7"    16rFFFF " invalid " 
+       "16r03B8"    16rFFFF " invalid " 
+       "16r03B9"    16rFFFF " invalid " 
+       "16r03BA"    16rFFFF " invalid " 
+       "16r03BB"    16rFFFF " invalid " 
+       "16r03BC"    16rFFFF " invalid " 
+       "16r03BD"    16rFFFF " invalid " 
+       "16r03BE"    16rFFFF " invalid " 
+       "16r03BF"    16rFFFF " invalid " 
+       "16r03C0"    16rFFFF " invalid " 
+       "16r03C1"    16rFFFF " invalid " 
+       "16r03C2"    16rFFFF " invalid " 
+       "16r03C3"    16rFFFF " invalid " 
+       "16r03C4"    16rFFFF " invalid " 
+       "16r03C5"    16rFFFF " invalid " 
+       "16r03C6"    16rFFFF " invalid " 
+       "16r03C7"    16rFFFF " invalid " 
+       "16r03C8"    16rFFFF " invalid " 
+       "16r03C9"    16rFFFF " invalid " 
+       "16r03CA"    16rFFFF " invalid " 
+       "16r03CB"    16rFFFF " invalid " 
+       "16r03CC"    16rFFFF " invalid " 
+       "16r03CD"    16rFFFF " invalid " 
+       "16r03CE"    16rFFFF " invalid " 
+       "16r03CF"    16rFFFF " invalid " 
+       "16r03D0"    16rFFFF " invalid " 
+       "16r03D1"    16rFFFF " invalid " 
+       "16r03D2"    16rFFFF " invalid " 
+       "16r03D3"    16rFFFF " invalid " 
+       "16r03D4"    16rFFFF " invalid " 
+       "16r03D5"    16rFFFF " invalid " 
+       "16r03D6"    16rFFFF " invalid " 
+       "16r03D7"    16rFFFF " invalid " 
+       "16r03D8"    16rFFFF " invalid " 
+       "16r03D9"    16rFFFF " invalid " 
+       "16r03DA"    16rFFFF " invalid " 
+       "16r03DB"    16rFFFF " invalid " 
+       "16r03DC"    16rFFFF " invalid " 
+       "16r03DD"    16rFFFF " invalid " 
+       "16r03DE"    16rFFFF " invalid " 
+       "16r03DF"    16rFFFF " invalid " 
+       "16r03E0"    16rFFFF " invalid " 
+       "16r03E1"    16rFFFF " invalid " 
+       "16r03E2"    16rFFFF " invalid " 
+       "16r03E3"    16rFFFF " invalid " 
+       "16r03E4"    16rFFFF " invalid " 
+       "16r03E5"    16rFFFF " invalid " 
+       "16r03E6"    16rFFFF " invalid " 
+       "16r03E7"    16rFFFF " invalid " 
+       "16r03E8"    16rFFFF " invalid " 
+       "16r03E9"    16rFFFF " invalid " 
+       "16r03EA"    16rFFFF " invalid " 
+       "16r03EB"    16rFFFF " invalid " 
+       "16r03EC"    16rFFFF " invalid " 
+       "16r03ED"    16rFFFF " invalid " 
+       "16r03EE"    16rFFFF " invalid " 
+       "16r03EF"    16rFFFF " invalid " 
+       "16r03F0"    16rFFFF " invalid " 
+       "16r03F1"    16rFFFF " invalid " 
+       "16r03F2"    16rFFFF " invalid " 
+       "16r03F3"    16rFFFF " invalid " 
+       "16r03F4"    16rFFFF " invalid " 
+       "16r03F5"    16rFFFF " invalid " 
+       "16r03F6"    16rFFFF " invalid " 
+       "16r03F7"    16rFFFF " invalid " 
+       "16r03F8"    16rFFFF " invalid " 
+       "16r03F9"    16rFFFF " invalid " 
+       "16r03FA"    16rFFFF " invalid " 
+       "16r03FB"    16rFFFF " invalid " 
+       "16r03FC"    16rFFFF " invalid " 
+       "16r03FD"    16rFFFF " invalid " 
+       "16r03FE"    16rFFFF " invalid " 
+       "16r03FF"    16rFFFF " invalid " 
+       "16r0400"    16rFFFF " invalid " 
+       "16r0401"    16rFFFF " invalid " 
+       "16r0402"    16rFFFF " invalid " 
+       "16r0403"    16rFFFF " invalid " 
+       "16r0404"    16rFFFF " invalid " 
+       "16r0405"    16rFFFF " invalid " 
+       "16r0406"    16rFFFF " invalid " 
+       "16r0407"    16rFFFF " invalid " 
+       "16r0408"    16rFFFF " invalid " 
+       "16r0409"    16rFFFF " invalid " 
+       "16r040A"    16rFFFF " invalid " 
+       "16r040B"    16rFFFF " invalid " 
+       "16r040C"    16rFFFF " invalid " 
+       "16r040D"    16rFFFF " invalid " 
+       "16r040E"    16rFFFF " invalid " 
+       "16r040F"    16rFFFF " invalid " 
+       "16r0410"    16rFFFF " invalid " 
+       "16r0411"    16rFFFF " invalid " 
+       "16r0412"    16rFFFF " invalid " 
+       "16r0413"    16rFFFF " invalid " 
+       "16r0414"    16rFFFF " invalid " 
+       "16r0415"    16rFFFF " invalid " 
+       "16r0416"    16rFFFF " invalid " 
+       "16r0417"    16rFFFF " invalid " 
+       "16r0418"    16rFFFF " invalid " 
+       "16r0419"    16rFFFF " invalid " 
+       "16r041A"    16rFFFF " invalid " 
+       "16r041B"    16rFFFF " invalid " 
+       "16r041C"    16rFFFF " invalid " 
+       "16r041D"    16rFFFF " invalid " 
+       "16r041E"    16rFFFF " invalid " 
+       "16r041F"    16rFFFF " invalid " 
+       "16r0420"    16rFFFF " invalid " 
+       "16r0421"    16rFFFF " invalid " 
+       "16r0422"    16rFFFF " invalid " 
+       "16r0423"    16rFFFF " invalid " 
+       "16r0424"    16rFFFF " invalid " 
+       "16r0425"    16rFFFF " invalid " 
+       "16r0426"    16rFFFF " invalid " 
+       "16r0427"    16rFFFF " invalid " 
+       "16r0428"    16rFFFF " invalid " 
+       "16r0429"    16rFFFF " invalid " 
+       "16r042A"    16rFFFF " invalid " 
+       "16r042B"    16rFFFF " invalid " 
+       "16r042C"    16rFFFF " invalid " 
+       "16r042D"    16rFFFF " invalid " 
+       "16r042E"    16rFFFF " invalid " 
+       "16r042F"    16rFFFF " invalid " 
+       "16r0430"    16rFFFF " invalid " 
+       "16r0431"    16rFFFF " invalid " 
+       "16r0432"    16rFFFF " invalid " 
+       "16r0433"    16rFFFF " invalid " 
+       "16r0434"    16rFFFF " invalid " 
+       "16r0435"    16rFFFF " invalid " 
+       "16r0436"    16rFFFF " invalid " 
+       "16r0437"    16rFFFF " invalid " 
+       "16r0438"    16rFFFF " invalid " 
+       "16r0439"    16rFFFF " invalid " 
+       "16r043A"    16rFFFF " invalid " 
+       "16r043B"    16rFFFF " invalid " 
+       "16r043C"    16rFFFF " invalid " 
+       "16r043D"    16rFFFF " invalid " 
+       "16r043E"    16rFFFF " invalid " 
+       "16r043F"    16rFFFF " invalid " 
+       "16r0440"    16rFFFF " invalid " 
+       "16r0441"    16rFFFF " invalid " 
+       "16r0442"    16rFFFF " invalid " 
+       "16r0443"    16rFFFF " invalid " 
+       "16r0444"    16rFFFF " invalid " 
+       "16r0445"    16rFFFF " invalid " 
+       "16r0446"    16rFFFF " invalid " 
+       "16r0447"    16rFFFF " invalid " 
+       "16r0448"    16rFFFF " invalid " 
+       "16r0449"    16rFFFF " invalid " 
+       "16r044A"    16rFFFF " invalid " 
+       "16r044B"    16rFFFF " invalid " 
+       "16r044C"    16rFFFF " invalid " 
+       "16r044D"    16rFFFF " invalid " 
+       "16r044E"    16rFFFF " invalid " 
+       "16r044F"    16rFFFF " invalid " 
+       "16r0450"    16rFFFF " invalid " 
+       "16r0451"    16rFFFF " invalid " 
+       "16r0452"    16rFFFF " invalid " 
+       "16r0453"    16rFFFF " invalid " 
+       "16r0454"    16rFFFF " invalid " 
+       "16r0455"    16rFFFF " invalid " 
+       "16r0456"    16rFFFF " invalid " 
+       "16r0457"    16rFFFF " invalid " 
+       "16r0458"    16rFFFF " invalid " 
+       "16r0459"    16rFFFF " invalid " 
+       "16r045A"    16rFFFF " invalid " 
+       "16r045B"    16rFFFF " invalid " 
+       "16r045C"    16rFFFF " invalid " 
+       "16r045D"    16rFFFF " invalid " 
+       "16r045E"    16rFFFF " invalid " 
+       "16r045F"    16rFFFF " invalid " 
+       "16r0460"    16rFFFF " invalid " 
+       "16r0461"    16rFFFF " invalid " 
+       "16r0462"    16rFFFF " invalid " 
+       "16r0463"    16rFFFF " invalid " 
+       "16r0464"    16rFFFF " invalid " 
+       "16r0465"    16rFFFF " invalid " 
+       "16r0466"    16rFFFF " invalid " 
+       "16r0467"    16rFFFF " invalid " 
+       "16r0468"    16rFFFF " invalid " 
+       "16r0469"    16rFFFF " invalid " 
+       "16r046A"    16rFFFF " invalid " 
+       "16r046B"    16rFFFF " invalid " 
+       "16r046C"    16rFFFF " invalid " 
+       "16r046D"    16rFFFF " invalid " 
+       "16r046E"    16rFFFF " invalid " 
+       "16r046F"    16rFFFF " invalid " 
+       "16r0470"    16rFFFF " invalid " 
+       "16r0471"    16rFFFF " invalid " 
+       "16r0472"    16rFFFF " invalid " 
+       "16r0473"    16rFFFF " invalid " 
+       "16r0474"    16rFFFF " invalid " 
+       "16r0475"    16rFFFF " invalid " 
+       "16r0476"    16rFFFF " invalid " 
+       "16r0477"    16rFFFF " invalid " 
+       "16r0478"    16rFFFF " invalid " 
+       "16r0479"    16rFFFF " invalid " 
+       "16r047A"    16rFFFF " invalid " 
+       "16r047B"    16rFFFF " invalid " 
+       "16r047C"    16rFFFF " invalid " 
+       "16r047D"    16rFFFF " invalid " 
+       "16r047E"    16rFFFF " invalid " 
+       "16r047F"    16rFFFF " invalid " 
+       "16r0480"    16rFFFF " invalid " 
+       "16r0481"    16rFFFF " invalid " 
+       "16r0482"    16rFFFF " invalid " 
+       "16r0483"    16rFFFF " invalid " 
+       "16r0484"    16rFFFF " invalid " 
+       "16r0485"    16rFFFF " invalid " 
+       "16r0486"    16rFFFF " invalid " 
+       "16r0487"    16rFFFF " invalid " 
+       "16r0488"    16rFFFF " invalid " 
+       "16r0489"    16rFFFF " invalid " 
+       "16r048A"    16rFFFF " invalid " 
+       "16r048B"    16rFFFF " invalid " 
+       "16r048C"    16rFFFF " invalid " 
+       "16r048D"    16rFFFF " invalid " 
+       "16r048E"    16rFFFF " invalid " 
+       "16r048F"    16rFFFF " invalid " 
+       "16r0490"    16rFFFF " invalid " 
+       "16r0491"    16rFFFF " invalid " 
+       "16r0492"    16rFFFF " invalid " 
+       "16r0493"    16rFFFF " invalid " 
+       "16r0494"    16rFFFF " invalid " 
+       "16r0495"    16rFFFF " invalid " 
+       "16r0496"    16rFFFF " invalid " 
+       "16r0497"    16rFFFF " invalid " 
+       "16r0498"    16rFFFF " invalid " 
+       "16r0499"    16rFFFF " invalid " 
+       "16r049A"    16rFFFF " invalid " 
+       "16r049B"    16rFFFF " invalid " 
+       "16r049C"    16rFFFF " invalid " 
+       "16r049D"    16rFFFF " invalid " 
+       "16r049E"    16rFFFF " invalid " 
+       "16r049F"    16rFFFF " invalid " 
+       "16r04A0"    16rFFFF " invalid " 
+       "16r04A1"    16rFFFF " invalid " 
+       "16r04A2"    16rFFFF " invalid " 
+       "16r04A3"    16rFFFF " invalid " 
+       "16r04A4"    16rFFFF " invalid " 
+       "16r04A5"    16rFFFF " invalid " 
+       "16r04A6"    16rFFFF " invalid " 
+       "16r04A7"    16rFFFF " invalid " 
+       "16r04A8"    16rFFFF " invalid " 
+       "16r04A9"    16rFFFF " invalid " 
+       "16r04AA"    16rFFFF " invalid " 
+       "16r04AB"    16rFFFF " invalid " 
+       "16r04AC"    16rFFFF " invalid " 
+       "16r04AD"    16rFFFF " invalid " 
+       "16r04AE"    16rFFFF " invalid " 
+       "16r04AF"    16rFFFF " invalid " 
+       "16r04B0"    16rFFFF " invalid " 
+       "16r04B1"    16rFFFF " invalid " 
+       "16r04B2"    16rFFFF " invalid " 
+       "16r04B3"    16rFFFF " invalid " 
+       "16r04B4"    16rFFFF " invalid " 
+       "16r04B5"    16rFFFF " invalid " 
+       "16r04B6"    16rFFFF " invalid " 
+       "16r04B7"    16rFFFF " invalid " 
+       "16r04B8"    16rFFFF " invalid " 
+       "16r04B9"    16rFFFF " invalid " 
+       "16r04BA"    16rFFFF " invalid " 
+       "16r04BB"    16rFFFF " invalid " 
+       "16r04BC"    16rFFFF " invalid " 
+       "16r04BD"    16rFFFF " invalid " 
+       "16r04BE"    16rFFFF " invalid " 
+       "16r04BF"    16rFFFF " invalid " 
+       "16r04C0"    16rFFFF " invalid " 
+       "16r04C1"    16rFFFF " invalid " 
+       "16r04C2"    16rFFFF " invalid " 
+       "16r04C3"    16rFFFF " invalid " 
+       "16r04C4"    16rFFFF " invalid " 
+       "16r04C5"    16rFFFF " invalid " 
+       "16r04C6"    16rFFFF " invalid " 
+       "16r04C7"    16rFFFF " invalid " 
+       "16r04C8"    16rFFFF " invalid " 
+       "16r04C9"    16rFFFF " invalid " 
+       "16r04CA"    16rFFFF " invalid " 
+       "16r04CB"    16rFFFF " invalid " 
+       "16r04CC"    16rFFFF " invalid " 
+       "16r04CD"    16rFFFF " invalid " 
+       "16r04CE"    16rFFFF " invalid " 
+       "16r04CF"    16rFFFF " invalid " 
+       "16r04D0"    16rFFFF " invalid " 
+       "16r04D1"    16rFFFF " invalid " 
+       "16r04D2"    16rFFFF " invalid " 
+       "16r04D3"    16rFFFF " invalid " 
+       "16r04D4"    16rFFFF " invalid " 
+       "16r04D5"    16rFFFF " invalid " 
+       "16r04D6"    16rFFFF " invalid " 
+       "16r04D7"    16rFFFF " invalid " 
+       "16r04D8"    16rFFFF " invalid " 
+       "16r04D9"    16rFFFF " invalid " 
+       "16r04DA"    16rFFFF " invalid " 
+       "16r04DB"    16rFFFF " invalid " 
+       "16r04DC"    16rFFFF " invalid " 
+       "16r04DD"    16rFFFF " invalid " 
+       "16r04DE"    16rFFFF " invalid " 
+       "16r04DF"    16rFFFF " invalid " 
+       "16r04E0"    16rFFFF " invalid " 
+       "16r04E1"    16rFFFF " invalid " 
+       "16r04E2"    16rFFFF " invalid " 
+       "16r04E3"    16rFFFF " invalid " 
+       "16r04E4"    16rFFFF " invalid " 
+       "16r04E5"    16rFFFF " invalid " 
+       "16r04E6"    16rFFFF " invalid " 
+       "16r04E7"    16rFFFF " invalid " 
+       "16r04E8"    16rFFFF " invalid " 
+       "16r04E9"    16rFFFF " invalid " 
+       "16r04EA"    16rFFFF " invalid " 
+       "16r04EB"    16rFFFF " invalid " 
+       "16r04EC"    16rFFFF " invalid " 
+       "16r04ED"    16rFFFF " invalid " 
+       "16r04EE"    16rFFFF " invalid " 
+       "16r04EF"    16rFFFF " invalid " 
+       "16r04F0"    16rFFFF " invalid " 
+       "16r04F1"    16rFFFF " invalid " 
+       "16r04F2"    16rFFFF " invalid " 
+       "16r04F3"    16rFFFF " invalid " 
+       "16r04F4"    16rFFFF " invalid " 
+       "16r04F5"    16rFFFF " invalid " 
+       "16r04F6"    16rFFFF " invalid " 
+       "16r04F7"    16rFFFF " invalid " 
+       "16r04F8"    16rFFFF " invalid " 
+       "16r04F9"    16rFFFF " invalid " 
+       "16r04FA"    16rFFFF " invalid " 
+       "16r04FB"    16rFFFF " invalid " 
+       "16r04FC"    16rFFFF " invalid " 
+       "16r04FD"    16rFFFF " invalid " 
+       "16r04FE"    16rFFFF " invalid " 
+       "16r04FF"    16rFFFF " invalid " 
+       "16r0500"    16rFFFF " invalid " 
+       "16r0501"    16rFFFF " invalid " 
+       "16r0502"    16rFFFF " invalid " 
+       "16r0503"    16rFFFF " invalid " 
+       "16r0504"    16rFFFF " invalid " 
+       "16r0505"    16rFFFF " invalid " 
+       "16r0506"    16rFFFF " invalid " 
+       "16r0507"    16rFFFF " invalid " 
+       "16r0508"    16rFFFF " invalid " 
+       "16r0509"    16rFFFF " invalid " 
+       "16r050A"    16rFFFF " invalid " 
+       "16r050B"    16rFFFF " invalid " 
+       "16r050C"    16rFFFF " invalid " 
+       "16r050D"    16rFFFF " invalid " 
+       "16r050E"    16rFFFF " invalid " 
+       "16r050F"    16rFFFF " invalid " 
+       "16r0510"    16rFFFF " invalid " 
+       "16r0511"    16rFFFF " invalid " 
+       "16r0512"    16rFFFF " invalid " 
+       "16r0513"    16rFFFF " invalid " 
+       "16r0514"    16rFFFF " invalid " 
+       "16r0515"    16rFFFF " invalid " 
+       "16r0516"    16rFFFF " invalid " 
+       "16r0517"    16rFFFF " invalid " 
+       "16r0518"    16rFFFF " invalid " 
+       "16r0519"    16rFFFF " invalid " 
+       "16r051A"    16rFFFF " invalid " 
+       "16r051B"    16rFFFF " invalid " 
+       "16r051C"    16rFFFF " invalid " 
+       "16r051D"    16rFFFF " invalid " 
+       "16r051E"    16rFFFF " invalid " 
+       "16r051F"    16rFFFF " invalid " 
+       "16r0520"    16rFFFF " invalid " 
+       "16r0521"    16rFFFF " invalid " 
+       "16r0522"    16rFFFF " invalid " 
+       "16r0523"    16rFFFF " invalid " 
+       "16r0524"    16rFFFF " invalid " 
+       "16r0525"    16rFFFF " invalid " 
+       "16r0526"    16rFFFF " invalid " 
+       "16r0527"    16rFFFF " invalid " 
+       "16r0528"    16rFFFF " invalid " 
+       "16r0529"    16rFFFF " invalid " 
+       "16r052A"    16rFFFF " invalid " 
+       "16r052B"    16rFFFF " invalid " 
+       "16r052C"    16rFFFF " invalid " 
+       "16r052D"    16rFFFF " invalid " 
+       "16r052E"    16rFFFF " invalid " 
+       "16r052F"    16rFFFF " invalid " 
+       "16r0530"    16rFFFF " invalid " 
+       "16r0531"    16rFFFF " invalid " 
+       "16r0532"    16rFFFF " invalid " 
+       "16r0533"    16rFFFF " invalid " 
+       "16r0534"    16rFFFF " invalid " 
+       "16r0535"    16rFFFF " invalid " 
+       "16r0536"    16rFFFF " invalid " 
+       "16r0537"    16rFFFF " invalid " 
+       "16r0538"    16rFFFF " invalid " 
+       "16r0539"    16rFFFF " invalid " 
+       "16r053A"    16rFFFF " invalid " 
+       "16r053B"    16rFFFF " invalid " 
+       "16r053C"    16rFFFF " invalid " 
+       "16r053D"    16rFFFF " invalid " 
+       "16r053E"    16rFFFF " invalid " 
+       "16r053F"    16rFFFF " invalid " 
+       "16r0540"    16rFFFF " invalid " 
+       "16r0541"    16rFFFF " invalid " 
+       "16r0542"    16rFFFF " invalid " 
+       "16r0543"    16rFFFF " invalid " 
+       "16r0544"    16rFFFF " invalid " 
+       "16r0545"    16rFFFF " invalid " 
+       "16r0546"    16rFFFF " invalid " 
+       "16r0547"    16rFFFF " invalid " 
+       "16r0548"    16rFFFF " invalid " 
+       "16r0549"    16rFFFF " invalid " 
+       "16r054A"    16rFFFF " invalid " 
+       "16r054B"    16rFFFF " invalid " 
+       "16r054C"    16rFFFF " invalid " 
+       "16r054D"    16rFFFF " invalid " 
+       "16r054E"    16rFFFF " invalid " 
+       "16r054F"    16rFFFF " invalid " 
+       "16r0550"    16rFFFF " invalid " 
+       "16r0551"    16rFFFF " invalid " 
+       "16r0552"    16rFFFF " invalid " 
+       "16r0553"    16rFFFF " invalid " 
+       "16r0554"    16rFFFF " invalid " 
+       "16r0555"    16rFFFF " invalid " 
+       "16r0556"    16rFFFF " invalid " 
+       "16r0557"    16rFFFF " invalid " 
+       "16r0558"    16rFFFF " invalid " 
+       "16r0559"    16rFFFF " invalid " 
+       "16r055A"    16rFFFF " invalid " 
+       "16r055B"    16rFFFF " invalid " 
+       "16r055C"    16rFFFF " invalid " 
+       "16r055D"    16rFFFF " invalid " 
+       "16r055E"    16rFFFF " invalid " 
+       "16r055F"    16rFFFF " invalid " 
+       "16r0560"    16rFFFF " invalid " 
+       "16r0561"    16rFFFF " invalid " 
+       "16r0562"    16rFFFF " invalid " 
+       "16r0563"    16rFFFF " invalid " 
+       "16r0564"    16rFFFF " invalid " 
+       "16r0565"    16rFFFF " invalid " 
+       "16r0566"    16rFFFF " invalid " 
+       "16r0567"    16rFFFF " invalid " 
+       "16r0568"    16rFFFF " invalid " 
+       "16r0569"    16rFFFF " invalid " 
+       "16r056A"    16rFFFF " invalid " 
+       "16r056B"    16rFFFF " invalid " 
+       "16r056C"    16rFFFF " invalid " 
+       "16r056D"    16rFFFF " invalid " 
+       "16r056E"    16rFFFF " invalid " 
+       "16r056F"    16rFFFF " invalid " 
+       "16r0570"    16rFFFF " invalid " 
+       "16r0571"    16rFFFF " invalid " 
+       "16r0572"    16rFFFF " invalid " 
+       "16r0573"    16rFFFF " invalid " 
+       "16r0574"    16rFFFF " invalid " 
+       "16r0575"    16rFFFF " invalid " 
+       "16r0576"    16rFFFF " invalid " 
+       "16r0577"    16rFFFF " invalid " 
+       "16r0578"    16rFFFF " invalid " 
+       "16r0579"    16rFFFF " invalid " 
+       "16r057A"    16rFFFF " invalid " 
+       "16r057B"    16rFFFF " invalid " 
+       "16r057C"    16rFFFF " invalid " 
+       "16r057D"    16rFFFF " invalid " 
+       "16r057E"    16rFFFF " invalid " 
+       "16r057F"    16rFFFF " invalid " 
+       "16r0580"    16rFFFF " invalid " 
+       "16r0581"    16rFFFF " invalid " 
+       "16r0582"    16rFFFF " invalid " 
+       "16r0583"    16rFFFF " invalid " 
+       "16r0584"    16rFFFF " invalid " 
+       "16r0585"    16rFFFF " invalid " 
+       "16r0586"    16rFFFF " invalid " 
+       "16r0587"    16rFFFF " invalid " 
+       "16r0588"    16rFFFF " invalid " 
+       "16r0589"    16rFFFF " invalid " 
+       "16r058A"    16rFFFF " invalid " 
+       "16r058B"    16rFFFF " invalid " 
+       "16r058C"    16rFFFF " invalid " 
+       "16r058D"    16rFFFF " invalid " 
+       "16r058E"    16rFFFF " invalid " 
+       "16r058F"    16rFFFF " invalid " 
+       "16r0590"    16rFFFF " invalid " 
+       "16r0591"    16rFFFF " invalid " 
+       "16r0592"    16rFFFF " invalid " 
+       "16r0593"    16rFFFF " invalid " 
+       "16r0594"    16rFFFF " invalid " 
+       "16r0595"    16rFFFF " invalid " 
+       "16r0596"    16rFFFF " invalid " 
+       "16r0597"    16rFFFF " invalid " 
+       "16r0598"    16rFFFF " invalid " 
+       "16r0599"    16rFFFF " invalid " 
+       "16r059A"    16rFFFF " invalid " 
+       "16r059B"    16rFFFF " invalid " 
+       "16r059C"    16rFFFF " invalid " 
+       "16r059D"    16rFFFF " invalid " 
+       "16r059E"    16rFFFF " invalid " 
+       "16r059F"    16rFFFF " invalid " 
+       "16r05A0"    16rFFFF " invalid " 
+       "16r05A1"    16rFFFF " invalid " 
+       "16r05A2"    16rFFFF " invalid " 
+       "16r05A3"    16rFFFF " invalid " 
+       "16r05A4"    16rFFFF " invalid " 
+       "16r05A5"    16rFFFF " invalid " 
+       "16r05A6"    16rFFFF " invalid " 
+       "16r05A7"    16rFFFF " invalid " 
+       "16r05A8"    16rFFFF " invalid " 
+       "16r05A9"    16rFFFF " invalid " 
+       "16r05AA"    16rFFFF " invalid " 
+       "16r05AB"    16rFFFF " invalid " 
+       "16r05AC"    16rFFFF " invalid " 
+       "16r05AD"    16rFFFF " invalid " 
+       "16r05AE"    16rFFFF " invalid " 
+       "16r05AF"    16rFFFF " invalid " 
+       "16r05B0"    16rFFFF " invalid " 
+       "16r05B1"    16rFFFF " invalid " 
+       "16r05B2"    16rFFFF " invalid " 
+       "16r05B3"    16rFFFF " invalid " 
+       "16r05B4"    16rFFFF " invalid " 
+       "16r05B5"    16rFFFF " invalid " 
+       "16r05B6"    16rFFFF " invalid " 
+       "16r05B7"    16rFFFF " invalid " 
+       "16r05B8"    16rFFFF " invalid " 
+       "16r05B9"    16rFFFF " invalid " 
+       "16r05BA"    16rFFFF " invalid " 
+       "16r05BB"    16rFFFF " invalid " 
+       "16r05BC"    16rFFFF " invalid " 
+       "16r05BD"    16rFFFF " invalid " 
+       "16r05BE"    16rFFFF " invalid " 
+       "16r05BF"    16rFFFF " invalid " 
+       "16r05C0"    16rFFFF " invalid " 
+       "16r05C1"    16rFFFF " invalid " 
+       "16r05C2"    16rFFFF " invalid " 
+       "16r05C3"    16rFFFF " invalid " 
+       "16r05C4"    16rFFFF " invalid " 
+       "16r05C5"    16rFFFF " invalid " 
+       "16r05C6"    16rFFFF " invalid " 
+       "16r05C7"    16rFFFF " invalid " 
+       "16r05C8"    16rFFFF " invalid " 
+       "16r05C9"    16rFFFF " invalid " 
+       "16r05CA"    16rFFFF " invalid " 
+       "16r05CB"    16rFFFF " invalid " 
+       "16r05CC"    16rFFFF " invalid " 
+       "16r05CD"    16rFFFF " invalid " 
+       "16r05CE"    16rFFFF " invalid " 
+       "16r05CF"    16rFFFF " invalid " 
+       "16r05D0"    16rFFFF " invalid " 
+       "16r05D1"    16rFFFF " invalid " 
+       "16r05D2"    16rFFFF " invalid " 
+       "16r05D3"    16rFFFF " invalid " 
+       "16r05D4"    16rFFFF " invalid " 
+       "16r05D5"    16rFFFF " invalid " 
+       "16r05D6"    16rFFFF " invalid " 
+       "16r05D7"    16rFFFF " invalid " 
+       "16r05D8"    16rFFFF " invalid " 
+       "16r05D9"    16rFFFF " invalid " 
+       "16r05DA"    16rFFFF " invalid " 
+       "16r05DB"    16rFFFF " invalid " 
+       "16r05DC"    16rFFFF " invalid " 
+       "16r05DD"    16rFFFF " invalid " 
+       "16r05DE"    16rFFFF " invalid " 
+       "16r05DF"    16rFFFF " invalid " 
+       "16r05E0"    16rFFFF " invalid " 
+       "16r05E1"    16rFFFF " invalid " 
+       "16r05E2"    16rFFFF " invalid " 
+       "16r05E3"    16rFFFF " invalid " 
+       "16r05E4"    16rFFFF " invalid " 
+       "16r05E5"    16rFFFF " invalid " 
+       "16r05E6"    16rFFFF " invalid " 
+       "16r05E7"    16rFFFF " invalid " 
+       "16r05E8"    16rFFFF " invalid " 
+       "16r05E9"    16rFFFF " invalid " 
+       "16r05EA"    16rFFFF " invalid " 
+       "16r05EB"    16rFFFF " invalid " 
+       "16r05EC"    16rFFFF " invalid " 
+       "16r05ED"    16rFFFF " invalid " 
+       "16r05EE"    16rFFFF " invalid " 
+       "16r05EF"    16rFFFF " invalid " 
+       "16r05F0"    16rFFFF " invalid " 
+       "16r05F1"    16rFFFF " invalid " 
+       "16r05F2"    16rFFFF " invalid " 
+       "16r05F3"    16rFFFF " invalid " 
+       "16r05F4"    16rFFFF " invalid " 
+       "16r05F5"    16rFFFF " invalid " 
+       "16r05F6"    16rFFFF " invalid " 
+       "16r05F7"    16rFFFF " invalid " 
+       "16r05F8"    16rFFFF " invalid " 
+       "16r05F9"    16rFFFF " invalid " 
+       "16r05FA"    16rFFFF " invalid " 
+       "16r05FB"    16rFFFF " invalid " 
+       "16r05FC"    16rFFFF " invalid " 
+       "16r05FD"    16rFFFF " invalid " 
+       "16r05FE"    16rFFFF " invalid " 
+       "16r05FF"    16rFFFF " invalid " 
+       "16r0600"    16rFFFF " invalid " 
+       "16r0601"    16rFFFF " invalid " 
+       "16r0602"    16rFFFF " invalid " 
+       "16r0603"    16rFFFF " invalid " 
+       "16r0604"    16rFFFF " invalid " 
+       "16r0605"    16rFFFF " invalid " 
+       "16r0606"    16rFFFF " invalid " 
+       "16r0607"    16rFFFF " invalid " 
+       "16r0608"    16rFFFF " invalid " 
+       "16r0609"    16rFFFF " invalid " 
+       "16r060A"    16rFFFF " invalid " 
+       "16r060B"    16rFFFF " invalid " 
+       "16r060C"    16rFFFF " invalid " 
+       "16r060D"    16rFFFF " invalid " 
+       "16r060E"    16rFFFF " invalid " 
+       "16r060F"    16rFFFF " invalid " 
+       "16r0610"    16rFFFF " invalid " 
+       "16r0611"    16rFFFF " invalid " 
+       "16r0612"    16rFFFF " invalid " 
+       "16r0613"    16rFFFF " invalid " 
+       "16r0614"    16rFFFF " invalid " 
+       "16r0615"    16rFFFF " invalid " 
+       "16r0616"    16rFFFF " invalid " 
+       "16r0617"    16rFFFF " invalid " 
+       "16r0618"    16rFFFF " invalid " 
+       "16r0619"    16rFFFF " invalid " 
+       "16r061A"    16rFFFF " invalid " 
+       "16r061B"    16rFFFF " invalid " 
+       "16r061C"    16rFFFF " invalid " 
+       "16r061D"    16rFFFF " invalid " 
+       "16r061E"    16rFFFF " invalid " 
+       "16r061F"    16rFFFF " invalid " 
+       "16r0620"    16rFFFF " invalid " 
+       "16r0621"    16rFFFF " invalid " 
+       "16r0622"    16rFFFF " invalid " 
+       "16r0623"    16rFFFF " invalid " 
+       "16r0624"    16rFFFF " invalid " 
+       "16r0625"    16rFFFF " invalid " 
+       "16r0626"    16rFFFF " invalid " 
+       "16r0627"    16rFFFF " invalid " 
+       "16r0628"    16rFFFF " invalid " 
+       "16r0629"    16rFFFF " invalid " 
+       "16r062A"    16rFFFF " invalid " 
+       "16r062B"    16rFFFF " invalid " 
+       "16r062C"    16rFFFF " invalid " 
+       "16r062D"    16rFFFF " invalid " 
+       "16r062E"    16rFFFF " invalid " 
+       "16r062F"    16rFFFF " invalid " 
+       "16r0630"    16rFFFF " invalid " 
+       "16r0631"    16rFFFF " invalid " 
+       "16r0632"    16rFFFF " invalid " 
+       "16r0633"    16rFFFF " invalid " 
+       "16r0634"    16rFFFF " invalid " 
+       "16r0635"    16rFFFF " invalid " 
+       "16r0636"    16rFFFF " invalid " 
+       "16r0637"    16rFFFF " invalid " 
+       "16r0638"    16rFFFF " invalid " 
+       "16r0639"    16rFFFF " invalid " 
+       "16r063A"    16rFFFF " invalid " 
+       "16r063B"    16rFFFF " invalid " 
+       "16r063C"    16rFFFF " invalid " 
+       "16r063D"    16rFFFF " invalid " 
+       "16r063E"    16rFFFF " invalid " 
+       "16r063F"    16rFFFF " invalid " 
+       "16r0640"    16rFFFF " invalid " 
+       "16r0641"    16rFFFF " invalid " 
+       "16r0642"    16rFFFF " invalid " 
+       "16r0643"    16rFFFF " invalid " 
+       "16r0644"    16rFFFF " invalid " 
+       "16r0645"    16rFFFF " invalid " 
+       "16r0646"    16rFFFF " invalid " 
+       "16r0647"    16rFFFF " invalid " 
+       "16r0648"    16rFFFF " invalid " 
+       "16r0649"    16rFFFF " invalid " 
+       "16r064A"    16rFFFF " invalid " 
+       "16r064B"    16rFFFF " invalid " 
+       "16r064C"    16rFFFF " invalid " 
+       "16r064D"    16rFFFF " invalid " 
+       "16r064E"    16rFFFF " invalid " 
+       "16r064F"    16rFFFF " invalid " 
+       "16r0650"    16rFFFF " invalid " 
+       "16r0651"    16rFFFF " invalid " 
+       "16r0652"    16rFFFF " invalid " 
+       "16r0653"    16rFFFF " invalid " 
+       "16r0654"    16rFFFF " invalid " 
+       "16r0655"    16rFFFF " invalid " 
+       "16r0656"    16rFFFF " invalid " 
+       "16r0657"    16rFFFF " invalid " 
+       "16r0658"    16rFFFF " invalid " 
+       "16r0659"    16rFFFF " invalid " 
+       "16r065A"    16rFFFF " invalid " 
+       "16r065B"    16rFFFF " invalid " 
+       "16r065C"    16rFFFF " invalid " 
+       "16r065D"    16rFFFF " invalid " 
+       "16r065E"    16rFFFF " invalid " 
+       "16r065F"    16rFFFF " invalid " 
+       "16r0660"    16rFFFF " invalid " 
+       "16r0661"    16rFFFF " invalid " 
+       "16r0662"    16rFFFF " invalid " 
+       "16r0663"    16rFFFF " invalid " 
+       "16r0664"    16rFFFF " invalid " 
+       "16r0665"    16rFFFF " invalid " 
+       "16r0666"    16rFFFF " invalid " 
+       "16r0667"    16rFFFF " invalid " 
+       "16r0668"    16rFFFF " invalid " 
+       "16r0669"    16rFFFF " invalid " 
+       "16r066A"    16rFFFF " invalid " 
+       "16r066B"    16rFFFF " invalid " 
+       "16r066C"    16rFFFF " invalid " 
+       "16r066D"    16rFFFF " invalid " 
+       "16r066E"    16rFFFF " invalid " 
+       "16r066F"    16rFFFF " invalid " 
+       "16r0670"    16rFFFF " invalid " 
+       "16r0671"    16rFFFF " invalid " 
+       "16r0672"    16rFFFF " invalid " 
+       "16r0673"    16rFFFF " invalid " 
+       "16r0674"    16rFFFF " invalid " 
+       "16r0675"    16rFFFF " invalid " 
+       "16r0676"    16rFFFF " invalid " 
+       "16r0677"    16rFFFF " invalid " 
+       "16r0678"    16rFFFF " invalid " 
+       "16r0679"    16rFFFF " invalid " 
+       "16r067A"    16rFFFF " invalid " 
+       "16r067B"    16rFFFF " invalid " 
+       "16r067C"    16rFFFF " invalid " 
+       "16r067D"    16rFFFF " invalid " 
+       "16r067E"    16rFFFF " invalid " 
+       "16r067F"    16rFFFF " invalid " 
+       "16r0680"    16rFFFF " invalid " 
+       "16r0681"    16rFFFF " invalid " 
+       "16r0682"    16rFFFF " invalid " 
+       "16r0683"    16rFFFF " invalid " 
+       "16r0684"    16rFFFF " invalid " 
+       "16r0685"    16rFFFF " invalid " 
+       "16r0686"    16rFFFF " invalid " 
+       "16r0687"    16rFFFF " invalid " 
+       "16r0688"    16rFFFF " invalid " 
+       "16r0689"    16rFFFF " invalid " 
+       "16r068A"    16rFFFF " invalid " 
+       "16r068B"    16rFFFF " invalid " 
+       "16r068C"    16rFFFF " invalid " 
+       "16r068D"    16rFFFF " invalid " 
+       "16r068E"    16rFFFF " invalid " 
+       "16r068F"    16rFFFF " invalid " 
+       "16r0690"    16rFFFF " invalid " 
+       "16r0691"    16rFFFF " invalid " 
+       "16r0692"    16rFFFF " invalid " 
+       "16r0693"    16rFFFF " invalid " 
+       "16r0694"    16rFFFF " invalid " 
+       "16r0695"    16rFFFF " invalid " 
+       "16r0696"    16rFFFF " invalid " 
+       "16r0697"    16rFFFF " invalid " 
+       "16r0698"    16rFFFF " invalid " 
+       "16r0699"    16rFFFF " invalid " 
+       "16r069A"    16rFFFF " invalid " 
+       "16r069B"    16rFFFF " invalid " 
+       "16r069C"    16rFFFF " invalid " 
+       "16r069D"    16rFFFF " invalid " 
+       "16r069E"    16rFFFF " invalid " 
+       "16r069F"    16rFFFF " invalid " 
+       "16r06A0"    16rFFFF " invalid " 
+       "16r06A1"    16rFFFF " invalid " 
+       "16r06A2"    16rFFFF " invalid " 
+       "16r06A3"    16rFFFF " invalid " 
+       "16r06A4"    16rFFFF " invalid " 
+       "16r06A5"    16rFFFF " invalid " 
+       "16r06A6"    16rFFFF " invalid " 
+       "16r06A7"    16rFFFF " invalid " 
+       "16r06A8"    16rFFFF " invalid " 
+       "16r06A9"    16rFFFF " invalid " 
+       "16r06AA"    16rFFFF " invalid " 
+       "16r06AB"    16rFFFF " invalid " 
+       "16r06AC"    16rFFFF " invalid " 
+       "16r06AD"    16rFFFF " invalid " 
+       "16r06AE"    16rFFFF " invalid " 
+       "16r06AF"    16rFFFF " invalid " 
+       "16r06B0"    16rFFFF " invalid " 
+       "16r06B1"    16rFFFF " invalid " 
+       "16r06B2"    16rFFFF " invalid " 
+       "16r06B3"    16rFFFF " invalid " 
+       "16r06B4"    16rFFFF " invalid " 
+       "16r06B5"    16rFFFF " invalid " 
+       "16r06B6"    16rFFFF " invalid " 
+       "16r06B7"    16rFFFF " invalid " 
+       "16r06B8"    16rFFFF " invalid " 
+       "16r06B9"    16rFFFF " invalid " 
+       "16r06BA"    16rFFFF " invalid " 
+       "16r06BB"    16rFFFF " invalid " 
+       "16r06BC"    16rFFFF " invalid " 
+       "16r06BD"    16rFFFF " invalid " 
+       "16r06BE"    16rFFFF " invalid " 
+       "16r06BF"    16rFFFF " invalid " 
+       "16r06C0"    16rFFFF " invalid " 
+       "16r06C1"    16rFFFF " invalid " 
+       "16r06C2"    16rFFFF " invalid " 
+       "16r06C3"    16rFFFF " invalid " 
+       "16r06C4"    16rFFFF " invalid " 
+       "16r06C5"    16rFFFF " invalid " 
+       "16r06C6"    16rFFFF " invalid " 
+       "16r06C7"    16rFFFF " invalid " 
+       "16r06C8"    16rFFFF " invalid " 
+       "16r06C9"    16rFFFF " invalid " 
+       "16r06CA"    16rFFFF " invalid " 
+       "16r06CB"    16rFFFF " invalid " 
+       "16r06CC"    16rFFFF " invalid " 
+       "16r06CD"    16rFFFF " invalid " 
+       "16r06CE"    16rFFFF " invalid " 
+       "16r06CF"    16rFFFF " invalid " 
+       "16r06D0"    16rFFFF " invalid " 
+       "16r06D1"    16rFFFF " invalid " 
+       "16r06D2"    16rFFFF " invalid " 
+       "16r06D3"    16rFFFF " invalid " 
+       "16r06D4"    16rFFFF " invalid " 
+       "16r06D5"    16rFFFF " invalid " 
+       "16r06D6"    16rFFFF " invalid " 
+       "16r06D7"    16rFFFF " invalid " 
+       "16r06D8"    16rFFFF " invalid " 
+       "16r06D9"    16rFFFF " invalid " 
+       "16r06DA"    16rFFFF " invalid " 
+       "16r06DB"    16rFFFF " invalid " 
+       "16r06DC"    16rFFFF " invalid " 
+       "16r06DD"    16rFFFF " invalid " 
+       "16r06DE"    16rFFFF " invalid " 
+       "16r06DF"    16rFFFF " invalid " 
+       "16r06E0"    16rFFFF " invalid " 
+       "16r06E1"    16rFFFF " invalid " 
+       "16r06E2"    16rFFFF " invalid " 
+       "16r06E3"    16rFFFF " invalid " 
+       "16r06E4"    16rFFFF " invalid " 
+       "16r06E5"    16rFFFF " invalid " 
+       "16r06E6"    16rFFFF " invalid " 
+       "16r06E7"    16rFFFF " invalid " 
+       "16r06E8"    16rFFFF " invalid " 
+       "16r06E9"    16rFFFF " invalid " 
+       "16r06EA"    16rFFFF " invalid " 
+       "16r06EB"    16rFFFF " invalid " 
+       "16r06EC"    16rFFFF " invalid " 
+       "16r06ED"    16rFFFF " invalid " 
+       "16r06EE"    16rFFFF " invalid " 
+       "16r06EF"    16rFFFF " invalid " 
+       "16r06F0"    16rFFFF " invalid " 
+       "16r06F1"    16rFFFF " invalid " 
+       "16r06F2"    16rFFFF " invalid " 
+       "16r06F3"    16rFFFF " invalid " 
+       "16r06F4"    16rFFFF " invalid " 
+       "16r06F5"    16rFFFF " invalid " 
+       "16r06F6"    16rFFFF " invalid " 
+       "16r06F7"    16rFFFF " invalid " 
+       "16r06F8"    16rFFFF " invalid " 
+       "16r06F9"    16rFFFF " invalid " 
+       "16r06FA"    16rFFFF " invalid " 
+       "16r06FB"    16rFFFF " invalid " 
+       "16r06FC"    16rFFFF " invalid " 
+       "16r06FD"    16rFFFF " invalid " 
+       "16r06FE"    16rFFFF " invalid " 
+       "16r06FF"    16rFFFF " invalid " 
+       "16r0700"    16rFFFF " invalid " 
+       "16r0701"    16rFFFF " invalid " 
+       "16r0702"    16rFFFF " invalid " 
+       "16r0703"    16rFFFF " invalid " 
+       "16r0704"    16rFFFF " invalid " 
+       "16r0705"    16rFFFF " invalid " 
+       "16r0706"    16rFFFF " invalid " 
+       "16r0707"    16rFFFF " invalid " 
+       "16r0708"    16rFFFF " invalid " 
+       "16r0709"    16rFFFF " invalid " 
+       "16r070A"    16rFFFF " invalid " 
+       "16r070B"    16rFFFF " invalid " 
+       "16r070C"    16rFFFF " invalid " 
+       "16r070D"    16rFFFF " invalid " 
+       "16r070E"    16rFFFF " invalid " 
+       "16r070F"    16rFFFF " invalid " 
+       "16r0710"    16rFFFF " invalid " 
+       "16r0711"    16rFFFF " invalid " 
+       "16r0712"    16rFFFF " invalid " 
+       "16r0713"    16rFFFF " invalid " 
+       "16r0714"    16rFFFF " invalid " 
+       "16r0715"    16rFFFF " invalid " 
+       "16r0716"    16rFFFF " invalid " 
+       "16r0717"    16rFFFF " invalid " 
+       "16r0718"    16rFFFF " invalid " 
+       "16r0719"    16rFFFF " invalid " 
+       "16r071A"    16rFFFF " invalid " 
+       "16r071B"    16rFFFF " invalid " 
+       "16r071C"    16rFFFF " invalid " 
+       "16r071D"    16rFFFF " invalid " 
+       "16r071E"    16rFFFF " invalid " 
+       "16r071F"    16rFFFF " invalid " 
+       "16r0720"    16rFFFF " invalid " 
+       "16r0721"    16rFFFF " invalid " 
+       "16r0722"    16rFFFF " invalid " 
+       "16r0723"    16rFFFF " invalid " 
+       "16r0724"    16rFFFF " invalid " 
+       "16r0725"    16rFFFF " invalid " 
+       "16r0726"    16rFFFF " invalid " 
+       "16r0727"    16rFFFF " invalid " 
+       "16r0728"    16rFFFF " invalid " 
+       "16r0729"    16rFFFF " invalid " 
+       "16r072A"    16rFFFF " invalid " 
+       "16r072B"    16rFFFF " invalid " 
+       "16r072C"    16rFFFF " invalid " 
+       "16r072D"    16rFFFF " invalid " 
+       "16r072E"    16rFFFF " invalid " 
+       "16r072F"    16rFFFF " invalid " 
+       "16r0730"    16rFFFF " invalid " 
+       "16r0731"    16rFFFF " invalid " 
+       "16r0732"    16rFFFF " invalid " 
+       "16r0733"    16rFFFF " invalid " 
+       "16r0734"    16rFFFF " invalid " 
+       "16r0735"    16rFFFF " invalid " 
+       "16r0736"    16rFFFF " invalid " 
+       "16r0737"    16rFFFF " invalid " 
+       "16r0738"    16rFFFF " invalid " 
+       "16r0739"    16rFFFF " invalid " 
+       "16r073A"    16rFFFF " invalid " 
+       "16r073B"    16rFFFF " invalid " 
+       "16r073C"    16rFFFF " invalid " 
+       "16r073D"    16rFFFF " invalid " 
+       "16r073E"    16rFFFF " invalid " 
+       "16r073F"    16rFFFF " invalid " 
+       "16r0740"    16rFFFF " invalid " 
+       "16r0741"    16rFFFF " invalid " 
+       "16r0742"    16rFFFF " invalid " 
+       "16r0743"    16rFFFF " invalid " 
+       "16r0744"    16rFFFF " invalid " 
+       "16r0745"    16rFFFF " invalid " 
+       "16r0746"    16rFFFF " invalid " 
+       "16r0747"    16rFFFF " invalid " 
+       "16r0748"    16rFFFF " invalid " 
+       "16r0749"    16rFFFF " invalid " 
+       "16r074A"    16rFFFF " invalid " 
+       "16r074B"    16rFFFF " invalid " 
+       "16r074C"    16rFFFF " invalid " 
+       "16r074D"    16rFFFF " invalid " 
+       "16r074E"    16rFFFF " invalid " 
+       "16r074F"    16rFFFF " invalid " 
+       "16r0750"    16rFFFF " invalid " 
+       "16r0751"    16rFFFF " invalid " 
+       "16r0752"    16rFFFF " invalid " 
+       "16r0753"    16rFFFF " invalid " 
+       "16r0754"    16rFFFF " invalid " 
+       "16r0755"    16rFFFF " invalid " 
+       "16r0756"    16rFFFF " invalid " 
+       "16r0757"    16rFFFF " invalid " 
+       "16r0758"    16rFFFF " invalid " 
+       "16r0759"    16rFFFF " invalid " 
+       "16r075A"    16rFFFF " invalid " 
+       "16r075B"    16rFFFF " invalid " 
+       "16r075C"    16rFFFF " invalid " 
+       "16r075D"    16rFFFF " invalid " 
+       "16r075E"    16rFFFF " invalid " 
+       "16r075F"    16rFFFF " invalid " 
+       "16r0760"    16rFFFF " invalid " 
+       "16r0761"    16rFFFF " invalid " 
+       "16r0762"    16rFFFF " invalid " 
+       "16r0763"    16rFFFF " invalid " 
+       "16r0764"    16rFFFF " invalid " 
+       "16r0765"    16rFFFF " invalid " 
+       "16r0766"    16rFFFF " invalid " 
+       "16r0767"    16rFFFF " invalid " 
+       "16r0768"    16rFFFF " invalid " 
+       "16r0769"    16rFFFF " invalid " 
+       "16r076A"    16rFFFF " invalid " 
+       "16r076B"    16rFFFF " invalid " 
+       "16r076C"    16rFFFF " invalid " 
+       "16r076D"    16rFFFF " invalid " 
+       "16r076E"    16rFFFF " invalid " 
+       "16r076F"    16rFFFF " invalid " 
+       "16r0770"    16rFFFF " invalid " 
+       "16r0771"    16rFFFF " invalid " 
+       "16r0772"    16rFFFF " invalid " 
+       "16r0773"    16rFFFF " invalid " 
+       "16r0774"    16rFFFF " invalid " 
+       "16r0775"    16rFFFF " invalid " 
+       "16r0776"    16rFFFF " invalid " 
+       "16r0777"    16rFFFF " invalid " 
+       "16r0778"    16rFFFF " invalid " 
+       "16r0779"    16rFFFF " invalid " 
+       "16r077A"    16rFFFF " invalid " 
+       "16r077B"    16rFFFF " invalid " 
+       "16r077C"    16rFFFF " invalid " 
+       "16r077D"    16rFFFF " invalid " 
+       "16r077E"    16rFFFF " invalid " 
+       "16r077F"    16rFFFF " invalid " 
+       "16r0780"    16rFFFF " invalid " 
+       "16r0781"    16rFFFF " invalid " 
+       "16r0782"    16rFFFF " invalid " 
+       "16r0783"    16rFFFF " invalid " 
+       "16r0784"    16rFFFF " invalid " 
+       "16r0785"    16rFFFF " invalid " 
+       "16r0786"    16rFFFF " invalid " 
+       "16r0787"    16rFFFF " invalid " 
+       "16r0788"    16rFFFF " invalid " 
+       "16r0789"    16rFFFF " invalid " 
+       "16r078A"    16rFFFF " invalid " 
+       "16r078B"    16rFFFF " invalid " 
+       "16r078C"    16rFFFF " invalid " 
+       "16r078D"    16rFFFF " invalid " 
+       "16r078E"    16rFFFF " invalid " 
+       "16r078F"    16rFFFF " invalid " 
+       "16r0790"    16rFFFF " invalid " 
+       "16r0791"    16rFFFF " invalid " 
+       "16r0792"    16rFFFF " invalid " 
+       "16r0793"    16rFFFF " invalid " 
+       "16r0794"    16rFFFF " invalid " 
+       "16r0795"    16rFFFF " invalid " 
+       "16r0796"    16rFFFF " invalid " 
+       "16r0797"    16rFFFF " invalid " 
+       "16r0798"    16rFFFF " invalid " 
+       "16r0799"    16rFFFF " invalid " 
+       "16r079A"    16rFFFF " invalid " 
+       "16r079B"    16rFFFF " invalid " 
+       "16r079C"    16rFFFF " invalid " 
+       "16r079D"    16rFFFF " invalid " 
+       "16r079E"    16rFFFF " invalid " 
+       "16r079F"    16rFFFF " invalid " 
+       "16r07A0"    16rFFFF " invalid " 
+       "16r07A1"    16rFFFF " invalid " 
+       "16r07A2"    16rFFFF " invalid " 
+       "16r07A3"    16rFFFF " invalid " 
+       "16r07A4"    16rFFFF " invalid " 
+       "16r07A5"    16rFFFF " invalid " 
+       "16r07A6"    16rFFFF " invalid " 
+       "16r07A7"    16rFFFF " invalid " 
+       "16r07A8"    16rFFFF " invalid " 
+       "16r07A9"    16rFFFF " invalid " 
+       "16r07AA"    16rFFFF " invalid " 
+       "16r07AB"    16rFFFF " invalid " 
+       "16r07AC"    16rFFFF " invalid " 
+       "16r07AD"    16rFFFF " invalid " 
+       "16r07AE"    16rFFFF " invalid " 
+       "16r07AF"    16rFFFF " invalid " 
+       "16r07B0"    16rFFFF " invalid " 
+       "16r07B1"    16rFFFF " invalid " 
+       "16r07B2"    16rFFFF " invalid " 
+       "16r07B3"    16rFFFF " invalid " 
+       "16r07B4"    16rFFFF " invalid " 
+       "16r07B5"    16rFFFF " invalid " 
+       "16r07B6"    16rFFFF " invalid " 
+       "16r07B7"    16rFFFF " invalid " 
+       "16r07B8"    16rFFFF " invalid " 
+       "16r07B9"    16rFFFF " invalid " 
+       "16r07BA"    16rFFFF " invalid " 
+       "16r07BB"    16rFFFF " invalid " 
+       "16r07BC"    16rFFFF " invalid " 
+       "16r07BD"    16rFFFF " invalid " 
+       "16r07BE"    16rFFFF " invalid " 
+       "16r07BF"    16rFFFF " invalid " 
+       "16r07C0"    16rFFFF " invalid " 
+       "16r07C1"    16rFFFF " invalid " 
+       "16r07C2"    16rFFFF " invalid " 
+       "16r07C3"    16rFFFF " invalid " 
+       "16r07C4"    16rFFFF " invalid " 
+       "16r07C5"    16rFFFF " invalid " 
+       "16r07C6"    16rFFFF " invalid " 
+       "16r07C7"    16rFFFF " invalid " 
+       "16r07C8"    16rFFFF " invalid " 
+       "16r07C9"    16rFFFF " invalid " 
+       "16r07CA"    16rFFFF " invalid " 
+       "16r07CB"    16rFFFF " invalid " 
+       "16r07CC"    16rFFFF " invalid " 
+       "16r07CD"    16rFFFF " invalid " 
+       "16r07CE"    16rFFFF " invalid " 
+       "16r07CF"    16rFFFF " invalid " 
+       "16r07D0"    16rFFFF " invalid " 
+       "16r07D1"    16rFFFF " invalid " 
+       "16r07D2"    16rFFFF " invalid " 
+       "16r07D3"    16rFFFF " invalid " 
+       "16r07D4"    16rFFFF " invalid " 
+       "16r07D5"    16rFFFF " invalid " 
+       "16r07D6"    16rFFFF " invalid " 
+       "16r07D7"    16rFFFF " invalid " 
+       "16r07D8"    16rFFFF " invalid " 
+       "16r07D9"    16rFFFF " invalid " 
+       "16r07DA"    16rFFFF " invalid " 
+       "16r07DB"    16rFFFF " invalid " 
+       "16r07DC"    16rFFFF " invalid " 
+       "16r07DD"    16rFFFF " invalid " 
+       "16r07DE"    16rFFFF " invalid " 
+       "16r07DF"    16rFFFF " invalid " 
+       "16r07E0"    16rFFFF " invalid " 
+       "16r07E1"    16rFFFF " invalid " 
+       "16r07E2"    16rFFFF " invalid " 
+       "16r07E3"    16rFFFF " invalid " 
+       "16r07E4"    16rFFFF " invalid " 
+       "16r07E5"    16rFFFF " invalid " 
+       "16r07E6"    16rFFFF " invalid " 
+       "16r07E7"    16rFFFF " invalid " 
+       "16r07E8"    16rFFFF " invalid " 
+       "16r07E9"    16rFFFF " invalid " 
+       "16r07EA"    16rFFFF " invalid " 
+       "16r07EB"    16rFFFF " invalid " 
+       "16r07EC"    16rFFFF " invalid " 
+       "16r07ED"    16rFFFF " invalid " 
+       "16r07EE"    16rFFFF " invalid " 
+       "16r07EF"    16rFFFF " invalid " 
+       "16r07F0"    16rFFFF " invalid " 
+       "16r07F1"    16rFFFF " invalid " 
+       "16r07F2"    16rFFFF " invalid " 
+       "16r07F3"    16rFFFF " invalid " 
+       "16r07F4"    16rFFFF " invalid " 
+       "16r07F5"    16rFFFF " invalid " 
+       "16r07F6"    16rFFFF " invalid " 
+       "16r07F7"    16rFFFF " invalid " 
+       "16r07F8"    16rFFFF " invalid " 
+       "16r07F9"    16rFFFF " invalid " 
+       "16r07FA"    16rFFFF " invalid " 
+       "16r07FB"    16rFFFF " invalid " 
+       "16r07FC"    16rFFFF " invalid " 
+       "16r07FD"    16rFFFF " invalid " 
+       "16r07FE"    16rFFFF " invalid " 
+       "16r07FF"    16rFFFF " invalid " 
+       "16r0800"    16rFFFF " invalid " 
+       "16r0801"    16rFFFF " invalid " 
+       "16r0802"    16rFFFF " invalid " 
+       "16r0803"    16rFFFF " invalid " 
+       "16r0804"    16rFFFF " invalid " 
+       "16r0805"    16rFFFF " invalid " 
+       "16r0806"    16rFFFF " invalid " 
+       "16r0807"    16rFFFF " invalid " 
+       "16r0808"    16rFFFF " invalid " 
+       "16r0809"    16rFFFF " invalid " 
+       "16r080A"    16rFFFF " invalid " 
+       "16r080B"    16rFFFF " invalid " 
+       "16r080C"    16rFFFF " invalid " 
+       "16r080D"    16rFFFF " invalid " 
+       "16r080E"    16rFFFF " invalid " 
+       "16r080F"    16rFFFF " invalid " 
+       "16r0810"    16rFFFF " invalid " 
+       "16r0811"    16rFFFF " invalid " 
+       "16r0812"    16rFFFF " invalid " 
+       "16r0813"    16rFFFF " invalid " 
+       "16r0814"    16rFFFF " invalid " 
+       "16r0815"    16rFFFF " invalid " 
+       "16r0816"    16rFFFF " invalid " 
+       "16r0817"    16rFFFF " invalid " 
+       "16r0818"    16rFFFF " invalid " 
+       "16r0819"    16rFFFF " invalid " 
+       "16r081A"    16rFFFF " invalid " 
+       "16r081B"    16rFFFF " invalid " 
+       "16r081C"    16rFFFF " invalid " 
+       "16r081D"    16rFFFF " invalid " 
+       "16r081E"    16rFFFF " invalid " 
+       "16r081F"    16rFFFF " invalid " 
+       "16r0820"    16rFFFF " invalid " 
+       "16r0821"    16rFFFF " invalid " 
+       "16r0822"    16rFFFF " invalid " 
+       "16r0823"    16rFFFF " invalid " 
+       "16r0824"    16rFFFF " invalid " 
+       "16r0825"    16rFFFF " invalid " 
+       "16r0826"    16rFFFF " invalid " 
+       "16r0827"    16rFFFF " invalid " 
+       "16r0828"    16rFFFF " invalid " 
+       "16r0829"    16rFFFF " invalid " 
+       "16r082A"    16rFFFF " invalid " 
+       "16r082B"    16rFFFF " invalid " 
+       "16r082C"    16rFFFF " invalid " 
+       "16r082D"    16rFFFF " invalid " 
+       "16r082E"    16rFFFF " invalid " 
+       "16r082F"    16rFFFF " invalid " 
+       "16r0830"    16rFFFF " invalid " 
+       "16r0831"    16rFFFF " invalid " 
+       "16r0832"    16rFFFF " invalid " 
+       "16r0833"    16rFFFF " invalid " 
+       "16r0834"    16rFFFF " invalid " 
+       "16r0835"    16rFFFF " invalid " 
+       "16r0836"    16rFFFF " invalid " 
+       "16r0837"    16rFFFF " invalid " 
+       "16r0838"    16rFFFF " invalid " 
+       "16r0839"    16rFFFF " invalid " 
+       "16r083A"    16rFFFF " invalid " 
+       "16r083B"    16rFFFF " invalid " 
+       "16r083C"    16rFFFF " invalid " 
+       "16r083D"    16rFFFF " invalid " 
+       "16r083E"    16rFFFF " invalid " 
+       "16r083F"    16rFFFF " invalid " 
+       "16r0840"    16rFFFF " invalid " 
+       "16r0841"    16rFFFF " invalid " 
+       "16r0842"    16rFFFF " invalid " 
+       "16r0843"    16rFFFF " invalid " 
+       "16r0844"    16rFFFF " invalid " 
+       "16r0845"    16rFFFF " invalid " 
+       "16r0846"    16rFFFF " invalid " 
+       "16r0847"    16rFFFF " invalid " 
+       "16r0848"    16rFFFF " invalid " 
+       "16r0849"    16rFFFF " invalid " 
+       "16r084A"    16rFFFF " invalid " 
+       "16r084B"    16rFFFF " invalid " 
+       "16r084C"    16rFFFF " invalid " 
+       "16r084D"    16rFFFF " invalid " 
+       "16r084E"    16rFFFF " invalid " 
+       "16r084F"    16rFFFF " invalid " 
+       "16r0850"    16rFFFF " invalid " 
+       "16r0851"    16rFFFF " invalid " 
+       "16r0852"    16rFFFF " invalid " 
+       "16r0853"    16rFFFF " invalid " 
+       "16r0854"    16rFFFF " invalid " 
+       "16r0855"    16rFFFF " invalid " 
+       "16r0856"    16rFFFF " invalid " 
+       "16r0857"    16rFFFF " invalid " 
+       "16r0858"    16rFFFF " invalid " 
+       "16r0859"    16rFFFF " invalid " 
+       "16r085A"    16rFFFF " invalid " 
+       "16r085B"    16rFFFF " invalid " 
+       "16r085C"    16rFFFF " invalid " 
+       "16r085D"    16rFFFF " invalid " 
+       "16r085E"    16rFFFF " invalid " 
+       "16r085F"    16rFFFF " invalid " 
+       "16r0860"    16rFFFF " invalid " 
+       "16r0861"    16rFFFF " invalid " 
+       "16r0862"    16rFFFF " invalid " 
+       "16r0863"    16rFFFF " invalid " 
+       "16r0864"    16rFFFF " invalid " 
+       "16r0865"    16rFFFF " invalid " 
+       "16r0866"    16rFFFF " invalid " 
+       "16r0867"    16rFFFF " invalid " 
+       "16r0868"    16rFFFF " invalid " 
+       "16r0869"    16rFFFF " invalid " 
+       "16r086A"    16rFFFF " invalid " 
+       "16r086B"    16rFFFF " invalid " 
+       "16r086C"    16rFFFF " invalid " 
+       "16r086D"    16rFFFF " invalid " 
+       "16r086E"    16rFFFF " invalid " 
+       "16r086F"    16rFFFF " invalid " 
+       "16r0870"    16rFFFF " invalid " 
+       "16r0871"    16rFFFF " invalid " 
+       "16r0872"    16rFFFF " invalid " 
+       "16r0873"    16rFFFF " invalid " 
+       "16r0874"    16rFFFF " invalid " 
+       "16r0875"    16rFFFF " invalid " 
+       "16r0876"    16rFFFF " invalid " 
+       "16r0877"    16rFFFF " invalid " 
+       "16r0878"    16rFFFF " invalid " 
+       "16r0879"    16rFFFF " invalid " 
+       "16r087A"    16rFFFF " invalid " 
+       "16r087B"    16rFFFF " invalid " 
+       "16r087C"    16rFFFF " invalid " 
+       "16r087D"    16rFFFF " invalid " 
+       "16r087E"    16rFFFF " invalid " 
+       "16r087F"    16rFFFF " invalid " 
+       "16r0880"    16rFFFF " invalid " 
+       "16r0881"    16rFFFF " invalid " 
+       "16r0882"    16rFFFF " invalid " 
+       "16r0883"    16rFFFF " invalid " 
+       "16r0884"    16rFFFF " invalid " 
+       "16r0885"    16rFFFF " invalid " 
+       "16r0886"    16rFFFF " invalid " 
+       "16r0887"    16rFFFF " invalid " 
+       "16r0888"    16rFFFF " invalid " 
+       "16r0889"    16rFFFF " invalid " 
+       "16r088A"    16rFFFF " invalid " 
+       "16r088B"    16rFFFF " invalid " 
+       "16r088C"    16rFFFF " invalid " 
+       "16r088D"    16rFFFF " invalid " 
+       "16r088E"    16rFFFF " invalid " 
+       "16r088F"    16rFFFF " invalid " 
+       "16r0890"    16rFFFF " invalid " 
+       "16r0891"    16rFFFF " invalid " 
+       "16r0892"    16rFFFF " invalid " 
+       "16r0893"    16rFFFF " invalid " 
+       "16r0894"    16rFFFF " invalid " 
+       "16r0895"    16rFFFF " invalid " 
+       "16r0896"    16rFFFF " invalid " 
+       "16r0897"    16rFFFF " invalid " 
+       "16r0898"    16rFFFF " invalid " 
+       "16r0899"    16rFFFF " invalid " 
+       "16r089A"    16rFFFF " invalid " 
+       "16r089B"    16rFFFF " invalid " 
+       "16r089C"    16rFFFF " invalid " 
+       "16r089D"    16rFFFF " invalid " 
+       "16r089E"    16rFFFF " invalid " 
+       "16r089F"    16rFFFF " invalid " 
+       "16r08A0"    16rFFFF " invalid " 
+       "16r08A1"    16rFFFF " invalid " 
+       "16r08A2"    16rFFFF " invalid " 
+       "16r08A3"    16rFFFF " invalid " 
+       "16r08A4"    16rFFFF " invalid " 
+       "16r08A5"    16rFFFF " invalid " 
+       "16r08A6"    16rFFFF " invalid " 
+       "16r08A7"    16rFFFF " invalid " 
+       "16r08A8"    16rFFFF " invalid " 
+       "16r08A9"    16rFFFF " invalid " 
+       "16r08AA"    16rFFFF " invalid " 
+       "16r08AB"    16rFFFF " invalid " 
+       "16r08AC"    16rFFFF " invalid " 
+       "16r08AD"    16rFFFF " invalid " 
+       "16r08AE"    16rFFFF " invalid " 
+       "16r08AF"    16rFFFF " invalid " 
+       "16r08B0"    16rFFFF " invalid " 
+       "16r08B1"    16rFFFF " invalid " 
+       "16r08B2"    16rFFFF " invalid " 
+       "16r08B3"    16rFFFF " invalid " 
+       "16r08B4"    16rFFFF " invalid " 
+       "16r08B5"    16rFFFF " invalid " 
+       "16r08B6"    16rFFFF " invalid " 
+       "16r08B7"    16rFFFF " invalid " 
+       "16r08B8"    16rFFFF " invalid " 
+       "16r08B9"    16rFFFF " invalid " 
+       "16r08BA"    16rFFFF " invalid " 
+       "16r08BB"    16rFFFF " invalid " 
+       "16r08BC"    16rFFFF " invalid " 
+       "16r08BD"    16rFFFF " invalid " 
+       "16r08BE"    16rFFFF " invalid " 
+       "16r08BF"    16rFFFF " invalid " 
+       "16r08C0"    16rFFFF " invalid " 
+       "16r08C1"    16rFFFF " invalid " 
+       "16r08C2"    16rFFFF " invalid " 
+       "16r08C3"    16rFFFF " invalid " 
+       "16r08C4"    16rFFFF " invalid " 
+       "16r08C5"    16rFFFF " invalid " 
+       "16r08C6"    16rFFFF " invalid " 
+       "16r08C7"    16rFFFF " invalid " 
+       "16r08C8"    16rFFFF " invalid " 
+       "16r08C9"    16rFFFF " invalid " 
+       "16r08CA"    16rFFFF " invalid " 
+       "16r08CB"    16rFFFF " invalid " 
+       "16r08CC"    16rFFFF " invalid " 
+       "16r08CD"    16rFFFF " invalid " 
+       "16r08CE"    16rFFFF " invalid " 
+       "16r08CF"    16rFFFF " invalid " 
+       "16r08D0"    16rFFFF " invalid " 
+       "16r08D1"    16rFFFF " invalid " 
+       "16r08D2"    16rFFFF " invalid " 
+       "16r08D3"    16rFFFF " invalid " 
+       "16r08D4"    16rFFFF " invalid " 
+       "16r08D5"    16rFFFF " invalid " 
+       "16r08D6"    16rFFFF " invalid " 
+       "16r08D7"    16rFFFF " invalid " 
+       "16r08D8"    16rFFFF " invalid " 
+       "16r08D9"    16rFFFF " invalid " 
+       "16r08DA"    16rFFFF " invalid " 
+       "16r08DB"    16rFFFF " invalid " 
+       "16r08DC"    16rFFFF " invalid " 
+       "16r08DD"    16rFFFF " invalid " 
+       "16r08DE"    16rFFFF " invalid " 
+       "16r08DF"    16rFFFF " invalid " 
+       "16r08E0"    16rFFFF " invalid " 
+       "16r08E1"    16rFFFF " invalid " 
+       "16r08E2"    16rFFFF " invalid " 
+       "16r08E3"    16rFFFF " invalid " 
+       "16r08E4"    16rFFFF " invalid " 
+       "16r08E5"    16rFFFF " invalid " 
+       "16r08E6"    16rFFFF " invalid " 
+       "16r08E7"    16rFFFF " invalid " 
+       "16r08E8"    16rFFFF " invalid " 
+       "16r08E9"    16rFFFF " invalid " 
+       "16r08EA"    16rFFFF " invalid " 
+       "16r08EB"    16rFFFF " invalid " 
+       "16r08EC"    16rFFFF " invalid " 
+       "16r08ED"    16rFFFF " invalid " 
+       "16r08EE"    16rFFFF " invalid " 
+       "16r08EF"    16rFFFF " invalid " 
+       "16r08F0"    16rFFFF " invalid " 
+       "16r08F1"    16rFFFF " invalid " 
+       "16r08F2"    16rFFFF " invalid " 
+       "16r08F3"    16rFFFF " invalid " 
+       "16r08F4"    16rFFFF " invalid " 
+       "16r08F5"    16rFFFF " invalid " 
+       "16r08F6"    16rFFFF " invalid " 
+       "16r08F7"    16rFFFF " invalid " 
+       "16r08F8"    16rFFFF " invalid " 
+       "16r08F9"    16rFFFF " invalid " 
+       "16r08FA"    16rFFFF " invalid " 
+       "16r08FB"    16rFFFF " invalid " 
+       "16r08FC"    16rFFFF " invalid " 
+       "16r08FD"    16rFFFF " invalid " 
+       "16r08FE"    16rFFFF " invalid " 
+       "16r08FF"    16rFFFF " invalid " 
+       "16r0900"    16rFFFF " invalid " 
+       "16r0901"    16rFFFF " invalid " 
+       "16r0902"    16rFFFF " invalid " 
+       "16r0903"    16rFFFF " invalid " 
+       "16r0904"    16rFFFF " invalid " 
+       "16r0905"    16rFFFF " invalid " 
+       "16r0906"    16rFFFF " invalid " 
+       "16r0907"    16rFFFF " invalid " 
+       "16r0908"    16rFFFF " invalid " 
+       "16r0909"    16rFFFF " invalid " 
+       "16r090A"    16rFFFF " invalid " 
+       "16r090B"    16rFFFF " invalid " 
+       "16r090C"    16rFFFF " invalid " 
+       "16r090D"    16rFFFF " invalid " 
+       "16r090E"    16rFFFF " invalid " 
+       "16r090F"    16rFFFF " invalid " 
+       "16r0910"    16rFFFF " invalid " 
+       "16r0911"    16rFFFF " invalid " 
+       "16r0912"    16rFFFF " invalid " 
+       "16r0913"    16rFFFF " invalid " 
+       "16r0914"    16rFFFF " invalid " 
+       "16r0915"    16rFFFF " invalid " 
+       "16r0916"    16rFFFF " invalid " 
+       "16r0917"    16rFFFF " invalid " 
+       "16r0918"    16rFFFF " invalid " 
+       "16r0919"    16rFFFF " invalid " 
+       "16r091A"    16rFFFF " invalid " 
+       "16r091B"    16rFFFF " invalid " 
+       "16r091C"    16rFFFF " invalid " 
+       "16r091D"    16rFFFF " invalid " 
+       "16r091E"    16rFFFF " invalid " 
+       "16r091F"    16rFFFF " invalid " 
+       "16r0920"    16rFFFF " invalid " 
+       "16r0921"    16rFFFF " invalid " 
+       "16r0922"    16rFFFF " invalid " 
+       "16r0923"    16rFFFF " invalid " 
+       "16r0924"    16rFFFF " invalid " 
+       "16r0925"    16rFFFF " invalid " 
+       "16r0926"    16rFFFF " invalid " 
+       "16r0927"    16rFFFF " invalid " 
+       "16r0928"    16rFFFF " invalid " 
+       "16r0929"    16rFFFF " invalid " 
+       "16r092A"    16rFFFF " invalid " 
+       "16r092B"    16rFFFF " invalid " 
+       "16r092C"    16rFFFF " invalid " 
+       "16r092D"    16rFFFF " invalid " 
+       "16r092E"    16rFFFF " invalid " 
+       "16r092F"    16rFFFF " invalid " 
+       "16r0930"    16rFFFF " invalid " 
+       "16r0931"    16rFFFF " invalid " 
+       "16r0932"    16rFFFF " invalid " 
+       "16r0933"    16rFFFF " invalid " 
+       "16r0934"    16rFFFF " invalid " 
+       "16r0935"    16rFFFF " invalid " 
+       "16r0936"    16rFFFF " invalid " 
+       "16r0937"    16rFFFF " invalid " 
+       "16r0938"    16rFFFF " invalid " 
+       "16r0939"    16rFFFF " invalid " 
+       "16r093A"    16rFFFF " invalid " 
+       "16r093B"    16rFFFF " invalid " 
+       "16r093C"    16rFFFF " invalid " 
+       "16r093D"    16rFFFF " invalid " 
+       "16r093E"    16rFFFF " invalid " 
+       "16r093F"    16rFFFF " invalid " 
+       "16r0940"    16rFFFF " invalid " 
+       "16r0941"    16rFFFF " invalid " 
+       "16r0942"    16rFFFF " invalid " 
+       "16r0943"    16rFFFF " invalid " 
+       "16r0944"    16rFFFF " invalid " 
+       "16r0945"    16rFFFF " invalid " 
+       "16r0946"    16rFFFF " invalid " 
+       "16r0947"    16rFFFF " invalid " 
+       "16r0948"    16rFFFF " invalid " 
+       "16r0949"    16rFFFF " invalid " 
+       "16r094A"    16rFFFF " invalid " 
+       "16r094B"    16rFFFF " invalid " 
+       "16r094C"    16rFFFF " invalid " 
+       "16r094D"    16rFFFF " invalid " 
+       "16r094E"    16rFFFF " invalid " 
+       "16r094F"    16rFFFF " invalid " 
+       "16r0950"    16rFFFF " invalid " 
+       "16r0951"    16rFFFF " invalid " 
+       "16r0952"    16rFFFF " invalid " 
+       "16r0953"    16rFFFF " invalid " 
+       "16r0954"    16rFFFF " invalid " 
+       "16r0955"    16rFFFF " invalid " 
+       "16r0956"    16rFFFF " invalid " 
+       "16r0957"    16rFFFF " invalid " 
+       "16r0958"    16rFFFF " invalid " 
+       "16r0959"    16rFFFF " invalid " 
+       "16r095A"    16rFFFF " invalid " 
+       "16r095B"    16rFFFF " invalid " 
+       "16r095C"    16rFFFF " invalid " 
+       "16r095D"    16rFFFF " invalid " 
+       "16r095E"    16rFFFF " invalid " 
+       "16r095F"    16rFFFF " invalid " 
+       "16r0960"    16rFFFF " invalid " 
+       "16r0961"    16rFFFF " invalid " 
+       "16r0962"    16rFFFF " invalid " 
+       "16r0963"    16rFFFF " invalid " 
+       "16r0964"    16rFFFF " invalid " 
+       "16r0965"    16rFFFF " invalid " 
+       "16r0966"    16rFFFF " invalid " 
+       "16r0967"    16rFFFF " invalid " 
+       "16r0968"    16rFFFF " invalid " 
+       "16r0969"    16rFFFF " invalid " 
+       "16r096A"    16rFFFF " invalid " 
+       "16r096B"    16rFFFF " invalid " 
+       "16r096C"    16rFFFF " invalid " 
+       "16r096D"    16rFFFF " invalid " 
+       "16r096E"    16rFFFF " invalid " 
+       "16r096F"    16rFFFF " invalid " 
+       "16r0970"    16rFFFF " invalid " 
+       "16r0971"    16rFFFF " invalid " 
+       "16r0972"    16rFFFF " invalid " 
+       "16r0973"    16rFFFF " invalid " 
+       "16r0974"    16rFFFF " invalid " 
+       "16r0975"    16rFFFF " invalid " 
+       "16r0976"    16rFFFF " invalid " 
+       "16r0977"    16rFFFF " invalid " 
+       "16r0978"    16rFFFF " invalid " 
+       "16r0979"    16rFFFF " invalid " 
+       "16r097A"    16rFFFF " invalid " 
+       "16r097B"    16rFFFF " invalid " 
+       "16r097C"    16rFFFF " invalid " 
+       "16r097D"    16rFFFF " invalid " 
+       "16r097E"    16rFFFF " invalid " 
+       "16r097F"    16rFFFF " invalid " 
+       "16r0980"    16rFFFF " invalid " 
+       "16r0981"    16rFFFF " invalid " 
+       "16r0982"    16rFFFF " invalid " 
+       "16r0983"    16rFFFF " invalid " 
+       "16r0984"    16rFFFF " invalid " 
+       "16r0985"    16rFFFF " invalid " 
+       "16r0986"    16rFFFF " invalid " 
+       "16r0987"    16rFFFF " invalid " 
+       "16r0988"    16rFFFF " invalid " 
+       "16r0989"    16rFFFF " invalid " 
+       "16r098A"    16rFFFF " invalid " 
+       "16r098B"    16rFFFF " invalid " 
+       "16r098C"    16rFFFF " invalid " 
+       "16r098D"    16rFFFF " invalid " 
+       "16r098E"    16rFFFF " invalid " 
+       "16r098F"    16rFFFF " invalid " 
+       "16r0990"    16rFFFF " invalid " 
+       "16r0991"    16rFFFF " invalid " 
+       "16r0992"    16rFFFF " invalid " 
+       "16r0993"    16rFFFF " invalid " 
+       "16r0994"    16rFFFF " invalid " 
+       "16r0995"    16rFFFF " invalid " 
+       "16r0996"    16rFFFF " invalid " 
+       "16r0997"    16rFFFF " invalid " 
+       "16r0998"    16rFFFF " invalid " 
+       "16r0999"    16rFFFF " invalid " 
+       "16r099A"    16rFFFF " invalid " 
+       "16r099B"    16rFFFF " invalid " 
+       "16r099C"    16rFFFF " invalid " 
+       "16r099D"    16rFFFF " invalid " 
+       "16r099E"    16rFFFF " invalid " 
+       "16r099F"    16rFFFF " invalid " 
+       "16r09A0"    16rFFFF " invalid " 
+       "16r09A1"    16rFFFF " invalid " 
+       "16r09A2"    16rFFFF " invalid " 
+       "16r09A3"    16rFFFF " invalid " 
+       "16r09A4"    16rFFFF " invalid " 
+       "16r09A5"    16rFFFF " invalid " 
+       "16r09A6"    16rFFFF " invalid " 
+       "16r09A7"    16rFFFF " invalid " 
+       "16r09A8"    16rFFFF " invalid " 
+       "16r09A9"    16rFFFF " invalid " 
+       "16r09AA"    16rFFFF " invalid " 
+       "16r09AB"    16rFFFF " invalid " 
+       "16r09AC"    16rFFFF " invalid " 
+       "16r09AD"    16rFFFF " invalid " 
+       "16r09AE"    16rFFFF " invalid " 
+       "16r09AF"    16rFFFF " invalid " 
+       "16r09B0"    16rFFFF " invalid " 
+       "16r09B1"    16rFFFF " invalid " 
+       "16r09B2"    16rFFFF " invalid " 
+       "16r09B3"    16rFFFF " invalid " 
+       "16r09B4"    16rFFFF " invalid " 
+       "16r09B5"    16rFFFF " invalid " 
+       "16r09B6"    16rFFFF " invalid " 
+       "16r09B7"    16rFFFF " invalid " 
+       "16r09B8"    16rFFFF " invalid " 
+       "16r09B9"    16rFFFF " invalid " 
+       "16r09BA"    16rFFFF " invalid " 
+       "16r09BB"    16rFFFF " invalid " 
+       "16r09BC"    16rFFFF " invalid " 
+       "16r09BD"    16rFFFF " invalid " 
+       "16r09BE"    16rFFFF " invalid " 
+       "16r09BF"    16rFFFF " invalid " 
+       "16r09C0"    16rFFFF " invalid " 
+       "16r09C1"    16rFFFF " invalid " 
+       "16r09C2"    16rFFFF " invalid " 
+       "16r09C3"    16rFFFF " invalid " 
+       "16r09C4"    16rFFFF " invalid " 
+       "16r09C5"    16rFFFF " invalid " 
+       "16r09C6"    16rFFFF " invalid " 
+       "16r09C7"    16rFFFF " invalid " 
+       "16r09C8"    16rFFFF " invalid " 
+       "16r09C9"    16rFFFF " invalid " 
+       "16r09CA"    16rFFFF " invalid " 
+       "16r09CB"    16rFFFF " invalid " 
+       "16r09CC"    16rFFFF " invalid " 
+       "16r09CD"    16rFFFF " invalid " 
+       "16r09CE"    16rFFFF " invalid " 
+       "16r09CF"    16rFFFF " invalid " 
+       "16r09D0"    16rFFFF " invalid " 
+       "16r09D1"    16rFFFF " invalid " 
+       "16r09D2"    16rFFFF " invalid " 
+       "16r09D3"    16rFFFF " invalid " 
+       "16r09D4"    16rFFFF " invalid " 
+       "16r09D5"    16rFFFF " invalid " 
+       "16r09D6"    16rFFFF " invalid " 
+       "16r09D7"    16rFFFF " invalid " 
+       "16r09D8"    16rFFFF " invalid " 
+       "16r09D9"    16rFFFF " invalid " 
+       "16r09DA"    16rFFFF " invalid " 
+       "16r09DB"    16rFFFF " invalid " 
+       "16r09DC"    16rFFFF " invalid " 
+       "16r09DD"    16rFFFF " invalid " 
+       "16r09DE"    16rFFFF " invalid " 
+       "16r09DF"    16rFFFF " invalid " 
+       "16r09E0"    16rFFFF " invalid " 
+       "16r09E1"    16rFFFF " invalid " 
+       "16r09E2"    16rFFFF " invalid " 
+       "16r09E3"    16rFFFF " invalid " 
+       "16r09E4"    16rFFFF " invalid " 
+       "16r09E5"    16rFFFF " invalid " 
+       "16r09E6"    16rFFFF " invalid " 
+       "16r09E7"    16rFFFF " invalid " 
+       "16r09E8"    16rFFFF " invalid " 
+       "16r09E9"    16rFFFF " invalid " 
+       "16r09EA"    16rFFFF " invalid " 
+       "16r09EB"    16rFFFF " invalid " 
+       "16r09EC"    16rFFFF " invalid " 
+       "16r09ED"    16rFFFF " invalid " 
+       "16r09EE"    16rFFFF " invalid " 
+       "16r09EF"    16rFFFF " invalid " 
+       "16r09F0"    16rFFFF " invalid " 
+       "16r09F1"    16rFFFF " invalid " 
+       "16r09F2"    16rFFFF " invalid " 
+       "16r09F3"    16rFFFF " invalid " 
+       "16r09F4"    16rFFFF " invalid " 
+       "16r09F5"    16rFFFF " invalid " 
+       "16r09F6"    16rFFFF " invalid " 
+       "16r09F7"    16rFFFF " invalid " 
+       "16r09F8"    16rFFFF " invalid " 
+       "16r09F9"    16rFFFF " invalid " 
+       "16r09FA"    16rFFFF " invalid " 
+       "16r09FB"    16rFFFF " invalid " 
+       "16r09FC"    16rFFFF " invalid " 
+       "16r09FD"    16rFFFF " invalid " 
+       "16r09FE"    16rFFFF " invalid " 
+       "16r09FF"    16rFFFF " invalid " 
+       "16r0A00"    16rFFFF " invalid " 
+       "16r0A01"    16rFFFF " invalid " 
+       "16r0A02"    16rFFFF " invalid " 
+       "16r0A03"    16rFFFF " invalid " 
+       "16r0A04"    16rFFFF " invalid " 
+       "16r0A05"    16rFFFF " invalid " 
+       "16r0A06"    16rFFFF " invalid " 
+       "16r0A07"    16rFFFF " invalid " 
+       "16r0A08"    16rFFFF " invalid " 
+       "16r0A09"    16rFFFF " invalid " 
+       "16r0A0A"    16rFFFF " invalid " 
+       "16r0A0B"    16rFFFF " invalid " 
+       "16r0A0C"    16rFFFF " invalid " 
+       "16r0A0D"    16rFFFF " invalid " 
+       "16r0A0E"    16rFFFF " invalid " 
+       "16r0A0F"    16rFFFF " invalid " 
+       "16r0A10"    16rFFFF " invalid " 
+       "16r0A11"    16rFFFF " invalid " 
+       "16r0A12"    16rFFFF " invalid " 
+       "16r0A13"    16rFFFF " invalid " 
+       "16r0A14"    16rFFFF " invalid " 
+       "16r0A15"    16rFFFF " invalid " 
+       "16r0A16"    16rFFFF " invalid " 
+       "16r0A17"    16rFFFF " invalid " 
+       "16r0A18"    16rFFFF " invalid " 
+       "16r0A19"    16rFFFF " invalid " 
+       "16r0A1A"    16rFFFF " invalid " 
+       "16r0A1B"    16rFFFF " invalid " 
+       "16r0A1C"    16rFFFF " invalid " 
+       "16r0A1D"    16rFFFF " invalid " 
+       "16r0A1E"    16rFFFF " invalid " 
+       "16r0A1F"    16rFFFF " invalid " 
+       "16r0A20"    16rFFFF " invalid " 
+       "16r0A21"    16rFFFF " invalid " 
+       "16r0A22"    16rFFFF " invalid " 
+       "16r0A23"    16rFFFF " invalid " 
+       "16r0A24"    16rFFFF " invalid " 
+       "16r0A25"    16rFFFF " invalid " 
+       "16r0A26"    16rFFFF " invalid " 
+       "16r0A27"    16rFFFF " invalid " 
+       "16r0A28"    16rFFFF " invalid " 
+       "16r0A29"    16rFFFF " invalid " 
+       "16r0A2A"    16rFFFF " invalid " 
+       "16r0A2B"    16rFFFF " invalid " 
+       "16r0A2C"    16rFFFF " invalid " 
+       "16r0A2D"    16rFFFF " invalid " 
+       "16r0A2E"    16rFFFF " invalid " 
+       "16r0A2F"    16rFFFF " invalid " 
+       "16r0A30"    16rFFFF " invalid " 
+       "16r0A31"    16rFFFF " invalid " 
+       "16r0A32"    16rFFFF " invalid " 
+       "16r0A33"    16rFFFF " invalid " 
+       "16r0A34"    16rFFFF " invalid " 
+       "16r0A35"    16rFFFF " invalid " 
+       "16r0A36"    16rFFFF " invalid " 
+       "16r0A37"    16rFFFF " invalid " 
+       "16r0A38"    16rFFFF " invalid " 
+       "16r0A39"    16rFFFF " invalid " 
+       "16r0A3A"    16rFFFF " invalid " 
+       "16r0A3B"    16rFFFF " invalid " 
+       "16r0A3C"    16rFFFF " invalid " 
+       "16r0A3D"    16rFFFF " invalid " 
+       "16r0A3E"    16rFFFF " invalid " 
+       "16r0A3F"    16rFFFF " invalid " 
+       "16r0A40"    16rFFFF " invalid " 
+       "16r0A41"    16rFFFF " invalid " 
+       "16r0A42"    16rFFFF " invalid " 
+       "16r0A43"    16rFFFF " invalid " 
+       "16r0A44"    16rFFFF " invalid " 
+       "16r0A45"    16rFFFF " invalid " 
+       "16r0A46"    16rFFFF " invalid " 
+       "16r0A47"    16rFFFF " invalid " 
+       "16r0A48"    16rFFFF " invalid " 
+       "16r0A49"    16rFFFF " invalid " 
+       "16r0A4A"    16rFFFF " invalid " 
+       "16r0A4B"    16rFFFF " invalid " 
+       "16r0A4C"    16rFFFF " invalid " 
+       "16r0A4D"    16rFFFF " invalid " 
+       "16r0A4E"    16rFFFF " invalid " 
+       "16r0A4F"    16rFFFF " invalid " 
+       "16r0A50"    16rFFFF " invalid " 
+       "16r0A51"    16rFFFF " invalid " 
+       "16r0A52"    16rFFFF " invalid " 
+       "16r0A53"    16rFFFF " invalid " 
+       "16r0A54"    16rFFFF " invalid " 
+       "16r0A55"    16rFFFF " invalid " 
+       "16r0A56"    16rFFFF " invalid " 
+       "16r0A57"    16rFFFF " invalid " 
+       "16r0A58"    16rFFFF " invalid " 
+       "16r0A59"    16rFFFF " invalid " 
+       "16r0A5A"    16rFFFF " invalid " 
+       "16r0A5B"    16rFFFF " invalid " 
+       "16r0A5C"    16rFFFF " invalid " 
+       "16r0A5D"    16rFFFF " invalid " 
+       "16r0A5E"    16rFFFF " invalid " 
+       "16r0A5F"    16rFFFF " invalid " 
+       "16r0A60"    16rFFFF " invalid " 
+       "16r0A61"    16rFFFF " invalid " 
+       "16r0A62"    16rFFFF " invalid " 
+       "16r0A63"    16rFFFF " invalid " 
+       "16r0A64"    16rFFFF " invalid " 
+       "16r0A65"    16rFFFF " invalid " 
+       "16r0A66"    16rFFFF " invalid " 
+       "16r0A67"    16rFFFF " invalid " 
+       "16r0A68"    16rFFFF " invalid " 
+       "16r0A69"    16rFFFF " invalid " 
+       "16r0A6A"    16rFFFF " invalid " 
+       "16r0A6B"    16rFFFF " invalid " 
+       "16r0A6C"    16rFFFF " invalid " 
+       "16r0A6D"    16rFFFF " invalid " 
+       "16r0A6E"    16rFFFF " invalid " 
+       "16r0A6F"    16rFFFF " invalid " 
+       "16r0A70"    16rFFFF " invalid " 
+       "16r0A71"    16rFFFF " invalid " 
+       "16r0A72"    16rFFFF " invalid " 
+       "16r0A73"    16rFFFF " invalid " 
+       "16r0A74"    16rFFFF " invalid " 
+       "16r0A75"    16rFFFF " invalid " 
+       "16r0A76"    16rFFFF " invalid " 
+       "16r0A77"    16rFFFF " invalid " 
+       "16r0A78"    16rFFFF " invalid " 
+       "16r0A79"    16rFFFF " invalid " 
+       "16r0A7A"    16rFFFF " invalid " 
+       "16r0A7B"    16rFFFF " invalid " 
+       "16r0A7C"    16rFFFF " invalid " 
+       "16r0A7D"    16rFFFF " invalid " 
+       "16r0A7E"    16rFFFF " invalid " 
+       "16r0A7F"    16rFFFF " invalid " 
+       "16r0A80"    16rFFFF " invalid " 
+       "16r0A81"    16rFFFF " invalid " 
+       "16r0A82"    16rFFFF " invalid " 
+       "16r0A83"    16rFFFF " invalid " 
+       "16r0A84"    16rFFFF " invalid " 
+       "16r0A85"    16rFFFF " invalid " 
+       "16r0A86"    16rFFFF " invalid " 
+       "16r0A87"    16rFFFF " invalid " 
+       "16r0A88"    16rFFFF " invalid " 
+       "16r0A89"    16rFFFF " invalid " 
+       "16r0A8A"    16rFFFF " invalid " 
+       "16r0A8B"    16rFFFF " invalid " 
+       "16r0A8C"    16rFFFF " invalid " 
+       "16r0A8D"    16rFFFF " invalid " 
+       "16r0A8E"    16rFFFF " invalid " 
+       "16r0A8F"    16rFFFF " invalid " 
+       "16r0A90"    16rFFFF " invalid " 
+       "16r0A91"    16rFFFF " invalid " 
+       "16r0A92"    16rFFFF " invalid " 
+       "16r0A93"    16rFFFF " invalid " 
+       "16r0A94"    16rFFFF " invalid " 
+       "16r0A95"    16rFFFF " invalid " 
+       "16r0A96"    16rFFFF " invalid " 
+       "16r0A97"    16rFFFF " invalid " 
+       "16r0A98"    16rFFFF " invalid " 
+       "16r0A99"    16rFFFF " invalid " 
+       "16r0A9A"    16rFFFF " invalid " 
+       "16r0A9B"    16rFFFF " invalid " 
+       "16r0A9C"    16rFFFF " invalid " 
+       "16r0A9D"    16rFFFF " invalid " 
+       "16r0A9E"    16rFFFF " invalid " 
+       "16r0A9F"    16rFFFF " invalid " 
+       "16r0AA0"    16rFFFF " invalid " 
+       "16r0AA1"    16rFFFF " invalid " 
+       "16r0AA2"    16rFFFF " invalid " 
+       "16r0AA3"    16rFFFF " invalid " 
+       "16r0AA4"    16rFFFF " invalid " 
+       "16r0AA5"    16rFFFF " invalid " 
+       "16r0AA6"    16rFFFF " invalid " 
+       "16r0AA7"    16rFFFF " invalid " 
+       "16r0AA8"    16rFFFF " invalid " 
+       "16r0AA9"    16rFFFF " invalid " 
+       "16r0AAA"    16rFFFF " invalid " 
+       "16r0AAB"    16rFFFF " invalid " 
+       "16r0AAC"    16rFFFF " invalid " 
+       "16r0AAD"    16rFFFF " invalid " 
+       "16r0AAE"    16rFFFF " invalid " 
+       "16r0AAF"    16rFFFF " invalid " 
+       "16r0AB0"    16rFFFF " invalid " 
+       "16r0AB1"    16rFFFF " invalid " 
+       "16r0AB2"    16rFFFF " invalid " 
+       "16r0AB3"    16rFFFF " invalid " 
+       "16r0AB4"    16rFFFF " invalid " 
+       "16r0AB5"    16rFFFF " invalid " 
+       "16r0AB6"    16rFFFF " invalid " 
+       "16r0AB7"    16rFFFF " invalid " 
+       "16r0AB8"    16rFFFF " invalid " 
+       "16r0AB9"    16rFFFF " invalid " 
+       "16r0ABA"    16rFFFF " invalid " 
+       "16r0ABB"    16rFFFF " invalid " 
+       "16r0ABC"    16rFFFF " invalid " 
+       "16r0ABD"    16rFFFF " invalid " 
+       "16r0ABE"    16rFFFF " invalid " 
+       "16r0ABF"    16rFFFF " invalid " 
+       "16r0AC0"    16rFFFF " invalid " 
+       "16r0AC1"    16rFFFF " invalid " 
+       "16r0AC2"    16rFFFF " invalid " 
+       "16r0AC3"    16rFFFF " invalid " 
+       "16r0AC4"    16rFFFF " invalid " 
+       "16r0AC5"    16rFFFF " invalid " 
+       "16r0AC6"    16rFFFF " invalid " 
+       "16r0AC7"    16rFFFF " invalid " 
+       "16r0AC8"    16rFFFF " invalid " 
+       "16r0AC9"    16rFFFF " invalid " 
+       "16r0ACA"    16rFFFF " invalid " 
+       "16r0ACB"    16rFFFF " invalid " 
+       "16r0ACC"    16rFFFF " invalid " 
+       "16r0ACD"    16rFFFF " invalid " 
+       "16r0ACE"    16rFFFF " invalid " 
+       "16r0ACF"    16rFFFF " invalid " 
+       "16r0AD0"    16rFFFF " invalid " 
+       "16r0AD1"    16rFFFF " invalid " 
+       "16r0AD2"    16rFFFF " invalid " 
+       "16r0AD3"    16rFFFF " invalid " 
+       "16r0AD4"    16rFFFF " invalid " 
+       "16r0AD5"    16rFFFF " invalid " 
+       "16r0AD6"    16rFFFF " invalid " 
+       "16r0AD7"    16rFFFF " invalid " 
+       "16r0AD8"    16rFFFF " invalid " 
+       "16r0AD9"    16rFFFF " invalid " 
+       "16r0ADA"    16rFFFF " invalid " 
+       "16r0ADB"    16rFFFF " invalid " 
+       "16r0ADC"    16rFFFF " invalid " 
+       "16r0ADD"    16rFFFF " invalid " 
+       "16r0ADE"    16rFFFF " invalid " 
+       "16r0ADF"    16rFFFF " invalid " 
+       "16r0AE0"    16rFFFF " invalid " 
+       "16r0AE1"    16rFFFF " invalid " 
+       "16r0AE2"    16rFFFF " invalid " 
+       "16r0AE3"    16rFFFF " invalid " 
+       "16r0AE4"    16rFFFF " invalid " 
+       "16r0AE5"    16rFFFF " invalid " 
+       "16r0AE6"    16rFFFF " invalid " 
+       "16r0AE7"    16rFFFF " invalid " 
+       "16r0AE8"    16rFFFF " invalid " 
+       "16r0AE9"    16rFFFF " invalid " 
+       "16r0AEA"    16rFFFF " invalid " 
+       "16r0AEB"    16rFFFF " invalid " 
+       "16r0AEC"    16rFFFF " invalid " 
+       "16r0AED"    16rFFFF " invalid " 
+       "16r0AEE"    16rFFFF " invalid " 
+       "16r0AEF"    16rFFFF " invalid " 
+       "16r0AF0"    16rFFFF " invalid " 
+       "16r0AF1"    16rFFFF " invalid " 
+       "16r0AF2"    16rFFFF " invalid " 
+       "16r0AF3"    16rFFFF " invalid " 
+       "16r0AF4"    16rFFFF " invalid " 
+       "16r0AF5"    16rFFFF " invalid " 
+       "16r0AF6"    16rFFFF " invalid " 
+       "16r0AF7"    16rFFFF " invalid " 
+       "16r0AF8"    16rFFFF " invalid " 
+       "16r0AF9"    16rFFFF " invalid " 
+       "16r0AFA"    16rFFFF " invalid " 
+       "16r0AFB"    16rFFFF " invalid " 
+       "16r0AFC"    16rFFFF " invalid " 
+       "16r0AFD"    16rFFFF " invalid " 
+       "16r0AFE"    16rFFFF " invalid " 
+       "16r0AFF"    16rFFFF " invalid " 
+       "16r0B00"    16rFFFF " invalid " 
+       "16r0B01"    16rFFFF " invalid " 
+       "16r0B02"    16rFFFF " invalid " 
+       "16r0B03"    16rFFFF " invalid " 
+       "16r0B04"    16rFFFF " invalid " 
+       "16r0B05"    16rFFFF " invalid " 
+       "16r0B06"    16rFFFF " invalid " 
+       "16r0B07"    16rFFFF " invalid " 
+       "16r0B08"    16rFFFF " invalid " 
+       "16r0B09"    16rFFFF " invalid " 
+       "16r0B0A"    16rFFFF " invalid " 
+       "16r0B0B"    16rFFFF " invalid " 
+       "16r0B0C"    16rFFFF " invalid " 
+       "16r0B0D"    16rFFFF " invalid " 
+       "16r0B0E"    16rFFFF " invalid " 
+       "16r0B0F"    16rFFFF " invalid " 
+       "16r0B10"    16rFFFF " invalid " 
+       "16r0B11"    16rFFFF " invalid " 
+       "16r0B12"    16rFFFF " invalid " 
+       "16r0B13"    16rFFFF " invalid " 
+       "16r0B14"    16rFFFF " invalid " 
+       "16r0B15"    16rFFFF " invalid " 
+       "16r0B16"    16rFFFF " invalid " 
+       "16r0B17"    16rFFFF " invalid " 
+       "16r0B18"    16rFFFF " invalid " 
+       "16r0B19"    16rFFFF " invalid " 
+       "16r0B1A"    16rFFFF " invalid " 
+       "16r0B1B"    16rFFFF " invalid " 
+       "16r0B1C"    16rFFFF " invalid " 
+       "16r0B1D"    16rFFFF " invalid " 
+       "16r0B1E"    16rFFFF " invalid " 
+       "16r0B1F"    16rFFFF " invalid " 
+       "16r0B20"    16rFFFF " invalid " 
+       "16r0B21"    16rFFFF " invalid " 
+       "16r0B22"    16rFFFF " invalid " 
+       "16r0B23"    16rFFFF " invalid " 
+       "16r0B24"    16rFFFF " invalid " 
+       "16r0B25"    16rFFFF " invalid " 
+       "16r0B26"    16rFFFF " invalid " 
+       "16r0B27"    16rFFFF " invalid " 
+       "16r0B28"    16rFFFF " invalid " 
+       "16r0B29"    16rFFFF " invalid " 
+       "16r0B2A"    16rFFFF " invalid " 
+       "16r0B2B"    16rFFFF " invalid " 
+       "16r0B2C"    16rFFFF " invalid " 
+       "16r0B2D"    16rFFFF " invalid " 
+       "16r0B2E"    16rFFFF " invalid " 
+       "16r0B2F"    16rFFFF " invalid " 
+       "16r0B30"    16rFFFF " invalid " 
+       "16r0B31"    16rFFFF " invalid " 
+       "16r0B32"    16rFFFF " invalid " 
+       "16r0B33"    16rFFFF " invalid " 
+       "16r0B34"    16rFFFF " invalid " 
+       "16r0B35"    16rFFFF " invalid " 
+       "16r0B36"    16rFFFF " invalid " 
+       "16r0B37"    16rFFFF " invalid " 
+       "16r0B38"    16rFFFF " invalid " 
+       "16r0B39"    16rFFFF " invalid " 
+       "16r0B3A"    16rFFFF " invalid " 
+       "16r0B3B"    16rFFFF " invalid " 
+       "16r0B3C"    16rFFFF " invalid " 
+       "16r0B3D"    16rFFFF " invalid " 
+       "16r0B3E"    16rFFFF " invalid " 
+       "16r0B3F"    16rFFFF " invalid " 
+       "16r0B40"    16rFFFF " invalid " 
+       "16r0B41"    16rFFFF " invalid " 
+       "16r0B42"    16rFFFF " invalid " 
+       "16r0B43"    16rFFFF " invalid " 
+       "16r0B44"    16rFFFF " invalid " 
+       "16r0B45"    16rFFFF " invalid " 
+       "16r0B46"    16rFFFF " invalid " 
+       "16r0B47"    16rFFFF " invalid " 
+       "16r0B48"    16rFFFF " invalid " 
+       "16r0B49"    16rFFFF " invalid " 
+       "16r0B4A"    16rFFFF " invalid " 
+       "16r0B4B"    16rFFFF " invalid " 
+       "16r0B4C"    16rFFFF " invalid " 
+       "16r0B4D"    16rFFFF " invalid " 
+       "16r0B4E"    16rFFFF " invalid " 
+       "16r0B4F"    16rFFFF " invalid " 
+       "16r0B50"    16rFFFF " invalid " 
+       "16r0B51"    16rFFFF " invalid " 
+       "16r0B52"    16rFFFF " invalid " 
+       "16r0B53"    16rFFFF " invalid " 
+       "16r0B54"    16rFFFF " invalid " 
+       "16r0B55"    16rFFFF " invalid " 
+       "16r0B56"    16rFFFF " invalid " 
+       "16r0B57"    16rFFFF " invalid " 
+       "16r0B58"    16rFFFF " invalid " 
+       "16r0B59"    16rFFFF " invalid " 
+       "16r0B5A"    16rFFFF " invalid " 
+       "16r0B5B"    16rFFFF " invalid " 
+       "16r0B5C"    16rFFFF " invalid " 
+       "16r0B5D"    16rFFFF " invalid " 
+       "16r0B5E"    16rFFFF " invalid " 
+       "16r0B5F"    16rFFFF " invalid " 
+       "16r0B60"    16rFFFF " invalid " 
+       "16r0B61"    16rFFFF " invalid " 
+       "16r0B62"    16rFFFF " invalid " 
+       "16r0B63"    16rFFFF " invalid " 
+       "16r0B64"    16rFFFF " invalid " 
+       "16r0B65"    16rFFFF " invalid " 
+       "16r0B66"    16rFFFF " invalid " 
+       "16r0B67"    16rFFFF " invalid " 
+       "16r0B68"    16rFFFF " invalid " 
+       "16r0B69"    16rFFFF " invalid " 
+       "16r0B6A"    16rFFFF " invalid " 
+       "16r0B6B"    16rFFFF " invalid " 
+       "16r0B6C"    16rFFFF " invalid " 
+       "16r0B6D"    16rFFFF " invalid " 
+       "16r0B6E"    16rFFFF " invalid " 
+       "16r0B6F"    16rFFFF " invalid " 
+       "16r0B70"    16rFFFF " invalid " 
+       "16r0B71"    16rFFFF " invalid " 
+       "16r0B72"    16rFFFF " invalid " 
+       "16r0B73"    16rFFFF " invalid " 
+       "16r0B74"    16rFFFF " invalid " 
+       "16r0B75"    16rFFFF " invalid " 
+       "16r0B76"    16rFFFF " invalid " 
+       "16r0B77"    16rFFFF " invalid " 
+       "16r0B78"    16rFFFF " invalid " 
+       "16r0B79"    16rFFFF " invalid " 
+       "16r0B7A"    16rFFFF " invalid " 
+       "16r0B7B"    16rFFFF " invalid " 
+       "16r0B7C"    16rFFFF " invalid " 
+       "16r0B7D"    16rFFFF " invalid " 
+       "16r0B7E"    16rFFFF " invalid " 
+       "16r0B7F"    16rFFFF " invalid " 
+       "16r0B80"    16rFFFF " invalid " 
+       "16r0B81"    16rFFFF " invalid " 
+       "16r0B82"    16rFFFF " invalid " 
+       "16r0B83"    16rFFFF " invalid " 
+       "16r0B84"    16rFFFF " invalid " 
+       "16r0B85"    16rFFFF " invalid " 
+       "16r0B86"    16rFFFF " invalid " 
+       "16r0B87"    16rFFFF " invalid " 
+       "16r0B88"    16rFFFF " invalid " 
+       "16r0B89"    16rFFFF " invalid " 
+       "16r0B8A"    16rFFFF " invalid " 
+       "16r0B8B"    16rFFFF " invalid " 
+       "16r0B8C"    16rFFFF " invalid " 
+       "16r0B8D"    16rFFFF " invalid " 
+       "16r0B8E"    16rFFFF " invalid " 
+       "16r0B8F"    16rFFFF " invalid " 
+       "16r0B90"    16rFFFF " invalid " 
+       "16r0B91"    16rFFFF " invalid " 
+       "16r0B92"    16rFFFF " invalid " 
+       "16r0B93"    16rFFFF " invalid " 
+       "16r0B94"    16rFFFF " invalid " 
+       "16r0B95"    16rFFFF " invalid " 
+       "16r0B96"    16rFFFF " invalid " 
+       "16r0B97"    16rFFFF " invalid " 
+       "16r0B98"    16rFFFF " invalid " 
+       "16r0B99"    16rFFFF " invalid " 
+       "16r0B9A"    16rFFFF " invalid " 
+       "16r0B9B"    16rFFFF " invalid " 
+       "16r0B9C"    16rFFFF " invalid " 
+       "16r0B9D"    16rFFFF " invalid " 
+       "16r0B9E"    16rFFFF " invalid " 
+       "16r0B9F"    16rFFFF " invalid " 
+       "16r0BA0"    16rFFFF " invalid " 
+       "16r0BA1"    16rFFFF " invalid " 
+       "16r0BA2"    16rFFFF " invalid " 
+       "16r0BA3"    16rFFFF " invalid " 
+       "16r0BA4"    16rFFFF " invalid " 
+       "16r0BA5"    16rFFFF " invalid " 
+       "16r0BA6"    16rFFFF " invalid " 
+       "16r0BA7"    16rFFFF " invalid " 
+       "16r0BA8"    16rFFFF " invalid " 
+       "16r0BA9"    16rFFFF " invalid " 
+       "16r0BAA"    16rFFFF " invalid " 
+       "16r0BAB"    16rFFFF " invalid " 
+       "16r0BAC"    16rFFFF " invalid " 
+       "16r0BAD"    16rFFFF " invalid " 
+       "16r0BAE"    16rFFFF " invalid " 
+       "16r0BAF"    16rFFFF " invalid " 
+       "16r0BB0"    16rFFFF " invalid " 
+       "16r0BB1"    16rFFFF " invalid " 
+       "16r0BB2"    16rFFFF " invalid " 
+       "16r0BB3"    16rFFFF " invalid " 
+       "16r0BB4"    16rFFFF " invalid " 
+       "16r0BB5"    16rFFFF " invalid " 
+       "16r0BB6"    16rFFFF " invalid " 
+       "16r0BB7"    16rFFFF " invalid " 
+       "16r0BB8"    16rFFFF " invalid " 
+       "16r0BB9"    16rFFFF " invalid " 
+       "16r0BBA"    16rFFFF " invalid " 
+       "16r0BBB"    16rFFFF " invalid " 
+       "16r0BBC"    16rFFFF " invalid " 
+       "16r0BBD"    16rFFFF " invalid " 
+       "16r0BBE"    16rFFFF " invalid " 
+       "16r0BBF"    16rFFFF " invalid " 
+       "16r0BC0"    16rFFFF " invalid " 
+       "16r0BC1"    16rFFFF " invalid " 
+       "16r0BC2"    16rFFFF " invalid " 
+       "16r0BC3"    16rFFFF " invalid " 
+       "16r0BC4"    16rFFFF " invalid " 
+       "16r0BC5"    16rFFFF " invalid " 
+       "16r0BC6"    16rFFFF " invalid " 
+       "16r0BC7"    16rFFFF " invalid " 
+       "16r0BC8"    16rFFFF " invalid " 
+       "16r0BC9"    16rFFFF " invalid " 
+       "16r0BCA"    16rFFFF " invalid " 
+       "16r0BCB"    16rFFFF " invalid " 
+       "16r0BCC"    16rFFFF " invalid " 
+       "16r0BCD"    16rFFFF " invalid " 
+       "16r0BCE"    16rFFFF " invalid " 
+       "16r0BCF"    16rFFFF " invalid " 
+       "16r0BD0"    16rFFFF " invalid " 
+       "16r0BD1"    16rFFFF " invalid " 
+       "16r0BD2"    16rFFFF " invalid " 
+       "16r0BD3"    16rFFFF " invalid " 
+       "16r0BD4"    16rFFFF " invalid " 
+       "16r0BD5"    16rFFFF " invalid " 
+       "16r0BD6"    16rFFFF " invalid " 
+       "16r0BD7"    16rFFFF " invalid " 
+       "16r0BD8"    16rFFFF " invalid " 
+       "16r0BD9"    16rFFFF " invalid " 
+       "16r0BDA"    16rFFFF " invalid " 
+       "16r0BDB"    16rFFFF " invalid " 
+       "16r0BDC"    16rFFFF " invalid " 
+       "16r0BDD"    16rFFFF " invalid " 
+       "16r0BDE"    16rFFFF " invalid " 
+       "16r0BDF"    16rFFFF " invalid " 
+       "16r0BE0"    16rFFFF " invalid " 
+       "16r0BE1"    16rFFFF " invalid " 
+       "16r0BE2"    16rFFFF " invalid " 
+       "16r0BE3"    16rFFFF " invalid " 
+       "16r0BE4"    16rFFFF " invalid " 
+       "16r0BE5"    16rFFFF " invalid " 
+       "16r0BE6"    16rFFFF " invalid " 
+       "16r0BE7"    16rFFFF " invalid " 
+       "16r0BE8"    16rFFFF " invalid " 
+       "16r0BE9"    16rFFFF " invalid " 
+       "16r0BEA"    16rFFFF " invalid " 
+       "16r0BEB"    16rFFFF " invalid " 
+       "16r0BEC"    16rFFFF " invalid " 
+       "16r0BED"    16rFFFF " invalid " 
+       "16r0BEE"    16rFFFF " invalid " 
+       "16r0BEF"    16rFFFF " invalid " 
+       "16r0BF0"    16rFFFF " invalid " 
+       "16r0BF1"    16rFFFF " invalid " 
+       "16r0BF2"    16rFFFF " invalid " 
+       "16r0BF3"    16rFFFF " invalid " 
+       "16r0BF4"    16rFFFF " invalid " 
+       "16r0BF5"    16rFFFF " invalid " 
+       "16r0BF6"    16rFFFF " invalid " 
+       "16r0BF7"    16rFFFF " invalid " 
+       "16r0BF8"    16rFFFF " invalid " 
+       "16r0BF9"    16rFFFF " invalid " 
+       "16r0BFA"    16rFFFF " invalid " 
+       "16r0BFB"    16rFFFF " invalid " 
+       "16r0BFC"    16rFFFF " invalid " 
+       "16r0BFD"    16rFFFF " invalid " 
+       "16r0BFE"    16rFFFF " invalid " 
+       "16r0BFF"    16rFFFF " invalid " 
+       "16r0C00"    16rFFFF " invalid " 
+       "16r0C01"    16rFFFF " invalid " 
+       "16r0C02"    16rFFFF " invalid " 
+       "16r0C03"    16rFFFF " invalid " 
+       "16r0C04"    16rFFFF " invalid " 
+       "16r0C05"    16rFFFF " invalid " 
+       "16r0C06"    16rFFFF " invalid " 
+       "16r0C07"    16rFFFF " invalid " 
+       "16r0C08"    16rFFFF " invalid " 
+       "16r0C09"    16rFFFF " invalid " 
+       "16r0C0A"    16rFFFF " invalid " 
+       "16r0C0B"    16rFFFF " invalid " 
+       "16r0C0C"    16rFFFF " invalid " 
+       "16r0C0D"    16rFFFF " invalid " 
+       "16r0C0E"    16rFFFF " invalid " 
+       "16r0C0F"    16rFFFF " invalid " 
+       "16r0C10"    16rFFFF " invalid " 
+       "16r0C11"    16rFFFF " invalid " 
+       "16r0C12"    16rFFFF " invalid " 
+       "16r0C13"    16rFFFF " invalid " 
+       "16r0C14"    16rFFFF " invalid " 
+       "16r0C15"    16rFFFF " invalid " 
+       "16r0C16"    16rFFFF " invalid " 
+       "16r0C17"    16rFFFF " invalid " 
+       "16r0C18"    16rFFFF " invalid " 
+       "16r0C19"    16rFFFF " invalid " 
+       "16r0C1A"    16rFFFF " invalid " 
+       "16r0C1B"    16rFFFF " invalid " 
+       "16r0C1C"    16rFFFF " invalid " 
+       "16r0C1D"    16rFFFF " invalid " 
+       "16r0C1E"    16rFFFF " invalid " 
+       "16r0C1F"    16rFFFF " invalid " 
+       "16r0C20"    16rFFFF " invalid " 
+       "16r0C21"    16rFFFF " invalid " 
+       "16r0C22"    16rFFFF " invalid " 
+       "16r0C23"    16rFFFF " invalid " 
+       "16r0C24"    16rFFFF " invalid " 
+       "16r0C25"    16rFFFF " invalid " 
+       "16r0C26"    16rFFFF " invalid " 
+       "16r0C27"    16rFFFF " invalid " 
+       "16r0C28"    16rFFFF " invalid " 
+       "16r0C29"    16rFFFF " invalid " 
+       "16r0C2A"    16rFFFF " invalid " 
+       "16r0C2B"    16rFFFF " invalid " 
+       "16r0C2C"    16rFFFF " invalid " 
+       "16r0C2D"    16rFFFF " invalid " 
+       "16r0C2E"    16rFFFF " invalid " 
+       "16r0C2F"    16rFFFF " invalid " 
+       "16r0C30"    16rFFFF " invalid " 
+       "16r0C31"    16rFFFF " invalid " 
+       "16r0C32"    16rFFFF " invalid " 
+       "16r0C33"    16rFFFF " invalid " 
+       "16r0C34"    16rFFFF " invalid " 
+       "16r0C35"    16rFFFF " invalid " 
+       "16r0C36"    16rFFFF " invalid " 
+       "16r0C37"    16rFFFF " invalid " 
+       "16r0C38"    16rFFFF " invalid " 
+       "16r0C39"    16rFFFF " invalid " 
+       "16r0C3A"    16rFFFF " invalid " 
+       "16r0C3B"    16rFFFF " invalid " 
+       "16r0C3C"    16rFFFF " invalid " 
+       "16r0C3D"    16rFFFF " invalid " 
+       "16r0C3E"    16rFFFF " invalid " 
+       "16r0C3F"    16rFFFF " invalid " 
+       "16r0C40"    16rFFFF " invalid " 
+       "16r0C41"    16rFFFF " invalid " 
+       "16r0C42"    16rFFFF " invalid " 
+       "16r0C43"    16rFFFF " invalid " 
+       "16r0C44"    16rFFFF " invalid " 
+       "16r0C45"    16rFFFF " invalid " 
+       "16r0C46"    16rFFFF " invalid " 
+       "16r0C47"    16rFFFF " invalid " 
+       "16r0C48"    16rFFFF " invalid " 
+       "16r0C49"    16rFFFF " invalid " 
+       "16r0C4A"    16rFFFF " invalid " 
+       "16r0C4B"    16rFFFF " invalid " 
+       "16r0C4C"    16rFFFF " invalid " 
+       "16r0C4D"    16rFFFF " invalid " 
+       "16r0C4E"    16rFFFF " invalid " 
+       "16r0C4F"    16rFFFF " invalid " 
+       "16r0C50"    16rFFFF " invalid " 
+       "16r0C51"    16rFFFF " invalid " 
+       "16r0C52"    16rFFFF " invalid " 
+       "16r0C53"    16rFFFF " invalid " 
+       "16r0C54"    16rFFFF " invalid " 
+       "16r0C55"    16rFFFF " invalid " 
+       "16r0C56"    16rFFFF " invalid " 
+       "16r0C57"    16rFFFF " invalid " 
+       "16r0C58"    16rFFFF " invalid " 
+       "16r0C59"    16rFFFF " invalid " 
+       "16r0C5A"    16rFFFF " invalid " 
+       "16r0C5B"    16rFFFF " invalid " 
+       "16r0C5C"    16rFFFF " invalid " 
+       "16r0C5D"    16rFFFF " invalid " 
+       "16r0C5E"    16rFFFF " invalid " 
+       "16r0C5F"    16rFFFF " invalid " 
+       "16r0C60"    16rFFFF " invalid " 
+       "16r0C61"    16rFFFF " invalid " 
+       "16r0C62"    16rFFFF " invalid " 
+       "16r0C63"    16rFFFF " invalid " 
+       "16r0C64"    16rFFFF " invalid " 
+       "16r0C65"    16rFFFF " invalid " 
+       "16r0C66"    16rFFFF " invalid " 
+       "16r0C67"    16rFFFF " invalid " 
+       "16r0C68"    16rFFFF " invalid " 
+       "16r0C69"    16rFFFF " invalid " 
+       "16r0C6A"    16rFFFF " invalid " 
+       "16r0C6B"    16rFFFF " invalid " 
+       "16r0C6C"    16rFFFF " invalid " 
+       "16r0C6D"    16rFFFF " invalid " 
+       "16r0C6E"    16rFFFF " invalid " 
+       "16r0C6F"    16rFFFF " invalid " 
+       "16r0C70"    16rFFFF " invalid " 
+       "16r0C71"    16rFFFF " invalid " 
+       "16r0C72"    16rFFFF " invalid " 
+       "16r0C73"    16rFFFF " invalid " 
+       "16r0C74"    16rFFFF " invalid " 
+       "16r0C75"    16rFFFF " invalid " 
+       "16r0C76"    16rFFFF " invalid " 
+       "16r0C77"    16rFFFF " invalid " 
+       "16r0C78"    16rFFFF " invalid " 
+       "16r0C79"    16rFFFF " invalid " 
+       "16r0C7A"    16rFFFF " invalid " 
+       "16r0C7B"    16rFFFF " invalid " 
+       "16r0C7C"    16rFFFF " invalid " 
+       "16r0C7D"    16rFFFF " invalid " 
+       "16r0C7E"    16rFFFF " invalid " 
+       "16r0C7F"    16rFFFF " invalid " 
+       "16r0C80"    16rFFFF " invalid " 
+       "16r0C81"    16rFFFF " invalid " 
+       "16r0C82"    16rFFFF " invalid " 
+       "16r0C83"    16rFFFF " invalid " 
+       "16r0C84"    16rFFFF " invalid " 
+       "16r0C85"    16rFFFF " invalid " 
+       "16r0C86"    16rFFFF " invalid " 
+       "16r0C87"    16rFFFF " invalid " 
+       "16r0C88"    16rFFFF " invalid " 
+       "16r0C89"    16rFFFF " invalid " 
+       "16r0C8A"    16rFFFF " invalid " 
+       "16r0C8B"    16rFFFF " invalid " 
+       "16r0C8C"    16rFFFF " invalid " 
+       "16r0C8D"    16rFFFF " invalid " 
+       "16r0C8E"    16rFFFF " invalid " 
+       "16r0C8F"    16rFFFF " invalid " 
+       "16r0C90"    16rFFFF " invalid " 
+       "16r0C91"    16rFFFF " invalid " 
+       "16r0C92"    16rFFFF " invalid " 
+       "16r0C93"    16rFFFF " invalid " 
+       "16r0C94"    16rFFFF " invalid " 
+       "16r0C95"    16rFFFF " invalid " 
+       "16r0C96"    16rFFFF " invalid " 
+       "16r0C97"    16rFFFF " invalid " 
+       "16r0C98"    16rFFFF " invalid " 
+       "16r0C99"    16rFFFF " invalid " 
+       "16r0C9A"    16rFFFF " invalid " 
+       "16r0C9B"    16rFFFF " invalid " 
+       "16r0C9C"    16rFFFF " invalid " 
+       "16r0C9D"    16rFFFF " invalid " 
+       "16r0C9E"    16rFFFF " invalid " 
+       "16r0C9F"    16rFFFF " invalid " 
+       "16r0CA0"    16rFFFF " invalid " 
+       "16r0CA1"    16rFFFF " invalid " 
+       "16r0CA2"    16rFFFF " invalid " 
+       "16r0CA3"    16rFFFF " invalid " 
+       "16r0CA4"    16rFFFF " invalid " 
+       "16r0CA5"    16rFFFF " invalid " 
+       "16r0CA6"    16rFFFF " invalid " 
+       "16r0CA7"    16rFFFF " invalid " 
+       "16r0CA8"    16rFFFF " invalid " 
+       "16r0CA9"    16rFFFF " invalid " 
+       "16r0CAA"    16rFFFF " invalid " 
+       "16r0CAB"    16rFFFF " invalid " 
+       "16r0CAC"    16rFFFF " invalid " 
+       "16r0CAD"    16rFFFF " invalid " 
+       "16r0CAE"    16rFFFF " invalid " 
+       "16r0CAF"    16rFFFF " invalid " 
+       "16r0CB0"    16rFFFF " invalid " 
+       "16r0CB1"    16rFFFF " invalid " 
+       "16r0CB2"    16rFFFF " invalid " 
+       "16r0CB3"    16rFFFF " invalid " 
+       "16r0CB4"    16rFFFF " invalid " 
+       "16r0CB5"    16rFFFF " invalid " 
+       "16r0CB6"    16rFFFF " invalid " 
+       "16r0CB7"    16rFFFF " invalid " 
+       "16r0CB8"    16rFFFF " invalid " 
+       "16r0CB9"    16rFFFF " invalid " 
+       "16r0CBA"    16rFFFF " invalid " 
+       "16r0CBB"    16rFFFF " invalid " 
+       "16r0CBC"    16rFFFF " invalid " 
+       "16r0CBD"    16rFFFF " invalid " 
+       "16r0CBE"    16rFFFF " invalid " 
+       "16r0CBF"    16rFFFF " invalid " 
+       "16r0CC0"    16rFFFF " invalid " 
+       "16r0CC1"    16rFFFF " invalid " 
+       "16r0CC2"    16rFFFF " invalid " 
+       "16r0CC3"    16rFFFF " invalid " 
+       "16r0CC4"    16rFFFF " invalid " 
+       "16r0CC5"    16rFFFF " invalid " 
+       "16r0CC6"    16rFFFF " invalid " 
+       "16r0CC7"    16rFFFF " invalid " 
+       "16r0CC8"    16rFFFF " invalid " 
+       "16r0CC9"    16rFFFF " invalid " 
+       "16r0CCA"    16rFFFF " invalid " 
+       "16r0CCB"    16rFFFF " invalid " 
+       "16r0CCC"    16rFFFF " invalid " 
+       "16r0CCD"    16rFFFF " invalid " 
+       "16r0CCE"    16rFFFF " invalid " 
+       "16r0CCF"    16rFFFF " invalid " 
+       "16r0CD0"    16rFFFF " invalid " 
+       "16r0CD1"    16rFFFF " invalid " 
+       "16r0CD2"    16rFFFF " invalid " 
+       "16r0CD3"    16rFFFF " invalid " 
+       "16r0CD4"    16rFFFF " invalid " 
+       "16r0CD5"    16rFFFF " invalid " 
+       "16r0CD6"    16rFFFF " invalid " 
+       "16r0CD7"    16rFFFF " invalid " 
+       "16r0CD8"    16rFFFF " invalid " 
+       "16r0CD9"    16rFFFF " invalid " 
+       "16r0CDA"    16rFFFF " invalid " 
+       "16r0CDB"    16rFFFF " invalid " 
+       "16r0CDC"    16rFFFF " invalid " 
+       "16r0CDD"    16rFFFF " invalid " 
+       "16r0CDE"    16rFFFF " invalid " 
+       "16r0CDF"    16rFFFF " invalid " 
+       "16r0CE0"    16rFFFF " invalid " 
+       "16r0CE1"    16rFFFF " invalid " 
+       "16r0CE2"    16rFFFF " invalid " 
+       "16r0CE3"    16rFFFF " invalid " 
+       "16r0CE4"    16rFFFF " invalid " 
+       "16r0CE5"    16rFFFF " invalid " 
+       "16r0CE6"    16rFFFF " invalid " 
+       "16r0CE7"    16rFFFF " invalid " 
+       "16r0CE8"    16rFFFF " invalid " 
+       "16r0CE9"    16rFFFF " invalid " 
+       "16r0CEA"    16rFFFF " invalid " 
+       "16r0CEB"    16rFFFF " invalid " 
+       "16r0CEC"    16rFFFF " invalid " 
+       "16r0CED"    16rFFFF " invalid " 
+       "16r0CEE"    16rFFFF " invalid " 
+       "16r0CEF"    16rFFFF " invalid " 
+       "16r0CF0"    16rFFFF " invalid " 
+       "16r0CF1"    16rFFFF " invalid " 
+       "16r0CF2"    16rFFFF " invalid " 
+       "16r0CF3"    16rFFFF " invalid " 
+       "16r0CF4"    16rFFFF " invalid " 
+       "16r0CF5"    16rFFFF " invalid " 
+       "16r0CF6"    16rFFFF " invalid " 
+       "16r0CF7"    16rFFFF " invalid " 
+       "16r0CF8"    16rFFFF " invalid " 
+       "16r0CF9"    16rFFFF " invalid " 
+       "16r0CFA"    16rFFFF " invalid " 
+       "16r0CFB"    16rFFFF " invalid " 
+       "16r0CFC"    16rFFFF " invalid " 
+       "16r0CFD"    16rFFFF " invalid " 
+       "16r0CFE"    16rFFFF " invalid " 
+       "16r0CFF"    16rFFFF " invalid " 
+       "16r0D00"    16rFFFF " invalid " 
+       "16r0D01"    16rFFFF " invalid " 
+       "16r0D02"    16rFFFF " invalid " 
+       "16r0D03"    16rFFFF " invalid " 
+       "16r0D04"    16rFFFF " invalid " 
+       "16r0D05"    16rFFFF " invalid " 
+       "16r0D06"    16rFFFF " invalid " 
+       "16r0D07"    16rFFFF " invalid " 
+       "16r0D08"    16rFFFF " invalid " 
+       "16r0D09"    16rFFFF " invalid " 
+       "16r0D0A"    16rFFFF " invalid " 
+       "16r0D0B"    16rFFFF " invalid " 
+       "16r0D0C"    16rFFFF " invalid " 
+       "16r0D0D"    16rFFFF " invalid " 
+       "16r0D0E"    16rFFFF " invalid " 
+       "16r0D0F"    16rFFFF " invalid " 
+       "16r0D10"    16rFFFF " invalid " 
+       "16r0D11"    16rFFFF " invalid " 
+       "16r0D12"    16rFFFF " invalid " 
+       "16r0D13"    16rFFFF " invalid " 
+       "16r0D14"    16rFFFF " invalid " 
+       "16r0D15"    16rFFFF " invalid " 
+       "16r0D16"    16rFFFF " invalid " 
+       "16r0D17"    16rFFFF " invalid " 
+       "16r0D18"    16rFFFF " invalid " 
+       "16r0D19"    16rFFFF " invalid " 
+       "16r0D1A"    16rFFFF " invalid " 
+       "16r0D1B"    16rFFFF " invalid " 
+       "16r0D1C"    16rFFFF " invalid " 
+       "16r0D1D"    16rFFFF " invalid " 
+       "16r0D1E"    16rFFFF " invalid " 
+       "16r0D1F"    16rFFFF " invalid " 
+       "16r0D20"    16rFFFF " invalid " 
+       "16r0D21"    16rFFFF " invalid " 
+       "16r0D22"    16rFFFF " invalid " 
+       "16r0D23"    16rFFFF " invalid " 
+       "16r0D24"    16rFFFF " invalid " 
+       "16r0D25"    16rFFFF " invalid " 
+       "16r0D26"    16rFFFF " invalid " 
+       "16r0D27"    16rFFFF " invalid " 
+       "16r0D28"    16rFFFF " invalid " 
+       "16r0D29"    16rFFFF " invalid " 
+       "16r0D2A"    16rFFFF " invalid " 
+       "16r0D2B"    16rFFFF " invalid " 
+       "16r0D2C"    16rFFFF " invalid " 
+       "16r0D2D"    16rFFFF " invalid " 
+       "16r0D2E"    16rFFFF " invalid " 
+       "16r0D2F"    16rFFFF " invalid " 
+       "16r0D30"    16rFFFF " invalid " 
+       "16r0D31"    16rFFFF " invalid " 
+       "16r0D32"    16rFFFF " invalid " 
+       "16r0D33"    16rFFFF " invalid " 
+       "16r0D34"    16rFFFF " invalid " 
+       "16r0D35"    16rFFFF " invalid " 
+       "16r0D36"    16rFFFF " invalid " 
+       "16r0D37"    16rFFFF " invalid " 
+       "16r0D38"    16rFFFF " invalid " 
+       "16r0D39"    16rFFFF " invalid " 
+       "16r0D3A"    16rFFFF " invalid " 
+       "16r0D3B"    16rFFFF " invalid " 
+       "16r0D3C"    16rFFFF " invalid " 
+       "16r0D3D"    16rFFFF " invalid " 
+       "16r0D3E"    16rFFFF " invalid " 
+       "16r0D3F"    16rFFFF " invalid " 
+       "16r0D40"    16rFFFF " invalid " 
+       "16r0D41"    16rFFFF " invalid " 
+       "16r0D42"    16rFFFF " invalid " 
+       "16r0D43"    16rFFFF " invalid " 
+       "16r0D44"    16rFFFF " invalid " 
+       "16r0D45"    16rFFFF " invalid " 
+       "16r0D46"    16rFFFF " invalid " 
+       "16r0D47"    16rFFFF " invalid " 
+       "16r0D48"    16rFFFF " invalid " 
+       "16r0D49"    16rFFFF " invalid " 
+       "16r0D4A"    16rFFFF " invalid " 
+       "16r0D4B"    16rFFFF " invalid " 
+       "16r0D4C"    16rFFFF " invalid " 
+       "16r0D4D"    16rFFFF " invalid " 
+       "16r0D4E"    16rFFFF " invalid " 
+       "16r0D4F"    16rFFFF " invalid " 
+       "16r0D50"    16rFFFF " invalid " 
+       "16r0D51"    16rFFFF " invalid " 
+       "16r0D52"    16rFFFF " invalid " 
+       "16r0D53"    16rFFFF " invalid " 
+       "16r0D54"    16rFFFF " invalid " 
+       "16r0D55"    16rFFFF " invalid " 
+       "16r0D56"    16rFFFF " invalid " 
+       "16r0D57"    16rFFFF " invalid " 
+       "16r0D58"    16rFFFF " invalid " 
+       "16r0D59"    16rFFFF " invalid " 
+       "16r0D5A"    16rFFFF " invalid " 
+       "16r0D5B"    16rFFFF " invalid " 
+       "16r0D5C"    16rFFFF " invalid " 
+       "16r0D5D"    16rFFFF " invalid " 
+       "16r0D5E"    16rFFFF " invalid " 
+       "16r0D5F"    16rFFFF " invalid " 
+       "16r0D60"    16rFFFF " invalid " 
+       "16r0D61"    16rFFFF " invalid " 
+       "16r0D62"    16rFFFF " invalid " 
+       "16r0D63"    16rFFFF " invalid " 
+       "16r0D64"    16rFFFF " invalid " 
+       "16r0D65"    16rFFFF " invalid " 
+       "16r0D66"    16rFFFF " invalid " 
+       "16r0D67"    16rFFFF " invalid " 
+       "16r0D68"    16rFFFF " invalid " 
+       "16r0D69"    16rFFFF " invalid " 
+       "16r0D6A"    16rFFFF " invalid " 
+       "16r0D6B"    16rFFFF " invalid " 
+       "16r0D6C"    16rFFFF " invalid " 
+       "16r0D6D"    16rFFFF " invalid " 
+       "16r0D6E"    16rFFFF " invalid " 
+       "16r0D6F"    16rFFFF " invalid " 
+       "16r0D70"    16rFFFF " invalid " 
+       "16r0D71"    16rFFFF " invalid " 
+       "16r0D72"    16rFFFF " invalid " 
+       "16r0D73"    16rFFFF " invalid " 
+       "16r0D74"    16rFFFF " invalid " 
+       "16r0D75"    16rFFFF " invalid " 
+       "16r0D76"    16rFFFF " invalid " 
+       "16r0D77"    16rFFFF " invalid " 
+       "16r0D78"    16rFFFF " invalid " 
+       "16r0D79"    16rFFFF " invalid " 
+       "16r0D7A"    16rFFFF " invalid " 
+       "16r0D7B"    16rFFFF " invalid " 
+       "16r0D7C"    16rFFFF " invalid " 
+       "16r0D7D"    16rFFFF " invalid " 
+       "16r0D7E"    16rFFFF " invalid " 
+       "16r0D7F"    16rFFFF " invalid " 
+       "16r0D80"    16rFFFF " invalid " 
+       "16r0D81"    16rFFFF " invalid " 
+       "16r0D82"    16rFFFF " invalid " 
+       "16r0D83"    16rFFFF " invalid " 
+       "16r0D84"    16rFFFF " invalid " 
+       "16r0D85"    16rFFFF " invalid " 
+       "16r0D86"    16rFFFF " invalid " 
+       "16r0D87"    16rFFFF " invalid " 
+       "16r0D88"    16rFFFF " invalid " 
+       "16r0D89"    16rFFFF " invalid " 
+       "16r0D8A"    16rFFFF " invalid " 
+       "16r0D8B"    16rFFFF " invalid " 
+       "16r0D8C"    16rFFFF " invalid " 
+       "16r0D8D"    16rFFFF " invalid " 
+       "16r0D8E"    16rFFFF " invalid " 
+       "16r0D8F"    16rFFFF " invalid " 
+       "16r0D90"    16rFFFF " invalid " 
+       "16r0D91"    16rFFFF " invalid " 
+       "16r0D92"    16rFFFF " invalid " 
+       "16r0D93"    16rFFFF " invalid " 
+       "16r0D94"    16rFFFF " invalid " 
+       "16r0D95"    16rFFFF " invalid " 
+       "16r0D96"    16rFFFF " invalid " 
+       "16r0D97"    16rFFFF " invalid " 
+       "16r0D98"    16rFFFF " invalid " 
+       "16r0D99"    16rFFFF " invalid " 
+       "16r0D9A"    16rFFFF " invalid " 
+       "16r0D9B"    16rFFFF " invalid " 
+       "16r0D9C"    16rFFFF " invalid " 
+       "16r0D9D"    16rFFFF " invalid " 
+       "16r0D9E"    16rFFFF " invalid " 
+       "16r0D9F"    16rFFFF " invalid " 
+       "16r0DA0"    16rFFFF " invalid " 
+       "16r0DA1"    16rFFFF " invalid " 
+       "16r0DA2"    16rFFFF " invalid " 
+       "16r0DA3"    16rFFFF " invalid " 
+       "16r0DA4"    16rFFFF " invalid " 
+       "16r0DA5"    16rFFFF " invalid " 
+       "16r0DA6"    16rFFFF " invalid " 
+       "16r0DA7"    16rFFFF " invalid " 
+       "16r0DA8"    16rFFFF " invalid " 
+       "16r0DA9"    16rFFFF " invalid " 
+       "16r0DAA"    16rFFFF " invalid " 
+       "16r0DAB"    16rFFFF " invalid " 
+       "16r0DAC"    16rFFFF " invalid " 
+       "16r0DAD"    16rFFFF " invalid " 
+       "16r0DAE"    16rFFFF " invalid " 
+       "16r0DAF"    16rFFFF " invalid " 
+       "16r0DB0"    16rFFFF " invalid " 
+       "16r0DB1"    16rFFFF " invalid " 
+       "16r0DB2"    16rFFFF " invalid " 
+       "16r0DB3"    16rFFFF " invalid " 
+       "16r0DB4"    16rFFFF " invalid " 
+       "16r0DB5"    16rFFFF " invalid " 
+       "16r0DB6"    16rFFFF " invalid " 
+       "16r0DB7"    16rFFFF " invalid " 
+       "16r0DB8"    16rFFFF " invalid " 
+       "16r0DB9"    16rFFFF " invalid " 
+       "16r0DBA"    16rFFFF " invalid " 
+       "16r0DBB"    16rFFFF " invalid " 
+       "16r0DBC"    16rFFFF " invalid " 
+       "16r0DBD"    16rFFFF " invalid " 
+       "16r0DBE"    16rFFFF " invalid " 
+       "16r0DBF"    16rFFFF " invalid " 
+       "16r0DC0"    16rFFFF " invalid " 
+       "16r0DC1"    16rFFFF " invalid " 
+       "16r0DC2"    16rFFFF " invalid " 
+       "16r0DC3"    16rFFFF " invalid " 
+       "16r0DC4"    16rFFFF " invalid " 
+       "16r0DC5"    16rFFFF " invalid " 
+       "16r0DC6"    16rFFFF " invalid " 
+       "16r0DC7"    16rFFFF " invalid " 
+       "16r0DC8"    16rFFFF " invalid " 
+       "16r0DC9"    16rFFFF " invalid " 
+       "16r0DCA"    16rFFFF " invalid " 
+       "16r0DCB"    16rFFFF " invalid " 
+       "16r0DCC"    16rFFFF " invalid " 
+       "16r0DCD"    16rFFFF " invalid " 
+       "16r0DCE"    16rFFFF " invalid " 
+       "16r0DCF"    16rFFFF " invalid " 
+       "16r0DD0"    16rFFFF " invalid " 
+       "16r0DD1"    16rFFFF " invalid " 
+       "16r0DD2"    16rFFFF " invalid " 
+       "16r0DD3"    16rFFFF " invalid " 
+       "16r0DD4"    16rFFFF " invalid " 
+       "16r0DD5"    16rFFFF " invalid " 
+       "16r0DD6"    16rFFFF " invalid " 
+       "16r0DD7"    16rFFFF " invalid " 
+       "16r0DD8"    16rFFFF " invalid " 
+       "16r0DD9"    16rFFFF " invalid " 
+       "16r0DDA"    16rFFFF " invalid " 
+       "16r0DDB"    16rFFFF " invalid " 
+       "16r0DDC"    16rFFFF " invalid " 
+       "16r0DDD"    16rFFFF " invalid " 
+       "16r0DDE"    16rFFFF " invalid " 
+       "16r0DDF"    16rFFFF " invalid " 
+       "16r0DE0"    16rFFFF " invalid " 
+       "16r0DE1"    16rFFFF " invalid " 
+       "16r0DE2"    16rFFFF " invalid " 
+       "16r0DE3"    16rFFFF " invalid " 
+       "16r0DE4"    16rFFFF " invalid " 
+       "16r0DE5"    16rFFFF " invalid " 
+       "16r0DE6"    16rFFFF " invalid " 
+       "16r0DE7"    16rFFFF " invalid " 
+       "16r0DE8"    16rFFFF " invalid " 
+       "16r0DE9"    16rFFFF " invalid " 
+       "16r0DEA"    16rFFFF " invalid " 
+       "16r0DEB"    16rFFFF " invalid " 
+       "16r0DEC"    16rFFFF " invalid " 
+       "16r0DED"    16rFFFF " invalid " 
+       "16r0DEE"    16rFFFF " invalid " 
+       "16r0DEF"    16rFFFF " invalid " 
+       "16r0DF0"    16rFFFF " invalid " 
+       "16r0DF1"    16rFFFF " invalid " 
+       "16r0DF2"    16rFFFF " invalid " 
+       "16r0DF3"    16rFFFF " invalid " 
+       "16r0DF4"    16rFFFF " invalid " 
+       "16r0DF5"    16rFFFF " invalid " 
+       "16r0DF6"    16rFFFF " invalid " 
+       "16r0DF7"    16rFFFF " invalid " 
+       "16r0DF8"    16rFFFF " invalid " 
+       "16r0DF9"    16rFFFF " invalid " 
+       "16r0DFA"    16rFFFF " invalid " 
+       "16r0DFB"    16rFFFF " invalid " 
+       "16r0DFC"    16rFFFF " invalid " 
+       "16r0DFD"    16rFFFF " invalid " 
+       "16r0DFE"    16rFFFF " invalid " 
+       "16r0DFF"    16rFFFF " invalid " 
+       "16r0E00"    16rFFFF " invalid " 
+       "16r0E01"    16rFFFF " invalid " 
+       "16r0E02"    16rFFFF " invalid " 
+       "16r0E03"    16rFFFF " invalid " 
+       "16r0E04"    16rFFFF " invalid " 
+       "16r0E05"    16rFFFF " invalid " 
+       "16r0E06"    16rFFFF " invalid " 
+       "16r0E07"    16rFFFF " invalid " 
+       "16r0E08"    16rFFFF " invalid " 
+       "16r0E09"    16rFFFF " invalid " 
+       "16r0E0A"    16rFFFF " invalid " 
+       "16r0E0B"    16rFFFF " invalid " 
+       "16r0E0C"    16rFFFF " invalid " 
+       "16r0E0D"    16rFFFF " invalid " 
+       "16r0E0E"    16rFFFF " invalid " 
+       "16r0E0F"    16rFFFF " invalid " 
+       "16r0E10"    16rFFFF " invalid " 
+       "16r0E11"    16rFFFF " invalid " 
+       "16r0E12"    16rFFFF " invalid " 
+       "16r0E13"    16rFFFF " invalid " 
+       "16r0E14"    16rFFFF " invalid " 
+       "16r0E15"    16rFFFF " invalid " 
+       "16r0E16"    16rFFFF " invalid " 
+       "16r0E17"    16rFFFF " invalid " 
+       "16r0E18"    16rFFFF " invalid " 
+       "16r0E19"    16rFFFF " invalid " 
+       "16r0E1A"    16rFFFF " invalid " 
+       "16r0E1B"    16rFFFF " invalid " 
+       "16r0E1C"    16rFFFF " invalid " 
+       "16r0E1D"    16rFFFF " invalid " 
+       "16r0E1E"    16rFFFF " invalid " 
+       "16r0E1F"    16rFFFF " invalid " 
+       "16r0E20"    16rFFFF " invalid " 
+       "16r0E21"    16rFFFF " invalid " 
+       "16r0E22"    16rFFFF " invalid " 
+       "16r0E23"    16rFFFF " invalid " 
+       "16r0E24"    16rFFFF " invalid " 
+       "16r0E25"    16rFFFF " invalid " 
+       "16r0E26"    16rFFFF " invalid " 
+       "16r0E27"    16rFFFF " invalid " 
+       "16r0E28"    16rFFFF " invalid " 
+       "16r0E29"    16rFFFF " invalid " 
+       "16r0E2A"    16rFFFF " invalid " 
+       "16r0E2B"    16rFFFF " invalid " 
+       "16r0E2C"    16rFFFF " invalid " 
+       "16r0E2D"    16rFFFF " invalid " 
+       "16r0E2E"    16rFFFF " invalid " 
+       "16r0E2F"    16rFFFF " invalid " 
+       "16r0E30"    16rFFFF " invalid " 
+       "16r0E31"    16rFFFF " invalid " 
+       "16r0E32"    16rFFFF " invalid " 
+       "16r0E33"    16rFFFF " invalid " 
+       "16r0E34"    16rFFFF " invalid " 
+       "16r0E35"    16rFFFF " invalid " 
+       "16r0E36"    16rFFFF " invalid " 
+       "16r0E37"    16rFFFF " invalid " 
+       "16r0E38"    16rFFFF " invalid " 
+       "16r0E39"    16rFFFF " invalid " 
+       "16r0E3A"    16rFFFF " invalid " 
+       "16r0E3B"    16rFFFF " invalid " 
+       "16r0E3C"    16rFFFF " invalid " 
+       "16r0E3D"    16rFFFF " invalid " 
+       "16r0E3E"    16rFFFF " invalid " 
+       "16r0E3F"    16rFFFF " invalid " 
+       "16r0E40"    16rFFFF " invalid " 
+       "16r0E41"    16rFFFF " invalid " 
+       "16r0E42"    16rFFFF " invalid " 
+       "16r0E43"    16rFFFF " invalid " 
+       "16r0E44"    16rFFFF " invalid " 
+       "16r0E45"    16rFFFF " invalid " 
+       "16r0E46"    16rFFFF " invalid " 
+       "16r0E47"    16rFFFF " invalid " 
+       "16r0E48"    16rFFFF " invalid " 
+       "16r0E49"    16rFFFF " invalid " 
+       "16r0E4A"    16rFFFF " invalid " 
+       "16r0E4B"    16rFFFF " invalid " 
+       "16r0E4C"    16rFFFF " invalid " 
+       "16r0E4D"    16rFFFF " invalid " 
+       "16r0E4E"    16rFFFF " invalid " 
+       "16r0E4F"    16rFFFF " invalid " 
+       "16r0E50"    16rFFFF " invalid " 
+       "16r0E51"    16rFFFF " invalid " 
+       "16r0E52"    16rFFFF " invalid " 
+       "16r0E53"    16rFFFF " invalid " 
+       "16r0E54"    16rFFFF " invalid " 
+       "16r0E55"    16rFFFF " invalid " 
+       "16r0E56"    16rFFFF " invalid " 
+       "16r0E57"    16rFFFF " invalid " 
+       "16r0E58"    16rFFFF " invalid " 
+       "16r0E59"    16rFFFF " invalid " 
+       "16r0E5A"    16rFFFF " invalid " 
+       "16r0E5B"    16rFFFF " invalid " 
+       "16r0E5C"    16rFFFF " invalid " 
+       "16r0E5D"    16rFFFF " invalid " 
+       "16r0E5E"    16rFFFF " invalid " 
+       "16r0E5F"    16rFFFF " invalid " 
+       "16r0E60"    16rFFFF " invalid " 
+       "16r0E61"    16rFFFF " invalid " 
+       "16r0E62"    16rFFFF " invalid " 
+       "16r0E63"    16rFFFF " invalid " 
+       "16r0E64"    16rFFFF " invalid " 
+       "16r0E65"    16rFFFF " invalid " 
+       "16r0E66"    16rFFFF " invalid " 
+       "16r0E67"    16rFFFF " invalid " 
+       "16r0E68"    16rFFFF " invalid " 
+       "16r0E69"    16rFFFF " invalid " 
+       "16r0E6A"    16rFFFF " invalid " 
+       "16r0E6B"    16rFFFF " invalid " 
+       "16r0E6C"    16rFFFF " invalid " 
+       "16r0E6D"    16rFFFF " invalid " 
+       "16r0E6E"    16rFFFF " invalid " 
+       "16r0E6F"    16rFFFF " invalid " 
+       "16r0E70"    16rFFFF " invalid " 
+       "16r0E71"    16rFFFF " invalid " 
+       "16r0E72"    16rFFFF " invalid " 
+       "16r0E73"    16rFFFF " invalid " 
+       "16r0E74"    16rFFFF " invalid " 
+       "16r0E75"    16rFFFF " invalid " 
+       "16r0E76"    16rFFFF " invalid " 
+       "16r0E77"    16rFFFF " invalid " 
+       "16r0E78"    16rFFFF " invalid " 
+       "16r0E79"    16rFFFF " invalid " 
+       "16r0E7A"    16rFFFF " invalid " 
+       "16r0E7B"    16rFFFF " invalid " 
+       "16r0E7C"    16rFFFF " invalid " 
+       "16r0E7D"    16rFFFF " invalid " 
+       "16r0E7E"    16rFFFF " invalid " 
+       "16r0E7F"    16rFFFF " invalid " 
+       "16r0E80"    16rFFFF " invalid " 
+       "16r0E81"    16rFFFF " invalid " 
+       "16r0E82"    16rFFFF " invalid " 
+       "16r0E83"    16rFFFF " invalid " 
+       "16r0E84"    16rFFFF " invalid " 
+       "16r0E85"    16rFFFF " invalid " 
+       "16r0E86"    16rFFFF " invalid " 
+       "16r0E87"    16rFFFF " invalid " 
+       "16r0E88"    16rFFFF " invalid " 
+       "16r0E89"    16rFFFF " invalid " 
+       "16r0E8A"    16rFFFF " invalid " 
+       "16r0E8B"    16rFFFF " invalid " 
+       "16r0E8C"    16rFFFF " invalid " 
+       "16r0E8D"    16rFFFF " invalid " 
+       "16r0E8E"    16rFFFF " invalid " 
+       "16r0E8F"    16rFFFF " invalid " 
+       "16r0E90"    16rFFFF " invalid " 
+       "16r0E91"    16rFFFF " invalid " 
+       "16r0E92"    16rFFFF " invalid " 
+       "16r0E93"    16rFFFF " invalid " 
+       "16r0E94"    16rFFFF " invalid " 
+       "16r0E95"    16rFFFF " invalid " 
+       "16r0E96"    16rFFFF " invalid " 
+       "16r0E97"    16rFFFF " invalid " 
+       "16r0E98"    16rFFFF " invalid " 
+       "16r0E99"    16rFFFF " invalid " 
+       "16r0E9A"    16rFFFF " invalid " 
+       "16r0E9B"    16rFFFF " invalid " 
+       "16r0E9C"    16rFFFF " invalid " 
+       "16r0E9D"    16rFFFF " invalid " 
+       "16r0E9E"    16rFFFF " invalid " 
+       "16r0E9F"    16rFFFF " invalid " 
+       "16r0EA0"    16rFFFF " invalid " 
+       "16r0EA1"    16rFFFF " invalid " 
+       "16r0EA2"    16rFFFF " invalid " 
+       "16r0EA3"    16rFFFF " invalid " 
+       "16r0EA4"    16rFFFF " invalid " 
+       "16r0EA5"    16rFFFF " invalid " 
+       "16r0EA6"    16rFFFF " invalid " 
+       "16r0EA7"    16rFFFF " invalid " 
+       "16r0EA8"    16rFFFF " invalid " 
+       "16r0EA9"    16rFFFF " invalid " 
+       "16r0EAA"    16rFFFF " invalid " 
+       "16r0EAB"    16rFFFF " invalid " 
+       "16r0EAC"    16rFFFF " invalid " 
+       "16r0EAD"    16rFFFF " invalid " 
+       "16r0EAE"    16rFFFF " invalid " 
+       "16r0EAF"    16rFFFF " invalid " 
+       "16r0EB0"    16rFFFF " invalid " 
+       "16r0EB1"    16rFFFF " invalid " 
+       "16r0EB2"    16rFFFF " invalid " 
+       "16r0EB3"    16rFFFF " invalid " 
+       "16r0EB4"    16rFFFF " invalid " 
+       "16r0EB5"    16rFFFF " invalid " 
+       "16r0EB6"    16rFFFF " invalid " 
+       "16r0EB7"    16rFFFF " invalid " 
+       "16r0EB8"    16rFFFF " invalid " 
+       "16r0EB9"    16rFFFF " invalid " 
+       "16r0EBA"    16rFFFF " invalid " 
+       "16r0EBB"    16rFFFF " invalid " 
+       "16r0EBC"    16rFFFF " invalid " 
+       "16r0EBD"    16rFFFF " invalid " 
+       "16r0EBE"    16rFFFF " invalid " 
+       "16r0EBF"    16rFFFF " invalid " 
+       "16r0EC0"    16rFFFF " invalid " 
+       "16r0EC1"    16rFFFF " invalid " 
+       "16r0EC2"    16rFFFF " invalid " 
+       "16r0EC3"    16rFFFF " invalid " 
+       "16r0EC4"    16rFFFF " invalid " 
+       "16r0EC5"    16rFFFF " invalid " 
+       "16r0EC6"    16rFFFF " invalid " 
+       "16r0EC7"    16rFFFF " invalid " 
+       "16r0EC8"    16rFFFF " invalid " 
+       "16r0EC9"    16rFFFF " invalid " 
+       "16r0ECA"    16rFFFF " invalid " 
+       "16r0ECB"    16rFFFF " invalid " 
+       "16r0ECC"    16rFFFF " invalid " 
+       "16r0ECD"    16rFFFF " invalid " 
+       "16r0ECE"    16rFFFF " invalid " 
+       "16r0ECF"    16rFFFF " invalid " 
+       "16r0ED0"    16rFFFF " invalid " 
+       "16r0ED1"    16rFFFF " invalid " 
+       "16r0ED2"    16rFFFF " invalid " 
+       "16r0ED3"    16rFFFF " invalid " 
+       "16r0ED4"    16rFFFF " invalid " 
+       "16r0ED5"    16rFFFF " invalid " 
+       "16r0ED6"    16rFFFF " invalid " 
+       "16r0ED7"    16rFFFF " invalid " 
+       "16r0ED8"    16rFFFF " invalid " 
+       "16r0ED9"    16rFFFF " invalid " 
+       "16r0EDA"    16rFFFF " invalid " 
+       "16r0EDB"    16rFFFF " invalid " 
+       "16r0EDC"    16rFFFF " invalid " 
+       "16r0EDD"    16rFFFF " invalid " 
+       "16r0EDE"    16rFFFF " invalid " 
+       "16r0EDF"    16rFFFF " invalid " 
+       "16r0EE0"    16rFFFF " invalid " 
+       "16r0EE1"    16rFFFF " invalid " 
+       "16r0EE2"    16rFFFF " invalid " 
+       "16r0EE3"    16rFFFF " invalid " 
+       "16r0EE4"    16rFFFF " invalid " 
+       "16r0EE5"    16rFFFF " invalid " 
+       "16r0EE6"    16rFFFF " invalid " 
+       "16r0EE7"    16rFFFF " invalid " 
+       "16r0EE8"    16rFFFF " invalid " 
+       "16r0EE9"    16rFFFF " invalid " 
+       "16r0EEA"    16rFFFF " invalid " 
+       "16r0EEB"    16rFFFF " invalid " 
+       "16r0EEC"    16rFFFF " invalid " 
+       "16r0EED"    16rFFFF " invalid " 
+       "16r0EEE"    16rFFFF " invalid " 
+       "16r0EEF"    16rFFFF " invalid " 
+       "16r0EF0"    16rFFFF " invalid " 
+       "16r0EF1"    16rFFFF " invalid " 
+       "16r0EF2"    16rFFFF " invalid " 
+       "16r0EF3"    16rFFFF " invalid " 
+       "16r0EF4"    16rFFFF " invalid " 
+       "16r0EF5"    16rFFFF " invalid " 
+       "16r0EF6"    16rFFFF " invalid " 
+       "16r0EF7"    16rFFFF " invalid " 
+       "16r0EF8"    16rFFFF " invalid " 
+       "16r0EF9"    16rFFFF " invalid " 
+       "16r0EFA"    16rFFFF " invalid " 
+       "16r0EFB"    16rFFFF " invalid " 
+       "16r0EFC"    16rFFFF " invalid " 
+       "16r0EFD"    16rFFFF " invalid " 
+       "16r0EFE"    16rFFFF " invalid " 
+       "16r0EFF"    16rFFFF " invalid " 
+       "16r0F00"    16rFFFF " invalid " 
+       "16r0F01"    16rFFFF " invalid " 
+       "16r0F02"    16rFFFF " invalid " 
+       "16r0F03"    16rFFFF " invalid " 
+       "16r0F04"    16rFFFF " invalid " 
+       "16r0F05"    16rFFFF " invalid " 
+       "16r0F06"    16rFFFF " invalid " 
+       "16r0F07"    16rFFFF " invalid " 
+       "16r0F08"    16rFFFF " invalid " 
+       "16r0F09"    16rFFFF " invalid " 
+       "16r0F0A"    16rFFFF " invalid " 
+       "16r0F0B"    16rFFFF " invalid " 
+       "16r0F0C"    16rFFFF " invalid " 
+       "16r0F0D"    16rFFFF " invalid " 
+       "16r0F0E"    16rFFFF " invalid " 
+       "16r0F0F"    16rFFFF " invalid " 
+       "16r0F10"    16rFFFF " invalid " 
+       "16r0F11"    16rFFFF " invalid " 
+       "16r0F12"    16rFFFF " invalid " 
+       "16r0F13"    16rFFFF " invalid " 
+       "16r0F14"    16rFFFF " invalid " 
+       "16r0F15"    16rFFFF " invalid " 
+       "16r0F16"    16rFFFF " invalid " 
+       "16r0F17"    16rFFFF " invalid " 
+       "16r0F18"    16rFFFF " invalid " 
+       "16r0F19"    16rFFFF " invalid " 
+       "16r0F1A"    16rFFFF " invalid " 
+       "16r0F1B"    16rFFFF " invalid " 
+       "16r0F1C"    16rFFFF " invalid " 
+       "16r0F1D"    16rFFFF " invalid " 
+       "16r0F1E"    16rFFFF " invalid " 
+       "16r0F1F"    16rFFFF " invalid " 
+       "16r0F20"    16rFFFF " invalid " 
+       "16r0F21"    16rFFFF " invalid " 
+       "16r0F22"    16rFFFF " invalid " 
+       "16r0F23"    16rFFFF " invalid " 
+       "16r0F24"    16rFFFF " invalid " 
+       "16r0F25"    16rFFFF " invalid " 
+       "16r0F26"    16rFFFF " invalid " 
+       "16r0F27"    16rFFFF " invalid " 
+       "16r0F28"    16rFFFF " invalid " 
+       "16r0F29"    16rFFFF " invalid " 
+       "16r0F2A"    16rFFFF " invalid " 
+       "16r0F2B"    16rFFFF " invalid " 
+       "16r0F2C"    16rFFFF " invalid " 
+       "16r0F2D"    16rFFFF " invalid " 
+       "16r0F2E"    16rFFFF " invalid " 
+       "16r0F2F"    16rFFFF " invalid " 
+       "16r0F30"    16rFFFF " invalid " 
+       "16r0F31"    16rFFFF " invalid " 
+       "16r0F32"    16rFFFF " invalid " 
+       "16r0F33"    16rFFFF " invalid " 
+       "16r0F34"    16rFFFF " invalid " 
+       "16r0F35"    16rFFFF " invalid " 
+       "16r0F36"    16rFFFF " invalid " 
+       "16r0F37"    16rFFFF " invalid " 
+       "16r0F38"    16rFFFF " invalid " 
+       "16r0F39"    16rFFFF " invalid " 
+       "16r0F3A"    16rFFFF " invalid " 
+       "16r0F3B"    16rFFFF " invalid " 
+       "16r0F3C"    16rFFFF " invalid " 
+       "16r0F3D"    16rFFFF " invalid " 
+       "16r0F3E"    16rFFFF " invalid " 
+       "16r0F3F"    16rFFFF " invalid " 
+       "16r0F40"    16rFFFF " invalid " 
+       "16r0F41"    16rFFFF " invalid " 
+       "16r0F42"    16rFFFF " invalid " 
+       "16r0F43"    16rFFFF " invalid " 
+       "16r0F44"    16rFFFF " invalid " 
+       "16r0F45"    16rFFFF " invalid " 
+       "16r0F46"    16rFFFF " invalid " 
+       "16r0F47"    16rFFFF " invalid " 
+       "16r0F48"    16rFFFF " invalid " 
+       "16r0F49"    16rFFFF " invalid " 
+       "16r0F4A"    16rFFFF " invalid " 
+       "16r0F4B"    16rFFFF " invalid " 
+       "16r0F4C"    16rFFFF " invalid " 
+       "16r0F4D"    16rFFFF " invalid " 
+       "16r0F4E"    16rFFFF " invalid " 
+       "16r0F4F"    16rFFFF " invalid " 
+       "16r0F50"    16rFFFF " invalid " 
+       "16r0F51"    16rFFFF " invalid " 
+       "16r0F52"    16rFFFF " invalid " 
+       "16r0F53"    16rFFFF " invalid " 
+       "16r0F54"    16rFFFF " invalid " 
+       "16r0F55"    16rFFFF " invalid " 
+       "16r0F56"    16rFFFF " invalid " 
+       "16r0F57"    16rFFFF " invalid " 
+       "16r0F58"    16rFFFF " invalid " 
+       "16r0F59"    16rFFFF " invalid " 
+       "16r0F5A"    16rFFFF " invalid " 
+       "16r0F5B"    16rFFFF " invalid " 
+       "16r0F5C"    16rFFFF " invalid " 
+       "16r0F5D"    16rFFFF " invalid " 
+       "16r0F5E"    16rFFFF " invalid " 
+       "16r0F5F"    16rFFFF " invalid " 
+       "16r0F60"    16rFFFF " invalid " 
+       "16r0F61"    16rFFFF " invalid " 
+       "16r0F62"    16rFFFF " invalid " 
+       "16r0F63"    16rFFFF " invalid " 
+       "16r0F64"    16rFFFF " invalid " 
+       "16r0F65"    16rFFFF " invalid " 
+       "16r0F66"    16rFFFF " invalid " 
+       "16r0F67"    16rFFFF " invalid " 
+       "16r0F68"    16rFFFF " invalid " 
+       "16r0F69"    16rFFFF " invalid " 
+       "16r0F6A"    16rFFFF " invalid " 
+       "16r0F6B"    16rFFFF " invalid " 
+       "16r0F6C"    16rFFFF " invalid " 
+       "16r0F6D"    16rFFFF " invalid " 
+       "16r0F6E"    16rFFFF " invalid " 
+       "16r0F6F"    16rFFFF " invalid " 
+       "16r0F70"    16rFFFF " invalid " 
+       "16r0F71"    16rFFFF " invalid " 
+       "16r0F72"    16rFFFF " invalid " 
+       "16r0F73"    16rFFFF " invalid " 
+       "16r0F74"    16rFFFF " invalid " 
+       "16r0F75"    16rFFFF " invalid " 
+       "16r0F76"    16rFFFF " invalid " 
+       "16r0F77"    16rFFFF " invalid " 
+       "16r0F78"    16rFFFF " invalid " 
+       "16r0F79"    16rFFFF " invalid " 
+       "16r0F7A"    16rFFFF " invalid " 
+       "16r0F7B"    16rFFFF " invalid " 
+       "16r0F7C"    16rFFFF " invalid " 
+       "16r0F7D"    16rFFFF " invalid " 
+       "16r0F7E"    16rFFFF " invalid " 
+       "16r0F7F"    16rFFFF " invalid " 
+       "16r0F80"    16rFFFF " invalid " 
+       "16r0F81"    16rFFFF " invalid " 
+       "16r0F82"    16rFFFF " invalid " 
+       "16r0F83"    16rFFFF " invalid " 
+       "16r0F84"    16rFFFF " invalid " 
+       "16r0F85"    16rFFFF " invalid " 
+       "16r0F86"    16rFFFF " invalid " 
+       "16r0F87"    16rFFFF " invalid " 
+       "16r0F88"    16rFFFF " invalid " 
+       "16r0F89"    16rFFFF " invalid " 
+       "16r0F8A"    16rFFFF " invalid " 
+       "16r0F8B"    16rFFFF " invalid " 
+       "16r0F8C"    16rFFFF " invalid " 
+       "16r0F8D"    16rFFFF " invalid " 
+       "16r0F8E"    16rFFFF " invalid " 
+       "16r0F8F"    16rFFFF " invalid " 
+       "16r0F90"    16rFFFF " invalid " 
+       "16r0F91"    16rFFFF " invalid " 
+       "16r0F92"    16rFFFF " invalid " 
+       "16r0F93"    16rFFFF " invalid " 
+       "16r0F94"    16rFFFF " invalid " 
+       "16r0F95"    16rFFFF " invalid " 
+       "16r0F96"    16rFFFF " invalid " 
+       "16r0F97"    16rFFFF " invalid " 
+       "16r0F98"    16rFFFF " invalid " 
+       "16r0F99"    16rFFFF " invalid " 
+       "16r0F9A"    16rFFFF " invalid " 
+       "16r0F9B"    16rFFFF " invalid " 
+       "16r0F9C"    16rFFFF " invalid " 
+       "16r0F9D"    16rFFFF " invalid " 
+       "16r0F9E"    16rFFFF " invalid " 
+       "16r0F9F"    16rFFFF " invalid " 
+       "16r0FA0"    16rFFFF " invalid " 
+       "16r0FA1"    16rFFFF " invalid " 
+       "16r0FA2"    16rFFFF " invalid " 
+       "16r0FA3"    16rFFFF " invalid " 
+       "16r0FA4"    16rFFFF " invalid " 
+       "16r0FA5"    16rFFFF " invalid " 
+       "16r0FA6"    16rFFFF " invalid " 
+       "16r0FA7"    16rFFFF " invalid " 
+       "16r0FA8"    16rFFFF " invalid " 
+       "16r0FA9"    16rFFFF " invalid " 
+       "16r0FAA"    16rFFFF " invalid " 
+       "16r0FAB"    16rFFFF " invalid " 
+       "16r0FAC"    16rFFFF " invalid " 
+       "16r0FAD"    16rFFFF " invalid " 
+       "16r0FAE"    16rFFFF " invalid " 
+       "16r0FAF"    16rFFFF " invalid " 
+       "16r0FB0"    16rFFFF " invalid " 
+       "16r0FB1"    16rFFFF " invalid " 
+       "16r0FB2"    16rFFFF " invalid " 
+       "16r0FB3"    16rFFFF " invalid " 
+       "16r0FB4"    16rFFFF " invalid " 
+       "16r0FB5"    16rFFFF " invalid " 
+       "16r0FB6"    16rFFFF " invalid " 
+       "16r0FB7"    16rFFFF " invalid " 
+       "16r0FB8"    16rFFFF " invalid " 
+       "16r0FB9"    16rFFFF " invalid " 
+       "16r0FBA"    16rFFFF " invalid " 
+       "16r0FBB"    16rFFFF " invalid " 
+       "16r0FBC"    16rFFFF " invalid " 
+       "16r0FBD"    16rFFFF " invalid " 
+       "16r0FBE"    16rFFFF " invalid " 
+       "16r0FBF"    16rFFFF " invalid " 
+       "16r0FC0"    16rFFFF " invalid " 
+       "16r0FC1"    16rFFFF " invalid " 
+       "16r0FC2"    16rFFFF " invalid " 
+       "16r0FC3"    16rFFFF " invalid " 
+       "16r0FC4"    16rFFFF " invalid " 
+       "16r0FC5"    16rFFFF " invalid " 
+       "16r0FC6"    16rFFFF " invalid " 
+       "16r0FC7"    16rFFFF " invalid " 
+       "16r0FC8"    16rFFFF " invalid " 
+       "16r0FC9"    16rFFFF " invalid " 
+       "16r0FCA"    16rFFFF " invalid " 
+       "16r0FCB"    16rFFFF " invalid " 
+       "16r0FCC"    16rFFFF " invalid " 
+       "16r0FCD"    16rFFFF " invalid " 
+       "16r0FCE"    16rFFFF " invalid " 
+       "16r0FCF"    16rFFFF " invalid " 
+       "16r0FD0"    16rFFFF " invalid " 
+       "16r0FD1"    16rFFFF " invalid " 
+       "16r0FD2"    16rFFFF " invalid " 
+       "16r0FD3"    16rFFFF " invalid " 
+       "16r0FD4"    16rFFFF " invalid " 
+       "16r0FD5"    16rFFFF " invalid " 
+       "16r0FD6"    16rFFFF " invalid " 
+       "16r0FD7"    16rFFFF " invalid " 
+       "16r0FD8"    16rFFFF " invalid " 
+       "16r0FD9"    16rFFFF " invalid " 
+       "16r0FDA"    16rFFFF " invalid " 
+       "16r0FDB"    16rFFFF " invalid " 
+       "16r0FDC"    16rFFFF " invalid " 
+       "16r0FDD"    16rFFFF " invalid " 
+       "16r0FDE"    16rFFFF " invalid " 
+       "16r0FDF"    16rFFFF " invalid " 
+       "16r0FE0"    16rFFFF " invalid " 
+       "16r0FE1"    16rFFFF " invalid " 
+       "16r0FE2"    16rFFFF " invalid " 
+       "16r0FE3"    16rFFFF " invalid " 
+       "16r0FE4"    16rFFFF " invalid " 
+       "16r0FE5"    16rFFFF " invalid " 
+       "16r0FE6"    16rFFFF " invalid " 
+       "16r0FE7"    16rFFFF " invalid " 
+       "16r0FE8"    16rFFFF " invalid " 
+       "16r0FE9"    16rFFFF " invalid " 
+       "16r0FEA"    16rFFFF " invalid " 
+       "16r0FEB"    16rFFFF " invalid " 
+       "16r0FEC"    16rFFFF " invalid " 
+       "16r0FED"    16rFFFF " invalid " 
+       "16r0FEE"    16rFFFF " invalid " 
+       "16r0FEF"    16rFFFF " invalid " 
+       "16r0FF0"    16rFFFF " invalid " 
+       "16r0FF1"    16rFFFF " invalid " 
+       "16r0FF2"    16rFFFF " invalid " 
+       "16r0FF3"    16rFFFF " invalid " 
+       "16r0FF4"    16rFFFF " invalid " 
+       "16r0FF5"    16rFFFF " invalid " 
+       "16r0FF6"    16rFFFF " invalid " 
+       "16r0FF7"    16rFFFF " invalid " 
+       "16r0FF8"    16rFFFF " invalid " 
+       "16r0FF9"    16rFFFF " invalid " 
+       "16r0FFA"    16rFFFF " invalid " 
+       "16r0FFB"    16rFFFF " invalid " 
+       "16r0FFC"    16rFFFF " invalid " 
+       "16r0FFD"    16rFFFF " invalid " 
+       "16r0FFE"    16rFFFF " invalid " 
+       "16r0FFF"    16rFFFF " invalid " 
+       "16r1000"    16rFFFF " invalid " 
+       "16r1001"    16rFFFF " invalid " 
+       "16r1002"    16rFFFF " invalid " 
+       "16r1003"    16rFFFF " invalid " 
+       "16r1004"    16rFFFF " invalid " 
+       "16r1005"    16rFFFF " invalid " 
+       "16r1006"    16rFFFF " invalid " 
+       "16r1007"    16rFFFF " invalid " 
+       "16r1008"    16rFFFF " invalid " 
+       "16r1009"    16rFFFF " invalid " 
+       "16r100A"    16rFFFF " invalid " 
+       "16r100B"    16rFFFF " invalid " 
+       "16r100C"    16rFFFF " invalid " 
+       "16r100D"    16rFFFF " invalid " 
+       "16r100E"    16rFFFF " invalid " 
+       "16r100F"    16rFFFF " invalid " 
+       "16r1010"    16rFFFF " invalid " 
+       "16r1011"    16rFFFF " invalid " 
+       "16r1012"    16rFFFF " invalid " 
+       "16r1013"    16rFFFF " invalid " 
+       "16r1014"    16rFFFF " invalid " 
+       "16r1015"    16rFFFF " invalid " 
+       "16r1016"    16rFFFF " invalid " 
+       "16r1017"    16rFFFF " invalid " 
+       "16r1018"    16rFFFF " invalid " 
+       "16r1019"    16rFFFF " invalid " 
+       "16r101A"    16rFFFF " invalid " 
+       "16r101B"    16rFFFF " invalid " 
+       "16r101C"    16rFFFF " invalid " 
+       "16r101D"    16rFFFF " invalid " 
+       "16r101E"    16rFFFF " invalid " 
+       "16r101F"    16rFFFF " invalid " 
+       "16r1020"    16rFFFF " invalid " 
+       "16r1021"    16rFFFF " invalid " 
+       "16r1022"    16rFFFF " invalid " 
+       "16r1023"    16rFFFF " invalid " 
+       "16r1024"    16rFFFF " invalid " 
+       "16r1025"    16rFFFF " invalid " 
+       "16r1026"    16rFFFF " invalid " 
+       "16r1027"    16rFFFF " invalid " 
+       "16r1028"    16rFFFF " invalid " 
+       "16r1029"    16rFFFF " invalid " 
+       "16r102A"    16rFFFF " invalid " 
+       "16r102B"    16rFFFF " invalid " 
+       "16r102C"    16rFFFF " invalid " 
+       "16r102D"    16rFFFF " invalid " 
+       "16r102E"    16rFFFF " invalid " 
+       "16r102F"    16rFFFF " invalid " 
+       "16r1030"    16rFFFF " invalid " 
+       "16r1031"    16rFFFF " invalid " 
+       "16r1032"    16rFFFF " invalid " 
+       "16r1033"    16rFFFF " invalid " 
+       "16r1034"    16rFFFF " invalid " 
+       "16r1035"    16rFFFF " invalid " 
+       "16r1036"    16rFFFF " invalid " 
+       "16r1037"    16rFFFF " invalid " 
+       "16r1038"    16rFFFF " invalid " 
+       "16r1039"    16rFFFF " invalid " 
+       "16r103A"    16rFFFF " invalid " 
+       "16r103B"    16rFFFF " invalid " 
+       "16r103C"    16rFFFF " invalid " 
+       "16r103D"    16rFFFF " invalid " 
+       "16r103E"    16rFFFF " invalid " 
+       "16r103F"    16rFFFF " invalid " 
+       "16r1040"    16rFFFF " invalid " 
+       "16r1041"    16rFFFF " invalid " 
+       "16r1042"    16rFFFF " invalid " 
+       "16r1043"    16rFFFF " invalid " 
+       "16r1044"    16rFFFF " invalid " 
+       "16r1045"    16rFFFF " invalid " 
+       "16r1046"    16rFFFF " invalid " 
+       "16r1047"    16rFFFF " invalid " 
+       "16r1048"    16rFFFF " invalid " 
+       "16r1049"    16rFFFF " invalid " 
+       "16r104A"    16rFFFF " invalid " 
+       "16r104B"    16rFFFF " invalid " 
+       "16r104C"    16rFFFF " invalid " 
+       "16r104D"    16rFFFF " invalid " 
+       "16r104E"    16rFFFF " invalid " 
+       "16r104F"    16rFFFF " invalid " 
+       "16r1050"    16rFFFF " invalid " 
+       "16r1051"    16rFFFF " invalid " 
+       "16r1052"    16rFFFF " invalid " 
+       "16r1053"    16rFFFF " invalid " 
+       "16r1054"    16rFFFF " invalid " 
+       "16r1055"    16rFFFF " invalid " 
+       "16r1056"    16rFFFF " invalid " 
+       "16r1057"    16rFFFF " invalid " 
+       "16r1058"    16rFFFF " invalid " 
+       "16r1059"    16rFFFF " invalid " 
+       "16r105A"    16rFFFF " invalid " 
+       "16r105B"    16rFFFF " invalid " 
+       "16r105C"    16rFFFF " invalid " 
+       "16r105D"    16rFFFF " invalid " 
+       "16r105E"    16rFFFF " invalid " 
+       "16r105F"    16rFFFF " invalid " 
+       "16r1060"    16rFFFF " invalid " 
+       "16r1061"    16rFFFF " invalid " 
+       "16r1062"    16rFFFF " invalid " 
+       "16r1063"    16rFFFF " invalid " 
+       "16r1064"    16rFFFF " invalid " 
+       "16r1065"    16rFFFF " invalid " 
+       "16r1066"    16rFFFF " invalid " 
+       "16r1067"    16rFFFF " invalid " 
+       "16r1068"    16rFFFF " invalid " 
+       "16r1069"    16rFFFF " invalid " 
+       "16r106A"    16rFFFF " invalid " 
+       "16r106B"    16rFFFF " invalid " 
+       "16r106C"    16rFFFF " invalid " 
+       "16r106D"    16rFFFF " invalid " 
+       "16r106E"    16rFFFF " invalid " 
+       "16r106F"    16rFFFF " invalid " 
+       "16r1070"    16rFFFF " invalid " 
+       "16r1071"    16rFFFF " invalid " 
+       "16r1072"    16rFFFF " invalid " 
+       "16r1073"    16rFFFF " invalid " 
+       "16r1074"    16rFFFF " invalid " 
+       "16r1075"    16rFFFF " invalid " 
+       "16r1076"    16rFFFF " invalid " 
+       "16r1077"    16rFFFF " invalid " 
+       "16r1078"    16rFFFF " invalid " 
+       "16r1079"    16rFFFF " invalid " 
+       "16r107A"    16rFFFF " invalid " 
+       "16r107B"    16rFFFF " invalid " 
+       "16r107C"    16rFFFF " invalid " 
+       "16r107D"    16rFFFF " invalid " 
+       "16r107E"    16rFFFF " invalid " 
+       "16r107F"    16rFFFF " invalid " 
+       "16r1080"    16rFFFF " invalid " 
+       "16r1081"    16rFFFF " invalid " 
+       "16r1082"    16rFFFF " invalid " 
+       "16r1083"    16rFFFF " invalid " 
+       "16r1084"    16rFFFF " invalid " 
+       "16r1085"    16rFFFF " invalid " 
+       "16r1086"    16rFFFF " invalid " 
+       "16r1087"    16rFFFF " invalid " 
+       "16r1088"    16rFFFF " invalid " 
+       "16r1089"    16rFFFF " invalid " 
+       "16r108A"    16rFFFF " invalid " 
+       "16r108B"    16rFFFF " invalid " 
+       "16r108C"    16rFFFF " invalid " 
+       "16r108D"    16rFFFF " invalid " 
+       "16r108E"    16rFFFF " invalid " 
+       "16r108F"    16rFFFF " invalid " 
+       "16r1090"    16rFFFF " invalid " 
+       "16r1091"    16rFFFF " invalid " 
+       "16r1092"    16rFFFF " invalid " 
+       "16r1093"    16rFFFF " invalid " 
+       "16r1094"    16rFFFF " invalid " 
+       "16r1095"    16rFFFF " invalid " 
+       "16r1096"    16rFFFF " invalid " 
+       "16r1097"    16rFFFF " invalid " 
+       "16r1098"    16rFFFF " invalid " 
+       "16r1099"    16rFFFF " invalid " 
+       "16r109A"    16rFFFF " invalid " 
+       "16r109B"    16rFFFF " invalid " 
+       "16r109C"    16rFFFF " invalid " 
+       "16r109D"    16rFFFF " invalid " 
+       "16r109E"    16rFFFF " invalid " 
+       "16r109F"    16rFFFF " invalid " 
+       "16r10A0"    16rFFFF " invalid " 
+       "16r10A1"    16rFFFF " invalid " 
+       "16r10A2"    16rFFFF " invalid " 
+       "16r10A3"    16rFFFF " invalid " 
+       "16r10A4"    16rFFFF " invalid " 
+       "16r10A5"    16rFFFF " invalid " 
+       "16r10A6"    16rFFFF " invalid " 
+       "16r10A7"    16rFFFF " invalid " 
+       "16r10A8"    16rFFFF " invalid " 
+       "16r10A9"    16rFFFF " invalid " 
+       "16r10AA"    16rFFFF " invalid " 
+       "16r10AB"    16rFFFF " invalid " 
+       "16r10AC"    16rFFFF " invalid " 
+       "16r10AD"    16rFFFF " invalid " 
+       "16r10AE"    16rFFFF " invalid " 
+       "16r10AF"    16rFFFF " invalid " 
+       "16r10B0"    16rFFFF " invalid " 
+       "16r10B1"    16rFFFF " invalid " 
+       "16r10B2"    16rFFFF " invalid " 
+       "16r10B3"    16rFFFF " invalid " 
+       "16r10B4"    16rFFFF " invalid " 
+       "16r10B5"    16rFFFF " invalid " 
+       "16r10B6"    16rFFFF " invalid " 
+       "16r10B7"    16rFFFF " invalid " 
+       "16r10B8"    16rFFFF " invalid " 
+       "16r10B9"    16rFFFF " invalid " 
+       "16r10BA"    16rFFFF " invalid " 
+       "16r10BB"    16rFFFF " invalid " 
+       "16r10BC"    16rFFFF " invalid " 
+       "16r10BD"    16rFFFF " invalid " 
+       "16r10BE"    16rFFFF " invalid " 
+       "16r10BF"    16rFFFF " invalid " 
+       "16r10C0"    16rFFFF " invalid " 
+       "16r10C1"    16rFFFF " invalid " 
+       "16r10C2"    16rFFFF " invalid " 
+       "16r10C3"    16rFFFF " invalid " 
+       "16r10C4"    16rFFFF " invalid " 
+       "16r10C5"    16rFFFF " invalid " 
+       "16r10C6"    16rFFFF " invalid " 
+       "16r10C7"    16rFFFF " invalid " 
+       "16r10C8"    16rFFFF " invalid " 
+       "16r10C9"    16rFFFF " invalid " 
+       "16r10CA"    16rFFFF " invalid " 
+       "16r10CB"    16rFFFF " invalid " 
+       "16r10CC"    16rFFFF " invalid " 
+       "16r10CD"    16rFFFF " invalid " 
+       "16r10CE"    16rFFFF " invalid " 
+       "16r10CF"    16rFFFF " invalid " 
+       "16r10D0"    16rFFFF " invalid " 
+       "16r10D1"    16rFFFF " invalid " 
+       "16r10D2"    16rFFFF " invalid " 
+       "16r10D3"    16rFFFF " invalid " 
+       "16r10D4"    16rFFFF " invalid " 
+       "16r10D5"    16rFFFF " invalid " 
+       "16r10D6"    16rFFFF " invalid " 
+       "16r10D7"    16rFFFF " invalid " 
+       "16r10D8"    16rFFFF " invalid " 
+       "16r10D9"    16rFFFF " invalid " 
+       "16r10DA"    16rFFFF " invalid " 
+       "16r10DB"    16rFFFF " invalid " 
+       "16r10DC"    16rFFFF " invalid " 
+       "16r10DD"    16rFFFF " invalid " 
+       "16r10DE"    16rFFFF " invalid " 
+       "16r10DF"    16rFFFF " invalid " 
+       "16r10E0"    16rFFFF " invalid " 
+       "16r10E1"    16rFFFF " invalid " 
+       "16r10E2"    16rFFFF " invalid " 
+       "16r10E3"    16rFFFF " invalid " 
+       "16r10E4"    16rFFFF " invalid " 
+       "16r10E5"    16rFFFF " invalid " 
+       "16r10E6"    16rFFFF " invalid " 
+       "16r10E7"    16rFFFF " invalid " 
+       "16r10E8"    16rFFFF " invalid " 
+       "16r10E9"    16rFFFF " invalid " 
+       "16r10EA"    16rFFFF " invalid " 
+       "16r10EB"    16rFFFF " invalid " 
+       "16r10EC"    16rFFFF " invalid " 
+       "16r10ED"    16rFFFF " invalid " 
+       "16r10EE"    16rFFFF " invalid " 
+       "16r10EF"    16rFFFF " invalid " 
+       "16r10F0"    16rFFFF " invalid " 
+       "16r10F1"    16rFFFF " invalid " 
+       "16r10F2"    16rFFFF " invalid " 
+       "16r10F3"    16rFFFF " invalid " 
+       "16r10F4"    16rFFFF " invalid " 
+       "16r10F5"    16rFFFF " invalid " 
+       "16r10F6"    16rFFFF " invalid " 
+       "16r10F7"    16rFFFF " invalid " 
+       "16r10F8"    16rFFFF " invalid " 
+       "16r10F9"    16rFFFF " invalid " 
+       "16r10FA"    16rFFFF " invalid " 
+       "16r10FB"    16rFFFF " invalid " 
+       "16r10FC"    16rFFFF " invalid " 
+       "16r10FD"    16rFFFF " invalid " 
+       "16r10FE"    16rFFFF " invalid " 
+       "16r10FF"    16rFFFF " invalid " 
+       "16r1100"    16rFFFF " invalid " 
+       "16r1101"    16rFFFF " invalid " 
+       "16r1102"    16rFFFF " invalid " 
+       "16r1103"    16rFFFF " invalid " 
+       "16r1104"    16rFFFF " invalid " 
+       "16r1105"    16rFFFF " invalid " 
+       "16r1106"    16rFFFF " invalid " 
+       "16r1107"    16rFFFF " invalid " 
+       "16r1108"    16rFFFF " invalid " 
+       "16r1109"    16rFFFF " invalid " 
+       "16r110A"    16rFFFF " invalid " 
+       "16r110B"    16rFFFF " invalid " 
+       "16r110C"    16rFFFF " invalid " 
+       "16r110D"    16rFFFF " invalid " 
+       "16r110E"    16rFFFF " invalid " 
+       "16r110F"    16rFFFF " invalid " 
+       "16r1110"    16rFFFF " invalid " 
+       "16r1111"    16rFFFF " invalid " 
+       "16r1112"    16rFFFF " invalid " 
+       "16r1113"    16rFFFF " invalid " 
+       "16r1114"    16rFFFF " invalid " 
+       "16r1115"    16rFFFF " invalid " 
+       "16r1116"    16rFFFF " invalid " 
+       "16r1117"    16rFFFF " invalid " 
+       "16r1118"    16rFFFF " invalid " 
+       "16r1119"    16rFFFF " invalid " 
+       "16r111A"    16rFFFF " invalid " 
+       "16r111B"    16rFFFF " invalid " 
+       "16r111C"    16rFFFF " invalid " 
+       "16r111D"    16rFFFF " invalid " 
+       "16r111E"    16rFFFF " invalid " 
+       "16r111F"    16rFFFF " invalid " 
+       "16r1120"    16rFFFF " invalid " 
+       "16r1121"    16rFFFF " invalid " 
+       "16r1122"    16rFFFF " invalid " 
+       "16r1123"    16rFFFF " invalid " 
+       "16r1124"    16rFFFF " invalid " 
+       "16r1125"    16rFFFF " invalid " 
+       "16r1126"    16rFFFF " invalid " 
+       "16r1127"    16rFFFF " invalid " 
+       "16r1128"    16rFFFF " invalid " 
+       "16r1129"    16rFFFF " invalid " 
+       "16r112A"    16rFFFF " invalid " 
+       "16r112B"    16rFFFF " invalid " 
+       "16r112C"    16rFFFF " invalid " 
+       "16r112D"    16rFFFF " invalid " 
+       "16r112E"    16rFFFF " invalid " 
+       "16r112F"    16rFFFF " invalid " 
+       "16r1130"    16rFFFF " invalid " 
+       "16r1131"    16rFFFF " invalid " 
+       "16r1132"    16rFFFF " invalid " 
+       "16r1133"    16rFFFF " invalid " 
+       "16r1134"    16rFFFF " invalid " 
+       "16r1135"    16rFFFF " invalid " 
+       "16r1136"    16rFFFF " invalid " 
+       "16r1137"    16rFFFF " invalid " 
+       "16r1138"    16rFFFF " invalid " 
+       "16r1139"    16rFFFF " invalid " 
+       "16r113A"    16rFFFF " invalid " 
+       "16r113B"    16rFFFF " invalid " 
+       "16r113C"    16rFFFF " invalid " 
+       "16r113D"    16rFFFF " invalid " 
+       "16r113E"    16rFFFF " invalid " 
+       "16r113F"    16rFFFF " invalid " 
+       "16r1140"    16rFFFF " invalid " 
+       "16r1141"    16rFFFF " invalid " 
+       "16r1142"    16rFFFF " invalid " 
+       "16r1143"    16rFFFF " invalid " 
+       "16r1144"    16rFFFF " invalid " 
+       "16r1145"    16rFFFF " invalid " 
+       "16r1146"    16rFFFF " invalid " 
+       "16r1147"    16rFFFF " invalid " 
+       "16r1148"    16rFFFF " invalid " 
+       "16r1149"    16rFFFF " invalid " 
+       "16r114A"    16rFFFF " invalid " 
+       "16r114B"    16rFFFF " invalid " 
+       "16r114C"    16rFFFF " invalid " 
+       "16r114D"    16rFFFF " invalid " 
+       "16r114E"    16rFFFF " invalid " 
+       "16r114F"    16rFFFF " invalid " 
+       "16r1150"    16rFFFF " invalid " 
+       "16r1151"    16rFFFF " invalid " 
+       "16r1152"    16rFFFF " invalid " 
+       "16r1153"    16rFFFF " invalid " 
+       "16r1154"    16rFFFF " invalid " 
+       "16r1155"    16rFFFF " invalid " 
+       "16r1156"    16rFFFF " invalid " 
+       "16r1157"    16rFFFF " invalid " 
+       "16r1158"    16rFFFF " invalid " 
+       "16r1159"    16rFFFF " invalid " 
+       "16r115A"    16rFFFF " invalid " 
+       "16r115B"    16rFFFF " invalid " 
+       "16r115C"    16rFFFF " invalid " 
+       "16r115D"    16rFFFF " invalid " 
+       "16r115E"    16rFFFF " invalid " 
+       "16r115F"    16rFFFF " invalid " 
+       "16r1160"    16rFFFF " invalid " 
+       "16r1161"    16rFFFF " invalid " 
+       "16r1162"    16rFFFF " invalid " 
+       "16r1163"    16rFFFF " invalid " 
+       "16r1164"    16rFFFF " invalid " 
+       "16r1165"    16rFFFF " invalid " 
+       "16r1166"    16rFFFF " invalid " 
+       "16r1167"    16rFFFF " invalid " 
+       "16r1168"    16rFFFF " invalid " 
+       "16r1169"    16rFFFF " invalid " 
+       "16r116A"    16rFFFF " invalid " 
+       "16r116B"    16rFFFF " invalid " 
+       "16r116C"    16rFFFF " invalid " 
+       "16r116D"    16rFFFF " invalid " 
+       "16r116E"    16rFFFF " invalid " 
+       "16r116F"    16rFFFF " invalid " 
+       "16r1170"    16rFFFF " invalid " 
+       "16r1171"    16rFFFF " invalid " 
+       "16r1172"    16rFFFF " invalid " 
+       "16r1173"    16rFFFF " invalid " 
+       "16r1174"    16rFFFF " invalid " 
+       "16r1175"    16rFFFF " invalid " 
+       "16r1176"    16rFFFF " invalid " 
+       "16r1177"    16rFFFF " invalid " 
+       "16r1178"    16rFFFF " invalid " 
+       "16r1179"    16rFFFF " invalid " 
+       "16r117A"    16rFFFF " invalid " 
+       "16r117B"    16rFFFF " invalid " 
+       "16r117C"    16rFFFF " invalid " 
+       "16r117D"    16rFFFF " invalid " 
+       "16r117E"    16rFFFF " invalid " 
+       "16r117F"    16rFFFF " invalid " 
+       "16r1180"    16rFFFF " invalid " 
+       "16r1181"    16rFFFF " invalid " 
+       "16r1182"    16rFFFF " invalid " 
+       "16r1183"    16rFFFF " invalid " 
+       "16r1184"    16rFFFF " invalid " 
+       "16r1185"    16rFFFF " invalid " 
+       "16r1186"    16rFFFF " invalid " 
+       "16r1187"    16rFFFF " invalid " 
+       "16r1188"    16rFFFF " invalid " 
+       "16r1189"    16rFFFF " invalid " 
+       "16r118A"    16rFFFF " invalid " 
+       "16r118B"    16rFFFF " invalid " 
+       "16r118C"    16rFFFF " invalid " 
+       "16r118D"    16rFFFF " invalid " 
+       "16r118E"    16rFFFF " invalid " 
+       "16r118F"    16rFFFF " invalid " 
+       "16r1190"    16rFFFF " invalid " 
+       "16r1191"    16rFFFF " invalid " 
+       "16r1192"    16rFFFF " invalid " 
+       "16r1193"    16rFFFF " invalid " 
+       "16r1194"    16rFFFF " invalid " 
+       "16r1195"    16rFFFF " invalid " 
+       "16r1196"    16rFFFF " invalid " 
+       "16r1197"    16rFFFF " invalid " 
+       "16r1198"    16rFFFF " invalid " 
+       "16r1199"    16rFFFF " invalid " 
+       "16r119A"    16rFFFF " invalid " 
+       "16r119B"    16rFFFF " invalid " 
+       "16r119C"    16rFFFF " invalid " 
+       "16r119D"    16rFFFF " invalid " 
+       "16r119E"    16rFFFF " invalid " 
+       "16r119F"    16rFFFF " invalid " 
+       "16r11A0"    16rFFFF " invalid " 
+       "16r11A1"    16rFFFF " invalid " 
+       "16r11A2"    16rFFFF " invalid " 
+       "16r11A3"    16rFFFF " invalid " 
+       "16r11A4"    16rFFFF " invalid " 
+       "16r11A5"    16rFFFF " invalid " 
+       "16r11A6"    16rFFFF " invalid " 
+       "16r11A7"    16rFFFF " invalid " 
+       "16r11A8"    16rFFFF " invalid " 
+       "16r11A9"    16rFFFF " invalid " 
+       "16r11AA"    16rFFFF " invalid " 
+       "16r11AB"    16rFFFF " invalid " 
+       "16r11AC"    16rFFFF " invalid " 
+       "16r11AD"    16rFFFF " invalid " 
+       "16r11AE"    16rFFFF " invalid " 
+       "16r11AF"    16rFFFF " invalid " 
+       "16r11B0"    16rFFFF " invalid " 
+       "16r11B1"    16rFFFF " invalid " 
+       "16r11B2"    16rFFFF " invalid " 
+       "16r11B3"    16rFFFF " invalid " 
+       "16r11B4"    16rFFFF " invalid " 
+       "16r11B5"    16rFFFF " invalid " 
+       "16r11B6"    16rFFFF " invalid " 
+       "16r11B7"    16rFFFF " invalid " 
+       "16r11B8"    16rFFFF " invalid " 
+       "16r11B9"    16rFFFF " invalid " 
+       "16r11BA"    16rFFFF " invalid " 
+       "16r11BB"    16rFFFF " invalid " 
+       "16r11BC"    16rFFFF " invalid " 
+       "16r11BD"    16rFFFF " invalid " 
+       "16r11BE"    16rFFFF " invalid " 
+       "16r11BF"    16rFFFF " invalid " 
+       "16r11C0"    16rFFFF " invalid " 
+       "16r11C1"    16rFFFF " invalid " 
+       "16r11C2"    16rFFFF " invalid " 
+       "16r11C3"    16rFFFF " invalid " 
+       "16r11C4"    16rFFFF " invalid " 
+       "16r11C5"    16rFFFF " invalid " 
+       "16r11C6"    16rFFFF " invalid " 
+       "16r11C7"    16rFFFF " invalid " 
+       "16r11C8"    16rFFFF " invalid " 
+       "16r11C9"    16rFFFF " invalid " 
+       "16r11CA"    16rFFFF " invalid " 
+       "16r11CB"    16rFFFF " invalid " 
+       "16r11CC"    16rFFFF " invalid " 
+       "16r11CD"    16rFFFF " invalid " 
+       "16r11CE"    16rFFFF " invalid " 
+       "16r11CF"    16rFFFF " invalid " 
+       "16r11D0"    16rFFFF " invalid " 
+       "16r11D1"    16rFFFF " invalid " 
+       "16r11D2"    16rFFFF " invalid " 
+       "16r11D3"    16rFFFF " invalid " 
+       "16r11D4"    16rFFFF " invalid " 
+       "16r11D5"    16rFFFF " invalid " 
+       "16r11D6"    16rFFFF " invalid " 
+       "16r11D7"    16rFFFF " invalid " 
+       "16r11D8"    16rFFFF " invalid " 
+       "16r11D9"    16rFFFF " invalid " 
+       "16r11DA"    16rFFFF " invalid " 
+       "16r11DB"    16rFFFF " invalid " 
+       "16r11DC"    16rFFFF " invalid " 
+       "16r11DD"    16rFFFF " invalid " 
+       "16r11DE"    16rFFFF " invalid " 
+       "16r11DF"    16rFFFF " invalid " 
+       "16r11E0"    16rFFFF " invalid " 
+       "16r11E1"    16rFFFF " invalid " 
+       "16r11E2"    16rFFFF " invalid " 
+       "16r11E3"    16rFFFF " invalid " 
+       "16r11E4"    16rFFFF " invalid " 
+       "16r11E5"    16rFFFF " invalid " 
+       "16r11E6"    16rFFFF " invalid " 
+       "16r11E7"    16rFFFF " invalid " 
+       "16r11E8"    16rFFFF " invalid " 
+       "16r11E9"    16rFFFF " invalid " 
+       "16r11EA"    16rFFFF " invalid " 
+       "16r11EB"    16rFFFF " invalid " 
+       "16r11EC"    16rFFFF " invalid " 
+       "16r11ED"    16rFFFF " invalid " 
+       "16r11EE"    16rFFFF " invalid " 
+       "16r11EF"    16rFFFF " invalid " 
+       "16r11F0"    16rFFFF " invalid " 
+       "16r11F1"    16rFFFF " invalid " 
+       "16r11F2"    16rFFFF " invalid " 
+       "16r11F3"    16rFFFF " invalid " 
+       "16r11F4"    16rFFFF " invalid " 
+       "16r11F5"    16rFFFF " invalid " 
+       "16r11F6"    16rFFFF " invalid " 
+       "16r11F7"    16rFFFF " invalid " 
+       "16r11F8"    16rFFFF " invalid " 
+       "16r11F9"    16rFFFF " invalid " 
+       "16r11FA"    16rFFFF " invalid " 
+       "16r11FB"    16rFFFF " invalid " 
+       "16r11FC"    16rFFFF " invalid " 
+       "16r11FD"    16rFFFF " invalid " 
+       "16r11FE"    16rFFFF " invalid " 
+       "16r11FF"    16rFFFF " invalid " 
+       "16r1200"    16rFFFF " invalid " 
+       "16r1201"    16rFFFF " invalid " 
+       "16r1202"    16rFFFF " invalid " 
+       "16r1203"    16rFFFF " invalid " 
+       "16r1204"    16rFFFF " invalid " 
+       "16r1205"    16rFFFF " invalid " 
+       "16r1206"    16rFFFF " invalid " 
+       "16r1207"    16rFFFF " invalid " 
+       "16r1208"    16rFFFF " invalid " 
+       "16r1209"    16rFFFF " invalid " 
+       "16r120A"    16rFFFF " invalid " 
+       "16r120B"    16rFFFF " invalid " 
+       "16r120C"    16rFFFF " invalid " 
+       "16r120D"    16rFFFF " invalid " 
+       "16r120E"    16rFFFF " invalid " 
+       "16r120F"    16rFFFF " invalid " 
+       "16r1210"    16rFFFF " invalid " 
+       "16r1211"    16rFFFF " invalid " 
+       "16r1212"    16rFFFF " invalid " 
+       "16r1213"    16rFFFF " invalid " 
+       "16r1214"    16rFFFF " invalid " 
+       "16r1215"    16rFFFF " invalid " 
+       "16r1216"    16rFFFF " invalid " 
+       "16r1217"    16rFFFF " invalid " 
+       "16r1218"    16rFFFF " invalid " 
+       "16r1219"    16rFFFF " invalid " 
+       "16r121A"    16rFFFF " invalid " 
+       "16r121B"    16rFFFF " invalid " 
+       "16r121C"    16rFFFF " invalid " 
+       "16r121D"    16rFFFF " invalid " 
+       "16r121E"    16rFFFF " invalid " 
+       "16r121F"    16rFFFF " invalid " 
+       "16r1220"    16rFFFF " invalid " 
+       "16r1221"    16rFFFF " invalid " 
+       "16r1222"    16rFFFF " invalid " 
+       "16r1223"    16rFFFF " invalid " 
+       "16r1224"    16rFFFF " invalid " 
+       "16r1225"    16rFFFF " invalid " 
+       "16r1226"    16rFFFF " invalid " 
+       "16r1227"    16rFFFF " invalid " 
+       "16r1228"    16rFFFF " invalid " 
+       "16r1229"    16rFFFF " invalid " 
+       "16r122A"    16rFFFF " invalid " 
+       "16r122B"    16rFFFF " invalid " 
+       "16r122C"    16rFFFF " invalid " 
+       "16r122D"    16rFFFF " invalid " 
+       "16r122E"    16rFFFF " invalid " 
+       "16r122F"    16rFFFF " invalid " 
+       "16r1230"    16rFFFF " invalid " 
+       "16r1231"    16rFFFF " invalid " 
+       "16r1232"    16rFFFF " invalid " 
+       "16r1233"    16rFFFF " invalid " 
+       "16r1234"    16rFFFF " invalid " 
+       "16r1235"    16rFFFF " invalid " 
+       "16r1236"    16rFFFF " invalid " 
+       "16r1237"    16rFFFF " invalid " 
+       "16r1238"    16rFFFF " invalid " 
+       "16r1239"    16rFFFF " invalid " 
+       "16r123A"    16rFFFF " invalid " 
+       "16r123B"    16rFFFF " invalid " 
+       "16r123C"    16rFFFF " invalid " 
+       "16r123D"    16rFFFF " invalid " 
+       "16r123E"    16rFFFF " invalid " 
+       "16r123F"    16rFFFF " invalid " 
+       "16r1240"    16rFFFF " invalid " 
+       "16r1241"    16rFFFF " invalid " 
+       "16r1242"    16rFFFF " invalid " 
+       "16r1243"    16rFFFF " invalid " 
+       "16r1244"    16rFFFF " invalid " 
+       "16r1245"    16rFFFF " invalid " 
+       "16r1246"    16rFFFF " invalid " 
+       "16r1247"    16rFFFF " invalid " 
+       "16r1248"    16rFFFF " invalid " 
+       "16r1249"    16rFFFF " invalid " 
+       "16r124A"    16rFFFF " invalid " 
+       "16r124B"    16rFFFF " invalid " 
+       "16r124C"    16rFFFF " invalid " 
+       "16r124D"    16rFFFF " invalid " 
+       "16r124E"    16rFFFF " invalid " 
+       "16r124F"    16rFFFF " invalid " 
+       "16r1250"    16rFFFF " invalid " 
+       "16r1251"    16rFFFF " invalid " 
+       "16r1252"    16rFFFF " invalid " 
+       "16r1253"    16rFFFF " invalid " 
+       "16r1254"    16rFFFF " invalid " 
+       "16r1255"    16rFFFF " invalid " 
+       "16r1256"    16rFFFF " invalid " 
+       "16r1257"    16rFFFF " invalid " 
+       "16r1258"    16rFFFF " invalid " 
+       "16r1259"    16rFFFF " invalid " 
+       "16r125A"    16rFFFF " invalid " 
+       "16r125B"    16rFFFF " invalid " 
+       "16r125C"    16rFFFF " invalid " 
+       "16r125D"    16rFFFF " invalid " 
+       "16r125E"    16rFFFF " invalid " 
+       "16r125F"    16rFFFF " invalid " 
+       "16r1260"    16rFFFF " invalid " 
+       "16r1261"    16rFFFF " invalid " 
+       "16r1262"    16rFFFF " invalid " 
+       "16r1263"    16rFFFF " invalid " 
+       "16r1264"    16rFFFF " invalid " 
+       "16r1265"    16rFFFF " invalid " 
+       "16r1266"    16rFFFF " invalid " 
+       "16r1267"    16rFFFF " invalid " 
+       "16r1268"    16rFFFF " invalid " 
+       "16r1269"    16rFFFF " invalid " 
+       "16r126A"    16rFFFF " invalid " 
+       "16r126B"    16rFFFF " invalid " 
+       "16r126C"    16rFFFF " invalid " 
+       "16r126D"    16rFFFF " invalid " 
+       "16r126E"    16rFFFF " invalid " 
+       "16r126F"    16rFFFF " invalid " 
+       "16r1270"    16rFFFF " invalid " 
+       "16r1271"    16rFFFF " invalid " 
+       "16r1272"    16rFFFF " invalid " 
+       "16r1273"    16rFFFF " invalid " 
+       "16r1274"    16rFFFF " invalid " 
+       "16r1275"    16rFFFF " invalid " 
+       "16r1276"    16rFFFF " invalid " 
+       "16r1277"    16rFFFF " invalid " 
+       "16r1278"    16rFFFF " invalid " 
+       "16r1279"    16rFFFF " invalid " 
+       "16r127A"    16rFFFF " invalid " 
+       "16r127B"    16rFFFF " invalid " 
+       "16r127C"    16rFFFF " invalid " 
+       "16r127D"    16rFFFF " invalid " 
+       "16r127E"    16rFFFF " invalid " 
+       "16r127F"    16rFFFF " invalid " 
+       "16r1280"    16rFFFF " invalid " 
+       "16r1281"    16rFFFF " invalid " 
+       "16r1282"    16rFFFF " invalid " 
+       "16r1283"    16rFFFF " invalid " 
+       "16r1284"    16rFFFF " invalid " 
+       "16r1285"    16rFFFF " invalid " 
+       "16r1286"    16rFFFF " invalid " 
+       "16r1287"    16rFFFF " invalid " 
+       "16r1288"    16rFFFF " invalid " 
+       "16r1289"    16rFFFF " invalid " 
+       "16r128A"    16rFFFF " invalid " 
+       "16r128B"    16rFFFF " invalid " 
+       "16r128C"    16rFFFF " invalid " 
+       "16r128D"    16rFFFF " invalid " 
+       "16r128E"    16rFFFF " invalid " 
+       "16r128F"    16rFFFF " invalid " 
+       "16r1290"    16rFFFF " invalid " 
+       "16r1291"    16rFFFF " invalid " 
+       "16r1292"    16rFFFF " invalid " 
+       "16r1293"    16rFFFF " invalid " 
+       "16r1294"    16rFFFF " invalid " 
+       "16r1295"    16rFFFF " invalid " 
+       "16r1296"    16rFFFF " invalid " 
+       "16r1297"    16rFFFF " invalid " 
+       "16r1298"    16rFFFF " invalid " 
+       "16r1299"    16rFFFF " invalid " 
+       "16r129A"    16rFFFF " invalid " 
+       "16r129B"    16rFFFF " invalid " 
+       "16r129C"    16rFFFF " invalid " 
+       "16r129D"    16rFFFF " invalid " 
+       "16r129E"    16rFFFF " invalid " 
+       "16r129F"    16rFFFF " invalid " 
+       "16r12A0"    16rFFFF " invalid " 
+       "16r12A1"    16rFFFF " invalid " 
+       "16r12A2"    16rFFFF " invalid " 
+       "16r12A3"    16rFFFF " invalid " 
+       "16r12A4"    16rFFFF " invalid " 
+       "16r12A5"    16rFFFF " invalid " 
+       "16r12A6"    16rFFFF " invalid " 
+       "16r12A7"    16rFFFF " invalid " 
+       "16r12A8"    16rFFFF " invalid " 
+       "16r12A9"    16rFFFF " invalid " 
+       "16r12AA"    16rFFFF " invalid " 
+       "16r12AB"    16rFFFF " invalid " 
+       "16r12AC"    16rFFFF " invalid " 
+       "16r12AD"    16rFFFF " invalid " 
+       "16r12AE"    16rFFFF " invalid " 
+       "16r12AF"    16rFFFF " invalid " 
+       "16r12B0"    16rFFFF " invalid " 
+       "16r12B1"    16rFFFF " invalid " 
+       "16r12B2"    16rFFFF " invalid " 
+       "16r12B3"    16rFFFF " invalid " 
+       "16r12B4"    16rFFFF " invalid " 
+       "16r12B5"    16rFFFF " invalid " 
+       "16r12B6"    16rFFFF " invalid " 
+       "16r12B7"    16rFFFF " invalid " 
+       "16r12B8"    16rFFFF " invalid " 
+       "16r12B9"    16rFFFF " invalid " 
+       "16r12BA"    16rFFFF " invalid " 
+       "16r12BB"    16rFFFF " invalid " 
+       "16r12BC"    16rFFFF " invalid " 
+       "16r12BD"    16rFFFF " invalid " 
+       "16r12BE"    16rFFFF " invalid " 
+       "16r12BF"    16rFFFF " invalid " 
+       "16r12C0"    16rFFFF " invalid " 
+       "16r12C1"    16rFFFF " invalid " 
+       "16r12C2"    16rFFFF " invalid " 
+       "16r12C3"    16rFFFF " invalid " 
+       "16r12C4"    16rFFFF " invalid " 
+       "16r12C5"    16rFFFF " invalid " 
+       "16r12C6"    16rFFFF " invalid " 
+       "16r12C7"    16rFFFF " invalid " 
+       "16r12C8"    16rFFFF " invalid " 
+       "16r12C9"    16rFFFF " invalid " 
+       "16r12CA"    16rFFFF " invalid " 
+       "16r12CB"    16rFFFF " invalid " 
+       "16r12CC"    16rFFFF " invalid " 
+       "16r12CD"    16rFFFF " invalid " 
+       "16r12CE"    16rFFFF " invalid " 
+       "16r12CF"    16rFFFF " invalid " 
+       "16r12D0"    16rFFFF " invalid " 
+       "16r12D1"    16rFFFF " invalid " 
+       "16r12D2"    16rFFFF " invalid " 
+       "16r12D3"    16rFFFF " invalid " 
+       "16r12D4"    16rFFFF " invalid " 
+       "16r12D5"    16rFFFF " invalid " 
+       "16r12D6"    16rFFFF " invalid " 
+       "16r12D7"    16rFFFF " invalid " 
+       "16r12D8"    16rFFFF " invalid " 
+       "16r12D9"    16rFFFF " invalid " 
+       "16r12DA"    16rFFFF " invalid " 
+       "16r12DB"    16rFFFF " invalid " 
+       "16r12DC"    16rFFFF " invalid " 
+       "16r12DD"    16rFFFF " invalid " 
+       "16r12DE"    16rFFFF " invalid " 
+       "16r12DF"    16rFFFF " invalid " 
+       "16r12E0"    16rFFFF " invalid " 
+       "16r12E1"    16rFFFF " invalid " 
+       "16r12E2"    16rFFFF " invalid " 
+       "16r12E3"    16rFFFF " invalid " 
+       "16r12E4"    16rFFFF " invalid " 
+       "16r12E5"    16rFFFF " invalid " 
+       "16r12E6"    16rFFFF " invalid " 
+       "16r12E7"    16rFFFF " invalid " 
+       "16r12E8"    16rFFFF " invalid " 
+       "16r12E9"    16rFFFF " invalid " 
+       "16r12EA"    16rFFFF " invalid " 
+       "16r12EB"    16rFFFF " invalid " 
+       "16r12EC"    16rFFFF " invalid " 
+       "16r12ED"    16rFFFF " invalid " 
+       "16r12EE"    16rFFFF " invalid " 
+       "16r12EF"    16rFFFF " invalid " 
+       "16r12F0"    16rFFFF " invalid " 
+       "16r12F1"    16rFFFF " invalid " 
+       "16r12F2"    16rFFFF " invalid " 
+       "16r12F3"    16rFFFF " invalid " 
+       "16r12F4"    16rFFFF " invalid " 
+       "16r12F5"    16rFFFF " invalid " 
+       "16r12F6"    16rFFFF " invalid " 
+       "16r12F7"    16rFFFF " invalid " 
+       "16r12F8"    16rFFFF " invalid " 
+       "16r12F9"    16rFFFF " invalid " 
+       "16r12FA"    16rFFFF " invalid " 
+       "16r12FB"    16rFFFF " invalid " 
+       "16r12FC"    16rFFFF " invalid " 
+       "16r12FD"    16rFFFF " invalid " 
+       "16r12FE"    16rFFFF " invalid " 
+       "16r12FF"    16rFFFF " invalid " 
+       "16r1300"    16rFFFF " invalid " 
+       "16r1301"    16rFFFF " invalid " 
+       "16r1302"    16rFFFF " invalid " 
+       "16r1303"    16rFFFF " invalid " 
+       "16r1304"    16rFFFF " invalid " 
+       "16r1305"    16rFFFF " invalid " 
+       "16r1306"    16rFFFF " invalid " 
+       "16r1307"    16rFFFF " invalid " 
+       "16r1308"    16rFFFF " invalid " 
+       "16r1309"    16rFFFF " invalid " 
+       "16r130A"    16rFFFF " invalid " 
+       "16r130B"    16rFFFF " invalid " 
+       "16r130C"    16rFFFF " invalid " 
+       "16r130D"    16rFFFF " invalid " 
+       "16r130E"    16rFFFF " invalid " 
+       "16r130F"    16rFFFF " invalid " 
+       "16r1310"    16rFFFF " invalid " 
+       "16r1311"    16rFFFF " invalid " 
+       "16r1312"    16rFFFF " invalid " 
+       "16r1313"    16rFFFF " invalid " 
+       "16r1314"    16rFFFF " invalid " 
+       "16r1315"    16rFFFF " invalid " 
+       "16r1316"    16rFFFF " invalid " 
+       "16r1317"    16rFFFF " invalid " 
+       "16r1318"    16rFFFF " invalid " 
+       "16r1319"    16rFFFF " invalid " 
+       "16r131A"    16rFFFF " invalid " 
+       "16r131B"    16rFFFF " invalid " 
+       "16r131C"    16rFFFF " invalid " 
+       "16r131D"    16rFFFF " invalid " 
+       "16r131E"    16rFFFF " invalid " 
+       "16r131F"    16rFFFF " invalid " 
+       "16r1320"    16rFFFF " invalid " 
+       "16r1321"    16rFFFF " invalid " 
+       "16r1322"    16rFFFF " invalid " 
+       "16r1323"    16rFFFF " invalid " 
+       "16r1324"    16rFFFF " invalid " 
+       "16r1325"    16rFFFF " invalid " 
+       "16r1326"    16rFFFF " invalid " 
+       "16r1327"    16rFFFF " invalid " 
+       "16r1328"    16rFFFF " invalid " 
+       "16r1329"    16rFFFF " invalid " 
+       "16r132A"    16rFFFF " invalid " 
+       "16r132B"    16rFFFF " invalid " 
+       "16r132C"    16rFFFF " invalid " 
+       "16r132D"    16rFFFF " invalid " 
+       "16r132E"    16rFFFF " invalid " 
+       "16r132F"    16rFFFF " invalid " 
+       "16r1330"    16rFFFF " invalid " 
+       "16r1331"    16rFFFF " invalid " 
+       "16r1332"    16rFFFF " invalid " 
+       "16r1333"    16rFFFF " invalid " 
+       "16r1334"    16rFFFF " invalid " 
+       "16r1335"    16rFFFF " invalid " 
+       "16r1336"    16rFFFF " invalid " 
+       "16r1337"    16rFFFF " invalid " 
+       "16r1338"    16rFFFF " invalid " 
+       "16r1339"    16rFFFF " invalid " 
+       "16r133A"    16rFFFF " invalid " 
+       "16r133B"    16rFFFF " invalid " 
+       "16r133C"    16rFFFF " invalid " 
+       "16r133D"    16rFFFF " invalid " 
+       "16r133E"    16rFFFF " invalid " 
+       "16r133F"    16rFFFF " invalid " 
+       "16r1340"    16rFFFF " invalid " 
+       "16r1341"    16rFFFF " invalid " 
+       "16r1342"    16rFFFF " invalid " 
+       "16r1343"    16rFFFF " invalid " 
+       "16r1344"    16rFFFF " invalid " 
+       "16r1345"    16rFFFF " invalid " 
+       "16r1346"    16rFFFF " invalid " 
+       "16r1347"    16rFFFF " invalid " 
+       "16r1348"    16rFFFF " invalid " 
+       "16r1349"    16rFFFF " invalid " 
+       "16r134A"    16rFFFF " invalid " 
+       "16r134B"    16rFFFF " invalid " 
+       "16r134C"    16rFFFF " invalid " 
+       "16r134D"    16rFFFF " invalid " 
+       "16r134E"    16rFFFF " invalid " 
+       "16r134F"    16rFFFF " invalid " 
+       "16r1350"    16rFFFF " invalid " 
+       "16r1351"    16rFFFF " invalid " 
+       "16r1352"    16rFFFF " invalid " 
+       "16r1353"    16rFFFF " invalid " 
+       "16r1354"    16rFFFF " invalid " 
+       "16r1355"    16rFFFF " invalid " 
+       "16r1356"    16rFFFF " invalid " 
+       "16r1357"    16rFFFF " invalid " 
+       "16r1358"    16rFFFF " invalid " 
+       "16r1359"    16rFFFF " invalid " 
+       "16r135A"    16rFFFF " invalid " 
+       "16r135B"    16rFFFF " invalid " 
+       "16r135C"    16rFFFF " invalid " 
+       "16r135D"    16rFFFF " invalid " 
+       "16r135E"    16rFFFF " invalid " 
+       "16r135F"    16rFFFF " invalid " 
+       "16r1360"    16rFFFF " invalid " 
+       "16r1361"    16rFFFF " invalid " 
+       "16r1362"    16rFFFF " invalid " 
+       "16r1363"    16rFFFF " invalid " 
+       "16r1364"    16rFFFF " invalid " 
+       "16r1365"    16rFFFF " invalid " 
+       "16r1366"    16rFFFF " invalid " 
+       "16r1367"    16rFFFF " invalid " 
+       "16r1368"    16rFFFF " invalid " 
+       "16r1369"    16rFFFF " invalid " 
+       "16r136A"    16rFFFF " invalid " 
+       "16r136B"    16rFFFF " invalid " 
+       "16r136C"    16rFFFF " invalid " 
+       "16r136D"    16rFFFF " invalid " 
+       "16r136E"    16rFFFF " invalid " 
+       "16r136F"    16rFFFF " invalid " 
+       "16r1370"    16rFFFF " invalid " 
+       "16r1371"    16rFFFF " invalid " 
+       "16r1372"    16rFFFF " invalid " 
+       "16r1373"    16rFFFF " invalid " 
+       "16r1374"    16rFFFF " invalid " 
+       "16r1375"    16rFFFF " invalid " 
+       "16r1376"    16rFFFF " invalid " 
+       "16r1377"    16rFFFF " invalid " 
+       "16r1378"    16rFFFF " invalid " 
+       "16r1379"    16rFFFF " invalid " 
+       "16r137A"    16rFFFF " invalid " 
+       "16r137B"    16rFFFF " invalid " 
+       "16r137C"    16rFFFF " invalid " 
+       "16r137D"    16rFFFF " invalid " 
+       "16r137E"    16rFFFF " invalid " 
+       "16r137F"    16rFFFF " invalid " 
+       "16r1380"    16rFFFF " invalid " 
+       "16r1381"    16rFFFF " invalid " 
+       "16r1382"    16rFFFF " invalid " 
+       "16r1383"    16rFFFF " invalid " 
+       "16r1384"    16rFFFF " invalid " 
+       "16r1385"    16rFFFF " invalid " 
+       "16r1386"    16rFFFF " invalid " 
+       "16r1387"    16rFFFF " invalid " 
+       "16r1388"    16rFFFF " invalid " 
+       "16r1389"    16rFFFF " invalid " 
+       "16r138A"    16rFFFF " invalid " 
+       "16r138B"    16rFFFF " invalid " 
+       "16r138C"    16rFFFF " invalid " 
+       "16r138D"    16rFFFF " invalid " 
+       "16r138E"    16rFFFF " invalid " 
+       "16r138F"    16rFFFF " invalid " 
+       "16r1390"    16rFFFF " invalid " 
+       "16r1391"    16rFFFF " invalid " 
+       "16r1392"    16rFFFF " invalid " 
+       "16r1393"    16rFFFF " invalid " 
+       "16r1394"    16rFFFF " invalid " 
+       "16r1395"    16rFFFF " invalid " 
+       "16r1396"    16rFFFF " invalid " 
+       "16r1397"    16rFFFF " invalid " 
+       "16r1398"    16rFFFF " invalid " 
+       "16r1399"    16rFFFF " invalid " 
+       "16r139A"    16rFFFF " invalid " 
+       "16r139B"    16rFFFF " invalid " 
+       "16r139C"    16rFFFF " invalid " 
+       "16r139D"    16rFFFF " invalid " 
+       "16r139E"    16rFFFF " invalid " 
+       "16r139F"    16rFFFF " invalid " 
+       "16r13A0"    16rFFFF " invalid " 
+       "16r13A1"    16rFFFF " invalid " 
+       "16r13A2"    16rFFFF " invalid " 
+       "16r13A3"    16rFFFF " invalid " 
+       "16r13A4"    16rFFFF " invalid " 
+       "16r13A5"    16rFFFF " invalid " 
+       "16r13A6"    16rFFFF " invalid " 
+       "16r13A7"    16rFFFF " invalid " 
+       "16r13A8"    16rFFFF " invalid " 
+       "16r13A9"    16rFFFF " invalid " 
+       "16r13AA"    16rFFFF " invalid " 
+       "16r13AB"    16rFFFF " invalid " 
+       "16r13AC"    16rFFFF " invalid " 
+       "16r13AD"    16rFFFF " invalid " 
+       "16r13AE"    16rFFFF " invalid " 
+       "16r13AF"    16rFFFF " invalid " 
+       "16r13B0"    16rFFFF " invalid " 
+       "16r13B1"    16rFFFF " invalid " 
+       "16r13B2"    16rFFFF " invalid " 
+       "16r13B3"    16rFFFF " invalid " 
+       "16r13B4"    16rFFFF " invalid " 
+       "16r13B5"    16rFFFF " invalid " 
+       "16r13B6"    16rFFFF " invalid " 
+       "16r13B7"    16rFFFF " invalid " 
+       "16r13B8"    16rFFFF " invalid " 
+       "16r13B9"    16rFFFF " invalid " 
+       "16r13BA"    16rFFFF " invalid " 
+       "16r13BB"    16rFFFF " invalid " 
+       "16r13BC"    16rFFFF " invalid " 
+       "16r13BD"    16rFFFF " invalid " 
+       "16r13BE"    16rFFFF " invalid " 
+       "16r13BF"    16rFFFF " invalid " 
+       "16r13C0"    16rFFFF " invalid " 
+       "16r13C1"    16rFFFF " invalid " 
+       "16r13C2"    16rFFFF " invalid " 
+       "16r13C3"    16rFFFF " invalid " 
+       "16r13C4"    16rFFFF " invalid " 
+       "16r13C5"    16rFFFF " invalid " 
+       "16r13C6"    16rFFFF " invalid " 
+       "16r13C7"    16rFFFF " invalid " 
+       "16r13C8"    16rFFFF " invalid " 
+       "16r13C9"    16rFFFF " invalid " 
+       "16r13CA"    16rFFFF " invalid " 
+       "16r13CB"    16rFFFF " invalid " 
+       "16r13CC"    16rFFFF " invalid " 
+       "16r13CD"    16rFFFF " invalid " 
+       "16r13CE"    16rFFFF " invalid " 
+       "16r13CF"    16rFFFF " invalid " 
+       "16r13D0"    16rFFFF " invalid " 
+       "16r13D1"    16rFFFF " invalid " 
+       "16r13D2"    16rFFFF " invalid " 
+       "16r13D3"    16rFFFF " invalid " 
+       "16r13D4"    16rFFFF " invalid " 
+       "16r13D5"    16rFFFF " invalid " 
+       "16r13D6"    16rFFFF " invalid " 
+       "16r13D7"    16rFFFF " invalid " 
+       "16r13D8"    16rFFFF " invalid " 
+       "16r13D9"    16rFFFF " invalid " 
+       "16r13DA"    16rFFFF " invalid " 
+       "16r13DB"    16rFFFF " invalid " 
+       "16r13DC"    16rFFFF " invalid " 
+       "16r13DD"    16rFFFF " invalid " 
+       "16r13DE"    16rFFFF " invalid " 
+       "16r13DF"    16rFFFF " invalid " 
+       "16r13E0"    16rFFFF " invalid " 
+       "16r13E1"    16rFFFF " invalid " 
+       "16r13E2"    16rFFFF " invalid " 
+       "16r13E3"    16rFFFF " invalid " 
+       "16r13E4"    16rFFFF " invalid " 
+       "16r13E5"    16rFFFF " invalid " 
+       "16r13E6"    16rFFFF " invalid " 
+       "16r13E7"    16rFFFF " invalid " 
+       "16r13E8"    16rFFFF " invalid " 
+       "16r13E9"    16rFFFF " invalid " 
+       "16r13EA"    16rFFFF " invalid " 
+       "16r13EB"    16rFFFF " invalid " 
+       "16r13EC"    16rFFFF " invalid " 
+       "16r13ED"    16rFFFF " invalid " 
+       "16r13EE"    16rFFFF " invalid " 
+       "16r13EF"    16rFFFF " invalid " 
+       "16r13F0"    16rFFFF " invalid " 
+       "16r13F1"    16rFFFF " invalid " 
+       "16r13F2"    16rFFFF " invalid " 
+       "16r13F3"    16rFFFF " invalid " 
+       "16r13F4"    16rFFFF " invalid " 
+       "16r13F5"    16rFFFF " invalid " 
+       "16r13F6"    16rFFFF " invalid " 
+       "16r13F7"    16rFFFF " invalid " 
+       "16r13F8"    16rFFFF " invalid " 
+       "16r13F9"    16rFFFF " invalid " 
+       "16r13FA"    16rFFFF " invalid " 
+       "16r13FB"    16rFFFF " invalid " 
+       "16r13FC"    16rFFFF " invalid " 
+       "16r13FD"    16rFFFF " invalid " 
+       "16r13FE"    16rFFFF " invalid " 
+       "16r13FF"    16rFFFF " invalid " 
+       "16r1400"    16rFFFF " invalid " 
+       "16r1401"    16rFFFF " invalid " 
+       "16r1402"    16rFFFF " invalid " 
+       "16r1403"    16rFFFF " invalid " 
+       "16r1404"    16rFFFF " invalid " 
+       "16r1405"    16rFFFF " invalid " 
+       "16r1406"    16rFFFF " invalid " 
+       "16r1407"    16rFFFF " invalid " 
+       "16r1408"    16rFFFF " invalid " 
+       "16r1409"    16rFFFF " invalid " 
+       "16r140A"    16rFFFF " invalid " 
+       "16r140B"    16rFFFF " invalid " 
+       "16r140C"    16rFFFF " invalid " 
+       "16r140D"    16rFFFF " invalid " 
+       "16r140E"    16rFFFF " invalid " 
+       "16r140F"    16rFFFF " invalid " 
+       "16r1410"    16rFFFF " invalid " 
+       "16r1411"    16rFFFF " invalid " 
+       "16r1412"    16rFFFF " invalid " 
+       "16r1413"    16rFFFF " invalid " 
+       "16r1414"    16rFFFF " invalid " 
+       "16r1415"    16rFFFF " invalid " 
+       "16r1416"    16rFFFF " invalid " 
+       "16r1417"    16rFFFF " invalid " 
+       "16r1418"    16rFFFF " invalid " 
+       "16r1419"    16rFFFF " invalid " 
+       "16r141A"    16rFFFF " invalid " 
+       "16r141B"    16rFFFF " invalid " 
+       "16r141C"    16rFFFF " invalid " 
+       "16r141D"    16rFFFF " invalid " 
+       "16r141E"    16rFFFF " invalid " 
+       "16r141F"    16rFFFF " invalid " 
+       "16r1420"    16rFFFF " invalid " 
+       "16r1421"    16rFFFF " invalid " 
+       "16r1422"    16rFFFF " invalid " 
+       "16r1423"    16rFFFF " invalid " 
+       "16r1424"    16rFFFF " invalid " 
+       "16r1425"    16rFFFF " invalid " 
+       "16r1426"    16rFFFF " invalid " 
+       "16r1427"    16rFFFF " invalid " 
+       "16r1428"    16rFFFF " invalid " 
+       "16r1429"    16rFFFF " invalid " 
+       "16r142A"    16rFFFF " invalid " 
+       "16r142B"    16rFFFF " invalid " 
+       "16r142C"    16rFFFF " invalid " 
+       "16r142D"    16rFFFF " invalid " 
+       "16r142E"    16rFFFF " invalid " 
+       "16r142F"    16rFFFF " invalid " 
+       "16r1430"    16rFFFF " invalid " 
+       "16r1431"    16rFFFF " invalid " 
+       "16r1432"    16rFFFF " invalid " 
+       "16r1433"    16rFFFF " invalid " 
+       "16r1434"    16rFFFF " invalid " 
+       "16r1435"    16rFFFF " invalid " 
+       "16r1436"    16rFFFF " invalid " 
+       "16r1437"    16rFFFF " invalid " 
+       "16r1438"    16rFFFF " invalid " 
+       "16r1439"    16rFFFF " invalid " 
+       "16r143A"    16rFFFF " invalid " 
+       "16r143B"    16rFFFF " invalid " 
+       "16r143C"    16rFFFF " invalid " 
+       "16r143D"    16rFFFF " invalid " 
+       "16r143E"    16rFFFF " invalid " 
+       "16r143F"    16rFFFF " invalid " 
+       "16r1440"    16rFFFF " invalid " 
+       "16r1441"    16rFFFF " invalid " 
+       "16r1442"    16rFFFF " invalid " 
+       "16r1443"    16rFFFF " invalid " 
+       "16r1444"    16rFFFF " invalid " 
+       "16r1445"    16rFFFF " invalid " 
+       "16r1446"    16rFFFF " invalid " 
+       "16r1447"    16rFFFF " invalid " 
+       "16r1448"    16rFFFF " invalid " 
+       "16r1449"    16rFFFF " invalid " 
+       "16r144A"    16rFFFF " invalid " 
+       "16r144B"    16rFFFF " invalid " 
+       "16r144C"    16rFFFF " invalid " 
+       "16r144D"    16rFFFF " invalid " 
+       "16r144E"    16rFFFF " invalid " 
+       "16r144F"    16rFFFF " invalid " 
+       "16r1450"    16rFFFF " invalid " 
+       "16r1451"    16rFFFF " invalid " 
+       "16r1452"    16rFFFF " invalid " 
+       "16r1453"    16rFFFF " invalid " 
+       "16r1454"    16rFFFF " invalid " 
+       "16r1455"    16rFFFF " invalid " 
+       "16r1456"    16rFFFF " invalid " 
+       "16r1457"    16rFFFF " invalid " 
+       "16r1458"    16rFFFF " invalid " 
+       "16r1459"    16rFFFF " invalid " 
+       "16r145A"    16rFFFF " invalid " 
+       "16r145B"    16rFFFF " invalid " 
+       "16r145C"    16rFFFF " invalid " 
+       "16r145D"    16rFFFF " invalid " 
+       "16r145E"    16rFFFF " invalid " 
+       "16r145F"    16rFFFF " invalid " 
+       "16r1460"    16rFFFF " invalid " 
+       "16r1461"    16rFFFF " invalid " 
+       "16r1462"    16rFFFF " invalid " 
+       "16r1463"    16rFFFF " invalid " 
+       "16r1464"    16rFFFF " invalid " 
+       "16r1465"    16rFFFF " invalid " 
+       "16r1466"    16rFFFF " invalid " 
+       "16r1467"    16rFFFF " invalid " 
+       "16r1468"    16rFFFF " invalid " 
+       "16r1469"    16rFFFF " invalid " 
+       "16r146A"    16rFFFF " invalid " 
+       "16r146B"    16rFFFF " invalid " 
+       "16r146C"    16rFFFF " invalid " 
+       "16r146D"    16rFFFF " invalid " 
+       "16r146E"    16rFFFF " invalid " 
+       "16r146F"    16rFFFF " invalid " 
+       "16r1470"    16rFFFF " invalid " 
+       "16r1471"    16rFFFF " invalid " 
+       "16r1472"    16rFFFF " invalid " 
+       "16r1473"    16rFFFF " invalid " 
+       "16r1474"    16rFFFF " invalid " 
+       "16r1475"    16rFFFF " invalid " 
+       "16r1476"    16rFFFF " invalid " 
+       "16r1477"    16rFFFF " invalid " 
+       "16r1478"    16rFFFF " invalid " 
+       "16r1479"    16rFFFF " invalid " 
+       "16r147A"    16rFFFF " invalid " 
+       "16r147B"    16rFFFF " invalid " 
+       "16r147C"    16rFFFF " invalid " 
+       "16r147D"    16rFFFF " invalid " 
+       "16r147E"    16rFFFF " invalid " 
+       "16r147F"    16rFFFF " invalid " 
+       "16r1480"    16rFFFF " invalid " 
+       "16r1481"    16rFFFF " invalid " 
+       "16r1482"    16rFFFF " invalid " 
+       "16r1483"    16rFFFF " invalid " 
+       "16r1484"    16rFFFF " invalid " 
+       "16r1485"    16rFFFF " invalid " 
+       "16r1486"    16rFFFF " invalid " 
+       "16r1487"    16rFFFF " invalid " 
+       "16r1488"    16rFFFF " invalid " 
+       "16r1489"    16rFFFF " invalid " 
+       "16r148A"    16rFFFF " invalid " 
+       "16r148B"    16rFFFF " invalid " 
+       "16r148C"    16rFFFF " invalid " 
+       "16r148D"    16rFFFF " invalid " 
+       "16r148E"    16rFFFF " invalid " 
+       "16r148F"    16rFFFF " invalid " 
+       "16r1490"    16rFFFF " invalid " 
+       "16r1491"    16rFFFF " invalid " 
+       "16r1492"    16rFFFF " invalid " 
+       "16r1493"    16rFFFF " invalid " 
+       "16r1494"    16rFFFF " invalid " 
+       "16r1495"    16rFFFF " invalid " 
+       "16r1496"    16rFFFF " invalid " 
+       "16r1497"    16rFFFF " invalid " 
+       "16r1498"    16rFFFF " invalid " 
+       "16r1499"    16rFFFF " invalid " 
+       "16r149A"    16rFFFF " invalid " 
+       "16r149B"    16rFFFF " invalid " 
+       "16r149C"    16rFFFF " invalid " 
+       "16r149D"    16rFFFF " invalid " 
+       "16r149E"    16rFFFF " invalid " 
+       "16r149F"    16rFFFF " invalid " 
+       "16r14A0"    16rFFFF " invalid " 
+       "16r14A1"    16rFFFF " invalid " 
+       "16r14A2"    16rFFFF " invalid " 
+       "16r14A3"    16rFFFF " invalid " 
+       "16r14A4"    16rFFFF " invalid " 
+       "16r14A5"    16rFFFF " invalid " 
+       "16r14A6"    16rFFFF " invalid " 
+       "16r14A7"    16rFFFF " invalid " 
+       "16r14A8"    16rFFFF " invalid " 
+       "16r14A9"    16rFFFF " invalid " 
+       "16r14AA"    16rFFFF " invalid " 
+       "16r14AB"    16rFFFF " invalid " 
+       "16r14AC"    16rFFFF " invalid " 
+       "16r14AD"    16rFFFF " invalid " 
+       "16r14AE"    16rFFFF " invalid " 
+       "16r14AF"    16rFFFF " invalid " 
+       "16r14B0"    16rFFFF " invalid " 
+       "16r14B1"    16rFFFF " invalid " 
+       "16r14B2"    16rFFFF " invalid " 
+       "16r14B3"    16rFFFF " invalid " 
+       "16r14B4"    16rFFFF " invalid " 
+       "16r14B5"    16rFFFF " invalid " 
+       "16r14B6"    16rFFFF " invalid " 
+       "16r14B7"    16rFFFF " invalid " 
+       "16r14B8"    16rFFFF " invalid " 
+       "16r14B9"    16rFFFF " invalid " 
+       "16r14BA"    16rFFFF " invalid " 
+       "16r14BB"    16rFFFF " invalid " 
+       "16r14BC"    16rFFFF " invalid " 
+       "16r14BD"    16rFFFF " invalid " 
+       "16r14BE"    16rFFFF " invalid " 
+       "16r14BF"    16rFFFF " invalid " 
+       "16r14C0"    16rFFFF " invalid " 
+       "16r14C1"    16rFFFF " invalid " 
+       "16r14C2"    16rFFFF " invalid " 
+       "16r14C3"    16rFFFF " invalid " 
+       "16r14C4"    16rFFFF " invalid " 
+       "16r14C5"    16rFFFF " invalid " 
+       "16r14C6"    16rFFFF " invalid " 
+       "16r14C7"    16rFFFF " invalid " 
+       "16r14C8"    16rFFFF " invalid " 
+       "16r14C9"    16rFFFF " invalid " 
+       "16r14CA"    16rFFFF " invalid " 
+       "16r14CB"    16rFFFF " invalid " 
+       "16r14CC"    16rFFFF " invalid " 
+       "16r14CD"    16rFFFF " invalid " 
+       "16r14CE"    16rFFFF " invalid " 
+       "16r14CF"    16rFFFF " invalid " 
+       "16r14D0"    16rFFFF " invalid " 
+       "16r14D1"    16rFFFF " invalid " 
+       "16r14D2"    16rFFFF " invalid " 
+       "16r14D3"    16rFFFF " invalid " 
+       "16r14D4"    16rFFFF " invalid " 
+       "16r14D5"    16rFFFF " invalid " 
+       "16r14D6"    16rFFFF " invalid " 
+       "16r14D7"    16rFFFF " invalid " 
+       "16r14D8"    16rFFFF " invalid " 
+       "16r14D9"    16rFFFF " invalid " 
+       "16r14DA"    16rFFFF " invalid " 
+       "16r14DB"    16rFFFF " invalid " 
+       "16r14DC"    16rFFFF " invalid " 
+       "16r14DD"    16rFFFF " invalid " 
+       "16r14DE"    16rFFFF " invalid " 
+       "16r14DF"    16rFFFF " invalid " 
+       "16r14E0"    16rFFFF " invalid " 
+       "16r14E1"    16rFFFF " invalid " 
+       "16r14E2"    16rFFFF " invalid " 
+       "16r14E3"    16rFFFF " invalid " 
+       "16r14E4"    16rFFFF " invalid " 
+       "16r14E5"    16rFFFF " invalid " 
+       "16r14E6"    16rFFFF " invalid " 
+       "16r14E7"    16rFFFF " invalid " 
+       "16r14E8"    16rFFFF " invalid " 
+       "16r14E9"    16rFFFF " invalid " 
+       "16r14EA"    16rFFFF " invalid " 
+       "16r14EB"    16rFFFF " invalid " 
+       "16r14EC"    16rFFFF " invalid " 
+       "16r14ED"    16rFFFF " invalid " 
+       "16r14EE"    16rFFFF " invalid " 
+       "16r14EF"    16rFFFF " invalid " 
+       "16r14F0"    16rFFFF " invalid " 
+       "16r14F1"    16rFFFF " invalid " 
+       "16r14F2"    16rFFFF " invalid " 
+       "16r14F3"    16rFFFF " invalid " 
+       "16r14F4"    16rFFFF " invalid " 
+       "16r14F5"    16rFFFF " invalid " 
+       "16r14F6"    16rFFFF " invalid " 
+       "16r14F7"    16rFFFF " invalid " 
+       "16r14F8"    16rFFFF " invalid " 
+       "16r14F9"    16rFFFF " invalid " 
+       "16r14FA"    16rFFFF " invalid " 
+       "16r14FB"    16rFFFF " invalid " 
+       "16r14FC"    16rFFFF " invalid " 
+       "16r14FD"    16rFFFF " invalid " 
+       "16r14FE"    16rFFFF " invalid " 
+       "16r14FF"    16rFFFF " invalid " 
+       "16r1500"    16rFFFF " invalid " 
+       "16r1501"    16rFFFF " invalid " 
+       "16r1502"    16rFFFF " invalid " 
+       "16r1503"    16rFFFF " invalid " 
+       "16r1504"    16rFFFF " invalid " 
+       "16r1505"    16rFFFF " invalid " 
+       "16r1506"    16rFFFF " invalid " 
+       "16r1507"    16rFFFF " invalid " 
+       "16r1508"    16rFFFF " invalid " 
+       "16r1509"    16rFFFF " invalid " 
+       "16r150A"    16rFFFF " invalid " 
+       "16r150B"    16rFFFF " invalid " 
+       "16r150C"    16rFFFF " invalid " 
+       "16r150D"    16rFFFF " invalid " 
+       "16r150E"    16rFFFF " invalid " 
+       "16r150F"    16rFFFF " invalid " 
+       "16r1510"    16rFFFF " invalid " 
+       "16r1511"    16rFFFF " invalid " 
+       "16r1512"    16rFFFF " invalid " 
+       "16r1513"    16rFFFF " invalid " 
+       "16r1514"    16rFFFF " invalid " 
+       "16r1515"    16rFFFF " invalid " 
+       "16r1516"    16rFFFF " invalid " 
+       "16r1517"    16rFFFF " invalid " 
+       "16r1518"    16rFFFF " invalid " 
+       "16r1519"    16rFFFF " invalid " 
+       "16r151A"    16rFFFF " invalid " 
+       "16r151B"    16rFFFF " invalid " 
+       "16r151C"    16rFFFF " invalid " 
+       "16r151D"    16rFFFF " invalid " 
+       "16r151E"    16rFFFF " invalid " 
+       "16r151F"    16rFFFF " invalid " 
+       "16r1520"    16rFFFF " invalid " 
+       "16r1521"    16rFFFF " invalid " 
+       "16r1522"    16rFFFF " invalid " 
+       "16r1523"    16rFFFF " invalid " 
+       "16r1524"    16rFFFF " invalid " 
+       "16r1525"    16rFFFF " invalid " 
+       "16r1526"    16rFFFF " invalid " 
+       "16r1527"    16rFFFF " invalid " 
+       "16r1528"    16rFFFF " invalid " 
+       "16r1529"    16rFFFF " invalid " 
+       "16r152A"    16rFFFF " invalid " 
+       "16r152B"    16rFFFF " invalid " 
+       "16r152C"    16rFFFF " invalid " 
+       "16r152D"    16rFFFF " invalid " 
+       "16r152E"    16rFFFF " invalid " 
+       "16r152F"    16rFFFF " invalid " 
+       "16r1530"    16rFFFF " invalid " 
+       "16r1531"    16rFFFF " invalid " 
+       "16r1532"    16rFFFF " invalid " 
+       "16r1533"    16rFFFF " invalid " 
+       "16r1534"    16rFFFF " invalid " 
+       "16r1535"    16rFFFF " invalid " 
+       "16r1536"    16rFFFF " invalid " 
+       "16r1537"    16rFFFF " invalid " 
+       "16r1538"    16rFFFF " invalid " 
+       "16r1539"    16rFFFF " invalid " 
+       "16r153A"    16rFFFF " invalid " 
+       "16r153B"    16rFFFF " invalid " 
+       "16r153C"    16rFFFF " invalid " 
+       "16r153D"    16rFFFF " invalid " 
+       "16r153E"    16rFFFF " invalid " 
+       "16r153F"    16rFFFF " invalid " 
+       "16r1540"    16rFFFF " invalid " 
+       "16r1541"    16rFFFF " invalid " 
+       "16r1542"    16rFFFF " invalid " 
+       "16r1543"    16rFFFF " invalid " 
+       "16r1544"    16rFFFF " invalid " 
+       "16r1545"    16rFFFF " invalid " 
+       "16r1546"    16rFFFF " invalid " 
+       "16r1547"    16rFFFF " invalid " 
+       "16r1548"    16rFFFF " invalid " 
+       "16r1549"    16rFFFF " invalid " 
+       "16r154A"    16rFFFF " invalid " 
+       "16r154B"    16rFFFF " invalid " 
+       "16r154C"    16rFFFF " invalid " 
+       "16r154D"    16rFFFF " invalid " 
+       "16r154E"    16rFFFF " invalid " 
+       "16r154F"    16rFFFF " invalid " 
+       "16r1550"    16rFFFF " invalid " 
+       "16r1551"    16rFFFF " invalid " 
+       "16r1552"    16rFFFF " invalid " 
+       "16r1553"    16rFFFF " invalid " 
+       "16r1554"    16rFFFF " invalid " 
+       "16r1555"    16rFFFF " invalid " 
+       "16r1556"    16rFFFF " invalid " 
+       "16r1557"    16rFFFF " invalid " 
+       "16r1558"    16rFFFF " invalid " 
+       "16r1559"    16rFFFF " invalid " 
+       "16r155A"    16rFFFF " invalid " 
+       "16r155B"    16rFFFF " invalid " 
+       "16r155C"    16rFFFF " invalid " 
+       "16r155D"    16rFFFF " invalid " 
+       "16r155E"    16rFFFF " invalid " 
+       "16r155F"    16rFFFF " invalid " 
+       "16r1560"    16rFFFF " invalid " 
+       "16r1561"    16rFFFF " invalid " 
+       "16r1562"    16rFFFF " invalid " 
+       "16r1563"    16rFFFF " invalid " 
+       "16r1564"    16rFFFF " invalid " 
+       "16r1565"    16rFFFF " invalid " 
+       "16r1566"    16rFFFF " invalid " 
+       "16r1567"    16rFFFF " invalid " 
+       "16r1568"    16rFFFF " invalid " 
+       "16r1569"    16rFFFF " invalid " 
+       "16r156A"    16rFFFF " invalid " 
+       "16r156B"    16rFFFF " invalid " 
+       "16r156C"    16rFFFF " invalid " 
+       "16r156D"    16rFFFF " invalid " 
+       "16r156E"    16rFFFF " invalid " 
+       "16r156F"    16rFFFF " invalid " 
+       "16r1570"    16rFFFF " invalid " 
+       "16r1571"    16rFFFF " invalid " 
+       "16r1572"    16rFFFF " invalid " 
+       "16r1573"    16rFFFF " invalid " 
+       "16r1574"    16rFFFF " invalid " 
+       "16r1575"    16rFFFF " invalid " 
+       "16r1576"    16rFFFF " invalid " 
+       "16r1577"    16rFFFF " invalid " 
+       "16r1578"    16rFFFF " invalid " 
+       "16r1579"    16rFFFF " invalid " 
+       "16r157A"    16rFFFF " invalid " 
+       "16r157B"    16rFFFF " invalid " 
+       "16r157C"    16rFFFF " invalid " 
+       "16r157D"    16rFFFF " invalid " 
+       "16r157E"    16rFFFF " invalid " 
+       "16r157F"    16rFFFF " invalid " 
+       "16r1580"    16rFFFF " invalid " 
+       "16r1581"    16rFFFF " invalid " 
+       "16r1582"    16rFFFF " invalid " 
+       "16r1583"    16rFFFF " invalid " 
+       "16r1584"    16rFFFF " invalid " 
+       "16r1585"    16rFFFF " invalid " 
+       "16r1586"    16rFFFF " invalid " 
+       "16r1587"    16rFFFF " invalid " 
+       "16r1588"    16rFFFF " invalid " 
+       "16r1589"    16rFFFF " invalid " 
+       "16r158A"    16rFFFF " invalid " 
+       "16r158B"    16rFFFF " invalid " 
+       "16r158C"    16rFFFF " invalid " 
+       "16r158D"    16rFFFF " invalid " 
+       "16r158E"    16rFFFF " invalid " 
+       "16r158F"    16rFFFF " invalid " 
+       "16r1590"    16rFFFF " invalid " 
+       "16r1591"    16rFFFF " invalid " 
+       "16r1592"    16rFFFF " invalid " 
+       "16r1593"    16rFFFF " invalid " 
+       "16r1594"    16rFFFF " invalid " 
+       "16r1595"    16rFFFF " invalid " 
+       "16r1596"    16rFFFF " invalid " 
+       "16r1597"    16rFFFF " invalid " 
+       "16r1598"    16rFFFF " invalid " 
+       "16r1599"    16rFFFF " invalid " 
+       "16r159A"    16rFFFF " invalid " 
+       "16r159B"    16rFFFF " invalid " 
+       "16r159C"    16rFFFF " invalid " 
+       "16r159D"    16rFFFF " invalid " 
+       "16r159E"    16rFFFF " invalid " 
+       "16r159F"    16rFFFF " invalid " 
+       "16r15A0"    16rFFFF " invalid " 
+       "16r15A1"    16rFFFF " invalid " 
+       "16r15A2"    16rFFFF " invalid " 
+       "16r15A3"    16rFFFF " invalid " 
+       "16r15A4"    16rFFFF " invalid " 
+       "16r15A5"    16rFFFF " invalid " 
+       "16r15A6"    16rFFFF " invalid " 
+       "16r15A7"    16rFFFF " invalid " 
+       "16r15A8"    16rFFFF " invalid " 
+       "16r15A9"    16rFFFF " invalid " 
+       "16r15AA"    16rFFFF " invalid " 
+       "16r15AB"    16rFFFF " invalid " 
+       "16r15AC"    16rFFFF " invalid " 
+       "16r15AD"    16rFFFF " invalid " 
+       "16r15AE"    16rFFFF " invalid " 
+       "16r15AF"    16rFFFF " invalid " 
+       "16r15B0"    16rFFFF " invalid " 
+       "16r15B1"    16rFFFF " invalid " 
+       "16r15B2"    16rFFFF " invalid " 
+       "16r15B3"    16rFFFF " invalid " 
+       "16r15B4"    16rFFFF " invalid " 
+       "16r15B5"    16rFFFF " invalid " 
+       "16r15B6"    16rFFFF " invalid " 
+       "16r15B7"    16rFFFF " invalid " 
+       "16r15B8"    16rFFFF " invalid " 
+       "16r15B9"    16rFFFF " invalid " 
+       "16r15BA"    16rFFFF " invalid " 
+       "16r15BB"    16rFFFF " invalid " 
+       "16r15BC"    16rFFFF " invalid " 
+       "16r15BD"    16rFFFF " invalid " 
+       "16r15BE"    16rFFFF " invalid " 
+       "16r15BF"    16rFFFF " invalid " 
+       "16r15C0"    16rFFFF " invalid " 
+       "16r15C1"    16rFFFF " invalid " 
+       "16r15C2"    16rFFFF " invalid " 
+       "16r15C3"    16rFFFF " invalid " 
+       "16r15C4"    16rFFFF " invalid " 
+       "16r15C5"    16rFFFF " invalid " 
+       "16r15C6"    16rFFFF " invalid " 
+       "16r15C7"    16rFFFF " invalid " 
+       "16r15C8"    16rFFFF " invalid " 
+       "16r15C9"    16rFFFF " invalid " 
+       "16r15CA"    16rFFFF " invalid " 
+       "16r15CB"    16rFFFF " invalid " 
+       "16r15CC"    16rFFFF " invalid " 
+       "16r15CD"    16rFFFF " invalid " 
+       "16r15CE"    16rFFFF " invalid " 
+       "16r15CF"    16rFFFF " invalid " 
+       "16r15D0"    16rFFFF " invalid " 
+       "16r15D1"    16rFFFF " invalid " 
+       "16r15D2"    16rFFFF " invalid " 
+       "16r15D3"    16rFFFF " invalid " 
+       "16r15D4"    16rFFFF " invalid " 
+       "16r15D5"    16rFFFF " invalid " 
+       "16r15D6"    16rFFFF " invalid " 
+       "16r15D7"    16rFFFF " invalid " 
+       "16r15D8"    16rFFFF " invalid " 
+       "16r15D9"    16rFFFF " invalid " 
+       "16r15DA"    16rFFFF " invalid " 
+       "16r15DB"    16rFFFF " invalid " 
+       "16r15DC"    16rFFFF " invalid " 
+       "16r15DD"    16rFFFF " invalid " 
+       "16r15DE"    16rFFFF " invalid " 
+       "16r15DF"    16rFFFF " invalid " 
+       "16r15E0"    16rFFFF " invalid " 
+       "16r15E1"    16rFFFF " invalid " 
+       "16r15E2"    16rFFFF " invalid " 
+       "16r15E3"    16rFFFF " invalid " 
+       "16r15E4"    16rFFFF " invalid " 
+       "16r15E5"    16rFFFF " invalid " 
+       "16r15E6"    16rFFFF " invalid " 
+       "16r15E7"    16rFFFF " invalid " 
+       "16r15E8"    16rFFFF " invalid " 
+       "16r15E9"    16rFFFF " invalid " 
+       "16r15EA"    16rFFFF " invalid " 
+       "16r15EB"    16rFFFF " invalid " 
+       "16r15EC"    16rFFFF " invalid " 
+       "16r15ED"    16rFFFF " invalid " 
+       "16r15EE"    16rFFFF " invalid " 
+       "16r15EF"    16rFFFF " invalid " 
+       "16r15F0"    16rFFFF " invalid " 
+       "16r15F1"    16rFFFF " invalid " 
+       "16r15F2"    16rFFFF " invalid " 
+       "16r15F3"    16rFFFF " invalid " 
+       "16r15F4"    16rFFFF " invalid " 
+       "16r15F5"    16rFFFF " invalid " 
+       "16r15F6"    16rFFFF " invalid " 
+       "16r15F7"    16rFFFF " invalid " 
+       "16r15F8"    16rFFFF " invalid " 
+       "16r15F9"    16rFFFF " invalid " 
+       "16r15FA"    16rFFFF " invalid " 
+       "16r15FB"    16rFFFF " invalid " 
+       "16r15FC"    16rFFFF " invalid " 
+       "16r15FD"    16rFFFF " invalid " 
+       "16r15FE"    16rFFFF " invalid " 
+       "16r15FF"    16rFFFF " invalid " 
+       "16r1600"    16rFFFF " invalid " 
+       "16r1601"    16rFFFF " invalid " 
+       "16r1602"    16rFFFF " invalid " 
+       "16r1603"    16rFFFF " invalid " 
+       "16r1604"    16rFFFF " invalid " 
+       "16r1605"    16rFFFF " invalid " 
+       "16r1606"    16rFFFF " invalid " 
+       "16r1607"    16rFFFF " invalid " 
+       "16r1608"    16rFFFF " invalid " 
+       "16r1609"    16rFFFF " invalid " 
+       "16r160A"    16rFFFF " invalid " 
+       "16r160B"    16rFFFF " invalid " 
+       "16r160C"    16rFFFF " invalid " 
+       "16r160D"    16rFFFF " invalid " 
+       "16r160E"    16rFFFF " invalid " 
+       "16r160F"    16rFFFF " invalid " 
+       "16r1610"    16rFFFF " invalid " 
+       "16r1611"    16rFFFF " invalid " 
+       "16r1612"    16rFFFF " invalid " 
+       "16r1613"    16rFFFF " invalid " 
+       "16r1614"    16rFFFF " invalid " 
+       "16r1615"    16rFFFF " invalid " 
+       "16r1616"    16rFFFF " invalid " 
+       "16r1617"    16rFFFF " invalid " 
+       "16r1618"    16rFFFF " invalid " 
+       "16r1619"    16rFFFF " invalid " 
+       "16r161A"    16rFFFF " invalid " 
+       "16r161B"    16rFFFF " invalid " 
+       "16r161C"    16rFFFF " invalid " 
+       "16r161D"    16rFFFF " invalid " 
+       "16r161E"    16rFFFF " invalid " 
+       "16r161F"    16rFFFF " invalid " 
+       "16r1620"    16rFFFF " invalid " 
+       "16r1621"    16rFFFF " invalid " 
+       "16r1622"    16rFFFF " invalid " 
+       "16r1623"    16rFFFF " invalid " 
+       "16r1624"    16rFFFF " invalid " 
+       "16r1625"    16rFFFF " invalid " 
+       "16r1626"    16rFFFF " invalid " 
+       "16r1627"    16rFFFF " invalid " 
+       "16r1628"    16rFFFF " invalid " 
+       "16r1629"    16rFFFF " invalid " 
+       "16r162A"    16rFFFF " invalid " 
+       "16r162B"    16rFFFF " invalid " 
+       "16r162C"    16rFFFF " invalid " 
+       "16r162D"    16rFFFF " invalid " 
+       "16r162E"    16rFFFF " invalid " 
+       "16r162F"    16rFFFF " invalid " 
+       "16r1630"    16rFFFF " invalid " 
+       "16r1631"    16rFFFF " invalid " 
+       "16r1632"    16rFFFF " invalid " 
+       "16r1633"    16rFFFF " invalid " 
+       "16r1634"    16rFFFF " invalid " 
+       "16r1635"    16rFFFF " invalid " 
+       "16r1636"    16rFFFF " invalid " 
+       "16r1637"    16rFFFF " invalid " 
+       "16r1638"    16rFFFF " invalid " 
+       "16r1639"    16rFFFF " invalid " 
+       "16r163A"    16rFFFF " invalid " 
+       "16r163B"    16rFFFF " invalid " 
+       "16r163C"    16rFFFF " invalid " 
+       "16r163D"    16rFFFF " invalid " 
+       "16r163E"    16rFFFF " invalid " 
+       "16r163F"    16rFFFF " invalid " 
+       "16r1640"    16rFFFF " invalid " 
+       "16r1641"    16rFFFF " invalid " 
+       "16r1642"    16rFFFF " invalid " 
+       "16r1643"    16rFFFF " invalid " 
+       "16r1644"    16rFFFF " invalid " 
+       "16r1645"    16rFFFF " invalid " 
+       "16r1646"    16rFFFF " invalid " 
+       "16r1647"    16rFFFF " invalid " 
+       "16r1648"    16rFFFF " invalid " 
+       "16r1649"    16rFFFF " invalid " 
+       "16r164A"    16rFFFF " invalid " 
+       "16r164B"    16rFFFF " invalid " 
+       "16r164C"    16rFFFF " invalid " 
+       "16r164D"    16rFFFF " invalid " 
+       "16r164E"    16rFFFF " invalid " 
+       "16r164F"    16rFFFF " invalid " 
+       "16r1650"    16rFFFF " invalid " 
+       "16r1651"    16rFFFF " invalid " 
+       "16r1652"    16rFFFF " invalid " 
+       "16r1653"    16rFFFF " invalid " 
+       "16r1654"    16rFFFF " invalid " 
+       "16r1655"    16rFFFF " invalid " 
+       "16r1656"    16rFFFF " invalid " 
+       "16r1657"    16rFFFF " invalid " 
+       "16r1658"    16rFFFF " invalid " 
+       "16r1659"    16rFFFF " invalid " 
+       "16r165A"    16rFFFF " invalid " 
+       "16r165B"    16rFFFF " invalid " 
+       "16r165C"    16rFFFF " invalid " 
+       "16r165D"    16rFFFF " invalid " 
+       "16r165E"    16rFFFF " invalid " 
+       "16r165F"    16rFFFF " invalid " 
+       "16r1660"    16rFFFF " invalid " 
+       "16r1661"    16rFFFF " invalid " 
+       "16r1662"    16rFFFF " invalid " 
+       "16r1663"    16rFFFF " invalid " 
+       "16r1664"    16rFFFF " invalid " 
+       "16r1665"    16rFFFF " invalid " 
+       "16r1666"    16rFFFF " invalid " 
+       "16r1667"    16rFFFF " invalid " 
+       "16r1668"    16rFFFF " invalid " 
+       "16r1669"    16rFFFF " invalid " 
+       "16r166A"    16rFFFF " invalid " 
+       "16r166B"    16rFFFF " invalid " 
+       "16r166C"    16rFFFF " invalid " 
+       "16r166D"    16rFFFF " invalid " 
+       "16r166E"    16rFFFF " invalid " 
+       "16r166F"    16rFFFF " invalid " 
+       "16r1670"    16rFFFF " invalid " 
+       "16r1671"    16rFFFF " invalid " 
+       "16r1672"    16rFFFF " invalid " 
+       "16r1673"    16rFFFF " invalid " 
+       "16r1674"    16rFFFF " invalid " 
+       "16r1675"    16rFFFF " invalid " 
+       "16r1676"    16rFFFF " invalid " 
+       "16r1677"    16rFFFF " invalid " 
+       "16r1678"    16rFFFF " invalid " 
+       "16r1679"    16rFFFF " invalid " 
+       "16r167A"    16rFFFF " invalid " 
+       "16r167B"    16rFFFF " invalid " 
+       "16r167C"    16rFFFF " invalid " 
+       "16r167D"    16rFFFF " invalid " 
+       "16r167E"    16rFFFF " invalid " 
+       "16r167F"    16rFFFF " invalid " 
+       "16r1680"    16rFFFF " invalid " 
+       "16r1681"    16rFFFF " invalid " 
+       "16r1682"    16rFFFF " invalid " 
+       "16r1683"    16rFFFF " invalid " 
+       "16r1684"    16rFFFF " invalid " 
+       "16r1685"    16rFFFF " invalid " 
+       "16r1686"    16rFFFF " invalid " 
+       "16r1687"    16rFFFF " invalid " 
+       "16r1688"    16rFFFF " invalid " 
+       "16r1689"    16rFFFF " invalid " 
+       "16r168A"    16rFFFF " invalid " 
+       "16r168B"    16rFFFF " invalid " 
+       "16r168C"    16rFFFF " invalid " 
+       "16r168D"    16rFFFF " invalid " 
+       "16r168E"    16rFFFF " invalid " 
+       "16r168F"    16rFFFF " invalid " 
+       "16r1690"    16rFFFF " invalid " 
+       "16r1691"    16rFFFF " invalid " 
+       "16r1692"    16rFFFF " invalid " 
+       "16r1693"    16rFFFF " invalid " 
+       "16r1694"    16rFFFF " invalid " 
+       "16r1695"    16rFFFF " invalid " 
+       "16r1696"    16rFFFF " invalid " 
+       "16r1697"    16rFFFF " invalid " 
+       "16r1698"    16rFFFF " invalid " 
+       "16r1699"    16rFFFF " invalid " 
+       "16r169A"    16rFFFF " invalid " 
+       "16r169B"    16rFFFF " invalid " 
+       "16r169C"    16rFFFF " invalid " 
+       "16r169D"    16rFFFF " invalid " 
+       "16r169E"    16rFFFF " invalid " 
+       "16r169F"    16rFFFF " invalid " 
+       "16r16A0"    16rFFFF " invalid " 
+       "16r16A1"    16rFFFF " invalid " 
+       "16r16A2"    16rFFFF " invalid " 
+       "16r16A3"    16rFFFF " invalid " 
+       "16r16A4"    16rFFFF " invalid " 
+       "16r16A5"    16rFFFF " invalid " 
+       "16r16A6"    16rFFFF " invalid " 
+       "16r16A7"    16rFFFF " invalid " 
+       "16r16A8"    16rFFFF " invalid " 
+       "16r16A9"    16rFFFF " invalid " 
+       "16r16AA"    16rFFFF " invalid " 
+       "16r16AB"    16rFFFF " invalid " 
+       "16r16AC"    16rFFFF " invalid " 
+       "16r16AD"    16rFFFF " invalid " 
+       "16r16AE"    16rFFFF " invalid " 
+       "16r16AF"    16rFFFF " invalid " 
+       "16r16B0"    16rFFFF " invalid " 
+       "16r16B1"    16rFFFF " invalid " 
+       "16r16B2"    16rFFFF " invalid " 
+       "16r16B3"    16rFFFF " invalid " 
+       "16r16B4"    16rFFFF " invalid " 
+       "16r16B5"    16rFFFF " invalid " 
+       "16r16B6"    16rFFFF " invalid " 
+       "16r16B7"    16rFFFF " invalid " 
+       "16r16B8"    16rFFFF " invalid " 
+       "16r16B9"    16rFFFF " invalid " 
+       "16r16BA"    16rFFFF " invalid " 
+       "16r16BB"    16rFFFF " invalid " 
+       "16r16BC"    16rFFFF " invalid " 
+       "16r16BD"    16rFFFF " invalid " 
+       "16r16BE"    16rFFFF " invalid " 
+       "16r16BF"    16rFFFF " invalid " 
+       "16r16C0"    16rFFFF " invalid " 
+       "16r16C1"    16rFFFF " invalid " 
+       "16r16C2"    16rFFFF " invalid " 
+       "16r16C3"    16rFFFF " invalid " 
+       "16r16C4"    16rFFFF " invalid " 
+       "16r16C5"    16rFFFF " invalid " 
+       "16r16C6"    16rFFFF " invalid " 
+       "16r16C7"    16rFFFF " invalid " 
+       "16r16C8"    16rFFFF " invalid " 
+       "16r16C9"    16rFFFF " invalid " 
+       "16r16CA"    16rFFFF " invalid " 
+       "16r16CB"    16rFFFF " invalid " 
+       "16r16CC"    16rFFFF " invalid " 
+       "16r16CD"    16rFFFF " invalid " 
+       "16r16CE"    16rFFFF " invalid " 
+       "16r16CF"    16rFFFF " invalid " 
+       "16r16D0"    16rFFFF " invalid " 
+       "16r16D1"    16rFFFF " invalid " 
+       "16r16D2"    16rFFFF " invalid " 
+       "16r16D3"    16rFFFF " invalid " 
+       "16r16D4"    16rFFFF " invalid " 
+       "16r16D5"    16rFFFF " invalid " 
+       "16r16D6"    16rFFFF " invalid " 
+       "16r16D7"    16rFFFF " invalid " 
+       "16r16D8"    16rFFFF " invalid " 
+       "16r16D9"    16rFFFF " invalid " 
+       "16r16DA"    16rFFFF " invalid " 
+       "16r16DB"    16rFFFF " invalid " 
+       "16r16DC"    16rFFFF " invalid " 
+       "16r16DD"    16rFFFF " invalid " 
+       "16r16DE"    16rFFFF " invalid " 
+       "16r16DF"    16rFFFF " invalid " 
+       "16r16E0"    16rFFFF " invalid " 
+       "16r16E1"    16rFFFF " invalid " 
+       "16r16E2"    16rFFFF " invalid " 
+       "16r16E3"    16rFFFF " invalid " 
+       "16r16E4"    16rFFFF " invalid " 
+       "16r16E5"    16rFFFF " invalid " 
+       "16r16E6"    16rFFFF " invalid " 
+       "16r16E7"    16rFFFF " invalid " 
+       "16r16E8"    16rFFFF " invalid " 
+       "16r16E9"    16rFFFF " invalid " 
+       "16r16EA"    16rFFFF " invalid " 
+       "16r16EB"    16rFFFF " invalid " 
+       "16r16EC"    16rFFFF " invalid " 
+       "16r16ED"    16rFFFF " invalid " 
+       "16r16EE"    16rFFFF " invalid " 
+       "16r16EF"    16rFFFF " invalid " 
+       "16r16F0"    16rFFFF " invalid " 
+       "16r16F1"    16rFFFF " invalid " 
+       "16r16F2"    16rFFFF " invalid " 
+       "16r16F3"    16rFFFF " invalid " 
+       "16r16F4"    16rFFFF " invalid " 
+       "16r16F5"    16rFFFF " invalid " 
+       "16r16F6"    16rFFFF " invalid " 
+       "16r16F7"    16rFFFF " invalid " 
+       "16r16F8"    16rFFFF " invalid " 
+       "16r16F9"    16rFFFF " invalid " 
+       "16r16FA"    16rFFFF " invalid " 
+       "16r16FB"    16rFFFF " invalid " 
+       "16r16FC"    16rFFFF " invalid " 
+       "16r16FD"    16rFFFF " invalid " 
+       "16r16FE"    16rFFFF " invalid " 
+       "16r16FF"    16rFFFF " invalid " 
+       "16r1700"    16rFFFF " invalid " 
+       "16r1701"    16rFFFF " invalid " 
+       "16r1702"    16rFFFF " invalid " 
+       "16r1703"    16rFFFF " invalid " 
+       "16r1704"    16rFFFF " invalid " 
+       "16r1705"    16rFFFF " invalid " 
+       "16r1706"    16rFFFF " invalid " 
+       "16r1707"    16rFFFF " invalid " 
+       "16r1708"    16rFFFF " invalid " 
+       "16r1709"    16rFFFF " invalid " 
+       "16r170A"    16rFFFF " invalid " 
+       "16r170B"    16rFFFF " invalid " 
+       "16r170C"    16rFFFF " invalid " 
+       "16r170D"    16rFFFF " invalid " 
+       "16r170E"    16rFFFF " invalid " 
+       "16r170F"    16rFFFF " invalid " 
+       "16r1710"    16rFFFF " invalid " 
+       "16r1711"    16rFFFF " invalid " 
+       "16r1712"    16rFFFF " invalid " 
+       "16r1713"    16rFFFF " invalid " 
+       "16r1714"    16rFFFF " invalid " 
+       "16r1715"    16rFFFF " invalid " 
+       "16r1716"    16rFFFF " invalid " 
+       "16r1717"    16rFFFF " invalid " 
+       "16r1718"    16rFFFF " invalid " 
+       "16r1719"    16rFFFF " invalid " 
+       "16r171A"    16rFFFF " invalid " 
+       "16r171B"    16rFFFF " invalid " 
+       "16r171C"    16rFFFF " invalid " 
+       "16r171D"    16rFFFF " invalid " 
+       "16r171E"    16rFFFF " invalid " 
+       "16r171F"    16rFFFF " invalid " 
+       "16r1720"    16rFFFF " invalid " 
+       "16r1721"    16rFFFF " invalid " 
+       "16r1722"    16rFFFF " invalid " 
+       "16r1723"    16rFFFF " invalid " 
+       "16r1724"    16rFFFF " invalid " 
+       "16r1725"    16rFFFF " invalid " 
+       "16r1726"    16rFFFF " invalid " 
+       "16r1727"    16rFFFF " invalid " 
+       "16r1728"    16rFFFF " invalid " 
+       "16r1729"    16rFFFF " invalid " 
+       "16r172A"    16rFFFF " invalid " 
+       "16r172B"    16rFFFF " invalid " 
+       "16r172C"    16rFFFF " invalid " 
+       "16r172D"    16rFFFF " invalid " 
+       "16r172E"    16rFFFF " invalid " 
+       "16r172F"    16rFFFF " invalid " 
+       "16r1730"    16rFFFF " invalid " 
+       "16r1731"    16rFFFF " invalid " 
+       "16r1732"    16rFFFF " invalid " 
+       "16r1733"    16rFFFF " invalid " 
+       "16r1734"    16rFFFF " invalid " 
+       "16r1735"    16rFFFF " invalid " 
+       "16r1736"    16rFFFF " invalid " 
+       "16r1737"    16rFFFF " invalid " 
+       "16r1738"    16rFFFF " invalid " 
+       "16r1739"    16rFFFF " invalid " 
+       "16r173A"    16rFFFF " invalid " 
+       "16r173B"    16rFFFF " invalid " 
+       "16r173C"    16rFFFF " invalid " 
+       "16r173D"    16rFFFF " invalid " 
+       "16r173E"    16rFFFF " invalid " 
+       "16r173F"    16rFFFF " invalid " 
+       "16r1740"    16rFFFF " invalid " 
+       "16r1741"    16rFFFF " invalid " 
+       "16r1742"    16rFFFF " invalid " 
+       "16r1743"    16rFFFF " invalid " 
+       "16r1744"    16rFFFF " invalid " 
+       "16r1745"    16rFFFF " invalid " 
+       "16r1746"    16rFFFF " invalid " 
+       "16r1747"    16rFFFF " invalid " 
+       "16r1748"    16rFFFF " invalid " 
+       "16r1749"    16rFFFF " invalid " 
+       "16r174A"    16rFFFF " invalid " 
+       "16r174B"    16rFFFF " invalid " 
+       "16r174C"    16rFFFF " invalid " 
+       "16r174D"    16rFFFF " invalid " 
+       "16r174E"    16rFFFF " invalid " 
+       "16r174F"    16rFFFF " invalid " 
+       "16r1750"    16rFFFF " invalid " 
+       "16r1751"    16rFFFF " invalid " 
+       "16r1752"    16rFFFF " invalid " 
+       "16r1753"    16rFFFF " invalid " 
+       "16r1754"    16rFFFF " invalid " 
+       "16r1755"    16rFFFF " invalid " 
+       "16r1756"    16rFFFF " invalid " 
+       "16r1757"    16rFFFF " invalid " 
+       "16r1758"    16rFFFF " invalid " 
+       "16r1759"    16rFFFF " invalid " 
+       "16r175A"    16rFFFF " invalid " 
+       "16r175B"    16rFFFF " invalid " 
+       "16r175C"    16rFFFF " invalid " 
+       "16r175D"    16rFFFF " invalid " 
+       "16r175E"    16rFFFF " invalid " 
+       "16r175F"    16rFFFF " invalid " 
+       "16r1760"    16rFFFF " invalid " 
+       "16r1761"    16rFFFF " invalid " 
+       "16r1762"    16rFFFF " invalid " 
+       "16r1763"    16rFFFF " invalid " 
+       "16r1764"    16rFFFF " invalid " 
+       "16r1765"    16rFFFF " invalid " 
+       "16r1766"    16rFFFF " invalid " 
+       "16r1767"    16rFFFF " invalid " 
+       "16r1768"    16rFFFF " invalid " 
+       "16r1769"    16rFFFF " invalid " 
+       "16r176A"    16rFFFF " invalid " 
+       "16r176B"    16rFFFF " invalid " 
+       "16r176C"    16rFFFF " invalid " 
+       "16r176D"    16rFFFF " invalid " 
+       "16r176E"    16rFFFF " invalid " 
+       "16r176F"    16rFFFF " invalid " 
+       "16r1770"    16rFFFF " invalid " 
+       "16r1771"    16rFFFF " invalid " 
+       "16r1772"    16rFFFF " invalid " 
+       "16r1773"    16rFFFF " invalid " 
+       "16r1774"    16rFFFF " invalid " 
+       "16r1775"    16rFFFF " invalid " 
+       "16r1776"    16rFFFF " invalid " 
+       "16r1777"    16rFFFF " invalid " 
+       "16r1778"    16rFFFF " invalid " 
+       "16r1779"    16rFFFF " invalid " 
+       "16r177A"    16rFFFF " invalid " 
+       "16r177B"    16rFFFF " invalid " 
+       "16r177C"    16rFFFF " invalid " 
+       "16r177D"    16rFFFF " invalid " 
+       "16r177E"    16rFFFF " invalid " 
+       "16r177F"    16rFFFF " invalid " 
+       "16r1780"    16rFFFF " invalid " 
+       "16r1781"    16rFFFF " invalid " 
+       "16r1782"    16rFFFF " invalid " 
+       "16r1783"    16rFFFF " invalid " 
+       "16r1784"    16rFFFF " invalid " 
+       "16r1785"    16rFFFF " invalid " 
+       "16r1786"    16rFFFF " invalid " 
+       "16r1787"    16rFFFF " invalid " 
+       "16r1788"    16rFFFF " invalid " 
+       "16r1789"    16rFFFF " invalid " 
+       "16r178A"    16rFFFF " invalid " 
+       "16r178B"    16rFFFF " invalid " 
+       "16r178C"    16rFFFF " invalid " 
+       "16r178D"    16rFFFF " invalid " 
+       "16r178E"    16rFFFF " invalid " 
+       "16r178F"    16rFFFF " invalid " 
+       "16r1790"    16rFFFF " invalid " 
+       "16r1791"    16rFFFF " invalid " 
+       "16r1792"    16rFFFF " invalid " 
+       "16r1793"    16rFFFF " invalid " 
+       "16r1794"    16rFFFF " invalid " 
+       "16r1795"    16rFFFF " invalid " 
+       "16r1796"    16rFFFF " invalid " 
+       "16r1797"    16rFFFF " invalid " 
+       "16r1798"    16rFFFF " invalid " 
+       "16r1799"    16rFFFF " invalid " 
+       "16r179A"    16rFFFF " invalid " 
+       "16r179B"    16rFFFF " invalid " 
+       "16r179C"    16rFFFF " invalid " 
+       "16r179D"    16rFFFF " invalid " 
+       "16r179E"    16rFFFF " invalid " 
+       "16r179F"    16rFFFF " invalid " 
+       "16r17A0"    16rFFFF " invalid " 
+       "16r17A1"    16rFFFF " invalid " 
+       "16r17A2"    16rFFFF " invalid " 
+       "16r17A3"    16rFFFF " invalid " 
+       "16r17A4"    16rFFFF " invalid " 
+       "16r17A5"    16rFFFF " invalid " 
+       "16r17A6"    16rFFFF " invalid " 
+       "16r17A7"    16rFFFF " invalid " 
+       "16r17A8"    16rFFFF " invalid " 
+       "16r17A9"    16rFFFF " invalid " 
+       "16r17AA"    16rFFFF " invalid " 
+       "16r17AB"    16rFFFF " invalid " 
+       "16r17AC"    16rFFFF " invalid " 
+       "16r17AD"    16rFFFF " invalid " 
+       "16r17AE"    16rFFFF " invalid " 
+       "16r17AF"    16rFFFF " invalid " 
+       "16r17B0"    16rFFFF " invalid " 
+       "16r17B1"    16rFFFF " invalid " 
+       "16r17B2"    16rFFFF " invalid " 
+       "16r17B3"    16rFFFF " invalid " 
+       "16r17B4"    16rFFFF " invalid " 
+       "16r17B5"    16rFFFF " invalid " 
+       "16r17B6"    16rFFFF " invalid " 
+       "16r17B7"    16rFFFF " invalid " 
+       "16r17B8"    16rFFFF " invalid " 
+       "16r17B9"    16rFFFF " invalid " 
+       "16r17BA"    16rFFFF " invalid " 
+       "16r17BB"    16rFFFF " invalid " 
+       "16r17BC"    16rFFFF " invalid " 
+       "16r17BD"    16rFFFF " invalid " 
+       "16r17BE"    16rFFFF " invalid " 
+       "16r17BF"    16rFFFF " invalid " 
+       "16r17C0"    16rFFFF " invalid " 
+       "16r17C1"    16rFFFF " invalid " 
+       "16r17C2"    16rFFFF " invalid " 
+       "16r17C3"    16rFFFF " invalid " 
+       "16r17C4"    16rFFFF " invalid " 
+       "16r17C5"    16rFFFF " invalid " 
+       "16r17C6"    16rFFFF " invalid " 
+       "16r17C7"    16rFFFF " invalid " 
+       "16r17C8"    16rFFFF " invalid " 
+       "16r17C9"    16rFFFF " invalid " 
+       "16r17CA"    16rFFFF " invalid " 
+       "16r17CB"    16rFFFF " invalid " 
+       "16r17CC"    16rFFFF " invalid " 
+       "16r17CD"    16rFFFF " invalid " 
+       "16r17CE"    16rFFFF " invalid " 
+       "16r17CF"    16rFFFF " invalid " 
+       "16r17D0"    16rFFFF " invalid " 
+       "16r17D1"    16rFFFF " invalid " 
+       "16r17D2"    16rFFFF " invalid " 
+       "16r17D3"    16rFFFF " invalid " 
+       "16r17D4"    16rFFFF " invalid " 
+       "16r17D5"    16rFFFF " invalid " 
+       "16r17D6"    16rFFFF " invalid " 
+       "16r17D7"    16rFFFF " invalid " 
+       "16r17D8"    16rFFFF " invalid " 
+       "16r17D9"    16rFFFF " invalid " 
+       "16r17DA"    16rFFFF " invalid " 
+       "16r17DB"    16rFFFF " invalid " 
+       "16r17DC"    16rFFFF " invalid " 
+       "16r17DD"    16rFFFF " invalid " 
+       "16r17DE"    16rFFFF " invalid " 
+       "16r17DF"    16rFFFF " invalid " 
+       "16r17E0"    16rFFFF " invalid " 
+       "16r17E1"    16rFFFF " invalid " 
+       "16r17E2"    16rFFFF " invalid " 
+       "16r17E3"    16rFFFF " invalid " 
+       "16r17E4"    16rFFFF " invalid " 
+       "16r17E5"    16rFFFF " invalid " 
+       "16r17E6"    16rFFFF " invalid " 
+       "16r17E7"    16rFFFF " invalid " 
+       "16r17E8"    16rFFFF " invalid " 
+       "16r17E9"    16rFFFF " invalid " 
+       "16r17EA"    16rFFFF " invalid " 
+       "16r17EB"    16rFFFF " invalid " 
+       "16r17EC"    16rFFFF " invalid " 
+       "16r17ED"    16rFFFF " invalid " 
+       "16r17EE"    16rFFFF " invalid " 
+       "16r17EF"    16rFFFF " invalid " 
+       "16r17F0"    16rFFFF " invalid " 
+       "16r17F1"    16rFFFF " invalid " 
+       "16r17F2"    16rFFFF " invalid " 
+       "16r17F3"    16rFFFF " invalid " 
+       "16r17F4"    16rFFFF " invalid " 
+       "16r17F5"    16rFFFF " invalid " 
+       "16r17F6"    16rFFFF " invalid " 
+       "16r17F7"    16rFFFF " invalid " 
+       "16r17F8"    16rFFFF " invalid " 
+       "16r17F9"    16rFFFF " invalid " 
+       "16r17FA"    16rFFFF " invalid " 
+       "16r17FB"    16rFFFF " invalid " 
+       "16r17FC"    16rFFFF " invalid " 
+       "16r17FD"    16rFFFF " invalid " 
+       "16r17FE"    16rFFFF " invalid " 
+       "16r17FF"    16rFFFF " invalid " 
+       "16r1800"    16rFFFF " invalid " 
+       "16r1801"    16rFFFF " invalid " 
+       "16r1802"    16rFFFF " invalid " 
+       "16r1803"    16rFFFF " invalid " 
+       "16r1804"    16rFFFF " invalid " 
+       "16r1805"    16rFFFF " invalid " 
+       "16r1806"    16rFFFF " invalid " 
+       "16r1807"    16rFFFF " invalid " 
+       "16r1808"    16rFFFF " invalid " 
+       "16r1809"    16rFFFF " invalid " 
+       "16r180A"    16rFFFF " invalid " 
+       "16r180B"    16rFFFF " invalid " 
+       "16r180C"    16rFFFF " invalid " 
+       "16r180D"    16rFFFF " invalid " 
+       "16r180E"    16rFFFF " invalid " 
+       "16r180F"    16rFFFF " invalid " 
+       "16r1810"    16rFFFF " invalid " 
+       "16r1811"    16rFFFF " invalid " 
+       "16r1812"    16rFFFF " invalid " 
+       "16r1813"    16rFFFF " invalid " 
+       "16r1814"    16rFFFF " invalid " 
+       "16r1815"    16rFFFF " invalid " 
+       "16r1816"    16rFFFF " invalid " 
+       "16r1817"    16rFFFF " invalid " 
+       "16r1818"    16rFFFF " invalid " 
+       "16r1819"    16rFFFF " invalid " 
+       "16r181A"    16rFFFF " invalid " 
+       "16r181B"    16rFFFF " invalid " 
+       "16r181C"    16rFFFF " invalid " 
+       "16r181D"    16rFFFF " invalid " 
+       "16r181E"    16rFFFF " invalid " 
+       "16r181F"    16rFFFF " invalid " 
+       "16r1820"    16rFFFF " invalid " 
+       "16r1821"    16rFFFF " invalid " 
+       "16r1822"    16rFFFF " invalid " 
+       "16r1823"    16rFFFF " invalid " 
+       "16r1824"    16rFFFF " invalid " 
+       "16r1825"    16rFFFF " invalid " 
+       "16r1826"    16rFFFF " invalid " 
+       "16r1827"    16rFFFF " invalid " 
+       "16r1828"    16rFFFF " invalid " 
+       "16r1829"    16rFFFF " invalid " 
+       "16r182A"    16rFFFF " invalid " 
+       "16r182B"    16rFFFF " invalid " 
+       "16r182C"    16rFFFF " invalid " 
+       "16r182D"    16rFFFF " invalid " 
+       "16r182E"    16rFFFF " invalid " 
+       "16r182F"    16rFFFF " invalid " 
+       "16r1830"    16rFFFF " invalid " 
+       "16r1831"    16rFFFF " invalid " 
+       "16r1832"    16rFFFF " invalid " 
+       "16r1833"    16rFFFF " invalid " 
+       "16r1834"    16rFFFF " invalid " 
+       "16r1835"    16rFFFF " invalid " 
+       "16r1836"    16rFFFF " invalid " 
+       "16r1837"    16rFFFF " invalid " 
+       "16r1838"    16rFFFF " invalid " 
+       "16r1839"    16rFFFF " invalid " 
+       "16r183A"    16rFFFF " invalid " 
+       "16r183B"    16rFFFF " invalid " 
+       "16r183C"    16rFFFF " invalid " 
+       "16r183D"    16rFFFF " invalid " 
+       "16r183E"    16rFFFF " invalid " 
+       "16r183F"    16rFFFF " invalid " 
+       "16r1840"    16rFFFF " invalid " 
+       "16r1841"    16rFFFF " invalid " 
+       "16r1842"    16rFFFF " invalid " 
+       "16r1843"    16rFFFF " invalid " 
+       "16r1844"    16rFFFF " invalid " 
+       "16r1845"    16rFFFF " invalid " 
+       "16r1846"    16rFFFF " invalid " 
+       "16r1847"    16rFFFF " invalid " 
+       "16r1848"    16rFFFF " invalid " 
+       "16r1849"    16rFFFF " invalid " 
+       "16r184A"    16rFFFF " invalid " 
+       "16r184B"    16rFFFF " invalid " 
+       "16r184C"    16rFFFF " invalid " 
+       "16r184D"    16rFFFF " invalid " 
+       "16r184E"    16rFFFF " invalid " 
+       "16r184F"    16rFFFF " invalid " 
+       "16r1850"    16rFFFF " invalid " 
+       "16r1851"    16rFFFF " invalid " 
+       "16r1852"    16rFFFF " invalid " 
+       "16r1853"    16rFFFF " invalid " 
+       "16r1854"    16rFFFF " invalid " 
+       "16r1855"    16rFFFF " invalid " 
+       "16r1856"    16rFFFF " invalid " 
+       "16r1857"    16rFFFF " invalid " 
+       "16r1858"    16rFFFF " invalid " 
+       "16r1859"    16rFFFF " invalid " 
+       "16r185A"    16rFFFF " invalid " 
+       "16r185B"    16rFFFF " invalid " 
+       "16r185C"    16rFFFF " invalid " 
+       "16r185D"    16rFFFF " invalid " 
+       "16r185E"    16rFFFF " invalid " 
+       "16r185F"    16rFFFF " invalid " 
+       "16r1860"    16rFFFF " invalid " 
+       "16r1861"    16rFFFF " invalid " 
+       "16r1862"    16rFFFF " invalid " 
+       "16r1863"    16rFFFF " invalid " 
+       "16r1864"    16rFFFF " invalid " 
+       "16r1865"    16rFFFF " invalid " 
+       "16r1866"    16rFFFF " invalid " 
+       "16r1867"    16rFFFF " invalid " 
+       "16r1868"    16rFFFF " invalid " 
+       "16r1869"    16rFFFF " invalid " 
+       "16r186A"    16rFFFF " invalid " 
+       "16r186B"    16rFFFF " invalid " 
+       "16r186C"    16rFFFF " invalid " 
+       "16r186D"    16rFFFF " invalid " 
+       "16r186E"    16rFFFF " invalid " 
+       "16r186F"    16rFFFF " invalid " 
+       "16r1870"    16rFFFF " invalid " 
+       "16r1871"    16rFFFF " invalid " 
+       "16r1872"    16rFFFF " invalid " 
+       "16r1873"    16rFFFF " invalid " 
+       "16r1874"    16rFFFF " invalid " 
+       "16r1875"    16rFFFF " invalid " 
+       "16r1876"    16rFFFF " invalid " 
+       "16r1877"    16rFFFF " invalid " 
+       "16r1878"    16rFFFF " invalid " 
+       "16r1879"    16rFFFF " invalid " 
+       "16r187A"    16rFFFF " invalid " 
+       "16r187B"    16rFFFF " invalid " 
+       "16r187C"    16rFFFF " invalid " 
+       "16r187D"    16rFFFF " invalid " 
+       "16r187E"    16rFFFF " invalid " 
+       "16r187F"    16rFFFF " invalid " 
+       "16r1880"    16rFFFF " invalid " 
+       "16r1881"    16rFFFF " invalid " 
+       "16r1882"    16rFFFF " invalid " 
+       "16r1883"    16rFFFF " invalid " 
+       "16r1884"    16rFFFF " invalid " 
+       "16r1885"    16rFFFF " invalid " 
+       "16r1886"    16rFFFF " invalid " 
+       "16r1887"    16rFFFF " invalid " 
+       "16r1888"    16rFFFF " invalid " 
+       "16r1889"    16rFFFF " invalid " 
+       "16r188A"    16rFFFF " invalid " 
+       "16r188B"    16rFFFF " invalid " 
+       "16r188C"    16rFFFF " invalid " 
+       "16r188D"    16rFFFF " invalid " 
+       "16r188E"    16rFFFF " invalid " 
+       "16r188F"    16rFFFF " invalid " 
+       "16r1890"    16rFFFF " invalid " 
+       "16r1891"    16rFFFF " invalid " 
+       "16r1892"    16rFFFF " invalid " 
+       "16r1893"    16rFFFF " invalid " 
+       "16r1894"    16rFFFF " invalid " 
+       "16r1895"    16rFFFF " invalid " 
+       "16r1896"    16rFFFF " invalid " 
+       "16r1897"    16rFFFF " invalid " 
+       "16r1898"    16rFFFF " invalid " 
+       "16r1899"    16rFFFF " invalid " 
+       "16r189A"    16rFFFF " invalid " 
+       "16r189B"    16rFFFF " invalid " 
+       "16r189C"    16rFFFF " invalid " 
+       "16r189D"    16rFFFF " invalid " 
+       "16r189E"    16rFFFF " invalid " 
+       "16r189F"    16rFFFF " invalid " 
+       "16r18A0"    16rFFFF " invalid " 
+       "16r18A1"    16rFFFF " invalid " 
+       "16r18A2"    16rFFFF " invalid " 
+       "16r18A3"    16rFFFF " invalid " 
+       "16r18A4"    16rFFFF " invalid " 
+       "16r18A5"    16rFFFF " invalid " 
+       "16r18A6"    16rFFFF " invalid " 
+       "16r18A7"    16rFFFF " invalid " 
+       "16r18A8"    16rFFFF " invalid " 
+       "16r18A9"    16rFFFF " invalid " 
+       "16r18AA"    16rFFFF " invalid " 
+       "16r18AB"    16rFFFF " invalid " 
+       "16r18AC"    16rFFFF " invalid " 
+       "16r18AD"    16rFFFF " invalid " 
+       "16r18AE"    16rFFFF " invalid " 
+       "16r18AF"    16rFFFF " invalid " 
+       "16r18B0"    16rFFFF " invalid " 
+       "16r18B1"    16rFFFF " invalid " 
+       "16r18B2"    16rFFFF " invalid " 
+       "16r18B3"    16rFFFF " invalid " 
+       "16r18B4"    16rFFFF " invalid " 
+       "16r18B5"    16rFFFF " invalid " 
+       "16r18B6"    16rFFFF " invalid " 
+       "16r18B7"    16rFFFF " invalid " 
+       "16r18B8"    16rFFFF " invalid " 
+       "16r18B9"    16rFFFF " invalid " 
+       "16r18BA"    16rFFFF " invalid " 
+       "16r18BB"    16rFFFF " invalid " 
+       "16r18BC"    16rFFFF " invalid " 
+       "16r18BD"    16rFFFF " invalid " 
+       "16r18BE"    16rFFFF " invalid " 
+       "16r18BF"    16rFFFF " invalid " 
+       "16r18C0"    16rFFFF " invalid " 
+       "16r18C1"    16rFFFF " invalid " 
+       "16r18C2"    16rFFFF " invalid " 
+       "16r18C3"    16rFFFF " invalid " 
+       "16r18C4"    16rFFFF " invalid " 
+       "16r18C5"    16rFFFF " invalid " 
+       "16r18C6"    16rFFFF " invalid " 
+       "16r18C7"    16rFFFF " invalid " 
+       "16r18C8"    16rFFFF " invalid " 
+       "16r18C9"    16rFFFF " invalid " 
+       "16r18CA"    16rFFFF " invalid " 
+       "16r18CB"    16rFFFF " invalid " 
+       "16r18CC"    16rFFFF " invalid " 
+       "16r18CD"    16rFFFF " invalid " 
+       "16r18CE"    16rFFFF " invalid " 
+       "16r18CF"    16rFFFF " invalid " 
+       "16r18D0"    16rFFFF " invalid " 
+       "16r18D1"    16rFFFF " invalid " 
+       "16r18D2"    16rFFFF " invalid " 
+       "16r18D3"    16rFFFF " invalid " 
+       "16r18D4"    16rFFFF " invalid " 
+       "16r18D5"    16rFFFF " invalid " 
+       "16r18D6"    16rFFFF " invalid " 
+       "16r18D7"    16rFFFF " invalid " 
+       "16r18D8"    16rFFFF " invalid " 
+       "16r18D9"    16rFFFF " invalid " 
+       "16r18DA"    16rFFFF " invalid " 
+       "16r18DB"    16rFFFF " invalid " 
+       "16r18DC"    16rFFFF " invalid " 
+       "16r18DD"    16rFFFF " invalid " 
+       "16r18DE"    16rFFFF " invalid " 
+       "16r18DF"    16rFFFF " invalid " 
+       "16r18E0"    16rFFFF " invalid " 
+       "16r18E1"    16rFFFF " invalid " 
+       "16r18E2"    16rFFFF " invalid " 
+       "16r18E3"    16rFFFF " invalid " 
+       "16r18E4"    16rFFFF " invalid " 
+       "16r18E5"    16rFFFF " invalid " 
+       "16r18E6"    16rFFFF " invalid " 
+       "16r18E7"    16rFFFF " invalid " 
+       "16r18E8"    16rFFFF " invalid " 
+       "16r18E9"    16rFFFF " invalid " 
+       "16r18EA"    16rFFFF " invalid " 
+       "16r18EB"    16rFFFF " invalid " 
+       "16r18EC"    16rFFFF " invalid " 
+       "16r18ED"    16rFFFF " invalid " 
+       "16r18EE"    16rFFFF " invalid " 
+       "16r18EF"    16rFFFF " invalid " 
+       "16r18F0"    16rFFFF " invalid " 
+       "16r18F1"    16rFFFF " invalid " 
+       "16r18F2"    16rFFFF " invalid " 
+       "16r18F3"    16rFFFF " invalid " 
+       "16r18F4"    16rFFFF " invalid " 
+       "16r18F5"    16rFFFF " invalid " 
+       "16r18F6"    16rFFFF " invalid " 
+       "16r18F7"    16rFFFF " invalid " 
+       "16r18F8"    16rFFFF " invalid " 
+       "16r18F9"    16rFFFF " invalid " 
+       "16r18FA"    16rFFFF " invalid " 
+       "16r18FB"    16rFFFF " invalid " 
+       "16r18FC"    16rFFFF " invalid " 
+       "16r18FD"    16rFFFF " invalid " 
+       "16r18FE"    16rFFFF " invalid " 
+       "16r18FF"    16rFFFF " invalid " 
+       "16r1900"    16rFFFF " invalid " 
+       "16r1901"    16rFFFF " invalid " 
+       "16r1902"    16rFFFF " invalid " 
+       "16r1903"    16rFFFF " invalid " 
+       "16r1904"    16rFFFF " invalid " 
+       "16r1905"    16rFFFF " invalid " 
+       "16r1906"    16rFFFF " invalid " 
+       "16r1907"    16rFFFF " invalid " 
+       "16r1908"    16rFFFF " invalid " 
+       "16r1909"    16rFFFF " invalid " 
+       "16r190A"    16rFFFF " invalid " 
+       "16r190B"    16rFFFF " invalid " 
+       "16r190C"    16rFFFF " invalid " 
+       "16r190D"    16rFFFF " invalid " 
+       "16r190E"    16rFFFF " invalid " 
+       "16r190F"    16rFFFF " invalid " 
+       "16r1910"    16rFFFF " invalid " 
+       "16r1911"    16rFFFF " invalid " 
+       "16r1912"    16rFFFF " invalid " 
+       "16r1913"    16rFFFF " invalid " 
+       "16r1914"    16rFFFF " invalid " 
+       "16r1915"    16rFFFF " invalid " 
+       "16r1916"    16rFFFF " invalid " 
+       "16r1917"    16rFFFF " invalid " 
+       "16r1918"    16rFFFF " invalid " 
+       "16r1919"    16rFFFF " invalid " 
+       "16r191A"    16rFFFF " invalid " 
+       "16r191B"    16rFFFF " invalid " 
+       "16r191C"    16rFFFF " invalid " 
+       "16r191D"    16rFFFF " invalid " 
+       "16r191E"    16rFFFF " invalid " 
+       "16r191F"    16rFFFF " invalid " 
+       "16r1920"    16rFFFF " invalid " 
+       "16r1921"    16rFFFF " invalid " 
+       "16r1922"    16rFFFF " invalid " 
+       "16r1923"    16rFFFF " invalid " 
+       "16r1924"    16rFFFF " invalid " 
+       "16r1925"    16rFFFF " invalid " 
+       "16r1926"    16rFFFF " invalid " 
+       "16r1927"    16rFFFF " invalid " 
+       "16r1928"    16rFFFF " invalid " 
+       "16r1929"    16rFFFF " invalid " 
+       "16r192A"    16rFFFF " invalid " 
+       "16r192B"    16rFFFF " invalid " 
+       "16r192C"    16rFFFF " invalid " 
+       "16r192D"    16rFFFF " invalid " 
+       "16r192E"    16rFFFF " invalid " 
+       "16r192F"    16rFFFF " invalid " 
+       "16r1930"    16rFFFF " invalid " 
+       "16r1931"    16rFFFF " invalid " 
+       "16r1932"    16rFFFF " invalid " 
+       "16r1933"    16rFFFF " invalid " 
+       "16r1934"    16rFFFF " invalid " 
+       "16r1935"    16rFFFF " invalid " 
+       "16r1936"    16rFFFF " invalid " 
+       "16r1937"    16rFFFF " invalid " 
+       "16r1938"    16rFFFF " invalid " 
+       "16r1939"    16rFFFF " invalid " 
+       "16r193A"    16rFFFF " invalid " 
+       "16r193B"    16rFFFF " invalid " 
+       "16r193C"    16rFFFF " invalid " 
+       "16r193D"    16rFFFF " invalid " 
+       "16r193E"    16rFFFF " invalid " 
+       "16r193F"    16rFFFF " invalid " 
+       "16r1940"    16rFFFF " invalid " 
+       "16r1941"    16rFFFF " invalid " 
+       "16r1942"    16rFFFF " invalid " 
+       "16r1943"    16rFFFF " invalid " 
+       "16r1944"    16rFFFF " invalid " 
+       "16r1945"    16rFFFF " invalid " 
+       "16r1946"    16rFFFF " invalid " 
+       "16r1947"    16rFFFF " invalid " 
+       "16r1948"    16rFFFF " invalid " 
+       "16r1949"    16rFFFF " invalid " 
+       "16r194A"    16rFFFF " invalid " 
+       "16r194B"    16rFFFF " invalid " 
+       "16r194C"    16rFFFF " invalid " 
+       "16r194D"    16rFFFF " invalid " 
+       "16r194E"    16rFFFF " invalid " 
+       "16r194F"    16rFFFF " invalid " 
+       "16r1950"    16rFFFF " invalid " 
+       "16r1951"    16rFFFF " invalid " 
+       "16r1952"    16rFFFF " invalid " 
+       "16r1953"    16rFFFF " invalid " 
+       "16r1954"    16rFFFF " invalid " 
+       "16r1955"    16rFFFF " invalid " 
+       "16r1956"    16rFFFF " invalid " 
+       "16r1957"    16rFFFF " invalid " 
+       "16r1958"    16rFFFF " invalid " 
+       "16r1959"    16rFFFF " invalid " 
+       "16r195A"    16rFFFF " invalid " 
+       "16r195B"    16rFFFF " invalid " 
+       "16r195C"    16rFFFF " invalid " 
+       "16r195D"    16rFFFF " invalid " 
+       "16r195E"    16rFFFF " invalid " 
+       "16r195F"    16rFFFF " invalid " 
+       "16r1960"    16rFFFF " invalid " 
+       "16r1961"    16rFFFF " invalid " 
+       "16r1962"    16rFFFF " invalid " 
+       "16r1963"    16rFFFF " invalid " 
+       "16r1964"    16rFFFF " invalid " 
+       "16r1965"    16rFFFF " invalid " 
+       "16r1966"    16rFFFF " invalid " 
+       "16r1967"    16rFFFF " invalid " 
+       "16r1968"    16rFFFF " invalid " 
+       "16r1969"    16rFFFF " invalid " 
+       "16r196A"    16rFFFF " invalid " 
+       "16r196B"    16rFFFF " invalid " 
+       "16r196C"    16rFFFF " invalid " 
+       "16r196D"    16rFFFF " invalid " 
+       "16r196E"    16rFFFF " invalid " 
+       "16r196F"    16rFFFF " invalid " 
+       "16r1970"    16rFFFF " invalid " 
+       "16r1971"    16rFFFF " invalid " 
+       "16r1972"    16rFFFF " invalid " 
+       "16r1973"    16rFFFF " invalid " 
+       "16r1974"    16rFFFF " invalid " 
+       "16r1975"    16rFFFF " invalid " 
+       "16r1976"    16rFFFF " invalid " 
+       "16r1977"    16rFFFF " invalid " 
+       "16r1978"    16rFFFF " invalid " 
+       "16r1979"    16rFFFF " invalid " 
+       "16r197A"    16rFFFF " invalid " 
+       "16r197B"    16rFFFF " invalid " 
+       "16r197C"    16rFFFF " invalid " 
+       "16r197D"    16rFFFF " invalid " 
+       "16r197E"    16rFFFF " invalid " 
+       "16r197F"    16rFFFF " invalid " 
+       "16r1980"    16rFFFF " invalid " 
+       "16r1981"    16rFFFF " invalid " 
+       "16r1982"    16rFFFF " invalid " 
+       "16r1983"    16rFFFF " invalid " 
+       "16r1984"    16rFFFF " invalid " 
+       "16r1985"    16rFFFF " invalid " 
+       "16r1986"    16rFFFF " invalid " 
+       "16r1987"    16rFFFF " invalid " 
+       "16r1988"    16rFFFF " invalid " 
+       "16r1989"    16rFFFF " invalid " 
+       "16r198A"    16rFFFF " invalid " 
+       "16r198B"    16rFFFF " invalid " 
+       "16r198C"    16rFFFF " invalid " 
+       "16r198D"    16rFFFF " invalid " 
+       "16r198E"    16rFFFF " invalid " 
+       "16r198F"    16rFFFF " invalid " 
+       "16r1990"    16rFFFF " invalid " 
+       "16r1991"    16rFFFF " invalid " 
+       "16r1992"    16rFFFF " invalid " 
+       "16r1993"    16rFFFF " invalid " 
+       "16r1994"    16rFFFF " invalid " 
+       "16r1995"    16rFFFF " invalid " 
+       "16r1996"    16rFFFF " invalid " 
+       "16r1997"    16rFFFF " invalid " 
+       "16r1998"    16rFFFF " invalid " 
+       "16r1999"    16rFFFF " invalid " 
+       "16r199A"    16rFFFF " invalid " 
+       "16r199B"    16rFFFF " invalid " 
+       "16r199C"    16rFFFF " invalid " 
+       "16r199D"    16rFFFF " invalid " 
+       "16r199E"    16rFFFF " invalid " 
+       "16r199F"    16rFFFF " invalid " 
+       "16r19A0"    16rFFFF " invalid " 
+       "16r19A1"    16rFFFF " invalid " 
+       "16r19A2"    16rFFFF " invalid " 
+       "16r19A3"    16rFFFF " invalid " 
+       "16r19A4"    16rFFFF " invalid " 
+       "16r19A5"    16rFFFF " invalid " 
+       "16r19A6"    16rFFFF " invalid " 
+       "16r19A7"    16rFFFF " invalid " 
+       "16r19A8"    16rFFFF " invalid " 
+       "16r19A9"    16rFFFF " invalid " 
+       "16r19AA"    16rFFFF " invalid " 
+       "16r19AB"    16rFFFF " invalid " 
+       "16r19AC"    16rFFFF " invalid " 
+       "16r19AD"    16rFFFF " invalid " 
+       "16r19AE"    16rFFFF " invalid " 
+       "16r19AF"    16rFFFF " invalid " 
+       "16r19B0"    16rFFFF " invalid " 
+       "16r19B1"    16rFFFF " invalid " 
+       "16r19B2"    16rFFFF " invalid " 
+       "16r19B3"    16rFFFF " invalid " 
+       "16r19B4"    16rFFFF " invalid " 
+       "16r19B5"    16rFFFF " invalid " 
+       "16r19B6"    16rFFFF " invalid " 
+       "16r19B7"    16rFFFF " invalid " 
+       "16r19B8"    16rFFFF " invalid " 
+       "16r19B9"    16rFFFF " invalid " 
+       "16r19BA"    16rFFFF " invalid " 
+       "16r19BB"    16rFFFF " invalid " 
+       "16r19BC"    16rFFFF " invalid " 
+       "16r19BD"    16rFFFF " invalid " 
+       "16r19BE"    16rFFFF " invalid " 
+       "16r19BF"    16rFFFF " invalid " 
+       "16r19C0"    16rFFFF " invalid " 
+       "16r19C1"    16rFFFF " invalid " 
+       "16r19C2"    16rFFFF " invalid " 
+       "16r19C3"    16rFFFF " invalid " 
+       "16r19C4"    16rFFFF " invalid " 
+       "16r19C5"    16rFFFF " invalid " 
+       "16r19C6"    16rFFFF " invalid " 
+       "16r19C7"    16rFFFF " invalid " 
+       "16r19C8"    16rFFFF " invalid " 
+       "16r19C9"    16rFFFF " invalid " 
+       "16r19CA"    16rFFFF " invalid " 
+       "16r19CB"    16rFFFF " invalid " 
+       "16r19CC"    16rFFFF " invalid " 
+       "16r19CD"    16rFFFF " invalid " 
+       "16r19CE"    16rFFFF " invalid " 
+       "16r19CF"    16rFFFF " invalid " 
+       "16r19D0"    16rFFFF " invalid " 
+       "16r19D1"    16rFFFF " invalid " 
+       "16r19D2"    16rFFFF " invalid " 
+       "16r19D3"    16rFFFF " invalid " 
+       "16r19D4"    16rFFFF " invalid " 
+       "16r19D5"    16rFFFF " invalid " 
+       "16r19D6"    16rFFFF " invalid " 
+       "16r19D7"    16rFFFF " invalid " 
+       "16r19D8"    16rFFFF " invalid " 
+       "16r19D9"    16rFFFF " invalid " 
+       "16r19DA"    16rFFFF " invalid " 
+       "16r19DB"    16rFFFF " invalid " 
+       "16r19DC"    16rFFFF " invalid " 
+       "16r19DD"    16rFFFF " invalid " 
+       "16r19DE"    16rFFFF " invalid " 
+       "16r19DF"    16rFFFF " invalid " 
+       "16r19E0"    16rFFFF " invalid " 
+       "16r19E1"    16rFFFF " invalid " 
+       "16r19E2"    16rFFFF " invalid " 
+       "16r19E3"    16rFFFF " invalid " 
+       "16r19E4"    16rFFFF " invalid " 
+       "16r19E5"    16rFFFF " invalid " 
+       "16r19E6"    16rFFFF " invalid " 
+       "16r19E7"    16rFFFF " invalid " 
+       "16r19E8"    16rFFFF " invalid " 
+       "16r19E9"    16rFFFF " invalid " 
+       "16r19EA"    16rFFFF " invalid " 
+       "16r19EB"    16rFFFF " invalid " 
+       "16r19EC"    16rFFFF " invalid " 
+       "16r19ED"    16rFFFF " invalid " 
+       "16r19EE"    16rFFFF " invalid " 
+       "16r19EF"    16rFFFF " invalid " 
+       "16r19F0"    16rFFFF " invalid " 
+       "16r19F1"    16rFFFF " invalid " 
+       "16r19F2"    16rFFFF " invalid " 
+       "16r19F3"    16rFFFF " invalid " 
+       "16r19F4"    16rFFFF " invalid " 
+       "16r19F5"    16rFFFF " invalid " 
+       "16r19F6"    16rFFFF " invalid " 
+       "16r19F7"    16rFFFF " invalid " 
+       "16r19F8"    16rFFFF " invalid " 
+       "16r19F9"    16rFFFF " invalid " 
+       "16r19FA"    16rFFFF " invalid " 
+       "16r19FB"    16rFFFF " invalid " 
+       "16r19FC"    16rFFFF " invalid " 
+       "16r19FD"    16rFFFF " invalid " 
+       "16r19FE"    16rFFFF " invalid " 
+       "16r19FF"    16rFFFF " invalid " 
+       "16r1A00"    16rFFFF " invalid " 
+       "16r1A01"    16rFFFF " invalid " 
+       "16r1A02"    16rFFFF " invalid " 
+       "16r1A03"    16rFFFF " invalid " 
+       "16r1A04"    16rFFFF " invalid " 
+       "16r1A05"    16rFFFF " invalid " 
+       "16r1A06"    16rFFFF " invalid " 
+       "16r1A07"    16rFFFF " invalid " 
+       "16r1A08"    16rFFFF " invalid " 
+       "16r1A09"    16rFFFF " invalid " 
+       "16r1A0A"    16rFFFF " invalid " 
+       "16r1A0B"    16rFFFF " invalid " 
+       "16r1A0C"    16rFFFF " invalid " 
+       "16r1A0D"    16rFFFF " invalid " 
+       "16r1A0E"    16rFFFF " invalid " 
+       "16r1A0F"    16rFFFF " invalid " 
+       "16r1A10"    16rFFFF " invalid " 
+       "16r1A11"    16rFFFF " invalid " 
+       "16r1A12"    16rFFFF " invalid " 
+       "16r1A13"    16rFFFF " invalid " 
+       "16r1A14"    16rFFFF " invalid " 
+       "16r1A15"    16rFFFF " invalid " 
+       "16r1A16"    16rFFFF " invalid " 
+       "16r1A17"    16rFFFF " invalid " 
+       "16r1A18"    16rFFFF " invalid " 
+       "16r1A19"    16rFFFF " invalid " 
+       "16r1A1A"    16rFFFF " invalid " 
+       "16r1A1B"    16rFFFF " invalid " 
+       "16r1A1C"    16rFFFF " invalid " 
+       "16r1A1D"    16rFFFF " invalid " 
+       "16r1A1E"    16rFFFF " invalid " 
+       "16r1A1F"    16rFFFF " invalid " 
+       "16r1A20"    16rFFFF " invalid " 
+       "16r1A21"    16rFFFF " invalid " 
+       "16r1A22"    16rFFFF " invalid " 
+       "16r1A23"    16rFFFF " invalid " 
+       "16r1A24"    16rFFFF " invalid " 
+       "16r1A25"    16rFFFF " invalid " 
+       "16r1A26"    16rFFFF " invalid " 
+       "16r1A27"    16rFFFF " invalid " 
+       "16r1A28"    16rFFFF " invalid " 
+       "16r1A29"    16rFFFF " invalid " 
+       "16r1A2A"    16rFFFF " invalid " 
+       "16r1A2B"    16rFFFF " invalid " 
+       "16r1A2C"    16rFFFF " invalid " 
+       "16r1A2D"    16rFFFF " invalid " 
+       "16r1A2E"    16rFFFF " invalid " 
+       "16r1A2F"    16rFFFF " invalid " 
+       "16r1A30"    16rFFFF " invalid " 
+       "16r1A31"    16rFFFF " invalid " 
+       "16r1A32"    16rFFFF " invalid " 
+       "16r1A33"    16rFFFF " invalid " 
+       "16r1A34"    16rFFFF " invalid " 
+       "16r1A35"    16rFFFF " invalid " 
+       "16r1A36"    16rFFFF " invalid " 
+       "16r1A37"    16rFFFF " invalid " 
+       "16r1A38"    16rFFFF " invalid " 
+       "16r1A39"    16rFFFF " invalid " 
+       "16r1A3A"    16rFFFF " invalid " 
+       "16r1A3B"    16rFFFF " invalid " 
+       "16r1A3C"    16rFFFF " invalid " 
+       "16r1A3D"    16rFFFF " invalid " 
+       "16r1A3E"    16rFFFF " invalid " 
+       "16r1A3F"    16rFFFF " invalid " 
+       "16r1A40"    16rFFFF " invalid " 
+       "16r1A41"    16rFFFF " invalid " 
+       "16r1A42"    16rFFFF " invalid " 
+       "16r1A43"    16rFFFF " invalid " 
+       "16r1A44"    16rFFFF " invalid " 
+       "16r1A45"    16rFFFF " invalid " 
+       "16r1A46"    16rFFFF " invalid " 
+       "16r1A47"    16rFFFF " invalid " 
+       "16r1A48"    16rFFFF " invalid " 
+       "16r1A49"    16rFFFF " invalid " 
+       "16r1A4A"    16rFFFF " invalid " 
+       "16r1A4B"    16rFFFF " invalid " 
+       "16r1A4C"    16rFFFF " invalid " 
+       "16r1A4D"    16rFFFF " invalid " 
+       "16r1A4E"    16rFFFF " invalid " 
+       "16r1A4F"    16rFFFF " invalid " 
+       "16r1A50"    16rFFFF " invalid " 
+       "16r1A51"    16rFFFF " invalid " 
+       "16r1A52"    16rFFFF " invalid " 
+       "16r1A53"    16rFFFF " invalid " 
+       "16r1A54"    16rFFFF " invalid " 
+       "16r1A55"    16rFFFF " invalid " 
+       "16r1A56"    16rFFFF " invalid " 
+       "16r1A57"    16rFFFF " invalid " 
+       "16r1A58"    16rFFFF " invalid " 
+       "16r1A59"    16rFFFF " invalid " 
+       "16r1A5A"    16rFFFF " invalid " 
+       "16r1A5B"    16rFFFF " invalid " 
+       "16r1A5C"    16rFFFF " invalid " 
+       "16r1A5D"    16rFFFF " invalid " 
+       "16r1A5E"    16rFFFF " invalid " 
+       "16r1A5F"    16rFFFF " invalid " 
+       "16r1A60"    16rFFFF " invalid " 
+       "16r1A61"    16rFFFF " invalid " 
+       "16r1A62"    16rFFFF " invalid " 
+       "16r1A63"    16rFFFF " invalid " 
+       "16r1A64"    16rFFFF " invalid " 
+       "16r1A65"    16rFFFF " invalid " 
+       "16r1A66"    16rFFFF " invalid " 
+       "16r1A67"    16rFFFF " invalid " 
+       "16r1A68"    16rFFFF " invalid " 
+       "16r1A69"    16rFFFF " invalid " 
+       "16r1A6A"    16rFFFF " invalid " 
+       "16r1A6B"    16rFFFF " invalid " 
+       "16r1A6C"    16rFFFF " invalid " 
+       "16r1A6D"    16rFFFF " invalid " 
+       "16r1A6E"    16rFFFF " invalid " 
+       "16r1A6F"    16rFFFF " invalid " 
+       "16r1A70"    16rFFFF " invalid " 
+       "16r1A71"    16rFFFF " invalid " 
+       "16r1A72"    16rFFFF " invalid " 
+       "16r1A73"    16rFFFF " invalid " 
+       "16r1A74"    16rFFFF " invalid " 
+       "16r1A75"    16rFFFF " invalid " 
+       "16r1A76"    16rFFFF " invalid " 
+       "16r1A77"    16rFFFF " invalid " 
+       "16r1A78"    16rFFFF " invalid " 
+       "16r1A79"    16rFFFF " invalid " 
+       "16r1A7A"    16rFFFF " invalid " 
+       "16r1A7B"    16rFFFF " invalid " 
+       "16r1A7C"    16rFFFF " invalid " 
+       "16r1A7D"    16rFFFF " invalid " 
+       "16r1A7E"    16rFFFF " invalid " 
+       "16r1A7F"    16rFFFF " invalid " 
+       "16r1A80"    16rFFFF " invalid " 
+       "16r1A81"    16rFFFF " invalid " 
+       "16r1A82"    16rFFFF " invalid " 
+       "16r1A83"    16rFFFF " invalid " 
+       "16r1A84"    16rFFFF " invalid " 
+       "16r1A85"    16rFFFF " invalid " 
+       "16r1A86"    16rFFFF " invalid " 
+       "16r1A87"    16rFFFF " invalid " 
+       "16r1A88"    16rFFFF " invalid " 
+       "16r1A89"    16rFFFF " invalid " 
+       "16r1A8A"    16rFFFF " invalid " 
+       "16r1A8B"    16rFFFF " invalid " 
+       "16r1A8C"    16rFFFF " invalid " 
+       "16r1A8D"    16rFFFF " invalid " 
+       "16r1A8E"    16rFFFF " invalid " 
+       "16r1A8F"    16rFFFF " invalid " 
+       "16r1A90"    16rFFFF " invalid " 
+       "16r1A91"    16rFFFF " invalid " 
+       "16r1A92"    16rFFFF " invalid " 
+       "16r1A93"    16rFFFF " invalid " 
+       "16r1A94"    16rFFFF " invalid " 
+       "16r1A95"    16rFFFF " invalid " 
+       "16r1A96"    16rFFFF " invalid " 
+       "16r1A97"    16rFFFF " invalid " 
+       "16r1A98"    16rFFFF " invalid " 
+       "16r1A99"    16rFFFF " invalid " 
+       "16r1A9A"    16rFFFF " invalid " 
+       "16r1A9B"    16rFFFF " invalid " 
+       "16r1A9C"    16rFFFF " invalid " 
+       "16r1A9D"    16rFFFF " invalid " 
+       "16r1A9E"    16rFFFF " invalid " 
+       "16r1A9F"    16rFFFF " invalid " 
+       "16r1AA0"    16rFFFF " invalid " 
+       "16r1AA1"    16rFFFF " invalid " 
+       "16r1AA2"    16rFFFF " invalid " 
+       "16r1AA3"    16rFFFF " invalid " 
+       "16r1AA4"    16rFFFF " invalid " 
+       "16r1AA5"    16rFFFF " invalid " 
+       "16r1AA6"    16rFFFF " invalid " 
+       "16r1AA7"    16rFFFF " invalid " 
+       "16r1AA8"    16rFFFF " invalid " 
+       "16r1AA9"    16rFFFF " invalid " 
+       "16r1AAA"    16rFFFF " invalid " 
+       "16r1AAB"    16rFFFF " invalid " 
+       "16r1AAC"    16rFFFF " invalid " 
+       "16r1AAD"    16rFFFF " invalid " 
+       "16r1AAE"    16rFFFF " invalid " 
+       "16r1AAF"    16rFFFF " invalid " 
+       "16r1AB0"    16rFFFF " invalid " 
+       "16r1AB1"    16rFFFF " invalid " 
+       "16r1AB2"    16rFFFF " invalid " 
+       "16r1AB3"    16rFFFF " invalid " 
+       "16r1AB4"    16rFFFF " invalid " 
+       "16r1AB5"    16rFFFF " invalid " 
+       "16r1AB6"    16rFFFF " invalid " 
+       "16r1AB7"    16rFFFF " invalid " 
+       "16r1AB8"    16rFFFF " invalid " 
+       "16r1AB9"    16rFFFF " invalid " 
+       "16r1ABA"    16rFFFF " invalid " 
+       "16r1ABB"    16rFFFF " invalid " 
+       "16r1ABC"    16rFFFF " invalid " 
+       "16r1ABD"    16rFFFF " invalid " 
+       "16r1ABE"    16rFFFF " invalid " 
+       "16r1ABF"    16rFFFF " invalid " 
+       "16r1AC0"    16rFFFF " invalid " 
+       "16r1AC1"    16rFFFF " invalid " 
+       "16r1AC2"    16rFFFF " invalid " 
+       "16r1AC3"    16rFFFF " invalid " 
+       "16r1AC4"    16rFFFF " invalid " 
+       "16r1AC5"    16rFFFF " invalid " 
+       "16r1AC6"    16rFFFF " invalid " 
+       "16r1AC7"    16rFFFF " invalid " 
+       "16r1AC8"    16rFFFF " invalid " 
+       "16r1AC9"    16rFFFF " invalid " 
+       "16r1ACA"    16rFFFF " invalid " 
+       "16r1ACB"    16rFFFF " invalid " 
+       "16r1ACC"    16rFFFF " invalid " 
+       "16r1ACD"    16rFFFF " invalid " 
+       "16r1ACE"    16rFFFF " invalid " 
+       "16r1ACF"    16rFFFF " invalid " 
+       "16r1AD0"    16rFFFF " invalid " 
+       "16r1AD1"    16rFFFF " invalid " 
+       "16r1AD2"    16rFFFF " invalid " 
+       "16r1AD3"    16rFFFF " invalid " 
+       "16r1AD4"    16rFFFF " invalid " 
+       "16r1AD5"    16rFFFF " invalid " 
+       "16r1AD6"    16rFFFF " invalid " 
+       "16r1AD7"    16rFFFF " invalid " 
+       "16r1AD8"    16rFFFF " invalid " 
+       "16r1AD9"    16rFFFF " invalid " 
+       "16r1ADA"    16rFFFF " invalid " 
+       "16r1ADB"    16rFFFF " invalid " 
+       "16r1ADC"    16rFFFF " invalid " 
+       "16r1ADD"    16rFFFF " invalid " 
+       "16r1ADE"    16rFFFF " invalid " 
+       "16r1ADF"    16rFFFF " invalid " 
+       "16r1AE0"    16rFFFF " invalid " 
+       "16r1AE1"    16rFFFF " invalid " 
+       "16r1AE2"    16rFFFF " invalid " 
+       "16r1AE3"    16rFFFF " invalid " 
+       "16r1AE4"    16rFFFF " invalid " 
+       "16r1AE5"    16rFFFF " invalid " 
+       "16r1AE6"    16rFFFF " invalid " 
+       "16r1AE7"    16rFFFF " invalid " 
+       "16r1AE8"    16rFFFF " invalid " 
+       "16r1AE9"    16rFFFF " invalid " 
+       "16r1AEA"    16rFFFF " invalid " 
+       "16r1AEB"    16rFFFF " invalid " 
+       "16r1AEC"    16rFFFF " invalid " 
+       "16r1AED"    16rFFFF " invalid " 
+       "16r1AEE"    16rFFFF " invalid " 
+       "16r1AEF"    16rFFFF " invalid " 
+       "16r1AF0"    16rFFFF " invalid " 
+       "16r1AF1"    16rFFFF " invalid " 
+       "16r1AF2"    16rFFFF " invalid " 
+       "16r1AF3"    16rFFFF " invalid " 
+       "16r1AF4"    16rFFFF " invalid " 
+       "16r1AF5"    16rFFFF " invalid " 
+       "16r1AF6"    16rFFFF " invalid " 
+       "16r1AF7"    16rFFFF " invalid " 
+       "16r1AF8"    16rFFFF " invalid " 
+       "16r1AF9"    16rFFFF " invalid " 
+       "16r1AFA"    16rFFFF " invalid " 
+       "16r1AFB"    16rFFFF " invalid " 
+       "16r1AFC"    16rFFFF " invalid " 
+       "16r1AFD"    16rFFFF " invalid " 
+       "16r1AFE"    16rFFFF " invalid " 
+       "16r1AFF"    16rFFFF " invalid " 
+       "16r1B00"    16rFFFF " invalid " 
+       "16r1B01"    16rFFFF " invalid " 
+       "16r1B02"    16rFFFF " invalid " 
+       "16r1B03"    16rFFFF " invalid " 
+       "16r1B04"    16rFFFF " invalid " 
+       "16r1B05"    16rFFFF " invalid " 
+       "16r1B06"    16rFFFF " invalid " 
+       "16r1B07"    16rFFFF " invalid " 
+       "16r1B08"    16rFFFF " invalid " 
+       "16r1B09"    16rFFFF " invalid " 
+       "16r1B0A"    16r000C " FORM FEED " 
+       "16r1B0B"    16rFFFF " invalid " 
+       "16r1B0C"    16rFFFF " invalid " 
+       "16r1B0D"    16rFFFF " invalid " 
+       "16r1B0E"    16rFFFF " invalid " 
+       "16r1B0F"    16rFFFF " invalid " 
+       "16r1B10"    16rFFFF " invalid " 
+       "16r1B11"    16rFFFF " invalid " 
+       "16r1B12"    16rFFFF " invalid " 
+       "16r1B13"    16rFFFF " invalid " 
+       "16r1B14"    16r005E " CIRCUMFLEX ACCENT " 
+       "16r1B15"    16rFFFF " invalid " 
+       "16r1B16"    16rFFFF " invalid " 
+       "16r1B17"    16rFFFF " invalid " 
+       "16r1B18"    16rFFFF " invalid " 
+       "16r1B19"    16rFFFF " invalid " 
+       "16r1B1A"    16rFFFF " invalid " 
+       "16r1B1B"    16rFFFF " invalid " 
+       "16r1B1C"    16rFFFF " invalid " 
+       "16r1B1D"    16rFFFF " invalid " 
+       "16r1B1E"    16rFFFF " invalid " 
+       "16r1B1F"    16rFFFF " invalid " 
+       "16r1B20"    16rFFFF " invalid " 
+       "16r1B21"    16rFFFF " invalid " 
+       "16r1B22"    16rFFFF " invalid " 
+       "16r1B23"    16rFFFF " invalid " 
+       "16r1B24"    16rFFFF " invalid " 
+       "16r1B25"    16rFFFF " invalid " 
+       "16r1B26"    16rFFFF " invalid " 
+       "16r1B27"    16rFFFF " invalid " 
+       "16r1B28"    16r007B " LEFT CURLY BRACKET " 
+       "16r1B29"    16r007D " RIGHT CURLY BRACKET " 
+       "16r1B2A"    16rFFFF " invalid " 
+       "16r1B2B"    16rFFFF " invalid " 
+       "16r1B2C"    16rFFFF " invalid " 
+       "16r1B2D"    16rFFFF " invalid " 
+       "16r1B2E"    16rFFFF " invalid " 
+       "16r1B2F"    16r005C " REVERSE SOLIDUS " 
+       "16r1B30"    16rFFFF " invalid " 
+       "16r1B31"    16rFFFF " invalid " 
+       "16r1B32"    16rFFFF " invalid " 
+       "16r1B33"    16rFFFF " invalid " 
+       "16r1B34"    16rFFFF " invalid " 
+       "16r1B35"    16rFFFF " invalid " 
+       "16r1B36"    16rFFFF " invalid " 
+       "16r1B37"    16rFFFF " invalid " 
+       "16r1B38"    16rFFFF " invalid " 
+       "16r1B39"    16rFFFF " invalid " 
+       "16r1B3A"    16rFFFF " invalid " 
+       "16r1B3B"    16rFFFF " invalid " 
+       "16r1B3C"    16r005B " LEFT SQUARE BRACKET " 
+       "16r1B3D"    16r007E " TILDE " 
+       "16r1B3E"    16r005D " RIGHT SQUARE BRACKET " 
+       "16r1B3F"    16rFFFF " invalid " 
+       "16r1B40"    16r007C " VERTICAL LINE " 
+       "16r1B41"    16rFFFF " invalid " 
+       "16r1B42"    16rFFFF " invalid " 
+       "16r1B43"    16rFFFF " invalid " 
+       "16r1B44"    16rFFFF " invalid " 
+       "16r1B45"    16rFFFF " invalid " 
+       "16r1B46"    16rFFFF " invalid " 
+       "16r1B47"    16rFFFF " invalid " 
+       "16r1B48"    16rFFFF " invalid " 
+       "16r1B49"    16rFFFF " invalid " 
+       "16r1B4A"    16rFFFF " invalid " 
+       "16r1B4B"    16rFFFF " invalid " 
+       "16r1B4C"    16rFFFF " invalid " 
+       "16r1B4D"    16rFFFF " invalid " 
+       "16r1B4E"    16rFFFF " invalid " 
+       "16r1B4F"    16rFFFF " invalid " 
+       "16r1B50"    16rFFFF " invalid " 
+       "16r1B51"    16rFFFF " invalid " 
+       "16r1B52"    16rFFFF " invalid " 
+       "16r1B53"    16rFFFF " invalid " 
+       "16r1B54"    16rFFFF " invalid " 
+       "16r1B55"    16rFFFF " invalid " 
+       "16r1B56"    16rFFFF " invalid " 
+       "16r1B57"    16rFFFF " invalid " 
+       "16r1B58"    16rFFFF " invalid " 
+       "16r1B59"    16rFFFF " invalid " 
+       "16r1B5A"    16rFFFF " invalid " 
+       "16r1B5B"    16rFFFF " invalid " 
+       "16r1B5C"    16rFFFF " invalid " 
+       "16r1B5D"    16rFFFF " invalid " 
+       "16r1B5E"    16rFFFF " invalid " 
+       "16r1B5F"    16rFFFF " invalid " 
+       "16r1B60"    16rFFFF " invalid " 
+       "16r1B61"    16rFFFF " invalid " 
+       "16r1B62"    16rFFFF " invalid " 
+       "16r1B63"    16rFFFF " invalid " 
+       "16r1B64"    16rFFFF " invalid " 
+       "16r1B65"    16r20AC " EURO SIGN " 
+       ) at:(code - -1)
 ! !
 
 !CharacterEncoder::HANGUL class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/HANGUL.TXT'
-! !
-
-!CharacterEncoder::ISO8859_1 class methodsFor:'defaults'!
-
-alternativeNamesOfEncoding
-    ^ #( 'latin-1' )
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/KSC/HANGUL.TXT'
 ! !
 
 !CharacterEncoder::ISO8859_1 class methodsFor:'mapping'!
@@ -1351,28 +9141,40 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT'
-!
-
-mappingURL2_baseName
+mappingURL2_relativePathName
     ^ 'LATIN1'
+
+    "
+     self generateCode
+    "
+! !
+
+!CharacterEncoder::ISO8859_1 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'latin-1' 'iso-ir-100' 'ibm-819' 'ms-cp819')
 ! !
 
 !CharacterEncoder::ISO8859_1 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
-
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
+
+    code > 255 ifTrue:[
+        ^ self decodingError.
+    ].
     ^ code.
 !
 
-encode:uniCodePoint
-    uniCodePoint > 16r00FF ifTrue:[
-        self error:'unicode codePoint cannot be represented'.
-        ^ $? asciiValue 
-    ].
-    ^ uniCodePoint
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode > 255 ifTrue:[
+        ^ self encodingError.
+    ].
+    ^ unicode.
 ! !
 
 !CharacterEncoder::ISO8859_1 methodsFor:'private'!
@@ -1694,21 +9496,28 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-10.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-10.TXT'
+! !
+
+!CharacterEncoder::ISO8859_10 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'latin-6' 'iso-ir-157')
 ! !
 
 !CharacterEncoder::ISO8859_10 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r00A1"    16r0104 " LATIN CAPITAL LETTER A WITH OGONEK " 
        "16r00A2"    16r0112 " LATIN CAPITAL LETTER E WITH MACRON " 
        "16r00A3"    16r0122 " LATIN CAPITAL LETTER G WITH CEDILLA " 
@@ -1804,7 +9613,261 @@
        "16r00FD"    16r00FD " LATIN SMALL LETTER Y WITH ACUTE " 
        "16r00FE"    16r00FE " LATIN SMALL LETTER THORN (Icelandic) " 
        "16r00FF"    16r0138 " LATIN SMALL LETTER KRA " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 8213 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 256 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    0 " invalid " 
+           "16r00A3"    0 " invalid " 
+           "16r00A4"    0 " invalid " 
+           "16r00A5"    0 " invalid " 
+           "16r00A6"    0 " invalid " 
+           "16r00A7"    1 " SECTION SIGN " 
+           "16r00A8"    0 " invalid " 
+           "16r00A9"    0 " invalid " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    0 " invalid " 
+           "16r00AC"    0 " invalid " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    0 " invalid " 
+           "16r00AF"    0 " invalid " 
+           "16r00B0"    1 " DEGREE SIGN " 
+           "16r00B1"    0 " invalid " 
+           "16r00B2"    0 " invalid " 
+           "16r00B3"    0 " invalid " 
+           "16r00B4"    0 " invalid " 
+           "16r00B5"    0 " invalid " 
+           "16r00B6"    0 " invalid " 
+           "16r00B7"    1 " MIDDLE DOT " 
+           "16r00B8"    0 " invalid " 
+           "16r00B9"    0 " invalid " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    0 " invalid " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    0 " invalid " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    0 " invalid " 
+           "16r00C1"    1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+           "16r00C2"    1 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+           "16r00C3"    1 " LATIN CAPITAL LETTER A WITH TILDE " 
+           "16r00C4"    1 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+           "16r00C5"    1 " LATIN CAPITAL LETTER A WITH RING ABOVE " 
+           "16r00C6"    1 " LATIN CAPITAL LETTER AE " 
+           "16r00C7"    0 " invalid " 
+           "16r00C8"    0 " invalid " 
+           "16r00C9"    1 " LATIN CAPITAL LETTER E WITH ACUTE " 
+           "16r00CA"    0 " invalid " 
+           "16r00CB"    1 " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+           "16r00CC"    0 " invalid " 
+           "16r00CD"    1 " LATIN CAPITAL LETTER I WITH ACUTE " 
+           "16r00CE"    1 " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+           "16r00CF"    1 " LATIN CAPITAL LETTER I WITH DIAERESIS " 
+           "16r00D0"    1 " LATIN CAPITAL LETTER ETH (Icelandic) " 
+           "16r00D1"    0 " invalid " 
+           "16r00D2"    0 " invalid " 
+           "16r00D3"    1 " LATIN CAPITAL LETTER O WITH ACUTE " 
+           "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    1 " LATIN CAPITAL LETTER O WITH TILDE " 
+           "16r00D6"    1 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    0 " invalid " 
+           "16r00D8"    1 " LATIN CAPITAL LETTER O WITH STROKE " 
+           "16r00D9"    0 " invalid " 
+           "16r00DA"    1 " LATIN CAPITAL LETTER U WITH ACUTE " 
+           "16r00DB"    1 " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+           "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    1 " LATIN CAPITAL LETTER Y WITH ACUTE " 
+           "16r00DE"    1 " LATIN CAPITAL LETTER THORN (Icelandic) " 
+           "16r00DF"    1 " LATIN SMALL LETTER SHARP S (German) " 
+           "16r00E0"    0 " invalid " 
+           "16r00E1"    1 " LATIN SMALL LETTER A WITH ACUTE " 
+           "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    1 " LATIN SMALL LETTER A WITH TILDE " 
+           "16r00E4"    1 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    1 " LATIN SMALL LETTER A WITH RING ABOVE " 
+           "16r00E6"    1 " LATIN SMALL LETTER AE " 
+           "16r00E7"    0 " invalid " 
+           "16r00E8"    0 " invalid " 
+           "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    0 " invalid " 
+           "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+           "16r00EC"    0 " invalid " 
+           "16r00ED"    1 " LATIN SMALL LETTER I WITH ACUTE " 
+           "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    1 " LATIN SMALL LETTER I WITH DIAERESIS " 
+           "16r00F0"    1 " LATIN SMALL LETTER ETH (Icelandic) " 
+           "16r00F1"    0 " invalid " 
+           "16r00F2"    0 " invalid " 
+           "16r00F3"    1 " LATIN SMALL LETTER O WITH ACUTE " 
+           "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    1 " LATIN SMALL LETTER O WITH TILDE " 
+           "16r00F6"    1 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    0 " invalid " 
+           "16r00F8"    1 " LATIN SMALL LETTER O WITH STROKE " 
+           "16r00F9"    0 " invalid " 
+           "16r00FA"    1 " LATIN SMALL LETTER U WITH ACUTE " 
+           "16r00FB"    1 " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+           "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    1 " LATIN SMALL LETTER Y WITH ACUTE " 
+           "16r00FE"    1 " LATIN SMALL LETTER THORN (Icelandic) " 
+           "16r00FF"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    unicode < 383 ifTrue:[
+        [
+        |t|
+        t := 
+#[
+           "16r0100"    16rC0 " LATIN CAPITAL LETTER A WITH MACRON " 
+           "16r0101"    16rE0 " LATIN SMALL LETTER A WITH MACRON " 
+           "16r0102"    16r00 " invalid " 
+           "16r0103"    16r00 " invalid " 
+           "16r0104"    16rA1 " LATIN CAPITAL LETTER A WITH OGONEK " 
+           "16r0105"    16rB1 " LATIN SMALL LETTER A WITH OGONEK " 
+           "16r0106"    16r00 " invalid " 
+           "16r0107"    16r00 " invalid " 
+           "16r0108"    16r00 " invalid " 
+           "16r0109"    16r00 " invalid " 
+           "16r010A"    16r00 " invalid " 
+           "16r010B"    16r00 " invalid " 
+           "16r010C"    16rC8 " LATIN CAPITAL LETTER C WITH CARON " 
+           "16r010D"    16rE8 " LATIN SMALL LETTER C WITH CARON " 
+           "16r010E"    16r00 " invalid " 
+           "16r010F"    16r00 " invalid " 
+           "16r0110"    16rA9 " LATIN CAPITAL LETTER D WITH STROKE " 
+           "16r0111"    16rB9 " LATIN SMALL LETTER D WITH STROKE " 
+           "16r0112"    16rA2 " LATIN CAPITAL LETTER E WITH MACRON " 
+           "16r0113"    16rB2 " LATIN SMALL LETTER E WITH MACRON " 
+           "16r0114"    16r00 " invalid " 
+           "16r0115"    16r00 " invalid " 
+           "16r0116"    16rCC " LATIN CAPITAL LETTER E WITH DOT ABOVE " 
+           "16r0117"    16rEC " LATIN SMALL LETTER E WITH DOT ABOVE " 
+           "16r0118"    16rCA " LATIN CAPITAL LETTER E WITH OGONEK " 
+           "16r0119"    16rEA " LATIN SMALL LETTER E WITH OGONEK " 
+           "16r011A"    16r00 " invalid " 
+           "16r011B"    16r00 " invalid " 
+           "16r011C"    16r00 " invalid " 
+           "16r011D"    16r00 " invalid " 
+           "16r011E"    16r00 " invalid " 
+           "16r011F"    16r00 " invalid " 
+           "16r0120"    16r00 " invalid " 
+           "16r0121"    16r00 " invalid " 
+           "16r0122"    16rA3 " LATIN CAPITAL LETTER G WITH CEDILLA " 
+           "16r0123"    16rB3 " LATIN SMALL LETTER G WITH CEDILLA " 
+           "16r0124"    16r00 " invalid " 
+           "16r0125"    16r00 " invalid " 
+           "16r0126"    16r00 " invalid " 
+           "16r0127"    16r00 " invalid " 
+           "16r0128"    16rA5 " LATIN CAPITAL LETTER I WITH TILDE " 
+           "16r0129"    16rB5 " LATIN SMALL LETTER I WITH TILDE " 
+           "16r012A"    16rA4 " LATIN CAPITAL LETTER I WITH MACRON " 
+           "16r012B"    16rB4 " LATIN SMALL LETTER I WITH MACRON " 
+           "16r012C"    16r00 " invalid " 
+           "16r012D"    16r00 " invalid " 
+           "16r012E"    16rC7 " LATIN CAPITAL LETTER I WITH OGONEK " 
+           "16r012F"    16rE7 " LATIN SMALL LETTER I WITH OGONEK " 
+           "16r0130"    16r00 " invalid " 
+           "16r0131"    16r00 " invalid " 
+           "16r0132"    16r00 " invalid " 
+           "16r0133"    16r00 " invalid " 
+           "16r0134"    16r00 " invalid " 
+           "16r0135"    16r00 " invalid " 
+           "16r0136"    16rA6 " LATIN CAPITAL LETTER K WITH CEDILLA " 
+           "16r0137"    16rB6 " LATIN SMALL LETTER K WITH CEDILLA " 
+           "16r0138"    16rFF " LATIN SMALL LETTER KRA " 
+           "16r0139"    16r00 " invalid " 
+           "16r013A"    16r00 " invalid " 
+           "16r013B"    16rA8 " LATIN CAPITAL LETTER L WITH CEDILLA " 
+           "16r013C"    16rB8 " LATIN SMALL LETTER L WITH CEDILLA " 
+           "16r013D"    16r00 " invalid " 
+           "16r013E"    16r00 " invalid " 
+           "16r013F"    16r00 " invalid " 
+           "16r0140"    16r00 " invalid " 
+           "16r0141"    16r00 " invalid " 
+           "16r0142"    16r00 " invalid " 
+           "16r0143"    16r00 " invalid " 
+           "16r0144"    16r00 " invalid " 
+           "16r0145"    16rD1 " LATIN CAPITAL LETTER N WITH CEDILLA " 
+           "16r0146"    16rF1 " LATIN SMALL LETTER N WITH CEDILLA " 
+           "16r0147"    16r00 " invalid " 
+           "16r0148"    16r00 " invalid " 
+           "16r0149"    16r00 " invalid " 
+           "16r014A"    16rAF " LATIN CAPITAL LETTER ENG " 
+           "16r014B"    16rBF " LATIN SMALL LETTER ENG " 
+           "16r014C"    16rD2 " LATIN CAPITAL LETTER O WITH MACRON " 
+           "16r014D"    16rF2 " LATIN SMALL LETTER O WITH MACRON " 
+           "16r014E"    16r00 " invalid " 
+           "16r014F"    16r00 " invalid " 
+           "16r0150"    16r00 " invalid " 
+           "16r0151"    16r00 " invalid " 
+           "16r0152"    16r00 " invalid " 
+           "16r0153"    16r00 " invalid " 
+           "16r0154"    16r00 " invalid " 
+           "16r0155"    16r00 " invalid " 
+           "16r0156"    16r00 " invalid " 
+           "16r0157"    16r00 " invalid " 
+           "16r0158"    16r00 " invalid " 
+           "16r0159"    16r00 " invalid " 
+           "16r015A"    16r00 " invalid " 
+           "16r015B"    16r00 " invalid " 
+           "16r015C"    16r00 " invalid " 
+           "16r015D"    16r00 " invalid " 
+           "16r015E"    16r00 " invalid " 
+           "16r015F"    16r00 " invalid " 
+           "16r0160"    16rAA " LATIN CAPITAL LETTER S WITH CARON " 
+           "16r0161"    16rBA " LATIN SMALL LETTER S WITH CARON " 
+           "16r0162"    16r00 " invalid " 
+           "16r0163"    16r00 " invalid " 
+           "16r0164"    16r00 " invalid " 
+           "16r0165"    16r00 " invalid " 
+           "16r0166"    16rAB " LATIN CAPITAL LETTER T WITH STROKE " 
+           "16r0167"    16rBB " LATIN SMALL LETTER T WITH STROKE " 
+           "16r0168"    16rD7 " LATIN CAPITAL LETTER U WITH TILDE " 
+           "16r0169"    16rF7 " LATIN SMALL LETTER U WITH TILDE " 
+           "16r016A"    16rAE " LATIN CAPITAL LETTER U WITH MACRON " 
+           "16r016B"    16rBE " LATIN SMALL LETTER U WITH MACRON " 
+           "16r016C"    16r00 " invalid " 
+           "16r016D"    16r00 " invalid " 
+           "16r016E"    16r00 " invalid " 
+           "16r016F"    16r00 " invalid " 
+           "16r0170"    16r00 " invalid " 
+           "16r0171"    16r00 " invalid " 
+           "16r0172"    16rD9 " LATIN CAPITAL LETTER U WITH OGONEK " 
+           "16r0173"    16rF9 " LATIN SMALL LETTER U WITH OGONEK " 
+           "16r0174"    16r00 " invalid " 
+           "16r0175"    16r00 " invalid " 
+           "16r0176"    16r00 " invalid " 
+           "16r0177"    16r00 " invalid " 
+           "16r0178"    16r00 " invalid " 
+           "16r0179"    16r00 " invalid " 
+           "16r017A"    16r00 " invalid " 
+           "16r017B"    16r00 " invalid " 
+           "16r017C"    16r00 " invalid " 
+           "16r017D"    16rAC " LATIN CAPITAL LETTER Z WITH CARON " 
+           "16r017E"    16rBC " LATIN SMALL LETTER Z WITH CARON " 
+           ] at:(unicode - 255).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 8212 ifTrue:[
+        ^ self encodingError.
+    ].
+    ^ 
+#[
+       "16r2015"    16rBD " HORIZONTAL BAR " 
+       ] at:(unicode - 8212).
 ! !
 
 !CharacterEncoder::ISO8859_11 class methodsFor:'mapping'!
@@ -2114,21 +10177,24 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-11.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-11.TXT'
 ! !
 
 !CharacterEncoder::ISO8859_11 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 251 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    [
+    |t|
+    t := 
+#(
        "16r00A1"    16r0E01 " THAI CHARACTER KO KAI " 
        "16r00A2"    16r0E02 " THAI CHARACTER KHO KHAI " 
        "16r00A3"    16r0E03 " THAI CHARACTER KHO KHUAT " 
@@ -2187,10 +10253,10 @@
        "16r00D8"    16r0E38 " THAI CHARACTER SARA U " 
        "16r00D9"    16r0E39 " THAI CHARACTER SARA UU " 
        "16r00DA"    16r0E3A " THAI CHARACTER PHINTHU " 
-       "16r00DB"    16rFFFF " invalid " 
-       "16r00DC"    16rFFFF " invalid " 
-       "16r00DD"    16rFFFF " invalid " 
-       "16r00DE"    16rFFFF " invalid " 
+       "16r00DB"    16r0000 " invalid " 
+       "16r00DC"    16r0000 " invalid " 
+       "16r00DD"    16r0000 " invalid " 
+       "16r00DE"    16r0000 " invalid " 
        "16r00DF"    16r0E3F " THAI CURRENCY SYMBOL BAHT " 
        "16r00E0"    16r0E40 " THAI CHARACTER SARA E " 
        "16r00E1"    16r0E41 " THAI CHARACTER SARA AE " 
@@ -2220,7 +10286,3548 @@
        "16r00F9"    16r0E59 " THAI DIGIT NINE " 
        "16r00FA"    16r0E5A " THAI CHARACTER ANGKHANKHU " 
        "16r00FB"    16r0E5B " THAI CHARACTER KHOMUT " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+    t == 0 ifFalse:[^ t].
+    ^ self decodingError.
+    ] value.
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 3675 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 3585 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    0 " invalid " 
+           "16r00A3"    0 " invalid " 
+           "16r00A4"    0 " invalid " 
+           "16r00A5"    0 " invalid " 
+           "16r00A6"    0 " invalid " 
+           "16r00A7"    0 " invalid " 
+           "16r00A8"    0 " invalid " 
+           "16r00A9"    0 " invalid " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    0 " invalid " 
+           "16r00AC"    0 " invalid " 
+           "16r00AD"    0 " invalid " 
+           "16r00AE"    0 " invalid " 
+           "16r00AF"    0 " invalid " 
+           "16r00B0"    0 " invalid " 
+           "16r00B1"    0 " invalid " 
+           "16r00B2"    0 " invalid " 
+           "16r00B3"    0 " invalid " 
+           "16r00B4"    0 " invalid " 
+           "16r00B5"    0 " invalid " 
+           "16r00B6"    0 " invalid " 
+           "16r00B7"    0 " invalid " 
+           "16r00B8"    0 " invalid " 
+           "16r00B9"    0 " invalid " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    0 " invalid " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    0 " invalid " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    0 " invalid " 
+           "16r00C1"    0 " invalid " 
+           "16r00C2"    0 " invalid " 
+           "16r00C3"    0 " invalid " 
+           "16r00C4"    0 " invalid " 
+           "16r00C5"    0 " invalid " 
+           "16r00C6"    0 " invalid " 
+           "16r00C7"    0 " invalid " 
+           "16r00C8"    0 " invalid " 
+           "16r00C9"    0 " invalid " 
+           "16r00CA"    0 " invalid " 
+           "16r00CB"    0 " invalid " 
+           "16r00CC"    0 " invalid " 
+           "16r00CD"    0 " invalid " 
+           "16r00CE"    0 " invalid " 
+           "16r00CF"    0 " invalid " 
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    0 " invalid " 
+           "16r00D2"    0 " invalid " 
+           "16r00D3"    0 " invalid " 
+           "16r00D4"    0 " invalid " 
+           "16r00D5"    0 " invalid " 
+           "16r00D6"    0 " invalid " 
+           "16r00D7"    0 " invalid " 
+           "16r00D8"    0 " invalid " 
+           "16r00D9"    0 " invalid " 
+           "16r00DA"    0 " invalid " 
+           "16r00DB"    0 " invalid " 
+           "16r00DC"    0 " invalid " 
+           "16r00DD"    0 " invalid " 
+           "16r00DE"    0 " invalid " 
+           "16r00DF"    0 " invalid " 
+           "16r00E0"    0 " invalid " 
+           "16r00E1"    0 " invalid " 
+           "16r00E2"    0 " invalid " 
+           "16r00E3"    0 " invalid " 
+           "16r00E4"    0 " invalid " 
+           "16r00E5"    0 " invalid " 
+           "16r00E6"    0 " invalid " 
+           "16r00E7"    0 " invalid " 
+           "16r00E8"    0 " invalid " 
+           "16r00E9"    0 " invalid " 
+           "16r00EA"    0 " invalid " 
+           "16r00EB"    0 " invalid " 
+           "16r00EC"    0 " invalid " 
+           "16r00ED"    0 " invalid " 
+           "16r00EE"    0 " invalid " 
+           "16r00EF"    0 " invalid " 
+           "16r00F0"    0 " invalid " 
+           "16r00F1"    0 " invalid " 
+           "16r00F2"    0 " invalid " 
+           "16r00F3"    0 " invalid " 
+           "16r00F4"    0 " invalid " 
+           "16r00F5"    0 " invalid " 
+           "16r00F6"    0 " invalid " 
+           "16r00F7"    0 " invalid " 
+           "16r00F8"    0 " invalid " 
+           "16r00F9"    0 " invalid " 
+           "16r00FA"    0 " invalid " 
+           "16r00FB"    0 " invalid " 
+           "16r00FC"    0 " invalid " 
+           "16r00FD"    0 " invalid " 
+           "16r00FE"    0 " invalid " 
+           "16r00FF"    0 " invalid " 
+           "16r0100"    0 " invalid " 
+           "16r0101"    0 " invalid " 
+           "16r0102"    0 " invalid " 
+           "16r0103"    0 " invalid " 
+           "16r0104"    0 " invalid " 
+           "16r0105"    0 " invalid " 
+           "16r0106"    0 " invalid " 
+           "16r0107"    0 " invalid " 
+           "16r0108"    0 " invalid " 
+           "16r0109"    0 " invalid " 
+           "16r010A"    0 " invalid " 
+           "16r010B"    0 " invalid " 
+           "16r010C"    0 " invalid " 
+           "16r010D"    0 " invalid " 
+           "16r010E"    0 " invalid " 
+           "16r010F"    0 " invalid " 
+           "16r0110"    0 " invalid " 
+           "16r0111"    0 " invalid " 
+           "16r0112"    0 " invalid " 
+           "16r0113"    0 " invalid " 
+           "16r0114"    0 " invalid " 
+           "16r0115"    0 " invalid " 
+           "16r0116"    0 " invalid " 
+           "16r0117"    0 " invalid " 
+           "16r0118"    0 " invalid " 
+           "16r0119"    0 " invalid " 
+           "16r011A"    0 " invalid " 
+           "16r011B"    0 " invalid " 
+           "16r011C"    0 " invalid " 
+           "16r011D"    0 " invalid " 
+           "16r011E"    0 " invalid " 
+           "16r011F"    0 " invalid " 
+           "16r0120"    0 " invalid " 
+           "16r0121"    0 " invalid " 
+           "16r0122"    0 " invalid " 
+           "16r0123"    0 " invalid " 
+           "16r0124"    0 " invalid " 
+           "16r0125"    0 " invalid " 
+           "16r0126"    0 " invalid " 
+           "16r0127"    0 " invalid " 
+           "16r0128"    0 " invalid " 
+           "16r0129"    0 " invalid " 
+           "16r012A"    0 " invalid " 
+           "16r012B"    0 " invalid " 
+           "16r012C"    0 " invalid " 
+           "16r012D"    0 " invalid " 
+           "16r012E"    0 " invalid " 
+           "16r012F"    0 " invalid " 
+           "16r0130"    0 " invalid " 
+           "16r0131"    0 " invalid " 
+           "16r0132"    0 " invalid " 
+           "16r0133"    0 " invalid " 
+           "16r0134"    0 " invalid " 
+           "16r0135"    0 " invalid " 
+           "16r0136"    0 " invalid " 
+           "16r0137"    0 " invalid " 
+           "16r0138"    0 " invalid " 
+           "16r0139"    0 " invalid " 
+           "16r013A"    0 " invalid " 
+           "16r013B"    0 " invalid " 
+           "16r013C"    0 " invalid " 
+           "16r013D"    0 " invalid " 
+           "16r013E"    0 " invalid " 
+           "16r013F"    0 " invalid " 
+           "16r0140"    0 " invalid " 
+           "16r0141"    0 " invalid " 
+           "16r0142"    0 " invalid " 
+           "16r0143"    0 " invalid " 
+           "16r0144"    0 " invalid " 
+           "16r0145"    0 " invalid " 
+           "16r0146"    0 " invalid " 
+           "16r0147"    0 " invalid " 
+           "16r0148"    0 " invalid " 
+           "16r0149"    0 " invalid " 
+           "16r014A"    0 " invalid " 
+           "16r014B"    0 " invalid " 
+           "16r014C"    0 " invalid " 
+           "16r014D"    0 " invalid " 
+           "16r014E"    0 " invalid " 
+           "16r014F"    0 " invalid " 
+           "16r0150"    0 " invalid " 
+           "16r0151"    0 " invalid " 
+           "16r0152"    0 " invalid " 
+           "16r0153"    0 " invalid " 
+           "16r0154"    0 " invalid " 
+           "16r0155"    0 " invalid " 
+           "16r0156"    0 " invalid " 
+           "16r0157"    0 " invalid " 
+           "16r0158"    0 " invalid " 
+           "16r0159"    0 " invalid " 
+           "16r015A"    0 " invalid " 
+           "16r015B"    0 " invalid " 
+           "16r015C"    0 " invalid " 
+           "16r015D"    0 " invalid " 
+           "16r015E"    0 " invalid " 
+           "16r015F"    0 " invalid " 
+           "16r0160"    0 " invalid " 
+           "16r0161"    0 " invalid " 
+           "16r0162"    0 " invalid " 
+           "16r0163"    0 " invalid " 
+           "16r0164"    0 " invalid " 
+           "16r0165"    0 " invalid " 
+           "16r0166"    0 " invalid " 
+           "16r0167"    0 " invalid " 
+           "16r0168"    0 " invalid " 
+           "16r0169"    0 " invalid " 
+           "16r016A"    0 " invalid " 
+           "16r016B"    0 " invalid " 
+           "16r016C"    0 " invalid " 
+           "16r016D"    0 " invalid " 
+           "16r016E"    0 " invalid " 
+           "16r016F"    0 " invalid " 
+           "16r0170"    0 " invalid " 
+           "16r0171"    0 " invalid " 
+           "16r0172"    0 " invalid " 
+           "16r0173"    0 " invalid " 
+           "16r0174"    0 " invalid " 
+           "16r0175"    0 " invalid " 
+           "16r0176"    0 " invalid " 
+           "16r0177"    0 " invalid " 
+           "16r0178"    0 " invalid " 
+           "16r0179"    0 " invalid " 
+           "16r017A"    0 " invalid " 
+           "16r017B"    0 " invalid " 
+           "16r017C"    0 " invalid " 
+           "16r017D"    0 " invalid " 
+           "16r017E"    0 " invalid " 
+           "16r017F"    0 " invalid " 
+           "16r0180"    0 " invalid " 
+           "16r0181"    0 " invalid " 
+           "16r0182"    0 " invalid " 
+           "16r0183"    0 " invalid " 
+           "16r0184"    0 " invalid " 
+           "16r0185"    0 " invalid " 
+           "16r0186"    0 " invalid " 
+           "16r0187"    0 " invalid " 
+           "16r0188"    0 " invalid " 
+           "16r0189"    0 " invalid " 
+           "16r018A"    0 " invalid " 
+           "16r018B"    0 " invalid " 
+           "16r018C"    0 " invalid " 
+           "16r018D"    0 " invalid " 
+           "16r018E"    0 " invalid " 
+           "16r018F"    0 " invalid " 
+           "16r0190"    0 " invalid " 
+           "16r0191"    0 " invalid " 
+           "16r0192"    0 " invalid " 
+           "16r0193"    0 " invalid " 
+           "16r0194"    0 " invalid " 
+           "16r0195"    0 " invalid " 
+           "16r0196"    0 " invalid " 
+           "16r0197"    0 " invalid " 
+           "16r0198"    0 " invalid " 
+           "16r0199"    0 " invalid " 
+           "16r019A"    0 " invalid " 
+           "16r019B"    0 " invalid " 
+           "16r019C"    0 " invalid " 
+           "16r019D"    0 " invalid " 
+           "16r019E"    0 " invalid " 
+           "16r019F"    0 " invalid " 
+           "16r01A0"    0 " invalid " 
+           "16r01A1"    0 " invalid " 
+           "16r01A2"    0 " invalid " 
+           "16r01A3"    0 " invalid " 
+           "16r01A4"    0 " invalid " 
+           "16r01A5"    0 " invalid " 
+           "16r01A6"    0 " invalid " 
+           "16r01A7"    0 " invalid " 
+           "16r01A8"    0 " invalid " 
+           "16r01A9"    0 " invalid " 
+           "16r01AA"    0 " invalid " 
+           "16r01AB"    0 " invalid " 
+           "16r01AC"    0 " invalid " 
+           "16r01AD"    0 " invalid " 
+           "16r01AE"    0 " invalid " 
+           "16r01AF"    0 " invalid " 
+           "16r01B0"    0 " invalid " 
+           "16r01B1"    0 " invalid " 
+           "16r01B2"    0 " invalid " 
+           "16r01B3"    0 " invalid " 
+           "16r01B4"    0 " invalid " 
+           "16r01B5"    0 " invalid " 
+           "16r01B6"    0 " invalid " 
+           "16r01B7"    0 " invalid " 
+           "16r01B8"    0 " invalid " 
+           "16r01B9"    0 " invalid " 
+           "16r01BA"    0 " invalid " 
+           "16r01BB"    0 " invalid " 
+           "16r01BC"    0 " invalid " 
+           "16r01BD"    0 " invalid " 
+           "16r01BE"    0 " invalid " 
+           "16r01BF"    0 " invalid " 
+           "16r01C0"    0 " invalid " 
+           "16r01C1"    0 " invalid " 
+           "16r01C2"    0 " invalid " 
+           "16r01C3"    0 " invalid " 
+           "16r01C4"    0 " invalid " 
+           "16r01C5"    0 " invalid " 
+           "16r01C6"    0 " invalid " 
+           "16r01C7"    0 " invalid " 
+           "16r01C8"    0 " invalid " 
+           "16r01C9"    0 " invalid " 
+           "16r01CA"    0 " invalid " 
+           "16r01CB"    0 " invalid " 
+           "16r01CC"    0 " invalid " 
+           "16r01CD"    0 " invalid " 
+           "16r01CE"    0 " invalid " 
+           "16r01CF"    0 " invalid " 
+           "16r01D0"    0 " invalid " 
+           "16r01D1"    0 " invalid " 
+           "16r01D2"    0 " invalid " 
+           "16r01D3"    0 " invalid " 
+           "16r01D4"    0 " invalid " 
+           "16r01D5"    0 " invalid " 
+           "16r01D6"    0 " invalid " 
+           "16r01D7"    0 " invalid " 
+           "16r01D8"    0 " invalid " 
+           "16r01D9"    0 " invalid " 
+           "16r01DA"    0 " invalid " 
+           "16r01DB"    0 " invalid " 
+           "16r01DC"    0 " invalid " 
+           "16r01DD"    0 " invalid " 
+           "16r01DE"    0 " invalid " 
+           "16r01DF"    0 " invalid " 
+           "16r01E0"    0 " invalid " 
+           "16r01E1"    0 " invalid " 
+           "16r01E2"    0 " invalid " 
+           "16r01E3"    0 " invalid " 
+           "16r01E4"    0 " invalid " 
+           "16r01E5"    0 " invalid " 
+           "16r01E6"    0 " invalid " 
+           "16r01E7"    0 " invalid " 
+           "16r01E8"    0 " invalid " 
+           "16r01E9"    0 " invalid " 
+           "16r01EA"    0 " invalid " 
+           "16r01EB"    0 " invalid " 
+           "16r01EC"    0 " invalid " 
+           "16r01ED"    0 " invalid " 
+           "16r01EE"    0 " invalid " 
+           "16r01EF"    0 " invalid " 
+           "16r01F0"    0 " invalid " 
+           "16r01F1"    0 " invalid " 
+           "16r01F2"    0 " invalid " 
+           "16r01F3"    0 " invalid " 
+           "16r01F4"    0 " invalid " 
+           "16r01F5"    0 " invalid " 
+           "16r01F6"    0 " invalid " 
+           "16r01F7"    0 " invalid " 
+           "16r01F8"    0 " invalid " 
+           "16r01F9"    0 " invalid " 
+           "16r01FA"    0 " invalid " 
+           "16r01FB"    0 " invalid " 
+           "16r01FC"    0 " invalid " 
+           "16r01FD"    0 " invalid " 
+           "16r01FE"    0 " invalid " 
+           "16r01FF"    0 " invalid " 
+           "16r0200"    0 " invalid " 
+           "16r0201"    0 " invalid " 
+           "16r0202"    0 " invalid " 
+           "16r0203"    0 " invalid " 
+           "16r0204"    0 " invalid " 
+           "16r0205"    0 " invalid " 
+           "16r0206"    0 " invalid " 
+           "16r0207"    0 " invalid " 
+           "16r0208"    0 " invalid " 
+           "16r0209"    0 " invalid " 
+           "16r020A"    0 " invalid " 
+           "16r020B"    0 " invalid " 
+           "16r020C"    0 " invalid " 
+           "16r020D"    0 " invalid " 
+           "16r020E"    0 " invalid " 
+           "16r020F"    0 " invalid " 
+           "16r0210"    0 " invalid " 
+           "16r0211"    0 " invalid " 
+           "16r0212"    0 " invalid " 
+           "16r0213"    0 " invalid " 
+           "16r0214"    0 " invalid " 
+           "16r0215"    0 " invalid " 
+           "16r0216"    0 " invalid " 
+           "16r0217"    0 " invalid " 
+           "16r0218"    0 " invalid " 
+           "16r0219"    0 " invalid " 
+           "16r021A"    0 " invalid " 
+           "16r021B"    0 " invalid " 
+           "16r021C"    0 " invalid " 
+           "16r021D"    0 " invalid " 
+           "16r021E"    0 " invalid " 
+           "16r021F"    0 " invalid " 
+           "16r0220"    0 " invalid " 
+           "16r0221"    0 " invalid " 
+           "16r0222"    0 " invalid " 
+           "16r0223"    0 " invalid " 
+           "16r0224"    0 " invalid " 
+           "16r0225"    0 " invalid " 
+           "16r0226"    0 " invalid " 
+           "16r0227"    0 " invalid " 
+           "16r0228"    0 " invalid " 
+           "16r0229"    0 " invalid " 
+           "16r022A"    0 " invalid " 
+           "16r022B"    0 " invalid " 
+           "16r022C"    0 " invalid " 
+           "16r022D"    0 " invalid " 
+           "16r022E"    0 " invalid " 
+           "16r022F"    0 " invalid " 
+           "16r0230"    0 " invalid " 
+           "16r0231"    0 " invalid " 
+           "16r0232"    0 " invalid " 
+           "16r0233"    0 " invalid " 
+           "16r0234"    0 " invalid " 
+           "16r0235"    0 " invalid " 
+           "16r0236"    0 " invalid " 
+           "16r0237"    0 " invalid " 
+           "16r0238"    0 " invalid " 
+           "16r0239"    0 " invalid " 
+           "16r023A"    0 " invalid " 
+           "16r023B"    0 " invalid " 
+           "16r023C"    0 " invalid " 
+           "16r023D"    0 " invalid " 
+           "16r023E"    0 " invalid " 
+           "16r023F"    0 " invalid " 
+           "16r0240"    0 " invalid " 
+           "16r0241"    0 " invalid " 
+           "16r0242"    0 " invalid " 
+           "16r0243"    0 " invalid " 
+           "16r0244"    0 " invalid " 
+           "16r0245"    0 " invalid " 
+           "16r0246"    0 " invalid " 
+           "16r0247"    0 " invalid " 
+           "16r0248"    0 " invalid " 
+           "16r0249"    0 " invalid " 
+           "16r024A"    0 " invalid " 
+           "16r024B"    0 " invalid " 
+           "16r024C"    0 " invalid " 
+           "16r024D"    0 " invalid " 
+           "16r024E"    0 " invalid " 
+           "16r024F"    0 " invalid " 
+           "16r0250"    0 " invalid " 
+           "16r0251"    0 " invalid " 
+           "16r0252"    0 " invalid " 
+           "16r0253"    0 " invalid " 
+           "16r0254"    0 " invalid " 
+           "16r0255"    0 " invalid " 
+           "16r0256"    0 " invalid " 
+           "16r0257"    0 " invalid " 
+           "16r0258"    0 " invalid " 
+           "16r0259"    0 " invalid " 
+           "16r025A"    0 " invalid " 
+           "16r025B"    0 " invalid " 
+           "16r025C"    0 " invalid " 
+           "16r025D"    0 " invalid " 
+           "16r025E"    0 " invalid " 
+           "16r025F"    0 " invalid " 
+           "16r0260"    0 " invalid " 
+           "16r0261"    0 " invalid " 
+           "16r0262"    0 " invalid " 
+           "16r0263"    0 " invalid " 
+           "16r0264"    0 " invalid " 
+           "16r0265"    0 " invalid " 
+           "16r0266"    0 " invalid " 
+           "16r0267"    0 " invalid " 
+           "16r0268"    0 " invalid " 
+           "16r0269"    0 " invalid " 
+           "16r026A"    0 " invalid " 
+           "16r026B"    0 " invalid " 
+           "16r026C"    0 " invalid " 
+           "16r026D"    0 " invalid " 
+           "16r026E"    0 " invalid " 
+           "16r026F"    0 " invalid " 
+           "16r0270"    0 " invalid " 
+           "16r0271"    0 " invalid " 
+           "16r0272"    0 " invalid " 
+           "16r0273"    0 " invalid " 
+           "16r0274"    0 " invalid " 
+           "16r0275"    0 " invalid " 
+           "16r0276"    0 " invalid " 
+           "16r0277"    0 " invalid " 
+           "16r0278"    0 " invalid " 
+           "16r0279"    0 " invalid " 
+           "16r027A"    0 " invalid " 
+           "16r027B"    0 " invalid " 
+           "16r027C"    0 " invalid " 
+           "16r027D"    0 " invalid " 
+           "16r027E"    0 " invalid " 
+           "16r027F"    0 " invalid " 
+           "16r0280"    0 " invalid " 
+           "16r0281"    0 " invalid " 
+           "16r0282"    0 " invalid " 
+           "16r0283"    0 " invalid " 
+           "16r0284"    0 " invalid " 
+           "16r0285"    0 " invalid " 
+           "16r0286"    0 " invalid " 
+           "16r0287"    0 " invalid " 
+           "16r0288"    0 " invalid " 
+           "16r0289"    0 " invalid " 
+           "16r028A"    0 " invalid " 
+           "16r028B"    0 " invalid " 
+           "16r028C"    0 " invalid " 
+           "16r028D"    0 " invalid " 
+           "16r028E"    0 " invalid " 
+           "16r028F"    0 " invalid " 
+           "16r0290"    0 " invalid " 
+           "16r0291"    0 " invalid " 
+           "16r0292"    0 " invalid " 
+           "16r0293"    0 " invalid " 
+           "16r0294"    0 " invalid " 
+           "16r0295"    0 " invalid " 
+           "16r0296"    0 " invalid " 
+           "16r0297"    0 " invalid " 
+           "16r0298"    0 " invalid " 
+           "16r0299"    0 " invalid " 
+           "16r029A"    0 " invalid " 
+           "16r029B"    0 " invalid " 
+           "16r029C"    0 " invalid " 
+           "16r029D"    0 " invalid " 
+           "16r029E"    0 " invalid " 
+           "16r029F"    0 " invalid " 
+           "16r02A0"    0 " invalid " 
+           "16r02A1"    0 " invalid " 
+           "16r02A2"    0 " invalid " 
+           "16r02A3"    0 " invalid " 
+           "16r02A4"    0 " invalid " 
+           "16r02A5"    0 " invalid " 
+           "16r02A6"    0 " invalid " 
+           "16r02A7"    0 " invalid " 
+           "16r02A8"    0 " invalid " 
+           "16r02A9"    0 " invalid " 
+           "16r02AA"    0 " invalid " 
+           "16r02AB"    0 " invalid " 
+           "16r02AC"    0 " invalid " 
+           "16r02AD"    0 " invalid " 
+           "16r02AE"    0 " invalid " 
+           "16r02AF"    0 " invalid " 
+           "16r02B0"    0 " invalid " 
+           "16r02B1"    0 " invalid " 
+           "16r02B2"    0 " invalid " 
+           "16r02B3"    0 " invalid " 
+           "16r02B4"    0 " invalid " 
+           "16r02B5"    0 " invalid " 
+           "16r02B6"    0 " invalid " 
+           "16r02B7"    0 " invalid " 
+           "16r02B8"    0 " invalid " 
+           "16r02B9"    0 " invalid " 
+           "16r02BA"    0 " invalid " 
+           "16r02BB"    0 " invalid " 
+           "16r02BC"    0 " invalid " 
+           "16r02BD"    0 " invalid " 
+           "16r02BE"    0 " invalid " 
+           "16r02BF"    0 " invalid " 
+           "16r02C0"    0 " invalid " 
+           "16r02C1"    0 " invalid " 
+           "16r02C2"    0 " invalid " 
+           "16r02C3"    0 " invalid " 
+           "16r02C4"    0 " invalid " 
+           "16r02C5"    0 " invalid " 
+           "16r02C6"    0 " invalid " 
+           "16r02C7"    0 " invalid " 
+           "16r02C8"    0 " invalid " 
+           "16r02C9"    0 " invalid " 
+           "16r02CA"    0 " invalid " 
+           "16r02CB"    0 " invalid " 
+           "16r02CC"    0 " invalid " 
+           "16r02CD"    0 " invalid " 
+           "16r02CE"    0 " invalid " 
+           "16r02CF"    0 " invalid " 
+           "16r02D0"    0 " invalid " 
+           "16r02D1"    0 " invalid " 
+           "16r02D2"    0 " invalid " 
+           "16r02D3"    0 " invalid " 
+           "16r02D4"    0 " invalid " 
+           "16r02D5"    0 " invalid " 
+           "16r02D6"    0 " invalid " 
+           "16r02D7"    0 " invalid " 
+           "16r02D8"    0 " invalid " 
+           "16r02D9"    0 " invalid " 
+           "16r02DA"    0 " invalid " 
+           "16r02DB"    0 " invalid " 
+           "16r02DC"    0 " invalid " 
+           "16r02DD"    0 " invalid " 
+           "16r02DE"    0 " invalid " 
+           "16r02DF"    0 " invalid " 
+           "16r02E0"    0 " invalid " 
+           "16r02E1"    0 " invalid " 
+           "16r02E2"    0 " invalid " 
+           "16r02E3"    0 " invalid " 
+           "16r02E4"    0 " invalid " 
+           "16r02E5"    0 " invalid " 
+           "16r02E6"    0 " invalid " 
+           "16r02E7"    0 " invalid " 
+           "16r02E8"    0 " invalid " 
+           "16r02E9"    0 " invalid " 
+           "16r02EA"    0 " invalid " 
+           "16r02EB"    0 " invalid " 
+           "16r02EC"    0 " invalid " 
+           "16r02ED"    0 " invalid " 
+           "16r02EE"    0 " invalid " 
+           "16r02EF"    0 " invalid " 
+           "16r02F0"    0 " invalid " 
+           "16r02F1"    0 " invalid " 
+           "16r02F2"    0 " invalid " 
+           "16r02F3"    0 " invalid " 
+           "16r02F4"    0 " invalid " 
+           "16r02F5"    0 " invalid " 
+           "16r02F6"    0 " invalid " 
+           "16r02F7"    0 " invalid " 
+           "16r02F8"    0 " invalid " 
+           "16r02F9"    0 " invalid " 
+           "16r02FA"    0 " invalid " 
+           "16r02FB"    0 " invalid " 
+           "16r02FC"    0 " invalid " 
+           "16r02FD"    0 " invalid " 
+           "16r02FE"    0 " invalid " 
+           "16r02FF"    0 " invalid " 
+           "16r0300"    0 " invalid " 
+           "16r0301"    0 " invalid " 
+           "16r0302"    0 " invalid " 
+           "16r0303"    0 " invalid " 
+           "16r0304"    0 " invalid " 
+           "16r0305"    0 " invalid " 
+           "16r0306"    0 " invalid " 
+           "16r0307"    0 " invalid " 
+           "16r0308"    0 " invalid " 
+           "16r0309"    0 " invalid " 
+           "16r030A"    0 " invalid " 
+           "16r030B"    0 " invalid " 
+           "16r030C"    0 " invalid " 
+           "16r030D"    0 " invalid " 
+           "16r030E"    0 " invalid " 
+           "16r030F"    0 " invalid " 
+           "16r0310"    0 " invalid " 
+           "16r0311"    0 " invalid " 
+           "16r0312"    0 " invalid " 
+           "16r0313"    0 " invalid " 
+           "16r0314"    0 " invalid " 
+           "16r0315"    0 " invalid " 
+           "16r0316"    0 " invalid " 
+           "16r0317"    0 " invalid " 
+           "16r0318"    0 " invalid " 
+           "16r0319"    0 " invalid " 
+           "16r031A"    0 " invalid " 
+           "16r031B"    0 " invalid " 
+           "16r031C"    0 " invalid " 
+           "16r031D"    0 " invalid " 
+           "16r031E"    0 " invalid " 
+           "16r031F"    0 " invalid " 
+           "16r0320"    0 " invalid " 
+           "16r0321"    0 " invalid " 
+           "16r0322"    0 " invalid " 
+           "16r0323"    0 " invalid " 
+           "16r0324"    0 " invalid " 
+           "16r0325"    0 " invalid " 
+           "16r0326"    0 " invalid " 
+           "16r0327"    0 " invalid " 
+           "16r0328"    0 " invalid " 
+           "16r0329"    0 " invalid " 
+           "16r032A"    0 " invalid " 
+           "16r032B"    0 " invalid " 
+           "16r032C"    0 " invalid " 
+           "16r032D"    0 " invalid " 
+           "16r032E"    0 " invalid " 
+           "16r032F"    0 " invalid " 
+           "16r0330"    0 " invalid " 
+           "16r0331"    0 " invalid " 
+           "16r0332"    0 " invalid " 
+           "16r0333"    0 " invalid " 
+           "16r0334"    0 " invalid " 
+           "16r0335"    0 " invalid " 
+           "16r0336"    0 " invalid " 
+           "16r0337"    0 " invalid " 
+           "16r0338"    0 " invalid " 
+           "16r0339"    0 " invalid " 
+           "16r033A"    0 " invalid " 
+           "16r033B"    0 " invalid " 
+           "16r033C"    0 " invalid " 
+           "16r033D"    0 " invalid " 
+           "16r033E"    0 " invalid " 
+           "16r033F"    0 " invalid " 
+           "16r0340"    0 " invalid " 
+           "16r0341"    0 " invalid " 
+           "16r0342"    0 " invalid " 
+           "16r0343"    0 " invalid " 
+           "16r0344"    0 " invalid " 
+           "16r0345"    0 " invalid " 
+           "16r0346"    0 " invalid " 
+           "16r0347"    0 " invalid " 
+           "16r0348"    0 " invalid " 
+           "16r0349"    0 " invalid " 
+           "16r034A"    0 " invalid " 
+           "16r034B"    0 " invalid " 
+           "16r034C"    0 " invalid " 
+           "16r034D"    0 " invalid " 
+           "16r034E"    0 " invalid " 
+           "16r034F"    0 " invalid " 
+           "16r0350"    0 " invalid " 
+           "16r0351"    0 " invalid " 
+           "16r0352"    0 " invalid " 
+           "16r0353"    0 " invalid " 
+           "16r0354"    0 " invalid " 
+           "16r0355"    0 " invalid " 
+           "16r0356"    0 " invalid " 
+           "16r0357"    0 " invalid " 
+           "16r0358"    0 " invalid " 
+           "16r0359"    0 " invalid " 
+           "16r035A"    0 " invalid " 
+           "16r035B"    0 " invalid " 
+           "16r035C"    0 " invalid " 
+           "16r035D"    0 " invalid " 
+           "16r035E"    0 " invalid " 
+           "16r035F"    0 " invalid " 
+           "16r0360"    0 " invalid " 
+           "16r0361"    0 " invalid " 
+           "16r0362"    0 " invalid " 
+           "16r0363"    0 " invalid " 
+           "16r0364"    0 " invalid " 
+           "16r0365"    0 " invalid " 
+           "16r0366"    0 " invalid " 
+           "16r0367"    0 " invalid " 
+           "16r0368"    0 " invalid " 
+           "16r0369"    0 " invalid " 
+           "16r036A"    0 " invalid " 
+           "16r036B"    0 " invalid " 
+           "16r036C"    0 " invalid " 
+           "16r036D"    0 " invalid " 
+           "16r036E"    0 " invalid " 
+           "16r036F"    0 " invalid " 
+           "16r0370"    0 " invalid " 
+           "16r0371"    0 " invalid " 
+           "16r0372"    0 " invalid " 
+           "16r0373"    0 " invalid " 
+           "16r0374"    0 " invalid " 
+           "16r0375"    0 " invalid " 
+           "16r0376"    0 " invalid " 
+           "16r0377"    0 " invalid " 
+           "16r0378"    0 " invalid " 
+           "16r0379"    0 " invalid " 
+           "16r037A"    0 " invalid " 
+           "16r037B"    0 " invalid " 
+           "16r037C"    0 " invalid " 
+           "16r037D"    0 " invalid " 
+           "16r037E"    0 " invalid " 
+           "16r037F"    0 " invalid " 
+           "16r0380"    0 " invalid " 
+           "16r0381"    0 " invalid " 
+           "16r0382"    0 " invalid " 
+           "16r0383"    0 " invalid " 
+           "16r0384"    0 " invalid " 
+           "16r0385"    0 " invalid " 
+           "16r0386"    0 " invalid " 
+           "16r0387"    0 " invalid " 
+           "16r0388"    0 " invalid " 
+           "16r0389"    0 " invalid " 
+           "16r038A"    0 " invalid " 
+           "16r038B"    0 " invalid " 
+           "16r038C"    0 " invalid " 
+           "16r038D"    0 " invalid " 
+           "16r038E"    0 " invalid " 
+           "16r038F"    0 " invalid " 
+           "16r0390"    0 " invalid " 
+           "16r0391"    0 " invalid " 
+           "16r0392"    0 " invalid " 
+           "16r0393"    0 " invalid " 
+           "16r0394"    0 " invalid " 
+           "16r0395"    0 " invalid " 
+           "16r0396"    0 " invalid " 
+           "16r0397"    0 " invalid " 
+           "16r0398"    0 " invalid " 
+           "16r0399"    0 " invalid " 
+           "16r039A"    0 " invalid " 
+           "16r039B"    0 " invalid " 
+           "16r039C"    0 " invalid " 
+           "16r039D"    0 " invalid " 
+           "16r039E"    0 " invalid " 
+           "16r039F"    0 " invalid " 
+           "16r03A0"    0 " invalid " 
+           "16r03A1"    0 " invalid " 
+           "16r03A2"    0 " invalid " 
+           "16r03A3"    0 " invalid " 
+           "16r03A4"    0 " invalid " 
+           "16r03A5"    0 " invalid " 
+           "16r03A6"    0 " invalid " 
+           "16r03A7"    0 " invalid " 
+           "16r03A8"    0 " invalid " 
+           "16r03A9"    0 " invalid " 
+           "16r03AA"    0 " invalid " 
+           "16r03AB"    0 " invalid " 
+           "16r03AC"    0 " invalid " 
+           "16r03AD"    0 " invalid " 
+           "16r03AE"    0 " invalid " 
+           "16r03AF"    0 " invalid " 
+           "16r03B0"    0 " invalid " 
+           "16r03B1"    0 " invalid " 
+           "16r03B2"    0 " invalid " 
+           "16r03B3"    0 " invalid " 
+           "16r03B4"    0 " invalid " 
+           "16r03B5"    0 " invalid " 
+           "16r03B6"    0 " invalid " 
+           "16r03B7"    0 " invalid " 
+           "16r03B8"    0 " invalid " 
+           "16r03B9"    0 " invalid " 
+           "16r03BA"    0 " invalid " 
+           "16r03BB"    0 " invalid " 
+           "16r03BC"    0 " invalid " 
+           "16r03BD"    0 " invalid " 
+           "16r03BE"    0 " invalid " 
+           "16r03BF"    0 " invalid " 
+           "16r03C0"    0 " invalid " 
+           "16r03C1"    0 " invalid " 
+           "16r03C2"    0 " invalid " 
+           "16r03C3"    0 " invalid " 
+           "16r03C4"    0 " invalid " 
+           "16r03C5"    0 " invalid " 
+           "16r03C6"    0 " invalid " 
+           "16r03C7"    0 " invalid " 
+           "16r03C8"    0 " invalid " 
+           "16r03C9"    0 " invalid " 
+           "16r03CA"    0 " invalid " 
+           "16r03CB"    0 " invalid " 
+           "16r03CC"    0 " invalid " 
+           "16r03CD"    0 " invalid " 
+           "16r03CE"    0 " invalid " 
+           "16r03CF"    0 " invalid " 
+           "16r03D0"    0 " invalid " 
+           "16r03D1"    0 " invalid " 
+           "16r03D2"    0 " invalid " 
+           "16r03D3"    0 " invalid " 
+           "16r03D4"    0 " invalid " 
+           "16r03D5"    0 " invalid " 
+           "16r03D6"    0 " invalid " 
+           "16r03D7"    0 " invalid " 
+           "16r03D8"    0 " invalid " 
+           "16r03D9"    0 " invalid " 
+           "16r03DA"    0 " invalid " 
+           "16r03DB"    0 " invalid " 
+           "16r03DC"    0 " invalid " 
+           "16r03DD"    0 " invalid " 
+           "16r03DE"    0 " invalid " 
+           "16r03DF"    0 " invalid " 
+           "16r03E0"    0 " invalid " 
+           "16r03E1"    0 " invalid " 
+           "16r03E2"    0 " invalid " 
+           "16r03E3"    0 " invalid " 
+           "16r03E4"    0 " invalid " 
+           "16r03E5"    0 " invalid " 
+           "16r03E6"    0 " invalid " 
+           "16r03E7"    0 " invalid " 
+           "16r03E8"    0 " invalid " 
+           "16r03E9"    0 " invalid " 
+           "16r03EA"    0 " invalid " 
+           "16r03EB"    0 " invalid " 
+           "16r03EC"    0 " invalid " 
+           "16r03ED"    0 " invalid " 
+           "16r03EE"    0 " invalid " 
+           "16r03EF"    0 " invalid " 
+           "16r03F0"    0 " invalid " 
+           "16r03F1"    0 " invalid " 
+           "16r03F2"    0 " invalid " 
+           "16r03F3"    0 " invalid " 
+           "16r03F4"    0 " invalid " 
+           "16r03F5"    0 " invalid " 
+           "16r03F6"    0 " invalid " 
+           "16r03F7"    0 " invalid " 
+           "16r03F8"    0 " invalid " 
+           "16r03F9"    0 " invalid " 
+           "16r03FA"    0 " invalid " 
+           "16r03FB"    0 " invalid " 
+           "16r03FC"    0 " invalid " 
+           "16r03FD"    0 " invalid " 
+           "16r03FE"    0 " invalid " 
+           "16r03FF"    0 " invalid " 
+           "16r0400"    0 " invalid " 
+           "16r0401"    0 " invalid " 
+           "16r0402"    0 " invalid " 
+           "16r0403"    0 " invalid " 
+           "16r0404"    0 " invalid " 
+           "16r0405"    0 " invalid " 
+           "16r0406"    0 " invalid " 
+           "16r0407"    0 " invalid " 
+           "16r0408"    0 " invalid " 
+           "16r0409"    0 " invalid " 
+           "16r040A"    0 " invalid " 
+           "16r040B"    0 " invalid " 
+           "16r040C"    0 " invalid " 
+           "16r040D"    0 " invalid " 
+           "16r040E"    0 " invalid " 
+           "16r040F"    0 " invalid " 
+           "16r0410"    0 " invalid " 
+           "16r0411"    0 " invalid " 
+           "16r0412"    0 " invalid " 
+           "16r0413"    0 " invalid " 
+           "16r0414"    0 " invalid " 
+           "16r0415"    0 " invalid " 
+           "16r0416"    0 " invalid " 
+           "16r0417"    0 " invalid " 
+           "16r0418"    0 " invalid " 
+           "16r0419"    0 " invalid " 
+           "16r041A"    0 " invalid " 
+           "16r041B"    0 " invalid " 
+           "16r041C"    0 " invalid " 
+           "16r041D"    0 " invalid " 
+           "16r041E"    0 " invalid " 
+           "16r041F"    0 " invalid " 
+           "16r0420"    0 " invalid " 
+           "16r0421"    0 " invalid " 
+           "16r0422"    0 " invalid " 
+           "16r0423"    0 " invalid " 
+           "16r0424"    0 " invalid " 
+           "16r0425"    0 " invalid " 
+           "16r0426"    0 " invalid " 
+           "16r0427"    0 " invalid " 
+           "16r0428"    0 " invalid " 
+           "16r0429"    0 " invalid " 
+           "16r042A"    0 " invalid " 
+           "16r042B"    0 " invalid " 
+           "16r042C"    0 " invalid " 
+           "16r042D"    0 " invalid " 
+           "16r042E"    0 " invalid " 
+           "16r042F"    0 " invalid " 
+           "16r0430"    0 " invalid " 
+           "16r0431"    0 " invalid " 
+           "16r0432"    0 " invalid " 
+           "16r0433"    0 " invalid " 
+           "16r0434"    0 " invalid " 
+           "16r0435"    0 " invalid " 
+           "16r0436"    0 " invalid " 
+           "16r0437"    0 " invalid " 
+           "16r0438"    0 " invalid " 
+           "16r0439"    0 " invalid " 
+           "16r043A"    0 " invalid " 
+           "16r043B"    0 " invalid " 
+           "16r043C"    0 " invalid " 
+           "16r043D"    0 " invalid " 
+           "16r043E"    0 " invalid " 
+           "16r043F"    0 " invalid " 
+           "16r0440"    0 " invalid " 
+           "16r0441"    0 " invalid " 
+           "16r0442"    0 " invalid " 
+           "16r0443"    0 " invalid " 
+           "16r0444"    0 " invalid " 
+           "16r0445"    0 " invalid " 
+           "16r0446"    0 " invalid " 
+           "16r0447"    0 " invalid " 
+           "16r0448"    0 " invalid " 
+           "16r0449"    0 " invalid " 
+           "16r044A"    0 " invalid " 
+           "16r044B"    0 " invalid " 
+           "16r044C"    0 " invalid " 
+           "16r044D"    0 " invalid " 
+           "16r044E"    0 " invalid " 
+           "16r044F"    0 " invalid " 
+           "16r0450"    0 " invalid " 
+           "16r0451"    0 " invalid " 
+           "16r0452"    0 " invalid " 
+           "16r0453"    0 " invalid " 
+           "16r0454"    0 " invalid " 
+           "16r0455"    0 " invalid " 
+           "16r0456"    0 " invalid " 
+           "16r0457"    0 " invalid " 
+           "16r0458"    0 " invalid " 
+           "16r0459"    0 " invalid " 
+           "16r045A"    0 " invalid " 
+           "16r045B"    0 " invalid " 
+           "16r045C"    0 " invalid " 
+           "16r045D"    0 " invalid " 
+           "16r045E"    0 " invalid " 
+           "16r045F"    0 " invalid " 
+           "16r0460"    0 " invalid " 
+           "16r0461"    0 " invalid " 
+           "16r0462"    0 " invalid " 
+           "16r0463"    0 " invalid " 
+           "16r0464"    0 " invalid " 
+           "16r0465"    0 " invalid " 
+           "16r0466"    0 " invalid " 
+           "16r0467"    0 " invalid " 
+           "16r0468"    0 " invalid " 
+           "16r0469"    0 " invalid " 
+           "16r046A"    0 " invalid " 
+           "16r046B"    0 " invalid " 
+           "16r046C"    0 " invalid " 
+           "16r046D"    0 " invalid " 
+           "16r046E"    0 " invalid " 
+           "16r046F"    0 " invalid " 
+           "16r0470"    0 " invalid " 
+           "16r0471"    0 " invalid " 
+           "16r0472"    0 " invalid " 
+           "16r0473"    0 " invalid " 
+           "16r0474"    0 " invalid " 
+           "16r0475"    0 " invalid " 
+           "16r0476"    0 " invalid " 
+           "16r0477"    0 " invalid " 
+           "16r0478"    0 " invalid " 
+           "16r0479"    0 " invalid " 
+           "16r047A"    0 " invalid " 
+           "16r047B"    0 " invalid " 
+           "16r047C"    0 " invalid " 
+           "16r047D"    0 " invalid " 
+           "16r047E"    0 " invalid " 
+           "16r047F"    0 " invalid " 
+           "16r0480"    0 " invalid " 
+           "16r0481"    0 " invalid " 
+           "16r0482"    0 " invalid " 
+           "16r0483"    0 " invalid " 
+           "16r0484"    0 " invalid " 
+           "16r0485"    0 " invalid " 
+           "16r0486"    0 " invalid " 
+           "16r0487"    0 " invalid " 
+           "16r0488"    0 " invalid " 
+           "16r0489"    0 " invalid " 
+           "16r048A"    0 " invalid " 
+           "16r048B"    0 " invalid " 
+           "16r048C"    0 " invalid " 
+           "16r048D"    0 " invalid " 
+           "16r048E"    0 " invalid " 
+           "16r048F"    0 " invalid " 
+           "16r0490"    0 " invalid " 
+           "16r0491"    0 " invalid " 
+           "16r0492"    0 " invalid " 
+           "16r0493"    0 " invalid " 
+           "16r0494"    0 " invalid " 
+           "16r0495"    0 " invalid " 
+           "16r0496"    0 " invalid " 
+           "16r0497"    0 " invalid " 
+           "16r0498"    0 " invalid " 
+           "16r0499"    0 " invalid " 
+           "16r049A"    0 " invalid " 
+           "16r049B"    0 " invalid " 
+           "16r049C"    0 " invalid " 
+           "16r049D"    0 " invalid " 
+           "16r049E"    0 " invalid " 
+           "16r049F"    0 " invalid " 
+           "16r04A0"    0 " invalid " 
+           "16r04A1"    0 " invalid " 
+           "16r04A2"    0 " invalid " 
+           "16r04A3"    0 " invalid " 
+           "16r04A4"    0 " invalid " 
+           "16r04A5"    0 " invalid " 
+           "16r04A6"    0 " invalid " 
+           "16r04A7"    0 " invalid " 
+           "16r04A8"    0 " invalid " 
+           "16r04A9"    0 " invalid " 
+           "16r04AA"    0 " invalid " 
+           "16r04AB"    0 " invalid " 
+           "16r04AC"    0 " invalid " 
+           "16r04AD"    0 " invalid " 
+           "16r04AE"    0 " invalid " 
+           "16r04AF"    0 " invalid " 
+           "16r04B0"    0 " invalid " 
+           "16r04B1"    0 " invalid " 
+           "16r04B2"    0 " invalid " 
+           "16r04B3"    0 " invalid " 
+           "16r04B4"    0 " invalid " 
+           "16r04B5"    0 " invalid " 
+           "16r04B6"    0 " invalid " 
+           "16r04B7"    0 " invalid " 
+           "16r04B8"    0 " invalid " 
+           "16r04B9"    0 " invalid " 
+           "16r04BA"    0 " invalid " 
+           "16r04BB"    0 " invalid " 
+           "16r04BC"    0 " invalid " 
+           "16r04BD"    0 " invalid " 
+           "16r04BE"    0 " invalid " 
+           "16r04BF"    0 " invalid " 
+           "16r04C0"    0 " invalid " 
+           "16r04C1"    0 " invalid " 
+           "16r04C2"    0 " invalid " 
+           "16r04C3"    0 " invalid " 
+           "16r04C4"    0 " invalid " 
+           "16r04C5"    0 " invalid " 
+           "16r04C6"    0 " invalid " 
+           "16r04C7"    0 " invalid " 
+           "16r04C8"    0 " invalid " 
+           "16r04C9"    0 " invalid " 
+           "16r04CA"    0 " invalid " 
+           "16r04CB"    0 " invalid " 
+           "16r04CC"    0 " invalid " 
+           "16r04CD"    0 " invalid " 
+           "16r04CE"    0 " invalid " 
+           "16r04CF"    0 " invalid " 
+           "16r04D0"    0 " invalid " 
+           "16r04D1"    0 " invalid " 
+           "16r04D2"    0 " invalid " 
+           "16r04D3"    0 " invalid " 
+           "16r04D4"    0 " invalid " 
+           "16r04D5"    0 " invalid " 
+           "16r04D6"    0 " invalid " 
+           "16r04D7"    0 " invalid " 
+           "16r04D8"    0 " invalid " 
+           "16r04D9"    0 " invalid " 
+           "16r04DA"    0 " invalid " 
+           "16r04DB"    0 " invalid " 
+           "16r04DC"    0 " invalid " 
+           "16r04DD"    0 " invalid " 
+           "16r04DE"    0 " invalid " 
+           "16r04DF"    0 " invalid " 
+           "16r04E0"    0 " invalid " 
+           "16r04E1"    0 " invalid " 
+           "16r04E2"    0 " invalid " 
+           "16r04E3"    0 " invalid " 
+           "16r04E4"    0 " invalid " 
+           "16r04E5"    0 " invalid " 
+           "16r04E6"    0 " invalid " 
+           "16r04E7"    0 " invalid " 
+           "16r04E8"    0 " invalid " 
+           "16r04E9"    0 " invalid " 
+           "16r04EA"    0 " invalid " 
+           "16r04EB"    0 " invalid " 
+           "16r04EC"    0 " invalid " 
+           "16r04ED"    0 " invalid " 
+           "16r04EE"    0 " invalid " 
+           "16r04EF"    0 " invalid " 
+           "16r04F0"    0 " invalid " 
+           "16r04F1"    0 " invalid " 
+           "16r04F2"    0 " invalid " 
+           "16r04F3"    0 " invalid " 
+           "16r04F4"    0 " invalid " 
+           "16r04F5"    0 " invalid " 
+           "16r04F6"    0 " invalid " 
+           "16r04F7"    0 " invalid " 
+           "16r04F8"    0 " invalid " 
+           "16r04F9"    0 " invalid " 
+           "16r04FA"    0 " invalid " 
+           "16r04FB"    0 " invalid " 
+           "16r04FC"    0 " invalid " 
+           "16r04FD"    0 " invalid " 
+           "16r04FE"    0 " invalid " 
+           "16r04FF"    0 " invalid " 
+           "16r0500"    0 " invalid " 
+           "16r0501"    0 " invalid " 
+           "16r0502"    0 " invalid " 
+           "16r0503"    0 " invalid " 
+           "16r0504"    0 " invalid " 
+           "16r0505"    0 " invalid " 
+           "16r0506"    0 " invalid " 
+           "16r0507"    0 " invalid " 
+           "16r0508"    0 " invalid " 
+           "16r0509"    0 " invalid " 
+           "16r050A"    0 " invalid " 
+           "16r050B"    0 " invalid " 
+           "16r050C"    0 " invalid " 
+           "16r050D"    0 " invalid " 
+           "16r050E"    0 " invalid " 
+           "16r050F"    0 " invalid " 
+           "16r0510"    0 " invalid " 
+           "16r0511"    0 " invalid " 
+           "16r0512"    0 " invalid " 
+           "16r0513"    0 " invalid " 
+           "16r0514"    0 " invalid " 
+           "16r0515"    0 " invalid " 
+           "16r0516"    0 " invalid " 
+           "16r0517"    0 " invalid " 
+           "16r0518"    0 " invalid " 
+           "16r0519"    0 " invalid " 
+           "16r051A"    0 " invalid " 
+           "16r051B"    0 " invalid " 
+           "16r051C"    0 " invalid " 
+           "16r051D"    0 " invalid " 
+           "16r051E"    0 " invalid " 
+           "16r051F"    0 " invalid " 
+           "16r0520"    0 " invalid " 
+           "16r0521"    0 " invalid " 
+           "16r0522"    0 " invalid " 
+           "16r0523"    0 " invalid " 
+           "16r0524"    0 " invalid " 
+           "16r0525"    0 " invalid " 
+           "16r0526"    0 " invalid " 
+           "16r0527"    0 " invalid " 
+           "16r0528"    0 " invalid " 
+           "16r0529"    0 " invalid " 
+           "16r052A"    0 " invalid " 
+           "16r052B"    0 " invalid " 
+           "16r052C"    0 " invalid " 
+           "16r052D"    0 " invalid " 
+           "16r052E"    0 " invalid " 
+           "16r052F"    0 " invalid " 
+           "16r0530"    0 " invalid " 
+           "16r0531"    0 " invalid " 
+           "16r0532"    0 " invalid " 
+           "16r0533"    0 " invalid " 
+           "16r0534"    0 " invalid " 
+           "16r0535"    0 " invalid " 
+           "16r0536"    0 " invalid " 
+           "16r0537"    0 " invalid " 
+           "16r0538"    0 " invalid " 
+           "16r0539"    0 " invalid " 
+           "16r053A"    0 " invalid " 
+           "16r053B"    0 " invalid " 
+           "16r053C"    0 " invalid " 
+           "16r053D"    0 " invalid " 
+           "16r053E"    0 " invalid " 
+           "16r053F"    0 " invalid " 
+           "16r0540"    0 " invalid " 
+           "16r0541"    0 " invalid " 
+           "16r0542"    0 " invalid " 
+           "16r0543"    0 " invalid " 
+           "16r0544"    0 " invalid " 
+           "16r0545"    0 " invalid " 
+           "16r0546"    0 " invalid " 
+           "16r0547"    0 " invalid " 
+           "16r0548"    0 " invalid " 
+           "16r0549"    0 " invalid " 
+           "16r054A"    0 " invalid " 
+           "16r054B"    0 " invalid " 
+           "16r054C"    0 " invalid " 
+           "16r054D"    0 " invalid " 
+           "16r054E"    0 " invalid " 
+           "16r054F"    0 " invalid " 
+           "16r0550"    0 " invalid " 
+           "16r0551"    0 " invalid " 
+           "16r0552"    0 " invalid " 
+           "16r0553"    0 " invalid " 
+           "16r0554"    0 " invalid " 
+           "16r0555"    0 " invalid " 
+           "16r0556"    0 " invalid " 
+           "16r0557"    0 " invalid " 
+           "16r0558"    0 " invalid " 
+           "16r0559"    0 " invalid " 
+           "16r055A"    0 " invalid " 
+           "16r055B"    0 " invalid " 
+           "16r055C"    0 " invalid " 
+           "16r055D"    0 " invalid " 
+           "16r055E"    0 " invalid " 
+           "16r055F"    0 " invalid " 
+           "16r0560"    0 " invalid " 
+           "16r0561"    0 " invalid " 
+           "16r0562"    0 " invalid " 
+           "16r0563"    0 " invalid " 
+           "16r0564"    0 " invalid " 
+           "16r0565"    0 " invalid " 
+           "16r0566"    0 " invalid " 
+           "16r0567"    0 " invalid " 
+           "16r0568"    0 " invalid " 
+           "16r0569"    0 " invalid " 
+           "16r056A"    0 " invalid " 
+           "16r056B"    0 " invalid " 
+           "16r056C"    0 " invalid " 
+           "16r056D"    0 " invalid " 
+           "16r056E"    0 " invalid " 
+           "16r056F"    0 " invalid " 
+           "16r0570"    0 " invalid " 
+           "16r0571"    0 " invalid " 
+           "16r0572"    0 " invalid " 
+           "16r0573"    0 " invalid " 
+           "16r0574"    0 " invalid " 
+           "16r0575"    0 " invalid " 
+           "16r0576"    0 " invalid " 
+           "16r0577"    0 " invalid " 
+           "16r0578"    0 " invalid " 
+           "16r0579"    0 " invalid " 
+           "16r057A"    0 " invalid " 
+           "16r057B"    0 " invalid " 
+           "16r057C"    0 " invalid " 
+           "16r057D"    0 " invalid " 
+           "16r057E"    0 " invalid " 
+           "16r057F"    0 " invalid " 
+           "16r0580"    0 " invalid " 
+           "16r0581"    0 " invalid " 
+           "16r0582"    0 " invalid " 
+           "16r0583"    0 " invalid " 
+           "16r0584"    0 " invalid " 
+           "16r0585"    0 " invalid " 
+           "16r0586"    0 " invalid " 
+           "16r0587"    0 " invalid " 
+           "16r0588"    0 " invalid " 
+           "16r0589"    0 " invalid " 
+           "16r058A"    0 " invalid " 
+           "16r058B"    0 " invalid " 
+           "16r058C"    0 " invalid " 
+           "16r058D"    0 " invalid " 
+           "16r058E"    0 " invalid " 
+           "16r058F"    0 " invalid " 
+           "16r0590"    0 " invalid " 
+           "16r0591"    0 " invalid " 
+           "16r0592"    0 " invalid " 
+           "16r0593"    0 " invalid " 
+           "16r0594"    0 " invalid " 
+           "16r0595"    0 " invalid " 
+           "16r0596"    0 " invalid " 
+           "16r0597"    0 " invalid " 
+           "16r0598"    0 " invalid " 
+           "16r0599"    0 " invalid " 
+           "16r059A"    0 " invalid " 
+           "16r059B"    0 " invalid " 
+           "16r059C"    0 " invalid " 
+           "16r059D"    0 " invalid " 
+           "16r059E"    0 " invalid " 
+           "16r059F"    0 " invalid " 
+           "16r05A0"    0 " invalid " 
+           "16r05A1"    0 " invalid " 
+           "16r05A2"    0 " invalid " 
+           "16r05A3"    0 " invalid " 
+           "16r05A4"    0 " invalid " 
+           "16r05A5"    0 " invalid " 
+           "16r05A6"    0 " invalid " 
+           "16r05A7"    0 " invalid " 
+           "16r05A8"    0 " invalid " 
+           "16r05A9"    0 " invalid " 
+           "16r05AA"    0 " invalid " 
+           "16r05AB"    0 " invalid " 
+           "16r05AC"    0 " invalid " 
+           "16r05AD"    0 " invalid " 
+           "16r05AE"    0 " invalid " 
+           "16r05AF"    0 " invalid " 
+           "16r05B0"    0 " invalid " 
+           "16r05B1"    0 " invalid " 
+           "16r05B2"    0 " invalid " 
+           "16r05B3"    0 " invalid " 
+           "16r05B4"    0 " invalid " 
+           "16r05B5"    0 " invalid " 
+           "16r05B6"    0 " invalid " 
+           "16r05B7"    0 " invalid " 
+           "16r05B8"    0 " invalid " 
+           "16r05B9"    0 " invalid " 
+           "16r05BA"    0 " invalid " 
+           "16r05BB"    0 " invalid " 
+           "16r05BC"    0 " invalid " 
+           "16r05BD"    0 " invalid " 
+           "16r05BE"    0 " invalid " 
+           "16r05BF"    0 " invalid " 
+           "16r05C0"    0 " invalid " 
+           "16r05C1"    0 " invalid " 
+           "16r05C2"    0 " invalid " 
+           "16r05C3"    0 " invalid " 
+           "16r05C4"    0 " invalid " 
+           "16r05C5"    0 " invalid " 
+           "16r05C6"    0 " invalid " 
+           "16r05C7"    0 " invalid " 
+           "16r05C8"    0 " invalid " 
+           "16r05C9"    0 " invalid " 
+           "16r05CA"    0 " invalid " 
+           "16r05CB"    0 " invalid " 
+           "16r05CC"    0 " invalid " 
+           "16r05CD"    0 " invalid " 
+           "16r05CE"    0 " invalid " 
+           "16r05CF"    0 " invalid " 
+           "16r05D0"    0 " invalid " 
+           "16r05D1"    0 " invalid " 
+           "16r05D2"    0 " invalid " 
+           "16r05D3"    0 " invalid " 
+           "16r05D4"    0 " invalid " 
+           "16r05D5"    0 " invalid " 
+           "16r05D6"    0 " invalid " 
+           "16r05D7"    0 " invalid " 
+           "16r05D8"    0 " invalid " 
+           "16r05D9"    0 " invalid " 
+           "16r05DA"    0 " invalid " 
+           "16r05DB"    0 " invalid " 
+           "16r05DC"    0 " invalid " 
+           "16r05DD"    0 " invalid " 
+           "16r05DE"    0 " invalid " 
+           "16r05DF"    0 " invalid " 
+           "16r05E0"    0 " invalid " 
+           "16r05E1"    0 " invalid " 
+           "16r05E2"    0 " invalid " 
+           "16r05E3"    0 " invalid " 
+           "16r05E4"    0 " invalid " 
+           "16r05E5"    0 " invalid " 
+           "16r05E6"    0 " invalid " 
+           "16r05E7"    0 " invalid " 
+           "16r05E8"    0 " invalid " 
+           "16r05E9"    0 " invalid " 
+           "16r05EA"    0 " invalid " 
+           "16r05EB"    0 " invalid " 
+           "16r05EC"    0 " invalid " 
+           "16r05ED"    0 " invalid " 
+           "16r05EE"    0 " invalid " 
+           "16r05EF"    0 " invalid " 
+           "16r05F0"    0 " invalid " 
+           "16r05F1"    0 " invalid " 
+           "16r05F2"    0 " invalid " 
+           "16r05F3"    0 " invalid " 
+           "16r05F4"    0 " invalid " 
+           "16r05F5"    0 " invalid " 
+           "16r05F6"    0 " invalid " 
+           "16r05F7"    0 " invalid " 
+           "16r05F8"    0 " invalid " 
+           "16r05F9"    0 " invalid " 
+           "16r05FA"    0 " invalid " 
+           "16r05FB"    0 " invalid " 
+           "16r05FC"    0 " invalid " 
+           "16r05FD"    0 " invalid " 
+           "16r05FE"    0 " invalid " 
+           "16r05FF"    0 " invalid " 
+           "16r0600"    0 " invalid " 
+           "16r0601"    0 " invalid " 
+           "16r0602"    0 " invalid " 
+           "16r0603"    0 " invalid " 
+           "16r0604"    0 " invalid " 
+           "16r0605"    0 " invalid " 
+           "16r0606"    0 " invalid " 
+           "16r0607"    0 " invalid " 
+           "16r0608"    0 " invalid " 
+           "16r0609"    0 " invalid " 
+           "16r060A"    0 " invalid " 
+           "16r060B"    0 " invalid " 
+           "16r060C"    0 " invalid " 
+           "16r060D"    0 " invalid " 
+           "16r060E"    0 " invalid " 
+           "16r060F"    0 " invalid " 
+           "16r0610"    0 " invalid " 
+           "16r0611"    0 " invalid " 
+           "16r0612"    0 " invalid " 
+           "16r0613"    0 " invalid " 
+           "16r0614"    0 " invalid " 
+           "16r0615"    0 " invalid " 
+           "16r0616"    0 " invalid " 
+           "16r0617"    0 " invalid " 
+           "16r0618"    0 " invalid " 
+           "16r0619"    0 " invalid " 
+           "16r061A"    0 " invalid " 
+           "16r061B"    0 " invalid " 
+           "16r061C"    0 " invalid " 
+           "16r061D"    0 " invalid " 
+           "16r061E"    0 " invalid " 
+           "16r061F"    0 " invalid " 
+           "16r0620"    0 " invalid " 
+           "16r0621"    0 " invalid " 
+           "16r0622"    0 " invalid " 
+           "16r0623"    0 " invalid " 
+           "16r0624"    0 " invalid " 
+           "16r0625"    0 " invalid " 
+           "16r0626"    0 " invalid " 
+           "16r0627"    0 " invalid " 
+           "16r0628"    0 " invalid " 
+           "16r0629"    0 " invalid " 
+           "16r062A"    0 " invalid " 
+           "16r062B"    0 " invalid " 
+           "16r062C"    0 " invalid " 
+           "16r062D"    0 " invalid " 
+           "16r062E"    0 " invalid " 
+           "16r062F"    0 " invalid " 
+           "16r0630"    0 " invalid " 
+           "16r0631"    0 " invalid " 
+           "16r0632"    0 " invalid " 
+           "16r0633"    0 " invalid " 
+           "16r0634"    0 " invalid " 
+           "16r0635"    0 " invalid " 
+           "16r0636"    0 " invalid " 
+           "16r0637"    0 " invalid " 
+           "16r0638"    0 " invalid " 
+           "16r0639"    0 " invalid " 
+           "16r063A"    0 " invalid " 
+           "16r063B"    0 " invalid " 
+           "16r063C"    0 " invalid " 
+           "16r063D"    0 " invalid " 
+           "16r063E"    0 " invalid " 
+           "16r063F"    0 " invalid " 
+           "16r0640"    0 " invalid " 
+           "16r0641"    0 " invalid " 
+           "16r0642"    0 " invalid " 
+           "16r0643"    0 " invalid " 
+           "16r0644"    0 " invalid " 
+           "16r0645"    0 " invalid " 
+           "16r0646"    0 " invalid " 
+           "16r0647"    0 " invalid " 
+           "16r0648"    0 " invalid " 
+           "16r0649"    0 " invalid " 
+           "16r064A"    0 " invalid " 
+           "16r064B"    0 " invalid " 
+           "16r064C"    0 " invalid " 
+           "16r064D"    0 " invalid " 
+           "16r064E"    0 " invalid " 
+           "16r064F"    0 " invalid " 
+           "16r0650"    0 " invalid " 
+           "16r0651"    0 " invalid " 
+           "16r0652"    0 " invalid " 
+           "16r0653"    0 " invalid " 
+           "16r0654"    0 " invalid " 
+           "16r0655"    0 " invalid " 
+           "16r0656"    0 " invalid " 
+           "16r0657"    0 " invalid " 
+           "16r0658"    0 " invalid " 
+           "16r0659"    0 " invalid " 
+           "16r065A"    0 " invalid " 
+           "16r065B"    0 " invalid " 
+           "16r065C"    0 " invalid " 
+           "16r065D"    0 " invalid " 
+           "16r065E"    0 " invalid " 
+           "16r065F"    0 " invalid " 
+           "16r0660"    0 " invalid " 
+           "16r0661"    0 " invalid " 
+           "16r0662"    0 " invalid " 
+           "16r0663"    0 " invalid " 
+           "16r0664"    0 " invalid " 
+           "16r0665"    0 " invalid " 
+           "16r0666"    0 " invalid " 
+           "16r0667"    0 " invalid " 
+           "16r0668"    0 " invalid " 
+           "16r0669"    0 " invalid " 
+           "16r066A"    0 " invalid " 
+           "16r066B"    0 " invalid " 
+           "16r066C"    0 " invalid " 
+           "16r066D"    0 " invalid " 
+           "16r066E"    0 " invalid " 
+           "16r066F"    0 " invalid " 
+           "16r0670"    0 " invalid " 
+           "16r0671"    0 " invalid " 
+           "16r0672"    0 " invalid " 
+           "16r0673"    0 " invalid " 
+           "16r0674"    0 " invalid " 
+           "16r0675"    0 " invalid " 
+           "16r0676"    0 " invalid " 
+           "16r0677"    0 " invalid " 
+           "16r0678"    0 " invalid " 
+           "16r0679"    0 " invalid " 
+           "16r067A"    0 " invalid " 
+           "16r067B"    0 " invalid " 
+           "16r067C"    0 " invalid " 
+           "16r067D"    0 " invalid " 
+           "16r067E"    0 " invalid " 
+           "16r067F"    0 " invalid " 
+           "16r0680"    0 " invalid " 
+           "16r0681"    0 " invalid " 
+           "16r0682"    0 " invalid " 
+           "16r0683"    0 " invalid " 
+           "16r0684"    0 " invalid " 
+           "16r0685"    0 " invalid " 
+           "16r0686"    0 " invalid " 
+           "16r0687"    0 " invalid " 
+           "16r0688"    0 " invalid " 
+           "16r0689"    0 " invalid " 
+           "16r068A"    0 " invalid " 
+           "16r068B"    0 " invalid " 
+           "16r068C"    0 " invalid " 
+           "16r068D"    0 " invalid " 
+           "16r068E"    0 " invalid " 
+           "16r068F"    0 " invalid " 
+           "16r0690"    0 " invalid " 
+           "16r0691"    0 " invalid " 
+           "16r0692"    0 " invalid " 
+           "16r0693"    0 " invalid " 
+           "16r0694"    0 " invalid " 
+           "16r0695"    0 " invalid " 
+           "16r0696"    0 " invalid " 
+           "16r0697"    0 " invalid " 
+           "16r0698"    0 " invalid " 
+           "16r0699"    0 " invalid " 
+           "16r069A"    0 " invalid " 
+           "16r069B"    0 " invalid " 
+           "16r069C"    0 " invalid " 
+           "16r069D"    0 " invalid " 
+           "16r069E"    0 " invalid " 
+           "16r069F"    0 " invalid " 
+           "16r06A0"    0 " invalid " 
+           "16r06A1"    0 " invalid " 
+           "16r06A2"    0 " invalid " 
+           "16r06A3"    0 " invalid " 
+           "16r06A4"    0 " invalid " 
+           "16r06A5"    0 " invalid " 
+           "16r06A6"    0 " invalid " 
+           "16r06A7"    0 " invalid " 
+           "16r06A8"    0 " invalid " 
+           "16r06A9"    0 " invalid " 
+           "16r06AA"    0 " invalid " 
+           "16r06AB"    0 " invalid " 
+           "16r06AC"    0 " invalid " 
+           "16r06AD"    0 " invalid " 
+           "16r06AE"    0 " invalid " 
+           "16r06AF"    0 " invalid " 
+           "16r06B0"    0 " invalid " 
+           "16r06B1"    0 " invalid " 
+           "16r06B2"    0 " invalid " 
+           "16r06B3"    0 " invalid " 
+           "16r06B4"    0 " invalid " 
+           "16r06B5"    0 " invalid " 
+           "16r06B6"    0 " invalid " 
+           "16r06B7"    0 " invalid " 
+           "16r06B8"    0 " invalid " 
+           "16r06B9"    0 " invalid " 
+           "16r06BA"    0 " invalid " 
+           "16r06BB"    0 " invalid " 
+           "16r06BC"    0 " invalid " 
+           "16r06BD"    0 " invalid " 
+           "16r06BE"    0 " invalid " 
+           "16r06BF"    0 " invalid " 
+           "16r06C0"    0 " invalid " 
+           "16r06C1"    0 " invalid " 
+           "16r06C2"    0 " invalid " 
+           "16r06C3"    0 " invalid " 
+           "16r06C4"    0 " invalid " 
+           "16r06C5"    0 " invalid " 
+           "16r06C6"    0 " invalid " 
+           "16r06C7"    0 " invalid " 
+           "16r06C8"    0 " invalid " 
+           "16r06C9"    0 " invalid " 
+           "16r06CA"    0 " invalid " 
+           "16r06CB"    0 " invalid " 
+           "16r06CC"    0 " invalid " 
+           "16r06CD"    0 " invalid " 
+           "16r06CE"    0 " invalid " 
+           "16r06CF"    0 " invalid " 
+           "16r06D0"    0 " invalid " 
+           "16r06D1"    0 " invalid " 
+           "16r06D2"    0 " invalid " 
+           "16r06D3"    0 " invalid " 
+           "16r06D4"    0 " invalid " 
+           "16r06D5"    0 " invalid " 
+           "16r06D6"    0 " invalid " 
+           "16r06D7"    0 " invalid " 
+           "16r06D8"    0 " invalid " 
+           "16r06D9"    0 " invalid " 
+           "16r06DA"    0 " invalid " 
+           "16r06DB"    0 " invalid " 
+           "16r06DC"    0 " invalid " 
+           "16r06DD"    0 " invalid " 
+           "16r06DE"    0 " invalid " 
+           "16r06DF"    0 " invalid " 
+           "16r06E0"    0 " invalid " 
+           "16r06E1"    0 " invalid " 
+           "16r06E2"    0 " invalid " 
+           "16r06E3"    0 " invalid " 
+           "16r06E4"    0 " invalid " 
+           "16r06E5"    0 " invalid " 
+           "16r06E6"    0 " invalid " 
+           "16r06E7"    0 " invalid " 
+           "16r06E8"    0 " invalid " 
+           "16r06E9"    0 " invalid " 
+           "16r06EA"    0 " invalid " 
+           "16r06EB"    0 " invalid " 
+           "16r06EC"    0 " invalid " 
+           "16r06ED"    0 " invalid " 
+           "16r06EE"    0 " invalid " 
+           "16r06EF"    0 " invalid " 
+           "16r06F0"    0 " invalid " 
+           "16r06F1"    0 " invalid " 
+           "16r06F2"    0 " invalid " 
+           "16r06F3"    0 " invalid " 
+           "16r06F4"    0 " invalid " 
+           "16r06F5"    0 " invalid " 
+           "16r06F6"    0 " invalid " 
+           "16r06F7"    0 " invalid " 
+           "16r06F8"    0 " invalid " 
+           "16r06F9"    0 " invalid " 
+           "16r06FA"    0 " invalid " 
+           "16r06FB"    0 " invalid " 
+           "16r06FC"    0 " invalid " 
+           "16r06FD"    0 " invalid " 
+           "16r06FE"    0 " invalid " 
+           "16r06FF"    0 " invalid " 
+           "16r0700"    0 " invalid " 
+           "16r0701"    0 " invalid " 
+           "16r0702"    0 " invalid " 
+           "16r0703"    0 " invalid " 
+           "16r0704"    0 " invalid " 
+           "16r0705"    0 " invalid " 
+           "16r0706"    0 " invalid " 
+           "16r0707"    0 " invalid " 
+           "16r0708"    0 " invalid " 
+           "16r0709"    0 " invalid " 
+           "16r070A"    0 " invalid " 
+           "16r070B"    0 " invalid " 
+           "16r070C"    0 " invalid " 
+           "16r070D"    0 " invalid " 
+           "16r070E"    0 " invalid " 
+           "16r070F"    0 " invalid " 
+           "16r0710"    0 " invalid " 
+           "16r0711"    0 " invalid " 
+           "16r0712"    0 " invalid " 
+           "16r0713"    0 " invalid " 
+           "16r0714"    0 " invalid " 
+           "16r0715"    0 " invalid " 
+           "16r0716"    0 " invalid " 
+           "16r0717"    0 " invalid " 
+           "16r0718"    0 " invalid " 
+           "16r0719"    0 " invalid " 
+           "16r071A"    0 " invalid " 
+           "16r071B"    0 " invalid " 
+           "16r071C"    0 " invalid " 
+           "16r071D"    0 " invalid " 
+           "16r071E"    0 " invalid " 
+           "16r071F"    0 " invalid " 
+           "16r0720"    0 " invalid " 
+           "16r0721"    0 " invalid " 
+           "16r0722"    0 " invalid " 
+           "16r0723"    0 " invalid " 
+           "16r0724"    0 " invalid " 
+           "16r0725"    0 " invalid " 
+           "16r0726"    0 " invalid " 
+           "16r0727"    0 " invalid " 
+           "16r0728"    0 " invalid " 
+           "16r0729"    0 " invalid " 
+           "16r072A"    0 " invalid " 
+           "16r072B"    0 " invalid " 
+           "16r072C"    0 " invalid " 
+           "16r072D"    0 " invalid " 
+           "16r072E"    0 " invalid " 
+           "16r072F"    0 " invalid " 
+           "16r0730"    0 " invalid " 
+           "16r0731"    0 " invalid " 
+           "16r0732"    0 " invalid " 
+           "16r0733"    0 " invalid " 
+           "16r0734"    0 " invalid " 
+           "16r0735"    0 " invalid " 
+           "16r0736"    0 " invalid " 
+           "16r0737"    0 " invalid " 
+           "16r0738"    0 " invalid " 
+           "16r0739"    0 " invalid " 
+           "16r073A"    0 " invalid " 
+           "16r073B"    0 " invalid " 
+           "16r073C"    0 " invalid " 
+           "16r073D"    0 " invalid " 
+           "16r073E"    0 " invalid " 
+           "16r073F"    0 " invalid " 
+           "16r0740"    0 " invalid " 
+           "16r0741"    0 " invalid " 
+           "16r0742"    0 " invalid " 
+           "16r0743"    0 " invalid " 
+           "16r0744"    0 " invalid " 
+           "16r0745"    0 " invalid " 
+           "16r0746"    0 " invalid " 
+           "16r0747"    0 " invalid " 
+           "16r0748"    0 " invalid " 
+           "16r0749"    0 " invalid " 
+           "16r074A"    0 " invalid " 
+           "16r074B"    0 " invalid " 
+           "16r074C"    0 " invalid " 
+           "16r074D"    0 " invalid " 
+           "16r074E"    0 " invalid " 
+           "16r074F"    0 " invalid " 
+           "16r0750"    0 " invalid " 
+           "16r0751"    0 " invalid " 
+           "16r0752"    0 " invalid " 
+           "16r0753"    0 " invalid " 
+           "16r0754"    0 " invalid " 
+           "16r0755"    0 " invalid " 
+           "16r0756"    0 " invalid " 
+           "16r0757"    0 " invalid " 
+           "16r0758"    0 " invalid " 
+           "16r0759"    0 " invalid " 
+           "16r075A"    0 " invalid " 
+           "16r075B"    0 " invalid " 
+           "16r075C"    0 " invalid " 
+           "16r075D"    0 " invalid " 
+           "16r075E"    0 " invalid " 
+           "16r075F"    0 " invalid " 
+           "16r0760"    0 " invalid " 
+           "16r0761"    0 " invalid " 
+           "16r0762"    0 " invalid " 
+           "16r0763"    0 " invalid " 
+           "16r0764"    0 " invalid " 
+           "16r0765"    0 " invalid " 
+           "16r0766"    0 " invalid " 
+           "16r0767"    0 " invalid " 
+           "16r0768"    0 " invalid " 
+           "16r0769"    0 " invalid " 
+           "16r076A"    0 " invalid " 
+           "16r076B"    0 " invalid " 
+           "16r076C"    0 " invalid " 
+           "16r076D"    0 " invalid " 
+           "16r076E"    0 " invalid " 
+           "16r076F"    0 " invalid " 
+           "16r0770"    0 " invalid " 
+           "16r0771"    0 " invalid " 
+           "16r0772"    0 " invalid " 
+           "16r0773"    0 " invalid " 
+           "16r0774"    0 " invalid " 
+           "16r0775"    0 " invalid " 
+           "16r0776"    0 " invalid " 
+           "16r0777"    0 " invalid " 
+           "16r0778"    0 " invalid " 
+           "16r0779"    0 " invalid " 
+           "16r077A"    0 " invalid " 
+           "16r077B"    0 " invalid " 
+           "16r077C"    0 " invalid " 
+           "16r077D"    0 " invalid " 
+           "16r077E"    0 " invalid " 
+           "16r077F"    0 " invalid " 
+           "16r0780"    0 " invalid " 
+           "16r0781"    0 " invalid " 
+           "16r0782"    0 " invalid " 
+           "16r0783"    0 " invalid " 
+           "16r0784"    0 " invalid " 
+           "16r0785"    0 " invalid " 
+           "16r0786"    0 " invalid " 
+           "16r0787"    0 " invalid " 
+           "16r0788"    0 " invalid " 
+           "16r0789"    0 " invalid " 
+           "16r078A"    0 " invalid " 
+           "16r078B"    0 " invalid " 
+           "16r078C"    0 " invalid " 
+           "16r078D"    0 " invalid " 
+           "16r078E"    0 " invalid " 
+           "16r078F"    0 " invalid " 
+           "16r0790"    0 " invalid " 
+           "16r0791"    0 " invalid " 
+           "16r0792"    0 " invalid " 
+           "16r0793"    0 " invalid " 
+           "16r0794"    0 " invalid " 
+           "16r0795"    0 " invalid " 
+           "16r0796"    0 " invalid " 
+           "16r0797"    0 " invalid " 
+           "16r0798"    0 " invalid " 
+           "16r0799"    0 " invalid " 
+           "16r079A"    0 " invalid " 
+           "16r079B"    0 " invalid " 
+           "16r079C"    0 " invalid " 
+           "16r079D"    0 " invalid " 
+           "16r079E"    0 " invalid " 
+           "16r079F"    0 " invalid " 
+           "16r07A0"    0 " invalid " 
+           "16r07A1"    0 " invalid " 
+           "16r07A2"    0 " invalid " 
+           "16r07A3"    0 " invalid " 
+           "16r07A4"    0 " invalid " 
+           "16r07A5"    0 " invalid " 
+           "16r07A6"    0 " invalid " 
+           "16r07A7"    0 " invalid " 
+           "16r07A8"    0 " invalid " 
+           "16r07A9"    0 " invalid " 
+           "16r07AA"    0 " invalid " 
+           "16r07AB"    0 " invalid " 
+           "16r07AC"    0 " invalid " 
+           "16r07AD"    0 " invalid " 
+           "16r07AE"    0 " invalid " 
+           "16r07AF"    0 " invalid " 
+           "16r07B0"    0 " invalid " 
+           "16r07B1"    0 " invalid " 
+           "16r07B2"    0 " invalid " 
+           "16r07B3"    0 " invalid " 
+           "16r07B4"    0 " invalid " 
+           "16r07B5"    0 " invalid " 
+           "16r07B6"    0 " invalid " 
+           "16r07B7"    0 " invalid " 
+           "16r07B8"    0 " invalid " 
+           "16r07B9"    0 " invalid " 
+           "16r07BA"    0 " invalid " 
+           "16r07BB"    0 " invalid " 
+           "16r07BC"    0 " invalid " 
+           "16r07BD"    0 " invalid " 
+           "16r07BE"    0 " invalid " 
+           "16r07BF"    0 " invalid " 
+           "16r07C0"    0 " invalid " 
+           "16r07C1"    0 " invalid " 
+           "16r07C2"    0 " invalid " 
+           "16r07C3"    0 " invalid " 
+           "16r07C4"    0 " invalid " 
+           "16r07C5"    0 " invalid " 
+           "16r07C6"    0 " invalid " 
+           "16r07C7"    0 " invalid " 
+           "16r07C8"    0 " invalid " 
+           "16r07C9"    0 " invalid " 
+           "16r07CA"    0 " invalid " 
+           "16r07CB"    0 " invalid " 
+           "16r07CC"    0 " invalid " 
+           "16r07CD"    0 " invalid " 
+           "16r07CE"    0 " invalid " 
+           "16r07CF"    0 " invalid " 
+           "16r07D0"    0 " invalid " 
+           "16r07D1"    0 " invalid " 
+           "16r07D2"    0 " invalid " 
+           "16r07D3"    0 " invalid " 
+           "16r07D4"    0 " invalid " 
+           "16r07D5"    0 " invalid " 
+           "16r07D6"    0 " invalid " 
+           "16r07D7"    0 " invalid " 
+           "16r07D8"    0 " invalid " 
+           "16r07D9"    0 " invalid " 
+           "16r07DA"    0 " invalid " 
+           "16r07DB"    0 " invalid " 
+           "16r07DC"    0 " invalid " 
+           "16r07DD"    0 " invalid " 
+           "16r07DE"    0 " invalid " 
+           "16r07DF"    0 " invalid " 
+           "16r07E0"    0 " invalid " 
+           "16r07E1"    0 " invalid " 
+           "16r07E2"    0 " invalid " 
+           "16r07E3"    0 " invalid " 
+           "16r07E4"    0 " invalid " 
+           "16r07E5"    0 " invalid " 
+           "16r07E6"    0 " invalid " 
+           "16r07E7"    0 " invalid " 
+           "16r07E8"    0 " invalid " 
+           "16r07E9"    0 " invalid " 
+           "16r07EA"    0 " invalid " 
+           "16r07EB"    0 " invalid " 
+           "16r07EC"    0 " invalid " 
+           "16r07ED"    0 " invalid " 
+           "16r07EE"    0 " invalid " 
+           "16r07EF"    0 " invalid " 
+           "16r07F0"    0 " invalid " 
+           "16r07F1"    0 " invalid " 
+           "16r07F2"    0 " invalid " 
+           "16r07F3"    0 " invalid " 
+           "16r07F4"    0 " invalid " 
+           "16r07F5"    0 " invalid " 
+           "16r07F6"    0 " invalid " 
+           "16r07F7"    0 " invalid " 
+           "16r07F8"    0 " invalid " 
+           "16r07F9"    0 " invalid " 
+           "16r07FA"    0 " invalid " 
+           "16r07FB"    0 " invalid " 
+           "16r07FC"    0 " invalid " 
+           "16r07FD"    0 " invalid " 
+           "16r07FE"    0 " invalid " 
+           "16r07FF"    0 " invalid " 
+           "16r0800"    0 " invalid " 
+           "16r0801"    0 " invalid " 
+           "16r0802"    0 " invalid " 
+           "16r0803"    0 " invalid " 
+           "16r0804"    0 " invalid " 
+           "16r0805"    0 " invalid " 
+           "16r0806"    0 " invalid " 
+           "16r0807"    0 " invalid " 
+           "16r0808"    0 " invalid " 
+           "16r0809"    0 " invalid " 
+           "16r080A"    0 " invalid " 
+           "16r080B"    0 " invalid " 
+           "16r080C"    0 " invalid " 
+           "16r080D"    0 " invalid " 
+           "16r080E"    0 " invalid " 
+           "16r080F"    0 " invalid " 
+           "16r0810"    0 " invalid " 
+           "16r0811"    0 " invalid " 
+           "16r0812"    0 " invalid " 
+           "16r0813"    0 " invalid " 
+           "16r0814"    0 " invalid " 
+           "16r0815"    0 " invalid " 
+           "16r0816"    0 " invalid " 
+           "16r0817"    0 " invalid " 
+           "16r0818"    0 " invalid " 
+           "16r0819"    0 " invalid " 
+           "16r081A"    0 " invalid " 
+           "16r081B"    0 " invalid " 
+           "16r081C"    0 " invalid " 
+           "16r081D"    0 " invalid " 
+           "16r081E"    0 " invalid " 
+           "16r081F"    0 " invalid " 
+           "16r0820"    0 " invalid " 
+           "16r0821"    0 " invalid " 
+           "16r0822"    0 " invalid " 
+           "16r0823"    0 " invalid " 
+           "16r0824"    0 " invalid " 
+           "16r0825"    0 " invalid " 
+           "16r0826"    0 " invalid " 
+           "16r0827"    0 " invalid " 
+           "16r0828"    0 " invalid " 
+           "16r0829"    0 " invalid " 
+           "16r082A"    0 " invalid " 
+           "16r082B"    0 " invalid " 
+           "16r082C"    0 " invalid " 
+           "16r082D"    0 " invalid " 
+           "16r082E"    0 " invalid " 
+           "16r082F"    0 " invalid " 
+           "16r0830"    0 " invalid " 
+           "16r0831"    0 " invalid " 
+           "16r0832"    0 " invalid " 
+           "16r0833"    0 " invalid " 
+           "16r0834"    0 " invalid " 
+           "16r0835"    0 " invalid " 
+           "16r0836"    0 " invalid " 
+           "16r0837"    0 " invalid " 
+           "16r0838"    0 " invalid " 
+           "16r0839"    0 " invalid " 
+           "16r083A"    0 " invalid " 
+           "16r083B"    0 " invalid " 
+           "16r083C"    0 " invalid " 
+           "16r083D"    0 " invalid " 
+           "16r083E"    0 " invalid " 
+           "16r083F"    0 " invalid " 
+           "16r0840"    0 " invalid " 
+           "16r0841"    0 " invalid " 
+           "16r0842"    0 " invalid " 
+           "16r0843"    0 " invalid " 
+           "16r0844"    0 " invalid " 
+           "16r0845"    0 " invalid " 
+           "16r0846"    0 " invalid " 
+           "16r0847"    0 " invalid " 
+           "16r0848"    0 " invalid " 
+           "16r0849"    0 " invalid " 
+           "16r084A"    0 " invalid " 
+           "16r084B"    0 " invalid " 
+           "16r084C"    0 " invalid " 
+           "16r084D"    0 " invalid " 
+           "16r084E"    0 " invalid " 
+           "16r084F"    0 " invalid " 
+           "16r0850"    0 " invalid " 
+           "16r0851"    0 " invalid " 
+           "16r0852"    0 " invalid " 
+           "16r0853"    0 " invalid " 
+           "16r0854"    0 " invalid " 
+           "16r0855"    0 " invalid " 
+           "16r0856"    0 " invalid " 
+           "16r0857"    0 " invalid " 
+           "16r0858"    0 " invalid " 
+           "16r0859"    0 " invalid " 
+           "16r085A"    0 " invalid " 
+           "16r085B"    0 " invalid " 
+           "16r085C"    0 " invalid " 
+           "16r085D"    0 " invalid " 
+           "16r085E"    0 " invalid " 
+           "16r085F"    0 " invalid " 
+           "16r0860"    0 " invalid " 
+           "16r0861"    0 " invalid " 
+           "16r0862"    0 " invalid " 
+           "16r0863"    0 " invalid " 
+           "16r0864"    0 " invalid " 
+           "16r0865"    0 " invalid " 
+           "16r0866"    0 " invalid " 
+           "16r0867"    0 " invalid " 
+           "16r0868"    0 " invalid " 
+           "16r0869"    0 " invalid " 
+           "16r086A"    0 " invalid " 
+           "16r086B"    0 " invalid " 
+           "16r086C"    0 " invalid " 
+           "16r086D"    0 " invalid " 
+           "16r086E"    0 " invalid " 
+           "16r086F"    0 " invalid " 
+           "16r0870"    0 " invalid " 
+           "16r0871"    0 " invalid " 
+           "16r0872"    0 " invalid " 
+           "16r0873"    0 " invalid " 
+           "16r0874"    0 " invalid " 
+           "16r0875"    0 " invalid " 
+           "16r0876"    0 " invalid " 
+           "16r0877"    0 " invalid " 
+           "16r0878"    0 " invalid " 
+           "16r0879"    0 " invalid " 
+           "16r087A"    0 " invalid " 
+           "16r087B"    0 " invalid " 
+           "16r087C"    0 " invalid " 
+           "16r087D"    0 " invalid " 
+           "16r087E"    0 " invalid " 
+           "16r087F"    0 " invalid " 
+           "16r0880"    0 " invalid " 
+           "16r0881"    0 " invalid " 
+           "16r0882"    0 " invalid " 
+           "16r0883"    0 " invalid " 
+           "16r0884"    0 " invalid " 
+           "16r0885"    0 " invalid " 
+           "16r0886"    0 " invalid " 
+           "16r0887"    0 " invalid " 
+           "16r0888"    0 " invalid " 
+           "16r0889"    0 " invalid " 
+           "16r088A"    0 " invalid " 
+           "16r088B"    0 " invalid " 
+           "16r088C"    0 " invalid " 
+           "16r088D"    0 " invalid " 
+           "16r088E"    0 " invalid " 
+           "16r088F"    0 " invalid " 
+           "16r0890"    0 " invalid " 
+           "16r0891"    0 " invalid " 
+           "16r0892"    0 " invalid " 
+           "16r0893"    0 " invalid " 
+           "16r0894"    0 " invalid " 
+           "16r0895"    0 " invalid " 
+           "16r0896"    0 " invalid " 
+           "16r0897"    0 " invalid " 
+           "16r0898"    0 " invalid " 
+           "16r0899"    0 " invalid " 
+           "16r089A"    0 " invalid " 
+           "16r089B"    0 " invalid " 
+           "16r089C"    0 " invalid " 
+           "16r089D"    0 " invalid " 
+           "16r089E"    0 " invalid " 
+           "16r089F"    0 " invalid " 
+           "16r08A0"    0 " invalid " 
+           "16r08A1"    0 " invalid " 
+           "16r08A2"    0 " invalid " 
+           "16r08A3"    0 " invalid " 
+           "16r08A4"    0 " invalid " 
+           "16r08A5"    0 " invalid " 
+           "16r08A6"    0 " invalid " 
+           "16r08A7"    0 " invalid " 
+           "16r08A8"    0 " invalid " 
+           "16r08A9"    0 " invalid " 
+           "16r08AA"    0 " invalid " 
+           "16r08AB"    0 " invalid " 
+           "16r08AC"    0 " invalid " 
+           "16r08AD"    0 " invalid " 
+           "16r08AE"    0 " invalid " 
+           "16r08AF"    0 " invalid " 
+           "16r08B0"    0 " invalid " 
+           "16r08B1"    0 " invalid " 
+           "16r08B2"    0 " invalid " 
+           "16r08B3"    0 " invalid " 
+           "16r08B4"    0 " invalid " 
+           "16r08B5"    0 " invalid " 
+           "16r08B6"    0 " invalid " 
+           "16r08B7"    0 " invalid " 
+           "16r08B8"    0 " invalid " 
+           "16r08B9"    0 " invalid " 
+           "16r08BA"    0 " invalid " 
+           "16r08BB"    0 " invalid " 
+           "16r08BC"    0 " invalid " 
+           "16r08BD"    0 " invalid " 
+           "16r08BE"    0 " invalid " 
+           "16r08BF"    0 " invalid " 
+           "16r08C0"    0 " invalid " 
+           "16r08C1"    0 " invalid " 
+           "16r08C2"    0 " invalid " 
+           "16r08C3"    0 " invalid " 
+           "16r08C4"    0 " invalid " 
+           "16r08C5"    0 " invalid " 
+           "16r08C6"    0 " invalid " 
+           "16r08C7"    0 " invalid " 
+           "16r08C8"    0 " invalid " 
+           "16r08C9"    0 " invalid " 
+           "16r08CA"    0 " invalid " 
+           "16r08CB"    0 " invalid " 
+           "16r08CC"    0 " invalid " 
+           "16r08CD"    0 " invalid " 
+           "16r08CE"    0 " invalid " 
+           "16r08CF"    0 " invalid " 
+           "16r08D0"    0 " invalid " 
+           "16r08D1"    0 " invalid " 
+           "16r08D2"    0 " invalid " 
+           "16r08D3"    0 " invalid " 
+           "16r08D4"    0 " invalid " 
+           "16r08D5"    0 " invalid " 
+           "16r08D6"    0 " invalid " 
+           "16r08D7"    0 " invalid " 
+           "16r08D8"    0 " invalid " 
+           "16r08D9"    0 " invalid " 
+           "16r08DA"    0 " invalid " 
+           "16r08DB"    0 " invalid " 
+           "16r08DC"    0 " invalid " 
+           "16r08DD"    0 " invalid " 
+           "16r08DE"    0 " invalid " 
+           "16r08DF"    0 " invalid " 
+           "16r08E0"    0 " invalid " 
+           "16r08E1"    0 " invalid " 
+           "16r08E2"    0 " invalid " 
+           "16r08E3"    0 " invalid " 
+           "16r08E4"    0 " invalid " 
+           "16r08E5"    0 " invalid " 
+           "16r08E6"    0 " invalid " 
+           "16r08E7"    0 " invalid " 
+           "16r08E8"    0 " invalid " 
+           "16r08E9"    0 " invalid " 
+           "16r08EA"    0 " invalid " 
+           "16r08EB"    0 " invalid " 
+           "16r08EC"    0 " invalid " 
+           "16r08ED"    0 " invalid " 
+           "16r08EE"    0 " invalid " 
+           "16r08EF"    0 " invalid " 
+           "16r08F0"    0 " invalid " 
+           "16r08F1"    0 " invalid " 
+           "16r08F2"    0 " invalid " 
+           "16r08F3"    0 " invalid " 
+           "16r08F4"    0 " invalid " 
+           "16r08F5"    0 " invalid " 
+           "16r08F6"    0 " invalid " 
+           "16r08F7"    0 " invalid " 
+           "16r08F8"    0 " invalid " 
+           "16r08F9"    0 " invalid " 
+           "16r08FA"    0 " invalid " 
+           "16r08FB"    0 " invalid " 
+           "16r08FC"    0 " invalid " 
+           "16r08FD"    0 " invalid " 
+           "16r08FE"    0 " invalid " 
+           "16r08FF"    0 " invalid " 
+           "16r0900"    0 " invalid " 
+           "16r0901"    0 " invalid " 
+           "16r0902"    0 " invalid " 
+           "16r0903"    0 " invalid " 
+           "16r0904"    0 " invalid " 
+           "16r0905"    0 " invalid " 
+           "16r0906"    0 " invalid " 
+           "16r0907"    0 " invalid " 
+           "16r0908"    0 " invalid " 
+           "16r0909"    0 " invalid " 
+           "16r090A"    0 " invalid " 
+           "16r090B"    0 " invalid " 
+           "16r090C"    0 " invalid " 
+           "16r090D"    0 " invalid " 
+           "16r090E"    0 " invalid " 
+           "16r090F"    0 " invalid " 
+           "16r0910"    0 " invalid " 
+           "16r0911"    0 " invalid " 
+           "16r0912"    0 " invalid " 
+           "16r0913"    0 " invalid " 
+           "16r0914"    0 " invalid " 
+           "16r0915"    0 " invalid " 
+           "16r0916"    0 " invalid " 
+           "16r0917"    0 " invalid " 
+           "16r0918"    0 " invalid " 
+           "16r0919"    0 " invalid " 
+           "16r091A"    0 " invalid " 
+           "16r091B"    0 " invalid " 
+           "16r091C"    0 " invalid " 
+           "16r091D"    0 " invalid " 
+           "16r091E"    0 " invalid " 
+           "16r091F"    0 " invalid " 
+           "16r0920"    0 " invalid " 
+           "16r0921"    0 " invalid " 
+           "16r0922"    0 " invalid " 
+           "16r0923"    0 " invalid " 
+           "16r0924"    0 " invalid " 
+           "16r0925"    0 " invalid " 
+           "16r0926"    0 " invalid " 
+           "16r0927"    0 " invalid " 
+           "16r0928"    0 " invalid " 
+           "16r0929"    0 " invalid " 
+           "16r092A"    0 " invalid " 
+           "16r092B"    0 " invalid " 
+           "16r092C"    0 " invalid " 
+           "16r092D"    0 " invalid " 
+           "16r092E"    0 " invalid " 
+           "16r092F"    0 " invalid " 
+           "16r0930"    0 " invalid " 
+           "16r0931"    0 " invalid " 
+           "16r0932"    0 " invalid " 
+           "16r0933"    0 " invalid " 
+           "16r0934"    0 " invalid " 
+           "16r0935"    0 " invalid " 
+           "16r0936"    0 " invalid " 
+           "16r0937"    0 " invalid " 
+           "16r0938"    0 " invalid " 
+           "16r0939"    0 " invalid " 
+           "16r093A"    0 " invalid " 
+           "16r093B"    0 " invalid " 
+           "16r093C"    0 " invalid " 
+           "16r093D"    0 " invalid " 
+           "16r093E"    0 " invalid " 
+           "16r093F"    0 " invalid " 
+           "16r0940"    0 " invalid " 
+           "16r0941"    0 " invalid " 
+           "16r0942"    0 " invalid " 
+           "16r0943"    0 " invalid " 
+           "16r0944"    0 " invalid " 
+           "16r0945"    0 " invalid " 
+           "16r0946"    0 " invalid " 
+           "16r0947"    0 " invalid " 
+           "16r0948"    0 " invalid " 
+           "16r0949"    0 " invalid " 
+           "16r094A"    0 " invalid " 
+           "16r094B"    0 " invalid " 
+           "16r094C"    0 " invalid " 
+           "16r094D"    0 " invalid " 
+           "16r094E"    0 " invalid " 
+           "16r094F"    0 " invalid " 
+           "16r0950"    0 " invalid " 
+           "16r0951"    0 " invalid " 
+           "16r0952"    0 " invalid " 
+           "16r0953"    0 " invalid " 
+           "16r0954"    0 " invalid " 
+           "16r0955"    0 " invalid " 
+           "16r0956"    0 " invalid " 
+           "16r0957"    0 " invalid " 
+           "16r0958"    0 " invalid " 
+           "16r0959"    0 " invalid " 
+           "16r095A"    0 " invalid " 
+           "16r095B"    0 " invalid " 
+           "16r095C"    0 " invalid " 
+           "16r095D"    0 " invalid " 
+           "16r095E"    0 " invalid " 
+           "16r095F"    0 " invalid " 
+           "16r0960"    0 " invalid " 
+           "16r0961"    0 " invalid " 
+           "16r0962"    0 " invalid " 
+           "16r0963"    0 " invalid " 
+           "16r0964"    0 " invalid " 
+           "16r0965"    0 " invalid " 
+           "16r0966"    0 " invalid " 
+           "16r0967"    0 " invalid " 
+           "16r0968"    0 " invalid " 
+           "16r0969"    0 " invalid " 
+           "16r096A"    0 " invalid " 
+           "16r096B"    0 " invalid " 
+           "16r096C"    0 " invalid " 
+           "16r096D"    0 " invalid " 
+           "16r096E"    0 " invalid " 
+           "16r096F"    0 " invalid " 
+           "16r0970"    0 " invalid " 
+           "16r0971"    0 " invalid " 
+           "16r0972"    0 " invalid " 
+           "16r0973"    0 " invalid " 
+           "16r0974"    0 " invalid " 
+           "16r0975"    0 " invalid " 
+           "16r0976"    0 " invalid " 
+           "16r0977"    0 " invalid " 
+           "16r0978"    0 " invalid " 
+           "16r0979"    0 " invalid " 
+           "16r097A"    0 " invalid " 
+           "16r097B"    0 " invalid " 
+           "16r097C"    0 " invalid " 
+           "16r097D"    0 " invalid " 
+           "16r097E"    0 " invalid " 
+           "16r097F"    0 " invalid " 
+           "16r0980"    0 " invalid " 
+           "16r0981"    0 " invalid " 
+           "16r0982"    0 " invalid " 
+           "16r0983"    0 " invalid " 
+           "16r0984"    0 " invalid " 
+           "16r0985"    0 " invalid " 
+           "16r0986"    0 " invalid " 
+           "16r0987"    0 " invalid " 
+           "16r0988"    0 " invalid " 
+           "16r0989"    0 " invalid " 
+           "16r098A"    0 " invalid " 
+           "16r098B"    0 " invalid " 
+           "16r098C"    0 " invalid " 
+           "16r098D"    0 " invalid " 
+           "16r098E"    0 " invalid " 
+           "16r098F"    0 " invalid " 
+           "16r0990"    0 " invalid " 
+           "16r0991"    0 " invalid " 
+           "16r0992"    0 " invalid " 
+           "16r0993"    0 " invalid " 
+           "16r0994"    0 " invalid " 
+           "16r0995"    0 " invalid " 
+           "16r0996"    0 " invalid " 
+           "16r0997"    0 " invalid " 
+           "16r0998"    0 " invalid " 
+           "16r0999"    0 " invalid " 
+           "16r099A"    0 " invalid " 
+           "16r099B"    0 " invalid " 
+           "16r099C"    0 " invalid " 
+           "16r099D"    0 " invalid " 
+           "16r099E"    0 " invalid " 
+           "16r099F"    0 " invalid " 
+           "16r09A0"    0 " invalid " 
+           "16r09A1"    0 " invalid " 
+           "16r09A2"    0 " invalid " 
+           "16r09A3"    0 " invalid " 
+           "16r09A4"    0 " invalid " 
+           "16r09A5"    0 " invalid " 
+           "16r09A6"    0 " invalid " 
+           "16r09A7"    0 " invalid " 
+           "16r09A8"    0 " invalid " 
+           "16r09A9"    0 " invalid " 
+           "16r09AA"    0 " invalid " 
+           "16r09AB"    0 " invalid " 
+           "16r09AC"    0 " invalid " 
+           "16r09AD"    0 " invalid " 
+           "16r09AE"    0 " invalid " 
+           "16r09AF"    0 " invalid " 
+           "16r09B0"    0 " invalid " 
+           "16r09B1"    0 " invalid " 
+           "16r09B2"    0 " invalid " 
+           "16r09B3"    0 " invalid " 
+           "16r09B4"    0 " invalid " 
+           "16r09B5"    0 " invalid " 
+           "16r09B6"    0 " invalid " 
+           "16r09B7"    0 " invalid " 
+           "16r09B8"    0 " invalid " 
+           "16r09B9"    0 " invalid " 
+           "16r09BA"    0 " invalid " 
+           "16r09BB"    0 " invalid " 
+           "16r09BC"    0 " invalid " 
+           "16r09BD"    0 " invalid " 
+           "16r09BE"    0 " invalid " 
+           "16r09BF"    0 " invalid " 
+           "16r09C0"    0 " invalid " 
+           "16r09C1"    0 " invalid " 
+           "16r09C2"    0 " invalid " 
+           "16r09C3"    0 " invalid " 
+           "16r09C4"    0 " invalid " 
+           "16r09C5"    0 " invalid " 
+           "16r09C6"    0 " invalid " 
+           "16r09C7"    0 " invalid " 
+           "16r09C8"    0 " invalid " 
+           "16r09C9"    0 " invalid " 
+           "16r09CA"    0 " invalid " 
+           "16r09CB"    0 " invalid " 
+           "16r09CC"    0 " invalid " 
+           "16r09CD"    0 " invalid " 
+           "16r09CE"    0 " invalid " 
+           "16r09CF"    0 " invalid " 
+           "16r09D0"    0 " invalid " 
+           "16r09D1"    0 " invalid " 
+           "16r09D2"    0 " invalid " 
+           "16r09D3"    0 " invalid " 
+           "16r09D4"    0 " invalid " 
+           "16r09D5"    0 " invalid " 
+           "16r09D6"    0 " invalid " 
+           "16r09D7"    0 " invalid " 
+           "16r09D8"    0 " invalid " 
+           "16r09D9"    0 " invalid " 
+           "16r09DA"    0 " invalid " 
+           "16r09DB"    0 " invalid " 
+           "16r09DC"    0 " invalid " 
+           "16r09DD"    0 " invalid " 
+           "16r09DE"    0 " invalid " 
+           "16r09DF"    0 " invalid " 
+           "16r09E0"    0 " invalid " 
+           "16r09E1"    0 " invalid " 
+           "16r09E2"    0 " invalid " 
+           "16r09E3"    0 " invalid " 
+           "16r09E4"    0 " invalid " 
+           "16r09E5"    0 " invalid " 
+           "16r09E6"    0 " invalid " 
+           "16r09E7"    0 " invalid " 
+           "16r09E8"    0 " invalid " 
+           "16r09E9"    0 " invalid " 
+           "16r09EA"    0 " invalid " 
+           "16r09EB"    0 " invalid " 
+           "16r09EC"    0 " invalid " 
+           "16r09ED"    0 " invalid " 
+           "16r09EE"    0 " invalid " 
+           "16r09EF"    0 " invalid " 
+           "16r09F0"    0 " invalid " 
+           "16r09F1"    0 " invalid " 
+           "16r09F2"    0 " invalid " 
+           "16r09F3"    0 " invalid " 
+           "16r09F4"    0 " invalid " 
+           "16r09F5"    0 " invalid " 
+           "16r09F6"    0 " invalid " 
+           "16r09F7"    0 " invalid " 
+           "16r09F8"    0 " invalid " 
+           "16r09F9"    0 " invalid " 
+           "16r09FA"    0 " invalid " 
+           "16r09FB"    0 " invalid " 
+           "16r09FC"    0 " invalid " 
+           "16r09FD"    0 " invalid " 
+           "16r09FE"    0 " invalid " 
+           "16r09FF"    0 " invalid " 
+           "16r0A00"    0 " invalid " 
+           "16r0A01"    0 " invalid " 
+           "16r0A02"    0 " invalid " 
+           "16r0A03"    0 " invalid " 
+           "16r0A04"    0 " invalid " 
+           "16r0A05"    0 " invalid " 
+           "16r0A06"    0 " invalid " 
+           "16r0A07"    0 " invalid " 
+           "16r0A08"    0 " invalid " 
+           "16r0A09"    0 " invalid " 
+           "16r0A0A"    0 " invalid " 
+           "16r0A0B"    0 " invalid " 
+           "16r0A0C"    0 " invalid " 
+           "16r0A0D"    0 " invalid " 
+           "16r0A0E"    0 " invalid " 
+           "16r0A0F"    0 " invalid " 
+           "16r0A10"    0 " invalid " 
+           "16r0A11"    0 " invalid " 
+           "16r0A12"    0 " invalid " 
+           "16r0A13"    0 " invalid " 
+           "16r0A14"    0 " invalid " 
+           "16r0A15"    0 " invalid " 
+           "16r0A16"    0 " invalid " 
+           "16r0A17"    0 " invalid " 
+           "16r0A18"    0 " invalid " 
+           "16r0A19"    0 " invalid " 
+           "16r0A1A"    0 " invalid " 
+           "16r0A1B"    0 " invalid " 
+           "16r0A1C"    0 " invalid " 
+           "16r0A1D"    0 " invalid " 
+           "16r0A1E"    0 " invalid " 
+           "16r0A1F"    0 " invalid " 
+           "16r0A20"    0 " invalid " 
+           "16r0A21"    0 " invalid " 
+           "16r0A22"    0 " invalid " 
+           "16r0A23"    0 " invalid " 
+           "16r0A24"    0 " invalid " 
+           "16r0A25"    0 " invalid " 
+           "16r0A26"    0 " invalid " 
+           "16r0A27"    0 " invalid " 
+           "16r0A28"    0 " invalid " 
+           "16r0A29"    0 " invalid " 
+           "16r0A2A"    0 " invalid " 
+           "16r0A2B"    0 " invalid " 
+           "16r0A2C"    0 " invalid " 
+           "16r0A2D"    0 " invalid " 
+           "16r0A2E"    0 " invalid " 
+           "16r0A2F"    0 " invalid " 
+           "16r0A30"    0 " invalid " 
+           "16r0A31"    0 " invalid " 
+           "16r0A32"    0 " invalid " 
+           "16r0A33"    0 " invalid " 
+           "16r0A34"    0 " invalid " 
+           "16r0A35"    0 " invalid " 
+           "16r0A36"    0 " invalid " 
+           "16r0A37"    0 " invalid " 
+           "16r0A38"    0 " invalid " 
+           "16r0A39"    0 " invalid " 
+           "16r0A3A"    0 " invalid " 
+           "16r0A3B"    0 " invalid " 
+           "16r0A3C"    0 " invalid " 
+           "16r0A3D"    0 " invalid " 
+           "16r0A3E"    0 " invalid " 
+           "16r0A3F"    0 " invalid " 
+           "16r0A40"    0 " invalid " 
+           "16r0A41"    0 " invalid " 
+           "16r0A42"    0 " invalid " 
+           "16r0A43"    0 " invalid " 
+           "16r0A44"    0 " invalid " 
+           "16r0A45"    0 " invalid " 
+           "16r0A46"    0 " invalid " 
+           "16r0A47"    0 " invalid " 
+           "16r0A48"    0 " invalid " 
+           "16r0A49"    0 " invalid " 
+           "16r0A4A"    0 " invalid " 
+           "16r0A4B"    0 " invalid " 
+           "16r0A4C"    0 " invalid " 
+           "16r0A4D"    0 " invalid " 
+           "16r0A4E"    0 " invalid " 
+           "16r0A4F"    0 " invalid " 
+           "16r0A50"    0 " invalid " 
+           "16r0A51"    0 " invalid " 
+           "16r0A52"    0 " invalid " 
+           "16r0A53"    0 " invalid " 
+           "16r0A54"    0 " invalid " 
+           "16r0A55"    0 " invalid " 
+           "16r0A56"    0 " invalid " 
+           "16r0A57"    0 " invalid " 
+           "16r0A58"    0 " invalid " 
+           "16r0A59"    0 " invalid " 
+           "16r0A5A"    0 " invalid " 
+           "16r0A5B"    0 " invalid " 
+           "16r0A5C"    0 " invalid " 
+           "16r0A5D"    0 " invalid " 
+           "16r0A5E"    0 " invalid " 
+           "16r0A5F"    0 " invalid " 
+           "16r0A60"    0 " invalid " 
+           "16r0A61"    0 " invalid " 
+           "16r0A62"    0 " invalid " 
+           "16r0A63"    0 " invalid " 
+           "16r0A64"    0 " invalid " 
+           "16r0A65"    0 " invalid " 
+           "16r0A66"    0 " invalid " 
+           "16r0A67"    0 " invalid " 
+           "16r0A68"    0 " invalid " 
+           "16r0A69"    0 " invalid " 
+           "16r0A6A"    0 " invalid " 
+           "16r0A6B"    0 " invalid " 
+           "16r0A6C"    0 " invalid " 
+           "16r0A6D"    0 " invalid " 
+           "16r0A6E"    0 " invalid " 
+           "16r0A6F"    0 " invalid " 
+           "16r0A70"    0 " invalid " 
+           "16r0A71"    0 " invalid " 
+           "16r0A72"    0 " invalid " 
+           "16r0A73"    0 " invalid " 
+           "16r0A74"    0 " invalid " 
+           "16r0A75"    0 " invalid " 
+           "16r0A76"    0 " invalid " 
+           "16r0A77"    0 " invalid " 
+           "16r0A78"    0 " invalid " 
+           "16r0A79"    0 " invalid " 
+           "16r0A7A"    0 " invalid " 
+           "16r0A7B"    0 " invalid " 
+           "16r0A7C"    0 " invalid " 
+           "16r0A7D"    0 " invalid " 
+           "16r0A7E"    0 " invalid " 
+           "16r0A7F"    0 " invalid " 
+           "16r0A80"    0 " invalid " 
+           "16r0A81"    0 " invalid " 
+           "16r0A82"    0 " invalid " 
+           "16r0A83"    0 " invalid " 
+           "16r0A84"    0 " invalid " 
+           "16r0A85"    0 " invalid " 
+           "16r0A86"    0 " invalid " 
+           "16r0A87"    0 " invalid " 
+           "16r0A88"    0 " invalid " 
+           "16r0A89"    0 " invalid " 
+           "16r0A8A"    0 " invalid " 
+           "16r0A8B"    0 " invalid " 
+           "16r0A8C"    0 " invalid " 
+           "16r0A8D"    0 " invalid " 
+           "16r0A8E"    0 " invalid " 
+           "16r0A8F"    0 " invalid " 
+           "16r0A90"    0 " invalid " 
+           "16r0A91"    0 " invalid " 
+           "16r0A92"    0 " invalid " 
+           "16r0A93"    0 " invalid " 
+           "16r0A94"    0 " invalid " 
+           "16r0A95"    0 " invalid " 
+           "16r0A96"    0 " invalid " 
+           "16r0A97"    0 " invalid " 
+           "16r0A98"    0 " invalid " 
+           "16r0A99"    0 " invalid " 
+           "16r0A9A"    0 " invalid " 
+           "16r0A9B"    0 " invalid " 
+           "16r0A9C"    0 " invalid " 
+           "16r0A9D"    0 " invalid " 
+           "16r0A9E"    0 " invalid " 
+           "16r0A9F"    0 " invalid " 
+           "16r0AA0"    0 " invalid " 
+           "16r0AA1"    0 " invalid " 
+           "16r0AA2"    0 " invalid " 
+           "16r0AA3"    0 " invalid " 
+           "16r0AA4"    0 " invalid " 
+           "16r0AA5"    0 " invalid " 
+           "16r0AA6"    0 " invalid " 
+           "16r0AA7"    0 " invalid " 
+           "16r0AA8"    0 " invalid " 
+           "16r0AA9"    0 " invalid " 
+           "16r0AAA"    0 " invalid " 
+           "16r0AAB"    0 " invalid " 
+           "16r0AAC"    0 " invalid " 
+           "16r0AAD"    0 " invalid " 
+           "16r0AAE"    0 " invalid " 
+           "16r0AAF"    0 " invalid " 
+           "16r0AB0"    0 " invalid " 
+           "16r0AB1"    0 " invalid " 
+           "16r0AB2"    0 " invalid " 
+           "16r0AB3"    0 " invalid " 
+           "16r0AB4"    0 " invalid " 
+           "16r0AB5"    0 " invalid " 
+           "16r0AB6"    0 " invalid " 
+           "16r0AB7"    0 " invalid " 
+           "16r0AB8"    0 " invalid " 
+           "16r0AB9"    0 " invalid " 
+           "16r0ABA"    0 " invalid " 
+           "16r0ABB"    0 " invalid " 
+           "16r0ABC"    0 " invalid " 
+           "16r0ABD"    0 " invalid " 
+           "16r0ABE"    0 " invalid " 
+           "16r0ABF"    0 " invalid " 
+           "16r0AC0"    0 " invalid " 
+           "16r0AC1"    0 " invalid " 
+           "16r0AC2"    0 " invalid " 
+           "16r0AC3"    0 " invalid " 
+           "16r0AC4"    0 " invalid " 
+           "16r0AC5"    0 " invalid " 
+           "16r0AC6"    0 " invalid " 
+           "16r0AC7"    0 " invalid " 
+           "16r0AC8"    0 " invalid " 
+           "16r0AC9"    0 " invalid " 
+           "16r0ACA"    0 " invalid " 
+           "16r0ACB"    0 " invalid " 
+           "16r0ACC"    0 " invalid " 
+           "16r0ACD"    0 " invalid " 
+           "16r0ACE"    0 " invalid " 
+           "16r0ACF"    0 " invalid " 
+           "16r0AD0"    0 " invalid " 
+           "16r0AD1"    0 " invalid " 
+           "16r0AD2"    0 " invalid " 
+           "16r0AD3"    0 " invalid " 
+           "16r0AD4"    0 " invalid " 
+           "16r0AD5"    0 " invalid " 
+           "16r0AD6"    0 " invalid " 
+           "16r0AD7"    0 " invalid " 
+           "16r0AD8"    0 " invalid " 
+           "16r0AD9"    0 " invalid " 
+           "16r0ADA"    0 " invalid " 
+           "16r0ADB"    0 " invalid " 
+           "16r0ADC"    0 " invalid " 
+           "16r0ADD"    0 " invalid " 
+           "16r0ADE"    0 " invalid " 
+           "16r0ADF"    0 " invalid " 
+           "16r0AE0"    0 " invalid " 
+           "16r0AE1"    0 " invalid " 
+           "16r0AE2"    0 " invalid " 
+           "16r0AE3"    0 " invalid " 
+           "16r0AE4"    0 " invalid " 
+           "16r0AE5"    0 " invalid " 
+           "16r0AE6"    0 " invalid " 
+           "16r0AE7"    0 " invalid " 
+           "16r0AE8"    0 " invalid " 
+           "16r0AE9"    0 " invalid " 
+           "16r0AEA"    0 " invalid " 
+           "16r0AEB"    0 " invalid " 
+           "16r0AEC"    0 " invalid " 
+           "16r0AED"    0 " invalid " 
+           "16r0AEE"    0 " invalid " 
+           "16r0AEF"    0 " invalid " 
+           "16r0AF0"    0 " invalid " 
+           "16r0AF1"    0 " invalid " 
+           "16r0AF2"    0 " invalid " 
+           "16r0AF3"    0 " invalid " 
+           "16r0AF4"    0 " invalid " 
+           "16r0AF5"    0 " invalid " 
+           "16r0AF6"    0 " invalid " 
+           "16r0AF7"    0 " invalid " 
+           "16r0AF8"    0 " invalid " 
+           "16r0AF9"    0 " invalid " 
+           "16r0AFA"    0 " invalid " 
+           "16r0AFB"    0 " invalid " 
+           "16r0AFC"    0 " invalid " 
+           "16r0AFD"    0 " invalid " 
+           "16r0AFE"    0 " invalid " 
+           "16r0AFF"    0 " invalid " 
+           "16r0B00"    0 " invalid " 
+           "16r0B01"    0 " invalid " 
+           "16r0B02"    0 " invalid " 
+           "16r0B03"    0 " invalid " 
+           "16r0B04"    0 " invalid " 
+           "16r0B05"    0 " invalid " 
+           "16r0B06"    0 " invalid " 
+           "16r0B07"    0 " invalid " 
+           "16r0B08"    0 " invalid " 
+           "16r0B09"    0 " invalid " 
+           "16r0B0A"    0 " invalid " 
+           "16r0B0B"    0 " invalid " 
+           "16r0B0C"    0 " invalid " 
+           "16r0B0D"    0 " invalid " 
+           "16r0B0E"    0 " invalid " 
+           "16r0B0F"    0 " invalid " 
+           "16r0B10"    0 " invalid " 
+           "16r0B11"    0 " invalid " 
+           "16r0B12"    0 " invalid " 
+           "16r0B13"    0 " invalid " 
+           "16r0B14"    0 " invalid " 
+           "16r0B15"    0 " invalid " 
+           "16r0B16"    0 " invalid " 
+           "16r0B17"    0 " invalid " 
+           "16r0B18"    0 " invalid " 
+           "16r0B19"    0 " invalid " 
+           "16r0B1A"    0 " invalid " 
+           "16r0B1B"    0 " invalid " 
+           "16r0B1C"    0 " invalid " 
+           "16r0B1D"    0 " invalid " 
+           "16r0B1E"    0 " invalid " 
+           "16r0B1F"    0 " invalid " 
+           "16r0B20"    0 " invalid " 
+           "16r0B21"    0 " invalid " 
+           "16r0B22"    0 " invalid " 
+           "16r0B23"    0 " invalid " 
+           "16r0B24"    0 " invalid " 
+           "16r0B25"    0 " invalid " 
+           "16r0B26"    0 " invalid " 
+           "16r0B27"    0 " invalid " 
+           "16r0B28"    0 " invalid " 
+           "16r0B29"    0 " invalid " 
+           "16r0B2A"    0 " invalid " 
+           "16r0B2B"    0 " invalid " 
+           "16r0B2C"    0 " invalid " 
+           "16r0B2D"    0 " invalid " 
+           "16r0B2E"    0 " invalid " 
+           "16r0B2F"    0 " invalid " 
+           "16r0B30"    0 " invalid " 
+           "16r0B31"    0 " invalid " 
+           "16r0B32"    0 " invalid " 
+           "16r0B33"    0 " invalid " 
+           "16r0B34"    0 " invalid " 
+           "16r0B35"    0 " invalid " 
+           "16r0B36"    0 " invalid " 
+           "16r0B37"    0 " invalid " 
+           "16r0B38"    0 " invalid " 
+           "16r0B39"    0 " invalid " 
+           "16r0B3A"    0 " invalid " 
+           "16r0B3B"    0 " invalid " 
+           "16r0B3C"    0 " invalid " 
+           "16r0B3D"    0 " invalid " 
+           "16r0B3E"    0 " invalid " 
+           "16r0B3F"    0 " invalid " 
+           "16r0B40"    0 " invalid " 
+           "16r0B41"    0 " invalid " 
+           "16r0B42"    0 " invalid " 
+           "16r0B43"    0 " invalid " 
+           "16r0B44"    0 " invalid " 
+           "16r0B45"    0 " invalid " 
+           "16r0B46"    0 " invalid " 
+           "16r0B47"    0 " invalid " 
+           "16r0B48"    0 " invalid " 
+           "16r0B49"    0 " invalid " 
+           "16r0B4A"    0 " invalid " 
+           "16r0B4B"    0 " invalid " 
+           "16r0B4C"    0 " invalid " 
+           "16r0B4D"    0 " invalid " 
+           "16r0B4E"    0 " invalid " 
+           "16r0B4F"    0 " invalid " 
+           "16r0B50"    0 " invalid " 
+           "16r0B51"    0 " invalid " 
+           "16r0B52"    0 " invalid " 
+           "16r0B53"    0 " invalid " 
+           "16r0B54"    0 " invalid " 
+           "16r0B55"    0 " invalid " 
+           "16r0B56"    0 " invalid " 
+           "16r0B57"    0 " invalid " 
+           "16r0B58"    0 " invalid " 
+           "16r0B59"    0 " invalid " 
+           "16r0B5A"    0 " invalid " 
+           "16r0B5B"    0 " invalid " 
+           "16r0B5C"    0 " invalid " 
+           "16r0B5D"    0 " invalid " 
+           "16r0B5E"    0 " invalid " 
+           "16r0B5F"    0 " invalid " 
+           "16r0B60"    0 " invalid " 
+           "16r0B61"    0 " invalid " 
+           "16r0B62"    0 " invalid " 
+           "16r0B63"    0 " invalid " 
+           "16r0B64"    0 " invalid " 
+           "16r0B65"    0 " invalid " 
+           "16r0B66"    0 " invalid " 
+           "16r0B67"    0 " invalid " 
+           "16r0B68"    0 " invalid " 
+           "16r0B69"    0 " invalid " 
+           "16r0B6A"    0 " invalid " 
+           "16r0B6B"    0 " invalid " 
+           "16r0B6C"    0 " invalid " 
+           "16r0B6D"    0 " invalid " 
+           "16r0B6E"    0 " invalid " 
+           "16r0B6F"    0 " invalid " 
+           "16r0B70"    0 " invalid " 
+           "16r0B71"    0 " invalid " 
+           "16r0B72"    0 " invalid " 
+           "16r0B73"    0 " invalid " 
+           "16r0B74"    0 " invalid " 
+           "16r0B75"    0 " invalid " 
+           "16r0B76"    0 " invalid " 
+           "16r0B77"    0 " invalid " 
+           "16r0B78"    0 " invalid " 
+           "16r0B79"    0 " invalid " 
+           "16r0B7A"    0 " invalid " 
+           "16r0B7B"    0 " invalid " 
+           "16r0B7C"    0 " invalid " 
+           "16r0B7D"    0 " invalid " 
+           "16r0B7E"    0 " invalid " 
+           "16r0B7F"    0 " invalid " 
+           "16r0B80"    0 " invalid " 
+           "16r0B81"    0 " invalid " 
+           "16r0B82"    0 " invalid " 
+           "16r0B83"    0 " invalid " 
+           "16r0B84"    0 " invalid " 
+           "16r0B85"    0 " invalid " 
+           "16r0B86"    0 " invalid " 
+           "16r0B87"    0 " invalid " 
+           "16r0B88"    0 " invalid " 
+           "16r0B89"    0 " invalid " 
+           "16r0B8A"    0 " invalid " 
+           "16r0B8B"    0 " invalid " 
+           "16r0B8C"    0 " invalid " 
+           "16r0B8D"    0 " invalid " 
+           "16r0B8E"    0 " invalid " 
+           "16r0B8F"    0 " invalid " 
+           "16r0B90"    0 " invalid " 
+           "16r0B91"    0 " invalid " 
+           "16r0B92"    0 " invalid " 
+           "16r0B93"    0 " invalid " 
+           "16r0B94"    0 " invalid " 
+           "16r0B95"    0 " invalid " 
+           "16r0B96"    0 " invalid " 
+           "16r0B97"    0 " invalid " 
+           "16r0B98"    0 " invalid " 
+           "16r0B99"    0 " invalid " 
+           "16r0B9A"    0 " invalid " 
+           "16r0B9B"    0 " invalid " 
+           "16r0B9C"    0 " invalid " 
+           "16r0B9D"    0 " invalid " 
+           "16r0B9E"    0 " invalid " 
+           "16r0B9F"    0 " invalid " 
+           "16r0BA0"    0 " invalid " 
+           "16r0BA1"    0 " invalid " 
+           "16r0BA2"    0 " invalid " 
+           "16r0BA3"    0 " invalid " 
+           "16r0BA4"    0 " invalid " 
+           "16r0BA5"    0 " invalid " 
+           "16r0BA6"    0 " invalid " 
+           "16r0BA7"    0 " invalid " 
+           "16r0BA8"    0 " invalid " 
+           "16r0BA9"    0 " invalid " 
+           "16r0BAA"    0 " invalid " 
+           "16r0BAB"    0 " invalid " 
+           "16r0BAC"    0 " invalid " 
+           "16r0BAD"    0 " invalid " 
+           "16r0BAE"    0 " invalid " 
+           "16r0BAF"    0 " invalid " 
+           "16r0BB0"    0 " invalid " 
+           "16r0BB1"    0 " invalid " 
+           "16r0BB2"    0 " invalid " 
+           "16r0BB3"    0 " invalid " 
+           "16r0BB4"    0 " invalid " 
+           "16r0BB5"    0 " invalid " 
+           "16r0BB6"    0 " invalid " 
+           "16r0BB7"    0 " invalid " 
+           "16r0BB8"    0 " invalid " 
+           "16r0BB9"    0 " invalid " 
+           "16r0BBA"    0 " invalid " 
+           "16r0BBB"    0 " invalid " 
+           "16r0BBC"    0 " invalid " 
+           "16r0BBD"    0 " invalid " 
+           "16r0BBE"    0 " invalid " 
+           "16r0BBF"    0 " invalid " 
+           "16r0BC0"    0 " invalid " 
+           "16r0BC1"    0 " invalid " 
+           "16r0BC2"    0 " invalid " 
+           "16r0BC3"    0 " invalid " 
+           "16r0BC4"    0 " invalid " 
+           "16r0BC5"    0 " invalid " 
+           "16r0BC6"    0 " invalid " 
+           "16r0BC7"    0 " invalid " 
+           "16r0BC8"    0 " invalid " 
+           "16r0BC9"    0 " invalid " 
+           "16r0BCA"    0 " invalid " 
+           "16r0BCB"    0 " invalid " 
+           "16r0BCC"    0 " invalid " 
+           "16r0BCD"    0 " invalid " 
+           "16r0BCE"    0 " invalid " 
+           "16r0BCF"    0 " invalid " 
+           "16r0BD0"    0 " invalid " 
+           "16r0BD1"    0 " invalid " 
+           "16r0BD2"    0 " invalid " 
+           "16r0BD3"    0 " invalid " 
+           "16r0BD4"    0 " invalid " 
+           "16r0BD5"    0 " invalid " 
+           "16r0BD6"    0 " invalid " 
+           "16r0BD7"    0 " invalid " 
+           "16r0BD8"    0 " invalid " 
+           "16r0BD9"    0 " invalid " 
+           "16r0BDA"    0 " invalid " 
+           "16r0BDB"    0 " invalid " 
+           "16r0BDC"    0 " invalid " 
+           "16r0BDD"    0 " invalid " 
+           "16r0BDE"    0 " invalid " 
+           "16r0BDF"    0 " invalid " 
+           "16r0BE0"    0 " invalid " 
+           "16r0BE1"    0 " invalid " 
+           "16r0BE2"    0 " invalid " 
+           "16r0BE3"    0 " invalid " 
+           "16r0BE4"    0 " invalid " 
+           "16r0BE5"    0 " invalid " 
+           "16r0BE6"    0 " invalid " 
+           "16r0BE7"    0 " invalid " 
+           "16r0BE8"    0 " invalid " 
+           "16r0BE9"    0 " invalid " 
+           "16r0BEA"    0 " invalid " 
+           "16r0BEB"    0 " invalid " 
+           "16r0BEC"    0 " invalid " 
+           "16r0BED"    0 " invalid " 
+           "16r0BEE"    0 " invalid " 
+           "16r0BEF"    0 " invalid " 
+           "16r0BF0"    0 " invalid " 
+           "16r0BF1"    0 " invalid " 
+           "16r0BF2"    0 " invalid " 
+           "16r0BF3"    0 " invalid " 
+           "16r0BF4"    0 " invalid " 
+           "16r0BF5"    0 " invalid " 
+           "16r0BF6"    0 " invalid " 
+           "16r0BF7"    0 " invalid " 
+           "16r0BF8"    0 " invalid " 
+           "16r0BF9"    0 " invalid " 
+           "16r0BFA"    0 " invalid " 
+           "16r0BFB"    0 " invalid " 
+           "16r0BFC"    0 " invalid " 
+           "16r0BFD"    0 " invalid " 
+           "16r0BFE"    0 " invalid " 
+           "16r0BFF"    0 " invalid " 
+           "16r0C00"    0 " invalid " 
+           "16r0C01"    0 " invalid " 
+           "16r0C02"    0 " invalid " 
+           "16r0C03"    0 " invalid " 
+           "16r0C04"    0 " invalid " 
+           "16r0C05"    0 " invalid " 
+           "16r0C06"    0 " invalid " 
+           "16r0C07"    0 " invalid " 
+           "16r0C08"    0 " invalid " 
+           "16r0C09"    0 " invalid " 
+           "16r0C0A"    0 " invalid " 
+           "16r0C0B"    0 " invalid " 
+           "16r0C0C"    0 " invalid " 
+           "16r0C0D"    0 " invalid " 
+           "16r0C0E"    0 " invalid " 
+           "16r0C0F"    0 " invalid " 
+           "16r0C10"    0 " invalid " 
+           "16r0C11"    0 " invalid " 
+           "16r0C12"    0 " invalid " 
+           "16r0C13"    0 " invalid " 
+           "16r0C14"    0 " invalid " 
+           "16r0C15"    0 " invalid " 
+           "16r0C16"    0 " invalid " 
+           "16r0C17"    0 " invalid " 
+           "16r0C18"    0 " invalid " 
+           "16r0C19"    0 " invalid " 
+           "16r0C1A"    0 " invalid " 
+           "16r0C1B"    0 " invalid " 
+           "16r0C1C"    0 " invalid " 
+           "16r0C1D"    0 " invalid " 
+           "16r0C1E"    0 " invalid " 
+           "16r0C1F"    0 " invalid " 
+           "16r0C20"    0 " invalid " 
+           "16r0C21"    0 " invalid " 
+           "16r0C22"    0 " invalid " 
+           "16r0C23"    0 " invalid " 
+           "16r0C24"    0 " invalid " 
+           "16r0C25"    0 " invalid " 
+           "16r0C26"    0 " invalid " 
+           "16r0C27"    0 " invalid " 
+           "16r0C28"    0 " invalid " 
+           "16r0C29"    0 " invalid " 
+           "16r0C2A"    0 " invalid " 
+           "16r0C2B"    0 " invalid " 
+           "16r0C2C"    0 " invalid " 
+           "16r0C2D"    0 " invalid " 
+           "16r0C2E"    0 " invalid " 
+           "16r0C2F"    0 " invalid " 
+           "16r0C30"    0 " invalid " 
+           "16r0C31"    0 " invalid " 
+           "16r0C32"    0 " invalid " 
+           "16r0C33"    0 " invalid " 
+           "16r0C34"    0 " invalid " 
+           "16r0C35"    0 " invalid " 
+           "16r0C36"    0 " invalid " 
+           "16r0C37"    0 " invalid " 
+           "16r0C38"    0 " invalid " 
+           "16r0C39"    0 " invalid " 
+           "16r0C3A"    0 " invalid " 
+           "16r0C3B"    0 " invalid " 
+           "16r0C3C"    0 " invalid " 
+           "16r0C3D"    0 " invalid " 
+           "16r0C3E"    0 " invalid " 
+           "16r0C3F"    0 " invalid " 
+           "16r0C40"    0 " invalid " 
+           "16r0C41"    0 " invalid " 
+           "16r0C42"    0 " invalid " 
+           "16r0C43"    0 " invalid " 
+           "16r0C44"    0 " invalid " 
+           "16r0C45"    0 " invalid " 
+           "16r0C46"    0 " invalid " 
+           "16r0C47"    0 " invalid " 
+           "16r0C48"    0 " invalid " 
+           "16r0C49"    0 " invalid " 
+           "16r0C4A"    0 " invalid " 
+           "16r0C4B"    0 " invalid " 
+           "16r0C4C"    0 " invalid " 
+           "16r0C4D"    0 " invalid " 
+           "16r0C4E"    0 " invalid " 
+           "16r0C4F"    0 " invalid " 
+           "16r0C50"    0 " invalid " 
+           "16r0C51"    0 " invalid " 
+           "16r0C52"    0 " invalid " 
+           "16r0C53"    0 " invalid " 
+           "16r0C54"    0 " invalid " 
+           "16r0C55"    0 " invalid " 
+           "16r0C56"    0 " invalid " 
+           "16r0C57"    0 " invalid " 
+           "16r0C58"    0 " invalid " 
+           "16r0C59"    0 " invalid " 
+           "16r0C5A"    0 " invalid " 
+           "16r0C5B"    0 " invalid " 
+           "16r0C5C"    0 " invalid " 
+           "16r0C5D"    0 " invalid " 
+           "16r0C5E"    0 " invalid " 
+           "16r0C5F"    0 " invalid " 
+           "16r0C60"    0 " invalid " 
+           "16r0C61"    0 " invalid " 
+           "16r0C62"    0 " invalid " 
+           "16r0C63"    0 " invalid " 
+           "16r0C64"    0 " invalid " 
+           "16r0C65"    0 " invalid " 
+           "16r0C66"    0 " invalid " 
+           "16r0C67"    0 " invalid " 
+           "16r0C68"    0 " invalid " 
+           "16r0C69"    0 " invalid " 
+           "16r0C6A"    0 " invalid " 
+           "16r0C6B"    0 " invalid " 
+           "16r0C6C"    0 " invalid " 
+           "16r0C6D"    0 " invalid " 
+           "16r0C6E"    0 " invalid " 
+           "16r0C6F"    0 " invalid " 
+           "16r0C70"    0 " invalid " 
+           "16r0C71"    0 " invalid " 
+           "16r0C72"    0 " invalid " 
+           "16r0C73"    0 " invalid " 
+           "16r0C74"    0 " invalid " 
+           "16r0C75"    0 " invalid " 
+           "16r0C76"    0 " invalid " 
+           "16r0C77"    0 " invalid " 
+           "16r0C78"    0 " invalid " 
+           "16r0C79"    0 " invalid " 
+           "16r0C7A"    0 " invalid " 
+           "16r0C7B"    0 " invalid " 
+           "16r0C7C"    0 " invalid " 
+           "16r0C7D"    0 " invalid " 
+           "16r0C7E"    0 " invalid " 
+           "16r0C7F"    0 " invalid " 
+           "16r0C80"    0 " invalid " 
+           "16r0C81"    0 " invalid " 
+           "16r0C82"    0 " invalid " 
+           "16r0C83"    0 " invalid " 
+           "16r0C84"    0 " invalid " 
+           "16r0C85"    0 " invalid " 
+           "16r0C86"    0 " invalid " 
+           "16r0C87"    0 " invalid " 
+           "16r0C88"    0 " invalid " 
+           "16r0C89"    0 " invalid " 
+           "16r0C8A"    0 " invalid " 
+           "16r0C8B"    0 " invalid " 
+           "16r0C8C"    0 " invalid " 
+           "16r0C8D"    0 " invalid " 
+           "16r0C8E"    0 " invalid " 
+           "16r0C8F"    0 " invalid " 
+           "16r0C90"    0 " invalid " 
+           "16r0C91"    0 " invalid " 
+           "16r0C92"    0 " invalid " 
+           "16r0C93"    0 " invalid " 
+           "16r0C94"    0 " invalid " 
+           "16r0C95"    0 " invalid " 
+           "16r0C96"    0 " invalid " 
+           "16r0C97"    0 " invalid " 
+           "16r0C98"    0 " invalid " 
+           "16r0C99"    0 " invalid " 
+           "16r0C9A"    0 " invalid " 
+           "16r0C9B"    0 " invalid " 
+           "16r0C9C"    0 " invalid " 
+           "16r0C9D"    0 " invalid " 
+           "16r0C9E"    0 " invalid " 
+           "16r0C9F"    0 " invalid " 
+           "16r0CA0"    0 " invalid " 
+           "16r0CA1"    0 " invalid " 
+           "16r0CA2"    0 " invalid " 
+           "16r0CA3"    0 " invalid " 
+           "16r0CA4"    0 " invalid " 
+           "16r0CA5"    0 " invalid " 
+           "16r0CA6"    0 " invalid " 
+           "16r0CA7"    0 " invalid " 
+           "16r0CA8"    0 " invalid " 
+           "16r0CA9"    0 " invalid " 
+           "16r0CAA"    0 " invalid " 
+           "16r0CAB"    0 " invalid " 
+           "16r0CAC"    0 " invalid " 
+           "16r0CAD"    0 " invalid " 
+           "16r0CAE"    0 " invalid " 
+           "16r0CAF"    0 " invalid " 
+           "16r0CB0"    0 " invalid " 
+           "16r0CB1"    0 " invalid " 
+           "16r0CB2"    0 " invalid " 
+           "16r0CB3"    0 " invalid " 
+           "16r0CB4"    0 " invalid " 
+           "16r0CB5"    0 " invalid " 
+           "16r0CB6"    0 " invalid " 
+           "16r0CB7"    0 " invalid " 
+           "16r0CB8"    0 " invalid " 
+           "16r0CB9"    0 " invalid " 
+           "16r0CBA"    0 " invalid " 
+           "16r0CBB"    0 " invalid " 
+           "16r0CBC"    0 " invalid " 
+           "16r0CBD"    0 " invalid " 
+           "16r0CBE"    0 " invalid " 
+           "16r0CBF"    0 " invalid " 
+           "16r0CC0"    0 " invalid " 
+           "16r0CC1"    0 " invalid " 
+           "16r0CC2"    0 " invalid " 
+           "16r0CC3"    0 " invalid " 
+           "16r0CC4"    0 " invalid " 
+           "16r0CC5"    0 " invalid " 
+           "16r0CC6"    0 " invalid " 
+           "16r0CC7"    0 " invalid " 
+           "16r0CC8"    0 " invalid " 
+           "16r0CC9"    0 " invalid " 
+           "16r0CCA"    0 " invalid " 
+           "16r0CCB"    0 " invalid " 
+           "16r0CCC"    0 " invalid " 
+           "16r0CCD"    0 " invalid " 
+           "16r0CCE"    0 " invalid " 
+           "16r0CCF"    0 " invalid " 
+           "16r0CD0"    0 " invalid " 
+           "16r0CD1"    0 " invalid " 
+           "16r0CD2"    0 " invalid " 
+           "16r0CD3"    0 " invalid " 
+           "16r0CD4"    0 " invalid " 
+           "16r0CD5"    0 " invalid " 
+           "16r0CD6"    0 " invalid " 
+           "16r0CD7"    0 " invalid " 
+           "16r0CD8"    0 " invalid " 
+           "16r0CD9"    0 " invalid " 
+           "16r0CDA"    0 " invalid " 
+           "16r0CDB"    0 " invalid " 
+           "16r0CDC"    0 " invalid " 
+           "16r0CDD"    0 " invalid " 
+           "16r0CDE"    0 " invalid " 
+           "16r0CDF"    0 " invalid " 
+           "16r0CE0"    0 " invalid " 
+           "16r0CE1"    0 " invalid " 
+           "16r0CE2"    0 " invalid " 
+           "16r0CE3"    0 " invalid " 
+           "16r0CE4"    0 " invalid " 
+           "16r0CE5"    0 " invalid " 
+           "16r0CE6"    0 " invalid " 
+           "16r0CE7"    0 " invalid " 
+           "16r0CE8"    0 " invalid " 
+           "16r0CE9"    0 " invalid " 
+           "16r0CEA"    0 " invalid " 
+           "16r0CEB"    0 " invalid " 
+           "16r0CEC"    0 " invalid " 
+           "16r0CED"    0 " invalid " 
+           "16r0CEE"    0 " invalid " 
+           "16r0CEF"    0 " invalid " 
+           "16r0CF0"    0 " invalid " 
+           "16r0CF1"    0 " invalid " 
+           "16r0CF2"    0 " invalid " 
+           "16r0CF3"    0 " invalid " 
+           "16r0CF4"    0 " invalid " 
+           "16r0CF5"    0 " invalid " 
+           "16r0CF6"    0 " invalid " 
+           "16r0CF7"    0 " invalid " 
+           "16r0CF8"    0 " invalid " 
+           "16r0CF9"    0 " invalid " 
+           "16r0CFA"    0 " invalid " 
+           "16r0CFB"    0 " invalid " 
+           "16r0CFC"    0 " invalid " 
+           "16r0CFD"    0 " invalid " 
+           "16r0CFE"    0 " invalid " 
+           "16r0CFF"    0 " invalid " 
+           "16r0D00"    0 " invalid " 
+           "16r0D01"    0 " invalid " 
+           "16r0D02"    0 " invalid " 
+           "16r0D03"    0 " invalid " 
+           "16r0D04"    0 " invalid " 
+           "16r0D05"    0 " invalid " 
+           "16r0D06"    0 " invalid " 
+           "16r0D07"    0 " invalid " 
+           "16r0D08"    0 " invalid " 
+           "16r0D09"    0 " invalid " 
+           "16r0D0A"    0 " invalid " 
+           "16r0D0B"    0 " invalid " 
+           "16r0D0C"    0 " invalid " 
+           "16r0D0D"    0 " invalid " 
+           "16r0D0E"    0 " invalid " 
+           "16r0D0F"    0 " invalid " 
+           "16r0D10"    0 " invalid " 
+           "16r0D11"    0 " invalid " 
+           "16r0D12"    0 " invalid " 
+           "16r0D13"    0 " invalid " 
+           "16r0D14"    0 " invalid " 
+           "16r0D15"    0 " invalid " 
+           "16r0D16"    0 " invalid " 
+           "16r0D17"    0 " invalid " 
+           "16r0D18"    0 " invalid " 
+           "16r0D19"    0 " invalid " 
+           "16r0D1A"    0 " invalid " 
+           "16r0D1B"    0 " invalid " 
+           "16r0D1C"    0 " invalid " 
+           "16r0D1D"    0 " invalid " 
+           "16r0D1E"    0 " invalid " 
+           "16r0D1F"    0 " invalid " 
+           "16r0D20"    0 " invalid " 
+           "16r0D21"    0 " invalid " 
+           "16r0D22"    0 " invalid " 
+           "16r0D23"    0 " invalid " 
+           "16r0D24"    0 " invalid " 
+           "16r0D25"    0 " invalid " 
+           "16r0D26"    0 " invalid " 
+           "16r0D27"    0 " invalid " 
+           "16r0D28"    0 " invalid " 
+           "16r0D29"    0 " invalid " 
+           "16r0D2A"    0 " invalid " 
+           "16r0D2B"    0 " invalid " 
+           "16r0D2C"    0 " invalid " 
+           "16r0D2D"    0 " invalid " 
+           "16r0D2E"    0 " invalid " 
+           "16r0D2F"    0 " invalid " 
+           "16r0D30"    0 " invalid " 
+           "16r0D31"    0 " invalid " 
+           "16r0D32"    0 " invalid " 
+           "16r0D33"    0 " invalid " 
+           "16r0D34"    0 " invalid " 
+           "16r0D35"    0 " invalid " 
+           "16r0D36"    0 " invalid " 
+           "16r0D37"    0 " invalid " 
+           "16r0D38"    0 " invalid " 
+           "16r0D39"    0 " invalid " 
+           "16r0D3A"    0 " invalid " 
+           "16r0D3B"    0 " invalid " 
+           "16r0D3C"    0 " invalid " 
+           "16r0D3D"    0 " invalid " 
+           "16r0D3E"    0 " invalid " 
+           "16r0D3F"    0 " invalid " 
+           "16r0D40"    0 " invalid " 
+           "16r0D41"    0 " invalid " 
+           "16r0D42"    0 " invalid " 
+           "16r0D43"    0 " invalid " 
+           "16r0D44"    0 " invalid " 
+           "16r0D45"    0 " invalid " 
+           "16r0D46"    0 " invalid " 
+           "16r0D47"    0 " invalid " 
+           "16r0D48"    0 " invalid " 
+           "16r0D49"    0 " invalid " 
+           "16r0D4A"    0 " invalid " 
+           "16r0D4B"    0 " invalid " 
+           "16r0D4C"    0 " invalid " 
+           "16r0D4D"    0 " invalid " 
+           "16r0D4E"    0 " invalid " 
+           "16r0D4F"    0 " invalid " 
+           "16r0D50"    0 " invalid " 
+           "16r0D51"    0 " invalid " 
+           "16r0D52"    0 " invalid " 
+           "16r0D53"    0 " invalid " 
+           "16r0D54"    0 " invalid " 
+           "16r0D55"    0 " invalid " 
+           "16r0D56"    0 " invalid " 
+           "16r0D57"    0 " invalid " 
+           "16r0D58"    0 " invalid " 
+           "16r0D59"    0 " invalid " 
+           "16r0D5A"    0 " invalid " 
+           "16r0D5B"    0 " invalid " 
+           "16r0D5C"    0 " invalid " 
+           "16r0D5D"    0 " invalid " 
+           "16r0D5E"    0 " invalid " 
+           "16r0D5F"    0 " invalid " 
+           "16r0D60"    0 " invalid " 
+           "16r0D61"    0 " invalid " 
+           "16r0D62"    0 " invalid " 
+           "16r0D63"    0 " invalid " 
+           "16r0D64"    0 " invalid " 
+           "16r0D65"    0 " invalid " 
+           "16r0D66"    0 " invalid " 
+           "16r0D67"    0 " invalid " 
+           "16r0D68"    0 " invalid " 
+           "16r0D69"    0 " invalid " 
+           "16r0D6A"    0 " invalid " 
+           "16r0D6B"    0 " invalid " 
+           "16r0D6C"    0 " invalid " 
+           "16r0D6D"    0 " invalid " 
+           "16r0D6E"    0 " invalid " 
+           "16r0D6F"    0 " invalid " 
+           "16r0D70"    0 " invalid " 
+           "16r0D71"    0 " invalid " 
+           "16r0D72"    0 " invalid " 
+           "16r0D73"    0 " invalid " 
+           "16r0D74"    0 " invalid " 
+           "16r0D75"    0 " invalid " 
+           "16r0D76"    0 " invalid " 
+           "16r0D77"    0 " invalid " 
+           "16r0D78"    0 " invalid " 
+           "16r0D79"    0 " invalid " 
+           "16r0D7A"    0 " invalid " 
+           "16r0D7B"    0 " invalid " 
+           "16r0D7C"    0 " invalid " 
+           "16r0D7D"    0 " invalid " 
+           "16r0D7E"    0 " invalid " 
+           "16r0D7F"    0 " invalid " 
+           "16r0D80"    0 " invalid " 
+           "16r0D81"    0 " invalid " 
+           "16r0D82"    0 " invalid " 
+           "16r0D83"    0 " invalid " 
+           "16r0D84"    0 " invalid " 
+           "16r0D85"    0 " invalid " 
+           "16r0D86"    0 " invalid " 
+           "16r0D87"    0 " invalid " 
+           "16r0D88"    0 " invalid " 
+           "16r0D89"    0 " invalid " 
+           "16r0D8A"    0 " invalid " 
+           "16r0D8B"    0 " invalid " 
+           "16r0D8C"    0 " invalid " 
+           "16r0D8D"    0 " invalid " 
+           "16r0D8E"    0 " invalid " 
+           "16r0D8F"    0 " invalid " 
+           "16r0D90"    0 " invalid " 
+           "16r0D91"    0 " invalid " 
+           "16r0D92"    0 " invalid " 
+           "16r0D93"    0 " invalid " 
+           "16r0D94"    0 " invalid " 
+           "16r0D95"    0 " invalid " 
+           "16r0D96"    0 " invalid " 
+           "16r0D97"    0 " invalid " 
+           "16r0D98"    0 " invalid " 
+           "16r0D99"    0 " invalid " 
+           "16r0D9A"    0 " invalid " 
+           "16r0D9B"    0 " invalid " 
+           "16r0D9C"    0 " invalid " 
+           "16r0D9D"    0 " invalid " 
+           "16r0D9E"    0 " invalid " 
+           "16r0D9F"    0 " invalid " 
+           "16r0DA0"    0 " invalid " 
+           "16r0DA1"    0 " invalid " 
+           "16r0DA2"    0 " invalid " 
+           "16r0DA3"    0 " invalid " 
+           "16r0DA4"    0 " invalid " 
+           "16r0DA5"    0 " invalid " 
+           "16r0DA6"    0 " invalid " 
+           "16r0DA7"    0 " invalid " 
+           "16r0DA8"    0 " invalid " 
+           "16r0DA9"    0 " invalid " 
+           "16r0DAA"    0 " invalid " 
+           "16r0DAB"    0 " invalid " 
+           "16r0DAC"    0 " invalid " 
+           "16r0DAD"    0 " invalid " 
+           "16r0DAE"    0 " invalid " 
+           "16r0DAF"    0 " invalid " 
+           "16r0DB0"    0 " invalid " 
+           "16r0DB1"    0 " invalid " 
+           "16r0DB2"    0 " invalid " 
+           "16r0DB3"    0 " invalid " 
+           "16r0DB4"    0 " invalid " 
+           "16r0DB5"    0 " invalid " 
+           "16r0DB6"    0 " invalid " 
+           "16r0DB7"    0 " invalid " 
+           "16r0DB8"    0 " invalid " 
+           "16r0DB9"    0 " invalid " 
+           "16r0DBA"    0 " invalid " 
+           "16r0DBB"    0 " invalid " 
+           "16r0DBC"    0 " invalid " 
+           "16r0DBD"    0 " invalid " 
+           "16r0DBE"    0 " invalid " 
+           "16r0DBF"    0 " invalid " 
+           "16r0DC0"    0 " invalid " 
+           "16r0DC1"    0 " invalid " 
+           "16r0DC2"    0 " invalid " 
+           "16r0DC3"    0 " invalid " 
+           "16r0DC4"    0 " invalid " 
+           "16r0DC5"    0 " invalid " 
+           "16r0DC6"    0 " invalid " 
+           "16r0DC7"    0 " invalid " 
+           "16r0DC8"    0 " invalid " 
+           "16r0DC9"    0 " invalid " 
+           "16r0DCA"    0 " invalid " 
+           "16r0DCB"    0 " invalid " 
+           "16r0DCC"    0 " invalid " 
+           "16r0DCD"    0 " invalid " 
+           "16r0DCE"    0 " invalid " 
+           "16r0DCF"    0 " invalid " 
+           "16r0DD0"    0 " invalid " 
+           "16r0DD1"    0 " invalid " 
+           "16r0DD2"    0 " invalid " 
+           "16r0DD3"    0 " invalid " 
+           "16r0DD4"    0 " invalid " 
+           "16r0DD5"    0 " invalid " 
+           "16r0DD6"    0 " invalid " 
+           "16r0DD7"    0 " invalid " 
+           "16r0DD8"    0 " invalid " 
+           "16r0DD9"    0 " invalid " 
+           "16r0DDA"    0 " invalid " 
+           "16r0DDB"    0 " invalid " 
+           "16r0DDC"    0 " invalid " 
+           "16r0DDD"    0 " invalid " 
+           "16r0DDE"    0 " invalid " 
+           "16r0DDF"    0 " invalid " 
+           "16r0DE0"    0 " invalid " 
+           "16r0DE1"    0 " invalid " 
+           "16r0DE2"    0 " invalid " 
+           "16r0DE3"    0 " invalid " 
+           "16r0DE4"    0 " invalid " 
+           "16r0DE5"    0 " invalid " 
+           "16r0DE6"    0 " invalid " 
+           "16r0DE7"    0 " invalid " 
+           "16r0DE8"    0 " invalid " 
+           "16r0DE9"    0 " invalid " 
+           "16r0DEA"    0 " invalid " 
+           "16r0DEB"    0 " invalid " 
+           "16r0DEC"    0 " invalid " 
+           "16r0DED"    0 " invalid " 
+           "16r0DEE"    0 " invalid " 
+           "16r0DEF"    0 " invalid " 
+           "16r0DF0"    0 " invalid " 
+           "16r0DF1"    0 " invalid " 
+           "16r0DF2"    0 " invalid " 
+           "16r0DF3"    0 " invalid " 
+           "16r0DF4"    0 " invalid " 
+           "16r0DF5"    0 " invalid " 
+           "16r0DF6"    0 " invalid " 
+           "16r0DF7"    0 " invalid " 
+           "16r0DF8"    0 " invalid " 
+           "16r0DF9"    0 " invalid " 
+           "16r0DFA"    0 " invalid " 
+           "16r0DFB"    0 " invalid " 
+           "16r0DFC"    0 " invalid " 
+           "16r0DFD"    0 " invalid " 
+           "16r0DFE"    0 " invalid " 
+           "16r0DFF"    0 " invalid " 
+           "16r0E00"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    [
+    |t|
+    t := 
+#[
+       "16r0E01"    16rA1 " THAI CHARACTER KO KAI " 
+       "16r0E02"    16rA2 " THAI CHARACTER KHO KHAI " 
+       "16r0E03"    16rA3 " THAI CHARACTER KHO KHUAT " 
+       "16r0E04"    16rA4 " THAI CHARACTER KHO KHWAI " 
+       "16r0E05"    16rA5 " THAI CHARACTER KHO KHON " 
+       "16r0E06"    16rA6 " THAI CHARACTER KHO RAKHANG " 
+       "16r0E07"    16rA7 " THAI CHARACTER NGO NGU " 
+       "16r0E08"    16rA8 " THAI CHARACTER CHO CHAN " 
+       "16r0E09"    16rA9 " THAI CHARACTER CHO CHING " 
+       "16r0E0A"    16rAA " THAI CHARACTER CHO CHANG " 
+       "16r0E0B"    16rAB " THAI CHARACTER SO SO " 
+       "16r0E0C"    16rAC " THAI CHARACTER CHO CHOE " 
+       "16r0E0D"    16rAD " THAI CHARACTER YO YING " 
+       "16r0E0E"    16rAE " THAI CHARACTER DO CHADA " 
+       "16r0E0F"    16rAF " THAI CHARACTER TO PATAK " 
+       "16r0E10"    16rB0 " THAI CHARACTER THO THAN " 
+       "16r0E11"    16rB1 " THAI CHARACTER THO NANGMONTHO " 
+       "16r0E12"    16rB2 " THAI CHARACTER THO PHUTHAO " 
+       "16r0E13"    16rB3 " THAI CHARACTER NO NEN " 
+       "16r0E14"    16rB4 " THAI CHARACTER DO DEK " 
+       "16r0E15"    16rB5 " THAI CHARACTER TO TAO " 
+       "16r0E16"    16rB6 " THAI CHARACTER THO THUNG " 
+       "16r0E17"    16rB7 " THAI CHARACTER THO THAHAN " 
+       "16r0E18"    16rB8 " THAI CHARACTER THO THONG " 
+       "16r0E19"    16rB9 " THAI CHARACTER NO NU " 
+       "16r0E1A"    16rBA " THAI CHARACTER BO BAIMAI " 
+       "16r0E1B"    16rBB " THAI CHARACTER PO PLA " 
+       "16r0E1C"    16rBC " THAI CHARACTER PHO PHUNG " 
+       "16r0E1D"    16rBD " THAI CHARACTER FO FA " 
+       "16r0E1E"    16rBE " THAI CHARACTER PHO PHAN " 
+       "16r0E1F"    16rBF " THAI CHARACTER FO FAN " 
+       "16r0E20"    16rC0 " THAI CHARACTER PHO SAMPHAO " 
+       "16r0E21"    16rC1 " THAI CHARACTER MO MA " 
+       "16r0E22"    16rC2 " THAI CHARACTER YO YAK " 
+       "16r0E23"    16rC3 " THAI CHARACTER RO RUA " 
+       "16r0E24"    16rC4 " THAI CHARACTER RU " 
+       "16r0E25"    16rC5 " THAI CHARACTER LO LING " 
+       "16r0E26"    16rC6 " THAI CHARACTER LU " 
+       "16r0E27"    16rC7 " THAI CHARACTER WO WAEN " 
+       "16r0E28"    16rC8 " THAI CHARACTER SO SALA " 
+       "16r0E29"    16rC9 " THAI CHARACTER SO RUSI " 
+       "16r0E2A"    16rCA " THAI CHARACTER SO SUA " 
+       "16r0E2B"    16rCB " THAI CHARACTER HO HIP " 
+       "16r0E2C"    16rCC " THAI CHARACTER LO CHULA " 
+       "16r0E2D"    16rCD " THAI CHARACTER O ANG " 
+       "16r0E2E"    16rCE " THAI CHARACTER HO NOKHUK " 
+       "16r0E2F"    16rCF " THAI CHARACTER PAIYANNOI " 
+       "16r0E30"    16rD0 " THAI CHARACTER SARA A " 
+       "16r0E31"    16rD1 " THAI CHARACTER MAI HAN-AKAT " 
+       "16r0E32"    16rD2 " THAI CHARACTER SARA AA " 
+       "16r0E33"    16rD3 " THAI CHARACTER SARA AM " 
+       "16r0E34"    16rD4 " THAI CHARACTER SARA I " 
+       "16r0E35"    16rD5 " THAI CHARACTER SARA II " 
+       "16r0E36"    16rD6 " THAI CHARACTER SARA UE " 
+       "16r0E37"    16rD7 " THAI CHARACTER SARA UEE " 
+       "16r0E38"    16rD8 " THAI CHARACTER SARA U " 
+       "16r0E39"    16rD9 " THAI CHARACTER SARA UU " 
+       "16r0E3A"    16rDA " THAI CHARACTER PHINTHU " 
+       "16r0E3B"    16r00 " invalid " 
+       "16r0E3C"    16r00 " invalid " 
+       "16r0E3D"    16r00 " invalid " 
+       "16r0E3E"    16r00 " invalid " 
+       "16r0E3F"    16rDF " THAI CURRENCY SYMBOL BAHT " 
+       "16r0E40"    16rE0 " THAI CHARACTER SARA E " 
+       "16r0E41"    16rE1 " THAI CHARACTER SARA AE " 
+       "16r0E42"    16rE2 " THAI CHARACTER SARA O " 
+       "16r0E43"    16rE3 " THAI CHARACTER SARA AI MAIMUAN " 
+       "16r0E44"    16rE4 " THAI CHARACTER SARA AI MAIMALAI " 
+       "16r0E45"    16rE5 " THAI CHARACTER LAKKHANGYAO " 
+       "16r0E46"    16rE6 " THAI CHARACTER MAIYAMOK " 
+       "16r0E47"    16rE7 " THAI CHARACTER MAITAIKHU " 
+       "16r0E48"    16rE8 " THAI CHARACTER MAI EK " 
+       "16r0E49"    16rE9 " THAI CHARACTER MAI THO " 
+       "16r0E4A"    16rEA " THAI CHARACTER MAI TRI " 
+       "16r0E4B"    16rEB " THAI CHARACTER MAI CHATTAWA " 
+       "16r0E4C"    16rEC " THAI CHARACTER THANTHAKHAT " 
+       "16r0E4D"    16rED " THAI CHARACTER NIKHAHIT " 
+       "16r0E4E"    16rEE " THAI CHARACTER YAMAKKAN " 
+       "16r0E4F"    16rEF " THAI CHARACTER FONGMAN " 
+       "16r0E50"    16rF0 " THAI DIGIT ZERO " 
+       "16r0E51"    16rF1 " THAI DIGIT ONE " 
+       "16r0E52"    16rF2 " THAI DIGIT TWO " 
+       "16r0E53"    16rF3 " THAI DIGIT THREE " 
+       "16r0E54"    16rF4 " THAI DIGIT FOUR " 
+       "16r0E55"    16rF5 " THAI DIGIT FIVE " 
+       "16r0E56"    16rF6 " THAI DIGIT SIX " 
+       "16r0E57"    16rF7 " THAI DIGIT SEVEN " 
+       "16r0E58"    16rF8 " THAI DIGIT EIGHT " 
+       "16r0E59"    16rF9 " THAI DIGIT NINE " 
+       "16r0E5A"    16rFA " THAI CHARACTER ANGKHANKHU " 
+       "16r0E5B"    16rFB " THAI CHARACTER KHOMUT " 
+       ] at:(unicode - 3584).
+    t == 0 ifFalse:[^ t].
+    ^ self encodingError
+    ] value.
 ! !
 
 !CharacterEncoder::ISO8859_13 class methodsFor:'mapping'!
@@ -2532,21 +14139,22 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-13.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-13.TXT'
 ! !
 
 !CharacterEncoder::ISO8859_13 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r00A1"    16r201D " RIGHT DOUBLE QUOTATION MARK " 
        "16r00A2"    16r00A2 " CENT SIGN " 
        "16r00A3"    16r00A3 " POUND SIGN " 
@@ -2642,7 +14250,266 @@
        "16r00FD"    16r017C " LATIN SMALL LETTER Z WITH DOT ABOVE " 
        "16r00FE"    16r017E " LATIN SMALL LETTER Z WITH CARON " 
        "16r00FF"    16r2019 " RIGHT SINGLE QUOTATION MARK " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 8222 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 383 ifTrue:[
+        [
+        |t|
+        t := 
+#[
+           "16r00A1"    16r00 " invalid " 
+           "16r00A2"    16rA2 " CENT SIGN " 
+           "16r00A3"    16rA3 " POUND SIGN " 
+           "16r00A4"    16rA4 " CURRENCY SIGN " 
+           "16r00A5"    16r00 " invalid " 
+           "16r00A6"    16rA6 " BROKEN BAR " 
+           "16r00A7"    16rA7 " SECTION SIGN " 
+           "16r00A8"    16r00 " invalid " 
+           "16r00A9"    16rA9 " COPYRIGHT SIGN " 
+           "16r00AA"    16r00 " invalid " 
+           "16r00AB"    16rAB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00AC"    16rAC " NOT SIGN " 
+           "16r00AD"    16rAD " SOFT HYPHEN " 
+           "16r00AE"    16rAE " REGISTERED SIGN " 
+           "16r00AF"    16r00 " invalid " 
+           "16r00B0"    16rB0 " DEGREE SIGN " 
+           "16r00B1"    16rB1 " PLUS-MINUS SIGN " 
+           "16r00B2"    16rB2 " SUPERSCRIPT TWO " 
+           "16r00B3"    16rB3 " SUPERSCRIPT THREE " 
+           "16r00B4"    16r00 " invalid " 
+           "16r00B5"    16rB5 " MICRO SIGN " 
+           "16r00B6"    16rB6 " PILCROW SIGN " 
+           "16r00B7"    16rB7 " MIDDLE DOT " 
+           "16r00B8"    16r00 " invalid " 
+           "16r00B9"    16rB9 " SUPERSCRIPT ONE " 
+           "16r00BA"    16r00 " invalid " 
+           "16r00BB"    16rBB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00BC"    16rBC " VULGAR FRACTION ONE QUARTER " 
+           "16r00BD"    16rBD " VULGAR FRACTION ONE HALF " 
+           "16r00BE"    16rBE " VULGAR FRACTION THREE QUARTERS " 
+           "16r00BF"    16r00 " invalid " 
+           "16r00C0"    16r00 " invalid " 
+           "16r00C1"    16r00 " invalid " 
+           "16r00C2"    16r00 " invalid " 
+           "16r00C3"    16r00 " invalid " 
+           "16r00C4"    16rC4 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+           "16r00C5"    16rC5 " LATIN CAPITAL LETTER A WITH RING ABOVE " 
+           "16r00C6"    16rAF " LATIN CAPITAL LETTER AE " 
+           "16r00C7"    16r00 " invalid " 
+           "16r00C8"    16r00 " invalid " 
+           "16r00C9"    16rC9 " LATIN CAPITAL LETTER E WITH ACUTE " 
+           "16r00CA"    16r00 " invalid " 
+           "16r00CB"    16r00 " invalid " 
+           "16r00CC"    16r00 " invalid " 
+           "16r00CD"    16r00 " invalid " 
+           "16r00CE"    16r00 " invalid " 
+           "16r00CF"    16r00 " invalid " 
+           "16r00D0"    16r00 " invalid " 
+           "16r00D1"    16r00 " invalid " 
+           "16r00D2"    16r00 " invalid " 
+           "16r00D3"    16rD3 " LATIN CAPITAL LETTER O WITH ACUTE " 
+           "16r00D4"    16r00 " invalid " 
+           "16r00D5"    16rD5 " LATIN CAPITAL LETTER O WITH TILDE " 
+           "16r00D6"    16rD6 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    16rD7 " MULTIPLICATION SIGN " 
+           "16r00D8"    16rA8 " LATIN CAPITAL LETTER O WITH STROKE " 
+           "16r00D9"    16r00 " invalid " 
+           "16r00DA"    16r00 " invalid " 
+           "16r00DB"    16r00 " invalid " 
+           "16r00DC"    16rDC " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    16r00 " invalid " 
+           "16r00DE"    16r00 " invalid " 
+           "16r00DF"    16rDF " LATIN SMALL LETTER SHARP S (German) " 
+           "16r00E0"    16r00 " invalid " 
+           "16r00E1"    16r00 " invalid " 
+           "16r00E2"    16r00 " invalid " 
+           "16r00E3"    16r00 " invalid " 
+           "16r00E4"    16rE4 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    16rE5 " LATIN SMALL LETTER A WITH RING ABOVE " 
+           "16r00E6"    16rBF " LATIN SMALL LETTER AE " 
+           "16r00E7"    16r00 " invalid " 
+           "16r00E8"    16r00 " invalid " 
+           "16r00E9"    16rE9 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    16r00 " invalid " 
+           "16r00EB"    16r00 " invalid " 
+           "16r00EC"    16r00 " invalid " 
+           "16r00ED"    16r00 " invalid " 
+           "16r00EE"    16r00 " invalid " 
+           "16r00EF"    16r00 " invalid " 
+           "16r00F0"    16r00 " invalid " 
+           "16r00F1"    16r00 " invalid " 
+           "16r00F2"    16r00 " invalid " 
+           "16r00F3"    16rF3 " LATIN SMALL LETTER O WITH ACUTE " 
+           "16r00F4"    16r00 " invalid " 
+           "16r00F5"    16rF5 " LATIN SMALL LETTER O WITH TILDE " 
+           "16r00F6"    16rF6 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    16rF7 " DIVISION SIGN " 
+           "16r00F8"    16rB8 " LATIN SMALL LETTER O WITH STROKE " 
+           "16r00F9"    16r00 " invalid " 
+           "16r00FA"    16r00 " invalid " 
+           "16r00FB"    16r00 " invalid " 
+           "16r00FC"    16rFC " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    16r00 " invalid " 
+           "16r00FE"    16r00 " invalid " 
+           "16r00FF"    16r00 " invalid " 
+           "16r0100"    16rC2 " LATIN CAPITAL LETTER A WITH MACRON " 
+           "16r0101"    16rE2 " LATIN SMALL LETTER A WITH MACRON " 
+           "16r0102"    16r00 " invalid " 
+           "16r0103"    16r00 " invalid " 
+           "16r0104"    16rC0 " LATIN CAPITAL LETTER A WITH OGONEK " 
+           "16r0105"    16rE0 " LATIN SMALL LETTER A WITH OGONEK " 
+           "16r0106"    16rC3 " LATIN CAPITAL LETTER C WITH ACUTE " 
+           "16r0107"    16rE3 " LATIN SMALL LETTER C WITH ACUTE " 
+           "16r0108"    16r00 " invalid " 
+           "16r0109"    16r00 " invalid " 
+           "16r010A"    16r00 " invalid " 
+           "16r010B"    16r00 " invalid " 
+           "16r010C"    16rC8 " LATIN CAPITAL LETTER C WITH CARON " 
+           "16r010D"    16rE8 " LATIN SMALL LETTER C WITH CARON " 
+           "16r010E"    16r00 " invalid " 
+           "16r010F"    16r00 " invalid " 
+           "16r0110"    16r00 " invalid " 
+           "16r0111"    16r00 " invalid " 
+           "16r0112"    16rC7 " LATIN CAPITAL LETTER E WITH MACRON " 
+           "16r0113"    16rE7 " LATIN SMALL LETTER E WITH MACRON " 
+           "16r0114"    16r00 " invalid " 
+           "16r0115"    16r00 " invalid " 
+           "16r0116"    16rCB " LATIN CAPITAL LETTER E WITH DOT ABOVE " 
+           "16r0117"    16rEB " LATIN SMALL LETTER E WITH DOT ABOVE " 
+           "16r0118"    16rC6 " LATIN CAPITAL LETTER E WITH OGONEK " 
+           "16r0119"    16rE6 " LATIN SMALL LETTER E WITH OGONEK " 
+           "16r011A"    16r00 " invalid " 
+           "16r011B"    16r00 " invalid " 
+           "16r011C"    16r00 " invalid " 
+           "16r011D"    16r00 " invalid " 
+           "16r011E"    16r00 " invalid " 
+           "16r011F"    16r00 " invalid " 
+           "16r0120"    16r00 " invalid " 
+           "16r0121"    16r00 " invalid " 
+           "16r0122"    16rCC " LATIN CAPITAL LETTER G WITH CEDILLA " 
+           "16r0123"    16rEC " LATIN SMALL LETTER G WITH CEDILLA " 
+           "16r0124"    16r00 " invalid " 
+           "16r0125"    16r00 " invalid " 
+           "16r0126"    16r00 " invalid " 
+           "16r0127"    16r00 " invalid " 
+           "16r0128"    16r00 " invalid " 
+           "16r0129"    16r00 " invalid " 
+           "16r012A"    16rCE " LATIN CAPITAL LETTER I WITH MACRON " 
+           "16r012B"    16rEE " LATIN SMALL LETTER I WITH MACRON " 
+           "16r012C"    16r00 " invalid " 
+           "16r012D"    16r00 " invalid " 
+           "16r012E"    16rC1 " LATIN CAPITAL LETTER I WITH OGONEK " 
+           "16r012F"    16rE1 " LATIN SMALL LETTER I WITH OGONEK " 
+           "16r0130"    16r00 " invalid " 
+           "16r0131"    16r00 " invalid " 
+           "16r0132"    16r00 " invalid " 
+           "16r0133"    16r00 " invalid " 
+           "16r0134"    16r00 " invalid " 
+           "16r0135"    16r00 " invalid " 
+           "16r0136"    16rCD " LATIN CAPITAL LETTER K WITH CEDILLA " 
+           "16r0137"    16rED " LATIN SMALL LETTER K WITH CEDILLA " 
+           "16r0138"    16r00 " invalid " 
+           "16r0139"    16r00 " invalid " 
+           "16r013A"    16r00 " invalid " 
+           "16r013B"    16rCF " LATIN CAPITAL LETTER L WITH CEDILLA " 
+           "16r013C"    16rEF " LATIN SMALL LETTER L WITH CEDILLA " 
+           "16r013D"    16r00 " invalid " 
+           "16r013E"    16r00 " invalid " 
+           "16r013F"    16r00 " invalid " 
+           "16r0140"    16r00 " invalid " 
+           "16r0141"    16rD9 " LATIN CAPITAL LETTER L WITH STROKE " 
+           "16r0142"    16rF9 " LATIN SMALL LETTER L WITH STROKE " 
+           "16r0143"    16rD1 " LATIN CAPITAL LETTER N WITH ACUTE " 
+           "16r0144"    16rF1 " LATIN SMALL LETTER N WITH ACUTE " 
+           "16r0145"    16rD2 " LATIN CAPITAL LETTER N WITH CEDILLA " 
+           "16r0146"    16rF2 " LATIN SMALL LETTER N WITH CEDILLA " 
+           "16r0147"    16r00 " invalid " 
+           "16r0148"    16r00 " invalid " 
+           "16r0149"    16r00 " invalid " 
+           "16r014A"    16r00 " invalid " 
+           "16r014B"    16r00 " invalid " 
+           "16r014C"    16rD4 " LATIN CAPITAL LETTER O WITH MACRON " 
+           "16r014D"    16rF4 " LATIN SMALL LETTER O WITH MACRON " 
+           "16r014E"    16r00 " invalid " 
+           "16r014F"    16r00 " invalid " 
+           "16r0150"    16r00 " invalid " 
+           "16r0151"    16r00 " invalid " 
+           "16r0152"    16r00 " invalid " 
+           "16r0153"    16r00 " invalid " 
+           "16r0154"    16r00 " invalid " 
+           "16r0155"    16r00 " invalid " 
+           "16r0156"    16rAA " LATIN CAPITAL LETTER R WITH CEDILLA " 
+           "16r0157"    16rBA " LATIN SMALL LETTER R WITH CEDILLA " 
+           "16r0158"    16r00 " invalid " 
+           "16r0159"    16r00 " invalid " 
+           "16r015A"    16rDA " LATIN CAPITAL LETTER S WITH ACUTE " 
+           "16r015B"    16rFA " LATIN SMALL LETTER S WITH ACUTE " 
+           "16r015C"    16r00 " invalid " 
+           "16r015D"    16r00 " invalid " 
+           "16r015E"    16r00 " invalid " 
+           "16r015F"    16r00 " invalid " 
+           "16r0160"    16rD0 " LATIN CAPITAL LETTER S WITH CARON " 
+           "16r0161"    16rF0 " LATIN SMALL LETTER S WITH CARON " 
+           "16r0162"    16r00 " invalid " 
+           "16r0163"    16r00 " invalid " 
+           "16r0164"    16r00 " invalid " 
+           "16r0165"    16r00 " invalid " 
+           "16r0166"    16r00 " invalid " 
+           "16r0167"    16r00 " invalid " 
+           "16r0168"    16r00 " invalid " 
+           "16r0169"    16r00 " invalid " 
+           "16r016A"    16rDB " LATIN CAPITAL LETTER U WITH MACRON " 
+           "16r016B"    16rFB " LATIN SMALL LETTER U WITH MACRON " 
+           "16r016C"    16r00 " invalid " 
+           "16r016D"    16r00 " invalid " 
+           "16r016E"    16r00 " invalid " 
+           "16r016F"    16r00 " invalid " 
+           "16r0170"    16r00 " invalid " 
+           "16r0171"    16r00 " invalid " 
+           "16r0172"    16rD8 " LATIN CAPITAL LETTER U WITH OGONEK " 
+           "16r0173"    16rF8 " LATIN SMALL LETTER U WITH OGONEK " 
+           "16r0174"    16r00 " invalid " 
+           "16r0175"    16r00 " invalid " 
+           "16r0176"    16r00 " invalid " 
+           "16r0177"    16r00 " invalid " 
+           "16r0178"    16r00 " invalid " 
+           "16r0179"    16rCA " LATIN CAPITAL LETTER Z WITH ACUTE " 
+           "16r017A"    16rEA " LATIN SMALL LETTER Z WITH ACUTE " 
+           "16r017B"    16rDD " LATIN CAPITAL LETTER Z WITH DOT ABOVE " 
+           "16r017C"    16rFD " LATIN SMALL LETTER Z WITH DOT ABOVE " 
+           "16r017D"    16rDE " LATIN CAPITAL LETTER Z WITH CARON " 
+           "16r017E"    16rFE " LATIN SMALL LETTER Z WITH CARON " 
+           ] at:(unicode - 160).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 8216 ifTrue:[
+        ^ self encodingError.
+    ].
+    [
+    |t|
+    t := 
+#[
+       "16r2019"    16rFF " RIGHT SINGLE QUOTATION MARK " 
+       "16r201A"    16r00 " invalid " 
+       "16r201B"    16r00 " invalid " 
+       "16r201C"    16rB4 " LEFT DOUBLE QUOTATION MARK " 
+       "16r201D"    16rA1 " RIGHT DOUBLE QUOTATION MARK " 
+       "16r201E"    16rA5 " DOUBLE LOW-9 QUOTATION MARK " 
+       ] at:(unicode - 8216).
+    t == 0 ifFalse:[^ t].
+    ^ self encodingError
+    ] value.
 ! !
 
 !CharacterEncoder::ISO8859_14 class methodsFor:'mapping'!
@@ -2956,21 +14823,22 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-14.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-14.TXT'
 ! !
 
 !CharacterEncoder::ISO8859_14 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r00A1"    16r1E02 " LATIN CAPITAL LETTER B WITH DOT ABOVE " 
        "16r00A2"    16r1E03 " LATIN SMALL LETTER B WITH DOT ABOVE " 
        "16r00A3"    16r00A3 " POUND SIGN " 
@@ -3065,7 +14933,327 @@
        "16r00FC"    16r00FC " LATIN SMALL LETTER U WITH DIAERESIS " 
        "16r00FD"    16r00FD " LATIN SMALL LETTER Y WITH ACUTE " 
        "16r00FE"    16r0177 " LATIN SMALL LETTER Y WITH CIRCUMFLEX " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 7923 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 266 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    0 " invalid " 
+           "16r00A3"    1 " POUND SIGN " 
+           "16r00A4"    0 " invalid " 
+           "16r00A5"    0 " invalid " 
+           "16r00A6"    0 " invalid " 
+           "16r00A7"    1 " SECTION SIGN " 
+           "16r00A8"    0 " invalid " 
+           "16r00A9"    1 " COPYRIGHT SIGN " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    0 " invalid " 
+           "16r00AC"    0 " invalid " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    1 " REGISTERED SIGN " 
+           "16r00AF"    0 " invalid " 
+           "16r00B0"    0 " invalid " 
+           "16r00B1"    0 " invalid " 
+           "16r00B2"    0 " invalid " 
+           "16r00B3"    0 " invalid " 
+           "16r00B4"    0 " invalid " 
+           "16r00B5"    0 " invalid " 
+           "16r00B6"    1 " PILCROW SIGN " 
+           "16r00B7"    0 " invalid " 
+           "16r00B8"    0 " invalid " 
+           "16r00B9"    0 " invalid " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    0 " invalid " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    0 " invalid " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    1 " LATIN CAPITAL LETTER A WITH GRAVE " 
+           "16r00C1"    1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+           "16r00C2"    1 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+           "16r00C3"    1 " LATIN CAPITAL LETTER A WITH TILDE " 
+           "16r00C4"    1 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+           "16r00C5"    1 " LATIN CAPITAL LETTER A WITH RING ABOVE " 
+           "16r00C6"    1 " LATIN CAPITAL LETTER AE " 
+           "16r00C7"    1 " LATIN CAPITAL LETTER C WITH CEDILLA " 
+           "16r00C8"    1 " LATIN CAPITAL LETTER E WITH GRAVE " 
+           "16r00C9"    1 " LATIN CAPITAL LETTER E WITH ACUTE " 
+           "16r00CA"    1 " LATIN CAPITAL LETTER E WITH CIRCUMFLEX " 
+           "16r00CB"    1 " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+           "16r00CC"    1 " LATIN CAPITAL LETTER I WITH GRAVE " 
+           "16r00CD"    1 " LATIN CAPITAL LETTER I WITH ACUTE " 
+           "16r00CE"    1 " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+           "16r00CF"    1 " LATIN CAPITAL LETTER I WITH DIAERESIS " 
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    1 " LATIN CAPITAL LETTER N WITH TILDE " 
+           "16r00D2"    1 " LATIN CAPITAL LETTER O WITH GRAVE " 
+           "16r00D3"    1 " LATIN CAPITAL LETTER O WITH ACUTE " 
+           "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    1 " LATIN CAPITAL LETTER O WITH TILDE " 
+           "16r00D6"    1 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    0 " invalid " 
+           "16r00D8"    1 " LATIN CAPITAL LETTER O WITH STROKE " 
+           "16r00D9"    1 " LATIN CAPITAL LETTER U WITH GRAVE " 
+           "16r00DA"    1 " LATIN CAPITAL LETTER U WITH ACUTE " 
+           "16r00DB"    1 " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+           "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    1 " LATIN CAPITAL LETTER Y WITH ACUTE " 
+           "16r00DE"    0 " invalid " 
+           "16r00DF"    1 " LATIN SMALL LETTER SHARP S " 
+           "16r00E0"    1 " LATIN SMALL LETTER A WITH GRAVE " 
+           "16r00E1"    1 " LATIN SMALL LETTER A WITH ACUTE " 
+           "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    1 " LATIN SMALL LETTER A WITH TILDE " 
+           "16r00E4"    1 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    1 " LATIN SMALL LETTER A WITH RING ABOVE " 
+           "16r00E6"    1 " LATIN SMALL LETTER AE " 
+           "16r00E7"    1 " LATIN SMALL LETTER C WITH CEDILLA " 
+           "16r00E8"    1 " LATIN SMALL LETTER E WITH GRAVE " 
+           "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    1 " LATIN SMALL LETTER E WITH CIRCUMFLEX " 
+           "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+           "16r00EC"    1 " LATIN SMALL LETTER I WITH GRAVE " 
+           "16r00ED"    1 " LATIN SMALL LETTER I WITH ACUTE " 
+           "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    1 " LATIN SMALL LETTER I WITH DIAERESIS " 
+           "16r00F0"    0 " invalid " 
+           "16r00F1"    1 " LATIN SMALL LETTER N WITH TILDE " 
+           "16r00F2"    1 " LATIN SMALL LETTER O WITH GRAVE " 
+           "16r00F3"    1 " LATIN SMALL LETTER O WITH ACUTE " 
+           "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    1 " LATIN SMALL LETTER O WITH TILDE " 
+           "16r00F6"    1 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    0 " invalid " 
+           "16r00F8"    1 " LATIN SMALL LETTER O WITH STROKE " 
+           "16r00F9"    1 " LATIN SMALL LETTER U WITH GRAVE " 
+           "16r00FA"    1 " LATIN SMALL LETTER U WITH ACUTE " 
+           "16r00FB"    1 " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+           "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    1 " LATIN SMALL LETTER Y WITH ACUTE " 
+           "16r00FE"    0 " invalid " 
+           "16r00FF"    1 " LATIN SMALL LETTER Y WITH DIAERESIS " 
+           "16r0100"    0 " invalid " 
+           "16r0101"    0 " invalid " 
+           "16r0102"    0 " invalid " 
+           "16r0103"    0 " invalid " 
+           "16r0104"    0 " invalid " 
+           "16r0105"    0 " invalid " 
+           "16r0106"    0 " invalid " 
+           "16r0107"    0 " invalid " 
+           "16r0108"    0 " invalid " 
+           "16r0109"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    unicode < 377 ifTrue:[
+        unicode < 290 ifTrue:[
+            [
+            |t|
+            t := 
+#[
+               "16r010A"    16rA4 " LATIN CAPITAL LETTER C WITH DOT ABOVE " 
+               "16r010B"    16rA5 " LATIN SMALL LETTER C WITH DOT ABOVE " 
+               "16r010C"    16r00 " invalid " 
+               "16r010D"    16r00 " invalid " 
+               "16r010E"    16r00 " invalid " 
+               "16r010F"    16r00 " invalid " 
+               "16r0110"    16r00 " invalid " 
+               "16r0111"    16r00 " invalid " 
+               "16r0112"    16r00 " invalid " 
+               "16r0113"    16r00 " invalid " 
+               "16r0114"    16r00 " invalid " 
+               "16r0115"    16r00 " invalid " 
+               "16r0116"    16r00 " invalid " 
+               "16r0117"    16r00 " invalid " 
+               "16r0118"    16r00 " invalid " 
+               "16r0119"    16r00 " invalid " 
+               "16r011A"    16r00 " invalid " 
+               "16r011B"    16r00 " invalid " 
+               "16r011C"    16r00 " invalid " 
+               "16r011D"    16r00 " invalid " 
+               "16r011E"    16r00 " invalid " 
+               "16r011F"    16r00 " invalid " 
+               "16r0120"    16rB2 " LATIN CAPITAL LETTER G WITH DOT ABOVE " 
+               "16r0121"    16rB3 " LATIN SMALL LETTER G WITH DOT ABOVE " 
+               ] at:(unicode - 265).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+            ] value.
+        ].
+        unicode <= 371 ifTrue:[
+            ^ self encodingError.
+        ].
+        ^ 
+#[
+           "16r0174"    16rD0 " LATIN CAPITAL LETTER W WITH CIRCUMFLEX " 
+           "16r0175"    16rF0 " LATIN SMALL LETTER W WITH CIRCUMFLEX " 
+           "16r0176"    16rDE " LATIN CAPITAL LETTER Y WITH CIRCUMFLEX " 
+           "16r0177"    16rFE " LATIN SMALL LETTER Y WITH CIRCUMFLEX " 
+           "16r0178"    16rAF " LATIN CAPITAL LETTER Y WITH DIAERESIS " 
+           ] at:(unicode - 371).
+    ].
+    unicode <= 7681 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 7814 ifTrue:[
+        [
+        |t|
+        t := 
+#[
+           "16r1E02"    16rA1 " LATIN CAPITAL LETTER B WITH DOT ABOVE " 
+           "16r1E03"    16rA2 " LATIN SMALL LETTER B WITH DOT ABOVE " 
+           "16r1E04"    16r00 " invalid " 
+           "16r1E05"    16r00 " invalid " 
+           "16r1E06"    16r00 " invalid " 
+           "16r1E07"    16r00 " invalid " 
+           "16r1E08"    16r00 " invalid " 
+           "16r1E09"    16r00 " invalid " 
+           "16r1E0A"    16rA6 " LATIN CAPITAL LETTER D WITH DOT ABOVE " 
+           "16r1E0B"    16rAB " LATIN SMALL LETTER D WITH DOT ABOVE " 
+           "16r1E0C"    16r00 " invalid " 
+           "16r1E0D"    16r00 " invalid " 
+           "16r1E0E"    16r00 " invalid " 
+           "16r1E0F"    16r00 " invalid " 
+           "16r1E10"    16r00 " invalid " 
+           "16r1E11"    16r00 " invalid " 
+           "16r1E12"    16r00 " invalid " 
+           "16r1E13"    16r00 " invalid " 
+           "16r1E14"    16r00 " invalid " 
+           "16r1E15"    16r00 " invalid " 
+           "16r1E16"    16r00 " invalid " 
+           "16r1E17"    16r00 " invalid " 
+           "16r1E18"    16r00 " invalid " 
+           "16r1E19"    16r00 " invalid " 
+           "16r1E1A"    16r00 " invalid " 
+           "16r1E1B"    16r00 " invalid " 
+           "16r1E1C"    16r00 " invalid " 
+           "16r1E1D"    16r00 " invalid " 
+           "16r1E1E"    16rB0 " LATIN CAPITAL LETTER F WITH DOT ABOVE " 
+           "16r1E1F"    16rB1 " LATIN SMALL LETTER F WITH DOT ABOVE " 
+           "16r1E20"    16r00 " invalid " 
+           "16r1E21"    16r00 " invalid " 
+           "16r1E22"    16r00 " invalid " 
+           "16r1E23"    16r00 " invalid " 
+           "16r1E24"    16r00 " invalid " 
+           "16r1E25"    16r00 " invalid " 
+           "16r1E26"    16r00 " invalid " 
+           "16r1E27"    16r00 " invalid " 
+           "16r1E28"    16r00 " invalid " 
+           "16r1E29"    16r00 " invalid " 
+           "16r1E2A"    16r00 " invalid " 
+           "16r1E2B"    16r00 " invalid " 
+           "16r1E2C"    16r00 " invalid " 
+           "16r1E2D"    16r00 " invalid " 
+           "16r1E2E"    16r00 " invalid " 
+           "16r1E2F"    16r00 " invalid " 
+           "16r1E30"    16r00 " invalid " 
+           "16r1E31"    16r00 " invalid " 
+           "16r1E32"    16r00 " invalid " 
+           "16r1E33"    16r00 " invalid " 
+           "16r1E34"    16r00 " invalid " 
+           "16r1E35"    16r00 " invalid " 
+           "16r1E36"    16r00 " invalid " 
+           "16r1E37"    16r00 " invalid " 
+           "16r1E38"    16r00 " invalid " 
+           "16r1E39"    16r00 " invalid " 
+           "16r1E3A"    16r00 " invalid " 
+           "16r1E3B"    16r00 " invalid " 
+           "16r1E3C"    16r00 " invalid " 
+           "16r1E3D"    16r00 " invalid " 
+           "16r1E3E"    16r00 " invalid " 
+           "16r1E3F"    16r00 " invalid " 
+           "16r1E40"    16rB4 " LATIN CAPITAL LETTER M WITH DOT ABOVE " 
+           "16r1E41"    16rB5 " LATIN SMALL LETTER M WITH DOT ABOVE " 
+           "16r1E42"    16r00 " invalid " 
+           "16r1E43"    16r00 " invalid " 
+           "16r1E44"    16r00 " invalid " 
+           "16r1E45"    16r00 " invalid " 
+           "16r1E46"    16r00 " invalid " 
+           "16r1E47"    16r00 " invalid " 
+           "16r1E48"    16r00 " invalid " 
+           "16r1E49"    16r00 " invalid " 
+           "16r1E4A"    16r00 " invalid " 
+           "16r1E4B"    16r00 " invalid " 
+           "16r1E4C"    16r00 " invalid " 
+           "16r1E4D"    16r00 " invalid " 
+           "16r1E4E"    16r00 " invalid " 
+           "16r1E4F"    16r00 " invalid " 
+           "16r1E50"    16r00 " invalid " 
+           "16r1E51"    16r00 " invalid " 
+           "16r1E52"    16r00 " invalid " 
+           "16r1E53"    16r00 " invalid " 
+           "16r1E54"    16r00 " invalid " 
+           "16r1E55"    16r00 " invalid " 
+           "16r1E56"    16rB7 " LATIN CAPITAL LETTER P WITH DOT ABOVE " 
+           "16r1E57"    16rB9 " LATIN SMALL LETTER P WITH DOT ABOVE " 
+           "16r1E58"    16r00 " invalid " 
+           "16r1E59"    16r00 " invalid " 
+           "16r1E5A"    16r00 " invalid " 
+           "16r1E5B"    16r00 " invalid " 
+           "16r1E5C"    16r00 " invalid " 
+           "16r1E5D"    16r00 " invalid " 
+           "16r1E5E"    16r00 " invalid " 
+           "16r1E5F"    16r00 " invalid " 
+           "16r1E60"    16rBB " LATIN CAPITAL LETTER S WITH DOT ABOVE " 
+           "16r1E61"    16rBF " LATIN SMALL LETTER S WITH DOT ABOVE " 
+           "16r1E62"    16r00 " invalid " 
+           "16r1E63"    16r00 " invalid " 
+           "16r1E64"    16r00 " invalid " 
+           "16r1E65"    16r00 " invalid " 
+           "16r1E66"    16r00 " invalid " 
+           "16r1E67"    16r00 " invalid " 
+           "16r1E68"    16r00 " invalid " 
+           "16r1E69"    16r00 " invalid " 
+           "16r1E6A"    16rD7 " LATIN CAPITAL LETTER T WITH DOT ABOVE " 
+           "16r1E6B"    16rF7 " LATIN SMALL LETTER T WITH DOT ABOVE " 
+           "16r1E6C"    16r00 " invalid " 
+           "16r1E6D"    16r00 " invalid " 
+           "16r1E6E"    16r00 " invalid " 
+           "16r1E6F"    16r00 " invalid " 
+           "16r1E70"    16r00 " invalid " 
+           "16r1E71"    16r00 " invalid " 
+           "16r1E72"    16r00 " invalid " 
+           "16r1E73"    16r00 " invalid " 
+           "16r1E74"    16r00 " invalid " 
+           "16r1E75"    16r00 " invalid " 
+           "16r1E76"    16r00 " invalid " 
+           "16r1E77"    16r00 " invalid " 
+           "16r1E78"    16r00 " invalid " 
+           "16r1E79"    16r00 " invalid " 
+           "16r1E7A"    16r00 " invalid " 
+           "16r1E7B"    16r00 " invalid " 
+           "16r1E7C"    16r00 " invalid " 
+           "16r1E7D"    16r00 " invalid " 
+           "16r1E7E"    16r00 " invalid " 
+           "16r1E7F"    16r00 " invalid " 
+           "16r1E80"    16rA8 " LATIN CAPITAL LETTER W WITH GRAVE " 
+           "16r1E81"    16rB8 " LATIN SMALL LETTER W WITH GRAVE " 
+           "16r1E82"    16rAA " LATIN CAPITAL LETTER W WITH ACUTE " 
+           "16r1E83"    16rBA " LATIN SMALL LETTER W WITH ACUTE " 
+           "16r1E84"    16rBD " LATIN CAPITAL LETTER W WITH DIAERESIS " 
+           "16r1E85"    16rBE " LATIN SMALL LETTER W WITH DIAERESIS " 
+           ] at:(unicode - 7681).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 7921 ifTrue:[
+        ^ self encodingError.
+    ].
+    ^ 
+#[
+       "16r1EF2"    16rAC " LATIN CAPITAL LETTER Y WITH GRAVE " 
+       "16r1EF3"    16rBC " LATIN SMALL LETTER Y WITH GRAVE " 
+       ] at:(unicode - 7921).
 ! !
 
 !CharacterEncoder::ISO8859_15 class methodsFor:'mapping'!
@@ -3381,21 +15569,28 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-15.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-15.TXT'
+! !
+
+!CharacterEncoder::ISO8859_15 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'latin-9' 'iso-ir-203')
 ! !
 
 !CharacterEncoder::ISO8859_15 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 164 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r00A4"    16r20AC " EURO SIGN " 
        "16r00A5"    16r00A5 " YEN SIGN " 
        "16r00A6"    16r0160 " LATIN CAPITAL LETTER S WITH CARON " 
@@ -3423,7 +15618,258 @@
        "16r00BC"    16r0152 " LATIN CAPITAL LIGATURE OE " 
        "16r00BD"    16r0153 " LATIN SMALL LIGATURE OE " 
        "16r00BE"    16r0178 " LATIN CAPITAL LETTER Y WITH DIAERESIS " 
-       ) at:(code - 163)
+       ) at:(code - 163).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 164 ifTrue:[ ^ unicode ].
+    unicode > 8364 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 338 ifTrue:[
+        (#[
+           "16r00A4"    0 " invalid " 
+           "16r00A5"    1 " YEN SIGN " 
+           "16r00A6"    0 " invalid " 
+           "16r00A7"    1 " SECTION SIGN " 
+           "16r00A8"    0 " invalid " 
+           "16r00A9"    1 " COPYRIGHT SIGN " 
+           "16r00AA"    1 " FEMININE ORDINAL INDICATOR " 
+           "16r00AB"    1 " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00AC"    1 " NOT SIGN " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    1 " REGISTERED SIGN " 
+           "16r00AF"    1 " MACRON " 
+           "16r00B0"    1 " DEGREE SIGN " 
+           "16r00B1"    1 " PLUS-MINUS SIGN " 
+           "16r00B2"    1 " SUPERSCRIPT TWO " 
+           "16r00B3"    1 " SUPERSCRIPT THREE " 
+           "16r00B4"    0 " invalid " 
+           "16r00B5"    1 " MICRO SIGN " 
+           "16r00B6"    1 " PILCROW SIGN " 
+           "16r00B7"    1 " MIDDLE DOT " 
+           "16r00B8"    0 " invalid " 
+           "16r00B9"    1 " SUPERSCRIPT ONE " 
+           "16r00BA"    1 " MASCULINE ORDINAL INDICATOR " 
+           "16r00BB"    1 " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    0 " invalid " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    1 " INVERTED QUESTION MARK " 
+           "16r00C0"    1 " LATIN CAPITAL LETTER A WITH GRAVE " 
+           "16r00C1"    1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+           "16r00C2"    1 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+           "16r00C3"    1 " LATIN CAPITAL LETTER A WITH TILDE " 
+           "16r00C4"    1 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+           "16r00C5"    1 " LATIN CAPITAL LETTER A WITH RING ABOVE " 
+           "16r00C6"    1 " LATIN CAPITAL LETTER AE " 
+           "16r00C7"    1 " LATIN CAPITAL LETTER C WITH CEDILLA " 
+           "16r00C8"    1 " LATIN CAPITAL LETTER E WITH GRAVE " 
+           "16r00C9"    1 " LATIN CAPITAL LETTER E WITH ACUTE " 
+           "16r00CA"    1 " LATIN CAPITAL LETTER E WITH CIRCUMFLEX " 
+           "16r00CB"    1 " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+           "16r00CC"    1 " LATIN CAPITAL LETTER I WITH GRAVE " 
+           "16r00CD"    1 " LATIN CAPITAL LETTER I WITH ACUTE " 
+           "16r00CE"    1 " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+           "16r00CF"    1 " LATIN CAPITAL LETTER I WITH DIAERESIS " 
+           "16r00D0"    1 " LATIN CAPITAL LETTER ETH " 
+           "16r00D1"    1 " LATIN CAPITAL LETTER N WITH TILDE " 
+           "16r00D2"    1 " LATIN CAPITAL LETTER O WITH GRAVE " 
+           "16r00D3"    1 " LATIN CAPITAL LETTER O WITH ACUTE " 
+           "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    1 " LATIN CAPITAL LETTER O WITH TILDE " 
+           "16r00D6"    1 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    1 " MULTIPLICATION SIGN " 
+           "16r00D8"    1 " LATIN CAPITAL LETTER O WITH STROKE " 
+           "16r00D9"    1 " LATIN CAPITAL LETTER U WITH GRAVE " 
+           "16r00DA"    1 " LATIN CAPITAL LETTER U WITH ACUTE " 
+           "16r00DB"    1 " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+           "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    1 " LATIN CAPITAL LETTER Y WITH ACUTE " 
+           "16r00DE"    1 " LATIN CAPITAL LETTER THORN " 
+           "16r00DF"    1 " LATIN SMALL LETTER SHARP S " 
+           "16r00E0"    1 " LATIN SMALL LETTER A WITH GRAVE " 
+           "16r00E1"    1 " LATIN SMALL LETTER A WITH ACUTE " 
+           "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    1 " LATIN SMALL LETTER A WITH TILDE " 
+           "16r00E4"    1 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    1 " LATIN SMALL LETTER A WITH RING ABOVE " 
+           "16r00E6"    1 " LATIN SMALL LETTER AE " 
+           "16r00E7"    1 " LATIN SMALL LETTER C WITH CEDILLA " 
+           "16r00E8"    1 " LATIN SMALL LETTER E WITH GRAVE " 
+           "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    1 " LATIN SMALL LETTER E WITH CIRCUMFLEX " 
+           "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+           "16r00EC"    1 " LATIN SMALL LETTER I WITH GRAVE " 
+           "16r00ED"    1 " LATIN SMALL LETTER I WITH ACUTE " 
+           "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    1 " LATIN SMALL LETTER I WITH DIAERESIS " 
+           "16r00F0"    1 " LATIN SMALL LETTER ETH " 
+           "16r00F1"    1 " LATIN SMALL LETTER N WITH TILDE " 
+           "16r00F2"    1 " LATIN SMALL LETTER O WITH GRAVE " 
+           "16r00F3"    1 " LATIN SMALL LETTER O WITH ACUTE " 
+           "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    1 " LATIN SMALL LETTER O WITH TILDE " 
+           "16r00F6"    1 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    1 " DIVISION SIGN " 
+           "16r00F8"    1 " LATIN SMALL LETTER O WITH STROKE " 
+           "16r00F9"    1 " LATIN SMALL LETTER U WITH GRAVE " 
+           "16r00FA"    1 " LATIN SMALL LETTER U WITH ACUTE " 
+           "16r00FB"    1 " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+           "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    1 " LATIN SMALL LETTER Y WITH ACUTE " 
+           "16r00FE"    1 " LATIN SMALL LETTER THORN " 
+           "16r00FF"    1 " LATIN SMALL LETTER Y WITH DIAERESIS " 
+           "16r0100"    0 " invalid " 
+           "16r0101"    0 " invalid " 
+           "16r0102"    0 " invalid " 
+           "16r0103"    0 " invalid " 
+           "16r0104"    0 " invalid " 
+           "16r0105"    0 " invalid " 
+           "16r0106"    0 " invalid " 
+           "16r0107"    0 " invalid " 
+           "16r0108"    0 " invalid " 
+           "16r0109"    0 " invalid " 
+           "16r010A"    0 " invalid " 
+           "16r010B"    0 " invalid " 
+           "16r010C"    0 " invalid " 
+           "16r010D"    0 " invalid " 
+           "16r010E"    0 " invalid " 
+           "16r010F"    0 " invalid " 
+           "16r0110"    0 " invalid " 
+           "16r0111"    0 " invalid " 
+           "16r0112"    0 " invalid " 
+           "16r0113"    0 " invalid " 
+           "16r0114"    0 " invalid " 
+           "16r0115"    0 " invalid " 
+           "16r0116"    0 " invalid " 
+           "16r0117"    0 " invalid " 
+           "16r0118"    0 " invalid " 
+           "16r0119"    0 " invalid " 
+           "16r011A"    0 " invalid " 
+           "16r011B"    0 " invalid " 
+           "16r011C"    0 " invalid " 
+           "16r011D"    0 " invalid " 
+           "16r011E"    0 " invalid " 
+           "16r011F"    0 " invalid " 
+           "16r0120"    0 " invalid " 
+           "16r0121"    0 " invalid " 
+           "16r0122"    0 " invalid " 
+           "16r0123"    0 " invalid " 
+           "16r0124"    0 " invalid " 
+           "16r0125"    0 " invalid " 
+           "16r0126"    0 " invalid " 
+           "16r0127"    0 " invalid " 
+           "16r0128"    0 " invalid " 
+           "16r0129"    0 " invalid " 
+           "16r012A"    0 " invalid " 
+           "16r012B"    0 " invalid " 
+           "16r012C"    0 " invalid " 
+           "16r012D"    0 " invalid " 
+           "16r012E"    0 " invalid " 
+           "16r012F"    0 " invalid " 
+           "16r0130"    0 " invalid " 
+           "16r0131"    0 " invalid " 
+           "16r0132"    0 " invalid " 
+           "16r0133"    0 " invalid " 
+           "16r0134"    0 " invalid " 
+           "16r0135"    0 " invalid " 
+           "16r0136"    0 " invalid " 
+           "16r0137"    0 " invalid " 
+           "16r0138"    0 " invalid " 
+           "16r0139"    0 " invalid " 
+           "16r013A"    0 " invalid " 
+           "16r013B"    0 " invalid " 
+           "16r013C"    0 " invalid " 
+           "16r013D"    0 " invalid " 
+           "16r013E"    0 " invalid " 
+           "16r013F"    0 " invalid " 
+           "16r0140"    0 " invalid " 
+           "16r0141"    0 " invalid " 
+           "16r0142"    0 " invalid " 
+           "16r0143"    0 " invalid " 
+           "16r0144"    0 " invalid " 
+           "16r0145"    0 " invalid " 
+           "16r0146"    0 " invalid " 
+           "16r0147"    0 " invalid " 
+           "16r0148"    0 " invalid " 
+           "16r0149"    0 " invalid " 
+           "16r014A"    0 " invalid " 
+           "16r014B"    0 " invalid " 
+           "16r014C"    0 " invalid " 
+           "16r014D"    0 " invalid " 
+           "16r014E"    0 " invalid " 
+           "16r014F"    0 " invalid " 
+           "16r0150"    0 " invalid " 
+           "16r0151"    0 " invalid " 
+        ] at:(unicode - 163)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    unicode < 383 ifTrue:[
+        [
+        |t|
+        t := 
+#[
+           "16r0152"    16rBC " LATIN CAPITAL LIGATURE OE " 
+           "16r0153"    16rBD " LATIN SMALL LIGATURE OE " 
+           "16r0154"    16r00 " invalid " 
+           "16r0155"    16r00 " invalid " 
+           "16r0156"    16r00 " invalid " 
+           "16r0157"    16r00 " invalid " 
+           "16r0158"    16r00 " invalid " 
+           "16r0159"    16r00 " invalid " 
+           "16r015A"    16r00 " invalid " 
+           "16r015B"    16r00 " invalid " 
+           "16r015C"    16r00 " invalid " 
+           "16r015D"    16r00 " invalid " 
+           "16r015E"    16r00 " invalid " 
+           "16r015F"    16r00 " invalid " 
+           "16r0160"    16rA6 " LATIN CAPITAL LETTER S WITH CARON " 
+           "16r0161"    16rA8 " LATIN SMALL LETTER S WITH CARON " 
+           "16r0162"    16r00 " invalid " 
+           "16r0163"    16r00 " invalid " 
+           "16r0164"    16r00 " invalid " 
+           "16r0165"    16r00 " invalid " 
+           "16r0166"    16r00 " invalid " 
+           "16r0167"    16r00 " invalid " 
+           "16r0168"    16r00 " invalid " 
+           "16r0169"    16r00 " invalid " 
+           "16r016A"    16r00 " invalid " 
+           "16r016B"    16r00 " invalid " 
+           "16r016C"    16r00 " invalid " 
+           "16r016D"    16r00 " invalid " 
+           "16r016E"    16r00 " invalid " 
+           "16r016F"    16r00 " invalid " 
+           "16r0170"    16r00 " invalid " 
+           "16r0171"    16r00 " invalid " 
+           "16r0172"    16r00 " invalid " 
+           "16r0173"    16r00 " invalid " 
+           "16r0174"    16r00 " invalid " 
+           "16r0175"    16r00 " invalid " 
+           "16r0176"    16r00 " invalid " 
+           "16r0177"    16r00 " invalid " 
+           "16r0178"    16rBE " LATIN CAPITAL LETTER Y WITH DIAERESIS " 
+           "16r0179"    16r00 " invalid " 
+           "16r017A"    16r00 " invalid " 
+           "16r017B"    16r00 " invalid " 
+           "16r017C"    16r00 " invalid " 
+           "16r017D"    16rB4 " LATIN CAPITAL LETTER Z WITH CARON " 
+           "16r017E"    16rB8 " LATIN SMALL LETTER Z WITH CARON " 
+           ] at:(unicode - 337).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 8363 ifTrue:[
+        ^ self encodingError.
+    ].
+    ^ 
+#[
+       "16r20AC"    16rA4 " EURO SIGN " 
+       ] at:(unicode - 8363).
 ! !
 
 !CharacterEncoder::ISO8859_16 class methodsFor:'mapping'!
@@ -3735,21 +16181,22 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-16.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-16.TXT'
 ! !
 
 !CharacterEncoder::ISO8859_16 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r00A1"    16r0104 " LATIN CAPITAL LETTER A WITH OGONEK " 
        "16r00A2"    16r0105 " LATIN SMALL LETTER A WITH OGONEK " 
        "16r00A3"    16r0141 " LATIN CAPITAL LETTER L WITH STROKE " 
@@ -3844,13 +16291,293 @@
        "16r00FC"    16r00FC " LATIN SMALL LETTER U WITH DIAERESIS " 
        "16r00FD"    16r0119 " LATIN SMALL LETTER E WITH OGONEK " 
        "16r00FE"    16r021B " LATIN SMALL LETTER T WITH COMMA BELOW " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 8364 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 258 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    0 " invalid " 
+           "16r00A3"    0 " invalid " 
+           "16r00A4"    0 " invalid " 
+           "16r00A5"    0 " invalid " 
+           "16r00A6"    0 " invalid " 
+           "16r00A7"    1 " SECTION SIGN " 
+           "16r00A8"    0 " invalid " 
+           "16r00A9"    1 " COPYRIGHT SIGN " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    1 " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00AC"    0 " invalid " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    0 " invalid " 
+           "16r00AF"    0 " invalid " 
+           "16r00B0"    1 " DEGREE SIGN " 
+           "16r00B1"    1 " PLUS-MINUS SIGN " 
+           "16r00B2"    0 " invalid " 
+           "16r00B3"    0 " invalid " 
+           "16r00B4"    0 " invalid " 
+           "16r00B5"    0 " invalid " 
+           "16r00B6"    1 " PILCROW SIGN " 
+           "16r00B7"    1 " MIDDLE DOT " 
+           "16r00B8"    0 " invalid " 
+           "16r00B9"    0 " invalid " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    1 " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    0 " invalid " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    1 " LATIN CAPITAL LETTER A WITH GRAVE " 
+           "16r00C1"    1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+           "16r00C2"    1 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+           "16r00C3"    0 " invalid " 
+           "16r00C4"    1 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+           "16r00C5"    0 " invalid " 
+           "16r00C6"    1 " LATIN CAPITAL LETTER AE " 
+           "16r00C7"    1 " LATIN CAPITAL LETTER C WITH CEDILLA " 
+           "16r00C8"    1 " LATIN CAPITAL LETTER E WITH GRAVE " 
+           "16r00C9"    1 " LATIN CAPITAL LETTER E WITH ACUTE " 
+           "16r00CA"    1 " LATIN CAPITAL LETTER E WITH CIRCUMFLEX " 
+           "16r00CB"    1 " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+           "16r00CC"    1 " LATIN CAPITAL LETTER I WITH GRAVE " 
+           "16r00CD"    1 " LATIN CAPITAL LETTER I WITH ACUTE " 
+           "16r00CE"    1 " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+           "16r00CF"    1 " LATIN CAPITAL LETTER I WITH DIAERESIS " 
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    0 " invalid " 
+           "16r00D2"    1 " LATIN CAPITAL LETTER O WITH GRAVE " 
+           "16r00D3"    1 " LATIN CAPITAL LETTER O WITH ACUTE " 
+           "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    0 " invalid " 
+           "16r00D6"    1 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    0 " invalid " 
+           "16r00D8"    0 " invalid " 
+           "16r00D9"    1 " LATIN CAPITAL LETTER U WITH GRAVE " 
+           "16r00DA"    1 " LATIN CAPITAL LETTER U WITH ACUTE " 
+           "16r00DB"    1 " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+           "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    0 " invalid " 
+           "16r00DE"    0 " invalid " 
+           "16r00DF"    1 " LATIN SMALL LETTER SHARP S " 
+           "16r00E0"    1 " LATIN SMALL LETTER A WITH GRAVE " 
+           "16r00E1"    1 " LATIN SMALL LETTER A WITH ACUTE " 
+           "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    0 " invalid " 
+           "16r00E4"    1 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    0 " invalid " 
+           "16r00E6"    1 " LATIN SMALL LETTER AE " 
+           "16r00E7"    1 " LATIN SMALL LETTER C WITH CEDILLA " 
+           "16r00E8"    1 " LATIN SMALL LETTER E WITH GRAVE " 
+           "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    1 " LATIN SMALL LETTER E WITH CIRCUMFLEX " 
+           "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+           "16r00EC"    1 " LATIN SMALL LETTER I WITH GRAVE " 
+           "16r00ED"    1 " LATIN SMALL LETTER I WITH ACUTE " 
+           "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    1 " LATIN SMALL LETTER I WITH DIAERESIS " 
+           "16r00F0"    0 " invalid " 
+           "16r00F1"    0 " invalid " 
+           "16r00F2"    1 " LATIN SMALL LETTER O WITH GRAVE " 
+           "16r00F3"    1 " LATIN SMALL LETTER O WITH ACUTE " 
+           "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    0 " invalid " 
+           "16r00F6"    1 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    0 " invalid " 
+           "16r00F8"    0 " invalid " 
+           "16r00F9"    1 " LATIN SMALL LETTER U WITH GRAVE " 
+           "16r00FA"    1 " LATIN SMALL LETTER U WITH ACUTE " 
+           "16r00FB"    1 " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+           "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    0 " invalid " 
+           "16r00FE"    0 " invalid " 
+           "16r00FF"    1 " LATIN SMALL LETTER Y WITH DIAERESIS " 
+           "16r0100"    0 " invalid " 
+           "16r0101"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    unicode < 540 ifTrue:[
+        unicode < 383 ifTrue:[
+            [
+            |t|
+            t := 
+#[
+               "16r0102"    16rC3 " LATIN CAPITAL LETTER A WITH BREVE " 
+               "16r0103"    16rE3 " LATIN SMALL LETTER A WITH BREVE " 
+               "16r0104"    16rA1 " LATIN CAPITAL LETTER A WITH OGONEK " 
+               "16r0105"    16rA2 " LATIN SMALL LETTER A WITH OGONEK " 
+               "16r0106"    16rC5 " LATIN CAPITAL LETTER C WITH ACUTE " 
+               "16r0107"    16rE5 " LATIN SMALL LETTER C WITH ACUTE " 
+               "16r0108"    16r00 " invalid " 
+               "16r0109"    16r00 " invalid " 
+               "16r010A"    16r00 " invalid " 
+               "16r010B"    16r00 " invalid " 
+               "16r010C"    16rB2 " LATIN CAPITAL LETTER C WITH CARON " 
+               "16r010D"    16rB9 " LATIN SMALL LETTER C WITH CARON " 
+               "16r010E"    16r00 " invalid " 
+               "16r010F"    16r00 " invalid " 
+               "16r0110"    16rD0 " LATIN CAPITAL LETTER D WITH STROKE " 
+               "16r0111"    16rF0 " LATIN SMALL LETTER D WITH STROKE " 
+               "16r0112"    16r00 " invalid " 
+               "16r0113"    16r00 " invalid " 
+               "16r0114"    16r00 " invalid " 
+               "16r0115"    16r00 " invalid " 
+               "16r0116"    16r00 " invalid " 
+               "16r0117"    16r00 " invalid " 
+               "16r0118"    16rDD " LATIN CAPITAL LETTER E WITH OGONEK " 
+               "16r0119"    16rFD " LATIN SMALL LETTER E WITH OGONEK " 
+               "16r011A"    16r00 " invalid " 
+               "16r011B"    16r00 " invalid " 
+               "16r011C"    16r00 " invalid " 
+               "16r011D"    16r00 " invalid " 
+               "16r011E"    16r00 " invalid " 
+               "16r011F"    16r00 " invalid " 
+               "16r0120"    16r00 " invalid " 
+               "16r0121"    16r00 " invalid " 
+               "16r0122"    16r00 " invalid " 
+               "16r0123"    16r00 " invalid " 
+               "16r0124"    16r00 " invalid " 
+               "16r0125"    16r00 " invalid " 
+               "16r0126"    16r00 " invalid " 
+               "16r0127"    16r00 " invalid " 
+               "16r0128"    16r00 " invalid " 
+               "16r0129"    16r00 " invalid " 
+               "16r012A"    16r00 " invalid " 
+               "16r012B"    16r00 " invalid " 
+               "16r012C"    16r00 " invalid " 
+               "16r012D"    16r00 " invalid " 
+               "16r012E"    16r00 " invalid " 
+               "16r012F"    16r00 " invalid " 
+               "16r0130"    16r00 " invalid " 
+               "16r0131"    16r00 " invalid " 
+               "16r0132"    16r00 " invalid " 
+               "16r0133"    16r00 " invalid " 
+               "16r0134"    16r00 " invalid " 
+               "16r0135"    16r00 " invalid " 
+               "16r0136"    16r00 " invalid " 
+               "16r0137"    16r00 " invalid " 
+               "16r0138"    16r00 " invalid " 
+               "16r0139"    16r00 " invalid " 
+               "16r013A"    16r00 " invalid " 
+               "16r013B"    16r00 " invalid " 
+               "16r013C"    16r00 " invalid " 
+               "16r013D"    16r00 " invalid " 
+               "16r013E"    16r00 " invalid " 
+               "16r013F"    16r00 " invalid " 
+               "16r0140"    16r00 " invalid " 
+               "16r0141"    16rA3 " LATIN CAPITAL LETTER L WITH STROKE " 
+               "16r0142"    16rB3 " LATIN SMALL LETTER L WITH STROKE " 
+               "16r0143"    16rD1 " LATIN CAPITAL LETTER N WITH ACUTE " 
+               "16r0144"    16rF1 " LATIN SMALL LETTER N WITH ACUTE " 
+               "16r0145"    16r00 " invalid " 
+               "16r0146"    16r00 " invalid " 
+               "16r0147"    16r00 " invalid " 
+               "16r0148"    16r00 " invalid " 
+               "16r0149"    16r00 " invalid " 
+               "16r014A"    16r00 " invalid " 
+               "16r014B"    16r00 " invalid " 
+               "16r014C"    16r00 " invalid " 
+               "16r014D"    16r00 " invalid " 
+               "16r014E"    16r00 " invalid " 
+               "16r014F"    16r00 " invalid " 
+               "16r0150"    16rD5 " LATIN CAPITAL LETTER O WITH DOUBLE ACUTE " 
+               "16r0151"    16rF5 " LATIN SMALL LETTER O WITH DOUBLE ACUTE " 
+               "16r0152"    16rBC " LATIN CAPITAL LIGATURE OE " 
+               "16r0153"    16rBD " LATIN SMALL LIGATURE OE " 
+               "16r0154"    16r00 " invalid " 
+               "16r0155"    16r00 " invalid " 
+               "16r0156"    16r00 " invalid " 
+               "16r0157"    16r00 " invalid " 
+               "16r0158"    16r00 " invalid " 
+               "16r0159"    16r00 " invalid " 
+               "16r015A"    16rD7 " LATIN CAPITAL LETTER S WITH ACUTE " 
+               "16r015B"    16rF7 " LATIN SMALL LETTER S WITH ACUTE " 
+               "16r015C"    16r00 " invalid " 
+               "16r015D"    16r00 " invalid " 
+               "16r015E"    16r00 " invalid " 
+               "16r015F"    16r00 " invalid " 
+               "16r0160"    16rA6 " LATIN CAPITAL LETTER S WITH CARON " 
+               "16r0161"    16rA8 " LATIN SMALL LETTER S WITH CARON " 
+               "16r0162"    16r00 " invalid " 
+               "16r0163"    16r00 " invalid " 
+               "16r0164"    16r00 " invalid " 
+               "16r0165"    16r00 " invalid " 
+               "16r0166"    16r00 " invalid " 
+               "16r0167"    16r00 " invalid " 
+               "16r0168"    16r00 " invalid " 
+               "16r0169"    16r00 " invalid " 
+               "16r016A"    16r00 " invalid " 
+               "16r016B"    16r00 " invalid " 
+               "16r016C"    16r00 " invalid " 
+               "16r016D"    16r00 " invalid " 
+               "16r016E"    16r00 " invalid " 
+               "16r016F"    16r00 " invalid " 
+               "16r0170"    16rD8 " LATIN CAPITAL LETTER U WITH DOUBLE ACUTE " 
+               "16r0171"    16rF8 " LATIN SMALL LETTER U WITH DOUBLE ACUTE " 
+               "16r0172"    16r00 " invalid " 
+               "16r0173"    16r00 " invalid " 
+               "16r0174"    16r00 " invalid " 
+               "16r0175"    16r00 " invalid " 
+               "16r0176"    16r00 " invalid " 
+               "16r0177"    16r00 " invalid " 
+               "16r0178"    16rBE " LATIN CAPITAL LETTER Y WITH DIAERESIS " 
+               "16r0179"    16rAC " LATIN CAPITAL LETTER Z WITH ACUTE " 
+               "16r017A"    16rAE " LATIN SMALL LETTER Z WITH ACUTE " 
+               "16r017B"    16rAF " LATIN CAPITAL LETTER Z WITH DOT ABOVE " 
+               "16r017C"    16rBF " LATIN SMALL LETTER Z WITH DOT ABOVE " 
+               "16r017D"    16rB4 " LATIN CAPITAL LETTER Z WITH CARON " 
+               "16r017E"    16rB8 " LATIN SMALL LETTER Z WITH CARON " 
+               ] at:(unicode - 257).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+            ] value.
+        ].
+        unicode <= 535 ifTrue:[
+            ^ self encodingError.
+        ].
+        ^ 
+#[
+           "16r0218"    16rAA " LATIN CAPITAL LETTER S WITH COMMA BELOW " 
+           "16r0219"    16rBA " LATIN SMALL LETTER S WITH COMMA BELOW " 
+           "16r021A"    16rDE " LATIN CAPITAL LETTER T WITH COMMA BELOW " 
+           "16r021B"    16rFE " LATIN SMALL LETTER T WITH COMMA BELOW " 
+           ] at:(unicode - 535).
+    ].
+    unicode <= 8220 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 8223 ifTrue:[
+        ^ 
+#[
+           "16r201D"    16rB5 " RIGHT DOUBLE QUOTATION MARK " 
+           "16r201E"    16rA5 " DOUBLE LOW-9 QUOTATION MARK " 
+           ] at:(unicode - 8220).
+    ].
+    unicode <= 8363 ifTrue:[
+        ^ self encodingError.
+    ].
+    ^ 
+#[
+       "16r20AC"    16rA4 " EURO SIGN " 
+       ] at:(unicode - 8363).
 ! !
 
 !CharacterEncoder::ISO8859_2 class methodsFor:'encoding & decoding'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-2.TXT'
+
+    "
+     self generateCode
+    "
 ! !
 
 !CharacterEncoder::ISO8859_2 class methodsFor:'mapping'!
@@ -4166,17 +16893,24 @@
 "
 ! !
 
+!CharacterEncoder::ISO8859_2 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'latin-2' 'iso-ir-101')
+! !
+
 !CharacterEncoder::ISO8859_2 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r00A1"    16r0104 " LATIN CAPITAL LETTER A WITH OGONEK " 
        "16r00A2"    16r02D8 " BREVE " 
        "16r00A3"    16r0141 " LATIN CAPITAL LETTER L WITH STROKE " 
@@ -4272,116 +17006,288 @@
        "16r00FD"    16r00FD " LATIN SMALL LETTER Y WITH ACUTE " 
        "16r00FE"    16r0163 " LATIN SMALL LETTER T WITH CEDILLA " 
        "16r00FF"    16r02D9 " DOT ABOVE " 
-       ) at:(code - 160)
-!
-
-encode:uniCode
-    |t000 t100 t200|
-
-    uniCode <= 16rA0 ifTrue:[^ uniCode].
-    
-    t000 := #(
-"0xA0"    16r00A0  "/ #       NO-BREAK SPACE
-"0xA1"    16r0104  "/ #       LATIN CAPITAL LETTER A WITH OGONEK
-"0xA2"    16r02D8  "/ #       BREVE
-"0xA3"    16r0141  "/ #       LATIN CAPITAL LETTER L WITH STROKE
-"0xA4"    16r00A4  "/ #       CURRENCY SIGN
-"0xA5"    16r013D  "/ #       LATIN CAPITAL LETTER L WITH CARON
-"0xA6"    16r015A  "/ #       LATIN CAPITAL LETTER S WITH ACUTE
-"0xA7"    16r00A7  "/ #       SECTION SIGN
-"0xA8"    16r00A8  "/ #       DIAERESIS
-"0xA9"    16r0160  "/ #       LATIN CAPITAL LETTER S WITH CARON
-"0xAA"    16r015E  "/ #       LATIN CAPITAL LETTER S WITH CEDILLA
-"0xAB"    16r0164  "/ #       LATIN CAPITAL LETTER T WITH CARON
-"0xAC"    16r0179  "/ #       LATIN CAPITAL LETTER Z WITH ACUTE
-"0xAD"    16r00AD  "/ #       SOFT HYPHEN
-"0xAE"    16r017D  "/ #       LATIN CAPITAL LETTER Z WITH CARON
-"0xAF"    16r017B  "/ #       LATIN CAPITAL LETTER Z WITH DOT ABOVE
-"0xB0"    16r00B0  "/ #       DEGREE SIGN
-"0xB1"    16r0105  "/ #       LATIN SMALL LETTER A WITH OGONEK
-"0xB2"    16r02DB  "/ #       OGONEK
-"0xB3"    16r0142  "/ #       LATIN SMALL LETTER L WITH STROKE
-"0xB4"    16r00B4  "/ #       ACUTE ACCENT
-"0xB5"    16r013E  "/ #       LATIN SMALL LETTER L WITH CARON
-"0xB6"    16r015B  "/ #       LATIN SMALL LETTER S WITH ACUTE
-"0xB7"    16r02C7  "/ #       CARON
-"0xB8"    16r00B8  "/ #       CEDILLA
-"0xB9"    16r0161  "/ #       LATIN SMALL LETTER S WITH CARON
-"0xBA"    16r015F  "/ #       LATIN SMALL LETTER S WITH CEDILLA
-"0xBB"    16r0165  "/ #       LATIN SMALL LETTER T WITH CARON
-"0xBC"    16r017A  "/ #       LATIN SMALL LETTER Z WITH ACUTE
-"0xBD"    16r02DD  "/ #       DOUBLE ACUTE ACCENT
-"0xBE"    16r017E  "/ #       LATIN SMALL LETTER Z WITH CARON
-"0xBF"    16r017C  "/ #       LATIN SMALL LETTER Z WITH DOT ABOVE
-"0xC0"    16r0154  "/ #       LATIN CAPITAL LETTER R WITH ACUTE
-"0xC1"    16r00C1  "/ #       LATIN CAPITAL LETTER A WITH ACUTE
-"0xC2"    16r00C2  "/ #       LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-"0xC3"    16r0102  "/ #       LATIN CAPITAL LETTER A WITH BREVE
-"0xC4"    16r00C4  "/ #       LATIN CAPITAL LETTER A WITH DIAERESIS
-"0xC5"    16r0139  "/ #       LATIN CAPITAL LETTER L WITH ACUTE
-"0xC6"    16r0106  "/ #       LATIN CAPITAL LETTER C WITH ACUTE
-"0xC7"    16r00C7  "/ #       LATIN CAPITAL LETTER C WITH CEDILLA
-"0xC8"    16r010C  "/ #       LATIN CAPITAL LETTER C WITH CARON
-"0xC9"    16r00C9  "/ #       LATIN CAPITAL LETTER E WITH ACUTE
-"0xCA"    16r0118  "/ #       LATIN CAPITAL LETTER E WITH OGONEK
-"0xCB"    16r00CB  "/ #       LATIN CAPITAL LETTER E WITH DIAERESIS
-"0xCC"    16r011A  "/ #       LATIN CAPITAL LETTER E WITH CARON
-"0xCD"    16r00CD  "/ #       LATIN CAPITAL LETTER I WITH ACUTE
-"0xCE"    16r00CE  "/ #       LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-"0xCF"    16r010E  "/ #       LATIN CAPITAL LETTER D WITH CARON
-"0xD0"    16r0110  "/ #       LATIN CAPITAL LETTER D WITH STROKE
-"0xD1"    16r0143  "/ #       LATIN CAPITAL LETTER N WITH ACUTE
-"0xD2"    16r0147  "/ #       LATIN CAPITAL LETTER N WITH CARON
-"0xD3"    16r00D3  "/ #       LATIN CAPITAL LETTER O WITH ACUTE
-"0xD4"    16r00D4  "/ #       LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-"0xD5"    16r0150  "/ #       LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-"0xD6"    16r00D6  "/ #       LATIN CAPITAL LETTER O WITH DIAERESIS
-"0xD7"    16r00D7  "/ #       MULTIPLICATION SIGN
-"0xD8"    16r0158  "/ #       LATIN CAPITAL LETTER R WITH CARON
-"0xD9"    16r016E  "/ #       LATIN CAPITAL LETTER U WITH RING ABOVE
-"0xDA"    16r00DA  "/ #       LATIN CAPITAL LETTER U WITH ACUTE
-"0xDB"    16r0170  "/ #       LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-"0xDC"    16r00DC  "/ #       LATIN CAPITAL LETTER U WITH DIAERESIS
-"0xDD"    16r00DD  "/ #       LATIN CAPITAL LETTER Y WITH ACUTE
-"0xDE"    16r0162  "/ #       LATIN CAPITAL LETTER T WITH CEDILLA
-"0xDF"    16r00DF  "/ #       LATIN SMALL LETTER SHARP S
-"0xE0"    16r0155  "/ #       LATIN SMALL LETTER R WITH ACUTE
-"0xE1"    16r00E1  "/ #       LATIN SMALL LETTER A WITH ACUTE
-"0xE2"    16r00E2  "/ #       LATIN SMALL LETTER A WITH CIRCUMFLEX
-"0xE3"    16r0103  "/ #       LATIN SMALL LETTER A WITH BREVE
-"0xE4"    16r00E4  "/ #       LATIN SMALL LETTER A WITH DIAERESIS
-"0xE5"    16r013A  "/ #       LATIN SMALL LETTER L WITH ACUTE
-"0xE6"    16r0107  "/ #       LATIN SMALL LETTER C WITH ACUTE
-"0xE7"    16r00E7  "/ #       LATIN SMALL LETTER C WITH CEDILLA
-"0xE8"    16r010D  "/ #       LATIN SMALL LETTER C WITH CARON
-"0xE9"    16r00E9  "/ #       LATIN SMALL LETTER E WITH ACUTE
-"0xEA"    16r0119  "/ #       LATIN SMALL LETTER E WITH OGONEK
-"0xEB"    16r00EB  "/ #       LATIN SMALL LETTER E WITH DIAERESIS
-"0xEC"    16r011B  "/ #       LATIN SMALL LETTER E WITH CARON
-"0xED"    16r00ED  "/ #       LATIN SMALL LETTER I WITH ACUTE
-"0xEE"    16r00EE  "/ #       LATIN SMALL LETTER I WITH CIRCUMFLEX
-"0xEF"    16r010F  "/ #       LATIN SMALL LETTER D WITH CARON
-"0xF0"    16r0111  "/ #       LATIN SMALL LETTER D WITH STROKE
-"0xF1"    16r0144  "/ #       LATIN SMALL LETTER N WITH ACUTE
-"0xF2"    16r0148  "/ #       LATIN SMALL LETTER N WITH CARON
-"0xF3"    16r00F3  "/ #       LATIN SMALL LETTER O WITH ACUTE
-"0xF4"    16r00F4  "/ #       LATIN SMALL LETTER O WITH CIRCUMFLEX
-"0xF5"    16r0151  "/ #       LATIN SMALL LETTER O WITH DOUBLE ACUTE
-"0xF6"    16r00F6  "/ #       LATIN SMALL LETTER O WITH DIAERESIS
-"0xF7"    16r00F7  "/ #       DIVISION SIGN
-"0xF8"    16r0159  "/ #       LATIN SMALL LETTER R WITH CARON
-"0xF9"    16r016F  "/ #       LATIN SMALL LETTER U WITH RING ABOVE
-"0xFA"    16r00FA  "/ #       LATIN SMALL LETTER U WITH ACUTE
-"0xFB"    16r0171  "/ #       LATIN SMALL LETTER U WITH DOUBLE ACUTE
-"0xFC"    16r00FC  "/ #       LATIN SMALL LETTER U WITH DIAERESIS
-"0xFD"    16r00FD  "/ #       LATIN SMALL LETTER Y WITH ACUTE
-"0xFE"    16r0163  "/ #       LATIN SMALL LETTER T WITH CEDILLA
-"0xFF"    16r02D9  "/ #       DOT ABOVE
-        ) at:(uniCode - 16rA0 + 1)
-
-    "
-     self decode:16rFF
-    "
+       ) at:(code - 160).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 733 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 258 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    0 " invalid " 
+           "16r00A3"    0 " invalid " 
+           "16r00A4"    1 " CURRENCY SIGN " 
+           "16r00A5"    0 " invalid " 
+           "16r00A6"    0 " invalid " 
+           "16r00A7"    1 " SECTION SIGN " 
+           "16r00A8"    1 " DIAERESIS " 
+           "16r00A9"    0 " invalid " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    0 " invalid " 
+           "16r00AC"    0 " invalid " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    0 " invalid " 
+           "16r00AF"    0 " invalid " 
+           "16r00B0"    1 " DEGREE SIGN " 
+           "16r00B1"    0 " invalid " 
+           "16r00B2"    0 " invalid " 
+           "16r00B3"    0 " invalid " 
+           "16r00B4"    1 " ACUTE ACCENT " 
+           "16r00B5"    0 " invalid " 
+           "16r00B6"    0 " invalid " 
+           "16r00B7"    0 " invalid " 
+           "16r00B8"    1 " CEDILLA " 
+           "16r00B9"    0 " invalid " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    0 " invalid " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    0 " invalid " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    0 " invalid " 
+           "16r00C1"    1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+           "16r00C2"    1 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+           "16r00C3"    0 " invalid " 
+           "16r00C4"    1 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+           "16r00C5"    0 " invalid " 
+           "16r00C6"    0 " invalid " 
+           "16r00C7"    1 " LATIN CAPITAL LETTER C WITH CEDILLA " 
+           "16r00C8"    0 " invalid " 
+           "16r00C9"    1 " LATIN CAPITAL LETTER E WITH ACUTE " 
+           "16r00CA"    0 " invalid " 
+           "16r00CB"    1 " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+           "16r00CC"    0 " invalid " 
+           "16r00CD"    1 " LATIN CAPITAL LETTER I WITH ACUTE " 
+           "16r00CE"    1 " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+           "16r00CF"    0 " invalid " 
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    0 " invalid " 
+           "16r00D2"    0 " invalid " 
+           "16r00D3"    1 " LATIN CAPITAL LETTER O WITH ACUTE " 
+           "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    0 " invalid " 
+           "16r00D6"    1 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    1 " MULTIPLICATION SIGN " 
+           "16r00D8"    0 " invalid " 
+           "16r00D9"    0 " invalid " 
+           "16r00DA"    1 " LATIN CAPITAL LETTER U WITH ACUTE " 
+           "16r00DB"    0 " invalid " 
+           "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    1 " LATIN CAPITAL LETTER Y WITH ACUTE " 
+           "16r00DE"    0 " invalid " 
+           "16r00DF"    1 " LATIN SMALL LETTER SHARP S " 
+           "16r00E0"    0 " invalid " 
+           "16r00E1"    1 " LATIN SMALL LETTER A WITH ACUTE " 
+           "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    0 " invalid " 
+           "16r00E4"    1 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    0 " invalid " 
+           "16r00E6"    0 " invalid " 
+           "16r00E7"    1 " LATIN SMALL LETTER C WITH CEDILLA " 
+           "16r00E8"    0 " invalid " 
+           "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    0 " invalid " 
+           "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+           "16r00EC"    0 " invalid " 
+           "16r00ED"    1 " LATIN SMALL LETTER I WITH ACUTE " 
+           "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    0 " invalid " 
+           "16r00F0"    0 " invalid " 
+           "16r00F1"    0 " invalid " 
+           "16r00F2"    0 " invalid " 
+           "16r00F3"    1 " LATIN SMALL LETTER O WITH ACUTE " 
+           "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    0 " invalid " 
+           "16r00F6"    1 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    1 " DIVISION SIGN " 
+           "16r00F8"    0 " invalid " 
+           "16r00F9"    0 " invalid " 
+           "16r00FA"    1 " LATIN SMALL LETTER U WITH ACUTE " 
+           "16r00FB"    0 " invalid " 
+           "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    1 " LATIN SMALL LETTER Y WITH ACUTE " 
+           "16r00FE"    0 " invalid " 
+           "16r00FF"    0 " invalid " 
+           "16r0100"    0 " invalid " 
+           "16r0101"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    unicode < 383 ifTrue:[
+        [
+        |t|
+        t := 
+#[
+           "16r0102"    16rC3 " LATIN CAPITAL LETTER A WITH BREVE " 
+           "16r0103"    16rE3 " LATIN SMALL LETTER A WITH BREVE " 
+           "16r0104"    16rA1 " LATIN CAPITAL LETTER A WITH OGONEK " 
+           "16r0105"    16rB1 " LATIN SMALL LETTER A WITH OGONEK " 
+           "16r0106"    16rC6 " LATIN CAPITAL LETTER C WITH ACUTE " 
+           "16r0107"    16rE6 " LATIN SMALL LETTER C WITH ACUTE " 
+           "16r0108"    16r00 " invalid " 
+           "16r0109"    16r00 " invalid " 
+           "16r010A"    16r00 " invalid " 
+           "16r010B"    16r00 " invalid " 
+           "16r010C"    16rC8 " LATIN CAPITAL LETTER C WITH CARON " 
+           "16r010D"    16rE8 " LATIN SMALL LETTER C WITH CARON " 
+           "16r010E"    16rCF " LATIN CAPITAL LETTER D WITH CARON " 
+           "16r010F"    16rEF " LATIN SMALL LETTER D WITH CARON " 
+           "16r0110"    16rD0 " LATIN CAPITAL LETTER D WITH STROKE " 
+           "16r0111"    16rF0 " LATIN SMALL LETTER D WITH STROKE " 
+           "16r0112"    16r00 " invalid " 
+           "16r0113"    16r00 " invalid " 
+           "16r0114"    16r00 " invalid " 
+           "16r0115"    16r00 " invalid " 
+           "16r0116"    16r00 " invalid " 
+           "16r0117"    16r00 " invalid " 
+           "16r0118"    16rCA " LATIN CAPITAL LETTER E WITH OGONEK " 
+           "16r0119"    16rEA " LATIN SMALL LETTER E WITH OGONEK " 
+           "16r011A"    16rCC " LATIN CAPITAL LETTER E WITH CARON " 
+           "16r011B"    16rEC " LATIN SMALL LETTER E WITH CARON " 
+           "16r011C"    16r00 " invalid " 
+           "16r011D"    16r00 " invalid " 
+           "16r011E"    16r00 " invalid " 
+           "16r011F"    16r00 " invalid " 
+           "16r0120"    16r00 " invalid " 
+           "16r0121"    16r00 " invalid " 
+           "16r0122"    16r00 " invalid " 
+           "16r0123"    16r00 " invalid " 
+           "16r0124"    16r00 " invalid " 
+           "16r0125"    16r00 " invalid " 
+           "16r0126"    16r00 " invalid " 
+           "16r0127"    16r00 " invalid " 
+           "16r0128"    16r00 " invalid " 
+           "16r0129"    16r00 " invalid " 
+           "16r012A"    16r00 " invalid " 
+           "16r012B"    16r00 " invalid " 
+           "16r012C"    16r00 " invalid " 
+           "16r012D"    16r00 " invalid " 
+           "16r012E"    16r00 " invalid " 
+           "16r012F"    16r00 " invalid " 
+           "16r0130"    16r00 " invalid " 
+           "16r0131"    16r00 " invalid " 
+           "16r0132"    16r00 " invalid " 
+           "16r0133"    16r00 " invalid " 
+           "16r0134"    16r00 " invalid " 
+           "16r0135"    16r00 " invalid " 
+           "16r0136"    16r00 " invalid " 
+           "16r0137"    16r00 " invalid " 
+           "16r0138"    16r00 " invalid " 
+           "16r0139"    16rC5 " LATIN CAPITAL LETTER L WITH ACUTE " 
+           "16r013A"    16rE5 " LATIN SMALL LETTER L WITH ACUTE " 
+           "16r013B"    16r00 " invalid " 
+           "16r013C"    16r00 " invalid " 
+           "16r013D"    16rA5 " LATIN CAPITAL LETTER L WITH CARON " 
+           "16r013E"    16rB5 " LATIN SMALL LETTER L WITH CARON " 
+           "16r013F"    16r00 " invalid " 
+           "16r0140"    16r00 " invalid " 
+           "16r0141"    16rA3 " LATIN CAPITAL LETTER L WITH STROKE " 
+           "16r0142"    16rB3 " LATIN SMALL LETTER L WITH STROKE " 
+           "16r0143"    16rD1 " LATIN CAPITAL LETTER N WITH ACUTE " 
+           "16r0144"    16rF1 " LATIN SMALL LETTER N WITH ACUTE " 
+           "16r0145"    16r00 " invalid " 
+           "16r0146"    16r00 " invalid " 
+           "16r0147"    16rD2 " LATIN CAPITAL LETTER N WITH CARON " 
+           "16r0148"    16rF2 " LATIN SMALL LETTER N WITH CARON " 
+           "16r0149"    16r00 " invalid " 
+           "16r014A"    16r00 " invalid " 
+           "16r014B"    16r00 " invalid " 
+           "16r014C"    16r00 " invalid " 
+           "16r014D"    16r00 " invalid " 
+           "16r014E"    16r00 " invalid " 
+           "16r014F"    16r00 " invalid " 
+           "16r0150"    16rD5 " LATIN CAPITAL LETTER O WITH DOUBLE ACUTE " 
+           "16r0151"    16rF5 " LATIN SMALL LETTER O WITH DOUBLE ACUTE " 
+           "16r0152"    16r00 " invalid " 
+           "16r0153"    16r00 " invalid " 
+           "16r0154"    16rC0 " LATIN CAPITAL LETTER R WITH ACUTE " 
+           "16r0155"    16rE0 " LATIN SMALL LETTER R WITH ACUTE " 
+           "16r0156"    16r00 " invalid " 
+           "16r0157"    16r00 " invalid " 
+           "16r0158"    16rD8 " LATIN CAPITAL LETTER R WITH CARON " 
+           "16r0159"    16rF8 " LATIN SMALL LETTER R WITH CARON " 
+           "16r015A"    16rA6 " LATIN CAPITAL LETTER S WITH ACUTE " 
+           "16r015B"    16rB6 " LATIN SMALL LETTER S WITH ACUTE " 
+           "16r015C"    16r00 " invalid " 
+           "16r015D"    16r00 " invalid " 
+           "16r015E"    16rAA " LATIN CAPITAL LETTER S WITH CEDILLA " 
+           "16r015F"    16rBA " LATIN SMALL LETTER S WITH CEDILLA " 
+           "16r0160"    16rA9 " LATIN CAPITAL LETTER S WITH CARON " 
+           "16r0161"    16rB9 " LATIN SMALL LETTER S WITH CARON " 
+           "16r0162"    16rDE " LATIN CAPITAL LETTER T WITH CEDILLA " 
+           "16r0163"    16rFE " LATIN SMALL LETTER T WITH CEDILLA " 
+           "16r0164"    16rAB " LATIN CAPITAL LETTER T WITH CARON " 
+           "16r0165"    16rBB " LATIN SMALL LETTER T WITH CARON " 
+           "16r0166"    16r00 " invalid " 
+           "16r0167"    16r00 " invalid " 
+           "16r0168"    16r00 " invalid " 
+           "16r0169"    16r00 " invalid " 
+           "16r016A"    16r00 " invalid " 
+           "16r016B"    16r00 " invalid " 
+           "16r016C"    16r00 " invalid " 
+           "16r016D"    16r00 " invalid " 
+           "16r016E"    16rD9 " LATIN CAPITAL LETTER U WITH RING ABOVE " 
+           "16r016F"    16rF9 " LATIN SMALL LETTER U WITH RING ABOVE " 
+           "16r0170"    16rDB " LATIN CAPITAL LETTER U WITH DOUBLE ACUTE " 
+           "16r0171"    16rFB " LATIN SMALL LETTER U WITH DOUBLE ACUTE " 
+           "16r0172"    16r00 " invalid " 
+           "16r0173"    16r00 " invalid " 
+           "16r0174"    16r00 " invalid " 
+           "16r0175"    16r00 " invalid " 
+           "16r0176"    16r00 " invalid " 
+           "16r0177"    16r00 " invalid " 
+           "16r0178"    16r00 " invalid " 
+           "16r0179"    16rAC " LATIN CAPITAL LETTER Z WITH ACUTE " 
+           "16r017A"    16rBC " LATIN SMALL LETTER Z WITH ACUTE " 
+           "16r017B"    16rAF " LATIN CAPITAL LETTER Z WITH DOT ABOVE " 
+           "16r017C"    16rBF " LATIN SMALL LETTER Z WITH DOT ABOVE " 
+           "16r017D"    16rAE " LATIN CAPITAL LETTER Z WITH CARON " 
+           "16r017E"    16rBE " LATIN SMALL LETTER Z WITH CARON " 
+           ] at:(unicode - 257).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 710 ifTrue:[
+        ^ self encodingError.
+    ].
+    [
+    |t|
+    t := 
+#[
+       "16r02C7"    16rB7 " CARON " 
+       "16r02C8"    16r00 " invalid " 
+       "16r02C9"    16r00 " invalid " 
+       "16r02CA"    16r00 " invalid " 
+       "16r02CB"    16r00 " invalid " 
+       "16r02CC"    16r00 " invalid " 
+       "16r02CD"    16r00 " invalid " 
+       "16r02CE"    16r00 " invalid " 
+       "16r02CF"    16r00 " invalid " 
+       "16r02D0"    16r00 " invalid " 
+       "16r02D1"    16r00 " invalid " 
+       "16r02D2"    16r00 " invalid " 
+       "16r02D3"    16r00 " invalid " 
+       "16r02D4"    16r00 " invalid " 
+       "16r02D5"    16r00 " invalid " 
+       "16r02D6"    16r00 " invalid " 
+       "16r02D7"    16r00 " invalid " 
+       "16r02D8"    16rA2 " BREVE " 
+       "16r02D9"    16rFF " DOT ABOVE " 
+       "16r02DA"    16r00 " invalid " 
+       "16r02DB"    16rB2 " OGONEK " 
+       "16r02DC"    16r00 " invalid " 
+       "16r02DD"    16rBD " DOUBLE ACUTE ACCENT " 
+       ] at:(unicode - 710).
+    t == 0 ifFalse:[^ t].
+    ^ self encodingError
+    ] value.
 ! !
 
 !CharacterEncoder::ISO8859_3 class methodsFor:'mapping'!
@@ -4690,26 +17596,35 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-3.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-3.TXT'
+! !
+
+!CharacterEncoder::ISO8859_3 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'latin-3' 'iso-ir-109')
 ! !
 
 !CharacterEncoder::ISO8859_3 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    [
+    |t|
+    t := 
+#(
        "16r00A1"    16r0126 " LATIN CAPITAL LETTER H WITH STROKE " 
        "16r00A2"    16r02D8 " BREVE " 
        "16r00A3"    16r00A3 " POUND SIGN " 
        "16r00A4"    16r00A4 " CURRENCY SIGN " 
-       "16r00A5"    16rFFFF " invalid " 
+       "16r00A5"    16r0000 " invalid " 
        "16r00A6"    16r0124 " LATIN CAPITAL LETTER H WITH CIRCUMFLEX " 
        "16r00A7"    16r00A7 " SECTION SIGN " 
        "16r00A8"    16r00A8 " DIAERESIS " 
@@ -4718,7 +17633,7 @@
        "16r00AB"    16r011E " LATIN CAPITAL LETTER G WITH BREVE " 
        "16r00AC"    16r0134 " LATIN CAPITAL LETTER J WITH CIRCUMFLEX " 
        "16r00AD"    16r00AD " SOFT HYPHEN " 
-       "16r00AE"    16rFFFF " invalid " 
+       "16r00AE"    16r0000 " invalid " 
        "16r00AF"    16r017B " LATIN CAPITAL LETTER Z WITH DOT ABOVE " 
        "16r00B0"    16r00B0 " DEGREE SIGN " 
        "16r00B1"    16r0127 " LATIN SMALL LETTER H WITH STROKE " 
@@ -4734,12 +17649,12 @@
        "16r00BB"    16r011F " LATIN SMALL LETTER G WITH BREVE " 
        "16r00BC"    16r0135 " LATIN SMALL LETTER J WITH CIRCUMFLEX " 
        "16r00BD"    16r00BD " VULGAR FRACTION ONE HALF " 
-       "16r00BE"    16rFFFF " invalid " 
+       "16r00BE"    16r0000 " invalid " 
        "16r00BF"    16r017C " LATIN SMALL LETTER Z WITH DOT ABOVE " 
        "16r00C0"    16r00C0 " LATIN CAPITAL LETTER A WITH GRAVE " 
        "16r00C1"    16r00C1 " LATIN CAPITAL LETTER A WITH ACUTE " 
        "16r00C2"    16r00C2 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
-       "16r00C3"    16rFFFF " invalid " 
+       "16r00C3"    16r0000 " invalid " 
        "16r00C4"    16r00C4 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
        "16r00C5"    16r010A " LATIN CAPITAL LETTER C WITH DOT ABOVE " 
        "16r00C6"    16r0108 " LATIN CAPITAL LETTER C WITH CIRCUMFLEX " 
@@ -4752,7 +17667,7 @@
        "16r00CD"    16r00CD " LATIN CAPITAL LETTER I WITH ACUTE " 
        "16r00CE"    16r00CE " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
        "16r00CF"    16r00CF " LATIN CAPITAL LETTER I WITH DIAERESIS " 
-       "16r00D0"    16rFFFF " invalid " 
+       "16r00D0"    16r0000 " invalid " 
        "16r00D1"    16r00D1 " LATIN CAPITAL LETTER N WITH TILDE " 
        "16r00D2"    16r00D2 " LATIN CAPITAL LETTER O WITH GRAVE " 
        "16r00D3"    16r00D3 " LATIN CAPITAL LETTER O WITH ACUTE " 
@@ -4771,7 +17686,7 @@
        "16r00E0"    16r00E0 " LATIN SMALL LETTER A WITH GRAVE " 
        "16r00E1"    16r00E1 " LATIN SMALL LETTER A WITH ACUTE " 
        "16r00E2"    16r00E2 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
-       "16r00E3"    16rFFFF " invalid " 
+       "16r00E3"    16r0000 " invalid " 
        "16r00E4"    16r00E4 " LATIN SMALL LETTER A WITH DIAERESIS " 
        "16r00E5"    16r010B " LATIN SMALL LETTER C WITH DOT ABOVE " 
        "16r00E6"    16r0109 " LATIN SMALL LETTER C WITH CIRCUMFLEX " 
@@ -4784,7 +17699,7 @@
        "16r00ED"    16r00ED " LATIN SMALL LETTER I WITH ACUTE " 
        "16r00EE"    16r00EE " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
        "16r00EF"    16r00EF " LATIN SMALL LETTER I WITH DIAERESIS " 
-       "16r00F0"    16rFFFF " invalid " 
+       "16r00F0"    16r0000 " invalid " 
        "16r00F1"    16r00F1 " LATIN SMALL LETTER N WITH TILDE " 
        "16r00F2"    16r00F2 " LATIN SMALL LETTER O WITH GRAVE " 
        "16r00F3"    16r00F3 " LATIN SMALL LETTER O WITH ACUTE " 
@@ -4800,7 +17715,263 @@
        "16r00FD"    16r016D " LATIN SMALL LETTER U WITH BREVE " 
        "16r00FE"    16r015D " LATIN SMALL LETTER S WITH CIRCUMFLEX " 
        "16r00FF"    16r02D9 " DOT ABOVE " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+    t == 0 ifFalse:[^ t].
+    ^ self decodingError.
+    ] value.
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 729 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 264 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    0 " invalid " 
+           "16r00A3"    1 " POUND SIGN " 
+           "16r00A4"    1 " CURRENCY SIGN " 
+           "16r00A5"    0 " invalid " 
+           "16r00A6"    0 " invalid " 
+           "16r00A7"    1 " SECTION SIGN " 
+           "16r00A8"    1 " DIAERESIS " 
+           "16r00A9"    0 " invalid " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    0 " invalid " 
+           "16r00AC"    0 " invalid " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    0 " invalid " 
+           "16r00AF"    0 " invalid " 
+           "16r00B0"    1 " DEGREE SIGN " 
+           "16r00B1"    0 " invalid " 
+           "16r00B2"    1 " SUPERSCRIPT TWO " 
+           "16r00B3"    1 " SUPERSCRIPT THREE " 
+           "16r00B4"    1 " ACUTE ACCENT " 
+           "16r00B5"    1 " MICRO SIGN " 
+           "16r00B6"    0 " invalid " 
+           "16r00B7"    1 " MIDDLE DOT " 
+           "16r00B8"    1 " CEDILLA " 
+           "16r00B9"    0 " invalid " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    0 " invalid " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    1 " VULGAR FRACTION ONE HALF " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    1 " LATIN CAPITAL LETTER A WITH GRAVE " 
+           "16r00C1"    1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+           "16r00C2"    1 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+           "16r00C3"    0 " invalid " 
+           "16r00C4"    1 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+           "16r00C5"    0 " invalid " 
+           "16r00C6"    0 " invalid " 
+           "16r00C7"    1 " LATIN CAPITAL LETTER C WITH CEDILLA " 
+           "16r00C8"    1 " LATIN CAPITAL LETTER E WITH GRAVE " 
+           "16r00C9"    1 " LATIN CAPITAL LETTER E WITH ACUTE " 
+           "16r00CA"    1 " LATIN CAPITAL LETTER E WITH CIRCUMFLEX " 
+           "16r00CB"    1 " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+           "16r00CC"    1 " LATIN CAPITAL LETTER I WITH GRAVE " 
+           "16r00CD"    1 " LATIN CAPITAL LETTER I WITH ACUTE " 
+           "16r00CE"    1 " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+           "16r00CF"    1 " LATIN CAPITAL LETTER I WITH DIAERESIS " 
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    1 " LATIN CAPITAL LETTER N WITH TILDE " 
+           "16r00D2"    1 " LATIN CAPITAL LETTER O WITH GRAVE " 
+           "16r00D3"    1 " LATIN CAPITAL LETTER O WITH ACUTE " 
+           "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    0 " invalid " 
+           "16r00D6"    1 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    1 " MULTIPLICATION SIGN " 
+           "16r00D8"    0 " invalid " 
+           "16r00D9"    1 " LATIN CAPITAL LETTER U WITH GRAVE " 
+           "16r00DA"    1 " LATIN CAPITAL LETTER U WITH ACUTE " 
+           "16r00DB"    1 " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+           "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    0 " invalid " 
+           "16r00DE"    0 " invalid " 
+           "16r00DF"    1 " LATIN SMALL LETTER SHARP S " 
+           "16r00E0"    1 " LATIN SMALL LETTER A WITH GRAVE " 
+           "16r00E1"    1 " LATIN SMALL LETTER A WITH ACUTE " 
+           "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    0 " invalid " 
+           "16r00E4"    1 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    0 " invalid " 
+           "16r00E6"    0 " invalid " 
+           "16r00E7"    1 " LATIN SMALL LETTER C WITH CEDILLA " 
+           "16r00E8"    1 " LATIN SMALL LETTER E WITH GRAVE " 
+           "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    1 " LATIN SMALL LETTER E WITH CIRCUMFLEX " 
+           "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+           "16r00EC"    1 " LATIN SMALL LETTER I WITH GRAVE " 
+           "16r00ED"    1 " LATIN SMALL LETTER I WITH ACUTE " 
+           "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    1 " LATIN SMALL LETTER I WITH DIAERESIS " 
+           "16r00F0"    0 " invalid " 
+           "16r00F1"    1 " LATIN SMALL LETTER N WITH TILDE " 
+           "16r00F2"    1 " LATIN SMALL LETTER O WITH GRAVE " 
+           "16r00F3"    1 " LATIN SMALL LETTER O WITH ACUTE " 
+           "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    0 " invalid " 
+           "16r00F6"    1 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    1 " DIVISION SIGN " 
+           "16r00F8"    0 " invalid " 
+           "16r00F9"    1 " LATIN SMALL LETTER U WITH GRAVE " 
+           "16r00FA"    1 " LATIN SMALL LETTER U WITH ACUTE " 
+           "16r00FB"    1 " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+           "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    0 " invalid " 
+           "16r00FE"    0 " invalid " 
+           "16r00FF"    0 " invalid " 
+           "16r0100"    0 " invalid " 
+           "16r0101"    0 " invalid " 
+           "16r0102"    0 " invalid " 
+           "16r0103"    0 " invalid " 
+           "16r0104"    0 " invalid " 
+           "16r0105"    0 " invalid " 
+           "16r0106"    0 " invalid " 
+           "16r0107"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    unicode < 381 ifTrue:[
+        [
+        |t|
+        t := 
+#[
+           "16r0108"    16rC6 " LATIN CAPITAL LETTER C WITH CIRCUMFLEX " 
+           "16r0109"    16rE6 " LATIN SMALL LETTER C WITH CIRCUMFLEX " 
+           "16r010A"    16rC5 " LATIN CAPITAL LETTER C WITH DOT ABOVE " 
+           "16r010B"    16rE5 " LATIN SMALL LETTER C WITH DOT ABOVE " 
+           "16r010C"    16r00 " invalid " 
+           "16r010D"    16r00 " invalid " 
+           "16r010E"    16r00 " invalid " 
+           "16r010F"    16r00 " invalid " 
+           "16r0110"    16r00 " invalid " 
+           "16r0111"    16r00 " invalid " 
+           "16r0112"    16r00 " invalid " 
+           "16r0113"    16r00 " invalid " 
+           "16r0114"    16r00 " invalid " 
+           "16r0115"    16r00 " invalid " 
+           "16r0116"    16r00 " invalid " 
+           "16r0117"    16r00 " invalid " 
+           "16r0118"    16r00 " invalid " 
+           "16r0119"    16r00 " invalid " 
+           "16r011A"    16r00 " invalid " 
+           "16r011B"    16r00 " invalid " 
+           "16r011C"    16rD8 " LATIN CAPITAL LETTER G WITH CIRCUMFLEX " 
+           "16r011D"    16rF8 " LATIN SMALL LETTER G WITH CIRCUMFLEX " 
+           "16r011E"    16rAB " LATIN CAPITAL LETTER G WITH BREVE " 
+           "16r011F"    16rBB " LATIN SMALL LETTER G WITH BREVE " 
+           "16r0120"    16rD5 " LATIN CAPITAL LETTER G WITH DOT ABOVE " 
+           "16r0121"    16rF5 " LATIN SMALL LETTER G WITH DOT ABOVE " 
+           "16r0122"    16r00 " invalid " 
+           "16r0123"    16r00 " invalid " 
+           "16r0124"    16rA6 " LATIN CAPITAL LETTER H WITH CIRCUMFLEX " 
+           "16r0125"    16rB6 " LATIN SMALL LETTER H WITH CIRCUMFLEX " 
+           "16r0126"    16rA1 " LATIN CAPITAL LETTER H WITH STROKE " 
+           "16r0127"    16rB1 " LATIN SMALL LETTER H WITH STROKE " 
+           "16r0128"    16r00 " invalid " 
+           "16r0129"    16r00 " invalid " 
+           "16r012A"    16r00 " invalid " 
+           "16r012B"    16r00 " invalid " 
+           "16r012C"    16r00 " invalid " 
+           "16r012D"    16r00 " invalid " 
+           "16r012E"    16r00 " invalid " 
+           "16r012F"    16r00 " invalid " 
+           "16r0130"    16rA9 " LATIN CAPITAL LETTER I WITH DOT ABOVE " 
+           "16r0131"    16rB9 " LATIN SMALL LETTER DOTLESS I " 
+           "16r0132"    16r00 " invalid " 
+           "16r0133"    16r00 " invalid " 
+           "16r0134"    16rAC " LATIN CAPITAL LETTER J WITH CIRCUMFLEX " 
+           "16r0135"    16rBC " LATIN SMALL LETTER J WITH CIRCUMFLEX " 
+           "16r0136"    16r00 " invalid " 
+           "16r0137"    16r00 " invalid " 
+           "16r0138"    16r00 " invalid " 
+           "16r0139"    16r00 " invalid " 
+           "16r013A"    16r00 " invalid " 
+           "16r013B"    16r00 " invalid " 
+           "16r013C"    16r00 " invalid " 
+           "16r013D"    16r00 " invalid " 
+           "16r013E"    16r00 " invalid " 
+           "16r013F"    16r00 " invalid " 
+           "16r0140"    16r00 " invalid " 
+           "16r0141"    16r00 " invalid " 
+           "16r0142"    16r00 " invalid " 
+           "16r0143"    16r00 " invalid " 
+           "16r0144"    16r00 " invalid " 
+           "16r0145"    16r00 " invalid " 
+           "16r0146"    16r00 " invalid " 
+           "16r0147"    16r00 " invalid " 
+           "16r0148"    16r00 " invalid " 
+           "16r0149"    16r00 " invalid " 
+           "16r014A"    16r00 " invalid " 
+           "16r014B"    16r00 " invalid " 
+           "16r014C"    16r00 " invalid " 
+           "16r014D"    16r00 " invalid " 
+           "16r014E"    16r00 " invalid " 
+           "16r014F"    16r00 " invalid " 
+           "16r0150"    16r00 " invalid " 
+           "16r0151"    16r00 " invalid " 
+           "16r0152"    16r00 " invalid " 
+           "16r0153"    16r00 " invalid " 
+           "16r0154"    16r00 " invalid " 
+           "16r0155"    16r00 " invalid " 
+           "16r0156"    16r00 " invalid " 
+           "16r0157"    16r00 " invalid " 
+           "16r0158"    16r00 " invalid " 
+           "16r0159"    16r00 " invalid " 
+           "16r015A"    16r00 " invalid " 
+           "16r015B"    16r00 " invalid " 
+           "16r015C"    16rDE " LATIN CAPITAL LETTER S WITH CIRCUMFLEX " 
+           "16r015D"    16rFE " LATIN SMALL LETTER S WITH CIRCUMFLEX " 
+           "16r015E"    16rAA " LATIN CAPITAL LETTER S WITH CEDILLA " 
+           "16r015F"    16rBA " LATIN SMALL LETTER S WITH CEDILLA " 
+           "16r0160"    16r00 " invalid " 
+           "16r0161"    16r00 " invalid " 
+           "16r0162"    16r00 " invalid " 
+           "16r0163"    16r00 " invalid " 
+           "16r0164"    16r00 " invalid " 
+           "16r0165"    16r00 " invalid " 
+           "16r0166"    16r00 " invalid " 
+           "16r0167"    16r00 " invalid " 
+           "16r0168"    16r00 " invalid " 
+           "16r0169"    16r00 " invalid " 
+           "16r016A"    16r00 " invalid " 
+           "16r016B"    16r00 " invalid " 
+           "16r016C"    16rDD " LATIN CAPITAL LETTER U WITH BREVE " 
+           "16r016D"    16rFD " LATIN SMALL LETTER U WITH BREVE " 
+           "16r016E"    16r00 " invalid " 
+           "16r016F"    16r00 " invalid " 
+           "16r0170"    16r00 " invalid " 
+           "16r0171"    16r00 " invalid " 
+           "16r0172"    16r00 " invalid " 
+           "16r0173"    16r00 " invalid " 
+           "16r0174"    16r00 " invalid " 
+           "16r0175"    16r00 " invalid " 
+           "16r0176"    16r00 " invalid " 
+           "16r0177"    16r00 " invalid " 
+           "16r0178"    16r00 " invalid " 
+           "16r0179"    16r00 " invalid " 
+           "16r017A"    16r00 " invalid " 
+           "16r017B"    16rAF " LATIN CAPITAL LETTER Z WITH DOT ABOVE " 
+           "16r017C"    16rBF " LATIN SMALL LETTER Z WITH DOT ABOVE " 
+           ] at:(unicode - 263).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 727 ifTrue:[
+        ^ self encodingError.
+    ].
+    ^ 
+#[
+       "16r02D8"    16rA2 " BREVE " 
+       "16r02D9"    16rFF " DOT ABOVE " 
+       ] at:(unicode - 727).
 ! !
 
 !CharacterEncoder::ISO8859_4 class methodsFor:'mapping'!
@@ -5116,21 +18287,28 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-4.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-4.TXT'
+! !
+
+!CharacterEncoder::ISO8859_4 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'latin-4' 'iso-ir-110')
 ! !
 
 !CharacterEncoder::ISO8859_4 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r00A1"    16r0104 " LATIN CAPITAL LETTER A WITH OGONEK " 
        "16r00A2"    16r0138 " LATIN SMALL LETTER KRA " 
        "16r00A3"    16r0156 " LATIN CAPITAL LETTER R WITH CEDILLA " 
@@ -5226,7 +18404,286 @@
        "16r00FD"    16r0169 " LATIN SMALL LETTER U WITH TILDE " 
        "16r00FE"    16r016B " LATIN SMALL LETTER U WITH MACRON " 
        "16r00FF"    16r02D9 " DOT ABOVE " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 731 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 256 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    0 " invalid " 
+           "16r00A3"    0 " invalid " 
+           "16r00A4"    1 " CURRENCY SIGN " 
+           "16r00A5"    0 " invalid " 
+           "16r00A6"    0 " invalid " 
+           "16r00A7"    1 " SECTION SIGN " 
+           "16r00A8"    1 " DIAERESIS " 
+           "16r00A9"    0 " invalid " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    0 " invalid " 
+           "16r00AC"    0 " invalid " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    0 " invalid " 
+           "16r00AF"    1 " MACRON " 
+           "16r00B0"    1 " DEGREE SIGN " 
+           "16r00B1"    0 " invalid " 
+           "16r00B2"    0 " invalid " 
+           "16r00B3"    0 " invalid " 
+           "16r00B4"    1 " ACUTE ACCENT " 
+           "16r00B5"    0 " invalid " 
+           "16r00B6"    0 " invalid " 
+           "16r00B7"    0 " invalid " 
+           "16r00B8"    1 " CEDILLA " 
+           "16r00B9"    0 " invalid " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    0 " invalid " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    0 " invalid " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    0 " invalid " 
+           "16r00C1"    1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+           "16r00C2"    1 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+           "16r00C3"    1 " LATIN CAPITAL LETTER A WITH TILDE " 
+           "16r00C4"    1 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+           "16r00C5"    1 " LATIN CAPITAL LETTER A WITH RING ABOVE " 
+           "16r00C6"    1 " LATIN CAPITAL LETTER AE " 
+           "16r00C7"    0 " invalid " 
+           "16r00C8"    0 " invalid " 
+           "16r00C9"    1 " LATIN CAPITAL LETTER E WITH ACUTE " 
+           "16r00CA"    0 " invalid " 
+           "16r00CB"    1 " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+           "16r00CC"    0 " invalid " 
+           "16r00CD"    1 " LATIN CAPITAL LETTER I WITH ACUTE " 
+           "16r00CE"    1 " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+           "16r00CF"    0 " invalid " 
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    0 " invalid " 
+           "16r00D2"    0 " invalid " 
+           "16r00D3"    0 " invalid " 
+           "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    1 " LATIN CAPITAL LETTER O WITH TILDE " 
+           "16r00D6"    1 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    1 " MULTIPLICATION SIGN " 
+           "16r00D8"    1 " LATIN CAPITAL LETTER O WITH STROKE " 
+           "16r00D9"    0 " invalid " 
+           "16r00DA"    1 " LATIN CAPITAL LETTER U WITH ACUTE " 
+           "16r00DB"    1 " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+           "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    0 " invalid " 
+           "16r00DE"    0 " invalid " 
+           "16r00DF"    1 " LATIN SMALL LETTER SHARP S " 
+           "16r00E0"    0 " invalid " 
+           "16r00E1"    1 " LATIN SMALL LETTER A WITH ACUTE " 
+           "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    1 " LATIN SMALL LETTER A WITH TILDE " 
+           "16r00E4"    1 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    1 " LATIN SMALL LETTER A WITH RING ABOVE " 
+           "16r00E6"    1 " LATIN SMALL LETTER AE " 
+           "16r00E7"    0 " invalid " 
+           "16r00E8"    0 " invalid " 
+           "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    0 " invalid " 
+           "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+           "16r00EC"    0 " invalid " 
+           "16r00ED"    1 " LATIN SMALL LETTER I WITH ACUTE " 
+           "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    0 " invalid " 
+           "16r00F0"    0 " invalid " 
+           "16r00F1"    0 " invalid " 
+           "16r00F2"    0 " invalid " 
+           "16r00F3"    0 " invalid " 
+           "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    1 " LATIN SMALL LETTER O WITH TILDE " 
+           "16r00F6"    1 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    1 " DIVISION SIGN " 
+           "16r00F8"    1 " LATIN SMALL LETTER O WITH STROKE " 
+           "16r00F9"    0 " invalid " 
+           "16r00FA"    1 " LATIN SMALL LETTER U WITH ACUTE " 
+           "16r00FB"    1 " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+           "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    0 " invalid " 
+           "16r00FE"    0 " invalid " 
+           "16r00FF"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    unicode < 383 ifTrue:[
+        [
+        |t|
+        t := 
+#[
+           "16r0100"    16rC0 " LATIN CAPITAL LETTER A WITH MACRON " 
+           "16r0101"    16rE0 " LATIN SMALL LETTER A WITH MACRON " 
+           "16r0102"    16r00 " invalid " 
+           "16r0103"    16r00 " invalid " 
+           "16r0104"    16rA1 " LATIN CAPITAL LETTER A WITH OGONEK " 
+           "16r0105"    16rB1 " LATIN SMALL LETTER A WITH OGONEK " 
+           "16r0106"    16r00 " invalid " 
+           "16r0107"    16r00 " invalid " 
+           "16r0108"    16r00 " invalid " 
+           "16r0109"    16r00 " invalid " 
+           "16r010A"    16r00 " invalid " 
+           "16r010B"    16r00 " invalid " 
+           "16r010C"    16rC8 " LATIN CAPITAL LETTER C WITH CARON " 
+           "16r010D"    16rE8 " LATIN SMALL LETTER C WITH CARON " 
+           "16r010E"    16r00 " invalid " 
+           "16r010F"    16r00 " invalid " 
+           "16r0110"    16rD0 " LATIN CAPITAL LETTER D WITH STROKE " 
+           "16r0111"    16rF0 " LATIN SMALL LETTER D WITH STROKE " 
+           "16r0112"    16rAA " LATIN CAPITAL LETTER E WITH MACRON " 
+           "16r0113"    16rBA " LATIN SMALL LETTER E WITH MACRON " 
+           "16r0114"    16r00 " invalid " 
+           "16r0115"    16r00 " invalid " 
+           "16r0116"    16rCC " LATIN CAPITAL LETTER E WITH DOT ABOVE " 
+           "16r0117"    16rEC " LATIN SMALL LETTER E WITH DOT ABOVE " 
+           "16r0118"    16rCA " LATIN CAPITAL LETTER E WITH OGONEK " 
+           "16r0119"    16rEA " LATIN SMALL LETTER E WITH OGONEK " 
+           "16r011A"    16r00 " invalid " 
+           "16r011B"    16r00 " invalid " 
+           "16r011C"    16r00 " invalid " 
+           "16r011D"    16r00 " invalid " 
+           "16r011E"    16r00 " invalid " 
+           "16r011F"    16r00 " invalid " 
+           "16r0120"    16r00 " invalid " 
+           "16r0121"    16r00 " invalid " 
+           "16r0122"    16rAB " LATIN CAPITAL LETTER G WITH CEDILLA " 
+           "16r0123"    16rBB " LATIN SMALL LETTER G WITH CEDILLA " 
+           "16r0124"    16r00 " invalid " 
+           "16r0125"    16r00 " invalid " 
+           "16r0126"    16r00 " invalid " 
+           "16r0127"    16r00 " invalid " 
+           "16r0128"    16rA5 " LATIN CAPITAL LETTER I WITH TILDE " 
+           "16r0129"    16rB5 " LATIN SMALL LETTER I WITH TILDE " 
+           "16r012A"    16rCF " LATIN CAPITAL LETTER I WITH MACRON " 
+           "16r012B"    16rEF " LATIN SMALL LETTER I WITH MACRON " 
+           "16r012C"    16r00 " invalid " 
+           "16r012D"    16r00 " invalid " 
+           "16r012E"    16rC7 " LATIN CAPITAL LETTER I WITH OGONEK " 
+           "16r012F"    16rE7 " LATIN SMALL LETTER I WITH OGONEK " 
+           "16r0130"    16r00 " invalid " 
+           "16r0131"    16r00 " invalid " 
+           "16r0132"    16r00 " invalid " 
+           "16r0133"    16r00 " invalid " 
+           "16r0134"    16r00 " invalid " 
+           "16r0135"    16r00 " invalid " 
+           "16r0136"    16rD3 " LATIN CAPITAL LETTER K WITH CEDILLA " 
+           "16r0137"    16rF3 " LATIN SMALL LETTER K WITH CEDILLA " 
+           "16r0138"    16rA2 " LATIN SMALL LETTER KRA " 
+           "16r0139"    16r00 " invalid " 
+           "16r013A"    16r00 " invalid " 
+           "16r013B"    16rA6 " LATIN CAPITAL LETTER L WITH CEDILLA " 
+           "16r013C"    16rB6 " LATIN SMALL LETTER L WITH CEDILLA " 
+           "16r013D"    16r00 " invalid " 
+           "16r013E"    16r00 " invalid " 
+           "16r013F"    16r00 " invalid " 
+           "16r0140"    16r00 " invalid " 
+           "16r0141"    16r00 " invalid " 
+           "16r0142"    16r00 " invalid " 
+           "16r0143"    16r00 " invalid " 
+           "16r0144"    16r00 " invalid " 
+           "16r0145"    16rD1 " LATIN CAPITAL LETTER N WITH CEDILLA " 
+           "16r0146"    16rF1 " LATIN SMALL LETTER N WITH CEDILLA " 
+           "16r0147"    16r00 " invalid " 
+           "16r0148"    16r00 " invalid " 
+           "16r0149"    16r00 " invalid " 
+           "16r014A"    16rBD " LATIN CAPITAL LETTER ENG " 
+           "16r014B"    16rBF " LATIN SMALL LETTER ENG " 
+           "16r014C"    16rD2 " LATIN CAPITAL LETTER O WITH MACRON " 
+           "16r014D"    16rF2 " LATIN SMALL LETTER O WITH MACRON " 
+           "16r014E"    16r00 " invalid " 
+           "16r014F"    16r00 " invalid " 
+           "16r0150"    16r00 " invalid " 
+           "16r0151"    16r00 " invalid " 
+           "16r0152"    16r00 " invalid " 
+           "16r0153"    16r00 " invalid " 
+           "16r0154"    16r00 " invalid " 
+           "16r0155"    16r00 " invalid " 
+           "16r0156"    16rA3 " LATIN CAPITAL LETTER R WITH CEDILLA " 
+           "16r0157"    16rB3 " LATIN SMALL LETTER R WITH CEDILLA " 
+           "16r0158"    16r00 " invalid " 
+           "16r0159"    16r00 " invalid " 
+           "16r015A"    16r00 " invalid " 
+           "16r015B"    16r00 " invalid " 
+           "16r015C"    16r00 " invalid " 
+           "16r015D"    16r00 " invalid " 
+           "16r015E"    16r00 " invalid " 
+           "16r015F"    16r00 " invalid " 
+           "16r0160"    16rA9 " LATIN CAPITAL LETTER S WITH CARON " 
+           "16r0161"    16rB9 " LATIN SMALL LETTER S WITH CARON " 
+           "16r0162"    16r00 " invalid " 
+           "16r0163"    16r00 " invalid " 
+           "16r0164"    16r00 " invalid " 
+           "16r0165"    16r00 " invalid " 
+           "16r0166"    16rAC " LATIN CAPITAL LETTER T WITH STROKE " 
+           "16r0167"    16rBC " LATIN SMALL LETTER T WITH STROKE " 
+           "16r0168"    16rDD " LATIN CAPITAL LETTER U WITH TILDE " 
+           "16r0169"    16rFD " LATIN SMALL LETTER U WITH TILDE " 
+           "16r016A"    16rDE " LATIN CAPITAL LETTER U WITH MACRON " 
+           "16r016B"    16rFE " LATIN SMALL LETTER U WITH MACRON " 
+           "16r016C"    16r00 " invalid " 
+           "16r016D"    16r00 " invalid " 
+           "16r016E"    16r00 " invalid " 
+           "16r016F"    16r00 " invalid " 
+           "16r0170"    16r00 " invalid " 
+           "16r0171"    16r00 " invalid " 
+           "16r0172"    16rD9 " LATIN CAPITAL LETTER U WITH OGONEK " 
+           "16r0173"    16rF9 " LATIN SMALL LETTER U WITH OGONEK " 
+           "16r0174"    16r00 " invalid " 
+           "16r0175"    16r00 " invalid " 
+           "16r0176"    16r00 " invalid " 
+           "16r0177"    16r00 " invalid " 
+           "16r0178"    16r00 " invalid " 
+           "16r0179"    16r00 " invalid " 
+           "16r017A"    16r00 " invalid " 
+           "16r017B"    16r00 " invalid " 
+           "16r017C"    16r00 " invalid " 
+           "16r017D"    16rAE " LATIN CAPITAL LETTER Z WITH CARON " 
+           "16r017E"    16rBE " LATIN SMALL LETTER Z WITH CARON " 
+           ] at:(unicode - 255).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 710 ifTrue:[
+        ^ self encodingError.
+    ].
+    [
+    |t|
+    t := 
+#[
+       "16r02C7"    16rB7 " CARON " 
+       "16r02C8"    16r00 " invalid " 
+       "16r02C9"    16r00 " invalid " 
+       "16r02CA"    16r00 " invalid " 
+       "16r02CB"    16r00 " invalid " 
+       "16r02CC"    16r00 " invalid " 
+       "16r02CD"    16r00 " invalid " 
+       "16r02CE"    16r00 " invalid " 
+       "16r02CF"    16r00 " invalid " 
+       "16r02D0"    16r00 " invalid " 
+       "16r02D1"    16r00 " invalid " 
+       "16r02D2"    16r00 " invalid " 
+       "16r02D3"    16r00 " invalid " 
+       "16r02D4"    16r00 " invalid " 
+       "16r02D5"    16r00 " invalid " 
+       "16r02D6"    16r00 " invalid " 
+       "16r02D7"    16r00 " invalid " 
+       "16r02D8"    16r00 " invalid " 
+       "16r02D9"    16rFF " DOT ABOVE " 
+       "16r02DA"    16r00 " invalid " 
+       "16r02DB"    16rB2 " OGONEK " 
+       ] at:(unicode - 710).
+    t == 0 ifFalse:[^ t].
+    ^ self encodingError
+    ] value.
 ! !
 
 !CharacterEncoder::ISO8859_5 class methodsFor:'mapping'!
@@ -5542,21 +18999,28 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-5.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-5.TXT'
+! !
+
+!CharacterEncoder::ISO8859_5 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'cyrillic' 'iso-ir-144' )
 ! !
 
 !CharacterEncoder::ISO8859_5 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r00A1"    16r0401 " CYRILLIC CAPITAL LETTER IO " 
        "16r00A2"    16r0402 " CYRILLIC CAPITAL LETTER DJE " 
        "16r00A3"    16r0403 " CYRILLIC CAPITAL LETTER GJE " 
@@ -5652,7 +19116,155 @@
        "16r00FD"    16r00A7 " SECTION SIGN " 
        "16r00FE"    16r045E " CYRILLIC SMALL LETTER SHORT U " 
        "16r00FF"    16r045F " CYRILLIC SMALL LETTER DZHE " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 8470 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 1120 ifTrue:[
+        unicode < 174 ifTrue:[
+            [
+            |t|
+            t := 
+#[
+               "16r00A1"    16r00 " invalid " 
+               "16r00A2"    16r00 " invalid " 
+               "16r00A3"    16r00 " invalid " 
+               "16r00A4"    16r00 " invalid " 
+               "16r00A5"    16r00 " invalid " 
+               "16r00A6"    16r00 " invalid " 
+               "16r00A7"    16rFD " SECTION SIGN " 
+               "16r00A8"    16r00 " invalid " 
+               "16r00A9"    16r00 " invalid " 
+               "16r00AA"    16r00 " invalid " 
+               "16r00AB"    16r00 " invalid " 
+               "16r00AC"    16r00 " invalid " 
+               "16r00AD"    16rAD " SOFT HYPHEN " 
+               ] at:(unicode - 160).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+            ] value.
+        ].
+        unicode <= 1024 ifTrue:[
+            ^ self encodingError.
+        ].
+        [
+        |t|
+        t := 
+#[
+           "16r0401"    16rA1 " CYRILLIC CAPITAL LETTER IO " 
+           "16r0402"    16rA2 " CYRILLIC CAPITAL LETTER DJE " 
+           "16r0403"    16rA3 " CYRILLIC CAPITAL LETTER GJE " 
+           "16r0404"    16rA4 " CYRILLIC CAPITAL LETTER UKRAINIAN IE " 
+           "16r0405"    16rA5 " CYRILLIC CAPITAL LETTER DZE " 
+           "16r0406"    16rA6 " CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I " 
+           "16r0407"    16rA7 " CYRILLIC CAPITAL LETTER YI " 
+           "16r0408"    16rA8 " CYRILLIC CAPITAL LETTER JE " 
+           "16r0409"    16rA9 " CYRILLIC CAPITAL LETTER LJE " 
+           "16r040A"    16rAA " CYRILLIC CAPITAL LETTER NJE " 
+           "16r040B"    16rAB " CYRILLIC CAPITAL LETTER TSHE " 
+           "16r040C"    16rAC " CYRILLIC CAPITAL LETTER KJE " 
+           "16r040D"    16r00 " invalid " 
+           "16r040E"    16rAE " CYRILLIC CAPITAL LETTER SHORT U " 
+           "16r040F"    16rAF " CYRILLIC CAPITAL LETTER DZHE " 
+           "16r0410"    16rB0 " CYRILLIC CAPITAL LETTER A " 
+           "16r0411"    16rB1 " CYRILLIC CAPITAL LETTER BE " 
+           "16r0412"    16rB2 " CYRILLIC CAPITAL LETTER VE " 
+           "16r0413"    16rB3 " CYRILLIC CAPITAL LETTER GHE " 
+           "16r0414"    16rB4 " CYRILLIC CAPITAL LETTER DE " 
+           "16r0415"    16rB5 " CYRILLIC CAPITAL LETTER IE " 
+           "16r0416"    16rB6 " CYRILLIC CAPITAL LETTER ZHE " 
+           "16r0417"    16rB7 " CYRILLIC CAPITAL LETTER ZE " 
+           "16r0418"    16rB8 " CYRILLIC CAPITAL LETTER I " 
+           "16r0419"    16rB9 " CYRILLIC CAPITAL LETTER SHORT I " 
+           "16r041A"    16rBA " CYRILLIC CAPITAL LETTER KA " 
+           "16r041B"    16rBB " CYRILLIC CAPITAL LETTER EL " 
+           "16r041C"    16rBC " CYRILLIC CAPITAL LETTER EM " 
+           "16r041D"    16rBD " CYRILLIC CAPITAL LETTER EN " 
+           "16r041E"    16rBE " CYRILLIC CAPITAL LETTER O " 
+           "16r041F"    16rBF " CYRILLIC CAPITAL LETTER PE " 
+           "16r0420"    16rC0 " CYRILLIC CAPITAL LETTER ER " 
+           "16r0421"    16rC1 " CYRILLIC CAPITAL LETTER ES " 
+           "16r0422"    16rC2 " CYRILLIC CAPITAL LETTER TE " 
+           "16r0423"    16rC3 " CYRILLIC CAPITAL LETTER U " 
+           "16r0424"    16rC4 " CYRILLIC CAPITAL LETTER EF " 
+           "16r0425"    16rC5 " CYRILLIC CAPITAL LETTER HA " 
+           "16r0426"    16rC6 " CYRILLIC CAPITAL LETTER TSE " 
+           "16r0427"    16rC7 " CYRILLIC CAPITAL LETTER CHE " 
+           "16r0428"    16rC8 " CYRILLIC CAPITAL LETTER SHA " 
+           "16r0429"    16rC9 " CYRILLIC CAPITAL LETTER SHCHA " 
+           "16r042A"    16rCA " CYRILLIC CAPITAL LETTER HARD SIGN " 
+           "16r042B"    16rCB " CYRILLIC CAPITAL LETTER YERU " 
+           "16r042C"    16rCC " CYRILLIC CAPITAL LETTER SOFT SIGN " 
+           "16r042D"    16rCD " CYRILLIC CAPITAL LETTER E " 
+           "16r042E"    16rCE " CYRILLIC CAPITAL LETTER YU " 
+           "16r042F"    16rCF " CYRILLIC CAPITAL LETTER YA " 
+           "16r0430"    16rD0 " CYRILLIC SMALL LETTER A " 
+           "16r0431"    16rD1 " CYRILLIC SMALL LETTER BE " 
+           "16r0432"    16rD2 " CYRILLIC SMALL LETTER VE " 
+           "16r0433"    16rD3 " CYRILLIC SMALL LETTER GHE " 
+           "16r0434"    16rD4 " CYRILLIC SMALL LETTER DE " 
+           "16r0435"    16rD5 " CYRILLIC SMALL LETTER IE " 
+           "16r0436"    16rD6 " CYRILLIC SMALL LETTER ZHE " 
+           "16r0437"    16rD7 " CYRILLIC SMALL LETTER ZE " 
+           "16r0438"    16rD8 " CYRILLIC SMALL LETTER I " 
+           "16r0439"    16rD9 " CYRILLIC SMALL LETTER SHORT I " 
+           "16r043A"    16rDA " CYRILLIC SMALL LETTER KA " 
+           "16r043B"    16rDB " CYRILLIC SMALL LETTER EL " 
+           "16r043C"    16rDC " CYRILLIC SMALL LETTER EM " 
+           "16r043D"    16rDD " CYRILLIC SMALL LETTER EN " 
+           "16r043E"    16rDE " CYRILLIC SMALL LETTER O " 
+           "16r043F"    16rDF " CYRILLIC SMALL LETTER PE " 
+           "16r0440"    16rE0 " CYRILLIC SMALL LETTER ER " 
+           "16r0441"    16rE1 " CYRILLIC SMALL LETTER ES " 
+           "16r0442"    16rE2 " CYRILLIC SMALL LETTER TE " 
+           "16r0443"    16rE3 " CYRILLIC SMALL LETTER U " 
+           "16r0444"    16rE4 " CYRILLIC SMALL LETTER EF " 
+           "16r0445"    16rE5 " CYRILLIC SMALL LETTER HA " 
+           "16r0446"    16rE6 " CYRILLIC SMALL LETTER TSE " 
+           "16r0447"    16rE7 " CYRILLIC SMALL LETTER CHE " 
+           "16r0448"    16rE8 " CYRILLIC SMALL LETTER SHA " 
+           "16r0449"    16rE9 " CYRILLIC SMALL LETTER SHCHA " 
+           "16r044A"    16rEA " CYRILLIC SMALL LETTER HARD SIGN " 
+           "16r044B"    16rEB " CYRILLIC SMALL LETTER YERU " 
+           "16r044C"    16rEC " CYRILLIC SMALL LETTER SOFT SIGN " 
+           "16r044D"    16rED " CYRILLIC SMALL LETTER E " 
+           "16r044E"    16rEE " CYRILLIC SMALL LETTER YU " 
+           "16r044F"    16rEF " CYRILLIC SMALL LETTER YA " 
+           "16r0450"    16r00 " invalid " 
+           "16r0451"    16rF1 " CYRILLIC SMALL LETTER IO " 
+           "16r0452"    16rF2 " CYRILLIC SMALL LETTER DJE " 
+           "16r0453"    16rF3 " CYRILLIC SMALL LETTER GJE " 
+           "16r0454"    16rF4 " CYRILLIC SMALL LETTER UKRAINIAN IE " 
+           "16r0455"    16rF5 " CYRILLIC SMALL LETTER DZE " 
+           "16r0456"    16rF6 " CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I " 
+           "16r0457"    16rF7 " CYRILLIC SMALL LETTER YI " 
+           "16r0458"    16rF8 " CYRILLIC SMALL LETTER JE " 
+           "16r0459"    16rF9 " CYRILLIC SMALL LETTER LJE " 
+           "16r045A"    16rFA " CYRILLIC SMALL LETTER NJE " 
+           "16r045B"    16rFB " CYRILLIC SMALL LETTER TSHE " 
+           "16r045C"    16rFC " CYRILLIC SMALL LETTER KJE " 
+           "16r045D"    16r00 " invalid " 
+           "16r045E"    16rFE " CYRILLIC SMALL LETTER SHORT U " 
+           "16r045F"    16rFF " CYRILLIC SMALL LETTER DZHE " 
+           ] at:(unicode - 1024).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 8469 ifTrue:[
+        ^ self encodingError.
+    ].
+    ^ 
+#[
+       "16r2116"    16rF0 " NUMERO SIGN " 
+       ] at:(unicode - 8469).
 ! !
 
 !CharacterEncoder::ISO8859_6 class methodsFor:'mapping'!
@@ -5925,53 +19537,62 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-6.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-6.TXT'
+! !
+
+!CharacterEncoder::ISO8859_6 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'arabic' 'asmo-708' 'ecma-114' 'iso-ir-127' )
 ! !
 
 !CharacterEncoder::ISO8859_6 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 242 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
-       "16r00A1"    16rFFFF " invalid " 
-       "16r00A2"    16rFFFF " invalid " 
-       "16r00A3"    16rFFFF " invalid " 
+        ^ self decodingError.
+    ].
+    [
+    |t|
+    t := 
+#(
+       "16r00A1"    16r0000 " invalid " 
+       "16r00A2"    16r0000 " invalid " 
+       "16r00A3"    16r0000 " invalid " 
        "16r00A4"    16r00A4 " CURRENCY SIGN " 
-       "16r00A5"    16rFFFF " invalid " 
-       "16r00A6"    16rFFFF " invalid " 
-       "16r00A7"    16rFFFF " invalid " 
-       "16r00A8"    16rFFFF " invalid " 
-       "16r00A9"    16rFFFF " invalid " 
-       "16r00AA"    16rFFFF " invalid " 
-       "16r00AB"    16rFFFF " invalid " 
+       "16r00A5"    16r0000 " invalid " 
+       "16r00A6"    16r0000 " invalid " 
+       "16r00A7"    16r0000 " invalid " 
+       "16r00A8"    16r0000 " invalid " 
+       "16r00A9"    16r0000 " invalid " 
+       "16r00AA"    16r0000 " invalid " 
+       "16r00AB"    16r0000 " invalid " 
        "16r00AC"    16r060C " ARABIC COMMA " 
        "16r00AD"    16r00AD " SOFT HYPHEN " 
-       "16r00AE"    16rFFFF " invalid " 
-       "16r00AF"    16rFFFF " invalid " 
-       "16r00B0"    16rFFFF " invalid " 
-       "16r00B1"    16rFFFF " invalid " 
-       "16r00B2"    16rFFFF " invalid " 
-       "16r00B3"    16rFFFF " invalid " 
-       "16r00B4"    16rFFFF " invalid " 
-       "16r00B5"    16rFFFF " invalid " 
-       "16r00B6"    16rFFFF " invalid " 
-       "16r00B7"    16rFFFF " invalid " 
-       "16r00B8"    16rFFFF " invalid " 
-       "16r00B9"    16rFFFF " invalid " 
-       "16r00BA"    16rFFFF " invalid " 
+       "16r00AE"    16r0000 " invalid " 
+       "16r00AF"    16r0000 " invalid " 
+       "16r00B0"    16r0000 " invalid " 
+       "16r00B1"    16r0000 " invalid " 
+       "16r00B2"    16r0000 " invalid " 
+       "16r00B3"    16r0000 " invalid " 
+       "16r00B4"    16r0000 " invalid " 
+       "16r00B5"    16r0000 " invalid " 
+       "16r00B6"    16r0000 " invalid " 
+       "16r00B7"    16r0000 " invalid " 
+       "16r00B8"    16r0000 " invalid " 
+       "16r00B9"    16r0000 " invalid " 
+       "16r00BA"    16r0000 " invalid " 
        "16r00BB"    16r061B " ARABIC SEMICOLON " 
-       "16r00BC"    16rFFFF " invalid " 
-       "16r00BD"    16rFFFF " invalid " 
-       "16r00BE"    16rFFFF " invalid " 
+       "16r00BC"    16r0000 " invalid " 
+       "16r00BD"    16r0000 " invalid " 
+       "16r00BE"    16r0000 " invalid " 
        "16r00BF"    16r061F " ARABIC QUESTION MARK " 
-       "16r00C0"    16rFFFF " invalid " 
+       "16r00C0"    16r0000 " invalid " 
        "16r00C1"    16r0621 " ARABIC LETTER HAMZA " 
        "16r00C2"    16r0622 " ARABIC LETTER ALEF WITH MADDA ABOVE " 
        "16r00C3"    16r0623 " ARABIC LETTER ALEF WITH HAMZA ABOVE " 
@@ -5998,11 +19619,11 @@
        "16r00D8"    16r0638 " ARABIC LETTER ZAH " 
        "16r00D9"    16r0639 " ARABIC LETTER AIN " 
        "16r00DA"    16r063A " ARABIC LETTER GHAIN " 
-       "16r00DB"    16rFFFF " invalid " 
-       "16r00DC"    16rFFFF " invalid " 
-       "16r00DD"    16rFFFF " invalid " 
-       "16r00DE"    16rFFFF " invalid " 
-       "16r00DF"    16rFFFF " invalid " 
+       "16r00DB"    16r0000 " invalid " 
+       "16r00DC"    16r0000 " invalid " 
+       "16r00DD"    16r0000 " invalid " 
+       "16r00DE"    16r0000 " invalid " 
+       "16r00DF"    16r0000 " invalid " 
        "16r00E0"    16r0640 " ARABIC TATWEEL " 
        "16r00E1"    16r0641 " ARABIC LETTER FEH " 
        "16r00E2"    16r0642 " ARABIC LETTER QAF " 
@@ -6022,7 +19643,1491 @@
        "16r00F0"    16r0650 " ARABIC KASRA " 
        "16r00F1"    16r0651 " ARABIC SHADDA " 
        "16r00F2"    16r0652 " ARABIC SUKUN " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+    t == 0 ifFalse:[^ t].
+    ^ self decodingError.
+    ] value.
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 1618 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 1548 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    0 " invalid " 
+           "16r00A3"    0 " invalid " 
+           "16r00A4"    1 " CURRENCY SIGN " 
+           "16r00A5"    0 " invalid " 
+           "16r00A6"    0 " invalid " 
+           "16r00A7"    0 " invalid " 
+           "16r00A8"    0 " invalid " 
+           "16r00A9"    0 " invalid " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    0 " invalid " 
+           "16r00AC"    0 " invalid " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    0 " invalid " 
+           "16r00AF"    0 " invalid " 
+           "16r00B0"    0 " invalid " 
+           "16r00B1"    0 " invalid " 
+           "16r00B2"    0 " invalid " 
+           "16r00B3"    0 " invalid " 
+           "16r00B4"    0 " invalid " 
+           "16r00B5"    0 " invalid " 
+           "16r00B6"    0 " invalid " 
+           "16r00B7"    0 " invalid " 
+           "16r00B8"    0 " invalid " 
+           "16r00B9"    0 " invalid " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    0 " invalid " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    0 " invalid " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    0 " invalid " 
+           "16r00C1"    0 " invalid " 
+           "16r00C2"    0 " invalid " 
+           "16r00C3"    0 " invalid " 
+           "16r00C4"    0 " invalid " 
+           "16r00C5"    0 " invalid " 
+           "16r00C6"    0 " invalid " 
+           "16r00C7"    0 " invalid " 
+           "16r00C8"    0 " invalid " 
+           "16r00C9"    0 " invalid " 
+           "16r00CA"    0 " invalid " 
+           "16r00CB"    0 " invalid " 
+           "16r00CC"    0 " invalid " 
+           "16r00CD"    0 " invalid " 
+           "16r00CE"    0 " invalid " 
+           "16r00CF"    0 " invalid " 
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    0 " invalid " 
+           "16r00D2"    0 " invalid " 
+           "16r00D3"    0 " invalid " 
+           "16r00D4"    0 " invalid " 
+           "16r00D5"    0 " invalid " 
+           "16r00D6"    0 " invalid " 
+           "16r00D7"    0 " invalid " 
+           "16r00D8"    0 " invalid " 
+           "16r00D9"    0 " invalid " 
+           "16r00DA"    0 " invalid " 
+           "16r00DB"    0 " invalid " 
+           "16r00DC"    0 " invalid " 
+           "16r00DD"    0 " invalid " 
+           "16r00DE"    0 " invalid " 
+           "16r00DF"    0 " invalid " 
+           "16r00E0"    0 " invalid " 
+           "16r00E1"    0 " invalid " 
+           "16r00E2"    0 " invalid " 
+           "16r00E3"    0 " invalid " 
+           "16r00E4"    0 " invalid " 
+           "16r00E5"    0 " invalid " 
+           "16r00E6"    0 " invalid " 
+           "16r00E7"    0 " invalid " 
+           "16r00E8"    0 " invalid " 
+           "16r00E9"    0 " invalid " 
+           "16r00EA"    0 " invalid " 
+           "16r00EB"    0 " invalid " 
+           "16r00EC"    0 " invalid " 
+           "16r00ED"    0 " invalid " 
+           "16r00EE"    0 " invalid " 
+           "16r00EF"    0 " invalid " 
+           "16r00F0"    0 " invalid " 
+           "16r00F1"    0 " invalid " 
+           "16r00F2"    0 " invalid " 
+           "16r00F3"    0 " invalid " 
+           "16r00F4"    0 " invalid " 
+           "16r00F5"    0 " invalid " 
+           "16r00F6"    0 " invalid " 
+           "16r00F7"    0 " invalid " 
+           "16r00F8"    0 " invalid " 
+           "16r00F9"    0 " invalid " 
+           "16r00FA"    0 " invalid " 
+           "16r00FB"    0 " invalid " 
+           "16r00FC"    0 " invalid " 
+           "16r00FD"    0 " invalid " 
+           "16r00FE"    0 " invalid " 
+           "16r00FF"    0 " invalid " 
+           "16r0100"    0 " invalid " 
+           "16r0101"    0 " invalid " 
+           "16r0102"    0 " invalid " 
+           "16r0103"    0 " invalid " 
+           "16r0104"    0 " invalid " 
+           "16r0105"    0 " invalid " 
+           "16r0106"    0 " invalid " 
+           "16r0107"    0 " invalid " 
+           "16r0108"    0 " invalid " 
+           "16r0109"    0 " invalid " 
+           "16r010A"    0 " invalid " 
+           "16r010B"    0 " invalid " 
+           "16r010C"    0 " invalid " 
+           "16r010D"    0 " invalid " 
+           "16r010E"    0 " invalid " 
+           "16r010F"    0 " invalid " 
+           "16r0110"    0 " invalid " 
+           "16r0111"    0 " invalid " 
+           "16r0112"    0 " invalid " 
+           "16r0113"    0 " invalid " 
+           "16r0114"    0 " invalid " 
+           "16r0115"    0 " invalid " 
+           "16r0116"    0 " invalid " 
+           "16r0117"    0 " invalid " 
+           "16r0118"    0 " invalid " 
+           "16r0119"    0 " invalid " 
+           "16r011A"    0 " invalid " 
+           "16r011B"    0 " invalid " 
+           "16r011C"    0 " invalid " 
+           "16r011D"    0 " invalid " 
+           "16r011E"    0 " invalid " 
+           "16r011F"    0 " invalid " 
+           "16r0120"    0 " invalid " 
+           "16r0121"    0 " invalid " 
+           "16r0122"    0 " invalid " 
+           "16r0123"    0 " invalid " 
+           "16r0124"    0 " invalid " 
+           "16r0125"    0 " invalid " 
+           "16r0126"    0 " invalid " 
+           "16r0127"    0 " invalid " 
+           "16r0128"    0 " invalid " 
+           "16r0129"    0 " invalid " 
+           "16r012A"    0 " invalid " 
+           "16r012B"    0 " invalid " 
+           "16r012C"    0 " invalid " 
+           "16r012D"    0 " invalid " 
+           "16r012E"    0 " invalid " 
+           "16r012F"    0 " invalid " 
+           "16r0130"    0 " invalid " 
+           "16r0131"    0 " invalid " 
+           "16r0132"    0 " invalid " 
+           "16r0133"    0 " invalid " 
+           "16r0134"    0 " invalid " 
+           "16r0135"    0 " invalid " 
+           "16r0136"    0 " invalid " 
+           "16r0137"    0 " invalid " 
+           "16r0138"    0 " invalid " 
+           "16r0139"    0 " invalid " 
+           "16r013A"    0 " invalid " 
+           "16r013B"    0 " invalid " 
+           "16r013C"    0 " invalid " 
+           "16r013D"    0 " invalid " 
+           "16r013E"    0 " invalid " 
+           "16r013F"    0 " invalid " 
+           "16r0140"    0 " invalid " 
+           "16r0141"    0 " invalid " 
+           "16r0142"    0 " invalid " 
+           "16r0143"    0 " invalid " 
+           "16r0144"    0 " invalid " 
+           "16r0145"    0 " invalid " 
+           "16r0146"    0 " invalid " 
+           "16r0147"    0 " invalid " 
+           "16r0148"    0 " invalid " 
+           "16r0149"    0 " invalid " 
+           "16r014A"    0 " invalid " 
+           "16r014B"    0 " invalid " 
+           "16r014C"    0 " invalid " 
+           "16r014D"    0 " invalid " 
+           "16r014E"    0 " invalid " 
+           "16r014F"    0 " invalid " 
+           "16r0150"    0 " invalid " 
+           "16r0151"    0 " invalid " 
+           "16r0152"    0 " invalid " 
+           "16r0153"    0 " invalid " 
+           "16r0154"    0 " invalid " 
+           "16r0155"    0 " invalid " 
+           "16r0156"    0 " invalid " 
+           "16r0157"    0 " invalid " 
+           "16r0158"    0 " invalid " 
+           "16r0159"    0 " invalid " 
+           "16r015A"    0 " invalid " 
+           "16r015B"    0 " invalid " 
+           "16r015C"    0 " invalid " 
+           "16r015D"    0 " invalid " 
+           "16r015E"    0 " invalid " 
+           "16r015F"    0 " invalid " 
+           "16r0160"    0 " invalid " 
+           "16r0161"    0 " invalid " 
+           "16r0162"    0 " invalid " 
+           "16r0163"    0 " invalid " 
+           "16r0164"    0 " invalid " 
+           "16r0165"    0 " invalid " 
+           "16r0166"    0 " invalid " 
+           "16r0167"    0 " invalid " 
+           "16r0168"    0 " invalid " 
+           "16r0169"    0 " invalid " 
+           "16r016A"    0 " invalid " 
+           "16r016B"    0 " invalid " 
+           "16r016C"    0 " invalid " 
+           "16r016D"    0 " invalid " 
+           "16r016E"    0 " invalid " 
+           "16r016F"    0 " invalid " 
+           "16r0170"    0 " invalid " 
+           "16r0171"    0 " invalid " 
+           "16r0172"    0 " invalid " 
+           "16r0173"    0 " invalid " 
+           "16r0174"    0 " invalid " 
+           "16r0175"    0 " invalid " 
+           "16r0176"    0 " invalid " 
+           "16r0177"    0 " invalid " 
+           "16r0178"    0 " invalid " 
+           "16r0179"    0 " invalid " 
+           "16r017A"    0 " invalid " 
+           "16r017B"    0 " invalid " 
+           "16r017C"    0 " invalid " 
+           "16r017D"    0 " invalid " 
+           "16r017E"    0 " invalid " 
+           "16r017F"    0 " invalid " 
+           "16r0180"    0 " invalid " 
+           "16r0181"    0 " invalid " 
+           "16r0182"    0 " invalid " 
+           "16r0183"    0 " invalid " 
+           "16r0184"    0 " invalid " 
+           "16r0185"    0 " invalid " 
+           "16r0186"    0 " invalid " 
+           "16r0187"    0 " invalid " 
+           "16r0188"    0 " invalid " 
+           "16r0189"    0 " invalid " 
+           "16r018A"    0 " invalid " 
+           "16r018B"    0 " invalid " 
+           "16r018C"    0 " invalid " 
+           "16r018D"    0 " invalid " 
+           "16r018E"    0 " invalid " 
+           "16r018F"    0 " invalid " 
+           "16r0190"    0 " invalid " 
+           "16r0191"    0 " invalid " 
+           "16r0192"    0 " invalid " 
+           "16r0193"    0 " invalid " 
+           "16r0194"    0 " invalid " 
+           "16r0195"    0 " invalid " 
+           "16r0196"    0 " invalid " 
+           "16r0197"    0 " invalid " 
+           "16r0198"    0 " invalid " 
+           "16r0199"    0 " invalid " 
+           "16r019A"    0 " invalid " 
+           "16r019B"    0 " invalid " 
+           "16r019C"    0 " invalid " 
+           "16r019D"    0 " invalid " 
+           "16r019E"    0 " invalid " 
+           "16r019F"    0 " invalid " 
+           "16r01A0"    0 " invalid " 
+           "16r01A1"    0 " invalid " 
+           "16r01A2"    0 " invalid " 
+           "16r01A3"    0 " invalid " 
+           "16r01A4"    0 " invalid " 
+           "16r01A5"    0 " invalid " 
+           "16r01A6"    0 " invalid " 
+           "16r01A7"    0 " invalid " 
+           "16r01A8"    0 " invalid " 
+           "16r01A9"    0 " invalid " 
+           "16r01AA"    0 " invalid " 
+           "16r01AB"    0 " invalid " 
+           "16r01AC"    0 " invalid " 
+           "16r01AD"    0 " invalid " 
+           "16r01AE"    0 " invalid " 
+           "16r01AF"    0 " invalid " 
+           "16r01B0"    0 " invalid " 
+           "16r01B1"    0 " invalid " 
+           "16r01B2"    0 " invalid " 
+           "16r01B3"    0 " invalid " 
+           "16r01B4"    0 " invalid " 
+           "16r01B5"    0 " invalid " 
+           "16r01B6"    0 " invalid " 
+           "16r01B7"    0 " invalid " 
+           "16r01B8"    0 " invalid " 
+           "16r01B9"    0 " invalid " 
+           "16r01BA"    0 " invalid " 
+           "16r01BB"    0 " invalid " 
+           "16r01BC"    0 " invalid " 
+           "16r01BD"    0 " invalid " 
+           "16r01BE"    0 " invalid " 
+           "16r01BF"    0 " invalid " 
+           "16r01C0"    0 " invalid " 
+           "16r01C1"    0 " invalid " 
+           "16r01C2"    0 " invalid " 
+           "16r01C3"    0 " invalid " 
+           "16r01C4"    0 " invalid " 
+           "16r01C5"    0 " invalid " 
+           "16r01C6"    0 " invalid " 
+           "16r01C7"    0 " invalid " 
+           "16r01C8"    0 " invalid " 
+           "16r01C9"    0 " invalid " 
+           "16r01CA"    0 " invalid " 
+           "16r01CB"    0 " invalid " 
+           "16r01CC"    0 " invalid " 
+           "16r01CD"    0 " invalid " 
+           "16r01CE"    0 " invalid " 
+           "16r01CF"    0 " invalid " 
+           "16r01D0"    0 " invalid " 
+           "16r01D1"    0 " invalid " 
+           "16r01D2"    0 " invalid " 
+           "16r01D3"    0 " invalid " 
+           "16r01D4"    0 " invalid " 
+           "16r01D5"    0 " invalid " 
+           "16r01D6"    0 " invalid " 
+           "16r01D7"    0 " invalid " 
+           "16r01D8"    0 " invalid " 
+           "16r01D9"    0 " invalid " 
+           "16r01DA"    0 " invalid " 
+           "16r01DB"    0 " invalid " 
+           "16r01DC"    0 " invalid " 
+           "16r01DD"    0 " invalid " 
+           "16r01DE"    0 " invalid " 
+           "16r01DF"    0 " invalid " 
+           "16r01E0"    0 " invalid " 
+           "16r01E1"    0 " invalid " 
+           "16r01E2"    0 " invalid " 
+           "16r01E3"    0 " invalid " 
+           "16r01E4"    0 " invalid " 
+           "16r01E5"    0 " invalid " 
+           "16r01E6"    0 " invalid " 
+           "16r01E7"    0 " invalid " 
+           "16r01E8"    0 " invalid " 
+           "16r01E9"    0 " invalid " 
+           "16r01EA"    0 " invalid " 
+           "16r01EB"    0 " invalid " 
+           "16r01EC"    0 " invalid " 
+           "16r01ED"    0 " invalid " 
+           "16r01EE"    0 " invalid " 
+           "16r01EF"    0 " invalid " 
+           "16r01F0"    0 " invalid " 
+           "16r01F1"    0 " invalid " 
+           "16r01F2"    0 " invalid " 
+           "16r01F3"    0 " invalid " 
+           "16r01F4"    0 " invalid " 
+           "16r01F5"    0 " invalid " 
+           "16r01F6"    0 " invalid " 
+           "16r01F7"    0 " invalid " 
+           "16r01F8"    0 " invalid " 
+           "16r01F9"    0 " invalid " 
+           "16r01FA"    0 " invalid " 
+           "16r01FB"    0 " invalid " 
+           "16r01FC"    0 " invalid " 
+           "16r01FD"    0 " invalid " 
+           "16r01FE"    0 " invalid " 
+           "16r01FF"    0 " invalid " 
+           "16r0200"    0 " invalid " 
+           "16r0201"    0 " invalid " 
+           "16r0202"    0 " invalid " 
+           "16r0203"    0 " invalid " 
+           "16r0204"    0 " invalid " 
+           "16r0205"    0 " invalid " 
+           "16r0206"    0 " invalid " 
+           "16r0207"    0 " invalid " 
+           "16r0208"    0 " invalid " 
+           "16r0209"    0 " invalid " 
+           "16r020A"    0 " invalid " 
+           "16r020B"    0 " invalid " 
+           "16r020C"    0 " invalid " 
+           "16r020D"    0 " invalid " 
+           "16r020E"    0 " invalid " 
+           "16r020F"    0 " invalid " 
+           "16r0210"    0 " invalid " 
+           "16r0211"    0 " invalid " 
+           "16r0212"    0 " invalid " 
+           "16r0213"    0 " invalid " 
+           "16r0214"    0 " invalid " 
+           "16r0215"    0 " invalid " 
+           "16r0216"    0 " invalid " 
+           "16r0217"    0 " invalid " 
+           "16r0218"    0 " invalid " 
+           "16r0219"    0 " invalid " 
+           "16r021A"    0 " invalid " 
+           "16r021B"    0 " invalid " 
+           "16r021C"    0 " invalid " 
+           "16r021D"    0 " invalid " 
+           "16r021E"    0 " invalid " 
+           "16r021F"    0 " invalid " 
+           "16r0220"    0 " invalid " 
+           "16r0221"    0 " invalid " 
+           "16r0222"    0 " invalid " 
+           "16r0223"    0 " invalid " 
+           "16r0224"    0 " invalid " 
+           "16r0225"    0 " invalid " 
+           "16r0226"    0 " invalid " 
+           "16r0227"    0 " invalid " 
+           "16r0228"    0 " invalid " 
+           "16r0229"    0 " invalid " 
+           "16r022A"    0 " invalid " 
+           "16r022B"    0 " invalid " 
+           "16r022C"    0 " invalid " 
+           "16r022D"    0 " invalid " 
+           "16r022E"    0 " invalid " 
+           "16r022F"    0 " invalid " 
+           "16r0230"    0 " invalid " 
+           "16r0231"    0 " invalid " 
+           "16r0232"    0 " invalid " 
+           "16r0233"    0 " invalid " 
+           "16r0234"    0 " invalid " 
+           "16r0235"    0 " invalid " 
+           "16r0236"    0 " invalid " 
+           "16r0237"    0 " invalid " 
+           "16r0238"    0 " invalid " 
+           "16r0239"    0 " invalid " 
+           "16r023A"    0 " invalid " 
+           "16r023B"    0 " invalid " 
+           "16r023C"    0 " invalid " 
+           "16r023D"    0 " invalid " 
+           "16r023E"    0 " invalid " 
+           "16r023F"    0 " invalid " 
+           "16r0240"    0 " invalid " 
+           "16r0241"    0 " invalid " 
+           "16r0242"    0 " invalid " 
+           "16r0243"    0 " invalid " 
+           "16r0244"    0 " invalid " 
+           "16r0245"    0 " invalid " 
+           "16r0246"    0 " invalid " 
+           "16r0247"    0 " invalid " 
+           "16r0248"    0 " invalid " 
+           "16r0249"    0 " invalid " 
+           "16r024A"    0 " invalid " 
+           "16r024B"    0 " invalid " 
+           "16r024C"    0 " invalid " 
+           "16r024D"    0 " invalid " 
+           "16r024E"    0 " invalid " 
+           "16r024F"    0 " invalid " 
+           "16r0250"    0 " invalid " 
+           "16r0251"    0 " invalid " 
+           "16r0252"    0 " invalid " 
+           "16r0253"    0 " invalid " 
+           "16r0254"    0 " invalid " 
+           "16r0255"    0 " invalid " 
+           "16r0256"    0 " invalid " 
+           "16r0257"    0 " invalid " 
+           "16r0258"    0 " invalid " 
+           "16r0259"    0 " invalid " 
+           "16r025A"    0 " invalid " 
+           "16r025B"    0 " invalid " 
+           "16r025C"    0 " invalid " 
+           "16r025D"    0 " invalid " 
+           "16r025E"    0 " invalid " 
+           "16r025F"    0 " invalid " 
+           "16r0260"    0 " invalid " 
+           "16r0261"    0 " invalid " 
+           "16r0262"    0 " invalid " 
+           "16r0263"    0 " invalid " 
+           "16r0264"    0 " invalid " 
+           "16r0265"    0 " invalid " 
+           "16r0266"    0 " invalid " 
+           "16r0267"    0 " invalid " 
+           "16r0268"    0 " invalid " 
+           "16r0269"    0 " invalid " 
+           "16r026A"    0 " invalid " 
+           "16r026B"    0 " invalid " 
+           "16r026C"    0 " invalid " 
+           "16r026D"    0 " invalid " 
+           "16r026E"    0 " invalid " 
+           "16r026F"    0 " invalid " 
+           "16r0270"    0 " invalid " 
+           "16r0271"    0 " invalid " 
+           "16r0272"    0 " invalid " 
+           "16r0273"    0 " invalid " 
+           "16r0274"    0 " invalid " 
+           "16r0275"    0 " invalid " 
+           "16r0276"    0 " invalid " 
+           "16r0277"    0 " invalid " 
+           "16r0278"    0 " invalid " 
+           "16r0279"    0 " invalid " 
+           "16r027A"    0 " invalid " 
+           "16r027B"    0 " invalid " 
+           "16r027C"    0 " invalid " 
+           "16r027D"    0 " invalid " 
+           "16r027E"    0 " invalid " 
+           "16r027F"    0 " invalid " 
+           "16r0280"    0 " invalid " 
+           "16r0281"    0 " invalid " 
+           "16r0282"    0 " invalid " 
+           "16r0283"    0 " invalid " 
+           "16r0284"    0 " invalid " 
+           "16r0285"    0 " invalid " 
+           "16r0286"    0 " invalid " 
+           "16r0287"    0 " invalid " 
+           "16r0288"    0 " invalid " 
+           "16r0289"    0 " invalid " 
+           "16r028A"    0 " invalid " 
+           "16r028B"    0 " invalid " 
+           "16r028C"    0 " invalid " 
+           "16r028D"    0 " invalid " 
+           "16r028E"    0 " invalid " 
+           "16r028F"    0 " invalid " 
+           "16r0290"    0 " invalid " 
+           "16r0291"    0 " invalid " 
+           "16r0292"    0 " invalid " 
+           "16r0293"    0 " invalid " 
+           "16r0294"    0 " invalid " 
+           "16r0295"    0 " invalid " 
+           "16r0296"    0 " invalid " 
+           "16r0297"    0 " invalid " 
+           "16r0298"    0 " invalid " 
+           "16r0299"    0 " invalid " 
+           "16r029A"    0 " invalid " 
+           "16r029B"    0 " invalid " 
+           "16r029C"    0 " invalid " 
+           "16r029D"    0 " invalid " 
+           "16r029E"    0 " invalid " 
+           "16r029F"    0 " invalid " 
+           "16r02A0"    0 " invalid " 
+           "16r02A1"    0 " invalid " 
+           "16r02A2"    0 " invalid " 
+           "16r02A3"    0 " invalid " 
+           "16r02A4"    0 " invalid " 
+           "16r02A5"    0 " invalid " 
+           "16r02A6"    0 " invalid " 
+           "16r02A7"    0 " invalid " 
+           "16r02A8"    0 " invalid " 
+           "16r02A9"    0 " invalid " 
+           "16r02AA"    0 " invalid " 
+           "16r02AB"    0 " invalid " 
+           "16r02AC"    0 " invalid " 
+           "16r02AD"    0 " invalid " 
+           "16r02AE"    0 " invalid " 
+           "16r02AF"    0 " invalid " 
+           "16r02B0"    0 " invalid " 
+           "16r02B1"    0 " invalid " 
+           "16r02B2"    0 " invalid " 
+           "16r02B3"    0 " invalid " 
+           "16r02B4"    0 " invalid " 
+           "16r02B5"    0 " invalid " 
+           "16r02B6"    0 " invalid " 
+           "16r02B7"    0 " invalid " 
+           "16r02B8"    0 " invalid " 
+           "16r02B9"    0 " invalid " 
+           "16r02BA"    0 " invalid " 
+           "16r02BB"    0 " invalid " 
+           "16r02BC"    0 " invalid " 
+           "16r02BD"    0 " invalid " 
+           "16r02BE"    0 " invalid " 
+           "16r02BF"    0 " invalid " 
+           "16r02C0"    0 " invalid " 
+           "16r02C1"    0 " invalid " 
+           "16r02C2"    0 " invalid " 
+           "16r02C3"    0 " invalid " 
+           "16r02C4"    0 " invalid " 
+           "16r02C5"    0 " invalid " 
+           "16r02C6"    0 " invalid " 
+           "16r02C7"    0 " invalid " 
+           "16r02C8"    0 " invalid " 
+           "16r02C9"    0 " invalid " 
+           "16r02CA"    0 " invalid " 
+           "16r02CB"    0 " invalid " 
+           "16r02CC"    0 " invalid " 
+           "16r02CD"    0 " invalid " 
+           "16r02CE"    0 " invalid " 
+           "16r02CF"    0 " invalid " 
+           "16r02D0"    0 " invalid " 
+           "16r02D1"    0 " invalid " 
+           "16r02D2"    0 " invalid " 
+           "16r02D3"    0 " invalid " 
+           "16r02D4"    0 " invalid " 
+           "16r02D5"    0 " invalid " 
+           "16r02D6"    0 " invalid " 
+           "16r02D7"    0 " invalid " 
+           "16r02D8"    0 " invalid " 
+           "16r02D9"    0 " invalid " 
+           "16r02DA"    0 " invalid " 
+           "16r02DB"    0 " invalid " 
+           "16r02DC"    0 " invalid " 
+           "16r02DD"    0 " invalid " 
+           "16r02DE"    0 " invalid " 
+           "16r02DF"    0 " invalid " 
+           "16r02E0"    0 " invalid " 
+           "16r02E1"    0 " invalid " 
+           "16r02E2"    0 " invalid " 
+           "16r02E3"    0 " invalid " 
+           "16r02E4"    0 " invalid " 
+           "16r02E5"    0 " invalid " 
+           "16r02E6"    0 " invalid " 
+           "16r02E7"    0 " invalid " 
+           "16r02E8"    0 " invalid " 
+           "16r02E9"    0 " invalid " 
+           "16r02EA"    0 " invalid " 
+           "16r02EB"    0 " invalid " 
+           "16r02EC"    0 " invalid " 
+           "16r02ED"    0 " invalid " 
+           "16r02EE"    0 " invalid " 
+           "16r02EF"    0 " invalid " 
+           "16r02F0"    0 " invalid " 
+           "16r02F1"    0 " invalid " 
+           "16r02F2"    0 " invalid " 
+           "16r02F3"    0 " invalid " 
+           "16r02F4"    0 " invalid " 
+           "16r02F5"    0 " invalid " 
+           "16r02F6"    0 " invalid " 
+           "16r02F7"    0 " invalid " 
+           "16r02F8"    0 " invalid " 
+           "16r02F9"    0 " invalid " 
+           "16r02FA"    0 " invalid " 
+           "16r02FB"    0 " invalid " 
+           "16r02FC"    0 " invalid " 
+           "16r02FD"    0 " invalid " 
+           "16r02FE"    0 " invalid " 
+           "16r02FF"    0 " invalid " 
+           "16r0300"    0 " invalid " 
+           "16r0301"    0 " invalid " 
+           "16r0302"    0 " invalid " 
+           "16r0303"    0 " invalid " 
+           "16r0304"    0 " invalid " 
+           "16r0305"    0 " invalid " 
+           "16r0306"    0 " invalid " 
+           "16r0307"    0 " invalid " 
+           "16r0308"    0 " invalid " 
+           "16r0309"    0 " invalid " 
+           "16r030A"    0 " invalid " 
+           "16r030B"    0 " invalid " 
+           "16r030C"    0 " invalid " 
+           "16r030D"    0 " invalid " 
+           "16r030E"    0 " invalid " 
+           "16r030F"    0 " invalid " 
+           "16r0310"    0 " invalid " 
+           "16r0311"    0 " invalid " 
+           "16r0312"    0 " invalid " 
+           "16r0313"    0 " invalid " 
+           "16r0314"    0 " invalid " 
+           "16r0315"    0 " invalid " 
+           "16r0316"    0 " invalid " 
+           "16r0317"    0 " invalid " 
+           "16r0318"    0 " invalid " 
+           "16r0319"    0 " invalid " 
+           "16r031A"    0 " invalid " 
+           "16r031B"    0 " invalid " 
+           "16r031C"    0 " invalid " 
+           "16r031D"    0 " invalid " 
+           "16r031E"    0 " invalid " 
+           "16r031F"    0 " invalid " 
+           "16r0320"    0 " invalid " 
+           "16r0321"    0 " invalid " 
+           "16r0322"    0 " invalid " 
+           "16r0323"    0 " invalid " 
+           "16r0324"    0 " invalid " 
+           "16r0325"    0 " invalid " 
+           "16r0326"    0 " invalid " 
+           "16r0327"    0 " invalid " 
+           "16r0328"    0 " invalid " 
+           "16r0329"    0 " invalid " 
+           "16r032A"    0 " invalid " 
+           "16r032B"    0 " invalid " 
+           "16r032C"    0 " invalid " 
+           "16r032D"    0 " invalid " 
+           "16r032E"    0 " invalid " 
+           "16r032F"    0 " invalid " 
+           "16r0330"    0 " invalid " 
+           "16r0331"    0 " invalid " 
+           "16r0332"    0 " invalid " 
+           "16r0333"    0 " invalid " 
+           "16r0334"    0 " invalid " 
+           "16r0335"    0 " invalid " 
+           "16r0336"    0 " invalid " 
+           "16r0337"    0 " invalid " 
+           "16r0338"    0 " invalid " 
+           "16r0339"    0 " invalid " 
+           "16r033A"    0 " invalid " 
+           "16r033B"    0 " invalid " 
+           "16r033C"    0 " invalid " 
+           "16r033D"    0 " invalid " 
+           "16r033E"    0 " invalid " 
+           "16r033F"    0 " invalid " 
+           "16r0340"    0 " invalid " 
+           "16r0341"    0 " invalid " 
+           "16r0342"    0 " invalid " 
+           "16r0343"    0 " invalid " 
+           "16r0344"    0 " invalid " 
+           "16r0345"    0 " invalid " 
+           "16r0346"    0 " invalid " 
+           "16r0347"    0 " invalid " 
+           "16r0348"    0 " invalid " 
+           "16r0349"    0 " invalid " 
+           "16r034A"    0 " invalid " 
+           "16r034B"    0 " invalid " 
+           "16r034C"    0 " invalid " 
+           "16r034D"    0 " invalid " 
+           "16r034E"    0 " invalid " 
+           "16r034F"    0 " invalid " 
+           "16r0350"    0 " invalid " 
+           "16r0351"    0 " invalid " 
+           "16r0352"    0 " invalid " 
+           "16r0353"    0 " invalid " 
+           "16r0354"    0 " invalid " 
+           "16r0355"    0 " invalid " 
+           "16r0356"    0 " invalid " 
+           "16r0357"    0 " invalid " 
+           "16r0358"    0 " invalid " 
+           "16r0359"    0 " invalid " 
+           "16r035A"    0 " invalid " 
+           "16r035B"    0 " invalid " 
+           "16r035C"    0 " invalid " 
+           "16r035D"    0 " invalid " 
+           "16r035E"    0 " invalid " 
+           "16r035F"    0 " invalid " 
+           "16r0360"    0 " invalid " 
+           "16r0361"    0 " invalid " 
+           "16r0362"    0 " invalid " 
+           "16r0363"    0 " invalid " 
+           "16r0364"    0 " invalid " 
+           "16r0365"    0 " invalid " 
+           "16r0366"    0 " invalid " 
+           "16r0367"    0 " invalid " 
+           "16r0368"    0 " invalid " 
+           "16r0369"    0 " invalid " 
+           "16r036A"    0 " invalid " 
+           "16r036B"    0 " invalid " 
+           "16r036C"    0 " invalid " 
+           "16r036D"    0 " invalid " 
+           "16r036E"    0 " invalid " 
+           "16r036F"    0 " invalid " 
+           "16r0370"    0 " invalid " 
+           "16r0371"    0 " invalid " 
+           "16r0372"    0 " invalid " 
+           "16r0373"    0 " invalid " 
+           "16r0374"    0 " invalid " 
+           "16r0375"    0 " invalid " 
+           "16r0376"    0 " invalid " 
+           "16r0377"    0 " invalid " 
+           "16r0378"    0 " invalid " 
+           "16r0379"    0 " invalid " 
+           "16r037A"    0 " invalid " 
+           "16r037B"    0 " invalid " 
+           "16r037C"    0 " invalid " 
+           "16r037D"    0 " invalid " 
+           "16r037E"    0 " invalid " 
+           "16r037F"    0 " invalid " 
+           "16r0380"    0 " invalid " 
+           "16r0381"    0 " invalid " 
+           "16r0382"    0 " invalid " 
+           "16r0383"    0 " invalid " 
+           "16r0384"    0 " invalid " 
+           "16r0385"    0 " invalid " 
+           "16r0386"    0 " invalid " 
+           "16r0387"    0 " invalid " 
+           "16r0388"    0 " invalid " 
+           "16r0389"    0 " invalid " 
+           "16r038A"    0 " invalid " 
+           "16r038B"    0 " invalid " 
+           "16r038C"    0 " invalid " 
+           "16r038D"    0 " invalid " 
+           "16r038E"    0 " invalid " 
+           "16r038F"    0 " invalid " 
+           "16r0390"    0 " invalid " 
+           "16r0391"    0 " invalid " 
+           "16r0392"    0 " invalid " 
+           "16r0393"    0 " invalid " 
+           "16r0394"    0 " invalid " 
+           "16r0395"    0 " invalid " 
+           "16r0396"    0 " invalid " 
+           "16r0397"    0 " invalid " 
+           "16r0398"    0 " invalid " 
+           "16r0399"    0 " invalid " 
+           "16r039A"    0 " invalid " 
+           "16r039B"    0 " invalid " 
+           "16r039C"    0 " invalid " 
+           "16r039D"    0 " invalid " 
+           "16r039E"    0 " invalid " 
+           "16r039F"    0 " invalid " 
+           "16r03A0"    0 " invalid " 
+           "16r03A1"    0 " invalid " 
+           "16r03A2"    0 " invalid " 
+           "16r03A3"    0 " invalid " 
+           "16r03A4"    0 " invalid " 
+           "16r03A5"    0 " invalid " 
+           "16r03A6"    0 " invalid " 
+           "16r03A7"    0 " invalid " 
+           "16r03A8"    0 " invalid " 
+           "16r03A9"    0 " invalid " 
+           "16r03AA"    0 " invalid " 
+           "16r03AB"    0 " invalid " 
+           "16r03AC"    0 " invalid " 
+           "16r03AD"    0 " invalid " 
+           "16r03AE"    0 " invalid " 
+           "16r03AF"    0 " invalid " 
+           "16r03B0"    0 " invalid " 
+           "16r03B1"    0 " invalid " 
+           "16r03B2"    0 " invalid " 
+           "16r03B3"    0 " invalid " 
+           "16r03B4"    0 " invalid " 
+           "16r03B5"    0 " invalid " 
+           "16r03B6"    0 " invalid " 
+           "16r03B7"    0 " invalid " 
+           "16r03B8"    0 " invalid " 
+           "16r03B9"    0 " invalid " 
+           "16r03BA"    0 " invalid " 
+           "16r03BB"    0 " invalid " 
+           "16r03BC"    0 " invalid " 
+           "16r03BD"    0 " invalid " 
+           "16r03BE"    0 " invalid " 
+           "16r03BF"    0 " invalid " 
+           "16r03C0"    0 " invalid " 
+           "16r03C1"    0 " invalid " 
+           "16r03C2"    0 " invalid " 
+           "16r03C3"    0 " invalid " 
+           "16r03C4"    0 " invalid " 
+           "16r03C5"    0 " invalid " 
+           "16r03C6"    0 " invalid " 
+           "16r03C7"    0 " invalid " 
+           "16r03C8"    0 " invalid " 
+           "16r03C9"    0 " invalid " 
+           "16r03CA"    0 " invalid " 
+           "16r03CB"    0 " invalid " 
+           "16r03CC"    0 " invalid " 
+           "16r03CD"    0 " invalid " 
+           "16r03CE"    0 " invalid " 
+           "16r03CF"    0 " invalid " 
+           "16r03D0"    0 " invalid " 
+           "16r03D1"    0 " invalid " 
+           "16r03D2"    0 " invalid " 
+           "16r03D3"    0 " invalid " 
+           "16r03D4"    0 " invalid " 
+           "16r03D5"    0 " invalid " 
+           "16r03D6"    0 " invalid " 
+           "16r03D7"    0 " invalid " 
+           "16r03D8"    0 " invalid " 
+           "16r03D9"    0 " invalid " 
+           "16r03DA"    0 " invalid " 
+           "16r03DB"    0 " invalid " 
+           "16r03DC"    0 " invalid " 
+           "16r03DD"    0 " invalid " 
+           "16r03DE"    0 " invalid " 
+           "16r03DF"    0 " invalid " 
+           "16r03E0"    0 " invalid " 
+           "16r03E1"    0 " invalid " 
+           "16r03E2"    0 " invalid " 
+           "16r03E3"    0 " invalid " 
+           "16r03E4"    0 " invalid " 
+           "16r03E5"    0 " invalid " 
+           "16r03E6"    0 " invalid " 
+           "16r03E7"    0 " invalid " 
+           "16r03E8"    0 " invalid " 
+           "16r03E9"    0 " invalid " 
+           "16r03EA"    0 " invalid " 
+           "16r03EB"    0 " invalid " 
+           "16r03EC"    0 " invalid " 
+           "16r03ED"    0 " invalid " 
+           "16r03EE"    0 " invalid " 
+           "16r03EF"    0 " invalid " 
+           "16r03F0"    0 " invalid " 
+           "16r03F1"    0 " invalid " 
+           "16r03F2"    0 " invalid " 
+           "16r03F3"    0 " invalid " 
+           "16r03F4"    0 " invalid " 
+           "16r03F5"    0 " invalid " 
+           "16r03F6"    0 " invalid " 
+           "16r03F7"    0 " invalid " 
+           "16r03F8"    0 " invalid " 
+           "16r03F9"    0 " invalid " 
+           "16r03FA"    0 " invalid " 
+           "16r03FB"    0 " invalid " 
+           "16r03FC"    0 " invalid " 
+           "16r03FD"    0 " invalid " 
+           "16r03FE"    0 " invalid " 
+           "16r03FF"    0 " invalid " 
+           "16r0400"    0 " invalid " 
+           "16r0401"    0 " invalid " 
+           "16r0402"    0 " invalid " 
+           "16r0403"    0 " invalid " 
+           "16r0404"    0 " invalid " 
+           "16r0405"    0 " invalid " 
+           "16r0406"    0 " invalid " 
+           "16r0407"    0 " invalid " 
+           "16r0408"    0 " invalid " 
+           "16r0409"    0 " invalid " 
+           "16r040A"    0 " invalid " 
+           "16r040B"    0 " invalid " 
+           "16r040C"    0 " invalid " 
+           "16r040D"    0 " invalid " 
+           "16r040E"    0 " invalid " 
+           "16r040F"    0 " invalid " 
+           "16r0410"    0 " invalid " 
+           "16r0411"    0 " invalid " 
+           "16r0412"    0 " invalid " 
+           "16r0413"    0 " invalid " 
+           "16r0414"    0 " invalid " 
+           "16r0415"    0 " invalid " 
+           "16r0416"    0 " invalid " 
+           "16r0417"    0 " invalid " 
+           "16r0418"    0 " invalid " 
+           "16r0419"    0 " invalid " 
+           "16r041A"    0 " invalid " 
+           "16r041B"    0 " invalid " 
+           "16r041C"    0 " invalid " 
+           "16r041D"    0 " invalid " 
+           "16r041E"    0 " invalid " 
+           "16r041F"    0 " invalid " 
+           "16r0420"    0 " invalid " 
+           "16r0421"    0 " invalid " 
+           "16r0422"    0 " invalid " 
+           "16r0423"    0 " invalid " 
+           "16r0424"    0 " invalid " 
+           "16r0425"    0 " invalid " 
+           "16r0426"    0 " invalid " 
+           "16r0427"    0 " invalid " 
+           "16r0428"    0 " invalid " 
+           "16r0429"    0 " invalid " 
+           "16r042A"    0 " invalid " 
+           "16r042B"    0 " invalid " 
+           "16r042C"    0 " invalid " 
+           "16r042D"    0 " invalid " 
+           "16r042E"    0 " invalid " 
+           "16r042F"    0 " invalid " 
+           "16r0430"    0 " invalid " 
+           "16r0431"    0 " invalid " 
+           "16r0432"    0 " invalid " 
+           "16r0433"    0 " invalid " 
+           "16r0434"    0 " invalid " 
+           "16r0435"    0 " invalid " 
+           "16r0436"    0 " invalid " 
+           "16r0437"    0 " invalid " 
+           "16r0438"    0 " invalid " 
+           "16r0439"    0 " invalid " 
+           "16r043A"    0 " invalid " 
+           "16r043B"    0 " invalid " 
+           "16r043C"    0 " invalid " 
+           "16r043D"    0 " invalid " 
+           "16r043E"    0 " invalid " 
+           "16r043F"    0 " invalid " 
+           "16r0440"    0 " invalid " 
+           "16r0441"    0 " invalid " 
+           "16r0442"    0 " invalid " 
+           "16r0443"    0 " invalid " 
+           "16r0444"    0 " invalid " 
+           "16r0445"    0 " invalid " 
+           "16r0446"    0 " invalid " 
+           "16r0447"    0 " invalid " 
+           "16r0448"    0 " invalid " 
+           "16r0449"    0 " invalid " 
+           "16r044A"    0 " invalid " 
+           "16r044B"    0 " invalid " 
+           "16r044C"    0 " invalid " 
+           "16r044D"    0 " invalid " 
+           "16r044E"    0 " invalid " 
+           "16r044F"    0 " invalid " 
+           "16r0450"    0 " invalid " 
+           "16r0451"    0 " invalid " 
+           "16r0452"    0 " invalid " 
+           "16r0453"    0 " invalid " 
+           "16r0454"    0 " invalid " 
+           "16r0455"    0 " invalid " 
+           "16r0456"    0 " invalid " 
+           "16r0457"    0 " invalid " 
+           "16r0458"    0 " invalid " 
+           "16r0459"    0 " invalid " 
+           "16r045A"    0 " invalid " 
+           "16r045B"    0 " invalid " 
+           "16r045C"    0 " invalid " 
+           "16r045D"    0 " invalid " 
+           "16r045E"    0 " invalid " 
+           "16r045F"    0 " invalid " 
+           "16r0460"    0 " invalid " 
+           "16r0461"    0 " invalid " 
+           "16r0462"    0 " invalid " 
+           "16r0463"    0 " invalid " 
+           "16r0464"    0 " invalid " 
+           "16r0465"    0 " invalid " 
+           "16r0466"    0 " invalid " 
+           "16r0467"    0 " invalid " 
+           "16r0468"    0 " invalid " 
+           "16r0469"    0 " invalid " 
+           "16r046A"    0 " invalid " 
+           "16r046B"    0 " invalid " 
+           "16r046C"    0 " invalid " 
+           "16r046D"    0 " invalid " 
+           "16r046E"    0 " invalid " 
+           "16r046F"    0 " invalid " 
+           "16r0470"    0 " invalid " 
+           "16r0471"    0 " invalid " 
+           "16r0472"    0 " invalid " 
+           "16r0473"    0 " invalid " 
+           "16r0474"    0 " invalid " 
+           "16r0475"    0 " invalid " 
+           "16r0476"    0 " invalid " 
+           "16r0477"    0 " invalid " 
+           "16r0478"    0 " invalid " 
+           "16r0479"    0 " invalid " 
+           "16r047A"    0 " invalid " 
+           "16r047B"    0 " invalid " 
+           "16r047C"    0 " invalid " 
+           "16r047D"    0 " invalid " 
+           "16r047E"    0 " invalid " 
+           "16r047F"    0 " invalid " 
+           "16r0480"    0 " invalid " 
+           "16r0481"    0 " invalid " 
+           "16r0482"    0 " invalid " 
+           "16r0483"    0 " invalid " 
+           "16r0484"    0 " invalid " 
+           "16r0485"    0 " invalid " 
+           "16r0486"    0 " invalid " 
+           "16r0487"    0 " invalid " 
+           "16r0488"    0 " invalid " 
+           "16r0489"    0 " invalid " 
+           "16r048A"    0 " invalid " 
+           "16r048B"    0 " invalid " 
+           "16r048C"    0 " invalid " 
+           "16r048D"    0 " invalid " 
+           "16r048E"    0 " invalid " 
+           "16r048F"    0 " invalid " 
+           "16r0490"    0 " invalid " 
+           "16r0491"    0 " invalid " 
+           "16r0492"    0 " invalid " 
+           "16r0493"    0 " invalid " 
+           "16r0494"    0 " invalid " 
+           "16r0495"    0 " invalid " 
+           "16r0496"    0 " invalid " 
+           "16r0497"    0 " invalid " 
+           "16r0498"    0 " invalid " 
+           "16r0499"    0 " invalid " 
+           "16r049A"    0 " invalid " 
+           "16r049B"    0 " invalid " 
+           "16r049C"    0 " invalid " 
+           "16r049D"    0 " invalid " 
+           "16r049E"    0 " invalid " 
+           "16r049F"    0 " invalid " 
+           "16r04A0"    0 " invalid " 
+           "16r04A1"    0 " invalid " 
+           "16r04A2"    0 " invalid " 
+           "16r04A3"    0 " invalid " 
+           "16r04A4"    0 " invalid " 
+           "16r04A5"    0 " invalid " 
+           "16r04A6"    0 " invalid " 
+           "16r04A7"    0 " invalid " 
+           "16r04A8"    0 " invalid " 
+           "16r04A9"    0 " invalid " 
+           "16r04AA"    0 " invalid " 
+           "16r04AB"    0 " invalid " 
+           "16r04AC"    0 " invalid " 
+           "16r04AD"    0 " invalid " 
+           "16r04AE"    0 " invalid " 
+           "16r04AF"    0 " invalid " 
+           "16r04B0"    0 " invalid " 
+           "16r04B1"    0 " invalid " 
+           "16r04B2"    0 " invalid " 
+           "16r04B3"    0 " invalid " 
+           "16r04B4"    0 " invalid " 
+           "16r04B5"    0 " invalid " 
+           "16r04B6"    0 " invalid " 
+           "16r04B7"    0 " invalid " 
+           "16r04B8"    0 " invalid " 
+           "16r04B9"    0 " invalid " 
+           "16r04BA"    0 " invalid " 
+           "16r04BB"    0 " invalid " 
+           "16r04BC"    0 " invalid " 
+           "16r04BD"    0 " invalid " 
+           "16r04BE"    0 " invalid " 
+           "16r04BF"    0 " invalid " 
+           "16r04C0"    0 " invalid " 
+           "16r04C1"    0 " invalid " 
+           "16r04C2"    0 " invalid " 
+           "16r04C3"    0 " invalid " 
+           "16r04C4"    0 " invalid " 
+           "16r04C5"    0 " invalid " 
+           "16r04C6"    0 " invalid " 
+           "16r04C7"    0 " invalid " 
+           "16r04C8"    0 " invalid " 
+           "16r04C9"    0 " invalid " 
+           "16r04CA"    0 " invalid " 
+           "16r04CB"    0 " invalid " 
+           "16r04CC"    0 " invalid " 
+           "16r04CD"    0 " invalid " 
+           "16r04CE"    0 " invalid " 
+           "16r04CF"    0 " invalid " 
+           "16r04D0"    0 " invalid " 
+           "16r04D1"    0 " invalid " 
+           "16r04D2"    0 " invalid " 
+           "16r04D3"    0 " invalid " 
+           "16r04D4"    0 " invalid " 
+           "16r04D5"    0 " invalid " 
+           "16r04D6"    0 " invalid " 
+           "16r04D7"    0 " invalid " 
+           "16r04D8"    0 " invalid " 
+           "16r04D9"    0 " invalid " 
+           "16r04DA"    0 " invalid " 
+           "16r04DB"    0 " invalid " 
+           "16r04DC"    0 " invalid " 
+           "16r04DD"    0 " invalid " 
+           "16r04DE"    0 " invalid " 
+           "16r04DF"    0 " invalid " 
+           "16r04E0"    0 " invalid " 
+           "16r04E1"    0 " invalid " 
+           "16r04E2"    0 " invalid " 
+           "16r04E3"    0 " invalid " 
+           "16r04E4"    0 " invalid " 
+           "16r04E5"    0 " invalid " 
+           "16r04E6"    0 " invalid " 
+           "16r04E7"    0 " invalid " 
+           "16r04E8"    0 " invalid " 
+           "16r04E9"    0 " invalid " 
+           "16r04EA"    0 " invalid " 
+           "16r04EB"    0 " invalid " 
+           "16r04EC"    0 " invalid " 
+           "16r04ED"    0 " invalid " 
+           "16r04EE"    0 " invalid " 
+           "16r04EF"    0 " invalid " 
+           "16r04F0"    0 " invalid " 
+           "16r04F1"    0 " invalid " 
+           "16r04F2"    0 " invalid " 
+           "16r04F3"    0 " invalid " 
+           "16r04F4"    0 " invalid " 
+           "16r04F5"    0 " invalid " 
+           "16r04F6"    0 " invalid " 
+           "16r04F7"    0 " invalid " 
+           "16r04F8"    0 " invalid " 
+           "16r04F9"    0 " invalid " 
+           "16r04FA"    0 " invalid " 
+           "16r04FB"    0 " invalid " 
+           "16r04FC"    0 " invalid " 
+           "16r04FD"    0 " invalid " 
+           "16r04FE"    0 " invalid " 
+           "16r04FF"    0 " invalid " 
+           "16r0500"    0 " invalid " 
+           "16r0501"    0 " invalid " 
+           "16r0502"    0 " invalid " 
+           "16r0503"    0 " invalid " 
+           "16r0504"    0 " invalid " 
+           "16r0505"    0 " invalid " 
+           "16r0506"    0 " invalid " 
+           "16r0507"    0 " invalid " 
+           "16r0508"    0 " invalid " 
+           "16r0509"    0 " invalid " 
+           "16r050A"    0 " invalid " 
+           "16r050B"    0 " invalid " 
+           "16r050C"    0 " invalid " 
+           "16r050D"    0 " invalid " 
+           "16r050E"    0 " invalid " 
+           "16r050F"    0 " invalid " 
+           "16r0510"    0 " invalid " 
+           "16r0511"    0 " invalid " 
+           "16r0512"    0 " invalid " 
+           "16r0513"    0 " invalid " 
+           "16r0514"    0 " invalid " 
+           "16r0515"    0 " invalid " 
+           "16r0516"    0 " invalid " 
+           "16r0517"    0 " invalid " 
+           "16r0518"    0 " invalid " 
+           "16r0519"    0 " invalid " 
+           "16r051A"    0 " invalid " 
+           "16r051B"    0 " invalid " 
+           "16r051C"    0 " invalid " 
+           "16r051D"    0 " invalid " 
+           "16r051E"    0 " invalid " 
+           "16r051F"    0 " invalid " 
+           "16r0520"    0 " invalid " 
+           "16r0521"    0 " invalid " 
+           "16r0522"    0 " invalid " 
+           "16r0523"    0 " invalid " 
+           "16r0524"    0 " invalid " 
+           "16r0525"    0 " invalid " 
+           "16r0526"    0 " invalid " 
+           "16r0527"    0 " invalid " 
+           "16r0528"    0 " invalid " 
+           "16r0529"    0 " invalid " 
+           "16r052A"    0 " invalid " 
+           "16r052B"    0 " invalid " 
+           "16r052C"    0 " invalid " 
+           "16r052D"    0 " invalid " 
+           "16r052E"    0 " invalid " 
+           "16r052F"    0 " invalid " 
+           "16r0530"    0 " invalid " 
+           "16r0531"    0 " invalid " 
+           "16r0532"    0 " invalid " 
+           "16r0533"    0 " invalid " 
+           "16r0534"    0 " invalid " 
+           "16r0535"    0 " invalid " 
+           "16r0536"    0 " invalid " 
+           "16r0537"    0 " invalid " 
+           "16r0538"    0 " invalid " 
+           "16r0539"    0 " invalid " 
+           "16r053A"    0 " invalid " 
+           "16r053B"    0 " invalid " 
+           "16r053C"    0 " invalid " 
+           "16r053D"    0 " invalid " 
+           "16r053E"    0 " invalid " 
+           "16r053F"    0 " invalid " 
+           "16r0540"    0 " invalid " 
+           "16r0541"    0 " invalid " 
+           "16r0542"    0 " invalid " 
+           "16r0543"    0 " invalid " 
+           "16r0544"    0 " invalid " 
+           "16r0545"    0 " invalid " 
+           "16r0546"    0 " invalid " 
+           "16r0547"    0 " invalid " 
+           "16r0548"    0 " invalid " 
+           "16r0549"    0 " invalid " 
+           "16r054A"    0 " invalid " 
+           "16r054B"    0 " invalid " 
+           "16r054C"    0 " invalid " 
+           "16r054D"    0 " invalid " 
+           "16r054E"    0 " invalid " 
+           "16r054F"    0 " invalid " 
+           "16r0550"    0 " invalid " 
+           "16r0551"    0 " invalid " 
+           "16r0552"    0 " invalid " 
+           "16r0553"    0 " invalid " 
+           "16r0554"    0 " invalid " 
+           "16r0555"    0 " invalid " 
+           "16r0556"    0 " invalid " 
+           "16r0557"    0 " invalid " 
+           "16r0558"    0 " invalid " 
+           "16r0559"    0 " invalid " 
+           "16r055A"    0 " invalid " 
+           "16r055B"    0 " invalid " 
+           "16r055C"    0 " invalid " 
+           "16r055D"    0 " invalid " 
+           "16r055E"    0 " invalid " 
+           "16r055F"    0 " invalid " 
+           "16r0560"    0 " invalid " 
+           "16r0561"    0 " invalid " 
+           "16r0562"    0 " invalid " 
+           "16r0563"    0 " invalid " 
+           "16r0564"    0 " invalid " 
+           "16r0565"    0 " invalid " 
+           "16r0566"    0 " invalid " 
+           "16r0567"    0 " invalid " 
+           "16r0568"    0 " invalid " 
+           "16r0569"    0 " invalid " 
+           "16r056A"    0 " invalid " 
+           "16r056B"    0 " invalid " 
+           "16r056C"    0 " invalid " 
+           "16r056D"    0 " invalid " 
+           "16r056E"    0 " invalid " 
+           "16r056F"    0 " invalid " 
+           "16r0570"    0 " invalid " 
+           "16r0571"    0 " invalid " 
+           "16r0572"    0 " invalid " 
+           "16r0573"    0 " invalid " 
+           "16r0574"    0 " invalid " 
+           "16r0575"    0 " invalid " 
+           "16r0576"    0 " invalid " 
+           "16r0577"    0 " invalid " 
+           "16r0578"    0 " invalid " 
+           "16r0579"    0 " invalid " 
+           "16r057A"    0 " invalid " 
+           "16r057B"    0 " invalid " 
+           "16r057C"    0 " invalid " 
+           "16r057D"    0 " invalid " 
+           "16r057E"    0 " invalid " 
+           "16r057F"    0 " invalid " 
+           "16r0580"    0 " invalid " 
+           "16r0581"    0 " invalid " 
+           "16r0582"    0 " invalid " 
+           "16r0583"    0 " invalid " 
+           "16r0584"    0 " invalid " 
+           "16r0585"    0 " invalid " 
+           "16r0586"    0 " invalid " 
+           "16r0587"    0 " invalid " 
+           "16r0588"    0 " invalid " 
+           "16r0589"    0 " invalid " 
+           "16r058A"    0 " invalid " 
+           "16r058B"    0 " invalid " 
+           "16r058C"    0 " invalid " 
+           "16r058D"    0 " invalid " 
+           "16r058E"    0 " invalid " 
+           "16r058F"    0 " invalid " 
+           "16r0590"    0 " invalid " 
+           "16r0591"    0 " invalid " 
+           "16r0592"    0 " invalid " 
+           "16r0593"    0 " invalid " 
+           "16r0594"    0 " invalid " 
+           "16r0595"    0 " invalid " 
+           "16r0596"    0 " invalid " 
+           "16r0597"    0 " invalid " 
+           "16r0598"    0 " invalid " 
+           "16r0599"    0 " invalid " 
+           "16r059A"    0 " invalid " 
+           "16r059B"    0 " invalid " 
+           "16r059C"    0 " invalid " 
+           "16r059D"    0 " invalid " 
+           "16r059E"    0 " invalid " 
+           "16r059F"    0 " invalid " 
+           "16r05A0"    0 " invalid " 
+           "16r05A1"    0 " invalid " 
+           "16r05A2"    0 " invalid " 
+           "16r05A3"    0 " invalid " 
+           "16r05A4"    0 " invalid " 
+           "16r05A5"    0 " invalid " 
+           "16r05A6"    0 " invalid " 
+           "16r05A7"    0 " invalid " 
+           "16r05A8"    0 " invalid " 
+           "16r05A9"    0 " invalid " 
+           "16r05AA"    0 " invalid " 
+           "16r05AB"    0 " invalid " 
+           "16r05AC"    0 " invalid " 
+           "16r05AD"    0 " invalid " 
+           "16r05AE"    0 " invalid " 
+           "16r05AF"    0 " invalid " 
+           "16r05B0"    0 " invalid " 
+           "16r05B1"    0 " invalid " 
+           "16r05B2"    0 " invalid " 
+           "16r05B3"    0 " invalid " 
+           "16r05B4"    0 " invalid " 
+           "16r05B5"    0 " invalid " 
+           "16r05B6"    0 " invalid " 
+           "16r05B7"    0 " invalid " 
+           "16r05B8"    0 " invalid " 
+           "16r05B9"    0 " invalid " 
+           "16r05BA"    0 " invalid " 
+           "16r05BB"    0 " invalid " 
+           "16r05BC"    0 " invalid " 
+           "16r05BD"    0 " invalid " 
+           "16r05BE"    0 " invalid " 
+           "16r05BF"    0 " invalid " 
+           "16r05C0"    0 " invalid " 
+           "16r05C1"    0 " invalid " 
+           "16r05C2"    0 " invalid " 
+           "16r05C3"    0 " invalid " 
+           "16r05C4"    0 " invalid " 
+           "16r05C5"    0 " invalid " 
+           "16r05C6"    0 " invalid " 
+           "16r05C7"    0 " invalid " 
+           "16r05C8"    0 " invalid " 
+           "16r05C9"    0 " invalid " 
+           "16r05CA"    0 " invalid " 
+           "16r05CB"    0 " invalid " 
+           "16r05CC"    0 " invalid " 
+           "16r05CD"    0 " invalid " 
+           "16r05CE"    0 " invalid " 
+           "16r05CF"    0 " invalid " 
+           "16r05D0"    0 " invalid " 
+           "16r05D1"    0 " invalid " 
+           "16r05D2"    0 " invalid " 
+           "16r05D3"    0 " invalid " 
+           "16r05D4"    0 " invalid " 
+           "16r05D5"    0 " invalid " 
+           "16r05D6"    0 " invalid " 
+           "16r05D7"    0 " invalid " 
+           "16r05D8"    0 " invalid " 
+           "16r05D9"    0 " invalid " 
+           "16r05DA"    0 " invalid " 
+           "16r05DB"    0 " invalid " 
+           "16r05DC"    0 " invalid " 
+           "16r05DD"    0 " invalid " 
+           "16r05DE"    0 " invalid " 
+           "16r05DF"    0 " invalid " 
+           "16r05E0"    0 " invalid " 
+           "16r05E1"    0 " invalid " 
+           "16r05E2"    0 " invalid " 
+           "16r05E3"    0 " invalid " 
+           "16r05E4"    0 " invalid " 
+           "16r05E5"    0 " invalid " 
+           "16r05E6"    0 " invalid " 
+           "16r05E7"    0 " invalid " 
+           "16r05E8"    0 " invalid " 
+           "16r05E9"    0 " invalid " 
+           "16r05EA"    0 " invalid " 
+           "16r05EB"    0 " invalid " 
+           "16r05EC"    0 " invalid " 
+           "16r05ED"    0 " invalid " 
+           "16r05EE"    0 " invalid " 
+           "16r05EF"    0 " invalid " 
+           "16r05F0"    0 " invalid " 
+           "16r05F1"    0 " invalid " 
+           "16r05F2"    0 " invalid " 
+           "16r05F3"    0 " invalid " 
+           "16r05F4"    0 " invalid " 
+           "16r05F5"    0 " invalid " 
+           "16r05F6"    0 " invalid " 
+           "16r05F7"    0 " invalid " 
+           "16r05F8"    0 " invalid " 
+           "16r05F9"    0 " invalid " 
+           "16r05FA"    0 " invalid " 
+           "16r05FB"    0 " invalid " 
+           "16r05FC"    0 " invalid " 
+           "16r05FD"    0 " invalid " 
+           "16r05FE"    0 " invalid " 
+           "16r05FF"    0 " invalid " 
+           "16r0600"    0 " invalid " 
+           "16r0601"    0 " invalid " 
+           "16r0602"    0 " invalid " 
+           "16r0603"    0 " invalid " 
+           "16r0604"    0 " invalid " 
+           "16r0605"    0 " invalid " 
+           "16r0606"    0 " invalid " 
+           "16r0607"    0 " invalid " 
+           "16r0608"    0 " invalid " 
+           "16r0609"    0 " invalid " 
+           "16r060A"    0 " invalid " 
+           "16r060B"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    [
+    |t|
+    t := 
+#[
+       "16r060C"    16rAC " ARABIC COMMA " 
+       "16r060D"    16r00 " invalid " 
+       "16r060E"    16r00 " invalid " 
+       "16r060F"    16r00 " invalid " 
+       "16r0610"    16r00 " invalid " 
+       "16r0611"    16r00 " invalid " 
+       "16r0612"    16r00 " invalid " 
+       "16r0613"    16r00 " invalid " 
+       "16r0614"    16r00 " invalid " 
+       "16r0615"    16r00 " invalid " 
+       "16r0616"    16r00 " invalid " 
+       "16r0617"    16r00 " invalid " 
+       "16r0618"    16r00 " invalid " 
+       "16r0619"    16r00 " invalid " 
+       "16r061A"    16r00 " invalid " 
+       "16r061B"    16rBB " ARABIC SEMICOLON " 
+       "16r061C"    16r00 " invalid " 
+       "16r061D"    16r00 " invalid " 
+       "16r061E"    16r00 " invalid " 
+       "16r061F"    16rBF " ARABIC QUESTION MARK " 
+       "16r0620"    16r00 " invalid " 
+       "16r0621"    16rC1 " ARABIC LETTER HAMZA " 
+       "16r0622"    16rC2 " ARABIC LETTER ALEF WITH MADDA ABOVE " 
+       "16r0623"    16rC3 " ARABIC LETTER ALEF WITH HAMZA ABOVE " 
+       "16r0624"    16rC4 " ARABIC LETTER WAW WITH HAMZA ABOVE " 
+       "16r0625"    16rC5 " ARABIC LETTER ALEF WITH HAMZA BELOW " 
+       "16r0626"    16rC6 " ARABIC LETTER YEH WITH HAMZA ABOVE " 
+       "16r0627"    16rC7 " ARABIC LETTER ALEF " 
+       "16r0628"    16rC8 " ARABIC LETTER BEH " 
+       "16r0629"    16rC9 " ARABIC LETTER TEH MARBUTA " 
+       "16r062A"    16rCA " ARABIC LETTER TEH " 
+       "16r062B"    16rCB " ARABIC LETTER THEH " 
+       "16r062C"    16rCC " ARABIC LETTER JEEM " 
+       "16r062D"    16rCD " ARABIC LETTER HAH " 
+       "16r062E"    16rCE " ARABIC LETTER KHAH " 
+       "16r062F"    16rCF " ARABIC LETTER DAL " 
+       "16r0630"    16rD0 " ARABIC LETTER THAL " 
+       "16r0631"    16rD1 " ARABIC LETTER REH " 
+       "16r0632"    16rD2 " ARABIC LETTER ZAIN " 
+       "16r0633"    16rD3 " ARABIC LETTER SEEN " 
+       "16r0634"    16rD4 " ARABIC LETTER SHEEN " 
+       "16r0635"    16rD5 " ARABIC LETTER SAD " 
+       "16r0636"    16rD6 " ARABIC LETTER DAD " 
+       "16r0637"    16rD7 " ARABIC LETTER TAH " 
+       "16r0638"    16rD8 " ARABIC LETTER ZAH " 
+       "16r0639"    16rD9 " ARABIC LETTER AIN " 
+       "16r063A"    16rDA " ARABIC LETTER GHAIN " 
+       "16r063B"    16r00 " invalid " 
+       "16r063C"    16r00 " invalid " 
+       "16r063D"    16r00 " invalid " 
+       "16r063E"    16r00 " invalid " 
+       "16r063F"    16r00 " invalid " 
+       "16r0640"    16rE0 " ARABIC TATWEEL " 
+       "16r0641"    16rE1 " ARABIC LETTER FEH " 
+       "16r0642"    16rE2 " ARABIC LETTER QAF " 
+       "16r0643"    16rE3 " ARABIC LETTER KAF " 
+       "16r0644"    16rE4 " ARABIC LETTER LAM " 
+       "16r0645"    16rE5 " ARABIC LETTER MEEM " 
+       "16r0646"    16rE6 " ARABIC LETTER NOON " 
+       "16r0647"    16rE7 " ARABIC LETTER HEH " 
+       "16r0648"    16rE8 " ARABIC LETTER WAW " 
+       "16r0649"    16rE9 " ARABIC LETTER ALEF MAKSURA " 
+       "16r064A"    16rEA " ARABIC LETTER YEH " 
+       "16r064B"    16rEB " ARABIC FATHATAN " 
+       "16r064C"    16rEC " ARABIC DAMMATAN " 
+       "16r064D"    16rED " ARABIC KASRATAN " 
+       "16r064E"    16rEE " ARABIC FATHA " 
+       "16r064F"    16rEF " ARABIC DAMMA " 
+       "16r0650"    16rF0 " ARABIC KASRA " 
+       "16r0651"    16rF1 " ARABIC SHADDA " 
+       "16r0652"    16rF2 " ARABIC SUKUN " 
+       ] at:(unicode - 1547).
+    t == 0 ifFalse:[^ t].
+    ^ self encodingError
+    ] value.
 ! !
 
 !CharacterEncoder::ISO8859_7 class methodsFor:'mapping'!
@@ -6343,21 +21448,30 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-7.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-7.TXT'
+! !
+
+!CharacterEncoder::ISO8859_7 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'greek' 'iso-ir-126' 'ecma-118')
 ! !
 
 !CharacterEncoder::ISO8859_7 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 254 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    [
+    |t|
+    t := 
+#(
        "16r00A1"    16r2018 " LEFT SINGLE QUOTATION MARK " 
        "16r00A2"    16r2019 " RIGHT SINGLE QUOTATION MARK " 
        "16r00A3"    16r00A3 " POUND SIGN " 
@@ -6371,7 +21485,7 @@
        "16r00AB"    16r00AB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
        "16r00AC"    16r00AC " NOT SIGN " 
        "16r00AD"    16r00AD " SOFT HYPHEN " 
-       "16r00AE"    16rFFFF " invalid " 
+       "16r00AE"    16r0000 " invalid " 
        "16r00AF"    16r2015 " HORIZONTAL BAR " 
        "16r00B0"    16r00B0 " DEGREE SIGN " 
        "16r00B1"    16r00B1 " PLUS-MINUS SIGN " 
@@ -6407,7 +21521,7 @@
        "16r00CF"    16r039F " GREEK CAPITAL LETTER OMICRON " 
        "16r00D0"    16r03A0 " GREEK CAPITAL LETTER PI " 
        "16r00D1"    16r03A1 " GREEK CAPITAL LETTER RHO " 
-       "16r00D2"    16rFFFF " invalid " 
+       "16r00D2"    16r0000 " invalid " 
        "16r00D3"    16r03A3 " GREEK CAPITAL LETTER SIGMA " 
        "16r00D4"    16r03A4 " GREEK CAPITAL LETTER TAU " 
        "16r00D5"    16r03A5 " GREEK CAPITAL LETTER UPSILON " 
@@ -6452,7 +21566,882 @@
        "16r00FC"    16r03CC " GREEK SMALL LETTER OMICRON WITH TONOS " 
        "16r00FD"    16r03CD " GREEK SMALL LETTER UPSILON WITH TONOS " 
        "16r00FE"    16r03CE " GREEK SMALL LETTER OMEGA WITH TONOS " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+    t == 0 ifFalse:[^ t].
+    ^ self decodingError.
+    ] value.
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 8367 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 890 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    0 " invalid " 
+           "16r00A3"    1 " POUND SIGN " 
+           "16r00A4"    0 " invalid " 
+           "16r00A5"    0 " invalid " 
+           "16r00A6"    1 " BROKEN BAR " 
+           "16r00A7"    1 " SECTION SIGN " 
+           "16r00A8"    1 " DIAERESIS " 
+           "16r00A9"    1 " COPYRIGHT SIGN " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    1 " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00AC"    1 " NOT SIGN " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    0 " invalid " 
+           "16r00AF"    0 " invalid " 
+           "16r00B0"    1 " DEGREE SIGN " 
+           "16r00B1"    1 " PLUS-MINUS SIGN " 
+           "16r00B2"    1 " SUPERSCRIPT TWO " 
+           "16r00B3"    1 " SUPERSCRIPT THREE " 
+           "16r00B4"    0 " invalid " 
+           "16r00B5"    0 " invalid " 
+           "16r00B6"    0 " invalid " 
+           "16r00B7"    1 " MIDDLE DOT " 
+           "16r00B8"    0 " invalid " 
+           "16r00B9"    0 " invalid " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    1 " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00BC"    0 " invalid " 
+           "16r00BD"    1 " VULGAR FRACTION ONE HALF " 
+           "16r00BE"    0 " invalid " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    0 " invalid " 
+           "16r00C1"    0 " invalid " 
+           "16r00C2"    0 " invalid " 
+           "16r00C3"    0 " invalid " 
+           "16r00C4"    0 " invalid " 
+           "16r00C5"    0 " invalid " 
+           "16r00C6"    0 " invalid " 
+           "16r00C7"    0 " invalid " 
+           "16r00C8"    0 " invalid " 
+           "16r00C9"    0 " invalid " 
+           "16r00CA"    0 " invalid " 
+           "16r00CB"    0 " invalid " 
+           "16r00CC"    0 " invalid " 
+           "16r00CD"    0 " invalid " 
+           "16r00CE"    0 " invalid " 
+           "16r00CF"    0 " invalid " 
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    0 " invalid " 
+           "16r00D2"    0 " invalid " 
+           "16r00D3"    0 " invalid " 
+           "16r00D4"    0 " invalid " 
+           "16r00D5"    0 " invalid " 
+           "16r00D6"    0 " invalid " 
+           "16r00D7"    0 " invalid " 
+           "16r00D8"    0 " invalid " 
+           "16r00D9"    0 " invalid " 
+           "16r00DA"    0 " invalid " 
+           "16r00DB"    0 " invalid " 
+           "16r00DC"    0 " invalid " 
+           "16r00DD"    0 " invalid " 
+           "16r00DE"    0 " invalid " 
+           "16r00DF"    0 " invalid " 
+           "16r00E0"    0 " invalid " 
+           "16r00E1"    0 " invalid " 
+           "16r00E2"    0 " invalid " 
+           "16r00E3"    0 " invalid " 
+           "16r00E4"    0 " invalid " 
+           "16r00E5"    0 " invalid " 
+           "16r00E6"    0 " invalid " 
+           "16r00E7"    0 " invalid " 
+           "16r00E8"    0 " invalid " 
+           "16r00E9"    0 " invalid " 
+           "16r00EA"    0 " invalid " 
+           "16r00EB"    0 " invalid " 
+           "16r00EC"    0 " invalid " 
+           "16r00ED"    0 " invalid " 
+           "16r00EE"    0 " invalid " 
+           "16r00EF"    0 " invalid " 
+           "16r00F0"    0 " invalid " 
+           "16r00F1"    0 " invalid " 
+           "16r00F2"    0 " invalid " 
+           "16r00F3"    0 " invalid " 
+           "16r00F4"    0 " invalid " 
+           "16r00F5"    0 " invalid " 
+           "16r00F6"    0 " invalid " 
+           "16r00F7"    0 " invalid " 
+           "16r00F8"    0 " invalid " 
+           "16r00F9"    0 " invalid " 
+           "16r00FA"    0 " invalid " 
+           "16r00FB"    0 " invalid " 
+           "16r00FC"    0 " invalid " 
+           "16r00FD"    0 " invalid " 
+           "16r00FE"    0 " invalid " 
+           "16r00FF"    0 " invalid " 
+           "16r0100"    0 " invalid " 
+           "16r0101"    0 " invalid " 
+           "16r0102"    0 " invalid " 
+           "16r0103"    0 " invalid " 
+           "16r0104"    0 " invalid " 
+           "16r0105"    0 " invalid " 
+           "16r0106"    0 " invalid " 
+           "16r0107"    0 " invalid " 
+           "16r0108"    0 " invalid " 
+           "16r0109"    0 " invalid " 
+           "16r010A"    0 " invalid " 
+           "16r010B"    0 " invalid " 
+           "16r010C"    0 " invalid " 
+           "16r010D"    0 " invalid " 
+           "16r010E"    0 " invalid " 
+           "16r010F"    0 " invalid " 
+           "16r0110"    0 " invalid " 
+           "16r0111"    0 " invalid " 
+           "16r0112"    0 " invalid " 
+           "16r0113"    0 " invalid " 
+           "16r0114"    0 " invalid " 
+           "16r0115"    0 " invalid " 
+           "16r0116"    0 " invalid " 
+           "16r0117"    0 " invalid " 
+           "16r0118"    0 " invalid " 
+           "16r0119"    0 " invalid " 
+           "16r011A"    0 " invalid " 
+           "16r011B"    0 " invalid " 
+           "16r011C"    0 " invalid " 
+           "16r011D"    0 " invalid " 
+           "16r011E"    0 " invalid " 
+           "16r011F"    0 " invalid " 
+           "16r0120"    0 " invalid " 
+           "16r0121"    0 " invalid " 
+           "16r0122"    0 " invalid " 
+           "16r0123"    0 " invalid " 
+           "16r0124"    0 " invalid " 
+           "16r0125"    0 " invalid " 
+           "16r0126"    0 " invalid " 
+           "16r0127"    0 " invalid " 
+           "16r0128"    0 " invalid " 
+           "16r0129"    0 " invalid " 
+           "16r012A"    0 " invalid " 
+           "16r012B"    0 " invalid " 
+           "16r012C"    0 " invalid " 
+           "16r012D"    0 " invalid " 
+           "16r012E"    0 " invalid " 
+           "16r012F"    0 " invalid " 
+           "16r0130"    0 " invalid " 
+           "16r0131"    0 " invalid " 
+           "16r0132"    0 " invalid " 
+           "16r0133"    0 " invalid " 
+           "16r0134"    0 " invalid " 
+           "16r0135"    0 " invalid " 
+           "16r0136"    0 " invalid " 
+           "16r0137"    0 " invalid " 
+           "16r0138"    0 " invalid " 
+           "16r0139"    0 " invalid " 
+           "16r013A"    0 " invalid " 
+           "16r013B"    0 " invalid " 
+           "16r013C"    0 " invalid " 
+           "16r013D"    0 " invalid " 
+           "16r013E"    0 " invalid " 
+           "16r013F"    0 " invalid " 
+           "16r0140"    0 " invalid " 
+           "16r0141"    0 " invalid " 
+           "16r0142"    0 " invalid " 
+           "16r0143"    0 " invalid " 
+           "16r0144"    0 " invalid " 
+           "16r0145"    0 " invalid " 
+           "16r0146"    0 " invalid " 
+           "16r0147"    0 " invalid " 
+           "16r0148"    0 " invalid " 
+           "16r0149"    0 " invalid " 
+           "16r014A"    0 " invalid " 
+           "16r014B"    0 " invalid " 
+           "16r014C"    0 " invalid " 
+           "16r014D"    0 " invalid " 
+           "16r014E"    0 " invalid " 
+           "16r014F"    0 " invalid " 
+           "16r0150"    0 " invalid " 
+           "16r0151"    0 " invalid " 
+           "16r0152"    0 " invalid " 
+           "16r0153"    0 " invalid " 
+           "16r0154"    0 " invalid " 
+           "16r0155"    0 " invalid " 
+           "16r0156"    0 " invalid " 
+           "16r0157"    0 " invalid " 
+           "16r0158"    0 " invalid " 
+           "16r0159"    0 " invalid " 
+           "16r015A"    0 " invalid " 
+           "16r015B"    0 " invalid " 
+           "16r015C"    0 " invalid " 
+           "16r015D"    0 " invalid " 
+           "16r015E"    0 " invalid " 
+           "16r015F"    0 " invalid " 
+           "16r0160"    0 " invalid " 
+           "16r0161"    0 " invalid " 
+           "16r0162"    0 " invalid " 
+           "16r0163"    0 " invalid " 
+           "16r0164"    0 " invalid " 
+           "16r0165"    0 " invalid " 
+           "16r0166"    0 " invalid " 
+           "16r0167"    0 " invalid " 
+           "16r0168"    0 " invalid " 
+           "16r0169"    0 " invalid " 
+           "16r016A"    0 " invalid " 
+           "16r016B"    0 " invalid " 
+           "16r016C"    0 " invalid " 
+           "16r016D"    0 " invalid " 
+           "16r016E"    0 " invalid " 
+           "16r016F"    0 " invalid " 
+           "16r0170"    0 " invalid " 
+           "16r0171"    0 " invalid " 
+           "16r0172"    0 " invalid " 
+           "16r0173"    0 " invalid " 
+           "16r0174"    0 " invalid " 
+           "16r0175"    0 " invalid " 
+           "16r0176"    0 " invalid " 
+           "16r0177"    0 " invalid " 
+           "16r0178"    0 " invalid " 
+           "16r0179"    0 " invalid " 
+           "16r017A"    0 " invalid " 
+           "16r017B"    0 " invalid " 
+           "16r017C"    0 " invalid " 
+           "16r017D"    0 " invalid " 
+           "16r017E"    0 " invalid " 
+           "16r017F"    0 " invalid " 
+           "16r0180"    0 " invalid " 
+           "16r0181"    0 " invalid " 
+           "16r0182"    0 " invalid " 
+           "16r0183"    0 " invalid " 
+           "16r0184"    0 " invalid " 
+           "16r0185"    0 " invalid " 
+           "16r0186"    0 " invalid " 
+           "16r0187"    0 " invalid " 
+           "16r0188"    0 " invalid " 
+           "16r0189"    0 " invalid " 
+           "16r018A"    0 " invalid " 
+           "16r018B"    0 " invalid " 
+           "16r018C"    0 " invalid " 
+           "16r018D"    0 " invalid " 
+           "16r018E"    0 " invalid " 
+           "16r018F"    0 " invalid " 
+           "16r0190"    0 " invalid " 
+           "16r0191"    0 " invalid " 
+           "16r0192"    0 " invalid " 
+           "16r0193"    0 " invalid " 
+           "16r0194"    0 " invalid " 
+           "16r0195"    0 " invalid " 
+           "16r0196"    0 " invalid " 
+           "16r0197"    0 " invalid " 
+           "16r0198"    0 " invalid " 
+           "16r0199"    0 " invalid " 
+           "16r019A"    0 " invalid " 
+           "16r019B"    0 " invalid " 
+           "16r019C"    0 " invalid " 
+           "16r019D"    0 " invalid " 
+           "16r019E"    0 " invalid " 
+           "16r019F"    0 " invalid " 
+           "16r01A0"    0 " invalid " 
+           "16r01A1"    0 " invalid " 
+           "16r01A2"    0 " invalid " 
+           "16r01A3"    0 " invalid " 
+           "16r01A4"    0 " invalid " 
+           "16r01A5"    0 " invalid " 
+           "16r01A6"    0 " invalid " 
+           "16r01A7"    0 " invalid " 
+           "16r01A8"    0 " invalid " 
+           "16r01A9"    0 " invalid " 
+           "16r01AA"    0 " invalid " 
+           "16r01AB"    0 " invalid " 
+           "16r01AC"    0 " invalid " 
+           "16r01AD"    0 " invalid " 
+           "16r01AE"    0 " invalid " 
+           "16r01AF"    0 " invalid " 
+           "16r01B0"    0 " invalid " 
+           "16r01B1"    0 " invalid " 
+           "16r01B2"    0 " invalid " 
+           "16r01B3"    0 " invalid " 
+           "16r01B4"    0 " invalid " 
+           "16r01B5"    0 " invalid " 
+           "16r01B6"    0 " invalid " 
+           "16r01B7"    0 " invalid " 
+           "16r01B8"    0 " invalid " 
+           "16r01B9"    0 " invalid " 
+           "16r01BA"    0 " invalid " 
+           "16r01BB"    0 " invalid " 
+           "16r01BC"    0 " invalid " 
+           "16r01BD"    0 " invalid " 
+           "16r01BE"    0 " invalid " 
+           "16r01BF"    0 " invalid " 
+           "16r01C0"    0 " invalid " 
+           "16r01C1"    0 " invalid " 
+           "16r01C2"    0 " invalid " 
+           "16r01C3"    0 " invalid " 
+           "16r01C4"    0 " invalid " 
+           "16r01C5"    0 " invalid " 
+           "16r01C6"    0 " invalid " 
+           "16r01C7"    0 " invalid " 
+           "16r01C8"    0 " invalid " 
+           "16r01C9"    0 " invalid " 
+           "16r01CA"    0 " invalid " 
+           "16r01CB"    0 " invalid " 
+           "16r01CC"    0 " invalid " 
+           "16r01CD"    0 " invalid " 
+           "16r01CE"    0 " invalid " 
+           "16r01CF"    0 " invalid " 
+           "16r01D0"    0 " invalid " 
+           "16r01D1"    0 " invalid " 
+           "16r01D2"    0 " invalid " 
+           "16r01D3"    0 " invalid " 
+           "16r01D4"    0 " invalid " 
+           "16r01D5"    0 " invalid " 
+           "16r01D6"    0 " invalid " 
+           "16r01D7"    0 " invalid " 
+           "16r01D8"    0 " invalid " 
+           "16r01D9"    0 " invalid " 
+           "16r01DA"    0 " invalid " 
+           "16r01DB"    0 " invalid " 
+           "16r01DC"    0 " invalid " 
+           "16r01DD"    0 " invalid " 
+           "16r01DE"    0 " invalid " 
+           "16r01DF"    0 " invalid " 
+           "16r01E0"    0 " invalid " 
+           "16r01E1"    0 " invalid " 
+           "16r01E2"    0 " invalid " 
+           "16r01E3"    0 " invalid " 
+           "16r01E4"    0 " invalid " 
+           "16r01E5"    0 " invalid " 
+           "16r01E6"    0 " invalid " 
+           "16r01E7"    0 " invalid " 
+           "16r01E8"    0 " invalid " 
+           "16r01E9"    0 " invalid " 
+           "16r01EA"    0 " invalid " 
+           "16r01EB"    0 " invalid " 
+           "16r01EC"    0 " invalid " 
+           "16r01ED"    0 " invalid " 
+           "16r01EE"    0 " invalid " 
+           "16r01EF"    0 " invalid " 
+           "16r01F0"    0 " invalid " 
+           "16r01F1"    0 " invalid " 
+           "16r01F2"    0 " invalid " 
+           "16r01F3"    0 " invalid " 
+           "16r01F4"    0 " invalid " 
+           "16r01F5"    0 " invalid " 
+           "16r01F6"    0 " invalid " 
+           "16r01F7"    0 " invalid " 
+           "16r01F8"    0 " invalid " 
+           "16r01F9"    0 " invalid " 
+           "16r01FA"    0 " invalid " 
+           "16r01FB"    0 " invalid " 
+           "16r01FC"    0 " invalid " 
+           "16r01FD"    0 " invalid " 
+           "16r01FE"    0 " invalid " 
+           "16r01FF"    0 " invalid " 
+           "16r0200"    0 " invalid " 
+           "16r0201"    0 " invalid " 
+           "16r0202"    0 " invalid " 
+           "16r0203"    0 " invalid " 
+           "16r0204"    0 " invalid " 
+           "16r0205"    0 " invalid " 
+           "16r0206"    0 " invalid " 
+           "16r0207"    0 " invalid " 
+           "16r0208"    0 " invalid " 
+           "16r0209"    0 " invalid " 
+           "16r020A"    0 " invalid " 
+           "16r020B"    0 " invalid " 
+           "16r020C"    0 " invalid " 
+           "16r020D"    0 " invalid " 
+           "16r020E"    0 " invalid " 
+           "16r020F"    0 " invalid " 
+           "16r0210"    0 " invalid " 
+           "16r0211"    0 " invalid " 
+           "16r0212"    0 " invalid " 
+           "16r0213"    0 " invalid " 
+           "16r0214"    0 " invalid " 
+           "16r0215"    0 " invalid " 
+           "16r0216"    0 " invalid " 
+           "16r0217"    0 " invalid " 
+           "16r0218"    0 " invalid " 
+           "16r0219"    0 " invalid " 
+           "16r021A"    0 " invalid " 
+           "16r021B"    0 " invalid " 
+           "16r021C"    0 " invalid " 
+           "16r021D"    0 " invalid " 
+           "16r021E"    0 " invalid " 
+           "16r021F"    0 " invalid " 
+           "16r0220"    0 " invalid " 
+           "16r0221"    0 " invalid " 
+           "16r0222"    0 " invalid " 
+           "16r0223"    0 " invalid " 
+           "16r0224"    0 " invalid " 
+           "16r0225"    0 " invalid " 
+           "16r0226"    0 " invalid " 
+           "16r0227"    0 " invalid " 
+           "16r0228"    0 " invalid " 
+           "16r0229"    0 " invalid " 
+           "16r022A"    0 " invalid " 
+           "16r022B"    0 " invalid " 
+           "16r022C"    0 " invalid " 
+           "16r022D"    0 " invalid " 
+           "16r022E"    0 " invalid " 
+           "16r022F"    0 " invalid " 
+           "16r0230"    0 " invalid " 
+           "16r0231"    0 " invalid " 
+           "16r0232"    0 " invalid " 
+           "16r0233"    0 " invalid " 
+           "16r0234"    0 " invalid " 
+           "16r0235"    0 " invalid " 
+           "16r0236"    0 " invalid " 
+           "16r0237"    0 " invalid " 
+           "16r0238"    0 " invalid " 
+           "16r0239"    0 " invalid " 
+           "16r023A"    0 " invalid " 
+           "16r023B"    0 " invalid " 
+           "16r023C"    0 " invalid " 
+           "16r023D"    0 " invalid " 
+           "16r023E"    0 " invalid " 
+           "16r023F"    0 " invalid " 
+           "16r0240"    0 " invalid " 
+           "16r0241"    0 " invalid " 
+           "16r0242"    0 " invalid " 
+           "16r0243"    0 " invalid " 
+           "16r0244"    0 " invalid " 
+           "16r0245"    0 " invalid " 
+           "16r0246"    0 " invalid " 
+           "16r0247"    0 " invalid " 
+           "16r0248"    0 " invalid " 
+           "16r0249"    0 " invalid " 
+           "16r024A"    0 " invalid " 
+           "16r024B"    0 " invalid " 
+           "16r024C"    0 " invalid " 
+           "16r024D"    0 " invalid " 
+           "16r024E"    0 " invalid " 
+           "16r024F"    0 " invalid " 
+           "16r0250"    0 " invalid " 
+           "16r0251"    0 " invalid " 
+           "16r0252"    0 " invalid " 
+           "16r0253"    0 " invalid " 
+           "16r0254"    0 " invalid " 
+           "16r0255"    0 " invalid " 
+           "16r0256"    0 " invalid " 
+           "16r0257"    0 " invalid " 
+           "16r0258"    0 " invalid " 
+           "16r0259"    0 " invalid " 
+           "16r025A"    0 " invalid " 
+           "16r025B"    0 " invalid " 
+           "16r025C"    0 " invalid " 
+           "16r025D"    0 " invalid " 
+           "16r025E"    0 " invalid " 
+           "16r025F"    0 " invalid " 
+           "16r0260"    0 " invalid " 
+           "16r0261"    0 " invalid " 
+           "16r0262"    0 " invalid " 
+           "16r0263"    0 " invalid " 
+           "16r0264"    0 " invalid " 
+           "16r0265"    0 " invalid " 
+           "16r0266"    0 " invalid " 
+           "16r0267"    0 " invalid " 
+           "16r0268"    0 " invalid " 
+           "16r0269"    0 " invalid " 
+           "16r026A"    0 " invalid " 
+           "16r026B"    0 " invalid " 
+           "16r026C"    0 " invalid " 
+           "16r026D"    0 " invalid " 
+           "16r026E"    0 " invalid " 
+           "16r026F"    0 " invalid " 
+           "16r0270"    0 " invalid " 
+           "16r0271"    0 " invalid " 
+           "16r0272"    0 " invalid " 
+           "16r0273"    0 " invalid " 
+           "16r0274"    0 " invalid " 
+           "16r0275"    0 " invalid " 
+           "16r0276"    0 " invalid " 
+           "16r0277"    0 " invalid " 
+           "16r0278"    0 " invalid " 
+           "16r0279"    0 " invalid " 
+           "16r027A"    0 " invalid " 
+           "16r027B"    0 " invalid " 
+           "16r027C"    0 " invalid " 
+           "16r027D"    0 " invalid " 
+           "16r027E"    0 " invalid " 
+           "16r027F"    0 " invalid " 
+           "16r0280"    0 " invalid " 
+           "16r0281"    0 " invalid " 
+           "16r0282"    0 " invalid " 
+           "16r0283"    0 " invalid " 
+           "16r0284"    0 " invalid " 
+           "16r0285"    0 " invalid " 
+           "16r0286"    0 " invalid " 
+           "16r0287"    0 " invalid " 
+           "16r0288"    0 " invalid " 
+           "16r0289"    0 " invalid " 
+           "16r028A"    0 " invalid " 
+           "16r028B"    0 " invalid " 
+           "16r028C"    0 " invalid " 
+           "16r028D"    0 " invalid " 
+           "16r028E"    0 " invalid " 
+           "16r028F"    0 " invalid " 
+           "16r0290"    0 " invalid " 
+           "16r0291"    0 " invalid " 
+           "16r0292"    0 " invalid " 
+           "16r0293"    0 " invalid " 
+           "16r0294"    0 " invalid " 
+           "16r0295"    0 " invalid " 
+           "16r0296"    0 " invalid " 
+           "16r0297"    0 " invalid " 
+           "16r0298"    0 " invalid " 
+           "16r0299"    0 " invalid " 
+           "16r029A"    0 " invalid " 
+           "16r029B"    0 " invalid " 
+           "16r029C"    0 " invalid " 
+           "16r029D"    0 " invalid " 
+           "16r029E"    0 " invalid " 
+           "16r029F"    0 " invalid " 
+           "16r02A0"    0 " invalid " 
+           "16r02A1"    0 " invalid " 
+           "16r02A2"    0 " invalid " 
+           "16r02A3"    0 " invalid " 
+           "16r02A4"    0 " invalid " 
+           "16r02A5"    0 " invalid " 
+           "16r02A6"    0 " invalid " 
+           "16r02A7"    0 " invalid " 
+           "16r02A8"    0 " invalid " 
+           "16r02A9"    0 " invalid " 
+           "16r02AA"    0 " invalid " 
+           "16r02AB"    0 " invalid " 
+           "16r02AC"    0 " invalid " 
+           "16r02AD"    0 " invalid " 
+           "16r02AE"    0 " invalid " 
+           "16r02AF"    0 " invalid " 
+           "16r02B0"    0 " invalid " 
+           "16r02B1"    0 " invalid " 
+           "16r02B2"    0 " invalid " 
+           "16r02B3"    0 " invalid " 
+           "16r02B4"    0 " invalid " 
+           "16r02B5"    0 " invalid " 
+           "16r02B6"    0 " invalid " 
+           "16r02B7"    0 " invalid " 
+           "16r02B8"    0 " invalid " 
+           "16r02B9"    0 " invalid " 
+           "16r02BA"    0 " invalid " 
+           "16r02BB"    0 " invalid " 
+           "16r02BC"    0 " invalid " 
+           "16r02BD"    0 " invalid " 
+           "16r02BE"    0 " invalid " 
+           "16r02BF"    0 " invalid " 
+           "16r02C0"    0 " invalid " 
+           "16r02C1"    0 " invalid " 
+           "16r02C2"    0 " invalid " 
+           "16r02C3"    0 " invalid " 
+           "16r02C4"    0 " invalid " 
+           "16r02C5"    0 " invalid " 
+           "16r02C6"    0 " invalid " 
+           "16r02C7"    0 " invalid " 
+           "16r02C8"    0 " invalid " 
+           "16r02C9"    0 " invalid " 
+           "16r02CA"    0 " invalid " 
+           "16r02CB"    0 " invalid " 
+           "16r02CC"    0 " invalid " 
+           "16r02CD"    0 " invalid " 
+           "16r02CE"    0 " invalid " 
+           "16r02CF"    0 " invalid " 
+           "16r02D0"    0 " invalid " 
+           "16r02D1"    0 " invalid " 
+           "16r02D2"    0 " invalid " 
+           "16r02D3"    0 " invalid " 
+           "16r02D4"    0 " invalid " 
+           "16r02D5"    0 " invalid " 
+           "16r02D6"    0 " invalid " 
+           "16r02D7"    0 " invalid " 
+           "16r02D8"    0 " invalid " 
+           "16r02D9"    0 " invalid " 
+           "16r02DA"    0 " invalid " 
+           "16r02DB"    0 " invalid " 
+           "16r02DC"    0 " invalid " 
+           "16r02DD"    0 " invalid " 
+           "16r02DE"    0 " invalid " 
+           "16r02DF"    0 " invalid " 
+           "16r02E0"    0 " invalid " 
+           "16r02E1"    0 " invalid " 
+           "16r02E2"    0 " invalid " 
+           "16r02E3"    0 " invalid " 
+           "16r02E4"    0 " invalid " 
+           "16r02E5"    0 " invalid " 
+           "16r02E6"    0 " invalid " 
+           "16r02E7"    0 " invalid " 
+           "16r02E8"    0 " invalid " 
+           "16r02E9"    0 " invalid " 
+           "16r02EA"    0 " invalid " 
+           "16r02EB"    0 " invalid " 
+           "16r02EC"    0 " invalid " 
+           "16r02ED"    0 " invalid " 
+           "16r02EE"    0 " invalid " 
+           "16r02EF"    0 " invalid " 
+           "16r02F0"    0 " invalid " 
+           "16r02F1"    0 " invalid " 
+           "16r02F2"    0 " invalid " 
+           "16r02F3"    0 " invalid " 
+           "16r02F4"    0 " invalid " 
+           "16r02F5"    0 " invalid " 
+           "16r02F6"    0 " invalid " 
+           "16r02F7"    0 " invalid " 
+           "16r02F8"    0 " invalid " 
+           "16r02F9"    0 " invalid " 
+           "16r02FA"    0 " invalid " 
+           "16r02FB"    0 " invalid " 
+           "16r02FC"    0 " invalid " 
+           "16r02FD"    0 " invalid " 
+           "16r02FE"    0 " invalid " 
+           "16r02FF"    0 " invalid " 
+           "16r0300"    0 " invalid " 
+           "16r0301"    0 " invalid " 
+           "16r0302"    0 " invalid " 
+           "16r0303"    0 " invalid " 
+           "16r0304"    0 " invalid " 
+           "16r0305"    0 " invalid " 
+           "16r0306"    0 " invalid " 
+           "16r0307"    0 " invalid " 
+           "16r0308"    0 " invalid " 
+           "16r0309"    0 " invalid " 
+           "16r030A"    0 " invalid " 
+           "16r030B"    0 " invalid " 
+           "16r030C"    0 " invalid " 
+           "16r030D"    0 " invalid " 
+           "16r030E"    0 " invalid " 
+           "16r030F"    0 " invalid " 
+           "16r0310"    0 " invalid " 
+           "16r0311"    0 " invalid " 
+           "16r0312"    0 " invalid " 
+           "16r0313"    0 " invalid " 
+           "16r0314"    0 " invalid " 
+           "16r0315"    0 " invalid " 
+           "16r0316"    0 " invalid " 
+           "16r0317"    0 " invalid " 
+           "16r0318"    0 " invalid " 
+           "16r0319"    0 " invalid " 
+           "16r031A"    0 " invalid " 
+           "16r031B"    0 " invalid " 
+           "16r031C"    0 " invalid " 
+           "16r031D"    0 " invalid " 
+           "16r031E"    0 " invalid " 
+           "16r031F"    0 " invalid " 
+           "16r0320"    0 " invalid " 
+           "16r0321"    0 " invalid " 
+           "16r0322"    0 " invalid " 
+           "16r0323"    0 " invalid " 
+           "16r0324"    0 " invalid " 
+           "16r0325"    0 " invalid " 
+           "16r0326"    0 " invalid " 
+           "16r0327"    0 " invalid " 
+           "16r0328"    0 " invalid " 
+           "16r0329"    0 " invalid " 
+           "16r032A"    0 " invalid " 
+           "16r032B"    0 " invalid " 
+           "16r032C"    0 " invalid " 
+           "16r032D"    0 " invalid " 
+           "16r032E"    0 " invalid " 
+           "16r032F"    0 " invalid " 
+           "16r0330"    0 " invalid " 
+           "16r0331"    0 " invalid " 
+           "16r0332"    0 " invalid " 
+           "16r0333"    0 " invalid " 
+           "16r0334"    0 " invalid " 
+           "16r0335"    0 " invalid " 
+           "16r0336"    0 " invalid " 
+           "16r0337"    0 " invalid " 
+           "16r0338"    0 " invalid " 
+           "16r0339"    0 " invalid " 
+           "16r033A"    0 " invalid " 
+           "16r033B"    0 " invalid " 
+           "16r033C"    0 " invalid " 
+           "16r033D"    0 " invalid " 
+           "16r033E"    0 " invalid " 
+           "16r033F"    0 " invalid " 
+           "16r0340"    0 " invalid " 
+           "16r0341"    0 " invalid " 
+           "16r0342"    0 " invalid " 
+           "16r0343"    0 " invalid " 
+           "16r0344"    0 " invalid " 
+           "16r0345"    0 " invalid " 
+           "16r0346"    0 " invalid " 
+           "16r0347"    0 " invalid " 
+           "16r0348"    0 " invalid " 
+           "16r0349"    0 " invalid " 
+           "16r034A"    0 " invalid " 
+           "16r034B"    0 " invalid " 
+           "16r034C"    0 " invalid " 
+           "16r034D"    0 " invalid " 
+           "16r034E"    0 " invalid " 
+           "16r034F"    0 " invalid " 
+           "16r0350"    0 " invalid " 
+           "16r0351"    0 " invalid " 
+           "16r0352"    0 " invalid " 
+           "16r0353"    0 " invalid " 
+           "16r0354"    0 " invalid " 
+           "16r0355"    0 " invalid " 
+           "16r0356"    0 " invalid " 
+           "16r0357"    0 " invalid " 
+           "16r0358"    0 " invalid " 
+           "16r0359"    0 " invalid " 
+           "16r035A"    0 " invalid " 
+           "16r035B"    0 " invalid " 
+           "16r035C"    0 " invalid " 
+           "16r035D"    0 " invalid " 
+           "16r035E"    0 " invalid " 
+           "16r035F"    0 " invalid " 
+           "16r0360"    0 " invalid " 
+           "16r0361"    0 " invalid " 
+           "16r0362"    0 " invalid " 
+           "16r0363"    0 " invalid " 
+           "16r0364"    0 " invalid " 
+           "16r0365"    0 " invalid " 
+           "16r0366"    0 " invalid " 
+           "16r0367"    0 " invalid " 
+           "16r0368"    0 " invalid " 
+           "16r0369"    0 " invalid " 
+           "16r036A"    0 " invalid " 
+           "16r036B"    0 " invalid " 
+           "16r036C"    0 " invalid " 
+           "16r036D"    0 " invalid " 
+           "16r036E"    0 " invalid " 
+           "16r036F"    0 " invalid " 
+           "16r0370"    0 " invalid " 
+           "16r0371"    0 " invalid " 
+           "16r0372"    0 " invalid " 
+           "16r0373"    0 " invalid " 
+           "16r0374"    0 " invalid " 
+           "16r0375"    0 " invalid " 
+           "16r0376"    0 " invalid " 
+           "16r0377"    0 " invalid " 
+           "16r0378"    0 " invalid " 
+           "16r0379"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    unicode < 975 ifTrue:[
+        [
+        |t|
+        t := 
+#[
+           "16r037A"    16rAA " GREEK YPOGEGRAMMENI " 
+           "16r037B"    16r00 " invalid " 
+           "16r037C"    16r00 " invalid " 
+           "16r037D"    16r00 " invalid " 
+           "16r037E"    16r00 " invalid " 
+           "16r037F"    16r00 " invalid " 
+           "16r0380"    16r00 " invalid " 
+           "16r0381"    16r00 " invalid " 
+           "16r0382"    16r00 " invalid " 
+           "16r0383"    16r00 " invalid " 
+           "16r0384"    16rB4 " GREEK TONOS " 
+           "16r0385"    16rB5 " GREEK DIALYTIKA TONOS " 
+           "16r0386"    16rB6 " GREEK CAPITAL LETTER ALPHA WITH TONOS " 
+           "16r0387"    16r00 " invalid " 
+           "16r0388"    16rB8 " GREEK CAPITAL LETTER EPSILON WITH TONOS " 
+           "16r0389"    16rB9 " GREEK CAPITAL LETTER ETA WITH TONOS " 
+           "16r038A"    16rBA " GREEK CAPITAL LETTER IOTA WITH TONOS " 
+           "16r038B"    16r00 " invalid " 
+           "16r038C"    16rBC " GREEK CAPITAL LETTER OMICRON WITH TONOS " 
+           "16r038D"    16r00 " invalid " 
+           "16r038E"    16rBE " GREEK CAPITAL LETTER UPSILON WITH TONOS " 
+           "16r038F"    16rBF " GREEK CAPITAL LETTER OMEGA WITH TONOS " 
+           "16r0390"    16rC0 " GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS " 
+           "16r0391"    16rC1 " GREEK CAPITAL LETTER ALPHA " 
+           "16r0392"    16rC2 " GREEK CAPITAL LETTER BETA " 
+           "16r0393"    16rC3 " GREEK CAPITAL LETTER GAMMA " 
+           "16r0394"    16rC4 " GREEK CAPITAL LETTER DELTA " 
+           "16r0395"    16rC5 " GREEK CAPITAL LETTER EPSILON " 
+           "16r0396"    16rC6 " GREEK CAPITAL LETTER ZETA " 
+           "16r0397"    16rC7 " GREEK CAPITAL LETTER ETA " 
+           "16r0398"    16rC8 " GREEK CAPITAL LETTER THETA " 
+           "16r0399"    16rC9 " GREEK CAPITAL LETTER IOTA " 
+           "16r039A"    16rCA " GREEK CAPITAL LETTER KAPPA " 
+           "16r039B"    16rCB " GREEK CAPITAL LETTER LAMDA " 
+           "16r039C"    16rCC " GREEK CAPITAL LETTER MU " 
+           "16r039D"    16rCD " GREEK CAPITAL LETTER NU " 
+           "16r039E"    16rCE " GREEK CAPITAL LETTER XI " 
+           "16r039F"    16rCF " GREEK CAPITAL LETTER OMICRON " 
+           "16r03A0"    16rD0 " GREEK CAPITAL LETTER PI " 
+           "16r03A1"    16rD1 " GREEK CAPITAL LETTER RHO " 
+           "16r03A2"    16r00 " invalid " 
+           "16r03A3"    16rD3 " GREEK CAPITAL LETTER SIGMA " 
+           "16r03A4"    16rD4 " GREEK CAPITAL LETTER TAU " 
+           "16r03A5"    16rD5 " GREEK CAPITAL LETTER UPSILON " 
+           "16r03A6"    16rD6 " GREEK CAPITAL LETTER PHI " 
+           "16r03A7"    16rD7 " GREEK CAPITAL LETTER CHI " 
+           "16r03A8"    16rD8 " GREEK CAPITAL LETTER PSI " 
+           "16r03A9"    16rD9 " GREEK CAPITAL LETTER OMEGA " 
+           "16r03AA"    16rDA " GREEK CAPITAL LETTER IOTA WITH DIALYTIKA " 
+           "16r03AB"    16rDB " GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA " 
+           "16r03AC"    16rDC " GREEK SMALL LETTER ALPHA WITH TONOS " 
+           "16r03AD"    16rDD " GREEK SMALL LETTER EPSILON WITH TONOS " 
+           "16r03AE"    16rDE " GREEK SMALL LETTER ETA WITH TONOS " 
+           "16r03AF"    16rDF " GREEK SMALL LETTER IOTA WITH TONOS " 
+           "16r03B0"    16rE0 " GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS " 
+           "16r03B1"    16rE1 " GREEK SMALL LETTER ALPHA " 
+           "16r03B2"    16rE2 " GREEK SMALL LETTER BETA " 
+           "16r03B3"    16rE3 " GREEK SMALL LETTER GAMMA " 
+           "16r03B4"    16rE4 " GREEK SMALL LETTER DELTA " 
+           "16r03B5"    16rE5 " GREEK SMALL LETTER EPSILON " 
+           "16r03B6"    16rE6 " GREEK SMALL LETTER ZETA " 
+           "16r03B7"    16rE7 " GREEK SMALL LETTER ETA " 
+           "16r03B8"    16rE8 " GREEK SMALL LETTER THETA " 
+           "16r03B9"    16rE9 " GREEK SMALL LETTER IOTA " 
+           "16r03BA"    16rEA " GREEK SMALL LETTER KAPPA " 
+           "16r03BB"    16rEB " GREEK SMALL LETTER LAMDA " 
+           "16r03BC"    16rEC " GREEK SMALL LETTER MU " 
+           "16r03BD"    16rED " GREEK SMALL LETTER NU " 
+           "16r03BE"    16rEE " GREEK SMALL LETTER XI " 
+           "16r03BF"    16rEF " GREEK SMALL LETTER OMICRON " 
+           "16r03C0"    16rF0 " GREEK SMALL LETTER PI " 
+           "16r03C1"    16rF1 " GREEK SMALL LETTER RHO " 
+           "16r03C2"    16rF2 " GREEK SMALL LETTER FINAL SIGMA " 
+           "16r03C3"    16rF3 " GREEK SMALL LETTER SIGMA " 
+           "16r03C4"    16rF4 " GREEK SMALL LETTER TAU " 
+           "16r03C5"    16rF5 " GREEK SMALL LETTER UPSILON " 
+           "16r03C6"    16rF6 " GREEK SMALL LETTER PHI " 
+           "16r03C7"    16rF7 " GREEK SMALL LETTER CHI " 
+           "16r03C8"    16rF8 " GREEK SMALL LETTER PSI " 
+           "16r03C9"    16rF9 " GREEK SMALL LETTER OMEGA " 
+           "16r03CA"    16rFA " GREEK SMALL LETTER IOTA WITH DIALYTIKA " 
+           "16r03CB"    16rFB " GREEK SMALL LETTER UPSILON WITH DIALYTIKA " 
+           "16r03CC"    16rFC " GREEK SMALL LETTER OMICRON WITH TONOS " 
+           "16r03CD"    16rFD " GREEK SMALL LETTER UPSILON WITH TONOS " 
+           "16r03CE"    16rFE " GREEK SMALL LETTER OMEGA WITH TONOS " 
+           ] at:(unicode - 889).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 8212 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 8218 ifTrue:[
+        [
+        |t|
+        t := 
+#[
+           "16r2015"    16rAF " HORIZONTAL BAR " 
+           "16r2016"    16r00 " invalid " 
+           "16r2017"    16r00 " invalid " 
+           "16r2018"    16rA1 " LEFT SINGLE QUOTATION MARK " 
+           "16r2019"    16rA2 " RIGHT SINGLE QUOTATION MARK " 
+           ] at:(unicode - 8212).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 8363 ifTrue:[
+        ^ self encodingError.
+    ].
+    [
+    |t|
+    t := 
+#[
+       "16r20AC"    16rA4 " EURO SIGN " 
+       "16r20AD"    16r00 " invalid " 
+       "16r20AE"    16r00 " invalid " 
+       "16r20AF"    16rA5 " DRACHMA SIGN " 
+       ] at:(unicode - 8363).
+    t == 0 ifFalse:[^ t].
+    ^ self encodingError
+    ] value.
 ! !
 
 !CharacterEncoder::ISO8859_8 class methodsFor:'mapping'!
@@ -6735,22 +22724,31 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-8.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-8.TXT'
+! !
+
+!CharacterEncoder::ISO8859_8 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'hebrew' 'iso-ir-138' )
 ! !
 
 !CharacterEncoder::ISO8859_8 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 161 ifTrue:[ ^ code ].
     code > 254 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
-       "16r00A1"    16rFFFF " invalid " 
+        ^ self decodingError.
+    ].
+    [
+    |t|
+    t := 
+#(
+       "16r00A1"    16r0000 " invalid " 
        "16r00A2"    16r00A2 " CENT SIGN " 
        "16r00A3"    16r00A3 " POUND SIGN " 
        "16r00A4"    16r00A4 " CURRENCY SIGN " 
@@ -6780,38 +22778,38 @@
        "16r00BC"    16r00BC " VULGAR FRACTION ONE QUARTER " 
        "16r00BD"    16r00BD " VULGAR FRACTION ONE HALF " 
        "16r00BE"    16r00BE " VULGAR FRACTION THREE QUARTERS " 
-       "16r00BF"    16rFFFF " invalid " 
-       "16r00C0"    16rFFFF " invalid " 
-       "16r00C1"    16rFFFF " invalid " 
-       "16r00C2"    16rFFFF " invalid " 
-       "16r00C3"    16rFFFF " invalid " 
-       "16r00C4"    16rFFFF " invalid " 
-       "16r00C5"    16rFFFF " invalid " 
-       "16r00C6"    16rFFFF " invalid " 
-       "16r00C7"    16rFFFF " invalid " 
-       "16r00C8"    16rFFFF " invalid " 
-       "16r00C9"    16rFFFF " invalid " 
-       "16r00CA"    16rFFFF " invalid " 
-       "16r00CB"    16rFFFF " invalid " 
-       "16r00CC"    16rFFFF " invalid " 
-       "16r00CD"    16rFFFF " invalid " 
-       "16r00CE"    16rFFFF " invalid " 
-       "16r00CF"    16rFFFF " invalid " 
-       "16r00D0"    16rFFFF " invalid " 
-       "16r00D1"    16rFFFF " invalid " 
-       "16r00D2"    16rFFFF " invalid " 
-       "16r00D3"    16rFFFF " invalid " 
-       "16r00D4"    16rFFFF " invalid " 
-       "16r00D5"    16rFFFF " invalid " 
-       "16r00D6"    16rFFFF " invalid " 
-       "16r00D7"    16rFFFF " invalid " 
-       "16r00D8"    16rFFFF " invalid " 
-       "16r00D9"    16rFFFF " invalid " 
-       "16r00DA"    16rFFFF " invalid " 
-       "16r00DB"    16rFFFF " invalid " 
-       "16r00DC"    16rFFFF " invalid " 
-       "16r00DD"    16rFFFF " invalid " 
-       "16r00DE"    16rFFFF " invalid " 
+       "16r00BF"    16r0000 " invalid " 
+       "16r00C0"    16r0000 " invalid " 
+       "16r00C1"    16r0000 " invalid " 
+       "16r00C2"    16r0000 " invalid " 
+       "16r00C3"    16r0000 " invalid " 
+       "16r00C4"    16r0000 " invalid " 
+       "16r00C5"    16r0000 " invalid " 
+       "16r00C6"    16r0000 " invalid " 
+       "16r00C7"    16r0000 " invalid " 
+       "16r00C8"    16r0000 " invalid " 
+       "16r00C9"    16r0000 " invalid " 
+       "16r00CA"    16r0000 " invalid " 
+       "16r00CB"    16r0000 " invalid " 
+       "16r00CC"    16r0000 " invalid " 
+       "16r00CD"    16r0000 " invalid " 
+       "16r00CE"    16r0000 " invalid " 
+       "16r00CF"    16r0000 " invalid " 
+       "16r00D0"    16r0000 " invalid " 
+       "16r00D1"    16r0000 " invalid " 
+       "16r00D2"    16r0000 " invalid " 
+       "16r00D3"    16r0000 " invalid " 
+       "16r00D4"    16r0000 " invalid " 
+       "16r00D5"    16r0000 " invalid " 
+       "16r00D6"    16r0000 " invalid " 
+       "16r00D7"    16r0000 " invalid " 
+       "16r00D8"    16r0000 " invalid " 
+       "16r00D9"    16r0000 " invalid " 
+       "16r00DA"    16r0000 " invalid " 
+       "16r00DB"    16r0000 " invalid " 
+       "16r00DC"    16r0000 " invalid " 
+       "16r00DD"    16r0000 " invalid " 
+       "16r00DE"    16r0000 " invalid " 
        "16r00DF"    16r2017 " DOUBLE LOW LINE " 
        "16r00E0"    16r05D0 " HEBREW LETTER ALEF " 
        "16r00E1"    16r05D1 " HEBREW LETTER BET " 
@@ -6840,11 +22838,182 @@
        "16r00F8"    16r05E8 " HEBREW LETTER RESH " 
        "16r00F9"    16r05E9 " HEBREW LETTER SHIN " 
        "16r00FA"    16r05EA " HEBREW LETTER TAV " 
-       "16r00FB"    16rFFFF " invalid " 
-       "16r00FC"    16rFFFF " invalid " 
+       "16r00FB"    16r0000 " invalid " 
+       "16r00FC"    16r0000 " invalid " 
        "16r00FD"    16r200E " LEFT-TO-RIGHT MARK " 
        "16r00FE"    16r200F " RIGHT-TO-LEFT MARK " 
-       ) at:(code - 160)
+       ) at:(code - 160).
+    t == 0 ifFalse:[^ t].
+    ^ self decodingError.
+    ] value.
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 161 ifTrue:[ ^ unicode ].
+    unicode > 8215 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 215 ifTrue:[
+        (#[
+           "16r00A1"    0 " invalid " 
+           "16r00A2"    1 " CENT SIGN " 
+           "16r00A3"    1 " POUND SIGN " 
+           "16r00A4"    1 " CURRENCY SIGN " 
+           "16r00A5"    1 " YEN SIGN " 
+           "16r00A6"    1 " BROKEN BAR " 
+           "16r00A7"    1 " SECTION SIGN " 
+           "16r00A8"    1 " DIAERESIS " 
+           "16r00A9"    1 " COPYRIGHT SIGN " 
+           "16r00AA"    0 " invalid " 
+           "16r00AB"    1 " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00AC"    1 " NOT SIGN " 
+           "16r00AD"    1 " SOFT HYPHEN " 
+           "16r00AE"    1 " REGISTERED SIGN " 
+           "16r00AF"    1 " MACRON " 
+           "16r00B0"    1 " DEGREE SIGN " 
+           "16r00B1"    1 " PLUS-MINUS SIGN " 
+           "16r00B2"    1 " SUPERSCRIPT TWO " 
+           "16r00B3"    1 " SUPERSCRIPT THREE " 
+           "16r00B4"    1 " ACUTE ACCENT " 
+           "16r00B5"    1 " MICRO SIGN " 
+           "16r00B6"    1 " PILCROW SIGN " 
+           "16r00B7"    1 " MIDDLE DOT " 
+           "16r00B8"    1 " CEDILLA " 
+           "16r00B9"    1 " SUPERSCRIPT ONE " 
+           "16r00BA"    0 " invalid " 
+           "16r00BB"    1 " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00BC"    1 " VULGAR FRACTION ONE QUARTER " 
+           "16r00BD"    1 " VULGAR FRACTION ONE HALF " 
+           "16r00BE"    1 " VULGAR FRACTION THREE QUARTERS " 
+           "16r00BF"    0 " invalid " 
+           "16r00C0"    0 " invalid " 
+           "16r00C1"    0 " invalid " 
+           "16r00C2"    0 " invalid " 
+           "16r00C3"    0 " invalid " 
+           "16r00C4"    0 " invalid " 
+           "16r00C5"    0 " invalid " 
+           "16r00C6"    0 " invalid " 
+           "16r00C7"    0 " invalid " 
+           "16r00C8"    0 " invalid " 
+           "16r00C9"    0 " invalid " 
+           "16r00CA"    0 " invalid " 
+           "16r00CB"    0 " invalid " 
+           "16r00CC"    0 " invalid " 
+           "16r00CD"    0 " invalid " 
+           "16r00CE"    0 " invalid " 
+           "16r00CF"    0 " invalid " 
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    0 " invalid " 
+           "16r00D2"    0 " invalid " 
+           "16r00D3"    0 " invalid " 
+           "16r00D4"    0 " invalid " 
+           "16r00D5"    0 " invalid " 
+           "16r00D6"    0 " invalid " 
+        ] at:(unicode - 160)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    unicode < 1515 ifTrue:[
+        unicode < 248 ifTrue:[
+            [
+            |t|
+            t := 
+#[
+               "16r00D7"    16rAA " MULTIPLICATION SIGN " 
+               "16r00D8"    16r00 " invalid " 
+               "16r00D9"    16r00 " invalid " 
+               "16r00DA"    16r00 " invalid " 
+               "16r00DB"    16r00 " invalid " 
+               "16r00DC"    16r00 " invalid " 
+               "16r00DD"    16r00 " invalid " 
+               "16r00DE"    16r00 " invalid " 
+               "16r00DF"    16r00 " invalid " 
+               "16r00E0"    16r00 " invalid " 
+               "16r00E1"    16r00 " invalid " 
+               "16r00E2"    16r00 " invalid " 
+               "16r00E3"    16r00 " invalid " 
+               "16r00E4"    16r00 " invalid " 
+               "16r00E5"    16r00 " invalid " 
+               "16r00E6"    16r00 " invalid " 
+               "16r00E7"    16r00 " invalid " 
+               "16r00E8"    16r00 " invalid " 
+               "16r00E9"    16r00 " invalid " 
+               "16r00EA"    16r00 " invalid " 
+               "16r00EB"    16r00 " invalid " 
+               "16r00EC"    16r00 " invalid " 
+               "16r00ED"    16r00 " invalid " 
+               "16r00EE"    16r00 " invalid " 
+               "16r00EF"    16r00 " invalid " 
+               "16r00F0"    16r00 " invalid " 
+               "16r00F1"    16r00 " invalid " 
+               "16r00F2"    16r00 " invalid " 
+               "16r00F3"    16r00 " invalid " 
+               "16r00F4"    16r00 " invalid " 
+               "16r00F5"    16r00 " invalid " 
+               "16r00F6"    16r00 " invalid " 
+               "16r00F7"    16rBA " DIVISION SIGN " 
+               ] at:(unicode - 214).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+            ] value.
+        ].
+        unicode <= 1487 ifTrue:[
+            ^ self encodingError.
+        ].
+        ^ 
+#[
+           "16r05D0"    16rE0 " HEBREW LETTER ALEF " 
+           "16r05D1"    16rE1 " HEBREW LETTER BET " 
+           "16r05D2"    16rE2 " HEBREW LETTER GIMEL " 
+           "16r05D3"    16rE3 " HEBREW LETTER DALET " 
+           "16r05D4"    16rE4 " HEBREW LETTER HE " 
+           "16r05D5"    16rE5 " HEBREW LETTER VAV " 
+           "16r05D6"    16rE6 " HEBREW LETTER ZAYIN " 
+           "16r05D7"    16rE7 " HEBREW LETTER HET " 
+           "16r05D8"    16rE8 " HEBREW LETTER TET " 
+           "16r05D9"    16rE9 " HEBREW LETTER YOD " 
+           "16r05DA"    16rEA " HEBREW LETTER FINAL KAF " 
+           "16r05DB"    16rEB " HEBREW LETTER KAF " 
+           "16r05DC"    16rEC " HEBREW LETTER LAMED " 
+           "16r05DD"    16rED " HEBREW LETTER FINAL MEM " 
+           "16r05DE"    16rEE " HEBREW LETTER MEM " 
+           "16r05DF"    16rEF " HEBREW LETTER FINAL NUN " 
+           "16r05E0"    16rF0 " HEBREW LETTER NUN " 
+           "16r05E1"    16rF1 " HEBREW LETTER SAMEKH " 
+           "16r05E2"    16rF2 " HEBREW LETTER AYIN " 
+           "16r05E3"    16rF3 " HEBREW LETTER FINAL PE " 
+           "16r05E4"    16rF4 " HEBREW LETTER PE " 
+           "16r05E5"    16rF5 " HEBREW LETTER FINAL TSADI " 
+           "16r05E6"    16rF6 " HEBREW LETTER TSADI " 
+           "16r05E7"    16rF7 " HEBREW LETTER QOF " 
+           "16r05E8"    16rF8 " HEBREW LETTER RESH " 
+           "16r05E9"    16rF9 " HEBREW LETTER SHIN " 
+           "16r05EA"    16rFA " HEBREW LETTER TAV " 
+           ] at:(unicode - 1487).
+    ].
+    unicode <= 8205 ifTrue:[
+        ^ self encodingError.
+    ].
+    [
+    |t|
+    t := 
+#[
+       "16r200E"    16rFD " LEFT-TO-RIGHT MARK " 
+       "16r200F"    16rFE " RIGHT-TO-LEFT MARK " 
+       "16r2010"    16r00 " invalid " 
+       "16r2011"    16r00 " invalid " 
+       "16r2012"    16r00 " invalid " 
+       "16r2013"    16r00 " invalid " 
+       "16r2014"    16r00 " invalid " 
+       "16r2015"    16r00 " invalid " 
+       "16r2016"    16r00 " invalid " 
+       "16r2017"    16rDF " DOUBLE LOW LINE " 
+       ] at:(unicode - 8205).
+    t == 0 ifFalse:[^ t].
+    ^ self encodingError
+    ] value.
 ! !
 
 !CharacterEncoder::ISO8859_9 class methodsFor:'mapping'!
@@ -7164,21 +23333,28 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-9.TXT'
+mappingURL1_relativePathName
+    ^ 'ISO8859/8859-9.TXT'
+! !
+
+!CharacterEncoder::ISO8859_9 class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'latin-5' 'iso-ir-148')
 ! !
 
 !CharacterEncoder::ISO8859_9 methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 208 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r00D0"    16r011E " LATIN CAPITAL LETTER G WITH BREVE " 
        "16r00D1"    16r00D1 " LATIN CAPITAL LETTER N WITH TILDE " 
        "16r00D2"    16r00D2 " LATIN CAPITAL LETTER O WITH GRAVE " 
@@ -7226,31 +23402,198 @@
        "16r00FC"    16r00FC " LATIN SMALL LETTER U WITH DIAERESIS " 
        "16r00FD"    16r0131 " LATIN SMALL LETTER DOTLESS I " 
        "16r00FE"    16r015F " LATIN SMALL LETTER S WITH CEDILLA " 
-       ) at:(code - 207)
+       ) at:(code - 207).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 208 ifTrue:[ ^ unicode ].
+    unicode > 351 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 286 ifTrue:[
+        (#[
+           "16r00D0"    0 " invalid " 
+           "16r00D1"    1 " LATIN CAPITAL LETTER N WITH TILDE " 
+           "16r00D2"    1 " LATIN CAPITAL LETTER O WITH GRAVE " 
+           "16r00D3"    1 " LATIN CAPITAL LETTER O WITH ACUTE " 
+           "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    1 " LATIN CAPITAL LETTER O WITH TILDE " 
+           "16r00D6"    1 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    1 " MULTIPLICATION SIGN " 
+           "16r00D8"    1 " LATIN CAPITAL LETTER O WITH STROKE " 
+           "16r00D9"    1 " LATIN CAPITAL LETTER U WITH GRAVE " 
+           "16r00DA"    1 " LATIN CAPITAL LETTER U WITH ACUTE " 
+           "16r00DB"    1 " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+           "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    0 " invalid " 
+           "16r00DE"    0 " invalid " 
+           "16r00DF"    1 " LATIN SMALL LETTER SHARP S " 
+           "16r00E0"    1 " LATIN SMALL LETTER A WITH GRAVE " 
+           "16r00E1"    1 " LATIN SMALL LETTER A WITH ACUTE " 
+           "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    1 " LATIN SMALL LETTER A WITH TILDE " 
+           "16r00E4"    1 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    1 " LATIN SMALL LETTER A WITH RING ABOVE " 
+           "16r00E6"    1 " LATIN SMALL LETTER AE " 
+           "16r00E7"    1 " LATIN SMALL LETTER C WITH CEDILLA " 
+           "16r00E8"    1 " LATIN SMALL LETTER E WITH GRAVE " 
+           "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    1 " LATIN SMALL LETTER E WITH CIRCUMFLEX " 
+           "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+           "16r00EC"    1 " LATIN SMALL LETTER I WITH GRAVE " 
+           "16r00ED"    1 " LATIN SMALL LETTER I WITH ACUTE " 
+           "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    1 " LATIN SMALL LETTER I WITH DIAERESIS " 
+           "16r00F0"    0 " invalid " 
+           "16r00F1"    1 " LATIN SMALL LETTER N WITH TILDE " 
+           "16r00F2"    1 " LATIN SMALL LETTER O WITH GRAVE " 
+           "16r00F3"    1 " LATIN SMALL LETTER O WITH ACUTE " 
+           "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    1 " LATIN SMALL LETTER O WITH TILDE " 
+           "16r00F6"    1 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    1 " DIVISION SIGN " 
+           "16r00F8"    1 " LATIN SMALL LETTER O WITH STROKE " 
+           "16r00F9"    1 " LATIN SMALL LETTER U WITH GRAVE " 
+           "16r00FA"    1 " LATIN SMALL LETTER U WITH ACUTE " 
+           "16r00FB"    1 " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+           "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    0 " invalid " 
+           "16r00FE"    0 " invalid " 
+           "16r00FF"    1 " LATIN SMALL LETTER Y WITH DIAERESIS " 
+           "16r0100"    0 " invalid " 
+           "16r0101"    0 " invalid " 
+           "16r0102"    0 " invalid " 
+           "16r0103"    0 " invalid " 
+           "16r0104"    0 " invalid " 
+           "16r0105"    0 " invalid " 
+           "16r0106"    0 " invalid " 
+           "16r0107"    0 " invalid " 
+           "16r0108"    0 " invalid " 
+           "16r0109"    0 " invalid " 
+           "16r010A"    0 " invalid " 
+           "16r010B"    0 " invalid " 
+           "16r010C"    0 " invalid " 
+           "16r010D"    0 " invalid " 
+           "16r010E"    0 " invalid " 
+           "16r010F"    0 " invalid " 
+           "16r0110"    0 " invalid " 
+           "16r0111"    0 " invalid " 
+           "16r0112"    0 " invalid " 
+           "16r0113"    0 " invalid " 
+           "16r0114"    0 " invalid " 
+           "16r0115"    0 " invalid " 
+           "16r0116"    0 " invalid " 
+           "16r0117"    0 " invalid " 
+           "16r0118"    0 " invalid " 
+           "16r0119"    0 " invalid " 
+           "16r011A"    0 " invalid " 
+           "16r011B"    0 " invalid " 
+           "16r011C"    0 " invalid " 
+           "16r011D"    0 " invalid " 
+        ] at:(unicode - 207)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError.
+    ].
+    [
+    |t|
+    t := 
+#[
+       "16r011E"    16rD0 " LATIN CAPITAL LETTER G WITH BREVE " 
+       "16r011F"    16rF0 " LATIN SMALL LETTER G WITH BREVE " 
+       "16r0120"    16r00 " invalid " 
+       "16r0121"    16r00 " invalid " 
+       "16r0122"    16r00 " invalid " 
+       "16r0123"    16r00 " invalid " 
+       "16r0124"    16r00 " invalid " 
+       "16r0125"    16r00 " invalid " 
+       "16r0126"    16r00 " invalid " 
+       "16r0127"    16r00 " invalid " 
+       "16r0128"    16r00 " invalid " 
+       "16r0129"    16r00 " invalid " 
+       "16r012A"    16r00 " invalid " 
+       "16r012B"    16r00 " invalid " 
+       "16r012C"    16r00 " invalid " 
+       "16r012D"    16r00 " invalid " 
+       "16r012E"    16r00 " invalid " 
+       "16r012F"    16r00 " invalid " 
+       "16r0130"    16rDD " LATIN CAPITAL LETTER I WITH DOT ABOVE " 
+       "16r0131"    16rFD " LATIN SMALL LETTER DOTLESS I " 
+       "16r0132"    16r00 " invalid " 
+       "16r0133"    16r00 " invalid " 
+       "16r0134"    16r00 " invalid " 
+       "16r0135"    16r00 " invalid " 
+       "16r0136"    16r00 " invalid " 
+       "16r0137"    16r00 " invalid " 
+       "16r0138"    16r00 " invalid " 
+       "16r0139"    16r00 " invalid " 
+       "16r013A"    16r00 " invalid " 
+       "16r013B"    16r00 " invalid " 
+       "16r013C"    16r00 " invalid " 
+       "16r013D"    16r00 " invalid " 
+       "16r013E"    16r00 " invalid " 
+       "16r013F"    16r00 " invalid " 
+       "16r0140"    16r00 " invalid " 
+       "16r0141"    16r00 " invalid " 
+       "16r0142"    16r00 " invalid " 
+       "16r0143"    16r00 " invalid " 
+       "16r0144"    16r00 " invalid " 
+       "16r0145"    16r00 " invalid " 
+       "16r0146"    16r00 " invalid " 
+       "16r0147"    16r00 " invalid " 
+       "16r0148"    16r00 " invalid " 
+       "16r0149"    16r00 " invalid " 
+       "16r014A"    16r00 " invalid " 
+       "16r014B"    16r00 " invalid " 
+       "16r014C"    16r00 " invalid " 
+       "16r014D"    16r00 " invalid " 
+       "16r014E"    16r00 " invalid " 
+       "16r014F"    16r00 " invalid " 
+       "16r0150"    16r00 " invalid " 
+       "16r0151"    16r00 " invalid " 
+       "16r0152"    16r00 " invalid " 
+       "16r0153"    16r00 " invalid " 
+       "16r0154"    16r00 " invalid " 
+       "16r0155"    16r00 " invalid " 
+       "16r0156"    16r00 " invalid " 
+       "16r0157"    16r00 " invalid " 
+       "16r0158"    16r00 " invalid " 
+       "16r0159"    16r00 " invalid " 
+       "16r015A"    16r00 " invalid " 
+       "16r015B"    16r00 " invalid " 
+       "16r015C"    16r00 " invalid " 
+       "16r015D"    16r00 " invalid " 
+       "16r015E"    16rDE " LATIN CAPITAL LETTER S WITH CEDILLA " 
+       "16r015F"    16rFE " LATIN SMALL LETTER S WITH CEDILLA " 
+       ] at:(unicode - 285).
+    t == 0 ifFalse:[^ t].
+    ^ self encodingError
+    ] value.
 ! !
 
 !CharacterEncoder::JIS0201 class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0201.TXT'
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/JIS/JIS0201.TXT'
 ! !
 
 !CharacterEncoder::JIS0208 class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT'
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/JIS/JIS0208.TXT'
 ! !
 
 !CharacterEncoder::JIS0212 class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0212.TXT'
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/JIS/JIS0212.TXT'
 ! !
 
 !CharacterEncoder::JOHAB class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT'
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/KSC/JOHAB.TXT'
 ! !
 
 !CharacterEncoder::KOI8_R class methodsFor:'mapping'!
@@ -7565,8 +23908,8 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT'
+mappingURL1_relativePathName
+    ^ 'VENDORS/MISC/KOI8-R.TXT'
 !
 
 mappingURL_baseName
@@ -7576,14 +23919,15 @@
 !CharacterEncoder::KOI8_R methodsFor:'encoding & decoding'!
 
 decode:code
-    "automatically generated by generateEncoderCode"
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
 
     code < 128 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
-    ].
-    ^ #(
+        ^ self decodingError.
+    ].
+    ^ 
+#(
        "16r0080"    16r2500 " BOX DRAWINGS LIGHT HORIZONTAL " 
        "16r0081"    16r2502 " BOX DRAWINGS LIGHT VERTICAL " 
        "16r0082"    16r250C " BOX DRAWINGS LIGHT DOWN AND RIGHT " 
@@ -7712,7 +24056,429 @@
        "16r00FD"    16r0429 " CYRILLIC CAPITAL LETTER SHCHA " 
        "16r00FE"    16r0427 " CYRILLIC CAPITAL LETTER CHE " 
        "16r00FF"    16r042A " CYRILLIC CAPITAL LETTER HARD SIGN " 
-       ) at:(code - 127)
+       ) at:(code - 127).
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode < 128 ifTrue:[ ^ unicode ].
+    unicode > 9632 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 1106 ifTrue:[
+        unicode < 248 ifTrue:[
+            unicode < 184 ifTrue:[
+                unicode < 160 ifTrue:[
+                    ^ self encodingError.
+                ].
+                [
+                |t|
+                t := 
+#[
+                   "16r00A0"    16r9A " NO-BREAK SPACE " 
+                   "16r00A1"    16r00 " invalid " 
+                   "16r00A2"    16r00 " invalid " 
+                   "16r00A3"    16r00 " invalid " 
+                   "16r00A4"    16r00 " invalid " 
+                   "16r00A5"    16r00 " invalid " 
+                   "16r00A6"    16r00 " invalid " 
+                   "16r00A7"    16r00 " invalid " 
+                   "16r00A8"    16r00 " invalid " 
+                   "16r00A9"    16rBF " COPYRIGHT SIGN " 
+                   "16r00AA"    16r00 " invalid " 
+                   "16r00AB"    16r00 " invalid " 
+                   "16r00AC"    16r00 " invalid " 
+                   "16r00AD"    16r00 " invalid " 
+                   "16r00AE"    16r00 " invalid " 
+                   "16r00AF"    16r00 " invalid " 
+                   "16r00B0"    16r9C " DEGREE SIGN " 
+                   "16r00B1"    16r00 " invalid " 
+                   "16r00B2"    16r9D " SUPERSCRIPT TWO " 
+                   "16r00B3"    16r00 " invalid " 
+                   "16r00B4"    16r00 " invalid " 
+                   "16r00B5"    16r00 " invalid " 
+                   "16r00B6"    16r00 " invalid " 
+                   "16r00B7"    16r9E " MIDDLE DOT " 
+                   ] at:(unicode - 159).
+                t == 0 ifFalse:[^ t].
+                ^ self encodingError
+                ] value.
+            ].
+            unicode <= 246 ifTrue:[
+                ^ self encodingError.
+            ].
+            ^ 
+#[
+               "16r00F7"    16r9F " DIVISION SIGN " 
+               ] at:(unicode - 246).
+        ].
+        unicode <= 1024 ifTrue:[
+            ^ self encodingError.
+        ].
+        [
+        |t|
+        t := 
+#[
+           "16r0401"    16rB3 " CYRILLIC CAPITAL LETTER IO " 
+           "16r0402"    16r00 " invalid " 
+           "16r0403"    16r00 " invalid " 
+           "16r0404"    16r00 " invalid " 
+           "16r0405"    16r00 " invalid " 
+           "16r0406"    16r00 " invalid " 
+           "16r0407"    16r00 " invalid " 
+           "16r0408"    16r00 " invalid " 
+           "16r0409"    16r00 " invalid " 
+           "16r040A"    16r00 " invalid " 
+           "16r040B"    16r00 " invalid " 
+           "16r040C"    16r00 " invalid " 
+           "16r040D"    16r00 " invalid " 
+           "16r040E"    16r00 " invalid " 
+           "16r040F"    16r00 " invalid " 
+           "16r0410"    16rE1 " CYRILLIC CAPITAL LETTER A " 
+           "16r0411"    16rE2 " CYRILLIC CAPITAL LETTER BE " 
+           "16r0412"    16rF7 " CYRILLIC CAPITAL LETTER VE " 
+           "16r0413"    16rE7 " CYRILLIC CAPITAL LETTER GHE " 
+           "16r0414"    16rE4 " CYRILLIC CAPITAL LETTER DE " 
+           "16r0415"    16rE5 " CYRILLIC CAPITAL LETTER IE " 
+           "16r0416"    16rF6 " CYRILLIC CAPITAL LETTER ZHE " 
+           "16r0417"    16rFA " CYRILLIC CAPITAL LETTER ZE " 
+           "16r0418"    16rE9 " CYRILLIC CAPITAL LETTER I " 
+           "16r0419"    16rEA " CYRILLIC CAPITAL LETTER SHORT I " 
+           "16r041A"    16rEB " CYRILLIC CAPITAL LETTER KA " 
+           "16r041B"    16rEC " CYRILLIC CAPITAL LETTER EL " 
+           "16r041C"    16rED " CYRILLIC CAPITAL LETTER EM " 
+           "16r041D"    16rEE " CYRILLIC CAPITAL LETTER EN " 
+           "16r041E"    16rEF " CYRILLIC CAPITAL LETTER O " 
+           "16r041F"    16rF0 " CYRILLIC CAPITAL LETTER PE " 
+           "16r0420"    16rF2 " CYRILLIC CAPITAL LETTER ER " 
+           "16r0421"    16rF3 " CYRILLIC CAPITAL LETTER ES " 
+           "16r0422"    16rF4 " CYRILLIC CAPITAL LETTER TE " 
+           "16r0423"    16rF5 " CYRILLIC CAPITAL LETTER U " 
+           "16r0424"    16rE6 " CYRILLIC CAPITAL LETTER EF " 
+           "16r0425"    16rE8 " CYRILLIC CAPITAL LETTER HA " 
+           "16r0426"    16rE3 " CYRILLIC CAPITAL LETTER TSE " 
+           "16r0427"    16rFE " CYRILLIC CAPITAL LETTER CHE " 
+           "16r0428"    16rFB " CYRILLIC CAPITAL LETTER SHA " 
+           "16r0429"    16rFD " CYRILLIC CAPITAL LETTER SHCHA " 
+           "16r042A"    16rFF " CYRILLIC CAPITAL LETTER HARD SIGN " 
+           "16r042B"    16rF9 " CYRILLIC CAPITAL LETTER YERU " 
+           "16r042C"    16rF8 " CYRILLIC CAPITAL LETTER SOFT SIGN " 
+           "16r042D"    16rFC " CYRILLIC CAPITAL LETTER E " 
+           "16r042E"    16rE0 " CYRILLIC CAPITAL LETTER YU " 
+           "16r042F"    16rF1 " CYRILLIC CAPITAL LETTER YA " 
+           "16r0430"    16rC1 " CYRILLIC SMALL LETTER A " 
+           "16r0431"    16rC2 " CYRILLIC SMALL LETTER BE " 
+           "16r0432"    16rD7 " CYRILLIC SMALL LETTER VE " 
+           "16r0433"    16rC7 " CYRILLIC SMALL LETTER GHE " 
+           "16r0434"    16rC4 " CYRILLIC SMALL LETTER DE " 
+           "16r0435"    16rC5 " CYRILLIC SMALL LETTER IE " 
+           "16r0436"    16rD6 " CYRILLIC SMALL LETTER ZHE " 
+           "16r0437"    16rDA " CYRILLIC SMALL LETTER ZE " 
+           "16r0438"    16rC9 " CYRILLIC SMALL LETTER I " 
+           "16r0439"    16rCA " CYRILLIC SMALL LETTER SHORT I " 
+           "16r043A"    16rCB " CYRILLIC SMALL LETTER KA " 
+           "16r043B"    16rCC " CYRILLIC SMALL LETTER EL " 
+           "16r043C"    16rCD " CYRILLIC SMALL LETTER EM " 
+           "16r043D"    16rCE " CYRILLIC SMALL LETTER EN " 
+           "16r043E"    16rCF " CYRILLIC SMALL LETTER O " 
+           "16r043F"    16rD0 " CYRILLIC SMALL LETTER PE " 
+           "16r0440"    16rD2 " CYRILLIC SMALL LETTER ER " 
+           "16r0441"    16rD3 " CYRILLIC SMALL LETTER ES " 
+           "16r0442"    16rD4 " CYRILLIC SMALL LETTER TE " 
+           "16r0443"    16rD5 " CYRILLIC SMALL LETTER U " 
+           "16r0444"    16rC6 " CYRILLIC SMALL LETTER EF " 
+           "16r0445"    16rC8 " CYRILLIC SMALL LETTER HA " 
+           "16r0446"    16rC3 " CYRILLIC SMALL LETTER TSE " 
+           "16r0447"    16rDE " CYRILLIC SMALL LETTER CHE " 
+           "16r0448"    16rDB " CYRILLIC SMALL LETTER SHA " 
+           "16r0449"    16rDD " CYRILLIC SMALL LETTER SHCHA " 
+           "16r044A"    16rDF " CYRILLIC SMALL LETTER HARD SIGN " 
+           "16r044B"    16rD9 " CYRILLIC SMALL LETTER YERU " 
+           "16r044C"    16rD8 " CYRILLIC SMALL LETTER SOFT SIGN " 
+           "16r044D"    16rDC " CYRILLIC SMALL LETTER E " 
+           "16r044E"    16rC0 " CYRILLIC SMALL LETTER YU " 
+           "16r044F"    16rD1 " CYRILLIC SMALL LETTER YA " 
+           "16r0450"    16r00 " invalid " 
+           "16r0451"    16rA3 " CYRILLIC SMALL LETTER IO " 
+           ] at:(unicode - 1024).
+        t == 0 ifFalse:[^ t].
+        ^ self encodingError
+        ] value.
+    ].
+    unicode <= 8728 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode < 8994 ifTrue:[
+        unicode < 8806 ifTrue:[
+            [
+            |t|
+            t := 
+#[
+               "16r2219"    16r95 " BULLET OPERATOR " 
+               "16r221A"    16r96 " SQUARE ROOT " 
+               "16r221B"    16r00 " invalid " 
+               "16r221C"    16r00 " invalid " 
+               "16r221D"    16r00 " invalid " 
+               "16r221E"    16r00 " invalid " 
+               "16r221F"    16r00 " invalid " 
+               "16r2220"    16r00 " invalid " 
+               "16r2221"    16r00 " invalid " 
+               "16r2222"    16r00 " invalid " 
+               "16r2223"    16r00 " invalid " 
+               "16r2224"    16r00 " invalid " 
+               "16r2225"    16r00 " invalid " 
+               "16r2226"    16r00 " invalid " 
+               "16r2227"    16r00 " invalid " 
+               "16r2228"    16r00 " invalid " 
+               "16r2229"    16r00 " invalid " 
+               "16r222A"    16r00 " invalid " 
+               "16r222B"    16r00 " invalid " 
+               "16r222C"    16r00 " invalid " 
+               "16r222D"    16r00 " invalid " 
+               "16r222E"    16r00 " invalid " 
+               "16r222F"    16r00 " invalid " 
+               "16r2230"    16r00 " invalid " 
+               "16r2231"    16r00 " invalid " 
+               "16r2232"    16r00 " invalid " 
+               "16r2233"    16r00 " invalid " 
+               "16r2234"    16r00 " invalid " 
+               "16r2235"    16r00 " invalid " 
+               "16r2236"    16r00 " invalid " 
+               "16r2237"    16r00 " invalid " 
+               "16r2238"    16r00 " invalid " 
+               "16r2239"    16r00 " invalid " 
+               "16r223A"    16r00 " invalid " 
+               "16r223B"    16r00 " invalid " 
+               "16r223C"    16r00 " invalid " 
+               "16r223D"    16r00 " invalid " 
+               "16r223E"    16r00 " invalid " 
+               "16r223F"    16r00 " invalid " 
+               "16r2240"    16r00 " invalid " 
+               "16r2241"    16r00 " invalid " 
+               "16r2242"    16r00 " invalid " 
+               "16r2243"    16r00 " invalid " 
+               "16r2244"    16r00 " invalid " 
+               "16r2245"    16r00 " invalid " 
+               "16r2246"    16r00 " invalid " 
+               "16r2247"    16r00 " invalid " 
+               "16r2248"    16r97 " ALMOST EQUAL TO " 
+               "16r2249"    16r00 " invalid " 
+               "16r224A"    16r00 " invalid " 
+               "16r224B"    16r00 " invalid " 
+               "16r224C"    16r00 " invalid " 
+               "16r224D"    16r00 " invalid " 
+               "16r224E"    16r00 " invalid " 
+               "16r224F"    16r00 " invalid " 
+               "16r2250"    16r00 " invalid " 
+               "16r2251"    16r00 " invalid " 
+               "16r2252"    16r00 " invalid " 
+               "16r2253"    16r00 " invalid " 
+               "16r2254"    16r00 " invalid " 
+               "16r2255"    16r00 " invalid " 
+               "16r2256"    16r00 " invalid " 
+               "16r2257"    16r00 " invalid " 
+               "16r2258"    16r00 " invalid " 
+               "16r2259"    16r00 " invalid " 
+               "16r225A"    16r00 " invalid " 
+               "16r225B"    16r00 " invalid " 
+               "16r225C"    16r00 " invalid " 
+               "16r225D"    16r00 " invalid " 
+               "16r225E"    16r00 " invalid " 
+               "16r225F"    16r00 " invalid " 
+               "16r2260"    16r00 " invalid " 
+               "16r2261"    16r00 " invalid " 
+               "16r2262"    16r00 " invalid " 
+               "16r2263"    16r00 " invalid " 
+               "16r2264"    16r98 " LESS-THAN OR EQUAL TO " 
+               "16r2265"    16r99 " GREATER-THAN OR EQUAL TO " 
+               ] at:(unicode - 8728).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+            ] value.
+        ].
+        unicode <= 8991 ifTrue:[
+            ^ self encodingError.
+        ].
+        ^ 
+#[
+           "16r2320"    16r93 " TOP HALF INTEGRAL " 
+           "16r2321"    16r9B " BOTTOM HALF INTEGRAL " 
+           ] at:(unicode - 8991).
+    ].
+    unicode <= 9471 ifTrue:[
+        ^ self encodingError.
+    ].
+    [
+    |t|
+    t := 
+#[
+       "16r2500"    16r80 " BOX DRAWINGS LIGHT HORIZONTAL " 
+       "16r2501"    16r00 " invalid " 
+       "16r2502"    16r81 " BOX DRAWINGS LIGHT VERTICAL " 
+       "16r2503"    16r00 " invalid " 
+       "16r2504"    16r00 " invalid " 
+       "16r2505"    16r00 " invalid " 
+       "16r2506"    16r00 " invalid " 
+       "16r2507"    16r00 " invalid " 
+       "16r2508"    16r00 " invalid " 
+       "16r2509"    16r00 " invalid " 
+       "16r250A"    16r00 " invalid " 
+       "16r250B"    16r00 " invalid " 
+       "16r250C"    16r82 " BOX DRAWINGS LIGHT DOWN AND RIGHT " 
+       "16r250D"    16r00 " invalid " 
+       "16r250E"    16r00 " invalid " 
+       "16r250F"    16r00 " invalid " 
+       "16r2510"    16r83 " BOX DRAWINGS LIGHT DOWN AND LEFT " 
+       "16r2511"    16r00 " invalid " 
+       "16r2512"    16r00 " invalid " 
+       "16r2513"    16r00 " invalid " 
+       "16r2514"    16r84 " BOX DRAWINGS LIGHT UP AND RIGHT " 
+       "16r2515"    16r00 " invalid " 
+       "16r2516"    16r00 " invalid " 
+       "16r2517"    16r00 " invalid " 
+       "16r2518"    16r85 " BOX DRAWINGS LIGHT UP AND LEFT " 
+       "16r2519"    16r00 " invalid " 
+       "16r251A"    16r00 " invalid " 
+       "16r251B"    16r00 " invalid " 
+       "16r251C"    16r86 " BOX DRAWINGS LIGHT VERTICAL AND RIGHT " 
+       "16r251D"    16r00 " invalid " 
+       "16r251E"    16r00 " invalid " 
+       "16r251F"    16r00 " invalid " 
+       "16r2520"    16r00 " invalid " 
+       "16r2521"    16r00 " invalid " 
+       "16r2522"    16r00 " invalid " 
+       "16r2523"    16r00 " invalid " 
+       "16r2524"    16r87 " BOX DRAWINGS LIGHT VERTICAL AND LEFT " 
+       "16r2525"    16r00 " invalid " 
+       "16r2526"    16r00 " invalid " 
+       "16r2527"    16r00 " invalid " 
+       "16r2528"    16r00 " invalid " 
+       "16r2529"    16r00 " invalid " 
+       "16r252A"    16r00 " invalid " 
+       "16r252B"    16r00 " invalid " 
+       "16r252C"    16r88 " BOX DRAWINGS LIGHT DOWN AND HORIZONTAL " 
+       "16r252D"    16r00 " invalid " 
+       "16r252E"    16r00 " invalid " 
+       "16r252F"    16r00 " invalid " 
+       "16r2530"    16r00 " invalid " 
+       "16r2531"    16r00 " invalid " 
+       "16r2532"    16r00 " invalid " 
+       "16r2533"    16r00 " invalid " 
+       "16r2534"    16r89 " BOX DRAWINGS LIGHT UP AND HORIZONTAL " 
+       "16r2535"    16r00 " invalid " 
+       "16r2536"    16r00 " invalid " 
+       "16r2537"    16r00 " invalid " 
+       "16r2538"    16r00 " invalid " 
+       "16r2539"    16r00 " invalid " 
+       "16r253A"    16r00 " invalid " 
+       "16r253B"    16r00 " invalid " 
+       "16r253C"    16r8A " BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL " 
+       "16r253D"    16r00 " invalid " 
+       "16r253E"    16r00 " invalid " 
+       "16r253F"    16r00 " invalid " 
+       "16r2540"    16r00 " invalid " 
+       "16r2541"    16r00 " invalid " 
+       "16r2542"    16r00 " invalid " 
+       "16r2543"    16r00 " invalid " 
+       "16r2544"    16r00 " invalid " 
+       "16r2545"    16r00 " invalid " 
+       "16r2546"    16r00 " invalid " 
+       "16r2547"    16r00 " invalid " 
+       "16r2548"    16r00 " invalid " 
+       "16r2549"    16r00 " invalid " 
+       "16r254A"    16r00 " invalid " 
+       "16r254B"    16r00 " invalid " 
+       "16r254C"    16r00 " invalid " 
+       "16r254D"    16r00 " invalid " 
+       "16r254E"    16r00 " invalid " 
+       "16r254F"    16r00 " invalid " 
+       "16r2550"    16rA0 " BOX DRAWINGS DOUBLE HORIZONTAL " 
+       "16r2551"    16rA1 " BOX DRAWINGS DOUBLE VERTICAL " 
+       "16r2552"    16rA2 " BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE " 
+       "16r2553"    16rA4 " BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE " 
+       "16r2554"    16rA5 " BOX DRAWINGS DOUBLE DOWN AND RIGHT " 
+       "16r2555"    16rA6 " BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE " 
+       "16r2556"    16rA7 " BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE " 
+       "16r2557"    16rA8 " BOX DRAWINGS DOUBLE DOWN AND LEFT " 
+       "16r2558"    16rA9 " BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE " 
+       "16r2559"    16rAA " BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE " 
+       "16r255A"    16rAB " BOX DRAWINGS DOUBLE UP AND RIGHT " 
+       "16r255B"    16rAC " BOX DRAWINGS UP SINGLE AND LEFT DOUBLE " 
+       "16r255C"    16rAD " BOX DRAWINGS UP DOUBLE AND LEFT SINGLE " 
+       "16r255D"    16rAE " BOX DRAWINGS DOUBLE UP AND LEFT " 
+       "16r255E"    16rAF " BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE " 
+       "16r255F"    16rB0 " BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE " 
+       "16r2560"    16rB1 " BOX DRAWINGS DOUBLE VERTICAL AND RIGHT " 
+       "16r2561"    16rB2 " BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE " 
+       "16r2562"    16rB4 " BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE " 
+       "16r2563"    16rB5 " BOX DRAWINGS DOUBLE VERTICAL AND LEFT " 
+       "16r2564"    16rB6 " BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE " 
+       "16r2565"    16rB7 " BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE " 
+       "16r2566"    16rB8 " BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL " 
+       "16r2567"    16rB9 " BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE " 
+       "16r2568"    16rBA " BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE " 
+       "16r2569"    16rBB " BOX DRAWINGS DOUBLE UP AND HORIZONTAL " 
+       "16r256A"    16rBC " BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE " 
+       "16r256B"    16rBD " BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE " 
+       "16r256C"    16rBE " BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL " 
+       "16r256D"    16r00 " invalid " 
+       "16r256E"    16r00 " invalid " 
+       "16r256F"    16r00 " invalid " 
+       "16r2570"    16r00 " invalid " 
+       "16r2571"    16r00 " invalid " 
+       "16r2572"    16r00 " invalid " 
+       "16r2573"    16r00 " invalid " 
+       "16r2574"    16r00 " invalid " 
+       "16r2575"    16r00 " invalid " 
+       "16r2576"    16r00 " invalid " 
+       "16r2577"    16r00 " invalid " 
+       "16r2578"    16r00 " invalid " 
+       "16r2579"    16r00 " invalid " 
+       "16r257A"    16r00 " invalid " 
+       "16r257B"    16r00 " invalid " 
+       "16r257C"    16r00 " invalid " 
+       "16r257D"    16r00 " invalid " 
+       "16r257E"    16r00 " invalid " 
+       "16r257F"    16r00 " invalid " 
+       "16r2580"    16r8B " UPPER HALF BLOCK " 
+       "16r2581"    16r00 " invalid " 
+       "16r2582"    16r00 " invalid " 
+       "16r2583"    16r00 " invalid " 
+       "16r2584"    16r8C " LOWER HALF BLOCK " 
+       "16r2585"    16r00 " invalid " 
+       "16r2586"    16r00 " invalid " 
+       "16r2587"    16r00 " invalid " 
+       "16r2588"    16r8D " FULL BLOCK " 
+       "16r2589"    16r00 " invalid " 
+       "16r258A"    16r00 " invalid " 
+       "16r258B"    16r00 " invalid " 
+       "16r258C"    16r8E " LEFT HALF BLOCK " 
+       "16r258D"    16r00 " invalid " 
+       "16r258E"    16r00 " invalid " 
+       "16r258F"    16r00 " invalid " 
+       "16r2590"    16r8F " RIGHT HALF BLOCK " 
+       "16r2591"    16r90 " LIGHT SHADE " 
+       "16r2592"    16r91 " MEDIUM SHADE " 
+       "16r2593"    16r92 " DARK SHADE " 
+       "16r2594"    16r00 " invalid " 
+       "16r2595"    16r00 " invalid " 
+       "16r2596"    16r00 " invalid " 
+       "16r2597"    16r00 " invalid " 
+       "16r2598"    16r00 " invalid " 
+       "16r2599"    16r00 " invalid " 
+       "16r259A"    16r00 " invalid " 
+       "16r259B"    16r00 " invalid " 
+       "16r259C"    16r00 " invalid " 
+       "16r259D"    16r00 " invalid " 
+       "16r259E"    16r00 " invalid " 
+       "16r259F"    16r00 " invalid " 
+       "16r25A0"    16r94 " BLACK SQUARE " 
+       ] at:(unicode - 9471).
+    t == 0 ifFalse:[^ t].
+    ^ self encodingError
+    ] value.
 ! !
 
 !CharacterEncoder::KOI8_U class methodsFor:'mapping'!
@@ -8077,7 +24843,7 @@
 "
 !
 
-mappingURL2_baseName
+mappingURL2_relativePathName
     ^ 'KOI8-U'
 ! !
 
@@ -8088,8 +24854,8 @@
 
     code < 128 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r0080"    16r2500 " BOX DRAWINGS LIGHT HORIZONTAL " 
@@ -8225,8 +24991,8 @@
 
 !CharacterEncoder::KSC5601 class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/KSC5601.TXT'
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/KSC/KSC5601.TXT'
 ! !
 
 !CharacterEncoder::MAC_Arabic class methodsFor:'mapping'!
@@ -8516,18 +25282,18 @@
 #   context (that is, when the first 'strong' character on either side
 #   of the digit sequence is Arabic, or there is no strong character):
 #
-#     0x2C	0x066C	# ARABIC THOUSANDS SEPARATOR
-#     0x2E	0x066B	# ARABIC DECIMAL SEPARATOR
-#     0x30	0x0660	# ARABIC-INDIC DIGIT ZERO
-#     0x31	0x0661	# ARABIC-INDIC DIGIT ONE
-#     0x32	0x0662	# ARABIC-INDIC DIGIT TWO
-#     0x33	0x0663	# ARABIC-INDIC DIGIT THREE
-#     0x34	0x0664	# ARABIC-INDIC DIGIT FOUR
-#     0x35	0x0665	# ARABIC-INDIC DIGIT FIVE
-#     0x36	0x0666	# ARABIC-INDIC DIGIT SIX
-#     0x37	0x0667	# ARABIC-INDIC DIGIT SEVEN
-#     0x38	0x0668	# ARABIC-INDIC DIGIT EIGHT
-#     0x39	0x0669	# ARABIC-INDIC DIGIT NINE
+#     0x2C      0x066C  # ARABIC THOUSANDS SEPARATOR
+#     0x2E      0x066B  # ARABIC DECIMAL SEPARATOR
+#     0x30      0x0660  # ARABIC-INDIC DIGIT ZERO
+#     0x31      0x0661  # ARABIC-INDIC DIGIT ONE
+#     0x32      0x0662  # ARABIC-INDIC DIGIT TWO
+#     0x33      0x0663  # ARABIC-INDIC DIGIT THREE
+#     0x34      0x0664  # ARABIC-INDIC DIGIT FOUR
+#     0x35      0x0665  # ARABIC-INDIC DIGIT FIVE
+#     0x36      0x0666  # ARABIC-INDIC DIGIT SIX
+#     0x37      0x0667  # ARABIC-INDIC DIGIT SEVEN
+#     0x38      0x0668  # ARABIC-INDIC DIGIT EIGHT
+#     0x39      0x0669  # ARABIC-INDIC DIGIT NINE
 #
 # Details of mapping changes in each version:
 # -------------------------------------------
@@ -8541,236 +25307,236 @@
 #
 ##################
 
-0x20	<LR>+0x0020	# SPACE, left-right
-0x21	<LR>+0x0021	# EXCLAMATION MARK, left-right
-0x22	<LR>+0x0022	# QUOTATION MARK, left-right
-0x23	<LR>+0x0023	# NUMBER SIGN, left-right
-0x24	<LR>+0x0024	# DOLLAR SIGN, left-right
-0x25	<LR>+0x0025	# PERCENT SIGN, left-right
-0x26	<LR>+0x0026	# AMPERSAND, left-right
-0x27	<LR>+0x0027	# APOSTROPHE, left-right
-0x28	<LR>+0x0028	# LEFT PARENTHESIS, left-right
-0x29	<LR>+0x0029	# RIGHT PARENTHESIS, left-right
-0x2A	<LR>+0x002A	# ASTERISK, left-right
-0x2B	<LR>+0x002B	# PLUS SIGN, left-right
-0x2C	<LR>+0x002C	# COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-0x2D	<LR>+0x002D	# HYPHEN-MINUS, left-right
-0x2E	<LR>+0x002E	# FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-0x2F	<LR>+0x002F	# SOLIDUS, left-right
-0x30	0x0030	# DIGIT ZERO;  in Arabic-script context, displayed as 0x0660 ARABIC-INDIC DIGIT ZERO
-0x31	0x0031	# DIGIT ONE;   in Arabic-script context, displayed as 0x0661 ARABIC-INDIC DIGIT ONE
-0x32	0x0032	# DIGIT TWO;   in Arabic-script context, displayed as 0x0662 ARABIC-INDIC DIGIT TWO
-0x33	0x0033	# DIGIT THREE; in Arabic-script context, displayed as 0x0663 ARABIC-INDIC DIGIT THREE
-0x34	0x0034	# DIGIT FOUR;  in Arabic-script context, displayed as 0x0664 ARABIC-INDIC DIGIT FOUR
-0x35	0x0035	# DIGIT FIVE;  in Arabic-script context, displayed as 0x0665 ARABIC-INDIC DIGIT FIVE
-0x36	0x0036	# DIGIT SIX;   in Arabic-script context, displayed as 0x0666 ARABIC-INDIC DIGIT SIX
-0x37	0x0037	# DIGIT SEVEN; in Arabic-script context, displayed as 0x0667 ARABIC-INDIC DIGIT SEVEN
-0x38	0x0038	# DIGIT EIGHT; in Arabic-script context, displayed as 0x0668 ARABIC-INDIC DIGIT EIGHT
-0x39	0x0039	# DIGIT NINE;  in Arabic-script context, displayed as 0x0669 ARABIC-INDIC DIGIT NINE
-0x3A	<LR>+0x003A	# COLON, left-right
-0x3B	<LR>+0x003B	# SEMICOLON, left-right
-0x3C	<LR>+0x003C	# LESS-THAN SIGN, left-right
-0x3D	<LR>+0x003D	# EQUALS SIGN, left-right
-0x3E	<LR>+0x003E	# GREATER-THAN SIGN, left-right
-0x3F	<LR>+0x003F	# QUESTION MARK, left-right
-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	<LR>+0x005B	# LEFT SQUARE BRACKET, left-right
-0x5C	<LR>+0x005C	# REVERSE SOLIDUS, left-right
-0x5D	<LR>+0x005D	# RIGHT SQUARE BRACKET, left-right
-0x5E	<LR>+0x005E	# CIRCUMFLEX ACCENT, left-right
-0x5F	<LR>+0x005F	# LOW LINE, left-right
-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	<LR>+0x007B	# LEFT CURLY BRACKET, left-right
-0x7C	<LR>+0x007C	# VERTICAL LINE, left-right
-0x7D	<LR>+0x007D	# RIGHT CURLY BRACKET, left-right
-0x7E	0x007E	# TILDE
-#
-0x80	0x00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS
-0x81	<RL>+0x00A0	# NO-BREAK SPACE, right-left
-0x82	0x00C7	# LATIN CAPITAL LETTER C WITH CEDILLA
-0x83	0x00C9	# LATIN CAPITAL LETTER E WITH ACUTE
-0x84	0x00D1	# LATIN CAPITAL LETTER N WITH TILDE
-0x85	0x00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS
-0x86	0x00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS
-0x87	0x00E1	# LATIN SMALL LETTER A WITH ACUTE
-0x88	0x00E0	# LATIN SMALL LETTER A WITH GRAVE
-0x89	0x00E2	# LATIN SMALL LETTER A WITH CIRCUMFLEX
-0x8A	0x00E4	# LATIN SMALL LETTER A WITH DIAERESIS
-0x8B	0x06BA	# ARABIC LETTER NOON GHUNNA
-0x8C	<RL>+0x00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-0x8D	0x00E7	# LATIN SMALL LETTER C WITH CEDILLA
-0x8E	0x00E9	# LATIN SMALL LETTER E WITH ACUTE
-0x8F	0x00E8	# LATIN SMALL LETTER E WITH GRAVE
-0x90	0x00EA	# LATIN SMALL LETTER E WITH CIRCUMFLEX
-0x91	0x00EB	# LATIN SMALL LETTER E WITH DIAERESIS
-0x92	0x00ED	# LATIN SMALL LETTER I WITH ACUTE
-0x93	<RL>+0x2026	# HORIZONTAL ELLIPSIS, right-left
-0x94	0x00EE	# LATIN SMALL LETTER I WITH CIRCUMFLEX
-0x95	0x00EF	# LATIN SMALL LETTER I WITH DIAERESIS
-0x96	0x00F1	# LATIN SMALL LETTER N WITH TILDE
-0x97	0x00F3	# LATIN SMALL LETTER O WITH ACUTE
-0x98	<RL>+0x00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-0x99	0x00F4	# LATIN SMALL LETTER O WITH CIRCUMFLEX
-0x9A	0x00F6	# LATIN SMALL LETTER O WITH DIAERESIS
-0x9B	<RL>+0x00F7	# DIVISION SIGN, right-left
-0x9C	0x00FA	# LATIN SMALL LETTER U WITH ACUTE
-0x9D	0x00F9	# LATIN SMALL LETTER U WITH GRAVE
-0x9E	0x00FB	# LATIN SMALL LETTER U WITH CIRCUMFLEX
-0x9F	0x00FC	# LATIN SMALL LETTER U WITH DIAERESIS
-0xA0	<RL>+0x0020	# SPACE, right-left
-0xA1	<RL>+0x0021	# EXCLAMATION MARK, right-left
-0xA2	<RL>+0x0022	# QUOTATION MARK, right-left
-0xA3	<RL>+0x0023	# NUMBER SIGN, right-left
-0xA4	<RL>+0x0024	# DOLLAR SIGN, right-left
-0xA5	0x066A	# ARABIC PERCENT SIGN
-0xA6	<RL>+0x0026	# AMPERSAND, right-left
-0xA7	<RL>+0x0027	# APOSTROPHE, right-left
-0xA8	<RL>+0x0028	# LEFT PARENTHESIS, right-left
-0xA9	<RL>+0x0029	# RIGHT PARENTHESIS, right-left
-0xAA	<RL>+0x002A	# ASTERISK, right-left
-0xAB	<RL>+0x002B	# PLUS SIGN, right-left
-0xAC	0x060C	# ARABIC COMMA
-0xAD	<RL>+0x002D	# HYPHEN-MINUS, right-left
-0xAE	<RL>+0x002E	# FULL STOP, right-left
-0xAF	<RL>+0x002F	# SOLIDUS, right-left
-0xB0	<RL>+0x0660	# ARABIC-INDIC DIGIT ZERO, right-left (need override)
-0xB1	<RL>+0x0661	# ARABIC-INDIC DIGIT ONE, right-left (need override)
-0xB2	<RL>+0x0662	# ARABIC-INDIC DIGIT TWO, right-left (need override)
-0xB3	<RL>+0x0663	# ARABIC-INDIC DIGIT THREE, right-left (need override)
-0xB4	<RL>+0x0664	# ARABIC-INDIC DIGIT FOUR, right-left (need override)
-0xB5	<RL>+0x0665	# ARABIC-INDIC DIGIT FIVE, right-left (need override)
-0xB6	<RL>+0x0666	# ARABIC-INDIC DIGIT SIX, right-left (need override)
-0xB7	<RL>+0x0667	# ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-0xB8	<RL>+0x0668	# ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-0xB9	<RL>+0x0669	# ARABIC-INDIC DIGIT NINE, right-left (need override)
-0xBA	<RL>+0x003A	# COLON, right-left
-0xBB	0x061B	# ARABIC SEMICOLON
-0xBC	<RL>+0x003C	# LESS-THAN SIGN, right-left
-0xBD	<RL>+0x003D	# EQUALS SIGN, right-left
-0xBE	<RL>+0x003E	# GREATER-THAN SIGN, right-left
-0xBF	0x061F	# ARABIC QUESTION MARK
-0xC0	<RL>+0x274A	# EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-0xC1	0x0621	# ARABIC LETTER HAMZA
-0xC2	0x0622	# ARABIC LETTER ALEF WITH MADDA ABOVE
-0xC3	0x0623	# ARABIC LETTER ALEF WITH HAMZA ABOVE
-0xC4	0x0624	# ARABIC LETTER WAW WITH HAMZA ABOVE
-0xC5	0x0625	# ARABIC LETTER ALEF WITH HAMZA BELOW
-0xC6	0x0626	# ARABIC LETTER YEH WITH HAMZA ABOVE
-0xC7	0x0627	# ARABIC LETTER ALEF
-0xC8	0x0628	# ARABIC LETTER BEH
-0xC9	0x0629	# ARABIC LETTER TEH MARBUTA
-0xCA	0x062A	# ARABIC LETTER TEH
-0xCB	0x062B	# ARABIC LETTER THEH
-0xCC	0x062C	# ARABIC LETTER JEEM
-0xCD	0x062D	# ARABIC LETTER HAH
-0xCE	0x062E	# ARABIC LETTER KHAH
-0xCF	0x062F	# ARABIC LETTER DAL
-0xD0	0x0630	# ARABIC LETTER THAL
-0xD1	0x0631	# ARABIC LETTER REH
-0xD2	0x0632	# ARABIC LETTER ZAIN
-0xD3	0x0633	# ARABIC LETTER SEEN
-0xD4	0x0634	# ARABIC LETTER SHEEN
-0xD5	0x0635	# ARABIC LETTER SAD
-0xD6	0x0636	# ARABIC LETTER DAD
-0xD7	0x0637	# ARABIC LETTER TAH
-0xD8	0x0638	# ARABIC LETTER ZAH
-0xD9	0x0639	# ARABIC LETTER AIN
-0xDA	0x063A	# ARABIC LETTER GHAIN
-0xDB	<RL>+0x005B	# LEFT SQUARE BRACKET, right-left
-0xDC	<RL>+0x005C	# REVERSE SOLIDUS, right-left
-0xDD	<RL>+0x005D	# RIGHT SQUARE BRACKET, right-left
-0xDE	<RL>+0x005E	# CIRCUMFLEX ACCENT, right-left
-0xDF	<RL>+0x005F	# LOW LINE, right-left
-0xE0	0x0640	# ARABIC TATWEEL
-0xE1	0x0641	# ARABIC LETTER FEH
-0xE2	0x0642	# ARABIC LETTER QAF
-0xE3	0x0643	# ARABIC LETTER KAF
-0xE4	0x0644	# ARABIC LETTER LAM
-0xE5	0x0645	# ARABIC LETTER MEEM
-0xE6	0x0646	# ARABIC LETTER NOON
-0xE7	0x0647	# ARABIC LETTER HEH
-0xE8	0x0648	# ARABIC LETTER WAW
-0xE9	0x0649	# ARABIC LETTER ALEF MAKSURA
-0xEA	0x064A	# ARABIC LETTER YEH
-0xEB	0x064B	# ARABIC FATHATAN
-0xEC	0x064C	# ARABIC DAMMATAN
-0xED	0x064D	# ARABIC KASRATAN
-0xEE	0x064E	# ARABIC FATHA
-0xEF	0x064F	# ARABIC DAMMA
-0xF0	0x0650	# ARABIC KASRA
-0xF1	0x0651	# ARABIC SHADDA
-0xF2	0x0652	# ARABIC SUKUN
-0xF3	0x067E	# ARABIC LETTER PEH
-0xF4	0x0679	# ARABIC LETTER TTEH
-0xF5	0x0686	# ARABIC LETTER TCHEH
-0xF6	0x06D5	# ARABIC LETTER AE
-0xF7	0x06A4	# ARABIC LETTER VEH
-0xF8	0x06AF	# ARABIC LETTER GAF
-0xF9	0x0688	# ARABIC LETTER DDAL
-0xFA	0x0691	# ARABIC LETTER RREH
-0xFB	<RL>+0x007B	# LEFT CURLY BRACKET, right-left
-0xFC	<RL>+0x007C	# VERTICAL LINE, right-left
-0xFD	<RL>+0x007D	# RIGHT CURLY BRACKET, right-left
-0xFE	0x0698	# ARABIC LETTER JEH
-0xFF	0x06D2	# ARABIC LETTER YEH BARREE
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ARABIC.TXT'
+0x20    <LR>+0x0020     # SPACE, left-right
+0x21    <LR>+0x0021     # EXCLAMATION MARK, left-right
+0x22    <LR>+0x0022     # QUOTATION MARK, left-right
+0x23    <LR>+0x0023     # NUMBER SIGN, left-right
+0x24    <LR>+0x0024     # DOLLAR SIGN, left-right
+0x25    <LR>+0x0025     # PERCENT SIGN, left-right
+0x26    <LR>+0x0026     # AMPERSAND, left-right
+0x27    <LR>+0x0027     # APOSTROPHE, left-right
+0x28    <LR>+0x0028     # LEFT PARENTHESIS, left-right
+0x29    <LR>+0x0029     # RIGHT PARENTHESIS, left-right
+0x2A    <LR>+0x002A     # ASTERISK, left-right
+0x2B    <LR>+0x002B     # PLUS SIGN, left-right
+0x2C    <LR>+0x002C     # COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
+0x2D    <LR>+0x002D     # HYPHEN-MINUS, left-right
+0x2E    <LR>+0x002E     # FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
+0x2F    <LR>+0x002F     # SOLIDUS, left-right
+0x30    0x0030  # DIGIT ZERO;  in Arabic-script context, displayed as 0x0660 ARABIC-INDIC DIGIT ZERO
+0x31    0x0031  # DIGIT ONE;   in Arabic-script context, displayed as 0x0661 ARABIC-INDIC DIGIT ONE
+0x32    0x0032  # DIGIT TWO;   in Arabic-script context, displayed as 0x0662 ARABIC-INDIC DIGIT TWO
+0x33    0x0033  # DIGIT THREE; in Arabic-script context, displayed as 0x0663 ARABIC-INDIC DIGIT THREE
+0x34    0x0034  # DIGIT FOUR;  in Arabic-script context, displayed as 0x0664 ARABIC-INDIC DIGIT FOUR
+0x35    0x0035  # DIGIT FIVE;  in Arabic-script context, displayed as 0x0665 ARABIC-INDIC DIGIT FIVE
+0x36    0x0036  # DIGIT SIX;   in Arabic-script context, displayed as 0x0666 ARABIC-INDIC DIGIT SIX
+0x37    0x0037  # DIGIT SEVEN; in Arabic-script context, displayed as 0x0667 ARABIC-INDIC DIGIT SEVEN
+0x38    0x0038  # DIGIT EIGHT; in Arabic-script context, displayed as 0x0668 ARABIC-INDIC DIGIT EIGHT
+0x39    0x0039  # DIGIT NINE;  in Arabic-script context, displayed as 0x0669 ARABIC-INDIC DIGIT NINE
+0x3A    <LR>+0x003A     # COLON, left-right
+0x3B    <LR>+0x003B     # SEMICOLON, left-right
+0x3C    <LR>+0x003C     # LESS-THAN SIGN, left-right
+0x3D    <LR>+0x003D     # EQUALS SIGN, left-right
+0x3E    <LR>+0x003E     # GREATER-THAN SIGN, left-right
+0x3F    <LR>+0x003F     # QUESTION MARK, left-right
+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    <LR>+0x005B     # LEFT SQUARE BRACKET, left-right
+0x5C    <LR>+0x005C     # REVERSE SOLIDUS, left-right
+0x5D    <LR>+0x005D     # RIGHT SQUARE BRACKET, left-right
+0x5E    <LR>+0x005E     # CIRCUMFLEX ACCENT, left-right
+0x5F    <LR>+0x005F     # LOW LINE, left-right
+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    <LR>+0x007B     # LEFT CURLY BRACKET, left-right
+0x7C    <LR>+0x007C     # VERTICAL LINE, left-right
+0x7D    <LR>+0x007D     # RIGHT CURLY BRACKET, left-right
+0x7E    0x007E  # TILDE
+#
+0x80    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x81    <RL>+0x00A0     # NO-BREAK SPACE, right-left
+0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
+0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
+0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
+0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
+0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
+0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
+0x8B    0x06BA  # ARABIC LETTER NOON GHUNNA
+0x8C    <RL>+0x00AB     # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
+0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
+0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
+0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
+0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
+0x93    <RL>+0x2026     # HORIZONTAL ELLIPSIS, right-left
+0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
+0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
+0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
+0x98    <RL>+0x00BB     # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
+0x9B    <RL>+0x00F7     # DIVISION SIGN, right-left
+0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
+0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
+0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
+0xA0    <RL>+0x0020     # SPACE, right-left
+0xA1    <RL>+0x0021     # EXCLAMATION MARK, right-left
+0xA2    <RL>+0x0022     # QUOTATION MARK, right-left
+0xA3    <RL>+0x0023     # NUMBER SIGN, right-left
+0xA4    <RL>+0x0024     # DOLLAR SIGN, right-left
+0xA5    0x066A  # ARABIC PERCENT SIGN
+0xA6    <RL>+0x0026     # AMPERSAND, right-left
+0xA7    <RL>+0x0027     # APOSTROPHE, right-left
+0xA8    <RL>+0x0028     # LEFT PARENTHESIS, right-left
+0xA9    <RL>+0x0029     # RIGHT PARENTHESIS, right-left
+0xAA    <RL>+0x002A     # ASTERISK, right-left
+0xAB    <RL>+0x002B     # PLUS SIGN, right-left
+0xAC    0x060C  # ARABIC COMMA
+0xAD    <RL>+0x002D     # HYPHEN-MINUS, right-left
+0xAE    <RL>+0x002E     # FULL STOP, right-left
+0xAF    <RL>+0x002F     # SOLIDUS, right-left
+0xB0    <RL>+0x0660     # ARABIC-INDIC DIGIT ZERO, right-left (need override)
+0xB1    <RL>+0x0661     # ARABIC-INDIC DIGIT ONE, right-left (need override)
+0xB2    <RL>+0x0662     # ARABIC-INDIC DIGIT TWO, right-left (need override)
+0xB3    <RL>+0x0663     # ARABIC-INDIC DIGIT THREE, right-left (need override)
+0xB4    <RL>+0x0664     # ARABIC-INDIC DIGIT FOUR, right-left (need override)
+0xB5    <RL>+0x0665     # ARABIC-INDIC DIGIT FIVE, right-left (need override)
+0xB6    <RL>+0x0666     # ARABIC-INDIC DIGIT SIX, right-left (need override)
+0xB7    <RL>+0x0667     # ARABIC-INDIC DIGIT SEVEN, right-left (need override)
+0xB8    <RL>+0x0668     # ARABIC-INDIC DIGIT EIGHT, right-left (need override)
+0xB9    <RL>+0x0669     # ARABIC-INDIC DIGIT NINE, right-left (need override)
+0xBA    <RL>+0x003A     # COLON, right-left
+0xBB    0x061B  # ARABIC SEMICOLON
+0xBC    <RL>+0x003C     # LESS-THAN SIGN, right-left
+0xBD    <RL>+0x003D     # EQUALS SIGN, right-left
+0xBE    <RL>+0x003E     # GREATER-THAN SIGN, right-left
+0xBF    0x061F  # ARABIC QUESTION MARK
+0xC0    <RL>+0x274A     # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
+0xC1    0x0621  # ARABIC LETTER HAMZA
+0xC2    0x0622  # ARABIC LETTER ALEF WITH MADDA ABOVE
+0xC3    0x0623  # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0xC4    0x0624  # ARABIC LETTER WAW WITH HAMZA ABOVE
+0xC5    0x0625  # ARABIC LETTER ALEF WITH HAMZA BELOW
+0xC6    0x0626  # ARABIC LETTER YEH WITH HAMZA ABOVE
+0xC7    0x0627  # ARABIC LETTER ALEF
+0xC8    0x0628  # ARABIC LETTER BEH
+0xC9    0x0629  # ARABIC LETTER TEH MARBUTA
+0xCA    0x062A  # ARABIC LETTER TEH
+0xCB    0x062B  # ARABIC LETTER THEH
+0xCC    0x062C  # ARABIC LETTER JEEM
+0xCD    0x062D  # ARABIC LETTER HAH
+0xCE    0x062E  # ARABIC LETTER KHAH
+0xCF    0x062F  # ARABIC LETTER DAL
+0xD0    0x0630  # ARABIC LETTER THAL
+0xD1    0x0631  # ARABIC LETTER REH
+0xD2    0x0632  # ARABIC LETTER ZAIN
+0xD3    0x0633  # ARABIC LETTER SEEN
+0xD4    0x0634  # ARABIC LETTER SHEEN
+0xD5    0x0635  # ARABIC LETTER SAD
+0xD6    0x0636  # ARABIC LETTER DAD
+0xD7    0x0637  # ARABIC LETTER TAH
+0xD8    0x0638  # ARABIC LETTER ZAH
+0xD9    0x0639  # ARABIC LETTER AIN
+0xDA    0x063A  # ARABIC LETTER GHAIN
+0xDB    <RL>+0x005B     # LEFT SQUARE BRACKET, right-left
+0xDC    <RL>+0x005C     # REVERSE SOLIDUS, right-left
+0xDD    <RL>+0x005D     # RIGHT SQUARE BRACKET, right-left
+0xDE    <RL>+0x005E     # CIRCUMFLEX ACCENT, right-left
+0xDF    <RL>+0x005F     # LOW LINE, right-left
+0xE0    0x0640  # ARABIC TATWEEL
+0xE1    0x0641  # ARABIC LETTER FEH
+0xE2    0x0642  # ARABIC LETTER QAF
+0xE3    0x0643  # ARABIC LETTER KAF
+0xE4    0x0644  # ARABIC LETTER LAM
+0xE5    0x0645  # ARABIC LETTER MEEM
+0xE6    0x0646  # ARABIC LETTER NOON
+0xE7    0x0647  # ARABIC LETTER HEH
+0xE8    0x0648  # ARABIC LETTER WAW
+0xE9    0x0649  # ARABIC LETTER ALEF MAKSURA
+0xEA    0x064A  # ARABIC LETTER YEH
+0xEB    0x064B  # ARABIC FATHATAN
+0xEC    0x064C  # ARABIC DAMMATAN
+0xED    0x064D  # ARABIC KASRATAN
+0xEE    0x064E  # ARABIC FATHA
+0xEF    0x064F  # ARABIC DAMMA
+0xF0    0x0650  # ARABIC KASRA
+0xF1    0x0651  # ARABIC SHADDA
+0xF2    0x0652  # ARABIC SUKUN
+0xF3    0x067E  # ARABIC LETTER PEH
+0xF4    0x0679  # ARABIC LETTER TTEH
+0xF5    0x0686  # ARABIC LETTER TCHEH
+0xF6    0x06D5  # ARABIC LETTER AE
+0xF7    0x06A4  # ARABIC LETTER VEH
+0xF8    0x06AF  # ARABIC LETTER GAF
+0xF9    0x0688  # ARABIC LETTER DDAL
+0xFA    0x0691  # ARABIC LETTER RREH
+0xFB    <RL>+0x007B     # LEFT CURLY BRACKET, right-left
+0xFC    <RL>+0x007C     # VERTICAL LINE, right-left
+0xFD    <RL>+0x007D     # RIGHT CURLY BRACKET, right-left
+0xFE    0x0698  # ARABIC LETTER JEH
+0xFF    0x06D2  # ARABIC LETTER YEH BARREE
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/ARABIC.TXT'
 ! !
 
 !CharacterEncoder::MAC_Arabic methodsFor:'encoding & decoding'!
@@ -8780,8 +25546,8 @@
 
     code < 32 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r0020"    16rFFFF
@@ -9340,8 +26106,8 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/CENTEURO.TXT'
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/CENTEURO.TXT'
 ! !
 
 !CharacterEncoder::MAC_CentralEuropean methodsFor:'encoding & decoding'!
@@ -9567,7 +26333,7 @@
 # Notes on Mac OS Croatian:
 # -------------------------
 #
-#	Mac OS Croatian is used for Croatian and Slovene.
+#       Mac OS Croatian is used for Croatian and Slovene.
 #
 #   The Mac OS Croatian encoding shares the script code smRoman
 #   (0) with the standard Mac OS Roman encoding. To determine if
@@ -9614,236 +26380,236 @@
 #
 ##################
 
-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	# REVERSE SOLIDUS
-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
-#
-0x80	0x00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS
-0x81	0x00C5	# LATIN CAPITAL LETTER A WITH RING ABOVE
-0x82	0x00C7	# LATIN CAPITAL LETTER C WITH CEDILLA
-0x83	0x00C9	# LATIN CAPITAL LETTER E WITH ACUTE
-0x84	0x00D1	# LATIN CAPITAL LETTER N WITH TILDE
-0x85	0x00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS
-0x86	0x00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS
-0x87	0x00E1	# LATIN SMALL LETTER A WITH ACUTE
-0x88	0x00E0	# LATIN SMALL LETTER A WITH GRAVE
-0x89	0x00E2	# LATIN SMALL LETTER A WITH CIRCUMFLEX
-0x8A	0x00E4	# LATIN SMALL LETTER A WITH DIAERESIS
-0x8B	0x00E3	# LATIN SMALL LETTER A WITH TILDE
-0x8C	0x00E5	# LATIN SMALL LETTER A WITH RING ABOVE
-0x8D	0x00E7	# LATIN SMALL LETTER C WITH CEDILLA
-0x8E	0x00E9	# LATIN SMALL LETTER E WITH ACUTE
-0x8F	0x00E8	# LATIN SMALL LETTER E WITH GRAVE
-0x90	0x00EA	# LATIN SMALL LETTER E WITH CIRCUMFLEX
-0x91	0x00EB	# LATIN SMALL LETTER E WITH DIAERESIS
-0x92	0x00ED	# LATIN SMALL LETTER I WITH ACUTE
-0x93	0x00EC	# LATIN SMALL LETTER I WITH GRAVE
-0x94	0x00EE	# LATIN SMALL LETTER I WITH CIRCUMFLEX
-0x95	0x00EF	# LATIN SMALL LETTER I WITH DIAERESIS
-0x96	0x00F1	# LATIN SMALL LETTER N WITH TILDE
-0x97	0x00F3	# LATIN SMALL LETTER O WITH ACUTE
-0x98	0x00F2	# LATIN SMALL LETTER O WITH GRAVE
-0x99	0x00F4	# LATIN SMALL LETTER O WITH CIRCUMFLEX
-0x9A	0x00F6	# LATIN SMALL LETTER O WITH DIAERESIS
-0x9B	0x00F5	# LATIN SMALL LETTER O WITH TILDE
-0x9C	0x00FA	# LATIN SMALL LETTER U WITH ACUTE
-0x9D	0x00F9	# LATIN SMALL LETTER U WITH GRAVE
-0x9E	0x00FB	# LATIN SMALL LETTER U WITH CIRCUMFLEX
-0x9F	0x00FC	# LATIN SMALL LETTER U WITH DIAERESIS
-0xA0	0x2020	# DAGGER
-0xA1	0x00B0	# DEGREE SIGN
-0xA2	0x00A2	# CENT SIGN
-0xA3	0x00A3	# POUND SIGN
-0xA4	0x00A7	# SECTION SIGN
-0xA5	0x2022	# BULLET
-0xA6	0x00B6	# PILCROW SIGN
-0xA7	0x00DF	# LATIN SMALL LETTER SHARP S
-0xA8	0x00AE	# REGISTERED SIGN
-0xA9	0x0160	# LATIN CAPITAL LETTER S WITH CARON
-0xAA	0x2122	# TRADE MARK SIGN
-0xAB	0x00B4	# ACUTE ACCENT
-0xAC	0x00A8	# DIAERESIS
-0xAD	0x2260	# NOT EQUAL TO
-0xAE	0x017D	# LATIN CAPITAL LETTER Z WITH CARON
-0xAF	0x00D8	# LATIN CAPITAL LETTER O WITH STROKE
-0xB0	0x221E	# INFINITY
-0xB1	0x00B1	# PLUS-MINUS SIGN
-0xB2	0x2264	# LESS-THAN OR EQUAL TO
-0xB3	0x2265	# GREATER-THAN OR EQUAL TO
-0xB4	0x2206	# INCREMENT
-0xB5	0x00B5	# MICRO SIGN
-0xB6	0x2202	# PARTIAL DIFFERENTIAL
-0xB7	0x2211	# N-ARY SUMMATION
-0xB8	0x220F	# N-ARY PRODUCT
-0xB9	0x0161	# LATIN SMALL LETTER S WITH CARON
-0xBA	0x222B	# INTEGRAL
-0xBB	0x00AA	# FEMININE ORDINAL INDICATOR
-0xBC	0x00BA	# MASCULINE ORDINAL INDICATOR
-0xBD	0x03A9	# GREEK CAPITAL LETTER OMEGA
-0xBE	0x017E	# LATIN SMALL LETTER Z WITH CARON
-0xBF	0x00F8	# LATIN SMALL LETTER O WITH STROKE
-0xC0	0x00BF	# INVERTED QUESTION MARK
-0xC1	0x00A1	# INVERTED EXCLAMATION MARK
-0xC2	0x00AC	# NOT SIGN
-0xC3	0x221A	# SQUARE ROOT
-0xC4	0x0192	# LATIN SMALL LETTER F WITH HOOK
-0xC5	0x2248	# ALMOST EQUAL TO
-0xC6	0x0106	# LATIN CAPITAL LETTER C WITH ACUTE
-0xC7	0x00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xC8	0x010C	# LATIN CAPITAL LETTER C WITH CARON
-0xC9	0x2026	# HORIZONTAL ELLIPSIS
-0xCA	0x00A0	# NO-BREAK SPACE
-0xCB	0x00C0	# LATIN CAPITAL LETTER A WITH GRAVE
-0xCC	0x00C3	# LATIN CAPITAL LETTER A WITH TILDE
-0xCD	0x00D5	# LATIN CAPITAL LETTER O WITH TILDE
-0xCE	0x0152	# LATIN CAPITAL LIGATURE OE
-0xCF	0x0153	# LATIN SMALL LIGATURE OE
-0xD0	0x0110	# LATIN CAPITAL LETTER D WITH STROKE
-0xD1	0x2014	# EM DASH
-0xD2	0x201C	# LEFT DOUBLE QUOTATION MARK
-0xD3	0x201D	# RIGHT DOUBLE QUOTATION MARK
-0xD4	0x2018	# LEFT SINGLE QUOTATION MARK
-0xD5	0x2019	# RIGHT SINGLE QUOTATION MARK
-0xD6	0x00F7	# DIVISION SIGN
-0xD7	0x25CA	# LOZENGE
-0xD8	0xF8FF	# Apple logo
-0xD9	0x00A9	# COPYRIGHT SIGN
-0xDA	0x2044	# FRACTION SLASH
-0xDB	0x20AC	# EURO SIGN
-0xDC	0x2039	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0xDD	0x203A	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0xDE	0x00C6	# LATIN CAPITAL LETTER AE
-0xDF	0x00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xE0	0x2013	# EN DASH
-0xE1	0x00B7	# MIDDLE DOT
-0xE2	0x201A	# SINGLE LOW-9 QUOTATION MARK
-0xE3	0x201E	# DOUBLE LOW-9 QUOTATION MARK
-0xE4	0x2030	# PER MILLE SIGN
-0xE5	0x00C2	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xE6	0x0107	# LATIN SMALL LETTER C WITH ACUTE
-0xE7	0x00C1	# LATIN CAPITAL LETTER A WITH ACUTE
-0xE8	0x010D	# LATIN SMALL LETTER C WITH CARON
-0xE9	0x00C8	# LATIN CAPITAL LETTER E WITH GRAVE
-0xEA	0x00CD	# LATIN CAPITAL LETTER I WITH ACUTE
-0xEB	0x00CE	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xEC	0x00CF	# LATIN CAPITAL LETTER I WITH DIAERESIS
-0xED	0x00CC	# LATIN CAPITAL LETTER I WITH GRAVE
-0xEE	0x00D3	# LATIN CAPITAL LETTER O WITH ACUTE
-0xEF	0x00D4	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xF0	0x0111	# LATIN SMALL LETTER D WITH STROKE
-0xF1	0x00D2	# LATIN CAPITAL LETTER O WITH GRAVE
-0xF2	0x00DA	# LATIN CAPITAL LETTER U WITH ACUTE
-0xF3	0x00DB	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xF4	0x00D9	# LATIN CAPITAL LETTER U WITH GRAVE
-0xF5	0x0131	# LATIN SMALL LETTER DOTLESS I
-0xF6	0x02C6	# MODIFIER LETTER CIRCUMFLEX ACCENT
-0xF7	0x02DC	# SMALL TILDE
-0xF8	0x00AF	# MACRON
-0xF9	0x03C0	# GREEK SMALL LETTER PI
-0xFA	0x00CB	# LATIN CAPITAL LETTER E WITH DIAERESIS
-0xFB	0x02DA	# RING ABOVE
-0xFC	0x00B8	# CEDILLA
-0xFD	0x00CA	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xFE	0x00E6	# LATIN SMALL LETTER AE
-0xFF	0x02C7	# CARON
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/CROATIAN.TXT'
+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  # REVERSE SOLIDUS
+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
+#
+0x80    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x81    0x00C5  # LATIN CAPITAL LETTER A WITH RING ABOVE
+0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
+0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
+0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
+0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
+0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
+0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
+0x8B    0x00E3  # LATIN SMALL LETTER A WITH TILDE
+0x8C    0x00E5  # LATIN SMALL LETTER A WITH RING ABOVE
+0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
+0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
+0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
+0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
+0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
+0x93    0x00EC  # LATIN SMALL LETTER I WITH GRAVE
+0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
+0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
+0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
+0x98    0x00F2  # LATIN SMALL LETTER O WITH GRAVE
+0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
+0x9B    0x00F5  # LATIN SMALL LETTER O WITH TILDE
+0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
+0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
+0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
+0xA0    0x2020  # DAGGER
+0xA1    0x00B0  # DEGREE SIGN
+0xA2    0x00A2  # CENT SIGN
+0xA3    0x00A3  # POUND SIGN
+0xA4    0x00A7  # SECTION SIGN
+0xA5    0x2022  # BULLET
+0xA6    0x00B6  # PILCROW SIGN
+0xA7    0x00DF  # LATIN SMALL LETTER SHARP S
+0xA8    0x00AE  # REGISTERED SIGN
+0xA9    0x0160  # LATIN CAPITAL LETTER S WITH CARON
+0xAA    0x2122  # TRADE MARK SIGN
+0xAB    0x00B4  # ACUTE ACCENT
+0xAC    0x00A8  # DIAERESIS
+0xAD    0x2260  # NOT EQUAL TO
+0xAE    0x017D  # LATIN CAPITAL LETTER Z WITH CARON
+0xAF    0x00D8  # LATIN CAPITAL LETTER O WITH STROKE
+0xB0    0x221E  # INFINITY
+0xB1    0x00B1  # PLUS-MINUS SIGN
+0xB2    0x2264  # LESS-THAN OR EQUAL TO
+0xB3    0x2265  # GREATER-THAN OR EQUAL TO
+0xB4    0x2206  # INCREMENT
+0xB5    0x00B5  # MICRO SIGN
+0xB6    0x2202  # PARTIAL DIFFERENTIAL
+0xB7    0x2211  # N-ARY SUMMATION
+0xB8    0x220F  # N-ARY PRODUCT
+0xB9    0x0161  # LATIN SMALL LETTER S WITH CARON
+0xBA    0x222B  # INTEGRAL
+0xBB    0x00AA  # FEMININE ORDINAL INDICATOR
+0xBC    0x00BA  # MASCULINE ORDINAL INDICATOR
+0xBD    0x03A9  # GREEK CAPITAL LETTER OMEGA
+0xBE    0x017E  # LATIN SMALL LETTER Z WITH CARON
+0xBF    0x00F8  # LATIN SMALL LETTER O WITH STROKE
+0xC0    0x00BF  # INVERTED QUESTION MARK
+0xC1    0x00A1  # INVERTED EXCLAMATION MARK
+0xC2    0x00AC  # NOT SIGN
+0xC3    0x221A  # SQUARE ROOT
+0xC4    0x0192  # LATIN SMALL LETTER F WITH HOOK
+0xC5    0x2248  # ALMOST EQUAL TO
+0xC6    0x0106  # LATIN CAPITAL LETTER C WITH ACUTE
+0xC7    0x00AB  # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC8    0x010C  # LATIN CAPITAL LETTER C WITH CARON
+0xC9    0x2026  # HORIZONTAL ELLIPSIS
+0xCA    0x00A0  # NO-BREAK SPACE
+0xCB    0x00C0  # LATIN CAPITAL LETTER A WITH GRAVE
+0xCC    0x00C3  # LATIN CAPITAL LETTER A WITH TILDE
+0xCD    0x00D5  # LATIN CAPITAL LETTER O WITH TILDE
+0xCE    0x0152  # LATIN CAPITAL LIGATURE OE
+0xCF    0x0153  # LATIN SMALL LIGATURE OE
+0xD0    0x0110  # LATIN CAPITAL LETTER D WITH STROKE
+0xD1    0x2014  # EM DASH
+0xD2    0x201C  # LEFT DOUBLE QUOTATION MARK
+0xD3    0x201D  # RIGHT DOUBLE QUOTATION MARK
+0xD4    0x2018  # LEFT SINGLE QUOTATION MARK
+0xD5    0x2019  # RIGHT SINGLE QUOTATION MARK
+0xD6    0x00F7  # DIVISION SIGN
+0xD7    0x25CA  # LOZENGE
+0xD8    0xF8FF  # Apple logo
+0xD9    0x00A9  # COPYRIGHT SIGN
+0xDA    0x2044  # FRACTION SLASH
+0xDB    0x20AC  # EURO SIGN
+0xDC    0x2039  # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+0xDD    0x203A  # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0xDE    0x00C6  # LATIN CAPITAL LETTER AE
+0xDF    0x00BB  # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xE0    0x2013  # EN DASH
+0xE1    0x00B7  # MIDDLE DOT
+0xE2    0x201A  # SINGLE LOW-9 QUOTATION MARK
+0xE3    0x201E  # DOUBLE LOW-9 QUOTATION MARK
+0xE4    0x2030  # PER MILLE SIGN
+0xE5    0x00C2  # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xE6    0x0107  # LATIN SMALL LETTER C WITH ACUTE
+0xE7    0x00C1  # LATIN CAPITAL LETTER A WITH ACUTE
+0xE8    0x010D  # LATIN SMALL LETTER C WITH CARON
+0xE9    0x00C8  # LATIN CAPITAL LETTER E WITH GRAVE
+0xEA    0x00CD  # LATIN CAPITAL LETTER I WITH ACUTE
+0xEB    0x00CE  # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xEC    0x00CF  # LATIN CAPITAL LETTER I WITH DIAERESIS
+0xED    0x00CC  # LATIN CAPITAL LETTER I WITH GRAVE
+0xEE    0x00D3  # LATIN CAPITAL LETTER O WITH ACUTE
+0xEF    0x00D4  # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xF0    0x0111  # LATIN SMALL LETTER D WITH STROKE
+0xF1    0x00D2  # LATIN CAPITAL LETTER O WITH GRAVE
+0xF2    0x00DA  # LATIN CAPITAL LETTER U WITH ACUTE
+0xF3    0x00DB  # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xF4    0x00D9  # LATIN CAPITAL LETTER U WITH GRAVE
+0xF5    0x0131  # LATIN SMALL LETTER DOTLESS I
+0xF6    0x02C6  # MODIFIER LETTER CIRCUMFLEX ACCENT
+0xF7    0x02DC  # SMALL TILDE
+0xF8    0x00AF  # MACRON
+0xF9    0x03C0  # GREEK SMALL LETTER PI
+0xFA    0x00CB  # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xFB    0x02DA  # RING ABOVE
+0xFC    0x00B8  # CEDILLA
+0xFD    0x00CA  # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xFE    0x00E6  # LATIN SMALL LETTER AE
+0xFF    0x02C7  # CARON
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/CROATIAN.TXT'
 ! !
 
 !CharacterEncoder::MAC_Croatian methodsFor:'encoding & decoding'!
@@ -9853,8 +26619,8 @@
 
     code < 127 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r007F"    16rFFFF " invalid " 
@@ -10073,16 +26839,16 @@
 #
 #   1. The Cyrillic currency sign variant (used for localized Russian
 #      and Bulgarian systems), which had the following:
-#	    0xA2  U+00A2 CENT SIGN
-#	    0xB6  U+2202 PARTIAL DIFFERENTIAL
-#	    0xFF  U+00A4 CURRENCY SIGN
+#           0xA2  U+00A2 CENT SIGN
+#           0xB6  U+2202 PARTIAL DIFFERENTIAL
+#           0xFF  U+00A4 CURRENCY SIGN
 #
 #   2. The Ukrainian currency sign variant (used for localized Ukrainian
 #      systems and the pre-9.0 Cyrillic Language Kit), which had the
 #      following:
-#	    0xA2  U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-#	    0xB6  U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
-#	    0xFF  U+00A4 CURRENCY SIGN
+#           0xA2  U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+#           0xB6  U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
+#           0xFF  U+00A4 CURRENCY SIGN
 #
 #   This new Cyrillic Euro sign version is based on the old Ukrainian
 #   currency sign variant, with 0xFF changed to be EURO SIGN.
@@ -10115,236 +26881,236 @@
 #
 ##################
 
-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	# REVERSE SOLIDUS
-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
-#
-0x80	0x0410	# CYRILLIC CAPITAL LETTER A
-0x81	0x0411	# CYRILLIC CAPITAL LETTER BE
-0x82	0x0412	# CYRILLIC CAPITAL LETTER VE
-0x83	0x0413	# CYRILLIC CAPITAL LETTER GHE
-0x84	0x0414	# CYRILLIC CAPITAL LETTER DE
-0x85	0x0415	# CYRILLIC CAPITAL LETTER IE
-0x86	0x0416	# CYRILLIC CAPITAL LETTER ZHE
-0x87	0x0417	# CYRILLIC CAPITAL LETTER ZE
-0x88	0x0418	# CYRILLIC CAPITAL LETTER I
-0x89	0x0419	# CYRILLIC CAPITAL LETTER SHORT I
-0x8A	0x041A	# CYRILLIC CAPITAL LETTER KA
-0x8B	0x041B	# CYRILLIC CAPITAL LETTER EL
-0x8C	0x041C	# CYRILLIC CAPITAL LETTER EM
-0x8D	0x041D	# CYRILLIC CAPITAL LETTER EN
-0x8E	0x041E	# CYRILLIC CAPITAL LETTER O
-0x8F	0x041F	# CYRILLIC CAPITAL LETTER PE
-0x90	0x0420	# CYRILLIC CAPITAL LETTER ER
-0x91	0x0421	# CYRILLIC CAPITAL LETTER ES
-0x92	0x0422	# CYRILLIC CAPITAL LETTER TE
-0x93	0x0423	# CYRILLIC CAPITAL LETTER U
-0x94	0x0424	# CYRILLIC CAPITAL LETTER EF
-0x95	0x0425	# CYRILLIC CAPITAL LETTER HA
-0x96	0x0426	# CYRILLIC CAPITAL LETTER TSE
-0x97	0x0427	# CYRILLIC CAPITAL LETTER CHE
-0x98	0x0428	# CYRILLIC CAPITAL LETTER SHA
-0x99	0x0429	# CYRILLIC CAPITAL LETTER SHCHA
-0x9A	0x042A	# CYRILLIC CAPITAL LETTER HARD SIGN
-0x9B	0x042B	# CYRILLIC CAPITAL LETTER YERU
-0x9C	0x042C	# CYRILLIC CAPITAL LETTER SOFT SIGN
-0x9D	0x042D	# CYRILLIC CAPITAL LETTER E
-0x9E	0x042E	# CYRILLIC CAPITAL LETTER YU
-0x9F	0x042F	# CYRILLIC CAPITAL LETTER YA
-0xA0	0x2020	# DAGGER
-0xA1	0x00B0	# DEGREE SIGN
-0xA2	0x0490	# CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0xA3	0x00A3	# POUND SIGN
-0xA4	0x00A7	# SECTION SIGN
-0xA5	0x2022	# BULLET
-0xA6	0x00B6	# PILCROW SIGN
-0xA7	0x0406	# CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0xA8	0x00AE	# REGISTERED SIGN
-0xA9	0x00A9	# COPYRIGHT SIGN
-0xAA	0x2122	# TRADE MARK SIGN
-0xAB	0x0402	# CYRILLIC CAPITAL LETTER DJE
-0xAC	0x0452	# CYRILLIC SMALL LETTER DJE
-0xAD	0x2260	# NOT EQUAL TO
-0xAE	0x0403	# CYRILLIC CAPITAL LETTER GJE
-0xAF	0x0453	# CYRILLIC SMALL LETTER GJE
-0xB0	0x221E	# INFINITY
-0xB1	0x00B1	# PLUS-MINUS SIGN
-0xB2	0x2264	# LESS-THAN OR EQUAL TO
-0xB3	0x2265	# GREATER-THAN OR EQUAL TO
-0xB4	0x0456	# CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0xB5	0x00B5	# MICRO SIGN
-0xB6	0x0491	# CYRILLIC SMALL LETTER GHE WITH UPTURN
-0xB7	0x0408	# CYRILLIC CAPITAL LETTER JE
-0xB8	0x0404	# CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0xB9	0x0454	# CYRILLIC SMALL LETTER UKRAINIAN IE
-0xBA	0x0407	# CYRILLIC CAPITAL LETTER YI
-0xBB	0x0457	# CYRILLIC SMALL LETTER YI
-0xBC	0x0409	# CYRILLIC CAPITAL LETTER LJE
-0xBD	0x0459	# CYRILLIC SMALL LETTER LJE
-0xBE	0x040A	# CYRILLIC CAPITAL LETTER NJE
-0xBF	0x045A	# CYRILLIC SMALL LETTER NJE
-0xC0	0x0458	# CYRILLIC SMALL LETTER JE
-0xC1	0x0405	# CYRILLIC CAPITAL LETTER DZE
-0xC2	0x00AC	# NOT SIGN
-0xC3	0x221A	# SQUARE ROOT
-0xC4	0x0192	# LATIN SMALL LETTER F WITH HOOK
-0xC5	0x2248	# ALMOST EQUAL TO
-0xC6	0x2206	# INCREMENT
-0xC7	0x00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xC8	0x00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xC9	0x2026	# HORIZONTAL ELLIPSIS
-0xCA	0x00A0	# NO-BREAK SPACE
-0xCB	0x040B	# CYRILLIC CAPITAL LETTER TSHE
-0xCC	0x045B	# CYRILLIC SMALL LETTER TSHE
-0xCD	0x040C	# CYRILLIC CAPITAL LETTER KJE
-0xCE	0x045C	# CYRILLIC SMALL LETTER KJE
-0xCF	0x0455	# CYRILLIC SMALL LETTER DZE
-0xD0	0x2013	# EN DASH
-0xD1	0x2014	# EM DASH
-0xD2	0x201C	# LEFT DOUBLE QUOTATION MARK
-0xD3	0x201D	# RIGHT DOUBLE QUOTATION MARK
-0xD4	0x2018	# LEFT SINGLE QUOTATION MARK
-0xD5	0x2019	# RIGHT SINGLE QUOTATION MARK
-0xD6	0x00F7	# DIVISION SIGN
-0xD7	0x201E	# DOUBLE LOW-9 QUOTATION MARK
-0xD8	0x040E	# CYRILLIC CAPITAL LETTER SHORT U
-0xD9	0x045E	# CYRILLIC SMALL LETTER SHORT U
-0xDA	0x040F	# CYRILLIC CAPITAL LETTER DZHE
-0xDB	0x045F	# CYRILLIC SMALL LETTER DZHE
-0xDC	0x2116	# NUMERO SIGN
-0xDD	0x0401	# CYRILLIC CAPITAL LETTER IO
-0xDE	0x0451	# CYRILLIC SMALL LETTER IO
-0xDF	0x044F	# CYRILLIC SMALL LETTER YA
-0xE0	0x0430	# CYRILLIC SMALL LETTER A
-0xE1	0x0431	# CYRILLIC SMALL LETTER BE
-0xE2	0x0432	# CYRILLIC SMALL LETTER VE
-0xE3	0x0433	# CYRILLIC SMALL LETTER GHE
-0xE4	0x0434	# CYRILLIC SMALL LETTER DE
-0xE5	0x0435	# CYRILLIC SMALL LETTER IE
-0xE6	0x0436	# CYRILLIC SMALL LETTER ZHE
-0xE7	0x0437	# CYRILLIC SMALL LETTER ZE
-0xE8	0x0438	# CYRILLIC SMALL LETTER I
-0xE9	0x0439	# CYRILLIC SMALL LETTER SHORT I
-0xEA	0x043A	# CYRILLIC SMALL LETTER KA
-0xEB	0x043B	# CYRILLIC SMALL LETTER EL
-0xEC	0x043C	# CYRILLIC SMALL LETTER EM
-0xED	0x043D	# CYRILLIC SMALL LETTER EN
-0xEE	0x043E	# CYRILLIC SMALL LETTER O
-0xEF	0x043F	# CYRILLIC SMALL LETTER PE
-0xF0	0x0440	# CYRILLIC SMALL LETTER ER
-0xF1	0x0441	# CYRILLIC SMALL LETTER ES
-0xF2	0x0442	# CYRILLIC SMALL LETTER TE
-0xF3	0x0443	# CYRILLIC SMALL LETTER U
-0xF4	0x0444	# CYRILLIC SMALL LETTER EF
-0xF5	0x0445	# CYRILLIC SMALL LETTER HA
-0xF6	0x0446	# CYRILLIC SMALL LETTER TSE
-0xF7	0x0447	# CYRILLIC SMALL LETTER CHE
-0xF8	0x0448	# CYRILLIC SMALL LETTER SHA
-0xF9	0x0449	# CYRILLIC SMALL LETTER SHCHA
-0xFA	0x044A	# CYRILLIC SMALL LETTER HARD SIGN
-0xFB	0x044B	# CYRILLIC SMALL LETTER YERU
-0xFC	0x044C	# CYRILLIC SMALL LETTER SOFT SIGN
-0xFD	0x044D	# CYRILLIC SMALL LETTER E
-0xFE	0x044E	# CYRILLIC SMALL LETTER YU
-0xFF	0x20AC	# EURO SIGN
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/CYRILLIC.TXT'
+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  # REVERSE SOLIDUS
+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
+#
+0x80    0x0410  # CYRILLIC CAPITAL LETTER A
+0x81    0x0411  # CYRILLIC CAPITAL LETTER BE
+0x82    0x0412  # CYRILLIC CAPITAL LETTER VE
+0x83    0x0413  # CYRILLIC CAPITAL LETTER GHE
+0x84    0x0414  # CYRILLIC CAPITAL LETTER DE
+0x85    0x0415  # CYRILLIC CAPITAL LETTER IE
+0x86    0x0416  # CYRILLIC CAPITAL LETTER ZHE
+0x87    0x0417  # CYRILLIC CAPITAL LETTER ZE
+0x88    0x0418  # CYRILLIC CAPITAL LETTER I
+0x89    0x0419  # CYRILLIC CAPITAL LETTER SHORT I
+0x8A    0x041A  # CYRILLIC CAPITAL LETTER KA
+0x8B    0x041B  # CYRILLIC CAPITAL LETTER EL
+0x8C    0x041C  # CYRILLIC CAPITAL LETTER EM
+0x8D    0x041D  # CYRILLIC CAPITAL LETTER EN
+0x8E    0x041E  # CYRILLIC CAPITAL LETTER O
+0x8F    0x041F  # CYRILLIC CAPITAL LETTER PE
+0x90    0x0420  # CYRILLIC CAPITAL LETTER ER
+0x91    0x0421  # CYRILLIC CAPITAL LETTER ES
+0x92    0x0422  # CYRILLIC CAPITAL LETTER TE
+0x93    0x0423  # CYRILLIC CAPITAL LETTER U
+0x94    0x0424  # CYRILLIC CAPITAL LETTER EF
+0x95    0x0425  # CYRILLIC CAPITAL LETTER HA
+0x96    0x0426  # CYRILLIC CAPITAL LETTER TSE
+0x97    0x0427  # CYRILLIC CAPITAL LETTER CHE
+0x98    0x0428  # CYRILLIC CAPITAL LETTER SHA
+0x99    0x0429  # CYRILLIC CAPITAL LETTER SHCHA
+0x9A    0x042A  # CYRILLIC CAPITAL LETTER HARD SIGN
+0x9B    0x042B  # CYRILLIC CAPITAL LETTER YERU
+0x9C    0x042C  # CYRILLIC CAPITAL LETTER SOFT SIGN
+0x9D    0x042D  # CYRILLIC CAPITAL LETTER E
+0x9E    0x042E  # CYRILLIC CAPITAL LETTER YU
+0x9F    0x042F  # CYRILLIC CAPITAL LETTER YA
+0xA0    0x2020  # DAGGER
+0xA1    0x00B0  # DEGREE SIGN
+0xA2    0x0490  # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0xA3    0x00A3  # POUND SIGN
+0xA4    0x00A7  # SECTION SIGN
+0xA5    0x2022  # BULLET
+0xA6    0x00B6  # PILCROW SIGN
+0xA7    0x0406  # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0xA8    0x00AE  # REGISTERED SIGN
+0xA9    0x00A9  # COPYRIGHT SIGN
+0xAA    0x2122  # TRADE MARK SIGN
+0xAB    0x0402  # CYRILLIC CAPITAL LETTER DJE
+0xAC    0x0452  # CYRILLIC SMALL LETTER DJE
+0xAD    0x2260  # NOT EQUAL TO
+0xAE    0x0403  # CYRILLIC CAPITAL LETTER GJE
+0xAF    0x0453  # CYRILLIC SMALL LETTER GJE
+0xB0    0x221E  # INFINITY
+0xB1    0x00B1  # PLUS-MINUS SIGN
+0xB2    0x2264  # LESS-THAN OR EQUAL TO
+0xB3    0x2265  # GREATER-THAN OR EQUAL TO
+0xB4    0x0456  # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0xB5    0x00B5  # MICRO SIGN
+0xB6    0x0491  # CYRILLIC SMALL LETTER GHE WITH UPTURN
+0xB7    0x0408  # CYRILLIC CAPITAL LETTER JE
+0xB8    0x0404  # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0xB9    0x0454  # CYRILLIC SMALL LETTER UKRAINIAN IE
+0xBA    0x0407  # CYRILLIC CAPITAL LETTER YI
+0xBB    0x0457  # CYRILLIC SMALL LETTER YI
+0xBC    0x0409  # CYRILLIC CAPITAL LETTER LJE
+0xBD    0x0459  # CYRILLIC SMALL LETTER LJE
+0xBE    0x040A  # CYRILLIC CAPITAL LETTER NJE
+0xBF    0x045A  # CYRILLIC SMALL LETTER NJE
+0xC0    0x0458  # CYRILLIC SMALL LETTER JE
+0xC1    0x0405  # CYRILLIC CAPITAL LETTER DZE
+0xC2    0x00AC  # NOT SIGN
+0xC3    0x221A  # SQUARE ROOT
+0xC4    0x0192  # LATIN SMALL LETTER F WITH HOOK
+0xC5    0x2248  # ALMOST EQUAL TO
+0xC6    0x2206  # INCREMENT
+0xC7    0x00AB  # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC8    0x00BB  # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC9    0x2026  # HORIZONTAL ELLIPSIS
+0xCA    0x00A0  # NO-BREAK SPACE
+0xCB    0x040B  # CYRILLIC CAPITAL LETTER TSHE
+0xCC    0x045B  # CYRILLIC SMALL LETTER TSHE
+0xCD    0x040C  # CYRILLIC CAPITAL LETTER KJE
+0xCE    0x045C  # CYRILLIC SMALL LETTER KJE
+0xCF    0x0455  # CYRILLIC SMALL LETTER DZE
+0xD0    0x2013  # EN DASH
+0xD1    0x2014  # EM DASH
+0xD2    0x201C  # LEFT DOUBLE QUOTATION MARK
+0xD3    0x201D  # RIGHT DOUBLE QUOTATION MARK
+0xD4    0x2018  # LEFT SINGLE QUOTATION MARK
+0xD5    0x2019  # RIGHT SINGLE QUOTATION MARK
+0xD6    0x00F7  # DIVISION SIGN
+0xD7    0x201E  # DOUBLE LOW-9 QUOTATION MARK
+0xD8    0x040E  # CYRILLIC CAPITAL LETTER SHORT U
+0xD9    0x045E  # CYRILLIC SMALL LETTER SHORT U
+0xDA    0x040F  # CYRILLIC CAPITAL LETTER DZHE
+0xDB    0x045F  # CYRILLIC SMALL LETTER DZHE
+0xDC    0x2116  # NUMERO SIGN
+0xDD    0x0401  # CYRILLIC CAPITAL LETTER IO
+0xDE    0x0451  # CYRILLIC SMALL LETTER IO
+0xDF    0x044F  # CYRILLIC SMALL LETTER YA
+0xE0    0x0430  # CYRILLIC SMALL LETTER A
+0xE1    0x0431  # CYRILLIC SMALL LETTER BE
+0xE2    0x0432  # CYRILLIC SMALL LETTER VE
+0xE3    0x0433  # CYRILLIC SMALL LETTER GHE
+0xE4    0x0434  # CYRILLIC SMALL LETTER DE
+0xE5    0x0435  # CYRILLIC SMALL LETTER IE
+0xE6    0x0436  # CYRILLIC SMALL LETTER ZHE
+0xE7    0x0437  # CYRILLIC SMALL LETTER ZE
+0xE8    0x0438  # CYRILLIC SMALL LETTER I
+0xE9    0x0439  # CYRILLIC SMALL LETTER SHORT I
+0xEA    0x043A  # CYRILLIC SMALL LETTER KA
+0xEB    0x043B  # CYRILLIC SMALL LETTER EL
+0xEC    0x043C  # CYRILLIC SMALL LETTER EM
+0xED    0x043D  # CYRILLIC SMALL LETTER EN
+0xEE    0x043E  # CYRILLIC SMALL LETTER O
+0xEF    0x043F  # CYRILLIC SMALL LETTER PE
+0xF0    0x0440  # CYRILLIC SMALL LETTER ER
+0xF1    0x0441  # CYRILLIC SMALL LETTER ES
+0xF2    0x0442  # CYRILLIC SMALL LETTER TE
+0xF3    0x0443  # CYRILLIC SMALL LETTER U
+0xF4    0x0444  # CYRILLIC SMALL LETTER EF
+0xF5    0x0445  # CYRILLIC SMALL LETTER HA
+0xF6    0x0446  # CYRILLIC SMALL LETTER TSE
+0xF7    0x0447  # CYRILLIC SMALL LETTER CHE
+0xF8    0x0448  # CYRILLIC SMALL LETTER SHA
+0xF9    0x0449  # CYRILLIC SMALL LETTER SHCHA
+0xFA    0x044A  # CYRILLIC SMALL LETTER HARD SIGN
+0xFB    0x044B  # CYRILLIC SMALL LETTER YERU
+0xFC    0x044C  # CYRILLIC SMALL LETTER SOFT SIGN
+0xFD    0x044D  # CYRILLIC SMALL LETTER E
+0xFE    0x044E  # CYRILLIC SMALL LETTER YU
+0xFF    0x20AC  # EURO SIGN
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/CYRILLIC.TXT'
 ! !
 
 !CharacterEncoder::MAC_Cyrillic methodsFor:'encoding & decoding'!
@@ -10354,8 +27120,8 @@
 
     code < 127 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r007F"    16rFFFF " invalid " 
@@ -10510,7 +27276,7 @@
 #   Changes:
 #
 #      b3,c1 2002-Dec-19    Update mappings for 0x80-0x8D to use new
-#							Unicode 3.2 characters. Update URLs, notes.
+#                                                       Unicode 3.2 characters. Update URLs, notes.
 #                           Matches internal utom<b2>.
 #       b02  1999-Sep-22    Update contact e-mail address. Matches
 #                           internal utom<b1>, ufrm<b1>, and Text
@@ -10612,217 +27378,217 @@
 #
 ##################
 
-0x20	0x0020	# SPACE
-0x21	0x2701	# UPPER BLADE SCISSORS
-0x22	0x2702	# BLACK SCISSORS
-0x23	0x2703	# LOWER BLADE SCISSORS
-0x24	0x2704	# WHITE SCISSORS
-0x25	0x260E	# BLACK TELEPHONE
-0x26	0x2706	# TELEPHONE LOCATION SIGN
-0x27	0x2707	# TAPE DRIVE
-0x28	0x2708	# AIRPLANE
-0x29	0x2709	# ENVELOPE
-0x2A	0x261B	# BLACK RIGHT POINTING INDEX
-0x2B	0x261E	# WHITE RIGHT POINTING INDEX
-0x2C	0x270C	# VICTORY HAND
-0x2D	0x270D	# WRITING HAND
-0x2E	0x270E	# LOWER RIGHT PENCIL
-0x2F	0x270F	# PENCIL
-0x30	0x2710	# UPPER RIGHT PENCIL
-0x31	0x2711	# WHITE NIB
-0x32	0x2712	# BLACK NIB
-0x33	0x2713	# CHECK MARK
-0x34	0x2714	# HEAVY CHECK MARK
-0x35	0x2715	# MULTIPLICATION X
-0x36	0x2716	# HEAVY MULTIPLICATION X
-0x37	0x2717	# BALLOT X
-0x38	0x2718	# HEAVY BALLOT X
-0x39	0x2719	# OUTLINED GREEK CROSS
-0x3A	0x271A	# HEAVY GREEK CROSS
-0x3B	0x271B	# OPEN CENTRE CROSS
-0x3C	0x271C	# HEAVY OPEN CENTRE CROSS
-0x3D	0x271D	# LATIN CROSS
-0x3E	0x271E	# SHADOWED WHITE LATIN CROSS
-0x3F	0x271F	# OUTLINED LATIN CROSS
-0x40	0x2720	# MALTESE CROSS
-0x41	0x2721	# STAR OF DAVID
-0x42	0x2722	# FOUR TEARDROP-SPOKED ASTERISK
-0x43	0x2723	# FOUR BALLOON-SPOKED ASTERISK
-0x44	0x2724	# HEAVY FOUR BALLOON-SPOKED ASTERISK
-0x45	0x2725	# FOUR CLUB-SPOKED ASTERISK
-0x46	0x2726	# BLACK FOUR POINTED STAR
-0x47	0x2727	# WHITE FOUR POINTED STAR
-0x48	0x2605	# BLACK STAR
-0x49	0x2729	# STRESS OUTLINED WHITE STAR
-0x4A	0x272A	# CIRCLED WHITE STAR
-0x4B	0x272B	# OPEN CENTRE BLACK STAR
-0x4C	0x272C	# BLACK CENTRE WHITE STAR
-0x4D	0x272D	# OUTLINED BLACK STAR
-0x4E	0x272E	# HEAVY OUTLINED BLACK STAR
-0x4F	0x272F	# PINWHEEL STAR
-0x50	0x2730	# SHADOWED WHITE STAR
-0x51	0x2731	# HEAVY ASTERISK
-0x52	0x2732	# OPEN CENTRE ASTERISK
-0x53	0x2733	# EIGHT SPOKED ASTERISK
-0x54	0x2734	# EIGHT POINTED BLACK STAR
-0x55	0x2735	# EIGHT POINTED PINWHEEL STAR
-0x56	0x2736	# SIX POINTED BLACK STAR
-0x57	0x2737	# EIGHT POINTED RECTILINEAR BLACK STAR
-0x58	0x2738	# HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
-0x59	0x2739	# TWELVE POINTED BLACK STAR
-0x5A	0x273A	# SIXTEEN POINTED ASTERISK
-0x5B	0x273B	# TEARDROP-SPOKED ASTERISK
-0x5C	0x273C	# OPEN CENTRE TEARDROP-SPOKED ASTERISK
-0x5D	0x273D	# HEAVY TEARDROP-SPOKED ASTERISK
-0x5E	0x273E	# SIX PETALLED BLACK AND WHITE FLORETTE
-0x5F	0x273F	# BLACK FLORETTE
-0x60	0x2740	# WHITE FLORETTE
-0x61	0x2741	# EIGHT PETALLED OUTLINED BLACK FLORETTE
-0x62	0x2742	# CIRCLED OPEN CENTRE EIGHT POINTED STAR
-0x63	0x2743	# HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
-0x64	0x2744	# SNOWFLAKE
-0x65	0x2745	# TIGHT TRIFOLIATE SNOWFLAKE
-0x66	0x2746	# HEAVY CHEVRON SNOWFLAKE
-0x67	0x2747	# SPARKLE
-0x68	0x2748	# HEAVY SPARKLE
-0x69	0x2749	# BALLOON-SPOKED ASTERISK
-0x6A	0x274A	# EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-0x6B	0x274B	# HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-0x6C	0x25CF	# BLACK CIRCLE
-0x6D	0x274D	# SHADOWED WHITE CIRCLE
-0x6E	0x25A0	# BLACK SQUARE
-0x6F	0x274F	# LOWER RIGHT DROP-SHADOWED WHITE SQUARE
-0x70	0x2750	# UPPER RIGHT DROP-SHADOWED WHITE SQUARE
-0x71	0x2751	# LOWER RIGHT SHADOWED WHITE SQUARE
-0x72	0x2752	# UPPER RIGHT SHADOWED WHITE SQUARE
-0x73	0x25B2	# BLACK UP-POINTING TRIANGLE
-0x74	0x25BC	# BLACK DOWN-POINTING TRIANGLE
-0x75	0x25C6	# BLACK DIAMOND
-0x76	0x2756	# BLACK DIAMOND MINUS WHITE X
-0x77	0x25D7	# RIGHT HALF BLACK CIRCLE
-0x78	0x2758	# LIGHT VERTICAL BAR
-0x79	0x2759	# MEDIUM VERTICAL BAR
-0x7A	0x275A	# HEAVY VERTICAL BAR
-0x7B	0x275B	# HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
-0x7C	0x275C	# HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
-0x7D	0x275D	# HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-0x7E	0x275E	# HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-#
-0x80	0x2768	# MEDIUM LEFT PARENTHESIS ORNAMENT # for Unicode 3.2 and later
-0x81	0x2769	# MEDIUM RIGHT PARENTHESIS ORNAMENT # for Unicode 3.2 and later
-0x82	0x276A	# MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT # for Unicode 3.2 and later
-0x83	0x276B	# MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT # for Unicode 3.2 and later
-0x84	0x276C	# MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT # for Unicode 3.2 and later
-0x85	0x276D	# MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT # for Unicode 3.2 and later
-0x86	0x276E	# HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT # for Unicode 3.2 and later
-0x87	0x276F	# HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT # for Unicode 3.2 and later
-0x88	0x2770	# HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT # for Unicode 3.2 and later
-0x89	0x2771	# HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT # for Unicode 3.2 and later
-0x8A	0x2772	# LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT # for Unicode 3.2 and later
-0x8B	0x2773	# LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT # for Unicode 3.2 and later
-0x8C	0x2774	# MEDIUM LEFT CURLY BRACKET ORNAMENT # for Unicode 3.2 and later
-0x8D	0x2775	# MEDIUM RIGHT CURLY BRACKET ORNAMENT # for Unicode 3.2 and later
-#
-0xA1	0x2761	# CURVED STEM PARAGRAPH SIGN ORNAMENT
-0xA2	0x2762	# HEAVY EXCLAMATION MARK ORNAMENT
-0xA3	0x2763	# HEAVY HEART EXCLAMATION MARK ORNAMENT
-0xA4	0x2764	# HEAVY BLACK HEART
-0xA5	0x2765	# ROTATED HEAVY BLACK HEART BULLET
-0xA6	0x2766	# FLORAL HEART
-0xA7	0x2767	# ROTATED FLORAL HEART BULLET
-0xA8	0x2663	# BLACK CLUB SUIT
-0xA9	0x2666	# BLACK DIAMOND SUIT
-0xAA	0x2665	# BLACK HEART SUIT
-0xAB	0x2660	# BLACK SPADE SUIT
-0xAC	0x2460	# CIRCLED DIGIT ONE
-0xAD	0x2461	# CIRCLED DIGIT TWO
-0xAE	0x2462	# CIRCLED DIGIT THREE
-0xAF	0x2463	# CIRCLED DIGIT FOUR
-0xB0	0x2464	# CIRCLED DIGIT FIVE
-0xB1	0x2465	# CIRCLED DIGIT SIX
-0xB2	0x2466	# CIRCLED DIGIT SEVEN
-0xB3	0x2467	# CIRCLED DIGIT EIGHT
-0xB4	0x2468	# CIRCLED DIGIT NINE
-0xB5	0x2469	# CIRCLED NUMBER TEN
-0xB6	0x2776	# DINGBAT NEGATIVE CIRCLED DIGIT ONE
-0xB7	0x2777	# DINGBAT NEGATIVE CIRCLED DIGIT TWO
-0xB8	0x2778	# DINGBAT NEGATIVE CIRCLED DIGIT THREE
-0xB9	0x2779	# DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-0xBA	0x277A	# DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-0xBB	0x277B	# DINGBAT NEGATIVE CIRCLED DIGIT SIX
-0xBC	0x277C	# DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-0xBD	0x277D	# DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-0xBE	0x277E	# DINGBAT NEGATIVE CIRCLED DIGIT NINE
-0xBF	0x277F	# DINGBAT NEGATIVE CIRCLED NUMBER TEN
-0xC0	0x2780	# DINGBAT CIRCLED SANS-SERIF DIGIT ONE
-0xC1	0x2781	# DINGBAT CIRCLED SANS-SERIF DIGIT TWO
-0xC2	0x2782	# DINGBAT CIRCLED SANS-SERIF DIGIT THREE
-0xC3	0x2783	# DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
-0xC4	0x2784	# DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
-0xC5	0x2785	# DINGBAT CIRCLED SANS-SERIF DIGIT SIX
-0xC6	0x2786	# DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
-0xC7	0x2787	# DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
-0xC8	0x2788	# DINGBAT CIRCLED SANS-SERIF DIGIT NINE
-0xC9	0x2789	# DINGBAT CIRCLED SANS-SERIF NUMBER TEN
-0xCA	0x278A	# DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
-0xCB	0x278B	# DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
-0xCC	0x278C	# DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
-0xCD	0x278D	# DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
-0xCE	0x278E	# DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
-0xCF	0x278F	# DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
-0xD0	0x2790	# DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
-0xD1	0x2791	# DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
-0xD2	0x2792	# DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
-0xD3	0x2793	# DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-0xD4	0x2794	# HEAVY WIDE-HEADED RIGHTWARDS ARROW
-0xD5	0x2192	# RIGHTWARDS ARROW
-0xD6	0x2194	# LEFT RIGHT ARROW
-0xD7	0x2195	# UP DOWN ARROW
-0xD8	0x2798	# HEAVY SOUTH EAST ARROW
-0xD9	0x2799	# HEAVY RIGHTWARDS ARROW
-0xDA	0x279A	# HEAVY NORTH EAST ARROW
-0xDB	0x279B	# DRAFTING POINT RIGHTWARDS ARROW
-0xDC	0x279C	# HEAVY ROUND-TIPPED RIGHTWARDS ARROW
-0xDD	0x279D	# TRIANGLE-HEADED RIGHTWARDS ARROW
-0xDE	0x279E	# HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
-0xDF	0x279F	# DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-0xE0	0x27A0	# HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-0xE1	0x27A1	# BLACK RIGHTWARDS ARROW
-0xE2	0x27A2	# THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
-0xE3	0x27A3	# THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
-0xE4	0x27A4	# BLACK RIGHTWARDS ARROWHEAD
-0xE5	0x27A5	# HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
-0xE6	0x27A6	# HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
-0xE7	0x27A7	# SQUAT BLACK RIGHTWARDS ARROW
-0xE8	0x27A8	# HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
-0xE9	0x27A9	# RIGHT-SHADED WHITE RIGHTWARDS ARROW
-0xEA	0x27AA	# LEFT-SHADED WHITE RIGHTWARDS ARROW
-0xEB	0x27AB	# BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-0xEC	0x27AC	# FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-0xED	0x27AD	# HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-0xEE	0x27AE	# HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-0xEF	0x27AF	# NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-#
-0xF1	0x27B1	# NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-0xF2	0x27B2	# CIRCLED HEAVY WHITE RIGHTWARDS ARROW
-0xF3	0x27B3	# WHITE-FEATHERED RIGHTWARDS ARROW
-0xF4	0x27B4	# BLACK-FEATHERED SOUTH EAST ARROW
-0xF5	0x27B5	# BLACK-FEATHERED RIGHTWARDS ARROW
-0xF6	0x27B6	# BLACK-FEATHERED NORTH EAST ARROW
-0xF7	0x27B7	# HEAVY BLACK-FEATHERED SOUTH EAST ARROW
-0xF8	0x27B8	# HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
-0xF9	0x27B9	# HEAVY BLACK-FEATHERED NORTH EAST ARROW
-0xFA	0x27BA	# TEARDROP-BARBED RIGHTWARDS ARROW
-0xFB	0x27BB	# HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
-0xFC	0x27BC	# WEDGE-TAILED RIGHTWARDS ARROW
-0xFD	0x27BD	# HEAVY WEDGE-TAILED RIGHTWARDS ARROW
-0xFE	0x27BE	# OPEN-OUTLINED RIGHTWARDS ARROW
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/DINGBATS.TXT'
+0x20    0x0020  # SPACE
+0x21    0x2701  # UPPER BLADE SCISSORS
+0x22    0x2702  # BLACK SCISSORS
+0x23    0x2703  # LOWER BLADE SCISSORS
+0x24    0x2704  # WHITE SCISSORS
+0x25    0x260E  # BLACK TELEPHONE
+0x26    0x2706  # TELEPHONE LOCATION SIGN
+0x27    0x2707  # TAPE DRIVE
+0x28    0x2708  # AIRPLANE
+0x29    0x2709  # ENVELOPE
+0x2A    0x261B  # BLACK RIGHT POINTING INDEX
+0x2B    0x261E  # WHITE RIGHT POINTING INDEX
+0x2C    0x270C  # VICTORY HAND
+0x2D    0x270D  # WRITING HAND
+0x2E    0x270E  # LOWER RIGHT PENCIL
+0x2F    0x270F  # PENCIL
+0x30    0x2710  # UPPER RIGHT PENCIL
+0x31    0x2711  # WHITE NIB
+0x32    0x2712  # BLACK NIB
+0x33    0x2713  # CHECK MARK
+0x34    0x2714  # HEAVY CHECK MARK
+0x35    0x2715  # MULTIPLICATION X
+0x36    0x2716  # HEAVY MULTIPLICATION X
+0x37    0x2717  # BALLOT X
+0x38    0x2718  # HEAVY BALLOT X
+0x39    0x2719  # OUTLINED GREEK CROSS
+0x3A    0x271A  # HEAVY GREEK CROSS
+0x3B    0x271B  # OPEN CENTRE CROSS
+0x3C    0x271C  # HEAVY OPEN CENTRE CROSS
+0x3D    0x271D  # LATIN CROSS
+0x3E    0x271E  # SHADOWED WHITE LATIN CROSS
+0x3F    0x271F  # OUTLINED LATIN CROSS
+0x40    0x2720  # MALTESE CROSS
+0x41    0x2721  # STAR OF DAVID
+0x42    0x2722  # FOUR TEARDROP-SPOKED ASTERISK
+0x43    0x2723  # FOUR BALLOON-SPOKED ASTERISK
+0x44    0x2724  # HEAVY FOUR BALLOON-SPOKED ASTERISK
+0x45    0x2725  # FOUR CLUB-SPOKED ASTERISK
+0x46    0x2726  # BLACK FOUR POINTED STAR
+0x47    0x2727  # WHITE FOUR POINTED STAR
+0x48    0x2605  # BLACK STAR
+0x49    0x2729  # STRESS OUTLINED WHITE STAR
+0x4A    0x272A  # CIRCLED WHITE STAR
+0x4B    0x272B  # OPEN CENTRE BLACK STAR
+0x4C    0x272C  # BLACK CENTRE WHITE STAR
+0x4D    0x272D  # OUTLINED BLACK STAR
+0x4E    0x272E  # HEAVY OUTLINED BLACK STAR
+0x4F    0x272F  # PINWHEEL STAR
+0x50    0x2730  # SHADOWED WHITE STAR
+0x51    0x2731  # HEAVY ASTERISK
+0x52    0x2732  # OPEN CENTRE ASTERISK
+0x53    0x2733  # EIGHT SPOKED ASTERISK
+0x54    0x2734  # EIGHT POINTED BLACK STAR
+0x55    0x2735  # EIGHT POINTED PINWHEEL STAR
+0x56    0x2736  # SIX POINTED BLACK STAR
+0x57    0x2737  # EIGHT POINTED RECTILINEAR BLACK STAR
+0x58    0x2738  # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+0x59    0x2739  # TWELVE POINTED BLACK STAR
+0x5A    0x273A  # SIXTEEN POINTED ASTERISK
+0x5B    0x273B  # TEARDROP-SPOKED ASTERISK
+0x5C    0x273C  # OPEN CENTRE TEARDROP-SPOKED ASTERISK
+0x5D    0x273D  # HEAVY TEARDROP-SPOKED ASTERISK
+0x5E    0x273E  # SIX PETALLED BLACK AND WHITE FLORETTE
+0x5F    0x273F  # BLACK FLORETTE
+0x60    0x2740  # WHITE FLORETTE
+0x61    0x2741  # EIGHT PETALLED OUTLINED BLACK FLORETTE
+0x62    0x2742  # CIRCLED OPEN CENTRE EIGHT POINTED STAR
+0x63    0x2743  # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+0x64    0x2744  # SNOWFLAKE
+0x65    0x2745  # TIGHT TRIFOLIATE SNOWFLAKE
+0x66    0x2746  # HEAVY CHEVRON SNOWFLAKE
+0x67    0x2747  # SPARKLE
+0x68    0x2748  # HEAVY SPARKLE
+0x69    0x2749  # BALLOON-SPOKED ASTERISK
+0x6A    0x274A  # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+0x6B    0x274B  # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+0x6C    0x25CF  # BLACK CIRCLE
+0x6D    0x274D  # SHADOWED WHITE CIRCLE
+0x6E    0x25A0  # BLACK SQUARE
+0x6F    0x274F  # LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+0x70    0x2750  # UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+0x71    0x2751  # LOWER RIGHT SHADOWED WHITE SQUARE
+0x72    0x2752  # UPPER RIGHT SHADOWED WHITE SQUARE
+0x73    0x25B2  # BLACK UP-POINTING TRIANGLE
+0x74    0x25BC  # BLACK DOWN-POINTING TRIANGLE
+0x75    0x25C6  # BLACK DIAMOND
+0x76    0x2756  # BLACK DIAMOND MINUS WHITE X
+0x77    0x25D7  # RIGHT HALF BLACK CIRCLE
+0x78    0x2758  # LIGHT VERTICAL BAR
+0x79    0x2759  # MEDIUM VERTICAL BAR
+0x7A    0x275A  # HEAVY VERTICAL BAR
+0x7B    0x275B  # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+0x7C    0x275C  # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+0x7D    0x275D  # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+0x7E    0x275E  # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+#
+0x80    0x2768  # MEDIUM LEFT PARENTHESIS ORNAMENT # for Unicode 3.2 and later
+0x81    0x2769  # MEDIUM RIGHT PARENTHESIS ORNAMENT # for Unicode 3.2 and later
+0x82    0x276A  # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT # for Unicode 3.2 and later
+0x83    0x276B  # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT # for Unicode 3.2 and later
+0x84    0x276C  # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT # for Unicode 3.2 and later
+0x85    0x276D  # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT # for Unicode 3.2 and later
+0x86    0x276E  # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT # for Unicode 3.2 and later
+0x87    0x276F  # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT # for Unicode 3.2 and later
+0x88    0x2770  # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT # for Unicode 3.2 and later
+0x89    0x2771  # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT # for Unicode 3.2 and later
+0x8A    0x2772  # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT # for Unicode 3.2 and later
+0x8B    0x2773  # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT # for Unicode 3.2 and later
+0x8C    0x2774  # MEDIUM LEFT CURLY BRACKET ORNAMENT # for Unicode 3.2 and later
+0x8D    0x2775  # MEDIUM RIGHT CURLY BRACKET ORNAMENT # for Unicode 3.2 and later
+#
+0xA1    0x2761  # CURVED STEM PARAGRAPH SIGN ORNAMENT
+0xA2    0x2762  # HEAVY EXCLAMATION MARK ORNAMENT
+0xA3    0x2763  # HEAVY HEART EXCLAMATION MARK ORNAMENT
+0xA4    0x2764  # HEAVY BLACK HEART
+0xA5    0x2765  # ROTATED HEAVY BLACK HEART BULLET
+0xA6    0x2766  # FLORAL HEART
+0xA7    0x2767  # ROTATED FLORAL HEART BULLET
+0xA8    0x2663  # BLACK CLUB SUIT
+0xA9    0x2666  # BLACK DIAMOND SUIT
+0xAA    0x2665  # BLACK HEART SUIT
+0xAB    0x2660  # BLACK SPADE SUIT
+0xAC    0x2460  # CIRCLED DIGIT ONE
+0xAD    0x2461  # CIRCLED DIGIT TWO
+0xAE    0x2462  # CIRCLED DIGIT THREE
+0xAF    0x2463  # CIRCLED DIGIT FOUR
+0xB0    0x2464  # CIRCLED DIGIT FIVE
+0xB1    0x2465  # CIRCLED DIGIT SIX
+0xB2    0x2466  # CIRCLED DIGIT SEVEN
+0xB3    0x2467  # CIRCLED DIGIT EIGHT
+0xB4    0x2468  # CIRCLED DIGIT NINE
+0xB5    0x2469  # CIRCLED NUMBER TEN
+0xB6    0x2776  # DINGBAT NEGATIVE CIRCLED DIGIT ONE
+0xB7    0x2777  # DINGBAT NEGATIVE CIRCLED DIGIT TWO
+0xB8    0x2778  # DINGBAT NEGATIVE CIRCLED DIGIT THREE
+0xB9    0x2779  # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+0xBA    0x277A  # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+0xBB    0x277B  # DINGBAT NEGATIVE CIRCLED DIGIT SIX
+0xBC    0x277C  # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+0xBD    0x277D  # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+0xBE    0x277E  # DINGBAT NEGATIVE CIRCLED DIGIT NINE
+0xBF    0x277F  # DINGBAT NEGATIVE CIRCLED NUMBER TEN
+0xC0    0x2780  # DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+0xC1    0x2781  # DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+0xC2    0x2782  # DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+0xC3    0x2783  # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+0xC4    0x2784  # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+0xC5    0x2785  # DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+0xC6    0x2786  # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+0xC7    0x2787  # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+0xC8    0x2788  # DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+0xC9    0x2789  # DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+0xCA    0x278A  # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+0xCB    0x278B  # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+0xCC    0x278C  # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+0xCD    0x278D  # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+0xCE    0x278E  # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+0xCF    0x278F  # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+0xD0    0x2790  # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+0xD1    0x2791  # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+0xD2    0x2792  # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+0xD3    0x2793  # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+0xD4    0x2794  # HEAVY WIDE-HEADED RIGHTWARDS ARROW
+0xD5    0x2192  # RIGHTWARDS ARROW
+0xD6    0x2194  # LEFT RIGHT ARROW
+0xD7    0x2195  # UP DOWN ARROW
+0xD8    0x2798  # HEAVY SOUTH EAST ARROW
+0xD9    0x2799  # HEAVY RIGHTWARDS ARROW
+0xDA    0x279A  # HEAVY NORTH EAST ARROW
+0xDB    0x279B  # DRAFTING POINT RIGHTWARDS ARROW
+0xDC    0x279C  # HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+0xDD    0x279D  # TRIANGLE-HEADED RIGHTWARDS ARROW
+0xDE    0x279E  # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+0xDF    0x279F  # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+0xE0    0x27A0  # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+0xE1    0x27A1  # BLACK RIGHTWARDS ARROW
+0xE2    0x27A2  # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+0xE3    0x27A3  # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+0xE4    0x27A4  # BLACK RIGHTWARDS ARROWHEAD
+0xE5    0x27A5  # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+0xE6    0x27A6  # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+0xE7    0x27A7  # SQUAT BLACK RIGHTWARDS ARROW
+0xE8    0x27A8  # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+0xE9    0x27A9  # RIGHT-SHADED WHITE RIGHTWARDS ARROW
+0xEA    0x27AA  # LEFT-SHADED WHITE RIGHTWARDS ARROW
+0xEB    0x27AB  # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+0xEC    0x27AC  # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+0xED    0x27AD  # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+0xEE    0x27AE  # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+0xEF    0x27AF  # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+#
+0xF1    0x27B1  # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+0xF2    0x27B2  # CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+0xF3    0x27B3  # WHITE-FEATHERED RIGHTWARDS ARROW
+0xF4    0x27B4  # BLACK-FEATHERED SOUTH EAST ARROW
+0xF5    0x27B5  # BLACK-FEATHERED RIGHTWARDS ARROW
+0xF6    0x27B6  # BLACK-FEATHERED NORTH EAST ARROW
+0xF7    0x27B7  # HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+0xF8    0x27B8  # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+0xF9    0x27B9  # HEAVY BLACK-FEATHERED NORTH EAST ARROW
+0xFA    0x27BA  # TEARDROP-BARBED RIGHTWARDS ARROW
+0xFB    0x27BB  # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+0xFC    0x27BC  # WEDGE-TAILED RIGHTWARDS ARROW
+0xFD    0x27BD  # HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+0xFE    0x27BE  # OPEN-OUTLINED RIGHTWARDS ARROW
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/DINGBATS.TXT'
 ! !
 
 !CharacterEncoder::MAC_Dingbats methodsFor:'encoding & decoding'!
@@ -10832,8 +27598,8 @@
 
     code < 33 ifTrue:[ ^ code ].
     code > 254 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r0021"    16r2701 " UPPER BLADE SCISSORS " 
@@ -11322,18 +28088,18 @@
 #   context (that is, when the first 'strong' character on either side
 #   of the digit sequence is Arabic, or there is no strong character):
 #
-#     0x2C	0x066C	# ARABIC THOUSANDS SEPARATOR
-#     0x2E	0x066B	# ARABIC DECIMAL SEPARATOR
-#     0x30	0x06F0	# EXTENDED ARABIC-INDIC DIGIT ZERO
-#     0x31	0x06F1	# EXTENDED ARABIC-INDIC DIGIT ONE
-#     0x32	0x06F2	# EXTENDED ARABIC-INDIC DIGIT TWO
-#     0x33	0x06F3	# EXTENDED ARABIC-INDIC DIGIT THREE
-#     0x34	0x06F4	# EXTENDED ARABIC-INDIC DIGIT FOUR
-#     0x35	0x06F5	# EXTENDED ARABIC-INDIC DIGIT FIVE
-#     0x36	0x06F6	# EXTENDED ARABIC-INDIC DIGIT SIX
-#     0x37	0x06F7	# EXTENDED ARABIC-INDIC DIGIT SEVEN
-#     0x38	0x06F8	# EXTENDED ARABIC-INDIC DIGIT EIGHT
-#     0x39	0x06F9	# EXTENDED ARABIC-INDIC DIGIT NINE
+#     0x2C      0x066C  # ARABIC THOUSANDS SEPARATOR
+#     0x2E      0x066B  # ARABIC DECIMAL SEPARATOR
+#     0x30      0x06F0  # EXTENDED ARABIC-INDIC DIGIT ZERO
+#     0x31      0x06F1  # EXTENDED ARABIC-INDIC DIGIT ONE
+#     0x32      0x06F2  # EXTENDED ARABIC-INDIC DIGIT TWO
+#     0x33      0x06F3  # EXTENDED ARABIC-INDIC DIGIT THREE
+#     0x34      0x06F4  # EXTENDED ARABIC-INDIC DIGIT FOUR
+#     0x35      0x06F5  # EXTENDED ARABIC-INDIC DIGIT FIVE
+#     0x36      0x06F6  # EXTENDED ARABIC-INDIC DIGIT SIX
+#     0x37      0x06F7  # EXTENDED ARABIC-INDIC DIGIT SEVEN
+#     0x38      0x06F8  # EXTENDED ARABIC-INDIC DIGIT EIGHT
+#     0x39      0x06F9  # EXTENDED ARABIC-INDIC DIGIT NINE
 #
 #   3. Use of corporate-zone Unicodes (mapping the TrueType variant)
 #
@@ -11358,236 +28124,236 @@
 #
 ##################
 
-0x20	<LR>+0x0020	# SPACE, left-right
-0x21	<LR>+0x0021	# EXCLAMATION MARK, left-right
-0x22	<LR>+0x0022	# QUOTATION MARK, left-right
-0x23	<LR>+0x0023	# NUMBER SIGN, left-right
-0x24	<LR>+0x0024	# DOLLAR SIGN, left-right
-0x25	<LR>+0x0025	# PERCENT SIGN, left-right
-0x26	<LR>+0x0026	# AMPERSAND, left-right
-0x27	<LR>+0x0027	# APOSTROPHE, left-right
-0x28	<LR>+0x0028	# LEFT PARENTHESIS, left-right
-0x29	<LR>+0x0029	# RIGHT PARENTHESIS, left-right
-0x2A	<LR>+0x002A	# ASTERISK, left-right
-0x2B	<LR>+0x002B	# PLUS SIGN, left-right
-0x2C	<LR>+0x002C	# COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-0x2D	<LR>+0x002D	# HYPHEN-MINUS, left-right
-0x2E	<LR>+0x002E	# FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-0x2F	<LR>+0x002F	# SOLIDUS, left-right
-0x30	0x0030	# DIGIT ZERO;  in Arabic-script context, displayed as 0x06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
-0x31	0x0031	# DIGIT ONE;   in Arabic-script context, displayed as 0x06F1 EXTENDED ARABIC-INDIC DIGIT ONE
-0x32	0x0032	# DIGIT TWO;   in Arabic-script context, displayed as 0x06F2 EXTENDED ARABIC-INDIC DIGIT TWO
-0x33	0x0033	# DIGIT THREE; in Arabic-script context, displayed as 0x06F3 EXTENDED ARABIC-INDIC DIGIT THREE
-0x34	0x0034	# DIGIT FOUR;  in Arabic-script context, displayed as 0x06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
-0x35	0x0035	# DIGIT FIVE;  in Arabic-script context, displayed as 0x06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
-0x36	0x0036	# DIGIT SIX;   in Arabic-script context, displayed as 0x06F6 EXTENDED ARABIC-INDIC DIGIT SIX
-0x37	0x0037	# DIGIT SEVEN; in Arabic-script context, displayed as 0x06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
-0x38	0x0038	# DIGIT EIGHT; in Arabic-script context, displayed as 0x06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
-0x39	0x0039	# DIGIT NINE;  in Arabic-script context, displayed as 0x06F9 EXTENDED ARABIC-INDIC DIGIT NINE
-0x3A	<LR>+0x003A	# COLON, left-right
-0x3B	<LR>+0x003B	# SEMICOLON, left-right
-0x3C	<LR>+0x003C	# LESS-THAN SIGN, left-right
-0x3D	<LR>+0x003D	# EQUALS SIGN, left-right
-0x3E	<LR>+0x003E	# GREATER-THAN SIGN, left-right
-0x3F	<LR>+0x003F	# QUESTION MARK, left-right
-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	<LR>+0x005B	# LEFT SQUARE BRACKET, left-right
-0x5C	<LR>+0x005C	# REVERSE SOLIDUS, left-right
-0x5D	<LR>+0x005D	# RIGHT SQUARE BRACKET, left-right
-0x5E	<LR>+0x005E	# CIRCUMFLEX ACCENT, left-right
-0x5F	<LR>+0x005F	# LOW LINE, left-right
-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	<LR>+0x007B	# LEFT CURLY BRACKET, left-right
-0x7C	<LR>+0x007C	# VERTICAL LINE, left-right
-0x7D	<LR>+0x007D	# RIGHT CURLY BRACKET, left-right
-0x7E	0x007E	# TILDE
-#
-0x80	0x00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS
-0x81	<RL>+0x00A0	# NO-BREAK SPACE, right-left
-0x82	0x00C7	# LATIN CAPITAL LETTER C WITH CEDILLA
-0x83	0x00C9	# LATIN CAPITAL LETTER E WITH ACUTE
-0x84	0x00D1	# LATIN CAPITAL LETTER N WITH TILDE
-0x85	0x00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS
-0x86	0x00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS
-0x87	0x00E1	# LATIN SMALL LETTER A WITH ACUTE
-0x88	0x00E0	# LATIN SMALL LETTER A WITH GRAVE
-0x89	0x00E2	# LATIN SMALL LETTER A WITH CIRCUMFLEX
-0x8A	0x00E4	# LATIN SMALL LETTER A WITH DIAERESIS
-0x8B	0x06BA	# ARABIC LETTER NOON GHUNNA
-0x8C	<RL>+0x00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-0x8D	0x00E7	# LATIN SMALL LETTER C WITH CEDILLA
-0x8E	0x00E9	# LATIN SMALL LETTER E WITH ACUTE
-0x8F	0x00E8	# LATIN SMALL LETTER E WITH GRAVE
-0x90	0x00EA	# LATIN SMALL LETTER E WITH CIRCUMFLEX
-0x91	0x00EB	# LATIN SMALL LETTER E WITH DIAERESIS
-0x92	0x00ED	# LATIN SMALL LETTER I WITH ACUTE
-0x93	<RL>+0x2026	# HORIZONTAL ELLIPSIS, right-left
-0x94	0x00EE	# LATIN SMALL LETTER I WITH CIRCUMFLEX
-0x95	0x00EF	# LATIN SMALL LETTER I WITH DIAERESIS
-0x96	0x00F1	# LATIN SMALL LETTER N WITH TILDE
-0x97	0x00F3	# LATIN SMALL LETTER O WITH ACUTE
-0x98	<RL>+0x00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-0x99	0x00F4	# LATIN SMALL LETTER O WITH CIRCUMFLEX
-0x9A	0x00F6	# LATIN SMALL LETTER O WITH DIAERESIS
-0x9B	<RL>+0x00F7	# DIVISION SIGN, right-left
-0x9C	0x00FA	# LATIN SMALL LETTER U WITH ACUTE
-0x9D	0x00F9	# LATIN SMALL LETTER U WITH GRAVE
-0x9E	0x00FB	# LATIN SMALL LETTER U WITH CIRCUMFLEX
-0x9F	0x00FC	# LATIN SMALL LETTER U WITH DIAERESIS
-0xA0	<RL>+0x0020	# SPACE, right-left
-0xA1	<RL>+0x0021	# EXCLAMATION MARK, right-left
-0xA2	<RL>+0x0022	# QUOTATION MARK, right-left
-0xA3	<RL>+0x0023	# NUMBER SIGN, right-left
-0xA4	<RL>+0x0024	# DOLLAR SIGN, right-left
-0xA5	0x066A	# ARABIC PERCENT SIGN
-0xA6	<RL>+0x0026	# AMPERSAND, right-left
-0xA7	<RL>+0x0027	# APOSTROPHE, right-left
-0xA8	<RL>+0x0028	# LEFT PARENTHESIS, right-left
-0xA9	<RL>+0x0029	# RIGHT PARENTHESIS, right-left
-0xAA	<RL>+0x002A	# ASTERISK, right-left
-0xAB	<RL>+0x002B	# PLUS SIGN, right-left
-0xAC	0x060C	# ARABIC COMMA
-0xAD	<RL>+0x002D	# HYPHEN-MINUS, right-left
-0xAE	<RL>+0x002E	# FULL STOP, right-left
-0xAF	<RL>+0x002F	# SOLIDUS, right-left
-0xB0	<RL>+0x06F0	# EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
-0xB1	<RL>+0x06F1	# EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
-0xB2	<RL>+0x06F2	# EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
-0xB3	<RL>+0x06F3	# EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
-0xB4	<RL>+0x06F4	# EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
-0xB5	<RL>+0x06F5	# EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
-0xB6	<RL>+0x06F6	# EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
-0xB7	<RL>+0x06F7	# EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-0xB8	<RL>+0x06F8	# EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-0xB9	<RL>+0x06F9	# EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
-0xBA	<RL>+0x003A	# COLON, right-left
-0xBB	0x061B	# ARABIC SEMICOLON
-0xBC	<RL>+0x003C	# LESS-THAN SIGN, right-left
-0xBD	<RL>+0x003D	# EQUALS SIGN, right-left
-0xBE	<RL>+0x003E	# GREATER-THAN SIGN, right-left
-0xBF	0x061F	# ARABIC QUESTION MARK
-0xC0	<RL>+0x274A	# EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-0xC1	0x0621	# ARABIC LETTER HAMZA
-0xC2	0x0622	# ARABIC LETTER ALEF WITH MADDA ABOVE
-0xC3	0x0623	# ARABIC LETTER ALEF WITH HAMZA ABOVE
-0xC4	0x0624	# ARABIC LETTER WAW WITH HAMZA ABOVE
-0xC5	0x0625	# ARABIC LETTER ALEF WITH HAMZA BELOW
-0xC6	0x0626	# ARABIC LETTER YEH WITH HAMZA ABOVE
-0xC7	0x0627	# ARABIC LETTER ALEF
-0xC8	0x0628	# ARABIC LETTER BEH
-0xC9	0x0629	# ARABIC LETTER TEH MARBUTA
-0xCA	0x062A	# ARABIC LETTER TEH
-0xCB	0x062B	# ARABIC LETTER THEH
-0xCC	0x062C	# ARABIC LETTER JEEM
-0xCD	0x062D	# ARABIC LETTER HAH
-0xCE	0x062E	# ARABIC LETTER KHAH
-0xCF	0x062F	# ARABIC LETTER DAL
-0xD0	0x0630	# ARABIC LETTER THAL
-0xD1	0x0631	# ARABIC LETTER REH
-0xD2	0x0632	# ARABIC LETTER ZAIN
-0xD3	0x0633	# ARABIC LETTER SEEN
-0xD4	0x0634	# ARABIC LETTER SHEEN
-0xD5	0x0635	# ARABIC LETTER SAD
-0xD6	0x0636	# ARABIC LETTER DAD
-0xD7	0x0637	# ARABIC LETTER TAH
-0xD8	0x0638	# ARABIC LETTER ZAH
-0xD9	0x0639	# ARABIC LETTER AIN
-0xDA	0x063A	# ARABIC LETTER GHAIN
-0xDB	<RL>+0x005B	# LEFT SQUARE BRACKET, right-left
-0xDC	<RL>+0x005C	# REVERSE SOLIDUS, right-left
-0xDD	<RL>+0x005D	# RIGHT SQUARE BRACKET, right-left
-0xDE	<RL>+0x005E	# CIRCUMFLEX ACCENT, right-left
-0xDF	<RL>+0x005F	# LOW LINE, right-left
-0xE0	0x0640	# ARABIC TATWEEL
-0xE1	0x0641	# ARABIC LETTER FEH
-0xE2	0x0642	# ARABIC LETTER QAF
-0xE3	0x0643	# ARABIC LETTER KAF
-0xE4	0x0644	# ARABIC LETTER LAM
-0xE5	0x0645	# ARABIC LETTER MEEM
-0xE6	0x0646	# ARABIC LETTER NOON
-0xE7	0x0647	# ARABIC LETTER HEH
-0xE8	0x0648	# ARABIC LETTER WAW
-0xE9	0x0649	# ARABIC LETTER ALEF MAKSURA
-0xEA	0x064A	# ARABIC LETTER YEH
-0xEB	0x064B	# ARABIC FATHATAN
-0xEC	0x064C	# ARABIC DAMMATAN
-0xED	0x064D	# ARABIC KASRATAN
-0xEE	0x064E	# ARABIC FATHA
-0xEF	0x064F	# ARABIC DAMMA
-0xF0	0x0650	# ARABIC KASRA
-0xF1	0x0651	# ARABIC SHADDA
-0xF2	0x0652	# ARABIC SUKUN
-0xF3	0x067E	# ARABIC LETTER PEH
-0xF4	0x0679	# ARABIC LETTER TTEH
-0xF5	0x0686	# ARABIC LETTER TCHEH
-0xF6	0x06D5	# ARABIC LETTER AE
-0xF7	0x06A4	# ARABIC LETTER VEH
-0xF8	0x06AF	# ARABIC LETTER GAF
-0xF9	0x0688	# ARABIC LETTER DDAL
-0xFA	0x0691	# ARABIC LETTER RREH
-0xFB	<RL>+0x007B	# LEFT CURLY BRACKET, right-left
-0xFC	<RL>+0x007C	# VERTICAL LINE, right-left
-0xFD	<RL>+0x007D	# RIGHT CURLY BRACKET, right-left
-0xFE	0x0698	# ARABIC LETTER JEH
-0xFF	0x06D2	# ARABIC LETTER YEH BARREE
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/FARSI.TXT'
+0x20    <LR>+0x0020     # SPACE, left-right
+0x21    <LR>+0x0021     # EXCLAMATION MARK, left-right
+0x22    <LR>+0x0022     # QUOTATION MARK, left-right
+0x23    <LR>+0x0023     # NUMBER SIGN, left-right
+0x24    <LR>+0x0024     # DOLLAR SIGN, left-right
+0x25    <LR>+0x0025     # PERCENT SIGN, left-right
+0x26    <LR>+0x0026     # AMPERSAND, left-right
+0x27    <LR>+0x0027     # APOSTROPHE, left-right
+0x28    <LR>+0x0028     # LEFT PARENTHESIS, left-right
+0x29    <LR>+0x0029     # RIGHT PARENTHESIS, left-right
+0x2A    <LR>+0x002A     # ASTERISK, left-right
+0x2B    <LR>+0x002B     # PLUS SIGN, left-right
+0x2C    <LR>+0x002C     # COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
+0x2D    <LR>+0x002D     # HYPHEN-MINUS, left-right
+0x2E    <LR>+0x002E     # FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
+0x2F    <LR>+0x002F     # SOLIDUS, left-right
+0x30    0x0030  # DIGIT ZERO;  in Arabic-script context, displayed as 0x06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
+0x31    0x0031  # DIGIT ONE;   in Arabic-script context, displayed as 0x06F1 EXTENDED ARABIC-INDIC DIGIT ONE
+0x32    0x0032  # DIGIT TWO;   in Arabic-script context, displayed as 0x06F2 EXTENDED ARABIC-INDIC DIGIT TWO
+0x33    0x0033  # DIGIT THREE; in Arabic-script context, displayed as 0x06F3 EXTENDED ARABIC-INDIC DIGIT THREE
+0x34    0x0034  # DIGIT FOUR;  in Arabic-script context, displayed as 0x06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
+0x35    0x0035  # DIGIT FIVE;  in Arabic-script context, displayed as 0x06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
+0x36    0x0036  # DIGIT SIX;   in Arabic-script context, displayed as 0x06F6 EXTENDED ARABIC-INDIC DIGIT SIX
+0x37    0x0037  # DIGIT SEVEN; in Arabic-script context, displayed as 0x06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
+0x38    0x0038  # DIGIT EIGHT; in Arabic-script context, displayed as 0x06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
+0x39    0x0039  # DIGIT NINE;  in Arabic-script context, displayed as 0x06F9 EXTENDED ARABIC-INDIC DIGIT NINE
+0x3A    <LR>+0x003A     # COLON, left-right
+0x3B    <LR>+0x003B     # SEMICOLON, left-right
+0x3C    <LR>+0x003C     # LESS-THAN SIGN, left-right
+0x3D    <LR>+0x003D     # EQUALS SIGN, left-right
+0x3E    <LR>+0x003E     # GREATER-THAN SIGN, left-right
+0x3F    <LR>+0x003F     # QUESTION MARK, left-right
+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    <LR>+0x005B     # LEFT SQUARE BRACKET, left-right
+0x5C    <LR>+0x005C     # REVERSE SOLIDUS, left-right
+0x5D    <LR>+0x005D     # RIGHT SQUARE BRACKET, left-right
+0x5E    <LR>+0x005E     # CIRCUMFLEX ACCENT, left-right
+0x5F    <LR>+0x005F     # LOW LINE, left-right
+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    <LR>+0x007B     # LEFT CURLY BRACKET, left-right
+0x7C    <LR>+0x007C     # VERTICAL LINE, left-right
+0x7D    <LR>+0x007D     # RIGHT CURLY BRACKET, left-right
+0x7E    0x007E  # TILDE
+#
+0x80    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x81    <RL>+0x00A0     # NO-BREAK SPACE, right-left
+0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
+0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
+0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
+0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
+0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
+0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
+0x8B    0x06BA  # ARABIC LETTER NOON GHUNNA
+0x8C    <RL>+0x00AB     # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
+0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
+0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
+0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
+0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
+0x93    <RL>+0x2026     # HORIZONTAL ELLIPSIS, right-left
+0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
+0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
+0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
+0x98    <RL>+0x00BB     # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
+0x9B    <RL>+0x00F7     # DIVISION SIGN, right-left
+0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
+0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
+0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
+0xA0    <RL>+0x0020     # SPACE, right-left
+0xA1    <RL>+0x0021     # EXCLAMATION MARK, right-left
+0xA2    <RL>+0x0022     # QUOTATION MARK, right-left
+0xA3    <RL>+0x0023     # NUMBER SIGN, right-left
+0xA4    <RL>+0x0024     # DOLLAR SIGN, right-left
+0xA5    0x066A  # ARABIC PERCENT SIGN
+0xA6    <RL>+0x0026     # AMPERSAND, right-left
+0xA7    <RL>+0x0027     # APOSTROPHE, right-left
+0xA8    <RL>+0x0028     # LEFT PARENTHESIS, right-left
+0xA9    <RL>+0x0029     # RIGHT PARENTHESIS, right-left
+0xAA    <RL>+0x002A     # ASTERISK, right-left
+0xAB    <RL>+0x002B     # PLUS SIGN, right-left
+0xAC    0x060C  # ARABIC COMMA
+0xAD    <RL>+0x002D     # HYPHEN-MINUS, right-left
+0xAE    <RL>+0x002E     # FULL STOP, right-left
+0xAF    <RL>+0x002F     # SOLIDUS, right-left
+0xB0    <RL>+0x06F0     # EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
+0xB1    <RL>+0x06F1     # EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
+0xB2    <RL>+0x06F2     # EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
+0xB3    <RL>+0x06F3     # EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
+0xB4    <RL>+0x06F4     # EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
+0xB5    <RL>+0x06F5     # EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
+0xB6    <RL>+0x06F6     # EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
+0xB7    <RL>+0x06F7     # EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
+0xB8    <RL>+0x06F8     # EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
+0xB9    <RL>+0x06F9     # EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
+0xBA    <RL>+0x003A     # COLON, right-left
+0xBB    0x061B  # ARABIC SEMICOLON
+0xBC    <RL>+0x003C     # LESS-THAN SIGN, right-left
+0xBD    <RL>+0x003D     # EQUALS SIGN, right-left
+0xBE    <RL>+0x003E     # GREATER-THAN SIGN, right-left
+0xBF    0x061F  # ARABIC QUESTION MARK
+0xC0    <RL>+0x274A     # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
+0xC1    0x0621  # ARABIC LETTER HAMZA
+0xC2    0x0622  # ARABIC LETTER ALEF WITH MADDA ABOVE
+0xC3    0x0623  # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0xC4    0x0624  # ARABIC LETTER WAW WITH HAMZA ABOVE
+0xC5    0x0625  # ARABIC LETTER ALEF WITH HAMZA BELOW
+0xC6    0x0626  # ARABIC LETTER YEH WITH HAMZA ABOVE
+0xC7    0x0627  # ARABIC LETTER ALEF
+0xC8    0x0628  # ARABIC LETTER BEH
+0xC9    0x0629  # ARABIC LETTER TEH MARBUTA
+0xCA    0x062A  # ARABIC LETTER TEH
+0xCB    0x062B  # ARABIC LETTER THEH
+0xCC    0x062C  # ARABIC LETTER JEEM
+0xCD    0x062D  # ARABIC LETTER HAH
+0xCE    0x062E  # ARABIC LETTER KHAH
+0xCF    0x062F  # ARABIC LETTER DAL
+0xD0    0x0630  # ARABIC LETTER THAL
+0xD1    0x0631  # ARABIC LETTER REH
+0xD2    0x0632  # ARABIC LETTER ZAIN
+0xD3    0x0633  # ARABIC LETTER SEEN
+0xD4    0x0634  # ARABIC LETTER SHEEN
+0xD5    0x0635  # ARABIC LETTER SAD
+0xD6    0x0636  # ARABIC LETTER DAD
+0xD7    0x0637  # ARABIC LETTER TAH
+0xD8    0x0638  # ARABIC LETTER ZAH
+0xD9    0x0639  # ARABIC LETTER AIN
+0xDA    0x063A  # ARABIC LETTER GHAIN
+0xDB    <RL>+0x005B     # LEFT SQUARE BRACKET, right-left
+0xDC    <RL>+0x005C     # REVERSE SOLIDUS, right-left
+0xDD    <RL>+0x005D     # RIGHT SQUARE BRACKET, right-left
+0xDE    <RL>+0x005E     # CIRCUMFLEX ACCENT, right-left
+0xDF    <RL>+0x005F     # LOW LINE, right-left
+0xE0    0x0640  # ARABIC TATWEEL
+0xE1    0x0641  # ARABIC LETTER FEH
+0xE2    0x0642  # ARABIC LETTER QAF
+0xE3    0x0643  # ARABIC LETTER KAF
+0xE4    0x0644  # ARABIC LETTER LAM
+0xE5    0x0645  # ARABIC LETTER MEEM
+0xE6    0x0646  # ARABIC LETTER NOON
+0xE7    0x0647  # ARABIC LETTER HEH
+0xE8    0x0648  # ARABIC LETTER WAW
+0xE9    0x0649  # ARABIC LETTER ALEF MAKSURA
+0xEA    0x064A  # ARABIC LETTER YEH
+0xEB    0x064B  # ARABIC FATHATAN
+0xEC    0x064C  # ARABIC DAMMATAN
+0xED    0x064D  # ARABIC KASRATAN
+0xEE    0x064E  # ARABIC FATHA
+0xEF    0x064F  # ARABIC DAMMA
+0xF0    0x0650  # ARABIC KASRA
+0xF1    0x0651  # ARABIC SHADDA
+0xF2    0x0652  # ARABIC SUKUN
+0xF3    0x067E  # ARABIC LETTER PEH
+0xF4    0x0679  # ARABIC LETTER TTEH
+0xF5    0x0686  # ARABIC LETTER TCHEH
+0xF6    0x06D5  # ARABIC LETTER AE
+0xF7    0x06A4  # ARABIC LETTER VEH
+0xF8    0x06AF  # ARABIC LETTER GAF
+0xF9    0x0688  # ARABIC LETTER DDAL
+0xFA    0x0691  # ARABIC LETTER RREH
+0xFB    <RL>+0x007B     # LEFT CURLY BRACKET, right-left
+0xFC    <RL>+0x007C     # VERTICAL LINE, right-left
+0xFD    <RL>+0x007D     # RIGHT CURLY BRACKET, right-left
+0xFE    0x0698  # ARABIC LETTER JEH
+0xFF    0x06D2  # ARABIC LETTER YEH BARREE
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/FARSI.TXT'
 ! !
 
 !CharacterEncoder::MAC_Farsi methodsFor:'encoding & decoding'!
@@ -11597,8 +28363,8 @@
 
     code < 32 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r0020"    16rFFFF
@@ -12187,8 +28953,8 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/GREEK.TXT'
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/GREEK.TXT'
 ! !
 
 !CharacterEncoder::MAC_Greek methodsFor:'encoding & decoding'!
@@ -12354,7 +29120,7 @@
 #   Changes:
 #
 #      b3,c1 2002-Dec-19    Don't require left-right context for digits
-#							0x30-0x39. Change mapping of 0x81 to use
+#                                                       0x30-0x39. Change mapping of 0x81 to use
 #                           decomposition. Reverse the mappings of 0xA8,
 #                           0xA9. Update URLs, notes. Matches internal
 #                           utom<b7>.
@@ -12449,7 +29215,7 @@
 #
 #   - The NEW SHEQEL SIGN at 0xA6.
 #
-#	- Latin characters with diacritics at 0x80 and 0x82-0x9F. However,
+#       - Latin characters with diacritics at 0x80 and 0x82-0x9F. However,
 #     most of these cannot be typed using the keyboard layouts in the
 #     Hebrew localized systems.
 #
@@ -12673,236 +29439,236 @@
 #
 ##################
 
-0x20	<LR>+0x0020	# SPACE, left-right
-0x21	<LR>+0x0021	# EXCLAMATION MARK, left-right
-0x22	<LR>+0x0022	# QUOTATION MARK, left-right
-0x23	<LR>+0x0023	# NUMBER SIGN, left-right
-0x24	<LR>+0x0024	# DOLLAR SIGN, left-right
-0x25	<LR>+0x0025	# PERCENT SIGN, left-right
-0x26	0x0026	# AMPERSAND
-0x27	<LR>+0x0027	# APOSTROPHE, left-right
-0x28	<LR>+0x0028	# LEFT PARENTHESIS, left-right
-0x29	<LR>+0x0029	# RIGHT PARENTHESIS, left-right
-0x2A	<LR>+0x002A	# ASTERISK, left-right
-0x2B	<LR>+0x002B	# PLUS SIGN, left-right
-0x2C	<LR>+0x002C	# COMMA, left-right
-0x2D	<LR>+0x002D	# HYPHEN-MINUS, left-right
-0x2E	<LR>+0x002E	# FULL STOP, left-right
-0x2F	<LR>+0x002F	# SOLIDUS, left-right
-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	<LR>+0x003A	# COLON, left-right
-0x3B	<LR>+0x003B	# SEMICOLON, left-right
-0x3C	<LR>+0x003C	# LESS-THAN SIGN, left-right
-0x3D	<LR>+0x003D	# EQUALS SIGN, left-right
-0x3E	<LR>+0x003E	# GREATER-THAN SIGN, left-right
-0x3F	<LR>+0x003F	# QUESTION MARK, left-right
-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	<LR>+0x005B	# LEFT SQUARE BRACKET, left-right
-0x5C	0x005C	# REVERSE SOLIDUS
-0x5D	<LR>+0x005D	# RIGHT SQUARE BRACKET, left-right
-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	<LR>+0x007B	# LEFT CURLY BRACKET, left-right
-0x7C	<LR>+0x007C	# VERTICAL LINE, left-right
-0x7D	<LR>+0x007D	# RIGHT CURLY BRACKET, left-right
-0x7E	0x007E	# TILDE
-#
-0x80	0x00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS
-0x81	0x05F2+0x05B7	# HEBREW LIGATURE YIDDISH YOD YOD PATAH
-0x82	0x00C7	# LATIN CAPITAL LETTER C WITH CEDILLA
-0x83	0x00C9	# LATIN CAPITAL LETTER E WITH ACUTE
-0x84	0x00D1	# LATIN CAPITAL LETTER N WITH TILDE
-0x85	0x00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS
-0x86	0x00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS
-0x87	0x00E1	# LATIN SMALL LETTER A WITH ACUTE
-0x88	0x00E0	# LATIN SMALL LETTER A WITH GRAVE
-0x89	0x00E2	# LATIN SMALL LETTER A WITH CIRCUMFLEX
-0x8A	0x00E4	# LATIN SMALL LETTER A WITH DIAERESIS
-0x8B	0x00E3	# LATIN SMALL LETTER A WITH TILDE
-0x8C	0x00E5	# LATIN SMALL LETTER A WITH RING ABOVE
-0x8D	0x00E7	# LATIN SMALL LETTER C WITH CEDILLA
-0x8E	0x00E9	# LATIN SMALL LETTER E WITH ACUTE
-0x8F	0x00E8	# LATIN SMALL LETTER E WITH GRAVE
-0x90	0x00EA	# LATIN SMALL LETTER E WITH CIRCUMFLEX
-0x91	0x00EB	# LATIN SMALL LETTER E WITH DIAERESIS
-0x92	0x00ED	# LATIN SMALL LETTER I WITH ACUTE
-0x93	0x00EC	# LATIN SMALL LETTER I WITH GRAVE
-0x94	0x00EE	# LATIN SMALL LETTER I WITH CIRCUMFLEX
-0x95	0x00EF	# LATIN SMALL LETTER I WITH DIAERESIS
-0x96	0x00F1	# LATIN SMALL LETTER N WITH TILDE
-0x97	0x00F3	# LATIN SMALL LETTER O WITH ACUTE
-0x98	0x00F2	# LATIN SMALL LETTER O WITH GRAVE
-0x99	0x00F4	# LATIN SMALL LETTER O WITH CIRCUMFLEX
-0x9A	0x00F6	# LATIN SMALL LETTER O WITH DIAERESIS
-0x9B	0x00F5	# LATIN SMALL LETTER O WITH TILDE
-0x9C	0x00FA	# LATIN SMALL LETTER U WITH ACUTE
-0x9D	0x00F9	# LATIN SMALL LETTER U WITH GRAVE
-0x9E	0x00FB	# LATIN SMALL LETTER U WITH CIRCUMFLEX
-0x9F	0x00FC	# LATIN SMALL LETTER U WITH DIAERESIS
-0xA0	<RL>+0x0020	# SPACE, right-left
-0xA1	<RL>+0x0021	# EXCLAMATION MARK, right-left
-0xA2	<RL>+0x0022	# QUOTATION MARK, right-left
-0xA3	<RL>+0x0023	# NUMBER SIGN, right-left
-0xA4	<RL>+0x0024	# DOLLAR SIGN, right-left
-0xA5	<RL>+0x0025	# PERCENT SIGN, right-left
-0xA6	0x20AA	# NEW SHEQEL SIGN
-0xA7	<RL>+0x0027	# APOSTROPHE, right-left
-0xA8	<RL>+0x0029	# RIGHT PARENTHESIS, right-left
-0xA9	<RL>+0x0028	# LEFT PARENTHESIS, right-left
-0xAA	<RL>+0x002A	# ASTERISK, right-left
-0xAB	<RL>+0x002B	# PLUS SIGN, right-left
-0xAC	<RL>+0x002C	# COMMA, right-left
-0xAD	<RL>+0x002D	# HYPHEN-MINUS, right-left
-0xAE	<RL>+0x002E	# FULL STOP, right-left
-0xAF	<RL>+0x002F	# SOLIDUS, right-left
-0xB0	<RL>+0x0030	# DIGIT ZERO, right-left (need override)
-0xB1	<RL>+0x0031	# DIGIT ONE, right-left (need override)
-0xB2	<RL>+0x0032	# DIGIT TWO, right-left (need override)
-0xB3	<RL>+0x0033	# DIGIT THREE, right-left (need override)
-0xB4	<RL>+0x0034	# DIGIT FOUR, right-left (need override)
-0xB5	<RL>+0x0035	# DIGIT FIVE, right-left (need override)
-0xB6	<RL>+0x0036	# DIGIT SIX, right-left (need override)
-0xB7	<RL>+0x0037	# DIGIT SEVEN, right-left (need override)
-0xB8	<RL>+0x0038	# DIGIT EIGHT, right-left (need override)
-0xB9	<RL>+0x0039	# DIGIT NINE, right-left (need override)
-0xBA	<RL>+0x003A	# COLON, right-left
-0xBB	<RL>+0x003B	# SEMICOLON, right-left
-0xBC	<RL>+0x003C	# LESS-THAN SIGN, right-left
-0xBD	<RL>+0x003D	# EQUALS SIGN, right-left
-0xBE	<RL>+0x003E	# GREATER-THAN SIGN, right-left
-0xBF	<RL>+0x003F	# QUESTION MARK, right-left
-0xC0	0xF86A+0x05DC+0x05B9	# Hebrew ligature lamed holam
-0xC1	<RL>+0x201E	# DOUBLE LOW-9 QUOTATION MARK, right-left
-0xC2	0xF89B	# Hebrew canoral 1
-0xC3	0xF89C	# Hebrew canoral 2
-0xC4	0xF89D	# Hebrew canoral 3
-0xC5	0xF89E	# Hebrew canoral 4
-0xC6	0x05BC	# HEBREW POINT DAGESH OR MAPIQ
-0xC7	0xFB4B	# HEBREW LETTER VAV WITH HOLAM
-0xC8	0xFB35	# HEBREW LETTER VAV WITH DAGESH
-0xC9	<RL>+0x2026	# HORIZONTAL ELLIPSIS, right-left
-0xCA	<RL>+0x00A0	# NO-BREAK SPACE, right-left
-0xCB	0x05B8	# HEBREW POINT QAMATS
-0xCC	0x05B7	# HEBREW POINT PATAH
-0xCD	0x05B5	# HEBREW POINT TSERE
-0xCE	0x05B6	# HEBREW POINT SEGOL
-0xCF	0x05B4	# HEBREW POINT HIRIQ
-0xD0	<RL>+0x2013	# EN DASH, right-left
-0xD1	<RL>+0x2014	# EM DASH, right-left
-0xD2	<RL>+0x201C	# LEFT DOUBLE QUOTATION MARK, right-left
-0xD3	<RL>+0x201D	# RIGHT DOUBLE QUOTATION MARK, right-left
-0xD4	<RL>+0x2018	# LEFT SINGLE QUOTATION MARK, right-left
-0xD5	<RL>+0x2019	# RIGHT SINGLE QUOTATION MARK, right-left
-0xD6	0xFB2A	# HEBREW LETTER SHIN WITH SHIN DOT
-0xD7	0xFB2B	# HEBREW LETTER SHIN WITH SIN DOT
-0xD8	0x05BF	# HEBREW POINT RAFE
-0xD9	0x05B0	# HEBREW POINT SHEVA
-0xDA	0x05B2	# HEBREW POINT HATAF PATAH
-0xDB	0x05B1	# HEBREW POINT HATAF SEGOL
-0xDC	0x05BB	# HEBREW POINT QUBUTS
-0xDD	0x05B9	# HEBREW POINT HOLAM
-0xDE	0x05B8+0xF87F	# HEBREW POINT QAMATS, alternate form 'qamats qatan'
-0xDF	0x05B3	# HEBREW POINT HATAF QAMATS
-0xE0	0x05D0	# HEBREW LETTER ALEF
-0xE1	0x05D1	# HEBREW LETTER BET
-0xE2	0x05D2	# HEBREW LETTER GIMEL
-0xE3	0x05D3	# HEBREW LETTER DALET
-0xE4	0x05D4	# HEBREW LETTER HE
-0xE5	0x05D5	# HEBREW LETTER VAV
-0xE6	0x05D6	# HEBREW LETTER ZAYIN
-0xE7	0x05D7	# HEBREW LETTER HET
-0xE8	0x05D8	# HEBREW LETTER TET
-0xE9	0x05D9	# HEBREW LETTER YOD
-0xEA	0x05DA	# HEBREW LETTER FINAL KAF
-0xEB	0x05DB	# HEBREW LETTER KAF
-0xEC	0x05DC	# HEBREW LETTER LAMED
-0xED	0x05DD	# HEBREW LETTER FINAL MEM
-0xEE	0x05DE	# HEBREW LETTER MEM
-0xEF	0x05DF	# HEBREW LETTER FINAL NUN
-0xF0	0x05E0	# HEBREW LETTER NUN
-0xF1	0x05E1	# HEBREW LETTER SAMEKH
-0xF2	0x05E2	# HEBREW LETTER AYIN
-0xF3	0x05E3	# HEBREW LETTER FINAL PE
-0xF4	0x05E4	# HEBREW LETTER PE
-0xF5	0x05E5	# HEBREW LETTER FINAL TSADI
-0xF6	0x05E6	# HEBREW LETTER TSADI
-0xF7	0x05E7	# HEBREW LETTER QOF
-0xF8	0x05E8	# HEBREW LETTER RESH
-0xF9	0x05E9	# HEBREW LETTER SHIN
-0xFA	0x05EA	# HEBREW LETTER TAV
-0xFB	<RL>+0x007D	# RIGHT CURLY BRACKET, right-left
-0xFC	<RL>+0x005D	# RIGHT SQUARE BRACKET, right-left
-0xFD	<RL>+0x007B	# LEFT CURLY BRACKET, right-left
-0xFE	<RL>+0x005B	# LEFT SQUARE BRACKET, right-left
-0xFF	<RL>+0x007C	# VERTICAL LINE, right-left
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/HEBREW.TXT'
+0x20    <LR>+0x0020     # SPACE, left-right
+0x21    <LR>+0x0021     # EXCLAMATION MARK, left-right
+0x22    <LR>+0x0022     # QUOTATION MARK, left-right
+0x23    <LR>+0x0023     # NUMBER SIGN, left-right
+0x24    <LR>+0x0024     # DOLLAR SIGN, left-right
+0x25    <LR>+0x0025     # PERCENT SIGN, left-right
+0x26    0x0026  # AMPERSAND
+0x27    <LR>+0x0027     # APOSTROPHE, left-right
+0x28    <LR>+0x0028     # LEFT PARENTHESIS, left-right
+0x29    <LR>+0x0029     # RIGHT PARENTHESIS, left-right
+0x2A    <LR>+0x002A     # ASTERISK, left-right
+0x2B    <LR>+0x002B     # PLUS SIGN, left-right
+0x2C    <LR>+0x002C     # COMMA, left-right
+0x2D    <LR>+0x002D     # HYPHEN-MINUS, left-right
+0x2E    <LR>+0x002E     # FULL STOP, left-right
+0x2F    <LR>+0x002F     # SOLIDUS, left-right
+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    <LR>+0x003A     # COLON, left-right
+0x3B    <LR>+0x003B     # SEMICOLON, left-right
+0x3C    <LR>+0x003C     # LESS-THAN SIGN, left-right
+0x3D    <LR>+0x003D     # EQUALS SIGN, left-right
+0x3E    <LR>+0x003E     # GREATER-THAN SIGN, left-right
+0x3F    <LR>+0x003F     # QUESTION MARK, left-right
+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    <LR>+0x005B     # LEFT SQUARE BRACKET, left-right
+0x5C    0x005C  # REVERSE SOLIDUS
+0x5D    <LR>+0x005D     # RIGHT SQUARE BRACKET, left-right
+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    <LR>+0x007B     # LEFT CURLY BRACKET, left-right
+0x7C    <LR>+0x007C     # VERTICAL LINE, left-right
+0x7D    <LR>+0x007D     # RIGHT CURLY BRACKET, left-right
+0x7E    0x007E  # TILDE
+#
+0x80    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x81    0x05F2+0x05B7   # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
+0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
+0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
+0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
+0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
+0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
+0x8B    0x00E3  # LATIN SMALL LETTER A WITH TILDE
+0x8C    0x00E5  # LATIN SMALL LETTER A WITH RING ABOVE
+0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
+0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
+0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
+0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
+0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
+0x93    0x00EC  # LATIN SMALL LETTER I WITH GRAVE
+0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
+0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
+0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
+0x98    0x00F2  # LATIN SMALL LETTER O WITH GRAVE
+0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
+0x9B    0x00F5  # LATIN SMALL LETTER O WITH TILDE
+0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
+0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
+0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
+0xA0    <RL>+0x0020     # SPACE, right-left
+0xA1    <RL>+0x0021     # EXCLAMATION MARK, right-left
+0xA2    <RL>+0x0022     # QUOTATION MARK, right-left
+0xA3    <RL>+0x0023     # NUMBER SIGN, right-left
+0xA4    <RL>+0x0024     # DOLLAR SIGN, right-left
+0xA5    <RL>+0x0025     # PERCENT SIGN, right-left
+0xA6    0x20AA  # NEW SHEQEL SIGN
+0xA7    <RL>+0x0027     # APOSTROPHE, right-left
+0xA8    <RL>+0x0029     # RIGHT PARENTHESIS, right-left
+0xA9    <RL>+0x0028     # LEFT PARENTHESIS, right-left
+0xAA    <RL>+0x002A     # ASTERISK, right-left
+0xAB    <RL>+0x002B     # PLUS SIGN, right-left
+0xAC    <RL>+0x002C     # COMMA, right-left
+0xAD    <RL>+0x002D     # HYPHEN-MINUS, right-left
+0xAE    <RL>+0x002E     # FULL STOP, right-left
+0xAF    <RL>+0x002F     # SOLIDUS, right-left
+0xB0    <RL>+0x0030     # DIGIT ZERO, right-left (need override)
+0xB1    <RL>+0x0031     # DIGIT ONE, right-left (need override)
+0xB2    <RL>+0x0032     # DIGIT TWO, right-left (need override)
+0xB3    <RL>+0x0033     # DIGIT THREE, right-left (need override)
+0xB4    <RL>+0x0034     # DIGIT FOUR, right-left (need override)
+0xB5    <RL>+0x0035     # DIGIT FIVE, right-left (need override)
+0xB6    <RL>+0x0036     # DIGIT SIX, right-left (need override)
+0xB7    <RL>+0x0037     # DIGIT SEVEN, right-left (need override)
+0xB8    <RL>+0x0038     # DIGIT EIGHT, right-left (need override)
+0xB9    <RL>+0x0039     # DIGIT NINE, right-left (need override)
+0xBA    <RL>+0x003A     # COLON, right-left
+0xBB    <RL>+0x003B     # SEMICOLON, right-left
+0xBC    <RL>+0x003C     # LESS-THAN SIGN, right-left
+0xBD    <RL>+0x003D     # EQUALS SIGN, right-left
+0xBE    <RL>+0x003E     # GREATER-THAN SIGN, right-left
+0xBF    <RL>+0x003F     # QUESTION MARK, right-left
+0xC0    0xF86A+0x05DC+0x05B9    # Hebrew ligature lamed holam
+0xC1    <RL>+0x201E     # DOUBLE LOW-9 QUOTATION MARK, right-left
+0xC2    0xF89B  # Hebrew canoral 1
+0xC3    0xF89C  # Hebrew canoral 2
+0xC4    0xF89D  # Hebrew canoral 3
+0xC5    0xF89E  # Hebrew canoral 4
+0xC6    0x05BC  # HEBREW POINT DAGESH OR MAPIQ
+0xC7    0xFB4B  # HEBREW LETTER VAV WITH HOLAM
+0xC8    0xFB35  # HEBREW LETTER VAV WITH DAGESH
+0xC9    <RL>+0x2026     # HORIZONTAL ELLIPSIS, right-left
+0xCA    <RL>+0x00A0     # NO-BREAK SPACE, right-left
+0xCB    0x05B8  # HEBREW POINT QAMATS
+0xCC    0x05B7  # HEBREW POINT PATAH
+0xCD    0x05B5  # HEBREW POINT TSERE
+0xCE    0x05B6  # HEBREW POINT SEGOL
+0xCF    0x05B4  # HEBREW POINT HIRIQ
+0xD0    <RL>+0x2013     # EN DASH, right-left
+0xD1    <RL>+0x2014     # EM DASH, right-left
+0xD2    <RL>+0x201C     # LEFT DOUBLE QUOTATION MARK, right-left
+0xD3    <RL>+0x201D     # RIGHT DOUBLE QUOTATION MARK, right-left
+0xD4    <RL>+0x2018     # LEFT SINGLE QUOTATION MARK, right-left
+0xD5    <RL>+0x2019     # RIGHT SINGLE QUOTATION MARK, right-left
+0xD6    0xFB2A  # HEBREW LETTER SHIN WITH SHIN DOT
+0xD7    0xFB2B  # HEBREW LETTER SHIN WITH SIN DOT
+0xD8    0x05BF  # HEBREW POINT RAFE
+0xD9    0x05B0  # HEBREW POINT SHEVA
+0xDA    0x05B2  # HEBREW POINT HATAF PATAH
+0xDB    0x05B1  # HEBREW POINT HATAF SEGOL
+0xDC    0x05BB  # HEBREW POINT QUBUTS
+0xDD    0x05B9  # HEBREW POINT HOLAM
+0xDE    0x05B8+0xF87F   # HEBREW POINT QAMATS, alternate form 'qamats qatan'
+0xDF    0x05B3  # HEBREW POINT HATAF QAMATS
+0xE0    0x05D0  # HEBREW LETTER ALEF
+0xE1    0x05D1  # HEBREW LETTER BET
+0xE2    0x05D2  # HEBREW LETTER GIMEL
+0xE3    0x05D3  # HEBREW LETTER DALET
+0xE4    0x05D4  # HEBREW LETTER HE
+0xE5    0x05D5  # HEBREW LETTER VAV
+0xE6    0x05D6  # HEBREW LETTER ZAYIN
+0xE7    0x05D7  # HEBREW LETTER HET
+0xE8    0x05D8  # HEBREW LETTER TET
+0xE9    0x05D9  # HEBREW LETTER YOD
+0xEA    0x05DA  # HEBREW LETTER FINAL KAF
+0xEB    0x05DB  # HEBREW LETTER KAF
+0xEC    0x05DC  # HEBREW LETTER LAMED
+0xED    0x05DD  # HEBREW LETTER FINAL MEM
+0xEE    0x05DE  # HEBREW LETTER MEM
+0xEF    0x05DF  # HEBREW LETTER FINAL NUN
+0xF0    0x05E0  # HEBREW LETTER NUN
+0xF1    0x05E1  # HEBREW LETTER SAMEKH
+0xF2    0x05E2  # HEBREW LETTER AYIN
+0xF3    0x05E3  # HEBREW LETTER FINAL PE
+0xF4    0x05E4  # HEBREW LETTER PE
+0xF5    0x05E5  # HEBREW LETTER FINAL TSADI
+0xF6    0x05E6  # HEBREW LETTER TSADI
+0xF7    0x05E7  # HEBREW LETTER QOF
+0xF8    0x05E8  # HEBREW LETTER RESH
+0xF9    0x05E9  # HEBREW LETTER SHIN
+0xFA    0x05EA  # HEBREW LETTER TAV
+0xFB    <RL>+0x007D     # RIGHT CURLY BRACKET, right-left
+0xFC    <RL>+0x005D     # RIGHT SQUARE BRACKET, right-left
+0xFD    <RL>+0x007B     # LEFT CURLY BRACKET, right-left
+0xFE    <RL>+0x005B     # LEFT SQUARE BRACKET, right-left
+0xFF    <RL>+0x007C     # VERTICAL LINE, right-left
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/HEBREW.TXT'
 ! !
 
 !CharacterEncoder::MAC_Hebrew methodsFor:'encoding & decoding'!
@@ -12912,8 +29678,8 @@
 
     code < 32 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r0020"    16rFFFF
@@ -13226,7 +29992,7 @@
 #
 #   1. General
 #
-#	Mac OS Icelandic is used for Icelandic and Faroese.
+#       Mac OS Icelandic is used for Icelandic and Faroese.
 #
 #   The Mac OS Icelandic encoding shares the script code smRoman
 #   (0) with the standard Mac OS Roman encoding. To determine if
@@ -13288,236 +30054,236 @@
 #
 ##################
 
-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	# REVERSE SOLIDUS
-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
-#
-0x80	0x00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS
-0x81	0x00C5	# LATIN CAPITAL LETTER A WITH RING ABOVE
-0x82	0x00C7	# LATIN CAPITAL LETTER C WITH CEDILLA
-0x83	0x00C9	# LATIN CAPITAL LETTER E WITH ACUTE
-0x84	0x00D1	# LATIN CAPITAL LETTER N WITH TILDE
-0x85	0x00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS
-0x86	0x00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS
-0x87	0x00E1	# LATIN SMALL LETTER A WITH ACUTE
-0x88	0x00E0	# LATIN SMALL LETTER A WITH GRAVE
-0x89	0x00E2	# LATIN SMALL LETTER A WITH CIRCUMFLEX
-0x8A	0x00E4	# LATIN SMALL LETTER A WITH DIAERESIS
-0x8B	0x00E3	# LATIN SMALL LETTER A WITH TILDE
-0x8C	0x00E5	# LATIN SMALL LETTER A WITH RING ABOVE
-0x8D	0x00E7	# LATIN SMALL LETTER C WITH CEDILLA
-0x8E	0x00E9	# LATIN SMALL LETTER E WITH ACUTE
-0x8F	0x00E8	# LATIN SMALL LETTER E WITH GRAVE
-0x90	0x00EA	# LATIN SMALL LETTER E WITH CIRCUMFLEX
-0x91	0x00EB	# LATIN SMALL LETTER E WITH DIAERESIS
-0x92	0x00ED	# LATIN SMALL LETTER I WITH ACUTE
-0x93	0x00EC	# LATIN SMALL LETTER I WITH GRAVE
-0x94	0x00EE	# LATIN SMALL LETTER I WITH CIRCUMFLEX
-0x95	0x00EF	# LATIN SMALL LETTER I WITH DIAERESIS
-0x96	0x00F1	# LATIN SMALL LETTER N WITH TILDE
-0x97	0x00F3	# LATIN SMALL LETTER O WITH ACUTE
-0x98	0x00F2	# LATIN SMALL LETTER O WITH GRAVE
-0x99	0x00F4	# LATIN SMALL LETTER O WITH CIRCUMFLEX
-0x9A	0x00F6	# LATIN SMALL LETTER O WITH DIAERESIS
-0x9B	0x00F5	# LATIN SMALL LETTER O WITH TILDE
-0x9C	0x00FA	# LATIN SMALL LETTER U WITH ACUTE
-0x9D	0x00F9	# LATIN SMALL LETTER U WITH GRAVE
-0x9E	0x00FB	# LATIN SMALL LETTER U WITH CIRCUMFLEX
-0x9F	0x00FC	# LATIN SMALL LETTER U WITH DIAERESIS
-0xA0	0x00DD	# LATIN CAPITAL LETTER Y WITH ACUTE
-0xA1	0x00B0	# DEGREE SIGN
-0xA2	0x00A2	# CENT SIGN
-0xA3	0x00A3	# POUND SIGN
-0xA4	0x00A7	# SECTION SIGN
-0xA5	0x2022	# BULLET
-0xA6	0x00B6	# PILCROW SIGN
-0xA7	0x00DF	# LATIN SMALL LETTER SHARP S
-0xA8	0x00AE	# REGISTERED SIGN
-0xA9	0x00A9	# COPYRIGHT SIGN
-0xAA	0x2122	# TRADE MARK SIGN
-0xAB	0x00B4	# ACUTE ACCENT
-0xAC	0x00A8	# DIAERESIS
-0xAD	0x2260	# NOT EQUAL TO
-0xAE	0x00C6	# LATIN CAPITAL LETTER AE
-0xAF	0x00D8	# LATIN CAPITAL LETTER O WITH STROKE
-0xB0	0x221E	# INFINITY
-0xB1	0x00B1	# PLUS-MINUS SIGN
-0xB2	0x2264	# LESS-THAN OR EQUAL TO
-0xB3	0x2265	# GREATER-THAN OR EQUAL TO
-0xB4	0x00A5	# YEN SIGN
-0xB5	0x00B5	# MICRO SIGN
-0xB6	0x2202	# PARTIAL DIFFERENTIAL
-0xB7	0x2211	# N-ARY SUMMATION
-0xB8	0x220F	# N-ARY PRODUCT
-0xB9	0x03C0	# GREEK SMALL LETTER PI
-0xBA	0x222B	# INTEGRAL
-0xBB	0x00AA	# FEMININE ORDINAL INDICATOR
-0xBC	0x00BA	# MASCULINE ORDINAL INDICATOR
-0xBD	0x03A9	# GREEK CAPITAL LETTER OMEGA
-0xBE	0x00E6	# LATIN SMALL LETTER AE
-0xBF	0x00F8	# LATIN SMALL LETTER O WITH STROKE
-0xC0	0x00BF	# INVERTED QUESTION MARK
-0xC1	0x00A1	# INVERTED EXCLAMATION MARK
-0xC2	0x00AC	# NOT SIGN
-0xC3	0x221A	# SQUARE ROOT
-0xC4	0x0192	# LATIN SMALL LETTER F WITH HOOK
-0xC5	0x2248	# ALMOST EQUAL TO
-0xC6	0x2206	# INCREMENT
-0xC7	0x00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xC8	0x00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xC9	0x2026	# HORIZONTAL ELLIPSIS
-0xCA	0x00A0	# NO-BREAK SPACE
-0xCB	0x00C0	# LATIN CAPITAL LETTER A WITH GRAVE
-0xCC	0x00C3	# LATIN CAPITAL LETTER A WITH TILDE
-0xCD	0x00D5	# LATIN CAPITAL LETTER O WITH TILDE
-0xCE	0x0152	# LATIN CAPITAL LIGATURE OE
-0xCF	0x0153	# LATIN SMALL LIGATURE OE
-0xD0	0x2013	# EN DASH
-0xD1	0x2014	# EM DASH
-0xD2	0x201C	# LEFT DOUBLE QUOTATION MARK
-0xD3	0x201D	# RIGHT DOUBLE QUOTATION MARK
-0xD4	0x2018	# LEFT SINGLE QUOTATION MARK
-0xD5	0x2019	# RIGHT SINGLE QUOTATION MARK
-0xD6	0x00F7	# DIVISION SIGN
-0xD7	0x25CA	# LOZENGE
-0xD8	0x00FF	# LATIN SMALL LETTER Y WITH DIAERESIS
-0xD9	0x0178	# LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xDA	0x2044	# FRACTION SLASH
-0xDB	0x20AC	# EURO SIGN
-0xDC	0x00D0	# LATIN CAPITAL LETTER ETH
-0xDD	0x00F0	# LATIN SMALL LETTER ETH
-0xDE	0x00DE	# LATIN CAPITAL LETTER THORN
-0xDF	0x00FE	# LATIN SMALL LETTER THORN
-0xE0	0x00FD	# LATIN SMALL LETTER Y WITH ACUTE
-0xE1	0x00B7	# MIDDLE DOT
-0xE2	0x201A	# SINGLE LOW-9 QUOTATION MARK
-0xE3	0x201E	# DOUBLE LOW-9 QUOTATION MARK
-0xE4	0x2030	# PER MILLE SIGN
-0xE5	0x00C2	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xE6	0x00CA	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xE7	0x00C1	# LATIN CAPITAL LETTER A WITH ACUTE
-0xE8	0x00CB	# LATIN CAPITAL LETTER E WITH DIAERESIS
-0xE9	0x00C8	# LATIN CAPITAL LETTER E WITH GRAVE
-0xEA	0x00CD	# LATIN CAPITAL LETTER I WITH ACUTE
-0xEB	0x00CE	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xEC	0x00CF	# LATIN CAPITAL LETTER I WITH DIAERESIS
-0xED	0x00CC	# LATIN CAPITAL LETTER I WITH GRAVE
-0xEE	0x00D3	# LATIN CAPITAL LETTER O WITH ACUTE
-0xEF	0x00D4	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xF0	0xF8FF	# Apple logo
-0xF1	0x00D2	# LATIN CAPITAL LETTER O WITH GRAVE
-0xF2	0x00DA	# LATIN CAPITAL LETTER U WITH ACUTE
-0xF3	0x00DB	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xF4	0x00D9	# LATIN CAPITAL LETTER U WITH GRAVE
-0xF5	0x0131	# LATIN SMALL LETTER DOTLESS I
-0xF6	0x02C6	# MODIFIER LETTER CIRCUMFLEX ACCENT
-0xF7	0x02DC	# SMALL TILDE
-0xF8	0x00AF	# MACRON
-0xF9	0x02D8	# BREVE
-0xFA	0x02D9	# DOT ABOVE
-0xFB	0x02DA	# RING ABOVE
-0xFC	0x00B8	# CEDILLA
-0xFD	0x02DD	# DOUBLE ACUTE ACCENT
-0xFE	0x02DB	# OGONEK
-0xFF	0x02C7	# CARON
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ICELAND.TXT'
+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  # REVERSE SOLIDUS
+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
+#
+0x80    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x81    0x00C5  # LATIN CAPITAL LETTER A WITH RING ABOVE
+0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
+0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
+0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
+0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
+0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
+0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
+0x8B    0x00E3  # LATIN SMALL LETTER A WITH TILDE
+0x8C    0x00E5  # LATIN SMALL LETTER A WITH RING ABOVE
+0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
+0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
+0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
+0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
+0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
+0x93    0x00EC  # LATIN SMALL LETTER I WITH GRAVE
+0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
+0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
+0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
+0x98    0x00F2  # LATIN SMALL LETTER O WITH GRAVE
+0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
+0x9B    0x00F5  # LATIN SMALL LETTER O WITH TILDE
+0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
+0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
+0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
+0xA0    0x00DD  # LATIN CAPITAL LETTER Y WITH ACUTE
+0xA1    0x00B0  # DEGREE SIGN
+0xA2    0x00A2  # CENT SIGN
+0xA3    0x00A3  # POUND SIGN
+0xA4    0x00A7  # SECTION SIGN
+0xA5    0x2022  # BULLET
+0xA6    0x00B6  # PILCROW SIGN
+0xA7    0x00DF  # LATIN SMALL LETTER SHARP S
+0xA8    0x00AE  # REGISTERED SIGN
+0xA9    0x00A9  # COPYRIGHT SIGN
+0xAA    0x2122  # TRADE MARK SIGN
+0xAB    0x00B4  # ACUTE ACCENT
+0xAC    0x00A8  # DIAERESIS
+0xAD    0x2260  # NOT EQUAL TO
+0xAE    0x00C6  # LATIN CAPITAL LETTER AE
+0xAF    0x00D8  # LATIN CAPITAL LETTER O WITH STROKE
+0xB0    0x221E  # INFINITY
+0xB1    0x00B1  # PLUS-MINUS SIGN
+0xB2    0x2264  # LESS-THAN OR EQUAL TO
+0xB3    0x2265  # GREATER-THAN OR EQUAL TO
+0xB4    0x00A5  # YEN SIGN
+0xB5    0x00B5  # MICRO SIGN
+0xB6    0x2202  # PARTIAL DIFFERENTIAL
+0xB7    0x2211  # N-ARY SUMMATION
+0xB8    0x220F  # N-ARY PRODUCT
+0xB9    0x03C0  # GREEK SMALL LETTER PI
+0xBA    0x222B  # INTEGRAL
+0xBB    0x00AA  # FEMININE ORDINAL INDICATOR
+0xBC    0x00BA  # MASCULINE ORDINAL INDICATOR
+0xBD    0x03A9  # GREEK CAPITAL LETTER OMEGA
+0xBE    0x00E6  # LATIN SMALL LETTER AE
+0xBF    0x00F8  # LATIN SMALL LETTER O WITH STROKE
+0xC0    0x00BF  # INVERTED QUESTION MARK
+0xC1    0x00A1  # INVERTED EXCLAMATION MARK
+0xC2    0x00AC  # NOT SIGN
+0xC3    0x221A  # SQUARE ROOT
+0xC4    0x0192  # LATIN SMALL LETTER F WITH HOOK
+0xC5    0x2248  # ALMOST EQUAL TO
+0xC6    0x2206  # INCREMENT
+0xC7    0x00AB  # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC8    0x00BB  # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC9    0x2026  # HORIZONTAL ELLIPSIS
+0xCA    0x00A0  # NO-BREAK SPACE
+0xCB    0x00C0  # LATIN CAPITAL LETTER A WITH GRAVE
+0xCC    0x00C3  # LATIN CAPITAL LETTER A WITH TILDE
+0xCD    0x00D5  # LATIN CAPITAL LETTER O WITH TILDE
+0xCE    0x0152  # LATIN CAPITAL LIGATURE OE
+0xCF    0x0153  # LATIN SMALL LIGATURE OE
+0xD0    0x2013  # EN DASH
+0xD1    0x2014  # EM DASH
+0xD2    0x201C  # LEFT DOUBLE QUOTATION MARK
+0xD3    0x201D  # RIGHT DOUBLE QUOTATION MARK
+0xD4    0x2018  # LEFT SINGLE QUOTATION MARK
+0xD5    0x2019  # RIGHT SINGLE QUOTATION MARK
+0xD6    0x00F7  # DIVISION SIGN
+0xD7    0x25CA  # LOZENGE
+0xD8    0x00FF  # LATIN SMALL LETTER Y WITH DIAERESIS
+0xD9    0x0178  # LATIN CAPITAL LETTER Y WITH DIAERESIS
+0xDA    0x2044  # FRACTION SLASH
+0xDB    0x20AC  # EURO SIGN
+0xDC    0x00D0  # LATIN CAPITAL LETTER ETH
+0xDD    0x00F0  # LATIN SMALL LETTER ETH
+0xDE    0x00DE  # LATIN CAPITAL LETTER THORN
+0xDF    0x00FE  # LATIN SMALL LETTER THORN
+0xE0    0x00FD  # LATIN SMALL LETTER Y WITH ACUTE
+0xE1    0x00B7  # MIDDLE DOT
+0xE2    0x201A  # SINGLE LOW-9 QUOTATION MARK
+0xE3    0x201E  # DOUBLE LOW-9 QUOTATION MARK
+0xE4    0x2030  # PER MILLE SIGN
+0xE5    0x00C2  # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xE6    0x00CA  # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xE7    0x00C1  # LATIN CAPITAL LETTER A WITH ACUTE
+0xE8    0x00CB  # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xE9    0x00C8  # LATIN CAPITAL LETTER E WITH GRAVE
+0xEA    0x00CD  # LATIN CAPITAL LETTER I WITH ACUTE
+0xEB    0x00CE  # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xEC    0x00CF  # LATIN CAPITAL LETTER I WITH DIAERESIS
+0xED    0x00CC  # LATIN CAPITAL LETTER I WITH GRAVE
+0xEE    0x00D3  # LATIN CAPITAL LETTER O WITH ACUTE
+0xEF    0x00D4  # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xF0    0xF8FF  # Apple logo
+0xF1    0x00D2  # LATIN CAPITAL LETTER O WITH GRAVE
+0xF2    0x00DA  # LATIN CAPITAL LETTER U WITH ACUTE
+0xF3    0x00DB  # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xF4    0x00D9  # LATIN CAPITAL LETTER U WITH GRAVE
+0xF5    0x0131  # LATIN SMALL LETTER DOTLESS I
+0xF6    0x02C6  # MODIFIER LETTER CIRCUMFLEX ACCENT
+0xF7    0x02DC  # SMALL TILDE
+0xF8    0x00AF  # MACRON
+0xF9    0x02D8  # BREVE
+0xFA    0x02D9  # DOT ABOVE
+0xFB    0x02DA  # RING ABOVE
+0xFC    0x00B8  # CEDILLA
+0xFD    0x02DD  # DOUBLE ACUTE ACCENT
+0xFE    0x02DB  # OGONEK
+0xFF    0x02C7  # CARON
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/ICELAND.TXT'
 ! !
 
 !CharacterEncoder::MAC_Iceland methodsFor:'encoding & decoding'!
@@ -13527,8 +30293,8 @@
 
     code < 127 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r007F"    16rFFFF " invalid " 
@@ -13665,14 +30431,14 @@
 
 !CharacterEncoder::MAC_Japanese class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/JAPANESE.TXT'
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/JAPANESE.TXT'
 ! !
 
 !CharacterEncoder::MAC_Korean class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/KOREAN.TXT'
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/KOREAN.TXT'
 ! !
 
 !CharacterEncoder::MAC_Roman class methodsFor:'mapping'!
@@ -14047,8 +30813,8 @@
 "
 !
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.TXT'
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/ROMAN.TXT'
 ! !
 
 !CharacterEncoder::MAC_Roman methodsFor:'encoding & decoding'!
@@ -14281,7 +31047,7 @@
 # Notes on Mac OS Romanian:
 # -------------------------
 #
-#	Mac OS Romanian is used only for Romanian.
+#       Mac OS Romanian is used only for Romanian.
 #
 #   The Mac OS Romanian encoding shares the script code smRoman
 #   (0) with the standard Mac OS Roman encoding. To determine if
@@ -14336,236 +31102,236 @@
 #
 ##################
 
-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	# REVERSE SOLIDUS
-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
-#
-0x80	0x00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS
-0x81	0x00C5	# LATIN CAPITAL LETTER A WITH RING ABOVE
-0x82	0x00C7	# LATIN CAPITAL LETTER C WITH CEDILLA
-0x83	0x00C9	# LATIN CAPITAL LETTER E WITH ACUTE
-0x84	0x00D1	# LATIN CAPITAL LETTER N WITH TILDE
-0x85	0x00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS
-0x86	0x00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS
-0x87	0x00E1	# LATIN SMALL LETTER A WITH ACUTE
-0x88	0x00E0	# LATIN SMALL LETTER A WITH GRAVE
-0x89	0x00E2	# LATIN SMALL LETTER A WITH CIRCUMFLEX
-0x8A	0x00E4	# LATIN SMALL LETTER A WITH DIAERESIS
-0x8B	0x00E3	# LATIN SMALL LETTER A WITH TILDE
-0x8C	0x00E5	# LATIN SMALL LETTER A WITH RING ABOVE
-0x8D	0x00E7	# LATIN SMALL LETTER C WITH CEDILLA
-0x8E	0x00E9	# LATIN SMALL LETTER E WITH ACUTE
-0x8F	0x00E8	# LATIN SMALL LETTER E WITH GRAVE
-0x90	0x00EA	# LATIN SMALL LETTER E WITH CIRCUMFLEX
-0x91	0x00EB	# LATIN SMALL LETTER E WITH DIAERESIS
-0x92	0x00ED	# LATIN SMALL LETTER I WITH ACUTE
-0x93	0x00EC	# LATIN SMALL LETTER I WITH GRAVE
-0x94	0x00EE	# LATIN SMALL LETTER I WITH CIRCUMFLEX
-0x95	0x00EF	# LATIN SMALL LETTER I WITH DIAERESIS
-0x96	0x00F1	# LATIN SMALL LETTER N WITH TILDE
-0x97	0x00F3	# LATIN SMALL LETTER O WITH ACUTE
-0x98	0x00F2	# LATIN SMALL LETTER O WITH GRAVE
-0x99	0x00F4	# LATIN SMALL LETTER O WITH CIRCUMFLEX
-0x9A	0x00F6	# LATIN SMALL LETTER O WITH DIAERESIS
-0x9B	0x00F5	# LATIN SMALL LETTER O WITH TILDE
-0x9C	0x00FA	# LATIN SMALL LETTER U WITH ACUTE
-0x9D	0x00F9	# LATIN SMALL LETTER U WITH GRAVE
-0x9E	0x00FB	# LATIN SMALL LETTER U WITH CIRCUMFLEX
-0x9F	0x00FC	# LATIN SMALL LETTER U WITH DIAERESIS
-0xA0	0x2020	# DAGGER
-0xA1	0x00B0	# DEGREE SIGN
-0xA2	0x00A2	# CENT SIGN
-0xA3	0x00A3	# POUND SIGN
-0xA4	0x00A7	# SECTION SIGN
-0xA5	0x2022	# BULLET
-0xA6	0x00B6	# PILCROW SIGN
-0xA7	0x00DF	# LATIN SMALL LETTER SHARP S
-0xA8	0x00AE	# REGISTERED SIGN
-0xA9	0x00A9	# COPYRIGHT SIGN
-0xAA	0x2122	# TRADE MARK SIGN
-0xAB	0x00B4	# ACUTE ACCENT
-0xAC	0x00A8	# DIAERESIS
-0xAD	0x2260	# NOT EQUAL TO
-0xAE	0x0102	# LATIN CAPITAL LETTER A WITH BREVE
-0xAF	0x0218	# LATIN CAPITAL LETTER S WITH COMMA BELOW	# for Unicode 3.0 and later
-0xB0	0x221E	# INFINITY
-0xB1	0x00B1	# PLUS-MINUS SIGN
-0xB2	0x2264	# LESS-THAN OR EQUAL TO
-0xB3	0x2265	# GREATER-THAN OR EQUAL TO
-0xB4	0x00A5	# YEN SIGN
-0xB5	0x00B5	# MICRO SIGN
-0xB6	0x2202	# PARTIAL DIFFERENTIAL
-0xB7	0x2211	# N-ARY SUMMATION
-0xB8	0x220F	# N-ARY PRODUCT
-0xB9	0x03C0	# GREEK SMALL LETTER PI
-0xBA	0x222B	# INTEGRAL
-0xBB	0x00AA	# FEMININE ORDINAL INDICATOR
-0xBC	0x00BA	# MASCULINE ORDINAL INDICATOR
-0xBD	0x03A9	# GREEK CAPITAL LETTER OMEGA
-0xBE	0x0103	# LATIN SMALL LETTER A WITH BREVE
-0xBF	0x0219	# LATIN SMALL LETTER S WITH COMMA BELOW	# for Unicode 3.0 and later
-0xC0	0x00BF	# INVERTED QUESTION MARK
-0xC1	0x00A1	# INVERTED EXCLAMATION MARK
-0xC2	0x00AC	# NOT SIGN
-0xC3	0x221A	# SQUARE ROOT
-0xC4	0x0192	# LATIN SMALL LETTER F WITH HOOK
-0xC5	0x2248	# ALMOST EQUAL TO
-0xC6	0x2206	# INCREMENT
-0xC7	0x00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xC8	0x00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xC9	0x2026	# HORIZONTAL ELLIPSIS
-0xCA	0x00A0	# NO-BREAK SPACE
-0xCB	0x00C0	# LATIN CAPITAL LETTER A WITH GRAVE
-0xCC	0x00C3	# LATIN CAPITAL LETTER A WITH TILDE
-0xCD	0x00D5	# LATIN CAPITAL LETTER O WITH TILDE
-0xCE	0x0152	# LATIN CAPITAL LIGATURE OE
-0xCF	0x0153	# LATIN SMALL LIGATURE OE
-0xD0	0x2013	# EN DASH
-0xD1	0x2014	# EM DASH
-0xD2	0x201C	# LEFT DOUBLE QUOTATION MARK
-0xD3	0x201D	# RIGHT DOUBLE QUOTATION MARK
-0xD4	0x2018	# LEFT SINGLE QUOTATION MARK
-0xD5	0x2019	# RIGHT SINGLE QUOTATION MARK
-0xD6	0x00F7	# DIVISION SIGN
-0xD7	0x25CA	# LOZENGE
-0xD8	0x00FF	# LATIN SMALL LETTER Y WITH DIAERESIS
-0xD9	0x0178	# LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xDA	0x2044	# FRACTION SLASH
-0xDB	0x20AC	# EURO SIGN
-0xDC	0x2039	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0xDD	0x203A	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0xDE	0x021A	# LATIN CAPITAL LETTER T WITH COMMA BELOW	# for Unicode 3.0 and later
-0xDF	0x021B	# LATIN SMALL LETTER T WITH COMMA BELOW;	# for Unicode 3.0 and later
-0xE0	0x2021	# DOUBLE DAGGER
-0xE1	0x00B7	# MIDDLE DOT
-0xE2	0x201A	# SINGLE LOW-9 QUOTATION MARK
-0xE3	0x201E	# DOUBLE LOW-9 QUOTATION MARK
-0xE4	0x2030	# PER MILLE SIGN
-0xE5	0x00C2	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xE6	0x00CA	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xE7	0x00C1	# LATIN CAPITAL LETTER A WITH ACUTE
-0xE8	0x00CB	# LATIN CAPITAL LETTER E WITH DIAERESIS
-0xE9	0x00C8	# LATIN CAPITAL LETTER E WITH GRAVE
-0xEA	0x00CD	# LATIN CAPITAL LETTER I WITH ACUTE
-0xEB	0x00CE	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xEC	0x00CF	# LATIN CAPITAL LETTER I WITH DIAERESIS
-0xED	0x00CC	# LATIN CAPITAL LETTER I WITH GRAVE
-0xEE	0x00D3	# LATIN CAPITAL LETTER O WITH ACUTE
-0xEF	0x00D4	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xF0	0xF8FF	# Apple logo
-0xF1	0x00D2	# LATIN CAPITAL LETTER O WITH GRAVE
-0xF2	0x00DA	# LATIN CAPITAL LETTER U WITH ACUTE
-0xF3	0x00DB	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xF4	0x00D9	# LATIN CAPITAL LETTER U WITH GRAVE
-0xF5	0x0131	# LATIN SMALL LETTER DOTLESS I
-0xF6	0x02C6	# MODIFIER LETTER CIRCUMFLEX ACCENT
-0xF7	0x02DC	# SMALL TILDE
-0xF8	0x00AF	# MACRON
-0xF9	0x02D8	# BREVE
-0xFA	0x02D9	# DOT ABOVE
-0xFB	0x02DA	# RING ABOVE
-0xFC	0x00B8	# CEDILLA
-0xFD	0x02DD	# DOUBLE ACUTE ACCENT
-0xFE	0x02DB	# OGONEK
-0xFF	0x02C7	# CARON
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMANIAN.TXT'
+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  # REVERSE SOLIDUS
+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
+#
+0x80    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x81    0x00C5  # LATIN CAPITAL LETTER A WITH RING ABOVE
+0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
+0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
+0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
+0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
+0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
+0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
+0x8B    0x00E3  # LATIN SMALL LETTER A WITH TILDE
+0x8C    0x00E5  # LATIN SMALL LETTER A WITH RING ABOVE
+0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
+0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
+0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
+0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
+0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
+0x93    0x00EC  # LATIN SMALL LETTER I WITH GRAVE
+0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
+0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
+0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
+0x98    0x00F2  # LATIN SMALL LETTER O WITH GRAVE
+0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
+0x9B    0x00F5  # LATIN SMALL LETTER O WITH TILDE
+0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
+0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
+0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
+0xA0    0x2020  # DAGGER
+0xA1    0x00B0  # DEGREE SIGN
+0xA2    0x00A2  # CENT SIGN
+0xA3    0x00A3  # POUND SIGN
+0xA4    0x00A7  # SECTION SIGN
+0xA5    0x2022  # BULLET
+0xA6    0x00B6  # PILCROW SIGN
+0xA7    0x00DF  # LATIN SMALL LETTER SHARP S
+0xA8    0x00AE  # REGISTERED SIGN
+0xA9    0x00A9  # COPYRIGHT SIGN
+0xAA    0x2122  # TRADE MARK SIGN
+0xAB    0x00B4  # ACUTE ACCENT
+0xAC    0x00A8  # DIAERESIS
+0xAD    0x2260  # NOT EQUAL TO
+0xAE    0x0102  # LATIN CAPITAL LETTER A WITH BREVE
+0xAF    0x0218  # LATIN CAPITAL LETTER S WITH COMMA BELOW       # for Unicode 3.0 and later
+0xB0    0x221E  # INFINITY
+0xB1    0x00B1  # PLUS-MINUS SIGN
+0xB2    0x2264  # LESS-THAN OR EQUAL TO
+0xB3    0x2265  # GREATER-THAN OR EQUAL TO
+0xB4    0x00A5  # YEN SIGN
+0xB5    0x00B5  # MICRO SIGN
+0xB6    0x2202  # PARTIAL DIFFERENTIAL
+0xB7    0x2211  # N-ARY SUMMATION
+0xB8    0x220F  # N-ARY PRODUCT
+0xB9    0x03C0  # GREEK SMALL LETTER PI
+0xBA    0x222B  # INTEGRAL
+0xBB    0x00AA  # FEMININE ORDINAL INDICATOR
+0xBC    0x00BA  # MASCULINE ORDINAL INDICATOR
+0xBD    0x03A9  # GREEK CAPITAL LETTER OMEGA
+0xBE    0x0103  # LATIN SMALL LETTER A WITH BREVE
+0xBF    0x0219  # LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
+0xC0    0x00BF  # INVERTED QUESTION MARK
+0xC1    0x00A1  # INVERTED EXCLAMATION MARK
+0xC2    0x00AC  # NOT SIGN
+0xC3    0x221A  # SQUARE ROOT
+0xC4    0x0192  # LATIN SMALL LETTER F WITH HOOK
+0xC5    0x2248  # ALMOST EQUAL TO
+0xC6    0x2206  # INCREMENT
+0xC7    0x00AB  # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC8    0x00BB  # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC9    0x2026  # HORIZONTAL ELLIPSIS
+0xCA    0x00A0  # NO-BREAK SPACE
+0xCB    0x00C0  # LATIN CAPITAL LETTER A WITH GRAVE
+0xCC    0x00C3  # LATIN CAPITAL LETTER A WITH TILDE
+0xCD    0x00D5  # LATIN CAPITAL LETTER O WITH TILDE
+0xCE    0x0152  # LATIN CAPITAL LIGATURE OE
+0xCF    0x0153  # LATIN SMALL LIGATURE OE
+0xD0    0x2013  # EN DASH
+0xD1    0x2014  # EM DASH
+0xD2    0x201C  # LEFT DOUBLE QUOTATION MARK
+0xD3    0x201D  # RIGHT DOUBLE QUOTATION MARK
+0xD4    0x2018  # LEFT SINGLE QUOTATION MARK
+0xD5    0x2019  # RIGHT SINGLE QUOTATION MARK
+0xD6    0x00F7  # DIVISION SIGN
+0xD7    0x25CA  # LOZENGE
+0xD8    0x00FF  # LATIN SMALL LETTER Y WITH DIAERESIS
+0xD9    0x0178  # LATIN CAPITAL LETTER Y WITH DIAERESIS
+0xDA    0x2044  # FRACTION SLASH
+0xDB    0x20AC  # EURO SIGN
+0xDC    0x2039  # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+0xDD    0x203A  # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0xDE    0x021A  # LATIN CAPITAL LETTER T WITH COMMA BELOW       # for Unicode 3.0 and later
+0xDF    0x021B  # LATIN SMALL LETTER T WITH COMMA BELOW;        # for Unicode 3.0 and later
+0xE0    0x2021  # DOUBLE DAGGER
+0xE1    0x00B7  # MIDDLE DOT
+0xE2    0x201A  # SINGLE LOW-9 QUOTATION MARK
+0xE3    0x201E  # DOUBLE LOW-9 QUOTATION MARK
+0xE4    0x2030  # PER MILLE SIGN
+0xE5    0x00C2  # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xE6    0x00CA  # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xE7    0x00C1  # LATIN CAPITAL LETTER A WITH ACUTE
+0xE8    0x00CB  # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xE9    0x00C8  # LATIN CAPITAL LETTER E WITH GRAVE
+0xEA    0x00CD  # LATIN CAPITAL LETTER I WITH ACUTE
+0xEB    0x00CE  # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xEC    0x00CF  # LATIN CAPITAL LETTER I WITH DIAERESIS
+0xED    0x00CC  # LATIN CAPITAL LETTER I WITH GRAVE
+0xEE    0x00D3  # LATIN CAPITAL LETTER O WITH ACUTE
+0xEF    0x00D4  # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xF0    0xF8FF  # Apple logo
+0xF1    0x00D2  # LATIN CAPITAL LETTER O WITH GRAVE
+0xF2    0x00DA  # LATIN CAPITAL LETTER U WITH ACUTE
+0xF3    0x00DB  # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xF4    0x00D9  # LATIN CAPITAL LETTER U WITH GRAVE
+0xF5    0x0131  # LATIN SMALL LETTER DOTLESS I
+0xF6    0x02C6  # MODIFIER LETTER CIRCUMFLEX ACCENT
+0xF7    0x02DC  # SMALL TILDE
+0xF8    0x00AF  # MACRON
+0xF9    0x02D8  # BREVE
+0xFA    0x02D9  # DOT ABOVE
+0xFB    0x02DA  # RING ABOVE
+0xFC    0x00B8  # CEDILLA
+0xFD    0x02DD  # DOUBLE ACUTE ACCENT
+0xFE    0x02DB  # OGONEK
+0xFF    0x02C7  # CARON
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/ROMANIAN.TXT'
 ! !
 
 !CharacterEncoder::MAC_Romanian methodsFor:'encoding & decoding'!
@@ -14575,8 +31341,8 @@
 
     code < 127 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r007F"    16rFFFF " invalid " 
@@ -14627,7 +31393,7 @@
        "16r00AC"    16r00A8 " DIAERESIS " 
        "16r00AD"    16r2260 " NOT EQUAL TO " 
        "16r00AE"    16r0102 " LATIN CAPITAL LETTER A WITH BREVE " 
-       "16r00AF"    16r0218 " LATIN CAPITAL LETTER S WITH COMMA BELOW	# for Unicode 3.0 and later " 
+       "16r00AF"    16r0218 " LATIN CAPITAL LETTER S WITH COMMA BELOW   # for Unicode 3.0 and later " 
        "16r00B0"    16r221E " INFINITY " 
        "16r00B1"    16r00B1 " PLUS-MINUS SIGN " 
        "16r00B2"    16r2264 " LESS-THAN OR EQUAL TO " 
@@ -14643,7 +31409,7 @@
        "16r00BC"    16r00BA " MASCULINE ORDINAL INDICATOR " 
        "16r00BD"    16r03A9 " GREEK CAPITAL LETTER OMEGA " 
        "16r00BE"    16r0103 " LATIN SMALL LETTER A WITH BREVE " 
-       "16r00BF"    16r0219 " LATIN SMALL LETTER S WITH COMMA BELOW	# for Unicode 3.0 and later " 
+       "16r00BF"    16r0219 " LATIN SMALL LETTER S WITH COMMA BELOW     # for Unicode 3.0 and later " 
        "16r00C0"    16r00BF " INVERTED QUESTION MARK " 
        "16r00C1"    16r00A1 " INVERTED EXCLAMATION MARK " 
        "16r00C2"    16r00AC " NOT SIGN " 
@@ -14674,8 +31440,8 @@
        "16r00DB"    16r20AC " EURO SIGN " 
        "16r00DC"    16r2039 " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " 
        "16r00DD"    16r203A " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " 
-       "16r00DE"    16r021A " LATIN CAPITAL LETTER T WITH COMMA BELOW	# for Unicode 3.0 and later " 
-       "16r00DF"    16r021B " LATIN SMALL LETTER T WITH COMMA BELOW;	# for Unicode 3.0 and later " 
+       "16r00DE"    16r021A " LATIN CAPITAL LETTER T WITH COMMA BELOW   # for Unicode 3.0 and later " 
+       "16r00DF"    16r021B " LATIN SMALL LETTER T WITH COMMA BELOW;    # for Unicode 3.0 and later " 
        "16r00E0"    16r2021 " DOUBLE DAGGER " 
        "16r00E1"    16r00B7 " MIDDLE DOT " 
        "16r00E2"    16r201A " SINGLE LOW-9 QUOTATION MARK " 
@@ -14908,7 +31674,7 @@
 #
 #   Changes from version n03 to version n05:
 #
-#	- Change strict mapping for 0xE1 & 0xF1 from U+2329 & U+232A
+#       - Change strict mapping for 0xE1 & 0xF1 from U+2329 & U+232A
 #     to their canonical decompositions, U+3008 & U+3009.
 #
 #   - Change mapping for the following to use standard Unicode +
@@ -14917,203 +31683,203 @@
 #
 ##################
 
-0x20	0x0020	# SPACE
-0x21	0x0021	# EXCLAMATION MARK
-0x22	0x2200	# FOR ALL
-0x23	0x0023	# NUMBER SIGN
-0x24	0x2203	# THERE EXISTS
-0x25	0x0025	# PERCENT SIGN
-0x26	0x0026	# AMPERSAND
-0x27	0x220D	# SMALL CONTAINS AS MEMBER
-0x28	0x0028	# LEFT PARENTHESIS
-0x29	0x0029	# RIGHT PARENTHESIS
-0x2A	0x2217	# ASTERISK OPERATOR
-0x2B	0x002B	# PLUS SIGN
-0x2C	0x002C	# COMMA
-0x2D	0x2212	# MINUS SIGN
-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	0x2245	# APPROXIMATELY EQUAL TO
-0x41	0x0391	# GREEK CAPITAL LETTER ALPHA
-0x42	0x0392	# GREEK CAPITAL LETTER BETA
-0x43	0x03A7	# GREEK CAPITAL LETTER CHI
-0x44	0x0394	# GREEK CAPITAL LETTER DELTA
-0x45	0x0395	# GREEK CAPITAL LETTER EPSILON
-0x46	0x03A6	# GREEK CAPITAL LETTER PHI
-0x47	0x0393	# GREEK CAPITAL LETTER GAMMA
-0x48	0x0397	# GREEK CAPITAL LETTER ETA
-0x49	0x0399	# GREEK CAPITAL LETTER IOTA
-0x4A	0x03D1	# GREEK THETA SYMBOL
-0x4B	0x039A	# GREEK CAPITAL LETTER KAPPA
-0x4C	0x039B	# GREEK CAPITAL LETTER LAMDA
-0x4D	0x039C	# GREEK CAPITAL LETTER MU
-0x4E	0x039D	# GREEK CAPITAL LETTER NU
-0x4F	0x039F	# GREEK CAPITAL LETTER OMICRON
-0x50	0x03A0	# GREEK CAPITAL LETTER PI
-0x51	0x0398	# GREEK CAPITAL LETTER THETA
-0x52	0x03A1	# GREEK CAPITAL LETTER RHO
-0x53	0x03A3	# GREEK CAPITAL LETTER SIGMA
-0x54	0x03A4	# GREEK CAPITAL LETTER TAU
-0x55	0x03A5	# GREEK CAPITAL LETTER UPSILON
-0x56	0x03C2	# GREEK SMALL LETTER FINAL SIGMA
-0x57	0x03A9	# GREEK CAPITAL LETTER OMEGA
-0x58	0x039E	# GREEK CAPITAL LETTER XI
-0x59	0x03A8	# GREEK CAPITAL LETTER PSI
-0x5A	0x0396	# GREEK CAPITAL LETTER ZETA
-0x5B	0x005B	# LEFT SQUARE BRACKET
-0x5C	0x2234	# THEREFORE
-0x5D	0x005D	# RIGHT SQUARE BRACKET
-0x5E	0x22A5	# UP TACK
-0x5F	0x005F	# LOW LINE
-0x60	0xF8E5	# radical extender # corporate char
-0x61	0x03B1	# GREEK SMALL LETTER ALPHA
-0x62	0x03B2	# GREEK SMALL LETTER BETA
-0x63	0x03C7	# GREEK SMALL LETTER CHI
-0x64	0x03B4	# GREEK SMALL LETTER DELTA
-0x65	0x03B5	# GREEK SMALL LETTER EPSILON
-0x66	0x03C6	# GREEK SMALL LETTER PHI
-0x67	0x03B3	# GREEK SMALL LETTER GAMMA
-0x68	0x03B7	# GREEK SMALL LETTER ETA
-0x69	0x03B9	# GREEK SMALL LETTER IOTA
-0x6A	0x03D5	# GREEK PHI SYMBOL
-0x6B	0x03BA	# GREEK SMALL LETTER KAPPA
-0x6C	0x03BB	# GREEK SMALL LETTER LAMDA
-0x6D	0x03BC	# GREEK SMALL LETTER MU
-0x6E	0x03BD	# GREEK SMALL LETTER NU
-0x6F	0x03BF	# GREEK SMALL LETTER OMICRON
-0x70	0x03C0	# GREEK SMALL LETTER PI
-0x71	0x03B8	# GREEK SMALL LETTER THETA
-0x72	0x03C1	# GREEK SMALL LETTER RHO
-0x73	0x03C3	# GREEK SMALL LETTER SIGMA
-0x74	0x03C4	# GREEK SMALL LETTER TAU
-0x75	0x03C5	# GREEK SMALL LETTER UPSILON
-0x76	0x03D6	# GREEK PI SYMBOL
-0x77	0x03C9	# GREEK SMALL LETTER OMEGA
-0x78	0x03BE	# GREEK SMALL LETTER XI
-0x79	0x03C8	# GREEK SMALL LETTER PSI
-0x7A	0x03B6	# GREEK SMALL LETTER ZETA
-0x7B	0x007B	# LEFT CURLY BRACKET
-0x7C	0x007C	# VERTICAL LINE
-0x7D	0x007D	# RIGHT CURLY BRACKET
-0x7E	0x223C	# TILDE OPERATOR
-#
-0xA0	0x20AC	# EURO SIGN
-0xA1	0x03D2	# GREEK UPSILON WITH HOOK SYMBOL
-0xA2	0x2032	# PRIME	# minute
-0xA3	0x2264	# LESS-THAN OR EQUAL TO
-0xA4	0x2044	# FRACTION SLASH
-0xA5	0x221E	# INFINITY
-0xA6	0x0192	# LATIN SMALL LETTER F WITH HOOK
-0xA7	0x2663	# BLACK CLUB SUIT
-0xA8	0x2666	# BLACK DIAMOND SUIT
-0xA9	0x2665	# BLACK HEART SUIT
-0xAA	0x2660	# BLACK SPADE SUIT
-0xAB	0x2194	# LEFT RIGHT ARROW
-0xAC	0x2190	# LEFTWARDS ARROW
-0xAD	0x2191	# UPWARDS ARROW
-0xAE	0x2192	# RIGHTWARDS ARROW
-0xAF	0x2193	# DOWNWARDS ARROW
-0xB0	0x00B0	# DEGREE SIGN
-0xB1	0x00B1	# PLUS-MINUS SIGN
-0xB2	0x2033	# DOUBLE PRIME	# second
-0xB3	0x2265	# GREATER-THAN OR EQUAL TO
-0xB4	0x00D7	# MULTIPLICATION SIGN
-0xB5	0x221D	# PROPORTIONAL TO
-0xB6	0x2202	# PARTIAL DIFFERENTIAL
-0xB7	0x2022	# BULLET
-0xB8	0x00F7	# DIVISION SIGN
-0xB9	0x2260	# NOT EQUAL TO
-0xBA	0x2261	# IDENTICAL TO
-0xBB	0x2248	# ALMOST EQUAL TO
-0xBC	0x2026	# HORIZONTAL ELLIPSIS
-0xBD	0xF8E6	# vertical line extension (for arrows) # corporate char
-0xBE	0x23AF	# HORIZONTAL LINE EXTENSION (for arrows) # for Unicode 3.2 and later
-0xBF	0x21B5	# DOWNWARDS ARROW WITH CORNER LEFTWARDS
-0xC0	0x2135	# ALEF SYMBOL
-0xC1	0x2111	# BLACK-LETTER CAPITAL I
-0xC2	0x211C	# BLACK-LETTER CAPITAL R
-0xC3	0x2118	# SCRIPT CAPITAL P
-0xC4	0x2297	# CIRCLED TIMES
-0xC5	0x2295	# CIRCLED PLUS
-0xC6	0x2205	# EMPTY SET
-0xC7	0x2229	# INTERSECTION
-0xC8	0x222A	# UNION
-0xC9	0x2283	# SUPERSET OF
-0xCA	0x2287	# SUPERSET OF OR EQUAL TO
-0xCB	0x2284	# NOT A SUBSET OF
-0xCC	0x2282	# SUBSET OF
-0xCD	0x2286	# SUBSET OF OR EQUAL TO
-0xCE	0x2208	# ELEMENT OF
-0xCF	0x2209	# NOT AN ELEMENT OF
-0xD0	0x2220	# ANGLE
-0xD1	0x2207	# NABLA
-0xD2	0x00AE	# REGISTERED SIGN # serif
-0xD3	0x00A9	# COPYRIGHT SIGN # serif
-0xD4	0x2122	# TRADE MARK SIGN # serif
-0xD5	0x220F	# N-ARY PRODUCT
-0xD6	0x221A	# SQUARE ROOT
-0xD7	0x22C5	# DOT OPERATOR
-0xD8	0x00AC	# NOT SIGN
-0xD9	0x2227	# LOGICAL AND
-0xDA	0x2228	# LOGICAL OR
-0xDB	0x21D4	# LEFT RIGHT DOUBLE ARROW
-0xDC	0x21D0	# LEFTWARDS DOUBLE ARROW
-0xDD	0x21D1	# UPWARDS DOUBLE ARROW
-0xDE	0x21D2	# RIGHTWARDS DOUBLE ARROW
-0xDF	0x21D3	# DOWNWARDS DOUBLE ARROW
-0xE0	0x22C4	# DIAMOND OPERATOR
-0xE1	0x3008	# LEFT ANGLE BRACKET
-0xE2	0x00AE+0xF87F	# REGISTERED SIGN, alternate: sans serif
-0xE3	0x00A9+0xF87F	# COPYRIGHT SIGN, alternate: sans serif
-0xE4	0x2122+0xF87F	# TRADE MARK SIGN, alternate: sans serif
-0xE5	0x2211	# N-ARY SUMMATION
-0xE6	0x239B	# LEFT PARENTHESIS UPPER HOOK # for Unicode 3.2 and later
-0xE7	0x239C	# LEFT PARENTHESIS EXTENSION # for Unicode 3.2 and later
-0xE8	0x239D	# LEFT PARENTHESIS LOWER HOOK # for Unicode 3.2 and later
-0xE9	0x23A1	# LEFT SQUARE BRACKET UPPER CORNER # for Unicode 3.2 and later
-0xEA	0x23A2	# LEFT SQUARE BRACKET EXTENSION # for Unicode 3.2 and later
-0xEB	0x23A3	# LEFT SQUARE BRACKET LOWER CORNER # for Unicode 3.2 and later
-0xEC	0x23A7	# LEFT CURLY BRACKET UPPER HOOK # for Unicode 3.2 and later
-0xED	0x23A8	# LEFT CURLY BRACKET MIDDLE PIECE # for Unicode 3.2 and later
-0xEE	0x23A9	# LEFT CURLY BRACKET LOWER HOOK # for Unicode 3.2 and later
-0xEF	0x23AA	# CURLY BRACKET EXTENSION # for Unicode 3.2 and later
-0xF0	0xF8FF	# Apple logo
-0xF1	0x3009	# RIGHT ANGLE BRACKET
-0xF2	0x222B	# INTEGRAL
-0xF3	0x2320	# TOP HALF INTEGRAL
-0xF4	0x23AE	# INTEGRAL EXTENSION # for Unicode 3.2 and later
-0xF5	0x2321	# BOTTOM HALF INTEGRAL
-0xF6	0x239E	# RIGHT PARENTHESIS UPPER HOOK # for Unicode 3.2 and later
-0xF7	0x239F	# RIGHT PARENTHESIS EXTENSION # for Unicode 3.2 and later
-0xF8	0x23A0	# RIGHT PARENTHESIS LOWER HOOK # for Unicode 3.2 and later
-0xF9	0x23A4	# RIGHT SQUARE BRACKET UPPER CORNER # for Unicode 3.2 and later
-0xFA	0x23A5	# RIGHT SQUARE BRACKET EXTENSION # for Unicode 3.2 and later
-0xFB	0x23A6	# RIGHT SQUARE BRACKET LOWER CORNER # for Unicode 3.2 and later
-0xFC	0x23AB	# RIGHT CURLY BRACKET UPPER HOOK # for Unicode 3.2 and later
-0xFD	0x23AC	# RIGHT CURLY BRACKET MIDDLE PIECE # for Unicode 3.2 and later
-0xFE	0x23AD	# RIGHT CURLY BRACKET LOWER HOOK # for Unicode 3.2 and later
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/SYMBOL.TXT'
+0x20    0x0020  # SPACE
+0x21    0x0021  # EXCLAMATION MARK
+0x22    0x2200  # FOR ALL
+0x23    0x0023  # NUMBER SIGN
+0x24    0x2203  # THERE EXISTS
+0x25    0x0025  # PERCENT SIGN
+0x26    0x0026  # AMPERSAND
+0x27    0x220D  # SMALL CONTAINS AS MEMBER
+0x28    0x0028  # LEFT PARENTHESIS
+0x29    0x0029  # RIGHT PARENTHESIS
+0x2A    0x2217  # ASTERISK OPERATOR
+0x2B    0x002B  # PLUS SIGN
+0x2C    0x002C  # COMMA
+0x2D    0x2212  # MINUS SIGN
+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    0x2245  # APPROXIMATELY EQUAL TO
+0x41    0x0391  # GREEK CAPITAL LETTER ALPHA
+0x42    0x0392  # GREEK CAPITAL LETTER BETA
+0x43    0x03A7  # GREEK CAPITAL LETTER CHI
+0x44    0x0394  # GREEK CAPITAL LETTER DELTA
+0x45    0x0395  # GREEK CAPITAL LETTER EPSILON
+0x46    0x03A6  # GREEK CAPITAL LETTER PHI
+0x47    0x0393  # GREEK CAPITAL LETTER GAMMA
+0x48    0x0397  # GREEK CAPITAL LETTER ETA
+0x49    0x0399  # GREEK CAPITAL LETTER IOTA
+0x4A    0x03D1  # GREEK THETA SYMBOL
+0x4B    0x039A  # GREEK CAPITAL LETTER KAPPA
+0x4C    0x039B  # GREEK CAPITAL LETTER LAMDA
+0x4D    0x039C  # GREEK CAPITAL LETTER MU
+0x4E    0x039D  # GREEK CAPITAL LETTER NU
+0x4F    0x039F  # GREEK CAPITAL LETTER OMICRON
+0x50    0x03A0  # GREEK CAPITAL LETTER PI
+0x51    0x0398  # GREEK CAPITAL LETTER THETA
+0x52    0x03A1  # GREEK CAPITAL LETTER RHO
+0x53    0x03A3  # GREEK CAPITAL LETTER SIGMA
+0x54    0x03A4  # GREEK CAPITAL LETTER TAU
+0x55    0x03A5  # GREEK CAPITAL LETTER UPSILON
+0x56    0x03C2  # GREEK SMALL LETTER FINAL SIGMA
+0x57    0x03A9  # GREEK CAPITAL LETTER OMEGA
+0x58    0x039E  # GREEK CAPITAL LETTER XI
+0x59    0x03A8  # GREEK CAPITAL LETTER PSI
+0x5A    0x0396  # GREEK CAPITAL LETTER ZETA
+0x5B    0x005B  # LEFT SQUARE BRACKET
+0x5C    0x2234  # THEREFORE
+0x5D    0x005D  # RIGHT SQUARE BRACKET
+0x5E    0x22A5  # UP TACK
+0x5F    0x005F  # LOW LINE
+0x60    0xF8E5  # radical extender # corporate char
+0x61    0x03B1  # GREEK SMALL LETTER ALPHA
+0x62    0x03B2  # GREEK SMALL LETTER BETA
+0x63    0x03C7  # GREEK SMALL LETTER CHI
+0x64    0x03B4  # GREEK SMALL LETTER DELTA
+0x65    0x03B5  # GREEK SMALL LETTER EPSILON
+0x66    0x03C6  # GREEK SMALL LETTER PHI
+0x67    0x03B3  # GREEK SMALL LETTER GAMMA
+0x68    0x03B7  # GREEK SMALL LETTER ETA
+0x69    0x03B9  # GREEK SMALL LETTER IOTA
+0x6A    0x03D5  # GREEK PHI SYMBOL
+0x6B    0x03BA  # GREEK SMALL LETTER KAPPA
+0x6C    0x03BB  # GREEK SMALL LETTER LAMDA
+0x6D    0x03BC  # GREEK SMALL LETTER MU
+0x6E    0x03BD  # GREEK SMALL LETTER NU
+0x6F    0x03BF  # GREEK SMALL LETTER OMICRON
+0x70    0x03C0  # GREEK SMALL LETTER PI
+0x71    0x03B8  # GREEK SMALL LETTER THETA
+0x72    0x03C1  # GREEK SMALL LETTER RHO
+0x73    0x03C3  # GREEK SMALL LETTER SIGMA
+0x74    0x03C4  # GREEK SMALL LETTER TAU
+0x75    0x03C5  # GREEK SMALL LETTER UPSILON
+0x76    0x03D6  # GREEK PI SYMBOL
+0x77    0x03C9  # GREEK SMALL LETTER OMEGA
+0x78    0x03BE  # GREEK SMALL LETTER XI
+0x79    0x03C8  # GREEK SMALL LETTER PSI
+0x7A    0x03B6  # GREEK SMALL LETTER ZETA
+0x7B    0x007B  # LEFT CURLY BRACKET
+0x7C    0x007C  # VERTICAL LINE
+0x7D    0x007D  # RIGHT CURLY BRACKET
+0x7E    0x223C  # TILDE OPERATOR
+#
+0xA0    0x20AC  # EURO SIGN
+0xA1    0x03D2  # GREEK UPSILON WITH HOOK SYMBOL
+0xA2    0x2032  # PRIME # minute
+0xA3    0x2264  # LESS-THAN OR EQUAL TO
+0xA4    0x2044  # FRACTION SLASH
+0xA5    0x221E  # INFINITY
+0xA6    0x0192  # LATIN SMALL LETTER F WITH HOOK
+0xA7    0x2663  # BLACK CLUB SUIT
+0xA8    0x2666  # BLACK DIAMOND SUIT
+0xA9    0x2665  # BLACK HEART SUIT
+0xAA    0x2660  # BLACK SPADE SUIT
+0xAB    0x2194  # LEFT RIGHT ARROW
+0xAC    0x2190  # LEFTWARDS ARROW
+0xAD    0x2191  # UPWARDS ARROW
+0xAE    0x2192  # RIGHTWARDS ARROW
+0xAF    0x2193  # DOWNWARDS ARROW
+0xB0    0x00B0  # DEGREE SIGN
+0xB1    0x00B1  # PLUS-MINUS SIGN
+0xB2    0x2033  # DOUBLE PRIME  # second
+0xB3    0x2265  # GREATER-THAN OR EQUAL TO
+0xB4    0x00D7  # MULTIPLICATION SIGN
+0xB5    0x221D  # PROPORTIONAL TO
+0xB6    0x2202  # PARTIAL DIFFERENTIAL
+0xB7    0x2022  # BULLET
+0xB8    0x00F7  # DIVISION SIGN
+0xB9    0x2260  # NOT EQUAL TO
+0xBA    0x2261  # IDENTICAL TO
+0xBB    0x2248  # ALMOST EQUAL TO
+0xBC    0x2026  # HORIZONTAL ELLIPSIS
+0xBD    0xF8E6  # vertical line extension (for arrows) # corporate char
+0xBE    0x23AF  # HORIZONTAL LINE EXTENSION (for arrows) # for Unicode 3.2 and later
+0xBF    0x21B5  # DOWNWARDS ARROW WITH CORNER LEFTWARDS
+0xC0    0x2135  # ALEF SYMBOL
+0xC1    0x2111  # BLACK-LETTER CAPITAL I
+0xC2    0x211C  # BLACK-LETTER CAPITAL R
+0xC3    0x2118  # SCRIPT CAPITAL P
+0xC4    0x2297  # CIRCLED TIMES
+0xC5    0x2295  # CIRCLED PLUS
+0xC6    0x2205  # EMPTY SET
+0xC7    0x2229  # INTERSECTION
+0xC8    0x222A  # UNION
+0xC9    0x2283  # SUPERSET OF
+0xCA    0x2287  # SUPERSET OF OR EQUAL TO
+0xCB    0x2284  # NOT A SUBSET OF
+0xCC    0x2282  # SUBSET OF
+0xCD    0x2286  # SUBSET OF OR EQUAL TO
+0xCE    0x2208  # ELEMENT OF
+0xCF    0x2209  # NOT AN ELEMENT OF
+0xD0    0x2220  # ANGLE
+0xD1    0x2207  # NABLA
+0xD2    0x00AE  # REGISTERED SIGN # serif
+0xD3    0x00A9  # COPYRIGHT SIGN # serif
+0xD4    0x2122  # TRADE MARK SIGN # serif
+0xD5    0x220F  # N-ARY PRODUCT
+0xD6    0x221A  # SQUARE ROOT
+0xD7    0x22C5  # DOT OPERATOR
+0xD8    0x00AC  # NOT SIGN
+0xD9    0x2227  # LOGICAL AND
+0xDA    0x2228  # LOGICAL OR
+0xDB    0x21D4  # LEFT RIGHT DOUBLE ARROW
+0xDC    0x21D0  # LEFTWARDS DOUBLE ARROW
+0xDD    0x21D1  # UPWARDS DOUBLE ARROW
+0xDE    0x21D2  # RIGHTWARDS DOUBLE ARROW
+0xDF    0x21D3  # DOWNWARDS DOUBLE ARROW
+0xE0    0x22C4  # DIAMOND OPERATOR
+0xE1    0x3008  # LEFT ANGLE BRACKET
+0xE2    0x00AE+0xF87F   # REGISTERED SIGN, alternate: sans serif
+0xE3    0x00A9+0xF87F   # COPYRIGHT SIGN, alternate: sans serif
+0xE4    0x2122+0xF87F   # TRADE MARK SIGN, alternate: sans serif
+0xE5    0x2211  # N-ARY SUMMATION
+0xE6    0x239B  # LEFT PARENTHESIS UPPER HOOK # for Unicode 3.2 and later
+0xE7    0x239C  # LEFT PARENTHESIS EXTENSION # for Unicode 3.2 and later
+0xE8    0x239D  # LEFT PARENTHESIS LOWER HOOK # for Unicode 3.2 and later
+0xE9    0x23A1  # LEFT SQUARE BRACKET UPPER CORNER # for Unicode 3.2 and later
+0xEA    0x23A2  # LEFT SQUARE BRACKET EXTENSION # for Unicode 3.2 and later
+0xEB    0x23A3  # LEFT SQUARE BRACKET LOWER CORNER # for Unicode 3.2 and later
+0xEC    0x23A7  # LEFT CURLY BRACKET UPPER HOOK # for Unicode 3.2 and later
+0xED    0x23A8  # LEFT CURLY BRACKET MIDDLE PIECE # for Unicode 3.2 and later
+0xEE    0x23A9  # LEFT CURLY BRACKET LOWER HOOK # for Unicode 3.2 and later
+0xEF    0x23AA  # CURLY BRACKET EXTENSION # for Unicode 3.2 and later
+0xF0    0xF8FF  # Apple logo
+0xF1    0x3009  # RIGHT ANGLE BRACKET
+0xF2    0x222B  # INTEGRAL
+0xF3    0x2320  # TOP HALF INTEGRAL
+0xF4    0x23AE  # INTEGRAL EXTENSION # for Unicode 3.2 and later
+0xF5    0x2321  # BOTTOM HALF INTEGRAL
+0xF6    0x239E  # RIGHT PARENTHESIS UPPER HOOK # for Unicode 3.2 and later
+0xF7    0x239F  # RIGHT PARENTHESIS EXTENSION # for Unicode 3.2 and later
+0xF8    0x23A0  # RIGHT PARENTHESIS LOWER HOOK # for Unicode 3.2 and later
+0xF9    0x23A4  # RIGHT SQUARE BRACKET UPPER CORNER # for Unicode 3.2 and later
+0xFA    0x23A5  # RIGHT SQUARE BRACKET EXTENSION # for Unicode 3.2 and later
+0xFB    0x23A6  # RIGHT SQUARE BRACKET LOWER CORNER # for Unicode 3.2 and later
+0xFC    0x23AB  # RIGHT CURLY BRACKET UPPER HOOK # for Unicode 3.2 and later
+0xFD    0x23AC  # RIGHT CURLY BRACKET MIDDLE PIECE # for Unicode 3.2 and later
+0xFE    0x23AD  # RIGHT CURLY BRACKET LOWER HOOK # for Unicode 3.2 and later
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/SYMBOL.TXT'
 ! !
 
 !CharacterEncoder::MAC_Symbol methodsFor:'encoding & decoding'!
@@ -15123,8 +31889,8 @@
 
     code < 34 ifTrue:[ ^ code ].
     code > 254 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r0022"    16r2200 " FOR ALL " 
@@ -15255,7 +32021,7 @@
        "16r009F"    16rFFFF " invalid " 
        "16r00A0"    16r20AC " EURO SIGN " 
        "16r00A1"    16r03D2 " GREEK UPSILON WITH HOOK SYMBOL " 
-       "16r00A2"    16r2032 " PRIME	# minute " 
+       "16r00A2"    16r2032 " PRIME     # minute " 
        "16r00A3"    16r2264 " LESS-THAN OR EQUAL TO " 
        "16r00A4"    16r2044 " FRACTION SLASH " 
        "16r00A5"    16r221E " INFINITY " 
@@ -15271,7 +32037,7 @@
        "16r00AF"    16r2193 " DOWNWARDS ARROW " 
        "16r00B0"    16r00B0 " DEGREE SIGN " 
        "16r00B1"    16r00B1 " PLUS-MINUS SIGN " 
-       "16r00B2"    16r2033 " DOUBLE PRIME	# second " 
+       "16r00B2"    16r2033 " DOUBLE PRIME      # second " 
        "16r00B3"    16r2265 " GREATER-THAN OR EQUAL TO " 
        "16r00B4"    16r00D7 " MULTIPLICATION SIGN " 
        "16r00B5"    16r221D " PROPORTIONAL TO " 
@@ -15353,8 +32119,8 @@
 
 !CharacterEncoder::MAC_Thai class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/THAI.TXT'
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/THAI.TXT'
 ! !
 
 !CharacterEncoder::MAC_Turkish class methodsFor:'mapping'!
@@ -15435,7 +32201,7 @@
 # Notes on Mac OS Turkish:
 # ------------------------
 #
-#	Mac OS Turkish is used for Turkish.
+#       Mac OS Turkish is used for Turkish.
 #
 #   The Mac OS Turkish encoding shares the script code smRoman
 #   (0) with the Mac OS Roman encoding. To determine if the Turkish
@@ -15474,236 +32240,236 @@
 #
 ##################
 
-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	# REVERSE SOLIDUS
-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
-#
-0x80	0x00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS
-0x81	0x00C5	# LATIN CAPITAL LETTER A WITH RING ABOVE
-0x82	0x00C7	# LATIN CAPITAL LETTER C WITH CEDILLA
-0x83	0x00C9	# LATIN CAPITAL LETTER E WITH ACUTE
-0x84	0x00D1	# LATIN CAPITAL LETTER N WITH TILDE
-0x85	0x00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS
-0x86	0x00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS
-0x87	0x00E1	# LATIN SMALL LETTER A WITH ACUTE
-0x88	0x00E0	# LATIN SMALL LETTER A WITH GRAVE
-0x89	0x00E2	# LATIN SMALL LETTER A WITH CIRCUMFLEX
-0x8A	0x00E4	# LATIN SMALL LETTER A WITH DIAERESIS
-0x8B	0x00E3	# LATIN SMALL LETTER A WITH TILDE
-0x8C	0x00E5	# LATIN SMALL LETTER A WITH RING ABOVE
-0x8D	0x00E7	# LATIN SMALL LETTER C WITH CEDILLA
-0x8E	0x00E9	# LATIN SMALL LETTER E WITH ACUTE
-0x8F	0x00E8	# LATIN SMALL LETTER E WITH GRAVE
-0x90	0x00EA	# LATIN SMALL LETTER E WITH CIRCUMFLEX
-0x91	0x00EB	# LATIN SMALL LETTER E WITH DIAERESIS
-0x92	0x00ED	# LATIN SMALL LETTER I WITH ACUTE
-0x93	0x00EC	# LATIN SMALL LETTER I WITH GRAVE
-0x94	0x00EE	# LATIN SMALL LETTER I WITH CIRCUMFLEX
-0x95	0x00EF	# LATIN SMALL LETTER I WITH DIAERESIS
-0x96	0x00F1	# LATIN SMALL LETTER N WITH TILDE
-0x97	0x00F3	# LATIN SMALL LETTER O WITH ACUTE
-0x98	0x00F2	# LATIN SMALL LETTER O WITH GRAVE
-0x99	0x00F4	# LATIN SMALL LETTER O WITH CIRCUMFLEX
-0x9A	0x00F6	# LATIN SMALL LETTER O WITH DIAERESIS
-0x9B	0x00F5	# LATIN SMALL LETTER O WITH TILDE
-0x9C	0x00FA	# LATIN SMALL LETTER U WITH ACUTE
-0x9D	0x00F9	# LATIN SMALL LETTER U WITH GRAVE
-0x9E	0x00FB	# LATIN SMALL LETTER U WITH CIRCUMFLEX
-0x9F	0x00FC	# LATIN SMALL LETTER U WITH DIAERESIS
-0xA0	0x2020	# DAGGER
-0xA1	0x00B0	# DEGREE SIGN
-0xA2	0x00A2	# CENT SIGN
-0xA3	0x00A3	# POUND SIGN
-0xA4	0x00A7	# SECTION SIGN
-0xA5	0x2022	# BULLET
-0xA6	0x00B6	# PILCROW SIGN
-0xA7	0x00DF	# LATIN SMALL LETTER SHARP S
-0xA8	0x00AE	# REGISTERED SIGN
-0xA9	0x00A9	# COPYRIGHT SIGN
-0xAA	0x2122	# TRADE MARK SIGN
-0xAB	0x00B4	# ACUTE ACCENT
-0xAC	0x00A8	# DIAERESIS
-0xAD	0x2260	# NOT EQUAL TO
-0xAE	0x00C6	# LATIN CAPITAL LETTER AE
-0xAF	0x00D8	# LATIN CAPITAL LETTER O WITH STROKE
-0xB0	0x221E	# INFINITY
-0xB1	0x00B1	# PLUS-MINUS SIGN
-0xB2	0x2264	# LESS-THAN OR EQUAL TO
-0xB3	0x2265	# GREATER-THAN OR EQUAL TO
-0xB4	0x00A5	# YEN SIGN
-0xB5	0x00B5	# MICRO SIGN
-0xB6	0x2202	# PARTIAL DIFFERENTIAL
-0xB7	0x2211	# N-ARY SUMMATION
-0xB8	0x220F	# N-ARY PRODUCT
-0xB9	0x03C0	# GREEK SMALL LETTER PI
-0xBA	0x222B	# INTEGRAL
-0xBB	0x00AA	# FEMININE ORDINAL INDICATOR
-0xBC	0x00BA	# MASCULINE ORDINAL INDICATOR
-0xBD	0x03A9	# GREEK CAPITAL LETTER OMEGA
-0xBE	0x00E6	# LATIN SMALL LETTER AE
-0xBF	0x00F8	# LATIN SMALL LETTER O WITH STROKE
-0xC0	0x00BF	# INVERTED QUESTION MARK
-0xC1	0x00A1	# INVERTED EXCLAMATION MARK
-0xC2	0x00AC	# NOT SIGN
-0xC3	0x221A	# SQUARE ROOT
-0xC4	0x0192	# LATIN SMALL LETTER F WITH HOOK
-0xC5	0x2248	# ALMOST EQUAL TO
-0xC6	0x2206	# INCREMENT
-0xC7	0x00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xC8	0x00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xC9	0x2026	# HORIZONTAL ELLIPSIS
-0xCA	0x00A0	# NO-BREAK SPACE
-0xCB	0x00C0	# LATIN CAPITAL LETTER A WITH GRAVE
-0xCC	0x00C3	# LATIN CAPITAL LETTER A WITH TILDE
-0xCD	0x00D5	# LATIN CAPITAL LETTER O WITH TILDE
-0xCE	0x0152	# LATIN CAPITAL LIGATURE OE
-0xCF	0x0153	# LATIN SMALL LIGATURE OE
-0xD0	0x2013	# EN DASH
-0xD1	0x2014	# EM DASH
-0xD2	0x201C	# LEFT DOUBLE QUOTATION MARK
-0xD3	0x201D	# RIGHT DOUBLE QUOTATION MARK
-0xD4	0x2018	# LEFT SINGLE QUOTATION MARK
-0xD5	0x2019	# RIGHT SINGLE QUOTATION MARK
-0xD6	0x00F7	# DIVISION SIGN
-0xD7	0x25CA	# LOZENGE
-0xD8	0x00FF	# LATIN SMALL LETTER Y WITH DIAERESIS
-0xD9	0x0178	# LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xDA	0x011E	# LATIN CAPITAL LETTER G WITH BREVE
-0xDB	0x011F	# LATIN SMALL LETTER G WITH BREVE
-0xDC	0x0130	# LATIN CAPITAL LETTER I WITH DOT ABOVE
-0xDD	0x0131	# LATIN SMALL LETTER DOTLESS I
-0xDE	0x015E	# LATIN CAPITAL LETTER S WITH CEDILLA
-0xDF	0x015F	# LATIN SMALL LETTER S WITH CEDILLA
-0xE0	0x2021	# DOUBLE DAGGER
-0xE1	0x00B7	# MIDDLE DOT
-0xE2	0x201A	# SINGLE LOW-9 QUOTATION MARK
-0xE3	0x201E	# DOUBLE LOW-9 QUOTATION MARK
-0xE4	0x2030	# PER MILLE SIGN
-0xE5	0x00C2	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xE6	0x00CA	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xE7	0x00C1	# LATIN CAPITAL LETTER A WITH ACUTE
-0xE8	0x00CB	# LATIN CAPITAL LETTER E WITH DIAERESIS
-0xE9	0x00C8	# LATIN CAPITAL LETTER E WITH GRAVE
-0xEA	0x00CD	# LATIN CAPITAL LETTER I WITH ACUTE
-0xEB	0x00CE	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xEC	0x00CF	# LATIN CAPITAL LETTER I WITH DIAERESIS
-0xED	0x00CC	# LATIN CAPITAL LETTER I WITH GRAVE
-0xEE	0x00D3	# LATIN CAPITAL LETTER O WITH ACUTE
-0xEF	0x00D4	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xF0	0xF8FF	# Apple logo
-0xF1	0x00D2	# LATIN CAPITAL LETTER O WITH GRAVE
-0xF2	0x00DA	# LATIN CAPITAL LETTER U WITH ACUTE
-0xF3	0x00DB	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xF4	0x00D9	# LATIN CAPITAL LETTER U WITH GRAVE
-0xF5	0xF8A0	# undefined1
-0xF6	0x02C6	# MODIFIER LETTER CIRCUMFLEX ACCENT
-0xF7	0x02DC	# SMALL TILDE
-0xF8	0x00AF	# MACRON
-0xF9	0x02D8	# BREVE
-0xFA	0x02D9	# DOT ABOVE
-0xFB	0x02DA	# RING ABOVE
-0xFC	0x00B8	# CEDILLA
-0xFD	0x02DD	# DOUBLE ACUTE ACCENT
-0xFE	0x02DB	# OGONEK
-0xFF	0x02C7	# CARON
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/TURKISH.TXT'
+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  # REVERSE SOLIDUS
+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
+#
+0x80    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x81    0x00C5  # LATIN CAPITAL LETTER A WITH RING ABOVE
+0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
+0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
+0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
+0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
+0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
+0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
+0x8B    0x00E3  # LATIN SMALL LETTER A WITH TILDE
+0x8C    0x00E5  # LATIN SMALL LETTER A WITH RING ABOVE
+0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
+0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
+0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
+0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
+0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
+0x93    0x00EC  # LATIN SMALL LETTER I WITH GRAVE
+0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
+0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
+0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
+0x98    0x00F2  # LATIN SMALL LETTER O WITH GRAVE
+0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
+0x9B    0x00F5  # LATIN SMALL LETTER O WITH TILDE
+0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
+0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
+0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
+0xA0    0x2020  # DAGGER
+0xA1    0x00B0  # DEGREE SIGN
+0xA2    0x00A2  # CENT SIGN
+0xA3    0x00A3  # POUND SIGN
+0xA4    0x00A7  # SECTION SIGN
+0xA5    0x2022  # BULLET
+0xA6    0x00B6  # PILCROW SIGN
+0xA7    0x00DF  # LATIN SMALL LETTER SHARP S
+0xA8    0x00AE  # REGISTERED SIGN
+0xA9    0x00A9  # COPYRIGHT SIGN
+0xAA    0x2122  # TRADE MARK SIGN
+0xAB    0x00B4  # ACUTE ACCENT
+0xAC    0x00A8  # DIAERESIS
+0xAD    0x2260  # NOT EQUAL TO
+0xAE    0x00C6  # LATIN CAPITAL LETTER AE
+0xAF    0x00D8  # LATIN CAPITAL LETTER O WITH STROKE
+0xB0    0x221E  # INFINITY
+0xB1    0x00B1  # PLUS-MINUS SIGN
+0xB2    0x2264  # LESS-THAN OR EQUAL TO
+0xB3    0x2265  # GREATER-THAN OR EQUAL TO
+0xB4    0x00A5  # YEN SIGN
+0xB5    0x00B5  # MICRO SIGN
+0xB6    0x2202  # PARTIAL DIFFERENTIAL
+0xB7    0x2211  # N-ARY SUMMATION
+0xB8    0x220F  # N-ARY PRODUCT
+0xB9    0x03C0  # GREEK SMALL LETTER PI
+0xBA    0x222B  # INTEGRAL
+0xBB    0x00AA  # FEMININE ORDINAL INDICATOR
+0xBC    0x00BA  # MASCULINE ORDINAL INDICATOR
+0xBD    0x03A9  # GREEK CAPITAL LETTER OMEGA
+0xBE    0x00E6  # LATIN SMALL LETTER AE
+0xBF    0x00F8  # LATIN SMALL LETTER O WITH STROKE
+0xC0    0x00BF  # INVERTED QUESTION MARK
+0xC1    0x00A1  # INVERTED EXCLAMATION MARK
+0xC2    0x00AC  # NOT SIGN
+0xC3    0x221A  # SQUARE ROOT
+0xC4    0x0192  # LATIN SMALL LETTER F WITH HOOK
+0xC5    0x2248  # ALMOST EQUAL TO
+0xC6    0x2206  # INCREMENT
+0xC7    0x00AB  # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC8    0x00BB  # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC9    0x2026  # HORIZONTAL ELLIPSIS
+0xCA    0x00A0  # NO-BREAK SPACE
+0xCB    0x00C0  # LATIN CAPITAL LETTER A WITH GRAVE
+0xCC    0x00C3  # LATIN CAPITAL LETTER A WITH TILDE
+0xCD    0x00D5  # LATIN CAPITAL LETTER O WITH TILDE
+0xCE    0x0152  # LATIN CAPITAL LIGATURE OE
+0xCF    0x0153  # LATIN SMALL LIGATURE OE
+0xD0    0x2013  # EN DASH
+0xD1    0x2014  # EM DASH
+0xD2    0x201C  # LEFT DOUBLE QUOTATION MARK
+0xD3    0x201D  # RIGHT DOUBLE QUOTATION MARK
+0xD4    0x2018  # LEFT SINGLE QUOTATION MARK
+0xD5    0x2019  # RIGHT SINGLE QUOTATION MARK
+0xD6    0x00F7  # DIVISION SIGN
+0xD7    0x25CA  # LOZENGE
+0xD8    0x00FF  # LATIN SMALL LETTER Y WITH DIAERESIS
+0xD9    0x0178  # LATIN CAPITAL LETTER Y WITH DIAERESIS
+0xDA    0x011E  # LATIN CAPITAL LETTER G WITH BREVE
+0xDB    0x011F  # LATIN SMALL LETTER G WITH BREVE
+0xDC    0x0130  # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0xDD    0x0131  # LATIN SMALL LETTER DOTLESS I
+0xDE    0x015E  # LATIN CAPITAL LETTER S WITH CEDILLA
+0xDF    0x015F  # LATIN SMALL LETTER S WITH CEDILLA
+0xE0    0x2021  # DOUBLE DAGGER
+0xE1    0x00B7  # MIDDLE DOT
+0xE2    0x201A  # SINGLE LOW-9 QUOTATION MARK
+0xE3    0x201E  # DOUBLE LOW-9 QUOTATION MARK
+0xE4    0x2030  # PER MILLE SIGN
+0xE5    0x00C2  # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xE6    0x00CA  # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xE7    0x00C1  # LATIN CAPITAL LETTER A WITH ACUTE
+0xE8    0x00CB  # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xE9    0x00C8  # LATIN CAPITAL LETTER E WITH GRAVE
+0xEA    0x00CD  # LATIN CAPITAL LETTER I WITH ACUTE
+0xEB    0x00CE  # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xEC    0x00CF  # LATIN CAPITAL LETTER I WITH DIAERESIS
+0xED    0x00CC  # LATIN CAPITAL LETTER I WITH GRAVE
+0xEE    0x00D3  # LATIN CAPITAL LETTER O WITH ACUTE
+0xEF    0x00D4  # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xF0    0xF8FF  # Apple logo
+0xF1    0x00D2  # LATIN CAPITAL LETTER O WITH GRAVE
+0xF2    0x00DA  # LATIN CAPITAL LETTER U WITH ACUTE
+0xF3    0x00DB  # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xF4    0x00D9  # LATIN CAPITAL LETTER U WITH GRAVE
+0xF5    0xF8A0  # undefined1
+0xF6    0x02C6  # MODIFIER LETTER CIRCUMFLEX ACCENT
+0xF7    0x02DC  # SMALL TILDE
+0xF8    0x00AF  # MACRON
+0xF9    0x02D8  # BREVE
+0xFA    0x02D9  # DOT ABOVE
+0xFB    0x02DA  # RING ABOVE
+0xFC    0x00B8  # CEDILLA
+0xFD    0x02DD  # DOUBLE ACUTE ACCENT
+0xFE    0x02DB  # OGONEK
+0xFF    0x02C7  # CARON
+
+"
+!
+
+mappingURL1_relativePathName
+    ^ 'VENDORS/APPLE/TURKISH.TXT'
 ! !
 
 !CharacterEncoder::MAC_Turkish methodsFor:'encoding & decoding'!
@@ -15713,8 +32479,8 @@
 
     code < 127 ifTrue:[ ^ code ].
     code > 255 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r007F"    16rFFFF " invalid " 
@@ -15849,224 +32615,578 @@
        ) at:(code - 126)
 ! !
 
-!CharacterEncoder::MAC_Ukraine class methodsFor:'mapping'!
+!CharacterEncoder::MS_Ansi class methodsFor:'mapping'!
+
+mappingURL2_relativePathName
+    ^ 'CP1252'
+! !
+
+!CharacterEncoder::MS_Ansi class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'ms-ansi' 'ms-cp1252' 'cp1252' )
+! !
+
+!CharacterEncoder::MS_Arabic class methodsFor:'mapping'!
+
+mappingURL2_relativePathName
+    ^ 'CP1256'
+! !
+
+!CharacterEncoder::MS_Arabic class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'ms-arabic' 'ms-cp1256' 'cp1256' )
+! !
+
+!CharacterEncoder::MS_Cyrillic class methodsFor:'mapping'!
+
+mappingURL2_relativePathName
+    ^ 'CP1251'
+! !
+
+!CharacterEncoder::MS_Cyrillic class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'ms-cyrillic' 'ms-cp1251' 'cp1251' )
+! !
+
+!CharacterEncoder::MS_EastEuropean class methodsFor:'mapping'!
+
+mappingURL2_relativePathName
+    ^ 'CP1250'
+! !
+
+!CharacterEncoder::MS_EastEuropean class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'ms-easteuropean' 'ms-ee' 'cp1250' 'ms-cp1250' )
+! !
+
+!CharacterEncoder::MS_Greek class methodsFor:'mapping'!
+
+mappingURL2_relativePathName
+    ^ 'CP1253'
+! !
+
+!CharacterEncoder::MS_Greek class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'ms-greek' 'ms-cp1253' 'cp1253' )
+! !
+
+!CharacterEncoder::MS_Hebrew class methodsFor:'mapping'!
+
+mappingURL2_relativePathName
+    ^ 'CP1255'
+! !
+
+!CharacterEncoder::MS_Hebrew class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'ms-hebrew' 'ms-cp1255' 'cp1255' )
+! !
+
+!CharacterEncoder::MS_Turkish class methodsFor:'mapping'!
 
 mapping
 "
-# From: http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/UKRAINE.TXT
-
-#=======================================================================
-#   File name:  UKRAINE.TXT
-#
-#   Contents:   Notes on Mac OS Ukrainian character set
-#
-#   Copyright:  (c) 1995-2002 by Apple Computer, Inc., all rights
-#               reserved.
-#
-#   Contact:    charsets@apple.com
-#
-#   Changes:
-#
-#      b3,c1 2002-Dec-19    Update URLs. Matches internal utom<b1>.
-#       b02  1999-Sep-22    Encoding changed for Mac OS 9.0 to merge
-#                           with Mac OS Cyrillic and support EURO SIGN;
-#                           change mappings for 0xFF. For Mac OS 9.0
-#                           there is no longer a separate Mac OS
-#                           Ukrainian character set; the mappings are
-#                           in CYRILLIC.TXT. Update contact e-mail
-#                           address. Matches internal utom<b1>, ufrm<b1>,
-#                           and Text  Encoding Converter version 1.5.
-#       n04  1998-Feb-05    Update header comments to new format; no
-#                           mapping changes.  Matches internal utom<2>,
-#                           ufrm<13>, and Text Encoding Converter
-#                           version 1.3.
-#       n02  1995-Apr-15    First version (after fixing some typos).
-#                           Matches internal ufrm<4>.
-#
-# Standard header:
-# ----------------
-#
-#   Apple, the Apple logo, and Macintosh are trademarks of Apple
-#   Computer, Inc., registered in the United States and other countries.
-#   Unicode is a trademark of Unicode Inc. For the sake of brevity,
-#   throughout this document, 'Macintosh' can be used to refer to
-#   Macintosh computers and 'Unicode' can be used to refer to the
-#   Unicode standard.
-#
-#   Apple makes no warranty or representation, either express or
-#   implied, with respect to these tables, their quality, accuracy, or
-#   fitness for a particular purpose. In no event will Apple be liable
-#   for direct, indirect, special, incidental, or consequential damages 
-#   resulting from any defect or inaccuracy in this document or the
-#   accompanying tables.
-#
-#   These mapping tables and character lists are subject to change.
-#   The latest tables should be available from the following:
-#
-#   <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
-#
-#   For general information about Mac OS encodings and these mapping
-#   tables, see the file 'README.TXT'.
-#
-# Notes on Mac OS Ukrainian and Mac OS Cyrillic:
-# ----------------------------------------------
-#
-#   Before Mac OS 9.0, there were two separate Slavic Cyrillic
-#   encodings for the Mac OS:
-#
-#   1. The Cyrillic currency sign variant (used for localized Russian
-#      and Bulgarian systems), which had the following:
-#	    0xA2  U+00A2 CENT SIGN
-#	    0xB6  U+2202 PARTIAL DIFFERENTIAL
-#	    0xFF  U+00A4 CURRENCY SIGN
-#
-#   2. The Ukrainian currency sign variant (used for localized Ukrainian
-#      systems and the pre-9.0 Cyrillic Language Kit), which had the
-#      following:
-#	    0xA2  U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-#	    0xB6  U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
-#	    0xFF  U+00A4 CURRENCY SIGN
-#
-#   Before Mac OS 9.0, The Ukrainian currency sign variant shared the
-#   script code smCyrillic (7) with the Cyrillic currency sign variant. 
-#   The Ukrainian currency sign variant was being used if one of the
-#   following was true:
-#   - The system region code was 62, verUkraine (indicates Ukrainian
-#     localized system), or
-#   - The system script was not 7, smCyrillic (indicates Cyrillic
-#     Language Kit instead of localized system).
-#
-#   For Mac OS 9.0, both currency sign variants were replaced with a new
-#   Euro sign version of Mac OS Cyrillic, which is similar to the old
-#   Ukrainian currency sign variant but changes 0xFF to EURO SIGN.
-#
-#   Note: There is a common glyph variation in Ukrainian, in which the
-#   glyph for CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I may or
-#   may not have a dot above.
-#
-# Details of mapping changes in each version:
-# -------------------------------------------
-#
-#   Changes from version n04 to version b02:
-#
-#   - Encoding changed for Mac OS 9.0 to merge with Mac OS Cyrillic and
-#   support EURO SIGN; 0xFF changed from U+00A4 to U+20AC. For Mac OS
-#   9.0 there is no longer a separate Mac OS Ukrainian character set, so
-#   the mappings here are deleted; see the mappings in CYRILLIC.TXT.
-#
-##################
-
-##################
-# For mappings, see CYRILLIC.TXT
-##################
-
-"
-!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/UKRAINE.TXT'
-! !
-
-!CharacterEncoder::MS_CP1006 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/CP1006.TXT'
-! !
-
-!CharacterEncoder::MS_CP1250 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT'
-! !
-
-!CharacterEncoder::MS_CP1251 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT'
-! !
-
-!CharacterEncoder::MS_CP1252 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT'
-! !
-
-!CharacterEncoder::MS_CP1253 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1253.TXT'
-! !
-
-!CharacterEncoder::MS_CP1254 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1254.TXT'
-! !
-
-!CharacterEncoder::MS_CP1255 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1255.TXT'
-! !
-
-!CharacterEncoder::MS_CP1256 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1256.TXT'
-! !
-
-!CharacterEncoder::MS_CP1257 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1257.TXT'
-! !
-
-!CharacterEncoder::MS_CP1258 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1258.TXT'
-! !
-
-!CharacterEncoder::MS_CP424 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/CP424.TXT'
-! !
-
-!CharacterEncoder::MS_CP856 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/CP856.TXT'
-! !
-
-!CharacterEncoder::MS_CP874 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP874.TXT'
-! !
-
-!CharacterEncoder::MS_CP932 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT'
-! !
-
-!CharacterEncoder::MS_CP936 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT'
-! !
-
-!CharacterEncoder::MS_CP949 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT'
-! !
-
-!CharacterEncoder::MS_CP950 class methodsFor:'mapping'!
-
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT'
+# From: http://std.dkuug.dk/i18n/charmaps/CP1254
+
+<code_set_name> CP1254
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+%  source: UNICODE 1.0
+
+% alias MS-TURK
+CHARMAP
+<NU>                   /x00   <U0000> NULL (NUL)
+<SH>                   /x01   <U0001> START OF HEADING (SOH)
+<SX>                   /x02   <U0002> START OF TEXT (STX)
+<EX>                   /x03   <U0003> END OF TEXT (ETX)
+<ET>                   /x04   <U0004> END OF TRANSMISSION (EOT)
+<EQ>                   /x05   <U0005> ENQUIRY (ENQ)
+<AK>                   /x06   <U0006> ACKNOWLEDGE (ACK)
+<BL>                   /x07   <U0007> BELL (BEL)
+<BS>                   /x08   <U0008> BACKSPACE (BS)
+<HT>                   /x09   <U0009> CHARACTER TABULATION (HT)
+<LF>                   /x0A   <U000A> LINE FEED (LF)
+<VT>                   /x0B   <U000B> LINE TABULATION (VT)
+<FF>                   /x0C   <U000C> FORM FEED (FF)
+<CR>                   /x0D   <U000D> CARRIAGE RETURN (CR)
+<SO>                   /x0E   <U000E> SHIFT OUT (SO)
+<SI>                   /x0F   <U000F> SHIFT IN (SI)
+<DL>                   /x10   <U0010> DATALINK ESCAPE (DLE)
+<D1>                   /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<D2>                   /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<D3>                   /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<D4>                   /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NK>                   /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SY>                   /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<EB>                   /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CN>                   /x18   <U0018> CANCEL (CAN)
+<EM>                   /x19   <U0019> END OF MEDIUM (EM)
+<SB>                   /x1A   <U001A> SUBSTITUTE (SUB)
+<EC>                   /x1B   <U001B> ESCAPE (ESC)
+<FS>                   /x1C   <U001C> FILE SEPARATOR (IS4)
+<GS>                   /x1D   <U001D> GROUP SEPARATOR (IS3)
+<RS>                   /x1E   <U001E> RECORD SEPARATOR (IS2)
+<US>                   /x1F   <U001F> UNIT SEPARATOR (IS1)
+<SP>                   /x20   <U0020> SPACE
+<!!>                    /x21   <U0021> EXCLAMATION MARK
+<'>                    /x22   <U0022> QUOTATION MARK
+<Nb>                   /x23   <U0023> NUMBER SIGN
+<DO>                   /x24   <U0024> DOLLAR SIGN
+<%>                    /x25   <U0025> PERCENT SIGN
+<&>                    /x26   <U0026> AMPERSAND
+<'>                    /x27   <U0027> APOSTROPHE
+<(>                    /x28   <U0028> LEFT PARENTHESIS
+<)>                    /x29   <U0029> RIGHT PARENTHESIS
+<*>                    /x2A   <U002A> ASTERISK
+<+>                    /x2B   <U002B> PLUS SIGN
+<,>                    /x2C   <U002C> COMMA
+<->                    /x2D   <U002D> HYPHEN-MINUS
+<.>                    /x2E   <U002E> FULL STOP
+<//>                   /x2F   <U002F> SOLIDUS
+<0>                    /x30   <U0030> DIGIT ZERO
+<1>                    /x31   <U0031> DIGIT ONE
+<2>                    /x32   <U0032> DIGIT TWO
+<3>                    /x33   <U0033> DIGIT THREE
+<4>                    /x34   <U0034> DIGIT FOUR
+<5>                    /x35   <U0035> DIGIT FIVE
+<6>                    /x36   <U0036> DIGIT SIX
+<7>                    /x37   <U0037> DIGIT SEVEN
+<8>                    /x38   <U0038> DIGIT EIGHT
+<9>                    /x39   <U0039> DIGIT NINE
+<:>                    /x3A   <U003A> COLON
+<;>                    /x3B   <U003B> SEMICOLON
+<<>                    /x3C   <U003C> LESS-THAN SIGN
+<=>                    /x3D   <U003D> EQUALS SIGN
+</>>                   /x3E   <U003E> GREATER-THAN SIGN
+<?>                    /x3F   <U003F> QUESTION MARK
+<At>                   /x40   <U0040> COMMERCIAL AT
+<A>                    /x41   <U0041> LATIN CAPITAL LETTER A
+<B>                    /x42   <U0042> LATIN CAPITAL LETTER B
+<C>                    /x43   <U0043> LATIN CAPITAL LETTER C
+<D>                    /x44   <U0044> LATIN CAPITAL LETTER D
+<E>                    /x45   <U0045> LATIN CAPITAL LETTER E
+<F>                    /x46   <U0046> LATIN CAPITAL LETTER F
+<G>                    /x47   <U0047> LATIN CAPITAL LETTER G
+<H>                    /x48   <U0048> LATIN CAPITAL LETTER H
+<I>                    /x49   <U0049> LATIN CAPITAL LETTER I
+<J>                    /x4A   <U004A> LATIN CAPITAL LETTER J
+<K>                    /x4B   <U004B> LATIN CAPITAL LETTER K
+<L>                    /x4C   <U004C> LATIN CAPITAL LETTER L
+<M>                    /x4D   <U004D> LATIN CAPITAL LETTER M
+<N>                    /x4E   <U004E> LATIN CAPITAL LETTER N
+<O>                    /x4F   <U004F> LATIN CAPITAL LETTER O
+<P>                    /x50   <U0050> LATIN CAPITAL LETTER P
+<Q>                    /x51   <U0051> LATIN CAPITAL LETTER Q
+<R>                    /x52   <U0052> LATIN CAPITAL LETTER R
+<S>                    /x53   <U0053> LATIN CAPITAL LETTER S
+<T>                    /x54   <U0054> LATIN CAPITAL LETTER T
+<U>                    /x55   <U0055> LATIN CAPITAL LETTER U
+<V>                    /x56   <U0056> LATIN CAPITAL LETTER V
+<W>                    /x57   <U0057> LATIN CAPITAL LETTER W
+<X>                    /x58   <U0058> LATIN CAPITAL LETTER X
+<Y>                    /x59   <U0059> LATIN CAPITAL LETTER Y
+<Z>                    /x5A   <U005A> LATIN CAPITAL LETTER Z
+<<(>                   /x5B   <U005B> LEFT SQUARE BRACKET
+<////>                 /x5C   <U005C> REVERSE SOLIDUS
+<)/>>                  /x5D   <U005D> RIGHT SQUARE BRACKET
+<'/>>                  /x5E   <U005E> CIRCUMFLEX ACCENT
+<_>                    /x5F   <U005F> LOW LINE
+<'!!>                   /x60   <U0060> GRAVE ACCENT
+<a>                    /x61   <U0061> LATIN SMALL LETTER A
+<b>                    /x62   <U0062> LATIN SMALL LETTER B
+<c>                    /x63   <U0063> LATIN SMALL LETTER C
+<d>                    /x64   <U0064> LATIN SMALL LETTER D
+<e>                    /x65   <U0065> LATIN SMALL LETTER E
+<f>                    /x66   <U0066> LATIN SMALL LETTER F
+<g>                    /x67   <U0067> LATIN SMALL LETTER G
+<h>                    /x68   <U0068> LATIN SMALL LETTER H
+<i>                    /x69   <U0069> LATIN SMALL LETTER I
+<j>                    /x6A   <U006A> LATIN SMALL LETTER J
+<k>                    /x6B   <U006B> LATIN SMALL LETTER K
+<l>                    /x6C   <U006C> LATIN SMALL LETTER L
+<m>                    /x6D   <U006D> LATIN SMALL LETTER M
+<n>                    /x6E   <U006E> LATIN SMALL LETTER N
+<o>                    /x6F   <U006F> LATIN SMALL LETTER O
+<p>                    /x70   <U0070> LATIN SMALL LETTER P
+<q>                    /x71   <U0071> LATIN SMALL LETTER Q
+<r>                    /x72   <U0072> LATIN SMALL LETTER R
+<s>                    /x73   <U0073> LATIN SMALL LETTER S
+<t>                    /x74   <U0074> LATIN SMALL LETTER T
+<u>                    /x75   <U0075> LATIN SMALL LETTER U
+<v>                    /x76   <U0076> LATIN SMALL LETTER V
+<w>                    /x77   <U0077> LATIN SMALL LETTER W
+<x>                    /x78   <U0078> LATIN SMALL LETTER X
+<y>                    /x79   <U0079> LATIN SMALL LETTER Y
+<z>                    /x7A   <U007A> LATIN SMALL LETTER Z
+<(!!>                   /x7B   <U007B> LEFT CURLY BRACKET
+<!!!!>                   /x7C   <U007C> VERTICAL LINE
+<!!)>                   /x7D   <U007D> RIGHT CURLY BRACKET
+<'?>                   /x7E   <U007E> TILDE
+<DT>                   /x7F   <U007F> DELETE (DEL)
+<.9>                   /x82   <U201A> SINGLE LOW-9 QUOTATION MARK
+<f2>                   /x83   <U0192> LATIN SMALL LETTER F WITH HOOK
+<:9>                   /x84   <U201E> DOUBLE LOW-9 QUOTATION MARK
+<.3>                   /x85   <U2026> HORIZONTAL ELLIPSIS
+<//->                  /x86   <U2020> DAGGER
+<//=>                  /x87   <U2021> DOUBLE DAGGER
+<1/>>                  /x88   <U02C6> MODIFIER LETTER CIRCUMFLEX ACCENT
+<%0>                   /x89   <U2030> PER MILLE SIGN
+<S<>                   /x8A   <U0160> LATIN CAPITAL LETTER S WITH CARON
+<<1>                   /x8B   <U2039> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+<OE>                   /x8C   <U0152> LATIN CAPITAL LIGATURE OE
+<'6>                   /x91   <U2018> LEFT SINGLE QUOTATION MARK
+<'9>                   /x92   <U2019> RIGHT SINGLE QUOTATION MARK
+<'6>                   /x93   <U201C> LEFT DOUBLE QUOTATION MARK
+<'9>                   /x94   <U201D> RIGHT DOUBLE QUOTATION MARK
+<sb>                   /x95   <U2022> BULLET
+<-N>                   /x96   <U2013> EN DASH
+<-M>                   /x97   <U2014> EM DASH
+<1?>                   /x98   <U02DC> SMALL TILDE
+<TM>                   /x99   <U2122> TRADE MARK SIGN
+<s<>                   /x9A   <U0161> LATIN SMALL LETTER S WITH CARON
+</>1>                  /x9B   <U203A> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+<oe>                   /x9C   <U0153> LATIN SMALL LIGATURE OE
+<Y:>                   /x9F   <U0178> LATIN CAPITAL LETTER Y WITH DIAERESIS
+<NS>                   /xA0   <U00A0> NO-BREAK SPACE
+<!!I>                   /xA1   <U00A1> INVERTED EXCLAMATION MARK
+<Ct>                   /xA2   <U00A2> CENT SIGN
+<Pd>                   /xA3   <U00A3> POUND SIGN
+<Cu>                   /xA4   <U00A4> CURRENCY SIGN
+<Ye>                   /xA5   <U00A5> YEN SIGN
+<BB>                   /xA6   <U00A6> BROKEN BAR
+<SE>                   /xA7   <U00A7> SECTION SIGN
+<':>                   /xA8   <U00A8> DIAERESIS
+<Co>                   /xA9   <U00A9> COPYRIGHT SIGN
+<-a>                   /xAA   <U00AA> FEMININE ORDINAL INDICATOR
+<<<>                   /xAB   <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<NO>                   /xAC   <U00AC> NOT SIGN
+<-->                   /xAD   <U00AD> SOFT HYPHEN
+<Rg>                   /xAE   <U00AE> REGISTERED SIGN
+<'m>                   /xAF   <U00AF> MACRON
+<DG>                   /xB0   <U00B0> DEGREE SIGN
+<+->                   /xB1   <U00B1> PLUS-MINUS SIGN
+<2S>                   /xB2   <U00B2> SUPERSCRIPT TWO
+<3S>                   /xB3   <U00B3> SUPERSCRIPT THREE
+<''>                   /xB4   <U00B4> ACUTE ACCENT
+<My>                   /xB5   <U00B5> MICRO SIGN
+<PI>                   /xB6   <U00B6> PILCROW SIGN
+<.M>                   /xB7   <U00B7> MIDDLE DOT
+<',>                   /xB8   <U00B8> CEDILLA
+<1S>                   /xB9   <U00B9> SUPERSCRIPT ONE
+<-o>                   /xBA   <U00BA> MASCULINE ORDINAL INDICATOR
+</>/>>                 /xBB   <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<14>                   /xBC   <U00BC> VULGAR FRACTION ONE QUARTER
+<12>                   /xBD   <U00BD> VULGAR FRACTION ONE HALF
+<34>                   /xBE   <U00BE> VULGAR FRACTION THREE QUARTERS
+<?I>                   /xBF   <U00BF> INVERTED QUESTION MARK
+<A!!>                   /xC0   <U00C0> LATIN CAPITAL LETTER A WITH GRAVE
+<A'>                   /xC1   <U00C1> LATIN CAPITAL LETTER A WITH ACUTE
+<A/>>                  /xC2   <U00C2> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<A?>                   /xC3   <U00C3> LATIN CAPITAL LETTER A WITH TILDE
+<A:>                   /xC4   <U00C4> LATIN CAPITAL LETTER A WITH DIAERESIS
+<AA>                   /xC5   <U00C5> LATIN CAPITAL LETTER A WITH RING ABOVE
+<AE>                   /xC6   <U00C6> LATIN CAPITAL LETTER AE
+<C,>                   /xC7   <U00C7> LATIN CAPITAL LETTER C WITH CEDILLA
+<E!!>                   /xC8   <U00C8> LATIN CAPITAL LETTER E WITH GRAVE
+<E'>                   /xC9   <U00C9> LATIN CAPITAL LETTER E WITH ACUTE
+<E/>>                  /xCA   <U00CA> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<E:>                   /xCB   <U00CB> LATIN CAPITAL LETTER E WITH DIAERESIS
+<I!!>                   /xCC   <U00CC> LATIN CAPITAL LETTER I WITH GRAVE
+<I'>                   /xCD   <U00CD> LATIN CAPITAL LETTER I WITH ACUTE
+<I/>>                  /xCE   <U00CE> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<I:>                   /xCF   <U00CF> LATIN CAPITAL LETTER I WITH DIAERESIS
+<G(>                   /xD0   <U011E> LATIN CAPITAL LETTER G WITH BREVE
+<N?>                   /xD1   <U00D1> LATIN CAPITAL LETTER N WITH TILDE
+<O!!>                   /xD2   <U00D2> LATIN CAPITAL LETTER O WITH GRAVE
+<O'>                   /xD3   <U00D3> LATIN CAPITAL LETTER O WITH ACUTE
+<O/>>                  /xD4   <U00D4> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<O?>                   /xD5   <U00D5> LATIN CAPITAL LETTER O WITH TILDE
+<O:>                   /xD6   <U00D6> LATIN CAPITAL LETTER O WITH DIAERESIS
+<*X>                   /xD7   <U00D7> MULTIPLICATION SIGN
+<O//>                  /xD8   <U00D8> LATIN CAPITAL LETTER O WITH STROKE
+<U!!>                   /xD9   <U00D9> LATIN CAPITAL LETTER U WITH GRAVE
+<U'>                   /xDA   <U00DA> LATIN CAPITAL LETTER U WITH ACUTE
+<U/>>                  /xDB   <U00DB> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<U:>                   /xDC   <U00DC> LATIN CAPITAL LETTER U WITH DIAERESIS
+<I.>                   /xDD   <U0130> LATIN CAPITAL LETTER I WITH DOT ABOVE
+<S,>                   /xDE   <U015E> LATIN CAPITAL LETTER S WITH CEDILLA
+<ss>                   /xDF   <U00DF> LATIN SMALL LETTER SHARP S (German)
+<a!!>                   /xE0   <U00E0> LATIN SMALL LETTER A WITH GRAVE
+<a'>                   /xE1   <U00E1> LATIN SMALL LETTER A WITH ACUTE
+<a/>>                  /xE2   <U00E2> LATIN SMALL LETTER A WITH CIRCUMFLEX
+<a?>                   /xE3   <U00E3> LATIN SMALL LETTER A WITH TILDE
+<a:>                   /xE4   <U00E4> LATIN SMALL LETTER A WITH DIAERESIS
+<aa>                   /xE5   <U00E5> LATIN SMALL LETTER A WITH RING ABOVE
+<ae>                   /xE6   <U00E6> LATIN SMALL LETTER AE
+<c,>                   /xE7   <U00E7> LATIN SMALL LETTER C WITH CEDILLA
+<e!!>                   /xE8   <U00E8> LATIN SMALL LETTER E WITH GRAVE
+<e'>                   /xE9   <U00E9> LATIN SMALL LETTER E WITH ACUTE
+<e;>                   /xEA   <U0119> LATIN SMALL LETTER E WITH OGONEK
+<e:>                   /xEB   <U00EB> LATIN SMALL LETTER E WITH DIAERESIS
+<e.>                   /xEC   <U0117> LATIN SMALL LETTER E WITH DOT ABOVE
+<i'>                   /xED   <U00ED> LATIN SMALL LETTER I WITH ACUTE
+<i/>>                  /xEE   <U00EE> LATIN SMALL LETTER I WITH CIRCUMFLEX
+<i->                   /xEF   <U012B> LATIN SMALL LETTER I WITH MACRON
+<g(>                   /xF0   <U011F> LATIN SMALL LETTER G WITH BREVE
+<n?>                   /xF1   <U00F1> LATIN SMALL LETTER N WITH TILDE
+<o!!>                   /xF2   <U00F2> LATIN SMALL LETTER O WITH GRAVE
+<o'>                   /xF3   <U00F3> LATIN SMALL LETTER O WITH ACUTE
+<o/>>                  /xF4   <U00F4> LATIN SMALL LETTER O WITH CIRCUMFLEX
+<o?>                   /xF5   <U00F5> LATIN SMALL LETTER O WITH TILDE
+<o:>                   /xF6   <U00F6> LATIN SMALL LETTER O WITH DIAERESIS
+<-:>                   /xF7   <U00F7> DIVISION SIGN
+<o//>                  /xF8   <U00F8> LATIN SMALL LETTER O WITH STROKE
+<u!!>                   /xF9   <U00F9> LATIN SMALL LETTER U WITH GRAVE
+<u'>                   /xFA   <U00FA> LATIN SMALL LETTER U WITH ACUTE
+<u/>>                  /xFB   <U00FB> LATIN SMALL LETTER U WITH CIRCUMFLEX
+<u:>                   /xFC   <U00FC> LATIN SMALL LETTER U WITH DIAERESIS
+<i.>                   /xFD   <U0131> LATIN SMALL LETTER DOTLESS I
+<s,>                   /xFE   <U015F> LATIN SMALL LETTER S WITH CEDILLA
+<y:>                   /xFF   <U00FF> LATIN SMALL LETTER Y WITH DIAERESIS
+<NUL>                  /x00   <U0000> NUL
+<SOH>                  /x01   <U0001> START OF HEADING (SOH)
+<STX>                  /x02   <U0002> START OF TEXT (STX)
+<ETX>                  /x03   <U0003> END OF TEXT (ETX)
+<EOT>                  /x04   <U0004> END OF TRANSMISSION (EOT)
+<ENQ>                  /x05   <U0005> ENQUIRY (ENQ)
+<ACK>                  /x06   <U0006> ACKNOWLEDGE (ACK)
+<alert>                /x07   <U0007> BELL (BEL)
+<BEL>                  /x07   <U0007> BELL (BEL)
+<backspace>            /x08   <U0008> BACKSPACE (BS)
+<tab>                  /x09   <U0009> CHARACTER TABULATION (HT)
+<newline>              /x0A   <U000A> LINE FEED (LF)
+<vertical-tab>         /x0B   <U000B> LINE TABULATION (VT)
+<form-feed>            /x0C   <U000C> FORM FEED (FF)
+<carriage-return>      /x0D   <U000D> CARRIAGE RETURN (CR)
+<DLE>                  /x10   <U0010> DATALINK ESCAPE (DLE)
+<DC1>                  /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<DC2>                  /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<DC3>                  /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<DC4>                  /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK>                  /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN>                  /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB>                  /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN>                  /x18   <U0018> CANCEL (CAN)
+<SUB>                  /x1A   <U001A> SUBSTITUTE (SUB)
+<ESC>                  /x1B   <U001B> ESCAPE (ESC)
+<IS4>                  /x1C   <U001C> FILE SEPARATOR (IS4)
+<IS3>                  /x1D   <U001D> GROUP SEPARATOR (IS3)
+<intro>                /x1D   <U001D> GROUP SEPARATOR (IS3)
+<IS2>                  /x1E   <U001E> RECORD SEPARATOR (IS2)
+<IS1>                  /x1F   <U001F> UNIT SEPARATOR (IS1)
+<DEL>                  /x7F   <U007F> DELETE (DEL)
+<space>                /x20   <U0020> SPACE
+<exclamation-mark>     /x21   <U0021> EXCLAMATION MARK
+<quotation-mark>       /x22   <U0022> QUOTATION MARK
+<number-sign>          /x23   <U0023> NUMBER SIGN
+<dollar-sign>          /x24   <U0024> DOLLAR SIGN
+<percent-sign>         /x25   <U0025> PERCENT SIGN
+<ampersand>            /x26   <U0026> AMPERSAND
+<apostrophe>           /x27   <U0027> APOSTROPHE
+<left-parenthesis>     /x28   <U0028> LEFT PARENTHESIS
+<right-parenthesis>    /x29   <U0029> RIGHT PARENTHESIS
+<asterisk>             /x2A   <U002A> ASTERISK
+<plus-sign>            /x2B   <U002B> PLUS SIGN
+<comma>                /x2C   <U002C> COMMA
+<hyphen>               /x2D   <U002D> HYPHEN-MINUS
+<hyphen-minus>         /x2D   <U002D> HYPHEN-MINUS
+<period>               /x2E   <U002E> FULL STOP
+<full-stop>            /x2E   <U002E> FULL STOP
+<slash>                /x2F   <U002F> SOLIDUS
+<solidus>              /x2F   <U002F> SOLIDUS
+<zero>                 /x30   <U0030> DIGIT ZERO
+<one>                  /x31   <U0031> DIGIT ONE
+<two>                  /x32   <U0032> DIGIT TWO
+<three>                /x33   <U0033> DIGIT THREE
+<four>                 /x34   <U0034> DIGIT FOUR
+<five>                 /x35   <U0035> DIGIT FIVE
+<six>                  /x36   <U0036> DIGIT SIX
+<seven>                /x37   <U0037> DIGIT SEVEN
+<eight>                /x38   <U0038> DIGIT EIGHT
+<nine>                 /x39   <U0039> DIGIT NINE
+<colon>                /x3A   <U003A> COLON
+<semicolon>            /x3B   <U003B> SEMICOLON
+<less-than-sign>       /x3C   <U003C> LESS-THAN SIGN
+<equals-sign>          /x3D   <U003D> EQUALS SIGN
+<greater-than-sign>    /x3E   <U003E> GREATER-THAN SIGN
+<question-mark>        /x3F   <U003F> QUESTION MARK
+<commercial-at>        /x40   <U0040> COMMERCIAL AT
+<left-square-bracket>  /x5B   <U005B> LEFT SQUARE BRACKET
+<backslash>            /x5C   <U005C> REVERSE SOLIDUS
+<reverse-solidus>      /x5C   <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x5D   <U005D> RIGHT SQUARE BRACKET
+<circumflex>           /x5E   <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent>    /x5E   <U005E> CIRCUMFLEX ACCENT
+<underscore>           /x5F   <U005F> LOW LINE
+<low-line>             /x5F   <U005F> LOW LINE
+<grave-accent>         /x60   <U0060> GRAVE ACCENT
+<left-brace>           /x7B   <U007B> LEFT CURLY BRACKET
+<left-curly-bracket>   /x7B   <U007B> LEFT CURLY BRACKET
+<vertical-line>        /x7C   <U007C> VERTICAL LINE
+<right-brace>          /x7D   <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket>  /x7D   <U007D> RIGHT CURLY BRACKET
+<tilde>                /x7E   <U007E> TILDE
+END CHARMAP
+
+"
+!
+
+mappingURL2_relativePathName
+    ^ 'CP1254'
+! !
+
+!CharacterEncoder::MS_Turkish class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'ms-turkish' 'ms-cp1254' 'cp1254' )
+! !
+
+!CharacterEncoder::MS_Turkish methodsFor:'encoding & decoding'!
+
+decode:code
+    "automatically generated by generateEncoderCode"
+
+    code < 128 ifTrue:[ ^ code ].
+    code > 255 ifTrue:[
+        self error:'invalid code'.
+        ^ $? asciiValue
+    ].
+    ^ #(
+       "16r0080"    16rFFFF " invalid " 
+       "16r0081"    16rFFFF " invalid " 
+       "16r0082"    16r201A " SINGLE LOW-9 QUOTATION MARK " 
+       "16r0083"    16r0192 " LATIN SMALL LETTER F WITH HOOK " 
+       "16r0084"    16r201E " DOUBLE LOW-9 QUOTATION MARK " 
+       "16r0085"    16r2026 " HORIZONTAL ELLIPSIS " 
+       "16r0086"    16r2020 " DAGGER " 
+       "16r0087"    16r2021 " DOUBLE DAGGER " 
+       "16r0088"    16r02C6 " MODIFIER LETTER CIRCUMFLEX ACCENT " 
+       "16r0089"    16r2030 " PER MILLE SIGN " 
+       "16r008A"    16r0160 " LATIN CAPITAL LETTER S WITH CARON " 
+       "16r008B"    16r2039 " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " 
+       "16r008C"    16r0152 " LATIN CAPITAL LIGATURE OE " 
+       "16r008D"    16rFFFF " invalid " 
+       "16r008E"    16rFFFF " invalid " 
+       "16r008F"    16rFFFF " invalid " 
+       "16r0090"    16rFFFF " invalid " 
+       "16r0091"    16r2018 " LEFT SINGLE QUOTATION MARK " 
+       "16r0092"    16r2019 " RIGHT SINGLE QUOTATION MARK " 
+       "16r0093"    16r201C " LEFT DOUBLE QUOTATION MARK " 
+       "16r0094"    16r201D " RIGHT DOUBLE QUOTATION MARK " 
+       "16r0095"    16r2022 " BULLET " 
+       "16r0096"    16r2013 " EN DASH " 
+       "16r0097"    16r2014 " EM DASH " 
+       "16r0098"    16r02DC " SMALL TILDE " 
+       "16r0099"    16r2122 " TRADE MARK SIGN " 
+       "16r009A"    16r0161 " LATIN SMALL LETTER S WITH CARON " 
+       "16r009B"    16r203A " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " 
+       "16r009C"    16r0153 " LATIN SMALL LIGATURE OE " 
+       "16r009D"    16rFFFF " invalid " 
+       "16r009E"    16rFFFF " invalid " 
+       "16r009F"    16r0178 " LATIN CAPITAL LETTER Y WITH DIAERESIS " 
+       "16r00A0"    16r00A0 " NO-BREAK SPACE " 
+       "16r00A1"    16r00A1 " INVERTED EXCLAMATION MARK " 
+       "16r00A2"    16r00A2 " CENT SIGN " 
+       "16r00A3"    16r00A3 " POUND SIGN " 
+       "16r00A4"    16r00A4 " CURRENCY SIGN " 
+       "16r00A5"    16r00A5 " YEN SIGN " 
+       "16r00A6"    16r00A6 " BROKEN BAR " 
+       "16r00A7"    16r00A7 " SECTION SIGN " 
+       "16r00A8"    16r00A8 " DIAERESIS " 
+       "16r00A9"    16r00A9 " COPYRIGHT SIGN " 
+       "16r00AA"    16r00AA " FEMININE ORDINAL INDICATOR " 
+       "16r00AB"    16r00AB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+       "16r00AC"    16r00AC " NOT SIGN " 
+       "16r00AD"    16r00AD " SOFT HYPHEN " 
+       "16r00AE"    16r00AE " REGISTERED SIGN " 
+       "16r00AF"    16r00AF " MACRON " 
+       "16r00B0"    16r00B0 " DEGREE SIGN " 
+       "16r00B1"    16r00B1 " PLUS-MINUS SIGN " 
+       "16r00B2"    16r00B2 " SUPERSCRIPT TWO " 
+       "16r00B3"    16r00B3 " SUPERSCRIPT THREE " 
+       "16r00B4"    16r00B4 " ACUTE ACCENT " 
+       "16r00B5"    16r00B5 " MICRO SIGN " 
+       "16r00B6"    16r00B6 " PILCROW SIGN " 
+       "16r00B7"    16r00B7 " MIDDLE DOT " 
+       "16r00B8"    16r00B8 " CEDILLA " 
+       "16r00B9"    16r00B9 " SUPERSCRIPT ONE " 
+       "16r00BA"    16r00BA " MASCULINE ORDINAL INDICATOR " 
+       "16r00BB"    16r00BB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+       "16r00BC"    16r00BC " VULGAR FRACTION ONE QUARTER " 
+       "16r00BD"    16r00BD " VULGAR FRACTION ONE HALF " 
+       "16r00BE"    16r00BE " VULGAR FRACTION THREE QUARTERS " 
+       "16r00BF"    16r00BF " INVERTED QUESTION MARK " 
+       "16r00C0"    16r00C0 " LATIN CAPITAL LETTER A WITH GRAVE " 
+       "16r00C1"    16r00C1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+       "16r00C2"    16r00C2 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+       "16r00C3"    16r00C3 " LATIN CAPITAL LETTER A WITH TILDE " 
+       "16r00C4"    16r00C4 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+       "16r00C5"    16r00C5 " LATIN CAPITAL LETTER A WITH RING ABOVE " 
+       "16r00C6"    16r00C6 " LATIN CAPITAL LETTER AE " 
+       "16r00C7"    16r00C7 " LATIN CAPITAL LETTER C WITH CEDILLA " 
+       "16r00C8"    16r00C8 " LATIN CAPITAL LETTER E WITH GRAVE " 
+       "16r00C9"    16r00C9 " LATIN CAPITAL LETTER E WITH ACUTE " 
+       "16r00CA"    16r00CA " LATIN CAPITAL LETTER E WITH CIRCUMFLEX " 
+       "16r00CB"    16r00CB " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+       "16r00CC"    16r00CC " LATIN CAPITAL LETTER I WITH GRAVE " 
+       "16r00CD"    16r00CD " LATIN CAPITAL LETTER I WITH ACUTE " 
+       "16r00CE"    16r00CE " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+       "16r00CF"    16r00CF " LATIN CAPITAL LETTER I WITH DIAERESIS " 
+       "16r00D0"    16r011E " LATIN CAPITAL LETTER G WITH BREVE " 
+       "16r00D1"    16r00D1 " LATIN CAPITAL LETTER N WITH TILDE " 
+       "16r00D2"    16r00D2 " LATIN CAPITAL LETTER O WITH GRAVE " 
+       "16r00D3"    16r00D3 " LATIN CAPITAL LETTER O WITH ACUTE " 
+       "16r00D4"    16r00D4 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+       "16r00D5"    16r00D5 " LATIN CAPITAL LETTER O WITH TILDE " 
+       "16r00D6"    16r00D6 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+       "16r00D7"    16r00D7 " MULTIPLICATION SIGN " 
+       "16r00D8"    16r00D8 " LATIN CAPITAL LETTER O WITH STROKE " 
+       "16r00D9"    16r00D9 " LATIN CAPITAL LETTER U WITH GRAVE " 
+       "16r00DA"    16r00DA " LATIN CAPITAL LETTER U WITH ACUTE " 
+       "16r00DB"    16r00DB " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+       "16r00DC"    16r00DC " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+       "16r00DD"    16r0130 " LATIN CAPITAL LETTER I WITH DOT ABOVE " 
+       "16r00DE"    16r015E " LATIN CAPITAL LETTER S WITH CEDILLA " 
+       "16r00DF"    16r00DF " LATIN SMALL LETTER SHARP S (German) " 
+       "16r00E0"    16r00E0 " LATIN SMALL LETTER A WITH GRAVE " 
+       "16r00E1"    16r00E1 " LATIN SMALL LETTER A WITH ACUTE " 
+       "16r00E2"    16r00E2 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+       "16r00E3"    16r00E3 " LATIN SMALL LETTER A WITH TILDE " 
+       "16r00E4"    16r00E4 " LATIN SMALL LETTER A WITH DIAERESIS " 
+       "16r00E5"    16r00E5 " LATIN SMALL LETTER A WITH RING ABOVE " 
+       "16r00E6"    16r00E6 " LATIN SMALL LETTER AE " 
+       "16r00E7"    16r00E7 " LATIN SMALL LETTER C WITH CEDILLA " 
+       "16r00E8"    16r00E8 " LATIN SMALL LETTER E WITH GRAVE " 
+       "16r00E9"    16r00E9 " LATIN SMALL LETTER E WITH ACUTE " 
+       "16r00EA"    16r0119 " LATIN SMALL LETTER E WITH OGONEK " 
+       "16r00EB"    16r00EB " LATIN SMALL LETTER E WITH DIAERESIS " 
+       "16r00EC"    16r0117 " LATIN SMALL LETTER E WITH DOT ABOVE " 
+       "16r00ED"    16r00ED " LATIN SMALL LETTER I WITH ACUTE " 
+       "16r00EE"    16r00EE " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+       "16r00EF"    16r012B " LATIN SMALL LETTER I WITH MACRON " 
+       "16r00F0"    16r011F " LATIN SMALL LETTER G WITH BREVE " 
+       "16r00F1"    16r00F1 " LATIN SMALL LETTER N WITH TILDE " 
+       "16r00F2"    16r00F2 " LATIN SMALL LETTER O WITH GRAVE " 
+       "16r00F3"    16r00F3 " LATIN SMALL LETTER O WITH ACUTE " 
+       "16r00F4"    16r00F4 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+       "16r00F5"    16r00F5 " LATIN SMALL LETTER O WITH TILDE " 
+       "16r00F6"    16r00F6 " LATIN SMALL LETTER O WITH DIAERESIS " 
+       "16r00F7"    16r00F7 " DIVISION SIGN " 
+       "16r00F8"    16r00F8 " LATIN SMALL LETTER O WITH STROKE " 
+       "16r00F9"    16r00F9 " LATIN SMALL LETTER U WITH GRAVE " 
+       "16r00FA"    16r00FA " LATIN SMALL LETTER U WITH ACUTE " 
+       "16r00FB"    16r00FB " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+       "16r00FC"    16r00FC " LATIN SMALL LETTER U WITH DIAERESIS " 
+       "16r00FD"    16r0131 " LATIN SMALL LETTER DOTLESS I " 
+       "16r00FE"    16r015F " LATIN SMALL LETTER S WITH CEDILLA " 
+       ) at:(code - 127)
 ! !
 
 !CharacterEncoder::NEXT class methodsFor:'mapping'!
@@ -16421,7 +33541,7 @@
 "
 !
 
-mappingURL2_baseName
+mappingURL2_relativePathName
     ^ 'NEXTSTEP'
 ! !
 
@@ -16432,8 +33552,8 @@
 
     code < 128 ifTrue:[ ^ code ].
     code > 253 ifTrue:[
-        self error:'invalid code'.
-        ^ $? asciiValue
+	self error:'invalid code'.
+	^ $? asciiValue
     ].
     ^ #(
        "16r0080"    16r00A0 " NO-BREAK SPACE " 
@@ -16565,6 +33685,24 @@
        ) at:(code - 127)
 ! !
 
+!CharacterEncoder::NullEncoder methodsFor:'encoding & decoding'!
+
+decode:aCode
+    ^ aCode
+!
+
+decodeString:aString
+    ^ aString
+!
+
+encode:aCode
+    ^ aCode
+!
+
+encodeString:aString
+    ^ aString
+! !
+
 !CharacterEncoder::OtherEncoding class methodsFor:'private'!
 
 flushCode
@@ -16575,18 +33713,307 @@
 
 !CharacterEncoder::SJIS class methodsFor:'mapping'!
 
-mappingURL
-    ^ 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT'
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT'
 ! !
 
 !CharacterEncoder::SJIS methodsFor:'private'!
 
 newString:size
-    ^ GBEncodedString new:size
+    ^ JISEncodedString new:size
+! !
+
+!CharacterEncoder::ASCII class methodsFor:'mapping'!
+
+mapping
+"
+# From: http://std.dkuug.dk/i18n/charmaps/ASCII
+
+<code_set_name> ANSI_X3.4-1968
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+%  source: ECMA registry
+
+% alias ISO-IR-6
+% alias ANSI_X3.4-1986
+% alias ISO_646.IRV:1991
+% alias ASCII
+% alias ISO646-US
+% alias US-ASCII
+% alias US
+% alias IBM367
+% alias CP367
+CHARMAP
+<NU>                   /x00   <U0000> NULL (NUL)
+<SH>                   /x01   <U0001> START OF HEADING (SOH)
+<SX>                   /x02   <U0002> START OF TEXT (STX)
+<EX>                   /x03   <U0003> END OF TEXT (ETX)
+<ET>                   /x04   <U0004> END OF TRANSMISSION (EOT)
+<EQ>                   /x05   <U0005> ENQUIRY (ENQ)
+<AK>                   /x06   <U0006> ACKNOWLEDGE (ACK)
+<BL>                   /x07   <U0007> BELL (BEL)
+<BS>                   /x08   <U0008> BACKSPACE (BS)
+<HT>                   /x09   <U0009> CHARACTER TABULATION (HT)
+<LF>                   /x0A   <U000A> LINE FEED (LF)
+<VT>                   /x0B   <U000B> LINE TABULATION (VT)
+<FF>                   /x0C   <U000C> FORM FEED (FF)
+<CR>                   /x0D   <U000D> CARRIAGE RETURN (CR)
+<SO>                   /x0E   <U000E> SHIFT OUT (SO)
+<SI>                   /x0F   <U000F> SHIFT IN (SI)
+<DL>                   /x10   <U0010> DATALINK ESCAPE (DLE)
+<D1>                   /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<D2>                   /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<D3>                   /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<D4>                   /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NK>                   /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SY>                   /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<EB>                   /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CN>                   /x18   <U0018> CANCEL (CAN)
+<EM>                   /x19   <U0019> END OF MEDIUM (EM)
+<SB>                   /x1A   <U001A> SUBSTITUTE (SUB)
+<EC>                   /x1B   <U001B> ESCAPE (ESC)
+<FS>                   /x1C   <U001C> FILE SEPARATOR (IS4)
+<GS>                   /x1D   <U001D> GROUP SEPARATOR (IS3)
+<RS>                   /x1E   <U001E> RECORD SEPARATOR (IS2)
+<US>                   /x1F   <U001F> UNIT SEPARATOR (IS1)
+<SP>                   /x20   <U0020> SPACE
+<!!>                    /x21   <U0021> EXCLAMATION MARK
+<'>                    /x22   <U0022> QUOTATION MARK
+<Nb>                   /x23   <U0023> NUMBER SIGN
+<DO>                   /x24   <U0024> DOLLAR SIGN
+<%>                    /x25   <U0025> PERCENT SIGN
+<&>                    /x26   <U0026> AMPERSAND
+<'>                    /x27   <U0027> APOSTROPHE
+<(>                    /x28   <U0028> LEFT PARENTHESIS
+<)>                    /x29   <U0029> RIGHT PARENTHESIS
+<*>                    /x2A   <U002A> ASTERISK
+<+>                    /x2B   <U002B> PLUS SIGN
+<,>                    /x2C   <U002C> COMMA
+<->                    /x2D   <U002D> HYPHEN-MINUS
+<.>                    /x2E   <U002E> FULL STOP
+<//>                   /x2F   <U002F> SOLIDUS
+<0>                    /x30   <U0030> DIGIT ZERO
+<1>                    /x31   <U0031> DIGIT ONE
+<2>                    /x32   <U0032> DIGIT TWO
+<3>                    /x33   <U0033> DIGIT THREE
+<4>                    /x34   <U0034> DIGIT FOUR
+<5>                    /x35   <U0035> DIGIT FIVE
+<6>                    /x36   <U0036> DIGIT SIX
+<7>                    /x37   <U0037> DIGIT SEVEN
+<8>                    /x38   <U0038> DIGIT EIGHT
+<9>                    /x39   <U0039> DIGIT NINE
+<:>                    /x3A   <U003A> COLON
+<;>                    /x3B   <U003B> SEMICOLON
+<<>                    /x3C   <U003C> LESS-THAN SIGN
+<=>                    /x3D   <U003D> EQUALS SIGN
+</>>                   /x3E   <U003E> GREATER-THAN SIGN
+<?>                    /x3F   <U003F> QUESTION MARK
+<At>                   /x40   <U0040> COMMERCIAL AT
+<A>                    /x41   <U0041> LATIN CAPITAL LETTER A
+<B>                    /x42   <U0042> LATIN CAPITAL LETTER B
+<C>                    /x43   <U0043> LATIN CAPITAL LETTER C
+<D>                    /x44   <U0044> LATIN CAPITAL LETTER D
+<E>                    /x45   <U0045> LATIN CAPITAL LETTER E
+<F>                    /x46   <U0046> LATIN CAPITAL LETTER F
+<G>                    /x47   <U0047> LATIN CAPITAL LETTER G
+<H>                    /x48   <U0048> LATIN CAPITAL LETTER H
+<I>                    /x49   <U0049> LATIN CAPITAL LETTER I
+<J>                    /x4A   <U004A> LATIN CAPITAL LETTER J
+<K>                    /x4B   <U004B> LATIN CAPITAL LETTER K
+<L>                    /x4C   <U004C> LATIN CAPITAL LETTER L
+<M>                    /x4D   <U004D> LATIN CAPITAL LETTER M
+<N>                    /x4E   <U004E> LATIN CAPITAL LETTER N
+<O>                    /x4F   <U004F> LATIN CAPITAL LETTER O
+<P>                    /x50   <U0050> LATIN CAPITAL LETTER P
+<Q>                    /x51   <U0051> LATIN CAPITAL LETTER Q
+<R>                    /x52   <U0052> LATIN CAPITAL LETTER R
+<S>                    /x53   <U0053> LATIN CAPITAL LETTER S
+<T>                    /x54   <U0054> LATIN CAPITAL LETTER T
+<U>                    /x55   <U0055> LATIN CAPITAL LETTER U
+<V>                    /x56   <U0056> LATIN CAPITAL LETTER V
+<W>                    /x57   <U0057> LATIN CAPITAL LETTER W
+<X>                    /x58   <U0058> LATIN CAPITAL LETTER X
+<Y>                    /x59   <U0059> LATIN CAPITAL LETTER Y
+<Z>                    /x5A   <U005A> LATIN CAPITAL LETTER Z
+<<(>                   /x5B   <U005B> LEFT SQUARE BRACKET
+<////>                 /x5C   <U005C> REVERSE SOLIDUS
+<)/>>                  /x5D   <U005D> RIGHT SQUARE BRACKET
+<'/>>                  /x5E   <U005E> CIRCUMFLEX ACCENT
+<_>                    /x5F   <U005F> LOW LINE
+<'!!>                   /x60   <U0060> GRAVE ACCENT
+<a>                    /x61   <U0061> LATIN SMALL LETTER A
+<b>                    /x62   <U0062> LATIN SMALL LETTER B
+<c>                    /x63   <U0063> LATIN SMALL LETTER C
+<d>                    /x64   <U0064> LATIN SMALL LETTER D
+<e>                    /x65   <U0065> LATIN SMALL LETTER E
+<f>                    /x66   <U0066> LATIN SMALL LETTER F
+<g>                    /x67   <U0067> LATIN SMALL LETTER G
+<h>                    /x68   <U0068> LATIN SMALL LETTER H
+<i>                    /x69   <U0069> LATIN SMALL LETTER I
+<j>                    /x6A   <U006A> LATIN SMALL LETTER J
+<k>                    /x6B   <U006B> LATIN SMALL LETTER K
+<l>                    /x6C   <U006C> LATIN SMALL LETTER L
+<m>                    /x6D   <U006D> LATIN SMALL LETTER M
+<n>                    /x6E   <U006E> LATIN SMALL LETTER N
+<o>                    /x6F   <U006F> LATIN SMALL LETTER O
+<p>                    /x70   <U0070> LATIN SMALL LETTER P
+<q>                    /x71   <U0071> LATIN SMALL LETTER Q
+<r>                    /x72   <U0072> LATIN SMALL LETTER R
+<s>                    /x73   <U0073> LATIN SMALL LETTER S
+<t>                    /x74   <U0074> LATIN SMALL LETTER T
+<u>                    /x75   <U0075> LATIN SMALL LETTER U
+<v>                    /x76   <U0076> LATIN SMALL LETTER V
+<w>                    /x77   <U0077> LATIN SMALL LETTER W
+<x>                    /x78   <U0078> LATIN SMALL LETTER X
+<y>                    /x79   <U0079> LATIN SMALL LETTER Y
+<z>                    /x7A   <U007A> LATIN SMALL LETTER Z
+<(!!>                   /x7B   <U007B> LEFT CURLY BRACKET
+<!!!!>                   /x7C   <U007C> VERTICAL LINE
+<!!)>                   /x7D   <U007D> RIGHT CURLY BRACKET
+<'?>                   /x7E   <U007E> TILDE
+<DT>                   /x7F   <U007F> DELETE (DEL)
+<NUL>                  /x00   <U0000> NUL
+<SOH>                  /x01   <U0001> START OF HEADING (SOH)
+<STX>                  /x02   <U0002> START OF TEXT (STX)
+<ETX>                  /x03   <U0003> END OF TEXT (ETX)
+<EOT>                  /x04   <U0004> END OF TRANSMISSION (EOT)
+<ENQ>                  /x05   <U0005> ENQUIRY (ENQ)
+<ACK>                  /x06   <U0006> ACKNOWLEDGE (ACK)
+<alert>                /x07   <U0007> BELL (BEL)
+<BEL>                  /x07   <U0007> BELL (BEL)
+<backspace>            /x08   <U0008> BACKSPACE (BS)
+<tab>                  /x09   <U0009> CHARACTER TABULATION (HT)
+<newline>              /x0A   <U000A> LINE FEED (LF)
+<vertical-tab>         /x0B   <U000B> LINE TABULATION (VT)
+<form-feed>            /x0C   <U000C> FORM FEED (FF)
+<carriage-return>      /x0D   <U000D> CARRIAGE RETURN (CR)
+<DLE>                  /x10   <U0010> DATALINK ESCAPE (DLE)
+<DC1>                  /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<DC2>                  /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<DC3>                  /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<DC4>                  /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK>                  /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN>                  /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB>                  /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN>                  /x18   <U0018> CANCEL (CAN)
+<SUB>                  /x1A   <U001A> SUBSTITUTE (SUB)
+<ESC>                  /x1B   <U001B> ESCAPE (ESC)
+<IS4>                  /x1C   <U001C> FILE SEPARATOR (IS4)
+<IS3>                  /x1D   <U001D> GROUP SEPARATOR (IS3)
+<intro>                /x1D   <U001D> GROUP SEPARATOR (IS3)
+<IS2>                  /x1E   <U001E> RECORD SEPARATOR (IS2)
+<IS1>                  /x1F   <U001F> UNIT SEPARATOR (IS1)
+<DEL>                  /x7F   <U007F> DELETE (DEL)
+<space>                /x20   <U0020> SPACE
+<exclamation-mark>     /x21   <U0021> EXCLAMATION MARK
+<quotation-mark>       /x22   <U0022> QUOTATION MARK
+<number-sign>          /x23   <U0023> NUMBER SIGN
+<dollar-sign>          /x24   <U0024> DOLLAR SIGN
+<percent-sign>         /x25   <U0025> PERCENT SIGN
+<ampersand>            /x26   <U0026> AMPERSAND
+<apostrophe>           /x27   <U0027> APOSTROPHE
+<left-parenthesis>     /x28   <U0028> LEFT PARENTHESIS
+<right-parenthesis>    /x29   <U0029> RIGHT PARENTHESIS
+<asterisk>             /x2A   <U002A> ASTERISK
+<plus-sign>            /x2B   <U002B> PLUS SIGN
+<comma>                /x2C   <U002C> COMMA
+<hyphen>               /x2D   <U002D> HYPHEN-MINUS
+<hyphen-minus>         /x2D   <U002D> HYPHEN-MINUS
+<period>               /x2E   <U002E> FULL STOP
+<full-stop>            /x2E   <U002E> FULL STOP
+<slash>                /x2F   <U002F> SOLIDUS
+<solidus>              /x2F   <U002F> SOLIDUS
+<zero>                 /x30   <U0030> DIGIT ZERO
+<one>                  /x31   <U0031> DIGIT ONE
+<two>                  /x32   <U0032> DIGIT TWO
+<three>                /x33   <U0033> DIGIT THREE
+<four>                 /x34   <U0034> DIGIT FOUR
+<five>                 /x35   <U0035> DIGIT FIVE
+<six>                  /x36   <U0036> DIGIT SIX
+<seven>                /x37   <U0037> DIGIT SEVEN
+<eight>                /x38   <U0038> DIGIT EIGHT
+<nine>                 /x39   <U0039> DIGIT NINE
+<colon>                /x3A   <U003A> COLON
+<semicolon>            /x3B   <U003B> SEMICOLON
+<less-than-sign>       /x3C   <U003C> LESS-THAN SIGN
+<equals-sign>          /x3D   <U003D> EQUALS SIGN
+<greater-than-sign>    /x3E   <U003E> GREATER-THAN SIGN
+<question-mark>        /x3F   <U003F> QUESTION MARK
+<commercial-at>        /x40   <U0040> COMMERCIAL AT
+<left-square-bracket>  /x5B   <U005B> LEFT SQUARE BRACKET
+<backslash>            /x5C   <U005C> REVERSE SOLIDUS
+<reverse-solidus>      /x5C   <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x5D   <U005D> RIGHT SQUARE BRACKET
+<circumflex>           /x5E   <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent>    /x5E   <U005E> CIRCUMFLEX ACCENT
+<underscore>           /x5F   <U005F> LOW LINE
+<low-line>             /x5F   <U005F> LOW LINE
+<grave-accent>         /x60   <U0060> GRAVE ACCENT
+<left-brace>           /x7B   <U007B> LEFT CURLY BRACKET
+<left-curly-bracket>   /x7B   <U007B> LEFT CURLY BRACKET
+<vertical-line>        /x7C   <U007C> VERTICAL LINE
+<right-brace>          /x7D   <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket>  /x7D   <U007D> RIGHT CURLY BRACKET
+<tilde>                /x7E   <U007E> TILDE
+END CHARMAP
+
+"
+!
+
+mappingURL2_relativePathName
+    ^ 'ASCII'
+
+    "
+     self generateCode
+    "
+! !
+
+!CharacterEncoder::ASCII class methodsFor:'queries'!
+
+alternativeNamesOfEncoding
+    ^ #( 'us-ascii' 'iso-ir-6' 'ibm-367' 'ms-cp367' 'cp367'  'iso646-us')
+! !
+
+!CharacterEncoder::ASCII methodsFor:'encoding & decoding'!
+
+decode:code
+    "decode from my encoding into unicode.
+     Do not modify - automatically generated by generateCode"
+
+    code > 127 ifTrue:[
+        ^ self decodingError.
+    ].
+    ^ code.
+!
+
+encode:unicode
+    "encode from unicode into my encoding.
+     Do not modify - automatically generated by generateCode"
+
+    unicode > 127 ifTrue:[
+        ^ self encodingError.
+    ].
+    ^ unicode.
+! !
+
+!CharacterEncoder::BIG5 class methodsFor:'mapping'!
+
+mappingURL1_relativePathName
+    ^ 'OBSOLETE/EASTASIA/OTHER/BIG5.TXT'
+! !
+
+!CharacterEncoder::BIG5 methodsFor:'private'!
+
+newString:size
+    ^ BIG5EncodedString new:size
 ! !
 
 !CharacterEncoder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.2 2004-02-09 22:43:45 cg Exp $'
-! !
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.3 2004-02-10 17:08:40 cg Exp $'
+! !
+
+CharacterEncoder initialize!
--- a/StringCollection.st	Tue Feb 10 18:03:35 2004 +0100
+++ b/StringCollection.st	Tue Feb 10 18:09:07 2004 +0100
@@ -122,6 +122,14 @@
         final:nil
 !
 
+encodeFrom:oldEncoding into:newEncoding
+    ^ self collect:[:line |
+        line isNil 
+            ifTrue:[ nil ]
+            ifFalse:[ CharacterEncoder encode:line from:oldEncoding into:newEncoding]
+      ]
+!
+
 from:aString
     "setup my contents from the argument, aString"
 
@@ -171,6 +179,14 @@
     ^ self asString
 ! !
 
+!StringCollection methodsFor:'queries'!
+
+encoding
+    self do:[:l | l notNil ifTrue:[^ l encoding]].
+    "/ sigh
+    ^ #'iso8859-1'
+! !
+
 !StringCollection methodsFor:'searching'!
 
 indexOfLineStartingWith:aString
@@ -258,5 +274,5 @@
 !StringCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/StringCollection.st,v 1.31 2004-01-14 16:03:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/StringCollection.st,v 1.32 2004-02-10 17:08:56 cg Exp $'
 ! !