]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Cosmetic change: make all hex literals use upper case hex so that they
authorMarc-André Lemburg <mal@egenix.com>
Mon, 24 Oct 2005 12:14:59 +0000 (12:14 +0000)
committerMarc-André Lemburg <mal@egenix.com>
Mon, 24 Oct 2005 12:14:59 +0000 (12:14 +0000)
look more like the Unicode Consortium files.

Add ending new-line to all source files.

45 files changed:
Lib/encodings/cp037.py
Lib/encodings/cp1006.py
Lib/encodings/cp1026.py
Lib/encodings/cp1140.py
Lib/encodings/cp1250.py
Lib/encodings/cp1251.py
Lib/encodings/cp1252.py
Lib/encodings/cp1253.py
Lib/encodings/cp1254.py
Lib/encodings/cp1255.py
Lib/encodings/cp1256.py
Lib/encodings/cp1257.py
Lib/encodings/cp1258.py
Lib/encodings/cp424.py
Lib/encodings/cp500.py
Lib/encodings/cp856.py
Lib/encodings/cp874.py
Lib/encodings/cp875.py
Lib/encodings/iso8859_1.py
Lib/encodings/iso8859_10.py
Lib/encodings/iso8859_11.py
Lib/encodings/iso8859_13.py
Lib/encodings/iso8859_14.py
Lib/encodings/iso8859_15.py
Lib/encodings/iso8859_16.py
Lib/encodings/iso8859_2.py
Lib/encodings/iso8859_3.py
Lib/encodings/iso8859_4.py
Lib/encodings/iso8859_5.py
Lib/encodings/iso8859_6.py
Lib/encodings/iso8859_7.py
Lib/encodings/iso8859_8.py
Lib/encodings/iso8859_9.py
Lib/encodings/koi8_r.py
Lib/encodings/koi8_u.py
Lib/encodings/mac_centeuro.py
Lib/encodings/mac_croatian.py
Lib/encodings/mac_cyrillic.py
Lib/encodings/mac_farsi.py
Lib/encodings/mac_greek.py
Lib/encodings/mac_iceland.py
Lib/encodings/mac_roman.py
Lib/encodings/mac_romanian.py
Lib/encodings/mac_turkish.py
Lib/encodings/tis_620.py

index 29edbef9c58a551316b4194cd39e0705e96f996f..3933ec7c8eb2978d479940385898d7a58f723040 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x7f'    #  0x07 -> DELETE
     u'\x97'    #  0x08 -> CONTROL
     u'\x8d'    #  0x09 -> CONTROL
-    u'\x8e'    #  0x0a -> CONTROL
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\x8e'    #  0x0A -> CONTROL
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x87'    #  0x17 -> CONTROL
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x92'    #  0x1a -> CONTROL
-    u'\x8f'    #  0x1b -> CONTROL
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x92'    #  0x1A -> CONTROL
+    u'\x8f'    #  0x1B -> CONTROL
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u'\x80'    #  0x20 -> CONTROL
     u'\x81'    #  0x21 -> CONTROL
     u'\x82'    #  0x22 -> CONTROL
@@ -74,12 +74,12 @@ decoding_table = (
     u'\x1b'    #  0x27 -> ESCAPE
     u'\x88'    #  0x28 -> CONTROL
     u'\x89'    #  0x29 -> CONTROL
-    u'\x8a'    #  0x2a -> CONTROL
-    u'\x8b'    #  0x2b -> CONTROL
-    u'\x8c'    #  0x2c -> CONTROL
-    u'\x05'    #  0x2d -> ENQUIRY
-    u'\x06'    #  0x2e -> ACKNOWLEDGE
-    u'\x07'    #  0x2f -> BELL
+    u'\x8a'    #  0x2A -> CONTROL
+    u'\x8b'    #  0x2B -> CONTROL
+    u'\x8c'    #  0x2C -> CONTROL
+    u'\x05'    #  0x2D -> ENQUIRY
+    u'\x06'    #  0x2E -> ACKNOWLEDGE
+    u'\x07'    #  0x2F -> BELL
     u'\x90'    #  0x30 -> CONTROL
     u'\x91'    #  0x31 -> CONTROL
     u'\x16'    #  0x32 -> SYNCHRONOUS IDLE
@@ -90,12 +90,12 @@ decoding_table = (
     u'\x04'    #  0x37 -> END OF TRANSMISSION
     u'\x98'    #  0x38 -> CONTROL
     u'\x99'    #  0x39 -> CONTROL
-    u'\x9a'    #  0x3a -> CONTROL
-    u'\x9b'    #  0x3b -> CONTROL
-    u'\x14'    #  0x3c -> DEVICE CONTROL FOUR
-    u'\x15'    #  0x3d -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'    #  0x3e -> CONTROL
-    u'\x1a'    #  0x3f -> SUBSTITUTE
+    u'\x9a'    #  0x3A -> CONTROL
+    u'\x9b'    #  0x3B -> CONTROL
+    u'\x14'    #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'    #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'    #  0x3E -> CONTROL
+    u'\x1a'    #  0x3F -> SUBSTITUTE
     u' '       #  0x40 -> SPACE
     u'\xa0'    #  0x41 -> NO-BREAK SPACE
     u'\xe2'    #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
@@ -106,12 +106,12 @@ decoding_table = (
     u'\xe5'    #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
     u'\xe7'    #  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
     u'\xf1'    #  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xa2'    #  0x4a -> CENT SIGN
-    u'.'       #  0x4b -> FULL STOP
-    u'<'       #  0x4c -> LESS-THAN SIGN
-    u'('       #  0x4d -> LEFT PARENTHESIS
-    u'+'       #  0x4e -> PLUS SIGN
-    u'|'       #  0x4f -> VERTICAL LINE
+    u'\xa2'    #  0x4A -> CENT SIGN
+    u'.'       #  0x4B -> FULL STOP
+    u'<'       #  0x4C -> LESS-THAN SIGN
+    u'('       #  0x4D -> LEFT PARENTHESIS
+    u'+'       #  0x4E -> PLUS SIGN
+    u'|'       #  0x4F -> VERTICAL LINE
     u'&'       #  0x50 -> AMPERSAND
     u'\xe9'    #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
     u'\xea'    #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -122,12 +122,12 @@ decoding_table = (
     u'\xef'    #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
     u'\xec'    #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
     u'\xdf'    #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'!'       #  0x5a -> EXCLAMATION MARK
-    u'$'       #  0x5b -> DOLLAR SIGN
-    u'*'       #  0x5c -> ASTERISK
-    u')'       #  0x5d -> RIGHT PARENTHESIS
-    u';'       #  0x5e -> SEMICOLON
-    u'\xac'    #  0x5f -> NOT SIGN
+    u'!'       #  0x5A -> EXCLAMATION MARK
+    u'$'       #  0x5B -> DOLLAR SIGN
+    u'*'       #  0x5C -> ASTERISK
+    u')'       #  0x5D -> RIGHT PARENTHESIS
+    u';'       #  0x5E -> SEMICOLON
+    u'\xac'    #  0x5F -> NOT SIGN
     u'-'       #  0x60 -> HYPHEN-MINUS
     u'/'       #  0x61 -> SOLIDUS
     u'\xc2'    #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
@@ -138,12 +138,12 @@ decoding_table = (
     u'\xc5'    #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
     u'\xc7'    #  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
     u'\xd1'    #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xa6'    #  0x6a -> BROKEN BAR
-    u','       #  0x6b -> COMMA
-    u'%'       #  0x6c -> PERCENT SIGN
-    u'_'       #  0x6d -> LOW LINE
-    u'>'       #  0x6e -> GREATER-THAN SIGN
-    u'?'       #  0x6f -> QUESTION MARK
+    u'\xa6'    #  0x6A -> BROKEN BAR
+    u','       #  0x6B -> COMMA
+    u'%'       #  0x6C -> PERCENT SIGN
+    u'_'       #  0x6D -> LOW LINE
+    u'>'       #  0x6E -> GREATER-THAN SIGN
+    u'?'       #  0x6F -> QUESTION MARK
     u'\xf8'    #  0x70 -> LATIN SMALL LETTER O WITH STROKE
     u'\xc9'    #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
     u'\xca'    #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
@@ -154,12 +154,12 @@ decoding_table = (
     u'\xcf'    #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
     u'\xcc'    #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
     u'`'       #  0x79 -> GRAVE ACCENT
-    u':'       #  0x7a -> COLON
-    u'#'       #  0x7b -> NUMBER SIGN
-    u'@'       #  0x7c -> COMMERCIAL AT
-    u"'"       #  0x7d -> APOSTROPHE
-    u'='       #  0x7e -> EQUALS SIGN
-    u'"'       #  0x7f -> QUOTATION MARK
+    u':'       #  0x7A -> COLON
+    u'#'       #  0x7B -> NUMBER SIGN
+    u'@'       #  0x7C -> COMMERCIAL AT
+    u"'"       #  0x7D -> APOSTROPHE
+    u'='       #  0x7E -> EQUALS SIGN
+    u'"'       #  0x7F -> QUOTATION MARK
     u'\xd8'    #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
     u'a'       #  0x81 -> LATIN SMALL LETTER A
     u'b'       #  0x82 -> LATIN SMALL LETTER B
@@ -170,12 +170,12 @@ decoding_table = (
     u'g'       #  0x87 -> LATIN SMALL LETTER G
     u'h'       #  0x88 -> LATIN SMALL LETTER H
     u'i'       #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'    #  0x8a -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0x8b -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xf0'    #  0x8c -> LATIN SMALL LETTER ETH (ICELANDIC)
-    u'\xfd'    #  0x8d -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'    #  0x8e -> LATIN SMALL LETTER THORN (ICELANDIC)
-    u'\xb1'    #  0x8f -> PLUS-MINUS SIGN
+    u'\xab'    #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xf0'    #  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
+    u'\xfd'    #  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'    #  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
+    u'\xb1'    #  0x8F -> PLUS-MINUS SIGN
     u'\xb0'    #  0x90 -> DEGREE SIGN
     u'j'       #  0x91 -> LATIN SMALL LETTER J
     u'k'       #  0x92 -> LATIN SMALL LETTER K
@@ -186,108 +186,108 @@ decoding_table = (
     u'p'       #  0x97 -> LATIN SMALL LETTER P
     u'q'       #  0x98 -> LATIN SMALL LETTER Q
     u'r'       #  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'    #  0x9a -> FEMININE ORDINAL INDICATOR
-    u'\xba'    #  0x9b -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'    #  0x9c -> LATIN SMALL LIGATURE AE
-    u'\xb8'    #  0x9d -> CEDILLA
-    u'\xc6'    #  0x9e -> LATIN CAPITAL LIGATURE AE
-    u'\xa4'    #  0x9f -> CURRENCY SIGN
-    u'\xb5'    #  0xa0 -> MICRO SIGN
-    u'~'       #  0xa1 -> TILDE
-    u's'       #  0xa2 -> LATIN SMALL LETTER S
-    u't'       #  0xa3 -> LATIN SMALL LETTER T
-    u'u'       #  0xa4 -> LATIN SMALL LETTER U
-    u'v'       #  0xa5 -> LATIN SMALL LETTER V
-    u'w'       #  0xa6 -> LATIN SMALL LETTER W
-    u'x'       #  0xa7 -> LATIN SMALL LETTER X
-    u'y'       #  0xa8 -> LATIN SMALL LETTER Y
-    u'z'       #  0xa9 -> LATIN SMALL LETTER Z
-    u'\xa1'    #  0xaa -> INVERTED EXCLAMATION MARK
-    u'\xbf'    #  0xab -> INVERTED QUESTION MARK
-    u'\xd0'    #  0xac -> LATIN CAPITAL LETTER ETH (ICELANDIC)
-    u'\xdd'    #  0xad -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'    #  0xae -> LATIN CAPITAL LETTER THORN (ICELANDIC)
-    u'\xae'    #  0xaf -> REGISTERED SIGN
-    u'^'       #  0xb0 -> CIRCUMFLEX ACCENT
-    u'\xa3'    #  0xb1 -> POUND SIGN
-    u'\xa5'    #  0xb2 -> YEN SIGN
-    u'\xb7'    #  0xb3 -> MIDDLE DOT
-    u'\xa9'    #  0xb4 -> COPYRIGHT SIGN
-    u'\xa7'    #  0xb5 -> SECTION SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xbc'    #  0xb7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xb8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xb9 -> VULGAR FRACTION THREE QUARTERS
-    u'['       #  0xba -> LEFT SQUARE BRACKET
-    u']'       #  0xbb -> RIGHT SQUARE BRACKET
-    u'\xaf'    #  0xbc -> MACRON
-    u'\xa8'    #  0xbd -> DIAERESIS
-    u'\xb4'    #  0xbe -> ACUTE ACCENT
-    u'\xd7'    #  0xbf -> MULTIPLICATION SIGN
-    u'{'       #  0xc0 -> LEFT CURLY BRACKET
-    u'A'       #  0xc1 -> LATIN CAPITAL LETTER A
-    u'B'       #  0xc2 -> LATIN CAPITAL LETTER B
-    u'C'       #  0xc3 -> LATIN CAPITAL LETTER C
-    u'D'       #  0xc4 -> LATIN CAPITAL LETTER D
-    u'E'       #  0xc5 -> LATIN CAPITAL LETTER E
-    u'F'       #  0xc6 -> LATIN CAPITAL LETTER F
-    u'G'       #  0xc7 -> LATIN CAPITAL LETTER G
-    u'H'       #  0xc8 -> LATIN CAPITAL LETTER H
-    u'I'       #  0xc9 -> LATIN CAPITAL LETTER I
-    u'\xad'    #  0xca -> SOFT HYPHEN
-    u'\xf4'    #  0xcb -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0xcc -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'    #  0xcd -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xce -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'    #  0xcf -> LATIN SMALL LETTER O WITH TILDE
-    u'}'       #  0xd0 -> RIGHT CURLY BRACKET
-    u'J'       #  0xd1 -> LATIN CAPITAL LETTER J
-    u'K'       #  0xd2 -> LATIN CAPITAL LETTER K
-    u'L'       #  0xd3 -> LATIN CAPITAL LETTER L
-    u'M'       #  0xd4 -> LATIN CAPITAL LETTER M
-    u'N'       #  0xd5 -> LATIN CAPITAL LETTER N
-    u'O'       #  0xd6 -> LATIN CAPITAL LETTER O
-    u'P'       #  0xd7 -> LATIN CAPITAL LETTER P
-    u'Q'       #  0xd8 -> LATIN CAPITAL LETTER Q
-    u'R'       #  0xd9 -> LATIN CAPITAL LETTER R
-    u'\xb9'    #  0xda -> SUPERSCRIPT ONE
-    u'\xfb'    #  0xdb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xdc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf9'    #  0xdd -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xde -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'    #  0xdf -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\\'      #  0xe0 -> REVERSE SOLIDUS
-    u'\xf7'    #  0xe1 -> DIVISION SIGN
-    u'S'       #  0xe2 -> LATIN CAPITAL LETTER S
-    u'T'       #  0xe3 -> LATIN CAPITAL LETTER T
-    u'U'       #  0xe4 -> LATIN CAPITAL LETTER U
-    u'V'       #  0xe5 -> LATIN CAPITAL LETTER V
-    u'W'       #  0xe6 -> LATIN CAPITAL LETTER W
-    u'X'       #  0xe7 -> LATIN CAPITAL LETTER X
-    u'Y'       #  0xe8 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0xe9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'    #  0xea -> SUPERSCRIPT TWO
-    u'\xd4'    #  0xeb -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd6'    #  0xec -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd2'    #  0xed -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'    #  0xef -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'       #  0xf0 -> DIGIT ZERO
-    u'1'       #  0xf1 -> DIGIT ONE
-    u'2'       #  0xf2 -> DIGIT TWO
-    u'3'       #  0xf3 -> DIGIT THREE
-    u'4'       #  0xf4 -> DIGIT FOUR
-    u'5'       #  0xf5 -> DIGIT FIVE
-    u'6'       #  0xf6 -> DIGIT SIX
-    u'7'       #  0xf7 -> DIGIT SEVEN
-    u'8'       #  0xf8 -> DIGIT EIGHT
-    u'9'       #  0xf9 -> DIGIT NINE
-    u'\xb3'    #  0xfa -> SUPERSCRIPT THREE
-    u'\xdb'    #  0xfb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xfc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd9'    #  0xfd -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xfe -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'    #  0xff -> CONTROL
+    u'\xaa'    #  0x9A -> FEMININE ORDINAL INDICATOR
+    u'\xba'    #  0x9B -> MASCULINE ORDINAL INDICATOR
+    u'\xe6'    #  0x9C -> LATIN SMALL LIGATURE AE
+    u'\xb8'    #  0x9D -> CEDILLA
+    u'\xc6'    #  0x9E -> LATIN CAPITAL LIGATURE AE
+    u'\xa4'    #  0x9F -> CURRENCY SIGN
+    u'\xb5'    #  0xA0 -> MICRO SIGN
+    u'~'       #  0xA1 -> TILDE
+    u's'       #  0xA2 -> LATIN SMALL LETTER S
+    u't'       #  0xA3 -> LATIN SMALL LETTER T
+    u'u'       #  0xA4 -> LATIN SMALL LETTER U
+    u'v'       #  0xA5 -> LATIN SMALL LETTER V
+    u'w'       #  0xA6 -> LATIN SMALL LETTER W
+    u'x'       #  0xA7 -> LATIN SMALL LETTER X
+    u'y'       #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'       #  0xA9 -> LATIN SMALL LETTER Z
+    u'\xa1'    #  0xAA -> INVERTED EXCLAMATION MARK
+    u'\xbf'    #  0xAB -> INVERTED QUESTION MARK
+    u'\xd0'    #  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
+    u'\xdd'    #  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'    #  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
+    u'\xae'    #  0xAF -> REGISTERED SIGN
+    u'^'       #  0xB0 -> CIRCUMFLEX ACCENT
+    u'\xa3'    #  0xB1 -> POUND SIGN
+    u'\xa5'    #  0xB2 -> YEN SIGN
+    u'\xb7'    #  0xB3 -> MIDDLE DOT
+    u'\xa9'    #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'    #  0xB5 -> SECTION SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xbc'    #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'['       #  0xBA -> LEFT SQUARE BRACKET
+    u']'       #  0xBB -> RIGHT SQUARE BRACKET
+    u'\xaf'    #  0xBC -> MACRON
+    u'\xa8'    #  0xBD -> DIAERESIS
+    u'\xb4'    #  0xBE -> ACUTE ACCENT
+    u'\xd7'    #  0xBF -> MULTIPLICATION SIGN
+    u'{'       #  0xC0 -> LEFT CURLY BRACKET
+    u'A'       #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'       #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'       #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'       #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'       #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'       #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'       #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'       #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'       #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'    #  0xCA -> SOFT HYPHEN
+    u'\xf4'    #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'    #  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'    #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf5'    #  0xCF -> LATIN SMALL LETTER O WITH TILDE
+    u'}'       #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'       #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'       #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'       #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'       #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'       #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'       #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'       #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'       #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'       #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'    #  0xDA -> SUPERSCRIPT ONE
+    u'\xfb'    #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xf9'    #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xff'    #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\\'      #  0xE0 -> REVERSE SOLIDUS
+    u'\xf7'    #  0xE1 -> DIVISION SIGN
+    u'S'       #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'       #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'       #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'       #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'       #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'       #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'       #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'       #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'    #  0xEA -> SUPERSCRIPT TWO
+    u'\xd4'    #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd6'    #  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd2'    #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd5'    #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
+    u'0'       #  0xF0 -> DIGIT ZERO
+    u'1'       #  0xF1 -> DIGIT ONE
+    u'2'       #  0xF2 -> DIGIT TWO
+    u'3'       #  0xF3 -> DIGIT THREE
+    u'4'       #  0xF4 -> DIGIT FOUR
+    u'5'       #  0xF5 -> DIGIT FIVE
+    u'6'       #  0xF6 -> DIGIT SIX
+    u'7'       #  0xF7 -> DIGIT SEVEN
+    u'8'       #  0xF8 -> DIGIT EIGHT
+    u'9'       #  0xF9 -> DIGIT NINE
+    u'\xb3'    #  0xFA -> SUPERSCRIPT THREE
+    u'\xdb'    #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xd9'    #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\x9f'    #  0xFF -> CONTROL
 )
 
 ### Encoding Map
@@ -298,97 +298,97 @@ encoding_map = {
     0x0002: 0x02,      #  START OF TEXT
     0x0003: 0x03,      #  END OF TEXT
     0x0004: 0x37,      #  END OF TRANSMISSION
-    0x0005: 0x2d,      #  ENQUIRY
-    0x0006: 0x2e,      #  ACKNOWLEDGE
-    0x0007: 0x2f,      #  BELL
+    0x0005: 0x2D,      #  ENQUIRY
+    0x0006: 0x2E,      #  ACKNOWLEDGE
+    0x0007: 0x2F,      #  BELL
     0x0008: 0x16,      #  BACKSPACE
     0x0009: 0x05,      #  HORIZONTAL TABULATION
-    0x000a: 0x25,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x25,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
     0x0013: 0x13,      #  DEVICE CONTROL THREE
-    0x0014: 0x3c,      #  DEVICE CONTROL FOUR
-    0x0015: 0x3d,      #  NEGATIVE ACKNOWLEDGE
+    0x0014: 0x3C,      #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,      #  NEGATIVE ACKNOWLEDGE
     0x0016: 0x32,      #  SYNCHRONOUS IDLE
     0x0017: 0x26,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x3f,      #  SUBSTITUTE
-    0x001b: 0x27,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x3F,      #  SUBSTITUTE
+    0x001B: 0x27,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x40,      #  SPACE
-    0x0021: 0x5a,      #  EXCLAMATION MARK
-    0x0022: 0x7f,      #  QUOTATION MARK
-    0x0023: 0x7b,      #  NUMBER SIGN
-    0x0024: 0x5b,      #  DOLLAR SIGN
-    0x0025: 0x6c,      #  PERCENT SIGN
+    0x0021: 0x5A,      #  EXCLAMATION MARK
+    0x0022: 0x7F,      #  QUOTATION MARK
+    0x0023: 0x7B,      #  NUMBER SIGN
+    0x0024: 0x5B,      #  DOLLAR SIGN
+    0x0025: 0x6C,      #  PERCENT SIGN
     0x0026: 0x50,      #  AMPERSAND
-    0x0027: 0x7d,      #  APOSTROPHE
-    0x0028: 0x4d,      #  LEFT PARENTHESIS
-    0x0029: 0x5d,      #  RIGHT PARENTHESIS
-    0x002a: 0x5c,      #  ASTERISK
-    0x002b: 0x4e,      #  PLUS SIGN
-    0x002c: 0x6b,      #  COMMA
-    0x002d: 0x60,      #  HYPHEN-MINUS
-    0x002e: 0x4b,      #  FULL STOP
-    0x002f: 0x61,      #  SOLIDUS
-    0x0030: 0xf0,      #  DIGIT ZERO
-    0x0031: 0xf1,      #  DIGIT ONE
-    0x0032: 0xf2,      #  DIGIT TWO
-    0x0033: 0xf3,      #  DIGIT THREE
-    0x0034: 0xf4,      #  DIGIT FOUR
-    0x0035: 0xf5,      #  DIGIT FIVE
-    0x0036: 0xf6,      #  DIGIT SIX
-    0x0037: 0xf7,      #  DIGIT SEVEN
-    0x0038: 0xf8,      #  DIGIT EIGHT
-    0x0039: 0xf9,      #  DIGIT NINE
-    0x003a: 0x7a,      #  COLON
-    0x003b: 0x5e,      #  SEMICOLON
-    0x003c: 0x4c,      #  LESS-THAN SIGN
-    0x003d: 0x7e,      #  EQUALS SIGN
-    0x003e: 0x6e,      #  GREATER-THAN SIGN
-    0x003f: 0x6f,      #  QUESTION MARK
-    0x0040: 0x7c,      #  COMMERCIAL AT
-    0x0041: 0xc1,      #  LATIN CAPITAL LETTER A
-    0x0042: 0xc2,      #  LATIN CAPITAL LETTER B
-    0x0043: 0xc3,      #  LATIN CAPITAL LETTER C
-    0x0044: 0xc4,      #  LATIN CAPITAL LETTER D
-    0x0045: 0xc5,      #  LATIN CAPITAL LETTER E
-    0x0046: 0xc6,      #  LATIN CAPITAL LETTER F
-    0x0047: 0xc7,      #  LATIN CAPITAL LETTER G
-    0x0048: 0xc8,      #  LATIN CAPITAL LETTER H
-    0x0049: 0xc9,      #  LATIN CAPITAL LETTER I
-    0x004a: 0xd1,      #  LATIN CAPITAL LETTER J
-    0x004b: 0xd2,      #  LATIN CAPITAL LETTER K
-    0x004c: 0xd3,      #  LATIN CAPITAL LETTER L
-    0x004d: 0xd4,      #  LATIN CAPITAL LETTER M
-    0x004e: 0xd5,      #  LATIN CAPITAL LETTER N
-    0x004f: 0xd6,      #  LATIN CAPITAL LETTER O
-    0x0050: 0xd7,      #  LATIN CAPITAL LETTER P
-    0x0051: 0xd8,      #  LATIN CAPITAL LETTER Q
-    0x0052: 0xd9,      #  LATIN CAPITAL LETTER R
-    0x0053: 0xe2,      #  LATIN CAPITAL LETTER S
-    0x0054: 0xe3,      #  LATIN CAPITAL LETTER T
-    0x0055: 0xe4,      #  LATIN CAPITAL LETTER U
-    0x0056: 0xe5,      #  LATIN CAPITAL LETTER V
-    0x0057: 0xe6,      #  LATIN CAPITAL LETTER W
-    0x0058: 0xe7,      #  LATIN CAPITAL LETTER X
-    0x0059: 0xe8,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0xe9,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0xba,      #  LEFT SQUARE BRACKET
-    0x005c: 0xe0,      #  REVERSE SOLIDUS
-    0x005d: 0xbb,      #  RIGHT SQUARE BRACKET
-    0x005e: 0xb0,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x6d,      #  LOW LINE
+    0x0027: 0x7D,      #  APOSTROPHE
+    0x0028: 0x4D,      #  LEFT PARENTHESIS
+    0x0029: 0x5D,      #  RIGHT PARENTHESIS
+    0x002A: 0x5C,      #  ASTERISK
+    0x002B: 0x4E,      #  PLUS SIGN
+    0x002C: 0x6B,      #  COMMA
+    0x002D: 0x60,      #  HYPHEN-MINUS
+    0x002E: 0x4B,      #  FULL STOP
+    0x002F: 0x61,      #  SOLIDUS
+    0x0030: 0xF0,      #  DIGIT ZERO
+    0x0031: 0xF1,      #  DIGIT ONE
+    0x0032: 0xF2,      #  DIGIT TWO
+    0x0033: 0xF3,      #  DIGIT THREE
+    0x0034: 0xF4,      #  DIGIT FOUR
+    0x0035: 0xF5,      #  DIGIT FIVE
+    0x0036: 0xF6,      #  DIGIT SIX
+    0x0037: 0xF7,      #  DIGIT SEVEN
+    0x0038: 0xF8,      #  DIGIT EIGHT
+    0x0039: 0xF9,      #  DIGIT NINE
+    0x003A: 0x7A,      #  COLON
+    0x003B: 0x5E,      #  SEMICOLON
+    0x003C: 0x4C,      #  LESS-THAN SIGN
+    0x003D: 0x7E,      #  EQUALS SIGN
+    0x003E: 0x6E,      #  GREATER-THAN SIGN
+    0x003F: 0x6F,      #  QUESTION MARK
+    0x0040: 0x7C,      #  COMMERCIAL AT
+    0x0041: 0xC1,      #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,      #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,      #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,      #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,      #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,      #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,      #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,      #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,      #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,      #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,      #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,      #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,      #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,      #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,      #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,      #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,      #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,      #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,      #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,      #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,      #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,      #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,      #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,      #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,      #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0xBA,      #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,      #  REVERSE SOLIDUS
+    0x005D: 0xBB,      #  RIGHT SQUARE BRACKET
+    0x005E: 0xB0,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,      #  LOW LINE
     0x0060: 0x79,      #  GRAVE ACCENT
     0x0061: 0x81,      #  LATIN SMALL LETTER A
     0x0062: 0x82,      #  LATIN SMALL LETTER B
@@ -399,28 +399,28 @@ encoding_map = {
     0x0067: 0x87,      #  LATIN SMALL LETTER G
     0x0068: 0x88,      #  LATIN SMALL LETTER H
     0x0069: 0x89,      #  LATIN SMALL LETTER I
-    0x006a: 0x91,      #  LATIN SMALL LETTER J
-    0x006b: 0x92,      #  LATIN SMALL LETTER K
-    0x006c: 0x93,      #  LATIN SMALL LETTER L
-    0x006d: 0x94,      #  LATIN SMALL LETTER M
-    0x006e: 0x95,      #  LATIN SMALL LETTER N
-    0x006f: 0x96,      #  LATIN SMALL LETTER O
+    0x006A: 0x91,      #  LATIN SMALL LETTER J
+    0x006B: 0x92,      #  LATIN SMALL LETTER K
+    0x006C: 0x93,      #  LATIN SMALL LETTER L
+    0x006D: 0x94,      #  LATIN SMALL LETTER M
+    0x006E: 0x95,      #  LATIN SMALL LETTER N
+    0x006F: 0x96,      #  LATIN SMALL LETTER O
     0x0070: 0x97,      #  LATIN SMALL LETTER P
     0x0071: 0x98,      #  LATIN SMALL LETTER Q
     0x0072: 0x99,      #  LATIN SMALL LETTER R
-    0x0073: 0xa2,      #  LATIN SMALL LETTER S
-    0x0074: 0xa3,      #  LATIN SMALL LETTER T
-    0x0075: 0xa4,      #  LATIN SMALL LETTER U
-    0x0076: 0xa5,      #  LATIN SMALL LETTER V
-    0x0077: 0xa6,      #  LATIN SMALL LETTER W
-    0x0078: 0xa7,      #  LATIN SMALL LETTER X
-    0x0079: 0xa8,      #  LATIN SMALL LETTER Y
-    0x007a: 0xa9,      #  LATIN SMALL LETTER Z
-    0x007b: 0xc0,      #  LEFT CURLY BRACKET
-    0x007c: 0x4f,      #  VERTICAL LINE
-    0x007d: 0xd0,      #  RIGHT CURLY BRACKET
-    0x007e: 0xa1,      #  TILDE
-    0x007f: 0x07,      #  DELETE
+    0x0073: 0xA2,      #  LATIN SMALL LETTER S
+    0x0074: 0xA3,      #  LATIN SMALL LETTER T
+    0x0075: 0xA4,      #  LATIN SMALL LETTER U
+    0x0076: 0xA5,      #  LATIN SMALL LETTER V
+    0x0077: 0xA6,      #  LATIN SMALL LETTER W
+    0x0078: 0xA7,      #  LATIN SMALL LETTER X
+    0x0079: 0xA8,      #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,      #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,      #  LEFT CURLY BRACKET
+    0x007C: 0x4F,      #  VERTICAL LINE
+    0x007D: 0xD0,      #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,      #  TILDE
+    0x007F: 0x07,      #  DELETE
     0x0080: 0x20,      #  CONTROL
     0x0081: 0x21,      #  CONTROL
     0x0082: 0x22,      #  CONTROL
@@ -431,15 +431,15 @@ encoding_map = {
     0x0087: 0x17,      #  CONTROL
     0x0088: 0x28,      #  CONTROL
     0x0089: 0x29,      #  CONTROL
-    0x008a: 0x2a,      #  CONTROL
-    0x008b: 0x2b,      #  CONTROL
-    0x008c: 0x2c,      #  CONTROL
-    0x008d: 0x09,      #  CONTROL
-    0x008e: 0x0a,      #  CONTROL
-    0x008f: 0x1b,      #  CONTROL
+    0x008A: 0x2A,      #  CONTROL
+    0x008B: 0x2B,      #  CONTROL
+    0x008C: 0x2C,      #  CONTROL
+    0x008D: 0x09,      #  CONTROL
+    0x008E: 0x0A,      #  CONTROL
+    0x008F: 0x1B,      #  CONTROL
     0x0090: 0x30,      #  CONTROL
     0x0091: 0x31,      #  CONTROL
-    0x0092: 0x1a,      #  CONTROL
+    0x0092: 0x1A,      #  CONTROL
     0x0093: 0x33,      #  CONTROL
     0x0094: 0x34,      #  CONTROL
     0x0095: 0x35,      #  CONTROL
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x08,      #  CONTROL
     0x0098: 0x38,      #  CONTROL
     0x0099: 0x39,      #  CONTROL
-    0x009a: 0x3a,      #  CONTROL
-    0x009b: 0x3b,      #  CONTROL
-    0x009c: 0x04,      #  CONTROL
-    0x009d: 0x14,      #  CONTROL
-    0x009e: 0x3e,      #  CONTROL
-    0x009f: 0xff,      #  CONTROL
-    0x00a0: 0x41,      #  NO-BREAK SPACE
-    0x00a1: 0xaa,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0x4a,      #  CENT SIGN
-    0x00a3: 0xb1,      #  POUND SIGN
-    0x00a4: 0x9f,      #  CURRENCY SIGN
-    0x00a5: 0xb2,      #  YEN SIGN
-    0x00a6: 0x6a,      #  BROKEN BAR
-    0x00a7: 0xb5,      #  SECTION SIGN
-    0x00a8: 0xbd,      #  DIAERESIS
-    0x00a9: 0xb4,      #  COPYRIGHT SIGN
-    0x00aa: 0x9a,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x8a,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x5f,      #  NOT SIGN
-    0x00ad: 0xca,      #  SOFT HYPHEN
-    0x00ae: 0xaf,      #  REGISTERED SIGN
-    0x00af: 0xbc,      #  MACRON
-    0x00b0: 0x90,      #  DEGREE SIGN
-    0x00b1: 0x8f,      #  PLUS-MINUS SIGN
-    0x00b2: 0xea,      #  SUPERSCRIPT TWO
-    0x00b3: 0xfa,      #  SUPERSCRIPT THREE
-    0x00b4: 0xbe,      #  ACUTE ACCENT
-    0x00b5: 0xa0,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb3,      #  MIDDLE DOT
-    0x00b8: 0x9d,      #  CEDILLA
-    0x00b9: 0xda,      #  SUPERSCRIPT ONE
-    0x00ba: 0x9b,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x8b,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xb7,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xb8,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xb9,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xab,      #  INVERTED QUESTION MARK
-    0x00c0: 0x64,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x65,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x62,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x66,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x63,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x67,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x9e,      #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x68,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x74,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x71,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x72,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x73,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0x78,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x75,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x76,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x77,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0xac,      #  LATIN CAPITAL LETTER ETH (ICELANDIC)
-    0x00d1: 0x69,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xed,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xeb,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xef,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xec,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xbf,      #  MULTIPLICATION SIGN
-    0x00d8: 0x80,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xfd,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xfe,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xfb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xfc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xad,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0xae,      #  LATIN CAPITAL LETTER THORN (ICELANDIC)
-    0x00df: 0x59,      #  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e0: 0x44,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x45,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x42,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x46,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x43,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x47,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x9c,      #  LATIN SMALL LIGATURE AE
-    0x00e7: 0x48,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x54,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x51,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x52,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x53,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x58,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x55,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x56,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x57,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0x8c,      #  LATIN SMALL LETTER ETH (ICELANDIC)
-    0x00f1: 0x49,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xcd,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xce,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xcb,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xcf,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xcc,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xe1,      #  DIVISION SIGN
-    0x00f8: 0x70,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xdd,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xde,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xdb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xdc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x8d,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0x8e,      #  LATIN SMALL LETTER THORN (ICELANDIC)
-    0x00ff: 0xdf,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-}
\ No newline at end of file
+    0x009A: 0x3A,      #  CONTROL
+    0x009B: 0x3B,      #  CONTROL
+    0x009C: 0x04,      #  CONTROL
+    0x009D: 0x14,      #  CONTROL
+    0x009E: 0x3E,      #  CONTROL
+    0x009F: 0xFF,      #  CONTROL
+    0x00A0: 0x41,      #  NO-BREAK SPACE
+    0x00A1: 0xAA,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0x4A,      #  CENT SIGN
+    0x00A3: 0xB1,      #  POUND SIGN
+    0x00A4: 0x9F,      #  CURRENCY SIGN
+    0x00A5: 0xB2,      #  YEN SIGN
+    0x00A6: 0x6A,      #  BROKEN BAR
+    0x00A7: 0xB5,      #  SECTION SIGN
+    0x00A8: 0xBD,      #  DIAERESIS
+    0x00A9: 0xB4,      #  COPYRIGHT SIGN
+    0x00AA: 0x9A,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0x8A,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0x5F,      #  NOT SIGN
+    0x00AD: 0xCA,      #  SOFT HYPHEN
+    0x00AE: 0xAF,      #  REGISTERED SIGN
+    0x00AF: 0xBC,      #  MACRON
+    0x00B0: 0x90,      #  DEGREE SIGN
+    0x00B1: 0x8F,      #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,      #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,      #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,      #  ACUTE ACCENT
+    0x00B5: 0xA0,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB3,      #  MIDDLE DOT
+    0x00B8: 0x9D,      #  CEDILLA
+    0x00B9: 0xDA,      #  SUPERSCRIPT ONE
+    0x00BA: 0x9B,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0x8B,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xAB,      #  INVERTED QUESTION MARK
+    0x00C0: 0x64,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0x65,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0x62,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0x66,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x63,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x67,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0x9E,      #  LATIN CAPITAL LIGATURE AE
+    0x00C7: 0x68,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0x74,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x71,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0x72,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0x73,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0x78,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0x75,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0x76,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0x77,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xAC,      #  LATIN CAPITAL LETTER ETH (ICELANDIC)
+    0x00D1: 0x69,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xED,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEB,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xEF,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xEC,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xBF,      #  MULTIPLICATION SIGN
+    0x00D8: 0x80,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xFD,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xFE,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xFB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xFC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xAD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xAE,      #  LATIN CAPITAL LETTER THORN (ICELANDIC)
+    0x00DF: 0x59,      #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00E0: 0x44,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x45,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x42,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x46,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x43,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x47,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0x9C,      #  LATIN SMALL LIGATURE AE
+    0x00E7: 0x48,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x54,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x51,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x52,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x53,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x58,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x55,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x56,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x57,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0x8C,      #  LATIN SMALL LETTER ETH (ICELANDIC)
+    0x00F1: 0x49,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xCD,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xCE,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xCB,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xCF,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xCC,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xE1,      #  DIVISION SIGN
+    0x00F8: 0x70,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xDD,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xDE,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xDB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xDC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0x8D,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0x8E,      #  LATIN SMALL LETTER THORN (ICELANDIC)
+    0x00FF: 0xDF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+}
+
index ca10c54849a315183bba58e93a59522e0d92ab5d..e5fb0b60181e9bd51c46dcbf8478e440d23c4104 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u06f0'  #  0xa1 -> EXTENDED ARABIC-INDIC DIGIT ZERO
-    u'\u06f1'  #  0xa2 -> EXTENDED ARABIC-INDIC DIGIT ONE
-    u'\u06f2'  #  0xa3 -> EXTENDED ARABIC-INDIC DIGIT TWO
-    u'\u06f3'  #  0xa4 -> EXTENDED ARABIC-INDIC DIGIT THREE
-    u'\u06f4'  #  0xa5 -> EXTENDED ARABIC-INDIC DIGIT FOUR
-    u'\u06f5'  #  0xa6 -> EXTENDED ARABIC-INDIC DIGIT FIVE
-    u'\u06f6'  #  0xa7 -> EXTENDED ARABIC-INDIC DIGIT SIX
-    u'\u06f7'  #  0xa8 -> EXTENDED ARABIC-INDIC DIGIT SEVEN
-    u'\u06f8'  #  0xa9 -> EXTENDED ARABIC-INDIC DIGIT EIGHT
-    u'\u06f9'  #  0xaa -> EXTENDED ARABIC-INDIC DIGIT NINE
-    u'\u060c'  #  0xab -> ARABIC COMMA
-    u'\u061b'  #  0xac -> ARABIC SEMICOLON
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\u061f'  #  0xae -> ARABIC QUESTION MARK
-    u'\ufe81'  #  0xaf -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    u'\ufe8d'  #  0xb0 -> ARABIC LETTER ALEF ISOLATED FORM
-    u'\ufe8e'  #  0xb1 -> ARABIC LETTER ALEF FINAL FORM
-    u'\ufe8e'  #  0xb2 -> ARABIC LETTER ALEF FINAL FORM
-    u'\ufe8f'  #  0xb3 -> ARABIC LETTER BEH ISOLATED FORM
-    u'\ufe91'  #  0xb4 -> ARABIC LETTER BEH INITIAL FORM
-    u'\ufb56'  #  0xb5 -> ARABIC LETTER PEH ISOLATED FORM
-    u'\ufb58'  #  0xb6 -> ARABIC LETTER PEH INITIAL FORM
-    u'\ufe93'  #  0xb7 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    u'\ufe95'  #  0xb8 -> ARABIC LETTER TEH ISOLATED FORM
-    u'\ufe97'  #  0xb9 -> ARABIC LETTER TEH INITIAL FORM
-    u'\ufb66'  #  0xba -> ARABIC LETTER TTEH ISOLATED FORM
-    u'\ufb68'  #  0xbb -> ARABIC LETTER TTEH INITIAL FORM
-    u'\ufe99'  #  0xbc -> ARABIC LETTER THEH ISOLATED FORM
-    u'\ufe9b'  #  0xbd -> ARABIC LETTER THEH INITIAL FORM
-    u'\ufe9d'  #  0xbe -> ARABIC LETTER JEEM ISOLATED FORM
-    u'\ufe9f'  #  0xbf -> ARABIC LETTER JEEM INITIAL FORM
-    u'\ufb7a'  #  0xc0 -> ARABIC LETTER TCHEH ISOLATED FORM
-    u'\ufb7c'  #  0xc1 -> ARABIC LETTER TCHEH INITIAL FORM
-    u'\ufea1'  #  0xc2 -> ARABIC LETTER HAH ISOLATED FORM
-    u'\ufea3'  #  0xc3 -> ARABIC LETTER HAH INITIAL FORM
-    u'\ufea5'  #  0xc4 -> ARABIC LETTER KHAH ISOLATED FORM
-    u'\ufea7'  #  0xc5 -> ARABIC LETTER KHAH INITIAL FORM
-    u'\ufea9'  #  0xc6 -> ARABIC LETTER DAL ISOLATED FORM
-    u'\ufb84'  #  0xc7 -> ARABIC LETTER DAHAL ISOLATED FORMN
-    u'\ufeab'  #  0xc8 -> ARABIC LETTER THAL ISOLATED FORM
-    u'\ufead'  #  0xc9 -> ARABIC LETTER REH ISOLATED FORM
-    u'\ufb8c'  #  0xca -> ARABIC LETTER RREH ISOLATED FORM
-    u'\ufeaf'  #  0xcb -> ARABIC LETTER ZAIN ISOLATED FORM
-    u'\ufb8a'  #  0xcc -> ARABIC LETTER JEH ISOLATED FORM
-    u'\ufeb1'  #  0xcd -> ARABIC LETTER SEEN ISOLATED FORM
-    u'\ufeb3'  #  0xce -> ARABIC LETTER SEEN INITIAL FORM
-    u'\ufeb5'  #  0xcf -> ARABIC LETTER SHEEN ISOLATED FORM
-    u'\ufeb7'  #  0xd0 -> ARABIC LETTER SHEEN INITIAL FORM
-    u'\ufeb9'  #  0xd1 -> ARABIC LETTER SAD ISOLATED FORM
-    u'\ufebb'  #  0xd2 -> ARABIC LETTER SAD INITIAL FORM
-    u'\ufebd'  #  0xd3 -> ARABIC LETTER DAD ISOLATED FORM
-    u'\ufebf'  #  0xd4 -> ARABIC LETTER DAD INITIAL FORM
-    u'\ufec1'  #  0xd5 -> ARABIC LETTER TAH ISOLATED FORM
-    u'\ufec5'  #  0xd6 -> ARABIC LETTER ZAH ISOLATED FORM
-    u'\ufec9'  #  0xd7 -> ARABIC LETTER AIN ISOLATED FORM
-    u'\ufeca'  #  0xd8 -> ARABIC LETTER AIN FINAL FORM
-    u'\ufecb'  #  0xd9 -> ARABIC LETTER AIN INITIAL FORM
-    u'\ufecc'  #  0xda -> ARABIC LETTER AIN MEDIAL FORM
-    u'\ufecd'  #  0xdb -> ARABIC LETTER GHAIN ISOLATED FORM
-    u'\ufece'  #  0xdc -> ARABIC LETTER GHAIN FINAL FORM
-    u'\ufecf'  #  0xdd -> ARABIC LETTER GHAIN INITIAL FORM
-    u'\ufed0'  #  0xde -> ARABIC LETTER GHAIN MEDIAL FORM
-    u'\ufed1'  #  0xdf -> ARABIC LETTER FEH ISOLATED FORM
-    u'\ufed3'  #  0xe0 -> ARABIC LETTER FEH INITIAL FORM
-    u'\ufed5'  #  0xe1 -> ARABIC LETTER QAF ISOLATED FORM
-    u'\ufed7'  #  0xe2 -> ARABIC LETTER QAF INITIAL FORM
-    u'\ufed9'  #  0xe3 -> ARABIC LETTER KAF ISOLATED FORM
-    u'\ufedb'  #  0xe4 -> ARABIC LETTER KAF INITIAL FORM
-    u'\ufb92'  #  0xe5 -> ARABIC LETTER GAF ISOLATED FORM
-    u'\ufb94'  #  0xe6 -> ARABIC LETTER GAF INITIAL FORM
-    u'\ufedd'  #  0xe7 -> ARABIC LETTER LAM ISOLATED FORM
-    u'\ufedf'  #  0xe8 -> ARABIC LETTER LAM INITIAL FORM
-    u'\ufee0'  #  0xe9 -> ARABIC LETTER LAM MEDIAL FORM
-    u'\ufee1'  #  0xea -> ARABIC LETTER MEEM ISOLATED FORM
-    u'\ufee3'  #  0xeb -> ARABIC LETTER MEEM INITIAL FORM
-    u'\ufb9e'  #  0xec -> ARABIC LETTER NOON GHUNNA ISOLATED FORM
-    u'\ufee5'  #  0xed -> ARABIC LETTER NOON ISOLATED FORM
-    u'\ufee7'  #  0xee -> ARABIC LETTER NOON INITIAL FORM
-    u'\ufe85'  #  0xef -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufeed'  #  0xf0 -> ARABIC LETTER WAW ISOLATED FORM
-    u'\ufba6'  #  0xf1 -> ARABIC LETTER HEH GOAL ISOLATED FORM
-    u'\ufba8'  #  0xf2 -> ARABIC LETTER HEH GOAL INITIAL FORM
-    u'\ufba9'  #  0xf3 -> ARABIC LETTER HEH GOAL MEDIAL FORM
-    u'\ufbaa'  #  0xf4 -> ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-    u'\ufe80'  #  0xf5 -> ARABIC LETTER HAMZA ISOLATED FORM
-    u'\ufe89'  #  0xf6 -> ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufe8a'  #  0xf7 -> ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-    u'\ufe8b'  #  0xf8 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    u'\ufef1'  #  0xf9 -> ARABIC LETTER YEH ISOLATED FORM
-    u'\ufef2'  #  0xfa -> ARABIC LETTER YEH FINAL FORM
-    u'\ufef3'  #  0xfb -> ARABIC LETTER YEH INITIAL FORM
-    u'\ufbb0'  #  0xfc -> ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufbae'  #  0xfd -> ARABIC LETTER YEH BARREE ISOLATED FORM
-    u'\ufe7c'  #  0xfe -> ARABIC SHADDA ISOLATED FORM
-    u'\ufe7d'  #  0xff -> ARABIC SHADDA MEDIAL FORM
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u06f0'  #  0xA1 -> EXTENDED ARABIC-INDIC DIGIT ZERO
+    u'\u06f1'  #  0xA2 -> EXTENDED ARABIC-INDIC DIGIT ONE
+    u'\u06f2'  #  0xA3 -> EXTENDED ARABIC-INDIC DIGIT TWO
+    u'\u06f3'  #  0xA4 -> EXTENDED ARABIC-INDIC DIGIT THREE
+    u'\u06f4'  #  0xA5 -> EXTENDED ARABIC-INDIC DIGIT FOUR
+    u'\u06f5'  #  0xA6 -> EXTENDED ARABIC-INDIC DIGIT FIVE
+    u'\u06f6'  #  0xA7 -> EXTENDED ARABIC-INDIC DIGIT SIX
+    u'\u06f7'  #  0xA8 -> EXTENDED ARABIC-INDIC DIGIT SEVEN
+    u'\u06f8'  #  0xA9 -> EXTENDED ARABIC-INDIC DIGIT EIGHT
+    u'\u06f9'  #  0xAA -> EXTENDED ARABIC-INDIC DIGIT NINE
+    u'\u060c'  #  0xAB -> ARABIC COMMA
+    u'\u061b'  #  0xAC -> ARABIC SEMICOLON
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\u061f'  #  0xAE -> ARABIC QUESTION MARK
+    u'\ufe81'  #  0xAF -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+    u'\ufe8d'  #  0xB0 -> ARABIC LETTER ALEF ISOLATED FORM
+    u'\ufe8e'  #  0xB1 -> ARABIC LETTER ALEF FINAL FORM
+    u'\ufe8e'  #  0xB2 -> ARABIC LETTER ALEF FINAL FORM
+    u'\ufe8f'  #  0xB3 -> ARABIC LETTER BEH ISOLATED FORM
+    u'\ufe91'  #  0xB4 -> ARABIC LETTER BEH INITIAL FORM
+    u'\ufb56'  #  0xB5 -> ARABIC LETTER PEH ISOLATED FORM
+    u'\ufb58'  #  0xB6 -> ARABIC LETTER PEH INITIAL FORM
+    u'\ufe93'  #  0xB7 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
+    u'\ufe95'  #  0xB8 -> ARABIC LETTER TEH ISOLATED FORM
+    u'\ufe97'  #  0xB9 -> ARABIC LETTER TEH INITIAL FORM
+    u'\ufb66'  #  0xBA -> ARABIC LETTER TTEH ISOLATED FORM
+    u'\ufb68'  #  0xBB -> ARABIC LETTER TTEH INITIAL FORM
+    u'\ufe99'  #  0xBC -> ARABIC LETTER THEH ISOLATED FORM
+    u'\ufe9b'  #  0xBD -> ARABIC LETTER THEH INITIAL FORM
+    u'\ufe9d'  #  0xBE -> ARABIC LETTER JEEM ISOLATED FORM
+    u'\ufe9f'  #  0xBF -> ARABIC LETTER JEEM INITIAL FORM
+    u'\ufb7a'  #  0xC0 -> ARABIC LETTER TCHEH ISOLATED FORM
+    u'\ufb7c'  #  0xC1 -> ARABIC LETTER TCHEH INITIAL FORM
+    u'\ufea1'  #  0xC2 -> ARABIC LETTER HAH ISOLATED FORM
+    u'\ufea3'  #  0xC3 -> ARABIC LETTER HAH INITIAL FORM
+    u'\ufea5'  #  0xC4 -> ARABIC LETTER KHAH ISOLATED FORM
+    u'\ufea7'  #  0xC5 -> ARABIC LETTER KHAH INITIAL FORM
+    u'\ufea9'  #  0xC6 -> ARABIC LETTER DAL ISOLATED FORM
+    u'\ufb84'  #  0xC7 -> ARABIC LETTER DAHAL ISOLATED FORMN
+    u'\ufeab'  #  0xC8 -> ARABIC LETTER THAL ISOLATED FORM
+    u'\ufead'  #  0xC9 -> ARABIC LETTER REH ISOLATED FORM
+    u'\ufb8c'  #  0xCA -> ARABIC LETTER RREH ISOLATED FORM
+    u'\ufeaf'  #  0xCB -> ARABIC LETTER ZAIN ISOLATED FORM
+    u'\ufb8a'  #  0xCC -> ARABIC LETTER JEH ISOLATED FORM
+    u'\ufeb1'  #  0xCD -> ARABIC LETTER SEEN ISOLATED FORM
+    u'\ufeb3'  #  0xCE -> ARABIC LETTER SEEN INITIAL FORM
+    u'\ufeb5'  #  0xCF -> ARABIC LETTER SHEEN ISOLATED FORM
+    u'\ufeb7'  #  0xD0 -> ARABIC LETTER SHEEN INITIAL FORM
+    u'\ufeb9'  #  0xD1 -> ARABIC LETTER SAD ISOLATED FORM
+    u'\ufebb'  #  0xD2 -> ARABIC LETTER SAD INITIAL FORM
+    u'\ufebd'  #  0xD3 -> ARABIC LETTER DAD ISOLATED FORM
+    u'\ufebf'  #  0xD4 -> ARABIC LETTER DAD INITIAL FORM
+    u'\ufec1'  #  0xD5 -> ARABIC LETTER TAH ISOLATED FORM
+    u'\ufec5'  #  0xD6 -> ARABIC LETTER ZAH ISOLATED FORM
+    u'\ufec9'  #  0xD7 -> ARABIC LETTER AIN ISOLATED FORM
+    u'\ufeca'  #  0xD8 -> ARABIC LETTER AIN FINAL FORM
+    u'\ufecb'  #  0xD9 -> ARABIC LETTER AIN INITIAL FORM
+    u'\ufecc'  #  0xDA -> ARABIC LETTER AIN MEDIAL FORM
+    u'\ufecd'  #  0xDB -> ARABIC LETTER GHAIN ISOLATED FORM
+    u'\ufece'  #  0xDC -> ARABIC LETTER GHAIN FINAL FORM
+    u'\ufecf'  #  0xDD -> ARABIC LETTER GHAIN INITIAL FORM
+    u'\ufed0'  #  0xDE -> ARABIC LETTER GHAIN MEDIAL FORM
+    u'\ufed1'  #  0xDF -> ARABIC LETTER FEH ISOLATED FORM
+    u'\ufed3'  #  0xE0 -> ARABIC LETTER FEH INITIAL FORM
+    u'\ufed5'  #  0xE1 -> ARABIC LETTER QAF ISOLATED FORM
+    u'\ufed7'  #  0xE2 -> ARABIC LETTER QAF INITIAL FORM
+    u'\ufed9'  #  0xE3 -> ARABIC LETTER KAF ISOLATED FORM
+    u'\ufedb'  #  0xE4 -> ARABIC LETTER KAF INITIAL FORM
+    u'\ufb92'  #  0xE5 -> ARABIC LETTER GAF ISOLATED FORM
+    u'\ufb94'  #  0xE6 -> ARABIC LETTER GAF INITIAL FORM
+    u'\ufedd'  #  0xE7 -> ARABIC LETTER LAM ISOLATED FORM
+    u'\ufedf'  #  0xE8 -> ARABIC LETTER LAM INITIAL FORM
+    u'\ufee0'  #  0xE9 -> ARABIC LETTER LAM MEDIAL FORM
+    u'\ufee1'  #  0xEA -> ARABIC LETTER MEEM ISOLATED FORM
+    u'\ufee3'  #  0xEB -> ARABIC LETTER MEEM INITIAL FORM
+    u'\ufb9e'  #  0xEC -> ARABIC LETTER NOON GHUNNA ISOLATED FORM
+    u'\ufee5'  #  0xED -> ARABIC LETTER NOON ISOLATED FORM
+    u'\ufee7'  #  0xEE -> ARABIC LETTER NOON INITIAL FORM
+    u'\ufe85'  #  0xEF -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+    u'\ufeed'  #  0xF0 -> ARABIC LETTER WAW ISOLATED FORM
+    u'\ufba6'  #  0xF1 -> ARABIC LETTER HEH GOAL ISOLATED FORM
+    u'\ufba8'  #  0xF2 -> ARABIC LETTER HEH GOAL INITIAL FORM
+    u'\ufba9'  #  0xF3 -> ARABIC LETTER HEH GOAL MEDIAL FORM
+    u'\ufbaa'  #  0xF4 -> ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+    u'\ufe80'  #  0xF5 -> ARABIC LETTER HAMZA ISOLATED FORM
+    u'\ufe89'  #  0xF6 -> ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+    u'\ufe8a'  #  0xF7 -> ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+    u'\ufe8b'  #  0xF8 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+    u'\ufef1'  #  0xF9 -> ARABIC LETTER YEH ISOLATED FORM
+    u'\ufef2'  #  0xFA -> ARABIC LETTER YEH FINAL FORM
+    u'\ufef3'  #  0xFB -> ARABIC LETTER YEH INITIAL FORM
+    u'\ufbb0'  #  0xFC -> ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+    u'\ufbae'  #  0xFD -> ARABIC LETTER YEH BARREE ISOLATED FORM
+    u'\ufe7c'  #  0xFE -> ARABIC SHADDA ISOLATED FORM
+    u'\ufe7d'  #  0xFF -> ARABIC SHADDA MEDIAL FORM
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,105 +447,106 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x060c: 0xab,      #  ARABIC COMMA
-    0x061b: 0xac,      #  ARABIC SEMICOLON
-    0x061f: 0xae,      #  ARABIC QUESTION MARK
-    0x06f0: 0xa1,      #  EXTENDED ARABIC-INDIC DIGIT ZERO
-    0x06f1: 0xa2,      #  EXTENDED ARABIC-INDIC DIGIT ONE
-    0x06f2: 0xa3,      #  EXTENDED ARABIC-INDIC DIGIT TWO
-    0x06f3: 0xa4,      #  EXTENDED ARABIC-INDIC DIGIT THREE
-    0x06f4: 0xa5,      #  EXTENDED ARABIC-INDIC DIGIT FOUR
-    0x06f5: 0xa6,      #  EXTENDED ARABIC-INDIC DIGIT FIVE
-    0x06f6: 0xa7,      #  EXTENDED ARABIC-INDIC DIGIT SIX
-    0x06f7: 0xa8,      #  EXTENDED ARABIC-INDIC DIGIT SEVEN
-    0x06f8: 0xa9,      #  EXTENDED ARABIC-INDIC DIGIT EIGHT
-    0x06f9: 0xaa,      #  EXTENDED ARABIC-INDIC DIGIT NINE
-    0xfb56: 0xb5,      #  ARABIC LETTER PEH ISOLATED FORM
-    0xfb58: 0xb6,      #  ARABIC LETTER PEH INITIAL FORM
-    0xfb66: 0xba,      #  ARABIC LETTER TTEH ISOLATED FORM
-    0xfb68: 0xbb,      #  ARABIC LETTER TTEH INITIAL FORM
-    0xfb7a: 0xc0,      #  ARABIC LETTER TCHEH ISOLATED FORM
-    0xfb7c: 0xc1,      #  ARABIC LETTER TCHEH INITIAL FORM
-    0xfb84: 0xc7,      #  ARABIC LETTER DAHAL ISOLATED FORMN
-    0xfb8a: 0xcc,      #  ARABIC LETTER JEH ISOLATED FORM
-    0xfb8c: 0xca,      #  ARABIC LETTER RREH ISOLATED FORM
-    0xfb92: 0xe5,      #  ARABIC LETTER GAF ISOLATED FORM
-    0xfb94: 0xe6,      #  ARABIC LETTER GAF INITIAL FORM
-    0xfb9e: 0xec,      #  ARABIC LETTER NOON GHUNNA ISOLATED FORM
-    0xfba6: 0xf1,      #  ARABIC LETTER HEH GOAL ISOLATED FORM
-    0xfba8: 0xf2,      #  ARABIC LETTER HEH GOAL INITIAL FORM
-    0xfba9: 0xf3,      #  ARABIC LETTER HEH GOAL MEDIAL FORM
-    0xfbaa: 0xf4,      #  ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-    0xfbae: 0xfd,      #  ARABIC LETTER YEH BARREE ISOLATED FORM
-    0xfbb0: 0xfc,      #  ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-    0xfe7c: 0xfe,      #  ARABIC SHADDA ISOLATED FORM
-    0xfe7d: 0xff,      #  ARABIC SHADDA MEDIAL FORM
-    0xfe80: 0xf5,      #  ARABIC LETTER HAMZA ISOLATED FORM
-    0xfe81: 0xaf,      #  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    0xfe85: 0xef,      #  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    0xfe89: 0xf6,      #  ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-    0xfe8a: 0xf7,      #  ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-    0xfe8b: 0xf8,      #  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    0xfe8d: 0xb0,      #  ARABIC LETTER ALEF ISOLATED FORM
-    0xfe8e: None,      #  ARABIC LETTER ALEF FINAL FORM
-    0xfe8f: 0xb3,      #  ARABIC LETTER BEH ISOLATED FORM
-    0xfe91: 0xb4,      #  ARABIC LETTER BEH INITIAL FORM
-    0xfe93: 0xb7,      #  ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    0xfe95: 0xb8,      #  ARABIC LETTER TEH ISOLATED FORM
-    0xfe97: 0xb9,      #  ARABIC LETTER TEH INITIAL FORM
-    0xfe99: 0xbc,      #  ARABIC LETTER THEH ISOLATED FORM
-    0xfe9b: 0xbd,      #  ARABIC LETTER THEH INITIAL FORM
-    0xfe9d: 0xbe,      #  ARABIC LETTER JEEM ISOLATED FORM
-    0xfe9f: 0xbf,      #  ARABIC LETTER JEEM INITIAL FORM
-    0xfea1: 0xc2,      #  ARABIC LETTER HAH ISOLATED FORM
-    0xfea3: 0xc3,      #  ARABIC LETTER HAH INITIAL FORM
-    0xfea5: 0xc4,      #  ARABIC LETTER KHAH ISOLATED FORM
-    0xfea7: 0xc5,      #  ARABIC LETTER KHAH INITIAL FORM
-    0xfea9: 0xc6,      #  ARABIC LETTER DAL ISOLATED FORM
-    0xfeab: 0xc8,      #  ARABIC LETTER THAL ISOLATED FORM
-    0xfead: 0xc9,      #  ARABIC LETTER REH ISOLATED FORM
-    0xfeaf: 0xcb,      #  ARABIC LETTER ZAIN ISOLATED FORM
-    0xfeb1: 0xcd,      #  ARABIC LETTER SEEN ISOLATED FORM
-    0xfeb3: 0xce,      #  ARABIC LETTER SEEN INITIAL FORM
-    0xfeb5: 0xcf,      #  ARABIC LETTER SHEEN ISOLATED FORM
-    0xfeb7: 0xd0,      #  ARABIC LETTER SHEEN INITIAL FORM
-    0xfeb9: 0xd1,      #  ARABIC LETTER SAD ISOLATED FORM
-    0xfebb: 0xd2,      #  ARABIC LETTER SAD INITIAL FORM
-    0xfebd: 0xd3,      #  ARABIC LETTER DAD ISOLATED FORM
-    0xfebf: 0xd4,      #  ARABIC LETTER DAD INITIAL FORM
-    0xfec1: 0xd5,      #  ARABIC LETTER TAH ISOLATED FORM
-    0xfec5: 0xd6,      #  ARABIC LETTER ZAH ISOLATED FORM
-    0xfec9: 0xd7,      #  ARABIC LETTER AIN ISOLATED FORM
-    0xfeca: 0xd8,      #  ARABIC LETTER AIN FINAL FORM
-    0xfecb: 0xd9,      #  ARABIC LETTER AIN INITIAL FORM
-    0xfecc: 0xda,      #  ARABIC LETTER AIN MEDIAL FORM
-    0xfecd: 0xdb,      #  ARABIC LETTER GHAIN ISOLATED FORM
-    0xfece: 0xdc,      #  ARABIC LETTER GHAIN FINAL FORM
-    0xfecf: 0xdd,      #  ARABIC LETTER GHAIN INITIAL FORM
-    0xfed0: 0xde,      #  ARABIC LETTER GHAIN MEDIAL FORM
-    0xfed1: 0xdf,      #  ARABIC LETTER FEH ISOLATED FORM
-    0xfed3: 0xe0,      #  ARABIC LETTER FEH INITIAL FORM
-    0xfed5: 0xe1,      #  ARABIC LETTER QAF ISOLATED FORM
-    0xfed7: 0xe2,      #  ARABIC LETTER QAF INITIAL FORM
-    0xfed9: 0xe3,      #  ARABIC LETTER KAF ISOLATED FORM
-    0xfedb: 0xe4,      #  ARABIC LETTER KAF INITIAL FORM
-    0xfedd: 0xe7,      #  ARABIC LETTER LAM ISOLATED FORM
-    0xfedf: 0xe8,      #  ARABIC LETTER LAM INITIAL FORM
-    0xfee0: 0xe9,      #  ARABIC LETTER LAM MEDIAL FORM
-    0xfee1: 0xea,      #  ARABIC LETTER MEEM ISOLATED FORM
-    0xfee3: 0xeb,      #  ARABIC LETTER MEEM INITIAL FORM
-    0xfee5: 0xed,      #  ARABIC LETTER NOON ISOLATED FORM
-    0xfee7: 0xee,      #  ARABIC LETTER NOON INITIAL FORM
-    0xfeed: 0xf0,      #  ARABIC LETTER WAW ISOLATED FORM
-    0xfef1: 0xf9,      #  ARABIC LETTER YEH ISOLATED FORM
-    0xfef2: 0xfa,      #  ARABIC LETTER YEH FINAL FORM
-    0xfef3: 0xfb,      #  ARABIC LETTER YEH INITIAL FORM
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x060C: 0xAB,      #  ARABIC COMMA
+    0x061B: 0xAC,      #  ARABIC SEMICOLON
+    0x061F: 0xAE,      #  ARABIC QUESTION MARK
+    0x06F0: 0xA1,      #  EXTENDED ARABIC-INDIC DIGIT ZERO
+    0x06F1: 0xA2,      #  EXTENDED ARABIC-INDIC DIGIT ONE
+    0x06F2: 0xA3,      #  EXTENDED ARABIC-INDIC DIGIT TWO
+    0x06F3: 0xA4,      #  EXTENDED ARABIC-INDIC DIGIT THREE
+    0x06F4: 0xA5,      #  EXTENDED ARABIC-INDIC DIGIT FOUR
+    0x06F5: 0xA6,      #  EXTENDED ARABIC-INDIC DIGIT FIVE
+    0x06F6: 0xA7,      #  EXTENDED ARABIC-INDIC DIGIT SIX
+    0x06F7: 0xA8,      #  EXTENDED ARABIC-INDIC DIGIT SEVEN
+    0x06F8: 0xA9,      #  EXTENDED ARABIC-INDIC DIGIT EIGHT
+    0x06F9: 0xAA,      #  EXTENDED ARABIC-INDIC DIGIT NINE
+    0xFB56: 0xB5,      #  ARABIC LETTER PEH ISOLATED FORM
+    0xFB58: 0xB6,      #  ARABIC LETTER PEH INITIAL FORM
+    0xFB66: 0xBA,      #  ARABIC LETTER TTEH ISOLATED FORM
+    0xFB68: 0xBB,      #  ARABIC LETTER TTEH INITIAL FORM
+    0xFB7A: 0xC0,      #  ARABIC LETTER TCHEH ISOLATED FORM
+    0xFB7C: 0xC1,      #  ARABIC LETTER TCHEH INITIAL FORM
+    0xFB84: 0xC7,      #  ARABIC LETTER DAHAL ISOLATED FORMN
+    0xFB8A: 0xCC,      #  ARABIC LETTER JEH ISOLATED FORM
+    0xFB8C: 0xCA,      #  ARABIC LETTER RREH ISOLATED FORM
+    0xFB92: 0xE5,      #  ARABIC LETTER GAF ISOLATED FORM
+    0xFB94: 0xE6,      #  ARABIC LETTER GAF INITIAL FORM
+    0xFB9E: 0xEC,      #  ARABIC LETTER NOON GHUNNA ISOLATED FORM
+    0xFBA6: 0xF1,      #  ARABIC LETTER HEH GOAL ISOLATED FORM
+    0xFBA8: 0xF2,      #  ARABIC LETTER HEH GOAL INITIAL FORM
+    0xFBA9: 0xF3,      #  ARABIC LETTER HEH GOAL MEDIAL FORM
+    0xFBAA: 0xF4,      #  ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+    0xFBAE: 0xFD,      #  ARABIC LETTER YEH BARREE ISOLATED FORM
+    0xFBB0: 0xFC,      #  ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+    0xFE7C: 0xFE,      #  ARABIC SHADDA ISOLATED FORM
+    0xFE7D: 0xFF,      #  ARABIC SHADDA MEDIAL FORM
+    0xFE80: 0xF5,      #  ARABIC LETTER HAMZA ISOLATED FORM
+    0xFE81: 0xAF,      #  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+    0xFE85: 0xEF,      #  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+    0xFE89: 0xF6,      #  ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+    0xFE8A: 0xF7,      #  ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+    0xFE8B: 0xF8,      #  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+    0xFE8D: 0xB0,      #  ARABIC LETTER ALEF ISOLATED FORM
+    0xFE8E: None,      #  ARABIC LETTER ALEF FINAL FORM
+    0xFE8F: 0xB3,      #  ARABIC LETTER BEH ISOLATED FORM
+    0xFE91: 0xB4,      #  ARABIC LETTER BEH INITIAL FORM
+    0xFE93: 0xB7,      #  ARABIC LETTER TEH MARBUTA ISOLATED FORM
+    0xFE95: 0xB8,      #  ARABIC LETTER TEH ISOLATED FORM
+    0xFE97: 0xB9,      #  ARABIC LETTER TEH INITIAL FORM
+    0xFE99: 0xBC,      #  ARABIC LETTER THEH ISOLATED FORM
+    0xFE9B: 0xBD,      #  ARABIC LETTER THEH INITIAL FORM
+    0xFE9D: 0xBE,      #  ARABIC LETTER JEEM ISOLATED FORM
+    0xFE9F: 0xBF,      #  ARABIC LETTER JEEM INITIAL FORM
+    0xFEA1: 0xC2,      #  ARABIC LETTER HAH ISOLATED FORM
+    0xFEA3: 0xC3,      #  ARABIC LETTER HAH INITIAL FORM
+    0xFEA5: 0xC4,      #  ARABIC LETTER KHAH ISOLATED FORM
+    0xFEA7: 0xC5,      #  ARABIC LETTER KHAH INITIAL FORM
+    0xFEA9: 0xC6,      #  ARABIC LETTER DAL ISOLATED FORM
+    0xFEAB: 0xC8,      #  ARABIC LETTER THAL ISOLATED FORM
+    0xFEAD: 0xC9,      #  ARABIC LETTER REH ISOLATED FORM
+    0xFEAF: 0xCB,      #  ARABIC LETTER ZAIN ISOLATED FORM
+    0xFEB1: 0xCD,      #  ARABIC LETTER SEEN ISOLATED FORM
+    0xFEB3: 0xCE,      #  ARABIC LETTER SEEN INITIAL FORM
+    0xFEB5: 0xCF,      #  ARABIC LETTER SHEEN ISOLATED FORM
+    0xFEB7: 0xD0,      #  ARABIC LETTER SHEEN INITIAL FORM
+    0xFEB9: 0xD1,      #  ARABIC LETTER SAD ISOLATED FORM
+    0xFEBB: 0xD2,      #  ARABIC LETTER SAD INITIAL FORM
+    0xFEBD: 0xD3,      #  ARABIC LETTER DAD ISOLATED FORM
+    0xFEBF: 0xD4,      #  ARABIC LETTER DAD INITIAL FORM
+    0xFEC1: 0xD5,      #  ARABIC LETTER TAH ISOLATED FORM
+    0xFEC5: 0xD6,      #  ARABIC LETTER ZAH ISOLATED FORM
+    0xFEC9: 0xD7,      #  ARABIC LETTER AIN ISOLATED FORM
+    0xFECA: 0xD8,      #  ARABIC LETTER AIN FINAL FORM
+    0xFECB: 0xD9,      #  ARABIC LETTER AIN INITIAL FORM
+    0xFECC: 0xDA,      #  ARABIC LETTER AIN MEDIAL FORM
+    0xFECD: 0xDB,      #  ARABIC LETTER GHAIN ISOLATED FORM
+    0xFECE: 0xDC,      #  ARABIC LETTER GHAIN FINAL FORM
+    0xFECF: 0xDD,      #  ARABIC LETTER GHAIN INITIAL FORM
+    0xFED0: 0xDE,      #  ARABIC LETTER GHAIN MEDIAL FORM
+    0xFED1: 0xDF,      #  ARABIC LETTER FEH ISOLATED FORM
+    0xFED3: 0xE0,      #  ARABIC LETTER FEH INITIAL FORM
+    0xFED5: 0xE1,      #  ARABIC LETTER QAF ISOLATED FORM
+    0xFED7: 0xE2,      #  ARABIC LETTER QAF INITIAL FORM
+    0xFED9: 0xE3,      #  ARABIC LETTER KAF ISOLATED FORM
+    0xFEDB: 0xE4,      #  ARABIC LETTER KAF INITIAL FORM
+    0xFEDD: 0xE7,      #  ARABIC LETTER LAM ISOLATED FORM
+    0xFEDF: 0xE8,      #  ARABIC LETTER LAM INITIAL FORM
+    0xFEE0: 0xE9,      #  ARABIC LETTER LAM MEDIAL FORM
+    0xFEE1: 0xEA,      #  ARABIC LETTER MEEM ISOLATED FORM
+    0xFEE3: 0xEB,      #  ARABIC LETTER MEEM INITIAL FORM
+    0xFEE5: 0xED,      #  ARABIC LETTER NOON ISOLATED FORM
+    0xFEE7: 0xEE,      #  ARABIC LETTER NOON INITIAL FORM
+    0xFEED: 0xF0,      #  ARABIC LETTER WAW ISOLATED FORM
+    0xFEF1: 0xF9,      #  ARABIC LETTER YEH ISOLATED FORM
+    0xFEF2: 0xFA,      #  ARABIC LETTER YEH FINAL FORM
+    0xFEF3: 0xFB,      #  ARABIC LETTER YEH INITIAL FORM
+}
+
index 463008dc4b9ba0d652a020fd61c1f9e8f8ece966..83e6429bf4c94271b91c052366d614f3b3f16931 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x7f'    #  0x07 -> DELETE
     u'\x97'    #  0x08 -> CONTROL
     u'\x8d'    #  0x09 -> CONTROL
-    u'\x8e'    #  0x0a -> CONTROL
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\x8e'    #  0x0A -> CONTROL
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x87'    #  0x17 -> CONTROL
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x92'    #  0x1a -> CONTROL
-    u'\x8f'    #  0x1b -> CONTROL
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x92'    #  0x1A -> CONTROL
+    u'\x8f'    #  0x1B -> CONTROL
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u'\x80'    #  0x20 -> CONTROL
     u'\x81'    #  0x21 -> CONTROL
     u'\x82'    #  0x22 -> CONTROL
@@ -74,12 +74,12 @@ decoding_table = (
     u'\x1b'    #  0x27 -> ESCAPE
     u'\x88'    #  0x28 -> CONTROL
     u'\x89'    #  0x29 -> CONTROL
-    u'\x8a'    #  0x2a -> CONTROL
-    u'\x8b'    #  0x2b -> CONTROL
-    u'\x8c'    #  0x2c -> CONTROL
-    u'\x05'    #  0x2d -> ENQUIRY
-    u'\x06'    #  0x2e -> ACKNOWLEDGE
-    u'\x07'    #  0x2f -> BELL
+    u'\x8a'    #  0x2A -> CONTROL
+    u'\x8b'    #  0x2B -> CONTROL
+    u'\x8c'    #  0x2C -> CONTROL
+    u'\x05'    #  0x2D -> ENQUIRY
+    u'\x06'    #  0x2E -> ACKNOWLEDGE
+    u'\x07'    #  0x2F -> BELL
     u'\x90'    #  0x30 -> CONTROL
     u'\x91'    #  0x31 -> CONTROL
     u'\x16'    #  0x32 -> SYNCHRONOUS IDLE
@@ -90,12 +90,12 @@ decoding_table = (
     u'\x04'    #  0x37 -> END OF TRANSMISSION
     u'\x98'    #  0x38 -> CONTROL
     u'\x99'    #  0x39 -> CONTROL
-    u'\x9a'    #  0x3a -> CONTROL
-    u'\x9b'    #  0x3b -> CONTROL
-    u'\x14'    #  0x3c -> DEVICE CONTROL FOUR
-    u'\x15'    #  0x3d -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'    #  0x3e -> CONTROL
-    u'\x1a'    #  0x3f -> SUBSTITUTE
+    u'\x9a'    #  0x3A -> CONTROL
+    u'\x9b'    #  0x3B -> CONTROL
+    u'\x14'    #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'    #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'    #  0x3E -> CONTROL
+    u'\x1a'    #  0x3F -> SUBSTITUTE
     u' '       #  0x40 -> SPACE
     u'\xa0'    #  0x41 -> NO-BREAK SPACE
     u'\xe2'    #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
@@ -106,12 +106,12 @@ decoding_table = (
     u'\xe5'    #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
     u'{'       #  0x48 -> LEFT CURLY BRACKET
     u'\xf1'    #  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xc7'    #  0x4a -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'.'       #  0x4b -> FULL STOP
-    u'<'       #  0x4c -> LESS-THAN SIGN
-    u'('       #  0x4d -> LEFT PARENTHESIS
-    u'+'       #  0x4e -> PLUS SIGN
-    u'!'       #  0x4f -> EXCLAMATION MARK
+    u'\xc7'    #  0x4A -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'.'       #  0x4B -> FULL STOP
+    u'<'       #  0x4C -> LESS-THAN SIGN
+    u'('       #  0x4D -> LEFT PARENTHESIS
+    u'+'       #  0x4E -> PLUS SIGN
+    u'!'       #  0x4F -> EXCLAMATION MARK
     u'&'       #  0x50 -> AMPERSAND
     u'\xe9'    #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
     u'\xea'    #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -122,12 +122,12 @@ decoding_table = (
     u'\xef'    #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
     u'\xec'    #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
     u'\xdf'    #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'\u011e'  #  0x5a -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u0130'  #  0x5b -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'*'       #  0x5c -> ASTERISK
-    u')'       #  0x5d -> RIGHT PARENTHESIS
-    u';'       #  0x5e -> SEMICOLON
-    u'^'       #  0x5f -> CIRCUMFLEX ACCENT
+    u'\u011e'  #  0x5A -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\u0130'  #  0x5B -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'*'       #  0x5C -> ASTERISK
+    u')'       #  0x5D -> RIGHT PARENTHESIS
+    u';'       #  0x5E -> SEMICOLON
+    u'^'       #  0x5F -> CIRCUMFLEX ACCENT
     u'-'       #  0x60 -> HYPHEN-MINUS
     u'/'       #  0x61 -> SOLIDUS
     u'\xc2'    #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
@@ -138,12 +138,12 @@ decoding_table = (
     u'\xc5'    #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
     u'['       #  0x68 -> LEFT SQUARE BRACKET
     u'\xd1'    #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\u015f'  #  0x6a -> LATIN SMALL LETTER S WITH CEDILLA
-    u','       #  0x6b -> COMMA
-    u'%'       #  0x6c -> PERCENT SIGN
-    u'_'       #  0x6d -> LOW LINE
-    u'>'       #  0x6e -> GREATER-THAN SIGN
-    u'?'       #  0x6f -> QUESTION MARK
+    u'\u015f'  #  0x6A -> LATIN SMALL LETTER S WITH CEDILLA
+    u','       #  0x6B -> COMMA
+    u'%'       #  0x6C -> PERCENT SIGN
+    u'_'       #  0x6D -> LOW LINE
+    u'>'       #  0x6E -> GREATER-THAN SIGN
+    u'?'       #  0x6F -> QUESTION MARK
     u'\xf8'    #  0x70 -> LATIN SMALL LETTER O WITH STROKE
     u'\xc9'    #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
     u'\xca'    #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
@@ -154,12 +154,12 @@ decoding_table = (
     u'\xcf'    #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
     u'\xcc'    #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
     u'\u0131'  #  0x79 -> LATIN SMALL LETTER DOTLESS I
-    u':'       #  0x7a -> COLON
-    u'\xd6'    #  0x7b -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u015e'  #  0x7c -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u"'"       #  0x7d -> APOSTROPHE
-    u'='       #  0x7e -> EQUALS SIGN
-    u'\xdc'    #  0x7f -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u':'       #  0x7A -> COLON
+    u'\xd6'    #  0x7B -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\u015e'  #  0x7C -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u"'"       #  0x7D -> APOSTROPHE
+    u'='       #  0x7E -> EQUALS SIGN
+    u'\xdc'    #  0x7F -> LATIN CAPITAL LETTER U WITH DIAERESIS
     u'\xd8'    #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
     u'a'       #  0x81 -> LATIN SMALL LETTER A
     u'b'       #  0x82 -> LATIN SMALL LETTER B
@@ -170,12 +170,12 @@ decoding_table = (
     u'g'       #  0x87 -> LATIN SMALL LETTER G
     u'h'       #  0x88 -> LATIN SMALL LETTER H
     u'i'       #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'    #  0x8a -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0x8b -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'}'       #  0x8c -> RIGHT CURLY BRACKET
-    u'`'       #  0x8d -> GRAVE ACCENT
-    u'\xa6'    #  0x8e -> BROKEN BAR
-    u'\xb1'    #  0x8f -> PLUS-MINUS SIGN
+    u'\xab'    #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'}'       #  0x8C -> RIGHT CURLY BRACKET
+    u'`'       #  0x8D -> GRAVE ACCENT
+    u'\xa6'    #  0x8E -> BROKEN BAR
+    u'\xb1'    #  0x8F -> PLUS-MINUS SIGN
     u'\xb0'    #  0x90 -> DEGREE SIGN
     u'j'       #  0x91 -> LATIN SMALL LETTER J
     u'k'       #  0x92 -> LATIN SMALL LETTER K
@@ -186,108 +186,108 @@ decoding_table = (
     u'p'       #  0x97 -> LATIN SMALL LETTER P
     u'q'       #  0x98 -> LATIN SMALL LETTER Q
     u'r'       #  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'    #  0x9a -> FEMININE ORDINAL INDICATOR
-    u'\xba'    #  0x9b -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'    #  0x9c -> LATIN SMALL LIGATURE AE
-    u'\xb8'    #  0x9d -> CEDILLA
-    u'\xc6'    #  0x9e -> LATIN CAPITAL LIGATURE AE
-    u'\xa4'    #  0x9f -> CURRENCY SIGN
-    u'\xb5'    #  0xa0 -> MICRO SIGN
-    u'\xf6'    #  0xa1 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u's'       #  0xa2 -> LATIN SMALL LETTER S
-    u't'       #  0xa3 -> LATIN SMALL LETTER T
-    u'u'       #  0xa4 -> LATIN SMALL LETTER U
-    u'v'       #  0xa5 -> LATIN SMALL LETTER V
-    u'w'       #  0xa6 -> LATIN SMALL LETTER W
-    u'x'       #  0xa7 -> LATIN SMALL LETTER X
-    u'y'       #  0xa8 -> LATIN SMALL LETTER Y
-    u'z'       #  0xa9 -> LATIN SMALL LETTER Z
-    u'\xa1'    #  0xaa -> INVERTED EXCLAMATION MARK
-    u'\xbf'    #  0xab -> INVERTED QUESTION MARK
-    u']'       #  0xac -> RIGHT SQUARE BRACKET
-    u'$'       #  0xad -> DOLLAR SIGN
-    u'@'       #  0xae -> COMMERCIAL AT
-    u'\xae'    #  0xaf -> REGISTERED SIGN
-    u'\xa2'    #  0xb0 -> CENT SIGN
-    u'\xa3'    #  0xb1 -> POUND SIGN
-    u'\xa5'    #  0xb2 -> YEN SIGN
-    u'\xb7'    #  0xb3 -> MIDDLE DOT
-    u'\xa9'    #  0xb4 -> COPYRIGHT SIGN
-    u'\xa7'    #  0xb5 -> SECTION SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xbc'    #  0xb7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xb8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xb9 -> VULGAR FRACTION THREE QUARTERS
-    u'\xac'    #  0xba -> NOT SIGN
-    u'|'       #  0xbb -> VERTICAL LINE
-    u'\xaf'    #  0xbc -> MACRON
-    u'\xa8'    #  0xbd -> DIAERESIS
-    u'\xb4'    #  0xbe -> ACUTE ACCENT
-    u'\xd7'    #  0xbf -> MULTIPLICATION SIGN
-    u'\xe7'    #  0xc0 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'A'       #  0xc1 -> LATIN CAPITAL LETTER A
-    u'B'       #  0xc2 -> LATIN CAPITAL LETTER B
-    u'C'       #  0xc3 -> LATIN CAPITAL LETTER C
-    u'D'       #  0xc4 -> LATIN CAPITAL LETTER D
-    u'E'       #  0xc5 -> LATIN CAPITAL LETTER E
-    u'F'       #  0xc6 -> LATIN CAPITAL LETTER F
-    u'G'       #  0xc7 -> LATIN CAPITAL LETTER G
-    u'H'       #  0xc8 -> LATIN CAPITAL LETTER H
-    u'I'       #  0xc9 -> LATIN CAPITAL LETTER I
-    u'\xad'    #  0xca -> SOFT HYPHEN
-    u'\xf4'    #  0xcb -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'~'       #  0xcc -> TILDE
-    u'\xf2'    #  0xcd -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xce -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'    #  0xcf -> LATIN SMALL LETTER O WITH TILDE
-    u'\u011f'  #  0xd0 -> LATIN SMALL LETTER G WITH BREVE
-    u'J'       #  0xd1 -> LATIN CAPITAL LETTER J
-    u'K'       #  0xd2 -> LATIN CAPITAL LETTER K
-    u'L'       #  0xd3 -> LATIN CAPITAL LETTER L
-    u'M'       #  0xd4 -> LATIN CAPITAL LETTER M
-    u'N'       #  0xd5 -> LATIN CAPITAL LETTER N
-    u'O'       #  0xd6 -> LATIN CAPITAL LETTER O
-    u'P'       #  0xd7 -> LATIN CAPITAL LETTER P
-    u'Q'       #  0xd8 -> LATIN CAPITAL LETTER Q
-    u'R'       #  0xd9 -> LATIN CAPITAL LETTER R
-    u'\xb9'    #  0xda -> SUPERSCRIPT ONE
-    u'\xfb'    #  0xdb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\\'      #  0xdc -> REVERSE SOLIDUS
-    u'\xf9'    #  0xdd -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xde -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'    #  0xdf -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xfc'    #  0xe0 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf7'    #  0xe1 -> DIVISION SIGN
-    u'S'       #  0xe2 -> LATIN CAPITAL LETTER S
-    u'T'       #  0xe3 -> LATIN CAPITAL LETTER T
-    u'U'       #  0xe4 -> LATIN CAPITAL LETTER U
-    u'V'       #  0xe5 -> LATIN CAPITAL LETTER V
-    u'W'       #  0xe6 -> LATIN CAPITAL LETTER W
-    u'X'       #  0xe7 -> LATIN CAPITAL LETTER X
-    u'Y'       #  0xe8 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0xe9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'    #  0xea -> SUPERSCRIPT TWO
-    u'\xd4'    #  0xeb -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'#'       #  0xec -> NUMBER SIGN
-    u'\xd2'    #  0xed -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'    #  0xef -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'       #  0xf0 -> DIGIT ZERO
-    u'1'       #  0xf1 -> DIGIT ONE
-    u'2'       #  0xf2 -> DIGIT TWO
-    u'3'       #  0xf3 -> DIGIT THREE
-    u'4'       #  0xf4 -> DIGIT FOUR
-    u'5'       #  0xf5 -> DIGIT FIVE
-    u'6'       #  0xf6 -> DIGIT SIX
-    u'7'       #  0xf7 -> DIGIT SEVEN
-    u'8'       #  0xf8 -> DIGIT EIGHT
-    u'9'       #  0xf9 -> DIGIT NINE
-    u'\xb3'    #  0xfa -> SUPERSCRIPT THREE
-    u'\xdb'    #  0xfb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'"'       #  0xfc -> QUOTATION MARK
-    u'\xd9'    #  0xfd -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xfe -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'    #  0xff -> CONTROL
+    u'\xaa'    #  0x9A -> FEMININE ORDINAL INDICATOR
+    u'\xba'    #  0x9B -> MASCULINE ORDINAL INDICATOR
+    u'\xe6'    #  0x9C -> LATIN SMALL LIGATURE AE
+    u'\xb8'    #  0x9D -> CEDILLA
+    u'\xc6'    #  0x9E -> LATIN CAPITAL LIGATURE AE
+    u'\xa4'    #  0x9F -> CURRENCY SIGN
+    u'\xb5'    #  0xA0 -> MICRO SIGN
+    u'\xf6'    #  0xA1 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u's'       #  0xA2 -> LATIN SMALL LETTER S
+    u't'       #  0xA3 -> LATIN SMALL LETTER T
+    u'u'       #  0xA4 -> LATIN SMALL LETTER U
+    u'v'       #  0xA5 -> LATIN SMALL LETTER V
+    u'w'       #  0xA6 -> LATIN SMALL LETTER W
+    u'x'       #  0xA7 -> LATIN SMALL LETTER X
+    u'y'       #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'       #  0xA9 -> LATIN SMALL LETTER Z
+    u'\xa1'    #  0xAA -> INVERTED EXCLAMATION MARK
+    u'\xbf'    #  0xAB -> INVERTED QUESTION MARK
+    u']'       #  0xAC -> RIGHT SQUARE BRACKET
+    u'$'       #  0xAD -> DOLLAR SIGN
+    u'@'       #  0xAE -> COMMERCIAL AT
+    u'\xae'    #  0xAF -> REGISTERED SIGN
+    u'\xa2'    #  0xB0 -> CENT SIGN
+    u'\xa3'    #  0xB1 -> POUND SIGN
+    u'\xa5'    #  0xB2 -> YEN SIGN
+    u'\xb7'    #  0xB3 -> MIDDLE DOT
+    u'\xa9'    #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'    #  0xB5 -> SECTION SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xbc'    #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'\xac'    #  0xBA -> NOT SIGN
+    u'|'       #  0xBB -> VERTICAL LINE
+    u'\xaf'    #  0xBC -> MACRON
+    u'\xa8'    #  0xBD -> DIAERESIS
+    u'\xb4'    #  0xBE -> ACUTE ACCENT
+    u'\xd7'    #  0xBF -> MULTIPLICATION SIGN
+    u'\xe7'    #  0xC0 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'A'       #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'       #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'       #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'       #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'       #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'       #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'       #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'       #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'       #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'    #  0xCA -> SOFT HYPHEN
+    u'\xf4'    #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'~'       #  0xCC -> TILDE
+    u'\xf2'    #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf5'    #  0xCF -> LATIN SMALL LETTER O WITH TILDE
+    u'\u011f'  #  0xD0 -> LATIN SMALL LETTER G WITH BREVE
+    u'J'       #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'       #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'       #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'       #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'       #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'       #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'       #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'       #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'       #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'    #  0xDA -> SUPERSCRIPT ONE
+    u'\xfb'    #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\\'      #  0xDC -> REVERSE SOLIDUS
+    u'\xf9'    #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xff'    #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\xfc'    #  0xE0 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xf7'    #  0xE1 -> DIVISION SIGN
+    u'S'       #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'       #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'       #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'       #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'       #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'       #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'       #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'       #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'    #  0xEA -> SUPERSCRIPT TWO
+    u'\xd4'    #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'#'       #  0xEC -> NUMBER SIGN
+    u'\xd2'    #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd5'    #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
+    u'0'       #  0xF0 -> DIGIT ZERO
+    u'1'       #  0xF1 -> DIGIT ONE
+    u'2'       #  0xF2 -> DIGIT TWO
+    u'3'       #  0xF3 -> DIGIT THREE
+    u'4'       #  0xF4 -> DIGIT FOUR
+    u'5'       #  0xF5 -> DIGIT FIVE
+    u'6'       #  0xF6 -> DIGIT SIX
+    u'7'       #  0xF7 -> DIGIT SEVEN
+    u'8'       #  0xF8 -> DIGIT EIGHT
+    u'9'       #  0xF9 -> DIGIT NINE
+    u'\xb3'    #  0xFA -> SUPERSCRIPT THREE
+    u'\xdb'    #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'"'       #  0xFC -> QUOTATION MARK
+    u'\xd9'    #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\x9f'    #  0xFF -> CONTROL
 )
 
 ### Encoding Map
@@ -298,98 +298,98 @@ encoding_map = {
     0x0002: 0x02,      #  START OF TEXT
     0x0003: 0x03,      #  END OF TEXT
     0x0004: 0x37,      #  END OF TRANSMISSION
-    0x0005: 0x2d,      #  ENQUIRY
-    0x0006: 0x2e,      #  ACKNOWLEDGE
-    0x0007: 0x2f,      #  BELL
+    0x0005: 0x2D,      #  ENQUIRY
+    0x0006: 0x2E,      #  ACKNOWLEDGE
+    0x0007: 0x2F,      #  BELL
     0x0008: 0x16,      #  BACKSPACE
     0x0009: 0x05,      #  HORIZONTAL TABULATION
-    0x000a: 0x25,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x25,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
     0x0013: 0x13,      #  DEVICE CONTROL THREE
-    0x0014: 0x3c,      #  DEVICE CONTROL FOUR
-    0x0015: 0x3d,      #  NEGATIVE ACKNOWLEDGE
+    0x0014: 0x3C,      #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,      #  NEGATIVE ACKNOWLEDGE
     0x0016: 0x32,      #  SYNCHRONOUS IDLE
     0x0017: 0x26,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x3f,      #  SUBSTITUTE
-    0x001b: 0x27,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x3F,      #  SUBSTITUTE
+    0x001B: 0x27,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x40,      #  SPACE
-    0x0021: 0x4f,      #  EXCLAMATION MARK
-    0x0022: 0xfc,      #  QUOTATION MARK
-    0x0023: 0xec,      #  NUMBER SIGN
-    0x0024: 0xad,      #  DOLLAR SIGN
-    0x0025: 0x6c,      #  PERCENT SIGN
+    0x0021: 0x4F,      #  EXCLAMATION MARK
+    0x0022: 0xFC,      #  QUOTATION MARK
+    0x0023: 0xEC,      #  NUMBER SIGN
+    0x0024: 0xAD,      #  DOLLAR SIGN
+    0x0025: 0x6C,      #  PERCENT SIGN
     0x0026: 0x50,      #  AMPERSAND
-    0x0027: 0x7d,      #  APOSTROPHE
-    0x0028: 0x4d,      #  LEFT PARENTHESIS
-    0x0029: 0x5d,      #  RIGHT PARENTHESIS
-    0x002a: 0x5c,      #  ASTERISK
-    0x002b: 0x4e,      #  PLUS SIGN
-    0x002c: 0x6b,      #  COMMA
-    0x002d: 0x60,      #  HYPHEN-MINUS
-    0x002e: 0x4b,      #  FULL STOP
-    0x002f: 0x61,      #  SOLIDUS
-    0x0030: 0xf0,      #  DIGIT ZERO
-    0x0031: 0xf1,      #  DIGIT ONE
-    0x0032: 0xf2,      #  DIGIT TWO
-    0x0033: 0xf3,      #  DIGIT THREE
-    0x0034: 0xf4,      #  DIGIT FOUR
-    0x0035: 0xf5,      #  DIGIT FIVE
-    0x0036: 0xf6,      #  DIGIT SIX
-    0x0037: 0xf7,      #  DIGIT SEVEN
-    0x0038: 0xf8,      #  DIGIT EIGHT
-    0x0039: 0xf9,      #  DIGIT NINE
-    0x003a: 0x7a,      #  COLON
-    0x003b: 0x5e,      #  SEMICOLON
-    0x003c: 0x4c,      #  LESS-THAN SIGN
-    0x003d: 0x7e,      #  EQUALS SIGN
-    0x003e: 0x6e,      #  GREATER-THAN SIGN
-    0x003f: 0x6f,      #  QUESTION MARK
-    0x0040: 0xae,      #  COMMERCIAL AT
-    0x0041: 0xc1,      #  LATIN CAPITAL LETTER A
-    0x0042: 0xc2,      #  LATIN CAPITAL LETTER B
-    0x0043: 0xc3,      #  LATIN CAPITAL LETTER C
-    0x0044: 0xc4,      #  LATIN CAPITAL LETTER D
-    0x0045: 0xc5,      #  LATIN CAPITAL LETTER E
-    0x0046: 0xc6,      #  LATIN CAPITAL LETTER F
-    0x0047: 0xc7,      #  LATIN CAPITAL LETTER G
-    0x0048: 0xc8,      #  LATIN CAPITAL LETTER H
-    0x0049: 0xc9,      #  LATIN CAPITAL LETTER I
-    0x004a: 0xd1,      #  LATIN CAPITAL LETTER J
-    0x004b: 0xd2,      #  LATIN CAPITAL LETTER K
-    0x004c: 0xd3,      #  LATIN CAPITAL LETTER L
-    0x004d: 0xd4,      #  LATIN CAPITAL LETTER M
-    0x004e: 0xd5,      #  LATIN CAPITAL LETTER N
-    0x004f: 0xd6,      #  LATIN CAPITAL LETTER O
-    0x0050: 0xd7,      #  LATIN CAPITAL LETTER P
-    0x0051: 0xd8,      #  LATIN CAPITAL LETTER Q
-    0x0052: 0xd9,      #  LATIN CAPITAL LETTER R
-    0x0053: 0xe2,      #  LATIN CAPITAL LETTER S
-    0x0054: 0xe3,      #  LATIN CAPITAL LETTER T
-    0x0055: 0xe4,      #  LATIN CAPITAL LETTER U
-    0x0056: 0xe5,      #  LATIN CAPITAL LETTER V
-    0x0057: 0xe6,      #  LATIN CAPITAL LETTER W
-    0x0058: 0xe7,      #  LATIN CAPITAL LETTER X
-    0x0059: 0xe8,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0xe9,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x68,      #  LEFT SQUARE BRACKET
-    0x005c: 0xdc,      #  REVERSE SOLIDUS
-    0x005d: 0xac,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5f,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x6d,      #  LOW LINE
-    0x0060: 0x8d,      #  GRAVE ACCENT
+    0x0027: 0x7D,      #  APOSTROPHE
+    0x0028: 0x4D,      #  LEFT PARENTHESIS
+    0x0029: 0x5D,      #  RIGHT PARENTHESIS
+    0x002A: 0x5C,      #  ASTERISK
+    0x002B: 0x4E,      #  PLUS SIGN
+    0x002C: 0x6B,      #  COMMA
+    0x002D: 0x60,      #  HYPHEN-MINUS
+    0x002E: 0x4B,      #  FULL STOP
+    0x002F: 0x61,      #  SOLIDUS
+    0x0030: 0xF0,      #  DIGIT ZERO
+    0x0031: 0xF1,      #  DIGIT ONE
+    0x0032: 0xF2,      #  DIGIT TWO
+    0x0033: 0xF3,      #  DIGIT THREE
+    0x0034: 0xF4,      #  DIGIT FOUR
+    0x0035: 0xF5,      #  DIGIT FIVE
+    0x0036: 0xF6,      #  DIGIT SIX
+    0x0037: 0xF7,      #  DIGIT SEVEN
+    0x0038: 0xF8,      #  DIGIT EIGHT
+    0x0039: 0xF9,      #  DIGIT NINE
+    0x003A: 0x7A,      #  COLON
+    0x003B: 0x5E,      #  SEMICOLON
+    0x003C: 0x4C,      #  LESS-THAN SIGN
+    0x003D: 0x7E,      #  EQUALS SIGN
+    0x003E: 0x6E,      #  GREATER-THAN SIGN
+    0x003F: 0x6F,      #  QUESTION MARK
+    0x0040: 0xAE,      #  COMMERCIAL AT
+    0x0041: 0xC1,      #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,      #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,      #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,      #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,      #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,      #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,      #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,      #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,      #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,      #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,      #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,      #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,      #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,      #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,      #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,      #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,      #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,      #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,      #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,      #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,      #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,      #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,      #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,      #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,      #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x68,      #  LEFT SQUARE BRACKET
+    0x005C: 0xDC,      #  REVERSE SOLIDUS
+    0x005D: 0xAC,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5F,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,      #  LOW LINE
+    0x0060: 0x8D,      #  GRAVE ACCENT
     0x0061: 0x81,      #  LATIN SMALL LETTER A
     0x0062: 0x82,      #  LATIN SMALL LETTER B
     0x0063: 0x83,      #  LATIN SMALL LETTER C
@@ -399,28 +399,28 @@ encoding_map = {
     0x0067: 0x87,      #  LATIN SMALL LETTER G
     0x0068: 0x88,      #  LATIN SMALL LETTER H
     0x0069: 0x89,      #  LATIN SMALL LETTER I
-    0x006a: 0x91,      #  LATIN SMALL LETTER J
-    0x006b: 0x92,      #  LATIN SMALL LETTER K
-    0x006c: 0x93,      #  LATIN SMALL LETTER L
-    0x006d: 0x94,      #  LATIN SMALL LETTER M
-    0x006e: 0x95,      #  LATIN SMALL LETTER N
-    0x006f: 0x96,      #  LATIN SMALL LETTER O
+    0x006A: 0x91,      #  LATIN SMALL LETTER J
+    0x006B: 0x92,      #  LATIN SMALL LETTER K
+    0x006C: 0x93,      #  LATIN SMALL LETTER L
+    0x006D: 0x94,      #  LATIN SMALL LETTER M
+    0x006E: 0x95,      #  LATIN SMALL LETTER N
+    0x006F: 0x96,      #  LATIN SMALL LETTER O
     0x0070: 0x97,      #  LATIN SMALL LETTER P
     0x0071: 0x98,      #  LATIN SMALL LETTER Q
     0x0072: 0x99,      #  LATIN SMALL LETTER R
-    0x0073: 0xa2,      #  LATIN SMALL LETTER S
-    0x0074: 0xa3,      #  LATIN SMALL LETTER T
-    0x0075: 0xa4,      #  LATIN SMALL LETTER U
-    0x0076: 0xa5,      #  LATIN SMALL LETTER V
-    0x0077: 0xa6,      #  LATIN SMALL LETTER W
-    0x0078: 0xa7,      #  LATIN SMALL LETTER X
-    0x0079: 0xa8,      #  LATIN SMALL LETTER Y
-    0x007a: 0xa9,      #  LATIN SMALL LETTER Z
-    0x007b: 0x48,      #  LEFT CURLY BRACKET
-    0x007c: 0xbb,      #  VERTICAL LINE
-    0x007d: 0x8c,      #  RIGHT CURLY BRACKET
-    0x007e: 0xcc,      #  TILDE
-    0x007f: 0x07,      #  DELETE
+    0x0073: 0xA2,      #  LATIN SMALL LETTER S
+    0x0074: 0xA3,      #  LATIN SMALL LETTER T
+    0x0075: 0xA4,      #  LATIN SMALL LETTER U
+    0x0076: 0xA5,      #  LATIN SMALL LETTER V
+    0x0077: 0xA6,      #  LATIN SMALL LETTER W
+    0x0078: 0xA7,      #  LATIN SMALL LETTER X
+    0x0079: 0xA8,      #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,      #  LATIN SMALL LETTER Z
+    0x007B: 0x48,      #  LEFT CURLY BRACKET
+    0x007C: 0xBB,      #  VERTICAL LINE
+    0x007D: 0x8C,      #  RIGHT CURLY BRACKET
+    0x007E: 0xCC,      #  TILDE
+    0x007F: 0x07,      #  DELETE
     0x0080: 0x20,      #  CONTROL
     0x0081: 0x21,      #  CONTROL
     0x0082: 0x22,      #  CONTROL
@@ -431,15 +431,15 @@ encoding_map = {
     0x0087: 0x17,      #  CONTROL
     0x0088: 0x28,      #  CONTROL
     0x0089: 0x29,      #  CONTROL
-    0x008a: 0x2a,      #  CONTROL
-    0x008b: 0x2b,      #  CONTROL
-    0x008c: 0x2c,      #  CONTROL
-    0x008d: 0x09,      #  CONTROL
-    0x008e: 0x0a,      #  CONTROL
-    0x008f: 0x1b,      #  CONTROL
+    0x008A: 0x2A,      #  CONTROL
+    0x008B: 0x2B,      #  CONTROL
+    0x008C: 0x2C,      #  CONTROL
+    0x008D: 0x09,      #  CONTROL
+    0x008E: 0x0A,      #  CONTROL
+    0x008F: 0x1B,      #  CONTROL
     0x0090: 0x30,      #  CONTROL
     0x0091: 0x31,      #  CONTROL
-    0x0092: 0x1a,      #  CONTROL
+    0x0092: 0x1A,      #  CONTROL
     0x0093: 0x33,      #  CONTROL
     0x0094: 0x34,      #  CONTROL
     0x0095: 0x35,      #  CONTROL
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x08,      #  CONTROL
     0x0098: 0x38,      #  CONTROL
     0x0099: 0x39,      #  CONTROL
-    0x009a: 0x3a,      #  CONTROL
-    0x009b: 0x3b,      #  CONTROL
-    0x009c: 0x04,      #  CONTROL
-    0x009d: 0x14,      #  CONTROL
-    0x009e: 0x3e,      #  CONTROL
-    0x009f: 0xff,      #  CONTROL
-    0x00a0: 0x41,      #  NO-BREAK SPACE
-    0x00a1: 0xaa,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xb0,      #  CENT SIGN
-    0x00a3: 0xb1,      #  POUND SIGN
-    0x00a4: 0x9f,      #  CURRENCY SIGN
-    0x00a5: 0xb2,      #  YEN SIGN
-    0x00a6: 0x8e,      #  BROKEN BAR
-    0x00a7: 0xb5,      #  SECTION SIGN
-    0x00a8: 0xbd,      #  DIAERESIS
-    0x00a9: 0xb4,      #  COPYRIGHT SIGN
-    0x00aa: 0x9a,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x8a,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xba,      #  NOT SIGN
-    0x00ad: 0xca,      #  SOFT HYPHEN
-    0x00ae: 0xaf,      #  REGISTERED SIGN
-    0x00af: 0xbc,      #  MACRON
-    0x00b0: 0x90,      #  DEGREE SIGN
-    0x00b1: 0x8f,      #  PLUS-MINUS SIGN
-    0x00b2: 0xea,      #  SUPERSCRIPT TWO
-    0x00b3: 0xfa,      #  SUPERSCRIPT THREE
-    0x00b4: 0xbe,      #  ACUTE ACCENT
-    0x00b5: 0xa0,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb3,      #  MIDDLE DOT
-    0x00b8: 0x9d,      #  CEDILLA
-    0x00b9: 0xda,      #  SUPERSCRIPT ONE
-    0x00ba: 0x9b,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x8b,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xb7,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xb8,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xb9,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xab,      #  INVERTED QUESTION MARK
-    0x00c0: 0x64,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x65,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x62,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x66,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x63,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x67,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x9e,      #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x4a,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x74,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x71,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x72,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x73,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0x78,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x75,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x76,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x77,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0x69,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xed,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xeb,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xef,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x7b,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xbf,      #  MULTIPLICATION SIGN
-    0x00d8: 0x80,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xfd,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xfe,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xfb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x7f,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x59,      #  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e0: 0x44,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x45,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x42,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x46,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x43,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x47,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x9c,      #  LATIN SMALL LIGATURE AE
-    0x00e7: 0xc0,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x54,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x51,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x52,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x53,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x58,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x55,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x56,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x57,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x49,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xcd,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xce,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xcb,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xcf,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xa1,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xe1,      #  DIVISION SIGN
-    0x00f8: 0x70,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xdd,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xde,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xdb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xe0,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0xdf,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011e: 0x5a,      #  LATIN CAPITAL LETTER G WITH BREVE
-    0x011f: 0xd0,      #  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0x5b,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x009A: 0x3A,      #  CONTROL
+    0x009B: 0x3B,      #  CONTROL
+    0x009C: 0x04,      #  CONTROL
+    0x009D: 0x14,      #  CONTROL
+    0x009E: 0x3E,      #  CONTROL
+    0x009F: 0xFF,      #  CONTROL
+    0x00A0: 0x41,      #  NO-BREAK SPACE
+    0x00A1: 0xAA,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xB0,      #  CENT SIGN
+    0x00A3: 0xB1,      #  POUND SIGN
+    0x00A4: 0x9F,      #  CURRENCY SIGN
+    0x00A5: 0xB2,      #  YEN SIGN
+    0x00A6: 0x8E,      #  BROKEN BAR
+    0x00A7: 0xB5,      #  SECTION SIGN
+    0x00A8: 0xBD,      #  DIAERESIS
+    0x00A9: 0xB4,      #  COPYRIGHT SIGN
+    0x00AA: 0x9A,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0x8A,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xBA,      #  NOT SIGN
+    0x00AD: 0xCA,      #  SOFT HYPHEN
+    0x00AE: 0xAF,      #  REGISTERED SIGN
+    0x00AF: 0xBC,      #  MACRON
+    0x00B0: 0x90,      #  DEGREE SIGN
+    0x00B1: 0x8F,      #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,      #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,      #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,      #  ACUTE ACCENT
+    0x00B5: 0xA0,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB3,      #  MIDDLE DOT
+    0x00B8: 0x9D,      #  CEDILLA
+    0x00B9: 0xDA,      #  SUPERSCRIPT ONE
+    0x00BA: 0x9B,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0x8B,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xAB,      #  INVERTED QUESTION MARK
+    0x00C0: 0x64,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0x65,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0x62,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0x66,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x63,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x67,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0x9E,      #  LATIN CAPITAL LIGATURE AE
+    0x00C7: 0x4A,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0x74,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x71,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0x72,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0x73,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0x78,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0x75,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0x76,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0x77,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x69,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xED,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEB,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xEF,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x7B,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xBF,      #  MULTIPLICATION SIGN
+    0x00D8: 0x80,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xFD,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xFE,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xFB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x7F,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0x59,      #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00E0: 0x44,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x45,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x42,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x46,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x43,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x47,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0x9C,      #  LATIN SMALL LIGATURE AE
+    0x00E7: 0xC0,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x54,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x51,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x52,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x53,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x58,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x55,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x56,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x57,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x49,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xCD,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xCE,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xCB,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xCF,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xA1,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xE1,      #  DIVISION SIGN
+    0x00F8: 0x70,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xDD,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xDE,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xDB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xE0,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xDF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x011E: 0x5A,      #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xD0,      #  LATIN SMALL LETTER G WITH BREVE
+    0x0130: 0x5B,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
     0x0131: 0x79,      #  LATIN SMALL LETTER DOTLESS I
-    0x015e: 0x7c,      #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0x6a,      #  LATIN SMALL LETTER S WITH CEDILLA
-}
\ No newline at end of file
+    0x015E: 0x7C,      #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0x6A,      #  LATIN SMALL LETTER S WITH CEDILLA
+}
+
index 7267507037a71d275a86f12b26eebf0c017f94d9..a3c5cb98e6d389f6e24ac8031022b692a2c2eae3 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x7f'    #  0x07 -> DELETE
     u'\x97'    #  0x08 -> CONTROL
     u'\x8d'    #  0x09 -> CONTROL
-    u'\x8e'    #  0x0a -> CONTROL
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\x8e'    #  0x0A -> CONTROL
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x87'    #  0x17 -> CONTROL
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x92'    #  0x1a -> CONTROL
-    u'\x8f'    #  0x1b -> CONTROL
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x92'    #  0x1A -> CONTROL
+    u'\x8f'    #  0x1B -> CONTROL
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u'\x80'    #  0x20 -> CONTROL
     u'\x81'    #  0x21 -> CONTROL
     u'\x82'    #  0x22 -> CONTROL
@@ -74,12 +74,12 @@ decoding_table = (
     u'\x1b'    #  0x27 -> ESCAPE
     u'\x88'    #  0x28 -> CONTROL
     u'\x89'    #  0x29 -> CONTROL
-    u'\x8a'    #  0x2a -> CONTROL
-    u'\x8b'    #  0x2b -> CONTROL
-    u'\x8c'    #  0x2c -> CONTROL
-    u'\x05'    #  0x2d -> ENQUIRY
-    u'\x06'    #  0x2e -> ACKNOWLEDGE
-    u'\x07'    #  0x2f -> BELL
+    u'\x8a'    #  0x2A -> CONTROL
+    u'\x8b'    #  0x2B -> CONTROL
+    u'\x8c'    #  0x2C -> CONTROL
+    u'\x05'    #  0x2D -> ENQUIRY
+    u'\x06'    #  0x2E -> ACKNOWLEDGE
+    u'\x07'    #  0x2F -> BELL
     u'\x90'    #  0x30 -> CONTROL
     u'\x91'    #  0x31 -> CONTROL
     u'\x16'    #  0x32 -> SYNCHRONOUS IDLE
@@ -90,12 +90,12 @@ decoding_table = (
     u'\x04'    #  0x37 -> END OF TRANSMISSION
     u'\x98'    #  0x38 -> CONTROL
     u'\x99'    #  0x39 -> CONTROL
-    u'\x9a'    #  0x3a -> CONTROL
-    u'\x9b'    #  0x3b -> CONTROL
-    u'\x14'    #  0x3c -> DEVICE CONTROL FOUR
-    u'\x15'    #  0x3d -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'    #  0x3e -> CONTROL
-    u'\x1a'    #  0x3f -> SUBSTITUTE
+    u'\x9a'    #  0x3A -> CONTROL
+    u'\x9b'    #  0x3B -> CONTROL
+    u'\x14'    #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'    #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'    #  0x3E -> CONTROL
+    u'\x1a'    #  0x3F -> SUBSTITUTE
     u' '       #  0x40 -> SPACE
     u'\xa0'    #  0x41 -> NO-BREAK SPACE
     u'\xe2'    #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
@@ -106,12 +106,12 @@ decoding_table = (
     u'\xe5'    #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
     u'\xe7'    #  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
     u'\xf1'    #  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xa2'    #  0x4a -> CENT SIGN
-    u'.'       #  0x4b -> FULL STOP
-    u'<'       #  0x4c -> LESS-THAN SIGN
-    u'('       #  0x4d -> LEFT PARENTHESIS
-    u'+'       #  0x4e -> PLUS SIGN
-    u'|'       #  0x4f -> VERTICAL LINE
+    u'\xa2'    #  0x4A -> CENT SIGN
+    u'.'       #  0x4B -> FULL STOP
+    u'<'       #  0x4C -> LESS-THAN SIGN
+    u'('       #  0x4D -> LEFT PARENTHESIS
+    u'+'       #  0x4E -> PLUS SIGN
+    u'|'       #  0x4F -> VERTICAL LINE
     u'&'       #  0x50 -> AMPERSAND
     u'\xe9'    #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
     u'\xea'    #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -122,12 +122,12 @@ decoding_table = (
     u'\xef'    #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
     u'\xec'    #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
     u'\xdf'    #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'!'       #  0x5a -> EXCLAMATION MARK
-    u'$'       #  0x5b -> DOLLAR SIGN
-    u'*'       #  0x5c -> ASTERISK
-    u')'       #  0x5d -> RIGHT PARENTHESIS
-    u';'       #  0x5e -> SEMICOLON
-    u'\xac'    #  0x5f -> NOT SIGN
+    u'!'       #  0x5A -> EXCLAMATION MARK
+    u'$'       #  0x5B -> DOLLAR SIGN
+    u'*'       #  0x5C -> ASTERISK
+    u')'       #  0x5D -> RIGHT PARENTHESIS
+    u';'       #  0x5E -> SEMICOLON
+    u'\xac'    #  0x5F -> NOT SIGN
     u'-'       #  0x60 -> HYPHEN-MINUS
     u'/'       #  0x61 -> SOLIDUS
     u'\xc2'    #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
@@ -138,12 +138,12 @@ decoding_table = (
     u'\xc5'    #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
     u'\xc7'    #  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
     u'\xd1'    #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xa6'    #  0x6a -> BROKEN BAR
-    u','       #  0x6b -> COMMA
-    u'%'       #  0x6c -> PERCENT SIGN
-    u'_'       #  0x6d -> LOW LINE
-    u'>'       #  0x6e -> GREATER-THAN SIGN
-    u'?'       #  0x6f -> QUESTION MARK
+    u'\xa6'    #  0x6A -> BROKEN BAR
+    u','       #  0x6B -> COMMA
+    u'%'       #  0x6C -> PERCENT SIGN
+    u'_'       #  0x6D -> LOW LINE
+    u'>'       #  0x6E -> GREATER-THAN SIGN
+    u'?'       #  0x6F -> QUESTION MARK
     u'\xf8'    #  0x70 -> LATIN SMALL LETTER O WITH STROKE
     u'\xc9'    #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
     u'\xca'    #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
@@ -154,12 +154,12 @@ decoding_table = (
     u'\xcf'    #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
     u'\xcc'    #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
     u'`'       #  0x79 -> GRAVE ACCENT
-    u':'       #  0x7a -> COLON
-    u'#'       #  0x7b -> NUMBER SIGN
-    u'@'       #  0x7c -> COMMERCIAL AT
-    u"'"       #  0x7d -> APOSTROPHE
-    u'='       #  0x7e -> EQUALS SIGN
-    u'"'       #  0x7f -> QUOTATION MARK
+    u':'       #  0x7A -> COLON
+    u'#'       #  0x7B -> NUMBER SIGN
+    u'@'       #  0x7C -> COMMERCIAL AT
+    u"'"       #  0x7D -> APOSTROPHE
+    u'='       #  0x7E -> EQUALS SIGN
+    u'"'       #  0x7F -> QUOTATION MARK
     u'\xd8'    #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
     u'a'       #  0x81 -> LATIN SMALL LETTER A
     u'b'       #  0x82 -> LATIN SMALL LETTER B
@@ -170,12 +170,12 @@ decoding_table = (
     u'g'       #  0x87 -> LATIN SMALL LETTER G
     u'h'       #  0x88 -> LATIN SMALL LETTER H
     u'i'       #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'    #  0x8a -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0x8b -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xf0'    #  0x8c -> LATIN SMALL LETTER ETH (ICELANDIC)
-    u'\xfd'    #  0x8d -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'    #  0x8e -> LATIN SMALL LETTER THORN (ICELANDIC)
-    u'\xb1'    #  0x8f -> PLUS-MINUS SIGN
+    u'\xab'    #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xf0'    #  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
+    u'\xfd'    #  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'    #  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
+    u'\xb1'    #  0x8F -> PLUS-MINUS SIGN
     u'\xb0'    #  0x90 -> DEGREE SIGN
     u'j'       #  0x91 -> LATIN SMALL LETTER J
     u'k'       #  0x92 -> LATIN SMALL LETTER K
@@ -186,108 +186,108 @@ decoding_table = (
     u'p'       #  0x97 -> LATIN SMALL LETTER P
     u'q'       #  0x98 -> LATIN SMALL LETTER Q
     u'r'       #  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'    #  0x9a -> FEMININE ORDINAL INDICATOR
-    u'\xba'    #  0x9b -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'    #  0x9c -> LATIN SMALL LIGATURE AE
-    u'\xb8'    #  0x9d -> CEDILLA
-    u'\xc6'    #  0x9e -> LATIN CAPITAL LIGATURE AE
-    u'\u20ac'  #  0x9f -> EURO SIGN
-    u'\xb5'    #  0xa0 -> MICRO SIGN
-    u'~'       #  0xa1 -> TILDE
-    u's'       #  0xa2 -> LATIN SMALL LETTER S
-    u't'       #  0xa3 -> LATIN SMALL LETTER T
-    u'u'       #  0xa4 -> LATIN SMALL LETTER U
-    u'v'       #  0xa5 -> LATIN SMALL LETTER V
-    u'w'       #  0xa6 -> LATIN SMALL LETTER W
-    u'x'       #  0xa7 -> LATIN SMALL LETTER X
-    u'y'       #  0xa8 -> LATIN SMALL LETTER Y
-    u'z'       #  0xa9 -> LATIN SMALL LETTER Z
-    u'\xa1'    #  0xaa -> INVERTED EXCLAMATION MARK
-    u'\xbf'    #  0xab -> INVERTED QUESTION MARK
-    u'\xd0'    #  0xac -> LATIN CAPITAL LETTER ETH (ICELANDIC)
-    u'\xdd'    #  0xad -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'    #  0xae -> LATIN CAPITAL LETTER THORN (ICELANDIC)
-    u'\xae'    #  0xaf -> REGISTERED SIGN
-    u'^'       #  0xb0 -> CIRCUMFLEX ACCENT
-    u'\xa3'    #  0xb1 -> POUND SIGN
-    u'\xa5'    #  0xb2 -> YEN SIGN
-    u'\xb7'    #  0xb3 -> MIDDLE DOT
-    u'\xa9'    #  0xb4 -> COPYRIGHT SIGN
-    u'\xa7'    #  0xb5 -> SECTION SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xbc'    #  0xb7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xb8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xb9 -> VULGAR FRACTION THREE QUARTERS
-    u'['       #  0xba -> LEFT SQUARE BRACKET
-    u']'       #  0xbb -> RIGHT SQUARE BRACKET
-    u'\xaf'    #  0xbc -> MACRON
-    u'\xa8'    #  0xbd -> DIAERESIS
-    u'\xb4'    #  0xbe -> ACUTE ACCENT
-    u'\xd7'    #  0xbf -> MULTIPLICATION SIGN
-    u'{'       #  0xc0 -> LEFT CURLY BRACKET
-    u'A'       #  0xc1 -> LATIN CAPITAL LETTER A
-    u'B'       #  0xc2 -> LATIN CAPITAL LETTER B
-    u'C'       #  0xc3 -> LATIN CAPITAL LETTER C
-    u'D'       #  0xc4 -> LATIN CAPITAL LETTER D
-    u'E'       #  0xc5 -> LATIN CAPITAL LETTER E
-    u'F'       #  0xc6 -> LATIN CAPITAL LETTER F
-    u'G'       #  0xc7 -> LATIN CAPITAL LETTER G
-    u'H'       #  0xc8 -> LATIN CAPITAL LETTER H
-    u'I'       #  0xc9 -> LATIN CAPITAL LETTER I
-    u'\xad'    #  0xca -> SOFT HYPHEN
-    u'\xf4'    #  0xcb -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0xcc -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'    #  0xcd -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xce -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'    #  0xcf -> LATIN SMALL LETTER O WITH TILDE
-    u'}'       #  0xd0 -> RIGHT CURLY BRACKET
-    u'J'       #  0xd1 -> LATIN CAPITAL LETTER J
-    u'K'       #  0xd2 -> LATIN CAPITAL LETTER K
-    u'L'       #  0xd3 -> LATIN CAPITAL LETTER L
-    u'M'       #  0xd4 -> LATIN CAPITAL LETTER M
-    u'N'       #  0xd5 -> LATIN CAPITAL LETTER N
-    u'O'       #  0xd6 -> LATIN CAPITAL LETTER O
-    u'P'       #  0xd7 -> LATIN CAPITAL LETTER P
-    u'Q'       #  0xd8 -> LATIN CAPITAL LETTER Q
-    u'R'       #  0xd9 -> LATIN CAPITAL LETTER R
-    u'\xb9'    #  0xda -> SUPERSCRIPT ONE
-    u'\xfb'    #  0xdb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xdc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf9'    #  0xdd -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xde -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'    #  0xdf -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\\'      #  0xe0 -> REVERSE SOLIDUS
-    u'\xf7'    #  0xe1 -> DIVISION SIGN
-    u'S'       #  0xe2 -> LATIN CAPITAL LETTER S
-    u'T'       #  0xe3 -> LATIN CAPITAL LETTER T
-    u'U'       #  0xe4 -> LATIN CAPITAL LETTER U
-    u'V'       #  0xe5 -> LATIN CAPITAL LETTER V
-    u'W'       #  0xe6 -> LATIN CAPITAL LETTER W
-    u'X'       #  0xe7 -> LATIN CAPITAL LETTER X
-    u'Y'       #  0xe8 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0xe9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'    #  0xea -> SUPERSCRIPT TWO
-    u'\xd4'    #  0xeb -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd6'    #  0xec -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd2'    #  0xed -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'    #  0xef -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'       #  0xf0 -> DIGIT ZERO
-    u'1'       #  0xf1 -> DIGIT ONE
-    u'2'       #  0xf2 -> DIGIT TWO
-    u'3'       #  0xf3 -> DIGIT THREE
-    u'4'       #  0xf4 -> DIGIT FOUR
-    u'5'       #  0xf5 -> DIGIT FIVE
-    u'6'       #  0xf6 -> DIGIT SIX
-    u'7'       #  0xf7 -> DIGIT SEVEN
-    u'8'       #  0xf8 -> DIGIT EIGHT
-    u'9'       #  0xf9 -> DIGIT NINE
-    u'\xb3'    #  0xfa -> SUPERSCRIPT THREE
-    u'\xdb'    #  0xfb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xfc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd9'    #  0xfd -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xfe -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'    #  0xff -> CONTROL
+    u'\xaa'    #  0x9A -> FEMININE ORDINAL INDICATOR
+    u'\xba'    #  0x9B -> MASCULINE ORDINAL INDICATOR
+    u'\xe6'    #  0x9C -> LATIN SMALL LIGATURE AE
+    u'\xb8'    #  0x9D -> CEDILLA
+    u'\xc6'    #  0x9E -> LATIN CAPITAL LIGATURE AE
+    u'\u20ac'  #  0x9F -> EURO SIGN
+    u'\xb5'    #  0xA0 -> MICRO SIGN
+    u'~'       #  0xA1 -> TILDE
+    u's'       #  0xA2 -> LATIN SMALL LETTER S
+    u't'       #  0xA3 -> LATIN SMALL LETTER T
+    u'u'       #  0xA4 -> LATIN SMALL LETTER U
+    u'v'       #  0xA5 -> LATIN SMALL LETTER V
+    u'w'       #  0xA6 -> LATIN SMALL LETTER W
+    u'x'       #  0xA7 -> LATIN SMALL LETTER X
+    u'y'       #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'       #  0xA9 -> LATIN SMALL LETTER Z
+    u'\xa1'    #  0xAA -> INVERTED EXCLAMATION MARK
+    u'\xbf'    #  0xAB -> INVERTED QUESTION MARK
+    u'\xd0'    #  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
+    u'\xdd'    #  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'    #  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
+    u'\xae'    #  0xAF -> REGISTERED SIGN
+    u'^'       #  0xB0 -> CIRCUMFLEX ACCENT
+    u'\xa3'    #  0xB1 -> POUND SIGN
+    u'\xa5'    #  0xB2 -> YEN SIGN
+    u'\xb7'    #  0xB3 -> MIDDLE DOT
+    u'\xa9'    #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'    #  0xB5 -> SECTION SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xbc'    #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'['       #  0xBA -> LEFT SQUARE BRACKET
+    u']'       #  0xBB -> RIGHT SQUARE BRACKET
+    u'\xaf'    #  0xBC -> MACRON
+    u'\xa8'    #  0xBD -> DIAERESIS
+    u'\xb4'    #  0xBE -> ACUTE ACCENT
+    u'\xd7'    #  0xBF -> MULTIPLICATION SIGN
+    u'{'       #  0xC0 -> LEFT CURLY BRACKET
+    u'A'       #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'       #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'       #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'       #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'       #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'       #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'       #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'       #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'       #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'    #  0xCA -> SOFT HYPHEN
+    u'\xf4'    #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'    #  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'    #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf5'    #  0xCF -> LATIN SMALL LETTER O WITH TILDE
+    u'}'       #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'       #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'       #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'       #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'       #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'       #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'       #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'       #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'       #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'       #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'    #  0xDA -> SUPERSCRIPT ONE
+    u'\xfb'    #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xf9'    #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xff'    #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\\'      #  0xE0 -> REVERSE SOLIDUS
+    u'\xf7'    #  0xE1 -> DIVISION SIGN
+    u'S'       #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'       #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'       #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'       #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'       #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'       #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'       #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'       #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'    #  0xEA -> SUPERSCRIPT TWO
+    u'\xd4'    #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd6'    #  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd2'    #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd5'    #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
+    u'0'       #  0xF0 -> DIGIT ZERO
+    u'1'       #  0xF1 -> DIGIT ONE
+    u'2'       #  0xF2 -> DIGIT TWO
+    u'3'       #  0xF3 -> DIGIT THREE
+    u'4'       #  0xF4 -> DIGIT FOUR
+    u'5'       #  0xF5 -> DIGIT FIVE
+    u'6'       #  0xF6 -> DIGIT SIX
+    u'7'       #  0xF7 -> DIGIT SEVEN
+    u'8'       #  0xF8 -> DIGIT EIGHT
+    u'9'       #  0xF9 -> DIGIT NINE
+    u'\xb3'    #  0xFA -> SUPERSCRIPT THREE
+    u'\xdb'    #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xd9'    #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\x9f'    #  0xFF -> CONTROL
 )
 
 ### Encoding Map
@@ -298,97 +298,97 @@ encoding_map = {
     0x0002: 0x02,      #  START OF TEXT
     0x0003: 0x03,      #  END OF TEXT
     0x0004: 0x37,      #  END OF TRANSMISSION
-    0x0005: 0x2d,      #  ENQUIRY
-    0x0006: 0x2e,      #  ACKNOWLEDGE
-    0x0007: 0x2f,      #  BELL
+    0x0005: 0x2D,      #  ENQUIRY
+    0x0006: 0x2E,      #  ACKNOWLEDGE
+    0x0007: 0x2F,      #  BELL
     0x0008: 0x16,      #  BACKSPACE
     0x0009: 0x05,      #  HORIZONTAL TABULATION
-    0x000a: 0x25,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x25,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
     0x0013: 0x13,      #  DEVICE CONTROL THREE
-    0x0014: 0x3c,      #  DEVICE CONTROL FOUR
-    0x0015: 0x3d,      #  NEGATIVE ACKNOWLEDGE
+    0x0014: 0x3C,      #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,      #  NEGATIVE ACKNOWLEDGE
     0x0016: 0x32,      #  SYNCHRONOUS IDLE
     0x0017: 0x26,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x3f,      #  SUBSTITUTE
-    0x001b: 0x27,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x3F,      #  SUBSTITUTE
+    0x001B: 0x27,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x40,      #  SPACE
-    0x0021: 0x5a,      #  EXCLAMATION MARK
-    0x0022: 0x7f,      #  QUOTATION MARK
-    0x0023: 0x7b,      #  NUMBER SIGN
-    0x0024: 0x5b,      #  DOLLAR SIGN
-    0x0025: 0x6c,      #  PERCENT SIGN
+    0x0021: 0x5A,      #  EXCLAMATION MARK
+    0x0022: 0x7F,      #  QUOTATION MARK
+    0x0023: 0x7B,      #  NUMBER SIGN
+    0x0024: 0x5B,      #  DOLLAR SIGN
+    0x0025: 0x6C,      #  PERCENT SIGN
     0x0026: 0x50,      #  AMPERSAND
-    0x0027: 0x7d,      #  APOSTROPHE
-    0x0028: 0x4d,      #  LEFT PARENTHESIS
-    0x0029: 0x5d,      #  RIGHT PARENTHESIS
-    0x002a: 0x5c,      #  ASTERISK
-    0x002b: 0x4e,      #  PLUS SIGN
-    0x002c: 0x6b,      #  COMMA
-    0x002d: 0x60,      #  HYPHEN-MINUS
-    0x002e: 0x4b,      #  FULL STOP
-    0x002f: 0x61,      #  SOLIDUS
-    0x0030: 0xf0,      #  DIGIT ZERO
-    0x0031: 0xf1,      #  DIGIT ONE
-    0x0032: 0xf2,      #  DIGIT TWO
-    0x0033: 0xf3,      #  DIGIT THREE
-    0x0034: 0xf4,      #  DIGIT FOUR
-    0x0035: 0xf5,      #  DIGIT FIVE
-    0x0036: 0xf6,      #  DIGIT SIX
-    0x0037: 0xf7,      #  DIGIT SEVEN
-    0x0038: 0xf8,      #  DIGIT EIGHT
-    0x0039: 0xf9,      #  DIGIT NINE
-    0x003a: 0x7a,      #  COLON
-    0x003b: 0x5e,      #  SEMICOLON
-    0x003c: 0x4c,      #  LESS-THAN SIGN
-    0x003d: 0x7e,      #  EQUALS SIGN
-    0x003e: 0x6e,      #  GREATER-THAN SIGN
-    0x003f: 0x6f,      #  QUESTION MARK
-    0x0040: 0x7c,      #  COMMERCIAL AT
-    0x0041: 0xc1,      #  LATIN CAPITAL LETTER A
-    0x0042: 0xc2,      #  LATIN CAPITAL LETTER B
-    0x0043: 0xc3,      #  LATIN CAPITAL LETTER C
-    0x0044: 0xc4,      #  LATIN CAPITAL LETTER D
-    0x0045: 0xc5,      #  LATIN CAPITAL LETTER E
-    0x0046: 0xc6,      #  LATIN CAPITAL LETTER F
-    0x0047: 0xc7,      #  LATIN CAPITAL LETTER G
-    0x0048: 0xc8,      #  LATIN CAPITAL LETTER H
-    0x0049: 0xc9,      #  LATIN CAPITAL LETTER I
-    0x004a: 0xd1,      #  LATIN CAPITAL LETTER J
-    0x004b: 0xd2,      #  LATIN CAPITAL LETTER K
-    0x004c: 0xd3,      #  LATIN CAPITAL LETTER L
-    0x004d: 0xd4,      #  LATIN CAPITAL LETTER M
-    0x004e: 0xd5,      #  LATIN CAPITAL LETTER N
-    0x004f: 0xd6,      #  LATIN CAPITAL LETTER O
-    0x0050: 0xd7,      #  LATIN CAPITAL LETTER P
-    0x0051: 0xd8,      #  LATIN CAPITAL LETTER Q
-    0x0052: 0xd9,      #  LATIN CAPITAL LETTER R
-    0x0053: 0xe2,      #  LATIN CAPITAL LETTER S
-    0x0054: 0xe3,      #  LATIN CAPITAL LETTER T
-    0x0055: 0xe4,      #  LATIN CAPITAL LETTER U
-    0x0056: 0xe5,      #  LATIN CAPITAL LETTER V
-    0x0057: 0xe6,      #  LATIN CAPITAL LETTER W
-    0x0058: 0xe7,      #  LATIN CAPITAL LETTER X
-    0x0059: 0xe8,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0xe9,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0xba,      #  LEFT SQUARE BRACKET
-    0x005c: 0xe0,      #  REVERSE SOLIDUS
-    0x005d: 0xbb,      #  RIGHT SQUARE BRACKET
-    0x005e: 0xb0,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x6d,      #  LOW LINE
+    0x0027: 0x7D,      #  APOSTROPHE
+    0x0028: 0x4D,      #  LEFT PARENTHESIS
+    0x0029: 0x5D,      #  RIGHT PARENTHESIS
+    0x002A: 0x5C,      #  ASTERISK
+    0x002B: 0x4E,      #  PLUS SIGN
+    0x002C: 0x6B,      #  COMMA
+    0x002D: 0x60,      #  HYPHEN-MINUS
+    0x002E: 0x4B,      #  FULL STOP
+    0x002F: 0x61,      #  SOLIDUS
+    0x0030: 0xF0,      #  DIGIT ZERO
+    0x0031: 0xF1,      #  DIGIT ONE
+    0x0032: 0xF2,      #  DIGIT TWO
+    0x0033: 0xF3,      #  DIGIT THREE
+    0x0034: 0xF4,      #  DIGIT FOUR
+    0x0035: 0xF5,      #  DIGIT FIVE
+    0x0036: 0xF6,      #  DIGIT SIX
+    0x0037: 0xF7,      #  DIGIT SEVEN
+    0x0038: 0xF8,      #  DIGIT EIGHT
+    0x0039: 0xF9,      #  DIGIT NINE
+    0x003A: 0x7A,      #  COLON
+    0x003B: 0x5E,      #  SEMICOLON
+    0x003C: 0x4C,      #  LESS-THAN SIGN
+    0x003D: 0x7E,      #  EQUALS SIGN
+    0x003E: 0x6E,      #  GREATER-THAN SIGN
+    0x003F: 0x6F,      #  QUESTION MARK
+    0x0040: 0x7C,      #  COMMERCIAL AT
+    0x0041: 0xC1,      #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,      #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,      #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,      #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,      #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,      #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,      #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,      #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,      #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,      #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,      #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,      #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,      #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,      #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,      #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,      #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,      #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,      #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,      #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,      #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,      #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,      #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,      #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,      #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,      #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0xBA,      #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,      #  REVERSE SOLIDUS
+    0x005D: 0xBB,      #  RIGHT SQUARE BRACKET
+    0x005E: 0xB0,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,      #  LOW LINE
     0x0060: 0x79,      #  GRAVE ACCENT
     0x0061: 0x81,      #  LATIN SMALL LETTER A
     0x0062: 0x82,      #  LATIN SMALL LETTER B
@@ -399,28 +399,28 @@ encoding_map = {
     0x0067: 0x87,      #  LATIN SMALL LETTER G
     0x0068: 0x88,      #  LATIN SMALL LETTER H
     0x0069: 0x89,      #  LATIN SMALL LETTER I
-    0x006a: 0x91,      #  LATIN SMALL LETTER J
-    0x006b: 0x92,      #  LATIN SMALL LETTER K
-    0x006c: 0x93,      #  LATIN SMALL LETTER L
-    0x006d: 0x94,      #  LATIN SMALL LETTER M
-    0x006e: 0x95,      #  LATIN SMALL LETTER N
-    0x006f: 0x96,      #  LATIN SMALL LETTER O
+    0x006A: 0x91,      #  LATIN SMALL LETTER J
+    0x006B: 0x92,      #  LATIN SMALL LETTER K
+    0x006C: 0x93,      #  LATIN SMALL LETTER L
+    0x006D: 0x94,      #  LATIN SMALL LETTER M
+    0x006E: 0x95,      #  LATIN SMALL LETTER N
+    0x006F: 0x96,      #  LATIN SMALL LETTER O
     0x0070: 0x97,      #  LATIN SMALL LETTER P
     0x0071: 0x98,      #  LATIN SMALL LETTER Q
     0x0072: 0x99,      #  LATIN SMALL LETTER R
-    0x0073: 0xa2,      #  LATIN SMALL LETTER S
-    0x0074: 0xa3,      #  LATIN SMALL LETTER T
-    0x0075: 0xa4,      #  LATIN SMALL LETTER U
-    0x0076: 0xa5,      #  LATIN SMALL LETTER V
-    0x0077: 0xa6,      #  LATIN SMALL LETTER W
-    0x0078: 0xa7,      #  LATIN SMALL LETTER X
-    0x0079: 0xa8,      #  LATIN SMALL LETTER Y
-    0x007a: 0xa9,      #  LATIN SMALL LETTER Z
-    0x007b: 0xc0,      #  LEFT CURLY BRACKET
-    0x007c: 0x4f,      #  VERTICAL LINE
-    0x007d: 0xd0,      #  RIGHT CURLY BRACKET
-    0x007e: 0xa1,      #  TILDE
-    0x007f: 0x07,      #  DELETE
+    0x0073: 0xA2,      #  LATIN SMALL LETTER S
+    0x0074: 0xA3,      #  LATIN SMALL LETTER T
+    0x0075: 0xA4,      #  LATIN SMALL LETTER U
+    0x0076: 0xA5,      #  LATIN SMALL LETTER V
+    0x0077: 0xA6,      #  LATIN SMALL LETTER W
+    0x0078: 0xA7,      #  LATIN SMALL LETTER X
+    0x0079: 0xA8,      #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,      #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,      #  LEFT CURLY BRACKET
+    0x007C: 0x4F,      #  VERTICAL LINE
+    0x007D: 0xD0,      #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,      #  TILDE
+    0x007F: 0x07,      #  DELETE
     0x0080: 0x20,      #  CONTROL
     0x0081: 0x21,      #  CONTROL
     0x0082: 0x22,      #  CONTROL
@@ -431,15 +431,15 @@ encoding_map = {
     0x0087: 0x17,      #  CONTROL
     0x0088: 0x28,      #  CONTROL
     0x0089: 0x29,      #  CONTROL
-    0x008a: 0x2a,      #  CONTROL
-    0x008b: 0x2b,      #  CONTROL
-    0x008c: 0x2c,      #  CONTROL
-    0x008d: 0x09,      #  CONTROL
-    0x008e: 0x0a,      #  CONTROL
-    0x008f: 0x1b,      #  CONTROL
+    0x008A: 0x2A,      #  CONTROL
+    0x008B: 0x2B,      #  CONTROL
+    0x008C: 0x2C,      #  CONTROL
+    0x008D: 0x09,      #  CONTROL
+    0x008E: 0x0A,      #  CONTROL
+    0x008F: 0x1B,      #  CONTROL
     0x0090: 0x30,      #  CONTROL
     0x0091: 0x31,      #  CONTROL
-    0x0092: 0x1a,      #  CONTROL
+    0x0092: 0x1A,      #  CONTROL
     0x0093: 0x33,      #  CONTROL
     0x0094: 0x34,      #  CONTROL
     0x0095: 0x35,      #  CONTROL
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x08,      #  CONTROL
     0x0098: 0x38,      #  CONTROL
     0x0099: 0x39,      #  CONTROL
-    0x009a: 0x3a,      #  CONTROL
-    0x009b: 0x3b,      #  CONTROL
-    0x009c: 0x04,      #  CONTROL
-    0x009d: 0x14,      #  CONTROL
-    0x009e: 0x3e,      #  CONTROL
-    0x009f: 0xff,      #  CONTROL
-    0x00a0: 0x41,      #  NO-BREAK SPACE
-    0x00a1: 0xaa,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0x4a,      #  CENT SIGN
-    0x00a3: 0xb1,      #  POUND SIGN
-    0x00a5: 0xb2,      #  YEN SIGN
-    0x00a6: 0x6a,      #  BROKEN BAR
-    0x00a7: 0xb5,      #  SECTION SIGN
-    0x00a8: 0xbd,      #  DIAERESIS
-    0x00a9: 0xb4,      #  COPYRIGHT SIGN
-    0x00aa: 0x9a,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x8a,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x5f,      #  NOT SIGN
-    0x00ad: 0xca,      #  SOFT HYPHEN
-    0x00ae: 0xaf,      #  REGISTERED SIGN
-    0x00af: 0xbc,      #  MACRON
-    0x00b0: 0x90,      #  DEGREE SIGN
-    0x00b1: 0x8f,      #  PLUS-MINUS SIGN
-    0x00b2: 0xea,      #  SUPERSCRIPT TWO
-    0x00b3: 0xfa,      #  SUPERSCRIPT THREE
-    0x00b4: 0xbe,      #  ACUTE ACCENT
-    0x00b5: 0xa0,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb3,      #  MIDDLE DOT
-    0x00b8: 0x9d,      #  CEDILLA
-    0x00b9: 0xda,      #  SUPERSCRIPT ONE
-    0x00ba: 0x9b,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x8b,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xb7,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xb8,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xb9,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xab,      #  INVERTED QUESTION MARK
-    0x00c0: 0x64,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x65,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x62,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x66,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x63,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x67,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x9e,      #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x68,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x74,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x71,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x72,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x73,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0x78,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x75,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x76,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x77,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0xac,      #  LATIN CAPITAL LETTER ETH (ICELANDIC)
-    0x00d1: 0x69,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xed,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xeb,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xef,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xec,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xbf,      #  MULTIPLICATION SIGN
-    0x00d8: 0x80,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xfd,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xfe,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xfb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xfc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xad,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0xae,      #  LATIN CAPITAL LETTER THORN (ICELANDIC)
-    0x00df: 0x59,      #  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e0: 0x44,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x45,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x42,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x46,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x43,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x47,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x9c,      #  LATIN SMALL LIGATURE AE
-    0x00e7: 0x48,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x54,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x51,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x52,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x53,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x58,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x55,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x56,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x57,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0x8c,      #  LATIN SMALL LETTER ETH (ICELANDIC)
-    0x00f1: 0x49,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xcd,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xce,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xcb,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xcf,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xcc,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xe1,      #  DIVISION SIGN
-    0x00f8: 0x70,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xdd,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xde,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xdb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xdc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x8d,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0x8e,      #  LATIN SMALL LETTER THORN (ICELANDIC)
-    0x00ff: 0xdf,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x20ac: 0x9f,      #  EURO SIGN
-}
\ No newline at end of file
+    0x009A: 0x3A,      #  CONTROL
+    0x009B: 0x3B,      #  CONTROL
+    0x009C: 0x04,      #  CONTROL
+    0x009D: 0x14,      #  CONTROL
+    0x009E: 0x3E,      #  CONTROL
+    0x009F: 0xFF,      #  CONTROL
+    0x00A0: 0x41,      #  NO-BREAK SPACE
+    0x00A1: 0xAA,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0x4A,      #  CENT SIGN
+    0x00A3: 0xB1,      #  POUND SIGN
+    0x00A5: 0xB2,      #  YEN SIGN
+    0x00A6: 0x6A,      #  BROKEN BAR
+    0x00A7: 0xB5,      #  SECTION SIGN
+    0x00A8: 0xBD,      #  DIAERESIS
+    0x00A9: 0xB4,      #  COPYRIGHT SIGN
+    0x00AA: 0x9A,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0x8A,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0x5F,      #  NOT SIGN
+    0x00AD: 0xCA,      #  SOFT HYPHEN
+    0x00AE: 0xAF,      #  REGISTERED SIGN
+    0x00AF: 0xBC,      #  MACRON
+    0x00B0: 0x90,      #  DEGREE SIGN
+    0x00B1: 0x8F,      #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,      #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,      #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,      #  ACUTE ACCENT
+    0x00B5: 0xA0,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB3,      #  MIDDLE DOT
+    0x00B8: 0x9D,      #  CEDILLA
+    0x00B9: 0xDA,      #  SUPERSCRIPT ONE
+    0x00BA: 0x9B,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0x8B,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xAB,      #  INVERTED QUESTION MARK
+    0x00C0: 0x64,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0x65,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0x62,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0x66,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x63,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x67,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0x9E,      #  LATIN CAPITAL LIGATURE AE
+    0x00C7: 0x68,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0x74,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x71,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0x72,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0x73,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0x78,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0x75,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0x76,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0x77,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xAC,      #  LATIN CAPITAL LETTER ETH (ICELANDIC)
+    0x00D1: 0x69,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xED,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEB,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xEF,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xEC,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xBF,      #  MULTIPLICATION SIGN
+    0x00D8: 0x80,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xFD,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xFE,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xFB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xFC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xAD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xAE,      #  LATIN CAPITAL LETTER THORN (ICELANDIC)
+    0x00DF: 0x59,      #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00E0: 0x44,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x45,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x42,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x46,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x43,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x47,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0x9C,      #  LATIN SMALL LIGATURE AE
+    0x00E7: 0x48,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x54,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x51,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x52,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x53,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x58,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x55,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x56,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x57,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0x8C,      #  LATIN SMALL LETTER ETH (ICELANDIC)
+    0x00F1: 0x49,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xCD,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xCE,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xCB,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xCF,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xCC,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xE1,      #  DIVISION SIGN
+    0x00F8: 0x70,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xDD,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xDE,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xDB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xDC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0x8D,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0x8E,      #  LATIN SMALL LETTER THORN (ICELANDIC)
+    0x00FF: 0xDF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x20AC: 0x9F,      #  EURO SIGN
+}
+
index 3068d1d904a05e3913a8513eb98c072a1d1d972c..3aa78a8bf005e740edf3652af1e36b2027a87f4c 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u20ac'  #  0x80 -> EURO SIGN
     u'\ufffe'  #  0x81 -> UNDEFINED
     u'\u201a'  #  0x82 -> SINGLE LOW-9 QUOTATION MARK
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2021'  #  0x87 -> DOUBLE DAGGER
     u'\ufffe'  #  0x88 -> UNDEFINED
     u'\u2030'  #  0x89 -> PER MILLE SIGN
-    u'\u0160'  #  0x8a -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2039'  #  0x8b -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u015a'  #  0x8c -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u0164'  #  0x8d -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u017d'  #  0x8e -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u0179'  #  0x8f -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\u0160'  #  0x8A -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u2039'  #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u015a'  #  0x8C -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u0164'  #  0x8D -> LATIN CAPITAL LETTER T WITH CARON
+    u'\u017d'  #  0x8E -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u0179'  #  0x8F -> LATIN CAPITAL LETTER Z WITH ACUTE
     u'\ufffe'  #  0x90 -> UNDEFINED
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\ufffe'  #  0x98 -> UNDEFINED
     u'\u2122'  #  0x99 -> TRADE MARK SIGN
-    u'\u0161'  #  0x9a -> LATIN SMALL LETTER S WITH CARON
-    u'\u203a'  #  0x9b -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u015b'  #  0x9c -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u0165'  #  0x9d -> LATIN SMALL LETTER T WITH CARON
-    u'\u017e'  #  0x9e -> LATIN SMALL LETTER Z WITH CARON
-    u'\u017a'  #  0x9f -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u02c7'  #  0xa1 -> CARON
-    u'\u02d8'  #  0xa2 -> BREVE
-    u'\u0141'  #  0xa3 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\u0104'  #  0xa5 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u015e'  #  0xaa -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\u017b'  #  0xaf -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u02db'  #  0xb2 -> OGONEK
-    u'\u0142'  #  0xb3 -> LATIN SMALL LETTER L WITH STROKE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\u0105'  #  0xb9 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u015f'  #  0xba -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u013d'  #  0xbc -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u02dd'  #  0xbd -> DOUBLE ACUTE ACCENT
-    u'\u013e'  #  0xbe -> LATIN SMALL LETTER L WITH CARON
-    u'\u017c'  #  0xbf -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u0154'  #  0xc0 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'  #  0xc3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0139'  #  0xc5 -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u0106'  #  0xc6 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\u010c'  #  0xc8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'  #  0xca -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u011a'  #  0xcc -> LATIN CAPITAL LETTER E WITH CARON
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u010e'  #  0xcf -> LATIN CAPITAL LETTER D WITH CARON
-    u'\u0110'  #  0xd0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0143'  #  0xd1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0147'  #  0xd2 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0150'  #  0xd5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\u0158'  #  0xd8 -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u016e'  #  0xd9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u0170'  #  0xdb -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'    #  0xdd -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0162'  #  0xde -> LATIN CAPITAL LETTER T WITH CEDILLA
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\u0155'  #  0xe0 -> LATIN SMALL LETTER R WITH ACUTE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'  #  0xe3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u013a'  #  0xe5 -> LATIN SMALL LETTER L WITH ACUTE
-    u'\u0107'  #  0xe6 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\u010d'  #  0xe8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'  #  0xea -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u011b'  #  0xec -> LATIN SMALL LETTER E WITH CARON
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u010f'  #  0xef -> LATIN SMALL LETTER D WITH CARON
-    u'\u0111'  #  0xf0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0144'  #  0xf1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0148'  #  0xf2 -> LATIN SMALL LETTER N WITH CARON
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0151'  #  0xf5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\u0159'  #  0xf8 -> LATIN SMALL LETTER R WITH CARON
-    u'\u016f'  #  0xf9 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u0171'  #  0xfb -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'    #  0xfd -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0163'  #  0xfe -> LATIN SMALL LETTER T WITH CEDILLA
-    u'\u02d9'  #  0xff -> DOT ABOVE
+    u'\u0161'  #  0x9A -> LATIN SMALL LETTER S WITH CARON
+    u'\u203a'  #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u015b'  #  0x9C -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u0165'  #  0x9D -> LATIN SMALL LETTER T WITH CARON
+    u'\u017e'  #  0x9E -> LATIN SMALL LETTER Z WITH CARON
+    u'\u017a'  #  0x9F -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u02c7'  #  0xA1 -> CARON
+    u'\u02d8'  #  0xA2 -> BREVE
+    u'\u0141'  #  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\u0104'  #  0xA5 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u015e'  #  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\u017b'  #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u02db'  #  0xB2 -> OGONEK
+    u'\u0142'  #  0xB3 -> LATIN SMALL LETTER L WITH STROKE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\u0105'  #  0xB9 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u015f'  #  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u013d'  #  0xBC -> LATIN CAPITAL LETTER L WITH CARON
+    u'\u02dd'  #  0xBD -> DOUBLE ACUTE ACCENT
+    u'\u013e'  #  0xBE -> LATIN SMALL LETTER L WITH CARON
+    u'\u017c'  #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u0154'  #  0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0102'  #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u0139'  #  0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
+    u'\u0106'  #  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\u010c'  #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0118'  #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u011a'  #  0xCC -> LATIN CAPITAL LETTER E WITH CARON
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\u010e'  #  0xCF -> LATIN CAPITAL LETTER D WITH CARON
+    u'\u0110'  #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0143'  #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\u0147'  #  0xD2 -> LATIN CAPITAL LETTER N WITH CARON
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0150'  #  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0158'  #  0xD8 -> LATIN CAPITAL LETTER R WITH CARON
+    u'\u016e'  #  0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\u0170'  #  0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'    #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\u0162'  #  0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\u0155'  #  0xE0 -> LATIN SMALL LETTER R WITH ACUTE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0103'  #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u013a'  #  0xE5 -> LATIN SMALL LETTER L WITH ACUTE
+    u'\u0107'  #  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\u010d'  #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0119'  #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u011b'  #  0xEC -> LATIN SMALL LETTER E WITH CARON
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\u010f'  #  0xEF -> LATIN SMALL LETTER D WITH CARON
+    u'\u0111'  #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0144'  #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0148'  #  0xF2 -> LATIN SMALL LETTER N WITH CARON
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u0151'  #  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\u0159'  #  0xF8 -> LATIN SMALL LETTER R WITH CARON
+    u'\u016f'  #  0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\u0171'  #  0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'    #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\u0163'  #  0xFE -> LATIN SMALL LETTER T WITH CEDILLA
+    u'\u02d9'  #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,133 +415,134 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xdd,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0xfd,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x0102: 0xc3,      #  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xe3,      #  LATIN SMALL LETTER A WITH BREVE
-    0x0104: 0xa5,      #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xb9,      #  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xc6,      #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xe6,      #  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0xc8,      #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0xe8,      #  LATIN SMALL LETTER C WITH CARON
-    0x010e: 0xcf,      #  LATIN CAPITAL LETTER D WITH CARON
-    0x010f: 0xef,      #  LATIN SMALL LETTER D WITH CARON
-    0x0110: 0xd0,      #  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xf0,      #  LATIN SMALL LETTER D WITH STROKE
-    0x0118: 0xca,      #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xea,      #  LATIN SMALL LETTER E WITH OGONEK
-    0x011a: 0xcc,      #  LATIN CAPITAL LETTER E WITH CARON
-    0x011b: 0xec,      #  LATIN SMALL LETTER E WITH CARON
-    0x0139: 0xc5,      #  LATIN CAPITAL LETTER L WITH ACUTE
-    0x013a: 0xe5,      #  LATIN SMALL LETTER L WITH ACUTE
-    0x013d: 0xbc,      #  LATIN CAPITAL LETTER L WITH CARON
-    0x013e: 0xbe,      #  LATIN SMALL LETTER L WITH CARON
-    0x0141: 0xa3,      #  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xb3,      #  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xd1,      #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xf1,      #  LATIN SMALL LETTER N WITH ACUTE
-    0x0147: 0xd2,      #  LATIN CAPITAL LETTER N WITH CARON
-    0x0148: 0xf2,      #  LATIN SMALL LETTER N WITH CARON
-    0x0150: 0xd5,      #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0xf5,      #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0154: 0xc0,      #  LATIN CAPITAL LETTER R WITH ACUTE
-    0x0155: 0xe0,      #  LATIN SMALL LETTER R WITH ACUTE
-    0x0158: 0xd8,      #  LATIN CAPITAL LETTER R WITH CARON
-    0x0159: 0xf8,      #  LATIN SMALL LETTER R WITH CARON
-    0x015a: 0x8c,      #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0x9c,      #  LATIN SMALL LETTER S WITH ACUTE
-    0x015e: 0xaa,      #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0xba,      #  LATIN SMALL LETTER S WITH CEDILLA
-    0x0160: 0x8a,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x9a,      #  LATIN SMALL LETTER S WITH CARON
-    0x0162: 0xde,      #  LATIN CAPITAL LETTER T WITH CEDILLA
-    0x0163: 0xfe,      #  LATIN SMALL LETTER T WITH CEDILLA
-    0x0164: 0x8d,      #  LATIN CAPITAL LETTER T WITH CARON
-    0x0165: 0x9d,      #  LATIN SMALL LETTER T WITH CARON
-    0x016e: 0xd9,      #  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x016f: 0xf9,      #  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0170: 0xdb,      #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0xfb,      #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0179: 0x8f,      #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0x9f,      #  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0xaf,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0xbf,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0x8e,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0x9e,      #  LATIN SMALL LETTER Z WITH CARON
-    0x02c7: 0xa1,      #  CARON
-    0x02d8: 0xa2,      #  BREVE
-    0x02d9: 0xff,      #  DOT ABOVE
-    0x02db: 0xb2,      #  OGONEK
-    0x02dd: 0xbd,      #  DOUBLE ACUTE ACCENT
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x0102: 0xC3,      #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xE3,      #  LATIN SMALL LETTER A WITH BREVE
+    0x0104: 0xA5,      #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xB9,      #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC6,      #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE6,      #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,      #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,      #  LATIN SMALL LETTER C WITH CARON
+    0x010E: 0xCF,      #  LATIN CAPITAL LETTER D WITH CARON
+    0x010F: 0xEF,      #  LATIN SMALL LETTER D WITH CARON
+    0x0110: 0xD0,      #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,      #  LATIN SMALL LETTER D WITH STROKE
+    0x0118: 0xCA,      #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xEA,      #  LATIN SMALL LETTER E WITH OGONEK
+    0x011A: 0xCC,      #  LATIN CAPITAL LETTER E WITH CARON
+    0x011B: 0xEC,      #  LATIN SMALL LETTER E WITH CARON
+    0x0139: 0xC5,      #  LATIN CAPITAL LETTER L WITH ACUTE
+    0x013A: 0xE5,      #  LATIN SMALL LETTER L WITH ACUTE
+    0x013D: 0xBC,      #  LATIN CAPITAL LETTER L WITH CARON
+    0x013E: 0xBE,      #  LATIN SMALL LETTER L WITH CARON
+    0x0141: 0xA3,      #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xB3,      #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,      #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,      #  LATIN SMALL LETTER N WITH ACUTE
+    0x0147: 0xD2,      #  LATIN CAPITAL LETTER N WITH CARON
+    0x0148: 0xF2,      #  LATIN SMALL LETTER N WITH CARON
+    0x0150: 0xD5,      #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x0151: 0xF5,      #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x0154: 0xC0,      #  LATIN CAPITAL LETTER R WITH ACUTE
+    0x0155: 0xE0,      #  LATIN SMALL LETTER R WITH ACUTE
+    0x0158: 0xD8,      #  LATIN CAPITAL LETTER R WITH CARON
+    0x0159: 0xF8,      #  LATIN SMALL LETTER R WITH CARON
+    0x015A: 0x8C,      #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0x9C,      #  LATIN SMALL LETTER S WITH ACUTE
+    0x015E: 0xAA,      #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xBA,      #  LATIN SMALL LETTER S WITH CEDILLA
+    0x0160: 0x8A,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0x9A,      #  LATIN SMALL LETTER S WITH CARON
+    0x0162: 0xDE,      #  LATIN CAPITAL LETTER T WITH CEDILLA
+    0x0163: 0xFE,      #  LATIN SMALL LETTER T WITH CEDILLA
+    0x0164: 0x8D,      #  LATIN CAPITAL LETTER T WITH CARON
+    0x0165: 0x9D,      #  LATIN SMALL LETTER T WITH CARON
+    0x016E: 0xD9,      #  LATIN CAPITAL LETTER U WITH RING ABOVE
+    0x016F: 0xF9,      #  LATIN SMALL LETTER U WITH RING ABOVE
+    0x0170: 0xDB,      #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x0171: 0xFB,      #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x0179: 0x8F,      #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0x9F,      #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xAF,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xBF,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0x8E,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0x9E,      #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0xA1,      #  CARON
+    0x02D8: 0xA2,      #  BREVE
+    0x02D9: 0xFF,      #  DOT ABOVE
+    0x02DB: 0xB2,      #  OGONEK
+    0x02DD: 0xBD,      #  DOUBLE ACUTE ACCENT
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x201A: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
     0x2020: 0x86,      #  DAGGER
     0x2021: 0x87,      #  DOUBLE DAGGER
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x89,      #  PER MILLE SIGN
-    0x2039: 0x8b,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0x9b,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20ac: 0x80,      #  EURO SIGN
+    0x2039: 0x8B,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,      #  EURO SIGN
     0x2122: 0x99,      #  TRADE MARK SIGN
-}
\ No newline at end of file
+}
+
index 47073032114677541412e15b0aad025f6eedffb9..e62806d5e45af4dda11f1ffa1ae17f4e071e32d6 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u0402'  #  0x80 -> CYRILLIC CAPITAL LETTER DJE
     u'\u0403'  #  0x81 -> CYRILLIC CAPITAL LETTER GJE
     u'\u201a'  #  0x82 -> SINGLE LOW-9 QUOTATION MARK
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2021'  #  0x87 -> DOUBLE DAGGER
     u'\u20ac'  #  0x88 -> EURO SIGN
     u'\u2030'  #  0x89 -> PER MILLE SIGN
-    u'\u0409'  #  0x8a -> CYRILLIC CAPITAL LETTER LJE
-    u'\u2039'  #  0x8b -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u040a'  #  0x8c -> CYRILLIC CAPITAL LETTER NJE
-    u'\u040c'  #  0x8d -> CYRILLIC CAPITAL LETTER KJE
-    u'\u040b'  #  0x8e -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u040f'  #  0x8f -> CYRILLIC CAPITAL LETTER DZHE
+    u'\u0409'  #  0x8A -> CYRILLIC CAPITAL LETTER LJE
+    u'\u2039'  #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u040a'  #  0x8C -> CYRILLIC CAPITAL LETTER NJE
+    u'\u040c'  #  0x8D -> CYRILLIC CAPITAL LETTER KJE
+    u'\u040b'  #  0x8E -> CYRILLIC CAPITAL LETTER TSHE
+    u'\u040f'  #  0x8F -> CYRILLIC CAPITAL LETTER DZHE
     u'\u0452'  #  0x90 -> CYRILLIC SMALL LETTER DJE
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\ufffe'  #  0x98 -> UNDEFINED
     u'\u2122'  #  0x99 -> TRADE MARK SIGN
-    u'\u0459'  #  0x9a -> CYRILLIC SMALL LETTER LJE
-    u'\u203a'  #  0x9b -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u045a'  #  0x9c -> CYRILLIC SMALL LETTER NJE
-    u'\u045c'  #  0x9d -> CYRILLIC SMALL LETTER KJE
-    u'\u045b'  #  0x9e -> CYRILLIC SMALL LETTER TSHE
-    u'\u045f'  #  0x9f -> CYRILLIC SMALL LETTER DZHE
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u040e'  #  0xa1 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045e'  #  0xa2 -> CYRILLIC SMALL LETTER SHORT U
-    u'\u0408'  #  0xa3 -> CYRILLIC CAPITAL LETTER JE
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\u0490'  #  0xa5 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\u0401'  #  0xa8 -> CYRILLIC CAPITAL LETTER IO
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u0404'  #  0xaa -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\u0407'  #  0xaf -> CYRILLIC CAPITAL LETTER YI
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u0406'  #  0xb2 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0456'  #  0xb3 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0491'  #  0xb4 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\u0451'  #  0xb8 -> CYRILLIC SMALL LETTER IO
-    u'\u2116'  #  0xb9 -> NUMERO SIGN
-    u'\u0454'  #  0xba -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0458'  #  0xbc -> CYRILLIC SMALL LETTER JE
-    u'\u0405'  #  0xbd -> CYRILLIC CAPITAL LETTER DZE
-    u'\u0455'  #  0xbe -> CYRILLIC SMALL LETTER DZE
-    u'\u0457'  #  0xbf -> CYRILLIC SMALL LETTER YI
-    u'\u0410'  #  0xc0 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'  #  0xc1 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'  #  0xc2 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'  #  0xc3 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'  #  0xc4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'  #  0xc5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'  #  0xc6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'  #  0xc7 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'  #  0xc8 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'  #  0xc9 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'  #  0xca -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'  #  0xcb -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'  #  0xcc -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'  #  0xcd -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'  #  0xce -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'  #  0xcf -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'  #  0xd0 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'  #  0xd1 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'  #  0xd2 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'  #  0xd3 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'  #  0xd4 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'  #  0xd5 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'  #  0xd6 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'  #  0xd7 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'  #  0xd8 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'  #  0xd9 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'  #  0xda -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'  #  0xdb -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'  #  0xdc -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'  #  0xdd -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'  #  0xde -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'  #  0xdf -> CYRILLIC CAPITAL LETTER YA
-    u'\u0430'  #  0xe0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'  #  0xe1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'  #  0xe2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'  #  0xe3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'  #  0xe4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'  #  0xe5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'  #  0xe6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'  #  0xe7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'  #  0xe8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'  #  0xe9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'  #  0xea -> CYRILLIC SMALL LETTER KA
-    u'\u043b'  #  0xeb -> CYRILLIC SMALL LETTER EL
-    u'\u043c'  #  0xec -> CYRILLIC SMALL LETTER EM
-    u'\u043d'  #  0xed -> CYRILLIC SMALL LETTER EN
-    u'\u043e'  #  0xee -> CYRILLIC SMALL LETTER O
-    u'\u043f'  #  0xef -> CYRILLIC SMALL LETTER PE
-    u'\u0440'  #  0xf0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'  #  0xf1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'  #  0xf2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'  #  0xf3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'  #  0xf4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'  #  0xf5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'  #  0xf6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'  #  0xf7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'  #  0xf8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'  #  0xf9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'  #  0xfa -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'  #  0xfb -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'  #  0xfc -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'  #  0xfd -> CYRILLIC SMALL LETTER E
-    u'\u044e'  #  0xfe -> CYRILLIC SMALL LETTER YU
-    u'\u044f'  #  0xff -> CYRILLIC SMALL LETTER YA
+    u'\u0459'  #  0x9A -> CYRILLIC SMALL LETTER LJE
+    u'\u203a'  #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u045a'  #  0x9C -> CYRILLIC SMALL LETTER NJE
+    u'\u045c'  #  0x9D -> CYRILLIC SMALL LETTER KJE
+    u'\u045b'  #  0x9E -> CYRILLIC SMALL LETTER TSHE
+    u'\u045f'  #  0x9F -> CYRILLIC SMALL LETTER DZHE
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u040e'  #  0xA1 -> CYRILLIC CAPITAL LETTER SHORT U
+    u'\u045e'  #  0xA2 -> CYRILLIC SMALL LETTER SHORT U
+    u'\u0408'  #  0xA3 -> CYRILLIC CAPITAL LETTER JE
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\u0490'  #  0xA5 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\u0401'  #  0xA8 -> CYRILLIC CAPITAL LETTER IO
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u0404'  #  0xAA -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\u0407'  #  0xAF -> CYRILLIC CAPITAL LETTER YI
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u0406'  #  0xB2 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0456'  #  0xB3 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0491'  #  0xB4 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\u0451'  #  0xB8 -> CYRILLIC SMALL LETTER IO
+    u'\u2116'  #  0xB9 -> NUMERO SIGN
+    u'\u0454'  #  0xBA -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u0458'  #  0xBC -> CYRILLIC SMALL LETTER JE
+    u'\u0405'  #  0xBD -> CYRILLIC CAPITAL LETTER DZE
+    u'\u0455'  #  0xBE -> CYRILLIC SMALL LETTER DZE
+    u'\u0457'  #  0xBF -> CYRILLIC SMALL LETTER YI
+    u'\u0410'  #  0xC0 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'  #  0xC1 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0412'  #  0xC2 -> CYRILLIC CAPITAL LETTER VE
+    u'\u0413'  #  0xC3 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0414'  #  0xC4 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'  #  0xC5 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0416'  #  0xC6 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0417'  #  0xC7 -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0418'  #  0xC8 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'  #  0xC9 -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'  #  0xCA -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'  #  0xCB -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'  #  0xCC -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'  #  0xCD -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'  #  0xCE -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'  #  0xCF -> CYRILLIC CAPITAL LETTER PE
+    u'\u0420'  #  0xD0 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'  #  0xD1 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'  #  0xD2 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'  #  0xD3 -> CYRILLIC CAPITAL LETTER U
+    u'\u0424'  #  0xD4 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0425'  #  0xD5 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0426'  #  0xD6 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0427'  #  0xD7 -> CYRILLIC CAPITAL LETTER CHE
+    u'\u0428'  #  0xD8 -> CYRILLIC CAPITAL LETTER SHA
+    u'\u0429'  #  0xD9 -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u042a'  #  0xDA -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\u042b'  #  0xDB -> CYRILLIC CAPITAL LETTER YERU
+    u'\u042c'  #  0xDC -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042d'  #  0xDD -> CYRILLIC CAPITAL LETTER E
+    u'\u042e'  #  0xDE -> CYRILLIC CAPITAL LETTER YU
+    u'\u042f'  #  0xDF -> CYRILLIC CAPITAL LETTER YA
+    u'\u0430'  #  0xE0 -> CYRILLIC SMALL LETTER A
+    u'\u0431'  #  0xE1 -> CYRILLIC SMALL LETTER BE
+    u'\u0432'  #  0xE2 -> CYRILLIC SMALL LETTER VE
+    u'\u0433'  #  0xE3 -> CYRILLIC SMALL LETTER GHE
+    u'\u0434'  #  0xE4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'  #  0xE5 -> CYRILLIC SMALL LETTER IE
+    u'\u0436'  #  0xE6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0437'  #  0xE7 -> CYRILLIC SMALL LETTER ZE
+    u'\u0438'  #  0xE8 -> CYRILLIC SMALL LETTER I
+    u'\u0439'  #  0xE9 -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'  #  0xEA -> CYRILLIC SMALL LETTER KA
+    u'\u043b'  #  0xEB -> CYRILLIC SMALL LETTER EL
+    u'\u043c'  #  0xEC -> CYRILLIC SMALL LETTER EM
+    u'\u043d'  #  0xED -> CYRILLIC SMALL LETTER EN
+    u'\u043e'  #  0xEE -> CYRILLIC SMALL LETTER O
+    u'\u043f'  #  0xEF -> CYRILLIC SMALL LETTER PE
+    u'\u0440'  #  0xF0 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'  #  0xF1 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'  #  0xF2 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'  #  0xF3 -> CYRILLIC SMALL LETTER U
+    u'\u0444'  #  0xF4 -> CYRILLIC SMALL LETTER EF
+    u'\u0445'  #  0xF5 -> CYRILLIC SMALL LETTER HA
+    u'\u0446'  #  0xF6 -> CYRILLIC SMALL LETTER TSE
+    u'\u0447'  #  0xF7 -> CYRILLIC SMALL LETTER CHE
+    u'\u0448'  #  0xF8 -> CYRILLIC SMALL LETTER SHA
+    u'\u0449'  #  0xF9 -> CYRILLIC SMALL LETTER SHCHA
+    u'\u044a'  #  0xFA -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u044b'  #  0xFB -> CYRILLIC SMALL LETTER YERU
+    u'\u044c'  #  0xFC -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044d'  #  0xFD -> CYRILLIC SMALL LETTER E
+    u'\u044e'  #  0xFE -> CYRILLIC SMALL LETTER YU
+    u'\u044f'  #  0xFF -> CYRILLIC SMALL LETTER YA
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,137 +415,138 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x0401: 0xa8,      #  CYRILLIC CAPITAL LETTER IO
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x0401: 0xA8,      #  CYRILLIC CAPITAL LETTER IO
     0x0402: 0x80,      #  CYRILLIC CAPITAL LETTER DJE
     0x0403: 0x81,      #  CYRILLIC CAPITAL LETTER GJE
-    0x0404: 0xaa,      #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0405: 0xbd,      #  CYRILLIC CAPITAL LETTER DZE
-    0x0406: 0xb2,      #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0xaf,      #  CYRILLIC CAPITAL LETTER YI
-    0x0408: 0xa3,      #  CYRILLIC CAPITAL LETTER JE
-    0x0409: 0x8a,      #  CYRILLIC CAPITAL LETTER LJE
-    0x040a: 0x8c,      #  CYRILLIC CAPITAL LETTER NJE
-    0x040b: 0x8e,      #  CYRILLIC CAPITAL LETTER TSHE
-    0x040c: 0x8d,      #  CYRILLIC CAPITAL LETTER KJE
-    0x040e: 0xa1,      #  CYRILLIC CAPITAL LETTER SHORT U
-    0x040f: 0x8f,      #  CYRILLIC CAPITAL LETTER DZHE
-    0x0410: 0xc0,      #  CYRILLIC CAPITAL LETTER A
-    0x0411: 0xc1,      #  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0xc2,      #  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0xc3,      #  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0xc4,      #  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0xc5,      #  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0xc6,      #  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0xc7,      #  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0xc8,      #  CYRILLIC CAPITAL LETTER I
-    0x0419: 0xc9,      #  CYRILLIC CAPITAL LETTER SHORT I
-    0x041a: 0xca,      #  CYRILLIC CAPITAL LETTER KA
-    0x041b: 0xcb,      #  CYRILLIC CAPITAL LETTER EL
-    0x041c: 0xcc,      #  CYRILLIC CAPITAL LETTER EM
-    0x041d: 0xcd,      #  CYRILLIC CAPITAL LETTER EN
-    0x041e: 0xce,      #  CYRILLIC CAPITAL LETTER O
-    0x041f: 0xcf,      #  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0xd0,      #  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0xd1,      #  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0xd2,      #  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0xd3,      #  CYRILLIC CAPITAL LETTER U
-    0x0424: 0xd4,      #  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0xd5,      #  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0xd6,      #  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0xd7,      #  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0xd8,      #  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0xd9,      #  CYRILLIC CAPITAL LETTER SHCHA
-    0x042a: 0xda,      #  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042b: 0xdb,      #  CYRILLIC CAPITAL LETTER YERU
-    0x042c: 0xdc,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042d: 0xdd,      #  CYRILLIC CAPITAL LETTER E
-    0x042e: 0xde,      #  CYRILLIC CAPITAL LETTER YU
-    0x042f: 0xdf,      #  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xe0,      #  CYRILLIC SMALL LETTER A
-    0x0431: 0xe1,      #  CYRILLIC SMALL LETTER BE
-    0x0432: 0xe2,      #  CYRILLIC SMALL LETTER VE
-    0x0433: 0xe3,      #  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xe4,      #  CYRILLIC SMALL LETTER DE
-    0x0435: 0xe5,      #  CYRILLIC SMALL LETTER IE
-    0x0436: 0xe6,      #  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xe7,      #  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xe8,      #  CYRILLIC SMALL LETTER I
-    0x0439: 0xe9,      #  CYRILLIC SMALL LETTER SHORT I
-    0x043a: 0xea,      #  CYRILLIC SMALL LETTER KA
-    0x043b: 0xeb,      #  CYRILLIC SMALL LETTER EL
-    0x043c: 0xec,      #  CYRILLIC SMALL LETTER EM
-    0x043d: 0xed,      #  CYRILLIC SMALL LETTER EN
-    0x043e: 0xee,      #  CYRILLIC SMALL LETTER O
-    0x043f: 0xef,      #  CYRILLIC SMALL LETTER PE
-    0x0440: 0xf0,      #  CYRILLIC SMALL LETTER ER
-    0x0441: 0xf1,      #  CYRILLIC SMALL LETTER ES
-    0x0442: 0xf2,      #  CYRILLIC SMALL LETTER TE
-    0x0443: 0xf3,      #  CYRILLIC SMALL LETTER U
-    0x0444: 0xf4,      #  CYRILLIC SMALL LETTER EF
-    0x0445: 0xf5,      #  CYRILLIC SMALL LETTER HA
-    0x0446: 0xf6,      #  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xf7,      #  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xf8,      #  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xf9,      #  CYRILLIC SMALL LETTER SHCHA
-    0x044a: 0xfa,      #  CYRILLIC SMALL LETTER HARD SIGN
-    0x044b: 0xfb,      #  CYRILLIC SMALL LETTER YERU
-    0x044c: 0xfc,      #  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044d: 0xfd,      #  CYRILLIC SMALL LETTER E
-    0x044e: 0xfe,      #  CYRILLIC SMALL LETTER YU
-    0x044f: 0xff,      #  CYRILLIC SMALL LETTER YA
-    0x0451: 0xb8,      #  CYRILLIC SMALL LETTER IO
+    0x0404: 0xAA,      #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0405: 0xBD,      #  CYRILLIC CAPITAL LETTER DZE
+    0x0406: 0xB2,      #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0407: 0xAF,      #  CYRILLIC CAPITAL LETTER YI
+    0x0408: 0xA3,      #  CYRILLIC CAPITAL LETTER JE
+    0x0409: 0x8A,      #  CYRILLIC CAPITAL LETTER LJE
+    0x040A: 0x8C,      #  CYRILLIC CAPITAL LETTER NJE
+    0x040B: 0x8E,      #  CYRILLIC CAPITAL LETTER TSHE
+    0x040C: 0x8D,      #  CYRILLIC CAPITAL LETTER KJE
+    0x040E: 0xA1,      #  CYRILLIC CAPITAL LETTER SHORT U
+    0x040F: 0x8F,      #  CYRILLIC CAPITAL LETTER DZHE
+    0x0410: 0xC0,      #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0xC1,      #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0xC2,      #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0xC3,      #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0xC4,      #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0xC5,      #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0xC6,      #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0xC7,      #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0xC8,      #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0xC9,      #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041A: 0xCA,      #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0xCB,      #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0xCC,      #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0xCD,      #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0xCE,      #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0xCF,      #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0xD0,      #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0xD1,      #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0xD2,      #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0xD3,      #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0xD4,      #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0xD5,      #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0xD6,      #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0xD7,      #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0xD8,      #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0xD9,      #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042A: 0xDA,      #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0xDB,      #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0xDC,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0xDD,      #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0xDE,      #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0xDF,      #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xE0,      #  CYRILLIC SMALL LETTER A
+    0x0431: 0xE1,      #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xE2,      #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xE3,      #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xE4,      #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xE5,      #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xE6,      #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xE7,      #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xE8,      #  CYRILLIC SMALL LETTER I
+    0x0439: 0xE9,      #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xEA,      #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xEB,      #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xEC,      #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xED,      #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xEE,      #  CYRILLIC SMALL LETTER O
+    0x043F: 0xEF,      #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xF0,      #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xF1,      #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xF2,      #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xF3,      #  CYRILLIC SMALL LETTER U
+    0x0444: 0xF4,      #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xF5,      #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xF6,      #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xF7,      #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xF8,      #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xF9,      #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xFA,      #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xFB,      #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xFC,      #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xFD,      #  CYRILLIC SMALL LETTER E
+    0x044E: 0xFE,      #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xFF,      #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xB8,      #  CYRILLIC SMALL LETTER IO
     0x0452: 0x90,      #  CYRILLIC SMALL LETTER DJE
     0x0453: 0x83,      #  CYRILLIC SMALL LETTER GJE
-    0x0454: 0xba,      #  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0455: 0xbe,      #  CYRILLIC SMALL LETTER DZE
-    0x0456: 0xb3,      #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0xbf,      #  CYRILLIC SMALL LETTER YI
-    0x0458: 0xbc,      #  CYRILLIC SMALL LETTER JE
-    0x0459: 0x9a,      #  CYRILLIC SMALL LETTER LJE
-    0x045a: 0x9c,      #  CYRILLIC SMALL LETTER NJE
-    0x045b: 0x9e,      #  CYRILLIC SMALL LETTER TSHE
-    0x045c: 0x9d,      #  CYRILLIC SMALL LETTER KJE
-    0x045e: 0xa2,      #  CYRILLIC SMALL LETTER SHORT U
-    0x045f: 0x9f,      #  CYRILLIC SMALL LETTER DZHE
-    0x0490: 0xa5,      #  CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    0x0491: 0xb4,      #  CYRILLIC SMALL LETTER GHE WITH UPTURN
+    0x0454: 0xBA,      #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0455: 0xBE,      #  CYRILLIC SMALL LETTER DZE
+    0x0456: 0xB3,      #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0457: 0xBF,      #  CYRILLIC SMALL LETTER YI
+    0x0458: 0xBC,      #  CYRILLIC SMALL LETTER JE
+    0x0459: 0x9A,      #  CYRILLIC SMALL LETTER LJE
+    0x045A: 0x9C,      #  CYRILLIC SMALL LETTER NJE
+    0x045B: 0x9E,      #  CYRILLIC SMALL LETTER TSHE
+    0x045C: 0x9D,      #  CYRILLIC SMALL LETTER KJE
+    0x045E: 0xA2,      #  CYRILLIC SMALL LETTER SHORT U
+    0x045F: 0x9F,      #  CYRILLIC SMALL LETTER DZHE
+    0x0490: 0xA5,      #  CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+    0x0491: 0xB4,      #  CYRILLIC SMALL LETTER GHE WITH UPTURN
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x201A: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
     0x2020: 0x86,      #  DAGGER
     0x2021: 0x87,      #  DOUBLE DAGGER
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x89,      #  PER MILLE SIGN
-    0x2039: 0x8b,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0x9b,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20ac: 0x88,      #  EURO SIGN
-    0x2116: 0xb9,      #  NUMERO SIGN
+    0x2039: 0x8B,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x88,      #  EURO SIGN
+    0x2116: 0xB9,      #  NUMERO SIGN
     0x2122: 0x99,      #  TRADE MARK SIGN
-}
\ No newline at end of file
+}
+
index 0f6160df7b61305c0f9ed0728a69dea63e5128a9..3d7f54180594c8717f34ef9f8c25924ecc0ef1b0 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u20ac'  #  0x80 -> EURO SIGN
     u'\ufffe'  #  0x81 -> UNDEFINED
     u'\u201a'  #  0x82 -> SINGLE LOW-9 QUOTATION MARK
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2021'  #  0x87 -> DOUBLE DAGGER
     u'\u02c6'  #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
     u'\u2030'  #  0x89 -> PER MILLE SIGN
-    u'\u0160'  #  0x8a -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2039'  #  0x8b -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'  #  0x8c -> LATIN CAPITAL LIGATURE OE
-    u'\ufffe'  #  0x8d -> UNDEFINED
-    u'\u017d'  #  0x8e -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\ufffe'  #  0x8f -> UNDEFINED
+    u'\u0160'  #  0x8A -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u2039'  #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u0152'  #  0x8C -> LATIN CAPITAL LIGATURE OE
+    u'\ufffe'  #  0x8D -> UNDEFINED
+    u'\u017d'  #  0x8E -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\ufffe'  #  0x8F -> UNDEFINED
     u'\ufffe'  #  0x90 -> UNDEFINED
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\u02dc'  #  0x98 -> SMALL TILDE
     u'\u2122'  #  0x99 -> TRADE MARK SIGN
-    u'\u0161'  #  0x9a -> LATIN SMALL LETTER S WITH CARON
-    u'\u203a'  #  0x9b -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'  #  0x9c -> LATIN SMALL LIGATURE OE
-    u'\ufffe'  #  0x9d -> UNDEFINED
-    u'\u017e'  #  0x9e -> LATIN SMALL LETTER Z WITH CARON
-    u'\u0178'  #  0x9f -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\xa1'    #  0xa1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\xaa'    #  0xaa -> FEMININE ORDINAL INDICATOR
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\xba'    #  0xba -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'    #  0xbf -> INVERTED QUESTION MARK
-    u'\xc0'    #  0xc0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'    #  0xc3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'    #  0xc8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'    #  0xca -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'    #  0xcc -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'    #  0xd0 -> LATIN CAPITAL LETTER ETH
-    u'\xd1'    #  0xd1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'    #  0xd2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\xd8'    #  0xd8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'    #  0xd9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'    #  0xdd -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'    #  0xde -> LATIN CAPITAL LETTER THORN
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'    #  0xe3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'    #  0xec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'    #  0xf0 -> LATIN SMALL LETTER ETH
-    u'\xf1'    #  0xf1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'    #  0xf2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\xf8'    #  0xf8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'    #  0xfd -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'    #  0xfe -> LATIN SMALL LETTER THORN
-    u'\xff'    #  0xff -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0161'  #  0x9A -> LATIN SMALL LETTER S WITH CARON
+    u'\u203a'  #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0153'  #  0x9C -> LATIN SMALL LIGATURE OE
+    u'\ufffe'  #  0x9D -> UNDEFINED
+    u'\u017e'  #  0x9E -> LATIN SMALL LETTER Z WITH CARON
+    u'\u0178'  #  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'    #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'    #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'    #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'    #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'    #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'    #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'    #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'    #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'    #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xd0'    #  0xD0 -> LATIN CAPITAL LETTER ETH
+    u'\xd1'    #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'    #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'    #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'    #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'    #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'    #  0xDE -> LATIN CAPITAL LETTER THORN
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'    #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'    #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf0'    #  0xF0 -> LATIN SMALL LETTER ETH
+    u'\xf1'    #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'    #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\xf8'    #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'    #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'    #  0xFE -> LATIN SMALL LETTER THORN
+    u'\xff'    #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,133 +415,134 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a1: 0xa1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xaa,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00ba: 0xba,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xbf,      #  INVERTED QUESTION MARK
-    0x00c0: 0xc0,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xc3,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xc8,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xca,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xcc,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0xd0,      #  LATIN CAPITAL LETTER ETH
-    0x00d1: 0xd1,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xd2,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d8: 0xd8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xd9,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xdd,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0xde,      #  LATIN CAPITAL LETTER THORN
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0xe3,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0xec,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0xf0,      #  LATIN SMALL LETTER ETH
-    0x00f1: 0xf1,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xf2,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f8: 0xf8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0xfd,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0xfe,      #  LATIN SMALL LETTER THORN
-    0x00ff: 0xff,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0152: 0x8c,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0x9c,      #  LATIN SMALL LIGATURE OE
-    0x0160: 0x8a,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x9a,      #  LATIN SMALL LETTER S WITH CARON
-    0x0178: 0x9f,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x017d: 0x8e,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0x9e,      #  LATIN SMALL LETTER Z WITH CARON
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A1: 0xA1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xAA,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,      #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xD0,      #  LATIN CAPITAL LETTER ETH
+    0x00D1: 0xD1,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,      #  LATIN CAPITAL LETTER THORN
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xF0,      #  LATIN SMALL LETTER ETH
+    0x00F1: 0xF1,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F8: 0xF8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xFE,      #  LATIN SMALL LETTER THORN
+    0x00FF: 0xFF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0152: 0x8C,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0x9C,      #  LATIN SMALL LIGATURE OE
+    0x0160: 0x8A,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0x9A,      #  LATIN SMALL LETTER S WITH CARON
+    0x0178: 0x9F,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x017D: 0x8E,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0x9E,      #  LATIN SMALL LETTER Z WITH CARON
     0x0192: 0x83,      #  LATIN SMALL LETTER F WITH HOOK
-    0x02c6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02dc: 0x98,      #  SMALL TILDE
+    0x02C6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02DC: 0x98,      #  SMALL TILDE
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x201A: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
     0x2020: 0x86,      #  DAGGER
     0x2021: 0x87,      #  DOUBLE DAGGER
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x89,      #  PER MILLE SIGN
-    0x2039: 0x8b,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0x9b,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20ac: 0x80,      #  EURO SIGN
+    0x2039: 0x8B,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,      #  EURO SIGN
     0x2122: 0x99,      #  TRADE MARK SIGN
-}
\ No newline at end of file
+}
+
index 01dc3047fa6bfc34da9b4caa229709509897508c..d0f6847dcb767c9e3887cdd1475f494dee329473 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u20ac'  #  0x80 -> EURO SIGN
     u'\ufffe'  #  0x81 -> UNDEFINED
     u'\u201a'  #  0x82 -> SINGLE LOW-9 QUOTATION MARK
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2021'  #  0x87 -> DOUBLE DAGGER
     u'\ufffe'  #  0x88 -> UNDEFINED
     u'\u2030'  #  0x89 -> PER MILLE SIGN
-    u'\ufffe'  #  0x8a -> UNDEFINED
-    u'\u2039'  #  0x8b -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'  #  0x8c -> UNDEFINED
-    u'\ufffe'  #  0x8d -> UNDEFINED
-    u'\ufffe'  #  0x8e -> UNDEFINED
-    u'\ufffe'  #  0x8f -> UNDEFINED
+    u'\ufffe'  #  0x8A -> UNDEFINED
+    u'\u2039'  #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'  #  0x8C -> UNDEFINED
+    u'\ufffe'  #  0x8D -> UNDEFINED
+    u'\ufffe'  #  0x8E -> UNDEFINED
+    u'\ufffe'  #  0x8F -> UNDEFINED
     u'\ufffe'  #  0x90 -> UNDEFINED
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\ufffe'  #  0x98 -> UNDEFINED
     u'\u2122'  #  0x99 -> TRADE MARK SIGN
-    u'\ufffe'  #  0x9a -> UNDEFINED
-    u'\u203a'  #  0x9b -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'  #  0x9c -> UNDEFINED
-    u'\ufffe'  #  0x9d -> UNDEFINED
-    u'\ufffe'  #  0x9e -> UNDEFINED
-    u'\ufffe'  #  0x9f -> UNDEFINED
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u0385'  #  0xa1 -> GREEK DIALYTIKA TONOS
-    u'\u0386'  #  0xa2 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\ufffe'  #  0xaa -> UNDEFINED
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\u2015'  #  0xaf -> HORIZONTAL BAR
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\u0384'  #  0xb4 -> GREEK TONOS
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\u0388'  #  0xb8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'  #  0xb9 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'  #  0xba -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u038c'  #  0xbc -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\u038e'  #  0xbe -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'  #  0xbf -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\u0390'  #  0xc0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u0391'  #  0xc1 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'  #  0xc2 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'  #  0xc3 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'  #  0xc4 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'  #  0xc5 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'  #  0xc6 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'  #  0xc7 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'  #  0xc8 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'  #  0xc9 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'  #  0xca -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'  #  0xcb -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'  #  0xcc -> GREEK CAPITAL LETTER MU
-    u'\u039d'  #  0xcd -> GREEK CAPITAL LETTER NU
-    u'\u039e'  #  0xce -> GREEK CAPITAL LETTER XI
-    u'\u039f'  #  0xcf -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'  #  0xd0 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'  #  0xd1 -> GREEK CAPITAL LETTER RHO
-    u'\ufffe'  #  0xd2 -> UNDEFINED
-    u'\u03a3'  #  0xd3 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'  #  0xd4 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'  #  0xd5 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'  #  0xd6 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'  #  0xd7 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'  #  0xd8 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'  #  0xd9 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03aa'  #  0xda -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'  #  0xdb -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ac'  #  0xdc -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'  #  0xdd -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'  #  0xde -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'  #  0xdf -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03b0'  #  0xe0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u03b1'  #  0xe1 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'  #  0xe2 -> GREEK SMALL LETTER BETA
-    u'\u03b3'  #  0xe3 -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'  #  0xe4 -> GREEK SMALL LETTER DELTA
-    u'\u03b5'  #  0xe5 -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'  #  0xe6 -> GREEK SMALL LETTER ZETA
-    u'\u03b7'  #  0xe7 -> GREEK SMALL LETTER ETA
-    u'\u03b8'  #  0xe8 -> GREEK SMALL LETTER THETA
-    u'\u03b9'  #  0xe9 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'  #  0xea -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'  #  0xeb -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'  #  0xec -> GREEK SMALL LETTER MU
-    u'\u03bd'  #  0xed -> GREEK SMALL LETTER NU
-    u'\u03be'  #  0xee -> GREEK SMALL LETTER XI
-    u'\u03bf'  #  0xef -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'  #  0xf0 -> GREEK SMALL LETTER PI
-    u'\u03c1'  #  0xf1 -> GREEK SMALL LETTER RHO
-    u'\u03c2'  #  0xf2 -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c3'  #  0xf3 -> GREEK SMALL LETTER SIGMA
-    u'\u03c4'  #  0xf4 -> GREEK SMALL LETTER TAU
-    u'\u03c5'  #  0xf5 -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'  #  0xf6 -> GREEK SMALL LETTER PHI
-    u'\u03c7'  #  0xf7 -> GREEK SMALL LETTER CHI
-    u'\u03c8'  #  0xf8 -> GREEK SMALL LETTER PSI
-    u'\u03c9'  #  0xf9 -> GREEK SMALL LETTER OMEGA
-    u'\u03ca'  #  0xfa -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03cb'  #  0xfb -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03cc'  #  0xfc -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'  #  0xfd -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03ce'  #  0xfe -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\ufffe'  #  0xff -> UNDEFINED
+    u'\ufffe'  #  0x9A -> UNDEFINED
+    u'\u203a'  #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'  #  0x9C -> UNDEFINED
+    u'\ufffe'  #  0x9D -> UNDEFINED
+    u'\ufffe'  #  0x9E -> UNDEFINED
+    u'\ufffe'  #  0x9F -> UNDEFINED
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u0385'  #  0xA1 -> GREEK DIALYTIKA TONOS
+    u'\u0386'  #  0xA2 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\ufffe'  #  0xAA -> UNDEFINED
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\u2015'  #  0xAF -> HORIZONTAL BAR
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\u0384'  #  0xB4 -> GREEK TONOS
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\u0388'  #  0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
+    u'\u0389'  #  0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
+    u'\u038a'  #  0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u038c'  #  0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\u038e'  #  0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
+    u'\u038f'  #  0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
+    u'\u0390'  #  0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    u'\u0391'  #  0xC1 -> GREEK CAPITAL LETTER ALPHA
+    u'\u0392'  #  0xC2 -> GREEK CAPITAL LETTER BETA
+    u'\u0393'  #  0xC3 -> GREEK CAPITAL LETTER GAMMA
+    u'\u0394'  #  0xC4 -> GREEK CAPITAL LETTER DELTA
+    u'\u0395'  #  0xC5 -> GREEK CAPITAL LETTER EPSILON
+    u'\u0396'  #  0xC6 -> GREEK CAPITAL LETTER ZETA
+    u'\u0397'  #  0xC7 -> GREEK CAPITAL LETTER ETA
+    u'\u0398'  #  0xC8 -> GREEK CAPITAL LETTER THETA
+    u'\u0399'  #  0xC9 -> GREEK CAPITAL LETTER IOTA
+    u'\u039a'  #  0xCA -> GREEK CAPITAL LETTER KAPPA
+    u'\u039b'  #  0xCB -> GREEK CAPITAL LETTER LAMDA
+    u'\u039c'  #  0xCC -> GREEK CAPITAL LETTER MU
+    u'\u039d'  #  0xCD -> GREEK CAPITAL LETTER NU
+    u'\u039e'  #  0xCE -> GREEK CAPITAL LETTER XI
+    u'\u039f'  #  0xCF -> GREEK CAPITAL LETTER OMICRON
+    u'\u03a0'  #  0xD0 -> GREEK CAPITAL LETTER PI
+    u'\u03a1'  #  0xD1 -> GREEK CAPITAL LETTER RHO
+    u'\ufffe'  #  0xD2 -> UNDEFINED
+    u'\u03a3'  #  0xD3 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03a4'  #  0xD4 -> GREEK CAPITAL LETTER TAU
+    u'\u03a5'  #  0xD5 -> GREEK CAPITAL LETTER UPSILON
+    u'\u03a6'  #  0xD6 -> GREEK CAPITAL LETTER PHI
+    u'\u03a7'  #  0xD7 -> GREEK CAPITAL LETTER CHI
+    u'\u03a8'  #  0xD8 -> GREEK CAPITAL LETTER PSI
+    u'\u03a9'  #  0xD9 -> GREEK CAPITAL LETTER OMEGA
+    u'\u03aa'  #  0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    u'\u03ab'  #  0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    u'\u03ac'  #  0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\u03ad'  #  0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'  #  0xDE -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03af'  #  0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03b0'  #  0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    u'\u03b1'  #  0xE1 -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'  #  0xE2 -> GREEK SMALL LETTER BETA
+    u'\u03b3'  #  0xE3 -> GREEK SMALL LETTER GAMMA
+    u'\u03b4'  #  0xE4 -> GREEK SMALL LETTER DELTA
+    u'\u03b5'  #  0xE5 -> GREEK SMALL LETTER EPSILON
+    u'\u03b6'  #  0xE6 -> GREEK SMALL LETTER ZETA
+    u'\u03b7'  #  0xE7 -> GREEK SMALL LETTER ETA
+    u'\u03b8'  #  0xE8 -> GREEK SMALL LETTER THETA
+    u'\u03b9'  #  0xE9 -> GREEK SMALL LETTER IOTA
+    u'\u03ba'  #  0xEA -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'  #  0xEB -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'  #  0xEC -> GREEK SMALL LETTER MU
+    u'\u03bd'  #  0xED -> GREEK SMALL LETTER NU
+    u'\u03be'  #  0xEE -> GREEK SMALL LETTER XI
+    u'\u03bf'  #  0xEF -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'  #  0xF0 -> GREEK SMALL LETTER PI
+    u'\u03c1'  #  0xF1 -> GREEK SMALL LETTER RHO
+    u'\u03c2'  #  0xF2 -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c3'  #  0xF3 -> GREEK SMALL LETTER SIGMA
+    u'\u03c4'  #  0xF4 -> GREEK SMALL LETTER TAU
+    u'\u03c5'  #  0xF5 -> GREEK SMALL LETTER UPSILON
+    u'\u03c6'  #  0xF6 -> GREEK SMALL LETTER PHI
+    u'\u03c7'  #  0xF7 -> GREEK SMALL LETTER CHI
+    u'\u03c8'  #  0xF8 -> GREEK SMALL LETTER PSI
+    u'\u03c9'  #  0xF9 -> GREEK SMALL LETTER OMEGA
+    u'\u03ca'  #  0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u03cb'  #  0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u03cc'  #  0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u03cd'  #  0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u03ce'  #  0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\ufffe'  #  0xFF -> UNDEFINED
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,121 +415,122 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
     0x0192: 0x83,      #  LATIN SMALL LETTER F WITH HOOK
-    0x0384: 0xb4,      #  GREEK TONOS
-    0x0385: 0xa1,      #  GREEK DIALYTIKA TONOS
-    0x0386: 0xa2,      #  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0xb8,      #  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0xb9,      #  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038a: 0xba,      #  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038c: 0xbc,      #  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038e: 0xbe,      #  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038f: 0xbf,      #  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0xc0,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x0391: 0xc1,      #  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0xc2,      #  GREEK CAPITAL LETTER BETA
-    0x0393: 0xc3,      #  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0xc4,      #  GREEK CAPITAL LETTER DELTA
-    0x0395: 0xc5,      #  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0xc6,      #  GREEK CAPITAL LETTER ZETA
-    0x0397: 0xc7,      #  GREEK CAPITAL LETTER ETA
-    0x0398: 0xc8,      #  GREEK CAPITAL LETTER THETA
-    0x0399: 0xc9,      #  GREEK CAPITAL LETTER IOTA
-    0x039a: 0xca,      #  GREEK CAPITAL LETTER KAPPA
-    0x039b: 0xcb,      #  GREEK CAPITAL LETTER LAMDA
-    0x039c: 0xcc,      #  GREEK CAPITAL LETTER MU
-    0x039d: 0xcd,      #  GREEK CAPITAL LETTER NU
-    0x039e: 0xce,      #  GREEK CAPITAL LETTER XI
-    0x039f: 0xcf,      #  GREEK CAPITAL LETTER OMICRON
-    0x03a0: 0xd0,      #  GREEK CAPITAL LETTER PI
-    0x03a1: 0xd1,      #  GREEK CAPITAL LETTER RHO
-    0x03a3: 0xd3,      #  GREEK CAPITAL LETTER SIGMA
-    0x03a4: 0xd4,      #  GREEK CAPITAL LETTER TAU
-    0x03a5: 0xd5,      #  GREEK CAPITAL LETTER UPSILON
-    0x03a6: 0xd6,      #  GREEK CAPITAL LETTER PHI
-    0x03a7: 0xd7,      #  GREEK CAPITAL LETTER CHI
-    0x03a8: 0xd8,      #  GREEK CAPITAL LETTER PSI
-    0x03a9: 0xd9,      #  GREEK CAPITAL LETTER OMEGA
-    0x03aa: 0xda,      #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03ab: 0xdb,      #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03ac: 0xdc,      #  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03ad: 0xdd,      #  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03ae: 0xde,      #  GREEK SMALL LETTER ETA WITH TONOS
-    0x03af: 0xdf,      #  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03b0: 0xe0,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03b1: 0xe1,      #  GREEK SMALL LETTER ALPHA
-    0x03b2: 0xe2,      #  GREEK SMALL LETTER BETA
-    0x03b3: 0xe3,      #  GREEK SMALL LETTER GAMMA
-    0x03b4: 0xe4,      #  GREEK SMALL LETTER DELTA
-    0x03b5: 0xe5,      #  GREEK SMALL LETTER EPSILON
-    0x03b6: 0xe6,      #  GREEK SMALL LETTER ZETA
-    0x03b7: 0xe7,      #  GREEK SMALL LETTER ETA
-    0x03b8: 0xe8,      #  GREEK SMALL LETTER THETA
-    0x03b9: 0xe9,      #  GREEK SMALL LETTER IOTA
-    0x03ba: 0xea,      #  GREEK SMALL LETTER KAPPA
-    0x03bb: 0xeb,      #  GREEK SMALL LETTER LAMDA
-    0x03bc: 0xec,      #  GREEK SMALL LETTER MU
-    0x03bd: 0xed,      #  GREEK SMALL LETTER NU
-    0x03be: 0xee,      #  GREEK SMALL LETTER XI
-    0x03bf: 0xef,      #  GREEK SMALL LETTER OMICRON
-    0x03c0: 0xf0,      #  GREEK SMALL LETTER PI
-    0x03c1: 0xf1,      #  GREEK SMALL LETTER RHO
-    0x03c2: 0xf2,      #  GREEK SMALL LETTER FINAL SIGMA
-    0x03c3: 0xf3,      #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0xf4,      #  GREEK SMALL LETTER TAU
-    0x03c5: 0xf5,      #  GREEK SMALL LETTER UPSILON
-    0x03c6: 0xf6,      #  GREEK SMALL LETTER PHI
-    0x03c7: 0xf7,      #  GREEK SMALL LETTER CHI
-    0x03c8: 0xf8,      #  GREEK SMALL LETTER PSI
-    0x03c9: 0xf9,      #  GREEK SMALL LETTER OMEGA
-    0x03ca: 0xfa,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03cb: 0xfb,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03cc: 0xfc,      #  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03cd: 0xfd,      #  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03ce: 0xfe,      #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x0384: 0xB4,      #  GREEK TONOS
+    0x0385: 0xA1,      #  GREEK DIALYTIKA TONOS
+    0x0386: 0xA2,      #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0388: 0xB8,      #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x0389: 0xB9,      #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x038A: 0xBA,      #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038C: 0xBC,      #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038E: 0xBE,      #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038F: 0xBF,      #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0390: 0xC0,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x0391: 0xC1,      #  GREEK CAPITAL LETTER ALPHA
+    0x0392: 0xC2,      #  GREEK CAPITAL LETTER BETA
+    0x0393: 0xC3,      #  GREEK CAPITAL LETTER GAMMA
+    0x0394: 0xC4,      #  GREEK CAPITAL LETTER DELTA
+    0x0395: 0xC5,      #  GREEK CAPITAL LETTER EPSILON
+    0x0396: 0xC6,      #  GREEK CAPITAL LETTER ZETA
+    0x0397: 0xC7,      #  GREEK CAPITAL LETTER ETA
+    0x0398: 0xC8,      #  GREEK CAPITAL LETTER THETA
+    0x0399: 0xC9,      #  GREEK CAPITAL LETTER IOTA
+    0x039A: 0xCA,      #  GREEK CAPITAL LETTER KAPPA
+    0x039B: 0xCB,      #  GREEK CAPITAL LETTER LAMDA
+    0x039C: 0xCC,      #  GREEK CAPITAL LETTER MU
+    0x039D: 0xCD,      #  GREEK CAPITAL LETTER NU
+    0x039E: 0xCE,      #  GREEK CAPITAL LETTER XI
+    0x039F: 0xCF,      #  GREEK CAPITAL LETTER OMICRON
+    0x03A0: 0xD0,      #  GREEK CAPITAL LETTER PI
+    0x03A1: 0xD1,      #  GREEK CAPITAL LETTER RHO
+    0x03A3: 0xD3,      #  GREEK CAPITAL LETTER SIGMA
+    0x03A4: 0xD4,      #  GREEK CAPITAL LETTER TAU
+    0x03A5: 0xD5,      #  GREEK CAPITAL LETTER UPSILON
+    0x03A6: 0xD6,      #  GREEK CAPITAL LETTER PHI
+    0x03A7: 0xD7,      #  GREEK CAPITAL LETTER CHI
+    0x03A8: 0xD8,      #  GREEK CAPITAL LETTER PSI
+    0x03A9: 0xD9,      #  GREEK CAPITAL LETTER OMEGA
+    0x03AA: 0xDA,      #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03AB: 0xDB,      #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03AC: 0xDC,      #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03AD: 0xDD,      #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03AE: 0xDE,      #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03AF: 0xDF,      #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03B0: 0xE0,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x03B1: 0xE1,      #  GREEK SMALL LETTER ALPHA
+    0x03B2: 0xE2,      #  GREEK SMALL LETTER BETA
+    0x03B3: 0xE3,      #  GREEK SMALL LETTER GAMMA
+    0x03B4: 0xE4,      #  GREEK SMALL LETTER DELTA
+    0x03B5: 0xE5,      #  GREEK SMALL LETTER EPSILON
+    0x03B6: 0xE6,      #  GREEK SMALL LETTER ZETA
+    0x03B7: 0xE7,      #  GREEK SMALL LETTER ETA
+    0x03B8: 0xE8,      #  GREEK SMALL LETTER THETA
+    0x03B9: 0xE9,      #  GREEK SMALL LETTER IOTA
+    0x03BA: 0xEA,      #  GREEK SMALL LETTER KAPPA
+    0x03BB: 0xEB,      #  GREEK SMALL LETTER LAMDA
+    0x03BC: 0xEC,      #  GREEK SMALL LETTER MU
+    0x03BD: 0xED,      #  GREEK SMALL LETTER NU
+    0x03BE: 0xEE,      #  GREEK SMALL LETTER XI
+    0x03BF: 0xEF,      #  GREEK SMALL LETTER OMICRON
+    0x03C0: 0xF0,      #  GREEK SMALL LETTER PI
+    0x03C1: 0xF1,      #  GREEK SMALL LETTER RHO
+    0x03C2: 0xF2,      #  GREEK SMALL LETTER FINAL SIGMA
+    0x03C3: 0xF3,      #  GREEK SMALL LETTER SIGMA
+    0x03C4: 0xF4,      #  GREEK SMALL LETTER TAU
+    0x03C5: 0xF5,      #  GREEK SMALL LETTER UPSILON
+    0x03C6: 0xF6,      #  GREEK SMALL LETTER PHI
+    0x03C7: 0xF7,      #  GREEK SMALL LETTER CHI
+    0x03C8: 0xF8,      #  GREEK SMALL LETTER PSI
+    0x03C9: 0xF9,      #  GREEK SMALL LETTER OMEGA
+    0x03CA: 0xFA,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03CB: 0xFB,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03CC: 0xFC,      #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03CD: 0xFD,      #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03CE: 0xFE,      #  GREEK SMALL LETTER OMEGA WITH TONOS
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
-    0x2015: 0xaf,      #  HORIZONTAL BAR
+    0x2015: 0xAF,      #  HORIZONTAL BAR
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x201A: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
     0x2020: 0x86,      #  DAGGER
     0x2021: 0x87,      #  DOUBLE DAGGER
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x89,      #  PER MILLE SIGN
-    0x2039: 0x8b,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0x9b,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20ac: 0x80,      #  EURO SIGN
+    0x2039: 0x8B,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,      #  EURO SIGN
     0x2122: 0x99,      #  TRADE MARK SIGN
-}
\ No newline at end of file
+}
+
index 2dd48c1790d17a5a91dc5d71c839aca8fe1dda5d..e6242cbe339a60361f798a5110e7b9af471bb17a 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u20ac'  #  0x80 -> EURO SIGN
     u'\ufffe'  #  0x81 -> UNDEFINED
     u'\u201a'  #  0x82 -> SINGLE LOW-9 QUOTATION MARK
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2021'  #  0x87 -> DOUBLE DAGGER
     u'\u02c6'  #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
     u'\u2030'  #  0x89 -> PER MILLE SIGN
-    u'\u0160'  #  0x8a -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2039'  #  0x8b -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'  #  0x8c -> LATIN CAPITAL LIGATURE OE
-    u'\ufffe'  #  0x8d -> UNDEFINED
-    u'\ufffe'  #  0x8e -> UNDEFINED
-    u'\ufffe'  #  0x8f -> UNDEFINED
+    u'\u0160'  #  0x8A -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u2039'  #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u0152'  #  0x8C -> LATIN CAPITAL LIGATURE OE
+    u'\ufffe'  #  0x8D -> UNDEFINED
+    u'\ufffe'  #  0x8E -> UNDEFINED
+    u'\ufffe'  #  0x8F -> UNDEFINED
     u'\ufffe'  #  0x90 -> UNDEFINED
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\u02dc'  #  0x98 -> SMALL TILDE
     u'\u2122'  #  0x99 -> TRADE MARK SIGN
-    u'\u0161'  #  0x9a -> LATIN SMALL LETTER S WITH CARON
-    u'\u203a'  #  0x9b -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'  #  0x9c -> LATIN SMALL LIGATURE OE
-    u'\ufffe'  #  0x9d -> UNDEFINED
-    u'\ufffe'  #  0x9e -> UNDEFINED
-    u'\u0178'  #  0x9f -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\xa1'    #  0xa1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\xaa'    #  0xaa -> FEMININE ORDINAL INDICATOR
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\xba'    #  0xba -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'    #  0xbf -> INVERTED QUESTION MARK
-    u'\xc0'    #  0xc0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'    #  0xc3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'    #  0xc8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'    #  0xca -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'    #  0xcc -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u011e'  #  0xd0 -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\xd1'    #  0xd1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'    #  0xd2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\xd8'    #  0xd8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'    #  0xd9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0130'  #  0xdd -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u015e'  #  0xde -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'    #  0xe3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'    #  0xec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u011f'  #  0xf0 -> LATIN SMALL LETTER G WITH BREVE
-    u'\xf1'    #  0xf1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'    #  0xf2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\xf8'    #  0xf8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0131'  #  0xfd -> LATIN SMALL LETTER DOTLESS I
-    u'\u015f'  #  0xfe -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xff'    #  0xff -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0161'  #  0x9A -> LATIN SMALL LETTER S WITH CARON
+    u'\u203a'  #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0153'  #  0x9C -> LATIN SMALL LIGATURE OE
+    u'\ufffe'  #  0x9D -> UNDEFINED
+    u'\ufffe'  #  0x9E -> UNDEFINED
+    u'\u0178'  #  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'    #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'    #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'    #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'    #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'    #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'    #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'    #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'    #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'    #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u011e'  #  0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\xd1'    #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'    #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'    #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'    #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0130'  #  0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'\u015e'  #  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'    #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'    #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u011f'  #  0xF0 -> LATIN SMALL LETTER G WITH BREVE
+    u'\xf1'    #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'    #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\xf8'    #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u0131'  #  0xFD -> LATIN SMALL LETTER DOTLESS I
+    u'\u015f'  #  0xFE -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\xff'    #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,131 +415,132 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a1: 0xa1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xaa,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00ba: 0xba,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xbf,      #  INVERTED QUESTION MARK
-    0x00c0: 0xc0,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xc3,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xc8,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xca,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xcc,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0xd1,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xd2,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d8: 0xd8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xd9,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0xe3,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0xec,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0xf1,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xf2,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f8: 0xf8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0xff,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011e: 0xd0,      #  LATIN CAPITAL LETTER G WITH BREVE
-    0x011f: 0xf0,      #  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0xdd,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0xfd,      #  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0x8c,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0x9c,      #  LATIN SMALL LIGATURE OE
-    0x015e: 0xde,      #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0xfe,      #  LATIN SMALL LETTER S WITH CEDILLA
-    0x0160: 0x8a,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x9a,      #  LATIN SMALL LETTER S WITH CARON
-    0x0178: 0x9f,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A1: 0xA1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xAA,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,      #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F8: 0xF8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xFF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x011E: 0xD0,      #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xF0,      #  LATIN SMALL LETTER G WITH BREVE
+    0x0130: 0xDD,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0xFD,      #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0x8C,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0x9C,      #  LATIN SMALL LIGATURE OE
+    0x015E: 0xDE,      #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xFE,      #  LATIN SMALL LETTER S WITH CEDILLA
+    0x0160: 0x8A,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0x9A,      #  LATIN SMALL LETTER S WITH CARON
+    0x0178: 0x9F,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
     0x0192: 0x83,      #  LATIN SMALL LETTER F WITH HOOK
-    0x02c6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02dc: 0x98,      #  SMALL TILDE
+    0x02C6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02DC: 0x98,      #  SMALL TILDE
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x201A: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
     0x2020: 0x86,      #  DAGGER
     0x2021: 0x87,      #  DOUBLE DAGGER
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x89,      #  PER MILLE SIGN
-    0x2039: 0x8b,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0x9b,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20ac: 0x80,      #  EURO SIGN
+    0x2039: 0x8B,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,      #  EURO SIGN
     0x2122: 0x99,      #  TRADE MARK SIGN
-}
\ No newline at end of file
+}
+
index 8f4c290ba38ff7a12d888a03f6f63690048d444c..65f021ab4200bc3661e48e045fa90ddcc7b25d95 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u20ac'  #  0x80 -> EURO SIGN
     u'\ufffe'  #  0x81 -> UNDEFINED
     u'\u201a'  #  0x82 -> SINGLE LOW-9 QUOTATION MARK
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2021'  #  0x87 -> DOUBLE DAGGER
     u'\u02c6'  #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
     u'\u2030'  #  0x89 -> PER MILLE SIGN
-    u'\ufffe'  #  0x8a -> UNDEFINED
-    u'\u2039'  #  0x8b -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'  #  0x8c -> UNDEFINED
-    u'\ufffe'  #  0x8d -> UNDEFINED
-    u'\ufffe'  #  0x8e -> UNDEFINED
-    u'\ufffe'  #  0x8f -> UNDEFINED
+    u'\ufffe'  #  0x8A -> UNDEFINED
+    u'\u2039'  #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'  #  0x8C -> UNDEFINED
+    u'\ufffe'  #  0x8D -> UNDEFINED
+    u'\ufffe'  #  0x8E -> UNDEFINED
+    u'\ufffe'  #  0x8F -> UNDEFINED
     u'\ufffe'  #  0x90 -> UNDEFINED
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\u02dc'  #  0x98 -> SMALL TILDE
     u'\u2122'  #  0x99 -> TRADE MARK SIGN
-    u'\ufffe'  #  0x9a -> UNDEFINED
-    u'\u203a'  #  0x9b -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'  #  0x9c -> UNDEFINED
-    u'\ufffe'  #  0x9d -> UNDEFINED
-    u'\ufffe'  #  0x9e -> UNDEFINED
-    u'\ufffe'  #  0x9f -> UNDEFINED
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\xa1'    #  0xa1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\u20aa'  #  0xa4 -> NEW SHEQEL SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\xd7'    #  0xaa -> MULTIPLICATION SIGN
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\xf7'    #  0xba -> DIVISION SIGN
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'    #  0xbf -> INVERTED QUESTION MARK
-    u'\u05b0'  #  0xc0 -> HEBREW POINT SHEVA
-    u'\u05b1'  #  0xc1 -> HEBREW POINT HATAF SEGOL
-    u'\u05b2'  #  0xc2 -> HEBREW POINT HATAF PATAH
-    u'\u05b3'  #  0xc3 -> HEBREW POINT HATAF QAMATS
-    u'\u05b4'  #  0xc4 -> HEBREW POINT HIRIQ
-    u'\u05b5'  #  0xc5 -> HEBREW POINT TSERE
-    u'\u05b6'  #  0xc6 -> HEBREW POINT SEGOL
-    u'\u05b7'  #  0xc7 -> HEBREW POINT PATAH
-    u'\u05b8'  #  0xc8 -> HEBREW POINT QAMATS
-    u'\u05b9'  #  0xc9 -> HEBREW POINT HOLAM
-    u'\ufffe'  #  0xca -> UNDEFINED
-    u'\u05bb'  #  0xcb -> HEBREW POINT QUBUTS
-    u'\u05bc'  #  0xcc -> HEBREW POINT DAGESH OR MAPIQ
-    u'\u05bd'  #  0xcd -> HEBREW POINT METEG
-    u'\u05be'  #  0xce -> HEBREW PUNCTUATION MAQAF
-    u'\u05bf'  #  0xcf -> HEBREW POINT RAFE
-    u'\u05c0'  #  0xd0 -> HEBREW PUNCTUATION PASEQ
-    u'\u05c1'  #  0xd1 -> HEBREW POINT SHIN DOT
-    u'\u05c2'  #  0xd2 -> HEBREW POINT SIN DOT
-    u'\u05c3'  #  0xd3 -> HEBREW PUNCTUATION SOF PASUQ
-    u'\u05f0'  #  0xd4 -> HEBREW LIGATURE YIDDISH DOUBLE VAV
-    u'\u05f1'  #  0xd5 -> HEBREW LIGATURE YIDDISH VAV YOD
-    u'\u05f2'  #  0xd6 -> HEBREW LIGATURE YIDDISH DOUBLE YOD
-    u'\u05f3'  #  0xd7 -> HEBREW PUNCTUATION GERESH
-    u'\u05f4'  #  0xd8 -> HEBREW PUNCTUATION GERSHAYIM
-    u'\ufffe'  #  0xd9 -> UNDEFINED
-    u'\ufffe'  #  0xda -> UNDEFINED
-    u'\ufffe'  #  0xdb -> UNDEFINED
-    u'\ufffe'  #  0xdc -> UNDEFINED
-    u'\ufffe'  #  0xdd -> UNDEFINED
-    u'\ufffe'  #  0xde -> UNDEFINED
-    u'\ufffe'  #  0xdf -> UNDEFINED
-    u'\u05d0'  #  0xe0 -> HEBREW LETTER ALEF
-    u'\u05d1'  #  0xe1 -> HEBREW LETTER BET
-    u'\u05d2'  #  0xe2 -> HEBREW LETTER GIMEL
-    u'\u05d3'  #  0xe3 -> HEBREW LETTER DALET
-    u'\u05d4'  #  0xe4 -> HEBREW LETTER HE
-    u'\u05d5'  #  0xe5 -> HEBREW LETTER VAV
-    u'\u05d6'  #  0xe6 -> HEBREW LETTER ZAYIN
-    u'\u05d7'  #  0xe7 -> HEBREW LETTER HET
-    u'\u05d8'  #  0xe8 -> HEBREW LETTER TET
-    u'\u05d9'  #  0xe9 -> HEBREW LETTER YOD
-    u'\u05da'  #  0xea -> HEBREW LETTER FINAL KAF
-    u'\u05db'  #  0xeb -> HEBREW LETTER KAF
-    u'\u05dc'  #  0xec -> HEBREW LETTER LAMED
-    u'\u05dd'  #  0xed -> HEBREW LETTER FINAL MEM
-    u'\u05de'  #  0xee -> HEBREW LETTER MEM
-    u'\u05df'  #  0xef -> HEBREW LETTER FINAL NUN
-    u'\u05e0'  #  0xf0 -> HEBREW LETTER NUN
-    u'\u05e1'  #  0xf1 -> HEBREW LETTER SAMEKH
-    u'\u05e2'  #  0xf2 -> HEBREW LETTER AYIN
-    u'\u05e3'  #  0xf3 -> HEBREW LETTER FINAL PE
-    u'\u05e4'  #  0xf4 -> HEBREW LETTER PE
-    u'\u05e5'  #  0xf5 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'  #  0xf6 -> HEBREW LETTER TSADI
-    u'\u05e7'  #  0xf7 -> HEBREW LETTER QOF
-    u'\u05e8'  #  0xf8 -> HEBREW LETTER RESH
-    u'\u05e9'  #  0xf9 -> HEBREW LETTER SHIN
-    u'\u05ea'  #  0xfa -> HEBREW LETTER TAV
-    u'\ufffe'  #  0xfb -> UNDEFINED
-    u'\ufffe'  #  0xfc -> UNDEFINED
-    u'\u200e'  #  0xfd -> LEFT-TO-RIGHT MARK
-    u'\u200f'  #  0xfe -> RIGHT-TO-LEFT MARK
-    u'\ufffe'  #  0xff -> UNDEFINED
+    u'\ufffe'  #  0x9A -> UNDEFINED
+    u'\u203a'  #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'  #  0x9C -> UNDEFINED
+    u'\ufffe'  #  0x9D -> UNDEFINED
+    u'\ufffe'  #  0x9E -> UNDEFINED
+    u'\ufffe'  #  0x9F -> UNDEFINED
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'    #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\u20aa'  #  0xA4 -> NEW SHEQEL SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\xd7'    #  0xAA -> MULTIPLICATION SIGN
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\xf7'    #  0xBA -> DIVISION SIGN
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'    #  0xBF -> INVERTED QUESTION MARK
+    u'\u05b0'  #  0xC0 -> HEBREW POINT SHEVA
+    u'\u05b1'  #  0xC1 -> HEBREW POINT HATAF SEGOL
+    u'\u05b2'  #  0xC2 -> HEBREW POINT HATAF PATAH
+    u'\u05b3'  #  0xC3 -> HEBREW POINT HATAF QAMATS
+    u'\u05b4'  #  0xC4 -> HEBREW POINT HIRIQ
+    u'\u05b5'  #  0xC5 -> HEBREW POINT TSERE
+    u'\u05b6'  #  0xC6 -> HEBREW POINT SEGOL
+    u'\u05b7'  #  0xC7 -> HEBREW POINT PATAH
+    u'\u05b8'  #  0xC8 -> HEBREW POINT QAMATS
+    u'\u05b9'  #  0xC9 -> HEBREW POINT HOLAM
+    u'\ufffe'  #  0xCA -> UNDEFINED
+    u'\u05bb'  #  0xCB -> HEBREW POINT QUBUTS
+    u'\u05bc'  #  0xCC -> HEBREW POINT DAGESH OR MAPIQ
+    u'\u05bd'  #  0xCD -> HEBREW POINT METEG
+    u'\u05be'  #  0xCE -> HEBREW PUNCTUATION MAQAF
+    u'\u05bf'  #  0xCF -> HEBREW POINT RAFE
+    u'\u05c0'  #  0xD0 -> HEBREW PUNCTUATION PASEQ
+    u'\u05c1'  #  0xD1 -> HEBREW POINT SHIN DOT
+    u'\u05c2'  #  0xD2 -> HEBREW POINT SIN DOT
+    u'\u05c3'  #  0xD3 -> HEBREW PUNCTUATION SOF PASUQ
+    u'\u05f0'  #  0xD4 -> HEBREW LIGATURE YIDDISH DOUBLE VAV
+    u'\u05f1'  #  0xD5 -> HEBREW LIGATURE YIDDISH VAV YOD
+    u'\u05f2'  #  0xD6 -> HEBREW LIGATURE YIDDISH DOUBLE YOD
+    u'\u05f3'  #  0xD7 -> HEBREW PUNCTUATION GERESH
+    u'\u05f4'  #  0xD8 -> HEBREW PUNCTUATION GERSHAYIM
+    u'\ufffe'  #  0xD9 -> UNDEFINED
+    u'\ufffe'  #  0xDA -> UNDEFINED
+    u'\ufffe'  #  0xDB -> UNDEFINED
+    u'\ufffe'  #  0xDC -> UNDEFINED
+    u'\ufffe'  #  0xDD -> UNDEFINED
+    u'\ufffe'  #  0xDE -> UNDEFINED
+    u'\ufffe'  #  0xDF -> UNDEFINED
+    u'\u05d0'  #  0xE0 -> HEBREW LETTER ALEF
+    u'\u05d1'  #  0xE1 -> HEBREW LETTER BET
+    u'\u05d2'  #  0xE2 -> HEBREW LETTER GIMEL
+    u'\u05d3'  #  0xE3 -> HEBREW LETTER DALET
+    u'\u05d4'  #  0xE4 -> HEBREW LETTER HE
+    u'\u05d5'  #  0xE5 -> HEBREW LETTER VAV
+    u'\u05d6'  #  0xE6 -> HEBREW LETTER ZAYIN
+    u'\u05d7'  #  0xE7 -> HEBREW LETTER HET
+    u'\u05d8'  #  0xE8 -> HEBREW LETTER TET
+    u'\u05d9'  #  0xE9 -> HEBREW LETTER YOD
+    u'\u05da'  #  0xEA -> HEBREW LETTER FINAL KAF
+    u'\u05db'  #  0xEB -> HEBREW LETTER KAF
+    u'\u05dc'  #  0xEC -> HEBREW LETTER LAMED
+    u'\u05dd'  #  0xED -> HEBREW LETTER FINAL MEM
+    u'\u05de'  #  0xEE -> HEBREW LETTER MEM
+    u'\u05df'  #  0xEF -> HEBREW LETTER FINAL NUN
+    u'\u05e0'  #  0xF0 -> HEBREW LETTER NUN
+    u'\u05e1'  #  0xF1 -> HEBREW LETTER SAMEKH
+    u'\u05e2'  #  0xF2 -> HEBREW LETTER AYIN
+    u'\u05e3'  #  0xF3 -> HEBREW LETTER FINAL PE
+    u'\u05e4'  #  0xF4 -> HEBREW LETTER PE
+    u'\u05e5'  #  0xF5 -> HEBREW LETTER FINAL TSADI
+    u'\u05e6'  #  0xF6 -> HEBREW LETTER TSADI
+    u'\u05e7'  #  0xF7 -> HEBREW LETTER QOF
+    u'\u05e8'  #  0xF8 -> HEBREW LETTER RESH
+    u'\u05e9'  #  0xF9 -> HEBREW LETTER SHIN
+    u'\u05ea'  #  0xFA -> HEBREW LETTER TAV
+    u'\ufffe'  #  0xFB -> UNDEFINED
+    u'\ufffe'  #  0xFC -> UNDEFINED
+    u'\u200e'  #  0xFD -> LEFT-TO-RIGHT MARK
+    u'\u200f'  #  0xFE -> RIGHT-TO-LEFT MARK
+    u'\ufffe'  #  0xFF -> UNDEFINED
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,115 +415,116 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a1: 0xa1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xbf,      #  INVERTED QUESTION MARK
-    0x00d7: 0xaa,      #  MULTIPLICATION SIGN
-    0x00f7: 0xba,      #  DIVISION SIGN
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A1: 0xA1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,      #  INVERTED QUESTION MARK
+    0x00D7: 0xAA,      #  MULTIPLICATION SIGN
+    0x00F7: 0xBA,      #  DIVISION SIGN
     0x0192: 0x83,      #  LATIN SMALL LETTER F WITH HOOK
-    0x02c6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02dc: 0x98,      #  SMALL TILDE
-    0x05b0: 0xc0,      #  HEBREW POINT SHEVA
-    0x05b1: 0xc1,      #  HEBREW POINT HATAF SEGOL
-    0x05b2: 0xc2,      #  HEBREW POINT HATAF PATAH
-    0x05b3: 0xc3,      #  HEBREW POINT HATAF QAMATS
-    0x05b4: 0xc4,      #  HEBREW POINT HIRIQ
-    0x05b5: 0xc5,      #  HEBREW POINT TSERE
-    0x05b6: 0xc6,      #  HEBREW POINT SEGOL
-    0x05b7: 0xc7,      #  HEBREW POINT PATAH
-    0x05b8: 0xc8,      #  HEBREW POINT QAMATS
-    0x05b9: 0xc9,      #  HEBREW POINT HOLAM
-    0x05bb: 0xcb,      #  HEBREW POINT QUBUTS
-    0x05bc: 0xcc,      #  HEBREW POINT DAGESH OR MAPIQ
-    0x05bd: 0xcd,      #  HEBREW POINT METEG
-    0x05be: 0xce,      #  HEBREW PUNCTUATION MAQAF
-    0x05bf: 0xcf,      #  HEBREW POINT RAFE
-    0x05c0: 0xd0,      #  HEBREW PUNCTUATION PASEQ
-    0x05c1: 0xd1,      #  HEBREW POINT SHIN DOT
-    0x05c2: 0xd2,      #  HEBREW POINT SIN DOT
-    0x05c3: 0xd3,      #  HEBREW PUNCTUATION SOF PASUQ
-    0x05d0: 0xe0,      #  HEBREW LETTER ALEF
-    0x05d1: 0xe1,      #  HEBREW LETTER BET
-    0x05d2: 0xe2,      #  HEBREW LETTER GIMEL
-    0x05d3: 0xe3,      #  HEBREW LETTER DALET
-    0x05d4: 0xe4,      #  HEBREW LETTER HE
-    0x05d5: 0xe5,      #  HEBREW LETTER VAV
-    0x05d6: 0xe6,      #  HEBREW LETTER ZAYIN
-    0x05d7: 0xe7,      #  HEBREW LETTER HET
-    0x05d8: 0xe8,      #  HEBREW LETTER TET
-    0x05d9: 0xe9,      #  HEBREW LETTER YOD
-    0x05da: 0xea,      #  HEBREW LETTER FINAL KAF
-    0x05db: 0xeb,      #  HEBREW LETTER KAF
-    0x05dc: 0xec,      #  HEBREW LETTER LAMED
-    0x05dd: 0xed,      #  HEBREW LETTER FINAL MEM
-    0x05de: 0xee,      #  HEBREW LETTER MEM
-    0x05df: 0xef,      #  HEBREW LETTER FINAL NUN
-    0x05e0: 0xf0,      #  HEBREW LETTER NUN
-    0x05e1: 0xf1,      #  HEBREW LETTER SAMEKH
-    0x05e2: 0xf2,      #  HEBREW LETTER AYIN
-    0x05e3: 0xf3,      #  HEBREW LETTER FINAL PE
-    0x05e4: 0xf4,      #  HEBREW LETTER PE
-    0x05e5: 0xf5,      #  HEBREW LETTER FINAL TSADI
-    0x05e6: 0xf6,      #  HEBREW LETTER TSADI
-    0x05e7: 0xf7,      #  HEBREW LETTER QOF
-    0x05e8: 0xf8,      #  HEBREW LETTER RESH
-    0x05e9: 0xf9,      #  HEBREW LETTER SHIN
-    0x05ea: 0xfa,      #  HEBREW LETTER TAV
-    0x05f0: 0xd4,      #  HEBREW LIGATURE YIDDISH DOUBLE VAV
-    0x05f1: 0xd5,      #  HEBREW LIGATURE YIDDISH VAV YOD
-    0x05f2: 0xd6,      #  HEBREW LIGATURE YIDDISH DOUBLE YOD
-    0x05f3: 0xd7,      #  HEBREW PUNCTUATION GERESH
-    0x05f4: 0xd8,      #  HEBREW PUNCTUATION GERSHAYIM
-    0x200e: 0xfd,      #  LEFT-TO-RIGHT MARK
-    0x200f: 0xfe,      #  RIGHT-TO-LEFT MARK
+    0x02C6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02DC: 0x98,      #  SMALL TILDE
+    0x05B0: 0xC0,      #  HEBREW POINT SHEVA
+    0x05B1: 0xC1,      #  HEBREW POINT HATAF SEGOL
+    0x05B2: 0xC2,      #  HEBREW POINT HATAF PATAH
+    0x05B3: 0xC3,      #  HEBREW POINT HATAF QAMATS
+    0x05B4: 0xC4,      #  HEBREW POINT HIRIQ
+    0x05B5: 0xC5,      #  HEBREW POINT TSERE
+    0x05B6: 0xC6,      #  HEBREW POINT SEGOL
+    0x05B7: 0xC7,      #  HEBREW POINT PATAH
+    0x05B8: 0xC8,      #  HEBREW POINT QAMATS
+    0x05B9: 0xC9,      #  HEBREW POINT HOLAM
+    0x05BB: 0xCB,      #  HEBREW POINT QUBUTS
+    0x05BC: 0xCC,      #  HEBREW POINT DAGESH OR MAPIQ
+    0x05BD: 0xCD,      #  HEBREW POINT METEG
+    0x05BE: 0xCE,      #  HEBREW PUNCTUATION MAQAF
+    0x05BF: 0xCF,      #  HEBREW POINT RAFE
+    0x05C0: 0xD0,      #  HEBREW PUNCTUATION PASEQ
+    0x05C1: 0xD1,      #  HEBREW POINT SHIN DOT
+    0x05C2: 0xD2,      #  HEBREW POINT SIN DOT
+    0x05C3: 0xD3,      #  HEBREW PUNCTUATION SOF PASUQ
+    0x05D0: 0xE0,      #  HEBREW LETTER ALEF
+    0x05D1: 0xE1,      #  HEBREW LETTER BET
+    0x05D2: 0xE2,      #  HEBREW LETTER GIMEL
+    0x05D3: 0xE3,      #  HEBREW LETTER DALET
+    0x05D4: 0xE4,      #  HEBREW LETTER HE
+    0x05D5: 0xE5,      #  HEBREW LETTER VAV
+    0x05D6: 0xE6,      #  HEBREW LETTER ZAYIN
+    0x05D7: 0xE7,      #  HEBREW LETTER HET
+    0x05D8: 0xE8,      #  HEBREW LETTER TET
+    0x05D9: 0xE9,      #  HEBREW LETTER YOD
+    0x05DA: 0xEA,      #  HEBREW LETTER FINAL KAF
+    0x05DB: 0xEB,      #  HEBREW LETTER KAF
+    0x05DC: 0xEC,      #  HEBREW LETTER LAMED
+    0x05DD: 0xED,      #  HEBREW LETTER FINAL MEM
+    0x05DE: 0xEE,      #  HEBREW LETTER MEM
+    0x05DF: 0xEF,      #  HEBREW LETTER FINAL NUN
+    0x05E0: 0xF0,      #  HEBREW LETTER NUN
+    0x05E1: 0xF1,      #  HEBREW LETTER SAMEKH
+    0x05E2: 0xF2,      #  HEBREW LETTER AYIN
+    0x05E3: 0xF3,      #  HEBREW LETTER FINAL PE
+    0x05E4: 0xF4,      #  HEBREW LETTER PE
+    0x05E5: 0xF5,      #  HEBREW LETTER FINAL TSADI
+    0x05E6: 0xF6,      #  HEBREW LETTER TSADI
+    0x05E7: 0xF7,      #  HEBREW LETTER QOF
+    0x05E8: 0xF8,      #  HEBREW LETTER RESH
+    0x05E9: 0xF9,      #  HEBREW LETTER SHIN
+    0x05EA: 0xFA,      #  HEBREW LETTER TAV
+    0x05F0: 0xD4,      #  HEBREW LIGATURE YIDDISH DOUBLE VAV
+    0x05F1: 0xD5,      #  HEBREW LIGATURE YIDDISH VAV YOD
+    0x05F2: 0xD6,      #  HEBREW LIGATURE YIDDISH DOUBLE YOD
+    0x05F3: 0xD7,      #  HEBREW PUNCTUATION GERESH
+    0x05F4: 0xD8,      #  HEBREW PUNCTUATION GERSHAYIM
+    0x200E: 0xFD,      #  LEFT-TO-RIGHT MARK
+    0x200F: 0xFE,      #  RIGHT-TO-LEFT MARK
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x201A: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
     0x2020: 0x86,      #  DAGGER
     0x2021: 0x87,      #  DOUBLE DAGGER
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x89,      #  PER MILLE SIGN
-    0x2039: 0x8b,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0x9b,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20aa: 0xa4,      #  NEW SHEQEL SIGN
-    0x20ac: 0x80,      #  EURO SIGN
+    0x2039: 0x8B,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AA: 0xA4,      #  NEW SHEQEL SIGN
+    0x20AC: 0x80,      #  EURO SIGN
     0x2122: 0x99,      #  TRADE MARK SIGN
-}
\ No newline at end of file
+}
+
index 17fa9302ef204b5094fd8d3483816cd211b65569..6d58fbe15db0ec6b898190328aebab3461fbe51d 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u20ac'  #  0x80 -> EURO SIGN
     u'\u067e'  #  0x81 -> ARABIC LETTER PEH
     u'\u201a'  #  0x82 -> SINGLE LOW-9 QUOTATION MARK
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2021'  #  0x87 -> DOUBLE DAGGER
     u'\u02c6'  #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
     u'\u2030'  #  0x89 -> PER MILLE SIGN
-    u'\u0679'  #  0x8a -> ARABIC LETTER TTEH
-    u'\u2039'  #  0x8b -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'  #  0x8c -> LATIN CAPITAL LIGATURE OE
-    u'\u0686'  #  0x8d -> ARABIC LETTER TCHEH
-    u'\u0698'  #  0x8e -> ARABIC LETTER JEH
-    u'\u0688'  #  0x8f -> ARABIC LETTER DDAL
+    u'\u0679'  #  0x8A -> ARABIC LETTER TTEH
+    u'\u2039'  #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u0152'  #  0x8C -> LATIN CAPITAL LIGATURE OE
+    u'\u0686'  #  0x8D -> ARABIC LETTER TCHEH
+    u'\u0698'  #  0x8E -> ARABIC LETTER JEH
+    u'\u0688'  #  0x8F -> ARABIC LETTER DDAL
     u'\u06af'  #  0x90 -> ARABIC LETTER GAF
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\u06a9'  #  0x98 -> ARABIC LETTER KEHEH
     u'\u2122'  #  0x99 -> TRADE MARK SIGN
-    u'\u0691'  #  0x9a -> ARABIC LETTER RREH
-    u'\u203a'  #  0x9b -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'  #  0x9c -> LATIN SMALL LIGATURE OE
-    u'\u200c'  #  0x9d -> ZERO WIDTH NON-JOINER
-    u'\u200d'  #  0x9e -> ZERO WIDTH JOINER
-    u'\u06ba'  #  0x9f -> ARABIC LETTER NOON GHUNNA
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u060c'  #  0xa1 -> ARABIC COMMA
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u06be'  #  0xaa -> ARABIC LETTER HEH DOACHASHMEE
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\u061b'  #  0xba -> ARABIC SEMICOLON
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
-    u'\u061f'  #  0xbf -> ARABIC QUESTION MARK
-    u'\u06c1'  #  0xc0 -> ARABIC LETTER HEH GOAL
-    u'\u0621'  #  0xc1 -> ARABIC LETTER HAMZA
-    u'\u0622'  #  0xc2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'  #  0xc3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'  #  0xc4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'  #  0xc5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'  #  0xc6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'  #  0xc7 -> ARABIC LETTER ALEF
-    u'\u0628'  #  0xc8 -> ARABIC LETTER BEH
-    u'\u0629'  #  0xc9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'  #  0xca -> ARABIC LETTER TEH
-    u'\u062b'  #  0xcb -> ARABIC LETTER THEH
-    u'\u062c'  #  0xcc -> ARABIC LETTER JEEM
-    u'\u062d'  #  0xcd -> ARABIC LETTER HAH
-    u'\u062e'  #  0xce -> ARABIC LETTER KHAH
-    u'\u062f'  #  0xcf -> ARABIC LETTER DAL
-    u'\u0630'  #  0xd0 -> ARABIC LETTER THAL
-    u'\u0631'  #  0xd1 -> ARABIC LETTER REH
-    u'\u0632'  #  0xd2 -> ARABIC LETTER ZAIN
-    u'\u0633'  #  0xd3 -> ARABIC LETTER SEEN
-    u'\u0634'  #  0xd4 -> ARABIC LETTER SHEEN
-    u'\u0635'  #  0xd5 -> ARABIC LETTER SAD
-    u'\u0636'  #  0xd6 -> ARABIC LETTER DAD
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\u0637'  #  0xd8 -> ARABIC LETTER TAH
-    u'\u0638'  #  0xd9 -> ARABIC LETTER ZAH
-    u'\u0639'  #  0xda -> ARABIC LETTER AIN
-    u'\u063a'  #  0xdb -> ARABIC LETTER GHAIN
-    u'\u0640'  #  0xdc -> ARABIC TATWEEL
-    u'\u0641'  #  0xdd -> ARABIC LETTER FEH
-    u'\u0642'  #  0xde -> ARABIC LETTER QAF
-    u'\u0643'  #  0xdf -> ARABIC LETTER KAF
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\u0644'  #  0xe1 -> ARABIC LETTER LAM
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0645'  #  0xe3 -> ARABIC LETTER MEEM
-    u'\u0646'  #  0xe4 -> ARABIC LETTER NOON
-    u'\u0647'  #  0xe5 -> ARABIC LETTER HEH
-    u'\u0648'  #  0xe6 -> ARABIC LETTER WAW
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0649'  #  0xec -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'  #  0xed -> ARABIC LETTER YEH
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u064b'  #  0xf0 -> ARABIC FATHATAN
-    u'\u064c'  #  0xf1 -> ARABIC DAMMATAN
-    u'\u064d'  #  0xf2 -> ARABIC KASRATAN
-    u'\u064e'  #  0xf3 -> ARABIC FATHA
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u064f'  #  0xf5 -> ARABIC DAMMA
-    u'\u0650'  #  0xf6 -> ARABIC KASRA
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\u0651'  #  0xf8 -> ARABIC SHADDA
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\u0652'  #  0xfa -> ARABIC SUKUN
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u200e'  #  0xfd -> LEFT-TO-RIGHT MARK
-    u'\u200f'  #  0xfe -> RIGHT-TO-LEFT MARK
-    u'\u06d2'  #  0xff -> ARABIC LETTER YEH BARREE
+    u'\u0691'  #  0x9A -> ARABIC LETTER RREH
+    u'\u203a'  #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0153'  #  0x9C -> LATIN SMALL LIGATURE OE
+    u'\u200c'  #  0x9D -> ZERO WIDTH NON-JOINER
+    u'\u200d'  #  0x9E -> ZERO WIDTH JOINER
+    u'\u06ba'  #  0x9F -> ARABIC LETTER NOON GHUNNA
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u060c'  #  0xA1 -> ARABIC COMMA
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u06be'  #  0xAA -> ARABIC LETTER HEH DOACHASHMEE
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\u061b'  #  0xBA -> ARABIC SEMICOLON
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\u061f'  #  0xBF -> ARABIC QUESTION MARK
+    u'\u06c1'  #  0xC0 -> ARABIC LETTER HEH GOAL
+    u'\u0621'  #  0xC1 -> ARABIC LETTER HAMZA
+    u'\u0622'  #  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
+    u'\u0623'  #  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
+    u'\u0624'  #  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
+    u'\u0625'  #  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
+    u'\u0626'  #  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
+    u'\u0627'  #  0xC7 -> ARABIC LETTER ALEF
+    u'\u0628'  #  0xC8 -> ARABIC LETTER BEH
+    u'\u0629'  #  0xC9 -> ARABIC LETTER TEH MARBUTA
+    u'\u062a'  #  0xCA -> ARABIC LETTER TEH
+    u'\u062b'  #  0xCB -> ARABIC LETTER THEH
+    u'\u062c'  #  0xCC -> ARABIC LETTER JEEM
+    u'\u062d'  #  0xCD -> ARABIC LETTER HAH
+    u'\u062e'  #  0xCE -> ARABIC LETTER KHAH
+    u'\u062f'  #  0xCF -> ARABIC LETTER DAL
+    u'\u0630'  #  0xD0 -> ARABIC LETTER THAL
+    u'\u0631'  #  0xD1 -> ARABIC LETTER REH
+    u'\u0632'  #  0xD2 -> ARABIC LETTER ZAIN
+    u'\u0633'  #  0xD3 -> ARABIC LETTER SEEN
+    u'\u0634'  #  0xD4 -> ARABIC LETTER SHEEN
+    u'\u0635'  #  0xD5 -> ARABIC LETTER SAD
+    u'\u0636'  #  0xD6 -> ARABIC LETTER DAD
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0637'  #  0xD8 -> ARABIC LETTER TAH
+    u'\u0638'  #  0xD9 -> ARABIC LETTER ZAH
+    u'\u0639'  #  0xDA -> ARABIC LETTER AIN
+    u'\u063a'  #  0xDB -> ARABIC LETTER GHAIN
+    u'\u0640'  #  0xDC -> ARABIC TATWEEL
+    u'\u0641'  #  0xDD -> ARABIC LETTER FEH
+    u'\u0642'  #  0xDE -> ARABIC LETTER QAF
+    u'\u0643'  #  0xDF -> ARABIC LETTER KAF
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\u0644'  #  0xE1 -> ARABIC LETTER LAM
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0645'  #  0xE3 -> ARABIC LETTER MEEM
+    u'\u0646'  #  0xE4 -> ARABIC LETTER NOON
+    u'\u0647'  #  0xE5 -> ARABIC LETTER HEH
+    u'\u0648'  #  0xE6 -> ARABIC LETTER WAW
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u0649'  #  0xEC -> ARABIC LETTER ALEF MAKSURA
+    u'\u064a'  #  0xED -> ARABIC LETTER YEH
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u064b'  #  0xF0 -> ARABIC FATHATAN
+    u'\u064c'  #  0xF1 -> ARABIC DAMMATAN
+    u'\u064d'  #  0xF2 -> ARABIC KASRATAN
+    u'\u064e'  #  0xF3 -> ARABIC FATHA
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u064f'  #  0xF5 -> ARABIC DAMMA
+    u'\u0650'  #  0xF6 -> ARABIC KASRA
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\u0651'  #  0xF8 -> ARABIC SHADDA
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\u0652'  #  0xFA -> ARABIC SUKUN
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u200e'  #  0xFD -> LEFT-TO-RIGHT MARK
+    u'\u200f'  #  0xFE -> RIGHT-TO-LEFT MARK
+    u'\u06d2'  #  0xFF -> ARABIC LETTER YEH BARREE
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0152: 0x8c,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0x9c,      #  LATIN SMALL LIGATURE OE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0152: 0x8C,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0x9C,      #  LATIN SMALL LIGATURE OE
     0x0192: 0x83,      #  LATIN SMALL LETTER F WITH HOOK
-    0x02c6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x060c: 0xa1,      #  ARABIC COMMA
-    0x061b: 0xba,      #  ARABIC SEMICOLON
-    0x061f: 0xbf,      #  ARABIC QUESTION MARK
-    0x0621: 0xc1,      #  ARABIC LETTER HAMZA
-    0x0622: 0xc2,      #  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x0623: 0xc3,      #  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x0624: 0xc4,      #  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x0625: 0xc5,      #  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x0626: 0xc6,      #  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x0627: 0xc7,      #  ARABIC LETTER ALEF
-    0x0628: 0xc8,      #  ARABIC LETTER BEH
-    0x0629: 0xc9,      #  ARABIC LETTER TEH MARBUTA
-    0x062a: 0xca,      #  ARABIC LETTER TEH
-    0x062b: 0xcb,      #  ARABIC LETTER THEH
-    0x062c: 0xcc,      #  ARABIC LETTER JEEM
-    0x062d: 0xcd,      #  ARABIC LETTER HAH
-    0x062e: 0xce,      #  ARABIC LETTER KHAH
-    0x062f: 0xcf,      #  ARABIC LETTER DAL
-    0x0630: 0xd0,      #  ARABIC LETTER THAL
-    0x0631: 0xd1,      #  ARABIC LETTER REH
-    0x0632: 0xd2,      #  ARABIC LETTER ZAIN
-    0x0633: 0xd3,      #  ARABIC LETTER SEEN
-    0x0634: 0xd4,      #  ARABIC LETTER SHEEN
-    0x0635: 0xd5,      #  ARABIC LETTER SAD
-    0x0636: 0xd6,      #  ARABIC LETTER DAD
-    0x0637: 0xd8,      #  ARABIC LETTER TAH
-    0x0638: 0xd9,      #  ARABIC LETTER ZAH
-    0x0639: 0xda,      #  ARABIC LETTER AIN
-    0x063a: 0xdb,      #  ARABIC LETTER GHAIN
-    0x0640: 0xdc,      #  ARABIC TATWEEL
-    0x0641: 0xdd,      #  ARABIC LETTER FEH
-    0x0642: 0xde,      #  ARABIC LETTER QAF
-    0x0643: 0xdf,      #  ARABIC LETTER KAF
-    0x0644: 0xe1,      #  ARABIC LETTER LAM
-    0x0645: 0xe3,      #  ARABIC LETTER MEEM
-    0x0646: 0xe4,      #  ARABIC LETTER NOON
-    0x0647: 0xe5,      #  ARABIC LETTER HEH
-    0x0648: 0xe6,      #  ARABIC LETTER WAW
-    0x0649: 0xec,      #  ARABIC LETTER ALEF MAKSURA
-    0x064a: 0xed,      #  ARABIC LETTER YEH
-    0x064b: 0xf0,      #  ARABIC FATHATAN
-    0x064c: 0xf1,      #  ARABIC DAMMATAN
-    0x064d: 0xf2,      #  ARABIC KASRATAN
-    0x064e: 0xf3,      #  ARABIC FATHA
-    0x064f: 0xf5,      #  ARABIC DAMMA
-    0x0650: 0xf6,      #  ARABIC KASRA
-    0x0651: 0xf8,      #  ARABIC SHADDA
-    0x0652: 0xfa,      #  ARABIC SUKUN
-    0x0679: 0x8a,      #  ARABIC LETTER TTEH
-    0x067e: 0x81,      #  ARABIC LETTER PEH
-    0x0686: 0x8d,      #  ARABIC LETTER TCHEH
-    0x0688: 0x8f,      #  ARABIC LETTER DDAL
-    0x0691: 0x9a,      #  ARABIC LETTER RREH
-    0x0698: 0x8e,      #  ARABIC LETTER JEH
-    0x06a9: 0x98,      #  ARABIC LETTER KEHEH
-    0x06af: 0x90,      #  ARABIC LETTER GAF
-    0x06ba: 0x9f,      #  ARABIC LETTER NOON GHUNNA
-    0x06be: 0xaa,      #  ARABIC LETTER HEH DOACHASHMEE
-    0x06c1: 0xc0,      #  ARABIC LETTER HEH GOAL
-    0x06d2: 0xff,      #  ARABIC LETTER YEH BARREE
-    0x200c: 0x9d,      #  ZERO WIDTH NON-JOINER
-    0x200d: 0x9e,      #  ZERO WIDTH JOINER
-    0x200e: 0xfd,      #  LEFT-TO-RIGHT MARK
-    0x200f: 0xfe,      #  RIGHT-TO-LEFT MARK
+    0x02C6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x060C: 0xA1,      #  ARABIC COMMA
+    0x061B: 0xBA,      #  ARABIC SEMICOLON
+    0x061F: 0xBF,      #  ARABIC QUESTION MARK
+    0x0621: 0xC1,      #  ARABIC LETTER HAMZA
+    0x0622: 0xC2,      #  ARABIC LETTER ALEF WITH MADDA ABOVE
+    0x0623: 0xC3,      #  ARABIC LETTER ALEF WITH HAMZA ABOVE
+    0x0624: 0xC4,      #  ARABIC LETTER WAW WITH HAMZA ABOVE
+    0x0625: 0xC5,      #  ARABIC LETTER ALEF WITH HAMZA BELOW
+    0x0626: 0xC6,      #  ARABIC LETTER YEH WITH HAMZA ABOVE
+    0x0627: 0xC7,      #  ARABIC LETTER ALEF
+    0x0628: 0xC8,      #  ARABIC LETTER BEH
+    0x0629: 0xC9,      #  ARABIC LETTER TEH MARBUTA
+    0x062A: 0xCA,      #  ARABIC LETTER TEH
+    0x062B: 0xCB,      #  ARABIC LETTER THEH
+    0x062C: 0xCC,      #  ARABIC LETTER JEEM
+    0x062D: 0xCD,      #  ARABIC LETTER HAH
+    0x062E: 0xCE,      #  ARABIC LETTER KHAH
+    0x062F: 0xCF,      #  ARABIC LETTER DAL
+    0x0630: 0xD0,      #  ARABIC LETTER THAL
+    0x0631: 0xD1,      #  ARABIC LETTER REH
+    0x0632: 0xD2,      #  ARABIC LETTER ZAIN
+    0x0633: 0xD3,      #  ARABIC LETTER SEEN
+    0x0634: 0xD4,      #  ARABIC LETTER SHEEN
+    0x0635: 0xD5,      #  ARABIC LETTER SAD
+    0x0636: 0xD6,      #  ARABIC LETTER DAD
+    0x0637: 0xD8,      #  ARABIC LETTER TAH
+    0x0638: 0xD9,      #  ARABIC LETTER ZAH
+    0x0639: 0xDA,      #  ARABIC LETTER AIN
+    0x063A: 0xDB,      #  ARABIC LETTER GHAIN
+    0x0640: 0xDC,      #  ARABIC TATWEEL
+    0x0641: 0xDD,      #  ARABIC LETTER FEH
+    0x0642: 0xDE,      #  ARABIC LETTER QAF
+    0x0643: 0xDF,      #  ARABIC LETTER KAF
+    0x0644: 0xE1,      #  ARABIC LETTER LAM
+    0x0645: 0xE3,      #  ARABIC LETTER MEEM
+    0x0646: 0xE4,      #  ARABIC LETTER NOON
+    0x0647: 0xE5,      #  ARABIC LETTER HEH
+    0x0648: 0xE6,      #  ARABIC LETTER WAW
+    0x0649: 0xEC,      #  ARABIC LETTER ALEF MAKSURA
+    0x064A: 0xED,      #  ARABIC LETTER YEH
+    0x064B: 0xF0,      #  ARABIC FATHATAN
+    0x064C: 0xF1,      #  ARABIC DAMMATAN
+    0x064D: 0xF2,      #  ARABIC KASRATAN
+    0x064E: 0xF3,      #  ARABIC FATHA
+    0x064F: 0xF5,      #  ARABIC DAMMA
+    0x0650: 0xF6,      #  ARABIC KASRA
+    0x0651: 0xF8,      #  ARABIC SHADDA
+    0x0652: 0xFA,      #  ARABIC SUKUN
+    0x0679: 0x8A,      #  ARABIC LETTER TTEH
+    0x067E: 0x81,      #  ARABIC LETTER PEH
+    0x0686: 0x8D,      #  ARABIC LETTER TCHEH
+    0x0688: 0x8F,      #  ARABIC LETTER DDAL
+    0x0691: 0x9A,      #  ARABIC LETTER RREH
+    0x0698: 0x8E,      #  ARABIC LETTER JEH
+    0x06A9: 0x98,      #  ARABIC LETTER KEHEH
+    0x06AF: 0x90,      #  ARABIC LETTER GAF
+    0x06BA: 0x9F,      #  ARABIC LETTER NOON GHUNNA
+    0x06BE: 0xAA,      #  ARABIC LETTER HEH DOACHASHMEE
+    0x06C1: 0xC0,      #  ARABIC LETTER HEH GOAL
+    0x06D2: 0xFF,      #  ARABIC LETTER YEH BARREE
+    0x200C: 0x9D,      #  ZERO WIDTH NON-JOINER
+    0x200D: 0x9E,      #  ZERO WIDTH JOINER
+    0x200E: 0xFD,      #  LEFT-TO-RIGHT MARK
+    0x200F: 0xFE,      #  RIGHT-TO-LEFT MARK
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x201A: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
     0x2020: 0x86,      #  DAGGER
     0x2021: 0x87,      #  DOUBLE DAGGER
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x89,      #  PER MILLE SIGN
-    0x2039: 0x8b,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0x9b,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20ac: 0x80,      #  EURO SIGN
+    0x2039: 0x8B,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,      #  EURO SIGN
     0x2122: 0x99,      #  TRADE MARK SIGN
-}
\ No newline at end of file
+}
+
index 2aeab21d516f46d36a74687d6ee2f3bc2ed19bcc..dee8fd4fe331a05d823aef98ef1372cd4b588f72 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u20ac'  #  0x80 -> EURO SIGN
     u'\ufffe'  #  0x81 -> UNDEFINED
     u'\u201a'  #  0x82 -> SINGLE LOW-9 QUOTATION MARK
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2021'  #  0x87 -> DOUBLE DAGGER
     u'\ufffe'  #  0x88 -> UNDEFINED
     u'\u2030'  #  0x89 -> PER MILLE SIGN
-    u'\ufffe'  #  0x8a -> UNDEFINED
-    u'\u2039'  #  0x8b -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'  #  0x8c -> UNDEFINED
-    u'\xa8'    #  0x8d -> DIAERESIS
-    u'\u02c7'  #  0x8e -> CARON
-    u'\xb8'    #  0x8f -> CEDILLA
+    u'\ufffe'  #  0x8A -> UNDEFINED
+    u'\u2039'  #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'  #  0x8C -> UNDEFINED
+    u'\xa8'    #  0x8D -> DIAERESIS
+    u'\u02c7'  #  0x8E -> CARON
+    u'\xb8'    #  0x8F -> CEDILLA
     u'\ufffe'  #  0x90 -> UNDEFINED
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\ufffe'  #  0x98 -> UNDEFINED
     u'\u2122'  #  0x99 -> TRADE MARK SIGN
-    u'\ufffe'  #  0x9a -> UNDEFINED
-    u'\u203a'  #  0x9b -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'  #  0x9c -> UNDEFINED
-    u'\xaf'    #  0x9d -> MACRON
-    u'\u02db'  #  0x9e -> OGONEK
-    u'\ufffe'  #  0x9f -> UNDEFINED
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\ufffe'  #  0xa1 -> UNDEFINED
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\ufffe'  #  0xa5 -> UNDEFINED
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xd8'    #  0xa8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u0156'  #  0xaa -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xc6'    #  0xaf -> LATIN CAPITAL LETTER AE
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xf8'    #  0xb8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\u0157'  #  0xba -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
-    u'\xe6'    #  0xbf -> LATIN SMALL LETTER AE
-    u'\u0104'  #  0xc0 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u012e'  #  0xc1 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u0100'  #  0xc2 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u0106'  #  0xc3 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\u0118'  #  0xc6 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0112'  #  0xc7 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u010c'  #  0xc8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0179'  #  0xca -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\u0116'  #  0xcb -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\u0122'  #  0xcc -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u0136'  #  0xcd -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u012a'  #  0xce -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u013b'  #  0xcf -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u0160'  #  0xd0 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0143'  #  0xd1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0145'  #  0xd2 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\u014c'  #  0xd4 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\u0172'  #  0xd8 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u0141'  #  0xd9 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u015a'  #  0xda -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u016a'  #  0xdb -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u017b'  #  0xdd -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017d'  #  0xde -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\u0105'  #  0xe0 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u012f'  #  0xe1 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u0101'  #  0xe2 -> LATIN SMALL LETTER A WITH MACRON
-    u'\u0107'  #  0xe3 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\u0119'  #  0xe6 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u0113'  #  0xe7 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u010d'  #  0xe8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u017a'  #  0xea -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u0117'  #  0xeb -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\u0123'  #  0xec -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u0137'  #  0xed -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u012b'  #  0xee -> LATIN SMALL LETTER I WITH MACRON
-    u'\u013c'  #  0xef -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0161'  #  0xf0 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0144'  #  0xf1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0146'  #  0xf2 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u014d'  #  0xf4 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\u0173'  #  0xf8 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\u0142'  #  0xf9 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u015b'  #  0xfa -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u016b'  #  0xfb -> LATIN SMALL LETTER U WITH MACRON
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u017c'  #  0xfd -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u017e'  #  0xfe -> LATIN SMALL LETTER Z WITH CARON
-    u'\u02d9'  #  0xff -> DOT ABOVE
+    u'\ufffe'  #  0x9A -> UNDEFINED
+    u'\u203a'  #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'  #  0x9C -> UNDEFINED
+    u'\xaf'    #  0x9D -> MACRON
+    u'\u02db'  #  0x9E -> OGONEK
+    u'\ufffe'  #  0x9F -> UNDEFINED
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\ufffe'  #  0xA1 -> UNDEFINED
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\ufffe'  #  0xA5 -> UNDEFINED
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xd8'    #  0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u0156'  #  0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xc6'    #  0xAF -> LATIN CAPITAL LETTER AE
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xf8'    #  0xB8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\u0157'  #  0xBA -> LATIN SMALL LETTER R WITH CEDILLA
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xe6'    #  0xBF -> LATIN SMALL LETTER AE
+    u'\u0104'  #  0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u012e'  #  0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u0100'  #  0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\u0106'  #  0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\u0118'  #  0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\u0112'  #  0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u010c'  #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0179'  #  0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\u0116'  #  0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\u0122'  #  0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u0136'  #  0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\u012a'  #  0xCE -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u013b'  #  0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\u0160'  #  0xD0 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u0143'  #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\u0145'  #  0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\u014c'  #  0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0172'  #  0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\u0141'  #  0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\u015a'  #  0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u016a'  #  0xDB -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u017b'  #  0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\u017d'  #  0xDE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\u0105'  #  0xE0 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u012f'  #  0xE1 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u0101'  #  0xE2 -> LATIN SMALL LETTER A WITH MACRON
+    u'\u0107'  #  0xE3 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\u0119'  #  0xE6 -> LATIN SMALL LETTER E WITH OGONEK
+    u'\u0113'  #  0xE7 -> LATIN SMALL LETTER E WITH MACRON
+    u'\u010d'  #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u017a'  #  0xEA -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u0117'  #  0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\u0123'  #  0xEC -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u0137'  #  0xED -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\u012b'  #  0xEE -> LATIN SMALL LETTER I WITH MACRON
+    u'\u013c'  #  0xEF -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u0161'  #  0xF0 -> LATIN SMALL LETTER S WITH CARON
+    u'\u0144'  #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0146'  #  0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\u014d'  #  0xF4 -> LATIN SMALL LETTER O WITH MACRON
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\u0173'  #  0xF8 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\u0142'  #  0xF9 -> LATIN SMALL LETTER L WITH STROKE
+    u'\u015b'  #  0xFA -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u016b'  #  0xFB -> LATIN SMALL LETTER U WITH MACRON
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u017c'  #  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u017e'  #  0xFE -> LATIN SMALL LETTER Z WITH CARON
+    u'\u02d9'  #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,126 +415,127 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0x8d,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0x9d,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0x8f,      #  CEDILLA
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xaf,      #  LATIN CAPITAL LETTER AE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d8: 0xa8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xbf,      #  LATIN SMALL LETTER AE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f8: 0xb8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0100: 0xc2,      #  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0xe2,      #  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0xc0,      #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xe0,      #  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xc3,      #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xe3,      #  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0xc8,      #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0xe8,      #  LATIN SMALL LETTER C WITH CARON
-    0x0112: 0xc7,      #  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0xe7,      #  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0xcb,      #  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0xeb,      #  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xc6,      #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xe6,      #  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0xcc,      #  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xec,      #  LATIN SMALL LETTER G WITH CEDILLA
-    0x012a: 0xce,      #  LATIN CAPITAL LETTER I WITH MACRON
-    0x012b: 0xee,      #  LATIN SMALL LETTER I WITH MACRON
-    0x012e: 0xc1,      #  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012f: 0xe1,      #  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xcd,      #  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xed,      #  LATIN SMALL LETTER K WITH CEDILLA
-    0x013b: 0xcf,      #  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013c: 0xef,      #  LATIN SMALL LETTER L WITH CEDILLA
-    0x0141: 0xd9,      #  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xf9,      #  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xd1,      #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xf1,      #  LATIN SMALL LETTER N WITH ACUTE
-    0x0145: 0xd2,      #  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xf2,      #  LATIN SMALL LETTER N WITH CEDILLA
-    0x014c: 0xd4,      #  LATIN CAPITAL LETTER O WITH MACRON
-    0x014d: 0xf4,      #  LATIN SMALL LETTER O WITH MACRON
-    0x0156: 0xaa,      #  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0xba,      #  LATIN SMALL LETTER R WITH CEDILLA
-    0x015a: 0xda,      #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0xfa,      #  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0xd0,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xf0,      #  LATIN SMALL LETTER S WITH CARON
-    0x016a: 0xdb,      #  LATIN CAPITAL LETTER U WITH MACRON
-    0x016b: 0xfb,      #  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0xd8,      #  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xf8,      #  LATIN SMALL LETTER U WITH OGONEK
-    0x0179: 0xca,      #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0xea,      #  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0xdd,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0xfd,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0xde,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0xfe,      #  LATIN SMALL LETTER Z WITH CARON
-    0x02c7: 0x8e,      #  CARON
-    0x02d9: 0xff,      #  DOT ABOVE
-    0x02db: 0x9e,      #  OGONEK
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0x8D,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0x9D,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0x8F,      #  CEDILLA
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAF,      #  LATIN CAPITAL LETTER AE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D8: 0xA8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBF,      #  LATIN SMALL LETTER AE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F8: 0xB8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0100: 0xC2,      #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0xE2,      #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0xC0,      #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xE0,      #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC3,      #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE3,      #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,      #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,      #  LATIN SMALL LETTER C WITH CARON
+    0x0112: 0xC7,      #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0xE7,      #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0xCB,      #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0xEB,      #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0xC6,      #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xE6,      #  LATIN SMALL LETTER E WITH OGONEK
+    0x0122: 0xCC,      #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xEC,      #  LATIN SMALL LETTER G WITH CEDILLA
+    0x012A: 0xCE,      #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xEE,      #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xC1,      #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xE1,      #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xCD,      #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xED,      #  LATIN SMALL LETTER K WITH CEDILLA
+    0x013B: 0xCF,      #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xEF,      #  LATIN SMALL LETTER L WITH CEDILLA
+    0x0141: 0xD9,      #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xF9,      #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,      #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,      #  LATIN SMALL LETTER N WITH ACUTE
+    0x0145: 0xD2,      #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xF2,      #  LATIN SMALL LETTER N WITH CEDILLA
+    0x014C: 0xD4,      #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xF4,      #  LATIN SMALL LETTER O WITH MACRON
+    0x0156: 0xAA,      #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x0157: 0xBA,      #  LATIN SMALL LETTER R WITH CEDILLA
+    0x015A: 0xDA,      #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xFA,      #  LATIN SMALL LETTER S WITH ACUTE
+    0x0160: 0xD0,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xF0,      #  LATIN SMALL LETTER S WITH CARON
+    0x016A: 0xDB,      #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xFB,      #  LATIN SMALL LETTER U WITH MACRON
+    0x0172: 0xD8,      #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF8,      #  LATIN SMALL LETTER U WITH OGONEK
+    0x0179: 0xCA,      #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0xEA,      #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xDD,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xFD,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xDE,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xFE,      #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0x8E,      #  CARON
+    0x02D9: 0xFF,      #  DOT ABOVE
+    0x02DB: 0x9E,      #  OGONEK
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x201A: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
     0x2020: 0x86,      #  DAGGER
     0x2021: 0x87,      #  DOUBLE DAGGER
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x89,      #  PER MILLE SIGN
-    0x2039: 0x8b,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0x9b,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20ac: 0x80,      #  EURO SIGN
+    0x2039: 0x8B,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,      #  EURO SIGN
     0x2122: 0x99,      #  TRADE MARK SIGN
-}
\ No newline at end of file
+}
+
index 67f04de42fe0f90fc90bcd5c59d35482e77112e7..43a9ba1f9c7e7db939a6d2746d2a865faa2c1649 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u20ac'  #  0x80 -> EURO SIGN
     u'\ufffe'  #  0x81 -> UNDEFINED
     u'\u201a'  #  0x82 -> SINGLE LOW-9 QUOTATION MARK
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2021'  #  0x87 -> DOUBLE DAGGER
     u'\u02c6'  #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
     u'\u2030'  #  0x89 -> PER MILLE SIGN
-    u'\ufffe'  #  0x8a -> UNDEFINED
-    u'\u2039'  #  0x8b -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'  #  0x8c -> LATIN CAPITAL LIGATURE OE
-    u'\ufffe'  #  0x8d -> UNDEFINED
-    u'\ufffe'  #  0x8e -> UNDEFINED
-    u'\ufffe'  #  0x8f -> UNDEFINED
+    u'\ufffe'  #  0x8A -> UNDEFINED
+    u'\u2039'  #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u0152'  #  0x8C -> LATIN CAPITAL LIGATURE OE
+    u'\ufffe'  #  0x8D -> UNDEFINED
+    u'\ufffe'  #  0x8E -> UNDEFINED
+    u'\ufffe'  #  0x8F -> UNDEFINED
     u'\ufffe'  #  0x90 -> UNDEFINED
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\u02dc'  #  0x98 -> SMALL TILDE
     u'\u2122'  #  0x99 -> TRADE MARK SIGN
-    u'\ufffe'  #  0x9a -> UNDEFINED
-    u'\u203a'  #  0x9b -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'  #  0x9c -> LATIN SMALL LIGATURE OE
-    u'\ufffe'  #  0x9d -> UNDEFINED
-    u'\ufffe'  #  0x9e -> UNDEFINED
-    u'\u0178'  #  0x9f -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\xa1'    #  0xa1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\xaa'    #  0xaa -> FEMININE ORDINAL INDICATOR
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\xba'    #  0xba -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'    #  0xbf -> INVERTED QUESTION MARK
-    u'\xc0'    #  0xc0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'  #  0xc3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'    #  0xc8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'    #  0xca -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u0300'  #  0xcc -> COMBINING GRAVE ACCENT
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u0110'  #  0xd0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\xd1'    #  0xd1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\u0309'  #  0xd2 -> COMBINING HOOK ABOVE
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u01a0'  #  0xd5 -> LATIN CAPITAL LETTER O WITH HORN
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\xd8'    #  0xd8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'    #  0xd9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u01af'  #  0xdd -> LATIN CAPITAL LETTER U WITH HORN
-    u'\u0303'  #  0xde -> COMBINING TILDE
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'  #  0xe3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0301'  #  0xec -> COMBINING ACUTE ACCENT
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u0111'  #  0xf0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\xf1'    #  0xf1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\u0323'  #  0xf2 -> COMBINING DOT BELOW
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u01a1'  #  0xf5 -> LATIN SMALL LETTER O WITH HORN
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\xf8'    #  0xf8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u01b0'  #  0xfd -> LATIN SMALL LETTER U WITH HORN
-    u'\u20ab'  #  0xfe -> DONG SIGN
-    u'\xff'    #  0xff -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\ufffe'  #  0x9A -> UNDEFINED
+    u'\u203a'  #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0153'  #  0x9C -> LATIN SMALL LIGATURE OE
+    u'\ufffe'  #  0x9D -> UNDEFINED
+    u'\ufffe'  #  0x9E -> UNDEFINED
+    u'\u0178'  #  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'    #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'    #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'    #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'    #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'    #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0102'  #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'    #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'    #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u0300'  #  0xCC -> COMBINING GRAVE ACCENT
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u0110'  #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\xd1'    #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\u0309'  #  0xD2 -> COMBINING HOOK ABOVE
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u01a0'  #  0xD5 -> LATIN CAPITAL LETTER O WITH HORN
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'    #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'    #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u01af'  #  0xDD -> LATIN CAPITAL LETTER U WITH HORN
+    u'\u0303'  #  0xDE -> COMBINING TILDE
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0103'  #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u0301'  #  0xEC -> COMBINING ACUTE ACCENT
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u0111'  #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\xf1'    #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\u0323'  #  0xF2 -> COMBINING DOT BELOW
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u01a1'  #  0xF5 -> LATIN SMALL LETTER O WITH HORN
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\xf8'    #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u01b0'  #  0xFD -> LATIN SMALL LETTER U WITH HORN
+    u'\u20ab'  #  0xFE -> DONG SIGN
+    u'\xff'    #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,129 +415,130 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a1: 0xa1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xaa,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00ba: 0xba,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xbf,      #  INVERTED QUESTION MARK
-    0x00c0: 0xc0,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xc8,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xca,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0xd1,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d8: 0xd8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xd9,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0xf1,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f8: 0xf8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0xff,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0102: 0xc3,      #  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xe3,      #  LATIN SMALL LETTER A WITH BREVE
-    0x0110: 0xd0,      #  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xf0,      #  LATIN SMALL LETTER D WITH STROKE
-    0x0152: 0x8c,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0x9c,      #  LATIN SMALL LIGATURE OE
-    0x0178: 0x9f,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A1: 0xA1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xAA,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,      #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F8: 0xF8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xFF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0102: 0xC3,      #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xE3,      #  LATIN SMALL LETTER A WITH BREVE
+    0x0110: 0xD0,      #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,      #  LATIN SMALL LETTER D WITH STROKE
+    0x0152: 0x8C,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0x9C,      #  LATIN SMALL LIGATURE OE
+    0x0178: 0x9F,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
     0x0192: 0x83,      #  LATIN SMALL LETTER F WITH HOOK
-    0x01a0: 0xd5,      #  LATIN CAPITAL LETTER O WITH HORN
-    0x01a1: 0xf5,      #  LATIN SMALL LETTER O WITH HORN
-    0x01af: 0xdd,      #  LATIN CAPITAL LETTER U WITH HORN
-    0x01b0: 0xfd,      #  LATIN SMALL LETTER U WITH HORN
-    0x02c6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02dc: 0x98,      #  SMALL TILDE
-    0x0300: 0xcc,      #  COMBINING GRAVE ACCENT
-    0x0301: 0xec,      #  COMBINING ACUTE ACCENT
-    0x0303: 0xde,      #  COMBINING TILDE
-    0x0309: 0xd2,      #  COMBINING HOOK ABOVE
-    0x0323: 0xf2,      #  COMBINING DOT BELOW
+    0x01A0: 0xD5,      #  LATIN CAPITAL LETTER O WITH HORN
+    0x01A1: 0xF5,      #  LATIN SMALL LETTER O WITH HORN
+    0x01AF: 0xDD,      #  LATIN CAPITAL LETTER U WITH HORN
+    0x01B0: 0xFD,      #  LATIN SMALL LETTER U WITH HORN
+    0x02C6: 0x88,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02DC: 0x98,      #  SMALL TILDE
+    0x0300: 0xCC,      #  COMBINING GRAVE ACCENT
+    0x0301: 0xEC,      #  COMBINING ACUTE ACCENT
+    0x0303: 0xDE,      #  COMBINING TILDE
+    0x0309: 0xD2,      #  COMBINING HOOK ABOVE
+    0x0323: 0xF2,      #  COMBINING DOT BELOW
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x201A: 0x82,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,      #  DOUBLE LOW-9 QUOTATION MARK
     0x2020: 0x86,      #  DAGGER
     0x2021: 0x87,      #  DOUBLE DAGGER
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x89,      #  PER MILLE SIGN
-    0x2039: 0x8b,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0x9b,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20ab: 0xfe,      #  DONG SIGN
-    0x20ac: 0x80,      #  EURO SIGN
+    0x2039: 0x8B,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AB: 0xFE,      #  DONG SIGN
+    0x20AC: 0x80,      #  EURO SIGN
     0x2122: 0x99,      #  TRADE MARK SIGN
-}
\ No newline at end of file
+}
+
index 4748690ff4618d619d08c1a8a454d4dd0c2a766d..60082e8273c5d2651519be4d90f3605903fa00e7 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x7f'    #  0x07 -> DELETE
     u'\x97'    #  0x08 -> GRAPHIC ESCAPE
     u'\x8d'    #  0x09 -> SUPERSCRIPT
-    u'\x8e'    #  0x0a -> REPEAT
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\x8e'    #  0x0A -> REPEAT
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x87'    #  0x17 -> PROGRAM OPERATOR COMMUNICATION
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x92'    #  0x1a -> UNIT BACK SPACE
-    u'\x8f'    #  0x1b -> CUSTOMER USE ONE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x92'    #  0x1A -> UNIT BACK SPACE
+    u'\x8f'    #  0x1B -> CUSTOMER USE ONE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u'\x80'    #  0x20 -> DIGIT SELECT
     u'\x81'    #  0x21 -> START OF SIGNIFICANCE
     u'\x82'    #  0x22 -> FIELD SEPARATOR
@@ -74,12 +74,12 @@ decoding_table = (
     u'\x1b'    #  0x27 -> ESCAPE
     u'\x88'    #  0x28 -> SET ATTRIBUTE
     u'\x89'    #  0x29 -> START FIELD EXTENDED
-    u'\x8a'    #  0x2a -> SET MODE OR SWITCH
-    u'\x8b'    #  0x2b -> CONTROL SEQUENCE PREFIX
-    u'\x8c'    #  0x2c -> MODIFY FIELD ATTRIBUTE
-    u'\x05'    #  0x2d -> ENQUIRY
-    u'\x06'    #  0x2e -> ACKNOWLEDGE
-    u'\x07'    #  0x2f -> BELL
+    u'\x8a'    #  0x2A -> SET MODE OR SWITCH
+    u'\x8b'    #  0x2B -> CONTROL SEQUENCE PREFIX
+    u'\x8c'    #  0x2C -> MODIFY FIELD ATTRIBUTE
+    u'\x05'    #  0x2D -> ENQUIRY
+    u'\x06'    #  0x2E -> ACKNOWLEDGE
+    u'\x07'    #  0x2F -> BELL
     u'\x90'    #  0x30 -> <reserved>
     u'\x91'    #  0x31 -> <reserved>
     u'\x16'    #  0x32 -> SYNCHRONOUS IDLE
@@ -90,12 +90,12 @@ decoding_table = (
     u'\x04'    #  0x37 -> END OF TRANSMISSION
     u'\x98'    #  0x38 -> SUBSCRIPT
     u'\x99'    #  0x39 -> INDENT TABULATION
-    u'\x9a'    #  0x3a -> REVERSE FORM FEED
-    u'\x9b'    #  0x3b -> CUSTOMER USE THREE
-    u'\x14'    #  0x3c -> DEVICE CONTROL FOUR
-    u'\x15'    #  0x3d -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'    #  0x3e -> <reserved>
-    u'\x1a'    #  0x3f -> SUBSTITUTE
+    u'\x9a'    #  0x3A -> REVERSE FORM FEED
+    u'\x9b'    #  0x3B -> CUSTOMER USE THREE
+    u'\x14'    #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'    #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'    #  0x3E -> <reserved>
+    u'\x1a'    #  0x3F -> SUBSTITUTE
     u' '       #  0x40 -> SPACE
     u'\u05d0'  #  0x41 -> HEBREW LETTER ALEF
     u'\u05d1'  #  0x42 -> HEBREW LETTER BET
@@ -106,12 +106,12 @@ decoding_table = (
     u'\u05d6'  #  0x47 -> HEBREW LETTER ZAYIN
     u'\u05d7'  #  0x48 -> HEBREW LETTER HET
     u'\u05d8'  #  0x49 -> HEBREW LETTER TET
-    u'\xa2'    #  0x4a -> CENT SIGN
-    u'.'       #  0x4b -> FULL STOP
-    u'<'       #  0x4c -> LESS-THAN SIGN
-    u'('       #  0x4d -> LEFT PARENTHESIS
-    u'+'       #  0x4e -> PLUS SIGN
-    u'|'       #  0x4f -> VERTICAL LINE
+    u'\xa2'    #  0x4A -> CENT SIGN
+    u'.'       #  0x4B -> FULL STOP
+    u'<'       #  0x4C -> LESS-THAN SIGN
+    u'('       #  0x4D -> LEFT PARENTHESIS
+    u'+'       #  0x4E -> PLUS SIGN
+    u'|'       #  0x4F -> VERTICAL LINE
     u'&'       #  0x50 -> AMPERSAND
     u'\u05d9'  #  0x51 -> HEBREW LETTER YOD
     u'\u05da'  #  0x52 -> HEBREW LETTER FINAL KAF
@@ -122,12 +122,12 @@ decoding_table = (
     u'\u05df'  #  0x57 -> HEBREW LETTER FINAL NUN
     u'\u05e0'  #  0x58 -> HEBREW LETTER NUN
     u'\u05e1'  #  0x59 -> HEBREW LETTER SAMEKH
-    u'!'       #  0x5a -> EXCLAMATION MARK
-    u'$'       #  0x5b -> DOLLAR SIGN
-    u'*'       #  0x5c -> ASTERISK
-    u')'       #  0x5d -> RIGHT PARENTHESIS
-    u';'       #  0x5e -> SEMICOLON
-    u'\xac'    #  0x5f -> NOT SIGN
+    u'!'       #  0x5A -> EXCLAMATION MARK
+    u'$'       #  0x5B -> DOLLAR SIGN
+    u'*'       #  0x5C -> ASTERISK
+    u')'       #  0x5D -> RIGHT PARENTHESIS
+    u';'       #  0x5E -> SEMICOLON
+    u'\xac'    #  0x5F -> NOT SIGN
     u'-'       #  0x60 -> HYPHEN-MINUS
     u'/'       #  0x61 -> SOLIDUS
     u'\u05e2'  #  0x62 -> HEBREW LETTER AYIN
@@ -138,12 +138,12 @@ decoding_table = (
     u'\u05e7'  #  0x67 -> HEBREW LETTER QOF
     u'\u05e8'  #  0x68 -> HEBREW LETTER RESH
     u'\u05e9'  #  0x69 -> HEBREW LETTER SHIN
-    u'\xa6'    #  0x6a -> BROKEN BAR
-    u','       #  0x6b -> COMMA
-    u'%'       #  0x6c -> PERCENT SIGN
-    u'_'       #  0x6d -> LOW LINE
-    u'>'       #  0x6e -> GREATER-THAN SIGN
-    u'?'       #  0x6f -> QUESTION MARK
+    u'\xa6'    #  0x6A -> BROKEN BAR
+    u','       #  0x6B -> COMMA
+    u'%'       #  0x6C -> PERCENT SIGN
+    u'_'       #  0x6D -> LOW LINE
+    u'>'       #  0x6E -> GREATER-THAN SIGN
+    u'?'       #  0x6F -> QUESTION MARK
     u'\ufffe'  #  0x70 -> UNDEFINED
     u'\u05ea'  #  0x71 -> HEBREW LETTER TAV
     u'\ufffe'  #  0x72 -> UNDEFINED
@@ -154,12 +154,12 @@ decoding_table = (
     u'\ufffe'  #  0x77 -> UNDEFINED
     u'\u2017'  #  0x78 -> DOUBLE LOW LINE
     u'`'       #  0x79 -> GRAVE ACCENT
-    u':'       #  0x7a -> COLON
-    u'#'       #  0x7b -> NUMBER SIGN
-    u'@'       #  0x7c -> COMMERCIAL AT
-    u"'"       #  0x7d -> APOSTROPHE
-    u'='       #  0x7e -> EQUALS SIGN
-    u'"'       #  0x7f -> QUOTATION MARK
+    u':'       #  0x7A -> COLON
+    u'#'       #  0x7B -> NUMBER SIGN
+    u'@'       #  0x7C -> COMMERCIAL AT
+    u"'"       #  0x7D -> APOSTROPHE
+    u'='       #  0x7E -> EQUALS SIGN
+    u'"'       #  0x7F -> QUOTATION MARK
     u'\ufffe'  #  0x80 -> UNDEFINED
     u'a'       #  0x81 -> LATIN SMALL LETTER A
     u'b'       #  0x82 -> LATIN SMALL LETTER B
@@ -170,12 +170,12 @@ decoding_table = (
     u'g'       #  0x87 -> LATIN SMALL LETTER G
     u'h'       #  0x88 -> LATIN SMALL LETTER H
     u'i'       #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'    #  0x8a -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0x8b -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\ufffe'  #  0x8c -> UNDEFINED
-    u'\ufffe'  #  0x8d -> UNDEFINED
-    u'\ufffe'  #  0x8e -> UNDEFINED
-    u'\xb1'    #  0x8f -> PLUS-MINUS SIGN
+    u'\xab'    #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\ufffe'  #  0x8C -> UNDEFINED
+    u'\ufffe'  #  0x8D -> UNDEFINED
+    u'\ufffe'  #  0x8E -> UNDEFINED
+    u'\xb1'    #  0x8F -> PLUS-MINUS SIGN
     u'\xb0'    #  0x90 -> DEGREE SIGN
     u'j'       #  0x91 -> LATIN SMALL LETTER J
     u'k'       #  0x92 -> LATIN SMALL LETTER K
@@ -186,108 +186,108 @@ decoding_table = (
     u'p'       #  0x97 -> LATIN SMALL LETTER P
     u'q'       #  0x98 -> LATIN SMALL LETTER Q
     u'r'       #  0x99 -> LATIN SMALL LETTER R
-    u'\ufffe'  #  0x9a -> UNDEFINED
-    u'\ufffe'  #  0x9b -> UNDEFINED
-    u'\ufffe'  #  0x9c -> UNDEFINED
-    u'\xb8'    #  0x9d -> CEDILLA
-    u'\ufffe'  #  0x9e -> UNDEFINED
-    u'\xa4'    #  0x9f -> CURRENCY SIGN
-    u'\xb5'    #  0xa0 -> MICRO SIGN
-    u'~'       #  0xa1 -> TILDE
-    u's'       #  0xa2 -> LATIN SMALL LETTER S
-    u't'       #  0xa3 -> LATIN SMALL LETTER T
-    u'u'       #  0xa4 -> LATIN SMALL LETTER U
-    u'v'       #  0xa5 -> LATIN SMALL LETTER V
-    u'w'       #  0xa6 -> LATIN SMALL LETTER W
-    u'x'       #  0xa7 -> LATIN SMALL LETTER X
-    u'y'       #  0xa8 -> LATIN SMALL LETTER Y
-    u'z'       #  0xa9 -> LATIN SMALL LETTER Z
-    u'\ufffe'  #  0xaa -> UNDEFINED
-    u'\ufffe'  #  0xab -> UNDEFINED
-    u'\ufffe'  #  0xac -> UNDEFINED
-    u'\ufffe'  #  0xad -> UNDEFINED
-    u'\ufffe'  #  0xae -> UNDEFINED
-    u'\xae'    #  0xaf -> REGISTERED SIGN
-    u'^'       #  0xb0 -> CIRCUMFLEX ACCENT
-    u'\xa3'    #  0xb1 -> POUND SIGN
-    u'\xa5'    #  0xb2 -> YEN SIGN
-    u'\xb7'    #  0xb3 -> MIDDLE DOT
-    u'\xa9'    #  0xb4 -> COPYRIGHT SIGN
-    u'\xa7'    #  0xb5 -> SECTION SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xbc'    #  0xb7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xb8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xb9 -> VULGAR FRACTION THREE QUARTERS
-    u'['       #  0xba -> LEFT SQUARE BRACKET
-    u']'       #  0xbb -> RIGHT SQUARE BRACKET
-    u'\xaf'    #  0xbc -> MACRON
-    u'\xa8'    #  0xbd -> DIAERESIS
-    u'\xb4'    #  0xbe -> ACUTE ACCENT
-    u'\xd7'    #  0xbf -> MULTIPLICATION SIGN
-    u'{'       #  0xc0 -> LEFT CURLY BRACKET
-    u'A'       #  0xc1 -> LATIN CAPITAL LETTER A
-    u'B'       #  0xc2 -> LATIN CAPITAL LETTER B
-    u'C'       #  0xc3 -> LATIN CAPITAL LETTER C
-    u'D'       #  0xc4 -> LATIN CAPITAL LETTER D
-    u'E'       #  0xc5 -> LATIN CAPITAL LETTER E
-    u'F'       #  0xc6 -> LATIN CAPITAL LETTER F
-    u'G'       #  0xc7 -> LATIN CAPITAL LETTER G
-    u'H'       #  0xc8 -> LATIN CAPITAL LETTER H
-    u'I'       #  0xc9 -> LATIN CAPITAL LETTER I
-    u'\xad'    #  0xca -> SOFT HYPHEN
-    u'\ufffe'  #  0xcb -> UNDEFINED
-    u'\ufffe'  #  0xcc -> UNDEFINED
-    u'\ufffe'  #  0xcd -> UNDEFINED
-    u'\ufffe'  #  0xce -> UNDEFINED
-    u'\ufffe'  #  0xcf -> UNDEFINED
-    u'}'       #  0xd0 -> RIGHT CURLY BRACKET
-    u'J'       #  0xd1 -> LATIN CAPITAL LETTER J
-    u'K'       #  0xd2 -> LATIN CAPITAL LETTER K
-    u'L'       #  0xd3 -> LATIN CAPITAL LETTER L
-    u'M'       #  0xd4 -> LATIN CAPITAL LETTER M
-    u'N'       #  0xd5 -> LATIN CAPITAL LETTER N
-    u'O'       #  0xd6 -> LATIN CAPITAL LETTER O
-    u'P'       #  0xd7 -> LATIN CAPITAL LETTER P
-    u'Q'       #  0xd8 -> LATIN CAPITAL LETTER Q
-    u'R'       #  0xd9 -> LATIN CAPITAL LETTER R
-    u'\xb9'    #  0xda -> SUPERSCRIPT ONE
-    u'\ufffe'  #  0xdb -> UNDEFINED
-    u'\ufffe'  #  0xdc -> UNDEFINED
-    u'\ufffe'  #  0xdd -> UNDEFINED
-    u'\ufffe'  #  0xde -> UNDEFINED
-    u'\ufffe'  #  0xdf -> UNDEFINED
-    u'\\'      #  0xe0 -> REVERSE SOLIDUS
-    u'\xf7'    #  0xe1 -> DIVISION SIGN
-    u'S'       #  0xe2 -> LATIN CAPITAL LETTER S
-    u'T'       #  0xe3 -> LATIN CAPITAL LETTER T
-    u'U'       #  0xe4 -> LATIN CAPITAL LETTER U
-    u'V'       #  0xe5 -> LATIN CAPITAL LETTER V
-    u'W'       #  0xe6 -> LATIN CAPITAL LETTER W
-    u'X'       #  0xe7 -> LATIN CAPITAL LETTER X
-    u'Y'       #  0xe8 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0xe9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'    #  0xea -> SUPERSCRIPT TWO
-    u'\ufffe'  #  0xeb -> UNDEFINED
-    u'\ufffe'  #  0xec -> UNDEFINED
-    u'\ufffe'  #  0xed -> UNDEFINED
-    u'\ufffe'  #  0xee -> UNDEFINED
-    u'\ufffe'  #  0xef -> UNDEFINED
-    u'0'       #  0xf0 -> DIGIT ZERO
-    u'1'       #  0xf1 -> DIGIT ONE
-    u'2'       #  0xf2 -> DIGIT TWO
-    u'3'       #  0xf3 -> DIGIT THREE
-    u'4'       #  0xf4 -> DIGIT FOUR
-    u'5'       #  0xf5 -> DIGIT FIVE
-    u'6'       #  0xf6 -> DIGIT SIX
-    u'7'       #  0xf7 -> DIGIT SEVEN
-    u'8'       #  0xf8 -> DIGIT EIGHT
-    u'9'       #  0xf9 -> DIGIT NINE
-    u'\xb3'    #  0xfa -> SUPERSCRIPT THREE
-    u'\ufffe'  #  0xfb -> UNDEFINED
-    u'\ufffe'  #  0xfc -> UNDEFINED
-    u'\ufffe'  #  0xfd -> UNDEFINED
-    u'\ufffe'  #  0xfe -> UNDEFINED
-    u'\x9f'    #  0xff -> EIGHT ONES
+    u'\ufffe'  #  0x9A -> UNDEFINED
+    u'\ufffe'  #  0x9B -> UNDEFINED
+    u'\ufffe'  #  0x9C -> UNDEFINED
+    u'\xb8'    #  0x9D -> CEDILLA
+    u'\ufffe'  #  0x9E -> UNDEFINED
+    u'\xa4'    #  0x9F -> CURRENCY SIGN
+    u'\xb5'    #  0xA0 -> MICRO SIGN
+    u'~'       #  0xA1 -> TILDE
+    u's'       #  0xA2 -> LATIN SMALL LETTER S
+    u't'       #  0xA3 -> LATIN SMALL LETTER T
+    u'u'       #  0xA4 -> LATIN SMALL LETTER U
+    u'v'       #  0xA5 -> LATIN SMALL LETTER V
+    u'w'       #  0xA6 -> LATIN SMALL LETTER W
+    u'x'       #  0xA7 -> LATIN SMALL LETTER X
+    u'y'       #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'       #  0xA9 -> LATIN SMALL LETTER Z
+    u'\ufffe'  #  0xAA -> UNDEFINED
+    u'\ufffe'  #  0xAB -> UNDEFINED
+    u'\ufffe'  #  0xAC -> UNDEFINED
+    u'\ufffe'  #  0xAD -> UNDEFINED
+    u'\ufffe'  #  0xAE -> UNDEFINED
+    u'\xae'    #  0xAF -> REGISTERED SIGN
+    u'^'       #  0xB0 -> CIRCUMFLEX ACCENT
+    u'\xa3'    #  0xB1 -> POUND SIGN
+    u'\xa5'    #  0xB2 -> YEN SIGN
+    u'\xb7'    #  0xB3 -> MIDDLE DOT
+    u'\xa9'    #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'    #  0xB5 -> SECTION SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xbc'    #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'['       #  0xBA -> LEFT SQUARE BRACKET
+    u']'       #  0xBB -> RIGHT SQUARE BRACKET
+    u'\xaf'    #  0xBC -> MACRON
+    u'\xa8'    #  0xBD -> DIAERESIS
+    u'\xb4'    #  0xBE -> ACUTE ACCENT
+    u'\xd7'    #  0xBF -> MULTIPLICATION SIGN
+    u'{'       #  0xC0 -> LEFT CURLY BRACKET
+    u'A'       #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'       #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'       #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'       #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'       #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'       #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'       #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'       #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'       #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'    #  0xCA -> SOFT HYPHEN
+    u'\ufffe'  #  0xCB -> UNDEFINED
+    u'\ufffe'  #  0xCC -> UNDEFINED
+    u'\ufffe'  #  0xCD -> UNDEFINED
+    u'\ufffe'  #  0xCE -> UNDEFINED
+    u'\ufffe'  #  0xCF -> UNDEFINED
+    u'}'       #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'       #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'       #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'       #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'       #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'       #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'       #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'       #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'       #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'       #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'    #  0xDA -> SUPERSCRIPT ONE
+    u'\ufffe'  #  0xDB -> UNDEFINED
+    u'\ufffe'  #  0xDC -> UNDEFINED
+    u'\ufffe'  #  0xDD -> UNDEFINED
+    u'\ufffe'  #  0xDE -> UNDEFINED
+    u'\ufffe'  #  0xDF -> UNDEFINED
+    u'\\'      #  0xE0 -> REVERSE SOLIDUS
+    u'\xf7'    #  0xE1 -> DIVISION SIGN
+    u'S'       #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'       #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'       #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'       #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'       #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'       #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'       #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'       #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'    #  0xEA -> SUPERSCRIPT TWO
+    u'\ufffe'  #  0xEB -> UNDEFINED
+    u'\ufffe'  #  0xEC -> UNDEFINED
+    u'\ufffe'  #  0xED -> UNDEFINED
+    u'\ufffe'  #  0xEE -> UNDEFINED
+    u'\ufffe'  #  0xEF -> UNDEFINED
+    u'0'       #  0xF0 -> DIGIT ZERO
+    u'1'       #  0xF1 -> DIGIT ONE
+    u'2'       #  0xF2 -> DIGIT TWO
+    u'3'       #  0xF3 -> DIGIT THREE
+    u'4'       #  0xF4 -> DIGIT FOUR
+    u'5'       #  0xF5 -> DIGIT FIVE
+    u'6'       #  0xF6 -> DIGIT SIX
+    u'7'       #  0xF7 -> DIGIT SEVEN
+    u'8'       #  0xF8 -> DIGIT EIGHT
+    u'9'       #  0xF9 -> DIGIT NINE
+    u'\xb3'    #  0xFA -> SUPERSCRIPT THREE
+    u'\ufffe'  #  0xFB -> UNDEFINED
+    u'\ufffe'  #  0xFC -> UNDEFINED
+    u'\ufffe'  #  0xFD -> UNDEFINED
+    u'\ufffe'  #  0xFE -> UNDEFINED
+    u'\x9f'    #  0xFF -> EIGHT ONES
 )
 
 ### Encoding Map
@@ -298,97 +298,97 @@ encoding_map = {
     0x0002: 0x02,      #  START OF TEXT
     0x0003: 0x03,      #  END OF TEXT
     0x0004: 0x37,      #  END OF TRANSMISSION
-    0x0005: 0x2d,      #  ENQUIRY
-    0x0006: 0x2e,      #  ACKNOWLEDGE
-    0x0007: 0x2f,      #  BELL
+    0x0005: 0x2D,      #  ENQUIRY
+    0x0006: 0x2E,      #  ACKNOWLEDGE
+    0x0007: 0x2F,      #  BELL
     0x0008: 0x16,      #  BACKSPACE
     0x0009: 0x05,      #  HORIZONTAL TABULATION
-    0x000a: 0x25,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x25,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
     0x0013: 0x13,      #  DEVICE CONTROL THREE
-    0x0014: 0x3c,      #  DEVICE CONTROL FOUR
-    0x0015: 0x3d,      #  NEGATIVE ACKNOWLEDGE
+    0x0014: 0x3C,      #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,      #  NEGATIVE ACKNOWLEDGE
     0x0016: 0x32,      #  SYNCHRONOUS IDLE
     0x0017: 0x26,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x3f,      #  SUBSTITUTE
-    0x001b: 0x27,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x3F,      #  SUBSTITUTE
+    0x001B: 0x27,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x40,      #  SPACE
-    0x0021: 0x5a,      #  EXCLAMATION MARK
-    0x0022: 0x7f,      #  QUOTATION MARK
-    0x0023: 0x7b,      #  NUMBER SIGN
-    0x0024: 0x5b,      #  DOLLAR SIGN
-    0x0025: 0x6c,      #  PERCENT SIGN
+    0x0021: 0x5A,      #  EXCLAMATION MARK
+    0x0022: 0x7F,      #  QUOTATION MARK
+    0x0023: 0x7B,      #  NUMBER SIGN
+    0x0024: 0x5B,      #  DOLLAR SIGN
+    0x0025: 0x6C,      #  PERCENT SIGN
     0x0026: 0x50,      #  AMPERSAND
-    0x0027: 0x7d,      #  APOSTROPHE
-    0x0028: 0x4d,      #  LEFT PARENTHESIS
-    0x0029: 0x5d,      #  RIGHT PARENTHESIS
-    0x002a: 0x5c,      #  ASTERISK
-    0x002b: 0x4e,      #  PLUS SIGN
-    0x002c: 0x6b,      #  COMMA
-    0x002d: 0x60,      #  HYPHEN-MINUS
-    0x002e: 0x4b,      #  FULL STOP
-    0x002f: 0x61,      #  SOLIDUS
-    0x0030: 0xf0,      #  DIGIT ZERO
-    0x0031: 0xf1,      #  DIGIT ONE
-    0x0032: 0xf2,      #  DIGIT TWO
-    0x0033: 0xf3,      #  DIGIT THREE
-    0x0034: 0xf4,      #  DIGIT FOUR
-    0x0035: 0xf5,      #  DIGIT FIVE
-    0x0036: 0xf6,      #  DIGIT SIX
-    0x0037: 0xf7,      #  DIGIT SEVEN
-    0x0038: 0xf8,      #  DIGIT EIGHT
-    0x0039: 0xf9,      #  DIGIT NINE
-    0x003a: 0x7a,      #  COLON
-    0x003b: 0x5e,      #  SEMICOLON
-    0x003c: 0x4c,      #  LESS-THAN SIGN
-    0x003d: 0x7e,      #  EQUALS SIGN
-    0x003e: 0x6e,      #  GREATER-THAN SIGN
-    0x003f: 0x6f,      #  QUESTION MARK
-    0x0040: 0x7c,      #  COMMERCIAL AT
-    0x0041: 0xc1,      #  LATIN CAPITAL LETTER A
-    0x0042: 0xc2,      #  LATIN CAPITAL LETTER B
-    0x0043: 0xc3,      #  LATIN CAPITAL LETTER C
-    0x0044: 0xc4,      #  LATIN CAPITAL LETTER D
-    0x0045: 0xc5,      #  LATIN CAPITAL LETTER E
-    0x0046: 0xc6,      #  LATIN CAPITAL LETTER F
-    0x0047: 0xc7,      #  LATIN CAPITAL LETTER G
-    0x0048: 0xc8,      #  LATIN CAPITAL LETTER H
-    0x0049: 0xc9,      #  LATIN CAPITAL LETTER I
-    0x004a: 0xd1,      #  LATIN CAPITAL LETTER J
-    0x004b: 0xd2,      #  LATIN CAPITAL LETTER K
-    0x004c: 0xd3,      #  LATIN CAPITAL LETTER L
-    0x004d: 0xd4,      #  LATIN CAPITAL LETTER M
-    0x004e: 0xd5,      #  LATIN CAPITAL LETTER N
-    0x004f: 0xd6,      #  LATIN CAPITAL LETTER O
-    0x0050: 0xd7,      #  LATIN CAPITAL LETTER P
-    0x0051: 0xd8,      #  LATIN CAPITAL LETTER Q
-    0x0052: 0xd9,      #  LATIN CAPITAL LETTER R
-    0x0053: 0xe2,      #  LATIN CAPITAL LETTER S
-    0x0054: 0xe3,      #  LATIN CAPITAL LETTER T
-    0x0055: 0xe4,      #  LATIN CAPITAL LETTER U
-    0x0056: 0xe5,      #  LATIN CAPITAL LETTER V
-    0x0057: 0xe6,      #  LATIN CAPITAL LETTER W
-    0x0058: 0xe7,      #  LATIN CAPITAL LETTER X
-    0x0059: 0xe8,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0xe9,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0xba,      #  LEFT SQUARE BRACKET
-    0x005c: 0xe0,      #  REVERSE SOLIDUS
-    0x005d: 0xbb,      #  RIGHT SQUARE BRACKET
-    0x005e: 0xb0,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x6d,      #  LOW LINE
+    0x0027: 0x7D,      #  APOSTROPHE
+    0x0028: 0x4D,      #  LEFT PARENTHESIS
+    0x0029: 0x5D,      #  RIGHT PARENTHESIS
+    0x002A: 0x5C,      #  ASTERISK
+    0x002B: 0x4E,      #  PLUS SIGN
+    0x002C: 0x6B,      #  COMMA
+    0x002D: 0x60,      #  HYPHEN-MINUS
+    0x002E: 0x4B,      #  FULL STOP
+    0x002F: 0x61,      #  SOLIDUS
+    0x0030: 0xF0,      #  DIGIT ZERO
+    0x0031: 0xF1,      #  DIGIT ONE
+    0x0032: 0xF2,      #  DIGIT TWO
+    0x0033: 0xF3,      #  DIGIT THREE
+    0x0034: 0xF4,      #  DIGIT FOUR
+    0x0035: 0xF5,      #  DIGIT FIVE
+    0x0036: 0xF6,      #  DIGIT SIX
+    0x0037: 0xF7,      #  DIGIT SEVEN
+    0x0038: 0xF8,      #  DIGIT EIGHT
+    0x0039: 0xF9,      #  DIGIT NINE
+    0x003A: 0x7A,      #  COLON
+    0x003B: 0x5E,      #  SEMICOLON
+    0x003C: 0x4C,      #  LESS-THAN SIGN
+    0x003D: 0x7E,      #  EQUALS SIGN
+    0x003E: 0x6E,      #  GREATER-THAN SIGN
+    0x003F: 0x6F,      #  QUESTION MARK
+    0x0040: 0x7C,      #  COMMERCIAL AT
+    0x0041: 0xC1,      #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,      #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,      #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,      #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,      #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,      #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,      #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,      #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,      #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,      #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,      #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,      #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,      #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,      #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,      #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,      #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,      #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,      #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,      #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,      #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,      #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,      #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,      #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,      #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,      #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0xBA,      #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,      #  REVERSE SOLIDUS
+    0x005D: 0xBB,      #  RIGHT SQUARE BRACKET
+    0x005E: 0xB0,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,      #  LOW LINE
     0x0060: 0x79,      #  GRAVE ACCENT
     0x0061: 0x81,      #  LATIN SMALL LETTER A
     0x0062: 0x82,      #  LATIN SMALL LETTER B
@@ -399,28 +399,28 @@ encoding_map = {
     0x0067: 0x87,      #  LATIN SMALL LETTER G
     0x0068: 0x88,      #  LATIN SMALL LETTER H
     0x0069: 0x89,      #  LATIN SMALL LETTER I
-    0x006a: 0x91,      #  LATIN SMALL LETTER J
-    0x006b: 0x92,      #  LATIN SMALL LETTER K
-    0x006c: 0x93,      #  LATIN SMALL LETTER L
-    0x006d: 0x94,      #  LATIN SMALL LETTER M
-    0x006e: 0x95,      #  LATIN SMALL LETTER N
-    0x006f: 0x96,      #  LATIN SMALL LETTER O
+    0x006A: 0x91,      #  LATIN SMALL LETTER J
+    0x006B: 0x92,      #  LATIN SMALL LETTER K
+    0x006C: 0x93,      #  LATIN SMALL LETTER L
+    0x006D: 0x94,      #  LATIN SMALL LETTER M
+    0x006E: 0x95,      #  LATIN SMALL LETTER N
+    0x006F: 0x96,      #  LATIN SMALL LETTER O
     0x0070: 0x97,      #  LATIN SMALL LETTER P
     0x0071: 0x98,      #  LATIN SMALL LETTER Q
     0x0072: 0x99,      #  LATIN SMALL LETTER R
-    0x0073: 0xa2,      #  LATIN SMALL LETTER S
-    0x0074: 0xa3,      #  LATIN SMALL LETTER T
-    0x0075: 0xa4,      #  LATIN SMALL LETTER U
-    0x0076: 0xa5,      #  LATIN SMALL LETTER V
-    0x0077: 0xa6,      #  LATIN SMALL LETTER W
-    0x0078: 0xa7,      #  LATIN SMALL LETTER X
-    0x0079: 0xa8,      #  LATIN SMALL LETTER Y
-    0x007a: 0xa9,      #  LATIN SMALL LETTER Z
-    0x007b: 0xc0,      #  LEFT CURLY BRACKET
-    0x007c: 0x4f,      #  VERTICAL LINE
-    0x007d: 0xd0,      #  RIGHT CURLY BRACKET
-    0x007e: 0xa1,      #  TILDE
-    0x007f: 0x07,      #  DELETE
+    0x0073: 0xA2,      #  LATIN SMALL LETTER S
+    0x0074: 0xA3,      #  LATIN SMALL LETTER T
+    0x0075: 0xA4,      #  LATIN SMALL LETTER U
+    0x0076: 0xA5,      #  LATIN SMALL LETTER V
+    0x0077: 0xA6,      #  LATIN SMALL LETTER W
+    0x0078: 0xA7,      #  LATIN SMALL LETTER X
+    0x0079: 0xA8,      #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,      #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,      #  LEFT CURLY BRACKET
+    0x007C: 0x4F,      #  VERTICAL LINE
+    0x007D: 0xD0,      #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,      #  TILDE
+    0x007F: 0x07,      #  DELETE
     0x0080: 0x20,      #  DIGIT SELECT
     0x0081: 0x21,      #  START OF SIGNIFICANCE
     0x0082: 0x22,      #  FIELD SEPARATOR
@@ -431,15 +431,15 @@ encoding_map = {
     0x0087: 0x17,      #  PROGRAM OPERATOR COMMUNICATION
     0x0088: 0x28,      #  SET ATTRIBUTE
     0x0089: 0x29,      #  START FIELD EXTENDED
-    0x008a: 0x2a,      #  SET MODE OR SWITCH
-    0x008b: 0x2b,      #  CONTROL SEQUENCE PREFIX
-    0x008c: 0x2c,      #  MODIFY FIELD ATTRIBUTE
-    0x008d: 0x09,      #  SUPERSCRIPT
-    0x008e: 0x0a,      #  REPEAT
-    0x008f: 0x1b,      #  CUSTOMER USE ONE
+    0x008A: 0x2A,      #  SET MODE OR SWITCH
+    0x008B: 0x2B,      #  CONTROL SEQUENCE PREFIX
+    0x008C: 0x2C,      #  MODIFY FIELD ATTRIBUTE
+    0x008D: 0x09,      #  SUPERSCRIPT
+    0x008E: 0x0A,      #  REPEAT
+    0x008F: 0x1B,      #  CUSTOMER USE ONE
     0x0090: 0x30,      #  <reserved>
     0x0091: 0x31,      #  <reserved>
-    0x0092: 0x1a,      #  UNIT BACK SPACE
+    0x0092: 0x1A,      #  UNIT BACK SPACE
     0x0093: 0x33,      #  INDEX RETURN
     0x0094: 0x34,      #  PRESENTATION POSITION
     0x0095: 0x35,      #  TRANSPARENT
@@ -447,68 +447,69 @@ encoding_map = {
     0x0097: 0x08,      #  GRAPHIC ESCAPE
     0x0098: 0x38,      #  SUBSCRIPT
     0x0099: 0x39,      #  INDENT TABULATION
-    0x009a: 0x3a,      #  REVERSE FORM FEED
-    0x009b: 0x3b,      #  CUSTOMER USE THREE
-    0x009c: 0x04,      #  SELECT
-    0x009d: 0x14,      #  RESTORE/ENABLE PRESENTATION
-    0x009e: 0x3e,      #  <reserved>
-    0x009f: 0xff,      #  EIGHT ONES
-    0x00a0: 0x74,      #  NO-BREAK SPACE
-    0x00a2: 0x4a,      #  CENT SIGN
-    0x00a3: 0xb1,      #  POUND SIGN
-    0x00a4: 0x9f,      #  CURRENCY SIGN
-    0x00a5: 0xb2,      #  YEN SIGN
-    0x00a6: 0x6a,      #  BROKEN BAR
-    0x00a7: 0xb5,      #  SECTION SIGN
-    0x00a8: 0xbd,      #  DIAERESIS
-    0x00a9: 0xb4,      #  COPYRIGHT SIGN
-    0x00ab: 0x8a,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x5f,      #  NOT SIGN
-    0x00ad: 0xca,      #  SOFT HYPHEN
-    0x00ae: 0xaf,      #  REGISTERED SIGN
-    0x00af: 0xbc,      #  MACRON
-    0x00b0: 0x90,      #  DEGREE SIGN
-    0x00b1: 0x8f,      #  PLUS-MINUS SIGN
-    0x00b2: 0xea,      #  SUPERSCRIPT TWO
-    0x00b3: 0xfa,      #  SUPERSCRIPT THREE
-    0x00b4: 0xbe,      #  ACUTE ACCENT
-    0x00b5: 0xa0,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb3,      #  MIDDLE DOT
-    0x00b8: 0x9d,      #  CEDILLA
-    0x00b9: 0xda,      #  SUPERSCRIPT ONE
-    0x00bb: 0x8b,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xb7,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xb8,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xb9,      #  VULGAR FRACTION THREE QUARTERS
-    0x00d7: 0xbf,      #  MULTIPLICATION SIGN
-    0x00f7: 0xe1,      #  DIVISION SIGN
-    0x05d0: 0x41,      #  HEBREW LETTER ALEF
-    0x05d1: 0x42,      #  HEBREW LETTER BET
-    0x05d2: 0x43,      #  HEBREW LETTER GIMEL
-    0x05d3: 0x44,      #  HEBREW LETTER DALET
-    0x05d4: 0x45,      #  HEBREW LETTER HE
-    0x05d5: 0x46,      #  HEBREW LETTER VAV
-    0x05d6: 0x47,      #  HEBREW LETTER ZAYIN
-    0x05d7: 0x48,      #  HEBREW LETTER HET
-    0x05d8: 0x49,      #  HEBREW LETTER TET
-    0x05d9: 0x51,      #  HEBREW LETTER YOD
-    0x05da: 0x52,      #  HEBREW LETTER FINAL KAF
-    0x05db: 0x53,      #  HEBREW LETTER KAF
-    0x05dc: 0x54,      #  HEBREW LETTER LAMED
-    0x05dd: 0x55,      #  HEBREW LETTER FINAL MEM
-    0x05de: 0x56,      #  HEBREW LETTER MEM
-    0x05df: 0x57,      #  HEBREW LETTER FINAL NUN
-    0x05e0: 0x58,      #  HEBREW LETTER NUN
-    0x05e1: 0x59,      #  HEBREW LETTER SAMEKH
-    0x05e2: 0x62,      #  HEBREW LETTER AYIN
-    0x05e3: 0x63,      #  HEBREW LETTER FINAL PE
-    0x05e4: 0x64,      #  HEBREW LETTER PE
-    0x05e5: 0x65,      #  HEBREW LETTER FINAL TSADI
-    0x05e6: 0x66,      #  HEBREW LETTER TSADI
-    0x05e7: 0x67,      #  HEBREW LETTER QOF
-    0x05e8: 0x68,      #  HEBREW LETTER RESH
-    0x05e9: 0x69,      #  HEBREW LETTER SHIN
-    0x05ea: 0x71,      #  HEBREW LETTER TAV
+    0x009A: 0x3A,      #  REVERSE FORM FEED
+    0x009B: 0x3B,      #  CUSTOMER USE THREE
+    0x009C: 0x04,      #  SELECT
+    0x009D: 0x14,      #  RESTORE/ENABLE PRESENTATION
+    0x009E: 0x3E,      #  <reserved>
+    0x009F: 0xFF,      #  EIGHT ONES
+    0x00A0: 0x74,      #  NO-BREAK SPACE
+    0x00A2: 0x4A,      #  CENT SIGN
+    0x00A3: 0xB1,      #  POUND SIGN
+    0x00A4: 0x9F,      #  CURRENCY SIGN
+    0x00A5: 0xB2,      #  YEN SIGN
+    0x00A6: 0x6A,      #  BROKEN BAR
+    0x00A7: 0xB5,      #  SECTION SIGN
+    0x00A8: 0xBD,      #  DIAERESIS
+    0x00A9: 0xB4,      #  COPYRIGHT SIGN
+    0x00AB: 0x8A,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0x5F,      #  NOT SIGN
+    0x00AD: 0xCA,      #  SOFT HYPHEN
+    0x00AE: 0xAF,      #  REGISTERED SIGN
+    0x00AF: 0xBC,      #  MACRON
+    0x00B0: 0x90,      #  DEGREE SIGN
+    0x00B1: 0x8F,      #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,      #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,      #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,      #  ACUTE ACCENT
+    0x00B5: 0xA0,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB3,      #  MIDDLE DOT
+    0x00B8: 0x9D,      #  CEDILLA
+    0x00B9: 0xDA,      #  SUPERSCRIPT ONE
+    0x00BB: 0x8B,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,      #  VULGAR FRACTION THREE QUARTERS
+    0x00D7: 0xBF,      #  MULTIPLICATION SIGN
+    0x00F7: 0xE1,      #  DIVISION SIGN
+    0x05D0: 0x41,      #  HEBREW LETTER ALEF
+    0x05D1: 0x42,      #  HEBREW LETTER BET
+    0x05D2: 0x43,      #  HEBREW LETTER GIMEL
+    0x05D3: 0x44,      #  HEBREW LETTER DALET
+    0x05D4: 0x45,      #  HEBREW LETTER HE
+    0x05D5: 0x46,      #  HEBREW LETTER VAV
+    0x05D6: 0x47,      #  HEBREW LETTER ZAYIN
+    0x05D7: 0x48,      #  HEBREW LETTER HET
+    0x05D8: 0x49,      #  HEBREW LETTER TET
+    0x05D9: 0x51,      #  HEBREW LETTER YOD
+    0x05DA: 0x52,      #  HEBREW LETTER FINAL KAF
+    0x05DB: 0x53,      #  HEBREW LETTER KAF
+    0x05DC: 0x54,      #  HEBREW LETTER LAMED
+    0x05DD: 0x55,      #  HEBREW LETTER FINAL MEM
+    0x05DE: 0x56,      #  HEBREW LETTER MEM
+    0x05DF: 0x57,      #  HEBREW LETTER FINAL NUN
+    0x05E0: 0x58,      #  HEBREW LETTER NUN
+    0x05E1: 0x59,      #  HEBREW LETTER SAMEKH
+    0x05E2: 0x62,      #  HEBREW LETTER AYIN
+    0x05E3: 0x63,      #  HEBREW LETTER FINAL PE
+    0x05E4: 0x64,      #  HEBREW LETTER PE
+    0x05E5: 0x65,      #  HEBREW LETTER FINAL TSADI
+    0x05E6: 0x66,      #  HEBREW LETTER TSADI
+    0x05E7: 0x67,      #  HEBREW LETTER QOF
+    0x05E8: 0x68,      #  HEBREW LETTER RESH
+    0x05E9: 0x69,      #  HEBREW LETTER SHIN
+    0x05EA: 0x71,      #  HEBREW LETTER TAV
     0x2017: 0x78,      #  DOUBLE LOW LINE
-}
\ No newline at end of file
+}
+
index ab3042c78552c2cabeadff1a476ef4234031befe..562bc9c3ed0c0ab42a0c046da92854105404d788 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x7f'    #  0x07 -> DELETE
     u'\x97'    #  0x08 -> CONTROL
     u'\x8d'    #  0x09 -> CONTROL
-    u'\x8e'    #  0x0a -> CONTROL
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\x8e'    #  0x0A -> CONTROL
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x87'    #  0x17 -> CONTROL
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x92'    #  0x1a -> CONTROL
-    u'\x8f'    #  0x1b -> CONTROL
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x92'    #  0x1A -> CONTROL
+    u'\x8f'    #  0x1B -> CONTROL
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u'\x80'    #  0x20 -> CONTROL
     u'\x81'    #  0x21 -> CONTROL
     u'\x82'    #  0x22 -> CONTROL
@@ -74,12 +74,12 @@ decoding_table = (
     u'\x1b'    #  0x27 -> ESCAPE
     u'\x88'    #  0x28 -> CONTROL
     u'\x89'    #  0x29 -> CONTROL
-    u'\x8a'    #  0x2a -> CONTROL
-    u'\x8b'    #  0x2b -> CONTROL
-    u'\x8c'    #  0x2c -> CONTROL
-    u'\x05'    #  0x2d -> ENQUIRY
-    u'\x06'    #  0x2e -> ACKNOWLEDGE
-    u'\x07'    #  0x2f -> BELL
+    u'\x8a'    #  0x2A -> CONTROL
+    u'\x8b'    #  0x2B -> CONTROL
+    u'\x8c'    #  0x2C -> CONTROL
+    u'\x05'    #  0x2D -> ENQUIRY
+    u'\x06'    #  0x2E -> ACKNOWLEDGE
+    u'\x07'    #  0x2F -> BELL
     u'\x90'    #  0x30 -> CONTROL
     u'\x91'    #  0x31 -> CONTROL
     u'\x16'    #  0x32 -> SYNCHRONOUS IDLE
@@ -90,12 +90,12 @@ decoding_table = (
     u'\x04'    #  0x37 -> END OF TRANSMISSION
     u'\x98'    #  0x38 -> CONTROL
     u'\x99'    #  0x39 -> CONTROL
-    u'\x9a'    #  0x3a -> CONTROL
-    u'\x9b'    #  0x3b -> CONTROL
-    u'\x14'    #  0x3c -> DEVICE CONTROL FOUR
-    u'\x15'    #  0x3d -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'    #  0x3e -> CONTROL
-    u'\x1a'    #  0x3f -> SUBSTITUTE
+    u'\x9a'    #  0x3A -> CONTROL
+    u'\x9b'    #  0x3B -> CONTROL
+    u'\x14'    #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'    #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'    #  0x3E -> CONTROL
+    u'\x1a'    #  0x3F -> SUBSTITUTE
     u' '       #  0x40 -> SPACE
     u'\xa0'    #  0x41 -> NO-BREAK SPACE
     u'\xe2'    #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
@@ -106,12 +106,12 @@ decoding_table = (
     u'\xe5'    #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
     u'\xe7'    #  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
     u'\xf1'    #  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'['       #  0x4a -> LEFT SQUARE BRACKET
-    u'.'       #  0x4b -> FULL STOP
-    u'<'       #  0x4c -> LESS-THAN SIGN
-    u'('       #  0x4d -> LEFT PARENTHESIS
-    u'+'       #  0x4e -> PLUS SIGN
-    u'!'       #  0x4f -> EXCLAMATION MARK
+    u'['       #  0x4A -> LEFT SQUARE BRACKET
+    u'.'       #  0x4B -> FULL STOP
+    u'<'       #  0x4C -> LESS-THAN SIGN
+    u'('       #  0x4D -> LEFT PARENTHESIS
+    u'+'       #  0x4E -> PLUS SIGN
+    u'!'       #  0x4F -> EXCLAMATION MARK
     u'&'       #  0x50 -> AMPERSAND
     u'\xe9'    #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
     u'\xea'    #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -122,12 +122,12 @@ decoding_table = (
     u'\xef'    #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
     u'\xec'    #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
     u'\xdf'    #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u']'       #  0x5a -> RIGHT SQUARE BRACKET
-    u'$'       #  0x5b -> DOLLAR SIGN
-    u'*'       #  0x5c -> ASTERISK
-    u')'       #  0x5d -> RIGHT PARENTHESIS
-    u';'       #  0x5e -> SEMICOLON
-    u'^'       #  0x5f -> CIRCUMFLEX ACCENT
+    u']'       #  0x5A -> RIGHT SQUARE BRACKET
+    u'$'       #  0x5B -> DOLLAR SIGN
+    u'*'       #  0x5C -> ASTERISK
+    u')'       #  0x5D -> RIGHT PARENTHESIS
+    u';'       #  0x5E -> SEMICOLON
+    u'^'       #  0x5F -> CIRCUMFLEX ACCENT
     u'-'       #  0x60 -> HYPHEN-MINUS
     u'/'       #  0x61 -> SOLIDUS
     u'\xc2'    #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
@@ -138,12 +138,12 @@ decoding_table = (
     u'\xc5'    #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
     u'\xc7'    #  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
     u'\xd1'    #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xa6'    #  0x6a -> BROKEN BAR
-    u','       #  0x6b -> COMMA
-    u'%'       #  0x6c -> PERCENT SIGN
-    u'_'       #  0x6d -> LOW LINE
-    u'>'       #  0x6e -> GREATER-THAN SIGN
-    u'?'       #  0x6f -> QUESTION MARK
+    u'\xa6'    #  0x6A -> BROKEN BAR
+    u','       #  0x6B -> COMMA
+    u'%'       #  0x6C -> PERCENT SIGN
+    u'_'       #  0x6D -> LOW LINE
+    u'>'       #  0x6E -> GREATER-THAN SIGN
+    u'?'       #  0x6F -> QUESTION MARK
     u'\xf8'    #  0x70 -> LATIN SMALL LETTER O WITH STROKE
     u'\xc9'    #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
     u'\xca'    #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
@@ -154,12 +154,12 @@ decoding_table = (
     u'\xcf'    #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
     u'\xcc'    #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
     u'`'       #  0x79 -> GRAVE ACCENT
-    u':'       #  0x7a -> COLON
-    u'#'       #  0x7b -> NUMBER SIGN
-    u'@'       #  0x7c -> COMMERCIAL AT
-    u"'"       #  0x7d -> APOSTROPHE
-    u'='       #  0x7e -> EQUALS SIGN
-    u'"'       #  0x7f -> QUOTATION MARK
+    u':'       #  0x7A -> COLON
+    u'#'       #  0x7B -> NUMBER SIGN
+    u'@'       #  0x7C -> COMMERCIAL AT
+    u"'"       #  0x7D -> APOSTROPHE
+    u'='       #  0x7E -> EQUALS SIGN
+    u'"'       #  0x7F -> QUOTATION MARK
     u'\xd8'    #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
     u'a'       #  0x81 -> LATIN SMALL LETTER A
     u'b'       #  0x82 -> LATIN SMALL LETTER B
@@ -170,12 +170,12 @@ decoding_table = (
     u'g'       #  0x87 -> LATIN SMALL LETTER G
     u'h'       #  0x88 -> LATIN SMALL LETTER H
     u'i'       #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'    #  0x8a -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0x8b -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xf0'    #  0x8c -> LATIN SMALL LETTER ETH (ICELANDIC)
-    u'\xfd'    #  0x8d -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'    #  0x8e -> LATIN SMALL LETTER THORN (ICELANDIC)
-    u'\xb1'    #  0x8f -> PLUS-MINUS SIGN
+    u'\xab'    #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xf0'    #  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
+    u'\xfd'    #  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'    #  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
+    u'\xb1'    #  0x8F -> PLUS-MINUS SIGN
     u'\xb0'    #  0x90 -> DEGREE SIGN
     u'j'       #  0x91 -> LATIN SMALL LETTER J
     u'k'       #  0x92 -> LATIN SMALL LETTER K
@@ -186,108 +186,108 @@ decoding_table = (
     u'p'       #  0x97 -> LATIN SMALL LETTER P
     u'q'       #  0x98 -> LATIN SMALL LETTER Q
     u'r'       #  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'    #  0x9a -> FEMININE ORDINAL INDICATOR
-    u'\xba'    #  0x9b -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'    #  0x9c -> LATIN SMALL LIGATURE AE
-    u'\xb8'    #  0x9d -> CEDILLA
-    u'\xc6'    #  0x9e -> LATIN CAPITAL LIGATURE AE
-    u'\xa4'    #  0x9f -> CURRENCY SIGN
-    u'\xb5'    #  0xa0 -> MICRO SIGN
-    u'~'       #  0xa1 -> TILDE
-    u's'       #  0xa2 -> LATIN SMALL LETTER S
-    u't'       #  0xa3 -> LATIN SMALL LETTER T
-    u'u'       #  0xa4 -> LATIN SMALL LETTER U
-    u'v'       #  0xa5 -> LATIN SMALL LETTER V
-    u'w'       #  0xa6 -> LATIN SMALL LETTER W
-    u'x'       #  0xa7 -> LATIN SMALL LETTER X
-    u'y'       #  0xa8 -> LATIN SMALL LETTER Y
-    u'z'       #  0xa9 -> LATIN SMALL LETTER Z
-    u'\xa1'    #  0xaa -> INVERTED EXCLAMATION MARK
-    u'\xbf'    #  0xab -> INVERTED QUESTION MARK
-    u'\xd0'    #  0xac -> LATIN CAPITAL LETTER ETH (ICELANDIC)
-    u'\xdd'    #  0xad -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'    #  0xae -> LATIN CAPITAL LETTER THORN (ICELANDIC)
-    u'\xae'    #  0xaf -> REGISTERED SIGN
-    u'\xa2'    #  0xb0 -> CENT SIGN
-    u'\xa3'    #  0xb1 -> POUND SIGN
-    u'\xa5'    #  0xb2 -> YEN SIGN
-    u'\xb7'    #  0xb3 -> MIDDLE DOT
-    u'\xa9'    #  0xb4 -> COPYRIGHT SIGN
-    u'\xa7'    #  0xb5 -> SECTION SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xbc'    #  0xb7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xb8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xb9 -> VULGAR FRACTION THREE QUARTERS
-    u'\xac'    #  0xba -> NOT SIGN
-    u'|'       #  0xbb -> VERTICAL LINE
-    u'\xaf'    #  0xbc -> MACRON
-    u'\xa8'    #  0xbd -> DIAERESIS
-    u'\xb4'    #  0xbe -> ACUTE ACCENT
-    u'\xd7'    #  0xbf -> MULTIPLICATION SIGN
-    u'{'       #  0xc0 -> LEFT CURLY BRACKET
-    u'A'       #  0xc1 -> LATIN CAPITAL LETTER A
-    u'B'       #  0xc2 -> LATIN CAPITAL LETTER B
-    u'C'       #  0xc3 -> LATIN CAPITAL LETTER C
-    u'D'       #  0xc4 -> LATIN CAPITAL LETTER D
-    u'E'       #  0xc5 -> LATIN CAPITAL LETTER E
-    u'F'       #  0xc6 -> LATIN CAPITAL LETTER F
-    u'G'       #  0xc7 -> LATIN CAPITAL LETTER G
-    u'H'       #  0xc8 -> LATIN CAPITAL LETTER H
-    u'I'       #  0xc9 -> LATIN CAPITAL LETTER I
-    u'\xad'    #  0xca -> SOFT HYPHEN
-    u'\xf4'    #  0xcb -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0xcc -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'    #  0xcd -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xce -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'    #  0xcf -> LATIN SMALL LETTER O WITH TILDE
-    u'}'       #  0xd0 -> RIGHT CURLY BRACKET
-    u'J'       #  0xd1 -> LATIN CAPITAL LETTER J
-    u'K'       #  0xd2 -> LATIN CAPITAL LETTER K
-    u'L'       #  0xd3 -> LATIN CAPITAL LETTER L
-    u'M'       #  0xd4 -> LATIN CAPITAL LETTER M
-    u'N'       #  0xd5 -> LATIN CAPITAL LETTER N
-    u'O'       #  0xd6 -> LATIN CAPITAL LETTER O
-    u'P'       #  0xd7 -> LATIN CAPITAL LETTER P
-    u'Q'       #  0xd8 -> LATIN CAPITAL LETTER Q
-    u'R'       #  0xd9 -> LATIN CAPITAL LETTER R
-    u'\xb9'    #  0xda -> SUPERSCRIPT ONE
-    u'\xfb'    #  0xdb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xdc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf9'    #  0xdd -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xde -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'    #  0xdf -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\\'      #  0xe0 -> REVERSE SOLIDUS
-    u'\xf7'    #  0xe1 -> DIVISION SIGN
-    u'S'       #  0xe2 -> LATIN CAPITAL LETTER S
-    u'T'       #  0xe3 -> LATIN CAPITAL LETTER T
-    u'U'       #  0xe4 -> LATIN CAPITAL LETTER U
-    u'V'       #  0xe5 -> LATIN CAPITAL LETTER V
-    u'W'       #  0xe6 -> LATIN CAPITAL LETTER W
-    u'X'       #  0xe7 -> LATIN CAPITAL LETTER X
-    u'Y'       #  0xe8 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0xe9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'    #  0xea -> SUPERSCRIPT TWO
-    u'\xd4'    #  0xeb -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd6'    #  0xec -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd2'    #  0xed -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'    #  0xef -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'       #  0xf0 -> DIGIT ZERO
-    u'1'       #  0xf1 -> DIGIT ONE
-    u'2'       #  0xf2 -> DIGIT TWO
-    u'3'       #  0xf3 -> DIGIT THREE
-    u'4'       #  0xf4 -> DIGIT FOUR
-    u'5'       #  0xf5 -> DIGIT FIVE
-    u'6'       #  0xf6 -> DIGIT SIX
-    u'7'       #  0xf7 -> DIGIT SEVEN
-    u'8'       #  0xf8 -> DIGIT EIGHT
-    u'9'       #  0xf9 -> DIGIT NINE
-    u'\xb3'    #  0xfa -> SUPERSCRIPT THREE
-    u'\xdb'    #  0xfb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xfc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd9'    #  0xfd -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xfe -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'    #  0xff -> CONTROL
+    u'\xaa'    #  0x9A -> FEMININE ORDINAL INDICATOR
+    u'\xba'    #  0x9B -> MASCULINE ORDINAL INDICATOR
+    u'\xe6'    #  0x9C -> LATIN SMALL LIGATURE AE
+    u'\xb8'    #  0x9D -> CEDILLA
+    u'\xc6'    #  0x9E -> LATIN CAPITAL LIGATURE AE
+    u'\xa4'    #  0x9F -> CURRENCY SIGN
+    u'\xb5'    #  0xA0 -> MICRO SIGN
+    u'~'       #  0xA1 -> TILDE
+    u's'       #  0xA2 -> LATIN SMALL LETTER S
+    u't'       #  0xA3 -> LATIN SMALL LETTER T
+    u'u'       #  0xA4 -> LATIN SMALL LETTER U
+    u'v'       #  0xA5 -> LATIN SMALL LETTER V
+    u'w'       #  0xA6 -> LATIN SMALL LETTER W
+    u'x'       #  0xA7 -> LATIN SMALL LETTER X
+    u'y'       #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'       #  0xA9 -> LATIN SMALL LETTER Z
+    u'\xa1'    #  0xAA -> INVERTED EXCLAMATION MARK
+    u'\xbf'    #  0xAB -> INVERTED QUESTION MARK
+    u'\xd0'    #  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
+    u'\xdd'    #  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'    #  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
+    u'\xae'    #  0xAF -> REGISTERED SIGN
+    u'\xa2'    #  0xB0 -> CENT SIGN
+    u'\xa3'    #  0xB1 -> POUND SIGN
+    u'\xa5'    #  0xB2 -> YEN SIGN
+    u'\xb7'    #  0xB3 -> MIDDLE DOT
+    u'\xa9'    #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'    #  0xB5 -> SECTION SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xbc'    #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'\xac'    #  0xBA -> NOT SIGN
+    u'|'       #  0xBB -> VERTICAL LINE
+    u'\xaf'    #  0xBC -> MACRON
+    u'\xa8'    #  0xBD -> DIAERESIS
+    u'\xb4'    #  0xBE -> ACUTE ACCENT
+    u'\xd7'    #  0xBF -> MULTIPLICATION SIGN
+    u'{'       #  0xC0 -> LEFT CURLY BRACKET
+    u'A'       #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'       #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'       #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'       #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'       #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'       #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'       #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'       #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'       #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'    #  0xCA -> SOFT HYPHEN
+    u'\xf4'    #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'    #  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'    #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf5'    #  0xCF -> LATIN SMALL LETTER O WITH TILDE
+    u'}'       #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'       #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'       #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'       #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'       #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'       #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'       #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'       #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'       #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'       #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'    #  0xDA -> SUPERSCRIPT ONE
+    u'\xfb'    #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xf9'    #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xff'    #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\\'      #  0xE0 -> REVERSE SOLIDUS
+    u'\xf7'    #  0xE1 -> DIVISION SIGN
+    u'S'       #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'       #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'       #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'       #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'       #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'       #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'       #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'       #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'    #  0xEA -> SUPERSCRIPT TWO
+    u'\xd4'    #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd6'    #  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd2'    #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd5'    #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
+    u'0'       #  0xF0 -> DIGIT ZERO
+    u'1'       #  0xF1 -> DIGIT ONE
+    u'2'       #  0xF2 -> DIGIT TWO
+    u'3'       #  0xF3 -> DIGIT THREE
+    u'4'       #  0xF4 -> DIGIT FOUR
+    u'5'       #  0xF5 -> DIGIT FIVE
+    u'6'       #  0xF6 -> DIGIT SIX
+    u'7'       #  0xF7 -> DIGIT SEVEN
+    u'8'       #  0xF8 -> DIGIT EIGHT
+    u'9'       #  0xF9 -> DIGIT NINE
+    u'\xb3'    #  0xFA -> SUPERSCRIPT THREE
+    u'\xdb'    #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xd9'    #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\x9f'    #  0xFF -> CONTROL
 )
 
 ### Encoding Map
@@ -298,97 +298,97 @@ encoding_map = {
     0x0002: 0x02,      #  START OF TEXT
     0x0003: 0x03,      #  END OF TEXT
     0x0004: 0x37,      #  END OF TRANSMISSION
-    0x0005: 0x2d,      #  ENQUIRY
-    0x0006: 0x2e,      #  ACKNOWLEDGE
-    0x0007: 0x2f,      #  BELL
+    0x0005: 0x2D,      #  ENQUIRY
+    0x0006: 0x2E,      #  ACKNOWLEDGE
+    0x0007: 0x2F,      #  BELL
     0x0008: 0x16,      #  BACKSPACE
     0x0009: 0x05,      #  HORIZONTAL TABULATION
-    0x000a: 0x25,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x25,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
     0x0013: 0x13,      #  DEVICE CONTROL THREE
-    0x0014: 0x3c,      #  DEVICE CONTROL FOUR
-    0x0015: 0x3d,      #  NEGATIVE ACKNOWLEDGE
+    0x0014: 0x3C,      #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,      #  NEGATIVE ACKNOWLEDGE
     0x0016: 0x32,      #  SYNCHRONOUS IDLE
     0x0017: 0x26,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x3f,      #  SUBSTITUTE
-    0x001b: 0x27,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x3F,      #  SUBSTITUTE
+    0x001B: 0x27,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x40,      #  SPACE
-    0x0021: 0x4f,      #  EXCLAMATION MARK
-    0x0022: 0x7f,      #  QUOTATION MARK
-    0x0023: 0x7b,      #  NUMBER SIGN
-    0x0024: 0x5b,      #  DOLLAR SIGN
-    0x0025: 0x6c,      #  PERCENT SIGN
+    0x0021: 0x4F,      #  EXCLAMATION MARK
+    0x0022: 0x7F,      #  QUOTATION MARK
+    0x0023: 0x7B,      #  NUMBER SIGN
+    0x0024: 0x5B,      #  DOLLAR SIGN
+    0x0025: 0x6C,      #  PERCENT SIGN
     0x0026: 0x50,      #  AMPERSAND
-    0x0027: 0x7d,      #  APOSTROPHE
-    0x0028: 0x4d,      #  LEFT PARENTHESIS
-    0x0029: 0x5d,      #  RIGHT PARENTHESIS
-    0x002a: 0x5c,      #  ASTERISK
-    0x002b: 0x4e,      #  PLUS SIGN
-    0x002c: 0x6b,      #  COMMA
-    0x002d: 0x60,      #  HYPHEN-MINUS
-    0x002e: 0x4b,      #  FULL STOP
-    0x002f: 0x61,      #  SOLIDUS
-    0x0030: 0xf0,      #  DIGIT ZERO
-    0x0031: 0xf1,      #  DIGIT ONE
-    0x0032: 0xf2,      #  DIGIT TWO
-    0x0033: 0xf3,      #  DIGIT THREE
-    0x0034: 0xf4,      #  DIGIT FOUR
-    0x0035: 0xf5,      #  DIGIT FIVE
-    0x0036: 0xf6,      #  DIGIT SIX
-    0x0037: 0xf7,      #  DIGIT SEVEN
-    0x0038: 0xf8,      #  DIGIT EIGHT
-    0x0039: 0xf9,      #  DIGIT NINE
-    0x003a: 0x7a,      #  COLON
-    0x003b: 0x5e,      #  SEMICOLON
-    0x003c: 0x4c,      #  LESS-THAN SIGN
-    0x003d: 0x7e,      #  EQUALS SIGN
-    0x003e: 0x6e,      #  GREATER-THAN SIGN
-    0x003f: 0x6f,      #  QUESTION MARK
-    0x0040: 0x7c,      #  COMMERCIAL AT
-    0x0041: 0xc1,      #  LATIN CAPITAL LETTER A
-    0x0042: 0xc2,      #  LATIN CAPITAL LETTER B
-    0x0043: 0xc3,      #  LATIN CAPITAL LETTER C
-    0x0044: 0xc4,      #  LATIN CAPITAL LETTER D
-    0x0045: 0xc5,      #  LATIN CAPITAL LETTER E
-    0x0046: 0xc6,      #  LATIN CAPITAL LETTER F
-    0x0047: 0xc7,      #  LATIN CAPITAL LETTER G
-    0x0048: 0xc8,      #  LATIN CAPITAL LETTER H
-    0x0049: 0xc9,      #  LATIN CAPITAL LETTER I
-    0x004a: 0xd1,      #  LATIN CAPITAL LETTER J
-    0x004b: 0xd2,      #  LATIN CAPITAL LETTER K
-    0x004c: 0xd3,      #  LATIN CAPITAL LETTER L
-    0x004d: 0xd4,      #  LATIN CAPITAL LETTER M
-    0x004e: 0xd5,      #  LATIN CAPITAL LETTER N
-    0x004f: 0xd6,      #  LATIN CAPITAL LETTER O
-    0x0050: 0xd7,      #  LATIN CAPITAL LETTER P
-    0x0051: 0xd8,      #  LATIN CAPITAL LETTER Q
-    0x0052: 0xd9,      #  LATIN CAPITAL LETTER R
-    0x0053: 0xe2,      #  LATIN CAPITAL LETTER S
-    0x0054: 0xe3,      #  LATIN CAPITAL LETTER T
-    0x0055: 0xe4,      #  LATIN CAPITAL LETTER U
-    0x0056: 0xe5,      #  LATIN CAPITAL LETTER V
-    0x0057: 0xe6,      #  LATIN CAPITAL LETTER W
-    0x0058: 0xe7,      #  LATIN CAPITAL LETTER X
-    0x0059: 0xe8,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0xe9,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x4a,      #  LEFT SQUARE BRACKET
-    0x005c: 0xe0,      #  REVERSE SOLIDUS
-    0x005d: 0x5a,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5f,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x6d,      #  LOW LINE
+    0x0027: 0x7D,      #  APOSTROPHE
+    0x0028: 0x4D,      #  LEFT PARENTHESIS
+    0x0029: 0x5D,      #  RIGHT PARENTHESIS
+    0x002A: 0x5C,      #  ASTERISK
+    0x002B: 0x4E,      #  PLUS SIGN
+    0x002C: 0x6B,      #  COMMA
+    0x002D: 0x60,      #  HYPHEN-MINUS
+    0x002E: 0x4B,      #  FULL STOP
+    0x002F: 0x61,      #  SOLIDUS
+    0x0030: 0xF0,      #  DIGIT ZERO
+    0x0031: 0xF1,      #  DIGIT ONE
+    0x0032: 0xF2,      #  DIGIT TWO
+    0x0033: 0xF3,      #  DIGIT THREE
+    0x0034: 0xF4,      #  DIGIT FOUR
+    0x0035: 0xF5,      #  DIGIT FIVE
+    0x0036: 0xF6,      #  DIGIT SIX
+    0x0037: 0xF7,      #  DIGIT SEVEN
+    0x0038: 0xF8,      #  DIGIT EIGHT
+    0x0039: 0xF9,      #  DIGIT NINE
+    0x003A: 0x7A,      #  COLON
+    0x003B: 0x5E,      #  SEMICOLON
+    0x003C: 0x4C,      #  LESS-THAN SIGN
+    0x003D: 0x7E,      #  EQUALS SIGN
+    0x003E: 0x6E,      #  GREATER-THAN SIGN
+    0x003F: 0x6F,      #  QUESTION MARK
+    0x0040: 0x7C,      #  COMMERCIAL AT
+    0x0041: 0xC1,      #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,      #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,      #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,      #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,      #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,      #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,      #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,      #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,      #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,      #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,      #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,      #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,      #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,      #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,      #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,      #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,      #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,      #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,      #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,      #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,      #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,      #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,      #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,      #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,      #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x4A,      #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,      #  REVERSE SOLIDUS
+    0x005D: 0x5A,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5F,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,      #  LOW LINE
     0x0060: 0x79,      #  GRAVE ACCENT
     0x0061: 0x81,      #  LATIN SMALL LETTER A
     0x0062: 0x82,      #  LATIN SMALL LETTER B
@@ -399,28 +399,28 @@ encoding_map = {
     0x0067: 0x87,      #  LATIN SMALL LETTER G
     0x0068: 0x88,      #  LATIN SMALL LETTER H
     0x0069: 0x89,      #  LATIN SMALL LETTER I
-    0x006a: 0x91,      #  LATIN SMALL LETTER J
-    0x006b: 0x92,      #  LATIN SMALL LETTER K
-    0x006c: 0x93,      #  LATIN SMALL LETTER L
-    0x006d: 0x94,      #  LATIN SMALL LETTER M
-    0x006e: 0x95,      #  LATIN SMALL LETTER N
-    0x006f: 0x96,      #  LATIN SMALL LETTER O
+    0x006A: 0x91,      #  LATIN SMALL LETTER J
+    0x006B: 0x92,      #  LATIN SMALL LETTER K
+    0x006C: 0x93,      #  LATIN SMALL LETTER L
+    0x006D: 0x94,      #  LATIN SMALL LETTER M
+    0x006E: 0x95,      #  LATIN SMALL LETTER N
+    0x006F: 0x96,      #  LATIN SMALL LETTER O
     0x0070: 0x97,      #  LATIN SMALL LETTER P
     0x0071: 0x98,      #  LATIN SMALL LETTER Q
     0x0072: 0x99,      #  LATIN SMALL LETTER R
-    0x0073: 0xa2,      #  LATIN SMALL LETTER S
-    0x0074: 0xa3,      #  LATIN SMALL LETTER T
-    0x0075: 0xa4,      #  LATIN SMALL LETTER U
-    0x0076: 0xa5,      #  LATIN SMALL LETTER V
-    0x0077: 0xa6,      #  LATIN SMALL LETTER W
-    0x0078: 0xa7,      #  LATIN SMALL LETTER X
-    0x0079: 0xa8,      #  LATIN SMALL LETTER Y
-    0x007a: 0xa9,      #  LATIN SMALL LETTER Z
-    0x007b: 0xc0,      #  LEFT CURLY BRACKET
-    0x007c: 0xbb,      #  VERTICAL LINE
-    0x007d: 0xd0,      #  RIGHT CURLY BRACKET
-    0x007e: 0xa1,      #  TILDE
-    0x007f: 0x07,      #  DELETE
+    0x0073: 0xA2,      #  LATIN SMALL LETTER S
+    0x0074: 0xA3,      #  LATIN SMALL LETTER T
+    0x0075: 0xA4,      #  LATIN SMALL LETTER U
+    0x0076: 0xA5,      #  LATIN SMALL LETTER V
+    0x0077: 0xA6,      #  LATIN SMALL LETTER W
+    0x0078: 0xA7,      #  LATIN SMALL LETTER X
+    0x0079: 0xA8,      #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,      #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,      #  LEFT CURLY BRACKET
+    0x007C: 0xBB,      #  VERTICAL LINE
+    0x007D: 0xD0,      #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,      #  TILDE
+    0x007F: 0x07,      #  DELETE
     0x0080: 0x20,      #  CONTROL
     0x0081: 0x21,      #  CONTROL
     0x0082: 0x22,      #  CONTROL
@@ -431,15 +431,15 @@ encoding_map = {
     0x0087: 0x17,      #  CONTROL
     0x0088: 0x28,      #  CONTROL
     0x0089: 0x29,      #  CONTROL
-    0x008a: 0x2a,      #  CONTROL
-    0x008b: 0x2b,      #  CONTROL
-    0x008c: 0x2c,      #  CONTROL
-    0x008d: 0x09,      #  CONTROL
-    0x008e: 0x0a,      #  CONTROL
-    0x008f: 0x1b,      #  CONTROL
+    0x008A: 0x2A,      #  CONTROL
+    0x008B: 0x2B,      #  CONTROL
+    0x008C: 0x2C,      #  CONTROL
+    0x008D: 0x09,      #  CONTROL
+    0x008E: 0x0A,      #  CONTROL
+    0x008F: 0x1B,      #  CONTROL
     0x0090: 0x30,      #  CONTROL
     0x0091: 0x31,      #  CONTROL
-    0x0092: 0x1a,      #  CONTROL
+    0x0092: 0x1A,      #  CONTROL
     0x0093: 0x33,      #  CONTROL
     0x0094: 0x34,      #  CONTROL
     0x0095: 0x35,      #  CONTROL
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x08,      #  CONTROL
     0x0098: 0x38,      #  CONTROL
     0x0099: 0x39,      #  CONTROL
-    0x009a: 0x3a,      #  CONTROL
-    0x009b: 0x3b,      #  CONTROL
-    0x009c: 0x04,      #  CONTROL
-    0x009d: 0x14,      #  CONTROL
-    0x009e: 0x3e,      #  CONTROL
-    0x009f: 0xff,      #  CONTROL
-    0x00a0: 0x41,      #  NO-BREAK SPACE
-    0x00a1: 0xaa,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xb0,      #  CENT SIGN
-    0x00a3: 0xb1,      #  POUND SIGN
-    0x00a4: 0x9f,      #  CURRENCY SIGN
-    0x00a5: 0xb2,      #  YEN SIGN
-    0x00a6: 0x6a,      #  BROKEN BAR
-    0x00a7: 0xb5,      #  SECTION SIGN
-    0x00a8: 0xbd,      #  DIAERESIS
-    0x00a9: 0xb4,      #  COPYRIGHT SIGN
-    0x00aa: 0x9a,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x8a,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xba,      #  NOT SIGN
-    0x00ad: 0xca,      #  SOFT HYPHEN
-    0x00ae: 0xaf,      #  REGISTERED SIGN
-    0x00af: 0xbc,      #  MACRON
-    0x00b0: 0x90,      #  DEGREE SIGN
-    0x00b1: 0x8f,      #  PLUS-MINUS SIGN
-    0x00b2: 0xea,      #  SUPERSCRIPT TWO
-    0x00b3: 0xfa,      #  SUPERSCRIPT THREE
-    0x00b4: 0xbe,      #  ACUTE ACCENT
-    0x00b5: 0xa0,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb3,      #  MIDDLE DOT
-    0x00b8: 0x9d,      #  CEDILLA
-    0x00b9: 0xda,      #  SUPERSCRIPT ONE
-    0x00ba: 0x9b,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x8b,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xb7,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xb8,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xb9,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xab,      #  INVERTED QUESTION MARK
-    0x00c0: 0x64,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x65,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x62,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x66,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x63,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x67,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x9e,      #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x68,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x74,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x71,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x72,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x73,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0x78,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x75,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x76,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x77,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0xac,      #  LATIN CAPITAL LETTER ETH (ICELANDIC)
-    0x00d1: 0x69,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xed,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xeb,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xef,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xec,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xbf,      #  MULTIPLICATION SIGN
-    0x00d8: 0x80,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xfd,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xfe,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xfb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xfc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xad,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0xae,      #  LATIN CAPITAL LETTER THORN (ICELANDIC)
-    0x00df: 0x59,      #  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e0: 0x44,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x45,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x42,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x46,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x43,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x47,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x9c,      #  LATIN SMALL LIGATURE AE
-    0x00e7: 0x48,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x54,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x51,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x52,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x53,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x58,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x55,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x56,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x57,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0x8c,      #  LATIN SMALL LETTER ETH (ICELANDIC)
-    0x00f1: 0x49,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xcd,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xce,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xcb,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xcf,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xcc,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xe1,      #  DIVISION SIGN
-    0x00f8: 0x70,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xdd,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xde,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xdb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xdc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x8d,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0x8e,      #  LATIN SMALL LETTER THORN (ICELANDIC)
-    0x00ff: 0xdf,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-}
\ No newline at end of file
+    0x009A: 0x3A,      #  CONTROL
+    0x009B: 0x3B,      #  CONTROL
+    0x009C: 0x04,      #  CONTROL
+    0x009D: 0x14,      #  CONTROL
+    0x009E: 0x3E,      #  CONTROL
+    0x009F: 0xFF,      #  CONTROL
+    0x00A0: 0x41,      #  NO-BREAK SPACE
+    0x00A1: 0xAA,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xB0,      #  CENT SIGN
+    0x00A3: 0xB1,      #  POUND SIGN
+    0x00A4: 0x9F,      #  CURRENCY SIGN
+    0x00A5: 0xB2,      #  YEN SIGN
+    0x00A6: 0x6A,      #  BROKEN BAR
+    0x00A7: 0xB5,      #  SECTION SIGN
+    0x00A8: 0xBD,      #  DIAERESIS
+    0x00A9: 0xB4,      #  COPYRIGHT SIGN
+    0x00AA: 0x9A,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0x8A,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xBA,      #  NOT SIGN
+    0x00AD: 0xCA,      #  SOFT HYPHEN
+    0x00AE: 0xAF,      #  REGISTERED SIGN
+    0x00AF: 0xBC,      #  MACRON
+    0x00B0: 0x90,      #  DEGREE SIGN
+    0x00B1: 0x8F,      #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,      #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,      #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,      #  ACUTE ACCENT
+    0x00B5: 0xA0,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB3,      #  MIDDLE DOT
+    0x00B8: 0x9D,      #  CEDILLA
+    0x00B9: 0xDA,      #  SUPERSCRIPT ONE
+    0x00BA: 0x9B,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0x8B,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xAB,      #  INVERTED QUESTION MARK
+    0x00C0: 0x64,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0x65,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0x62,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0x66,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x63,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x67,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0x9E,      #  LATIN CAPITAL LIGATURE AE
+    0x00C7: 0x68,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0x74,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x71,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0x72,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0x73,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0x78,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0x75,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0x76,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0x77,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xAC,      #  LATIN CAPITAL LETTER ETH (ICELANDIC)
+    0x00D1: 0x69,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xED,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEB,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xEF,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xEC,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xBF,      #  MULTIPLICATION SIGN
+    0x00D8: 0x80,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xFD,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xFE,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xFB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xFC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xAD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xAE,      #  LATIN CAPITAL LETTER THORN (ICELANDIC)
+    0x00DF: 0x59,      #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00E0: 0x44,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x45,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x42,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x46,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x43,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x47,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0x9C,      #  LATIN SMALL LIGATURE AE
+    0x00E7: 0x48,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x54,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x51,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x52,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x53,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x58,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x55,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x56,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x57,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0x8C,      #  LATIN SMALL LETTER ETH (ICELANDIC)
+    0x00F1: 0x49,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xCD,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xCE,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xCB,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xCF,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xCC,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xE1,      #  DIVISION SIGN
+    0x00F8: 0x70,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xDD,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xDE,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xDB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xDC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0x8D,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0x8E,      #  LATIN SMALL LETTER THORN (ICELANDIC)
+    0x00FF: 0xDF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+}
+
index 3b7cbd0da678c72574bda662eb03f59f00006bed..fd515b09c7f79d2ccf02915eca1aa2e19dbbba9a 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u05d0'  #  0x80 -> HEBREW LETTER ALEF
     u'\u05d1'  #  0x81 -> HEBREW LETTER BET
     u'\u05d2'  #  0x82 -> HEBREW LETTER GIMEL
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u05d7'  #  0x87 -> HEBREW LETTER HET
     u'\u05d8'  #  0x88 -> HEBREW LETTER TET
     u'\u05d9'  #  0x89 -> HEBREW LETTER YOD
-    u'\u05da'  #  0x8a -> HEBREW LETTER FINAL KAF
-    u'\u05db'  #  0x8b -> HEBREW LETTER KAF
-    u'\u05dc'  #  0x8c -> HEBREW LETTER LAMED
-    u'\u05dd'  #  0x8d -> HEBREW LETTER FINAL MEM
-    u'\u05de'  #  0x8e -> HEBREW LETTER MEM
-    u'\u05df'  #  0x8f -> HEBREW LETTER FINAL NUN
+    u'\u05da'  #  0x8A -> HEBREW LETTER FINAL KAF
+    u'\u05db'  #  0x8B -> HEBREW LETTER KAF
+    u'\u05dc'  #  0x8C -> HEBREW LETTER LAMED
+    u'\u05dd'  #  0x8D -> HEBREW LETTER FINAL MEM
+    u'\u05de'  #  0x8E -> HEBREW LETTER MEM
+    u'\u05df'  #  0x8F -> HEBREW LETTER FINAL NUN
     u'\u05e0'  #  0x90 -> HEBREW LETTER NUN
     u'\u05e1'  #  0x91 -> HEBREW LETTER SAMEKH
     u'\u05e2'  #  0x92 -> HEBREW LETTER AYIN
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u05e7'  #  0x97 -> HEBREW LETTER QOF
     u'\u05e8'  #  0x98 -> HEBREW LETTER RESH
     u'\u05e9'  #  0x99 -> HEBREW LETTER SHIN
-    u'\u05ea'  #  0x9a -> HEBREW LETTER TAV
-    u'\ufffe'  #  0x9b -> UNDEFINED
-    u'\xa3'    #  0x9c -> POUND SIGN
-    u'\ufffe'  #  0x9d -> UNDEFINED
-    u'\xd7'    #  0x9e -> MULTIPLICATION SIGN
-    u'\ufffe'  #  0x9f -> UNDEFINED
-    u'\ufffe'  #  0xa0 -> UNDEFINED
-    u'\ufffe'  #  0xa1 -> UNDEFINED
-    u'\ufffe'  #  0xa2 -> UNDEFINED
-    u'\ufffe'  #  0xa3 -> UNDEFINED
-    u'\ufffe'  #  0xa4 -> UNDEFINED
-    u'\ufffe'  #  0xa5 -> UNDEFINED
-    u'\ufffe'  #  0xa6 -> UNDEFINED
-    u'\ufffe'  #  0xa7 -> UNDEFINED
-    u'\ufffe'  #  0xa8 -> UNDEFINED
-    u'\xae'    #  0xa9 -> REGISTERED SIGN
-    u'\xac'    #  0xaa -> NOT SIGN
-    u'\xbd'    #  0xab -> VULGAR FRACTION ONE HALF
-    u'\xbc'    #  0xac -> VULGAR FRACTION ONE QUARTER
-    u'\ufffe'  #  0xad -> UNDEFINED
-    u'\xab'    #  0xae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0xaf -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'  #  0xb0 -> LIGHT SHADE
-    u'\u2592'  #  0xb1 -> MEDIUM SHADE
-    u'\u2593'  #  0xb2 -> DARK SHADE
-    u'\u2502'  #  0xb3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'  #  0xb4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\ufffe'  #  0xb5 -> UNDEFINED
-    u'\ufffe'  #  0xb6 -> UNDEFINED
-    u'\ufffe'  #  0xb7 -> UNDEFINED
-    u'\xa9'    #  0xb8 -> COPYRIGHT SIGN
-    u'\u2563'  #  0xb9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'  #  0xba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'  #  0xbb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'  #  0xbc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\xa2'    #  0xbd -> CENT SIGN
-    u'\xa5'    #  0xbe -> YEN SIGN
-    u'\u2510'  #  0xbf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'  #  0xc0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'  #  0xc1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'  #  0xc2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'  #  0xc3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'  #  0xc4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'  #  0xc5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\ufffe'  #  0xc6 -> UNDEFINED
-    u'\ufffe'  #  0xc7 -> UNDEFINED
-    u'\u255a'  #  0xc8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'  #  0xc9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'  #  0xca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'  #  0xcb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'  #  0xcc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'  #  0xcd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'  #  0xce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'    #  0xcf -> CURRENCY SIGN
-    u'\ufffe'  #  0xd0 -> UNDEFINED
-    u'\ufffe'  #  0xd1 -> UNDEFINED
-    u'\ufffe'  #  0xd2 -> UNDEFINED
-    u'\ufffe'  #  0xd3 -> UNDEFINEDS
-    u'\ufffe'  #  0xd4 -> UNDEFINED
-    u'\ufffe'  #  0xd5 -> UNDEFINED
-    u'\ufffe'  #  0xd6 -> UNDEFINEDE
-    u'\ufffe'  #  0xd7 -> UNDEFINED
-    u'\ufffe'  #  0xd8 -> UNDEFINED
-    u'\u2518'  #  0xd9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'  #  0xda -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'  #  0xdb -> FULL BLOCK
-    u'\u2584'  #  0xdc -> LOWER HALF BLOCK
-    u'\xa6'    #  0xdd -> BROKEN BAR
-    u'\ufffe'  #  0xde -> UNDEFINED
-    u'\u2580'  #  0xdf -> UPPER HALF BLOCK
-    u'\ufffe'  #  0xe0 -> UNDEFINED
-    u'\ufffe'  #  0xe1 -> UNDEFINED
-    u'\ufffe'  #  0xe2 -> UNDEFINED
-    u'\ufffe'  #  0xe3 -> UNDEFINED
-    u'\ufffe'  #  0xe4 -> UNDEFINED
-    u'\ufffe'  #  0xe5 -> UNDEFINED
-    u'\xb5'    #  0xe6 -> MICRO SIGN
-    u'\ufffe'  #  0xe7 -> UNDEFINED
-    u'\ufffe'  #  0xe8 -> UNDEFINED
-    u'\ufffe'  #  0xe9 -> UNDEFINED
-    u'\ufffe'  #  0xea -> UNDEFINED
-    u'\ufffe'  #  0xeb -> UNDEFINED
-    u'\ufffe'  #  0xec -> UNDEFINED
-    u'\ufffe'  #  0xed -> UNDEFINED
-    u'\xaf'    #  0xee -> MACRON
-    u'\xb4'    #  0xef -> ACUTE ACCENT
-    u'\xad'    #  0xf0 -> SOFT HYPHEN
-    u'\xb1'    #  0xf1 -> PLUS-MINUS SIGN
-    u'\u2017'  #  0xf2 -> DOUBLE LOW LINE
-    u'\xbe'    #  0xf3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'    #  0xf4 -> PILCROW SIGN
-    u'\xa7'    #  0xf5 -> SECTION SIGN
-    u'\xf7'    #  0xf6 -> DIVISION SIGN
-    u'\xb8'    #  0xf7 -> CEDILLA
-    u'\xb0'    #  0xf8 -> DEGREE SIGN
-    u'\xa8'    #  0xf9 -> DIAERESIS
-    u'\xb7'    #  0xfa -> MIDDLE DOT
-    u'\xb9'    #  0xfb -> SUPERSCRIPT ONE
-    u'\xb3'    #  0xfc -> SUPERSCRIPT THREE
-    u'\xb2'    #  0xfd -> SUPERSCRIPT TWO
-    u'\u25a0'  #  0xfe -> BLACK SQUARE
-    u'\xa0'    #  0xff -> NO-BREAK SPACE
+    u'\u05ea'  #  0x9A -> HEBREW LETTER TAV
+    u'\ufffe'  #  0x9B -> UNDEFINED
+    u'\xa3'    #  0x9C -> POUND SIGN
+    u'\ufffe'  #  0x9D -> UNDEFINED
+    u'\xd7'    #  0x9E -> MULTIPLICATION SIGN
+    u'\ufffe'  #  0x9F -> UNDEFINED
+    u'\ufffe'  #  0xA0 -> UNDEFINED
+    u'\ufffe'  #  0xA1 -> UNDEFINED
+    u'\ufffe'  #  0xA2 -> UNDEFINED
+    u'\ufffe'  #  0xA3 -> UNDEFINED
+    u'\ufffe'  #  0xA4 -> UNDEFINED
+    u'\ufffe'  #  0xA5 -> UNDEFINED
+    u'\ufffe'  #  0xA6 -> UNDEFINED
+    u'\ufffe'  #  0xA7 -> UNDEFINED
+    u'\ufffe'  #  0xA8 -> UNDEFINED
+    u'\xae'    #  0xA9 -> REGISTERED SIGN
+    u'\xac'    #  0xAA -> NOT SIGN
+    u'\xbd'    #  0xAB -> VULGAR FRACTION ONE HALF
+    u'\xbc'    #  0xAC -> VULGAR FRACTION ONE QUARTER
+    u'\ufffe'  #  0xAD -> UNDEFINED
+    u'\xab'    #  0xAE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0xAF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'  #  0xB0 -> LIGHT SHADE
+    u'\u2592'  #  0xB1 -> MEDIUM SHADE
+    u'\u2593'  #  0xB2 -> DARK SHADE
+    u'\u2502'  #  0xB3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'  #  0xB4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\ufffe'  #  0xB5 -> UNDEFINED
+    u'\ufffe'  #  0xB6 -> UNDEFINED
+    u'\ufffe'  #  0xB7 -> UNDEFINED
+    u'\xa9'    #  0xB8 -> COPYRIGHT SIGN
+    u'\u2563'  #  0xB9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'  #  0xBA -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'  #  0xBB -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'  #  0xBC -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\xa2'    #  0xBD -> CENT SIGN
+    u'\xa5'    #  0xBE -> YEN SIGN
+    u'\u2510'  #  0xBF -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'  #  0xC0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'  #  0xC1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'  #  0xC2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'  #  0xC3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'  #  0xC4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'  #  0xC5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\ufffe'  #  0xC6 -> UNDEFINED
+    u'\ufffe'  #  0xC7 -> UNDEFINED
+    u'\u255a'  #  0xC8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'  #  0xC9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'  #  0xCA -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'  #  0xCB -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'  #  0xCC -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'  #  0xCD -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'  #  0xCE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa4'    #  0xCF -> CURRENCY SIGN
+    u'\ufffe'  #  0xD0 -> UNDEFINED
+    u'\ufffe'  #  0xD1 -> UNDEFINED
+    u'\ufffe'  #  0xD2 -> UNDEFINED
+    u'\ufffe'  #  0xD3 -> UNDEFINEDS
+    u'\ufffe'  #  0xD4 -> UNDEFINED
+    u'\ufffe'  #  0xD5 -> UNDEFINED
+    u'\ufffe'  #  0xD6 -> UNDEFINEDE
+    u'\ufffe'  #  0xD7 -> UNDEFINED
+    u'\ufffe'  #  0xD8 -> UNDEFINED
+    u'\u2518'  #  0xD9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'  #  0xDA -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'  #  0xDB -> FULL BLOCK
+    u'\u2584'  #  0xDC -> LOWER HALF BLOCK
+    u'\xa6'    #  0xDD -> BROKEN BAR
+    u'\ufffe'  #  0xDE -> UNDEFINED
+    u'\u2580'  #  0xDF -> UPPER HALF BLOCK
+    u'\ufffe'  #  0xE0 -> UNDEFINED
+    u'\ufffe'  #  0xE1 -> UNDEFINED
+    u'\ufffe'  #  0xE2 -> UNDEFINED
+    u'\ufffe'  #  0xE3 -> UNDEFINED
+    u'\ufffe'  #  0xE4 -> UNDEFINED
+    u'\ufffe'  #  0xE5 -> UNDEFINED
+    u'\xb5'    #  0xE6 -> MICRO SIGN
+    u'\ufffe'  #  0xE7 -> UNDEFINED
+    u'\ufffe'  #  0xE8 -> UNDEFINED
+    u'\ufffe'  #  0xE9 -> UNDEFINED
+    u'\ufffe'  #  0xEA -> UNDEFINED
+    u'\ufffe'  #  0xEB -> UNDEFINED
+    u'\ufffe'  #  0xEC -> UNDEFINED
+    u'\ufffe'  #  0xED -> UNDEFINED
+    u'\xaf'    #  0xEE -> MACRON
+    u'\xb4'    #  0xEF -> ACUTE ACCENT
+    u'\xad'    #  0xF0 -> SOFT HYPHEN
+    u'\xb1'    #  0xF1 -> PLUS-MINUS SIGN
+    u'\u2017'  #  0xF2 -> DOUBLE LOW LINE
+    u'\xbe'    #  0xF3 -> VULGAR FRACTION THREE QUARTERS
+    u'\xb6'    #  0xF4 -> PILCROW SIGN
+    u'\xa7'    #  0xF5 -> SECTION SIGN
+    u'\xf7'    #  0xF6 -> DIVISION SIGN
+    u'\xb8'    #  0xF7 -> CEDILLA
+    u'\xb0'    #  0xF8 -> DEGREE SIGN
+    u'\xa8'    #  0xF9 -> DIAERESIS
+    u'\xb7'    #  0xFA -> MIDDLE DOT
+    u'\xb9'    #  0xFB -> SUPERSCRIPT ONE
+    u'\xb3'    #  0xFC -> SUPERSCRIPT THREE
+    u'\xb2'    #  0xFD -> SUPERSCRIPT TWO
+    u'\u25a0'  #  0xFE -> BLACK SQUARE
+    u'\xa0'    #  0xFF -> NO-BREAK SPACE
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,97 +415,98 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xff,      #  NO-BREAK SPACE
-    0x00a2: 0xbd,      #  CENT SIGN
-    0x00a3: 0x9c,      #  POUND SIGN
-    0x00a4: 0xcf,      #  CURRENCY SIGN
-    0x00a5: 0xbe,      #  YEN SIGN
-    0x00a6: 0xdd,      #  BROKEN BAR
-    0x00a7: 0xf5,      #  SECTION SIGN
-    0x00a8: 0xf9,      #  DIAERESIS
-    0x00a9: 0xb8,      #  COPYRIGHT SIGN
-    0x00ab: 0xae,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xaa,      #  NOT SIGN
-    0x00ad: 0xf0,      #  SOFT HYPHEN
-    0x00ae: 0xa9,      #  REGISTERED SIGN
-    0x00af: 0xee,      #  MACRON
-    0x00b0: 0xf8,      #  DEGREE SIGN
-    0x00b1: 0xf1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xfd,      #  SUPERSCRIPT TWO
-    0x00b3: 0xfc,      #  SUPERSCRIPT THREE
-    0x00b4: 0xef,      #  ACUTE ACCENT
-    0x00b5: 0xe6,      #  MICRO SIGN
-    0x00b6: 0xf4,      #  PILCROW SIGN
-    0x00b7: 0xfa,      #  MIDDLE DOT
-    0x00b8: 0xf7,      #  CEDILLA
-    0x00b9: 0xfb,      #  SUPERSCRIPT ONE
-    0x00bb: 0xaf,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xac,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xab,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xf3,      #  VULGAR FRACTION THREE QUARTERS
-    0x00d7: 0x9e,      #  MULTIPLICATION SIGN
-    0x00f7: 0xf6,      #  DIVISION SIGN
-    0x05d0: 0x80,      #  HEBREW LETTER ALEF
-    0x05d1: 0x81,      #  HEBREW LETTER BET
-    0x05d2: 0x82,      #  HEBREW LETTER GIMEL
-    0x05d3: 0x83,      #  HEBREW LETTER DALET
-    0x05d4: 0x84,      #  HEBREW LETTER HE
-    0x05d5: 0x85,      #  HEBREW LETTER VAV
-    0x05d6: 0x86,      #  HEBREW LETTER ZAYIN
-    0x05d7: 0x87,      #  HEBREW LETTER HET
-    0x05d8: 0x88,      #  HEBREW LETTER TET
-    0x05d9: 0x89,      #  HEBREW LETTER YOD
-    0x05da: 0x8a,      #  HEBREW LETTER FINAL KAF
-    0x05db: 0x8b,      #  HEBREW LETTER KAF
-    0x05dc: 0x8c,      #  HEBREW LETTER LAMED
-    0x05dd: 0x8d,      #  HEBREW LETTER FINAL MEM
-    0x05de: 0x8e,      #  HEBREW LETTER MEM
-    0x05df: 0x8f,      #  HEBREW LETTER FINAL NUN
-    0x05e0: 0x90,      #  HEBREW LETTER NUN
-    0x05e1: 0x91,      #  HEBREW LETTER SAMEKH
-    0x05e2: 0x92,      #  HEBREW LETTER AYIN
-    0x05e3: 0x93,      #  HEBREW LETTER FINAL PE
-    0x05e4: 0x94,      #  HEBREW LETTER PE
-    0x05e5: 0x95,      #  HEBREW LETTER FINAL TSADI
-    0x05e6: 0x96,      #  HEBREW LETTER TSADI
-    0x05e7: 0x97,      #  HEBREW LETTER QOF
-    0x05e8: 0x98,      #  HEBREW LETTER RESH
-    0x05e9: 0x99,      #  HEBREW LETTER SHIN
-    0x05ea: 0x9a,      #  HEBREW LETTER TAV
-    0x2017: 0xf2,      #  DOUBLE LOW LINE
-    0x2500: 0xc4,      #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0xb3,      #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0xda,      #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0xbf,      #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0xc0,      #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0xd9,      #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0xc3,      #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0xb4,      #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0xc2,      #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0xc1,      #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0xc5,      #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0xcd,      #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0xba,      #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0xc9,      #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0xbb,      #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0xc8,      #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0xbc,      #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0xcc,      #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0xb9,      #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0xcb,      #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0xca,      #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0xce,      #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0xdf,      #  UPPER HALF BLOCK
-    0x2584: 0xdc,      #  LOWER HALF BLOCK
-    0x2588: 0xdb,      #  FULL BLOCK
-    0x2591: 0xb0,      #  LIGHT SHADE
-    0x2592: 0xb1,      #  MEDIUM SHADE
-    0x2593: 0xb2,      #  DARK SHADE
-    0x25a0: 0xfe,      #  BLACK SQUARE
-}
\ No newline at end of file
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xFF,      #  NO-BREAK SPACE
+    0x00A2: 0xBD,      #  CENT SIGN
+    0x00A3: 0x9C,      #  POUND SIGN
+    0x00A4: 0xCF,      #  CURRENCY SIGN
+    0x00A5: 0xBE,      #  YEN SIGN
+    0x00A6: 0xDD,      #  BROKEN BAR
+    0x00A7: 0xF5,      #  SECTION SIGN
+    0x00A8: 0xF9,      #  DIAERESIS
+    0x00A9: 0xB8,      #  COPYRIGHT SIGN
+    0x00AB: 0xAE,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAA,      #  NOT SIGN
+    0x00AD: 0xF0,      #  SOFT HYPHEN
+    0x00AE: 0xA9,      #  REGISTERED SIGN
+    0x00AF: 0xEE,      #  MACRON
+    0x00B0: 0xF8,      #  DEGREE SIGN
+    0x00B1: 0xF1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xFD,      #  SUPERSCRIPT TWO
+    0x00B3: 0xFC,      #  SUPERSCRIPT THREE
+    0x00B4: 0xEF,      #  ACUTE ACCENT
+    0x00B5: 0xE6,      #  MICRO SIGN
+    0x00B6: 0xF4,      #  PILCROW SIGN
+    0x00B7: 0xFA,      #  MIDDLE DOT
+    0x00B8: 0xF7,      #  CEDILLA
+    0x00B9: 0xFB,      #  SUPERSCRIPT ONE
+    0x00BB: 0xAF,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xAC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xAB,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xF3,      #  VULGAR FRACTION THREE QUARTERS
+    0x00D7: 0x9E,      #  MULTIPLICATION SIGN
+    0x00F7: 0xF6,      #  DIVISION SIGN
+    0x05D0: 0x80,      #  HEBREW LETTER ALEF
+    0x05D1: 0x81,      #  HEBREW LETTER BET
+    0x05D2: 0x82,      #  HEBREW LETTER GIMEL
+    0x05D3: 0x83,      #  HEBREW LETTER DALET
+    0x05D4: 0x84,      #  HEBREW LETTER HE
+    0x05D5: 0x85,      #  HEBREW LETTER VAV
+    0x05D6: 0x86,      #  HEBREW LETTER ZAYIN
+    0x05D7: 0x87,      #  HEBREW LETTER HET
+    0x05D8: 0x88,      #  HEBREW LETTER TET
+    0x05D9: 0x89,      #  HEBREW LETTER YOD
+    0x05DA: 0x8A,      #  HEBREW LETTER FINAL KAF
+    0x05DB: 0x8B,      #  HEBREW LETTER KAF
+    0x05DC: 0x8C,      #  HEBREW LETTER LAMED
+    0x05DD: 0x8D,      #  HEBREW LETTER FINAL MEM
+    0x05DE: 0x8E,      #  HEBREW LETTER MEM
+    0x05DF: 0x8F,      #  HEBREW LETTER FINAL NUN
+    0x05E0: 0x90,      #  HEBREW LETTER NUN
+    0x05E1: 0x91,      #  HEBREW LETTER SAMEKH
+    0x05E2: 0x92,      #  HEBREW LETTER AYIN
+    0x05E3: 0x93,      #  HEBREW LETTER FINAL PE
+    0x05E4: 0x94,      #  HEBREW LETTER PE
+    0x05E5: 0x95,      #  HEBREW LETTER FINAL TSADI
+    0x05E6: 0x96,      #  HEBREW LETTER TSADI
+    0x05E7: 0x97,      #  HEBREW LETTER QOF
+    0x05E8: 0x98,      #  HEBREW LETTER RESH
+    0x05E9: 0x99,      #  HEBREW LETTER SHIN
+    0x05EA: 0x9A,      #  HEBREW LETTER TAV
+    0x2017: 0xF2,      #  DOUBLE LOW LINE
+    0x2500: 0xC4,      #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0xB3,      #  BOX DRAWINGS LIGHT VERTICAL
+    0x250C: 0xDA,      #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0xBF,      #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0xC0,      #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0xD9,      #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251C: 0xC3,      #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0xB4,      #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252C: 0xC2,      #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0xC1,      #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253C: 0xC5,      #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0xCD,      #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0xBA,      #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2554: 0xC9,      #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0xBB,      #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x255A: 0xC8,      #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255D: 0xBC,      #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x2560: 0xCC,      #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2563: 0xB9,      #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0xCB,      #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2569: 0xCA,      #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256C: 0xCE,      #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0xDF,      #  UPPER HALF BLOCK
+    0x2584: 0xDC,      #  LOWER HALF BLOCK
+    0x2588: 0xDB,      #  FULL BLOCK
+    0x2591: 0xB0,      #  LIGHT SHADE
+    0x2592: 0xB1,      #  MEDIUM SHADE
+    0x2593: 0xB2,      #  DARK SHADE
+    0x25A0: 0xFE,      #  BLACK SQUARE
+}
+
index e7348d061a0bba5bbe23365a86adf51823d8e2d6..0a49cced7f2b915aaceb4f40020d2abcbf152027 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u20ac'  #  0x80 -> EURO SIGN
     u'\ufffe'  #  0x81 -> UNDEFINED
     u'\ufffe'  #  0x82 -> UNDEFINED
@@ -170,12 +170,12 @@ decoding_table = (
     u'\ufffe'  #  0x87 -> UNDEFINED
     u'\ufffe'  #  0x88 -> UNDEFINED
     u'\ufffe'  #  0x89 -> UNDEFINED
-    u'\ufffe'  #  0x8a -> UNDEFINED
-    u'\ufffe'  #  0x8b -> UNDEFINED
-    u'\ufffe'  #  0x8c -> UNDEFINED
-    u'\ufffe'  #  0x8d -> UNDEFINED
-    u'\ufffe'  #  0x8e -> UNDEFINED
-    u'\ufffe'  #  0x8f -> UNDEFINED
+    u'\ufffe'  #  0x8A -> UNDEFINED
+    u'\ufffe'  #  0x8B -> UNDEFINED
+    u'\ufffe'  #  0x8C -> UNDEFINED
+    u'\ufffe'  #  0x8D -> UNDEFINED
+    u'\ufffe'  #  0x8E -> UNDEFINED
+    u'\ufffe'  #  0x8F -> UNDEFINED
     u'\ufffe'  #  0x90 -> UNDEFINED
     u'\u2018'  #  0x91 -> LEFT SINGLE QUOTATION MARK
     u'\u2019'  #  0x92 -> RIGHT SINGLE QUOTATION MARK
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2014'  #  0x97 -> EM DASH
     u'\ufffe'  #  0x98 -> UNDEFINED
     u'\ufffe'  #  0x99 -> UNDEFINED
-    u'\ufffe'  #  0x9a -> UNDEFINED
-    u'\ufffe'  #  0x9b -> UNDEFINED
-    u'\ufffe'  #  0x9c -> UNDEFINED
-    u'\ufffe'  #  0x9d -> UNDEFINED
-    u'\ufffe'  #  0x9e -> UNDEFINED
-    u'\ufffe'  #  0x9f -> UNDEFINED
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u0e01'  #  0xa1 -> THAI CHARACTER KO KAI
-    u'\u0e02'  #  0xa2 -> THAI CHARACTER KHO KHAI
-    u'\u0e03'  #  0xa3 -> THAI CHARACTER KHO KHUAT
-    u'\u0e04'  #  0xa4 -> THAI CHARACTER KHO KHWAI
-    u'\u0e05'  #  0xa5 -> THAI CHARACTER KHO KHON
-    u'\u0e06'  #  0xa6 -> THAI CHARACTER KHO RAKHANG
-    u'\u0e07'  #  0xa7 -> THAI CHARACTER NGO NGU
-    u'\u0e08'  #  0xa8 -> THAI CHARACTER CHO CHAN
-    u'\u0e09'  #  0xa9 -> THAI CHARACTER CHO CHING
-    u'\u0e0a'  #  0xaa -> THAI CHARACTER CHO CHANG
-    u'\u0e0b'  #  0xab -> THAI CHARACTER SO SO
-    u'\u0e0c'  #  0xac -> THAI CHARACTER CHO CHOE
-    u'\u0e0d'  #  0xad -> THAI CHARACTER YO YING
-    u'\u0e0e'  #  0xae -> THAI CHARACTER DO CHADA
-    u'\u0e0f'  #  0xaf -> THAI CHARACTER TO PATAK
-    u'\u0e10'  #  0xb0 -> THAI CHARACTER THO THAN
-    u'\u0e11'  #  0xb1 -> THAI CHARACTER THO NANGMONTHO
-    u'\u0e12'  #  0xb2 -> THAI CHARACTER THO PHUTHAO
-    u'\u0e13'  #  0xb3 -> THAI CHARACTER NO NEN
-    u'\u0e14'  #  0xb4 -> THAI CHARACTER DO DEK
-    u'\u0e15'  #  0xb5 -> THAI CHARACTER TO TAO
-    u'\u0e16'  #  0xb6 -> THAI CHARACTER THO THUNG
-    u'\u0e17'  #  0xb7 -> THAI CHARACTER THO THAHAN
-    u'\u0e18'  #  0xb8 -> THAI CHARACTER THO THONG
-    u'\u0e19'  #  0xb9 -> THAI CHARACTER NO NU
-    u'\u0e1a'  #  0xba -> THAI CHARACTER BO BAIMAI
-    u'\u0e1b'  #  0xbb -> THAI CHARACTER PO PLA
-    u'\u0e1c'  #  0xbc -> THAI CHARACTER PHO PHUNG
-    u'\u0e1d'  #  0xbd -> THAI CHARACTER FO FA
-    u'\u0e1e'  #  0xbe -> THAI CHARACTER PHO PHAN
-    u'\u0e1f'  #  0xbf -> THAI CHARACTER FO FAN
-    u'\u0e20'  #  0xc0 -> THAI CHARACTER PHO SAMPHAO
-    u'\u0e21'  #  0xc1 -> THAI CHARACTER MO MA
-    u'\u0e22'  #  0xc2 -> THAI CHARACTER YO YAK
-    u'\u0e23'  #  0xc3 -> THAI CHARACTER RO RUA
-    u'\u0e24'  #  0xc4 -> THAI CHARACTER RU
-    u'\u0e25'  #  0xc5 -> THAI CHARACTER LO LING
-    u'\u0e26'  #  0xc6 -> THAI CHARACTER LU
-    u'\u0e27'  #  0xc7 -> THAI CHARACTER WO WAEN
-    u'\u0e28'  #  0xc8 -> THAI CHARACTER SO SALA
-    u'\u0e29'  #  0xc9 -> THAI CHARACTER SO RUSI
-    u'\u0e2a'  #  0xca -> THAI CHARACTER SO SUA
-    u'\u0e2b'  #  0xcb -> THAI CHARACTER HO HIP
-    u'\u0e2c'  #  0xcc -> THAI CHARACTER LO CHULA
-    u'\u0e2d'  #  0xcd -> THAI CHARACTER O ANG
-    u'\u0e2e'  #  0xce -> THAI CHARACTER HO NOKHUK
-    u'\u0e2f'  #  0xcf -> THAI CHARACTER PAIYANNOI
-    u'\u0e30'  #  0xd0 -> THAI CHARACTER SARA A
-    u'\u0e31'  #  0xd1 -> THAI CHARACTER MAI HAN-AKAT
-    u'\u0e32'  #  0xd2 -> THAI CHARACTER SARA AA
-    u'\u0e33'  #  0xd3 -> THAI CHARACTER SARA AM
-    u'\u0e34'  #  0xd4 -> THAI CHARACTER SARA I
-    u'\u0e35'  #  0xd5 -> THAI CHARACTER SARA II
-    u'\u0e36'  #  0xd6 -> THAI CHARACTER SARA UE
-    u'\u0e37'  #  0xd7 -> THAI CHARACTER SARA UEE
-    u'\u0e38'  #  0xd8 -> THAI CHARACTER SARA U
-    u'\u0e39'  #  0xd9 -> THAI CHARACTER SARA UU
-    u'\u0e3a'  #  0xda -> THAI CHARACTER PHINTHU
-    u'\ufffe'  #  0xdb -> UNDEFINED
-    u'\ufffe'  #  0xdc -> UNDEFINED
-    u'\ufffe'  #  0xdd -> UNDEFINED
-    u'\ufffe'  #  0xde -> UNDEFINED
-    u'\u0e3f'  #  0xdf -> THAI CURRENCY SYMBOL BAHT
-    u'\u0e40'  #  0xe0 -> THAI CHARACTER SARA E
-    u'\u0e41'  #  0xe1 -> THAI CHARACTER SARA AE
-    u'\u0e42'  #  0xe2 -> THAI CHARACTER SARA O
-    u'\u0e43'  #  0xe3 -> THAI CHARACTER SARA AI MAIMUAN
-    u'\u0e44'  #  0xe4 -> THAI CHARACTER SARA AI MAIMALAI
-    u'\u0e45'  #  0xe5 -> THAI CHARACTER LAKKHANGYAO
-    u'\u0e46'  #  0xe6 -> THAI CHARACTER MAIYAMOK
-    u'\u0e47'  #  0xe7 -> THAI CHARACTER MAITAIKHU
-    u'\u0e48'  #  0xe8 -> THAI CHARACTER MAI EK
-    u'\u0e49'  #  0xe9 -> THAI CHARACTER MAI THO
-    u'\u0e4a'  #  0xea -> THAI CHARACTER MAI TRI
-    u'\u0e4b'  #  0xeb -> THAI CHARACTER MAI CHATTAWA
-    u'\u0e4c'  #  0xec -> THAI CHARACTER THANTHAKHAT
-    u'\u0e4d'  #  0xed -> THAI CHARACTER NIKHAHIT
-    u'\u0e4e'  #  0xee -> THAI CHARACTER YAMAKKAN
-    u'\u0e4f'  #  0xef -> THAI CHARACTER FONGMAN
-    u'\u0e50'  #  0xf0 -> THAI DIGIT ZERO
-    u'\u0e51'  #  0xf1 -> THAI DIGIT ONE
-    u'\u0e52'  #  0xf2 -> THAI DIGIT TWO
-    u'\u0e53'  #  0xf3 -> THAI DIGIT THREE
-    u'\u0e54'  #  0xf4 -> THAI DIGIT FOUR
-    u'\u0e55'  #  0xf5 -> THAI DIGIT FIVE
-    u'\u0e56'  #  0xf6 -> THAI DIGIT SIX
-    u'\u0e57'  #  0xf7 -> THAI DIGIT SEVEN
-    u'\u0e58'  #  0xf8 -> THAI DIGIT EIGHT
-    u'\u0e59'  #  0xf9 -> THAI DIGIT NINE
-    u'\u0e5a'  #  0xfa -> THAI CHARACTER ANGKHANKHU
-    u'\u0e5b'  #  0xfb -> THAI CHARACTER KHOMUT
-    u'\ufffe'  #  0xfc -> UNDEFINED
-    u'\ufffe'  #  0xfd -> UNDEFINED
-    u'\ufffe'  #  0xfe -> UNDEFINED
-    u'\ufffe'  #  0xff -> UNDEFINED
+    u'\ufffe'  #  0x9A -> UNDEFINED
+    u'\ufffe'  #  0x9B -> UNDEFINED
+    u'\ufffe'  #  0x9C -> UNDEFINED
+    u'\ufffe'  #  0x9D -> UNDEFINED
+    u'\ufffe'  #  0x9E -> UNDEFINED
+    u'\ufffe'  #  0x9F -> UNDEFINED
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u0e01'  #  0xA1 -> THAI CHARACTER KO KAI
+    u'\u0e02'  #  0xA2 -> THAI CHARACTER KHO KHAI
+    u'\u0e03'  #  0xA3 -> THAI CHARACTER KHO KHUAT
+    u'\u0e04'  #  0xA4 -> THAI CHARACTER KHO KHWAI
+    u'\u0e05'  #  0xA5 -> THAI CHARACTER KHO KHON
+    u'\u0e06'  #  0xA6 -> THAI CHARACTER KHO RAKHANG
+    u'\u0e07'  #  0xA7 -> THAI CHARACTER NGO NGU
+    u'\u0e08'  #  0xA8 -> THAI CHARACTER CHO CHAN
+    u'\u0e09'  #  0xA9 -> THAI CHARACTER CHO CHING
+    u'\u0e0a'  #  0xAA -> THAI CHARACTER CHO CHANG
+    u'\u0e0b'  #  0xAB -> THAI CHARACTER SO SO
+    u'\u0e0c'  #  0xAC -> THAI CHARACTER CHO CHOE
+    u'\u0e0d'  #  0xAD -> THAI CHARACTER YO YING
+    u'\u0e0e'  #  0xAE -> THAI CHARACTER DO CHADA
+    u'\u0e0f'  #  0xAF -> THAI CHARACTER TO PATAK
+    u'\u0e10'  #  0xB0 -> THAI CHARACTER THO THAN
+    u'\u0e11'  #  0xB1 -> THAI CHARACTER THO NANGMONTHO
+    u'\u0e12'  #  0xB2 -> THAI CHARACTER THO PHUTHAO
+    u'\u0e13'  #  0xB3 -> THAI CHARACTER NO NEN
+    u'\u0e14'  #  0xB4 -> THAI CHARACTER DO DEK
+    u'\u0e15'  #  0xB5 -> THAI CHARACTER TO TAO
+    u'\u0e16'  #  0xB6 -> THAI CHARACTER THO THUNG
+    u'\u0e17'  #  0xB7 -> THAI CHARACTER THO THAHAN
+    u'\u0e18'  #  0xB8 -> THAI CHARACTER THO THONG
+    u'\u0e19'  #  0xB9 -> THAI CHARACTER NO NU
+    u'\u0e1a'  #  0xBA -> THAI CHARACTER BO BAIMAI
+    u'\u0e1b'  #  0xBB -> THAI CHARACTER PO PLA
+    u'\u0e1c'  #  0xBC -> THAI CHARACTER PHO PHUNG
+    u'\u0e1d'  #  0xBD -> THAI CHARACTER FO FA
+    u'\u0e1e'  #  0xBE -> THAI CHARACTER PHO PHAN
+    u'\u0e1f'  #  0xBF -> THAI CHARACTER FO FAN
+    u'\u0e20'  #  0xC0 -> THAI CHARACTER PHO SAMPHAO
+    u'\u0e21'  #  0xC1 -> THAI CHARACTER MO MA
+    u'\u0e22'  #  0xC2 -> THAI CHARACTER YO YAK
+    u'\u0e23'  #  0xC3 -> THAI CHARACTER RO RUA
+    u'\u0e24'  #  0xC4 -> THAI CHARACTER RU
+    u'\u0e25'  #  0xC5 -> THAI CHARACTER LO LING
+    u'\u0e26'  #  0xC6 -> THAI CHARACTER LU
+    u'\u0e27'  #  0xC7 -> THAI CHARACTER WO WAEN
+    u'\u0e28'  #  0xC8 -> THAI CHARACTER SO SALA
+    u'\u0e29'  #  0xC9 -> THAI CHARACTER SO RUSI
+    u'\u0e2a'  #  0xCA -> THAI CHARACTER SO SUA
+    u'\u0e2b'  #  0xCB -> THAI CHARACTER HO HIP
+    u'\u0e2c'  #  0xCC -> THAI CHARACTER LO CHULA
+    u'\u0e2d'  #  0xCD -> THAI CHARACTER O ANG
+    u'\u0e2e'  #  0xCE -> THAI CHARACTER HO NOKHUK
+    u'\u0e2f'  #  0xCF -> THAI CHARACTER PAIYANNOI
+    u'\u0e30'  #  0xD0 -> THAI CHARACTER SARA A
+    u'\u0e31'  #  0xD1 -> THAI CHARACTER MAI HAN-AKAT
+    u'\u0e32'  #  0xD2 -> THAI CHARACTER SARA AA
+    u'\u0e33'  #  0xD3 -> THAI CHARACTER SARA AM
+    u'\u0e34'  #  0xD4 -> THAI CHARACTER SARA I
+    u'\u0e35'  #  0xD5 -> THAI CHARACTER SARA II
+    u'\u0e36'  #  0xD6 -> THAI CHARACTER SARA UE
+    u'\u0e37'  #  0xD7 -> THAI CHARACTER SARA UEE
+    u'\u0e38'  #  0xD8 -> THAI CHARACTER SARA U
+    u'\u0e39'  #  0xD9 -> THAI CHARACTER SARA UU
+    u'\u0e3a'  #  0xDA -> THAI CHARACTER PHINTHU
+    u'\ufffe'  #  0xDB -> UNDEFINED
+    u'\ufffe'  #  0xDC -> UNDEFINED
+    u'\ufffe'  #  0xDD -> UNDEFINED
+    u'\ufffe'  #  0xDE -> UNDEFINED
+    u'\u0e3f'  #  0xDF -> THAI CURRENCY SYMBOL BAHT
+    u'\u0e40'  #  0xE0 -> THAI CHARACTER SARA E
+    u'\u0e41'  #  0xE1 -> THAI CHARACTER SARA AE
+    u'\u0e42'  #  0xE2 -> THAI CHARACTER SARA O
+    u'\u0e43'  #  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
+    u'\u0e44'  #  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
+    u'\u0e45'  #  0xE5 -> THAI CHARACTER LAKKHANGYAO
+    u'\u0e46'  #  0xE6 -> THAI CHARACTER MAIYAMOK
+    u'\u0e47'  #  0xE7 -> THAI CHARACTER MAITAIKHU
+    u'\u0e48'  #  0xE8 -> THAI CHARACTER MAI EK
+    u'\u0e49'  #  0xE9 -> THAI CHARACTER MAI THO
+    u'\u0e4a'  #  0xEA -> THAI CHARACTER MAI TRI
+    u'\u0e4b'  #  0xEB -> THAI CHARACTER MAI CHATTAWA
+    u'\u0e4c'  #  0xEC -> THAI CHARACTER THANTHAKHAT
+    u'\u0e4d'  #  0xED -> THAI CHARACTER NIKHAHIT
+    u'\u0e4e'  #  0xEE -> THAI CHARACTER YAMAKKAN
+    u'\u0e4f'  #  0xEF -> THAI CHARACTER FONGMAN
+    u'\u0e50'  #  0xF0 -> THAI DIGIT ZERO
+    u'\u0e51'  #  0xF1 -> THAI DIGIT ONE
+    u'\u0e52'  #  0xF2 -> THAI DIGIT TWO
+    u'\u0e53'  #  0xF3 -> THAI DIGIT THREE
+    u'\u0e54'  #  0xF4 -> THAI DIGIT FOUR
+    u'\u0e55'  #  0xF5 -> THAI DIGIT FIVE
+    u'\u0e56'  #  0xF6 -> THAI DIGIT SIX
+    u'\u0e57'  #  0xF7 -> THAI DIGIT SEVEN
+    u'\u0e58'  #  0xF8 -> THAI DIGIT EIGHT
+    u'\u0e59'  #  0xF9 -> THAI DIGIT NINE
+    u'\u0e5a'  #  0xFA -> THAI CHARACTER ANGKHANKHU
+    u'\u0e5b'  #  0xFB -> THAI CHARACTER KHOMUT
+    u'\ufffe'  #  0xFC -> UNDEFINED
+    u'\ufffe'  #  0xFD -> UNDEFINED
+    u'\ufffe'  #  0xFE -> UNDEFINED
+    u'\ufffe'  #  0xFF -> UNDEFINED
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,107 +415,108 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x0e01: 0xa1,      #  THAI CHARACTER KO KAI
-    0x0e02: 0xa2,      #  THAI CHARACTER KHO KHAI
-    0x0e03: 0xa3,      #  THAI CHARACTER KHO KHUAT
-    0x0e04: 0xa4,      #  THAI CHARACTER KHO KHWAI
-    0x0e05: 0xa5,      #  THAI CHARACTER KHO KHON
-    0x0e06: 0xa6,      #  THAI CHARACTER KHO RAKHANG
-    0x0e07: 0xa7,      #  THAI CHARACTER NGO NGU
-    0x0e08: 0xa8,      #  THAI CHARACTER CHO CHAN
-    0x0e09: 0xa9,      #  THAI CHARACTER CHO CHING
-    0x0e0a: 0xaa,      #  THAI CHARACTER CHO CHANG
-    0x0e0b: 0xab,      #  THAI CHARACTER SO SO
-    0x0e0c: 0xac,      #  THAI CHARACTER CHO CHOE
-    0x0e0d: 0xad,      #  THAI CHARACTER YO YING
-    0x0e0e: 0xae,      #  THAI CHARACTER DO CHADA
-    0x0e0f: 0xaf,      #  THAI CHARACTER TO PATAK
-    0x0e10: 0xb0,      #  THAI CHARACTER THO THAN
-    0x0e11: 0xb1,      #  THAI CHARACTER THO NANGMONTHO
-    0x0e12: 0xb2,      #  THAI CHARACTER THO PHUTHAO
-    0x0e13: 0xb3,      #  THAI CHARACTER NO NEN
-    0x0e14: 0xb4,      #  THAI CHARACTER DO DEK
-    0x0e15: 0xb5,      #  THAI CHARACTER TO TAO
-    0x0e16: 0xb6,      #  THAI CHARACTER THO THUNG
-    0x0e17: 0xb7,      #  THAI CHARACTER THO THAHAN
-    0x0e18: 0xb8,      #  THAI CHARACTER THO THONG
-    0x0e19: 0xb9,      #  THAI CHARACTER NO NU
-    0x0e1a: 0xba,      #  THAI CHARACTER BO BAIMAI
-    0x0e1b: 0xbb,      #  THAI CHARACTER PO PLA
-    0x0e1c: 0xbc,      #  THAI CHARACTER PHO PHUNG
-    0x0e1d: 0xbd,      #  THAI CHARACTER FO FA
-    0x0e1e: 0xbe,      #  THAI CHARACTER PHO PHAN
-    0x0e1f: 0xbf,      #  THAI CHARACTER FO FAN
-    0x0e20: 0xc0,      #  THAI CHARACTER PHO SAMPHAO
-    0x0e21: 0xc1,      #  THAI CHARACTER MO MA
-    0x0e22: 0xc2,      #  THAI CHARACTER YO YAK
-    0x0e23: 0xc3,      #  THAI CHARACTER RO RUA
-    0x0e24: 0xc4,      #  THAI CHARACTER RU
-    0x0e25: 0xc5,      #  THAI CHARACTER LO LING
-    0x0e26: 0xc6,      #  THAI CHARACTER LU
-    0x0e27: 0xc7,      #  THAI CHARACTER WO WAEN
-    0x0e28: 0xc8,      #  THAI CHARACTER SO SALA
-    0x0e29: 0xc9,      #  THAI CHARACTER SO RUSI
-    0x0e2a: 0xca,      #  THAI CHARACTER SO SUA
-    0x0e2b: 0xcb,      #  THAI CHARACTER HO HIP
-    0x0e2c: 0xcc,      #  THAI CHARACTER LO CHULA
-    0x0e2d: 0xcd,      #  THAI CHARACTER O ANG
-    0x0e2e: 0xce,      #  THAI CHARACTER HO NOKHUK
-    0x0e2f: 0xcf,      #  THAI CHARACTER PAIYANNOI
-    0x0e30: 0xd0,      #  THAI CHARACTER SARA A
-    0x0e31: 0xd1,      #  THAI CHARACTER MAI HAN-AKAT
-    0x0e32: 0xd2,      #  THAI CHARACTER SARA AA
-    0x0e33: 0xd3,      #  THAI CHARACTER SARA AM
-    0x0e34: 0xd4,      #  THAI CHARACTER SARA I
-    0x0e35: 0xd5,      #  THAI CHARACTER SARA II
-    0x0e36: 0xd6,      #  THAI CHARACTER SARA UE
-    0x0e37: 0xd7,      #  THAI CHARACTER SARA UEE
-    0x0e38: 0xd8,      #  THAI CHARACTER SARA U
-    0x0e39: 0xd9,      #  THAI CHARACTER SARA UU
-    0x0e3a: 0xda,      #  THAI CHARACTER PHINTHU
-    0x0e3f: 0xdf,      #  THAI CURRENCY SYMBOL BAHT
-    0x0e40: 0xe0,      #  THAI CHARACTER SARA E
-    0x0e41: 0xe1,      #  THAI CHARACTER SARA AE
-    0x0e42: 0xe2,      #  THAI CHARACTER SARA O
-    0x0e43: 0xe3,      #  THAI CHARACTER SARA AI MAIMUAN
-    0x0e44: 0xe4,      #  THAI CHARACTER SARA AI MAIMALAI
-    0x0e45: 0xe5,      #  THAI CHARACTER LAKKHANGYAO
-    0x0e46: 0xe6,      #  THAI CHARACTER MAIYAMOK
-    0x0e47: 0xe7,      #  THAI CHARACTER MAITAIKHU
-    0x0e48: 0xe8,      #  THAI CHARACTER MAI EK
-    0x0e49: 0xe9,      #  THAI CHARACTER MAI THO
-    0x0e4a: 0xea,      #  THAI CHARACTER MAI TRI
-    0x0e4b: 0xeb,      #  THAI CHARACTER MAI CHATTAWA
-    0x0e4c: 0xec,      #  THAI CHARACTER THANTHAKHAT
-    0x0e4d: 0xed,      #  THAI CHARACTER NIKHAHIT
-    0x0e4e: 0xee,      #  THAI CHARACTER YAMAKKAN
-    0x0e4f: 0xef,      #  THAI CHARACTER FONGMAN
-    0x0e50: 0xf0,      #  THAI DIGIT ZERO
-    0x0e51: 0xf1,      #  THAI DIGIT ONE
-    0x0e52: 0xf2,      #  THAI DIGIT TWO
-    0x0e53: 0xf3,      #  THAI DIGIT THREE
-    0x0e54: 0xf4,      #  THAI DIGIT FOUR
-    0x0e55: 0xf5,      #  THAI DIGIT FIVE
-    0x0e56: 0xf6,      #  THAI DIGIT SIX
-    0x0e57: 0xf7,      #  THAI DIGIT SEVEN
-    0x0e58: 0xf8,      #  THAI DIGIT EIGHT
-    0x0e59: 0xf9,      #  THAI DIGIT NINE
-    0x0e5a: 0xfa,      #  THAI CHARACTER ANGKHANKHU
-    0x0e5b: 0xfb,      #  THAI CHARACTER KHOMUT
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x0E01: 0xA1,      #  THAI CHARACTER KO KAI
+    0x0E02: 0xA2,      #  THAI CHARACTER KHO KHAI
+    0x0E03: 0xA3,      #  THAI CHARACTER KHO KHUAT
+    0x0E04: 0xA4,      #  THAI CHARACTER KHO KHWAI
+    0x0E05: 0xA5,      #  THAI CHARACTER KHO KHON
+    0x0E06: 0xA6,      #  THAI CHARACTER KHO RAKHANG
+    0x0E07: 0xA7,      #  THAI CHARACTER NGO NGU
+    0x0E08: 0xA8,      #  THAI CHARACTER CHO CHAN
+    0x0E09: 0xA9,      #  THAI CHARACTER CHO CHING
+    0x0E0A: 0xAA,      #  THAI CHARACTER CHO CHANG
+    0x0E0B: 0xAB,      #  THAI CHARACTER SO SO
+    0x0E0C: 0xAC,      #  THAI CHARACTER CHO CHOE
+    0x0E0D: 0xAD,      #  THAI CHARACTER YO YING
+    0x0E0E: 0xAE,      #  THAI CHARACTER DO CHADA
+    0x0E0F: 0xAF,      #  THAI CHARACTER TO PATAK
+    0x0E10: 0xB0,      #  THAI CHARACTER THO THAN
+    0x0E11: 0xB1,      #  THAI CHARACTER THO NANGMONTHO
+    0x0E12: 0xB2,      #  THAI CHARACTER THO PHUTHAO
+    0x0E13: 0xB3,      #  THAI CHARACTER NO NEN
+    0x0E14: 0xB4,      #  THAI CHARACTER DO DEK
+    0x0E15: 0xB5,      #  THAI CHARACTER TO TAO
+    0x0E16: 0xB6,      #  THAI CHARACTER THO THUNG
+    0x0E17: 0xB7,      #  THAI CHARACTER THO THAHAN
+    0x0E18: 0xB8,      #  THAI CHARACTER THO THONG
+    0x0E19: 0xB9,      #  THAI CHARACTER NO NU
+    0x0E1A: 0xBA,      #  THAI CHARACTER BO BAIMAI
+    0x0E1B: 0xBB,      #  THAI CHARACTER PO PLA
+    0x0E1C: 0xBC,      #  THAI CHARACTER PHO PHUNG
+    0x0E1D: 0xBD,      #  THAI CHARACTER FO FA
+    0x0E1E: 0xBE,      #  THAI CHARACTER PHO PHAN
+    0x0E1F: 0xBF,      #  THAI CHARACTER FO FAN
+    0x0E20: 0xC0,      #  THAI CHARACTER PHO SAMPHAO
+    0x0E21: 0xC1,      #  THAI CHARACTER MO MA
+    0x0E22: 0xC2,      #  THAI CHARACTER YO YAK
+    0x0E23: 0xC3,      #  THAI CHARACTER RO RUA
+    0x0E24: 0xC4,      #  THAI CHARACTER RU
+    0x0E25: 0xC5,      #  THAI CHARACTER LO LING
+    0x0E26: 0xC6,      #  THAI CHARACTER LU
+    0x0E27: 0xC7,      #  THAI CHARACTER WO WAEN
+    0x0E28: 0xC8,      #  THAI CHARACTER SO SALA
+    0x0E29: 0xC9,      #  THAI CHARACTER SO RUSI
+    0x0E2A: 0xCA,      #  THAI CHARACTER SO SUA
+    0x0E2B: 0xCB,      #  THAI CHARACTER HO HIP
+    0x0E2C: 0xCC,      #  THAI CHARACTER LO CHULA
+    0x0E2D: 0xCD,      #  THAI CHARACTER O ANG
+    0x0E2E: 0xCE,      #  THAI CHARACTER HO NOKHUK
+    0x0E2F: 0xCF,      #  THAI CHARACTER PAIYANNOI
+    0x0E30: 0xD0,      #  THAI CHARACTER SARA A
+    0x0E31: 0xD1,      #  THAI CHARACTER MAI HAN-AKAT
+    0x0E32: 0xD2,      #  THAI CHARACTER SARA AA
+    0x0E33: 0xD3,      #  THAI CHARACTER SARA AM
+    0x0E34: 0xD4,      #  THAI CHARACTER SARA I
+    0x0E35: 0xD5,      #  THAI CHARACTER SARA II
+    0x0E36: 0xD6,      #  THAI CHARACTER SARA UE
+    0x0E37: 0xD7,      #  THAI CHARACTER SARA UEE
+    0x0E38: 0xD8,      #  THAI CHARACTER SARA U
+    0x0E39: 0xD9,      #  THAI CHARACTER SARA UU
+    0x0E3A: 0xDA,      #  THAI CHARACTER PHINTHU
+    0x0E3F: 0xDF,      #  THAI CURRENCY SYMBOL BAHT
+    0x0E40: 0xE0,      #  THAI CHARACTER SARA E
+    0x0E41: 0xE1,      #  THAI CHARACTER SARA AE
+    0x0E42: 0xE2,      #  THAI CHARACTER SARA O
+    0x0E43: 0xE3,      #  THAI CHARACTER SARA AI MAIMUAN
+    0x0E44: 0xE4,      #  THAI CHARACTER SARA AI MAIMALAI
+    0x0E45: 0xE5,      #  THAI CHARACTER LAKKHANGYAO
+    0x0E46: 0xE6,      #  THAI CHARACTER MAIYAMOK
+    0x0E47: 0xE7,      #  THAI CHARACTER MAITAIKHU
+    0x0E48: 0xE8,      #  THAI CHARACTER MAI EK
+    0x0E49: 0xE9,      #  THAI CHARACTER MAI THO
+    0x0E4A: 0xEA,      #  THAI CHARACTER MAI TRI
+    0x0E4B: 0xEB,      #  THAI CHARACTER MAI CHATTAWA
+    0x0E4C: 0xEC,      #  THAI CHARACTER THANTHAKHAT
+    0x0E4D: 0xED,      #  THAI CHARACTER NIKHAHIT
+    0x0E4E: 0xEE,      #  THAI CHARACTER YAMAKKAN
+    0x0E4F: 0xEF,      #  THAI CHARACTER FONGMAN
+    0x0E50: 0xF0,      #  THAI DIGIT ZERO
+    0x0E51: 0xF1,      #  THAI DIGIT ONE
+    0x0E52: 0xF2,      #  THAI DIGIT TWO
+    0x0E53: 0xF3,      #  THAI DIGIT THREE
+    0x0E54: 0xF4,      #  THAI DIGIT FOUR
+    0x0E55: 0xF5,      #  THAI DIGIT FIVE
+    0x0E56: 0xF6,      #  THAI DIGIT SIX
+    0x0E57: 0xF7,      #  THAI DIGIT SEVEN
+    0x0E58: 0xF8,      #  THAI DIGIT EIGHT
+    0x0E59: 0xF9,      #  THAI DIGIT NINE
+    0x0E5A: 0xFA,      #  THAI CHARACTER ANGKHANKHU
+    0x0E5B: 0xFB,      #  THAI CHARACTER KHOMUT
     0x2013: 0x96,      #  EN DASH
     0x2014: 0x97,      #  EM DASH
     0x2018: 0x91,      #  LEFT SINGLE QUOTATION MARK
     0x2019: 0x92,      #  RIGHT SINGLE QUOTATION MARK
-    0x201c: 0x93,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201C: 0x93,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,      #  RIGHT DOUBLE QUOTATION MARK
     0x2022: 0x95,      #  BULLET
     0x2026: 0x85,      #  HORIZONTAL ELLIPSIS
-    0x20ac: 0x80,      #  EURO SIGN
-}
\ No newline at end of file
+    0x20AC: 0x80,      #  EURO SIGN
+}
+
index ce3962b9ad4368bc6f1a8ee0d696bee6c54a8928..7cfdcf481e4a349fc612eff52bf696d62765be5f 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x7f'    #  0x07 -> DELETE
     u'\x97'    #  0x08 -> CONTROL
     u'\x8d'    #  0x09 -> CONTROL
-    u'\x8e'    #  0x0a -> CONTROL
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\x8e'    #  0x0A -> CONTROL
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x87'    #  0x17 -> CONTROL
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x92'    #  0x1a -> CONTROL
-    u'\x8f'    #  0x1b -> CONTROL
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x92'    #  0x1A -> CONTROL
+    u'\x8f'    #  0x1B -> CONTROL
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u'\x80'    #  0x20 -> CONTROL
     u'\x81'    #  0x21 -> CONTROL
     u'\x82'    #  0x22 -> CONTROL
@@ -74,12 +74,12 @@ decoding_table = (
     u'\x1b'    #  0x27 -> ESCAPE
     u'\x88'    #  0x28 -> CONTROL
     u'\x89'    #  0x29 -> CONTROL
-    u'\x8a'    #  0x2a -> CONTROL
-    u'\x8b'    #  0x2b -> CONTROL
-    u'\x8c'    #  0x2c -> CONTROL
-    u'\x05'    #  0x2d -> ENQUIRY
-    u'\x06'    #  0x2e -> ACKNOWLEDGE
-    u'\x07'    #  0x2f -> BELL
+    u'\x8a'    #  0x2A -> CONTROL
+    u'\x8b'    #  0x2B -> CONTROL
+    u'\x8c'    #  0x2C -> CONTROL
+    u'\x05'    #  0x2D -> ENQUIRY
+    u'\x06'    #  0x2E -> ACKNOWLEDGE
+    u'\x07'    #  0x2F -> BELL
     u'\x90'    #  0x30 -> CONTROL
     u'\x91'    #  0x31 -> CONTROL
     u'\x16'    #  0x32 -> SYNCHRONOUS IDLE
@@ -90,12 +90,12 @@ decoding_table = (
     u'\x04'    #  0x37 -> END OF TRANSMISSION
     u'\x98'    #  0x38 -> CONTROL
     u'\x99'    #  0x39 -> CONTROL
-    u'\x9a'    #  0x3a -> CONTROL
-    u'\x9b'    #  0x3b -> CONTROL
-    u'\x14'    #  0x3c -> DEVICE CONTROL FOUR
-    u'\x15'    #  0x3d -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'    #  0x3e -> CONTROL
-    u'\x1a'    #  0x3f -> SUBSTITUTE
+    u'\x9a'    #  0x3A -> CONTROL
+    u'\x9b'    #  0x3B -> CONTROL
+    u'\x14'    #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'    #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'    #  0x3E -> CONTROL
+    u'\x1a'    #  0x3F -> SUBSTITUTE
     u' '       #  0x40 -> SPACE
     u'\u0391'  #  0x41 -> GREEK CAPITAL LETTER ALPHA
     u'\u0392'  #  0x42 -> GREEK CAPITAL LETTER BETA
@@ -106,12 +106,12 @@ decoding_table = (
     u'\u0397'  #  0x47 -> GREEK CAPITAL LETTER ETA
     u'\u0398'  #  0x48 -> GREEK CAPITAL LETTER THETA
     u'\u0399'  #  0x49 -> GREEK CAPITAL LETTER IOTA
-    u'['       #  0x4a -> LEFT SQUARE BRACKET
-    u'.'       #  0x4b -> FULL STOP
-    u'<'       #  0x4c -> LESS-THAN SIGN
-    u'('       #  0x4d -> LEFT PARENTHESIS
-    u'+'       #  0x4e -> PLUS SIGN
-    u'!'       #  0x4f -> EXCLAMATION MARK
+    u'['       #  0x4A -> LEFT SQUARE BRACKET
+    u'.'       #  0x4B -> FULL STOP
+    u'<'       #  0x4C -> LESS-THAN SIGN
+    u'('       #  0x4D -> LEFT PARENTHESIS
+    u'+'       #  0x4E -> PLUS SIGN
+    u'!'       #  0x4F -> EXCLAMATION MARK
     u'&'       #  0x50 -> AMPERSAND
     u'\u039a'  #  0x51 -> GREEK CAPITAL LETTER KAPPA
     u'\u039b'  #  0x52 -> GREEK CAPITAL LETTER LAMDA
@@ -122,12 +122,12 @@ decoding_table = (
     u'\u03a0'  #  0x57 -> GREEK CAPITAL LETTER PI
     u'\u03a1'  #  0x58 -> GREEK CAPITAL LETTER RHO
     u'\u03a3'  #  0x59 -> GREEK CAPITAL LETTER SIGMA
-    u']'       #  0x5a -> RIGHT SQUARE BRACKET
-    u'$'       #  0x5b -> DOLLAR SIGN
-    u'*'       #  0x5c -> ASTERISK
-    u')'       #  0x5d -> RIGHT PARENTHESIS
-    u';'       #  0x5e -> SEMICOLON
-    u'^'       #  0x5f -> CIRCUMFLEX ACCENT
+    u']'       #  0x5A -> RIGHT SQUARE BRACKET
+    u'$'       #  0x5B -> DOLLAR SIGN
+    u'*'       #  0x5C -> ASTERISK
+    u')'       #  0x5D -> RIGHT PARENTHESIS
+    u';'       #  0x5E -> SEMICOLON
+    u'^'       #  0x5F -> CIRCUMFLEX ACCENT
     u'-'       #  0x60 -> HYPHEN-MINUS
     u'/'       #  0x61 -> SOLIDUS
     u'\u03a4'  #  0x62 -> GREEK CAPITAL LETTER TAU
@@ -138,12 +138,12 @@ decoding_table = (
     u'\u03a9'  #  0x67 -> GREEK CAPITAL LETTER OMEGA
     u'\u03aa'  #  0x68 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
     u'\u03ab'  #  0x69 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'|'       #  0x6a -> VERTICAL LINE
-    u','       #  0x6b -> COMMA
-    u'%'       #  0x6c -> PERCENT SIGN
-    u'_'       #  0x6d -> LOW LINE
-    u'>'       #  0x6e -> GREATER-THAN SIGN
-    u'?'       #  0x6f -> QUESTION MARK
+    u'|'       #  0x6A -> VERTICAL LINE
+    u','       #  0x6B -> COMMA
+    u'%'       #  0x6C -> PERCENT SIGN
+    u'_'       #  0x6D -> LOW LINE
+    u'>'       #  0x6E -> GREATER-THAN SIGN
+    u'?'       #  0x6F -> QUESTION MARK
     u'\xa8'    #  0x70 -> DIAERESIS
     u'\u0386'  #  0x71 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
     u'\u0388'  #  0x72 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
@@ -154,12 +154,12 @@ decoding_table = (
     u'\u038e'  #  0x77 -> GREEK CAPITAL LETTER UPSILON WITH TONOS
     u'\u038f'  #  0x78 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
     u'`'       #  0x79 -> GRAVE ACCENT
-    u':'       #  0x7a -> COLON
-    u'#'       #  0x7b -> NUMBER SIGN
-    u'@'       #  0x7c -> COMMERCIAL AT
-    u"'"       #  0x7d -> APOSTROPHE
-    u'='       #  0x7e -> EQUALS SIGN
-    u'"'       #  0x7f -> QUOTATION MARK
+    u':'       #  0x7A -> COLON
+    u'#'       #  0x7B -> NUMBER SIGN
+    u'@'       #  0x7C -> COMMERCIAL AT
+    u"'"       #  0x7D -> APOSTROPHE
+    u'='       #  0x7E -> EQUALS SIGN
+    u'"'       #  0x7F -> QUOTATION MARK
     u'\u0385'  #  0x80 -> GREEK DIALYTIKA TONOS
     u'a'       #  0x81 -> LATIN SMALL LETTER A
     u'b'       #  0x82 -> LATIN SMALL LETTER B
@@ -170,12 +170,12 @@ decoding_table = (
     u'g'       #  0x87 -> LATIN SMALL LETTER G
     u'h'       #  0x88 -> LATIN SMALL LETTER H
     u'i'       #  0x89 -> LATIN SMALL LETTER I
-    u'\u03b1'  #  0x8a -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'  #  0x8b -> GREEK SMALL LETTER BETA
-    u'\u03b3'  #  0x8c -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'  #  0x8d -> GREEK SMALL LETTER DELTA
-    u'\u03b5'  #  0x8e -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'  #  0x8f -> GREEK SMALL LETTER ZETA
+    u'\u03b1'  #  0x8A -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'  #  0x8B -> GREEK SMALL LETTER BETA
+    u'\u03b3'  #  0x8C -> GREEK SMALL LETTER GAMMA
+    u'\u03b4'  #  0x8D -> GREEK SMALL LETTER DELTA
+    u'\u03b5'  #  0x8E -> GREEK SMALL LETTER EPSILON
+    u'\u03b6'  #  0x8F -> GREEK SMALL LETTER ZETA
     u'\xb0'    #  0x90 -> DEGREE SIGN
     u'j'       #  0x91 -> LATIN SMALL LETTER J
     u'k'       #  0x92 -> LATIN SMALL LETTER K
@@ -186,108 +186,108 @@ decoding_table = (
     u'p'       #  0x97 -> LATIN SMALL LETTER P
     u'q'       #  0x98 -> LATIN SMALL LETTER Q
     u'r'       #  0x99 -> LATIN SMALL LETTER R
-    u'\u03b7'  #  0x9a -> GREEK SMALL LETTER ETA
-    u'\u03b8'  #  0x9b -> GREEK SMALL LETTER THETA
-    u'\u03b9'  #  0x9c -> GREEK SMALL LETTER IOTA
-    u'\u03ba'  #  0x9d -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'  #  0x9e -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'  #  0x9f -> GREEK SMALL LETTER MU
-    u'\xb4'    #  0xa0 -> ACUTE ACCENT
-    u'~'       #  0xa1 -> TILDE
-    u's'       #  0xa2 -> LATIN SMALL LETTER S
-    u't'       #  0xa3 -> LATIN SMALL LETTER T
-    u'u'       #  0xa4 -> LATIN SMALL LETTER U
-    u'v'       #  0xa5 -> LATIN SMALL LETTER V
-    u'w'       #  0xa6 -> LATIN SMALL LETTER W
-    u'x'       #  0xa7 -> LATIN SMALL LETTER X
-    u'y'       #  0xa8 -> LATIN SMALL LETTER Y
-    u'z'       #  0xa9 -> LATIN SMALL LETTER Z
-    u'\u03bd'  #  0xaa -> GREEK SMALL LETTER NU
-    u'\u03be'  #  0xab -> GREEK SMALL LETTER XI
-    u'\u03bf'  #  0xac -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'  #  0xad -> GREEK SMALL LETTER PI
-    u'\u03c1'  #  0xae -> GREEK SMALL LETTER RHO
-    u'\u03c3'  #  0xaf -> GREEK SMALL LETTER SIGMA
-    u'\xa3'    #  0xb0 -> POUND SIGN
-    u'\u03ac'  #  0xb1 -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'  #  0xb2 -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'  #  0xb3 -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03ca'  #  0xb4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03af'  #  0xb5 -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03cc'  #  0xb6 -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'  #  0xb7 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03cb'  #  0xb8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ce'  #  0xb9 -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u03c2'  #  0xba -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c4'  #  0xbb -> GREEK SMALL LETTER TAU
-    u'\u03c5'  #  0xbc -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'  #  0xbd -> GREEK SMALL LETTER PHI
-    u'\u03c7'  #  0xbe -> GREEK SMALL LETTER CHI
-    u'\u03c8'  #  0xbf -> GREEK SMALL LETTER PSI
-    u'{'       #  0xc0 -> LEFT CURLY BRACKET
-    u'A'       #  0xc1 -> LATIN CAPITAL LETTER A
-    u'B'       #  0xc2 -> LATIN CAPITAL LETTER B
-    u'C'       #  0xc3 -> LATIN CAPITAL LETTER C
-    u'D'       #  0xc4 -> LATIN CAPITAL LETTER D
-    u'E'       #  0xc5 -> LATIN CAPITAL LETTER E
-    u'F'       #  0xc6 -> LATIN CAPITAL LETTER F
-    u'G'       #  0xc7 -> LATIN CAPITAL LETTER G
-    u'H'       #  0xc8 -> LATIN CAPITAL LETTER H
-    u'I'       #  0xc9 -> LATIN CAPITAL LETTER I
-    u'\xad'    #  0xca -> SOFT HYPHEN
-    u'\u03c9'  #  0xcb -> GREEK SMALL LETTER OMEGA
-    u'\u0390'  #  0xcc -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u03b0'  #  0xcd -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u2018'  #  0xce -> LEFT SINGLE QUOTATION MARK
-    u'\u2015'  #  0xcf -> HORIZONTAL BAR
-    u'}'       #  0xd0 -> RIGHT CURLY BRACKET
-    u'J'       #  0xd1 -> LATIN CAPITAL LETTER J
-    u'K'       #  0xd2 -> LATIN CAPITAL LETTER K
-    u'L'       #  0xd3 -> LATIN CAPITAL LETTER L
-    u'M'       #  0xd4 -> LATIN CAPITAL LETTER M
-    u'N'       #  0xd5 -> LATIN CAPITAL LETTER N
-    u'O'       #  0xd6 -> LATIN CAPITAL LETTER O
-    u'P'       #  0xd7 -> LATIN CAPITAL LETTER P
-    u'Q'       #  0xd8 -> LATIN CAPITAL LETTER Q
-    u'R'       #  0xd9 -> LATIN CAPITAL LETTER R
-    u'\xb1'    #  0xda -> PLUS-MINUS SIGN
-    u'\xbd'    #  0xdb -> VULGAR FRACTION ONE HALF
-    u'\x1a'    #  0xdc -> SUBSTITUTE
-    u'\u0387'  #  0xdd -> GREEK ANO TELEIA
-    u'\u2019'  #  0xde -> RIGHT SINGLE QUOTATION MARK
-    u'\xa6'    #  0xdf -> BROKEN BAR
-    u'\\'      #  0xe0 -> REVERSE SOLIDUS
-    u'\x1a'    #  0xe1 -> SUBSTITUTE
-    u'S'       #  0xe2 -> LATIN CAPITAL LETTER S
-    u'T'       #  0xe3 -> LATIN CAPITAL LETTER T
-    u'U'       #  0xe4 -> LATIN CAPITAL LETTER U
-    u'V'       #  0xe5 -> LATIN CAPITAL LETTER V
-    u'W'       #  0xe6 -> LATIN CAPITAL LETTER W
-    u'X'       #  0xe7 -> LATIN CAPITAL LETTER X
-    u'Y'       #  0xe8 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0xe9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'    #  0xea -> SUPERSCRIPT TWO
-    u'\xa7'    #  0xeb -> SECTION SIGN
-    u'\x1a'    #  0xec -> SUBSTITUTE
-    u'\x1a'    #  0xed -> SUBSTITUTE
-    u'\xab'    #  0xee -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xef -> NOT SIGN
-    u'0'       #  0xf0 -> DIGIT ZERO
-    u'1'       #  0xf1 -> DIGIT ONE
-    u'2'       #  0xf2 -> DIGIT TWO
-    u'3'       #  0xf3 -> DIGIT THREE
-    u'4'       #  0xf4 -> DIGIT FOUR
-    u'5'       #  0xf5 -> DIGIT FIVE
-    u'6'       #  0xf6 -> DIGIT SIX
-    u'7'       #  0xf7 -> DIGIT SEVEN
-    u'8'       #  0xf8 -> DIGIT EIGHT
-    u'9'       #  0xf9 -> DIGIT NINE
-    u'\xb3'    #  0xfa -> SUPERSCRIPT THREE
-    u'\xa9'    #  0xfb -> COPYRIGHT SIGN
-    u'\x1a'    #  0xfc -> SUBSTITUTE
-    u'\x1a'    #  0xfd -> SUBSTITUTE
-    u'\xbb'    #  0xfe -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\x9f'    #  0xff -> CONTROL
+    u'\u03b7'  #  0x9A -> GREEK SMALL LETTER ETA
+    u'\u03b8'  #  0x9B -> GREEK SMALL LETTER THETA
+    u'\u03b9'  #  0x9C -> GREEK SMALL LETTER IOTA
+    u'\u03ba'  #  0x9D -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'  #  0x9E -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'  #  0x9F -> GREEK SMALL LETTER MU
+    u'\xb4'    #  0xA0 -> ACUTE ACCENT
+    u'~'       #  0xA1 -> TILDE
+    u's'       #  0xA2 -> LATIN SMALL LETTER S
+    u't'       #  0xA3 -> LATIN SMALL LETTER T
+    u'u'       #  0xA4 -> LATIN SMALL LETTER U
+    u'v'       #  0xA5 -> LATIN SMALL LETTER V
+    u'w'       #  0xA6 -> LATIN SMALL LETTER W
+    u'x'       #  0xA7 -> LATIN SMALL LETTER X
+    u'y'       #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'       #  0xA9 -> LATIN SMALL LETTER Z
+    u'\u03bd'  #  0xAA -> GREEK SMALL LETTER NU
+    u'\u03be'  #  0xAB -> GREEK SMALL LETTER XI
+    u'\u03bf'  #  0xAC -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'  #  0xAD -> GREEK SMALL LETTER PI
+    u'\u03c1'  #  0xAE -> GREEK SMALL LETTER RHO
+    u'\u03c3'  #  0xAF -> GREEK SMALL LETTER SIGMA
+    u'\xa3'    #  0xB0 -> POUND SIGN
+    u'\u03ac'  #  0xB1 -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\u03ad'  #  0xB2 -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'  #  0xB3 -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03ca'  #  0xB4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u03af'  #  0xB5 -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03cc'  #  0xB6 -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u03cd'  #  0xB7 -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u03cb'  #  0xB8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u03ce'  #  0xB9 -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\u03c2'  #  0xBA -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c4'  #  0xBB -> GREEK SMALL LETTER TAU
+    u'\u03c5'  #  0xBC -> GREEK SMALL LETTER UPSILON
+    u'\u03c6'  #  0xBD -> GREEK SMALL LETTER PHI
+    u'\u03c7'  #  0xBE -> GREEK SMALL LETTER CHI
+    u'\u03c8'  #  0xBF -> GREEK SMALL LETTER PSI
+    u'{'       #  0xC0 -> LEFT CURLY BRACKET
+    u'A'       #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'       #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'       #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'       #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'       #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'       #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'       #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'       #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'       #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'    #  0xCA -> SOFT HYPHEN
+    u'\u03c9'  #  0xCB -> GREEK SMALL LETTER OMEGA
+    u'\u0390'  #  0xCC -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    u'\u03b0'  #  0xCD -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    u'\u2018'  #  0xCE -> LEFT SINGLE QUOTATION MARK
+    u'\u2015'  #  0xCF -> HORIZONTAL BAR
+    u'}'       #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'       #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'       #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'       #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'       #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'       #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'       #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'       #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'       #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'       #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb1'    #  0xDA -> PLUS-MINUS SIGN
+    u'\xbd'    #  0xDB -> VULGAR FRACTION ONE HALF
+    u'\x1a'    #  0xDC -> SUBSTITUTE
+    u'\u0387'  #  0xDD -> GREEK ANO TELEIA
+    u'\u2019'  #  0xDE -> RIGHT SINGLE QUOTATION MARK
+    u'\xa6'    #  0xDF -> BROKEN BAR
+    u'\\'      #  0xE0 -> REVERSE SOLIDUS
+    u'\x1a'    #  0xE1 -> SUBSTITUTE
+    u'S'       #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'       #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'       #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'       #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'       #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'       #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'       #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'       #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'    #  0xEA -> SUPERSCRIPT TWO
+    u'\xa7'    #  0xEB -> SECTION SIGN
+    u'\x1a'    #  0xEC -> SUBSTITUTE
+    u'\x1a'    #  0xED -> SUBSTITUTE
+    u'\xab'    #  0xEE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xEF -> NOT SIGN
+    u'0'       #  0xF0 -> DIGIT ZERO
+    u'1'       #  0xF1 -> DIGIT ONE
+    u'2'       #  0xF2 -> DIGIT TWO
+    u'3'       #  0xF3 -> DIGIT THREE
+    u'4'       #  0xF4 -> DIGIT FOUR
+    u'5'       #  0xF5 -> DIGIT FIVE
+    u'6'       #  0xF6 -> DIGIT SIX
+    u'7'       #  0xF7 -> DIGIT SEVEN
+    u'8'       #  0xF8 -> DIGIT EIGHT
+    u'9'       #  0xF9 -> DIGIT NINE
+    u'\xb3'    #  0xFA -> SUPERSCRIPT THREE
+    u'\xa9'    #  0xFB -> COPYRIGHT SIGN
+    u'\x1a'    #  0xFC -> SUBSTITUTE
+    u'\x1a'    #  0xFD -> SUBSTITUTE
+    u'\xbb'    #  0xFE -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\x9f'    #  0xFF -> CONTROL
 )
 
 ### Encoding Map
@@ -298,97 +298,97 @@ encoding_map = {
     0x0002: 0x02,      #  START OF TEXT
     0x0003: 0x03,      #  END OF TEXT
     0x0004: 0x37,      #  END OF TRANSMISSION
-    0x0005: 0x2d,      #  ENQUIRY
-    0x0006: 0x2e,      #  ACKNOWLEDGE
-    0x0007: 0x2f,      #  BELL
+    0x0005: 0x2D,      #  ENQUIRY
+    0x0006: 0x2E,      #  ACKNOWLEDGE
+    0x0007: 0x2F,      #  BELL
     0x0008: 0x16,      #  BACKSPACE
     0x0009: 0x05,      #  HORIZONTAL TABULATION
-    0x000a: 0x25,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x25,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
     0x0013: 0x13,      #  DEVICE CONTROL THREE
-    0x0014: 0x3c,      #  DEVICE CONTROL FOUR
-    0x0015: 0x3d,      #  NEGATIVE ACKNOWLEDGE
+    0x0014: 0x3C,      #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,      #  NEGATIVE ACKNOWLEDGE
     0x0016: 0x32,      #  SYNCHRONOUS IDLE
     0x0017: 0x26,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: None,      #  SUBSTITUTE
-    0x001b: 0x27,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: None,      #  SUBSTITUTE
+    0x001B: 0x27,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x40,      #  SPACE
-    0x0021: 0x4f,      #  EXCLAMATION MARK
-    0x0022: 0x7f,      #  QUOTATION MARK
-    0x0023: 0x7b,      #  NUMBER SIGN
-    0x0024: 0x5b,      #  DOLLAR SIGN
-    0x0025: 0x6c,      #  PERCENT SIGN
+    0x0021: 0x4F,      #  EXCLAMATION MARK
+    0x0022: 0x7F,      #  QUOTATION MARK
+    0x0023: 0x7B,      #  NUMBER SIGN
+    0x0024: 0x5B,      #  DOLLAR SIGN
+    0x0025: 0x6C,      #  PERCENT SIGN
     0x0026: 0x50,      #  AMPERSAND
-    0x0027: 0x7d,      #  APOSTROPHE
-    0x0028: 0x4d,      #  LEFT PARENTHESIS
-    0x0029: 0x5d,      #  RIGHT PARENTHESIS
-    0x002a: 0x5c,      #  ASTERISK
-    0x002b: 0x4e,      #  PLUS SIGN
-    0x002c: 0x6b,      #  COMMA
-    0x002d: 0x60,      #  HYPHEN-MINUS
-    0x002e: 0x4b,      #  FULL STOP
-    0x002f: 0x61,      #  SOLIDUS
-    0x0030: 0xf0,      #  DIGIT ZERO
-    0x0031: 0xf1,      #  DIGIT ONE
-    0x0032: 0xf2,      #  DIGIT TWO
-    0x0033: 0xf3,      #  DIGIT THREE
-    0x0034: 0xf4,      #  DIGIT FOUR
-    0x0035: 0xf5,      #  DIGIT FIVE
-    0x0036: 0xf6,      #  DIGIT SIX
-    0x0037: 0xf7,      #  DIGIT SEVEN
-    0x0038: 0xf8,      #  DIGIT EIGHT
-    0x0039: 0xf9,      #  DIGIT NINE
-    0x003a: 0x7a,      #  COLON
-    0x003b: 0x5e,      #  SEMICOLON
-    0x003c: 0x4c,      #  LESS-THAN SIGN
-    0x003d: 0x7e,      #  EQUALS SIGN
-    0x003e: 0x6e,      #  GREATER-THAN SIGN
-    0x003f: 0x6f,      #  QUESTION MARK
-    0x0040: 0x7c,      #  COMMERCIAL AT
-    0x0041: 0xc1,      #  LATIN CAPITAL LETTER A
-    0x0042: 0xc2,      #  LATIN CAPITAL LETTER B
-    0x0043: 0xc3,      #  LATIN CAPITAL LETTER C
-    0x0044: 0xc4,      #  LATIN CAPITAL LETTER D
-    0x0045: 0xc5,      #  LATIN CAPITAL LETTER E
-    0x0046: 0xc6,      #  LATIN CAPITAL LETTER F
-    0x0047: 0xc7,      #  LATIN CAPITAL LETTER G
-    0x0048: 0xc8,      #  LATIN CAPITAL LETTER H
-    0x0049: 0xc9,      #  LATIN CAPITAL LETTER I
-    0x004a: 0xd1,      #  LATIN CAPITAL LETTER J
-    0x004b: 0xd2,      #  LATIN CAPITAL LETTER K
-    0x004c: 0xd3,      #  LATIN CAPITAL LETTER L
-    0x004d: 0xd4,      #  LATIN CAPITAL LETTER M
-    0x004e: 0xd5,      #  LATIN CAPITAL LETTER N
-    0x004f: 0xd6,      #  LATIN CAPITAL LETTER O
-    0x0050: 0xd7,      #  LATIN CAPITAL LETTER P
-    0x0051: 0xd8,      #  LATIN CAPITAL LETTER Q
-    0x0052: 0xd9,      #  LATIN CAPITAL LETTER R
-    0x0053: 0xe2,      #  LATIN CAPITAL LETTER S
-    0x0054: 0xe3,      #  LATIN CAPITAL LETTER T
-    0x0055: 0xe4,      #  LATIN CAPITAL LETTER U
-    0x0056: 0xe5,      #  LATIN CAPITAL LETTER V
-    0x0057: 0xe6,      #  LATIN CAPITAL LETTER W
-    0x0058: 0xe7,      #  LATIN CAPITAL LETTER X
-    0x0059: 0xe8,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0xe9,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x4a,      #  LEFT SQUARE BRACKET
-    0x005c: 0xe0,      #  REVERSE SOLIDUS
-    0x005d: 0x5a,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5f,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x6d,      #  LOW LINE
+    0x0027: 0x7D,      #  APOSTROPHE
+    0x0028: 0x4D,      #  LEFT PARENTHESIS
+    0x0029: 0x5D,      #  RIGHT PARENTHESIS
+    0x002A: 0x5C,      #  ASTERISK
+    0x002B: 0x4E,      #  PLUS SIGN
+    0x002C: 0x6B,      #  COMMA
+    0x002D: 0x60,      #  HYPHEN-MINUS
+    0x002E: 0x4B,      #  FULL STOP
+    0x002F: 0x61,      #  SOLIDUS
+    0x0030: 0xF0,      #  DIGIT ZERO
+    0x0031: 0xF1,      #  DIGIT ONE
+    0x0032: 0xF2,      #  DIGIT TWO
+    0x0033: 0xF3,      #  DIGIT THREE
+    0x0034: 0xF4,      #  DIGIT FOUR
+    0x0035: 0xF5,      #  DIGIT FIVE
+    0x0036: 0xF6,      #  DIGIT SIX
+    0x0037: 0xF7,      #  DIGIT SEVEN
+    0x0038: 0xF8,      #  DIGIT EIGHT
+    0x0039: 0xF9,      #  DIGIT NINE
+    0x003A: 0x7A,      #  COLON
+    0x003B: 0x5E,      #  SEMICOLON
+    0x003C: 0x4C,      #  LESS-THAN SIGN
+    0x003D: 0x7E,      #  EQUALS SIGN
+    0x003E: 0x6E,      #  GREATER-THAN SIGN
+    0x003F: 0x6F,      #  QUESTION MARK
+    0x0040: 0x7C,      #  COMMERCIAL AT
+    0x0041: 0xC1,      #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,      #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,      #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,      #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,      #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,      #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,      #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,      #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,      #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,      #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,      #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,      #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,      #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,      #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,      #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,      #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,      #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,      #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,      #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,      #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,      #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,      #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,      #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,      #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,      #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x4A,      #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,      #  REVERSE SOLIDUS
+    0x005D: 0x5A,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5F,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,      #  LOW LINE
     0x0060: 0x79,      #  GRAVE ACCENT
     0x0061: 0x81,      #  LATIN SMALL LETTER A
     0x0062: 0x82,      #  LATIN SMALL LETTER B
@@ -399,28 +399,28 @@ encoding_map = {
     0x0067: 0x87,      #  LATIN SMALL LETTER G
     0x0068: 0x88,      #  LATIN SMALL LETTER H
     0x0069: 0x89,      #  LATIN SMALL LETTER I
-    0x006a: 0x91,      #  LATIN SMALL LETTER J
-    0x006b: 0x92,      #  LATIN SMALL LETTER K
-    0x006c: 0x93,      #  LATIN SMALL LETTER L
-    0x006d: 0x94,      #  LATIN SMALL LETTER M
-    0x006e: 0x95,      #  LATIN SMALL LETTER N
-    0x006f: 0x96,      #  LATIN SMALL LETTER O
+    0x006A: 0x91,      #  LATIN SMALL LETTER J
+    0x006B: 0x92,      #  LATIN SMALL LETTER K
+    0x006C: 0x93,      #  LATIN SMALL LETTER L
+    0x006D: 0x94,      #  LATIN SMALL LETTER M
+    0x006E: 0x95,      #  LATIN SMALL LETTER N
+    0x006F: 0x96,      #  LATIN SMALL LETTER O
     0x0070: 0x97,      #  LATIN SMALL LETTER P
     0x0071: 0x98,      #  LATIN SMALL LETTER Q
     0x0072: 0x99,      #  LATIN SMALL LETTER R
-    0x0073: 0xa2,      #  LATIN SMALL LETTER S
-    0x0074: 0xa3,      #  LATIN SMALL LETTER T
-    0x0075: 0xa4,      #  LATIN SMALL LETTER U
-    0x0076: 0xa5,      #  LATIN SMALL LETTER V
-    0x0077: 0xa6,      #  LATIN SMALL LETTER W
-    0x0078: 0xa7,      #  LATIN SMALL LETTER X
-    0x0079: 0xa8,      #  LATIN SMALL LETTER Y
-    0x007a: 0xa9,      #  LATIN SMALL LETTER Z
-    0x007b: 0xc0,      #  LEFT CURLY BRACKET
-    0x007c: 0x6a,      #  VERTICAL LINE
-    0x007d: 0xd0,      #  RIGHT CURLY BRACKET
-    0x007e: 0xa1,      #  TILDE
-    0x007f: 0x07,      #  DELETE
+    0x0073: 0xA2,      #  LATIN SMALL LETTER S
+    0x0074: 0xA3,      #  LATIN SMALL LETTER T
+    0x0075: 0xA4,      #  LATIN SMALL LETTER U
+    0x0076: 0xA5,      #  LATIN SMALL LETTER V
+    0x0077: 0xA6,      #  LATIN SMALL LETTER W
+    0x0078: 0xA7,      #  LATIN SMALL LETTER X
+    0x0079: 0xA8,      #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,      #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,      #  LEFT CURLY BRACKET
+    0x007C: 0x6A,      #  VERTICAL LINE
+    0x007D: 0xD0,      #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,      #  TILDE
+    0x007F: 0x07,      #  DELETE
     0x0080: 0x20,      #  CONTROL
     0x0081: 0x21,      #  CONTROL
     0x0082: 0x22,      #  CONTROL
@@ -431,15 +431,15 @@ encoding_map = {
     0x0087: 0x17,      #  CONTROL
     0x0088: 0x28,      #  CONTROL
     0x0089: 0x29,      #  CONTROL
-    0x008a: 0x2a,      #  CONTROL
-    0x008b: 0x2b,      #  CONTROL
-    0x008c: 0x2c,      #  CONTROL
-    0x008d: 0x09,      #  CONTROL
-    0x008e: 0x0a,      #  CONTROL
-    0x008f: 0x1b,      #  CONTROL
+    0x008A: 0x2A,      #  CONTROL
+    0x008B: 0x2B,      #  CONTROL
+    0x008C: 0x2C,      #  CONTROL
+    0x008D: 0x09,      #  CONTROL
+    0x008E: 0x0A,      #  CONTROL
+    0x008F: 0x1B,      #  CONTROL
     0x0090: 0x30,      #  CONTROL
     0x0091: 0x31,      #  CONTROL
-    0x0092: 0x1a,      #  CONTROL
+    0x0092: 0x1A,      #  CONTROL
     0x0093: 0x33,      #  CONTROL
     0x0094: 0x34,      #  CONTROL
     0x0095: 0x35,      #  CONTROL
@@ -447,38 +447,38 @@ encoding_map = {
     0x0097: 0x08,      #  CONTROL
     0x0098: 0x38,      #  CONTROL
     0x0099: 0x39,      #  CONTROL
-    0x009a: 0x3a,      #  CONTROL
-    0x009b: 0x3b,      #  CONTROL
-    0x009c: 0x04,      #  CONTROL
-    0x009d: 0x14,      #  CONTROL
-    0x009e: 0x3e,      #  CONTROL
-    0x009f: 0xff,      #  CONTROL
-    0x00a0: 0x74,      #  NO-BREAK SPACE
-    0x00a3: 0xb0,      #  POUND SIGN
-    0x00a6: 0xdf,      #  BROKEN BAR
-    0x00a7: 0xeb,      #  SECTION SIGN
-    0x00a8: 0x70,      #  DIAERESIS
-    0x00a9: 0xfb,      #  COPYRIGHT SIGN
-    0x00ab: 0xee,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xef,      #  NOT SIGN
-    0x00ad: 0xca,      #  SOFT HYPHEN
-    0x00b0: 0x90,      #  DEGREE SIGN
-    0x00b1: 0xda,      #  PLUS-MINUS SIGN
-    0x00b2: 0xea,      #  SUPERSCRIPT TWO
-    0x00b3: 0xfa,      #  SUPERSCRIPT THREE
-    0x00b4: 0xa0,      #  ACUTE ACCENT
-    0x00bb: 0xfe,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bd: 0xdb,      #  VULGAR FRACTION ONE HALF
+    0x009A: 0x3A,      #  CONTROL
+    0x009B: 0x3B,      #  CONTROL
+    0x009C: 0x04,      #  CONTROL
+    0x009D: 0x14,      #  CONTROL
+    0x009E: 0x3E,      #  CONTROL
+    0x009F: 0xFF,      #  CONTROL
+    0x00A0: 0x74,      #  NO-BREAK SPACE
+    0x00A3: 0xB0,      #  POUND SIGN
+    0x00A6: 0xDF,      #  BROKEN BAR
+    0x00A7: 0xEB,      #  SECTION SIGN
+    0x00A8: 0x70,      #  DIAERESIS
+    0x00A9: 0xFB,      #  COPYRIGHT SIGN
+    0x00AB: 0xEE,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xEF,      #  NOT SIGN
+    0x00AD: 0xCA,      #  SOFT HYPHEN
+    0x00B0: 0x90,      #  DEGREE SIGN
+    0x00B1: 0xDA,      #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,      #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,      #  SUPERSCRIPT THREE
+    0x00B4: 0xA0,      #  ACUTE ACCENT
+    0x00BB: 0xFE,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BD: 0xDB,      #  VULGAR FRACTION ONE HALF
     0x0385: 0x80,      #  GREEK DIALYTIKA TONOS
     0x0386: 0x71,      #  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0387: 0xdd,      #  GREEK ANO TELEIA
+    0x0387: 0xDD,      #  GREEK ANO TELEIA
     0x0388: 0x72,      #  GREEK CAPITAL LETTER EPSILON WITH TONOS
     0x0389: 0x73,      #  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038a: 0x75,      #  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038c: 0x76,      #  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038e: 0x77,      #  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038f: 0x78,      #  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0xcc,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x038A: 0x75,      #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038C: 0x76,      #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038E: 0x77,      #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038F: 0x78,      #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0390: 0xCC,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
     0x0391: 0x41,      #  GREEK CAPITAL LETTER ALPHA
     0x0392: 0x42,      #  GREEK CAPITAL LETTER BETA
     0x0393: 0x43,      #  GREEK CAPITAL LETTER GAMMA
@@ -488,59 +488,60 @@ encoding_map = {
     0x0397: 0x47,      #  GREEK CAPITAL LETTER ETA
     0x0398: 0x48,      #  GREEK CAPITAL LETTER THETA
     0x0399: 0x49,      #  GREEK CAPITAL LETTER IOTA
-    0x039a: 0x51,      #  GREEK CAPITAL LETTER KAPPA
-    0x039b: 0x52,      #  GREEK CAPITAL LETTER LAMDA
-    0x039c: 0x53,      #  GREEK CAPITAL LETTER MU
-    0x039d: 0x54,      #  GREEK CAPITAL LETTER NU
-    0x039e: 0x55,      #  GREEK CAPITAL LETTER XI
-    0x039f: 0x56,      #  GREEK CAPITAL LETTER OMICRON
-    0x03a0: 0x57,      #  GREEK CAPITAL LETTER PI
-    0x03a1: 0x58,      #  GREEK CAPITAL LETTER RHO
-    0x03a3: 0x59,      #  GREEK CAPITAL LETTER SIGMA
-    0x03a4: 0x62,      #  GREEK CAPITAL LETTER TAU
-    0x03a5: 0x63,      #  GREEK CAPITAL LETTER UPSILON
-    0x03a6: 0x64,      #  GREEK CAPITAL LETTER PHI
-    0x03a7: 0x65,      #  GREEK CAPITAL LETTER CHI
-    0x03a8: 0x66,      #  GREEK CAPITAL LETTER PSI
-    0x03a9: 0x67,      #  GREEK CAPITAL LETTER OMEGA
-    0x03aa: 0x68,      #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03ab: 0x69,      #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03ac: 0xb1,      #  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03ad: 0xb2,      #  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03ae: 0xb3,      #  GREEK SMALL LETTER ETA WITH TONOS
-    0x03af: 0xb5,      #  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03b0: 0xcd,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03b1: 0x8a,      #  GREEK SMALL LETTER ALPHA
-    0x03b2: 0x8b,      #  GREEK SMALL LETTER BETA
-    0x03b3: 0x8c,      #  GREEK SMALL LETTER GAMMA
-    0x03b4: 0x8d,      #  GREEK SMALL LETTER DELTA
-    0x03b5: 0x8e,      #  GREEK SMALL LETTER EPSILON
-    0x03b6: 0x8f,      #  GREEK SMALL LETTER ZETA
-    0x03b7: 0x9a,      #  GREEK SMALL LETTER ETA
-    0x03b8: 0x9b,      #  GREEK SMALL LETTER THETA
-    0x03b9: 0x9c,      #  GREEK SMALL LETTER IOTA
-    0x03ba: 0x9d,      #  GREEK SMALL LETTER KAPPA
-    0x03bb: 0x9e,      #  GREEK SMALL LETTER LAMDA
-    0x03bc: 0x9f,      #  GREEK SMALL LETTER MU
-    0x03bd: 0xaa,      #  GREEK SMALL LETTER NU
-    0x03be: 0xab,      #  GREEK SMALL LETTER XI
-    0x03bf: 0xac,      #  GREEK SMALL LETTER OMICRON
-    0x03c0: 0xad,      #  GREEK SMALL LETTER PI
-    0x03c1: 0xae,      #  GREEK SMALL LETTER RHO
-    0x03c2: 0xba,      #  GREEK SMALL LETTER FINAL SIGMA
-    0x03c3: 0xaf,      #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0xbb,      #  GREEK SMALL LETTER TAU
-    0x03c5: 0xbc,      #  GREEK SMALL LETTER UPSILON
-    0x03c6: 0xbd,      #  GREEK SMALL LETTER PHI
-    0x03c7: 0xbe,      #  GREEK SMALL LETTER CHI
-    0x03c8: 0xbf,      #  GREEK SMALL LETTER PSI
-    0x03c9: 0xcb,      #  GREEK SMALL LETTER OMEGA
-    0x03ca: 0xb4,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03cb: 0xb8,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03cc: 0xb6,      #  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03cd: 0xb7,      #  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03ce: 0xb9,      #  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x2015: 0xcf,      #  HORIZONTAL BAR
-    0x2018: 0xce,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xde,      #  RIGHT SINGLE QUOTATION MARK
-}
\ No newline at end of file
+    0x039A: 0x51,      #  GREEK CAPITAL LETTER KAPPA
+    0x039B: 0x52,      #  GREEK CAPITAL LETTER LAMDA
+    0x039C: 0x53,      #  GREEK CAPITAL LETTER MU
+    0x039D: 0x54,      #  GREEK CAPITAL LETTER NU
+    0x039E: 0x55,      #  GREEK CAPITAL LETTER XI
+    0x039F: 0x56,      #  GREEK CAPITAL LETTER OMICRON
+    0x03A0: 0x57,      #  GREEK CAPITAL LETTER PI
+    0x03A1: 0x58,      #  GREEK CAPITAL LETTER RHO
+    0x03A3: 0x59,      #  GREEK CAPITAL LETTER SIGMA
+    0x03A4: 0x62,      #  GREEK CAPITAL LETTER TAU
+    0x03A5: 0x63,      #  GREEK CAPITAL LETTER UPSILON
+    0x03A6: 0x64,      #  GREEK CAPITAL LETTER PHI
+    0x03A7: 0x65,      #  GREEK CAPITAL LETTER CHI
+    0x03A8: 0x66,      #  GREEK CAPITAL LETTER PSI
+    0x03A9: 0x67,      #  GREEK CAPITAL LETTER OMEGA
+    0x03AA: 0x68,      #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03AB: 0x69,      #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03AC: 0xB1,      #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03AD: 0xB2,      #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03AE: 0xB3,      #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03AF: 0xB5,      #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03B0: 0xCD,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x03B1: 0x8A,      #  GREEK SMALL LETTER ALPHA
+    0x03B2: 0x8B,      #  GREEK SMALL LETTER BETA
+    0x03B3: 0x8C,      #  GREEK SMALL LETTER GAMMA
+    0x03B4: 0x8D,      #  GREEK SMALL LETTER DELTA
+    0x03B5: 0x8E,      #  GREEK SMALL LETTER EPSILON
+    0x03B6: 0x8F,      #  GREEK SMALL LETTER ZETA
+    0x03B7: 0x9A,      #  GREEK SMALL LETTER ETA
+    0x03B8: 0x9B,      #  GREEK SMALL LETTER THETA
+    0x03B9: 0x9C,      #  GREEK SMALL LETTER IOTA
+    0x03BA: 0x9D,      #  GREEK SMALL LETTER KAPPA
+    0x03BB: 0x9E,      #  GREEK SMALL LETTER LAMDA
+    0x03BC: 0x9F,      #  GREEK SMALL LETTER MU
+    0x03BD: 0xAA,      #  GREEK SMALL LETTER NU
+    0x03BE: 0xAB,      #  GREEK SMALL LETTER XI
+    0x03BF: 0xAC,      #  GREEK SMALL LETTER OMICRON
+    0x03C0: 0xAD,      #  GREEK SMALL LETTER PI
+    0x03C1: 0xAE,      #  GREEK SMALL LETTER RHO
+    0x03C2: 0xBA,      #  GREEK SMALL LETTER FINAL SIGMA
+    0x03C3: 0xAF,      #  GREEK SMALL LETTER SIGMA
+    0x03C4: 0xBB,      #  GREEK SMALL LETTER TAU
+    0x03C5: 0xBC,      #  GREEK SMALL LETTER UPSILON
+    0x03C6: 0xBD,      #  GREEK SMALL LETTER PHI
+    0x03C7: 0xBE,      #  GREEK SMALL LETTER CHI
+    0x03C8: 0xBF,      #  GREEK SMALL LETTER PSI
+    0x03C9: 0xCB,      #  GREEK SMALL LETTER OMEGA
+    0x03CA: 0xB4,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03CB: 0xB8,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03CC: 0xB6,      #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03CD: 0xB7,      #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03CE: 0xB9,      #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x2015: 0xCF,      #  HORIZONTAL BAR
+    0x2018: 0xCE,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xDE,      #  RIGHT SINGLE QUOTATION MARK
+}
+
index 04836d4d0664bfb0fc0527ede7a44c436c59b59f..ecd37308f3ea8c8383b3dd1acbc5ffd271e3dce7 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\xa1'    #  0xa1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\xaa'    #  0xaa -> FEMININE ORDINAL INDICATOR
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\xba'    #  0xba -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'    #  0xbf -> INVERTED QUESTION MARK
-    u'\xc0'    #  0xc0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'    #  0xc3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'    #  0xc8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'    #  0xca -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'    #  0xcc -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'    #  0xd0 -> LATIN CAPITAL LETTER ETH (Icelandic)
-    u'\xd1'    #  0xd1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'    #  0xd2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\xd8'    #  0xd8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'    #  0xd9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'    #  0xdd -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'    #  0xde -> LATIN CAPITAL LETTER THORN (Icelandic)
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S (German)
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'    #  0xe3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'    #  0xec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'    #  0xf0 -> LATIN SMALL LETTER ETH (Icelandic)
-    u'\xf1'    #  0xf1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'    #  0xf2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\xf8'    #  0xf8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'    #  0xfd -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'    #  0xfe -> LATIN SMALL LETTER THORN (Icelandic)
-    u'\xff'    #  0xff -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'    #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'    #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'    #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'    #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'    #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'    #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'    #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'    #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'    #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xd0'    #  0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
+    u'\xd1'    #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'    #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'    #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'    #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'    #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'    #  0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S (German)
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'    #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'    #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf0'    #  0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
+    u'\xf1'    #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'    #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\xf8'    #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'    #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'    #  0xFE -> LATIN SMALL LETTER THORN (Icelandic)
+    u'\xff'    #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a1: 0xa1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xaa,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00ba: 0xba,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xbf,      #  INVERTED QUESTION MARK
-    0x00c0: 0xc0,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xc3,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xc8,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xca,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xcc,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0xd0,      #  LATIN CAPITAL LETTER ETH (Icelandic)
-    0x00d1: 0xd1,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xd2,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d8: 0xd8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xd9,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xdd,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0xde,      #  LATIN CAPITAL LETTER THORN (Icelandic)
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S (German)
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0xe3,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0xec,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0xf0,      #  LATIN SMALL LETTER ETH (Icelandic)
-    0x00f1: 0xf1,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xf2,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f8: 0xf8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0xfd,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0xfe,      #  LATIN SMALL LETTER THORN (Icelandic)
-    0x00ff: 0xff,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A1: 0xA1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xAA,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,      #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xD0,      #  LATIN CAPITAL LETTER ETH (Icelandic)
+    0x00D1: 0xD1,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,      #  LATIN CAPITAL LETTER THORN (Icelandic)
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S (German)
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xF0,      #  LATIN SMALL LETTER ETH (Icelandic)
+    0x00F1: 0xF1,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F8: 0xF8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xFE,      #  LATIN SMALL LETTER THORN (Icelandic)
+    0x00FF: 0xFF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+}
+
index 4c5aae2f683072fd7db0ddcf81b00601bfc1d86e..86a3cc8531cc944306abb4ded5df8e0a2ce3a1ba 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u0104'  #  0xa1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0112'  #  0xa2 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0122'  #  0xa3 -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u012a'  #  0xa4 -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u0128'  #  0xa5 -> LATIN CAPITAL LETTER I WITH TILDE
-    u'\u0136'  #  0xa6 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\u013b'  #  0xa8 -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u0110'  #  0xa9 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0160'  #  0xaa -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0166'  #  0xab -> LATIN CAPITAL LETTER T WITH STROKE
-    u'\u017d'  #  0xac -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\u016a'  #  0xae -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\u014a'  #  0xaf -> LATIN CAPITAL LETTER ENG
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\u0105'  #  0xb1 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u0113'  #  0xb2 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0123'  #  0xb3 -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u012b'  #  0xb4 -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0129'  #  0xb5 -> LATIN SMALL LETTER I WITH TILDE
-    u'\u0137'  #  0xb6 -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\u013c'  #  0xb8 -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0111'  #  0xb9 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0161'  #  0xba -> LATIN SMALL LETTER S WITH CARON
-    u'\u0167'  #  0xbb -> LATIN SMALL LETTER T WITH STROKE
-    u'\u017e'  #  0xbc -> LATIN SMALL LETTER Z WITH CARON
-    u'\u2015'  #  0xbd -> HORIZONTAL BAR
-    u'\u016b'  #  0xbe -> LATIN SMALL LETTER U WITH MACRON
-    u'\u014b'  #  0xbf -> LATIN SMALL LETTER ENG
-    u'\u0100'  #  0xc0 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'    #  0xc3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\u012e'  #  0xc7 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u010c'  #  0xc8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'  #  0xca -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u0116'  #  0xcc -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'    #  0xd0 -> LATIN CAPITAL LETTER ETH (Icelandic)
-    u'\u0145'  #  0xd1 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u014c'  #  0xd2 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u0168'  #  0xd7 -> LATIN CAPITAL LETTER U WITH TILDE
-    u'\xd8'    #  0xd8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u0172'  #  0xd9 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'    #  0xdd -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'    #  0xde -> LATIN CAPITAL LETTER THORN (Icelandic)
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S (German)
-    u'\u0101'  #  0xe0 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'    #  0xe3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\u012f'  #  0xe7 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u010d'  #  0xe8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'  #  0xea -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0117'  #  0xec -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'    #  0xf0 -> LATIN SMALL LETTER ETH (Icelandic)
-    u'\u0146'  #  0xf1 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u014d'  #  0xf2 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u0169'  #  0xf7 -> LATIN SMALL LETTER U WITH TILDE
-    u'\xf8'    #  0xf8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\u0173'  #  0xf9 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'    #  0xfd -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'    #  0xfe -> LATIN SMALL LETTER THORN (Icelandic)
-    u'\u0138'  #  0xff -> LATIN SMALL LETTER KRA
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u0104'  #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u0112'  #  0xA2 -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u0122'  #  0xA3 -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u012a'  #  0xA4 -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u0128'  #  0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
+    u'\u0136'  #  0xA6 -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\u013b'  #  0xA8 -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\u0110'  #  0xA9 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0160'  #  0xAA -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u0166'  #  0xAB -> LATIN CAPITAL LETTER T WITH STROKE
+    u'\u017d'  #  0xAC -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\u016a'  #  0xAE -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\u014a'  #  0xAF -> LATIN CAPITAL LETTER ENG
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\u0105'  #  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u0113'  #  0xB2 -> LATIN SMALL LETTER E WITH MACRON
+    u'\u0123'  #  0xB3 -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u012b'  #  0xB4 -> LATIN SMALL LETTER I WITH MACRON
+    u'\u0129'  #  0xB5 -> LATIN SMALL LETTER I WITH TILDE
+    u'\u0137'  #  0xB6 -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\u013c'  #  0xB8 -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u0111'  #  0xB9 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0161'  #  0xBA -> LATIN SMALL LETTER S WITH CARON
+    u'\u0167'  #  0xBB -> LATIN SMALL LETTER T WITH STROKE
+    u'\u017e'  #  0xBC -> LATIN SMALL LETTER Z WITH CARON
+    u'\u2015'  #  0xBD -> HORIZONTAL BAR
+    u'\u016b'  #  0xBE -> LATIN SMALL LETTER U WITH MACRON
+    u'\u014b'  #  0xBF -> LATIN SMALL LETTER ENG
+    u'\u0100'  #  0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'    #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\u012e'  #  0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u010c'  #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0118'  #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u0116'  #  0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xd0'    #  0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
+    u'\u0145'  #  0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\u014c'  #  0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\u0168'  #  0xD7 -> LATIN CAPITAL LETTER U WITH TILDE
+    u'\xd8'    #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u0172'  #  0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'    #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'    #  0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S (German)
+    u'\u0101'  #  0xE0 -> LATIN SMALL LETTER A WITH MACRON
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'    #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\u012f'  #  0xE7 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u010d'  #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0119'  #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u0117'  #  0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf0'    #  0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
+    u'\u0146'  #  0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\u014d'  #  0xF2 -> LATIN SMALL LETTER O WITH MACRON
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\u0169'  #  0xF7 -> LATIN SMALL LETTER U WITH TILDE
+    u'\xf8'    #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\u0173'  #  0xF9 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'    #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'    #  0xFE -> LATIN SMALL LETTER THORN (Icelandic)
+    u'\u0138'  #  0xFF -> LATIN SMALL LETTER KRA
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xc3,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0xd0,      #  LATIN CAPITAL LETTER ETH (Icelandic)
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0xd8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xdd,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0xde,      #  LATIN CAPITAL LETTER THORN (Icelandic)
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S (German)
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0xe3,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0xf0,      #  LATIN SMALL LETTER ETH (Icelandic)
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f8: 0xf8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0xfd,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0xfe,      #  LATIN SMALL LETTER THORN (Icelandic)
-    0x0100: 0xc0,      #  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0xe0,      #  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0xa1,      #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xb1,      #  LATIN SMALL LETTER A WITH OGONEK
-    0x010c: 0xc8,      #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0xe8,      #  LATIN SMALL LETTER C WITH CARON
-    0x0110: 0xa9,      #  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xb9,      #  LATIN SMALL LETTER D WITH STROKE
-    0x0112: 0xa2,      #  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0xb2,      #  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0xcc,      #  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0xec,      #  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xca,      #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xea,      #  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0xa3,      #  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xb3,      #  LATIN SMALL LETTER G WITH CEDILLA
-    0x0128: 0xa5,      #  LATIN CAPITAL LETTER I WITH TILDE
-    0x0129: 0xb5,      #  LATIN SMALL LETTER I WITH TILDE
-    0x012a: 0xa4,      #  LATIN CAPITAL LETTER I WITH MACRON
-    0x012b: 0xb4,      #  LATIN SMALL LETTER I WITH MACRON
-    0x012e: 0xc7,      #  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012f: 0xe7,      #  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xa6,      #  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xb6,      #  LATIN SMALL LETTER K WITH CEDILLA
-    0x0138: 0xff,      #  LATIN SMALL LETTER KRA
-    0x013b: 0xa8,      #  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013c: 0xb8,      #  LATIN SMALL LETTER L WITH CEDILLA
-    0x0145: 0xd1,      #  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xf1,      #  LATIN SMALL LETTER N WITH CEDILLA
-    0x014a: 0xaf,      #  LATIN CAPITAL LETTER ENG
-    0x014b: 0xbf,      #  LATIN SMALL LETTER ENG
-    0x014c: 0xd2,      #  LATIN CAPITAL LETTER O WITH MACRON
-    0x014d: 0xf2,      #  LATIN SMALL LETTER O WITH MACRON
-    0x0160: 0xaa,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xba,      #  LATIN SMALL LETTER S WITH CARON
-    0x0166: 0xab,      #  LATIN CAPITAL LETTER T WITH STROKE
-    0x0167: 0xbb,      #  LATIN SMALL LETTER T WITH STROKE
-    0x0168: 0xd7,      #  LATIN CAPITAL LETTER U WITH TILDE
-    0x0169: 0xf7,      #  LATIN SMALL LETTER U WITH TILDE
-    0x016a: 0xae,      #  LATIN CAPITAL LETTER U WITH MACRON
-    0x016b: 0xbe,      #  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0xd9,      #  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xf9,      #  LATIN SMALL LETTER U WITH OGONEK
-    0x017d: 0xac,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0xbc,      #  LATIN SMALL LETTER Z WITH CARON
-    0x2015: 0xbd,      #  HORIZONTAL BAR
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xD0,      #  LATIN CAPITAL LETTER ETH (Icelandic)
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xD8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,      #  LATIN CAPITAL LETTER THORN (Icelandic)
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S (German)
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xF0,      #  LATIN SMALL LETTER ETH (Icelandic)
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F8: 0xF8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xFE,      #  LATIN SMALL LETTER THORN (Icelandic)
+    0x0100: 0xC0,      #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0xE0,      #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0xA1,      #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xB1,      #  LATIN SMALL LETTER A WITH OGONEK
+    0x010C: 0xC8,      #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,      #  LATIN SMALL LETTER C WITH CARON
+    0x0110: 0xA9,      #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xB9,      #  LATIN SMALL LETTER D WITH STROKE
+    0x0112: 0xA2,      #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0xB2,      #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0xCC,      #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0xEC,      #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0xCA,      #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xEA,      #  LATIN SMALL LETTER E WITH OGONEK
+    0x0122: 0xA3,      #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xB3,      #  LATIN SMALL LETTER G WITH CEDILLA
+    0x0128: 0xA5,      #  LATIN CAPITAL LETTER I WITH TILDE
+    0x0129: 0xB5,      #  LATIN SMALL LETTER I WITH TILDE
+    0x012A: 0xA4,      #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xB4,      #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xC7,      #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xE7,      #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xA6,      #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xB6,      #  LATIN SMALL LETTER K WITH CEDILLA
+    0x0138: 0xFF,      #  LATIN SMALL LETTER KRA
+    0x013B: 0xA8,      #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xB8,      #  LATIN SMALL LETTER L WITH CEDILLA
+    0x0145: 0xD1,      #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xF1,      #  LATIN SMALL LETTER N WITH CEDILLA
+    0x014A: 0xAF,      #  LATIN CAPITAL LETTER ENG
+    0x014B: 0xBF,      #  LATIN SMALL LETTER ENG
+    0x014C: 0xD2,      #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xF2,      #  LATIN SMALL LETTER O WITH MACRON
+    0x0160: 0xAA,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xBA,      #  LATIN SMALL LETTER S WITH CARON
+    0x0166: 0xAB,      #  LATIN CAPITAL LETTER T WITH STROKE
+    0x0167: 0xBB,      #  LATIN SMALL LETTER T WITH STROKE
+    0x0168: 0xD7,      #  LATIN CAPITAL LETTER U WITH TILDE
+    0x0169: 0xF7,      #  LATIN SMALL LETTER U WITH TILDE
+    0x016A: 0xAE,      #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xBE,      #  LATIN SMALL LETTER U WITH MACRON
+    0x0172: 0xD9,      #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF9,      #  LATIN SMALL LETTER U WITH OGONEK
+    0x017D: 0xAC,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xBC,      #  LATIN SMALL LETTER Z WITH CARON
+    0x2015: 0xBD,      #  HORIZONTAL BAR
+}
+
index 33e9bf2472bd28e2efdbdc3939992955712aab91..69b3765212a8b17f0be0e613d033c42665aa10ba 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,104 +186,104 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u0e01'  #  0xa1 -> THAI CHARACTER KO KAI
-    u'\u0e02'  #  0xa2 -> THAI CHARACTER KHO KHAI
-    u'\u0e03'  #  0xa3 -> THAI CHARACTER KHO KHUAT
-    u'\u0e04'  #  0xa4 -> THAI CHARACTER KHO KHWAI
-    u'\u0e05'  #  0xa5 -> THAI CHARACTER KHO KHON
-    u'\u0e06'  #  0xa6 -> THAI CHARACTER KHO RAKHANG
-    u'\u0e07'  #  0xa7 -> THAI CHARACTER NGO NGU
-    u'\u0e08'  #  0xa8 -> THAI CHARACTER CHO CHAN
-    u'\u0e09'  #  0xa9 -> THAI CHARACTER CHO CHING
-    u'\u0e0a'  #  0xaa -> THAI CHARACTER CHO CHANG
-    u'\u0e0b'  #  0xab -> THAI CHARACTER SO SO
-    u'\u0e0c'  #  0xac -> THAI CHARACTER CHO CHOE
-    u'\u0e0d'  #  0xad -> THAI CHARACTER YO YING
-    u'\u0e0e'  #  0xae -> THAI CHARACTER DO CHADA
-    u'\u0e0f'  #  0xaf -> THAI CHARACTER TO PATAK
-    u'\u0e10'  #  0xb0 -> THAI CHARACTER THO THAN
-    u'\u0e11'  #  0xb1 -> THAI CHARACTER THO NANGMONTHO
-    u'\u0e12'  #  0xb2 -> THAI CHARACTER THO PHUTHAO
-    u'\u0e13'  #  0xb3 -> THAI CHARACTER NO NEN
-    u'\u0e14'  #  0xb4 -> THAI CHARACTER DO DEK
-    u'\u0e15'  #  0xb5 -> THAI CHARACTER TO TAO
-    u'\u0e16'  #  0xb6 -> THAI CHARACTER THO THUNG
-    u'\u0e17'  #  0xb7 -> THAI CHARACTER THO THAHAN
-    u'\u0e18'  #  0xb8 -> THAI CHARACTER THO THONG
-    u'\u0e19'  #  0xb9 -> THAI CHARACTER NO NU
-    u'\u0e1a'  #  0xba -> THAI CHARACTER BO BAIMAI
-    u'\u0e1b'  #  0xbb -> THAI CHARACTER PO PLA
-    u'\u0e1c'  #  0xbc -> THAI CHARACTER PHO PHUNG
-    u'\u0e1d'  #  0xbd -> THAI CHARACTER FO FA
-    u'\u0e1e'  #  0xbe -> THAI CHARACTER PHO PHAN
-    u'\u0e1f'  #  0xbf -> THAI CHARACTER FO FAN
-    u'\u0e20'  #  0xc0 -> THAI CHARACTER PHO SAMPHAO
-    u'\u0e21'  #  0xc1 -> THAI CHARACTER MO MA
-    u'\u0e22'  #  0xc2 -> THAI CHARACTER YO YAK
-    u'\u0e23'  #  0xc3 -> THAI CHARACTER RO RUA
-    u'\u0e24'  #  0xc4 -> THAI CHARACTER RU
-    u'\u0e25'  #  0xc5 -> THAI CHARACTER LO LING
-    u'\u0e26'  #  0xc6 -> THAI CHARACTER LU
-    u'\u0e27'  #  0xc7 -> THAI CHARACTER WO WAEN
-    u'\u0e28'  #  0xc8 -> THAI CHARACTER SO SALA
-    u'\u0e29'  #  0xc9 -> THAI CHARACTER SO RUSI
-    u'\u0e2a'  #  0xca -> THAI CHARACTER SO SUA
-    u'\u0e2b'  #  0xcb -> THAI CHARACTER HO HIP
-    u'\u0e2c'  #  0xcc -> THAI CHARACTER LO CHULA
-    u'\u0e2d'  #  0xcd -> THAI CHARACTER O ANG
-    u'\u0e2e'  #  0xce -> THAI CHARACTER HO NOKHUK
-    u'\u0e2f'  #  0xcf -> THAI CHARACTER PAIYANNOI
-    u'\u0e30'  #  0xd0 -> THAI CHARACTER SARA A
-    u'\u0e31'  #  0xd1 -> THAI CHARACTER MAI HAN-AKAT
-    u'\u0e32'  #  0xd2 -> THAI CHARACTER SARA AA
-    u'\u0e33'  #  0xd3 -> THAI CHARACTER SARA AM
-    u'\u0e34'  #  0xd4 -> THAI CHARACTER SARA I
-    u'\u0e35'  #  0xd5 -> THAI CHARACTER SARA II
-    u'\u0e36'  #  0xd6 -> THAI CHARACTER SARA UE
-    u'\u0e37'  #  0xd7 -> THAI CHARACTER SARA UEE
-    u'\u0e38'  #  0xd8 -> THAI CHARACTER SARA U
-    u'\u0e39'  #  0xd9 -> THAI CHARACTER SARA UU
-    u'\u0e3a'  #  0xda -> THAI CHARACTER PHINTHU
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u0e01'  #  0xA1 -> THAI CHARACTER KO KAI
+    u'\u0e02'  #  0xA2 -> THAI CHARACTER KHO KHAI
+    u'\u0e03'  #  0xA3 -> THAI CHARACTER KHO KHUAT
+    u'\u0e04'  #  0xA4 -> THAI CHARACTER KHO KHWAI
+    u'\u0e05'  #  0xA5 -> THAI CHARACTER KHO KHON
+    u'\u0e06'  #  0xA6 -> THAI CHARACTER KHO RAKHANG
+    u'\u0e07'  #  0xA7 -> THAI CHARACTER NGO NGU
+    u'\u0e08'  #  0xA8 -> THAI CHARACTER CHO CHAN
+    u'\u0e09'  #  0xA9 -> THAI CHARACTER CHO CHING
+    u'\u0e0a'  #  0xAA -> THAI CHARACTER CHO CHANG
+    u'\u0e0b'  #  0xAB -> THAI CHARACTER SO SO
+    u'\u0e0c'  #  0xAC -> THAI CHARACTER CHO CHOE
+    u'\u0e0d'  #  0xAD -> THAI CHARACTER YO YING
+    u'\u0e0e'  #  0xAE -> THAI CHARACTER DO CHADA
+    u'\u0e0f'  #  0xAF -> THAI CHARACTER TO PATAK
+    u'\u0e10'  #  0xB0 -> THAI CHARACTER THO THAN
+    u'\u0e11'  #  0xB1 -> THAI CHARACTER THO NANGMONTHO
+    u'\u0e12'  #  0xB2 -> THAI CHARACTER THO PHUTHAO
+    u'\u0e13'  #  0xB3 -> THAI CHARACTER NO NEN
+    u'\u0e14'  #  0xB4 -> THAI CHARACTER DO DEK
+    u'\u0e15'  #  0xB5 -> THAI CHARACTER TO TAO
+    u'\u0e16'  #  0xB6 -> THAI CHARACTER THO THUNG
+    u'\u0e17'  #  0xB7 -> THAI CHARACTER THO THAHAN
+    u'\u0e18'  #  0xB8 -> THAI CHARACTER THO THONG
+    u'\u0e19'  #  0xB9 -> THAI CHARACTER NO NU
+    u'\u0e1a'  #  0xBA -> THAI CHARACTER BO BAIMAI
+    u'\u0e1b'  #  0xBB -> THAI CHARACTER PO PLA
+    u'\u0e1c'  #  0xBC -> THAI CHARACTER PHO PHUNG
+    u'\u0e1d'  #  0xBD -> THAI CHARACTER FO FA
+    u'\u0e1e'  #  0xBE -> THAI CHARACTER PHO PHAN
+    u'\u0e1f'  #  0xBF -> THAI CHARACTER FO FAN
+    u'\u0e20'  #  0xC0 -> THAI CHARACTER PHO SAMPHAO
+    u'\u0e21'  #  0xC1 -> THAI CHARACTER MO MA
+    u'\u0e22'  #  0xC2 -> THAI CHARACTER YO YAK
+    u'\u0e23'  #  0xC3 -> THAI CHARACTER RO RUA
+    u'\u0e24'  #  0xC4 -> THAI CHARACTER RU
+    u'\u0e25'  #  0xC5 -> THAI CHARACTER LO LING
+    u'\u0e26'  #  0xC6 -> THAI CHARACTER LU
+    u'\u0e27'  #  0xC7 -> THAI CHARACTER WO WAEN
+    u'\u0e28'  #  0xC8 -> THAI CHARACTER SO SALA
+    u'\u0e29'  #  0xC9 -> THAI CHARACTER SO RUSI
+    u'\u0e2a'  #  0xCA -> THAI CHARACTER SO SUA
+    u'\u0e2b'  #  0xCB -> THAI CHARACTER HO HIP
+    u'\u0e2c'  #  0xCC -> THAI CHARACTER LO CHULA
+    u'\u0e2d'  #  0xCD -> THAI CHARACTER O ANG
+    u'\u0e2e'  #  0xCE -> THAI CHARACTER HO NOKHUK
+    u'\u0e2f'  #  0xCF -> THAI CHARACTER PAIYANNOI
+    u'\u0e30'  #  0xD0 -> THAI CHARACTER SARA A
+    u'\u0e31'  #  0xD1 -> THAI CHARACTER MAI HAN-AKAT
+    u'\u0e32'  #  0xD2 -> THAI CHARACTER SARA AA
+    u'\u0e33'  #  0xD3 -> THAI CHARACTER SARA AM
+    u'\u0e34'  #  0xD4 -> THAI CHARACTER SARA I
+    u'\u0e35'  #  0xD5 -> THAI CHARACTER SARA II
+    u'\u0e36'  #  0xD6 -> THAI CHARACTER SARA UE
+    u'\u0e37'  #  0xD7 -> THAI CHARACTER SARA UEE
+    u'\u0e38'  #  0xD8 -> THAI CHARACTER SARA U
+    u'\u0e39'  #  0xD9 -> THAI CHARACTER SARA UU
+    u'\u0e3a'  #  0xDA -> THAI CHARACTER PHINTHU
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u0e3f'  #  0xdf -> THAI CURRENCY SYMBOL BAHT
-    u'\u0e40'  #  0xe0 -> THAI CHARACTER SARA E
-    u'\u0e41'  #  0xe1 -> THAI CHARACTER SARA AE
-    u'\u0e42'  #  0xe2 -> THAI CHARACTER SARA O
-    u'\u0e43'  #  0xe3 -> THAI CHARACTER SARA AI MAIMUAN
-    u'\u0e44'  #  0xe4 -> THAI CHARACTER SARA AI MAIMALAI
-    u'\u0e45'  #  0xe5 -> THAI CHARACTER LAKKHANGYAO
-    u'\u0e46'  #  0xe6 -> THAI CHARACTER MAIYAMOK
-    u'\u0e47'  #  0xe7 -> THAI CHARACTER MAITAIKHU
-    u'\u0e48'  #  0xe8 -> THAI CHARACTER MAI EK
-    u'\u0e49'  #  0xe9 -> THAI CHARACTER MAI THO
-    u'\u0e4a'  #  0xea -> THAI CHARACTER MAI TRI
-    u'\u0e4b'  #  0xeb -> THAI CHARACTER MAI CHATTAWA
-    u'\u0e4c'  #  0xec -> THAI CHARACTER THANTHAKHAT
-    u'\u0e4d'  #  0xed -> THAI CHARACTER NIKHAHIT
-    u'\u0e4e'  #  0xee -> THAI CHARACTER YAMAKKAN
-    u'\u0e4f'  #  0xef -> THAI CHARACTER FONGMAN
-    u'\u0e50'  #  0xf0 -> THAI DIGIT ZERO
-    u'\u0e51'  #  0xf1 -> THAI DIGIT ONE
-    u'\u0e52'  #  0xf2 -> THAI DIGIT TWO
-    u'\u0e53'  #  0xf3 -> THAI DIGIT THREE
-    u'\u0e54'  #  0xf4 -> THAI DIGIT FOUR
-    u'\u0e55'  #  0xf5 -> THAI DIGIT FIVE
-    u'\u0e56'  #  0xf6 -> THAI DIGIT SIX
-    u'\u0e57'  #  0xf7 -> THAI DIGIT SEVEN
-    u'\u0e58'  #  0xf8 -> THAI DIGIT EIGHT
-    u'\u0e59'  #  0xf9 -> THAI DIGIT NINE
-    u'\u0e5a'  #  0xfa -> THAI CHARACTER ANGKHANKHU
-    u'\u0e5b'  #  0xfb -> THAI CHARACTER KHOMUT
+    u'\u0e3f'  #  0xDF -> THAI CURRENCY SYMBOL BAHT
+    u'\u0e40'  #  0xE0 -> THAI CHARACTER SARA E
+    u'\u0e41'  #  0xE1 -> THAI CHARACTER SARA AE
+    u'\u0e42'  #  0xE2 -> THAI CHARACTER SARA O
+    u'\u0e43'  #  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
+    u'\u0e44'  #  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
+    u'\u0e45'  #  0xE5 -> THAI CHARACTER LAKKHANGYAO
+    u'\u0e46'  #  0xE6 -> THAI CHARACTER MAIYAMOK
+    u'\u0e47'  #  0xE7 -> THAI CHARACTER MAITAIKHU
+    u'\u0e48'  #  0xE8 -> THAI CHARACTER MAI EK
+    u'\u0e49'  #  0xE9 -> THAI CHARACTER MAI THO
+    u'\u0e4a'  #  0xEA -> THAI CHARACTER MAI TRI
+    u'\u0e4b'  #  0xEB -> THAI CHARACTER MAI CHATTAWA
+    u'\u0e4c'  #  0xEC -> THAI CHARACTER THANTHAKHAT
+    u'\u0e4d'  #  0xED -> THAI CHARACTER NIKHAHIT
+    u'\u0e4e'  #  0xEE -> THAI CHARACTER YAMAKKAN
+    u'\u0e4f'  #  0xEF -> THAI CHARACTER FONGMAN
+    u'\u0e50'  #  0xF0 -> THAI DIGIT ZERO
+    u'\u0e51'  #  0xF1 -> THAI DIGIT ONE
+    u'\u0e52'  #  0xF2 -> THAI DIGIT TWO
+    u'\u0e53'  #  0xF3 -> THAI DIGIT THREE
+    u'\u0e54'  #  0xF4 -> THAI DIGIT FOUR
+    u'\u0e55'  #  0xF5 -> THAI DIGIT FIVE
+    u'\u0e56'  #  0xF6 -> THAI DIGIT SIX
+    u'\u0e57'  #  0xF7 -> THAI DIGIT SEVEN
+    u'\u0e58'  #  0xF8 -> THAI DIGIT EIGHT
+    u'\u0e59'  #  0xF9 -> THAI DIGIT NINE
+    u'\u0e5a'  #  0xFA -> THAI CHARACTER ANGKHANKHU
+    u'\u0e5b'  #  0xFB -> THAI CHARACTER KHOMUT
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,98 +447,99 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x0e01: 0xa1,      #  THAI CHARACTER KO KAI
-    0x0e02: 0xa2,      #  THAI CHARACTER KHO KHAI
-    0x0e03: 0xa3,      #  THAI CHARACTER KHO KHUAT
-    0x0e04: 0xa4,      #  THAI CHARACTER KHO KHWAI
-    0x0e05: 0xa5,      #  THAI CHARACTER KHO KHON
-    0x0e06: 0xa6,      #  THAI CHARACTER KHO RAKHANG
-    0x0e07: 0xa7,      #  THAI CHARACTER NGO NGU
-    0x0e08: 0xa8,      #  THAI CHARACTER CHO CHAN
-    0x0e09: 0xa9,      #  THAI CHARACTER CHO CHING
-    0x0e0a: 0xaa,      #  THAI CHARACTER CHO CHANG
-    0x0e0b: 0xab,      #  THAI CHARACTER SO SO
-    0x0e0c: 0xac,      #  THAI CHARACTER CHO CHOE
-    0x0e0d: 0xad,      #  THAI CHARACTER YO YING
-    0x0e0e: 0xae,      #  THAI CHARACTER DO CHADA
-    0x0e0f: 0xaf,      #  THAI CHARACTER TO PATAK
-    0x0e10: 0xb0,      #  THAI CHARACTER THO THAN
-    0x0e11: 0xb1,      #  THAI CHARACTER THO NANGMONTHO
-    0x0e12: 0xb2,      #  THAI CHARACTER THO PHUTHAO
-    0x0e13: 0xb3,      #  THAI CHARACTER NO NEN
-    0x0e14: 0xb4,      #  THAI CHARACTER DO DEK
-    0x0e15: 0xb5,      #  THAI CHARACTER TO TAO
-    0x0e16: 0xb6,      #  THAI CHARACTER THO THUNG
-    0x0e17: 0xb7,      #  THAI CHARACTER THO THAHAN
-    0x0e18: 0xb8,      #  THAI CHARACTER THO THONG
-    0x0e19: 0xb9,      #  THAI CHARACTER NO NU
-    0x0e1a: 0xba,      #  THAI CHARACTER BO BAIMAI
-    0x0e1b: 0xbb,      #  THAI CHARACTER PO PLA
-    0x0e1c: 0xbc,      #  THAI CHARACTER PHO PHUNG
-    0x0e1d: 0xbd,      #  THAI CHARACTER FO FA
-    0x0e1e: 0xbe,      #  THAI CHARACTER PHO PHAN
-    0x0e1f: 0xbf,      #  THAI CHARACTER FO FAN
-    0x0e20: 0xc0,      #  THAI CHARACTER PHO SAMPHAO
-    0x0e21: 0xc1,      #  THAI CHARACTER MO MA
-    0x0e22: 0xc2,      #  THAI CHARACTER YO YAK
-    0x0e23: 0xc3,      #  THAI CHARACTER RO RUA
-    0x0e24: 0xc4,      #  THAI CHARACTER RU
-    0x0e25: 0xc5,      #  THAI CHARACTER LO LING
-    0x0e26: 0xc6,      #  THAI CHARACTER LU
-    0x0e27: 0xc7,      #  THAI CHARACTER WO WAEN
-    0x0e28: 0xc8,      #  THAI CHARACTER SO SALA
-    0x0e29: 0xc9,      #  THAI CHARACTER SO RUSI
-    0x0e2a: 0xca,      #  THAI CHARACTER SO SUA
-    0x0e2b: 0xcb,      #  THAI CHARACTER HO HIP
-    0x0e2c: 0xcc,      #  THAI CHARACTER LO CHULA
-    0x0e2d: 0xcd,      #  THAI CHARACTER O ANG
-    0x0e2e: 0xce,      #  THAI CHARACTER HO NOKHUK
-    0x0e2f: 0xcf,      #  THAI CHARACTER PAIYANNOI
-    0x0e30: 0xd0,      #  THAI CHARACTER SARA A
-    0x0e31: 0xd1,      #  THAI CHARACTER MAI HAN-AKAT
-    0x0e32: 0xd2,      #  THAI CHARACTER SARA AA
-    0x0e33: 0xd3,      #  THAI CHARACTER SARA AM
-    0x0e34: 0xd4,      #  THAI CHARACTER SARA I
-    0x0e35: 0xd5,      #  THAI CHARACTER SARA II
-    0x0e36: 0xd6,      #  THAI CHARACTER SARA UE
-    0x0e37: 0xd7,      #  THAI CHARACTER SARA UEE
-    0x0e38: 0xd8,      #  THAI CHARACTER SARA U
-    0x0e39: 0xd9,      #  THAI CHARACTER SARA UU
-    0x0e3a: 0xda,      #  THAI CHARACTER PHINTHU
-    0x0e3f: 0xdf,      #  THAI CURRENCY SYMBOL BAHT
-    0x0e40: 0xe0,      #  THAI CHARACTER SARA E
-    0x0e41: 0xe1,      #  THAI CHARACTER SARA AE
-    0x0e42: 0xe2,      #  THAI CHARACTER SARA O
-    0x0e43: 0xe3,      #  THAI CHARACTER SARA AI MAIMUAN
-    0x0e44: 0xe4,      #  THAI CHARACTER SARA AI MAIMALAI
-    0x0e45: 0xe5,      #  THAI CHARACTER LAKKHANGYAO
-    0x0e46: 0xe6,      #  THAI CHARACTER MAIYAMOK
-    0x0e47: 0xe7,      #  THAI CHARACTER MAITAIKHU
-    0x0e48: 0xe8,      #  THAI CHARACTER MAI EK
-    0x0e49: 0xe9,      #  THAI CHARACTER MAI THO
-    0x0e4a: 0xea,      #  THAI CHARACTER MAI TRI
-    0x0e4b: 0xeb,      #  THAI CHARACTER MAI CHATTAWA
-    0x0e4c: 0xec,      #  THAI CHARACTER THANTHAKHAT
-    0x0e4d: 0xed,      #  THAI CHARACTER NIKHAHIT
-    0x0e4e: 0xee,      #  THAI CHARACTER YAMAKKAN
-    0x0e4f: 0xef,      #  THAI CHARACTER FONGMAN
-    0x0e50: 0xf0,      #  THAI DIGIT ZERO
-    0x0e51: 0xf1,      #  THAI DIGIT ONE
-    0x0e52: 0xf2,      #  THAI DIGIT TWO
-    0x0e53: 0xf3,      #  THAI DIGIT THREE
-    0x0e54: 0xf4,      #  THAI DIGIT FOUR
-    0x0e55: 0xf5,      #  THAI DIGIT FIVE
-    0x0e56: 0xf6,      #  THAI DIGIT SIX
-    0x0e57: 0xf7,      #  THAI DIGIT SEVEN
-    0x0e58: 0xf8,      #  THAI DIGIT EIGHT
-    0x0e59: 0xf9,      #  THAI DIGIT NINE
-    0x0e5a: 0xfa,      #  THAI CHARACTER ANGKHANKHU
-    0x0e5b: 0xfb,      #  THAI CHARACTER KHOMUT
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x0E01: 0xA1,      #  THAI CHARACTER KO KAI
+    0x0E02: 0xA2,      #  THAI CHARACTER KHO KHAI
+    0x0E03: 0xA3,      #  THAI CHARACTER KHO KHUAT
+    0x0E04: 0xA4,      #  THAI CHARACTER KHO KHWAI
+    0x0E05: 0xA5,      #  THAI CHARACTER KHO KHON
+    0x0E06: 0xA6,      #  THAI CHARACTER KHO RAKHANG
+    0x0E07: 0xA7,      #  THAI CHARACTER NGO NGU
+    0x0E08: 0xA8,      #  THAI CHARACTER CHO CHAN
+    0x0E09: 0xA9,      #  THAI CHARACTER CHO CHING
+    0x0E0A: 0xAA,      #  THAI CHARACTER CHO CHANG
+    0x0E0B: 0xAB,      #  THAI CHARACTER SO SO
+    0x0E0C: 0xAC,      #  THAI CHARACTER CHO CHOE
+    0x0E0D: 0xAD,      #  THAI CHARACTER YO YING
+    0x0E0E: 0xAE,      #  THAI CHARACTER DO CHADA
+    0x0E0F: 0xAF,      #  THAI CHARACTER TO PATAK
+    0x0E10: 0xB0,      #  THAI CHARACTER THO THAN
+    0x0E11: 0xB1,      #  THAI CHARACTER THO NANGMONTHO
+    0x0E12: 0xB2,      #  THAI CHARACTER THO PHUTHAO
+    0x0E13: 0xB3,      #  THAI CHARACTER NO NEN
+    0x0E14: 0xB4,      #  THAI CHARACTER DO DEK
+    0x0E15: 0xB5,      #  THAI CHARACTER TO TAO
+    0x0E16: 0xB6,      #  THAI CHARACTER THO THUNG
+    0x0E17: 0xB7,      #  THAI CHARACTER THO THAHAN
+    0x0E18: 0xB8,      #  THAI CHARACTER THO THONG
+    0x0E19: 0xB9,      #  THAI CHARACTER NO NU
+    0x0E1A: 0xBA,      #  THAI CHARACTER BO BAIMAI
+    0x0E1B: 0xBB,      #  THAI CHARACTER PO PLA
+    0x0E1C: 0xBC,      #  THAI CHARACTER PHO PHUNG
+    0x0E1D: 0xBD,      #  THAI CHARACTER FO FA
+    0x0E1E: 0xBE,      #  THAI CHARACTER PHO PHAN
+    0x0E1F: 0xBF,      #  THAI CHARACTER FO FAN
+    0x0E20: 0xC0,      #  THAI CHARACTER PHO SAMPHAO
+    0x0E21: 0xC1,      #  THAI CHARACTER MO MA
+    0x0E22: 0xC2,      #  THAI CHARACTER YO YAK
+    0x0E23: 0xC3,      #  THAI CHARACTER RO RUA
+    0x0E24: 0xC4,      #  THAI CHARACTER RU
+    0x0E25: 0xC5,      #  THAI CHARACTER LO LING
+    0x0E26: 0xC6,      #  THAI CHARACTER LU
+    0x0E27: 0xC7,      #  THAI CHARACTER WO WAEN
+    0x0E28: 0xC8,      #  THAI CHARACTER SO SALA
+    0x0E29: 0xC9,      #  THAI CHARACTER SO RUSI
+    0x0E2A: 0xCA,      #  THAI CHARACTER SO SUA
+    0x0E2B: 0xCB,      #  THAI CHARACTER HO HIP
+    0x0E2C: 0xCC,      #  THAI CHARACTER LO CHULA
+    0x0E2D: 0xCD,      #  THAI CHARACTER O ANG
+    0x0E2E: 0xCE,      #  THAI CHARACTER HO NOKHUK
+    0x0E2F: 0xCF,      #  THAI CHARACTER PAIYANNOI
+    0x0E30: 0xD0,      #  THAI CHARACTER SARA A
+    0x0E31: 0xD1,      #  THAI CHARACTER MAI HAN-AKAT
+    0x0E32: 0xD2,      #  THAI CHARACTER SARA AA
+    0x0E33: 0xD3,      #  THAI CHARACTER SARA AM
+    0x0E34: 0xD4,      #  THAI CHARACTER SARA I
+    0x0E35: 0xD5,      #  THAI CHARACTER SARA II
+    0x0E36: 0xD6,      #  THAI CHARACTER SARA UE
+    0x0E37: 0xD7,      #  THAI CHARACTER SARA UEE
+    0x0E38: 0xD8,      #  THAI CHARACTER SARA U
+    0x0E39: 0xD9,      #  THAI CHARACTER SARA UU
+    0x0E3A: 0xDA,      #  THAI CHARACTER PHINTHU
+    0x0E3F: 0xDF,      #  THAI CURRENCY SYMBOL BAHT
+    0x0E40: 0xE0,      #  THAI CHARACTER SARA E
+    0x0E41: 0xE1,      #  THAI CHARACTER SARA AE
+    0x0E42: 0xE2,      #  THAI CHARACTER SARA O
+    0x0E43: 0xE3,      #  THAI CHARACTER SARA AI MAIMUAN
+    0x0E44: 0xE4,      #  THAI CHARACTER SARA AI MAIMALAI
+    0x0E45: 0xE5,      #  THAI CHARACTER LAKKHANGYAO
+    0x0E46: 0xE6,      #  THAI CHARACTER MAIYAMOK
+    0x0E47: 0xE7,      #  THAI CHARACTER MAITAIKHU
+    0x0E48: 0xE8,      #  THAI CHARACTER MAI EK
+    0x0E49: 0xE9,      #  THAI CHARACTER MAI THO
+    0x0E4A: 0xEA,      #  THAI CHARACTER MAI TRI
+    0x0E4B: 0xEB,      #  THAI CHARACTER MAI CHATTAWA
+    0x0E4C: 0xEC,      #  THAI CHARACTER THANTHAKHAT
+    0x0E4D: 0xED,      #  THAI CHARACTER NIKHAHIT
+    0x0E4E: 0xEE,      #  THAI CHARACTER YAMAKKAN
+    0x0E4F: 0xEF,      #  THAI CHARACTER FONGMAN
+    0x0E50: 0xF0,      #  THAI DIGIT ZERO
+    0x0E51: 0xF1,      #  THAI DIGIT ONE
+    0x0E52: 0xF2,      #  THAI DIGIT TWO
+    0x0E53: 0xF3,      #  THAI DIGIT THREE
+    0x0E54: 0xF4,      #  THAI DIGIT FOUR
+    0x0E55: 0xF5,      #  THAI DIGIT FIVE
+    0x0E56: 0xF6,      #  THAI DIGIT SIX
+    0x0E57: 0xF7,      #  THAI DIGIT SEVEN
+    0x0E58: 0xF8,      #  THAI DIGIT EIGHT
+    0x0E59: 0xF9,      #  THAI DIGIT NINE
+    0x0E5A: 0xFA,      #  THAI CHARACTER ANGKHANKHU
+    0x0E5B: 0xFB,      #  THAI CHARACTER KHOMUT
+}
+
index e48552bb64a23e139846ea3a9272aebb7202b8fa..099c9b82a17bc6c8319a6bf7dc6694b7ee32e10d 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u201d'  #  0xa1 -> RIGHT DOUBLE QUOTATION MARK
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\u201e'  #  0xa5 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xd8'    #  0xa8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u0156'  #  0xaa -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xc6'    #  0xaf -> LATIN CAPITAL LETTER AE
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\u201c'  #  0xb4 -> LEFT DOUBLE QUOTATION MARK
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xf8'    #  0xb8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\u0157'  #  0xba -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
-    u'\xe6'    #  0xbf -> LATIN SMALL LETTER AE
-    u'\u0104'  #  0xc0 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u012e'  #  0xc1 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u0100'  #  0xc2 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u0106'  #  0xc3 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\u0118'  #  0xc6 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0112'  #  0xc7 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u010c'  #  0xc8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0179'  #  0xca -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\u0116'  #  0xcb -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\u0122'  #  0xcc -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u0136'  #  0xcd -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u012a'  #  0xce -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u013b'  #  0xcf -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u0160'  #  0xd0 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0143'  #  0xd1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0145'  #  0xd2 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\u014c'  #  0xd4 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\u0172'  #  0xd8 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u0141'  #  0xd9 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u015a'  #  0xda -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u016a'  #  0xdb -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u017b'  #  0xdd -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017d'  #  0xde -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S (German)
-    u'\u0105'  #  0xe0 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u012f'  #  0xe1 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u0101'  #  0xe2 -> LATIN SMALL LETTER A WITH MACRON
-    u'\u0107'  #  0xe3 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\u0119'  #  0xe6 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u0113'  #  0xe7 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u010d'  #  0xe8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u017a'  #  0xea -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u0117'  #  0xeb -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\u0123'  #  0xec -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u0137'  #  0xed -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u012b'  #  0xee -> LATIN SMALL LETTER I WITH MACRON
-    u'\u013c'  #  0xef -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0161'  #  0xf0 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0144'  #  0xf1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0146'  #  0xf2 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u014d'  #  0xf4 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\u0173'  #  0xf8 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\u0142'  #  0xf9 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u015b'  #  0xfa -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u016b'  #  0xfb -> LATIN SMALL LETTER U WITH MACRON
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u017c'  #  0xfd -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u017e'  #  0xfe -> LATIN SMALL LETTER Z WITH CARON
-    u'\u2019'  #  0xff -> RIGHT SINGLE QUOTATION MARK
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u201d'  #  0xA1 -> RIGHT DOUBLE QUOTATION MARK
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\u201e'  #  0xA5 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xd8'    #  0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u0156'  #  0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xc6'    #  0xAF -> LATIN CAPITAL LETTER AE
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\u201c'  #  0xB4 -> LEFT DOUBLE QUOTATION MARK
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xf8'    #  0xB8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\u0157'  #  0xBA -> LATIN SMALL LETTER R WITH CEDILLA
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xe6'    #  0xBF -> LATIN SMALL LETTER AE
+    u'\u0104'  #  0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u012e'  #  0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u0100'  #  0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\u0106'  #  0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\u0118'  #  0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\u0112'  #  0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u010c'  #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0179'  #  0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\u0116'  #  0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\u0122'  #  0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u0136'  #  0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\u012a'  #  0xCE -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u013b'  #  0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\u0160'  #  0xD0 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u0143'  #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\u0145'  #  0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\u014c'  #  0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0172'  #  0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\u0141'  #  0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\u015a'  #  0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u016a'  #  0xDB -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u017b'  #  0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\u017d'  #  0xDE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S (German)
+    u'\u0105'  #  0xE0 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u012f'  #  0xE1 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u0101'  #  0xE2 -> LATIN SMALL LETTER A WITH MACRON
+    u'\u0107'  #  0xE3 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\u0119'  #  0xE6 -> LATIN SMALL LETTER E WITH OGONEK
+    u'\u0113'  #  0xE7 -> LATIN SMALL LETTER E WITH MACRON
+    u'\u010d'  #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u017a'  #  0xEA -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u0117'  #  0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\u0123'  #  0xEC -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u0137'  #  0xED -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\u012b'  #  0xEE -> LATIN SMALL LETTER I WITH MACRON
+    u'\u013c'  #  0xEF -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u0161'  #  0xF0 -> LATIN SMALL LETTER S WITH CARON
+    u'\u0144'  #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0146'  #  0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\u014d'  #  0xF4 -> LATIN SMALL LETTER O WITH MACRON
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\u0173'  #  0xF8 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\u0142'  #  0xF9 -> LATIN SMALL LETTER L WITH STROKE
+    u'\u015b'  #  0xFA -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u016b'  #  0xFB -> LATIN SMALL LETTER U WITH MACRON
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u017c'  #  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u017e'  #  0xFE -> LATIN SMALL LETTER Z WITH CARON
+    u'\u2019'  #  0xFF -> RIGHT SINGLE QUOTATION MARK
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xaf,      #  LATIN CAPITAL LETTER AE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d8: 0xa8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S (German)
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xbf,      #  LATIN SMALL LETTER AE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f8: 0xb8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0100: 0xc2,      #  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0xe2,      #  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0xc0,      #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xe0,      #  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xc3,      #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xe3,      #  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0xc8,      #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0xe8,      #  LATIN SMALL LETTER C WITH CARON
-    0x0112: 0xc7,      #  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0xe7,      #  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0xcb,      #  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0xeb,      #  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xc6,      #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xe6,      #  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0xcc,      #  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xec,      #  LATIN SMALL LETTER G WITH CEDILLA
-    0x012a: 0xce,      #  LATIN CAPITAL LETTER I WITH MACRON
-    0x012b: 0xee,      #  LATIN SMALL LETTER I WITH MACRON
-    0x012e: 0xc1,      #  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012f: 0xe1,      #  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xcd,      #  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xed,      #  LATIN SMALL LETTER K WITH CEDILLA
-    0x013b: 0xcf,      #  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013c: 0xef,      #  LATIN SMALL LETTER L WITH CEDILLA
-    0x0141: 0xd9,      #  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xf9,      #  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xd1,      #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xf1,      #  LATIN SMALL LETTER N WITH ACUTE
-    0x0145: 0xd2,      #  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xf2,      #  LATIN SMALL LETTER N WITH CEDILLA
-    0x014c: 0xd4,      #  LATIN CAPITAL LETTER O WITH MACRON
-    0x014d: 0xf4,      #  LATIN SMALL LETTER O WITH MACRON
-    0x0156: 0xaa,      #  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0xba,      #  LATIN SMALL LETTER R WITH CEDILLA
-    0x015a: 0xda,      #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0xfa,      #  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0xd0,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xf0,      #  LATIN SMALL LETTER S WITH CARON
-    0x016a: 0xdb,      #  LATIN CAPITAL LETTER U WITH MACRON
-    0x016b: 0xfb,      #  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0xd8,      #  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xf8,      #  LATIN SMALL LETTER U WITH OGONEK
-    0x0179: 0xca,      #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0xea,      #  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0xdd,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0xfd,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0xde,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0xfe,      #  LATIN SMALL LETTER Z WITH CARON
-    0x2019: 0xff,      #  RIGHT SINGLE QUOTATION MARK
-    0x201c: 0xb4,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0xa1,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0xa5,      #  DOUBLE LOW-9 QUOTATION MARK
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAF,      #  LATIN CAPITAL LETTER AE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D8: 0xA8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S (German)
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBF,      #  LATIN SMALL LETTER AE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F8: 0xB8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0100: 0xC2,      #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0xE2,      #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0xC0,      #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xE0,      #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC3,      #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE3,      #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,      #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,      #  LATIN SMALL LETTER C WITH CARON
+    0x0112: 0xC7,      #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0xE7,      #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0xCB,      #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0xEB,      #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0xC6,      #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xE6,      #  LATIN SMALL LETTER E WITH OGONEK
+    0x0122: 0xCC,      #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xEC,      #  LATIN SMALL LETTER G WITH CEDILLA
+    0x012A: 0xCE,      #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xEE,      #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xC1,      #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xE1,      #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xCD,      #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xED,      #  LATIN SMALL LETTER K WITH CEDILLA
+    0x013B: 0xCF,      #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xEF,      #  LATIN SMALL LETTER L WITH CEDILLA
+    0x0141: 0xD9,      #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xF9,      #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,      #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,      #  LATIN SMALL LETTER N WITH ACUTE
+    0x0145: 0xD2,      #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xF2,      #  LATIN SMALL LETTER N WITH CEDILLA
+    0x014C: 0xD4,      #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xF4,      #  LATIN SMALL LETTER O WITH MACRON
+    0x0156: 0xAA,      #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x0157: 0xBA,      #  LATIN SMALL LETTER R WITH CEDILLA
+    0x015A: 0xDA,      #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xFA,      #  LATIN SMALL LETTER S WITH ACUTE
+    0x0160: 0xD0,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xF0,      #  LATIN SMALL LETTER S WITH CARON
+    0x016A: 0xDB,      #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xFB,      #  LATIN SMALL LETTER U WITH MACRON
+    0x0172: 0xD8,      #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF8,      #  LATIN SMALL LETTER U WITH OGONEK
+    0x0179: 0xCA,      #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0xEA,      #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xDD,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xFD,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xDE,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xFE,      #  LATIN SMALL LETTER Z WITH CARON
+    0x2019: 0xFF,      #  RIGHT SINGLE QUOTATION MARK
+    0x201C: 0xB4,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xA1,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xA5,      #  DOUBLE LOW-9 QUOTATION MARK
+}
+
index 2622cce6a67d1839b41fb2d8de0db9e8721dccc2..6cc6636c2b3ca267d4c4455ce9494beb69406967 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u1e02'  #  0xa1 -> LATIN CAPITAL LETTER B WITH DOT ABOVE
-    u'\u1e03'  #  0xa2 -> LATIN SMALL LETTER B WITH DOT ABOVE
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\u010a'  #  0xa4 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
-    u'\u010b'  #  0xa5 -> LATIN SMALL LETTER C WITH DOT ABOVE
-    u'\u1e0a'  #  0xa6 -> LATIN CAPITAL LETTER D WITH DOT ABOVE
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\u1e80'  #  0xa8 -> LATIN CAPITAL LETTER W WITH GRAVE
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u1e82'  #  0xaa -> LATIN CAPITAL LETTER W WITH ACUTE
-    u'\u1e0b'  #  0xab -> LATIN SMALL LETTER D WITH DOT ABOVE
-    u'\u1ef2'  #  0xac -> LATIN CAPITAL LETTER Y WITH GRAVE
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\u0178'  #  0xaf -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u1e1e'  #  0xb0 -> LATIN CAPITAL LETTER F WITH DOT ABOVE
-    u'\u1e1f'  #  0xb1 -> LATIN SMALL LETTER F WITH DOT ABOVE
-    u'\u0120'  #  0xb2 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
-    u'\u0121'  #  0xb3 -> LATIN SMALL LETTER G WITH DOT ABOVE
-    u'\u1e40'  #  0xb4 -> LATIN CAPITAL LETTER M WITH DOT ABOVE
-    u'\u1e41'  #  0xb5 -> LATIN SMALL LETTER M WITH DOT ABOVE
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\u1e56'  #  0xb7 -> LATIN CAPITAL LETTER P WITH DOT ABOVE
-    u'\u1e81'  #  0xb8 -> LATIN SMALL LETTER W WITH GRAVE
-    u'\u1e57'  #  0xb9 -> LATIN SMALL LETTER P WITH DOT ABOVE
-    u'\u1e83'  #  0xba -> LATIN SMALL LETTER W WITH ACUTE
-    u'\u1e60'  #  0xbb -> LATIN CAPITAL LETTER S WITH DOT ABOVE
-    u'\u1ef3'  #  0xbc -> LATIN SMALL LETTER Y WITH GRAVE
-    u'\u1e84'  #  0xbd -> LATIN CAPITAL LETTER W WITH DIAERESIS
-    u'\u1e85'  #  0xbe -> LATIN SMALL LETTER W WITH DIAERESIS
-    u'\u1e61'  #  0xbf -> LATIN SMALL LETTER S WITH DOT ABOVE
-    u'\xc0'    #  0xc0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'    #  0xc3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'    #  0xc8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'    #  0xca -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'    #  0xcc -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u0174'  #  0xd0 -> LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-    u'\xd1'    #  0xd1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'    #  0xd2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u1e6a'  #  0xd7 -> LATIN CAPITAL LETTER T WITH DOT ABOVE
-    u'\xd8'    #  0xd8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'    #  0xd9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'    #  0xdd -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0176'  #  0xde -> LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'    #  0xe3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'    #  0xec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u0175'  #  0xf0 -> LATIN SMALL LETTER W WITH CIRCUMFLEX
-    u'\xf1'    #  0xf1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'    #  0xf2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u1e6b'  #  0xf7 -> LATIN SMALL LETTER T WITH DOT ABOVE
-    u'\xf8'    #  0xf8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'    #  0xfd -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0177'  #  0xfe -> LATIN SMALL LETTER Y WITH CIRCUMFLEX
-    u'\xff'    #  0xff -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u1e02'  #  0xA1 -> LATIN CAPITAL LETTER B WITH DOT ABOVE
+    u'\u1e03'  #  0xA2 -> LATIN SMALL LETTER B WITH DOT ABOVE
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\u010a'  #  0xA4 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
+    u'\u010b'  #  0xA5 -> LATIN SMALL LETTER C WITH DOT ABOVE
+    u'\u1e0a'  #  0xA6 -> LATIN CAPITAL LETTER D WITH DOT ABOVE
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\u1e80'  #  0xA8 -> LATIN CAPITAL LETTER W WITH GRAVE
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u1e82'  #  0xAA -> LATIN CAPITAL LETTER W WITH ACUTE
+    u'\u1e0b'  #  0xAB -> LATIN SMALL LETTER D WITH DOT ABOVE
+    u'\u1ef2'  #  0xAC -> LATIN CAPITAL LETTER Y WITH GRAVE
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\u0178'  #  0xAF -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u1e1e'  #  0xB0 -> LATIN CAPITAL LETTER F WITH DOT ABOVE
+    u'\u1e1f'  #  0xB1 -> LATIN SMALL LETTER F WITH DOT ABOVE
+    u'\u0120'  #  0xB2 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
+    u'\u0121'  #  0xB3 -> LATIN SMALL LETTER G WITH DOT ABOVE
+    u'\u1e40'  #  0xB4 -> LATIN CAPITAL LETTER M WITH DOT ABOVE
+    u'\u1e41'  #  0xB5 -> LATIN SMALL LETTER M WITH DOT ABOVE
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\u1e56'  #  0xB7 -> LATIN CAPITAL LETTER P WITH DOT ABOVE
+    u'\u1e81'  #  0xB8 -> LATIN SMALL LETTER W WITH GRAVE
+    u'\u1e57'  #  0xB9 -> LATIN SMALL LETTER P WITH DOT ABOVE
+    u'\u1e83'  #  0xBA -> LATIN SMALL LETTER W WITH ACUTE
+    u'\u1e60'  #  0xBB -> LATIN CAPITAL LETTER S WITH DOT ABOVE
+    u'\u1ef3'  #  0xBC -> LATIN SMALL LETTER Y WITH GRAVE
+    u'\u1e84'  #  0xBD -> LATIN CAPITAL LETTER W WITH DIAERESIS
+    u'\u1e85'  #  0xBE -> LATIN SMALL LETTER W WITH DIAERESIS
+    u'\u1e61'  #  0xBF -> LATIN SMALL LETTER S WITH DOT ABOVE
+    u'\xc0'    #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'    #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'    #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'    #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'    #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u0174'  #  0xD0 -> LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+    u'\xd1'    #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'    #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\u1e6a'  #  0xD7 -> LATIN CAPITAL LETTER T WITH DOT ABOVE
+    u'\xd8'    #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'    #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'    #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\u0176'  #  0xDE -> LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'    #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'    #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u0175'  #  0xF0 -> LATIN SMALL LETTER W WITH CIRCUMFLEX
+    u'\xf1'    #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'    #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\u1e6b'  #  0xF7 -> LATIN SMALL LETTER T WITH DOT ABOVE
+    u'\xf8'    #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'    #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\u0177'  #  0xFE -> LATIN SMALL LETTER Y WITH CIRCUMFLEX
+    u'\xff'    #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00c0: 0xc0,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xc3,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xc8,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xca,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xcc,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0xd1,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xd2,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0xd8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xd9,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xdd,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0xe3,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0xec,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0xf1,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xf2,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f8: 0xf8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0xfd,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00ff: 0xff,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x010a: 0xa4,      #  LATIN CAPITAL LETTER C WITH DOT ABOVE
-    0x010b: 0xa5,      #  LATIN SMALL LETTER C WITH DOT ABOVE
-    0x0120: 0xb2,      #  LATIN CAPITAL LETTER G WITH DOT ABOVE
-    0x0121: 0xb3,      #  LATIN SMALL LETTER G WITH DOT ABOVE
-    0x0174: 0xd0,      #  LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-    0x0175: 0xf0,      #  LATIN SMALL LETTER W WITH CIRCUMFLEX
-    0x0176: 0xde,      #  LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-    0x0177: 0xfe,      #  LATIN SMALL LETTER Y WITH CIRCUMFLEX
-    0x0178: 0xaf,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x1e02: 0xa1,      #  LATIN CAPITAL LETTER B WITH DOT ABOVE
-    0x1e03: 0xa2,      #  LATIN SMALL LETTER B WITH DOT ABOVE
-    0x1e0a: 0xa6,      #  LATIN CAPITAL LETTER D WITH DOT ABOVE
-    0x1e0b: 0xab,      #  LATIN SMALL LETTER D WITH DOT ABOVE
-    0x1e1e: 0xb0,      #  LATIN CAPITAL LETTER F WITH DOT ABOVE
-    0x1e1f: 0xb1,      #  LATIN SMALL LETTER F WITH DOT ABOVE
-    0x1e40: 0xb4,      #  LATIN CAPITAL LETTER M WITH DOT ABOVE
-    0x1e41: 0xb5,      #  LATIN SMALL LETTER M WITH DOT ABOVE
-    0x1e56: 0xb7,      #  LATIN CAPITAL LETTER P WITH DOT ABOVE
-    0x1e57: 0xb9,      #  LATIN SMALL LETTER P WITH DOT ABOVE
-    0x1e60: 0xbb,      #  LATIN CAPITAL LETTER S WITH DOT ABOVE
-    0x1e61: 0xbf,      #  LATIN SMALL LETTER S WITH DOT ABOVE
-    0x1e6a: 0xd7,      #  LATIN CAPITAL LETTER T WITH DOT ABOVE
-    0x1e6b: 0xf7,      #  LATIN SMALL LETTER T WITH DOT ABOVE
-    0x1e80: 0xa8,      #  LATIN CAPITAL LETTER W WITH GRAVE
-    0x1e81: 0xb8,      #  LATIN SMALL LETTER W WITH GRAVE
-    0x1e82: 0xaa,      #  LATIN CAPITAL LETTER W WITH ACUTE
-    0x1e83: 0xba,      #  LATIN SMALL LETTER W WITH ACUTE
-    0x1e84: 0xbd,      #  LATIN CAPITAL LETTER W WITH DIAERESIS
-    0x1e85: 0xbe,      #  LATIN SMALL LETTER W WITH DIAERESIS
-    0x1ef2: 0xac,      #  LATIN CAPITAL LETTER Y WITH GRAVE
-    0x1ef3: 0xbc,      #  LATIN SMALL LETTER Y WITH GRAVE
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00C0: 0xC0,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xD8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F8: 0xF8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FF: 0xFF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x010A: 0xA4,      #  LATIN CAPITAL LETTER C WITH DOT ABOVE
+    0x010B: 0xA5,      #  LATIN SMALL LETTER C WITH DOT ABOVE
+    0x0120: 0xB2,      #  LATIN CAPITAL LETTER G WITH DOT ABOVE
+    0x0121: 0xB3,      #  LATIN SMALL LETTER G WITH DOT ABOVE
+    0x0174: 0xD0,      #  LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+    0x0175: 0xF0,      #  LATIN SMALL LETTER W WITH CIRCUMFLEX
+    0x0176: 0xDE,      #  LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+    0x0177: 0xFE,      #  LATIN SMALL LETTER Y WITH CIRCUMFLEX
+    0x0178: 0xAF,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x1E02: 0xA1,      #  LATIN CAPITAL LETTER B WITH DOT ABOVE
+    0x1E03: 0xA2,      #  LATIN SMALL LETTER B WITH DOT ABOVE
+    0x1E0A: 0xA6,      #  LATIN CAPITAL LETTER D WITH DOT ABOVE
+    0x1E0B: 0xAB,      #  LATIN SMALL LETTER D WITH DOT ABOVE
+    0x1E1E: 0xB0,      #  LATIN CAPITAL LETTER F WITH DOT ABOVE
+    0x1E1F: 0xB1,      #  LATIN SMALL LETTER F WITH DOT ABOVE
+    0x1E40: 0xB4,      #  LATIN CAPITAL LETTER M WITH DOT ABOVE
+    0x1E41: 0xB5,      #  LATIN SMALL LETTER M WITH DOT ABOVE
+    0x1E56: 0xB7,      #  LATIN CAPITAL LETTER P WITH DOT ABOVE
+    0x1E57: 0xB9,      #  LATIN SMALL LETTER P WITH DOT ABOVE
+    0x1E60: 0xBB,      #  LATIN CAPITAL LETTER S WITH DOT ABOVE
+    0x1E61: 0xBF,      #  LATIN SMALL LETTER S WITH DOT ABOVE
+    0x1E6A: 0xD7,      #  LATIN CAPITAL LETTER T WITH DOT ABOVE
+    0x1E6B: 0xF7,      #  LATIN SMALL LETTER T WITH DOT ABOVE
+    0x1E80: 0xA8,      #  LATIN CAPITAL LETTER W WITH GRAVE
+    0x1E81: 0xB8,      #  LATIN SMALL LETTER W WITH GRAVE
+    0x1E82: 0xAA,      #  LATIN CAPITAL LETTER W WITH ACUTE
+    0x1E83: 0xBA,      #  LATIN SMALL LETTER W WITH ACUTE
+    0x1E84: 0xBD,      #  LATIN CAPITAL LETTER W WITH DIAERESIS
+    0x1E85: 0xBE,      #  LATIN SMALL LETTER W WITH DIAERESIS
+    0x1EF2: 0xAC,      #  LATIN CAPITAL LETTER Y WITH GRAVE
+    0x1EF3: 0xBC,      #  LATIN SMALL LETTER Y WITH GRAVE
+}
+
index b1f4e675829477397c97b66930184ea6f6a28568..204954b98570cb45152f274e8a7696aaf015fa7d 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\xa1'    #  0xa1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\u20ac'  #  0xa4 -> EURO SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\u0160'  #  0xa6 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\u0161'  #  0xa8 -> LATIN SMALL LETTER S WITH CARON
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\xaa'    #  0xaa -> FEMININE ORDINAL INDICATOR
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\u017d'  #  0xb4 -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\u017e'  #  0xb8 -> LATIN SMALL LETTER Z WITH CARON
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\xba'    #  0xba -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0152'  #  0xbc -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'  #  0xbd -> LATIN SMALL LIGATURE OE
-    u'\u0178'  #  0xbe -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xbf'    #  0xbf -> INVERTED QUESTION MARK
-    u'\xc0'    #  0xc0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'    #  0xc3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'    #  0xc8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'    #  0xca -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'    #  0xcc -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'    #  0xd0 -> LATIN CAPITAL LETTER ETH
-    u'\xd1'    #  0xd1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'    #  0xd2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\xd8'    #  0xd8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'    #  0xd9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'    #  0xdd -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'    #  0xde -> LATIN CAPITAL LETTER THORN
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'    #  0xe3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'    #  0xec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'    #  0xf0 -> LATIN SMALL LETTER ETH
-    u'\xf1'    #  0xf1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'    #  0xf2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\xf8'    #  0xf8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'    #  0xfd -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'    #  0xfe -> LATIN SMALL LETTER THORN
-    u'\xff'    #  0xff -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'    #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\u20ac'  #  0xA4 -> EURO SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\u0160'  #  0xA6 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\u0161'  #  0xA8 -> LATIN SMALL LETTER S WITH CARON
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'    #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\u017d'  #  0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\u017e'  #  0xB8 -> LATIN SMALL LETTER Z WITH CARON
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'    #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u0152'  #  0xBC -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'  #  0xBD -> LATIN SMALL LIGATURE OE
+    u'\u0178'  #  0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\xbf'    #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'    #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'    #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'    #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'    #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'    #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xd0'    #  0xD0 -> LATIN CAPITAL LETTER ETH
+    u'\xd1'    #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'    #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'    #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'    #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'    #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'    #  0xDE -> LATIN CAPITAL LETTER THORN
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'    #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'    #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf0'    #  0xF0 -> LATIN SMALL LETTER ETH
+    u'\xf1'    #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'    #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\xf8'    #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'    #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'    #  0xFE -> LATIN SMALL LETTER THORN
+    u'\xff'    #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a1: 0xa1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xaa,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00ba: 0xba,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bf: 0xbf,      #  INVERTED QUESTION MARK
-    0x00c0: 0xc0,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xc3,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xc8,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xca,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xcc,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0xd0,      #  LATIN CAPITAL LETTER ETH
-    0x00d1: 0xd1,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xd2,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d8: 0xd8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xd9,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xdd,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0xde,      #  LATIN CAPITAL LETTER THORN
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0xe3,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0xec,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0xf0,      #  LATIN SMALL LETTER ETH
-    0x00f1: 0xf1,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xf2,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f8: 0xf8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0xfd,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0xfe,      #  LATIN SMALL LETTER THORN
-    0x00ff: 0xff,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0152: 0xbc,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xbd,      #  LATIN SMALL LIGATURE OE
-    0x0160: 0xa6,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xa8,      #  LATIN SMALL LETTER S WITH CARON
-    0x0178: 0xbe,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x017d: 0xb4,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0xb8,      #  LATIN SMALL LETTER Z WITH CARON
-    0x20ac: 0xa4,      #  EURO SIGN
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A1: 0xA1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xAA,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xBF,      #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xD0,      #  LATIN CAPITAL LETTER ETH
+    0x00D1: 0xD1,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,      #  LATIN CAPITAL LETTER THORN
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xF0,      #  LATIN SMALL LETTER ETH
+    0x00F1: 0xF1,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F8: 0xF8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xFE,      #  LATIN SMALL LETTER THORN
+    0x00FF: 0xFF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0152: 0xBC,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xBD,      #  LATIN SMALL LIGATURE OE
+    0x0160: 0xA6,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xA8,      #  LATIN SMALL LETTER S WITH CARON
+    0x0178: 0xBE,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x017D: 0xB4,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xB8,      #  LATIN SMALL LETTER Z WITH CARON
+    0x20AC: 0xA4,      #  EURO SIGN
+}
+
index 38f649d9d14b2c9bce4e8afc3d98bc5c1c0467dd..756665bb10ceca379e4d1f250f269261b71a6d8a 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u0104'  #  0xa1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0105'  #  0xa2 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u0141'  #  0xa3 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u20ac'  #  0xa4 -> EURO SIGN
-    u'\u201e'  #  0xa5 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u0160'  #  0xa6 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\u0161'  #  0xa8 -> LATIN SMALL LETTER S WITH CARON
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u0218'  #  0xaa -> LATIN CAPITAL LETTER S WITH COMMA BELOW
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0179'  #  0xac -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\u017a'  #  0xae -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u017b'  #  0xaf -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u010c'  #  0xb2 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u0142'  #  0xb3 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u017d'  #  0xb4 -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u201d'  #  0xb5 -> RIGHT DOUBLE QUOTATION MARK
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\u017e'  #  0xb8 -> LATIN SMALL LETTER Z WITH CARON
-    u'\u010d'  #  0xb9 -> LATIN SMALL LETTER C WITH CARON
-    u'\u0219'  #  0xba -> LATIN SMALL LETTER S WITH COMMA BELOW
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0152'  #  0xbc -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'  #  0xbd -> LATIN SMALL LIGATURE OE
-    u'\u0178'  #  0xbe -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u017c'  #  0xbf -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\xc0'    #  0xc0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'  #  0xc3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0106'  #  0xc5 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'    #  0xc8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'    #  0xca -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'    #  0xcc -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u0110'  #  0xd0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0143'  #  0xd1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\xd2'    #  0xd2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0150'  #  0xd5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u015a'  #  0xd7 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u0170'  #  0xd8 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xd9'    #  0xd9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0118'  #  0xdd -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u021a'  #  0xde -> LATIN CAPITAL LETTER T WITH COMMA BELOW
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'  #  0xe3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u0107'  #  0xe5 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'    #  0xec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u0111'  #  0xf0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0144'  #  0xf1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\xf2'    #  0xf2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0151'  #  0xf5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u015b'  #  0xf7 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u0171'  #  0xf8 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0119'  #  0xfd -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u021b'  #  0xfe -> LATIN SMALL LETTER T WITH COMMA BELOW
-    u'\xff'    #  0xff -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u0104'  #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u0105'  #  0xA2 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u0141'  #  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\u20ac'  #  0xA4 -> EURO SIGN
+    u'\u201e'  #  0xA5 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u0160'  #  0xA6 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\u0161'  #  0xA8 -> LATIN SMALL LETTER S WITH CARON
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u0218'  #  0xAA -> LATIN CAPITAL LETTER S WITH COMMA BELOW
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u0179'  #  0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\u017a'  #  0xAE -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u017b'  #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u010c'  #  0xB2 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\u0142'  #  0xB3 -> LATIN SMALL LETTER L WITH STROKE
+    u'\u017d'  #  0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u201d'  #  0xB5 -> RIGHT DOUBLE QUOTATION MARK
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\u017e'  #  0xB8 -> LATIN SMALL LETTER Z WITH CARON
+    u'\u010d'  #  0xB9 -> LATIN SMALL LETTER C WITH CARON
+    u'\u0219'  #  0xBA -> LATIN SMALL LETTER S WITH COMMA BELOW
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u0152'  #  0xBC -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'  #  0xBD -> LATIN SMALL LIGATURE OE
+    u'\u0178'  #  0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u017c'  #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\xc0'    #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0102'  #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u0106'  #  0xC5 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'    #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'    #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'    #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u0110'  #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0143'  #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\xd2'    #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0150'  #  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\u015a'  #  0xD7 -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u0170'  #  0xD8 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    u'\xd9'    #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0118'  #  0xDD -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\u021a'  #  0xDE -> LATIN CAPITAL LETTER T WITH COMMA BELOW
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0103'  #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u0107'  #  0xE5 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'    #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u0111'  #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0144'  #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\xf2'    #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u0151'  #  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\u015b'  #  0xF7 -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u0171'  #  0xF8 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u0119'  #  0xFD -> LATIN SMALL LETTER E WITH OGONEK
+    u'\u021b'  #  0xFE -> LATIN SMALL LETTER T WITH COMMA BELOW
+    u'\xff'    #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00c0: 0xc0,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xc8,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xca,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xcc,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d2: 0xd2,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d9: 0xd9,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0xec,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f2: 0xf2,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0xff,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0102: 0xc3,      #  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xe3,      #  LATIN SMALL LETTER A WITH BREVE
-    0x0104: 0xa1,      #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xa2,      #  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xc5,      #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xe5,      #  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0xb2,      #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0xb9,      #  LATIN SMALL LETTER C WITH CARON
-    0x0110: 0xd0,      #  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xf0,      #  LATIN SMALL LETTER D WITH STROKE
-    0x0118: 0xdd,      #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xfd,      #  LATIN SMALL LETTER E WITH OGONEK
-    0x0141: 0xa3,      #  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xb3,      #  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xd1,      #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xf1,      #  LATIN SMALL LETTER N WITH ACUTE
-    0x0150: 0xd5,      #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0xf5,      #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0152: 0xbc,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xbd,      #  LATIN SMALL LIGATURE OE
-    0x015a: 0xd7,      #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0xf7,      #  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0xa6,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xa8,      #  LATIN SMALL LETTER S WITH CARON
-    0x0170: 0xd8,      #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0xf8,      #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0178: 0xbe,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0179: 0xac,      #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0xae,      #  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0xaf,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0xbf,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0xb4,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0xb8,      #  LATIN SMALL LETTER Z WITH CARON
-    0x0218: 0xaa,      #  LATIN CAPITAL LETTER S WITH COMMA BELOW
-    0x0219: 0xba,      #  LATIN SMALL LETTER S WITH COMMA BELOW
-    0x021a: 0xde,      #  LATIN CAPITAL LETTER T WITH COMMA BELOW
-    0x021b: 0xfe,      #  LATIN SMALL LETTER T WITH COMMA BELOW
-    0x201d: 0xb5,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0xa5,      #  DOUBLE LOW-9 QUOTATION MARK
-    0x20ac: 0xa4,      #  EURO SIGN
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00C0: 0xC0,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D2: 0xD2,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D9: 0xD9,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F2: 0xF2,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xFF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0102: 0xC3,      #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xE3,      #  LATIN SMALL LETTER A WITH BREVE
+    0x0104: 0xA1,      #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xA2,      #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC5,      #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE5,      #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xB2,      #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xB9,      #  LATIN SMALL LETTER C WITH CARON
+    0x0110: 0xD0,      #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,      #  LATIN SMALL LETTER D WITH STROKE
+    0x0118: 0xDD,      #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xFD,      #  LATIN SMALL LETTER E WITH OGONEK
+    0x0141: 0xA3,      #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xB3,      #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,      #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,      #  LATIN SMALL LETTER N WITH ACUTE
+    0x0150: 0xD5,      #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x0151: 0xF5,      #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x0152: 0xBC,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xBD,      #  LATIN SMALL LIGATURE OE
+    0x015A: 0xD7,      #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xF7,      #  LATIN SMALL LETTER S WITH ACUTE
+    0x0160: 0xA6,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xA8,      #  LATIN SMALL LETTER S WITH CARON
+    0x0170: 0xD8,      #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x0171: 0xF8,      #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x0178: 0xBE,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0179: 0xAC,      #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0xAE,      #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xAF,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xBF,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xB4,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xB8,      #  LATIN SMALL LETTER Z WITH CARON
+    0x0218: 0xAA,      #  LATIN CAPITAL LETTER S WITH COMMA BELOW
+    0x0219: 0xBA,      #  LATIN SMALL LETTER S WITH COMMA BELOW
+    0x021A: 0xDE,      #  LATIN CAPITAL LETTER T WITH COMMA BELOW
+    0x021B: 0xFE,      #  LATIN SMALL LETTER T WITH COMMA BELOW
+    0x201D: 0xB5,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xA5,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x20AC: 0xA4,      #  EURO SIGN
+}
+
index a985306b879792fcf8fc37d3c34a9006fb52901d..f4eef98696aefdfbb90bf9604b5ae3ce0ab4211b 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u0104'  #  0xa1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u02d8'  #  0xa2 -> BREVE
-    u'\u0141'  #  0xa3 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\u013d'  #  0xa5 -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u015a'  #  0xa6 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\u0160'  #  0xa9 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u015e'  #  0xaa -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u0164'  #  0xab -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u0179'  #  0xac -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\u017d'  #  0xae -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u017b'  #  0xaf -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\u0105'  #  0xb1 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u02db'  #  0xb2 -> OGONEK
-    u'\u0142'  #  0xb3 -> LATIN SMALL LETTER L WITH STROKE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\u013e'  #  0xb5 -> LATIN SMALL LETTER L WITH CARON
-    u'\u015b'  #  0xb6 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u02c7'  #  0xb7 -> CARON
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\u0161'  #  0xb9 -> LATIN SMALL LETTER S WITH CARON
-    u'\u015f'  #  0xba -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\u0165'  #  0xbb -> LATIN SMALL LETTER T WITH CARON
-    u'\u017a'  #  0xbc -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u02dd'  #  0xbd -> DOUBLE ACUTE ACCENT
-    u'\u017e'  #  0xbe -> LATIN SMALL LETTER Z WITH CARON
-    u'\u017c'  #  0xbf -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u0154'  #  0xc0 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'  #  0xc3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0139'  #  0xc5 -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u0106'  #  0xc6 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\u010c'  #  0xc8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'  #  0xca -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u011a'  #  0xcc -> LATIN CAPITAL LETTER E WITH CARON
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u010e'  #  0xcf -> LATIN CAPITAL LETTER D WITH CARON
-    u'\u0110'  #  0xd0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0143'  #  0xd1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0147'  #  0xd2 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0150'  #  0xd5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\u0158'  #  0xd8 -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u016e'  #  0xd9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u0170'  #  0xdb -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'    #  0xdd -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0162'  #  0xde -> LATIN CAPITAL LETTER T WITH CEDILLA
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\u0155'  #  0xe0 -> LATIN SMALL LETTER R WITH ACUTE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'  #  0xe3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u013a'  #  0xe5 -> LATIN SMALL LETTER L WITH ACUTE
-    u'\u0107'  #  0xe6 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\u010d'  #  0xe8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'  #  0xea -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u011b'  #  0xec -> LATIN SMALL LETTER E WITH CARON
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u010f'  #  0xef -> LATIN SMALL LETTER D WITH CARON
-    u'\u0111'  #  0xf0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0144'  #  0xf1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0148'  #  0xf2 -> LATIN SMALL LETTER N WITH CARON
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0151'  #  0xf5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\u0159'  #  0xf8 -> LATIN SMALL LETTER R WITH CARON
-    u'\u016f'  #  0xf9 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u0171'  #  0xfb -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'    #  0xfd -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0163'  #  0xfe -> LATIN SMALL LETTER T WITH CEDILLA
-    u'\u02d9'  #  0xff -> DOT ABOVE
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u0104'  #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u02d8'  #  0xA2 -> BREVE
+    u'\u0141'  #  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\u013d'  #  0xA5 -> LATIN CAPITAL LETTER L WITH CARON
+    u'\u015a'  #  0xA6 -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\u0160'  #  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u015e'  #  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\u0164'  #  0xAB -> LATIN CAPITAL LETTER T WITH CARON
+    u'\u0179'  #  0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\u017d'  #  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u017b'  #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\u0105'  #  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u02db'  #  0xB2 -> OGONEK
+    u'\u0142'  #  0xB3 -> LATIN SMALL LETTER L WITH STROKE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\u013e'  #  0xB5 -> LATIN SMALL LETTER L WITH CARON
+    u'\u015b'  #  0xB6 -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u02c7'  #  0xB7 -> CARON
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\u0161'  #  0xB9 -> LATIN SMALL LETTER S WITH CARON
+    u'\u015f'  #  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\u0165'  #  0xBB -> LATIN SMALL LETTER T WITH CARON
+    u'\u017a'  #  0xBC -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u02dd'  #  0xBD -> DOUBLE ACUTE ACCENT
+    u'\u017e'  #  0xBE -> LATIN SMALL LETTER Z WITH CARON
+    u'\u017c'  #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u0154'  #  0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0102'  #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u0139'  #  0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
+    u'\u0106'  #  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\u010c'  #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0118'  #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u011a'  #  0xCC -> LATIN CAPITAL LETTER E WITH CARON
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\u010e'  #  0xCF -> LATIN CAPITAL LETTER D WITH CARON
+    u'\u0110'  #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0143'  #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\u0147'  #  0xD2 -> LATIN CAPITAL LETTER N WITH CARON
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0150'  #  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0158'  #  0xD8 -> LATIN CAPITAL LETTER R WITH CARON
+    u'\u016e'  #  0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\u0170'  #  0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'    #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\u0162'  #  0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\u0155'  #  0xE0 -> LATIN SMALL LETTER R WITH ACUTE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0103'  #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u013a'  #  0xE5 -> LATIN SMALL LETTER L WITH ACUTE
+    u'\u0107'  #  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\u010d'  #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0119'  #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u011b'  #  0xEC -> LATIN SMALL LETTER E WITH CARON
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\u010f'  #  0xEF -> LATIN SMALL LETTER D WITH CARON
+    u'\u0111'  #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0144'  #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0148'  #  0xF2 -> LATIN SMALL LETTER N WITH CARON
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u0151'  #  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\u0159'  #  0xF8 -> LATIN SMALL LETTER R WITH CARON
+    u'\u016f'  #  0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\u0171'  #  0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'    #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\u0163'  #  0xFE -> LATIN SMALL LETTER T WITH CEDILLA
+    u'\u02d9'  #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xdd,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0xfd,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x0102: 0xc3,      #  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xe3,      #  LATIN SMALL LETTER A WITH BREVE
-    0x0104: 0xa1,      #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xb1,      #  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xc6,      #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xe6,      #  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0xc8,      #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0xe8,      #  LATIN SMALL LETTER C WITH CARON
-    0x010e: 0xcf,      #  LATIN CAPITAL LETTER D WITH CARON
-    0x010f: 0xef,      #  LATIN SMALL LETTER D WITH CARON
-    0x0110: 0xd0,      #  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xf0,      #  LATIN SMALL LETTER D WITH STROKE
-    0x0118: 0xca,      #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xea,      #  LATIN SMALL LETTER E WITH OGONEK
-    0x011a: 0xcc,      #  LATIN CAPITAL LETTER E WITH CARON
-    0x011b: 0xec,      #  LATIN SMALL LETTER E WITH CARON
-    0x0139: 0xc5,      #  LATIN CAPITAL LETTER L WITH ACUTE
-    0x013a: 0xe5,      #  LATIN SMALL LETTER L WITH ACUTE
-    0x013d: 0xa5,      #  LATIN CAPITAL LETTER L WITH CARON
-    0x013e: 0xb5,      #  LATIN SMALL LETTER L WITH CARON
-    0x0141: 0xa3,      #  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xb3,      #  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xd1,      #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xf1,      #  LATIN SMALL LETTER N WITH ACUTE
-    0x0147: 0xd2,      #  LATIN CAPITAL LETTER N WITH CARON
-    0x0148: 0xf2,      #  LATIN SMALL LETTER N WITH CARON
-    0x0150: 0xd5,      #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0xf5,      #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0154: 0xc0,      #  LATIN CAPITAL LETTER R WITH ACUTE
-    0x0155: 0xe0,      #  LATIN SMALL LETTER R WITH ACUTE
-    0x0158: 0xd8,      #  LATIN CAPITAL LETTER R WITH CARON
-    0x0159: 0xf8,      #  LATIN SMALL LETTER R WITH CARON
-    0x015a: 0xa6,      #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0xb6,      #  LATIN SMALL LETTER S WITH ACUTE
-    0x015e: 0xaa,      #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0xba,      #  LATIN SMALL LETTER S WITH CEDILLA
-    0x0160: 0xa9,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xb9,      #  LATIN SMALL LETTER S WITH CARON
-    0x0162: 0xde,      #  LATIN CAPITAL LETTER T WITH CEDILLA
-    0x0163: 0xfe,      #  LATIN SMALL LETTER T WITH CEDILLA
-    0x0164: 0xab,      #  LATIN CAPITAL LETTER T WITH CARON
-    0x0165: 0xbb,      #  LATIN SMALL LETTER T WITH CARON
-    0x016e: 0xd9,      #  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x016f: 0xf9,      #  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0170: 0xdb,      #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0xfb,      #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0179: 0xac,      #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0xbc,      #  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0xaf,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0xbf,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0xae,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0xbe,      #  LATIN SMALL LETTER Z WITH CARON
-    0x02c7: 0xb7,      #  CARON
-    0x02d8: 0xa2,      #  BREVE
-    0x02d9: 0xff,      #  DOT ABOVE
-    0x02db: 0xb2,      #  OGONEK
-    0x02dd: 0xbd,      #  DOUBLE ACUTE ACCENT
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x0102: 0xC3,      #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xE3,      #  LATIN SMALL LETTER A WITH BREVE
+    0x0104: 0xA1,      #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xB1,      #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC6,      #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE6,      #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,      #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,      #  LATIN SMALL LETTER C WITH CARON
+    0x010E: 0xCF,      #  LATIN CAPITAL LETTER D WITH CARON
+    0x010F: 0xEF,      #  LATIN SMALL LETTER D WITH CARON
+    0x0110: 0xD0,      #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,      #  LATIN SMALL LETTER D WITH STROKE
+    0x0118: 0xCA,      #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xEA,      #  LATIN SMALL LETTER E WITH OGONEK
+    0x011A: 0xCC,      #  LATIN CAPITAL LETTER E WITH CARON
+    0x011B: 0xEC,      #  LATIN SMALL LETTER E WITH CARON
+    0x0139: 0xC5,      #  LATIN CAPITAL LETTER L WITH ACUTE
+    0x013A: 0xE5,      #  LATIN SMALL LETTER L WITH ACUTE
+    0x013D: 0xA5,      #  LATIN CAPITAL LETTER L WITH CARON
+    0x013E: 0xB5,      #  LATIN SMALL LETTER L WITH CARON
+    0x0141: 0xA3,      #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xB3,      #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,      #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,      #  LATIN SMALL LETTER N WITH ACUTE
+    0x0147: 0xD2,      #  LATIN CAPITAL LETTER N WITH CARON
+    0x0148: 0xF2,      #  LATIN SMALL LETTER N WITH CARON
+    0x0150: 0xD5,      #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x0151: 0xF5,      #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x0154: 0xC0,      #  LATIN CAPITAL LETTER R WITH ACUTE
+    0x0155: 0xE0,      #  LATIN SMALL LETTER R WITH ACUTE
+    0x0158: 0xD8,      #  LATIN CAPITAL LETTER R WITH CARON
+    0x0159: 0xF8,      #  LATIN SMALL LETTER R WITH CARON
+    0x015A: 0xA6,      #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xB6,      #  LATIN SMALL LETTER S WITH ACUTE
+    0x015E: 0xAA,      #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xBA,      #  LATIN SMALL LETTER S WITH CEDILLA
+    0x0160: 0xA9,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xB9,      #  LATIN SMALL LETTER S WITH CARON
+    0x0162: 0xDE,      #  LATIN CAPITAL LETTER T WITH CEDILLA
+    0x0163: 0xFE,      #  LATIN SMALL LETTER T WITH CEDILLA
+    0x0164: 0xAB,      #  LATIN CAPITAL LETTER T WITH CARON
+    0x0165: 0xBB,      #  LATIN SMALL LETTER T WITH CARON
+    0x016E: 0xD9,      #  LATIN CAPITAL LETTER U WITH RING ABOVE
+    0x016F: 0xF9,      #  LATIN SMALL LETTER U WITH RING ABOVE
+    0x0170: 0xDB,      #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x0171: 0xFB,      #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x0179: 0xAC,      #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0xBC,      #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xAF,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xBF,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xAE,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xBE,      #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0xB7,      #  CARON
+    0x02D8: 0xA2,      #  BREVE
+    0x02D9: 0xFF,      #  DOT ABOVE
+    0x02DB: 0xB2,      #  OGONEK
+    0x02DD: 0xBD,      #  DOUBLE ACUTE ACCENT
+}
+
index 6897122ddd6fa24f46138b1fec6c4698bdc35b32..167b76ad929727403d6e2eec47923a6fe01f924a 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u0126'  #  0xa1 -> LATIN CAPITAL LETTER H WITH STROKE
-    u'\u02d8'  #  0xa2 -> BREVE
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u0126'  #  0xA1 -> LATIN CAPITAL LETTER H WITH STROKE
+    u'\u02d8'  #  0xA2 -> BREVE
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
     u'\ufffe'
-    u'\u0124'  #  0xa6 -> LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\u0130'  #  0xa9 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u015e'  #  0xaa -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u011e'  #  0xab -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u0134'  #  0xac -> LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-    u'\xad'    #  0xad -> SOFT HYPHEN
+    u'\u0124'  #  0xA6 -> LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\u0130'  #  0xA9 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'\u015e'  #  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\u011e'  #  0xAB -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\u0134'  #  0xAC -> LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+    u'\xad'    #  0xAD -> SOFT HYPHEN
     u'\ufffe'
-    u'\u017b'  #  0xaf -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\u0127'  #  0xb1 -> LATIN SMALL LETTER H WITH STROKE
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\u0125'  #  0xb6 -> LATIN SMALL LETTER H WITH CIRCUMFLEX
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\u0131'  #  0xb9 -> LATIN SMALL LETTER DOTLESS I
-    u'\u015f'  #  0xba -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\u011f'  #  0xbb -> LATIN SMALL LETTER G WITH BREVE
-    u'\u0135'  #  0xbc -> LATIN SMALL LETTER J WITH CIRCUMFLEX
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
+    u'\u017b'  #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\u0127'  #  0xB1 -> LATIN SMALL LETTER H WITH STROKE
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\u0125'  #  0xB6 -> LATIN SMALL LETTER H WITH CIRCUMFLEX
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\u0131'  #  0xB9 -> LATIN SMALL LETTER DOTLESS I
+    u'\u015f'  #  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\u011f'  #  0xBB -> LATIN SMALL LETTER G WITH BREVE
+    u'\u0135'  #  0xBC -> LATIN SMALL LETTER J WITH CIRCUMFLEX
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
     u'\ufffe'
-    u'\u017c'  #  0xbf -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\xc0'    #  0xc0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u017c'  #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\xc0'    #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
     u'\ufffe'
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u010a'  #  0xc5 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
-    u'\u0108'  #  0xc6 -> LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'    #  0xc8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'    #  0xca -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'    #  0xcc -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u010a'  #  0xC5 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
+    u'\u0108'  #  0xC6 -> LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'    #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'    #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'    #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
     u'\ufffe'
-    u'\xd1'    #  0xd1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'    #  0xd2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0120'  #  0xd5 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\u011c'  #  0xd8 -> LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-    u'\xd9'    #  0xd9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u016c'  #  0xdd -> LATIN CAPITAL LETTER U WITH BREVE
-    u'\u015c'  #  0xde -> LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xd1'    #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'    #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0120'  #  0xD5 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\u011c'  #  0xD8 -> LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+    u'\xd9'    #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u016c'  #  0xDD -> LATIN CAPITAL LETTER U WITH BREVE
+    u'\u015c'  #  0xDE -> LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
     u'\ufffe'
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u010b'  #  0xe5 -> LATIN SMALL LETTER C WITH DOT ABOVE
-    u'\u0109'  #  0xe6 -> LATIN SMALL LETTER C WITH CIRCUMFLEX
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'    #  0xec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u010b'  #  0xE5 -> LATIN SMALL LETTER C WITH DOT ABOVE
+    u'\u0109'  #  0xE6 -> LATIN SMALL LETTER C WITH CIRCUMFLEX
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'    #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
     u'\ufffe'
-    u'\xf1'    #  0xf1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'    #  0xf2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0121'  #  0xf5 -> LATIN SMALL LETTER G WITH DOT ABOVE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\u011d'  #  0xf8 -> LATIN SMALL LETTER G WITH CIRCUMFLEX
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u016d'  #  0xfd -> LATIN SMALL LETTER U WITH BREVE
-    u'\u015d'  #  0xfe -> LATIN SMALL LETTER S WITH CIRCUMFLEX
-    u'\u02d9'  #  0xff -> DOT ABOVE
+    u'\xf1'    #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'    #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u0121'  #  0xF5 -> LATIN SMALL LETTER G WITH DOT ABOVE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\u011d'  #  0xF8 -> LATIN SMALL LETTER G WITH CIRCUMFLEX
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u016d'  #  0xFD -> LATIN SMALL LETTER U WITH BREVE
+    u'\u015d'  #  0xFE -> LATIN SMALL LETTER S WITH CIRCUMFLEX
+    u'\u02d9'  #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,99 +447,100 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00c0: 0xc0,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xc8,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xca,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xcc,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0xd1,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xd2,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d9: 0xd9,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0xec,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0xf1,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xf2,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0108: 0xc6,      #  LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-    0x0109: 0xe6,      #  LATIN SMALL LETTER C WITH CIRCUMFLEX
-    0x010a: 0xc5,      #  LATIN CAPITAL LETTER C WITH DOT ABOVE
-    0x010b: 0xe5,      #  LATIN SMALL LETTER C WITH DOT ABOVE
-    0x011c: 0xd8,      #  LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-    0x011d: 0xf8,      #  LATIN SMALL LETTER G WITH CIRCUMFLEX
-    0x011e: 0xab,      #  LATIN CAPITAL LETTER G WITH BREVE
-    0x011f: 0xbb,      #  LATIN SMALL LETTER G WITH BREVE
-    0x0120: 0xd5,      #  LATIN CAPITAL LETTER G WITH DOT ABOVE
-    0x0121: 0xf5,      #  LATIN SMALL LETTER G WITH DOT ABOVE
-    0x0124: 0xa6,      #  LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-    0x0125: 0xb6,      #  LATIN SMALL LETTER H WITH CIRCUMFLEX
-    0x0126: 0xa1,      #  LATIN CAPITAL LETTER H WITH STROKE
-    0x0127: 0xb1,      #  LATIN SMALL LETTER H WITH STROKE
-    0x0130: 0xa9,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0xb9,      #  LATIN SMALL LETTER DOTLESS I
-    0x0134: 0xac,      #  LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-    0x0135: 0xbc,      #  LATIN SMALL LETTER J WITH CIRCUMFLEX
-    0x015c: 0xde,      #  LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-    0x015d: 0xfe,      #  LATIN SMALL LETTER S WITH CIRCUMFLEX
-    0x015e: 0xaa,      #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0xba,      #  LATIN SMALL LETTER S WITH CEDILLA
-    0x016c: 0xdd,      #  LATIN CAPITAL LETTER U WITH BREVE
-    0x016d: 0xfd,      #  LATIN SMALL LETTER U WITH BREVE
-    0x017b: 0xaf,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0xbf,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x02d8: 0xa2,      #  BREVE
-    0x02d9: 0xff,      #  DOT ABOVE
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00C0: 0xC0,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D9: 0xD9,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0108: 0xC6,      #  LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+    0x0109: 0xE6,      #  LATIN SMALL LETTER C WITH CIRCUMFLEX
+    0x010A: 0xC5,      #  LATIN CAPITAL LETTER C WITH DOT ABOVE
+    0x010B: 0xE5,      #  LATIN SMALL LETTER C WITH DOT ABOVE
+    0x011C: 0xD8,      #  LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+    0x011D: 0xF8,      #  LATIN SMALL LETTER G WITH CIRCUMFLEX
+    0x011E: 0xAB,      #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xBB,      #  LATIN SMALL LETTER G WITH BREVE
+    0x0120: 0xD5,      #  LATIN CAPITAL LETTER G WITH DOT ABOVE
+    0x0121: 0xF5,      #  LATIN SMALL LETTER G WITH DOT ABOVE
+    0x0124: 0xA6,      #  LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+    0x0125: 0xB6,      #  LATIN SMALL LETTER H WITH CIRCUMFLEX
+    0x0126: 0xA1,      #  LATIN CAPITAL LETTER H WITH STROKE
+    0x0127: 0xB1,      #  LATIN SMALL LETTER H WITH STROKE
+    0x0130: 0xA9,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0xB9,      #  LATIN SMALL LETTER DOTLESS I
+    0x0134: 0xAC,      #  LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+    0x0135: 0xBC,      #  LATIN SMALL LETTER J WITH CIRCUMFLEX
+    0x015C: 0xDE,      #  LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+    0x015D: 0xFE,      #  LATIN SMALL LETTER S WITH CIRCUMFLEX
+    0x015E: 0xAA,      #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xBA,      #  LATIN SMALL LETTER S WITH CEDILLA
+    0x016C: 0xDD,      #  LATIN CAPITAL LETTER U WITH BREVE
+    0x016D: 0xFD,      #  LATIN SMALL LETTER U WITH BREVE
+    0x017B: 0xAF,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xBF,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x02D8: 0xA2,      #  BREVE
+    0x02D9: 0xFF,      #  DOT ABOVE
+}
+
index 224d5885d68f4a9578de049019fba978be876f61..96b7d9cc2364351b75e783009303c5e2f04dcc48 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u0104'  #  0xa1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0138'  #  0xa2 -> LATIN SMALL LETTER KRA
-    u'\u0156'  #  0xa3 -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\u0128'  #  0xa5 -> LATIN CAPITAL LETTER I WITH TILDE
-    u'\u013b'  #  0xa6 -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\u0160'  #  0xa9 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0112'  #  0xaa -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0122'  #  0xab -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u0166'  #  0xac -> LATIN CAPITAL LETTER T WITH STROKE
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\u017d'  #  0xae -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\u0105'  #  0xb1 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u02db'  #  0xb2 -> OGONEK
-    u'\u0157'  #  0xb3 -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\u0129'  #  0xb5 -> LATIN SMALL LETTER I WITH TILDE
-    u'\u013c'  #  0xb6 -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u02c7'  #  0xb7 -> CARON
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\u0161'  #  0xb9 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0113'  #  0xba -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0123'  #  0xbb -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u0167'  #  0xbc -> LATIN SMALL LETTER T WITH STROKE
-    u'\u014a'  #  0xbd -> LATIN CAPITAL LETTER ENG
-    u'\u017e'  #  0xbe -> LATIN SMALL LETTER Z WITH CARON
-    u'\u014b'  #  0xbf -> LATIN SMALL LETTER ENG
-    u'\u0100'  #  0xc0 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'    #  0xc3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\u012e'  #  0xc7 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u010c'  #  0xc8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'  #  0xca -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u0116'  #  0xcc -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u012a'  #  0xcf -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u0110'  #  0xd0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0145'  #  0xd1 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u014c'  #  0xd2 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\u0136'  #  0xd3 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\xd8'    #  0xd8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u0172'  #  0xd9 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0168'  #  0xdd -> LATIN CAPITAL LETTER U WITH TILDE
-    u'\u016a'  #  0xde -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\u0101'  #  0xe0 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'    #  0xe3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\u012f'  #  0xe7 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u010d'  #  0xe8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'  #  0xea -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0117'  #  0xec -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u012b'  #  0xef -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0111'  #  0xf0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0146'  #  0xf1 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u014d'  #  0xf2 -> LATIN SMALL LETTER O WITH MACRON
-    u'\u0137'  #  0xf3 -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\xf8'    #  0xf8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\u0173'  #  0xf9 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0169'  #  0xfd -> LATIN SMALL LETTER U WITH TILDE
-    u'\u016b'  #  0xfe -> LATIN SMALL LETTER U WITH MACRON
-    u'\u02d9'  #  0xff -> DOT ABOVE
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u0104'  #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u0138'  #  0xA2 -> LATIN SMALL LETTER KRA
+    u'\u0156'  #  0xA3 -> LATIN CAPITAL LETTER R WITH CEDILLA
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\u0128'  #  0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
+    u'\u013b'  #  0xA6 -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\u0160'  #  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u0112'  #  0xAA -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u0122'  #  0xAB -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u0166'  #  0xAC -> LATIN CAPITAL LETTER T WITH STROKE
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\u017d'  #  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\u0105'  #  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u02db'  #  0xB2 -> OGONEK
+    u'\u0157'  #  0xB3 -> LATIN SMALL LETTER R WITH CEDILLA
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\u0129'  #  0xB5 -> LATIN SMALL LETTER I WITH TILDE
+    u'\u013c'  #  0xB6 -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u02c7'  #  0xB7 -> CARON
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\u0161'  #  0xB9 -> LATIN SMALL LETTER S WITH CARON
+    u'\u0113'  #  0xBA -> LATIN SMALL LETTER E WITH MACRON
+    u'\u0123'  #  0xBB -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u0167'  #  0xBC -> LATIN SMALL LETTER T WITH STROKE
+    u'\u014a'  #  0xBD -> LATIN CAPITAL LETTER ENG
+    u'\u017e'  #  0xBE -> LATIN SMALL LETTER Z WITH CARON
+    u'\u014b'  #  0xBF -> LATIN SMALL LETTER ENG
+    u'\u0100'  #  0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'    #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\u012e'  #  0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u010c'  #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0118'  #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u0116'  #  0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\u012a'  #  0xCF -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u0110'  #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0145'  #  0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\u014c'  #  0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\u0136'  #  0xD3 -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'    #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u0172'  #  0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0168'  #  0xDD -> LATIN CAPITAL LETTER U WITH TILDE
+    u'\u016a'  #  0xDE -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\u0101'  #  0xE0 -> LATIN SMALL LETTER A WITH MACRON
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'    #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\u012f'  #  0xE7 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u010d'  #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0119'  #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u0117'  #  0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\u012b'  #  0xEF -> LATIN SMALL LETTER I WITH MACRON
+    u'\u0111'  #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0146'  #  0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\u014d'  #  0xF2 -> LATIN SMALL LETTER O WITH MACRON
+    u'\u0137'  #  0xF3 -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\xf8'    #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\u0173'  #  0xF9 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u0169'  #  0xFD -> LATIN SMALL LETTER U WITH TILDE
+    u'\u016b'  #  0xFE -> LATIN SMALL LETTER U WITH MACRON
+    u'\u02d9'  #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xc3,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d8: 0xd8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0xe3,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f8: 0xf8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0100: 0xc0,      #  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0xe0,      #  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0xa1,      #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xb1,      #  LATIN SMALL LETTER A WITH OGONEK
-    0x010c: 0xc8,      #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0xe8,      #  LATIN SMALL LETTER C WITH CARON
-    0x0110: 0xd0,      #  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xf0,      #  LATIN SMALL LETTER D WITH STROKE
-    0x0112: 0xaa,      #  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0xba,      #  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0xcc,      #  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0xec,      #  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xca,      #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xea,      #  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0xab,      #  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xbb,      #  LATIN SMALL LETTER G WITH CEDILLA
-    0x0128: 0xa5,      #  LATIN CAPITAL LETTER I WITH TILDE
-    0x0129: 0xb5,      #  LATIN SMALL LETTER I WITH TILDE
-    0x012a: 0xcf,      #  LATIN CAPITAL LETTER I WITH MACRON
-    0x012b: 0xef,      #  LATIN SMALL LETTER I WITH MACRON
-    0x012e: 0xc7,      #  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012f: 0xe7,      #  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xd3,      #  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xf3,      #  LATIN SMALL LETTER K WITH CEDILLA
-    0x0138: 0xa2,      #  LATIN SMALL LETTER KRA
-    0x013b: 0xa6,      #  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013c: 0xb6,      #  LATIN SMALL LETTER L WITH CEDILLA
-    0x0145: 0xd1,      #  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xf1,      #  LATIN SMALL LETTER N WITH CEDILLA
-    0x014a: 0xbd,      #  LATIN CAPITAL LETTER ENG
-    0x014b: 0xbf,      #  LATIN SMALL LETTER ENG
-    0x014c: 0xd2,      #  LATIN CAPITAL LETTER O WITH MACRON
-    0x014d: 0xf2,      #  LATIN SMALL LETTER O WITH MACRON
-    0x0156: 0xa3,      #  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0xb3,      #  LATIN SMALL LETTER R WITH CEDILLA
-    0x0160: 0xa9,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xb9,      #  LATIN SMALL LETTER S WITH CARON
-    0x0166: 0xac,      #  LATIN CAPITAL LETTER T WITH STROKE
-    0x0167: 0xbc,      #  LATIN SMALL LETTER T WITH STROKE
-    0x0168: 0xdd,      #  LATIN CAPITAL LETTER U WITH TILDE
-    0x0169: 0xfd,      #  LATIN SMALL LETTER U WITH TILDE
-    0x016a: 0xde,      #  LATIN CAPITAL LETTER U WITH MACRON
-    0x016b: 0xfe,      #  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0xd9,      #  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xf9,      #  LATIN SMALL LETTER U WITH OGONEK
-    0x017d: 0xae,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0xbe,      #  LATIN SMALL LETTER Z WITH CARON
-    0x02c7: 0xb7,      #  CARON
-    0x02d9: 0xff,      #  DOT ABOVE
-    0x02db: 0xb2,      #  OGONEK
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F8: 0xF8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0100: 0xC0,      #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0xE0,      #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0xA1,      #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xB1,      #  LATIN SMALL LETTER A WITH OGONEK
+    0x010C: 0xC8,      #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,      #  LATIN SMALL LETTER C WITH CARON
+    0x0110: 0xD0,      #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,      #  LATIN SMALL LETTER D WITH STROKE
+    0x0112: 0xAA,      #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0xBA,      #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0xCC,      #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0xEC,      #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0xCA,      #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xEA,      #  LATIN SMALL LETTER E WITH OGONEK
+    0x0122: 0xAB,      #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xBB,      #  LATIN SMALL LETTER G WITH CEDILLA
+    0x0128: 0xA5,      #  LATIN CAPITAL LETTER I WITH TILDE
+    0x0129: 0xB5,      #  LATIN SMALL LETTER I WITH TILDE
+    0x012A: 0xCF,      #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xEF,      #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xC7,      #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xE7,      #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xD3,      #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xF3,      #  LATIN SMALL LETTER K WITH CEDILLA
+    0x0138: 0xA2,      #  LATIN SMALL LETTER KRA
+    0x013B: 0xA6,      #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xB6,      #  LATIN SMALL LETTER L WITH CEDILLA
+    0x0145: 0xD1,      #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xF1,      #  LATIN SMALL LETTER N WITH CEDILLA
+    0x014A: 0xBD,      #  LATIN CAPITAL LETTER ENG
+    0x014B: 0xBF,      #  LATIN SMALL LETTER ENG
+    0x014C: 0xD2,      #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xF2,      #  LATIN SMALL LETTER O WITH MACRON
+    0x0156: 0xA3,      #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x0157: 0xB3,      #  LATIN SMALL LETTER R WITH CEDILLA
+    0x0160: 0xA9,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xB9,      #  LATIN SMALL LETTER S WITH CARON
+    0x0166: 0xAC,      #  LATIN CAPITAL LETTER T WITH STROKE
+    0x0167: 0xBC,      #  LATIN SMALL LETTER T WITH STROKE
+    0x0168: 0xDD,      #  LATIN CAPITAL LETTER U WITH TILDE
+    0x0169: 0xFD,      #  LATIN SMALL LETTER U WITH TILDE
+    0x016A: 0xDE,      #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xFE,      #  LATIN SMALL LETTER U WITH MACRON
+    0x0172: 0xD9,      #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF9,      #  LATIN SMALL LETTER U WITH OGONEK
+    0x017D: 0xAE,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xBE,      #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0xB7,      #  CARON
+    0x02D9: 0xFF,      #  DOT ABOVE
+    0x02DB: 0xB2,      #  OGONEK
+}
+
index f88199353a27db4e6161ae582e859565627d68fe..8db43145d404de0cfbb8bc24a1b1f82bace2b218 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u0401'  #  0xa1 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0402'  #  0xa2 -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0403'  #  0xa3 -> CYRILLIC CAPITAL LETTER GJE
-    u'\u0404'  #  0xa4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0405'  #  0xa5 -> CYRILLIC CAPITAL LETTER DZE
-    u'\u0406'  #  0xa6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0407'  #  0xa7 -> CYRILLIC CAPITAL LETTER YI
-    u'\u0408'  #  0xa8 -> CYRILLIC CAPITAL LETTER JE
-    u'\u0409'  #  0xa9 -> CYRILLIC CAPITAL LETTER LJE
-    u'\u040a'  #  0xaa -> CYRILLIC CAPITAL LETTER NJE
-    u'\u040b'  #  0xab -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u040c'  #  0xac -> CYRILLIC CAPITAL LETTER KJE
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\u040e'  #  0xae -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u040f'  #  0xaf -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u0410'  #  0xb0 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'  #  0xb1 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'  #  0xb2 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'  #  0xb3 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'  #  0xb4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'  #  0xb5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'  #  0xb6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'  #  0xb7 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'  #  0xb8 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'  #  0xb9 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'  #  0xba -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'  #  0xbb -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'  #  0xbc -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'  #  0xbd -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'  #  0xbe -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'  #  0xbf -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'  #  0xc0 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'  #  0xc1 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'  #  0xc2 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'  #  0xc3 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'  #  0xc4 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'  #  0xc5 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'  #  0xc6 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'  #  0xc7 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'  #  0xc8 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'  #  0xc9 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'  #  0xca -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'  #  0xcb -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'  #  0xcc -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'  #  0xcd -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'  #  0xce -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'  #  0xcf -> CYRILLIC CAPITAL LETTER YA
-    u'\u0430'  #  0xd0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'  #  0xd1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'  #  0xd2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'  #  0xd3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'  #  0xd4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'  #  0xd5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'  #  0xd6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'  #  0xd7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'  #  0xd8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'  #  0xd9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'  #  0xda -> CYRILLIC SMALL LETTER KA
-    u'\u043b'  #  0xdb -> CYRILLIC SMALL LETTER EL
-    u'\u043c'  #  0xdc -> CYRILLIC SMALL LETTER EM
-    u'\u043d'  #  0xdd -> CYRILLIC SMALL LETTER EN
-    u'\u043e'  #  0xde -> CYRILLIC SMALL LETTER O
-    u'\u043f'  #  0xdf -> CYRILLIC SMALL LETTER PE
-    u'\u0440'  #  0xe0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'  #  0xe1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'  #  0xe2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'  #  0xe3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'  #  0xe4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'  #  0xe5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'  #  0xe6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'  #  0xe7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'  #  0xe8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'  #  0xe9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'  #  0xea -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'  #  0xeb -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'  #  0xec -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'  #  0xed -> CYRILLIC SMALL LETTER E
-    u'\u044e'  #  0xee -> CYRILLIC SMALL LETTER YU
-    u'\u044f'  #  0xef -> CYRILLIC SMALL LETTER YA
-    u'\u2116'  #  0xf0 -> NUMERO SIGN
-    u'\u0451'  #  0xf1 -> CYRILLIC SMALL LETTER IO
-    u'\u0452'  #  0xf2 -> CYRILLIC SMALL LETTER DJE
-    u'\u0453'  #  0xf3 -> CYRILLIC SMALL LETTER GJE
-    u'\u0454'  #  0xf4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0455'  #  0xf5 -> CYRILLIC SMALL LETTER DZE
-    u'\u0456'  #  0xf6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0457'  #  0xf7 -> CYRILLIC SMALL LETTER YI
-    u'\u0458'  #  0xf8 -> CYRILLIC SMALL LETTER JE
-    u'\u0459'  #  0xf9 -> CYRILLIC SMALL LETTER LJE
-    u'\u045a'  #  0xfa -> CYRILLIC SMALL LETTER NJE
-    u'\u045b'  #  0xfb -> CYRILLIC SMALL LETTER TSHE
-    u'\u045c'  #  0xfc -> CYRILLIC SMALL LETTER KJE
-    u'\xa7'    #  0xfd -> SECTION SIGN
-    u'\u045e'  #  0xfe -> CYRILLIC SMALL LETTER SHORT U
-    u'\u045f'  #  0xff -> CYRILLIC SMALL LETTER DZHE
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u0401'  #  0xA1 -> CYRILLIC CAPITAL LETTER IO
+    u'\u0402'  #  0xA2 -> CYRILLIC CAPITAL LETTER DJE
+    u'\u0403'  #  0xA3 -> CYRILLIC CAPITAL LETTER GJE
+    u'\u0404'  #  0xA4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\u0405'  #  0xA5 -> CYRILLIC CAPITAL LETTER DZE
+    u'\u0406'  #  0xA6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0407'  #  0xA7 -> CYRILLIC CAPITAL LETTER YI
+    u'\u0408'  #  0xA8 -> CYRILLIC CAPITAL LETTER JE
+    u'\u0409'  #  0xA9 -> CYRILLIC CAPITAL LETTER LJE
+    u'\u040a'  #  0xAA -> CYRILLIC CAPITAL LETTER NJE
+    u'\u040b'  #  0xAB -> CYRILLIC CAPITAL LETTER TSHE
+    u'\u040c'  #  0xAC -> CYRILLIC CAPITAL LETTER KJE
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\u040e'  #  0xAE -> CYRILLIC CAPITAL LETTER SHORT U
+    u'\u040f'  #  0xAF -> CYRILLIC CAPITAL LETTER DZHE
+    u'\u0410'  #  0xB0 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'  #  0xB1 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0412'  #  0xB2 -> CYRILLIC CAPITAL LETTER VE
+    u'\u0413'  #  0xB3 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0414'  #  0xB4 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'  #  0xB5 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0416'  #  0xB6 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0417'  #  0xB7 -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0418'  #  0xB8 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'  #  0xB9 -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'  #  0xBA -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'  #  0xBB -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'  #  0xBC -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'  #  0xBD -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'  #  0xBE -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'  #  0xBF -> CYRILLIC CAPITAL LETTER PE
+    u'\u0420'  #  0xC0 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'  #  0xC1 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'  #  0xC2 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'  #  0xC3 -> CYRILLIC CAPITAL LETTER U
+    u'\u0424'  #  0xC4 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0425'  #  0xC5 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0426'  #  0xC6 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0427'  #  0xC7 -> CYRILLIC CAPITAL LETTER CHE
+    u'\u0428'  #  0xC8 -> CYRILLIC CAPITAL LETTER SHA
+    u'\u0429'  #  0xC9 -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u042a'  #  0xCA -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\u042b'  #  0xCB -> CYRILLIC CAPITAL LETTER YERU
+    u'\u042c'  #  0xCC -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042d'  #  0xCD -> CYRILLIC CAPITAL LETTER E
+    u'\u042e'  #  0xCE -> CYRILLIC CAPITAL LETTER YU
+    u'\u042f'  #  0xCF -> CYRILLIC CAPITAL LETTER YA
+    u'\u0430'  #  0xD0 -> CYRILLIC SMALL LETTER A
+    u'\u0431'  #  0xD1 -> CYRILLIC SMALL LETTER BE
+    u'\u0432'  #  0xD2 -> CYRILLIC SMALL LETTER VE
+    u'\u0433'  #  0xD3 -> CYRILLIC SMALL LETTER GHE
+    u'\u0434'  #  0xD4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'  #  0xD5 -> CYRILLIC SMALL LETTER IE
+    u'\u0436'  #  0xD6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0437'  #  0xD7 -> CYRILLIC SMALL LETTER ZE
+    u'\u0438'  #  0xD8 -> CYRILLIC SMALL LETTER I
+    u'\u0439'  #  0xD9 -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'  #  0xDA -> CYRILLIC SMALL LETTER KA
+    u'\u043b'  #  0xDB -> CYRILLIC SMALL LETTER EL
+    u'\u043c'  #  0xDC -> CYRILLIC SMALL LETTER EM
+    u'\u043d'  #  0xDD -> CYRILLIC SMALL LETTER EN
+    u'\u043e'  #  0xDE -> CYRILLIC SMALL LETTER O
+    u'\u043f'  #  0xDF -> CYRILLIC SMALL LETTER PE
+    u'\u0440'  #  0xE0 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'  #  0xE1 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'  #  0xE2 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'  #  0xE3 -> CYRILLIC SMALL LETTER U
+    u'\u0444'  #  0xE4 -> CYRILLIC SMALL LETTER EF
+    u'\u0445'  #  0xE5 -> CYRILLIC SMALL LETTER HA
+    u'\u0446'  #  0xE6 -> CYRILLIC SMALL LETTER TSE
+    u'\u0447'  #  0xE7 -> CYRILLIC SMALL LETTER CHE
+    u'\u0448'  #  0xE8 -> CYRILLIC SMALL LETTER SHA
+    u'\u0449'  #  0xE9 -> CYRILLIC SMALL LETTER SHCHA
+    u'\u044a'  #  0xEA -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u044b'  #  0xEB -> CYRILLIC SMALL LETTER YERU
+    u'\u044c'  #  0xEC -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044d'  #  0xED -> CYRILLIC SMALL LETTER E
+    u'\u044e'  #  0xEE -> CYRILLIC SMALL LETTER YU
+    u'\u044f'  #  0xEF -> CYRILLIC SMALL LETTER YA
+    u'\u2116'  #  0xF0 -> NUMERO SIGN
+    u'\u0451'  #  0xF1 -> CYRILLIC SMALL LETTER IO
+    u'\u0452'  #  0xF2 -> CYRILLIC SMALL LETTER DJE
+    u'\u0453'  #  0xF3 -> CYRILLIC SMALL LETTER GJE
+    u'\u0454'  #  0xF4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\u0455'  #  0xF5 -> CYRILLIC SMALL LETTER DZE
+    u'\u0456'  #  0xF6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0457'  #  0xF7 -> CYRILLIC SMALL LETTER YI
+    u'\u0458'  #  0xF8 -> CYRILLIC SMALL LETTER JE
+    u'\u0459'  #  0xF9 -> CYRILLIC SMALL LETTER LJE
+    u'\u045a'  #  0xFA -> CYRILLIC SMALL LETTER NJE
+    u'\u045b'  #  0xFB -> CYRILLIC SMALL LETTER TSHE
+    u'\u045c'  #  0xFC -> CYRILLIC SMALL LETTER KJE
+    u'\xa7'    #  0xFD -> SECTION SIGN
+    u'\u045e'  #  0xFE -> CYRILLIC SMALL LETTER SHORT U
+    u'\u045f'  #  0xFF -> CYRILLIC SMALL LETTER DZHE
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a7: 0xfd,      #  SECTION SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x0401: 0xa1,      #  CYRILLIC CAPITAL LETTER IO
-    0x0402: 0xa2,      #  CYRILLIC CAPITAL LETTER DJE
-    0x0403: 0xa3,      #  CYRILLIC CAPITAL LETTER GJE
-    0x0404: 0xa4,      #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0405: 0xa5,      #  CYRILLIC CAPITAL LETTER DZE
-    0x0406: 0xa6,      #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0xa7,      #  CYRILLIC CAPITAL LETTER YI
-    0x0408: 0xa8,      #  CYRILLIC CAPITAL LETTER JE
-    0x0409: 0xa9,      #  CYRILLIC CAPITAL LETTER LJE
-    0x040a: 0xaa,      #  CYRILLIC CAPITAL LETTER NJE
-    0x040b: 0xab,      #  CYRILLIC CAPITAL LETTER TSHE
-    0x040c: 0xac,      #  CYRILLIC CAPITAL LETTER KJE
-    0x040e: 0xae,      #  CYRILLIC CAPITAL LETTER SHORT U
-    0x040f: 0xaf,      #  CYRILLIC CAPITAL LETTER DZHE
-    0x0410: 0xb0,      #  CYRILLIC CAPITAL LETTER A
-    0x0411: 0xb1,      #  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0xb2,      #  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0xb3,      #  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0xb4,      #  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0xb5,      #  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0xb6,      #  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0xb7,      #  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0xb8,      #  CYRILLIC CAPITAL LETTER I
-    0x0419: 0xb9,      #  CYRILLIC CAPITAL LETTER SHORT I
-    0x041a: 0xba,      #  CYRILLIC CAPITAL LETTER KA
-    0x041b: 0xbb,      #  CYRILLIC CAPITAL LETTER EL
-    0x041c: 0xbc,      #  CYRILLIC CAPITAL LETTER EM
-    0x041d: 0xbd,      #  CYRILLIC CAPITAL LETTER EN
-    0x041e: 0xbe,      #  CYRILLIC CAPITAL LETTER O
-    0x041f: 0xbf,      #  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0xc0,      #  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0xc1,      #  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0xc2,      #  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0xc3,      #  CYRILLIC CAPITAL LETTER U
-    0x0424: 0xc4,      #  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0xc5,      #  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0xc6,      #  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0xc7,      #  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0xc8,      #  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0xc9,      #  CYRILLIC CAPITAL LETTER SHCHA
-    0x042a: 0xca,      #  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042b: 0xcb,      #  CYRILLIC CAPITAL LETTER YERU
-    0x042c: 0xcc,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042d: 0xcd,      #  CYRILLIC CAPITAL LETTER E
-    0x042e: 0xce,      #  CYRILLIC CAPITAL LETTER YU
-    0x042f: 0xcf,      #  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xd0,      #  CYRILLIC SMALL LETTER A
-    0x0431: 0xd1,      #  CYRILLIC SMALL LETTER BE
-    0x0432: 0xd2,      #  CYRILLIC SMALL LETTER VE
-    0x0433: 0xd3,      #  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xd4,      #  CYRILLIC SMALL LETTER DE
-    0x0435: 0xd5,      #  CYRILLIC SMALL LETTER IE
-    0x0436: 0xd6,      #  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xd7,      #  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xd8,      #  CYRILLIC SMALL LETTER I
-    0x0439: 0xd9,      #  CYRILLIC SMALL LETTER SHORT I
-    0x043a: 0xda,      #  CYRILLIC SMALL LETTER KA
-    0x043b: 0xdb,      #  CYRILLIC SMALL LETTER EL
-    0x043c: 0xdc,      #  CYRILLIC SMALL LETTER EM
-    0x043d: 0xdd,      #  CYRILLIC SMALL LETTER EN
-    0x043e: 0xde,      #  CYRILLIC SMALL LETTER O
-    0x043f: 0xdf,      #  CYRILLIC SMALL LETTER PE
-    0x0440: 0xe0,      #  CYRILLIC SMALL LETTER ER
-    0x0441: 0xe1,      #  CYRILLIC SMALL LETTER ES
-    0x0442: 0xe2,      #  CYRILLIC SMALL LETTER TE
-    0x0443: 0xe3,      #  CYRILLIC SMALL LETTER U
-    0x0444: 0xe4,      #  CYRILLIC SMALL LETTER EF
-    0x0445: 0xe5,      #  CYRILLIC SMALL LETTER HA
-    0x0446: 0xe6,      #  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xe7,      #  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xe8,      #  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xe9,      #  CYRILLIC SMALL LETTER SHCHA
-    0x044a: 0xea,      #  CYRILLIC SMALL LETTER HARD SIGN
-    0x044b: 0xeb,      #  CYRILLIC SMALL LETTER YERU
-    0x044c: 0xec,      #  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044d: 0xed,      #  CYRILLIC SMALL LETTER E
-    0x044e: 0xee,      #  CYRILLIC SMALL LETTER YU
-    0x044f: 0xef,      #  CYRILLIC SMALL LETTER YA
-    0x0451: 0xf1,      #  CYRILLIC SMALL LETTER IO
-    0x0452: 0xf2,      #  CYRILLIC SMALL LETTER DJE
-    0x0453: 0xf3,      #  CYRILLIC SMALL LETTER GJE
-    0x0454: 0xf4,      #  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0455: 0xf5,      #  CYRILLIC SMALL LETTER DZE
-    0x0456: 0xf6,      #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0xf7,      #  CYRILLIC SMALL LETTER YI
-    0x0458: 0xf8,      #  CYRILLIC SMALL LETTER JE
-    0x0459: 0xf9,      #  CYRILLIC SMALL LETTER LJE
-    0x045a: 0xfa,      #  CYRILLIC SMALL LETTER NJE
-    0x045b: 0xfb,      #  CYRILLIC SMALL LETTER TSHE
-    0x045c: 0xfc,      #  CYRILLIC SMALL LETTER KJE
-    0x045e: 0xfe,      #  CYRILLIC SMALL LETTER SHORT U
-    0x045f: 0xff,      #  CYRILLIC SMALL LETTER DZHE
-    0x2116: 0xf0,      #  NUMERO SIGN
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A7: 0xFD,      #  SECTION SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x0401: 0xA1,      #  CYRILLIC CAPITAL LETTER IO
+    0x0402: 0xA2,      #  CYRILLIC CAPITAL LETTER DJE
+    0x0403: 0xA3,      #  CYRILLIC CAPITAL LETTER GJE
+    0x0404: 0xA4,      #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0405: 0xA5,      #  CYRILLIC CAPITAL LETTER DZE
+    0x0406: 0xA6,      #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0407: 0xA7,      #  CYRILLIC CAPITAL LETTER YI
+    0x0408: 0xA8,      #  CYRILLIC CAPITAL LETTER JE
+    0x0409: 0xA9,      #  CYRILLIC CAPITAL LETTER LJE
+    0x040A: 0xAA,      #  CYRILLIC CAPITAL LETTER NJE
+    0x040B: 0xAB,      #  CYRILLIC CAPITAL LETTER TSHE
+    0x040C: 0xAC,      #  CYRILLIC CAPITAL LETTER KJE
+    0x040E: 0xAE,      #  CYRILLIC CAPITAL LETTER SHORT U
+    0x040F: 0xAF,      #  CYRILLIC CAPITAL LETTER DZHE
+    0x0410: 0xB0,      #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0xB1,      #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0xB2,      #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0xB3,      #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0xB4,      #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0xB5,      #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0xB6,      #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0xB7,      #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0xB8,      #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0xB9,      #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041A: 0xBA,      #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0xBB,      #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0xBC,      #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0xBD,      #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0xBE,      #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0xBF,      #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0xC0,      #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0xC1,      #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0xC2,      #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0xC3,      #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0xC4,      #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0xC5,      #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0xC6,      #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0xC7,      #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0xC8,      #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0xC9,      #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042A: 0xCA,      #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0xCB,      #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0xCC,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0xCD,      #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0xCE,      #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0xCF,      #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xD0,      #  CYRILLIC SMALL LETTER A
+    0x0431: 0xD1,      #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xD2,      #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xD3,      #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xD4,      #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xD5,      #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xD6,      #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xD7,      #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xD8,      #  CYRILLIC SMALL LETTER I
+    0x0439: 0xD9,      #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xDA,      #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xDB,      #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xDC,      #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xDD,      #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xDE,      #  CYRILLIC SMALL LETTER O
+    0x043F: 0xDF,      #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xE0,      #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xE1,      #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xE2,      #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xE3,      #  CYRILLIC SMALL LETTER U
+    0x0444: 0xE4,      #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xE5,      #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xE6,      #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xE7,      #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xE8,      #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xE9,      #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xEA,      #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xEB,      #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xEC,      #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xED,      #  CYRILLIC SMALL LETTER E
+    0x044E: 0xEE,      #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xEF,      #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xF1,      #  CYRILLIC SMALL LETTER IO
+    0x0452: 0xF2,      #  CYRILLIC SMALL LETTER DJE
+    0x0453: 0xF3,      #  CYRILLIC SMALL LETTER GJE
+    0x0454: 0xF4,      #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0455: 0xF5,      #  CYRILLIC SMALL LETTER DZE
+    0x0456: 0xF6,      #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0457: 0xF7,      #  CYRILLIC SMALL LETTER YI
+    0x0458: 0xF8,      #  CYRILLIC SMALL LETTER JE
+    0x0459: 0xF9,      #  CYRILLIC SMALL LETTER LJE
+    0x045A: 0xFA,      #  CYRILLIC SMALL LETTER NJE
+    0x045B: 0xFB,      #  CYRILLIC SMALL LETTER TSHE
+    0x045C: 0xFC,      #  CYRILLIC SMALL LETTER KJE
+    0x045E: 0xFE,      #  CYRILLIC SMALL LETTER SHORT U
+    0x045F: 0xFF,      #  CYRILLIC SMALL LETTER DZHE
+    0x2116: 0xF0,      #  NUMERO SIGN
+}
+
index 1e99b1ad256678af5feee901938ac50905c87635..feb69c86016b4006ead5744ca6c6737dce670df2 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,17 +186,17 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -204,8 +204,8 @@ decoding_table = (
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u060c'  #  0xac -> ARABIC COMMA
-    u'\xad'    #  0xad -> SOFT HYPHEN
+    u'\u060c'  #  0xAC -> ARABIC COMMA
+    u'\xad'    #  0xAD -> SOFT HYPHEN
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -219,62 +219,62 @@ decoding_table = (
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u061b'  #  0xbb -> ARABIC SEMICOLON
+    u'\u061b'  #  0xBB -> ARABIC SEMICOLON
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u061f'  #  0xbf -> ARABIC QUESTION MARK
+    u'\u061f'  #  0xBF -> ARABIC QUESTION MARK
     u'\ufffe'
-    u'\u0621'  #  0xc1 -> ARABIC LETTER HAMZA
-    u'\u0622'  #  0xc2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'  #  0xc3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'  #  0xc4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'  #  0xc5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'  #  0xc6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'  #  0xc7 -> ARABIC LETTER ALEF
-    u'\u0628'  #  0xc8 -> ARABIC LETTER BEH
-    u'\u0629'  #  0xc9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'  #  0xca -> ARABIC LETTER TEH
-    u'\u062b'  #  0xcb -> ARABIC LETTER THEH
-    u'\u062c'  #  0xcc -> ARABIC LETTER JEEM
-    u'\u062d'  #  0xcd -> ARABIC LETTER HAH
-    u'\u062e'  #  0xce -> ARABIC LETTER KHAH
-    u'\u062f'  #  0xcf -> ARABIC LETTER DAL
-    u'\u0630'  #  0xd0 -> ARABIC LETTER THAL
-    u'\u0631'  #  0xd1 -> ARABIC LETTER REH
-    u'\u0632'  #  0xd2 -> ARABIC LETTER ZAIN
-    u'\u0633'  #  0xd3 -> ARABIC LETTER SEEN
-    u'\u0634'  #  0xd4 -> ARABIC LETTER SHEEN
-    u'\u0635'  #  0xd5 -> ARABIC LETTER SAD
-    u'\u0636'  #  0xd6 -> ARABIC LETTER DAD
-    u'\u0637'  #  0xd7 -> ARABIC LETTER TAH
-    u'\u0638'  #  0xd8 -> ARABIC LETTER ZAH
-    u'\u0639'  #  0xd9 -> ARABIC LETTER AIN
-    u'\u063a'  #  0xda -> ARABIC LETTER GHAIN
+    u'\u0621'  #  0xC1 -> ARABIC LETTER HAMZA
+    u'\u0622'  #  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
+    u'\u0623'  #  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
+    u'\u0624'  #  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
+    u'\u0625'  #  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
+    u'\u0626'  #  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
+    u'\u0627'  #  0xC7 -> ARABIC LETTER ALEF
+    u'\u0628'  #  0xC8 -> ARABIC LETTER BEH
+    u'\u0629'  #  0xC9 -> ARABIC LETTER TEH MARBUTA
+    u'\u062a'  #  0xCA -> ARABIC LETTER TEH
+    u'\u062b'  #  0xCB -> ARABIC LETTER THEH
+    u'\u062c'  #  0xCC -> ARABIC LETTER JEEM
+    u'\u062d'  #  0xCD -> ARABIC LETTER HAH
+    u'\u062e'  #  0xCE -> ARABIC LETTER KHAH
+    u'\u062f'  #  0xCF -> ARABIC LETTER DAL
+    u'\u0630'  #  0xD0 -> ARABIC LETTER THAL
+    u'\u0631'  #  0xD1 -> ARABIC LETTER REH
+    u'\u0632'  #  0xD2 -> ARABIC LETTER ZAIN
+    u'\u0633'  #  0xD3 -> ARABIC LETTER SEEN
+    u'\u0634'  #  0xD4 -> ARABIC LETTER SHEEN
+    u'\u0635'  #  0xD5 -> ARABIC LETTER SAD
+    u'\u0636'  #  0xD6 -> ARABIC LETTER DAD
+    u'\u0637'  #  0xD7 -> ARABIC LETTER TAH
+    u'\u0638'  #  0xD8 -> ARABIC LETTER ZAH
+    u'\u0639'  #  0xD9 -> ARABIC LETTER AIN
+    u'\u063a'  #  0xDA -> ARABIC LETTER GHAIN
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u0640'  #  0xe0 -> ARABIC TATWEEL
-    u'\u0641'  #  0xe1 -> ARABIC LETTER FEH
-    u'\u0642'  #  0xe2 -> ARABIC LETTER QAF
-    u'\u0643'  #  0xe3 -> ARABIC LETTER KAF
-    u'\u0644'  #  0xe4 -> ARABIC LETTER LAM
-    u'\u0645'  #  0xe5 -> ARABIC LETTER MEEM
-    u'\u0646'  #  0xe6 -> ARABIC LETTER NOON
-    u'\u0647'  #  0xe7 -> ARABIC LETTER HEH
-    u'\u0648'  #  0xe8 -> ARABIC LETTER WAW
-    u'\u0649'  #  0xe9 -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'  #  0xea -> ARABIC LETTER YEH
-    u'\u064b'  #  0xeb -> ARABIC FATHATAN
-    u'\u064c'  #  0xec -> ARABIC DAMMATAN
-    u'\u064d'  #  0xed -> ARABIC KASRATAN
-    u'\u064e'  #  0xee -> ARABIC FATHA
-    u'\u064f'  #  0xef -> ARABIC DAMMA
-    u'\u0650'  #  0xf0 -> ARABIC KASRA
-    u'\u0651'  #  0xf1 -> ARABIC SHADDA
-    u'\u0652'  #  0xf2 -> ARABIC SUKUN
+    u'\u0640'  #  0xE0 -> ARABIC TATWEEL
+    u'\u0641'  #  0xE1 -> ARABIC LETTER FEH
+    u'\u0642'  #  0xE2 -> ARABIC LETTER QAF
+    u'\u0643'  #  0xE3 -> ARABIC LETTER KAF
+    u'\u0644'  #  0xE4 -> ARABIC LETTER LAM
+    u'\u0645'  #  0xE5 -> ARABIC LETTER MEEM
+    u'\u0646'  #  0xE6 -> ARABIC LETTER NOON
+    u'\u0647'  #  0xE7 -> ARABIC LETTER HEH
+    u'\u0648'  #  0xE8 -> ARABIC LETTER WAW
+    u'\u0649'  #  0xE9 -> ARABIC LETTER ALEF MAKSURA
+    u'\u064a'  #  0xEA -> ARABIC LETTER YEH
+    u'\u064b'  #  0xEB -> ARABIC FATHATAN
+    u'\u064c'  #  0xEC -> ARABIC DAMMATAN
+    u'\u064d'  #  0xED -> ARABIC KASRATAN
+    u'\u064e'  #  0xEE -> ARABIC FATHA
+    u'\u064f'  #  0xEF -> ARABIC DAMMA
+    u'\u0650'  #  0xF0 -> ARABIC KASRA
+    u'\u0651'  #  0xF1 -> ARABIC SHADDA
+    u'\u0652'  #  0xF2 -> ARABIC SUKUN
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,61 +447,62 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x060c: 0xac,      #  ARABIC COMMA
-    0x061b: 0xbb,      #  ARABIC SEMICOLON
-    0x061f: 0xbf,      #  ARABIC QUESTION MARK
-    0x0621: 0xc1,      #  ARABIC LETTER HAMZA
-    0x0622: 0xc2,      #  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x0623: 0xc3,      #  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x0624: 0xc4,      #  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x0625: 0xc5,      #  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x0626: 0xc6,      #  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x0627: 0xc7,      #  ARABIC LETTER ALEF
-    0x0628: 0xc8,      #  ARABIC LETTER BEH
-    0x0629: 0xc9,      #  ARABIC LETTER TEH MARBUTA
-    0x062a: 0xca,      #  ARABIC LETTER TEH
-    0x062b: 0xcb,      #  ARABIC LETTER THEH
-    0x062c: 0xcc,      #  ARABIC LETTER JEEM
-    0x062d: 0xcd,      #  ARABIC LETTER HAH
-    0x062e: 0xce,      #  ARABIC LETTER KHAH
-    0x062f: 0xcf,      #  ARABIC LETTER DAL
-    0x0630: 0xd0,      #  ARABIC LETTER THAL
-    0x0631: 0xd1,      #  ARABIC LETTER REH
-    0x0632: 0xd2,      #  ARABIC LETTER ZAIN
-    0x0633: 0xd3,      #  ARABIC LETTER SEEN
-    0x0634: 0xd4,      #  ARABIC LETTER SHEEN
-    0x0635: 0xd5,      #  ARABIC LETTER SAD
-    0x0636: 0xd6,      #  ARABIC LETTER DAD
-    0x0637: 0xd7,      #  ARABIC LETTER TAH
-    0x0638: 0xd8,      #  ARABIC LETTER ZAH
-    0x0639: 0xd9,      #  ARABIC LETTER AIN
-    0x063a: 0xda,      #  ARABIC LETTER GHAIN
-    0x0640: 0xe0,      #  ARABIC TATWEEL
-    0x0641: 0xe1,      #  ARABIC LETTER FEH
-    0x0642: 0xe2,      #  ARABIC LETTER QAF
-    0x0643: 0xe3,      #  ARABIC LETTER KAF
-    0x0644: 0xe4,      #  ARABIC LETTER LAM
-    0x0645: 0xe5,      #  ARABIC LETTER MEEM
-    0x0646: 0xe6,      #  ARABIC LETTER NOON
-    0x0647: 0xe7,      #  ARABIC LETTER HEH
-    0x0648: 0xe8,      #  ARABIC LETTER WAW
-    0x0649: 0xe9,      #  ARABIC LETTER ALEF MAKSURA
-    0x064a: 0xea,      #  ARABIC LETTER YEH
-    0x064b: 0xeb,      #  ARABIC FATHATAN
-    0x064c: 0xec,      #  ARABIC DAMMATAN
-    0x064d: 0xed,      #  ARABIC KASRATAN
-    0x064e: 0xee,      #  ARABIC FATHA
-    0x064f: 0xef,      #  ARABIC DAMMA
-    0x0650: 0xf0,      #  ARABIC KASRA
-    0x0651: 0xf1,      #  ARABIC SHADDA
-    0x0652: 0xf2,      #  ARABIC SUKUN
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x060C: 0xAC,      #  ARABIC COMMA
+    0x061B: 0xBB,      #  ARABIC SEMICOLON
+    0x061F: 0xBF,      #  ARABIC QUESTION MARK
+    0x0621: 0xC1,      #  ARABIC LETTER HAMZA
+    0x0622: 0xC2,      #  ARABIC LETTER ALEF WITH MADDA ABOVE
+    0x0623: 0xC3,      #  ARABIC LETTER ALEF WITH HAMZA ABOVE
+    0x0624: 0xC4,      #  ARABIC LETTER WAW WITH HAMZA ABOVE
+    0x0625: 0xC5,      #  ARABIC LETTER ALEF WITH HAMZA BELOW
+    0x0626: 0xC6,      #  ARABIC LETTER YEH WITH HAMZA ABOVE
+    0x0627: 0xC7,      #  ARABIC LETTER ALEF
+    0x0628: 0xC8,      #  ARABIC LETTER BEH
+    0x0629: 0xC9,      #  ARABIC LETTER TEH MARBUTA
+    0x062A: 0xCA,      #  ARABIC LETTER TEH
+    0x062B: 0xCB,      #  ARABIC LETTER THEH
+    0x062C: 0xCC,      #  ARABIC LETTER JEEM
+    0x062D: 0xCD,      #  ARABIC LETTER HAH
+    0x062E: 0xCE,      #  ARABIC LETTER KHAH
+    0x062F: 0xCF,      #  ARABIC LETTER DAL
+    0x0630: 0xD0,      #  ARABIC LETTER THAL
+    0x0631: 0xD1,      #  ARABIC LETTER REH
+    0x0632: 0xD2,      #  ARABIC LETTER ZAIN
+    0x0633: 0xD3,      #  ARABIC LETTER SEEN
+    0x0634: 0xD4,      #  ARABIC LETTER SHEEN
+    0x0635: 0xD5,      #  ARABIC LETTER SAD
+    0x0636: 0xD6,      #  ARABIC LETTER DAD
+    0x0637: 0xD7,      #  ARABIC LETTER TAH
+    0x0638: 0xD8,      #  ARABIC LETTER ZAH
+    0x0639: 0xD9,      #  ARABIC LETTER AIN
+    0x063A: 0xDA,      #  ARABIC LETTER GHAIN
+    0x0640: 0xE0,      #  ARABIC TATWEEL
+    0x0641: 0xE1,      #  ARABIC LETTER FEH
+    0x0642: 0xE2,      #  ARABIC LETTER QAF
+    0x0643: 0xE3,      #  ARABIC LETTER KAF
+    0x0644: 0xE4,      #  ARABIC LETTER LAM
+    0x0645: 0xE5,      #  ARABIC LETTER MEEM
+    0x0646: 0xE6,      #  ARABIC LETTER NOON
+    0x0647: 0xE7,      #  ARABIC LETTER HEH
+    0x0648: 0xE8,      #  ARABIC LETTER WAW
+    0x0649: 0xE9,      #  ARABIC LETTER ALEF MAKSURA
+    0x064A: 0xEA,      #  ARABIC LETTER YEH
+    0x064B: 0xEB,      #  ARABIC FATHATAN
+    0x064C: 0xEC,      #  ARABIC DAMMATAN
+    0x064D: 0xED,      #  ARABIC KASRATAN
+    0x064E: 0xEE,      #  ARABIC FATHA
+    0x064F: 0xEF,      #  ARABIC DAMMA
+    0x0650: 0xF0,      #  ARABIC KASRA
+    0x0651: 0xF1,      #  ARABIC SHADDA
+    0x0652: 0xF2,      #  ARABIC SUKUN
+}
+
index 5ef3ece830845b55184fcd8aa1dcb8a4a7c8e060..c43af8c147e38af5d739fff5af5668a95d250481 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,107 +186,107 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\u2018'  #  0xa1 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'  #  0xa2 -> RIGHT SINGLE QUOTATION MARK
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\u20ac'  #  0xa4 -> EURO SIGN
-    u'\u20af'  #  0xa5 -> DRACHMA SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u037a'  #  0xaa -> GREEK YPOGEGRAMMENI
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\u2018'  #  0xA1 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'  #  0xA2 -> RIGHT SINGLE QUOTATION MARK
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\u20ac'  #  0xA4 -> EURO SIGN
+    u'\u20af'  #  0xA5 -> DRACHMA SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u037a'  #  0xAA -> GREEK YPOGEGRAMMENI
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
     u'\ufffe'
-    u'\u2015'  #  0xaf -> HORIZONTAL BAR
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\u0384'  #  0xb4 -> GREEK TONOS
-    u'\u0385'  #  0xb5 -> GREEK DIALYTIKA TONOS
-    u'\u0386'  #  0xb6 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\u0388'  #  0xb8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'  #  0xb9 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'  #  0xba -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u038c'  #  0xbc -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\u038e'  #  0xbe -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'  #  0xbf -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\u0390'  #  0xc0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u0391'  #  0xc1 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'  #  0xc2 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'  #  0xc3 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'  #  0xc4 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'  #  0xc5 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'  #  0xc6 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'  #  0xc7 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'  #  0xc8 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'  #  0xc9 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'  #  0xca -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'  #  0xcb -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'  #  0xcc -> GREEK CAPITAL LETTER MU
-    u'\u039d'  #  0xcd -> GREEK CAPITAL LETTER NU
-    u'\u039e'  #  0xce -> GREEK CAPITAL LETTER XI
-    u'\u039f'  #  0xcf -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'  #  0xd0 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'  #  0xd1 -> GREEK CAPITAL LETTER RHO
+    u'\u2015'  #  0xAF -> HORIZONTAL BAR
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\u0384'  #  0xB4 -> GREEK TONOS
+    u'\u0385'  #  0xB5 -> GREEK DIALYTIKA TONOS
+    u'\u0386'  #  0xB6 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\u0388'  #  0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
+    u'\u0389'  #  0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
+    u'\u038a'  #  0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u038c'  #  0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\u038e'  #  0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
+    u'\u038f'  #  0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
+    u'\u0390'  #  0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    u'\u0391'  #  0xC1 -> GREEK CAPITAL LETTER ALPHA
+    u'\u0392'  #  0xC2 -> GREEK CAPITAL LETTER BETA
+    u'\u0393'  #  0xC3 -> GREEK CAPITAL LETTER GAMMA
+    u'\u0394'  #  0xC4 -> GREEK CAPITAL LETTER DELTA
+    u'\u0395'  #  0xC5 -> GREEK CAPITAL LETTER EPSILON
+    u'\u0396'  #  0xC6 -> GREEK CAPITAL LETTER ZETA
+    u'\u0397'  #  0xC7 -> GREEK CAPITAL LETTER ETA
+    u'\u0398'  #  0xC8 -> GREEK CAPITAL LETTER THETA
+    u'\u0399'  #  0xC9 -> GREEK CAPITAL LETTER IOTA
+    u'\u039a'  #  0xCA -> GREEK CAPITAL LETTER KAPPA
+    u'\u039b'  #  0xCB -> GREEK CAPITAL LETTER LAMDA
+    u'\u039c'  #  0xCC -> GREEK CAPITAL LETTER MU
+    u'\u039d'  #  0xCD -> GREEK CAPITAL LETTER NU
+    u'\u039e'  #  0xCE -> GREEK CAPITAL LETTER XI
+    u'\u039f'  #  0xCF -> GREEK CAPITAL LETTER OMICRON
+    u'\u03a0'  #  0xD0 -> GREEK CAPITAL LETTER PI
+    u'\u03a1'  #  0xD1 -> GREEK CAPITAL LETTER RHO
     u'\ufffe'
-    u'\u03a3'  #  0xd3 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'  #  0xd4 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'  #  0xd5 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'  #  0xd6 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'  #  0xd7 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'  #  0xd8 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'  #  0xd9 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03aa'  #  0xda -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'  #  0xdb -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ac'  #  0xdc -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'  #  0xdd -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'  #  0xde -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'  #  0xdf -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03b0'  #  0xe0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u03b1'  #  0xe1 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'  #  0xe2 -> GREEK SMALL LETTER BETA
-    u'\u03b3'  #  0xe3 -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'  #  0xe4 -> GREEK SMALL LETTER DELTA
-    u'\u03b5'  #  0xe5 -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'  #  0xe6 -> GREEK SMALL LETTER ZETA
-    u'\u03b7'  #  0xe7 -> GREEK SMALL LETTER ETA
-    u'\u03b8'  #  0xe8 -> GREEK SMALL LETTER THETA
-    u'\u03b9'  #  0xe9 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'  #  0xea -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'  #  0xeb -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'  #  0xec -> GREEK SMALL LETTER MU
-    u'\u03bd'  #  0xed -> GREEK SMALL LETTER NU
-    u'\u03be'  #  0xee -> GREEK SMALL LETTER XI
-    u'\u03bf'  #  0xef -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'  #  0xf0 -> GREEK SMALL LETTER PI
-    u'\u03c1'  #  0xf1 -> GREEK SMALL LETTER RHO
-    u'\u03c2'  #  0xf2 -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c3'  #  0xf3 -> GREEK SMALL LETTER SIGMA
-    u'\u03c4'  #  0xf4 -> GREEK SMALL LETTER TAU
-    u'\u03c5'  #  0xf5 -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'  #  0xf6 -> GREEK SMALL LETTER PHI
-    u'\u03c7'  #  0xf7 -> GREEK SMALL LETTER CHI
-    u'\u03c8'  #  0xf8 -> GREEK SMALL LETTER PSI
-    u'\u03c9'  #  0xf9 -> GREEK SMALL LETTER OMEGA
-    u'\u03ca'  #  0xfa -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03cb'  #  0xfb -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03cc'  #  0xfc -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'  #  0xfd -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03ce'  #  0xfe -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\u03a3'  #  0xD3 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03a4'  #  0xD4 -> GREEK CAPITAL LETTER TAU
+    u'\u03a5'  #  0xD5 -> GREEK CAPITAL LETTER UPSILON
+    u'\u03a6'  #  0xD6 -> GREEK CAPITAL LETTER PHI
+    u'\u03a7'  #  0xD7 -> GREEK CAPITAL LETTER CHI
+    u'\u03a8'  #  0xD8 -> GREEK CAPITAL LETTER PSI
+    u'\u03a9'  #  0xD9 -> GREEK CAPITAL LETTER OMEGA
+    u'\u03aa'  #  0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    u'\u03ab'  #  0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    u'\u03ac'  #  0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\u03ad'  #  0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'  #  0xDE -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03af'  #  0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03b0'  #  0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    u'\u03b1'  #  0xE1 -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'  #  0xE2 -> GREEK SMALL LETTER BETA
+    u'\u03b3'  #  0xE3 -> GREEK SMALL LETTER GAMMA
+    u'\u03b4'  #  0xE4 -> GREEK SMALL LETTER DELTA
+    u'\u03b5'  #  0xE5 -> GREEK SMALL LETTER EPSILON
+    u'\u03b6'  #  0xE6 -> GREEK SMALL LETTER ZETA
+    u'\u03b7'  #  0xE7 -> GREEK SMALL LETTER ETA
+    u'\u03b8'  #  0xE8 -> GREEK SMALL LETTER THETA
+    u'\u03b9'  #  0xE9 -> GREEK SMALL LETTER IOTA
+    u'\u03ba'  #  0xEA -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'  #  0xEB -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'  #  0xEC -> GREEK SMALL LETTER MU
+    u'\u03bd'  #  0xED -> GREEK SMALL LETTER NU
+    u'\u03be'  #  0xEE -> GREEK SMALL LETTER XI
+    u'\u03bf'  #  0xEF -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'  #  0xF0 -> GREEK SMALL LETTER PI
+    u'\u03c1'  #  0xF1 -> GREEK SMALL LETTER RHO
+    u'\u03c2'  #  0xF2 -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c3'  #  0xF3 -> GREEK SMALL LETTER SIGMA
+    u'\u03c4'  #  0xF4 -> GREEK SMALL LETTER TAU
+    u'\u03c5'  #  0xF5 -> GREEK SMALL LETTER UPSILON
+    u'\u03c6'  #  0xF6 -> GREEK SMALL LETTER PHI
+    u'\u03c7'  #  0xF7 -> GREEK SMALL LETTER CHI
+    u'\u03c8'  #  0xF8 -> GREEK SMALL LETTER PSI
+    u'\u03c9'  #  0xF9 -> GREEK SMALL LETTER OMEGA
+    u'\u03ca'  #  0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u03cb'  #  0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u03cc'  #  0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u03cd'  #  0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u03ce'  #  0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
     u'\ufffe'
 )
 
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,103 +447,104 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x037a: 0xaa,      #  GREEK YPOGEGRAMMENI
-    0x0384: 0xb4,      #  GREEK TONOS
-    0x0385: 0xb5,      #  GREEK DIALYTIKA TONOS
-    0x0386: 0xb6,      #  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0xb8,      #  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0xb9,      #  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038a: 0xba,      #  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038c: 0xbc,      #  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038e: 0xbe,      #  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038f: 0xbf,      #  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0xc0,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x0391: 0xc1,      #  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0xc2,      #  GREEK CAPITAL LETTER BETA
-    0x0393: 0xc3,      #  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0xc4,      #  GREEK CAPITAL LETTER DELTA
-    0x0395: 0xc5,      #  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0xc6,      #  GREEK CAPITAL LETTER ZETA
-    0x0397: 0xc7,      #  GREEK CAPITAL LETTER ETA
-    0x0398: 0xc8,      #  GREEK CAPITAL LETTER THETA
-    0x0399: 0xc9,      #  GREEK CAPITAL LETTER IOTA
-    0x039a: 0xca,      #  GREEK CAPITAL LETTER KAPPA
-    0x039b: 0xcb,      #  GREEK CAPITAL LETTER LAMDA
-    0x039c: 0xcc,      #  GREEK CAPITAL LETTER MU
-    0x039d: 0xcd,      #  GREEK CAPITAL LETTER NU
-    0x039e: 0xce,      #  GREEK CAPITAL LETTER XI
-    0x039f: 0xcf,      #  GREEK CAPITAL LETTER OMICRON
-    0x03a0: 0xd0,      #  GREEK CAPITAL LETTER PI
-    0x03a1: 0xd1,      #  GREEK CAPITAL LETTER RHO
-    0x03a3: 0xd3,      #  GREEK CAPITAL LETTER SIGMA
-    0x03a4: 0xd4,      #  GREEK CAPITAL LETTER TAU
-    0x03a5: 0xd5,      #  GREEK CAPITAL LETTER UPSILON
-    0x03a6: 0xd6,      #  GREEK CAPITAL LETTER PHI
-    0x03a7: 0xd7,      #  GREEK CAPITAL LETTER CHI
-    0x03a8: 0xd8,      #  GREEK CAPITAL LETTER PSI
-    0x03a9: 0xd9,      #  GREEK CAPITAL LETTER OMEGA
-    0x03aa: 0xda,      #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03ab: 0xdb,      #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03ac: 0xdc,      #  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03ad: 0xdd,      #  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03ae: 0xde,      #  GREEK SMALL LETTER ETA WITH TONOS
-    0x03af: 0xdf,      #  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03b0: 0xe0,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03b1: 0xe1,      #  GREEK SMALL LETTER ALPHA
-    0x03b2: 0xe2,      #  GREEK SMALL LETTER BETA
-    0x03b3: 0xe3,      #  GREEK SMALL LETTER GAMMA
-    0x03b4: 0xe4,      #  GREEK SMALL LETTER DELTA
-    0x03b5: 0xe5,      #  GREEK SMALL LETTER EPSILON
-    0x03b6: 0xe6,      #  GREEK SMALL LETTER ZETA
-    0x03b7: 0xe7,      #  GREEK SMALL LETTER ETA
-    0x03b8: 0xe8,      #  GREEK SMALL LETTER THETA
-    0x03b9: 0xe9,      #  GREEK SMALL LETTER IOTA
-    0x03ba: 0xea,      #  GREEK SMALL LETTER KAPPA
-    0x03bb: 0xeb,      #  GREEK SMALL LETTER LAMDA
-    0x03bc: 0xec,      #  GREEK SMALL LETTER MU
-    0x03bd: 0xed,      #  GREEK SMALL LETTER NU
-    0x03be: 0xee,      #  GREEK SMALL LETTER XI
-    0x03bf: 0xef,      #  GREEK SMALL LETTER OMICRON
-    0x03c0: 0xf0,      #  GREEK SMALL LETTER PI
-    0x03c1: 0xf1,      #  GREEK SMALL LETTER RHO
-    0x03c2: 0xf2,      #  GREEK SMALL LETTER FINAL SIGMA
-    0x03c3: 0xf3,      #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0xf4,      #  GREEK SMALL LETTER TAU
-    0x03c5: 0xf5,      #  GREEK SMALL LETTER UPSILON
-    0x03c6: 0xf6,      #  GREEK SMALL LETTER PHI
-    0x03c7: 0xf7,      #  GREEK SMALL LETTER CHI
-    0x03c8: 0xf8,      #  GREEK SMALL LETTER PSI
-    0x03c9: 0xf9,      #  GREEK SMALL LETTER OMEGA
-    0x03ca: 0xfa,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03cb: 0xfb,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03cc: 0xfc,      #  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03cd: 0xfd,      #  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03ce: 0xfe,      #  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x2015: 0xaf,      #  HORIZONTAL BAR
-    0x2018: 0xa1,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xa2,      #  RIGHT SINGLE QUOTATION MARK
-    0x20ac: 0xa4,      #  EURO SIGN
-    0x20af: 0xa5,      #  DRACHMA SIGN
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x037A: 0xAA,      #  GREEK YPOGEGRAMMENI
+    0x0384: 0xB4,      #  GREEK TONOS
+    0x0385: 0xB5,      #  GREEK DIALYTIKA TONOS
+    0x0386: 0xB6,      #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0388: 0xB8,      #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x0389: 0xB9,      #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x038A: 0xBA,      #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038C: 0xBC,      #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038E: 0xBE,      #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038F: 0xBF,      #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0390: 0xC0,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x0391: 0xC1,      #  GREEK CAPITAL LETTER ALPHA
+    0x0392: 0xC2,      #  GREEK CAPITAL LETTER BETA
+    0x0393: 0xC3,      #  GREEK CAPITAL LETTER GAMMA
+    0x0394: 0xC4,      #  GREEK CAPITAL LETTER DELTA
+    0x0395: 0xC5,      #  GREEK CAPITAL LETTER EPSILON
+    0x0396: 0xC6,      #  GREEK CAPITAL LETTER ZETA
+    0x0397: 0xC7,      #  GREEK CAPITAL LETTER ETA
+    0x0398: 0xC8,      #  GREEK CAPITAL LETTER THETA
+    0x0399: 0xC9,      #  GREEK CAPITAL LETTER IOTA
+    0x039A: 0xCA,      #  GREEK CAPITAL LETTER KAPPA
+    0x039B: 0xCB,      #  GREEK CAPITAL LETTER LAMDA
+    0x039C: 0xCC,      #  GREEK CAPITAL LETTER MU
+    0x039D: 0xCD,      #  GREEK CAPITAL LETTER NU
+    0x039E: 0xCE,      #  GREEK CAPITAL LETTER XI
+    0x039F: 0xCF,      #  GREEK CAPITAL LETTER OMICRON
+    0x03A0: 0xD0,      #  GREEK CAPITAL LETTER PI
+    0x03A1: 0xD1,      #  GREEK CAPITAL LETTER RHO
+    0x03A3: 0xD3,      #  GREEK CAPITAL LETTER SIGMA
+    0x03A4: 0xD4,      #  GREEK CAPITAL LETTER TAU
+    0x03A5: 0xD5,      #  GREEK CAPITAL LETTER UPSILON
+    0x03A6: 0xD6,      #  GREEK CAPITAL LETTER PHI
+    0x03A7: 0xD7,      #  GREEK CAPITAL LETTER CHI
+    0x03A8: 0xD8,      #  GREEK CAPITAL LETTER PSI
+    0x03A9: 0xD9,      #  GREEK CAPITAL LETTER OMEGA
+    0x03AA: 0xDA,      #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03AB: 0xDB,      #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03AC: 0xDC,      #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03AD: 0xDD,      #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03AE: 0xDE,      #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03AF: 0xDF,      #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03B0: 0xE0,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x03B1: 0xE1,      #  GREEK SMALL LETTER ALPHA
+    0x03B2: 0xE2,      #  GREEK SMALL LETTER BETA
+    0x03B3: 0xE3,      #  GREEK SMALL LETTER GAMMA
+    0x03B4: 0xE4,      #  GREEK SMALL LETTER DELTA
+    0x03B5: 0xE5,      #  GREEK SMALL LETTER EPSILON
+    0x03B6: 0xE6,      #  GREEK SMALL LETTER ZETA
+    0x03B7: 0xE7,      #  GREEK SMALL LETTER ETA
+    0x03B8: 0xE8,      #  GREEK SMALL LETTER THETA
+    0x03B9: 0xE9,      #  GREEK SMALL LETTER IOTA
+    0x03BA: 0xEA,      #  GREEK SMALL LETTER KAPPA
+    0x03BB: 0xEB,      #  GREEK SMALL LETTER LAMDA
+    0x03BC: 0xEC,      #  GREEK SMALL LETTER MU
+    0x03BD: 0xED,      #  GREEK SMALL LETTER NU
+    0x03BE: 0xEE,      #  GREEK SMALL LETTER XI
+    0x03BF: 0xEF,      #  GREEK SMALL LETTER OMICRON
+    0x03C0: 0xF0,      #  GREEK SMALL LETTER PI
+    0x03C1: 0xF1,      #  GREEK SMALL LETTER RHO
+    0x03C2: 0xF2,      #  GREEK SMALL LETTER FINAL SIGMA
+    0x03C3: 0xF3,      #  GREEK SMALL LETTER SIGMA
+    0x03C4: 0xF4,      #  GREEK SMALL LETTER TAU
+    0x03C5: 0xF5,      #  GREEK SMALL LETTER UPSILON
+    0x03C6: 0xF6,      #  GREEK SMALL LETTER PHI
+    0x03C7: 0xF7,      #  GREEK SMALL LETTER CHI
+    0x03C8: 0xF8,      #  GREEK SMALL LETTER PSI
+    0x03C9: 0xF9,      #  GREEK SMALL LETTER OMEGA
+    0x03CA: 0xFA,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03CB: 0xFB,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03CC: 0xFC,      #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03CD: 0xFD,      #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03CE: 0xFE,      #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x2015: 0xAF,      #  HORIZONTAL BAR
+    0x2018: 0xA1,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xA2,      #  RIGHT SINGLE QUOTATION MARK
+    0x20AC: 0xA4,      #  EURO SIGN
+    0x20AF: 0xA5,      #  DRACHMA SIGN
+}
+
index 118872c396e06f735e616864509edfabf565a6c7..259daea391cb1525f0afd21cbc8a648a18025d3a 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,43 +186,43 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
     u'\ufffe'
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\xd7'    #  0xaa -> MULTIPLICATION SIGN
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\xf7'    #  0xba -> DIVISION SIGN
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\xd7'    #  0xAA -> MULTIPLICATION SIGN
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\xf7'    #  0xBA -> DIVISION SIGN
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -255,38 +255,38 @@ decoding_table = (
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u2017'  #  0xdf -> DOUBLE LOW LINE
-    u'\u05d0'  #  0xe0 -> HEBREW LETTER ALEF
-    u'\u05d1'  #  0xe1 -> HEBREW LETTER BET
-    u'\u05d2'  #  0xe2 -> HEBREW LETTER GIMEL
-    u'\u05d3'  #  0xe3 -> HEBREW LETTER DALET
-    u'\u05d4'  #  0xe4 -> HEBREW LETTER HE
-    u'\u05d5'  #  0xe5 -> HEBREW LETTER VAV
-    u'\u05d6'  #  0xe6 -> HEBREW LETTER ZAYIN
-    u'\u05d7'  #  0xe7 -> HEBREW LETTER HET
-    u'\u05d8'  #  0xe8 -> HEBREW LETTER TET
-    u'\u05d9'  #  0xe9 -> HEBREW LETTER YOD
-    u'\u05da'  #  0xea -> HEBREW LETTER FINAL KAF
-    u'\u05db'  #  0xeb -> HEBREW LETTER KAF
-    u'\u05dc'  #  0xec -> HEBREW LETTER LAMED
-    u'\u05dd'  #  0xed -> HEBREW LETTER FINAL MEM
-    u'\u05de'  #  0xee -> HEBREW LETTER MEM
-    u'\u05df'  #  0xef -> HEBREW LETTER FINAL NUN
-    u'\u05e0'  #  0xf0 -> HEBREW LETTER NUN
-    u'\u05e1'  #  0xf1 -> HEBREW LETTER SAMEKH
-    u'\u05e2'  #  0xf2 -> HEBREW LETTER AYIN
-    u'\u05e3'  #  0xf3 -> HEBREW LETTER FINAL PE
-    u'\u05e4'  #  0xf4 -> HEBREW LETTER PE
-    u'\u05e5'  #  0xf5 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'  #  0xf6 -> HEBREW LETTER TSADI
-    u'\u05e7'  #  0xf7 -> HEBREW LETTER QOF
-    u'\u05e8'  #  0xf8 -> HEBREW LETTER RESH
-    u'\u05e9'  #  0xf9 -> HEBREW LETTER SHIN
-    u'\u05ea'  #  0xfa -> HEBREW LETTER TAV
+    u'\u2017'  #  0xDF -> DOUBLE LOW LINE
+    u'\u05d0'  #  0xE0 -> HEBREW LETTER ALEF
+    u'\u05d1'  #  0xE1 -> HEBREW LETTER BET
+    u'\u05d2'  #  0xE2 -> HEBREW LETTER GIMEL
+    u'\u05d3'  #  0xE3 -> HEBREW LETTER DALET
+    u'\u05d4'  #  0xE4 -> HEBREW LETTER HE
+    u'\u05d5'  #  0xE5 -> HEBREW LETTER VAV
+    u'\u05d6'  #  0xE6 -> HEBREW LETTER ZAYIN
+    u'\u05d7'  #  0xE7 -> HEBREW LETTER HET
+    u'\u05d8'  #  0xE8 -> HEBREW LETTER TET
+    u'\u05d9'  #  0xE9 -> HEBREW LETTER YOD
+    u'\u05da'  #  0xEA -> HEBREW LETTER FINAL KAF
+    u'\u05db'  #  0xEB -> HEBREW LETTER KAF
+    u'\u05dc'  #  0xEC -> HEBREW LETTER LAMED
+    u'\u05dd'  #  0xED -> HEBREW LETTER FINAL MEM
+    u'\u05de'  #  0xEE -> HEBREW LETTER MEM
+    u'\u05df'  #  0xEF -> HEBREW LETTER FINAL NUN
+    u'\u05e0'  #  0xF0 -> HEBREW LETTER NUN
+    u'\u05e1'  #  0xF1 -> HEBREW LETTER SAMEKH
+    u'\u05e2'  #  0xF2 -> HEBREW LETTER AYIN
+    u'\u05e3'  #  0xF3 -> HEBREW LETTER FINAL PE
+    u'\u05e4'  #  0xF4 -> HEBREW LETTER PE
+    u'\u05e5'  #  0xF5 -> HEBREW LETTER FINAL TSADI
+    u'\u05e6'  #  0xF6 -> HEBREW LETTER TSADI
+    u'\u05e7'  #  0xF7 -> HEBREW LETTER QOF
+    u'\u05e8'  #  0xF8 -> HEBREW LETTER RESH
+    u'\u05e9'  #  0xF9 -> HEBREW LETTER SHIN
+    u'\u05ea'  #  0xFA -> HEBREW LETTER TAV
     u'\ufffe'
     u'\ufffe'
-    u'\u200e'  #  0xfd -> LEFT-TO-RIGHT MARK
-    u'\u200f'  #  0xfe -> RIGHT-TO-LEFT MARK
+    u'\u200e'  #  0xFD -> LEFT-TO-RIGHT MARK
+    u'\u200f'  #  0xFE -> RIGHT-TO-LEFT MARK
     u'\ufffe'
 )
 
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,70 +447,71 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00d7: 0xaa,      #  MULTIPLICATION SIGN
-    0x00f7: 0xba,      #  DIVISION SIGN
-    0x05d0: 0xe0,      #  HEBREW LETTER ALEF
-    0x05d1: 0xe1,      #  HEBREW LETTER BET
-    0x05d2: 0xe2,      #  HEBREW LETTER GIMEL
-    0x05d3: 0xe3,      #  HEBREW LETTER DALET
-    0x05d4: 0xe4,      #  HEBREW LETTER HE
-    0x05d5: 0xe5,      #  HEBREW LETTER VAV
-    0x05d6: 0xe6,      #  HEBREW LETTER ZAYIN
-    0x05d7: 0xe7,      #  HEBREW LETTER HET
-    0x05d8: 0xe8,      #  HEBREW LETTER TET
-    0x05d9: 0xe9,      #  HEBREW LETTER YOD
-    0x05da: 0xea,      #  HEBREW LETTER FINAL KAF
-    0x05db: 0xeb,      #  HEBREW LETTER KAF
-    0x05dc: 0xec,      #  HEBREW LETTER LAMED
-    0x05dd: 0xed,      #  HEBREW LETTER FINAL MEM
-    0x05de: 0xee,      #  HEBREW LETTER MEM
-    0x05df: 0xef,      #  HEBREW LETTER FINAL NUN
-    0x05e0: 0xf0,      #  HEBREW LETTER NUN
-    0x05e1: 0xf1,      #  HEBREW LETTER SAMEKH
-    0x05e2: 0xf2,      #  HEBREW LETTER AYIN
-    0x05e3: 0xf3,      #  HEBREW LETTER FINAL PE
-    0x05e4: 0xf4,      #  HEBREW LETTER PE
-    0x05e5: 0xf5,      #  HEBREW LETTER FINAL TSADI
-    0x05e6: 0xf6,      #  HEBREW LETTER TSADI
-    0x05e7: 0xf7,      #  HEBREW LETTER QOF
-    0x05e8: 0xf8,      #  HEBREW LETTER RESH
-    0x05e9: 0xf9,      #  HEBREW LETTER SHIN
-    0x05ea: 0xfa,      #  HEBREW LETTER TAV
-    0x200e: 0xfd,      #  LEFT-TO-RIGHT MARK
-    0x200f: 0xfe,      #  RIGHT-TO-LEFT MARK
-    0x2017: 0xdf,      #  DOUBLE LOW LINE
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00D7: 0xAA,      #  MULTIPLICATION SIGN
+    0x00F7: 0xBA,      #  DIVISION SIGN
+    0x05D0: 0xE0,      #  HEBREW LETTER ALEF
+    0x05D1: 0xE1,      #  HEBREW LETTER BET
+    0x05D2: 0xE2,      #  HEBREW LETTER GIMEL
+    0x05D3: 0xE3,      #  HEBREW LETTER DALET
+    0x05D4: 0xE4,      #  HEBREW LETTER HE
+    0x05D5: 0xE5,      #  HEBREW LETTER VAV
+    0x05D6: 0xE6,      #  HEBREW LETTER ZAYIN
+    0x05D7: 0xE7,      #  HEBREW LETTER HET
+    0x05D8: 0xE8,      #  HEBREW LETTER TET
+    0x05D9: 0xE9,      #  HEBREW LETTER YOD
+    0x05DA: 0xEA,      #  HEBREW LETTER FINAL KAF
+    0x05DB: 0xEB,      #  HEBREW LETTER KAF
+    0x05DC: 0xEC,      #  HEBREW LETTER LAMED
+    0x05DD: 0xED,      #  HEBREW LETTER FINAL MEM
+    0x05DE: 0xEE,      #  HEBREW LETTER MEM
+    0x05DF: 0xEF,      #  HEBREW LETTER FINAL NUN
+    0x05E0: 0xF0,      #  HEBREW LETTER NUN
+    0x05E1: 0xF1,      #  HEBREW LETTER SAMEKH
+    0x05E2: 0xF2,      #  HEBREW LETTER AYIN
+    0x05E3: 0xF3,      #  HEBREW LETTER FINAL PE
+    0x05E4: 0xF4,      #  HEBREW LETTER PE
+    0x05E5: 0xF5,      #  HEBREW LETTER FINAL TSADI
+    0x05E6: 0xF6,      #  HEBREW LETTER TSADI
+    0x05E7: 0xF7,      #  HEBREW LETTER QOF
+    0x05E8: 0xF8,      #  HEBREW LETTER RESH
+    0x05E9: 0xF9,      #  HEBREW LETTER SHIN
+    0x05EA: 0xFA,      #  HEBREW LETTER TAV
+    0x200E: 0xFD,      #  LEFT-TO-RIGHT MARK
+    0x200F: 0xFE,      #  RIGHT-TO-LEFT MARK
+    0x2017: 0xDF,      #  DOUBLE LOW LINE
+}
+
index b9152d14acb9a939ad5de58e6d38f747f77097a2..0e32834d3c332cd67a475ab99283b2d2b798d7be 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,108 +186,108 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
-    u'\xa0'    #  0xa0 -> NO-BREAK SPACE
-    u'\xa1'    #  0xa1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa4'    #  0xa4 -> CURRENCY SIGN
-    u'\xa5'    #  0xa5 -> YEN SIGN
-    u'\xa6'    #  0xa6 -> BROKEN BAR
-    u'\xa7'    #  0xa7 -> SECTION SIGN
-    u'\xa8'    #  0xa8 -> DIAERESIS
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\xaa'    #  0xaa -> FEMININE ORDINAL INDICATOR
-    u'\xab'    #  0xab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'    #  0xac -> NOT SIGN
-    u'\xad'    #  0xad -> SOFT HYPHEN
-    u'\xae'    #  0xae -> REGISTERED SIGN
-    u'\xaf'    #  0xaf -> MACRON
-    u'\xb0'    #  0xb0 -> DEGREE SIGN
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\xb2'    #  0xb2 -> SUPERSCRIPT TWO
-    u'\xb3'    #  0xb3 -> SUPERSCRIPT THREE
-    u'\xb4'    #  0xb4 -> ACUTE ACCENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\xb6'    #  0xb6 -> PILCROW SIGN
-    u'\xb7'    #  0xb7 -> MIDDLE DOT
-    u'\xb8'    #  0xb8 -> CEDILLA
-    u'\xb9'    #  0xb9 -> SUPERSCRIPT ONE
-    u'\xba'    #  0xba -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'    #  0xbb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'    #  0xbc -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'    #  0xbd -> VULGAR FRACTION ONE HALF
-    u'\xbe'    #  0xbe -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'    #  0xbf -> INVERTED QUESTION MARK
-    u'\xc0'    #  0xc0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'    #  0xc1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'    #  0xc2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'    #  0xc3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'    #  0xc4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'    #  0xc5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'    #  0xc6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'    #  0xc7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'    #  0xc8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'    #  0xc9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'    #  0xca -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'    #  0xcb -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'    #  0xcc -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'    #  0xcd -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xce -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xcf -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u011e'  #  0xd0 -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\xd1'    #  0xd1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'    #  0xd2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'    #  0xd3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xd4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'    #  0xd5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'    #  0xd6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'    #  0xd7 -> MULTIPLICATION SIGN
-    u'\xd8'    #  0xd8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'    #  0xd9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'    #  0xda -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xdb -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'    #  0xdc -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0130'  #  0xdd -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u015e'  #  0xde -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\xdf'    #  0xdf -> LATIN SMALL LETTER SHARP S
-    u'\xe0'    #  0xe0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'    #  0xe1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'    #  0xe2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'    #  0xe3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'    #  0xe4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'    #  0xe5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'    #  0xe6 -> LATIN SMALL LETTER AE
-    u'\xe7'    #  0xe7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'    #  0xe8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'    #  0xe9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'    #  0xea -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'    #  0xeb -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'    #  0xec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'    #  0xed -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'    #  0xee -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'    #  0xef -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u011f'  #  0xf0 -> LATIN SMALL LETTER G WITH BREVE
-    u'\xf1'    #  0xf1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'    #  0xf2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'    #  0xf3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'    #  0xf4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'    #  0xf5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'    #  0xf6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0xf7 -> DIVISION SIGN
-    u'\xf8'    #  0xf8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'    #  0xf9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'    #  0xfa -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'    #  0xfb -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0xfc -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0131'  #  0xfd -> LATIN SMALL LETTER DOTLESS I
-    u'\u015f'  #  0xfe -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xff'    #  0xff -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
+    u'\xa0'    #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'    #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa4'    #  0xA4 -> CURRENCY SIGN
+    u'\xa5'    #  0xA5 -> YEN SIGN
+    u'\xa6'    #  0xA6 -> BROKEN BAR
+    u'\xa7'    #  0xA7 -> SECTION SIGN
+    u'\xa8'    #  0xA8 -> DIAERESIS
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'    #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'    #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'    #  0xAC -> NOT SIGN
+    u'\xad'    #  0xAD -> SOFT HYPHEN
+    u'\xae'    #  0xAE -> REGISTERED SIGN
+    u'\xaf'    #  0xAF -> MACRON
+    u'\xb0'    #  0xB0 -> DEGREE SIGN
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'    #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'    #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'    #  0xB4 -> ACUTE ACCENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\xb6'    #  0xB6 -> PILCROW SIGN
+    u'\xb7'    #  0xB7 -> MIDDLE DOT
+    u'\xb8'    #  0xB8 -> CEDILLA
+    u'\xb9'    #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'    #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'    #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'    #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'    #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'    #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'    #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'    #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'    #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'    #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'    #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'    #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'    #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'    #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'    #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'    #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'    #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'    #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'    #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'    #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'    #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u011e'  #  0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\xd1'    #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'    #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'    #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'    #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'    #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'    #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'    #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'    #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'    #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'    #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0130'  #  0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'\u015e'  #  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\xdf'    #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'    #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'    #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'    #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'    #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'    #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'    #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'    #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'    #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'    #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'    #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'    #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'    #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'    #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'    #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'    #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'    #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u011f'  #  0xF0 -> LATIN SMALL LETTER G WITH BREVE
+    u'\xf1'    #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'    #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'    #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'    #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'    #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'    #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0xF7 -> DIVISION SIGN
+    u'\xf8'    #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'    #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'    #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'    #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u0131'  #  0xFD -> LATIN SMALL LETTER DOTLESS I
+    u'\u015f'  #  0xFE -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\xff'    #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,106 +447,107 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x00a0: 0xa0,      #  NO-BREAK SPACE
-    0x00a1: 0xa1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a4: 0xa4,      #  CURRENCY SIGN
-    0x00a5: 0xa5,      #  YEN SIGN
-    0x00a6: 0xa6,      #  BROKEN BAR
-    0x00a7: 0xa7,      #  SECTION SIGN
-    0x00a8: 0xa8,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xaa,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xab,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xac,      #  NOT SIGN
-    0x00ad: 0xad,      #  SOFT HYPHEN
-    0x00ae: 0xae,      #  REGISTERED SIGN
-    0x00af: 0xaf,      #  MACRON
-    0x00b0: 0xb0,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0xb2,      #  SUPERSCRIPT TWO
-    0x00b3: 0xb3,      #  SUPERSCRIPT THREE
-    0x00b4: 0xb4,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xb6,      #  PILCROW SIGN
-    0x00b7: 0xb7,      #  MIDDLE DOT
-    0x00b8: 0xb8,      #  CEDILLA
-    0x00b9: 0xb9,      #  SUPERSCRIPT ONE
-    0x00ba: 0xba,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xbb,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0xbc,      #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0xbd,      #  VULGAR FRACTION ONE HALF
-    0x00be: 0xbe,      #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0xbf,      #  INVERTED QUESTION MARK
-    0x00c0: 0xc0,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xc1,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xc2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xc3,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0xc4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0xc5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xc6,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0xc7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xc8,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0xc9,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xca,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xcb,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xcc,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xcd,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xce,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xcf,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0xd1,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xd2,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xd3,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xd4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xd5,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0xd6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0xd7,      #  MULTIPLICATION SIGN
-    0x00d8: 0xd8,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xd9,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xda,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xdb,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0xdc,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xdf,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0xe0,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0xe1,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0xe2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0xe3,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0xe4,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0xe5,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xe6,      #  LATIN SMALL LETTER AE
-    0x00e7: 0xe7,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0xe8,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0xe9,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0xea,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0xeb,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0xec,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0xed,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0xee,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0xef,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0xf1,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0xf2,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0xf3,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0xf4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0xf5,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0xf6,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xf7,      #  DIVISION SIGN
-    0x00f8: 0xf8,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0xf9,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0xfa,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0xfb,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0xfc,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0xff,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011e: 0xd0,      #  LATIN CAPITAL LETTER G WITH BREVE
-    0x011f: 0xf0,      #  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0xdd,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0xfd,      #  LATIN SMALL LETTER DOTLESS I
-    0x015e: 0xde,      #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0xfe,      #  LATIN SMALL LETTER S WITH CEDILLA
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x00A0: 0xA0,      #  NO-BREAK SPACE
+    0x00A1: 0xA1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A4: 0xA4,      #  CURRENCY SIGN
+    0x00A5: 0xA5,      #  YEN SIGN
+    0x00A6: 0xA6,      #  BROKEN BAR
+    0x00A7: 0xA7,      #  SECTION SIGN
+    0x00A8: 0xA8,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xAA,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,      #  NOT SIGN
+    0x00AD: 0xAD,      #  SOFT HYPHEN
+    0x00AE: 0xAE,      #  REGISTERED SIGN
+    0x00AF: 0xAF,      #  MACRON
+    0x00B0: 0xB0,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,      #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,      #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xB6,      #  PILCROW SIGN
+    0x00B7: 0xB7,      #  MIDDLE DOT
+    0x00B8: 0xB8,      #  CEDILLA
+    0x00B9: 0xB9,      #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,      #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,      #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,      #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,      #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,      #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,      #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,      #  DIVISION SIGN
+    0x00F8: 0xF8,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xFF,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x011E: 0xD0,      #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xF0,      #  LATIN SMALL LETTER G WITH BREVE
+    0x0130: 0xDD,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0xFD,      #  LATIN SMALL LETTER DOTLESS I
+    0x015E: 0xDE,      #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xFE,      #  LATIN SMALL LETTER S WITH CEDILLA
+}
+
index fffc471a54f8d0cd0718357b505515b95b13ede8..34341c6903fd5b4619b9e51706494bd796a7a316 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u2500'  #  0x80 -> BOX DRAWINGS LIGHT HORIZONTAL
     u'\u2502'  #  0x81 -> BOX DRAWINGS LIGHT VERTICAL
     u'\u250c'  #  0x82 -> BOX DRAWINGS LIGHT DOWN AND RIGHT
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2524'  #  0x87 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
     u'\u252c'  #  0x88 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
     u'\u2534'  #  0x89 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u253c'  #  0x8a -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u2580'  #  0x8b -> UPPER HALF BLOCK
-    u'\u2584'  #  0x8c -> LOWER HALF BLOCK
-    u'\u2588'  #  0x8d -> FULL BLOCK
-    u'\u258c'  #  0x8e -> LEFT HALF BLOCK
-    u'\u2590'  #  0x8f -> RIGHT HALF BLOCK
+    u'\u253c'  #  0x8A -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u2580'  #  0x8B -> UPPER HALF BLOCK
+    u'\u2584'  #  0x8C -> LOWER HALF BLOCK
+    u'\u2588'  #  0x8D -> FULL BLOCK
+    u'\u258c'  #  0x8E -> LEFT HALF BLOCK
+    u'\u2590'  #  0x8F -> RIGHT HALF BLOCK
     u'\u2591'  #  0x90 -> LIGHT SHADE
     u'\u2592'  #  0x91 -> MEDIUM SHADE
     u'\u2593'  #  0x92 -> DARK SHADE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2248'  #  0x97 -> ALMOST EQUAL TO
     u'\u2264'  #  0x98 -> LESS-THAN OR EQUAL TO
     u'\u2265'  #  0x99 -> GREATER-THAN OR EQUAL TO
-    u'\xa0'    #  0x9a -> NO-BREAK SPACE
-    u'\u2321'  #  0x9b -> BOTTOM HALF INTEGRAL
-    u'\xb0'    #  0x9c -> DEGREE SIGN
-    u'\xb2'    #  0x9d -> SUPERSCRIPT TWO
-    u'\xb7'    #  0x9e -> MIDDLE DOT
-    u'\xf7'    #  0x9f -> DIVISION SIGN
-    u'\u2550'  #  0xa0 -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u2551'  #  0xa1 -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2552'  #  0xa2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u0451'  #  0xa3 -> CYRILLIC SMALL LETTER IO
-    u'\u2553'  #  0xa4 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u2554'  #  0xa5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2555'  #  0xa6 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2556'  #  0xa7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2557'  #  0xa8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u2558'  #  0xa9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2559'  #  0xaa -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u255a'  #  0xab -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u255b'  #  0xac -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u255c'  #  0xad -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255d'  #  0xae -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255e'  #  0xaf -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'  #  0xb0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u2560'  #  0xb1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2561'  #  0xb2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u0401'  #  0xb3 -> CYRILLIC CAPITAL LETTER IO
-    u'\u2562'  #  0xb4 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2563'  #  0xb5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2564'  #  0xb6 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'  #  0xb7 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2566'  #  0xb8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2567'  #  0xb9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'  #  0xba -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2569'  #  0xbb -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u256a'  #  0xbc -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u256b'  #  0xbd -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256c'  #  0xbe -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa9'    #  0xbf -> COPYRIGHT SIGN
-    u'\u044e'  #  0xc0 -> CYRILLIC SMALL LETTER YU
-    u'\u0430'  #  0xc1 -> CYRILLIC SMALL LETTER A
-    u'\u0431'  #  0xc2 -> CYRILLIC SMALL LETTER BE
-    u'\u0446'  #  0xc3 -> CYRILLIC SMALL LETTER TSE
-    u'\u0434'  #  0xc4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'  #  0xc5 -> CYRILLIC SMALL LETTER IE
-    u'\u0444'  #  0xc6 -> CYRILLIC SMALL LETTER EF
-    u'\u0433'  #  0xc7 -> CYRILLIC SMALL LETTER GHE
-    u'\u0445'  #  0xc8 -> CYRILLIC SMALL LETTER HA
-    u'\u0438'  #  0xc9 -> CYRILLIC SMALL LETTER I
-    u'\u0439'  #  0xca -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'  #  0xcb -> CYRILLIC SMALL LETTER KA
-    u'\u043b'  #  0xcc -> CYRILLIC SMALL LETTER EL
-    u'\u043c'  #  0xcd -> CYRILLIC SMALL LETTER EM
-    u'\u043d'  #  0xce -> CYRILLIC SMALL LETTER EN
-    u'\u043e'  #  0xcf -> CYRILLIC SMALL LETTER O
-    u'\u043f'  #  0xd0 -> CYRILLIC SMALL LETTER PE
-    u'\u044f'  #  0xd1 -> CYRILLIC SMALL LETTER YA
-    u'\u0440'  #  0xd2 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'  #  0xd3 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'  #  0xd4 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'  #  0xd5 -> CYRILLIC SMALL LETTER U
-    u'\u0436'  #  0xd6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0432'  #  0xd7 -> CYRILLIC SMALL LETTER VE
-    u'\u044c'  #  0xd8 -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044b'  #  0xd9 -> CYRILLIC SMALL LETTER YERU
-    u'\u0437'  #  0xda -> CYRILLIC SMALL LETTER ZE
-    u'\u0448'  #  0xdb -> CYRILLIC SMALL LETTER SHA
-    u'\u044d'  #  0xdc -> CYRILLIC SMALL LETTER E
-    u'\u0449'  #  0xdd -> CYRILLIC SMALL LETTER SHCHA
-    u'\u0447'  #  0xde -> CYRILLIC SMALL LETTER CHE
-    u'\u044a'  #  0xdf -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u042e'  #  0xe0 -> CYRILLIC CAPITAL LETTER YU
-    u'\u0410'  #  0xe1 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'  #  0xe2 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0426'  #  0xe3 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0414'  #  0xe4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'  #  0xe5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0424'  #  0xe6 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0413'  #  0xe7 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0425'  #  0xe8 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0418'  #  0xe9 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'  #  0xea -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'  #  0xeb -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'  #  0xec -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'  #  0xed -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'  #  0xee -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'  #  0xef -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'  #  0xf0 -> CYRILLIC CAPITAL LETTER PE
-    u'\u042f'  #  0xf1 -> CYRILLIC CAPITAL LETTER YA
-    u'\u0420'  #  0xf2 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'  #  0xf3 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'  #  0xf4 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'  #  0xf5 -> CYRILLIC CAPITAL LETTER U
-    u'\u0416'  #  0xf6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0412'  #  0xf7 -> CYRILLIC CAPITAL LETTER VE
-    u'\u042c'  #  0xf8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042b'  #  0xf9 -> CYRILLIC CAPITAL LETTER YERU
-    u'\u0417'  #  0xfa -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0428'  #  0xfb -> CYRILLIC CAPITAL LETTER SHA
-    u'\u042d'  #  0xfc -> CYRILLIC CAPITAL LETTER E
-    u'\u0429'  #  0xfd -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u0427'  #  0xfe -> CYRILLIC CAPITAL LETTER CHE
-    u'\u042a'  #  0xff -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\xa0'    #  0x9A -> NO-BREAK SPACE
+    u'\u2321'  #  0x9B -> BOTTOM HALF INTEGRAL
+    u'\xb0'    #  0x9C -> DEGREE SIGN
+    u'\xb2'    #  0x9D -> SUPERSCRIPT TWO
+    u'\xb7'    #  0x9E -> MIDDLE DOT
+    u'\xf7'    #  0x9F -> DIVISION SIGN
+    u'\u2550'  #  0xA0 -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u2551'  #  0xA1 -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2552'  #  0xA2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u0451'  #  0xA3 -> CYRILLIC SMALL LETTER IO
+    u'\u2553'  #  0xA4 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u2554'  #  0xA5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2555'  #  0xA6 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2556'  #  0xA7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2557'  #  0xA8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u2558'  #  0xA9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2559'  #  0xAA -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u255a'  #  0xAB -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u255b'  #  0xAC -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u255c'  #  0xAD -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255d'  #  0xAE -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255e'  #  0xAF -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'  #  0xB0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u2560'  #  0xB1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2561'  #  0xB2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u0401'  #  0xB3 -> CYRILLIC CAPITAL LETTER IO
+    u'\u2562'  #  0xB4 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2563'  #  0xB5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2564'  #  0xB6 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'  #  0xB7 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2566'  #  0xB8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2567'  #  0xB9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'  #  0xBA -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2569'  #  0xBB -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u256a'  #  0xBC -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u256b'  #  0xBD -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256c'  #  0xBE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa9'    #  0xBF -> COPYRIGHT SIGN
+    u'\u044e'  #  0xC0 -> CYRILLIC SMALL LETTER YU
+    u'\u0430'  #  0xC1 -> CYRILLIC SMALL LETTER A
+    u'\u0431'  #  0xC2 -> CYRILLIC SMALL LETTER BE
+    u'\u0446'  #  0xC3 -> CYRILLIC SMALL LETTER TSE
+    u'\u0434'  #  0xC4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'  #  0xC5 -> CYRILLIC SMALL LETTER IE
+    u'\u0444'  #  0xC6 -> CYRILLIC SMALL LETTER EF
+    u'\u0433'  #  0xC7 -> CYRILLIC SMALL LETTER GHE
+    u'\u0445'  #  0xC8 -> CYRILLIC SMALL LETTER HA
+    u'\u0438'  #  0xC9 -> CYRILLIC SMALL LETTER I
+    u'\u0439'  #  0xCA -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'  #  0xCB -> CYRILLIC SMALL LETTER KA
+    u'\u043b'  #  0xCC -> CYRILLIC SMALL LETTER EL
+    u'\u043c'  #  0xCD -> CYRILLIC SMALL LETTER EM
+    u'\u043d'  #  0xCE -> CYRILLIC SMALL LETTER EN
+    u'\u043e'  #  0xCF -> CYRILLIC SMALL LETTER O
+    u'\u043f'  #  0xD0 -> CYRILLIC SMALL LETTER PE
+    u'\u044f'  #  0xD1 -> CYRILLIC SMALL LETTER YA
+    u'\u0440'  #  0xD2 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'  #  0xD3 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'  #  0xD4 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'  #  0xD5 -> CYRILLIC SMALL LETTER U
+    u'\u0436'  #  0xD6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0432'  #  0xD7 -> CYRILLIC SMALL LETTER VE
+    u'\u044c'  #  0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044b'  #  0xD9 -> CYRILLIC SMALL LETTER YERU
+    u'\u0437'  #  0xDA -> CYRILLIC SMALL LETTER ZE
+    u'\u0448'  #  0xDB -> CYRILLIC SMALL LETTER SHA
+    u'\u044d'  #  0xDC -> CYRILLIC SMALL LETTER E
+    u'\u0449'  #  0xDD -> CYRILLIC SMALL LETTER SHCHA
+    u'\u0447'  #  0xDE -> CYRILLIC SMALL LETTER CHE
+    u'\u044a'  #  0xDF -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u042e'  #  0xE0 -> CYRILLIC CAPITAL LETTER YU
+    u'\u0410'  #  0xE1 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'  #  0xE2 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0426'  #  0xE3 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0414'  #  0xE4 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'  #  0xE5 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0424'  #  0xE6 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0413'  #  0xE7 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0425'  #  0xE8 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0418'  #  0xE9 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'  #  0xEA -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'  #  0xEB -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'  #  0xEC -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'  #  0xED -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'  #  0xEE -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'  #  0xEF -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'  #  0xF0 -> CYRILLIC CAPITAL LETTER PE
+    u'\u042f'  #  0xF1 -> CYRILLIC CAPITAL LETTER YA
+    u'\u0420'  #  0xF2 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'  #  0xF3 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'  #  0xF4 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'  #  0xF5 -> CYRILLIC CAPITAL LETTER U
+    u'\u0416'  #  0xF6 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0412'  #  0xF7 -> CYRILLIC CAPITAL LETTER VE
+    u'\u042c'  #  0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042b'  #  0xF9 -> CYRILLIC CAPITAL LETTER YERU
+    u'\u0417'  #  0xFA -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0428'  #  0xFB -> CYRILLIC CAPITAL LETTER SHA
+    u'\u042d'  #  0xFC -> CYRILLIC CAPITAL LETTER E
+    u'\u0429'  #  0xFD -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u0427'  #  0xFE -> CYRILLIC CAPITAL LETTER CHE
+    u'\u042a'  #  0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0x9a,      #  NO-BREAK SPACE
-    0x00a9: 0xbf,      #  COPYRIGHT SIGN
-    0x00b0: 0x9c,      #  DEGREE SIGN
-    0x00b2: 0x9d,      #  SUPERSCRIPT TWO
-    0x00b7: 0x9e,      #  MIDDLE DOT
-    0x00f7: 0x9f,      #  DIVISION SIGN
-    0x0401: 0xb3,      #  CYRILLIC CAPITAL LETTER IO
-    0x0410: 0xe1,      #  CYRILLIC CAPITAL LETTER A
-    0x0411: 0xe2,      #  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0xf7,      #  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0xe7,      #  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0xe4,      #  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0xe5,      #  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0xf6,      #  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0xfa,      #  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0xe9,      #  CYRILLIC CAPITAL LETTER I
-    0x0419: 0xea,      #  CYRILLIC CAPITAL LETTER SHORT I
-    0x041a: 0xeb,      #  CYRILLIC CAPITAL LETTER KA
-    0x041b: 0xec,      #  CYRILLIC CAPITAL LETTER EL
-    0x041c: 0xed,      #  CYRILLIC CAPITAL LETTER EM
-    0x041d: 0xee,      #  CYRILLIC CAPITAL LETTER EN
-    0x041e: 0xef,      #  CYRILLIC CAPITAL LETTER O
-    0x041f: 0xf0,      #  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0xf2,      #  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0xf3,      #  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0xf4,      #  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0xf5,      #  CYRILLIC CAPITAL LETTER U
-    0x0424: 0xe6,      #  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0xe8,      #  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0xe3,      #  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0xfe,      #  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0xfb,      #  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0xfd,      #  CYRILLIC CAPITAL LETTER SHCHA
-    0x042a: 0xff,      #  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042b: 0xf9,      #  CYRILLIC CAPITAL LETTER YERU
-    0x042c: 0xf8,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042d: 0xfc,      #  CYRILLIC CAPITAL LETTER E
-    0x042e: 0xe0,      #  CYRILLIC CAPITAL LETTER YU
-    0x042f: 0xf1,      #  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xc1,      #  CYRILLIC SMALL LETTER A
-    0x0431: 0xc2,      #  CYRILLIC SMALL LETTER BE
-    0x0432: 0xd7,      #  CYRILLIC SMALL LETTER VE
-    0x0433: 0xc7,      #  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xc4,      #  CYRILLIC SMALL LETTER DE
-    0x0435: 0xc5,      #  CYRILLIC SMALL LETTER IE
-    0x0436: 0xd6,      #  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xda,      #  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xc9,      #  CYRILLIC SMALL LETTER I
-    0x0439: 0xca,      #  CYRILLIC SMALL LETTER SHORT I
-    0x043a: 0xcb,      #  CYRILLIC SMALL LETTER KA
-    0x043b: 0xcc,      #  CYRILLIC SMALL LETTER EL
-    0x043c: 0xcd,      #  CYRILLIC SMALL LETTER EM
-    0x043d: 0xce,      #  CYRILLIC SMALL LETTER EN
-    0x043e: 0xcf,      #  CYRILLIC SMALL LETTER O
-    0x043f: 0xd0,      #  CYRILLIC SMALL LETTER PE
-    0x0440: 0xd2,      #  CYRILLIC SMALL LETTER ER
-    0x0441: 0xd3,      #  CYRILLIC SMALL LETTER ES
-    0x0442: 0xd4,      #  CYRILLIC SMALL LETTER TE
-    0x0443: 0xd5,      #  CYRILLIC SMALL LETTER U
-    0x0444: 0xc6,      #  CYRILLIC SMALL LETTER EF
-    0x0445: 0xc8,      #  CYRILLIC SMALL LETTER HA
-    0x0446: 0xc3,      #  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xde,      #  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xdb,      #  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xdd,      #  CYRILLIC SMALL LETTER SHCHA
-    0x044a: 0xdf,      #  CYRILLIC SMALL LETTER HARD SIGN
-    0x044b: 0xd9,      #  CYRILLIC SMALL LETTER YERU
-    0x044c: 0xd8,      #  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044d: 0xdc,      #  CYRILLIC SMALL LETTER E
-    0x044e: 0xc0,      #  CYRILLIC SMALL LETTER YU
-    0x044f: 0xd1,      #  CYRILLIC SMALL LETTER YA
-    0x0451: 0xa3,      #  CYRILLIC SMALL LETTER IO
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0x9A,      #  NO-BREAK SPACE
+    0x00A9: 0xBF,      #  COPYRIGHT SIGN
+    0x00B0: 0x9C,      #  DEGREE SIGN
+    0x00B2: 0x9D,      #  SUPERSCRIPT TWO
+    0x00B7: 0x9E,      #  MIDDLE DOT
+    0x00F7: 0x9F,      #  DIVISION SIGN
+    0x0401: 0xB3,      #  CYRILLIC CAPITAL LETTER IO
+    0x0410: 0xE1,      #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0xE2,      #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0xF7,      #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0xE7,      #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0xE4,      #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0xE5,      #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0xF6,      #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0xFA,      #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0xE9,      #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0xEA,      #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041A: 0xEB,      #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0xEC,      #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0xED,      #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0xEE,      #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0xEF,      #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0xF0,      #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0xF2,      #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0xF3,      #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0xF4,      #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0xF5,      #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0xE6,      #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0xE8,      #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0xE3,      #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0xFE,      #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0xFB,      #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0xFD,      #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042A: 0xFF,      #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0xF9,      #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0xF8,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0xFC,      #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0xE0,      #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0xF1,      #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xC1,      #  CYRILLIC SMALL LETTER A
+    0x0431: 0xC2,      #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xD7,      #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xC7,      #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xC4,      #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xC5,      #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xD6,      #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xDA,      #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xC9,      #  CYRILLIC SMALL LETTER I
+    0x0439: 0xCA,      #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xCB,      #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xCC,      #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xCD,      #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xCE,      #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xCF,      #  CYRILLIC SMALL LETTER O
+    0x043F: 0xD0,      #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xD2,      #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xD3,      #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xD4,      #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xD5,      #  CYRILLIC SMALL LETTER U
+    0x0444: 0xC6,      #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xC8,      #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xC3,      #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xDE,      #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xDB,      #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xDD,      #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xDF,      #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xD9,      #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xD8,      #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xDC,      #  CYRILLIC SMALL LETTER E
+    0x044E: 0xC0,      #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xD1,      #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xA3,      #  CYRILLIC SMALL LETTER IO
     0x2219: 0x95,      #  BULLET OPERATOR
-    0x221a: 0x96,      #  SQUARE ROOT
+    0x221A: 0x96,      #  SQUARE ROOT
     0x2248: 0x97,      #  ALMOST EQUAL TO
     0x2264: 0x98,      #  LESS-THAN OR EQUAL TO
     0x2265: 0x99,      #  GREATER-THAN OR EQUAL TO
     0x2320: 0x93,      #  TOP HALF INTEGRAL
-    0x2321: 0x9b,      #  BOTTOM HALF INTEGRAL
+    0x2321: 0x9B,      #  BOTTOM HALF INTEGRAL
     0x2500: 0x80,      #  BOX DRAWINGS LIGHT HORIZONTAL
     0x2502: 0x81,      #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x82,      #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x250C: 0x82,      #  BOX DRAWINGS LIGHT DOWN AND RIGHT
     0x2510: 0x83,      #  BOX DRAWINGS LIGHT DOWN AND LEFT
     0x2514: 0x84,      #  BOX DRAWINGS LIGHT UP AND RIGHT
     0x2518: 0x85,      #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x86,      #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x251C: 0x86,      #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
     0x2524: 0x87,      #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x88,      #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x252C: 0x88,      #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
     0x2534: 0x89,      #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x8a,      #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0xa0,      #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0xa1,      #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0xa2,      #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0xa4,      #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0xa5,      #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0xa6,      #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0xa7,      #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0xa8,      #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0xa9,      #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0xaa,      #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0xab,      #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0xac,      #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0xad,      #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0xae,      #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0xaf,      #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0xb0,      #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0xb1,      #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0xb2,      #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0xb4,      #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0xb5,      #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0xb6,      #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0xb7,      #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0xb8,      #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0xb9,      #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0xba,      #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0xbb,      #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0xbc,      #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0xbd,      #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0xbe,      #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x8b,      #  UPPER HALF BLOCK
-    0x2584: 0x8c,      #  LOWER HALF BLOCK
-    0x2588: 0x8d,      #  FULL BLOCK
-    0x258c: 0x8e,      #  LEFT HALF BLOCK
-    0x2590: 0x8f,      #  RIGHT HALF BLOCK
+    0x253C: 0x8A,      #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0xA0,      #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0xA1,      #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0xA2,      #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0xA4,      #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0xA5,      #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0xA6,      #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0xA7,      #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0xA8,      #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0xA9,      #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0xAA,      #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255A: 0xAB,      #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255B: 0xAC,      #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255C: 0xAD,      #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255D: 0xAE,      #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255E: 0xAF,      #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255F: 0xB0,      #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0xB1,      #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0xB2,      #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0xB4,      #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0xB5,      #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0xB6,      #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0xB7,      #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0xB8,      #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0xB9,      #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0xBA,      #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0xBB,      #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256A: 0xBC,      #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256B: 0xBD,      #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256C: 0xBE,      #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x8B,      #  UPPER HALF BLOCK
+    0x2584: 0x8C,      #  LOWER HALF BLOCK
+    0x2588: 0x8D,      #  FULL BLOCK
+    0x258C: 0x8E,      #  LEFT HALF BLOCK
+    0x2590: 0x8F,      #  RIGHT HALF BLOCK
     0x2591: 0x90,      #  LIGHT SHADE
     0x2592: 0x91,      #  MEDIUM SHADE
     0x2593: 0x92,      #  DARK SHADE
-    0x25a0: 0x94,      #  BLACK SQUARE
-}
\ No newline at end of file
+    0x25A0: 0x94,      #  BLACK SQUARE
+}
+
index c5180d023387af050dc84e02b5f4b31e4fa7738f..a9a64f632bfd782cf9fffa9dd5b415c86a23ed0b 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\u2500'  #  0x80 -> BOX DRAWINGS LIGHT HORIZONTAL
     u'\u2502'  #  0x81 -> BOX DRAWINGS LIGHT VERTICAL
     u'\u250c'  #  0x82 -> BOX DRAWINGS LIGHT DOWN AND RIGHT
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u2524'  #  0x87 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
     u'\u252c'  #  0x88 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
     u'\u2534'  #  0x89 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u253c'  #  0x8a -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u2580'  #  0x8b -> UPPER HALF BLOCK
-    u'\u2584'  #  0x8c -> LOWER HALF BLOCK
-    u'\u2588'  #  0x8d -> FULL BLOCK
-    u'\u258c'  #  0x8e -> LEFT HALF BLOCK
-    u'\u2590'  #  0x8f -> RIGHT HALF BLOCK
+    u'\u253c'  #  0x8A -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u2580'  #  0x8B -> UPPER HALF BLOCK
+    u'\u2584'  #  0x8C -> LOWER HALF BLOCK
+    u'\u2588'  #  0x8D -> FULL BLOCK
+    u'\u258c'  #  0x8E -> LEFT HALF BLOCK
+    u'\u2590'  #  0x8F -> RIGHT HALF BLOCK
     u'\u2591'  #  0x90 -> LIGHT SHADE
     u'\u2592'  #  0x91 -> MEDIUM SHADE
     u'\u2593'  #  0x92 -> DARK SHADE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u2248'  #  0x97 -> ALMOST EQUAL TO
     u'\u2264'  #  0x98 -> LESS-THAN OR EQUAL TO
     u'\u2265'  #  0x99 -> GREATER-THAN OR EQUAL TO
-    u'\xa0'    #  0x9a -> NO-BREAK SPACE
-    u'\u2321'  #  0x9b -> BOTTOM HALF INTEGRAL
-    u'\xb0'    #  0x9c -> DEGREE SIGN
-    u'\xb2'    #  0x9d -> SUPERSCRIPT TWO
-    u'\xb7'    #  0x9e -> MIDDLE DOT
-    u'\xf7'    #  0x9f -> DIVISION SIGN
-    u'\u2550'  #  0xa0 -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u2551'  #  0xa1 -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2552'  #  0xa2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u0451'  #  0xa3 -> CYRILLIC SMALL LETTER IO
-    u'\u0454'  #  0xa4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u2554'  #  0xa5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u0456'  #  0xa6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0457'  #  0xa7 -> CYRILLIC SMALL LETTER YI (UKRAINIAN)
-    u'\u2557'  #  0xa8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u2558'  #  0xa9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2559'  #  0xaa -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u255a'  #  0xab -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u255b'  #  0xac -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u0491'  #  0xad -> CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
-    u'\u255d'  #  0xae -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255e'  #  0xaf -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'  #  0xb0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u2560'  #  0xb1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2561'  #  0xb2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u0401'  #  0xb3 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0404'  #  0xb4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u2563'  #  0xb5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u0406'  #  0xb6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0407'  #  0xb7 -> CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
-    u'\u2566'  #  0xb8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2567'  #  0xb9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'  #  0xba -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2569'  #  0xbb -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u256a'  #  0xbc -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u0490'  #  0xbd -> CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
-    u'\u256c'  #  0xbe -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa9'    #  0xbf -> COPYRIGHT SIGN
-    u'\u044e'  #  0xc0 -> CYRILLIC SMALL LETTER YU
-    u'\u0430'  #  0xc1 -> CYRILLIC SMALL LETTER A
-    u'\u0431'  #  0xc2 -> CYRILLIC SMALL LETTER BE
-    u'\u0446'  #  0xc3 -> CYRILLIC SMALL LETTER TSE
-    u'\u0434'  #  0xc4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'  #  0xc5 -> CYRILLIC SMALL LETTER IE
-    u'\u0444'  #  0xc6 -> CYRILLIC SMALL LETTER EF
-    u'\u0433'  #  0xc7 -> CYRILLIC SMALL LETTER GHE
-    u'\u0445'  #  0xc8 -> CYRILLIC SMALL LETTER HA
-    u'\u0438'  #  0xc9 -> CYRILLIC SMALL LETTER I
-    u'\u0439'  #  0xca -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'  #  0xcb -> CYRILLIC SMALL LETTER KA
-    u'\u043b'  #  0xcc -> CYRILLIC SMALL LETTER EL
-    u'\u043c'  #  0xcd -> CYRILLIC SMALL LETTER EM
-    u'\u043d'  #  0xce -> CYRILLIC SMALL LETTER EN
-    u'\u043e'  #  0xcf -> CYRILLIC SMALL LETTER O
-    u'\u043f'  #  0xd0 -> CYRILLIC SMALL LETTER PE
-    u'\u044f'  #  0xd1 -> CYRILLIC SMALL LETTER YA
-    u'\u0440'  #  0xd2 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'  #  0xd3 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'  #  0xd4 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'  #  0xd5 -> CYRILLIC SMALL LETTER U
-    u'\u0436'  #  0xd6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0432'  #  0xd7 -> CYRILLIC SMALL LETTER VE
-    u'\u044c'  #  0xd8 -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044b'  #  0xd9 -> CYRILLIC SMALL LETTER YERU
-    u'\u0437'  #  0xda -> CYRILLIC SMALL LETTER ZE
-    u'\u0448'  #  0xdb -> CYRILLIC SMALL LETTER SHA
-    u'\u044d'  #  0xdc -> CYRILLIC SMALL LETTER E
-    u'\u0449'  #  0xdd -> CYRILLIC SMALL LETTER SHCHA
-    u'\u0447'  #  0xde -> CYRILLIC SMALL LETTER CHE
-    u'\u044a'  #  0xdf -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u042e'  #  0xe0 -> CYRILLIC CAPITAL LETTER YU
-    u'\u0410'  #  0xe1 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'  #  0xe2 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0426'  #  0xe3 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0414'  #  0xe4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'  #  0xe5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0424'  #  0xe6 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0413'  #  0xe7 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0425'  #  0xe8 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0418'  #  0xe9 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'  #  0xea -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'  #  0xeb -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'  #  0xec -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'  #  0xed -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'  #  0xee -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'  #  0xef -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'  #  0xf0 -> CYRILLIC CAPITAL LETTER PE
-    u'\u042f'  #  0xf1 -> CYRILLIC CAPITAL LETTER YA
-    u'\u0420'  #  0xf2 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'  #  0xf3 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'  #  0xf4 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'  #  0xf5 -> CYRILLIC CAPITAL LETTER U
-    u'\u0416'  #  0xf6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0412'  #  0xf7 -> CYRILLIC CAPITAL LETTER VE
-    u'\u042c'  #  0xf8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042b'  #  0xf9 -> CYRILLIC CAPITAL LETTER YERU
-    u'\u0417'  #  0xfa -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0428'  #  0xfb -> CYRILLIC CAPITAL LETTER SHA
-    u'\u042d'  #  0xfc -> CYRILLIC CAPITAL LETTER E
-    u'\u0429'  #  0xfd -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u0427'  #  0xfe -> CYRILLIC CAPITAL LETTER CHE
-    u'\u042a'  #  0xff -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\xa0'    #  0x9A -> NO-BREAK SPACE
+    u'\u2321'  #  0x9B -> BOTTOM HALF INTEGRAL
+    u'\xb0'    #  0x9C -> DEGREE SIGN
+    u'\xb2'    #  0x9D -> SUPERSCRIPT TWO
+    u'\xb7'    #  0x9E -> MIDDLE DOT
+    u'\xf7'    #  0x9F -> DIVISION SIGN
+    u'\u2550'  #  0xA0 -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u2551'  #  0xA1 -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2552'  #  0xA2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u0451'  #  0xA3 -> CYRILLIC SMALL LETTER IO
+    u'\u0454'  #  0xA4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\u2554'  #  0xA5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u0456'  #  0xA6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0457'  #  0xA7 -> CYRILLIC SMALL LETTER YI (UKRAINIAN)
+    u'\u2557'  #  0xA8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u2558'  #  0xA9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2559'  #  0xAA -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u255a'  #  0xAB -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u255b'  #  0xAC -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u0491'  #  0xAD -> CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
+    u'\u255d'  #  0xAE -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255e'  #  0xAF -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'  #  0xB0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u2560'  #  0xB1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2561'  #  0xB2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u0401'  #  0xB3 -> CYRILLIC CAPITAL LETTER IO
+    u'\u0404'  #  0xB4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\u2563'  #  0xB5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u0406'  #  0xB6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0407'  #  0xB7 -> CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
+    u'\u2566'  #  0xB8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2567'  #  0xB9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'  #  0xBA -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2569'  #  0xBB -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u256a'  #  0xBC -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u0490'  #  0xBD -> CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
+    u'\u256c'  #  0xBE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa9'    #  0xBF -> COPYRIGHT SIGN
+    u'\u044e'  #  0xC0 -> CYRILLIC SMALL LETTER YU
+    u'\u0430'  #  0xC1 -> CYRILLIC SMALL LETTER A
+    u'\u0431'  #  0xC2 -> CYRILLIC SMALL LETTER BE
+    u'\u0446'  #  0xC3 -> CYRILLIC SMALL LETTER TSE
+    u'\u0434'  #  0xC4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'  #  0xC5 -> CYRILLIC SMALL LETTER IE
+    u'\u0444'  #  0xC6 -> CYRILLIC SMALL LETTER EF
+    u'\u0433'  #  0xC7 -> CYRILLIC SMALL LETTER GHE
+    u'\u0445'  #  0xC8 -> CYRILLIC SMALL LETTER HA
+    u'\u0438'  #  0xC9 -> CYRILLIC SMALL LETTER I
+    u'\u0439'  #  0xCA -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'  #  0xCB -> CYRILLIC SMALL LETTER KA
+    u'\u043b'  #  0xCC -> CYRILLIC SMALL LETTER EL
+    u'\u043c'  #  0xCD -> CYRILLIC SMALL LETTER EM
+    u'\u043d'  #  0xCE -> CYRILLIC SMALL LETTER EN
+    u'\u043e'  #  0xCF -> CYRILLIC SMALL LETTER O
+    u'\u043f'  #  0xD0 -> CYRILLIC SMALL LETTER PE
+    u'\u044f'  #  0xD1 -> CYRILLIC SMALL LETTER YA
+    u'\u0440'  #  0xD2 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'  #  0xD3 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'  #  0xD4 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'  #  0xD5 -> CYRILLIC SMALL LETTER U
+    u'\u0436'  #  0xD6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0432'  #  0xD7 -> CYRILLIC SMALL LETTER VE
+    u'\u044c'  #  0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044b'  #  0xD9 -> CYRILLIC SMALL LETTER YERU
+    u'\u0437'  #  0xDA -> CYRILLIC SMALL LETTER ZE
+    u'\u0448'  #  0xDB -> CYRILLIC SMALL LETTER SHA
+    u'\u044d'  #  0xDC -> CYRILLIC SMALL LETTER E
+    u'\u0449'  #  0xDD -> CYRILLIC SMALL LETTER SHCHA
+    u'\u0447'  #  0xDE -> CYRILLIC SMALL LETTER CHE
+    u'\u044a'  #  0xDF -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u042e'  #  0xE0 -> CYRILLIC CAPITAL LETTER YU
+    u'\u0410'  #  0xE1 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'  #  0xE2 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0426'  #  0xE3 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0414'  #  0xE4 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'  #  0xE5 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0424'  #  0xE6 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0413'  #  0xE7 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0425'  #  0xE8 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0418'  #  0xE9 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'  #  0xEA -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'  #  0xEB -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'  #  0xEC -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'  #  0xED -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'  #  0xEE -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'  #  0xEF -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'  #  0xF0 -> CYRILLIC CAPITAL LETTER PE
+    u'\u042f'  #  0xF1 -> CYRILLIC CAPITAL LETTER YA
+    u'\u0420'  #  0xF2 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'  #  0xF3 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'  #  0xF4 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'  #  0xF5 -> CYRILLIC CAPITAL LETTER U
+    u'\u0416'  #  0xF6 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0412'  #  0xF7 -> CYRILLIC CAPITAL LETTER VE
+    u'\u042c'  #  0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042b'  #  0xF9 -> CYRILLIC CAPITAL LETTER YERU
+    u'\u0417'  #  0xFA -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0428'  #  0xFB -> CYRILLIC CAPITAL LETTER SHA
+    u'\u042d'  #  0xFC -> CYRILLIC CAPITAL LETTER E
+    u'\u0429'  #  0xFD -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u0427'  #  0xFE -> CYRILLIC CAPITAL LETTER CHE
+    u'\u042a'  #  0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
-    0x00a0: 0x9a,      #  NO-BREAK SPACE
-    0x00a9: 0xbf,      #  COPYRIGHT SIGN
-    0x00b0: 0x9c,      #  DEGREE SIGN
-    0x00b2: 0x9d,      #  SUPERSCRIPT TWO
-    0x00b7: 0x9e,      #  MIDDLE DOT
-    0x00f7: 0x9f,      #  DIVISION SIGN
-    0x0401: 0xb3,      #  CYRILLIC CAPITAL LETTER IO
-    0x0404: 0xb4,      #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0406: 0xb6,      #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0xb7,      #  CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
-    0x0410: 0xe1,      #  CYRILLIC CAPITAL LETTER A
-    0x0411: 0xe2,      #  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0xf7,      #  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0xe7,      #  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0xe4,      #  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0xe5,      #  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0xf6,      #  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0xfa,      #  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0xe9,      #  CYRILLIC CAPITAL LETTER I
-    0x0419: 0xea,      #  CYRILLIC CAPITAL LETTER SHORT I
-    0x041a: 0xeb,      #  CYRILLIC CAPITAL LETTER KA
-    0x041b: 0xec,      #  CYRILLIC CAPITAL LETTER EL
-    0x041c: 0xed,      #  CYRILLIC CAPITAL LETTER EM
-    0x041d: 0xee,      #  CYRILLIC CAPITAL LETTER EN
-    0x041e: 0xef,      #  CYRILLIC CAPITAL LETTER O
-    0x041f: 0xf0,      #  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0xf2,      #  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0xf3,      #  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0xf4,      #  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0xf5,      #  CYRILLIC CAPITAL LETTER U
-    0x0424: 0xe6,      #  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0xe8,      #  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0xe3,      #  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0xfe,      #  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0xfb,      #  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0xfd,      #  CYRILLIC CAPITAL LETTER SHCHA
-    0x042a: 0xff,      #  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042b: 0xf9,      #  CYRILLIC CAPITAL LETTER YERU
-    0x042c: 0xf8,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042d: 0xfc,      #  CYRILLIC CAPITAL LETTER E
-    0x042e: 0xe0,      #  CYRILLIC CAPITAL LETTER YU
-    0x042f: 0xf1,      #  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xc1,      #  CYRILLIC SMALL LETTER A
-    0x0431: 0xc2,      #  CYRILLIC SMALL LETTER BE
-    0x0432: 0xd7,      #  CYRILLIC SMALL LETTER VE
-    0x0433: 0xc7,      #  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xc4,      #  CYRILLIC SMALL LETTER DE
-    0x0435: 0xc5,      #  CYRILLIC SMALL LETTER IE
-    0x0436: 0xd6,      #  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xda,      #  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xc9,      #  CYRILLIC SMALL LETTER I
-    0x0439: 0xca,      #  CYRILLIC SMALL LETTER SHORT I
-    0x043a: 0xcb,      #  CYRILLIC SMALL LETTER KA
-    0x043b: 0xcc,      #  CYRILLIC SMALL LETTER EL
-    0x043c: 0xcd,      #  CYRILLIC SMALL LETTER EM
-    0x043d: 0xce,      #  CYRILLIC SMALL LETTER EN
-    0x043e: 0xcf,      #  CYRILLIC SMALL LETTER O
-    0x043f: 0xd0,      #  CYRILLIC SMALL LETTER PE
-    0x0440: 0xd2,      #  CYRILLIC SMALL LETTER ER
-    0x0441: 0xd3,      #  CYRILLIC SMALL LETTER ES
-    0x0442: 0xd4,      #  CYRILLIC SMALL LETTER TE
-    0x0443: 0xd5,      #  CYRILLIC SMALL LETTER U
-    0x0444: 0xc6,      #  CYRILLIC SMALL LETTER EF
-    0x0445: 0xc8,      #  CYRILLIC SMALL LETTER HA
-    0x0446: 0xc3,      #  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xde,      #  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xdb,      #  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xdd,      #  CYRILLIC SMALL LETTER SHCHA
-    0x044a: 0xdf,      #  CYRILLIC SMALL LETTER HARD SIGN
-    0x044b: 0xd9,      #  CYRILLIC SMALL LETTER YERU
-    0x044c: 0xd8,      #  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044d: 0xdc,      #  CYRILLIC SMALL LETTER E
-    0x044e: 0xc0,      #  CYRILLIC SMALL LETTER YU
-    0x044f: 0xd1,      #  CYRILLIC SMALL LETTER YA
-    0x0451: 0xa3,      #  CYRILLIC SMALL LETTER IO
-    0x0454: 0xa4,      #  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0456: 0xa6,      #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0xa7,      #  CYRILLIC SMALL LETTER YI (UKRAINIAN)
-    0x0490: 0xbd,      #  CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
-    0x0491: 0xad,      #  CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
+    0x00A0: 0x9A,      #  NO-BREAK SPACE
+    0x00A9: 0xBF,      #  COPYRIGHT SIGN
+    0x00B0: 0x9C,      #  DEGREE SIGN
+    0x00B2: 0x9D,      #  SUPERSCRIPT TWO
+    0x00B7: 0x9E,      #  MIDDLE DOT
+    0x00F7: 0x9F,      #  DIVISION SIGN
+    0x0401: 0xB3,      #  CYRILLIC CAPITAL LETTER IO
+    0x0404: 0xB4,      #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0406: 0xB6,      #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0407: 0xB7,      #  CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
+    0x0410: 0xE1,      #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0xE2,      #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0xF7,      #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0xE7,      #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0xE4,      #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0xE5,      #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0xF6,      #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0xFA,      #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0xE9,      #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0xEA,      #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041A: 0xEB,      #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0xEC,      #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0xED,      #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0xEE,      #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0xEF,      #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0xF0,      #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0xF2,      #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0xF3,      #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0xF4,      #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0xF5,      #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0xE6,      #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0xE8,      #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0xE3,      #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0xFE,      #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0xFB,      #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0xFD,      #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042A: 0xFF,      #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0xF9,      #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0xF8,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0xFC,      #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0xE0,      #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0xF1,      #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xC1,      #  CYRILLIC SMALL LETTER A
+    0x0431: 0xC2,      #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xD7,      #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xC7,      #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xC4,      #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xC5,      #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xD6,      #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xDA,      #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xC9,      #  CYRILLIC SMALL LETTER I
+    0x0439: 0xCA,      #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xCB,      #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xCC,      #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xCD,      #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xCE,      #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xCF,      #  CYRILLIC SMALL LETTER O
+    0x043F: 0xD0,      #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xD2,      #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xD3,      #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xD4,      #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xD5,      #  CYRILLIC SMALL LETTER U
+    0x0444: 0xC6,      #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xC8,      #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xC3,      #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xDE,      #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xDB,      #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xDD,      #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xDF,      #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xD9,      #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xD8,      #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xDC,      #  CYRILLIC SMALL LETTER E
+    0x044E: 0xC0,      #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xD1,      #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xA3,      #  CYRILLIC SMALL LETTER IO
+    0x0454: 0xA4,      #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0456: 0xA6,      #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0457: 0xA7,      #  CYRILLIC SMALL LETTER YI (UKRAINIAN)
+    0x0490: 0xBD,      #  CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
+    0x0491: 0xAD,      #  CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
     0x2219: 0x95,      #  BULLET OPERATOR
-    0x221a: 0x96,      #  SQUARE ROOT
+    0x221A: 0x96,      #  SQUARE ROOT
     0x2248: 0x97,      #  ALMOST EQUAL TO
     0x2264: 0x98,      #  LESS-THAN OR EQUAL TO
     0x2265: 0x99,      #  GREATER-THAN OR EQUAL TO
     0x2320: 0x93,      #  TOP HALF INTEGRAL
-    0x2321: 0x9b,      #  BOTTOM HALF INTEGRAL
+    0x2321: 0x9B,      #  BOTTOM HALF INTEGRAL
     0x2500: 0x80,      #  BOX DRAWINGS LIGHT HORIZONTAL
     0x2502: 0x81,      #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x82,      #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x250C: 0x82,      #  BOX DRAWINGS LIGHT DOWN AND RIGHT
     0x2510: 0x83,      #  BOX DRAWINGS LIGHT DOWN AND LEFT
     0x2514: 0x84,      #  BOX DRAWINGS LIGHT UP AND RIGHT
     0x2518: 0x85,      #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x86,      #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x251C: 0x86,      #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
     0x2524: 0x87,      #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x88,      #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x252C: 0x88,      #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
     0x2534: 0x89,      #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x8a,      #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0xa0,      #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0xa1,      #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0xa2,      #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2554: 0xa5,      #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0xa8,      #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0xa9,      #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0xaa,      #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0xab,      #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0xac,      #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255d: 0xae,      #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0xaf,      #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0xb0,      #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0xb1,      #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0xb2,      #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2563: 0xb5,      #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0xb8,      #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0xb9,      #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0xba,      #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0xbb,      #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0xbc,      #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256c: 0xbe,      #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x8b,      #  UPPER HALF BLOCK
-    0x2584: 0x8c,      #  LOWER HALF BLOCK
-    0x2588: 0x8d,      #  FULL BLOCK
-    0x258c: 0x8e,      #  LEFT HALF BLOCK
-    0x2590: 0x8f,      #  RIGHT HALF BLOCK
+    0x253C: 0x8A,      #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0xA0,      #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0xA1,      #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0xA2,      #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2554: 0xA5,      #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0xA8,      #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0xA9,      #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0xAA,      #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255A: 0xAB,      #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255B: 0xAC,      #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255D: 0xAE,      #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255E: 0xAF,      #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255F: 0xB0,      #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0xB1,      #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0xB2,      #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2563: 0xB5,      #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0xB8,      #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0xB9,      #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0xBA,      #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0xBB,      #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256A: 0xBC,      #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256C: 0xBE,      #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x8B,      #  UPPER HALF BLOCK
+    0x2584: 0x8C,      #  LOWER HALF BLOCK
+    0x2588: 0x8D,      #  FULL BLOCK
+    0x258C: 0x8E,      #  LEFT HALF BLOCK
+    0x2590: 0x8F,      #  RIGHT HALF BLOCK
     0x2591: 0x90,      #  LIGHT SHADE
     0x2592: 0x91,      #  MEDIUM SHADE
     0x2593: 0x92,      #  DARK SHADE
-    0x25a0: 0x94,      #  BLACK SQUARE
-}
\ No newline at end of file
+    0x25A0: 0x94,      #  BLACK SQUARE
+}
+
index 08a21af9f5d1ff3ed947caed2990cdee6ecfb066..dffc025ff1311d58679ecaf01436a34e9013f0de 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> CONTROL CHARACTER
     u'\x08'    #  0x08 -> CONTROL CHARACTER
     u'\t'      #  0x09 -> CONTROL CHARACTER
-    u'\n'      #  0x0a -> CONTROL CHARACTER
-    u'\x0b'    #  0x0b -> CONTROL CHARACTER
-    u'\x0c'    #  0x0c -> CONTROL CHARACTER
-    u'\r'      #  0x0d -> CONTROL CHARACTER
-    u'\x0e'    #  0x0e -> CONTROL CHARACTER
-    u'\x0f'    #  0x0f -> CONTROL CHARACTER
+    u'\n'      #  0x0A -> CONTROL CHARACTER
+    u'\x0b'    #  0x0B -> CONTROL CHARACTER
+    u'\x0c'    #  0x0C -> CONTROL CHARACTER
+    u'\r'      #  0x0D -> CONTROL CHARACTER
+    u'\x0e'    #  0x0E -> CONTROL CHARACTER
+    u'\x0f'    #  0x0F -> CONTROL CHARACTER
     u'\x10'    #  0x10 -> CONTROL CHARACTER
     u'\x11'    #  0x11 -> CONTROL CHARACTER
     u'\x12'    #  0x12 -> CONTROL CHARACTER
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> CONTROL CHARACTER
     u'\x18'    #  0x18 -> CONTROL CHARACTER
     u'\x19'    #  0x19 -> CONTROL CHARACTER
-    u'\x1a'    #  0x1a -> CONTROL CHARACTER
-    u'\x1b'    #  0x1b -> CONTROL CHARACTER
-    u'\x1c'    #  0x1c -> CONTROL CHARACTER
-    u'\x1d'    #  0x1d -> CONTROL CHARACTER
-    u'\x1e'    #  0x1e -> CONTROL CHARACTER
-    u'\x1f'    #  0x1f -> CONTROL CHARACTER
+    u'\x1a'    #  0x1A -> CONTROL CHARACTER
+    u'\x1b'    #  0x1B -> CONTROL CHARACTER
+    u'\x1c'    #  0x1C -> CONTROL CHARACTER
+    u'\x1d'    #  0x1D -> CONTROL CHARACTER
+    u'\x1e'    #  0x1E -> CONTROL CHARACTER
+    u'\x1f'    #  0x1F -> CONTROL CHARACTER
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> CONTROL CHARACTER
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> CONTROL CHARACTER
     u'\xc4'    #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
     u'\u0100'  #  0x81 -> LATIN CAPITAL LETTER A WITH MACRON
     u'\u0101'  #  0x82 -> LATIN SMALL LETTER A WITH MACRON
@@ -170,12 +170,12 @@ decoding_table = (
     u'\xe1'    #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
     u'\u0105'  #  0x88 -> LATIN SMALL LETTER A WITH OGONEK
     u'\u010c'  #  0x89 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xe4'    #  0x8a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u010d'  #  0x8b -> LATIN SMALL LETTER C WITH CARON
-    u'\u0106'  #  0x8c -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\u0107'  #  0x8d -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe9'    #  0x8e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0179'  #  0x8f -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\xe4'    #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u010d'  #  0x8B -> LATIN SMALL LETTER C WITH CARON
+    u'\u0106'  #  0x8C -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\u0107'  #  0x8D -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe9'    #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0179'  #  0x8F -> LATIN CAPITAL LETTER Z WITH ACUTE
     u'\u017a'  #  0x90 -> LATIN SMALL LETTER Z WITH ACUTE
     u'\u010e'  #  0x91 -> LATIN CAPITAL LETTER D WITH CARON
     u'\xed'    #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\xf3'    #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
     u'\u0117'  #  0x98 -> LATIN SMALL LETTER E WITH DOT ABOVE
     u'\xf4'    #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0x9a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'    #  0x9b -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'    #  0x9c -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u011a'  #  0x9d -> LATIN CAPITAL LETTER E WITH CARON
-    u'\u011b'  #  0x9e -> LATIN SMALL LETTER E WITH CARON
-    u'\xfc'    #  0x9f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'  #  0xa0 -> DAGGER
-    u'\xb0'    #  0xa1 -> DEGREE SIGN
-    u'\u0118'  #  0xa2 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa7'    #  0xa4 -> SECTION SIGN
-    u'\u2022'  #  0xa5 -> BULLET
-    u'\xb6'    #  0xa6 -> PILCROW SIGN
-    u'\xdf'    #  0xa7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'    #  0xa8 -> REGISTERED SIGN
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u2122'  #  0xaa -> TRADE MARK SIGN
-    u'\u0119'  #  0xab -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xa8'    #  0xac -> DIAERESIS
-    u'\u2260'  #  0xad -> NOT EQUAL TO
-    u'\u0123'  #  0xae -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u012e'  #  0xaf -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u012f'  #  0xb0 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u012a'  #  0xb1 -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u2264'  #  0xb2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'  #  0xb3 -> GREATER-THAN OR EQUAL TO
-    u'\u012b'  #  0xb4 -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0136'  #  0xb5 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u2202'  #  0xb6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'  #  0xb7 -> N-ARY SUMMATION
-    u'\u0142'  #  0xb8 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u013b'  #  0xb9 -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u013c'  #  0xba -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u013d'  #  0xbb -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u013e'  #  0xbc -> LATIN SMALL LETTER L WITH CARON
-    u'\u0139'  #  0xbd -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u013a'  #  0xbe -> LATIN SMALL LETTER L WITH ACUTE
-    u'\u0145'  #  0xbf -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u0146'  #  0xc0 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u0143'  #  0xc1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\xac'    #  0xc2 -> NOT SIGN
-    u'\u221a'  #  0xc3 -> SQUARE ROOT
-    u'\u0144'  #  0xc4 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0147'  #  0xc5 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\u2206'  #  0xc6 -> INCREMENT
-    u'\xab'    #  0xc7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0xc8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'  #  0xc9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'    #  0xca -> NO-BREAK SPACE
-    u'\u0148'  #  0xcb -> LATIN SMALL LETTER N WITH CARON
-    u'\u0150'  #  0xcc -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd5'    #  0xcd -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0151'  #  0xce -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\u014c'  #  0xcf -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\u2013'  #  0xd0 -> EN DASH
-    u'\u2014'  #  0xd1 -> EM DASH
-    u'\u201c'  #  0xd2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'  #  0xd3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'  #  0xd4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'  #  0xd5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'    #  0xd6 -> DIVISION SIGN
-    u'\u25ca'  #  0xd7 -> LOZENGE
-    u'\u014d'  #  0xd8 -> LATIN SMALL LETTER O WITH MACRON
-    u'\u0154'  #  0xd9 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\u0155'  #  0xda -> LATIN SMALL LETTER R WITH ACUTE
-    u'\u0158'  #  0xdb -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u2039'  #  0xdc -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'  #  0xdd -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0159'  #  0xde -> LATIN SMALL LETTER R WITH CARON
-    u'\u0156'  #  0xdf -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\u0157'  #  0xe0 -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\u0160'  #  0xe1 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u201a'  #  0xe2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'  #  0xe3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u0161'  #  0xe4 -> LATIN SMALL LETTER S WITH CARON
-    u'\u015a'  #  0xe5 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u015b'  #  0xe6 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\xc1'    #  0xe7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\u0164'  #  0xe8 -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u0165'  #  0xe9 -> LATIN SMALL LETTER T WITH CARON
-    u'\xcd'    #  0xea -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\u017d'  #  0xeb -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u017e'  #  0xec -> LATIN SMALL LETTER Z WITH CARON
-    u'\u016a'  #  0xed -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xef -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u016b'  #  0xf0 -> LATIN SMALL LETTER U WITH MACRON
-    u'\u016e'  #  0xf1 -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\xda'    #  0xf2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u016f'  #  0xf3 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\u0170'  #  0xf4 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\u0171'  #  0xf5 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\u0172'  #  0xf6 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u0173'  #  0xf7 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\xdd'    #  0xf8 -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xfd'    #  0xf9 -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0137'  #  0xfa -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u017b'  #  0xfb -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u0141'  #  0xfc -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u017c'  #  0xfd -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u0122'  #  0xfe -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u02c7'  #  0xff -> CARON
+    u'\xf6'    #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'    #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'    #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\u011a'  #  0x9D -> LATIN CAPITAL LETTER E WITH CARON
+    u'\u011b'  #  0x9E -> LATIN SMALL LETTER E WITH CARON
+    u'\xfc'    #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'  #  0xA0 -> DAGGER
+    u'\xb0'    #  0xA1 -> DEGREE SIGN
+    u'\u0118'  #  0xA2 -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa7'    #  0xA4 -> SECTION SIGN
+    u'\u2022'  #  0xA5 -> BULLET
+    u'\xb6'    #  0xA6 -> PILCROW SIGN
+    u'\xdf'    #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'    #  0xA8 -> REGISTERED SIGN
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'  #  0xAA -> TRADE MARK SIGN
+    u'\u0119'  #  0xAB -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xa8'    #  0xAC -> DIAERESIS
+    u'\u2260'  #  0xAD -> NOT EQUAL TO
+    u'\u0123'  #  0xAE -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u012e'  #  0xAF -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u012f'  #  0xB0 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u012a'  #  0xB1 -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u2264'  #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'  #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\u012b'  #  0xB4 -> LATIN SMALL LETTER I WITH MACRON
+    u'\u0136'  #  0xB5 -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\u2202'  #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'  #  0xB7 -> N-ARY SUMMATION
+    u'\u0142'  #  0xB8 -> LATIN SMALL LETTER L WITH STROKE
+    u'\u013b'  #  0xB9 -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\u013c'  #  0xBA -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u013d'  #  0xBB -> LATIN CAPITAL LETTER L WITH CARON
+    u'\u013e'  #  0xBC -> LATIN SMALL LETTER L WITH CARON
+    u'\u0139'  #  0xBD -> LATIN CAPITAL LETTER L WITH ACUTE
+    u'\u013a'  #  0xBE -> LATIN SMALL LETTER L WITH ACUTE
+    u'\u0145'  #  0xBF -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\u0146'  #  0xC0 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\u0143'  #  0xC1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\xac'    #  0xC2 -> NOT SIGN
+    u'\u221a'  #  0xC3 -> SQUARE ROOT
+    u'\u0144'  #  0xC4 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0147'  #  0xC5 -> LATIN CAPITAL LETTER N WITH CARON
+    u'\u2206'  #  0xC6 -> INCREMENT
+    u'\xab'    #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'  #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'    #  0xCA -> NO-BREAK SPACE
+    u'\u0148'  #  0xCB -> LATIN SMALL LETTER N WITH CARON
+    u'\u0150'  #  0xCC -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    u'\xd5'    #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0151'  #  0xCE -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    u'\u014c'  #  0xCF -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\u2013'  #  0xD0 -> EN DASH
+    u'\u2014'  #  0xD1 -> EM DASH
+    u'\u201c'  #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'  #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'  #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'  #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'    #  0xD6 -> DIVISION SIGN
+    u'\u25ca'  #  0xD7 -> LOZENGE
+    u'\u014d'  #  0xD8 -> LATIN SMALL LETTER O WITH MACRON
+    u'\u0154'  #  0xD9 -> LATIN CAPITAL LETTER R WITH ACUTE
+    u'\u0155'  #  0xDA -> LATIN SMALL LETTER R WITH ACUTE
+    u'\u0158'  #  0xDB -> LATIN CAPITAL LETTER R WITH CARON
+    u'\u2039'  #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u203a'  #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0159'  #  0xDE -> LATIN SMALL LETTER R WITH CARON
+    u'\u0156'  #  0xDF -> LATIN CAPITAL LETTER R WITH CEDILLA
+    u'\u0157'  #  0xE0 -> LATIN SMALL LETTER R WITH CEDILLA
+    u'\u0160'  #  0xE1 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u201a'  #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'  #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u0161'  #  0xE4 -> LATIN SMALL LETTER S WITH CARON
+    u'\u015a'  #  0xE5 -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u015b'  #  0xE6 -> LATIN SMALL LETTER S WITH ACUTE
+    u'\xc1'    #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\u0164'  #  0xE8 -> LATIN CAPITAL LETTER T WITH CARON
+    u'\u0165'  #  0xE9 -> LATIN SMALL LETTER T WITH CARON
+    u'\xcd'    #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\u017d'  #  0xEB -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u017e'  #  0xEC -> LATIN SMALL LETTER Z WITH CARON
+    u'\u016a'  #  0xED -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u016b'  #  0xF0 -> LATIN SMALL LETTER U WITH MACRON
+    u'\u016e'  #  0xF1 -> LATIN CAPITAL LETTER U WITH RING ABOVE
+    u'\xda'    #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\u016f'  #  0xF3 -> LATIN SMALL LETTER U WITH RING ABOVE
+    u'\u0170'  #  0xF4 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    u'\u0171'  #  0xF5 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    u'\u0172'  #  0xF6 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\u0173'  #  0xF7 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\xdd'    #  0xF8 -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xfd'    #  0xF9 -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\u0137'  #  0xFA -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\u017b'  #  0xFB -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\u0141'  #  0xFC -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\u017c'  #  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u0122'  #  0xFE -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u02c7'  #  0xFF -> CARON
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  CONTROL CHARACTER
     0x0008: 0x08,      #  CONTROL CHARACTER
     0x0009: 0x09,      #  CONTROL CHARACTER
-    0x000a: 0x0a,      #  CONTROL CHARACTER
-    0x000b: 0x0b,      #  CONTROL CHARACTER
-    0x000c: 0x0c,      #  CONTROL CHARACTER
-    0x000d: 0x0d,      #  CONTROL CHARACTER
-    0x000e: 0x0e,      #  CONTROL CHARACTER
-    0x000f: 0x0f,      #  CONTROL CHARACTER
+    0x000A: 0x0A,      #  CONTROL CHARACTER
+    0x000B: 0x0B,      #  CONTROL CHARACTER
+    0x000C: 0x0C,      #  CONTROL CHARACTER
+    0x000D: 0x0D,      #  CONTROL CHARACTER
+    0x000E: 0x0E,      #  CONTROL CHARACTER
+    0x000F: 0x0F,      #  CONTROL CHARACTER
     0x0010: 0x10,      #  CONTROL CHARACTER
     0x0011: 0x11,      #  CONTROL CHARACTER
     0x0012: 0x12,      #  CONTROL CHARACTER
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  CONTROL CHARACTER
     0x0018: 0x18,      #  CONTROL CHARACTER
     0x0019: 0x19,      #  CONTROL CHARACTER
-    0x001a: 0x1a,      #  CONTROL CHARACTER
-    0x001b: 0x1b,      #  CONTROL CHARACTER
-    0x001c: 0x1c,      #  CONTROL CHARACTER
-    0x001d: 0x1d,      #  CONTROL CHARACTER
-    0x001e: 0x1e,      #  CONTROL CHARACTER
-    0x001f: 0x1f,      #  CONTROL CHARACTER
+    0x001A: 0x1A,      #  CONTROL CHARACTER
+    0x001B: 0x1B,      #  CONTROL CHARACTER
+    0x001C: 0x1C,      #  CONTROL CHARACTER
+    0x001D: 0x1D,      #  CONTROL CHARACTER
+    0x001E: 0x1E,      #  CONTROL CHARACTER
+    0x001F: 0x1F,      #  CONTROL CHARACTER
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  CONTROL CHARACTER
-    0x00a0: 0xca,      #  NO-BREAK SPACE
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a7: 0xa4,      #  SECTION SIGN
-    0x00a8: 0xac,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xc7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xc2,      #  NOT SIGN
-    0x00ae: 0xa8,      #  REGISTERED SIGN
-    0x00b0: 0xa1,      #  DEGREE SIGN
-    0x00b6: 0xa6,      #  PILCROW SIGN
-    0x00bb: 0xc8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00c1: 0xe7,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00cd: 0xea,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xef,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xcd,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00da: 0xf2,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00dc: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xf8,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00df: 0xa7,      #  LATIN SMALL LETTER SHARP S
-    0x00e1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e4: 0x8a,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e9: 0x8e,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ed: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00f3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x9b,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x9a,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xd6,      #  DIVISION SIGN
-    0x00fa: 0x9c,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fc: 0x9f,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0xf9,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  CONTROL CHARACTER
+    0x00A0: 0xCA,      #  NO-BREAK SPACE
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A7: 0xA4,      #  SECTION SIGN
+    0x00A8: 0xAC,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xC7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,      #  NOT SIGN
+    0x00AE: 0xA8,      #  REGISTERED SIGN
+    0x00B0: 0xA1,      #  DEGREE SIGN
+    0x00B6: 0xA6,      #  PILCROW SIGN
+    0x00BB: 0xC8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00C1: 0xE7,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CD: 0xEA,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00DA: 0xF2,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DC: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xF8,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DF: 0xA7,      #  LATIN SMALL LETTER SHARP S
+    0x00E1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E4: 0x8A,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E9: 0x8E,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ED: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00F3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,      #  DIVISION SIGN
+    0x00FA: 0x9C,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FC: 0x9F,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xF9,      #  LATIN SMALL LETTER Y WITH ACUTE
     0x0100: 0x81,      #  LATIN CAPITAL LETTER A WITH MACRON
     0x0101: 0x82,      #  LATIN SMALL LETTER A WITH MACRON
     0x0104: 0x84,      #  LATIN CAPITAL LETTER A WITH OGONEK
     0x0105: 0x88,      #  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0x8c,      #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0x8d,      #  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0x89,      #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0x8b,      #  LATIN SMALL LETTER C WITH CARON
-    0x010e: 0x91,      #  LATIN CAPITAL LETTER D WITH CARON
-    0x010f: 0x93,      #  LATIN SMALL LETTER D WITH CARON
+    0x0106: 0x8C,      #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0x8D,      #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0x89,      #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0x8B,      #  LATIN SMALL LETTER C WITH CARON
+    0x010E: 0x91,      #  LATIN CAPITAL LETTER D WITH CARON
+    0x010F: 0x93,      #  LATIN SMALL LETTER D WITH CARON
     0x0112: 0x94,      #  LATIN CAPITAL LETTER E WITH MACRON
     0x0113: 0x95,      #  LATIN SMALL LETTER E WITH MACRON
     0x0116: 0x96,      #  LATIN CAPITAL LETTER E WITH DOT ABOVE
     0x0117: 0x98,      #  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xa2,      #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xab,      #  LATIN SMALL LETTER E WITH OGONEK
-    0x011a: 0x9d,      #  LATIN CAPITAL LETTER E WITH CARON
-    0x011b: 0x9e,      #  LATIN SMALL LETTER E WITH CARON
-    0x0122: 0xfe,      #  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xae,      #  LATIN SMALL LETTER G WITH CEDILLA
-    0x012a: 0xb1,      #  LATIN CAPITAL LETTER I WITH MACRON
-    0x012b: 0xb4,      #  LATIN SMALL LETTER I WITH MACRON
-    0x012e: 0xaf,      #  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012f: 0xb0,      #  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xb5,      #  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xfa,      #  LATIN SMALL LETTER K WITH CEDILLA
-    0x0139: 0xbd,      #  LATIN CAPITAL LETTER L WITH ACUTE
-    0x013a: 0xbe,      #  LATIN SMALL LETTER L WITH ACUTE
-    0x013b: 0xb9,      #  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013c: 0xba,      #  LATIN SMALL LETTER L WITH CEDILLA
-    0x013d: 0xbb,      #  LATIN CAPITAL LETTER L WITH CARON
-    0x013e: 0xbc,      #  LATIN SMALL LETTER L WITH CARON
-    0x0141: 0xfc,      #  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xb8,      #  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xc1,      #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xc4,      #  LATIN SMALL LETTER N WITH ACUTE
-    0x0145: 0xbf,      #  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xc0,      #  LATIN SMALL LETTER N WITH CEDILLA
-    0x0147: 0xc5,      #  LATIN CAPITAL LETTER N WITH CARON
-    0x0148: 0xcb,      #  LATIN SMALL LETTER N WITH CARON
-    0x014c: 0xcf,      #  LATIN CAPITAL LETTER O WITH MACRON
-    0x014d: 0xd8,      #  LATIN SMALL LETTER O WITH MACRON
-    0x0150: 0xcc,      #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0xce,      #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0154: 0xd9,      #  LATIN CAPITAL LETTER R WITH ACUTE
-    0x0155: 0xda,      #  LATIN SMALL LETTER R WITH ACUTE
-    0x0156: 0xdf,      #  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0xe0,      #  LATIN SMALL LETTER R WITH CEDILLA
-    0x0158: 0xdb,      #  LATIN CAPITAL LETTER R WITH CARON
-    0x0159: 0xde,      #  LATIN SMALL LETTER R WITH CARON
-    0x015a: 0xe5,      #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0xe6,      #  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0xe1,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xe4,      #  LATIN SMALL LETTER S WITH CARON
-    0x0164: 0xe8,      #  LATIN CAPITAL LETTER T WITH CARON
-    0x0165: 0xe9,      #  LATIN SMALL LETTER T WITH CARON
-    0x016a: 0xed,      #  LATIN CAPITAL LETTER U WITH MACRON
-    0x016b: 0xf0,      #  LATIN SMALL LETTER U WITH MACRON
-    0x016e: 0xf1,      #  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x016f: 0xf3,      #  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0170: 0xf4,      #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0xf5,      #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0172: 0xf6,      #  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xf7,      #  LATIN SMALL LETTER U WITH OGONEK
-    0x0179: 0x8f,      #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0x90,      #  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0xfb,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0xfd,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0xeb,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0xec,      #  LATIN SMALL LETTER Z WITH CARON
-    0x02c7: 0xff,      #  CARON
-    0x2013: 0xd0,      #  EN DASH
-    0x2014: 0xd1,      #  EM DASH
-    0x2018: 0xd4,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xd5,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0xe2,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0xd2,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0xd3,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0xe3,      #  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xa0,      #  DAGGER
-    0x2022: 0xa5,      #  BULLET
-    0x2026: 0xc9,      #  HORIZONTAL ELLIPSIS
-    0x2039: 0xdc,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0xdd,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x2122: 0xaa,      #  TRADE MARK SIGN
-    0x2202: 0xb6,      #  PARTIAL DIFFERENTIAL
-    0x2206: 0xc6,      #  INCREMENT
-    0x2211: 0xb7,      #  N-ARY SUMMATION
-    0x221a: 0xc3,      #  SQUARE ROOT
-    0x2260: 0xad,      #  NOT EQUAL TO
-    0x2264: 0xb2,      #  LESS-THAN OR EQUAL TO
-    0x2265: 0xb3,      #  GREATER-THAN OR EQUAL TO
-    0x25ca: 0xd7,      #  LOZENGE
-}
\ No newline at end of file
+    0x0118: 0xA2,      #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xAB,      #  LATIN SMALL LETTER E WITH OGONEK
+    0x011A: 0x9D,      #  LATIN CAPITAL LETTER E WITH CARON
+    0x011B: 0x9E,      #  LATIN SMALL LETTER E WITH CARON
+    0x0122: 0xFE,      #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xAE,      #  LATIN SMALL LETTER G WITH CEDILLA
+    0x012A: 0xB1,      #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xB4,      #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xAF,      #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xB0,      #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xB5,      #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xFA,      #  LATIN SMALL LETTER K WITH CEDILLA
+    0x0139: 0xBD,      #  LATIN CAPITAL LETTER L WITH ACUTE
+    0x013A: 0xBE,      #  LATIN SMALL LETTER L WITH ACUTE
+    0x013B: 0xB9,      #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xBA,      #  LATIN SMALL LETTER L WITH CEDILLA
+    0x013D: 0xBB,      #  LATIN CAPITAL LETTER L WITH CARON
+    0x013E: 0xBC,      #  LATIN SMALL LETTER L WITH CARON
+    0x0141: 0xFC,      #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xB8,      #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xC1,      #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xC4,      #  LATIN SMALL LETTER N WITH ACUTE
+    0x0145: 0xBF,      #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xC0,      #  LATIN SMALL LETTER N WITH CEDILLA
+    0x0147: 0xC5,      #  LATIN CAPITAL LETTER N WITH CARON
+    0x0148: 0xCB,      #  LATIN SMALL LETTER N WITH CARON
+    0x014C: 0xCF,      #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xD8,      #  LATIN SMALL LETTER O WITH MACRON
+    0x0150: 0xCC,      #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x0151: 0xCE,      #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x0154: 0xD9,      #  LATIN CAPITAL LETTER R WITH ACUTE
+    0x0155: 0xDA,      #  LATIN SMALL LETTER R WITH ACUTE
+    0x0156: 0xDF,      #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x0157: 0xE0,      #  LATIN SMALL LETTER R WITH CEDILLA
+    0x0158: 0xDB,      #  LATIN CAPITAL LETTER R WITH CARON
+    0x0159: 0xDE,      #  LATIN SMALL LETTER R WITH CARON
+    0x015A: 0xE5,      #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xE6,      #  LATIN SMALL LETTER S WITH ACUTE
+    0x0160: 0xE1,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xE4,      #  LATIN SMALL LETTER S WITH CARON
+    0x0164: 0xE8,      #  LATIN CAPITAL LETTER T WITH CARON
+    0x0165: 0xE9,      #  LATIN SMALL LETTER T WITH CARON
+    0x016A: 0xED,      #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xF0,      #  LATIN SMALL LETTER U WITH MACRON
+    0x016E: 0xF1,      #  LATIN CAPITAL LETTER U WITH RING ABOVE
+    0x016F: 0xF3,      #  LATIN SMALL LETTER U WITH RING ABOVE
+    0x0170: 0xF4,      #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x0171: 0xF5,      #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x0172: 0xF6,      #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF7,      #  LATIN SMALL LETTER U WITH OGONEK
+    0x0179: 0x8F,      #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0x90,      #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xFB,      #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xFD,      #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xEB,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xEC,      #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0xFF,      #  CARON
+    0x2013: 0xD0,      #  EN DASH
+    0x2014: 0xD1,      #  EM DASH
+    0x2018: 0xD4,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,      #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,      #  DAGGER
+    0x2022: 0xA5,      #  BULLET
+    0x2026: 0xC9,      #  HORIZONTAL ELLIPSIS
+    0x2039: 0xDC,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0xDD,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x2122: 0xAA,      #  TRADE MARK SIGN
+    0x2202: 0xB6,      #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,      #  INCREMENT
+    0x2211: 0xB7,      #  N-ARY SUMMATION
+    0x221A: 0xC3,      #  SQUARE ROOT
+    0x2260: 0xAD,      #  NOT EQUAL TO
+    0x2264: 0xB2,      #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,      #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,      #  LOZENGE
+}
+
index 32a4e37cbd39334a6b5874fa473a77ee118f529c..8cdf8d1a5652ec8267ba59b48750e31f51745caf 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> CONTROL CHARACTER
     u'\x08'    #  0x08 -> CONTROL CHARACTER
     u'\t'      #  0x09 -> CONTROL CHARACTER
-    u'\n'      #  0x0a -> CONTROL CHARACTER
-    u'\x0b'    #  0x0b -> CONTROL CHARACTER
-    u'\x0c'    #  0x0c -> CONTROL CHARACTER
-    u'\r'      #  0x0d -> CONTROL CHARACTER
-    u'\x0e'    #  0x0e -> CONTROL CHARACTER
-    u'\x0f'    #  0x0f -> CONTROL CHARACTER
+    u'\n'      #  0x0A -> CONTROL CHARACTER
+    u'\x0b'    #  0x0B -> CONTROL CHARACTER
+    u'\x0c'    #  0x0C -> CONTROL CHARACTER
+    u'\r'      #  0x0D -> CONTROL CHARACTER
+    u'\x0e'    #  0x0E -> CONTROL CHARACTER
+    u'\x0f'    #  0x0F -> CONTROL CHARACTER
     u'\x10'    #  0x10 -> CONTROL CHARACTER
     u'\x11'    #  0x11 -> CONTROL CHARACTER
     u'\x12'    #  0x12 -> CONTROL CHARACTER
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> CONTROL CHARACTER
     u'\x18'    #  0x18 -> CONTROL CHARACTER
     u'\x19'    #  0x19 -> CONTROL CHARACTER
-    u'\x1a'    #  0x1a -> CONTROL CHARACTER
-    u'\x1b'    #  0x1b -> CONTROL CHARACTER
-    u'\x1c'    #  0x1c -> CONTROL CHARACTER
-    u'\x1d'    #  0x1d -> CONTROL CHARACTER
-    u'\x1e'    #  0x1e -> CONTROL CHARACTER
-    u'\x1f'    #  0x1f -> CONTROL CHARACTER
+    u'\x1a'    #  0x1A -> CONTROL CHARACTER
+    u'\x1b'    #  0x1B -> CONTROL CHARACTER
+    u'\x1c'    #  0x1C -> CONTROL CHARACTER
+    u'\x1d'    #  0x1D -> CONTROL CHARACTER
+    u'\x1e'    #  0x1E -> CONTROL CHARACTER
+    u'\x1f'    #  0x1F -> CONTROL CHARACTER
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> CONTROL CHARACTER
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> CONTROL CHARACTER
     u'\xc4'    #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
     u'\xc5'    #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
     u'\xc7'    #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
@@ -170,12 +170,12 @@ decoding_table = (
     u'\xe1'    #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
     u'\xe0'    #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
     u'\xe2'    #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'    #  0x8a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'    #  0x8b -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'    #  0x8c -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'    #  0x8d -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'    #  0x8e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'    #  0x8f -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe4'    #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'    #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'    #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'    #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'    #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'    #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
     u'\xea'    #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
     u'\xeb'    #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
     u'\xed'    #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\xf3'    #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
     u'\xf2'    #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
     u'\xf4'    #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0x9a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'    #  0x9b -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'    #  0x9c -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'    #  0x9d -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'    #  0x9e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0x9f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'  #  0xa0 -> DAGGER
-    u'\xb0'    #  0xa1 -> DEGREE SIGN
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa7'    #  0xa4 -> SECTION SIGN
-    u'\u2022'  #  0xa5 -> BULLET
-    u'\xb6'    #  0xa6 -> PILCROW SIGN
-    u'\xdf'    #  0xa7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'    #  0xa8 -> REGISTERED SIGN
-    u'\u0160'  #  0xa9 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2122'  #  0xaa -> TRADE MARK SIGN
-    u'\xb4'    #  0xab -> ACUTE ACCENT
-    u'\xa8'    #  0xac -> DIAERESIS
-    u'\u2260'  #  0xad -> NOT EQUAL TO
-    u'\u017d'  #  0xae -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xd8'    #  0xaf -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'  #  0xb0 -> INFINITY
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u2264'  #  0xb2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'  #  0xb3 -> GREATER-THAN OR EQUAL TO
-    u'\u2206'  #  0xb4 -> INCREMENT
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\u2202'  #  0xb6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'  #  0xb7 -> N-ARY SUMMATION
-    u'\u220f'  #  0xb8 -> N-ARY PRODUCT
-    u'\u0161'  #  0xb9 -> LATIN SMALL LETTER S WITH CARON
-    u'\u222b'  #  0xba -> INTEGRAL
-    u'\xaa'    #  0xbb -> FEMININE ORDINAL INDICATOR
-    u'\xba'    #  0xbc -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'  #  0xbd -> GREEK CAPITAL LETTER OMEGA
-    u'\u017e'  #  0xbe -> LATIN SMALL LETTER Z WITH CARON
-    u'\xf8'    #  0xbf -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'    #  0xc0 -> INVERTED QUESTION MARK
-    u'\xa1'    #  0xc1 -> INVERTED EXCLAMATION MARK
-    u'\xac'    #  0xc2 -> NOT SIGN
-    u'\u221a'  #  0xc3 -> SQUARE ROOT
-    u'\u0192'  #  0xc4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'  #  0xc5 -> ALMOST EQUAL TO
-    u'\u0106'  #  0xc6 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xab'    #  0xc7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u010c'  #  0xc8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u2026'  #  0xc9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'    #  0xca -> NO-BREAK SPACE
-    u'\xc0'    #  0xcb -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'    #  0xcc -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'    #  0xcd -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'  #  0xce -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'  #  0xcf -> LATIN SMALL LIGATURE OE
-    u'\u0110'  #  0xd0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u2014'  #  0xd1 -> EM DASH
-    u'\u201c'  #  0xd2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'  #  0xd3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'  #  0xd4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'  #  0xd5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'    #  0xd6 -> DIVISION SIGN
-    u'\u25ca'  #  0xd7 -> LOZENGE
-    u'\uf8ff'  #  0xd8 -> Apple logo
-    u'\xa9'    #  0xd9 -> COPYRIGHT SIGN
-    u'\u2044'  #  0xda -> FRACTION SLASH
-    u'\u20ac'  #  0xdb -> EURO SIGN
-    u'\u2039'  #  0xdc -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'  #  0xdd -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\xc6'    #  0xde -> LATIN CAPITAL LETTER AE
-    u'\xbb'    #  0xdf -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2013'  #  0xe0 -> EN DASH
-    u'\xb7'    #  0xe1 -> MIDDLE DOT
-    u'\u201a'  #  0xe2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'  #  0xe3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'  #  0xe4 -> PER MILLE SIGN
-    u'\xc2'    #  0xe5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0107'  #  0xe6 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xc1'    #  0xe7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\u010d'  #  0xe8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xc8'    #  0xe9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'    #  0xea -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xeb -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xec -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'    #  0xed -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xef -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0111'  #  0xf0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\xd2'    #  0xf1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'    #  0xf2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xf3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'    #  0xf4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'  #  0xf5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'  #  0xf6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'  #  0xf7 -> SMALL TILDE
-    u'\xaf'    #  0xf8 -> MACRON
-    u'\u03c0'  #  0xf9 -> GREEK SMALL LETTER PI
-    u'\xcb'    #  0xfa -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u02da'  #  0xfb -> RING ABOVE
-    u'\xb8'    #  0xfc -> CEDILLA
-    u'\xca'    #  0xfd -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xe6'    #  0xfe -> LATIN SMALL LETTER AE
-    u'\u02c7'  #  0xff -> CARON
+    u'\xf6'    #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'    #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'    #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'    #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'    #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'  #  0xA0 -> DAGGER
+    u'\xb0'    #  0xA1 -> DEGREE SIGN
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa7'    #  0xA4 -> SECTION SIGN
+    u'\u2022'  #  0xA5 -> BULLET
+    u'\xb6'    #  0xA6 -> PILCROW SIGN
+    u'\xdf'    #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'    #  0xA8 -> REGISTERED SIGN
+    u'\u0160'  #  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u2122'  #  0xAA -> TRADE MARK SIGN
+    u'\xb4'    #  0xAB -> ACUTE ACCENT
+    u'\xa8'    #  0xAC -> DIAERESIS
+    u'\u2260'  #  0xAD -> NOT EQUAL TO
+    u'\u017d'  #  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xd8'    #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u221e'  #  0xB0 -> INFINITY
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'  #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'  #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\u2206'  #  0xB4 -> INCREMENT
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\u2202'  #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'  #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'  #  0xB8 -> N-ARY PRODUCT
+    u'\u0161'  #  0xB9 -> LATIN SMALL LETTER S WITH CARON
+    u'\u222b'  #  0xBA -> INTEGRAL
+    u'\xaa'    #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'    #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'  #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\u017e'  #  0xBE -> LATIN SMALL LETTER Z WITH CARON
+    u'\xf8'    #  0xBF -> LATIN SMALL LETTER O WITH STROKE
+    u'\xbf'    #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'    #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'    #  0xC2 -> NOT SIGN
+    u'\u221a'  #  0xC3 -> SQUARE ROOT
+    u'\u0192'  #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'  #  0xC5 -> ALMOST EQUAL TO
+    u'\u0106'  #  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xab'    #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u010c'  #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\u2026'  #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'    #  0xCA -> NO-BREAK SPACE
+    u'\xc0'    #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'    #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'    #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'  #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'  #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u0110'  #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u2014'  #  0xD1 -> EM DASH
+    u'\u201c'  #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'  #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'  #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'  #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'    #  0xD6 -> DIVISION SIGN
+    u'\u25ca'  #  0xD7 -> LOZENGE
+    u'\uf8ff'  #  0xD8 -> Apple logo
+    u'\xa9'    #  0xD9 -> COPYRIGHT SIGN
+    u'\u2044'  #  0xDA -> FRACTION SLASH
+    u'\u20ac'  #  0xDB -> EURO SIGN
+    u'\u2039'  #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u203a'  #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\xc6'    #  0xDE -> LATIN CAPITAL LETTER AE
+    u'\xbb'    #  0xDF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2013'  #  0xE0 -> EN DASH
+    u'\xb7'    #  0xE1 -> MIDDLE DOT
+    u'\u201a'  #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'  #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'  #  0xE4 -> PER MILLE SIGN
+    u'\xc2'    #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0107'  #  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xc1'    #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\u010d'  #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xc8'    #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'    #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'    #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0111'  #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\xd2'    #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'    #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'    #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\u0131'  #  0xF5 -> LATIN SMALL LETTER DOTLESS I
+    u'\u02c6'  #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'  #  0xF7 -> SMALL TILDE
+    u'\xaf'    #  0xF8 -> MACRON
+    u'\u03c0'  #  0xF9 -> GREEK SMALL LETTER PI
+    u'\xcb'    #  0xFA -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u02da'  #  0xFB -> RING ABOVE
+    u'\xb8'    #  0xFC -> CEDILLA
+    u'\xca'    #  0xFD -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xe6'    #  0xFE -> LATIN SMALL LETTER AE
+    u'\u02c7'  #  0xFF -> CARON
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  CONTROL CHARACTER
     0x0008: 0x08,      #  CONTROL CHARACTER
     0x0009: 0x09,      #  CONTROL CHARACTER
-    0x000a: 0x0a,      #  CONTROL CHARACTER
-    0x000b: 0x0b,      #  CONTROL CHARACTER
-    0x000c: 0x0c,      #  CONTROL CHARACTER
-    0x000d: 0x0d,      #  CONTROL CHARACTER
-    0x000e: 0x0e,      #  CONTROL CHARACTER
-    0x000f: 0x0f,      #  CONTROL CHARACTER
+    0x000A: 0x0A,      #  CONTROL CHARACTER
+    0x000B: 0x0B,      #  CONTROL CHARACTER
+    0x000C: 0x0C,      #  CONTROL CHARACTER
+    0x000D: 0x0D,      #  CONTROL CHARACTER
+    0x000E: 0x0E,      #  CONTROL CHARACTER
+    0x000F: 0x0F,      #  CONTROL CHARACTER
     0x0010: 0x10,      #  CONTROL CHARACTER
     0x0011: 0x11,      #  CONTROL CHARACTER
     0x0012: 0x12,      #  CONTROL CHARACTER
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  CONTROL CHARACTER
     0x0018: 0x18,      #  CONTROL CHARACTER
     0x0019: 0x19,      #  CONTROL CHARACTER
-    0x001a: 0x1a,      #  CONTROL CHARACTER
-    0x001b: 0x1b,      #  CONTROL CHARACTER
-    0x001c: 0x1c,      #  CONTROL CHARACTER
-    0x001d: 0x1d,      #  CONTROL CHARACTER
-    0x001e: 0x1e,      #  CONTROL CHARACTER
-    0x001f: 0x1f,      #  CONTROL CHARACTER
+    0x001A: 0x1A,      #  CONTROL CHARACTER
+    0x001B: 0x1B,      #  CONTROL CHARACTER
+    0x001C: 0x1C,      #  CONTROL CHARACTER
+    0x001D: 0x1D,      #  CONTROL CHARACTER
+    0x001E: 0x1E,      #  CONTROL CHARACTER
+    0x001F: 0x1F,      #  CONTROL CHARACTER
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  CONTROL CHARACTER
-    0x00a0: 0xca,      #  NO-BREAK SPACE
-    0x00a1: 0xc1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a7: 0xa4,      #  SECTION SIGN
-    0x00a8: 0xac,      #  DIAERESIS
-    0x00a9: 0xd9,      #  COPYRIGHT SIGN
-    0x00aa: 0xbb,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xc7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xc2,      #  NOT SIGN
-    0x00ae: 0xa8,      #  REGISTERED SIGN
-    0x00af: 0xf8,      #  MACRON
-    0x00b0: 0xa1,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b4: 0xab,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xa6,      #  PILCROW SIGN
-    0x00b7: 0xe1,      #  MIDDLE DOT
-    0x00b8: 0xfc,      #  CEDILLA
-    0x00ba: 0xbc,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xdf,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bf: 0xc0,      #  INVERTED QUESTION MARK
-    0x00c0: 0xcb,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xe7,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xe5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xcc,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xde,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xe9,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xfd,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xfa,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xed,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xea,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xeb,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xec,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xf1,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xef,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xcd,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0xaf,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xf4,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xf2,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xf3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xa7,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x8b,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x8a,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x8c,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xfe,      #  LATIN SMALL LETTER AE
-    0x00e7: 0x8d,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x8f,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x8e,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x9b,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x9a,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xd6,      #  DIVISION SIGN
-    0x00f8: 0xbf,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x9d,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x9c,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x9e,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x9f,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0106: 0xc6,      #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xe6,      #  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0xc8,      #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0xe8,      #  LATIN SMALL LETTER C WITH CARON
-    0x0110: 0xd0,      #  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xf0,      #  LATIN SMALL LETTER D WITH STROKE
-    0x0131: 0xf5,      #  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xce,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xcf,      #  LATIN SMALL LIGATURE OE
-    0x0160: 0xa9,      #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xb9,      #  LATIN SMALL LETTER S WITH CARON
-    0x017d: 0xae,      #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0xbe,      #  LATIN SMALL LETTER Z WITH CARON
-    0x0192: 0xc4,      #  LATIN SMALL LETTER F WITH HOOK
-    0x02c6: 0xf6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02c7: 0xff,      #  CARON
-    0x02da: 0xfb,      #  RING ABOVE
-    0x02dc: 0xf7,      #  SMALL TILDE
-    0x03a9: 0xbd,      #  GREEK CAPITAL LETTER OMEGA
-    0x03c0: 0xf9,      #  GREEK SMALL LETTER PI
-    0x2013: 0xe0,      #  EN DASH
-    0x2014: 0xd1,      #  EM DASH
-    0x2018: 0xd4,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xd5,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0xe2,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0xd2,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0xd3,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0xe3,      #  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xa0,      #  DAGGER
-    0x2022: 0xa5,      #  BULLET
-    0x2026: 0xc9,      #  HORIZONTAL ELLIPSIS
-    0x2030: 0xe4,      #  PER MILLE SIGN
-    0x2039: 0xdc,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0xdd,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x2044: 0xda,      #  FRACTION SLASH
-    0x20ac: 0xdb,      #  EURO SIGN
-    0x2122: 0xaa,      #  TRADE MARK SIGN
-    0x2202: 0xb6,      #  PARTIAL DIFFERENTIAL
-    0x2206: 0xb4,      #  INCREMENT
-    0x220f: 0xb8,      #  N-ARY PRODUCT
-    0x2211: 0xb7,      #  N-ARY SUMMATION
-    0x221a: 0xc3,      #  SQUARE ROOT
-    0x221e: 0xb0,      #  INFINITY
-    0x222b: 0xba,      #  INTEGRAL
-    0x2248: 0xc5,      #  ALMOST EQUAL TO
-    0x2260: 0xad,      #  NOT EQUAL TO
-    0x2264: 0xb2,      #  LESS-THAN OR EQUAL TO
-    0x2265: 0xb3,      #  GREATER-THAN OR EQUAL TO
-    0x25ca: 0xd7,      #  LOZENGE
-    0xf8ff: 0xd8,      #  Apple logo
-}
\ No newline at end of file
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  CONTROL CHARACTER
+    0x00A0: 0xCA,      #  NO-BREAK SPACE
+    0x00A1: 0xC1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A7: 0xA4,      #  SECTION SIGN
+    0x00A8: 0xAC,      #  DIAERESIS
+    0x00A9: 0xD9,      #  COPYRIGHT SIGN
+    0x00AA: 0xBB,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,      #  NOT SIGN
+    0x00AE: 0xA8,      #  REGISTERED SIGN
+    0x00AF: 0xF8,      #  MACRON
+    0x00B0: 0xA1,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xA6,      #  PILCROW SIGN
+    0x00B7: 0xE1,      #  MIDDLE DOT
+    0x00B8: 0xFC,      #  CEDILLA
+    0x00BA: 0xBC,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xDF,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,      #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xDE,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xFD,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xFA,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xAF,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xF4,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xFE,      #  LATIN SMALL LETTER AE
+    0x00E7: 0x8D,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,      #  DIVISION SIGN
+    0x00F8: 0xBF,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0x9D,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0106: 0xC6,      #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE6,      #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,      #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,      #  LATIN SMALL LETTER C WITH CARON
+    0x0110: 0xD0,      #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,      #  LATIN SMALL LETTER D WITH STROKE
+    0x0131: 0xF5,      #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,      #  LATIN SMALL LIGATURE OE
+    0x0160: 0xA9,      #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xB9,      #  LATIN SMALL LETTER S WITH CARON
+    0x017D: 0xAE,      #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xBE,      #  LATIN SMALL LETTER Z WITH CARON
+    0x0192: 0xC4,      #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0xF6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,      #  CARON
+    0x02DA: 0xFB,      #  RING ABOVE
+    0x02DC: 0xF7,      #  SMALL TILDE
+    0x03A9: 0xBD,      #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xF9,      #  GREEK SMALL LETTER PI
+    0x2013: 0xE0,      #  EN DASH
+    0x2014: 0xD1,      #  EM DASH
+    0x2018: 0xD4,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,      #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,      #  DAGGER
+    0x2022: 0xA5,      #  BULLET
+    0x2026: 0xC9,      #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,      #  PER MILLE SIGN
+    0x2039: 0xDC,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0xDD,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x2044: 0xDA,      #  FRACTION SLASH
+    0x20AC: 0xDB,      #  EURO SIGN
+    0x2122: 0xAA,      #  TRADE MARK SIGN
+    0x2202: 0xB6,      #  PARTIAL DIFFERENTIAL
+    0x2206: 0xB4,      #  INCREMENT
+    0x220F: 0xB8,      #  N-ARY PRODUCT
+    0x2211: 0xB7,      #  N-ARY SUMMATION
+    0x221A: 0xC3,      #  SQUARE ROOT
+    0x221E: 0xB0,      #  INFINITY
+    0x222B: 0xBA,      #  INTEGRAL
+    0x2248: 0xC5,      #  ALMOST EQUAL TO
+    0x2260: 0xAD,      #  NOT EQUAL TO
+    0x2264: 0xB2,      #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,      #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,      #  LOZENGE
+    0xF8FF: 0xD8,      #  Apple logo
+}
+
index e3e5cf2f9abe8054d847a389770c7476eca22ae4..22624cae6060534f29680d592e7411b31cd2b551 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> CONTROL CHARACTER
     u'\x08'    #  0x08 -> CONTROL CHARACTER
     u'\t'      #  0x09 -> CONTROL CHARACTER
-    u'\n'      #  0x0a -> CONTROL CHARACTER
-    u'\x0b'    #  0x0b -> CONTROL CHARACTER
-    u'\x0c'    #  0x0c -> CONTROL CHARACTER
-    u'\r'      #  0x0d -> CONTROL CHARACTER
-    u'\x0e'    #  0x0e -> CONTROL CHARACTER
-    u'\x0f'    #  0x0f -> CONTROL CHARACTER
+    u'\n'      #  0x0A -> CONTROL CHARACTER
+    u'\x0b'    #  0x0B -> CONTROL CHARACTER
+    u'\x0c'    #  0x0C -> CONTROL CHARACTER
+    u'\r'      #  0x0D -> CONTROL CHARACTER
+    u'\x0e'    #  0x0E -> CONTROL CHARACTER
+    u'\x0f'    #  0x0F -> CONTROL CHARACTER
     u'\x10'    #  0x10 -> CONTROL CHARACTER
     u'\x11'    #  0x11 -> CONTROL CHARACTER
     u'\x12'    #  0x12 -> CONTROL CHARACTER
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> CONTROL CHARACTER
     u'\x18'    #  0x18 -> CONTROL CHARACTER
     u'\x19'    #  0x19 -> CONTROL CHARACTER
-    u'\x1a'    #  0x1a -> CONTROL CHARACTER
-    u'\x1b'    #  0x1b -> CONTROL CHARACTER
-    u'\x1c'    #  0x1c -> CONTROL CHARACTER
-    u'\x1d'    #  0x1d -> CONTROL CHARACTER
-    u'\x1e'    #  0x1e -> CONTROL CHARACTER
-    u'\x1f'    #  0x1f -> CONTROL CHARACTER
+    u'\x1a'    #  0x1A -> CONTROL CHARACTER
+    u'\x1b'    #  0x1B -> CONTROL CHARACTER
+    u'\x1c'    #  0x1C -> CONTROL CHARACTER
+    u'\x1d'    #  0x1D -> CONTROL CHARACTER
+    u'\x1e'    #  0x1E -> CONTROL CHARACTER
+    u'\x1f'    #  0x1F -> CONTROL CHARACTER
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> CONTROL CHARACTER
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> CONTROL CHARACTER
     u'\u0410'  #  0x80 -> CYRILLIC CAPITAL LETTER A
     u'\u0411'  #  0x81 -> CYRILLIC CAPITAL LETTER BE
     u'\u0412'  #  0x82 -> CYRILLIC CAPITAL LETTER VE
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u0417'  #  0x87 -> CYRILLIC CAPITAL LETTER ZE
     u'\u0418'  #  0x88 -> CYRILLIC CAPITAL LETTER I
     u'\u0419'  #  0x89 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'  #  0x8a -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'  #  0x8b -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'  #  0x8c -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'  #  0x8d -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'  #  0x8e -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'  #  0x8f -> CYRILLIC CAPITAL LETTER PE
+    u'\u041a'  #  0x8A -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'  #  0x8B -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'  #  0x8C -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'  #  0x8D -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'  #  0x8E -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'  #  0x8F -> CYRILLIC CAPITAL LETTER PE
     u'\u0420'  #  0x90 -> CYRILLIC CAPITAL LETTER ER
     u'\u0421'  #  0x91 -> CYRILLIC CAPITAL LETTER ES
     u'\u0422'  #  0x92 -> CYRILLIC CAPITAL LETTER TE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\u0427'  #  0x97 -> CYRILLIC CAPITAL LETTER CHE
     u'\u0428'  #  0x98 -> CYRILLIC CAPITAL LETTER SHA
     u'\u0429'  #  0x99 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'  #  0x9a -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'  #  0x9b -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'  #  0x9c -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'  #  0x9d -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'  #  0x9e -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'  #  0x9f -> CYRILLIC CAPITAL LETTER YA
-    u'\u2020'  #  0xa0 -> DAGGER
-    u'\xb0'    #  0xa1 -> DEGREE SIGN
-    u'\u0490'  #  0xa2 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa7'    #  0xa4 -> SECTION SIGN
-    u'\u2022'  #  0xa5 -> BULLET
-    u'\xb6'    #  0xa6 -> PILCROW SIGN
-    u'\u0406'  #  0xa7 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\xae'    #  0xa8 -> REGISTERED SIGN
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u2122'  #  0xaa -> TRADE MARK SIGN
-    u'\u0402'  #  0xab -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0452'  #  0xac -> CYRILLIC SMALL LETTER DJE
-    u'\u2260'  #  0xad -> NOT EQUAL TO
-    u'\u0403'  #  0xae -> CYRILLIC CAPITAL LETTER GJE
-    u'\u0453'  #  0xaf -> CYRILLIC SMALL LETTER GJE
-    u'\u221e'  #  0xb0 -> INFINITY
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u2264'  #  0xb2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'  #  0xb3 -> GREATER-THAN OR EQUAL TO
-    u'\u0456'  #  0xb4 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\u0491'  #  0xb6 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
-    u'\u0408'  #  0xb7 -> CYRILLIC CAPITAL LETTER JE
-    u'\u0404'  #  0xb8 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0454'  #  0xb9 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0407'  #  0xba -> CYRILLIC CAPITAL LETTER YI
-    u'\u0457'  #  0xbb -> CYRILLIC SMALL LETTER YI
-    u'\u0409'  #  0xbc -> CYRILLIC CAPITAL LETTER LJE
-    u'\u0459'  #  0xbd -> CYRILLIC SMALL LETTER LJE
-    u'\u040a'  #  0xbe -> CYRILLIC CAPITAL LETTER NJE
-    u'\u045a'  #  0xbf -> CYRILLIC SMALL LETTER NJE
-    u'\u0458'  #  0xc0 -> CYRILLIC SMALL LETTER JE
-    u'\u0405'  #  0xc1 -> CYRILLIC CAPITAL LETTER DZE
-    u'\xac'    #  0xc2 -> NOT SIGN
-    u'\u221a'  #  0xc3 -> SQUARE ROOT
-    u'\u0192'  #  0xc4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'  #  0xc5 -> ALMOST EQUAL TO
-    u'\u2206'  #  0xc6 -> INCREMENT
-    u'\xab'    #  0xc7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0xc8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'  #  0xc9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'    #  0xca -> NO-BREAK SPACE
-    u'\u040b'  #  0xcb -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u045b'  #  0xcc -> CYRILLIC SMALL LETTER TSHE
-    u'\u040c'  #  0xcd -> CYRILLIC CAPITAL LETTER KJE
-    u'\u045c'  #  0xce -> CYRILLIC SMALL LETTER KJE
-    u'\u0455'  #  0xcf -> CYRILLIC SMALL LETTER DZE
-    u'\u2013'  #  0xd0 -> EN DASH
-    u'\u2014'  #  0xd1 -> EM DASH
-    u'\u201c'  #  0xd2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'  #  0xd3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'  #  0xd4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'  #  0xd5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'    #  0xd6 -> DIVISION SIGN
-    u'\u201e'  #  0xd7 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u040e'  #  0xd8 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045e'  #  0xd9 -> CYRILLIC SMALL LETTER SHORT U
-    u'\u040f'  #  0xda -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u045f'  #  0xdb -> CYRILLIC SMALL LETTER DZHE
-    u'\u2116'  #  0xdc -> NUMERO SIGN
-    u'\u0401'  #  0xdd -> CYRILLIC CAPITAL LETTER IO
-    u'\u0451'  #  0xde -> CYRILLIC SMALL LETTER IO
-    u'\u044f'  #  0xdf -> CYRILLIC SMALL LETTER YA
-    u'\u0430'  #  0xe0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'  #  0xe1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'  #  0xe2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'  #  0xe3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'  #  0xe4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'  #  0xe5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'  #  0xe6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'  #  0xe7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'  #  0xe8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'  #  0xe9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'  #  0xea -> CYRILLIC SMALL LETTER KA
-    u'\u043b'  #  0xeb -> CYRILLIC SMALL LETTER EL
-    u'\u043c'  #  0xec -> CYRILLIC SMALL LETTER EM
-    u'\u043d'  #  0xed -> CYRILLIC SMALL LETTER EN
-    u'\u043e'  #  0xee -> CYRILLIC SMALL LETTER O
-    u'\u043f'  #  0xef -> CYRILLIC SMALL LETTER PE
-    u'\u0440'  #  0xf0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'  #  0xf1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'  #  0xf2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'  #  0xf3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'  #  0xf4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'  #  0xf5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'  #  0xf6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'  #  0xf7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'  #  0xf8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'  #  0xf9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'  #  0xfa -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'  #  0xfb -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'  #  0xfc -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'  #  0xfd -> CYRILLIC SMALL LETTER E
-    u'\u044e'  #  0xfe -> CYRILLIC SMALL LETTER YU
-    u'\u20ac'  #  0xff -> EURO SIGN
+    u'\u042a'  #  0x9A -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\u042b'  #  0x9B -> CYRILLIC CAPITAL LETTER YERU
+    u'\u042c'  #  0x9C -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042d'  #  0x9D -> CYRILLIC CAPITAL LETTER E
+    u'\u042e'  #  0x9E -> CYRILLIC CAPITAL LETTER YU
+    u'\u042f'  #  0x9F -> CYRILLIC CAPITAL LETTER YA
+    u'\u2020'  #  0xA0 -> DAGGER
+    u'\xb0'    #  0xA1 -> DEGREE SIGN
+    u'\u0490'  #  0xA2 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa7'    #  0xA4 -> SECTION SIGN
+    u'\u2022'  #  0xA5 -> BULLET
+    u'\xb6'    #  0xA6 -> PILCROW SIGN
+    u'\u0406'  #  0xA7 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\xae'    #  0xA8 -> REGISTERED SIGN
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'  #  0xAA -> TRADE MARK SIGN
+    u'\u0402'  #  0xAB -> CYRILLIC CAPITAL LETTER DJE
+    u'\u0452'  #  0xAC -> CYRILLIC SMALL LETTER DJE
+    u'\u2260'  #  0xAD -> NOT EQUAL TO
+    u'\u0403'  #  0xAE -> CYRILLIC CAPITAL LETTER GJE
+    u'\u0453'  #  0xAF -> CYRILLIC SMALL LETTER GJE
+    u'\u221e'  #  0xB0 -> INFINITY
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'  #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'  #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\u0456'  #  0xB4 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\u0491'  #  0xB6 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
+    u'\u0408'  #  0xB7 -> CYRILLIC CAPITAL LETTER JE
+    u'\u0404'  #  0xB8 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\u0454'  #  0xB9 -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\u0407'  #  0xBA -> CYRILLIC CAPITAL LETTER YI
+    u'\u0457'  #  0xBB -> CYRILLIC SMALL LETTER YI
+    u'\u0409'  #  0xBC -> CYRILLIC CAPITAL LETTER LJE
+    u'\u0459'  #  0xBD -> CYRILLIC SMALL LETTER LJE
+    u'\u040a'  #  0xBE -> CYRILLIC CAPITAL LETTER NJE
+    u'\u045a'  #  0xBF -> CYRILLIC SMALL LETTER NJE
+    u'\u0458'  #  0xC0 -> CYRILLIC SMALL LETTER JE
+    u'\u0405'  #  0xC1 -> CYRILLIC CAPITAL LETTER DZE
+    u'\xac'    #  0xC2 -> NOT SIGN
+    u'\u221a'  #  0xC3 -> SQUARE ROOT
+    u'\u0192'  #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'  #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'  #  0xC6 -> INCREMENT
+    u'\xab'    #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'  #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'    #  0xCA -> NO-BREAK SPACE
+    u'\u040b'  #  0xCB -> CYRILLIC CAPITAL LETTER TSHE
+    u'\u045b'  #  0xCC -> CYRILLIC SMALL LETTER TSHE
+    u'\u040c'  #  0xCD -> CYRILLIC CAPITAL LETTER KJE
+    u'\u045c'  #  0xCE -> CYRILLIC SMALL LETTER KJE
+    u'\u0455'  #  0xCF -> CYRILLIC SMALL LETTER DZE
+    u'\u2013'  #  0xD0 -> EN DASH
+    u'\u2014'  #  0xD1 -> EM DASH
+    u'\u201c'  #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'  #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'  #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'  #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'    #  0xD6 -> DIVISION SIGN
+    u'\u201e'  #  0xD7 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u040e'  #  0xD8 -> CYRILLIC CAPITAL LETTER SHORT U
+    u'\u045e'  #  0xD9 -> CYRILLIC SMALL LETTER SHORT U
+    u'\u040f'  #  0xDA -> CYRILLIC CAPITAL LETTER DZHE
+    u'\u045f'  #  0xDB -> CYRILLIC SMALL LETTER DZHE
+    u'\u2116'  #  0xDC -> NUMERO SIGN
+    u'\u0401'  #  0xDD -> CYRILLIC CAPITAL LETTER IO
+    u'\u0451'  #  0xDE -> CYRILLIC SMALL LETTER IO
+    u'\u044f'  #  0xDF -> CYRILLIC SMALL LETTER YA
+    u'\u0430'  #  0xE0 -> CYRILLIC SMALL LETTER A
+    u'\u0431'  #  0xE1 -> CYRILLIC SMALL LETTER BE
+    u'\u0432'  #  0xE2 -> CYRILLIC SMALL LETTER VE
+    u'\u0433'  #  0xE3 -> CYRILLIC SMALL LETTER GHE
+    u'\u0434'  #  0xE4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'  #  0xE5 -> CYRILLIC SMALL LETTER IE
+    u'\u0436'  #  0xE6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0437'  #  0xE7 -> CYRILLIC SMALL LETTER ZE
+    u'\u0438'  #  0xE8 -> CYRILLIC SMALL LETTER I
+    u'\u0439'  #  0xE9 -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'  #  0xEA -> CYRILLIC SMALL LETTER KA
+    u'\u043b'  #  0xEB -> CYRILLIC SMALL LETTER EL
+    u'\u043c'  #  0xEC -> CYRILLIC SMALL LETTER EM
+    u'\u043d'  #  0xED -> CYRILLIC SMALL LETTER EN
+    u'\u043e'  #  0xEE -> CYRILLIC SMALL LETTER O
+    u'\u043f'  #  0xEF -> CYRILLIC SMALL LETTER PE
+    u'\u0440'  #  0xF0 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'  #  0xF1 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'  #  0xF2 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'  #  0xF3 -> CYRILLIC SMALL LETTER U
+    u'\u0444'  #  0xF4 -> CYRILLIC SMALL LETTER EF
+    u'\u0445'  #  0xF5 -> CYRILLIC SMALL LETTER HA
+    u'\u0446'  #  0xF6 -> CYRILLIC SMALL LETTER TSE
+    u'\u0447'  #  0xF7 -> CYRILLIC SMALL LETTER CHE
+    u'\u0448'  #  0xF8 -> CYRILLIC SMALL LETTER SHA
+    u'\u0449'  #  0xF9 -> CYRILLIC SMALL LETTER SHCHA
+    u'\u044a'  #  0xFA -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u044b'  #  0xFB -> CYRILLIC SMALL LETTER YERU
+    u'\u044c'  #  0xFC -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044d'  #  0xFD -> CYRILLIC SMALL LETTER E
+    u'\u044e'  #  0xFE -> CYRILLIC SMALL LETTER YU
+    u'\u20ac'  #  0xFF -> EURO SIGN
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  CONTROL CHARACTER
     0x0008: 0x08,      #  CONTROL CHARACTER
     0x0009: 0x09,      #  CONTROL CHARACTER
-    0x000a: 0x0a,      #  CONTROL CHARACTER
-    0x000b: 0x0b,      #  CONTROL CHARACTER
-    0x000c: 0x0c,      #  CONTROL CHARACTER
-    0x000d: 0x0d,      #  CONTROL CHARACTER
-    0x000e: 0x0e,      #  CONTROL CHARACTER
-    0x000f: 0x0f,      #  CONTROL CHARACTER
+    0x000A: 0x0A,      #  CONTROL CHARACTER
+    0x000B: 0x0B,      #  CONTROL CHARACTER
+    0x000C: 0x0C,      #  CONTROL CHARACTER
+    0x000D: 0x0D,      #  CONTROL CHARACTER
+    0x000E: 0x0E,      #  CONTROL CHARACTER
+    0x000F: 0x0F,      #  CONTROL CHARACTER
     0x0010: 0x10,      #  CONTROL CHARACTER
     0x0011: 0x11,      #  CONTROL CHARACTER
     0x0012: 0x12,      #  CONTROL CHARACTER
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  CONTROL CHARACTER
     0x0018: 0x18,      #  CONTROL CHARACTER
     0x0019: 0x19,      #  CONTROL CHARACTER
-    0x001a: 0x1a,      #  CONTROL CHARACTER
-    0x001b: 0x1b,      #  CONTROL CHARACTER
-    0x001c: 0x1c,      #  CONTROL CHARACTER
-    0x001d: 0x1d,      #  CONTROL CHARACTER
-    0x001e: 0x1e,      #  CONTROL CHARACTER
-    0x001f: 0x1f,      #  CONTROL CHARACTER
+    0x001A: 0x1A,      #  CONTROL CHARACTER
+    0x001B: 0x1B,      #  CONTROL CHARACTER
+    0x001C: 0x1C,      #  CONTROL CHARACTER
+    0x001D: 0x1D,      #  CONTROL CHARACTER
+    0x001E: 0x1E,      #  CONTROL CHARACTER
+    0x001F: 0x1F,      #  CONTROL CHARACTER
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,40 +415,40 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  CONTROL CHARACTER
-    0x00a0: 0xca,      #  NO-BREAK SPACE
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a7: 0xa4,      #  SECTION SIGN
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xc7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xc2,      #  NOT SIGN
-    0x00ae: 0xa8,      #  REGISTERED SIGN
-    0x00b0: 0xa1,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xa6,      #  PILCROW SIGN
-    0x00bb: 0xc8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00f7: 0xd6,      #  DIVISION SIGN
-    0x0192: 0xc4,      #  LATIN SMALL LETTER F WITH HOOK
-    0x0401: 0xdd,      #  CYRILLIC CAPITAL LETTER IO
-    0x0402: 0xab,      #  CYRILLIC CAPITAL LETTER DJE
-    0x0403: 0xae,      #  CYRILLIC CAPITAL LETTER GJE
-    0x0404: 0xb8,      #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0405: 0xc1,      #  CYRILLIC CAPITAL LETTER DZE
-    0x0406: 0xa7,      #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0xba,      #  CYRILLIC CAPITAL LETTER YI
-    0x0408: 0xb7,      #  CYRILLIC CAPITAL LETTER JE
-    0x0409: 0xbc,      #  CYRILLIC CAPITAL LETTER LJE
-    0x040a: 0xbe,      #  CYRILLIC CAPITAL LETTER NJE
-    0x040b: 0xcb,      #  CYRILLIC CAPITAL LETTER TSHE
-    0x040c: 0xcd,      #  CYRILLIC CAPITAL LETTER KJE
-    0x040e: 0xd8,      #  CYRILLIC CAPITAL LETTER SHORT U
-    0x040f: 0xda,      #  CYRILLIC CAPITAL LETTER DZHE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  CONTROL CHARACTER
+    0x00A0: 0xCA,      #  NO-BREAK SPACE
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A7: 0xA4,      #  SECTION SIGN
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xC7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,      #  NOT SIGN
+    0x00AE: 0xA8,      #  REGISTERED SIGN
+    0x00B0: 0xA1,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xA6,      #  PILCROW SIGN
+    0x00BB: 0xC8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00F7: 0xD6,      #  DIVISION SIGN
+    0x0192: 0xC4,      #  LATIN SMALL LETTER F WITH HOOK
+    0x0401: 0xDD,      #  CYRILLIC CAPITAL LETTER IO
+    0x0402: 0xAB,      #  CYRILLIC CAPITAL LETTER DJE
+    0x0403: 0xAE,      #  CYRILLIC CAPITAL LETTER GJE
+    0x0404: 0xB8,      #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0405: 0xC1,      #  CYRILLIC CAPITAL LETTER DZE
+    0x0406: 0xA7,      #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0407: 0xBA,      #  CYRILLIC CAPITAL LETTER YI
+    0x0408: 0xB7,      #  CYRILLIC CAPITAL LETTER JE
+    0x0409: 0xBC,      #  CYRILLIC CAPITAL LETTER LJE
+    0x040A: 0xBE,      #  CYRILLIC CAPITAL LETTER NJE
+    0x040B: 0xCB,      #  CYRILLIC CAPITAL LETTER TSHE
+    0x040C: 0xCD,      #  CYRILLIC CAPITAL LETTER KJE
+    0x040E: 0xD8,      #  CYRILLIC CAPITAL LETTER SHORT U
+    0x040F: 0xDA,      #  CYRILLIC CAPITAL LETTER DZHE
     0x0410: 0x80,      #  CYRILLIC CAPITAL LETTER A
     0x0411: 0x81,      #  CYRILLIC CAPITAL LETTER BE
     0x0412: 0x82,      #  CYRILLIC CAPITAL LETTER VE
@@ -459,12 +459,12 @@ encoding_map = {
     0x0417: 0x87,      #  CYRILLIC CAPITAL LETTER ZE
     0x0418: 0x88,      #  CYRILLIC CAPITAL LETTER I
     0x0419: 0x89,      #  CYRILLIC CAPITAL LETTER SHORT I
-    0x041a: 0x8a,      #  CYRILLIC CAPITAL LETTER KA
-    0x041b: 0x8b,      #  CYRILLIC CAPITAL LETTER EL
-    0x041c: 0x8c,      #  CYRILLIC CAPITAL LETTER EM
-    0x041d: 0x8d,      #  CYRILLIC CAPITAL LETTER EN
-    0x041e: 0x8e,      #  CYRILLIC CAPITAL LETTER O
-    0x041f: 0x8f,      #  CYRILLIC CAPITAL LETTER PE
+    0x041A: 0x8A,      #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0x8B,      #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0x8C,      #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0x8D,      #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0x8E,      #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0x8F,      #  CYRILLIC CAPITAL LETTER PE
     0x0420: 0x90,      #  CYRILLIC CAPITAL LETTER ER
     0x0421: 0x91,      #  CYRILLIC CAPITAL LETTER ES
     0x0422: 0x92,      #  CYRILLIC CAPITAL LETTER TE
@@ -475,78 +475,79 @@ encoding_map = {
     0x0427: 0x97,      #  CYRILLIC CAPITAL LETTER CHE
     0x0428: 0x98,      #  CYRILLIC CAPITAL LETTER SHA
     0x0429: 0x99,      #  CYRILLIC CAPITAL LETTER SHCHA
-    0x042a: 0x9a,      #  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042b: 0x9b,      #  CYRILLIC CAPITAL LETTER YERU
-    0x042c: 0x9c,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042d: 0x9d,      #  CYRILLIC CAPITAL LETTER E
-    0x042e: 0x9e,      #  CYRILLIC CAPITAL LETTER YU
-    0x042f: 0x9f,      #  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xe0,      #  CYRILLIC SMALL LETTER A
-    0x0431: 0xe1,      #  CYRILLIC SMALL LETTER BE
-    0x0432: 0xe2,      #  CYRILLIC SMALL LETTER VE
-    0x0433: 0xe3,      #  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xe4,      #  CYRILLIC SMALL LETTER DE
-    0x0435: 0xe5,      #  CYRILLIC SMALL LETTER IE
-    0x0436: 0xe6,      #  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xe7,      #  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xe8,      #  CYRILLIC SMALL LETTER I
-    0x0439: 0xe9,      #  CYRILLIC SMALL LETTER SHORT I
-    0x043a: 0xea,      #  CYRILLIC SMALL LETTER KA
-    0x043b: 0xeb,      #  CYRILLIC SMALL LETTER EL
-    0x043c: 0xec,      #  CYRILLIC SMALL LETTER EM
-    0x043d: 0xed,      #  CYRILLIC SMALL LETTER EN
-    0x043e: 0xee,      #  CYRILLIC SMALL LETTER O
-    0x043f: 0xef,      #  CYRILLIC SMALL LETTER PE
-    0x0440: 0xf0,      #  CYRILLIC SMALL LETTER ER
-    0x0441: 0xf1,      #  CYRILLIC SMALL LETTER ES
-    0x0442: 0xf2,      #  CYRILLIC SMALL LETTER TE
-    0x0443: 0xf3,      #  CYRILLIC SMALL LETTER U
-    0x0444: 0xf4,      #  CYRILLIC SMALL LETTER EF
-    0x0445: 0xf5,      #  CYRILLIC SMALL LETTER HA
-    0x0446: 0xf6,      #  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xf7,      #  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xf8,      #  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xf9,      #  CYRILLIC SMALL LETTER SHCHA
-    0x044a: 0xfa,      #  CYRILLIC SMALL LETTER HARD SIGN
-    0x044b: 0xfb,      #  CYRILLIC SMALL LETTER YERU
-    0x044c: 0xfc,      #  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044d: 0xfd,      #  CYRILLIC SMALL LETTER E
-    0x044e: 0xfe,      #  CYRILLIC SMALL LETTER YU
-    0x044f: 0xdf,      #  CYRILLIC SMALL LETTER YA
-    0x0451: 0xde,      #  CYRILLIC SMALL LETTER IO
-    0x0452: 0xac,      #  CYRILLIC SMALL LETTER DJE
-    0x0453: 0xaf,      #  CYRILLIC SMALL LETTER GJE
-    0x0454: 0xb9,      #  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0455: 0xcf,      #  CYRILLIC SMALL LETTER DZE
-    0x0456: 0xb4,      #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0xbb,      #  CYRILLIC SMALL LETTER YI
-    0x0458: 0xc0,      #  CYRILLIC SMALL LETTER JE
-    0x0459: 0xbd,      #  CYRILLIC SMALL LETTER LJE
-    0x045a: 0xbf,      #  CYRILLIC SMALL LETTER NJE
-    0x045b: 0xcc,      #  CYRILLIC SMALL LETTER TSHE
-    0x045c: 0xce,      #  CYRILLIC SMALL LETTER KJE
-    0x045e: 0xd9,      #  CYRILLIC SMALL LETTER SHORT U
-    0x045f: 0xdb,      #  CYRILLIC SMALL LETTER DZHE
-    0x0490: 0xa2,      #  CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    0x0491: 0xb6,      #  CYRILLIC SMALL LETTER GHE WITH UPTURN
-    0x2013: 0xd0,      #  EN DASH
-    0x2014: 0xd1,      #  EM DASH
-    0x2018: 0xd4,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xd5,      #  RIGHT SINGLE QUOTATION MARK
-    0x201c: 0xd2,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0xd3,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0xd7,      #  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xa0,      #  DAGGER
-    0x2022: 0xa5,      #  BULLET
-    0x2026: 0xc9,      #  HORIZONTAL ELLIPSIS
-    0x20ac: 0xff,      #  EURO SIGN
-    0x2116: 0xdc,      #  NUMERO SIGN
-    0x2122: 0xaa,      #  TRADE MARK SIGN
-    0x2206: 0xc6,      #  INCREMENT
-    0x221a: 0xc3,      #  SQUARE ROOT
-    0x221e: 0xb0,      #  INFINITY
-    0x2248: 0xc5,      #  ALMOST EQUAL TO
-    0x2260: 0xad,      #  NOT EQUAL TO
-    0x2264: 0xb2,      #  LESS-THAN OR EQUAL TO
-    0x2265: 0xb3,      #  GREATER-THAN OR EQUAL TO
-}
\ No newline at end of file
+    0x042A: 0x9A,      #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0x9B,      #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0x9C,      #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0x9D,      #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0x9E,      #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0x9F,      #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xE0,      #  CYRILLIC SMALL LETTER A
+    0x0431: 0xE1,      #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xE2,      #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xE3,      #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xE4,      #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xE5,      #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xE6,      #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xE7,      #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xE8,      #  CYRILLIC SMALL LETTER I
+    0x0439: 0xE9,      #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xEA,      #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xEB,      #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xEC,      #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xED,      #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xEE,      #  CYRILLIC SMALL LETTER O
+    0x043F: 0xEF,      #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xF0,      #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xF1,      #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xF2,      #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xF3,      #  CYRILLIC SMALL LETTER U
+    0x0444: 0xF4,      #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xF5,      #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xF6,      #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xF7,      #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xF8,      #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xF9,      #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xFA,      #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xFB,      #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xFC,      #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xFD,      #  CYRILLIC SMALL LETTER E
+    0x044E: 0xFE,      #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xDF,      #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xDE,      #  CYRILLIC SMALL LETTER IO
+    0x0452: 0xAC,      #  CYRILLIC SMALL LETTER DJE
+    0x0453: 0xAF,      #  CYRILLIC SMALL LETTER GJE
+    0x0454: 0xB9,      #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0455: 0xCF,      #  CYRILLIC SMALL LETTER DZE
+    0x0456: 0xB4,      #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0457: 0xBB,      #  CYRILLIC SMALL LETTER YI
+    0x0458: 0xC0,      #  CYRILLIC SMALL LETTER JE
+    0x0459: 0xBD,      #  CYRILLIC SMALL LETTER LJE
+    0x045A: 0xBF,      #  CYRILLIC SMALL LETTER NJE
+    0x045B: 0xCC,      #  CYRILLIC SMALL LETTER TSHE
+    0x045C: 0xCE,      #  CYRILLIC SMALL LETTER KJE
+    0x045E: 0xD9,      #  CYRILLIC SMALL LETTER SHORT U
+    0x045F: 0xDB,      #  CYRILLIC SMALL LETTER DZHE
+    0x0490: 0xA2,      #  CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+    0x0491: 0xB6,      #  CYRILLIC SMALL LETTER GHE WITH UPTURN
+    0x2013: 0xD0,      #  EN DASH
+    0x2014: 0xD1,      #  EM DASH
+    0x2018: 0xD4,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,      #  RIGHT SINGLE QUOTATION MARK
+    0x201C: 0xD2,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xD7,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,      #  DAGGER
+    0x2022: 0xA5,      #  BULLET
+    0x2026: 0xC9,      #  HORIZONTAL ELLIPSIS
+    0x20AC: 0xFF,      #  EURO SIGN
+    0x2116: 0xDC,      #  NUMERO SIGN
+    0x2122: 0xAA,      #  TRADE MARK SIGN
+    0x2206: 0xC6,      #  INCREMENT
+    0x221A: 0xC3,      #  SQUARE ROOT
+    0x221E: 0xB0,      #  INFINITY
+    0x2248: 0xC5,      #  ALMOST EQUAL TO
+    0x2260: 0xAD,      #  NOT EQUAL TO
+    0x2264: 0xB2,      #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,      #  GREATER-THAN OR EQUAL TO
+}
+
index 8a09f8e7aaa13e70e350afc03e48e5c98ebd40b7..f5ecc4cbb41d8b0f0585205a6366b56778e54493 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> CONTROL CHARACTER
     u'\x08'    #  0x08 -> CONTROL CHARACTER
     u'\t'      #  0x09 -> CONTROL CHARACTER
-    u'\n'      #  0x0a -> CONTROL CHARACTER
-    u'\x0b'    #  0x0b -> CONTROL CHARACTER
-    u'\x0c'    #  0x0c -> CONTROL CHARACTER
-    u'\r'      #  0x0d -> CONTROL CHARACTER
-    u'\x0e'    #  0x0e -> CONTROL CHARACTER
-    u'\x0f'    #  0x0f -> CONTROL CHARACTER
+    u'\n'      #  0x0A -> CONTROL CHARACTER
+    u'\x0b'    #  0x0B -> CONTROL CHARACTER
+    u'\x0c'    #  0x0C -> CONTROL CHARACTER
+    u'\r'      #  0x0D -> CONTROL CHARACTER
+    u'\x0e'    #  0x0E -> CONTROL CHARACTER
+    u'\x0f'    #  0x0F -> CONTROL CHARACTER
     u'\x10'    #  0x10 -> CONTROL CHARACTER
     u'\x11'    #  0x11 -> CONTROL CHARACTER
     u'\x12'    #  0x12 -> CONTROL CHARACTER
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> CONTROL CHARACTER
     u'\x18'    #  0x18 -> CONTROL CHARACTER
     u'\x19'    #  0x19 -> CONTROL CHARACTER
-    u'\x1a'    #  0x1a -> CONTROL CHARACTER
-    u'\x1b'    #  0x1b -> CONTROL CHARACTER
-    u'\x1c'    #  0x1c -> CONTROL CHARACTER
-    u'\x1d'    #  0x1d -> CONTROL CHARACTER
-    u'\x1e'    #  0x1e -> CONTROL CHARACTER
-    u'\x1f'    #  0x1f -> CONTROL CHARACTER
+    u'\x1a'    #  0x1A -> CONTROL CHARACTER
+    u'\x1b'    #  0x1B -> CONTROL CHARACTER
+    u'\x1c'    #  0x1C -> CONTROL CHARACTER
+    u'\x1d'    #  0x1D -> CONTROL CHARACTER
+    u'\x1e'    #  0x1E -> CONTROL CHARACTER
+    u'\x1f'    #  0x1F -> CONTROL CHARACTER
     u' '       #  0x20 -> SPACE, left-right
     u'!'       #  0x21 -> EXCLAMATION MARK, left-right
     u'"'       #  0x22 -> QUOTATION MARK, left-right
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE, left-right
     u'('       #  0x28 -> LEFT PARENTHESIS, left-right
     u')'       #  0x29 -> RIGHT PARENTHESIS, left-right
-    u'*'       #  0x2a -> ASTERISK, left-right
-    u'+'       #  0x2b -> PLUS SIGN, left-right
-    u','       #  0x2c -> COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-    u'-'       #  0x2d -> HYPHEN-MINUS, left-right
-    u'.'       #  0x2e -> FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-    u'/'       #  0x2f -> SOLIDUS, left-right
+    u'*'       #  0x2A -> ASTERISK, left-right
+    u'+'       #  0x2B -> PLUS SIGN, left-right
+    u','       #  0x2C -> COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
+    u'-'       #  0x2D -> HYPHEN-MINUS, left-right
+    u'.'       #  0x2E -> FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
+    u'/'       #  0x2F -> SOLIDUS, left-right
     u'0'       #  0x30 -> DIGIT ZERO;  in Arabic-script context, displayed as 0x06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE;   in Arabic-script context, displayed as 0x06F1 EXTENDED ARABIC-INDIC DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO;   in Arabic-script context, displayed as 0x06F2 EXTENDED ARABIC-INDIC DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN; in Arabic-script context, displayed as 0x06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT; in Arabic-script context, displayed as 0x06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE;  in Arabic-script context, displayed as 0x06F9 EXTENDED ARABIC-INDIC DIGIT NINE
-    u':'       #  0x3a -> COLON, left-right
-    u';'       #  0x3b -> SEMICOLON, left-right
-    u'<'       #  0x3c -> LESS-THAN SIGN, left-right
-    u'='       #  0x3d -> EQUALS SIGN, left-right
-    u'>'       #  0x3e -> GREATER-THAN SIGN, left-right
-    u'?'       #  0x3f -> QUESTION MARK, left-right
+    u':'       #  0x3A -> COLON, left-right
+    u';'       #  0x3B -> SEMICOLON, left-right
+    u'<'       #  0x3C -> LESS-THAN SIGN, left-right
+    u'='       #  0x3D -> EQUALS SIGN, left-right
+    u'>'       #  0x3E -> GREATER-THAN SIGN, left-right
+    u'?'       #  0x3F -> QUESTION MARK, left-right
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET, left-right
-    u'\\'      #  0x5c -> REVERSE SOLIDUS, left-right
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET, left-right
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT, left-right
-    u'_'       #  0x5f -> LOW LINE, left-right
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET, left-right
+    u'\\'      #  0x5C -> REVERSE SOLIDUS, left-right
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET, left-right
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT, left-right
+    u'_'       #  0x5F -> LOW LINE, left-right
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET, left-right
-    u'|'       #  0x7c -> VERTICAL LINE, left-right
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET, left-right
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> CONTROL CHARACTER
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET, left-right
+    u'|'       #  0x7C -> VERTICAL LINE, left-right
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET, left-right
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> CONTROL CHARACTER
     u'\xc4'    #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
     u'\xa0'    #  0x81 -> NO-BREAK SPACE, right-left
     u'\xc7'    #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
@@ -170,12 +170,12 @@ decoding_table = (
     u'\xe1'    #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
     u'\xe0'    #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
     u'\xe2'    #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'    #  0x8a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u06ba'  #  0x8b -> ARABIC LETTER NOON GHUNNA
-    u'\xab'    #  0x8c -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    u'\xe7'    #  0x8d -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'    #  0x8e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'    #  0x8f -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe4'    #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u06ba'  #  0x8B -> ARABIC LETTER NOON GHUNNA
+    u'\xab'    #  0x8C -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    u'\xe7'    #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'    #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'    #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
     u'\xea'    #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
     u'\xeb'    #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
     u'\xed'    #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\xf3'    #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
     u'\xbb'    #  0x98 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
     u'\xf4'    #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0x9a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'    #  0x9b -> DIVISION SIGN, right-left
-    u'\xfa'    #  0x9c -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'    #  0x9d -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'    #  0x9e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0x9f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u' '       #  0xa0 -> SPACE, right-left
-    u'!'       #  0xa1 -> EXCLAMATION MARK, right-left
-    u'"'       #  0xa2 -> QUOTATION MARK, right-left
-    u'#'       #  0xa3 -> NUMBER SIGN, right-left
-    u'$'       #  0xa4 -> DOLLAR SIGN, right-left
-    u'\u066a'  #  0xa5 -> ARABIC PERCENT SIGN
-    u'&'       #  0xa6 -> AMPERSAND, right-left
-    u"'"       #  0xa7 -> APOSTROPHE, right-left
-    u'('       #  0xa8 -> LEFT PARENTHESIS, right-left
-    u')'       #  0xa9 -> RIGHT PARENTHESIS, right-left
-    u'*'       #  0xaa -> ASTERISK, right-left
-    u'+'       #  0xab -> PLUS SIGN, right-left
-    u'\u060c'  #  0xac -> ARABIC COMMA
-    u'-'       #  0xad -> HYPHEN-MINUS, right-left
-    u'.'       #  0xae -> FULL STOP, right-left
-    u'/'       #  0xaf -> SOLIDUS, right-left
-    u'\u06f0'  #  0xb0 -> EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    u'\u06f1'  #  0xb1 -> EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
-    u'\u06f2'  #  0xb2 -> EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
-    u'\u06f3'  #  0xb3 -> EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
-    u'\u06f4'  #  0xb4 -> EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    u'\u06f5'  #  0xb5 -> EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    u'\u06f6'  #  0xb6 -> EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
-    u'\u06f7'  #  0xb7 -> EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    u'\u06f8'  #  0xb8 -> EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    u'\u06f9'  #  0xb9 -> EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
-    u':'       #  0xba -> COLON, right-left
-    u'\u061b'  #  0xbb -> ARABIC SEMICOLON
-    u'<'       #  0xbc -> LESS-THAN SIGN, right-left
-    u'='       #  0xbd -> EQUALS SIGN, right-left
-    u'>'       #  0xbe -> GREATER-THAN SIGN, right-left
-    u'\u061f'  #  0xbf -> ARABIC QUESTION MARK
-    u'\u274a'  #  0xc0 -> EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-    u'\u0621'  #  0xc1 -> ARABIC LETTER HAMZA
-    u'\u0622'  #  0xc2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'  #  0xc3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'  #  0xc4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'  #  0xc5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'  #  0xc6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'  #  0xc7 -> ARABIC LETTER ALEF
-    u'\u0628'  #  0xc8 -> ARABIC LETTER BEH
-    u'\u0629'  #  0xc9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'  #  0xca -> ARABIC LETTER TEH
-    u'\u062b'  #  0xcb -> ARABIC LETTER THEH
-    u'\u062c'  #  0xcc -> ARABIC LETTER JEEM
-    u'\u062d'  #  0xcd -> ARABIC LETTER HAH
-    u'\u062e'  #  0xce -> ARABIC LETTER KHAH
-    u'\u062f'  #  0xcf -> ARABIC LETTER DAL
-    u'\u0630'  #  0xd0 -> ARABIC LETTER THAL
-    u'\u0631'  #  0xd1 -> ARABIC LETTER REH
-    u'\u0632'  #  0xd2 -> ARABIC LETTER ZAIN
-    u'\u0633'  #  0xd3 -> ARABIC LETTER SEEN
-    u'\u0634'  #  0xd4 -> ARABIC LETTER SHEEN
-    u'\u0635'  #  0xd5 -> ARABIC LETTER SAD
-    u'\u0636'  #  0xd6 -> ARABIC LETTER DAD
-    u'\u0637'  #  0xd7 -> ARABIC LETTER TAH
-    u'\u0638'  #  0xd8 -> ARABIC LETTER ZAH
-    u'\u0639'  #  0xd9 -> ARABIC LETTER AIN
-    u'\u063a'  #  0xda -> ARABIC LETTER GHAIN
-    u'['       #  0xdb -> LEFT SQUARE BRACKET, right-left
-    u'\\'      #  0xdc -> REVERSE SOLIDUS, right-left
-    u']'       #  0xdd -> RIGHT SQUARE BRACKET, right-left
-    u'^'       #  0xde -> CIRCUMFLEX ACCENT, right-left
-    u'_'       #  0xdf -> LOW LINE, right-left
-    u'\u0640'  #  0xe0 -> ARABIC TATWEEL
-    u'\u0641'  #  0xe1 -> ARABIC LETTER FEH
-    u'\u0642'  #  0xe2 -> ARABIC LETTER QAF
-    u'\u0643'  #  0xe3 -> ARABIC LETTER KAF
-    u'\u0644'  #  0xe4 -> ARABIC LETTER LAM
-    u'\u0645'  #  0xe5 -> ARABIC LETTER MEEM
-    u'\u0646'  #  0xe6 -> ARABIC LETTER NOON
-    u'\u0647'  #  0xe7 -> ARABIC LETTER HEH
-    u'\u0648'  #  0xe8 -> ARABIC LETTER WAW
-    u'\u0649'  #  0xe9 -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'  #  0xea -> ARABIC LETTER YEH
-    u'\u064b'  #  0xeb -> ARABIC FATHATAN
-    u'\u064c'  #  0xec -> ARABIC DAMMATAN
-    u'\u064d'  #  0xed -> ARABIC KASRATAN
-    u'\u064e'  #  0xee -> ARABIC FATHA
-    u'\u064f'  #  0xef -> ARABIC DAMMA
-    u'\u0650'  #  0xf0 -> ARABIC KASRA
-    u'\u0651'  #  0xf1 -> ARABIC SHADDA
-    u'\u0652'  #  0xf2 -> ARABIC SUKUN
-    u'\u067e'  #  0xf3 -> ARABIC LETTER PEH
-    u'\u0679'  #  0xf4 -> ARABIC LETTER TTEH
-    u'\u0686'  #  0xf5 -> ARABIC LETTER TCHEH
-    u'\u06d5'  #  0xf6 -> ARABIC LETTER AE
-    u'\u06a4'  #  0xf7 -> ARABIC LETTER VEH
-    u'\u06af'  #  0xf8 -> ARABIC LETTER GAF
-    u'\u0688'  #  0xf9 -> ARABIC LETTER DDAL
-    u'\u0691'  #  0xfa -> ARABIC LETTER RREH
-    u'{'       #  0xfb -> LEFT CURLY BRACKET, right-left
-    u'|'       #  0xfc -> VERTICAL LINE, right-left
-    u'}'       #  0xfd -> RIGHT CURLY BRACKET, right-left
-    u'\u0698'  #  0xfe -> ARABIC LETTER JEH
-    u'\u06d2'  #  0xff -> ARABIC LETTER YEH BARREE
+    u'\xf6'    #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'    #  0x9B -> DIVISION SIGN, right-left
+    u'\xfa'    #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'    #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'    #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u' '       #  0xA0 -> SPACE, right-left
+    u'!'       #  0xA1 -> EXCLAMATION MARK, right-left
+    u'"'       #  0xA2 -> QUOTATION MARK, right-left
+    u'#'       #  0xA3 -> NUMBER SIGN, right-left
+    u'$'       #  0xA4 -> DOLLAR SIGN, right-left
+    u'\u066a'  #  0xA5 -> ARABIC PERCENT SIGN
+    u'&'       #  0xA6 -> AMPERSAND, right-left
+    u"'"       #  0xA7 -> APOSTROPHE, right-left
+    u'('       #  0xA8 -> LEFT PARENTHESIS, right-left
+    u')'       #  0xA9 -> RIGHT PARENTHESIS, right-left
+    u'*'       #  0xAA -> ASTERISK, right-left
+    u'+'       #  0xAB -> PLUS SIGN, right-left
+    u'\u060c'  #  0xAC -> ARABIC COMMA
+    u'-'       #  0xAD -> HYPHEN-MINUS, right-left
+    u'.'       #  0xAE -> FULL STOP, right-left
+    u'/'       #  0xAF -> SOLIDUS, right-left
+    u'\u06f0'  #  0xB0 -> EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
+    u'\u06f1'  #  0xB1 -> EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
+    u'\u06f2'  #  0xB2 -> EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
+    u'\u06f3'  #  0xB3 -> EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
+    u'\u06f4'  #  0xB4 -> EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
+    u'\u06f5'  #  0xB5 -> EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
+    u'\u06f6'  #  0xB6 -> EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
+    u'\u06f7'  #  0xB7 -> EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
+    u'\u06f8'  #  0xB8 -> EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
+    u'\u06f9'  #  0xB9 -> EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
+    u':'       #  0xBA -> COLON, right-left
+    u'\u061b'  #  0xBB -> ARABIC SEMICOLON
+    u'<'       #  0xBC -> LESS-THAN SIGN, right-left
+    u'='       #  0xBD -> EQUALS SIGN, right-left
+    u'>'       #  0xBE -> GREATER-THAN SIGN, right-left
+    u'\u061f'  #  0xBF -> ARABIC QUESTION MARK
+    u'\u274a'  #  0xC0 -> EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
+    u'\u0621'  #  0xC1 -> ARABIC LETTER HAMZA
+    u'\u0622'  #  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
+    u'\u0623'  #  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
+    u'\u0624'  #  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
+    u'\u0625'  #  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
+    u'\u0626'  #  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
+    u'\u0627'  #  0xC7 -> ARABIC LETTER ALEF
+    u'\u0628'  #  0xC8 -> ARABIC LETTER BEH
+    u'\u0629'  #  0xC9 -> ARABIC LETTER TEH MARBUTA
+    u'\u062a'  #  0xCA -> ARABIC LETTER TEH
+    u'\u062b'  #  0xCB -> ARABIC LETTER THEH
+    u'\u062c'  #  0xCC -> ARABIC LETTER JEEM
+    u'\u062d'  #  0xCD -> ARABIC LETTER HAH
+    u'\u062e'  #  0xCE -> ARABIC LETTER KHAH
+    u'\u062f'  #  0xCF -> ARABIC LETTER DAL
+    u'\u0630'  #  0xD0 -> ARABIC LETTER THAL
+    u'\u0631'  #  0xD1 -> ARABIC LETTER REH
+    u'\u0632'  #  0xD2 -> ARABIC LETTER ZAIN
+    u'\u0633'  #  0xD3 -> ARABIC LETTER SEEN
+    u'\u0634'  #  0xD4 -> ARABIC LETTER SHEEN
+    u'\u0635'  #  0xD5 -> ARABIC LETTER SAD
+    u'\u0636'  #  0xD6 -> ARABIC LETTER DAD
+    u'\u0637'  #  0xD7 -> ARABIC LETTER TAH
+    u'\u0638'  #  0xD8 -> ARABIC LETTER ZAH
+    u'\u0639'  #  0xD9 -> ARABIC LETTER AIN
+    u'\u063a'  #  0xDA -> ARABIC LETTER GHAIN
+    u'['       #  0xDB -> LEFT SQUARE BRACKET, right-left
+    u'\\'      #  0xDC -> REVERSE SOLIDUS, right-left
+    u']'       #  0xDD -> RIGHT SQUARE BRACKET, right-left
+    u'^'       #  0xDE -> CIRCUMFLEX ACCENT, right-left
+    u'_'       #  0xDF -> LOW LINE, right-left
+    u'\u0640'  #  0xE0 -> ARABIC TATWEEL
+    u'\u0641'  #  0xE1 -> ARABIC LETTER FEH
+    u'\u0642'  #  0xE2 -> ARABIC LETTER QAF
+    u'\u0643'  #  0xE3 -> ARABIC LETTER KAF
+    u'\u0644'  #  0xE4 -> ARABIC LETTER LAM
+    u'\u0645'  #  0xE5 -> ARABIC LETTER MEEM
+    u'\u0646'  #  0xE6 -> ARABIC LETTER NOON
+    u'\u0647'  #  0xE7 -> ARABIC LETTER HEH
+    u'\u0648'  #  0xE8 -> ARABIC LETTER WAW
+    u'\u0649'  #  0xE9 -> ARABIC LETTER ALEF MAKSURA
+    u'\u064a'  #  0xEA -> ARABIC LETTER YEH
+    u'\u064b'  #  0xEB -> ARABIC FATHATAN
+    u'\u064c'  #  0xEC -> ARABIC DAMMATAN
+    u'\u064d'  #  0xED -> ARABIC KASRATAN
+    u'\u064e'  #  0xEE -> ARABIC FATHA
+    u'\u064f'  #  0xEF -> ARABIC DAMMA
+    u'\u0650'  #  0xF0 -> ARABIC KASRA
+    u'\u0651'  #  0xF1 -> ARABIC SHADDA
+    u'\u0652'  #  0xF2 -> ARABIC SUKUN
+    u'\u067e'  #  0xF3 -> ARABIC LETTER PEH
+    u'\u0679'  #  0xF4 -> ARABIC LETTER TTEH
+    u'\u0686'  #  0xF5 -> ARABIC LETTER TCHEH
+    u'\u06d5'  #  0xF6 -> ARABIC LETTER AE
+    u'\u06a4'  #  0xF7 -> ARABIC LETTER VEH
+    u'\u06af'  #  0xF8 -> ARABIC LETTER GAF
+    u'\u0688'  #  0xF9 -> ARABIC LETTER DDAL
+    u'\u0691'  #  0xFA -> ARABIC LETTER RREH
+    u'{'       #  0xFB -> LEFT CURLY BRACKET, right-left
+    u'|'       #  0xFC -> VERTICAL LINE, right-left
+    u'}'       #  0xFD -> RIGHT CURLY BRACKET, right-left
+    u'\u0698'  #  0xFE -> ARABIC LETTER JEH
+    u'\u06d2'  #  0xFF -> ARABIC LETTER YEH BARREE
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  CONTROL CHARACTER
     0x0008: 0x08,      #  CONTROL CHARACTER
     0x0009: 0x09,      #  CONTROL CHARACTER
-    0x000a: 0x0a,      #  CONTROL CHARACTER
-    0x000b: 0x0b,      #  CONTROL CHARACTER
-    0x000c: 0x0c,      #  CONTROL CHARACTER
-    0x000d: 0x0d,      #  CONTROL CHARACTER
-    0x000e: 0x0e,      #  CONTROL CHARACTER
-    0x000f: 0x0f,      #  CONTROL CHARACTER
+    0x000A: 0x0A,      #  CONTROL CHARACTER
+    0x000B: 0x0B,      #  CONTROL CHARACTER
+    0x000C: 0x0C,      #  CONTROL CHARACTER
+    0x000D: 0x0D,      #  CONTROL CHARACTER
+    0x000E: 0x0E,      #  CONTROL CHARACTER
+    0x000F: 0x0F,      #  CONTROL CHARACTER
     0x0010: 0x10,      #  CONTROL CHARACTER
     0x0011: 0x11,      #  CONTROL CHARACTER
     0x0012: 0x12,      #  CONTROL CHARACTER
@@ -319,42 +319,42 @@ encoding_map = {
     0x0017: 0x17,      #  CONTROL CHARACTER
     0x0018: 0x18,      #  CONTROL CHARACTER
     0x0019: 0x19,      #  CONTROL CHARACTER
-    0x001a: 0x1a,      #  CONTROL CHARACTER
-    0x001b: 0x1b,      #  CONTROL CHARACTER
-    0x001c: 0x1c,      #  CONTROL CHARACTER
-    0x001d: 0x1d,      #  CONTROL CHARACTER
-    0x001e: 0x1e,      #  CONTROL CHARACTER
-    0x001f: 0x1f,      #  CONTROL CHARACTER
+    0x001A: 0x1A,      #  CONTROL CHARACTER
+    0x001B: 0x1B,      #  CONTROL CHARACTER
+    0x001C: 0x1C,      #  CONTROL CHARACTER
+    0x001D: 0x1D,      #  CONTROL CHARACTER
+    0x001E: 0x1E,      #  CONTROL CHARACTER
+    0x001F: 0x1F,      #  CONTROL CHARACTER
     0x0020: 0x20,      #  SPACE, left-right
-    0x0020: 0xa0,      #  SPACE, right-left
+    0x0020: 0xA0,      #  SPACE, right-left
     0x0021: 0x21,      #  EXCLAMATION MARK, left-right
-    0x0021: 0xa1,      #  EXCLAMATION MARK, right-left
+    0x0021: 0xA1,      #  EXCLAMATION MARK, right-left
     0x0022: 0x22,      #  QUOTATION MARK, left-right
-    0x0022: 0xa2,      #  QUOTATION MARK, right-left
+    0x0022: 0xA2,      #  QUOTATION MARK, right-left
     0x0023: 0x23,      #  NUMBER SIGN, left-right
-    0x0023: 0xa3,      #  NUMBER SIGN, right-left
+    0x0023: 0xA3,      #  NUMBER SIGN, right-left
     0x0024: 0x24,      #  DOLLAR SIGN, left-right
-    0x0024: 0xa4,      #  DOLLAR SIGN, right-left
+    0x0024: 0xA4,      #  DOLLAR SIGN, right-left
     0x0025: 0x25,      #  PERCENT SIGN, left-right
     0x0026: 0x26,      #  AMPERSAND, left-right
-    0x0026: 0xa6,      #  AMPERSAND, right-left
+    0x0026: 0xA6,      #  AMPERSAND, right-left
     0x0027: 0x27,      #  APOSTROPHE, left-right
-    0x0027: 0xa7,      #  APOSTROPHE, right-left
+    0x0027: 0xA7,      #  APOSTROPHE, right-left
     0x0028: 0x28,      #  LEFT PARENTHESIS, left-right
-    0x0028: 0xa8,      #  LEFT PARENTHESIS, right-left
+    0x0028: 0xA8,      #  LEFT PARENTHESIS, right-left
     0x0029: 0x29,      #  RIGHT PARENTHESIS, left-right
-    0x0029: 0xa9,      #  RIGHT PARENTHESIS, right-left
-    0x002a: 0x2a,      #  ASTERISK, left-right
-    0x002a: 0xaa,      #  ASTERISK, right-left
-    0x002b: 0x2b,      #  PLUS SIGN, left-right
-    0x002b: 0xab,      #  PLUS SIGN, right-left
-    0x002c: 0x2c,      #  COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-    0x002d: 0x2d,      #  HYPHEN-MINUS, left-right
-    0x002d: 0xad,      #  HYPHEN-MINUS, right-left
-    0x002e: 0x2e,      #  FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-    0x002e: 0xae,      #  FULL STOP, right-left
-    0x002f: 0x2f,      #  SOLIDUS, left-right
-    0x002f: 0xaf,      #  SOLIDUS, right-left
+    0x0029: 0xA9,      #  RIGHT PARENTHESIS, right-left
+    0x002A: 0x2A,      #  ASTERISK, left-right
+    0x002A: 0xAA,      #  ASTERISK, right-left
+    0x002B: 0x2B,      #  PLUS SIGN, left-right
+    0x002B: 0xAB,      #  PLUS SIGN, right-left
+    0x002C: 0x2C,      #  COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
+    0x002D: 0x2D,      #  HYPHEN-MINUS, left-right
+    0x002D: 0xAD,      #  HYPHEN-MINUS, right-left
+    0x002E: 0x2E,      #  FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
+    0x002E: 0xAE,      #  FULL STOP, right-left
+    0x002F: 0x2F,      #  SOLIDUS, left-right
+    0x002F: 0xAF,      #  SOLIDUS, right-left
     0x0030: 0x30,      #  DIGIT ZERO;  in Arabic-script context, displayed as 0x06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE;   in Arabic-script context, displayed as 0x06F1 EXTENDED ARABIC-INDIC DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO;   in Arabic-script context, displayed as 0x06F2 EXTENDED ARABIC-INDIC DIGIT TWO
@@ -365,16 +365,16 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN; in Arabic-script context, displayed as 0x06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT; in Arabic-script context, displayed as 0x06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE;  in Arabic-script context, displayed as 0x06F9 EXTENDED ARABIC-INDIC DIGIT NINE
-    0x003a: 0x3a,      #  COLON, left-right
-    0x003a: 0xba,      #  COLON, right-left
-    0x003b: 0x3b,      #  SEMICOLON, left-right
-    0x003c: 0x3c,      #  LESS-THAN SIGN, left-right
-    0x003c: 0xbc,      #  LESS-THAN SIGN, right-left
-    0x003d: 0x3d,      #  EQUALS SIGN, left-right
-    0x003d: 0xbd,      #  EQUALS SIGN, right-left
-    0x003e: 0x3e,      #  GREATER-THAN SIGN, left-right
-    0x003e: 0xbe,      #  GREATER-THAN SIGN, right-left
-    0x003f: 0x3f,      #  QUESTION MARK, left-right
+    0x003A: 0x3A,      #  COLON, left-right
+    0x003A: 0xBA,      #  COLON, right-left
+    0x003B: 0x3B,      #  SEMICOLON, left-right
+    0x003C: 0x3C,      #  LESS-THAN SIGN, left-right
+    0x003C: 0xBC,      #  LESS-THAN SIGN, right-left
+    0x003D: 0x3D,      #  EQUALS SIGN, left-right
+    0x003D: 0xBD,      #  EQUALS SIGN, right-left
+    0x003E: 0x3E,      #  GREATER-THAN SIGN, left-right
+    0x003E: 0xBE,      #  GREATER-THAN SIGN, right-left
+    0x003F: 0x3F,      #  QUESTION MARK, left-right
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -385,12 +385,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -401,17 +401,17 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET, left-right
-    0x005b: 0xdb,      #  LEFT SQUARE BRACKET, right-left
-    0x005c: 0x5c,      #  REVERSE SOLIDUS, left-right
-    0x005c: 0xdc,      #  REVERSE SOLIDUS, right-left
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET, left-right
-    0x005d: 0xdd,      #  RIGHT SQUARE BRACKET, right-left
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT, left-right
-    0x005e: 0xde,      #  CIRCUMFLEX ACCENT, right-left
-    0x005f: 0x5f,      #  LOW LINE, left-right
-    0x005f: 0xdf,      #  LOW LINE, right-left
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET, left-right
+    0x005B: 0xDB,      #  LEFT SQUARE BRACKET, right-left
+    0x005C: 0x5C,      #  REVERSE SOLIDUS, left-right
+    0x005C: 0xDC,      #  REVERSE SOLIDUS, right-left
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET, left-right
+    0x005D: 0xDD,      #  RIGHT SQUARE BRACKET, right-left
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT, left-right
+    0x005E: 0xDE,      #  CIRCUMFLEX ACCENT, right-left
+    0x005F: 0x5F,      #  LOW LINE, left-right
+    0x005F: 0xDF,      #  LOW LINE, right-left
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -422,12 +422,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -438,115 +438,116 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET, left-right
-    0x007b: 0xfb,      #  LEFT CURLY BRACKET, right-left
-    0x007c: 0x7c,      #  VERTICAL LINE, left-right
-    0x007c: 0xfc,      #  VERTICAL LINE, right-left
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET, left-right
-    0x007d: 0xfd,      #  RIGHT CURLY BRACKET, right-left
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  CONTROL CHARACTER
-    0x00a0: 0x81,      #  NO-BREAK SPACE, right-left
-    0x00ab: 0x8c,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x00bb: 0x98,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x00c4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00dc: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00e0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x8a,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e7: 0x8d,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x8f,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x8e,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x9a,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x9b,      #  DIVISION SIGN, right-left
-    0x00f9: 0x9d,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x9c,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x9e,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x9f,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x060c: 0xac,      #  ARABIC COMMA
-    0x061b: 0xbb,      #  ARABIC SEMICOLON
-    0x061f: 0xbf,      #  ARABIC QUESTION MARK
-    0x0621: 0xc1,      #  ARABIC LETTER HAMZA
-    0x0622: 0xc2,      #  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x0623: 0xc3,      #  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x0624: 0xc4,      #  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x0625: 0xc5,      #  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x0626: 0xc6,      #  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x0627: 0xc7,      #  ARABIC LETTER ALEF
-    0x0628: 0xc8,      #  ARABIC LETTER BEH
-    0x0629: 0xc9,      #  ARABIC LETTER TEH MARBUTA
-    0x062a: 0xca,      #  ARABIC LETTER TEH
-    0x062b: 0xcb,      #  ARABIC LETTER THEH
-    0x062c: 0xcc,      #  ARABIC LETTER JEEM
-    0x062d: 0xcd,      #  ARABIC LETTER HAH
-    0x062e: 0xce,      #  ARABIC LETTER KHAH
-    0x062f: 0xcf,      #  ARABIC LETTER DAL
-    0x0630: 0xd0,      #  ARABIC LETTER THAL
-    0x0631: 0xd1,      #  ARABIC LETTER REH
-    0x0632: 0xd2,      #  ARABIC LETTER ZAIN
-    0x0633: 0xd3,      #  ARABIC LETTER SEEN
-    0x0634: 0xd4,      #  ARABIC LETTER SHEEN
-    0x0635: 0xd5,      #  ARABIC LETTER SAD
-    0x0636: 0xd6,      #  ARABIC LETTER DAD
-    0x0637: 0xd7,      #  ARABIC LETTER TAH
-    0x0638: 0xd8,      #  ARABIC LETTER ZAH
-    0x0639: 0xd9,      #  ARABIC LETTER AIN
-    0x063a: 0xda,      #  ARABIC LETTER GHAIN
-    0x0640: 0xe0,      #  ARABIC TATWEEL
-    0x0641: 0xe1,      #  ARABIC LETTER FEH
-    0x0642: 0xe2,      #  ARABIC LETTER QAF
-    0x0643: 0xe3,      #  ARABIC LETTER KAF
-    0x0644: 0xe4,      #  ARABIC LETTER LAM
-    0x0645: 0xe5,      #  ARABIC LETTER MEEM
-    0x0646: 0xe6,      #  ARABIC LETTER NOON
-    0x0647: 0xe7,      #  ARABIC LETTER HEH
-    0x0648: 0xe8,      #  ARABIC LETTER WAW
-    0x0649: 0xe9,      #  ARABIC LETTER ALEF MAKSURA
-    0x064a: 0xea,      #  ARABIC LETTER YEH
-    0x064b: 0xeb,      #  ARABIC FATHATAN
-    0x064c: 0xec,      #  ARABIC DAMMATAN
-    0x064d: 0xed,      #  ARABIC KASRATAN
-    0x064e: 0xee,      #  ARABIC FATHA
-    0x064f: 0xef,      #  ARABIC DAMMA
-    0x0650: 0xf0,      #  ARABIC KASRA
-    0x0651: 0xf1,      #  ARABIC SHADDA
-    0x0652: 0xf2,      #  ARABIC SUKUN
-    0x066a: 0xa5,      #  ARABIC PERCENT SIGN
-    0x0679: 0xf4,      #  ARABIC LETTER TTEH
-    0x067e: 0xf3,      #  ARABIC LETTER PEH
-    0x0686: 0xf5,      #  ARABIC LETTER TCHEH
-    0x0688: 0xf9,      #  ARABIC LETTER DDAL
-    0x0691: 0xfa,      #  ARABIC LETTER RREH
-    0x0698: 0xfe,      #  ARABIC LETTER JEH
-    0x06a4: 0xf7,      #  ARABIC LETTER VEH
-    0x06af: 0xf8,      #  ARABIC LETTER GAF
-    0x06ba: 0x8b,      #  ARABIC LETTER NOON GHUNNA
-    0x06d2: 0xff,      #  ARABIC LETTER YEH BARREE
-    0x06d5: 0xf6,      #  ARABIC LETTER AE
-    0x06f0: 0xb0,      #  EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    0x06f1: 0xb1,      #  EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
-    0x06f2: 0xb2,      #  EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
-    0x06f3: 0xb3,      #  EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
-    0x06f4: 0xb4,      #  EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    0x06f5: 0xb5,      #  EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    0x06f6: 0xb6,      #  EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
-    0x06f7: 0xb7,      #  EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    0x06f8: 0xb8,      #  EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    0x06f9: 0xb9,      #  EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET, left-right
+    0x007B: 0xFB,      #  LEFT CURLY BRACKET, right-left
+    0x007C: 0x7C,      #  VERTICAL LINE, left-right
+    0x007C: 0xFC,      #  VERTICAL LINE, right-left
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET, left-right
+    0x007D: 0xFD,      #  RIGHT CURLY BRACKET, right-left
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  CONTROL CHARACTER
+    0x00A0: 0x81,      #  NO-BREAK SPACE, right-left
+    0x00AB: 0x8C,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    0x00BB: 0x98,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    0x00C4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00D1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00DC: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00E0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0x8A,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0x8D,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0x9A,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0x9B,      #  DIVISION SIGN, right-left
+    0x00F9: 0x9D,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x060C: 0xAC,      #  ARABIC COMMA
+    0x061B: 0xBB,      #  ARABIC SEMICOLON
+    0x061F: 0xBF,      #  ARABIC QUESTION MARK
+    0x0621: 0xC1,      #  ARABIC LETTER HAMZA
+    0x0622: 0xC2,      #  ARABIC LETTER ALEF WITH MADDA ABOVE
+    0x0623: 0xC3,      #  ARABIC LETTER ALEF WITH HAMZA ABOVE
+    0x0624: 0xC4,      #  ARABIC LETTER WAW WITH HAMZA ABOVE
+    0x0625: 0xC5,      #  ARABIC LETTER ALEF WITH HAMZA BELOW
+    0x0626: 0xC6,      #  ARABIC LETTER YEH WITH HAMZA ABOVE
+    0x0627: 0xC7,      #  ARABIC LETTER ALEF
+    0x0628: 0xC8,      #  ARABIC LETTER BEH
+    0x0629: 0xC9,      #  ARABIC LETTER TEH MARBUTA
+    0x062A: 0xCA,      #  ARABIC LETTER TEH
+    0x062B: 0xCB,      #  ARABIC LETTER THEH
+    0x062C: 0xCC,      #  ARABIC LETTER JEEM
+    0x062D: 0xCD,      #  ARABIC LETTER HAH
+    0x062E: 0xCE,      #  ARABIC LETTER KHAH
+    0x062F: 0xCF,      #  ARABIC LETTER DAL
+    0x0630: 0xD0,      #  ARABIC LETTER THAL
+    0x0631: 0xD1,      #  ARABIC LETTER REH
+    0x0632: 0xD2,      #  ARABIC LETTER ZAIN
+    0x0633: 0xD3,      #  ARABIC LETTER SEEN
+    0x0634: 0xD4,      #  ARABIC LETTER SHEEN
+    0x0635: 0xD5,      #  ARABIC LETTER SAD
+    0x0636: 0xD6,      #  ARABIC LETTER DAD
+    0x0637: 0xD7,      #  ARABIC LETTER TAH
+    0x0638: 0xD8,      #  ARABIC LETTER ZAH
+    0x0639: 0xD9,      #  ARABIC LETTER AIN
+    0x063A: 0xDA,      #  ARABIC LETTER GHAIN
+    0x0640: 0xE0,      #  ARABIC TATWEEL
+    0x0641: 0xE1,      #  ARABIC LETTER FEH
+    0x0642: 0xE2,      #  ARABIC LETTER QAF
+    0x0643: 0xE3,      #  ARABIC LETTER KAF
+    0x0644: 0xE4,      #  ARABIC LETTER LAM
+    0x0645: 0xE5,      #  ARABIC LETTER MEEM
+    0x0646: 0xE6,      #  ARABIC LETTER NOON
+    0x0647: 0xE7,      #  ARABIC LETTER HEH
+    0x0648: 0xE8,      #  ARABIC LETTER WAW
+    0x0649: 0xE9,      #  ARABIC LETTER ALEF MAKSURA
+    0x064A: 0xEA,      #  ARABIC LETTER YEH
+    0x064B: 0xEB,      #  ARABIC FATHATAN
+    0x064C: 0xEC,      #  ARABIC DAMMATAN
+    0x064D: 0xED,      #  ARABIC KASRATAN
+    0x064E: 0xEE,      #  ARABIC FATHA
+    0x064F: 0xEF,      #  ARABIC DAMMA
+    0x0650: 0xF0,      #  ARABIC KASRA
+    0x0651: 0xF1,      #  ARABIC SHADDA
+    0x0652: 0xF2,      #  ARABIC SUKUN
+    0x066A: 0xA5,      #  ARABIC PERCENT SIGN
+    0x0679: 0xF4,      #  ARABIC LETTER TTEH
+    0x067E: 0xF3,      #  ARABIC LETTER PEH
+    0x0686: 0xF5,      #  ARABIC LETTER TCHEH
+    0x0688: 0xF9,      #  ARABIC LETTER DDAL
+    0x0691: 0xFA,      #  ARABIC LETTER RREH
+    0x0698: 0xFE,      #  ARABIC LETTER JEH
+    0x06A4: 0xF7,      #  ARABIC LETTER VEH
+    0x06AF: 0xF8,      #  ARABIC LETTER GAF
+    0x06BA: 0x8B,      #  ARABIC LETTER NOON GHUNNA
+    0x06D2: 0xFF,      #  ARABIC LETTER YEH BARREE
+    0x06D5: 0xF6,      #  ARABIC LETTER AE
+    0x06F0: 0xB0,      #  EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
+    0x06F1: 0xB1,      #  EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
+    0x06F2: 0xB2,      #  EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
+    0x06F3: 0xB3,      #  EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
+    0x06F4: 0xB4,      #  EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
+    0x06F5: 0xB5,      #  EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
+    0x06F6: 0xB6,      #  EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
+    0x06F7: 0xB7,      #  EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
+    0x06F8: 0xB8,      #  EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
+    0x06F9: 0xB9,      #  EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
     0x2026: 0x93,      #  HORIZONTAL ELLIPSIS, right-left
-    0x274a: 0xc0,      #  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-}
\ No newline at end of file
+    0x274A: 0xC0,      #  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
+}
+
index d0757c1ed45d4da90324452d53cd654c5043024a..872e92d04549238d081e30350caea5c5a9751af6 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> CONTROL CHARACTER
     u'\x08'    #  0x08 -> CONTROL CHARACTER
     u'\t'      #  0x09 -> CONTROL CHARACTER
-    u'\n'      #  0x0a -> CONTROL CHARACTER
-    u'\x0b'    #  0x0b -> CONTROL CHARACTER
-    u'\x0c'    #  0x0c -> CONTROL CHARACTER
-    u'\r'      #  0x0d -> CONTROL CHARACTER
-    u'\x0e'    #  0x0e -> CONTROL CHARACTER
-    u'\x0f'    #  0x0f -> CONTROL CHARACTER
+    u'\n'      #  0x0A -> CONTROL CHARACTER
+    u'\x0b'    #  0x0B -> CONTROL CHARACTER
+    u'\x0c'    #  0x0C -> CONTROL CHARACTER
+    u'\r'      #  0x0D -> CONTROL CHARACTER
+    u'\x0e'    #  0x0E -> CONTROL CHARACTER
+    u'\x0f'    #  0x0F -> CONTROL CHARACTER
     u'\x10'    #  0x10 -> CONTROL CHARACTER
     u'\x11'    #  0x11 -> CONTROL CHARACTER
     u'\x12'    #  0x12 -> CONTROL CHARACTER
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> CONTROL CHARACTER
     u'\x18'    #  0x18 -> CONTROL CHARACTER
     u'\x19'    #  0x19 -> CONTROL CHARACTER
-    u'\x1a'    #  0x1a -> CONTROL CHARACTER
-    u'\x1b'    #  0x1b -> CONTROL CHARACTER
-    u'\x1c'    #  0x1c -> CONTROL CHARACTER
-    u'\x1d'    #  0x1d -> CONTROL CHARACTER
-    u'\x1e'    #  0x1e -> CONTROL CHARACTER
-    u'\x1f'    #  0x1f -> CONTROL CHARACTER
+    u'\x1a'    #  0x1A -> CONTROL CHARACTER
+    u'\x1b'    #  0x1B -> CONTROL CHARACTER
+    u'\x1c'    #  0x1C -> CONTROL CHARACTER
+    u'\x1d'    #  0x1D -> CONTROL CHARACTER
+    u'\x1e'    #  0x1E -> CONTROL CHARACTER
+    u'\x1f'    #  0x1F -> CONTROL CHARACTER
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> CONTROL CHARACTER
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> CONTROL CHARACTER
     u'\xc4'    #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
     u'\xb9'    #  0x81 -> SUPERSCRIPT ONE
     u'\xb2'    #  0x82 -> SUPERSCRIPT TWO
@@ -170,12 +170,12 @@ decoding_table = (
     u'\u0385'  #  0x87 -> GREEK DIALYTIKA TONOS
     u'\xe0'    #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
     u'\xe2'    #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'    #  0x8a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u0384'  #  0x8b -> GREEK TONOS
-    u'\xa8'    #  0x8c -> DIAERESIS
-    u'\xe7'    #  0x8d -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'    #  0x8e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'    #  0x8f -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe4'    #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u0384'  #  0x8B -> GREEK TONOS
+    u'\xa8'    #  0x8C -> DIAERESIS
+    u'\xe7'    #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'    #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'    #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
     u'\xea'    #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
     u'\xeb'    #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
     u'\xa3'    #  0x92 -> POUND SIGN
@@ -186,108 +186,108 @@ decoding_table = (
     u'\xbd'    #  0x97 -> VULGAR FRACTION ONE HALF
     u'\u2030'  #  0x98 -> PER MILLE SIGN
     u'\xf4'    #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0x9a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xa6'    #  0x9b -> BROKEN BAR
-    u'\u20ac'  #  0x9c -> EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
-    u'\xf9'    #  0x9d -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'    #  0x9e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0x9f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'  #  0xa0 -> DAGGER
-    u'\u0393'  #  0xa1 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'  #  0xa2 -> GREEK CAPITAL LETTER DELTA
-    u'\u0398'  #  0xa3 -> GREEK CAPITAL LETTER THETA
-    u'\u039b'  #  0xa4 -> GREEK CAPITAL LETTER LAMDA
-    u'\u039e'  #  0xa5 -> GREEK CAPITAL LETTER XI
-    u'\u03a0'  #  0xa6 -> GREEK CAPITAL LETTER PI
-    u'\xdf'    #  0xa7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'    #  0xa8 -> REGISTERED SIGN
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u03a3'  #  0xaa -> GREEK CAPITAL LETTER SIGMA
-    u'\u03aa'  #  0xab -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\xa7'    #  0xac -> SECTION SIGN
-    u'\u2260'  #  0xad -> NOT EQUAL TO
-    u'\xb0'    #  0xae -> DEGREE SIGN
-    u'\xb7'    #  0xaf -> MIDDLE DOT
-    u'\u0391'  #  0xb0 -> GREEK CAPITAL LETTER ALPHA
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u2264'  #  0xb2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'  #  0xb3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'    #  0xb4 -> YEN SIGN
-    u'\u0392'  #  0xb5 -> GREEK CAPITAL LETTER BETA
-    u'\u0395'  #  0xb6 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'  #  0xb7 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'  #  0xb8 -> GREEK CAPITAL LETTER ETA
-    u'\u0399'  #  0xb9 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'  #  0xba -> GREEK CAPITAL LETTER KAPPA
-    u'\u039c'  #  0xbb -> GREEK CAPITAL LETTER MU
-    u'\u03a6'  #  0xbc -> GREEK CAPITAL LETTER PHI
-    u'\u03ab'  #  0xbd -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\u03a8'  #  0xbe -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'  #  0xbf -> GREEK CAPITAL LETTER OMEGA
-    u'\u03ac'  #  0xc0 -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u039d'  #  0xc1 -> GREEK CAPITAL LETTER NU
-    u'\xac'    #  0xc2 -> NOT SIGN
-    u'\u039f'  #  0xc3 -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a1'  #  0xc4 -> GREEK CAPITAL LETTER RHO
-    u'\u2248'  #  0xc5 -> ALMOST EQUAL TO
-    u'\u03a4'  #  0xc6 -> GREEK CAPITAL LETTER TAU
-    u'\xab'    #  0xc7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0xc8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'  #  0xc9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'    #  0xca -> NO-BREAK SPACE
-    u'\u03a5'  #  0xcb -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a7'  #  0xcc -> GREEK CAPITAL LETTER CHI
-    u'\u0386'  #  0xcd -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\u0388'  #  0xce -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0153'  #  0xcf -> LATIN SMALL LIGATURE OE
-    u'\u2013'  #  0xd0 -> EN DASH
-    u'\u2015'  #  0xd1 -> HORIZONTAL BAR
-    u'\u201c'  #  0xd2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'  #  0xd3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'  #  0xd4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'  #  0xd5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'    #  0xd6 -> DIVISION SIGN
-    u'\u0389'  #  0xd7 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'  #  0xd8 -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\u038c'  #  0xd9 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\u038e'  #  0xda -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u03ad'  #  0xdb -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'  #  0xdc -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'  #  0xdd -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03cc'  #  0xde -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u038f'  #  0xdf -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\u03cd'  #  0xe0 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03b1'  #  0xe1 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'  #  0xe2 -> GREEK SMALL LETTER BETA
-    u'\u03c8'  #  0xe3 -> GREEK SMALL LETTER PSI
-    u'\u03b4'  #  0xe4 -> GREEK SMALL LETTER DELTA
-    u'\u03b5'  #  0xe5 -> GREEK SMALL LETTER EPSILON
-    u'\u03c6'  #  0xe6 -> GREEK SMALL LETTER PHI
-    u'\u03b3'  #  0xe7 -> GREEK SMALL LETTER GAMMA
-    u'\u03b7'  #  0xe8 -> GREEK SMALL LETTER ETA
-    u'\u03b9'  #  0xe9 -> GREEK SMALL LETTER IOTA
-    u'\u03be'  #  0xea -> GREEK SMALL LETTER XI
-    u'\u03ba'  #  0xeb -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'  #  0xec -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'  #  0xed -> GREEK SMALL LETTER MU
-    u'\u03bd'  #  0xee -> GREEK SMALL LETTER NU
-    u'\u03bf'  #  0xef -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'  #  0xf0 -> GREEK SMALL LETTER PI
-    u'\u03ce'  #  0xf1 -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u03c1'  #  0xf2 -> GREEK SMALL LETTER RHO
-    u'\u03c3'  #  0xf3 -> GREEK SMALL LETTER SIGMA
-    u'\u03c4'  #  0xf4 -> GREEK SMALL LETTER TAU
-    u'\u03b8'  #  0xf5 -> GREEK SMALL LETTER THETA
-    u'\u03c9'  #  0xf6 -> GREEK SMALL LETTER OMEGA
-    u'\u03c2'  #  0xf7 -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c7'  #  0xf8 -> GREEK SMALL LETTER CHI
-    u'\u03c5'  #  0xf9 -> GREEK SMALL LETTER UPSILON
-    u'\u03b6'  #  0xfa -> GREEK SMALL LETTER ZETA
-    u'\u03ca'  #  0xfb -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03cb'  #  0xfc -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u0390'  #  0xfd -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u03b0'  #  0xfe -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\xad'    #  0xff -> SOFT HYPHEN # before Mac OS 9.2.2, was undefined
+    u'\xf6'    #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xa6'    #  0x9B -> BROKEN BAR
+    u'\u20ac'  #  0x9C -> EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
+    u'\xf9'    #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'    #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'  #  0xA0 -> DAGGER
+    u'\u0393'  #  0xA1 -> GREEK CAPITAL LETTER GAMMA
+    u'\u0394'  #  0xA2 -> GREEK CAPITAL LETTER DELTA
+    u'\u0398'  #  0xA3 -> GREEK CAPITAL LETTER THETA
+    u'\u039b'  #  0xA4 -> GREEK CAPITAL LETTER LAMDA
+    u'\u039e'  #  0xA5 -> GREEK CAPITAL LETTER XI
+    u'\u03a0'  #  0xA6 -> GREEK CAPITAL LETTER PI
+    u'\xdf'    #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'    #  0xA8 -> REGISTERED SIGN
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u03a3'  #  0xAA -> GREEK CAPITAL LETTER SIGMA
+    u'\u03aa'  #  0xAB -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    u'\xa7'    #  0xAC -> SECTION SIGN
+    u'\u2260'  #  0xAD -> NOT EQUAL TO
+    u'\xb0'    #  0xAE -> DEGREE SIGN
+    u'\xb7'    #  0xAF -> MIDDLE DOT
+    u'\u0391'  #  0xB0 -> GREEK CAPITAL LETTER ALPHA
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'  #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'  #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'    #  0xB4 -> YEN SIGN
+    u'\u0392'  #  0xB5 -> GREEK CAPITAL LETTER BETA
+    u'\u0395'  #  0xB6 -> GREEK CAPITAL LETTER EPSILON
+    u'\u0396'  #  0xB7 -> GREEK CAPITAL LETTER ZETA
+    u'\u0397'  #  0xB8 -> GREEK CAPITAL LETTER ETA
+    u'\u0399'  #  0xB9 -> GREEK CAPITAL LETTER IOTA
+    u'\u039a'  #  0xBA -> GREEK CAPITAL LETTER KAPPA
+    u'\u039c'  #  0xBB -> GREEK CAPITAL LETTER MU
+    u'\u03a6'  #  0xBC -> GREEK CAPITAL LETTER PHI
+    u'\u03ab'  #  0xBD -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    u'\u03a8'  #  0xBE -> GREEK CAPITAL LETTER PSI
+    u'\u03a9'  #  0xBF -> GREEK CAPITAL LETTER OMEGA
+    u'\u03ac'  #  0xC0 -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\u039d'  #  0xC1 -> GREEK CAPITAL LETTER NU
+    u'\xac'    #  0xC2 -> NOT SIGN
+    u'\u039f'  #  0xC3 -> GREEK CAPITAL LETTER OMICRON
+    u'\u03a1'  #  0xC4 -> GREEK CAPITAL LETTER RHO
+    u'\u2248'  #  0xC5 -> ALMOST EQUAL TO
+    u'\u03a4'  #  0xC6 -> GREEK CAPITAL LETTER TAU
+    u'\xab'    #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'  #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'    #  0xCA -> NO-BREAK SPACE
+    u'\u03a5'  #  0xCB -> GREEK CAPITAL LETTER UPSILON
+    u'\u03a7'  #  0xCC -> GREEK CAPITAL LETTER CHI
+    u'\u0386'  #  0xCD -> GREEK CAPITAL LETTER ALPHA WITH TONOS
+    u'\u0388'  #  0xCE -> GREEK CAPITAL LETTER EPSILON WITH TONOS
+    u'\u0153'  #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'  #  0xD0 -> EN DASH
+    u'\u2015'  #  0xD1 -> HORIZONTAL BAR
+    u'\u201c'  #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'  #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'  #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'  #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'    #  0xD6 -> DIVISION SIGN
+    u'\u0389'  #  0xD7 -> GREEK CAPITAL LETTER ETA WITH TONOS
+    u'\u038a'  #  0xD8 -> GREEK CAPITAL LETTER IOTA WITH TONOS
+    u'\u038c'  #  0xD9 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
+    u'\u038e'  #  0xDA -> GREEK CAPITAL LETTER UPSILON WITH TONOS
+    u'\u03ad'  #  0xDB -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'  #  0xDC -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03af'  #  0xDD -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03cc'  #  0xDE -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u038f'  #  0xDF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
+    u'\u03cd'  #  0xE0 -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u03b1'  #  0xE1 -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'  #  0xE2 -> GREEK SMALL LETTER BETA
+    u'\u03c8'  #  0xE3 -> GREEK SMALL LETTER PSI
+    u'\u03b4'  #  0xE4 -> GREEK SMALL LETTER DELTA
+    u'\u03b5'  #  0xE5 -> GREEK SMALL LETTER EPSILON
+    u'\u03c6'  #  0xE6 -> GREEK SMALL LETTER PHI
+    u'\u03b3'  #  0xE7 -> GREEK SMALL LETTER GAMMA
+    u'\u03b7'  #  0xE8 -> GREEK SMALL LETTER ETA
+    u'\u03b9'  #  0xE9 -> GREEK SMALL LETTER IOTA
+    u'\u03be'  #  0xEA -> GREEK SMALL LETTER XI
+    u'\u03ba'  #  0xEB -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'  #  0xEC -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'  #  0xED -> GREEK SMALL LETTER MU
+    u'\u03bd'  #  0xEE -> GREEK SMALL LETTER NU
+    u'\u03bf'  #  0xEF -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'  #  0xF0 -> GREEK SMALL LETTER PI
+    u'\u03ce'  #  0xF1 -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\u03c1'  #  0xF2 -> GREEK SMALL LETTER RHO
+    u'\u03c3'  #  0xF3 -> GREEK SMALL LETTER SIGMA
+    u'\u03c4'  #  0xF4 -> GREEK SMALL LETTER TAU
+    u'\u03b8'  #  0xF5 -> GREEK SMALL LETTER THETA
+    u'\u03c9'  #  0xF6 -> GREEK SMALL LETTER OMEGA
+    u'\u03c2'  #  0xF7 -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c7'  #  0xF8 -> GREEK SMALL LETTER CHI
+    u'\u03c5'  #  0xF9 -> GREEK SMALL LETTER UPSILON
+    u'\u03b6'  #  0xFA -> GREEK SMALL LETTER ZETA
+    u'\u03ca'  #  0xFB -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u03cb'  #  0xFC -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u0390'  #  0xFD -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    u'\u03b0'  #  0xFE -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    u'\xad'    #  0xFF -> SOFT HYPHEN # before Mac OS 9.2.2, was undefined
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  CONTROL CHARACTER
     0x0008: 0x08,      #  CONTROL CHARACTER
     0x0009: 0x09,      #  CONTROL CHARACTER
-    0x000a: 0x0a,      #  CONTROL CHARACTER
-    0x000b: 0x0b,      #  CONTROL CHARACTER
-    0x000c: 0x0c,      #  CONTROL CHARACTER
-    0x000d: 0x0d,      #  CONTROL CHARACTER
-    0x000e: 0x0e,      #  CONTROL CHARACTER
-    0x000f: 0x0f,      #  CONTROL CHARACTER
+    0x000A: 0x0A,      #  CONTROL CHARACTER
+    0x000B: 0x0B,      #  CONTROL CHARACTER
+    0x000C: 0x0C,      #  CONTROL CHARACTER
+    0x000D: 0x0D,      #  CONTROL CHARACTER
+    0x000E: 0x0E,      #  CONTROL CHARACTER
+    0x000F: 0x0F,      #  CONTROL CHARACTER
     0x0010: 0x10,      #  CONTROL CHARACTER
     0x0011: 0x11,      #  CONTROL CHARACTER
     0x0012: 0x12,      #  CONTROL CHARACTER
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  CONTROL CHARACTER
     0x0018: 0x18,      #  CONTROL CHARACTER
     0x0019: 0x19,      #  CONTROL CHARACTER
-    0x001a: 0x1a,      #  CONTROL CHARACTER
-    0x001b: 0x1b,      #  CONTROL CHARACTER
-    0x001c: 0x1c,      #  CONTROL CHARACTER
-    0x001d: 0x1d,      #  CONTROL CHARACTER
-    0x001e: 0x1e,      #  CONTROL CHARACTER
-    0x001f: 0x1f,      #  CONTROL CHARACTER
+    0x001A: 0x1A,      #  CONTROL CHARACTER
+    0x001B: 0x1B,      #  CONTROL CHARACTER
+    0x001C: 0x1C,      #  CONTROL CHARACTER
+    0x001D: 0x1D,      #  CONTROL CHARACTER
+    0x001E: 0x1E,      #  CONTROL CHARACTER
+    0x001F: 0x1F,      #  CONTROL CHARACTER
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  CONTROL CHARACTER
-    0x00a0: 0xca,      #  NO-BREAK SPACE
-    0x00a3: 0x92,      #  POUND SIGN
-    0x00a5: 0xb4,      #  YEN SIGN
-    0x00a6: 0x9b,      #  BROKEN BAR
-    0x00a7: 0xac,      #  SECTION SIGN
-    0x00a8: 0x8c,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00ab: 0xc7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xc2,      #  NOT SIGN
-    0x00ad: 0xff,      #  SOFT HYPHEN # before Mac OS 9.2.2, was undefined
-    0x00ae: 0xa8,      #  REGISTERED SIGN
-    0x00b0: 0xae,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b2: 0x82,      #  SUPERSCRIPT TWO
-    0x00b3: 0x84,      #  SUPERSCRIPT THREE
-    0x00b7: 0xaf,      #  MIDDLE DOT
-    0x00b9: 0x81,      #  SUPERSCRIPT ONE
-    0x00bb: 0xc8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bd: 0x97,      #  VULGAR FRACTION ONE HALF
-    0x00c4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00dc: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xa7,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x8a,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e7: 0x8d,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x8f,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x8e,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ee: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x9a,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xd6,      #  DIVISION SIGN
-    0x00f9: 0x9d,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fb: 0x9e,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x9f,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0153: 0xcf,      #  LATIN SMALL LIGATURE OE
-    0x0384: 0x8b,      #  GREEK TONOS
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  CONTROL CHARACTER
+    0x00A0: 0xCA,      #  NO-BREAK SPACE
+    0x00A3: 0x92,      #  POUND SIGN
+    0x00A5: 0xB4,      #  YEN SIGN
+    0x00A6: 0x9B,      #  BROKEN BAR
+    0x00A7: 0xAC,      #  SECTION SIGN
+    0x00A8: 0x8C,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AB: 0xC7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,      #  NOT SIGN
+    0x00AD: 0xFF,      #  SOFT HYPHEN # before Mac OS 9.2.2, was undefined
+    0x00AE: 0xA8,      #  REGISTERED SIGN
+    0x00B0: 0xAE,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B2: 0x82,      #  SUPERSCRIPT TWO
+    0x00B3: 0x84,      #  SUPERSCRIPT THREE
+    0x00B7: 0xAF,      #  MIDDLE DOT
+    0x00B9: 0x81,      #  SUPERSCRIPT ONE
+    0x00BB: 0xC8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BD: 0x97,      #  VULGAR FRACTION ONE HALF
+    0x00C4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00D6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00DC: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0x8A,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0x8D,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EE: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0x9A,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,      #  DIVISION SIGN
+    0x00F9: 0x9D,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FB: 0x9E,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0153: 0xCF,      #  LATIN SMALL LIGATURE OE
+    0x0384: 0x8B,      #  GREEK TONOS
     0x0385: 0x87,      #  GREEK DIALYTIKA TONOS
-    0x0386: 0xcd,      #  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0xce,      #  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0xd7,      #  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038a: 0xd8,      #  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038c: 0xd9,      #  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038e: 0xda,      #  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038f: 0xdf,      #  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0xfd,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x0391: 0xb0,      #  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0xb5,      #  GREEK CAPITAL LETTER BETA
-    0x0393: 0xa1,      #  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0xa2,      #  GREEK CAPITAL LETTER DELTA
-    0x0395: 0xb6,      #  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0xb7,      #  GREEK CAPITAL LETTER ZETA
-    0x0397: 0xb8,      #  GREEK CAPITAL LETTER ETA
-    0x0398: 0xa3,      #  GREEK CAPITAL LETTER THETA
-    0x0399: 0xb9,      #  GREEK CAPITAL LETTER IOTA
-    0x039a: 0xba,      #  GREEK CAPITAL LETTER KAPPA
-    0x039b: 0xa4,      #  GREEK CAPITAL LETTER LAMDA
-    0x039c: 0xbb,      #  GREEK CAPITAL LETTER MU
-    0x039d: 0xc1,      #  GREEK CAPITAL LETTER NU
-    0x039e: 0xa5,      #  GREEK CAPITAL LETTER XI
-    0x039f: 0xc3,      #  GREEK CAPITAL LETTER OMICRON
-    0x03a0: 0xa6,      #  GREEK CAPITAL LETTER PI
-    0x03a1: 0xc4,      #  GREEK CAPITAL LETTER RHO
-    0x03a3: 0xaa,      #  GREEK CAPITAL LETTER SIGMA
-    0x03a4: 0xc6,      #  GREEK CAPITAL LETTER TAU
-    0x03a5: 0xcb,      #  GREEK CAPITAL LETTER UPSILON
-    0x03a6: 0xbc,      #  GREEK CAPITAL LETTER PHI
-    0x03a7: 0xcc,      #  GREEK CAPITAL LETTER CHI
-    0x03a8: 0xbe,      #  GREEK CAPITAL LETTER PSI
-    0x03a9: 0xbf,      #  GREEK CAPITAL LETTER OMEGA
-    0x03aa: 0xab,      #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03ab: 0xbd,      #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03ac: 0xc0,      #  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03ad: 0xdb,      #  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03ae: 0xdc,      #  GREEK SMALL LETTER ETA WITH TONOS
-    0x03af: 0xdd,      #  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03b0: 0xfe,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03b1: 0xe1,      #  GREEK SMALL LETTER ALPHA
-    0x03b2: 0xe2,      #  GREEK SMALL LETTER BETA
-    0x03b3: 0xe7,      #  GREEK SMALL LETTER GAMMA
-    0x03b4: 0xe4,      #  GREEK SMALL LETTER DELTA
-    0x03b5: 0xe5,      #  GREEK SMALL LETTER EPSILON
-    0x03b6: 0xfa,      #  GREEK SMALL LETTER ZETA
-    0x03b7: 0xe8,      #  GREEK SMALL LETTER ETA
-    0x03b8: 0xf5,      #  GREEK SMALL LETTER THETA
-    0x03b9: 0xe9,      #  GREEK SMALL LETTER IOTA
-    0x03ba: 0xeb,      #  GREEK SMALL LETTER KAPPA
-    0x03bb: 0xec,      #  GREEK SMALL LETTER LAMDA
-    0x03bc: 0xed,      #  GREEK SMALL LETTER MU
-    0x03bd: 0xee,      #  GREEK SMALL LETTER NU
-    0x03be: 0xea,      #  GREEK SMALL LETTER XI
-    0x03bf: 0xef,      #  GREEK SMALL LETTER OMICRON
-    0x03c0: 0xf0,      #  GREEK SMALL LETTER PI
-    0x03c1: 0xf2,      #  GREEK SMALL LETTER RHO
-    0x03c2: 0xf7,      #  GREEK SMALL LETTER FINAL SIGMA
-    0x03c3: 0xf3,      #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0xf4,      #  GREEK SMALL LETTER TAU
-    0x03c5: 0xf9,      #  GREEK SMALL LETTER UPSILON
-    0x03c6: 0xe6,      #  GREEK SMALL LETTER PHI
-    0x03c7: 0xf8,      #  GREEK SMALL LETTER CHI
-    0x03c8: 0xe3,      #  GREEK SMALL LETTER PSI
-    0x03c9: 0xf6,      #  GREEK SMALL LETTER OMEGA
-    0x03ca: 0xfb,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03cb: 0xfc,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03cc: 0xde,      #  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03cd: 0xe0,      #  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03ce: 0xf1,      #  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x2013: 0xd0,      #  EN DASH
-    0x2015: 0xd1,      #  HORIZONTAL BAR
-    0x2018: 0xd4,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xd5,      #  RIGHT SINGLE QUOTATION MARK
-    0x201c: 0xd2,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0xd3,      #  RIGHT DOUBLE QUOTATION MARK
-    0x2020: 0xa0,      #  DAGGER
+    0x0386: 0xCD,      #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0388: 0xCE,      #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x0389: 0xD7,      #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x038A: 0xD8,      #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038C: 0xD9,      #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038E: 0xDA,      #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038F: 0xDF,      #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0390: 0xFD,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x0391: 0xB0,      #  GREEK CAPITAL LETTER ALPHA
+    0x0392: 0xB5,      #  GREEK CAPITAL LETTER BETA
+    0x0393: 0xA1,      #  GREEK CAPITAL LETTER GAMMA
+    0x0394: 0xA2,      #  GREEK CAPITAL LETTER DELTA
+    0x0395: 0xB6,      #  GREEK CAPITAL LETTER EPSILON
+    0x0396: 0xB7,      #  GREEK CAPITAL LETTER ZETA
+    0x0397: 0xB8,      #  GREEK CAPITAL LETTER ETA
+    0x0398: 0xA3,      #  GREEK CAPITAL LETTER THETA
+    0x0399: 0xB9,      #  GREEK CAPITAL LETTER IOTA
+    0x039A: 0xBA,      #  GREEK CAPITAL LETTER KAPPA
+    0x039B: 0xA4,      #  GREEK CAPITAL LETTER LAMDA
+    0x039C: 0xBB,      #  GREEK CAPITAL LETTER MU
+    0x039D: 0xC1,      #  GREEK CAPITAL LETTER NU
+    0x039E: 0xA5,      #  GREEK CAPITAL LETTER XI
+    0x039F: 0xC3,      #  GREEK CAPITAL LETTER OMICRON
+    0x03A0: 0xA6,      #  GREEK CAPITAL LETTER PI
+    0x03A1: 0xC4,      #  GREEK CAPITAL LETTER RHO
+    0x03A3: 0xAA,      #  GREEK CAPITAL LETTER SIGMA
+    0x03A4: 0xC6,      #  GREEK CAPITAL LETTER TAU
+    0x03A5: 0xCB,      #  GREEK CAPITAL LETTER UPSILON
+    0x03A6: 0xBC,      #  GREEK CAPITAL LETTER PHI
+    0x03A7: 0xCC,      #  GREEK CAPITAL LETTER CHI
+    0x03A8: 0xBE,      #  GREEK CAPITAL LETTER PSI
+    0x03A9: 0xBF,      #  GREEK CAPITAL LETTER OMEGA
+    0x03AA: 0xAB,      #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03AB: 0xBD,      #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03AC: 0xC0,      #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03AD: 0xDB,      #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03AE: 0xDC,      #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03AF: 0xDD,      #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03B0: 0xFE,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x03B1: 0xE1,      #  GREEK SMALL LETTER ALPHA
+    0x03B2: 0xE2,      #  GREEK SMALL LETTER BETA
+    0x03B3: 0xE7,      #  GREEK SMALL LETTER GAMMA
+    0x03B4: 0xE4,      #  GREEK SMALL LETTER DELTA
+    0x03B5: 0xE5,      #  GREEK SMALL LETTER EPSILON
+    0x03B6: 0xFA,      #  GREEK SMALL LETTER ZETA
+    0x03B7: 0xE8,      #  GREEK SMALL LETTER ETA
+    0x03B8: 0xF5,      #  GREEK SMALL LETTER THETA
+    0x03B9: 0xE9,      #  GREEK SMALL LETTER IOTA
+    0x03BA: 0xEB,      #  GREEK SMALL LETTER KAPPA
+    0x03BB: 0xEC,      #  GREEK SMALL LETTER LAMDA
+    0x03BC: 0xED,      #  GREEK SMALL LETTER MU
+    0x03BD: 0xEE,      #  GREEK SMALL LETTER NU
+    0x03BE: 0xEA,      #  GREEK SMALL LETTER XI
+    0x03BF: 0xEF,      #  GREEK SMALL LETTER OMICRON
+    0x03C0: 0xF0,      #  GREEK SMALL LETTER PI
+    0x03C1: 0xF2,      #  GREEK SMALL LETTER RHO
+    0x03C2: 0xF7,      #  GREEK SMALL LETTER FINAL SIGMA
+    0x03C3: 0xF3,      #  GREEK SMALL LETTER SIGMA
+    0x03C4: 0xF4,      #  GREEK SMALL LETTER TAU
+    0x03C5: 0xF9,      #  GREEK SMALL LETTER UPSILON
+    0x03C6: 0xE6,      #  GREEK SMALL LETTER PHI
+    0x03C7: 0xF8,      #  GREEK SMALL LETTER CHI
+    0x03C8: 0xE3,      #  GREEK SMALL LETTER PSI
+    0x03C9: 0xF6,      #  GREEK SMALL LETTER OMEGA
+    0x03CA: 0xFB,      #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03CB: 0xFC,      #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03CC: 0xDE,      #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03CD: 0xE0,      #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03CE: 0xF1,      #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x2013: 0xD0,      #  EN DASH
+    0x2015: 0xD1,      #  HORIZONTAL BAR
+    0x2018: 0xD4,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,      #  RIGHT SINGLE QUOTATION MARK
+    0x201C: 0xD2,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,      #  RIGHT DOUBLE QUOTATION MARK
+    0x2020: 0xA0,      #  DAGGER
     0x2022: 0x96,      #  BULLET
-    0x2026: 0xc9,      #  HORIZONTAL ELLIPSIS
+    0x2026: 0xC9,      #  HORIZONTAL ELLIPSIS
     0x2030: 0x98,      #  PER MILLE SIGN
-    0x20ac: 0x9c,      #  EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
+    0x20AC: 0x9C,      #  EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
     0x2122: 0x93,      #  TRADE MARK SIGN
-    0x2248: 0xc5,      #  ALMOST EQUAL TO
-    0x2260: 0xad,      #  NOT EQUAL TO
-    0x2264: 0xb2,      #  LESS-THAN OR EQUAL TO
-    0x2265: 0xb3,      #  GREATER-THAN OR EQUAL TO
-}
\ No newline at end of file
+    0x2248: 0xC5,      #  ALMOST EQUAL TO
+    0x2260: 0xAD,      #  NOT EQUAL TO
+    0x2264: 0xB2,      #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,      #  GREATER-THAN OR EQUAL TO
+}
+
index 6a30ba2ea7620b5a768b14e4e152772ff091561b..5a2aabcfd672db4c9ca323e31f3200a7bd13e454 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> CONTROL CHARACTER
     u'\x08'    #  0x08 -> CONTROL CHARACTER
     u'\t'      #  0x09 -> CONTROL CHARACTER
-    u'\n'      #  0x0a -> CONTROL CHARACTER
-    u'\x0b'    #  0x0b -> CONTROL CHARACTER
-    u'\x0c'    #  0x0c -> CONTROL CHARACTER
-    u'\r'      #  0x0d -> CONTROL CHARACTER
-    u'\x0e'    #  0x0e -> CONTROL CHARACTER
-    u'\x0f'    #  0x0f -> CONTROL CHARACTER
+    u'\n'      #  0x0A -> CONTROL CHARACTER
+    u'\x0b'    #  0x0B -> CONTROL CHARACTER
+    u'\x0c'    #  0x0C -> CONTROL CHARACTER
+    u'\r'      #  0x0D -> CONTROL CHARACTER
+    u'\x0e'    #  0x0E -> CONTROL CHARACTER
+    u'\x0f'    #  0x0F -> CONTROL CHARACTER
     u'\x10'    #  0x10 -> CONTROL CHARACTER
     u'\x11'    #  0x11 -> CONTROL CHARACTER
     u'\x12'    #  0x12 -> CONTROL CHARACTER
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> CONTROL CHARACTER
     u'\x18'    #  0x18 -> CONTROL CHARACTER
     u'\x19'    #  0x19 -> CONTROL CHARACTER
-    u'\x1a'    #  0x1a -> CONTROL CHARACTER
-    u'\x1b'    #  0x1b -> CONTROL CHARACTER
-    u'\x1c'    #  0x1c -> CONTROL CHARACTER
-    u'\x1d'    #  0x1d -> CONTROL CHARACTER
-    u'\x1e'    #  0x1e -> CONTROL CHARACTER
-    u'\x1f'    #  0x1f -> CONTROL CHARACTER
+    u'\x1a'    #  0x1A -> CONTROL CHARACTER
+    u'\x1b'    #  0x1B -> CONTROL CHARACTER
+    u'\x1c'    #  0x1C -> CONTROL CHARACTER
+    u'\x1d'    #  0x1D -> CONTROL CHARACTER
+    u'\x1e'    #  0x1E -> CONTROL CHARACTER
+    u'\x1f'    #  0x1F -> CONTROL CHARACTER
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> CONTROL CHARACTER
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> CONTROL CHARACTER
     u'\xc4'    #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
     u'\xc5'    #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
     u'\xc7'    #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
@@ -170,12 +170,12 @@ decoding_table = (
     u'\xe1'    #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
     u'\xe0'    #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
     u'\xe2'    #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'    #  0x8a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'    #  0x8b -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'    #  0x8c -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'    #  0x8d -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'    #  0x8e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'    #  0x8f -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe4'    #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'    #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'    #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'    #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'    #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'    #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
     u'\xea'    #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
     u'\xeb'    #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
     u'\xed'    #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\xf3'    #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
     u'\xf2'    #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
     u'\xf4'    #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0x9a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'    #  0x9b -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'    #  0x9c -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'    #  0x9d -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'    #  0x9e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0x9f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xdd'    #  0xa0 -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xb0'    #  0xa1 -> DEGREE SIGN
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa7'    #  0xa4 -> SECTION SIGN
-    u'\u2022'  #  0xa5 -> BULLET
-    u'\xb6'    #  0xa6 -> PILCROW SIGN
-    u'\xdf'    #  0xa7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'    #  0xa8 -> REGISTERED SIGN
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u2122'  #  0xaa -> TRADE MARK SIGN
-    u'\xb4'    #  0xab -> ACUTE ACCENT
-    u'\xa8'    #  0xac -> DIAERESIS
-    u'\u2260'  #  0xad -> NOT EQUAL TO
-    u'\xc6'    #  0xae -> LATIN CAPITAL LETTER AE
-    u'\xd8'    #  0xaf -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'  #  0xb0 -> INFINITY
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u2264'  #  0xb2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'  #  0xb3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'    #  0xb4 -> YEN SIGN
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\u2202'  #  0xb6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'  #  0xb7 -> N-ARY SUMMATION
-    u'\u220f'  #  0xb8 -> N-ARY PRODUCT
-    u'\u03c0'  #  0xb9 -> GREEK SMALL LETTER PI
-    u'\u222b'  #  0xba -> INTEGRAL
-    u'\xaa'    #  0xbb -> FEMININE ORDINAL INDICATOR
-    u'\xba'    #  0xbc -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'  #  0xbd -> GREEK CAPITAL LETTER OMEGA
-    u'\xe6'    #  0xbe -> LATIN SMALL LETTER AE
-    u'\xf8'    #  0xbf -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'    #  0xc0 -> INVERTED QUESTION MARK
-    u'\xa1'    #  0xc1 -> INVERTED EXCLAMATION MARK
-    u'\xac'    #  0xc2 -> NOT SIGN
-    u'\u221a'  #  0xc3 -> SQUARE ROOT
-    u'\u0192'  #  0xc4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'  #  0xc5 -> ALMOST EQUAL TO
-    u'\u2206'  #  0xc6 -> INCREMENT
-    u'\xab'    #  0xc7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0xc8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'  #  0xc9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'    #  0xca -> NO-BREAK SPACE
-    u'\xc0'    #  0xcb -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'    #  0xcc -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'    #  0xcd -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'  #  0xce -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'  #  0xcf -> LATIN SMALL LIGATURE OE
-    u'\u2013'  #  0xd0 -> EN DASH
-    u'\u2014'  #  0xd1 -> EM DASH
-    u'\u201c'  #  0xd2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'  #  0xd3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'  #  0xd4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'  #  0xd5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'    #  0xd6 -> DIVISION SIGN
-    u'\u25ca'  #  0xd7 -> LOZENGE
-    u'\xff'    #  0xd8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'  #  0xd9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u2044'  #  0xda -> FRACTION SLASH
-    u'\u20ac'  #  0xdb -> EURO SIGN
-    u'\xd0'    #  0xdc -> LATIN CAPITAL LETTER ETH
-    u'\xf0'    #  0xdd -> LATIN SMALL LETTER ETH
-    u'\xde'    #  0xde -> LATIN CAPITAL LETTER THORN
-    u'\xfe'    #  0xdf -> LATIN SMALL LETTER THORN
-    u'\xfd'    #  0xe0 -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xb7'    #  0xe1 -> MIDDLE DOT
-    u'\u201a'  #  0xe2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'  #  0xe3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'  #  0xe4 -> PER MILLE SIGN
-    u'\xc2'    #  0xe5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'    #  0xe6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'    #  0xe7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'    #  0xe8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'    #  0xe9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'    #  0xea -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xeb -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xec -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'    #  0xed -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xef -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'  #  0xf0 -> Apple logo
-    u'\xd2'    #  0xf1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'    #  0xf2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xf3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'    #  0xf4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'  #  0xf5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'  #  0xf6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'  #  0xf7 -> SMALL TILDE
-    u'\xaf'    #  0xf8 -> MACRON
-    u'\u02d8'  #  0xf9 -> BREVE
-    u'\u02d9'  #  0xfa -> DOT ABOVE
-    u'\u02da'  #  0xfb -> RING ABOVE
-    u'\xb8'    #  0xfc -> CEDILLA
-    u'\u02dd'  #  0xfd -> DOUBLE ACUTE ACCENT
-    u'\u02db'  #  0xfe -> OGONEK
-    u'\u02c7'  #  0xff -> CARON
+    u'\xf6'    #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'    #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'    #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'    #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'    #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xdd'    #  0xA0 -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xb0'    #  0xA1 -> DEGREE SIGN
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa7'    #  0xA4 -> SECTION SIGN
+    u'\u2022'  #  0xA5 -> BULLET
+    u'\xb6'    #  0xA6 -> PILCROW SIGN
+    u'\xdf'    #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'    #  0xA8 -> REGISTERED SIGN
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'  #  0xAA -> TRADE MARK SIGN
+    u'\xb4'    #  0xAB -> ACUTE ACCENT
+    u'\xa8'    #  0xAC -> DIAERESIS
+    u'\u2260'  #  0xAD -> NOT EQUAL TO
+    u'\xc6'    #  0xAE -> LATIN CAPITAL LETTER AE
+    u'\xd8'    #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u221e'  #  0xB0 -> INFINITY
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'  #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'  #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'    #  0xB4 -> YEN SIGN
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\u2202'  #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'  #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'  #  0xB8 -> N-ARY PRODUCT
+    u'\u03c0'  #  0xB9 -> GREEK SMALL LETTER PI
+    u'\u222b'  #  0xBA -> INTEGRAL
+    u'\xaa'    #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'    #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'  #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\xe6'    #  0xBE -> LATIN SMALL LETTER AE
+    u'\xf8'    #  0xBF -> LATIN SMALL LETTER O WITH STROKE
+    u'\xbf'    #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'    #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'    #  0xC2 -> NOT SIGN
+    u'\u221a'  #  0xC3 -> SQUARE ROOT
+    u'\u0192'  #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'  #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'  #  0xC6 -> INCREMENT
+    u'\xab'    #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'  #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'    #  0xCA -> NO-BREAK SPACE
+    u'\xc0'    #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'    #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'    #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'  #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'  #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'  #  0xD0 -> EN DASH
+    u'\u2014'  #  0xD1 -> EM DASH
+    u'\u201c'  #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'  #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'  #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'  #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'    #  0xD6 -> DIVISION SIGN
+    u'\u25ca'  #  0xD7 -> LOZENGE
+    u'\xff'    #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0178'  #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u2044'  #  0xDA -> FRACTION SLASH
+    u'\u20ac'  #  0xDB -> EURO SIGN
+    u'\xd0'    #  0xDC -> LATIN CAPITAL LETTER ETH
+    u'\xf0'    #  0xDD -> LATIN SMALL LETTER ETH
+    u'\xde'    #  0xDE -> LATIN CAPITAL LETTER THORN
+    u'\xfe'    #  0xDF -> LATIN SMALL LETTER THORN
+    u'\xfd'    #  0xE0 -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xb7'    #  0xE1 -> MIDDLE DOT
+    u'\u201a'  #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'  #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'  #  0xE4 -> PER MILLE SIGN
+    u'\xc2'    #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xca'    #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xc1'    #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xcb'    #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'    #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'    #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'    #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\uf8ff'  #  0xF0 -> Apple logo
+    u'\xd2'    #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'    #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'    #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\u0131'  #  0xF5 -> LATIN SMALL LETTER DOTLESS I
+    u'\u02c6'  #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'  #  0xF7 -> SMALL TILDE
+    u'\xaf'    #  0xF8 -> MACRON
+    u'\u02d8'  #  0xF9 -> BREVE
+    u'\u02d9'  #  0xFA -> DOT ABOVE
+    u'\u02da'  #  0xFB -> RING ABOVE
+    u'\xb8'    #  0xFC -> CEDILLA
+    u'\u02dd'  #  0xFD -> DOUBLE ACUTE ACCENT
+    u'\u02db'  #  0xFE -> OGONEK
+    u'\u02c7'  #  0xFF -> CARON
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  CONTROL CHARACTER
     0x0008: 0x08,      #  CONTROL CHARACTER
     0x0009: 0x09,      #  CONTROL CHARACTER
-    0x000a: 0x0a,      #  CONTROL CHARACTER
-    0x000b: 0x0b,      #  CONTROL CHARACTER
-    0x000c: 0x0c,      #  CONTROL CHARACTER
-    0x000d: 0x0d,      #  CONTROL CHARACTER
-    0x000e: 0x0e,      #  CONTROL CHARACTER
-    0x000f: 0x0f,      #  CONTROL CHARACTER
+    0x000A: 0x0A,      #  CONTROL CHARACTER
+    0x000B: 0x0B,      #  CONTROL CHARACTER
+    0x000C: 0x0C,      #  CONTROL CHARACTER
+    0x000D: 0x0D,      #  CONTROL CHARACTER
+    0x000E: 0x0E,      #  CONTROL CHARACTER
+    0x000F: 0x0F,      #  CONTROL CHARACTER
     0x0010: 0x10,      #  CONTROL CHARACTER
     0x0011: 0x11,      #  CONTROL CHARACTER
     0x0012: 0x12,      #  CONTROL CHARACTER
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  CONTROL CHARACTER
     0x0018: 0x18,      #  CONTROL CHARACTER
     0x0019: 0x19,      #  CONTROL CHARACTER
-    0x001a: 0x1a,      #  CONTROL CHARACTER
-    0x001b: 0x1b,      #  CONTROL CHARACTER
-    0x001c: 0x1c,      #  CONTROL CHARACTER
-    0x001d: 0x1d,      #  CONTROL CHARACTER
-    0x001e: 0x1e,      #  CONTROL CHARACTER
-    0x001f: 0x1f,      #  CONTROL CHARACTER
+    0x001A: 0x1A,      #  CONTROL CHARACTER
+    0x001B: 0x1B,      #  CONTROL CHARACTER
+    0x001C: 0x1C,      #  CONTROL CHARACTER
+    0x001D: 0x1D,      #  CONTROL CHARACTER
+    0x001E: 0x1E,      #  CONTROL CHARACTER
+    0x001F: 0x1F,      #  CONTROL CHARACTER
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  CONTROL CHARACTER
-    0x00a0: 0xca,      #  NO-BREAK SPACE
-    0x00a1: 0xc1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a5: 0xb4,      #  YEN SIGN
-    0x00a7: 0xa4,      #  SECTION SIGN
-    0x00a8: 0xac,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xbb,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xc7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xc2,      #  NOT SIGN
-    0x00ae: 0xa8,      #  REGISTERED SIGN
-    0x00af: 0xf8,      #  MACRON
-    0x00b0: 0xa1,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b4: 0xab,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xa6,      #  PILCROW SIGN
-    0x00b7: 0xe1,      #  MIDDLE DOT
-    0x00b8: 0xfc,      #  CEDILLA
-    0x00ba: 0xbc,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xc8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bf: 0xc0,      #  INVERTED QUESTION MARK
-    0x00c0: 0xcb,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xe7,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xe5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xcc,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xae,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xe9,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xe6,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xe8,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xed,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xea,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xeb,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xec,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0xdc,      #  LATIN CAPITAL LETTER ETH
-    0x00d1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xf1,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xef,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xcd,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0xaf,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xf4,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xf2,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xf3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0xa0,      #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0xde,      #  LATIN CAPITAL LETTER THORN
-    0x00df: 0xa7,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x8b,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x8a,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x8c,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xbe,      #  LATIN SMALL LETTER AE
-    0x00e7: 0x8d,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x8f,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x8e,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0xdd,      #  LATIN SMALL LETTER ETH
-    0x00f1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x9b,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x9a,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xd6,      #  DIVISION SIGN
-    0x00f8: 0xbf,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x9d,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x9c,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x9e,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x9f,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0xe0,      #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0xdf,      #  LATIN SMALL LETTER THORN
-    0x00ff: 0xd8,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0131: 0xf5,      #  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xce,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xcf,      #  LATIN SMALL LIGATURE OE
-    0x0178: 0xd9,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0xc4,      #  LATIN SMALL LETTER F WITH HOOK
-    0x02c6: 0xf6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02c7: 0xff,      #  CARON
-    0x02d8: 0xf9,      #  BREVE
-    0x02d9: 0xfa,      #  DOT ABOVE
-    0x02da: 0xfb,      #  RING ABOVE
-    0x02db: 0xfe,      #  OGONEK
-    0x02dc: 0xf7,      #  SMALL TILDE
-    0x02dd: 0xfd,      #  DOUBLE ACUTE ACCENT
-    0x03a9: 0xbd,      #  GREEK CAPITAL LETTER OMEGA
-    0x03c0: 0xb9,      #  GREEK SMALL LETTER PI
-    0x2013: 0xd0,      #  EN DASH
-    0x2014: 0xd1,      #  EM DASH
-    0x2018: 0xd4,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xd5,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0xe2,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0xd2,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0xd3,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0xe3,      #  DOUBLE LOW-9 QUOTATION MARK
-    0x2022: 0xa5,      #  BULLET
-    0x2026: 0xc9,      #  HORIZONTAL ELLIPSIS
-    0x2030: 0xe4,      #  PER MILLE SIGN
-    0x2044: 0xda,      #  FRACTION SLASH
-    0x20ac: 0xdb,      #  EURO SIGN
-    0x2122: 0xaa,      #  TRADE MARK SIGN
-    0x2202: 0xb6,      #  PARTIAL DIFFERENTIAL
-    0x2206: 0xc6,      #  INCREMENT
-    0x220f: 0xb8,      #  N-ARY PRODUCT
-    0x2211: 0xb7,      #  N-ARY SUMMATION
-    0x221a: 0xc3,      #  SQUARE ROOT
-    0x221e: 0xb0,      #  INFINITY
-    0x222b: 0xba,      #  INTEGRAL
-    0x2248: 0xc5,      #  ALMOST EQUAL TO
-    0x2260: 0xad,      #  NOT EQUAL TO
-    0x2264: 0xb2,      #  LESS-THAN OR EQUAL TO
-    0x2265: 0xb3,      #  GREATER-THAN OR EQUAL TO
-    0x25ca: 0xd7,      #  LOZENGE
-    0xf8ff: 0xf0,      #  Apple logo
-}
\ No newline at end of file
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  CONTROL CHARACTER
+    0x00A0: 0xCA,      #  NO-BREAK SPACE
+    0x00A1: 0xC1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A5: 0xB4,      #  YEN SIGN
+    0x00A7: 0xA4,      #  SECTION SIGN
+    0x00A8: 0xAC,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xBB,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,      #  NOT SIGN
+    0x00AE: 0xA8,      #  REGISTERED SIGN
+    0x00AF: 0xF8,      #  MACRON
+    0x00B0: 0xA1,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xA6,      #  PILCROW SIGN
+    0x00B7: 0xE1,      #  MIDDLE DOT
+    0x00B8: 0xFC,      #  CEDILLA
+    0x00BA: 0xBC,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xC8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,      #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAE,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xE6,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xE8,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xDC,      #  LATIN CAPITAL LETTER ETH
+    0x00D1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xAF,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xF4,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xA0,      #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,      #  LATIN CAPITAL LETTER THORN
+    0x00DF: 0xA7,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBE,      #  LATIN SMALL LETTER AE
+    0x00E7: 0x8D,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xDD,      #  LATIN SMALL LETTER ETH
+    0x00F1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,      #  DIVISION SIGN
+    0x00F8: 0xBF,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0x9D,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xE0,      #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xDF,      #  LATIN SMALL LETTER THORN
+    0x00FF: 0xD8,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0131: 0xF5,      #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,      #  LATIN SMALL LIGATURE OE
+    0x0178: 0xD9,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0xC4,      #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0xF6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,      #  CARON
+    0x02D8: 0xF9,      #  BREVE
+    0x02D9: 0xFA,      #  DOT ABOVE
+    0x02DA: 0xFB,      #  RING ABOVE
+    0x02DB: 0xFE,      #  OGONEK
+    0x02DC: 0xF7,      #  SMALL TILDE
+    0x02DD: 0xFD,      #  DOUBLE ACUTE ACCENT
+    0x03A9: 0xBD,      #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xB9,      #  GREEK SMALL LETTER PI
+    0x2013: 0xD0,      #  EN DASH
+    0x2014: 0xD1,      #  EM DASH
+    0x2018: 0xD4,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,      #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x2022: 0xA5,      #  BULLET
+    0x2026: 0xC9,      #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,      #  PER MILLE SIGN
+    0x2044: 0xDA,      #  FRACTION SLASH
+    0x20AC: 0xDB,      #  EURO SIGN
+    0x2122: 0xAA,      #  TRADE MARK SIGN
+    0x2202: 0xB6,      #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,      #  INCREMENT
+    0x220F: 0xB8,      #  N-ARY PRODUCT
+    0x2211: 0xB7,      #  N-ARY SUMMATION
+    0x221A: 0xC3,      #  SQUARE ROOT
+    0x221E: 0xB0,      #  INFINITY
+    0x222B: 0xBA,      #  INTEGRAL
+    0x2248: 0xC5,      #  ALMOST EQUAL TO
+    0x2260: 0xAD,      #  NOT EQUAL TO
+    0x2264: 0xB2,      #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,      #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,      #  LOZENGE
+    0xF8FF: 0xF0,      #  Apple logo
+}
+
index 77c2dec3d00e40ef23e3d5e3a411d9514738459a..a4f476f50ca95f6e36135ec5bff6bc26d36933a9 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> CONTROL CHARACTER
     u'\x08'    #  0x08 -> CONTROL CHARACTER
     u'\t'      #  0x09 -> CONTROL CHARACTER
-    u'\n'      #  0x0a -> CONTROL CHARACTER
-    u'\x0b'    #  0x0b -> CONTROL CHARACTER
-    u'\x0c'    #  0x0c -> CONTROL CHARACTER
-    u'\r'      #  0x0d -> CONTROL CHARACTER
-    u'\x0e'    #  0x0e -> CONTROL CHARACTER
-    u'\x0f'    #  0x0f -> CONTROL CHARACTER
+    u'\n'      #  0x0A -> CONTROL CHARACTER
+    u'\x0b'    #  0x0B -> CONTROL CHARACTER
+    u'\x0c'    #  0x0C -> CONTROL CHARACTER
+    u'\r'      #  0x0D -> CONTROL CHARACTER
+    u'\x0e'    #  0x0E -> CONTROL CHARACTER
+    u'\x0f'    #  0x0F -> CONTROL CHARACTER
     u'\x10'    #  0x10 -> CONTROL CHARACTER
     u'\x11'    #  0x11 -> CONTROL CHARACTER
     u'\x12'    #  0x12 -> CONTROL CHARACTER
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> CONTROL CHARACTER
     u'\x18'    #  0x18 -> CONTROL CHARACTER
     u'\x19'    #  0x19 -> CONTROL CHARACTER
-    u'\x1a'    #  0x1a -> CONTROL CHARACTER
-    u'\x1b'    #  0x1b -> CONTROL CHARACTER
-    u'\x1c'    #  0x1c -> CONTROL CHARACTER
-    u'\x1d'    #  0x1d -> CONTROL CHARACTER
-    u'\x1e'    #  0x1e -> CONTROL CHARACTER
-    u'\x1f'    #  0x1f -> CONTROL CHARACTER
+    u'\x1a'    #  0x1A -> CONTROL CHARACTER
+    u'\x1b'    #  0x1B -> CONTROL CHARACTER
+    u'\x1c'    #  0x1C -> CONTROL CHARACTER
+    u'\x1d'    #  0x1D -> CONTROL CHARACTER
+    u'\x1e'    #  0x1E -> CONTROL CHARACTER
+    u'\x1f'    #  0x1F -> CONTROL CHARACTER
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> CONTROL CHARACTER
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> CONTROL CHARACTER
     u'\xc4'    #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
     u'\xc5'    #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
     u'\xc7'    #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
@@ -170,12 +170,12 @@ decoding_table = (
     u'\xe1'    #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
     u'\xe0'    #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
     u'\xe2'    #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'    #  0x8a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'    #  0x8b -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'    #  0x8c -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'    #  0x8d -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'    #  0x8e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'    #  0x8f -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe4'    #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'    #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'    #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'    #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'    #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'    #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
     u'\xea'    #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
     u'\xeb'    #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
     u'\xed'    #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\xf3'    #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
     u'\xf2'    #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
     u'\xf4'    #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0x9a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'    #  0x9b -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'    #  0x9c -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'    #  0x9d -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'    #  0x9e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0x9f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'  #  0xa0 -> DAGGER
-    u'\xb0'    #  0xa1 -> DEGREE SIGN
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa7'    #  0xa4 -> SECTION SIGN
-    u'\u2022'  #  0xa5 -> BULLET
-    u'\xb6'    #  0xa6 -> PILCROW SIGN
-    u'\xdf'    #  0xa7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'    #  0xa8 -> REGISTERED SIGN
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u2122'  #  0xaa -> TRADE MARK SIGN
-    u'\xb4'    #  0xab -> ACUTE ACCENT
-    u'\xa8'    #  0xac -> DIAERESIS
-    u'\u2260'  #  0xad -> NOT EQUAL TO
-    u'\xc6'    #  0xae -> LATIN CAPITAL LETTER AE
-    u'\xd8'    #  0xaf -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'  #  0xb0 -> INFINITY
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u2264'  #  0xb2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'  #  0xb3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'    #  0xb4 -> YEN SIGN
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\u2202'  #  0xb6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'  #  0xb7 -> N-ARY SUMMATION
-    u'\u220f'  #  0xb8 -> N-ARY PRODUCT
-    u'\u03c0'  #  0xb9 -> GREEK SMALL LETTER PI
-    u'\u222b'  #  0xba -> INTEGRAL
-    u'\xaa'    #  0xbb -> FEMININE ORDINAL INDICATOR
-    u'\xba'    #  0xbc -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'  #  0xbd -> GREEK CAPITAL LETTER OMEGA
-    u'\xe6'    #  0xbe -> LATIN SMALL LETTER AE
-    u'\xf8'    #  0xbf -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'    #  0xc0 -> INVERTED QUESTION MARK
-    u'\xa1'    #  0xc1 -> INVERTED EXCLAMATION MARK
-    u'\xac'    #  0xc2 -> NOT SIGN
-    u'\u221a'  #  0xc3 -> SQUARE ROOT
-    u'\u0192'  #  0xc4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'  #  0xc5 -> ALMOST EQUAL TO
-    u'\u2206'  #  0xc6 -> INCREMENT
-    u'\xab'    #  0xc7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0xc8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'  #  0xc9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'    #  0xca -> NO-BREAK SPACE
-    u'\xc0'    #  0xcb -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'    #  0xcc -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'    #  0xcd -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'  #  0xce -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'  #  0xcf -> LATIN SMALL LIGATURE OE
-    u'\u2013'  #  0xd0 -> EN DASH
-    u'\u2014'  #  0xd1 -> EM DASH
-    u'\u201c'  #  0xd2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'  #  0xd3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'  #  0xd4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'  #  0xd5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'    #  0xd6 -> DIVISION SIGN
-    u'\u25ca'  #  0xd7 -> LOZENGE
-    u'\xff'    #  0xd8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'  #  0xd9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u2044'  #  0xda -> FRACTION SLASH
-    u'\u20ac'  #  0xdb -> EURO SIGN
-    u'\u2039'  #  0xdc -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'  #  0xdd -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufb01'  #  0xde -> LATIN SMALL LIGATURE FI
-    u'\ufb02'  #  0xdf -> LATIN SMALL LIGATURE FL
-    u'\u2021'  #  0xe0 -> DOUBLE DAGGER
-    u'\xb7'    #  0xe1 -> MIDDLE DOT
-    u'\u201a'  #  0xe2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'  #  0xe3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'  #  0xe4 -> PER MILLE SIGN
-    u'\xc2'    #  0xe5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'    #  0xe6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'    #  0xe7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'    #  0xe8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'    #  0xe9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'    #  0xea -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xeb -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xec -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'    #  0xed -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xef -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'  #  0xf0 -> Apple logo
-    u'\xd2'    #  0xf1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'    #  0xf2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xf3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'    #  0xf4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'  #  0xf5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'  #  0xf6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'  #  0xf7 -> SMALL TILDE
-    u'\xaf'    #  0xf8 -> MACRON
-    u'\u02d8'  #  0xf9 -> BREVE
-    u'\u02d9'  #  0xfa -> DOT ABOVE
-    u'\u02da'  #  0xfb -> RING ABOVE
-    u'\xb8'    #  0xfc -> CEDILLA
-    u'\u02dd'  #  0xfd -> DOUBLE ACUTE ACCENT
-    u'\u02db'  #  0xfe -> OGONEK
-    u'\u02c7'  #  0xff -> CARON
+    u'\xf6'    #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'    #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'    #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'    #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'    #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'  #  0xA0 -> DAGGER
+    u'\xb0'    #  0xA1 -> DEGREE SIGN
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa7'    #  0xA4 -> SECTION SIGN
+    u'\u2022'  #  0xA5 -> BULLET
+    u'\xb6'    #  0xA6 -> PILCROW SIGN
+    u'\xdf'    #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'    #  0xA8 -> REGISTERED SIGN
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'  #  0xAA -> TRADE MARK SIGN
+    u'\xb4'    #  0xAB -> ACUTE ACCENT
+    u'\xa8'    #  0xAC -> DIAERESIS
+    u'\u2260'  #  0xAD -> NOT EQUAL TO
+    u'\xc6'    #  0xAE -> LATIN CAPITAL LETTER AE
+    u'\xd8'    #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u221e'  #  0xB0 -> INFINITY
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'  #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'  #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'    #  0xB4 -> YEN SIGN
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\u2202'  #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'  #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'  #  0xB8 -> N-ARY PRODUCT
+    u'\u03c0'  #  0xB9 -> GREEK SMALL LETTER PI
+    u'\u222b'  #  0xBA -> INTEGRAL
+    u'\xaa'    #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'    #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'  #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\xe6'    #  0xBE -> LATIN SMALL LETTER AE
+    u'\xf8'    #  0xBF -> LATIN SMALL LETTER O WITH STROKE
+    u'\xbf'    #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'    #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'    #  0xC2 -> NOT SIGN
+    u'\u221a'  #  0xC3 -> SQUARE ROOT
+    u'\u0192'  #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'  #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'  #  0xC6 -> INCREMENT
+    u'\xab'    #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'  #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'    #  0xCA -> NO-BREAK SPACE
+    u'\xc0'    #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'    #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'    #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'  #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'  #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'  #  0xD0 -> EN DASH
+    u'\u2014'  #  0xD1 -> EM DASH
+    u'\u201c'  #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'  #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'  #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'  #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'    #  0xD6 -> DIVISION SIGN
+    u'\u25ca'  #  0xD7 -> LOZENGE
+    u'\xff'    #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0178'  #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u2044'  #  0xDA -> FRACTION SLASH
+    u'\u20ac'  #  0xDB -> EURO SIGN
+    u'\u2039'  #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u203a'  #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\ufb01'  #  0xDE -> LATIN SMALL LIGATURE FI
+    u'\ufb02'  #  0xDF -> LATIN SMALL LIGATURE FL
+    u'\u2021'  #  0xE0 -> DOUBLE DAGGER
+    u'\xb7'    #  0xE1 -> MIDDLE DOT
+    u'\u201a'  #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'  #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'  #  0xE4 -> PER MILLE SIGN
+    u'\xc2'    #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xca'    #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xc1'    #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xcb'    #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'    #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'    #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'    #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\uf8ff'  #  0xF0 -> Apple logo
+    u'\xd2'    #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'    #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'    #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\u0131'  #  0xF5 -> LATIN SMALL LETTER DOTLESS I
+    u'\u02c6'  #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'  #  0xF7 -> SMALL TILDE
+    u'\xaf'    #  0xF8 -> MACRON
+    u'\u02d8'  #  0xF9 -> BREVE
+    u'\u02d9'  #  0xFA -> DOT ABOVE
+    u'\u02da'  #  0xFB -> RING ABOVE
+    u'\xb8'    #  0xFC -> CEDILLA
+    u'\u02dd'  #  0xFD -> DOUBLE ACUTE ACCENT
+    u'\u02db'  #  0xFE -> OGONEK
+    u'\u02c7'  #  0xFF -> CARON
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  CONTROL CHARACTER
     0x0008: 0x08,      #  CONTROL CHARACTER
     0x0009: 0x09,      #  CONTROL CHARACTER
-    0x000a: 0x0a,      #  CONTROL CHARACTER
-    0x000b: 0x0b,      #  CONTROL CHARACTER
-    0x000c: 0x0c,      #  CONTROL CHARACTER
-    0x000d: 0x0d,      #  CONTROL CHARACTER
-    0x000e: 0x0e,      #  CONTROL CHARACTER
-    0x000f: 0x0f,      #  CONTROL CHARACTER
+    0x000A: 0x0A,      #  CONTROL CHARACTER
+    0x000B: 0x0B,      #  CONTROL CHARACTER
+    0x000C: 0x0C,      #  CONTROL CHARACTER
+    0x000D: 0x0D,      #  CONTROL CHARACTER
+    0x000E: 0x0E,      #  CONTROL CHARACTER
+    0x000F: 0x0F,      #  CONTROL CHARACTER
     0x0010: 0x10,      #  CONTROL CHARACTER
     0x0011: 0x11,      #  CONTROL CHARACTER
     0x0012: 0x12,      #  CONTROL CHARACTER
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  CONTROL CHARACTER
     0x0018: 0x18,      #  CONTROL CHARACTER
     0x0019: 0x19,      #  CONTROL CHARACTER
-    0x001a: 0x1a,      #  CONTROL CHARACTER
-    0x001b: 0x1b,      #  CONTROL CHARACTER
-    0x001c: 0x1c,      #  CONTROL CHARACTER
-    0x001d: 0x1d,      #  CONTROL CHARACTER
-    0x001e: 0x1e,      #  CONTROL CHARACTER
-    0x001f: 0x1f,      #  CONTROL CHARACTER
+    0x001A: 0x1A,      #  CONTROL CHARACTER
+    0x001B: 0x1B,      #  CONTROL CHARACTER
+    0x001C: 0x1C,      #  CONTROL CHARACTER
+    0x001D: 0x1D,      #  CONTROL CHARACTER
+    0x001E: 0x1E,      #  CONTROL CHARACTER
+    0x001F: 0x1F,      #  CONTROL CHARACTER
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  CONTROL CHARACTER
-    0x00a0: 0xca,      #  NO-BREAK SPACE
-    0x00a1: 0xc1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a5: 0xb4,      #  YEN SIGN
-    0x00a7: 0xa4,      #  SECTION SIGN
-    0x00a8: 0xac,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xbb,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xc7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xc2,      #  NOT SIGN
-    0x00ae: 0xa8,      #  REGISTERED SIGN
-    0x00af: 0xf8,      #  MACRON
-    0x00b0: 0xa1,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b4: 0xab,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xa6,      #  PILCROW SIGN
-    0x00b7: 0xe1,      #  MIDDLE DOT
-    0x00b8: 0xfc,      #  CEDILLA
-    0x00ba: 0xbc,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xc8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bf: 0xc0,      #  INVERTED QUESTION MARK
-    0x00c0: 0xcb,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xe7,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xe5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xcc,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xae,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xe9,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xe6,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xe8,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xed,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xea,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xeb,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xec,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xf1,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xef,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xcd,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0xaf,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xf4,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xf2,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xf3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xa7,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x8b,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x8a,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x8c,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xbe,      #  LATIN SMALL LETTER AE
-    0x00e7: 0x8d,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x8f,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x8e,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x9b,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x9a,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xd6,      #  DIVISION SIGN
-    0x00f8: 0xbf,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x9d,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x9c,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x9e,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x9f,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0xd8,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0131: 0xf5,      #  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xce,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xcf,      #  LATIN SMALL LIGATURE OE
-    0x0178: 0xd9,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0xc4,      #  LATIN SMALL LETTER F WITH HOOK
-    0x02c6: 0xf6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02c7: 0xff,      #  CARON
-    0x02d8: 0xf9,      #  BREVE
-    0x02d9: 0xfa,      #  DOT ABOVE
-    0x02da: 0xfb,      #  RING ABOVE
-    0x02db: 0xfe,      #  OGONEK
-    0x02dc: 0xf7,      #  SMALL TILDE
-    0x02dd: 0xfd,      #  DOUBLE ACUTE ACCENT
-    0x03a9: 0xbd,      #  GREEK CAPITAL LETTER OMEGA
-    0x03c0: 0xb9,      #  GREEK SMALL LETTER PI
-    0x2013: 0xd0,      #  EN DASH
-    0x2014: 0xd1,      #  EM DASH
-    0x2018: 0xd4,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xd5,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0xe2,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0xd2,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0xd3,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0xe3,      #  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xa0,      #  DAGGER
-    0x2021: 0xe0,      #  DOUBLE DAGGER
-    0x2022: 0xa5,      #  BULLET
-    0x2026: 0xc9,      #  HORIZONTAL ELLIPSIS
-    0x2030: 0xe4,      #  PER MILLE SIGN
-    0x2039: 0xdc,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0xdd,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x2044: 0xda,      #  FRACTION SLASH
-    0x20ac: 0xdb,      #  EURO SIGN
-    0x2122: 0xaa,      #  TRADE MARK SIGN
-    0x2202: 0xb6,      #  PARTIAL DIFFERENTIAL
-    0x2206: 0xc6,      #  INCREMENT
-    0x220f: 0xb8,      #  N-ARY PRODUCT
-    0x2211: 0xb7,      #  N-ARY SUMMATION
-    0x221a: 0xc3,      #  SQUARE ROOT
-    0x221e: 0xb0,      #  INFINITY
-    0x222b: 0xba,      #  INTEGRAL
-    0x2248: 0xc5,      #  ALMOST EQUAL TO
-    0x2260: 0xad,      #  NOT EQUAL TO
-    0x2264: 0xb2,      #  LESS-THAN OR EQUAL TO
-    0x2265: 0xb3,      #  GREATER-THAN OR EQUAL TO
-    0x25ca: 0xd7,      #  LOZENGE
-    0xf8ff: 0xf0,      #  Apple logo
-    0xfb01: 0xde,      #  LATIN SMALL LIGATURE FI
-    0xfb02: 0xdf,      #  LATIN SMALL LIGATURE FL
-}
\ No newline at end of file
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  CONTROL CHARACTER
+    0x00A0: 0xCA,      #  NO-BREAK SPACE
+    0x00A1: 0xC1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A5: 0xB4,      #  YEN SIGN
+    0x00A7: 0xA4,      #  SECTION SIGN
+    0x00A8: 0xAC,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xBB,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,      #  NOT SIGN
+    0x00AE: 0xA8,      #  REGISTERED SIGN
+    0x00AF: 0xF8,      #  MACRON
+    0x00B0: 0xA1,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xA6,      #  PILCROW SIGN
+    0x00B7: 0xE1,      #  MIDDLE DOT
+    0x00B8: 0xFC,      #  CEDILLA
+    0x00BA: 0xBC,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xC8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,      #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAE,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xE6,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xE8,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xAF,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xF4,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBE,      #  LATIN SMALL LETTER AE
+    0x00E7: 0x8D,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,      #  DIVISION SIGN
+    0x00F8: 0xBF,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0x9D,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xD8,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0131: 0xF5,      #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,      #  LATIN SMALL LIGATURE OE
+    0x0178: 0xD9,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0xC4,      #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0xF6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,      #  CARON
+    0x02D8: 0xF9,      #  BREVE
+    0x02D9: 0xFA,      #  DOT ABOVE
+    0x02DA: 0xFB,      #  RING ABOVE
+    0x02DB: 0xFE,      #  OGONEK
+    0x02DC: 0xF7,      #  SMALL TILDE
+    0x02DD: 0xFD,      #  DOUBLE ACUTE ACCENT
+    0x03A9: 0xBD,      #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xB9,      #  GREEK SMALL LETTER PI
+    0x2013: 0xD0,      #  EN DASH
+    0x2014: 0xD1,      #  EM DASH
+    0x2018: 0xD4,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,      #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,      #  DAGGER
+    0x2021: 0xE0,      #  DOUBLE DAGGER
+    0x2022: 0xA5,      #  BULLET
+    0x2026: 0xC9,      #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,      #  PER MILLE SIGN
+    0x2039: 0xDC,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0xDD,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x2044: 0xDA,      #  FRACTION SLASH
+    0x20AC: 0xDB,      #  EURO SIGN
+    0x2122: 0xAA,      #  TRADE MARK SIGN
+    0x2202: 0xB6,      #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,      #  INCREMENT
+    0x220F: 0xB8,      #  N-ARY PRODUCT
+    0x2211: 0xB7,      #  N-ARY SUMMATION
+    0x221A: 0xC3,      #  SQUARE ROOT
+    0x221E: 0xB0,      #  INFINITY
+    0x222B: 0xBA,      #  INTEGRAL
+    0x2248: 0xC5,      #  ALMOST EQUAL TO
+    0x2260: 0xAD,      #  NOT EQUAL TO
+    0x2264: 0xB2,      #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,      #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,      #  LOZENGE
+    0xF8FF: 0xF0,      #  Apple logo
+    0xFB01: 0xDE,      #  LATIN SMALL LIGATURE FI
+    0xFB02: 0xDF,      #  LATIN SMALL LIGATURE FL
+}
+
index aa1d713445abfb48eb75c19d301cca78d7d61be6..ba6c173f8b9a927be4b144fb0e3c255405d87bd0 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> CONTROL CHARACTER
     u'\x08'    #  0x08 -> CONTROL CHARACTER
     u'\t'      #  0x09 -> CONTROL CHARACTER
-    u'\n'      #  0x0a -> CONTROL CHARACTER
-    u'\x0b'    #  0x0b -> CONTROL CHARACTER
-    u'\x0c'    #  0x0c -> CONTROL CHARACTER
-    u'\r'      #  0x0d -> CONTROL CHARACTER
-    u'\x0e'    #  0x0e -> CONTROL CHARACTER
-    u'\x0f'    #  0x0f -> CONTROL CHARACTER
+    u'\n'      #  0x0A -> CONTROL CHARACTER
+    u'\x0b'    #  0x0B -> CONTROL CHARACTER
+    u'\x0c'    #  0x0C -> CONTROL CHARACTER
+    u'\r'      #  0x0D -> CONTROL CHARACTER
+    u'\x0e'    #  0x0E -> CONTROL CHARACTER
+    u'\x0f'    #  0x0F -> CONTROL CHARACTER
     u'\x10'    #  0x10 -> CONTROL CHARACTER
     u'\x11'    #  0x11 -> CONTROL CHARACTER
     u'\x12'    #  0x12 -> CONTROL CHARACTER
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> CONTROL CHARACTER
     u'\x18'    #  0x18 -> CONTROL CHARACTER
     u'\x19'    #  0x19 -> CONTROL CHARACTER
-    u'\x1a'    #  0x1a -> CONTROL CHARACTER
-    u'\x1b'    #  0x1b -> CONTROL CHARACTER
-    u'\x1c'    #  0x1c -> CONTROL CHARACTER
-    u'\x1d'    #  0x1d -> CONTROL CHARACTER
-    u'\x1e'    #  0x1e -> CONTROL CHARACTER
-    u'\x1f'    #  0x1f -> CONTROL CHARACTER
+    u'\x1a'    #  0x1A -> CONTROL CHARACTER
+    u'\x1b'    #  0x1B -> CONTROL CHARACTER
+    u'\x1c'    #  0x1C -> CONTROL CHARACTER
+    u'\x1d'    #  0x1D -> CONTROL CHARACTER
+    u'\x1e'    #  0x1E -> CONTROL CHARACTER
+    u'\x1f'    #  0x1F -> CONTROL CHARACTER
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> CONTROL CHARACTER
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> CONTROL CHARACTER
     u'\xc4'    #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
     u'\xc5'    #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
     u'\xc7'    #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
@@ -170,12 +170,12 @@ decoding_table = (
     u'\xe1'    #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
     u'\xe0'    #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
     u'\xe2'    #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'    #  0x8a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'    #  0x8b -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'    #  0x8c -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'    #  0x8d -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'    #  0x8e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'    #  0x8f -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe4'    #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'    #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'    #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'    #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'    #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'    #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
     u'\xea'    #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
     u'\xeb'    #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
     u'\xed'    #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\xf3'    #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
     u'\xf2'    #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
     u'\xf4'    #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0x9a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'    #  0x9b -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'    #  0x9c -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'    #  0x9d -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'    #  0x9e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0x9f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'  #  0xa0 -> DAGGER
-    u'\xb0'    #  0xa1 -> DEGREE SIGN
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa7'    #  0xa4 -> SECTION SIGN
-    u'\u2022'  #  0xa5 -> BULLET
-    u'\xb6'    #  0xa6 -> PILCROW SIGN
-    u'\xdf'    #  0xa7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'    #  0xa8 -> REGISTERED SIGN
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u2122'  #  0xaa -> TRADE MARK SIGN
-    u'\xb4'    #  0xab -> ACUTE ACCENT
-    u'\xa8'    #  0xac -> DIAERESIS
-    u'\u2260'  #  0xad -> NOT EQUAL TO
-    u'\u0102'  #  0xae -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\u0218'  #  0xaf -> LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\u221e'  #  0xb0 -> INFINITY
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u2264'  #  0xb2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'  #  0xb3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'    #  0xb4 -> YEN SIGN
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\u2202'  #  0xb6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'  #  0xb7 -> N-ARY SUMMATION
-    u'\u220f'  #  0xb8 -> N-ARY PRODUCT
-    u'\u03c0'  #  0xb9 -> GREEK SMALL LETTER PI
-    u'\u222b'  #  0xba -> INTEGRAL
-    u'\xaa'    #  0xbb -> FEMININE ORDINAL INDICATOR
-    u'\xba'    #  0xbc -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'  #  0xbd -> GREEK CAPITAL LETTER OMEGA
-    u'\u0103'  #  0xbe -> LATIN SMALL LETTER A WITH BREVE
-    u'\u0219'  #  0xbf -> LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\xbf'    #  0xc0 -> INVERTED QUESTION MARK
-    u'\xa1'    #  0xc1 -> INVERTED EXCLAMATION MARK
-    u'\xac'    #  0xc2 -> NOT SIGN
-    u'\u221a'  #  0xc3 -> SQUARE ROOT
-    u'\u0192'  #  0xc4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'  #  0xc5 -> ALMOST EQUAL TO
-    u'\u2206'  #  0xc6 -> INCREMENT
-    u'\xab'    #  0xc7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0xc8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'  #  0xc9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'    #  0xca -> NO-BREAK SPACE
-    u'\xc0'    #  0xcb -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'    #  0xcc -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'    #  0xcd -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'  #  0xce -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'  #  0xcf -> LATIN SMALL LIGATURE OE
-    u'\u2013'  #  0xd0 -> EN DASH
-    u'\u2014'  #  0xd1 -> EM DASH
-    u'\u201c'  #  0xd2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'  #  0xd3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'  #  0xd4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'  #  0xd5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'    #  0xd6 -> DIVISION SIGN
-    u'\u25ca'  #  0xd7 -> LOZENGE
-    u'\xff'    #  0xd8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'  #  0xd9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u2044'  #  0xda -> FRACTION SLASH
-    u'\u20ac'  #  0xdb -> EURO SIGN
-    u'\u2039'  #  0xdc -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'  #  0xdd -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u021a'  #  0xde -> LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\u021b'  #  0xdf -> LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\u2021'  #  0xe0 -> DOUBLE DAGGER
-    u'\xb7'    #  0xe1 -> MIDDLE DOT
-    u'\u201a'  #  0xe2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'  #  0xe3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'  #  0xe4 -> PER MILLE SIGN
-    u'\xc2'    #  0xe5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'    #  0xe6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'    #  0xe7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'    #  0xe8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'    #  0xe9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'    #  0xea -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xeb -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xec -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'    #  0xed -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xef -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'  #  0xf0 -> Apple logo
-    u'\xd2'    #  0xf1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'    #  0xf2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xf3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'    #  0xf4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'  #  0xf5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'  #  0xf6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'  #  0xf7 -> SMALL TILDE
-    u'\xaf'    #  0xf8 -> MACRON
-    u'\u02d8'  #  0xf9 -> BREVE
-    u'\u02d9'  #  0xfa -> DOT ABOVE
-    u'\u02da'  #  0xfb -> RING ABOVE
-    u'\xb8'    #  0xfc -> CEDILLA
-    u'\u02dd'  #  0xfd -> DOUBLE ACUTE ACCENT
-    u'\u02db'  #  0xfe -> OGONEK
-    u'\u02c7'  #  0xff -> CARON
+    u'\xf6'    #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'    #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'    #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'    #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'    #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'  #  0xA0 -> DAGGER
+    u'\xb0'    #  0xA1 -> DEGREE SIGN
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa7'    #  0xA4 -> SECTION SIGN
+    u'\u2022'  #  0xA5 -> BULLET
+    u'\xb6'    #  0xA6 -> PILCROW SIGN
+    u'\xdf'    #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'    #  0xA8 -> REGISTERED SIGN
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'  #  0xAA -> TRADE MARK SIGN
+    u'\xb4'    #  0xAB -> ACUTE ACCENT
+    u'\xa8'    #  0xAC -> DIAERESIS
+    u'\u2260'  #  0xAD -> NOT EQUAL TO
+    u'\u0102'  #  0xAE -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\u0218'  #  0xAF -> LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
+    u'\u221e'  #  0xB0 -> INFINITY
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'  #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'  #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'    #  0xB4 -> YEN SIGN
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\u2202'  #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'  #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'  #  0xB8 -> N-ARY PRODUCT
+    u'\u03c0'  #  0xB9 -> GREEK SMALL LETTER PI
+    u'\u222b'  #  0xBA -> INTEGRAL
+    u'\xaa'    #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'    #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'  #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\u0103'  #  0xBE -> LATIN SMALL LETTER A WITH BREVE
+    u'\u0219'  #  0xBF -> LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
+    u'\xbf'    #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'    #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'    #  0xC2 -> NOT SIGN
+    u'\u221a'  #  0xC3 -> SQUARE ROOT
+    u'\u0192'  #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'  #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'  #  0xC6 -> INCREMENT
+    u'\xab'    #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'  #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'    #  0xCA -> NO-BREAK SPACE
+    u'\xc0'    #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'    #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'    #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'  #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'  #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'  #  0xD0 -> EN DASH
+    u'\u2014'  #  0xD1 -> EM DASH
+    u'\u201c'  #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'  #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'  #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'  #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'    #  0xD6 -> DIVISION SIGN
+    u'\u25ca'  #  0xD7 -> LOZENGE
+    u'\xff'    #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0178'  #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u2044'  #  0xDA -> FRACTION SLASH
+    u'\u20ac'  #  0xDB -> EURO SIGN
+    u'\u2039'  #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u203a'  #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u021a'  #  0xDE -> LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
+    u'\u021b'  #  0xDF -> LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
+    u'\u2021'  #  0xE0 -> DOUBLE DAGGER
+    u'\xb7'    #  0xE1 -> MIDDLE DOT
+    u'\u201a'  #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'  #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'  #  0xE4 -> PER MILLE SIGN
+    u'\xc2'    #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xca'    #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xc1'    #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xcb'    #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'    #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'    #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'    #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\uf8ff'  #  0xF0 -> Apple logo
+    u'\xd2'    #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'    #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'    #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\u0131'  #  0xF5 -> LATIN SMALL LETTER DOTLESS I
+    u'\u02c6'  #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'  #  0xF7 -> SMALL TILDE
+    u'\xaf'    #  0xF8 -> MACRON
+    u'\u02d8'  #  0xF9 -> BREVE
+    u'\u02d9'  #  0xFA -> DOT ABOVE
+    u'\u02da'  #  0xFB -> RING ABOVE
+    u'\xb8'    #  0xFC -> CEDILLA
+    u'\u02dd'  #  0xFD -> DOUBLE ACUTE ACCENT
+    u'\u02db'  #  0xFE -> OGONEK
+    u'\u02c7'  #  0xFF -> CARON
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  CONTROL CHARACTER
     0x0008: 0x08,      #  CONTROL CHARACTER
     0x0009: 0x09,      #  CONTROL CHARACTER
-    0x000a: 0x0a,      #  CONTROL CHARACTER
-    0x000b: 0x0b,      #  CONTROL CHARACTER
-    0x000c: 0x0c,      #  CONTROL CHARACTER
-    0x000d: 0x0d,      #  CONTROL CHARACTER
-    0x000e: 0x0e,      #  CONTROL CHARACTER
-    0x000f: 0x0f,      #  CONTROL CHARACTER
+    0x000A: 0x0A,      #  CONTROL CHARACTER
+    0x000B: 0x0B,      #  CONTROL CHARACTER
+    0x000C: 0x0C,      #  CONTROL CHARACTER
+    0x000D: 0x0D,      #  CONTROL CHARACTER
+    0x000E: 0x0E,      #  CONTROL CHARACTER
+    0x000F: 0x0F,      #  CONTROL CHARACTER
     0x0010: 0x10,      #  CONTROL CHARACTER
     0x0011: 0x11,      #  CONTROL CHARACTER
     0x0012: 0x12,      #  CONTROL CHARACTER
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  CONTROL CHARACTER
     0x0018: 0x18,      #  CONTROL CHARACTER
     0x0019: 0x19,      #  CONTROL CHARACTER
-    0x001a: 0x1a,      #  CONTROL CHARACTER
-    0x001b: 0x1b,      #  CONTROL CHARACTER
-    0x001c: 0x1c,      #  CONTROL CHARACTER
-    0x001d: 0x1d,      #  CONTROL CHARACTER
-    0x001e: 0x1e,      #  CONTROL CHARACTER
-    0x001f: 0x1f,      #  CONTROL CHARACTER
+    0x001A: 0x1A,      #  CONTROL CHARACTER
+    0x001B: 0x1B,      #  CONTROL CHARACTER
+    0x001C: 0x1C,      #  CONTROL CHARACTER
+    0x001D: 0x1D,      #  CONTROL CHARACTER
+    0x001E: 0x1E,      #  CONTROL CHARACTER
+    0x001F: 0x1F,      #  CONTROL CHARACTER
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  CONTROL CHARACTER
-    0x00a0: 0xca,      #  NO-BREAK SPACE
-    0x00a1: 0xc1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a5: 0xb4,      #  YEN SIGN
-    0x00a7: 0xa4,      #  SECTION SIGN
-    0x00a8: 0xac,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xbb,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xc7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xc2,      #  NOT SIGN
-    0x00ae: 0xa8,      #  REGISTERED SIGN
-    0x00af: 0xf8,      #  MACRON
-    0x00b0: 0xa1,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b4: 0xab,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xa6,      #  PILCROW SIGN
-    0x00b7: 0xe1,      #  MIDDLE DOT
-    0x00b8: 0xfc,      #  CEDILLA
-    0x00ba: 0xbc,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xc8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bf: 0xc0,      #  INVERTED QUESTION MARK
-    0x00c0: 0xcb,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xe7,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xe5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xcc,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xe9,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xe6,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xe8,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xed,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xea,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xeb,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xec,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xf1,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xef,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xcd,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d9: 0xf4,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xf2,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xf3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xa7,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x8b,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x8a,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x8c,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e7: 0x8d,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x8f,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x8e,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x9b,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x9a,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xd6,      #  DIVISION SIGN
-    0x00f9: 0x9d,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x9c,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x9e,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x9f,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0xd8,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0102: 0xae,      #  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xbe,      #  LATIN SMALL LETTER A WITH BREVE
-    0x0131: 0xf5,      #  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xce,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xcf,      #  LATIN SMALL LIGATURE OE
-    0x0178: 0xd9,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0xc4,      #  LATIN SMALL LETTER F WITH HOOK
-    0x0218: 0xaf,      #  LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    0x0219: 0xbf,      #  LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    0x021a: 0xde,      #  LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    0x021b: 0xdf,      #  LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    0x02c6: 0xf6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02c7: 0xff,      #  CARON
-    0x02d8: 0xf9,      #  BREVE
-    0x02d9: 0xfa,      #  DOT ABOVE
-    0x02da: 0xfb,      #  RING ABOVE
-    0x02db: 0xfe,      #  OGONEK
-    0x02dc: 0xf7,      #  SMALL TILDE
-    0x02dd: 0xfd,      #  DOUBLE ACUTE ACCENT
-    0x03a9: 0xbd,      #  GREEK CAPITAL LETTER OMEGA
-    0x03c0: 0xb9,      #  GREEK SMALL LETTER PI
-    0x2013: 0xd0,      #  EN DASH
-    0x2014: 0xd1,      #  EM DASH
-    0x2018: 0xd4,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xd5,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0xe2,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0xd2,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0xd3,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0xe3,      #  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xa0,      #  DAGGER
-    0x2021: 0xe0,      #  DOUBLE DAGGER
-    0x2022: 0xa5,      #  BULLET
-    0x2026: 0xc9,      #  HORIZONTAL ELLIPSIS
-    0x2030: 0xe4,      #  PER MILLE SIGN
-    0x2039: 0xdc,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203a: 0xdd,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x2044: 0xda,      #  FRACTION SLASH
-    0x20ac: 0xdb,      #  EURO SIGN
-    0x2122: 0xaa,      #  TRADE MARK SIGN
-    0x2202: 0xb6,      #  PARTIAL DIFFERENTIAL
-    0x2206: 0xc6,      #  INCREMENT
-    0x220f: 0xb8,      #  N-ARY PRODUCT
-    0x2211: 0xb7,      #  N-ARY SUMMATION
-    0x221a: 0xc3,      #  SQUARE ROOT
-    0x221e: 0xb0,      #  INFINITY
-    0x222b: 0xba,      #  INTEGRAL
-    0x2248: 0xc5,      #  ALMOST EQUAL TO
-    0x2260: 0xad,      #  NOT EQUAL TO
-    0x2264: 0xb2,      #  LESS-THAN OR EQUAL TO
-    0x2265: 0xb3,      #  GREATER-THAN OR EQUAL TO
-    0x25ca: 0xd7,      #  LOZENGE
-    0xf8ff: 0xf0,      #  Apple logo
-}
\ No newline at end of file
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  CONTROL CHARACTER
+    0x00A0: 0xCA,      #  NO-BREAK SPACE
+    0x00A1: 0xC1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A5: 0xB4,      #  YEN SIGN
+    0x00A7: 0xA4,      #  SECTION SIGN
+    0x00A8: 0xAC,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xBB,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,      #  NOT SIGN
+    0x00AE: 0xA8,      #  REGISTERED SIGN
+    0x00AF: 0xF8,      #  MACRON
+    0x00B0: 0xA1,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xA6,      #  PILCROW SIGN
+    0x00B7: 0xE1,      #  MIDDLE DOT
+    0x00B8: 0xFC,      #  CEDILLA
+    0x00BA: 0xBC,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xC8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,      #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xE6,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xE8,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D9: 0xF4,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E7: 0x8D,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,      #  DIVISION SIGN
+    0x00F9: 0x9D,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xD8,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0102: 0xAE,      #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xBE,      #  LATIN SMALL LETTER A WITH BREVE
+    0x0131: 0xF5,      #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,      #  LATIN SMALL LIGATURE OE
+    0x0178: 0xD9,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0xC4,      #  LATIN SMALL LETTER F WITH HOOK
+    0x0218: 0xAF,      #  LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
+    0x0219: 0xBF,      #  LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
+    0x021A: 0xDE,      #  LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
+    0x021B: 0xDF,      #  LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
+    0x02C6: 0xF6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,      #  CARON
+    0x02D8: 0xF9,      #  BREVE
+    0x02D9: 0xFA,      #  DOT ABOVE
+    0x02DA: 0xFB,      #  RING ABOVE
+    0x02DB: 0xFE,      #  OGONEK
+    0x02DC: 0xF7,      #  SMALL TILDE
+    0x02DD: 0xFD,      #  DOUBLE ACUTE ACCENT
+    0x03A9: 0xBD,      #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xB9,      #  GREEK SMALL LETTER PI
+    0x2013: 0xD0,      #  EN DASH
+    0x2014: 0xD1,      #  EM DASH
+    0x2018: 0xD4,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,      #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,      #  DAGGER
+    0x2021: 0xE0,      #  DOUBLE DAGGER
+    0x2022: 0xA5,      #  BULLET
+    0x2026: 0xC9,      #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,      #  PER MILLE SIGN
+    0x2039: 0xDC,      #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0xDD,      #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x2044: 0xDA,      #  FRACTION SLASH
+    0x20AC: 0xDB,      #  EURO SIGN
+    0x2122: 0xAA,      #  TRADE MARK SIGN
+    0x2202: 0xB6,      #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,      #  INCREMENT
+    0x220F: 0xB8,      #  N-ARY PRODUCT
+    0x2211: 0xB7,      #  N-ARY SUMMATION
+    0x221A: 0xC3,      #  SQUARE ROOT
+    0x221E: 0xB0,      #  INFINITY
+    0x222B: 0xBA,      #  INTEGRAL
+    0x2248: 0xC5,      #  ALMOST EQUAL TO
+    0x2260: 0xAD,      #  NOT EQUAL TO
+    0x2264: 0xB2,      #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,      #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,      #  LOZENGE
+    0xF8FF: 0xF0,      #  Apple logo
+}
+
index e3899b638fa14434af94193e0bdda7e298337168..8a3efb7f4111e799392ab032e22f5f1f1b4433e5 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> CONTROL CHARACTER
     u'\x08'    #  0x08 -> CONTROL CHARACTER
     u'\t'      #  0x09 -> CONTROL CHARACTER
-    u'\n'      #  0x0a -> CONTROL CHARACTER
-    u'\x0b'    #  0x0b -> CONTROL CHARACTER
-    u'\x0c'    #  0x0c -> CONTROL CHARACTER
-    u'\r'      #  0x0d -> CONTROL CHARACTER
-    u'\x0e'    #  0x0e -> CONTROL CHARACTER
-    u'\x0f'    #  0x0f -> CONTROL CHARACTER
+    u'\n'      #  0x0A -> CONTROL CHARACTER
+    u'\x0b'    #  0x0B -> CONTROL CHARACTER
+    u'\x0c'    #  0x0C -> CONTROL CHARACTER
+    u'\r'      #  0x0D -> CONTROL CHARACTER
+    u'\x0e'    #  0x0E -> CONTROL CHARACTER
+    u'\x0f'    #  0x0F -> CONTROL CHARACTER
     u'\x10'    #  0x10 -> CONTROL CHARACTER
     u'\x11'    #  0x11 -> CONTROL CHARACTER
     u'\x12'    #  0x12 -> CONTROL CHARACTER
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> CONTROL CHARACTER
     u'\x18'    #  0x18 -> CONTROL CHARACTER
     u'\x19'    #  0x19 -> CONTROL CHARACTER
-    u'\x1a'    #  0x1a -> CONTROL CHARACTER
-    u'\x1b'    #  0x1b -> CONTROL CHARACTER
-    u'\x1c'    #  0x1c -> CONTROL CHARACTER
-    u'\x1d'    #  0x1d -> CONTROL CHARACTER
-    u'\x1e'    #  0x1e -> CONTROL CHARACTER
-    u'\x1f'    #  0x1f -> CONTROL CHARACTER
+    u'\x1a'    #  0x1A -> CONTROL CHARACTER
+    u'\x1b'    #  0x1B -> CONTROL CHARACTER
+    u'\x1c'    #  0x1C -> CONTROL CHARACTER
+    u'\x1d'    #  0x1D -> CONTROL CHARACTER
+    u'\x1e'    #  0x1E -> CONTROL CHARACTER
+    u'\x1f'    #  0x1F -> CONTROL CHARACTER
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> CONTROL CHARACTER
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> CONTROL CHARACTER
     u'\xc4'    #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
     u'\xc5'    #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
     u'\xc7'    #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
@@ -170,12 +170,12 @@ decoding_table = (
     u'\xe1'    #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
     u'\xe0'    #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
     u'\xe2'    #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'    #  0x8a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'    #  0x8b -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'    #  0x8c -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'    #  0x8d -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'    #  0x8e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'    #  0x8f -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe4'    #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'    #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'    #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'    #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'    #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'    #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
     u'\xea'    #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
     u'\xeb'    #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
     u'\xed'    #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
@@ -186,108 +186,108 @@ decoding_table = (
     u'\xf3'    #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
     u'\xf2'    #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
     u'\xf4'    #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'    #  0x9a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'    #  0x9b -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'    #  0x9c -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'    #  0x9d -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'    #  0x9e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'    #  0x9f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'  #  0xa0 -> DAGGER
-    u'\xb0'    #  0xa1 -> DEGREE SIGN
-    u'\xa2'    #  0xa2 -> CENT SIGN
-    u'\xa3'    #  0xa3 -> POUND SIGN
-    u'\xa7'    #  0xa4 -> SECTION SIGN
-    u'\u2022'  #  0xa5 -> BULLET
-    u'\xb6'    #  0xa6 -> PILCROW SIGN
-    u'\xdf'    #  0xa7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'    #  0xa8 -> REGISTERED SIGN
-    u'\xa9'    #  0xa9 -> COPYRIGHT SIGN
-    u'\u2122'  #  0xaa -> TRADE MARK SIGN
-    u'\xb4'    #  0xab -> ACUTE ACCENT
-    u'\xa8'    #  0xac -> DIAERESIS
-    u'\u2260'  #  0xad -> NOT EQUAL TO
-    u'\xc6'    #  0xae -> LATIN CAPITAL LETTER AE
-    u'\xd8'    #  0xaf -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'  #  0xb0 -> INFINITY
-    u'\xb1'    #  0xb1 -> PLUS-MINUS SIGN
-    u'\u2264'  #  0xb2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'  #  0xb3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'    #  0xb4 -> YEN SIGN
-    u'\xb5'    #  0xb5 -> MICRO SIGN
-    u'\u2202'  #  0xb6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'  #  0xb7 -> N-ARY SUMMATION
-    u'\u220f'  #  0xb8 -> N-ARY PRODUCT
-    u'\u03c0'  #  0xb9 -> GREEK SMALL LETTER PI
-    u'\u222b'  #  0xba -> INTEGRAL
-    u'\xaa'    #  0xbb -> FEMININE ORDINAL INDICATOR
-    u'\xba'    #  0xbc -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'  #  0xbd -> GREEK CAPITAL LETTER OMEGA
-    u'\xe6'    #  0xbe -> LATIN SMALL LETTER AE
-    u'\xf8'    #  0xbf -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'    #  0xc0 -> INVERTED QUESTION MARK
-    u'\xa1'    #  0xc1 -> INVERTED EXCLAMATION MARK
-    u'\xac'    #  0xc2 -> NOT SIGN
-    u'\u221a'  #  0xc3 -> SQUARE ROOT
-    u'\u0192'  #  0xc4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'  #  0xc5 -> ALMOST EQUAL TO
-    u'\u2206'  #  0xc6 -> INCREMENT
-    u'\xab'    #  0xc7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'    #  0xc8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'  #  0xc9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'    #  0xca -> NO-BREAK SPACE
-    u'\xc0'    #  0xcb -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'    #  0xcc -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'    #  0xcd -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'  #  0xce -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'  #  0xcf -> LATIN SMALL LIGATURE OE
-    u'\u2013'  #  0xd0 -> EN DASH
-    u'\u2014'  #  0xd1 -> EM DASH
-    u'\u201c'  #  0xd2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'  #  0xd3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'  #  0xd4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'  #  0xd5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'    #  0xd6 -> DIVISION SIGN
-    u'\u25ca'  #  0xd7 -> LOZENGE
-    u'\xff'    #  0xd8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'  #  0xd9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u011e'  #  0xda -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u011f'  #  0xdb -> LATIN SMALL LETTER G WITH BREVE
-    u'\u0130'  #  0xdc -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u0131'  #  0xdd -> LATIN SMALL LETTER DOTLESS I
-    u'\u015e'  #  0xde -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u015f'  #  0xdf -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\u2021'  #  0xe0 -> DOUBLE DAGGER
-    u'\xb7'    #  0xe1 -> MIDDLE DOT
-    u'\u201a'  #  0xe2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'  #  0xe3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'  #  0xe4 -> PER MILLE SIGN
-    u'\xc2'    #  0xe5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'    #  0xe6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'    #  0xe7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'    #  0xe8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'    #  0xe9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'    #  0xea -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'    #  0xeb -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'    #  0xec -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'    #  0xed -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'    #  0xee -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'    #  0xef -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'  #  0xf0 -> Apple logo
-    u'\xd2'    #  0xf1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'    #  0xf2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'    #  0xf3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'    #  0xf4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\uf8a0'  #  0xf5 -> undefined1
-    u'\u02c6'  #  0xf6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'  #  0xf7 -> SMALL TILDE
-    u'\xaf'    #  0xf8 -> MACRON
-    u'\u02d8'  #  0xf9 -> BREVE
-    u'\u02d9'  #  0xfa -> DOT ABOVE
-    u'\u02da'  #  0xfb -> RING ABOVE
-    u'\xb8'    #  0xfc -> CEDILLA
-    u'\u02dd'  #  0xfd -> DOUBLE ACUTE ACCENT
-    u'\u02db'  #  0xfe -> OGONEK
-    u'\u02c7'  #  0xff -> CARON
+    u'\xf6'    #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'    #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'    #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'    #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'    #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'    #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'  #  0xA0 -> DAGGER
+    u'\xb0'    #  0xA1 -> DEGREE SIGN
+    u'\xa2'    #  0xA2 -> CENT SIGN
+    u'\xa3'    #  0xA3 -> POUND SIGN
+    u'\xa7'    #  0xA4 -> SECTION SIGN
+    u'\u2022'  #  0xA5 -> BULLET
+    u'\xb6'    #  0xA6 -> PILCROW SIGN
+    u'\xdf'    #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'    #  0xA8 -> REGISTERED SIGN
+    u'\xa9'    #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'  #  0xAA -> TRADE MARK SIGN
+    u'\xb4'    #  0xAB -> ACUTE ACCENT
+    u'\xa8'    #  0xAC -> DIAERESIS
+    u'\u2260'  #  0xAD -> NOT EQUAL TO
+    u'\xc6'    #  0xAE -> LATIN CAPITAL LETTER AE
+    u'\xd8'    #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u221e'  #  0xB0 -> INFINITY
+    u'\xb1'    #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'  #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'  #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'    #  0xB4 -> YEN SIGN
+    u'\xb5'    #  0xB5 -> MICRO SIGN
+    u'\u2202'  #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'  #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'  #  0xB8 -> N-ARY PRODUCT
+    u'\u03c0'  #  0xB9 -> GREEK SMALL LETTER PI
+    u'\u222b'  #  0xBA -> INTEGRAL
+    u'\xaa'    #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'    #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'  #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\xe6'    #  0xBE -> LATIN SMALL LETTER AE
+    u'\xf8'    #  0xBF -> LATIN SMALL LETTER O WITH STROKE
+    u'\xbf'    #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'    #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'    #  0xC2 -> NOT SIGN
+    u'\u221a'  #  0xC3 -> SQUARE ROOT
+    u'\u0192'  #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'  #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'  #  0xC6 -> INCREMENT
+    u'\xab'    #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'    #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'  #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'    #  0xCA -> NO-BREAK SPACE
+    u'\xc0'    #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'    #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'    #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'  #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'  #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'  #  0xD0 -> EN DASH
+    u'\u2014'  #  0xD1 -> EM DASH
+    u'\u201c'  #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'  #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'  #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'  #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'    #  0xD6 -> DIVISION SIGN
+    u'\u25ca'  #  0xD7 -> LOZENGE
+    u'\xff'    #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0178'  #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u011e'  #  0xDA -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\u011f'  #  0xDB -> LATIN SMALL LETTER G WITH BREVE
+    u'\u0130'  #  0xDC -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'\u0131'  #  0xDD -> LATIN SMALL LETTER DOTLESS I
+    u'\u015e'  #  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\u015f'  #  0xDF -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\u2021'  #  0xE0 -> DOUBLE DAGGER
+    u'\xb7'    #  0xE1 -> MIDDLE DOT
+    u'\u201a'  #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'  #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'  #  0xE4 -> PER MILLE SIGN
+    u'\xc2'    #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xca'    #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xc1'    #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xcb'    #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'    #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'    #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'    #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'    #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'    #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'    #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'    #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\uf8ff'  #  0xF0 -> Apple logo
+    u'\xd2'    #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'    #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'    #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'    #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\uf8a0'  #  0xF5 -> undefined1
+    u'\u02c6'  #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'  #  0xF7 -> SMALL TILDE
+    u'\xaf'    #  0xF8 -> MACRON
+    u'\u02d8'  #  0xF9 -> BREVE
+    u'\u02d9'  #  0xFA -> DOT ABOVE
+    u'\u02da'  #  0xFB -> RING ABOVE
+    u'\xb8'    #  0xFC -> CEDILLA
+    u'\u02dd'  #  0xFD -> DOUBLE ACUTE ACCENT
+    u'\u02db'  #  0xFE -> OGONEK
+    u'\u02c7'  #  0xFF -> CARON
 )
 
 ### Encoding Map
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  CONTROL CHARACTER
     0x0008: 0x08,      #  CONTROL CHARACTER
     0x0009: 0x09,      #  CONTROL CHARACTER
-    0x000a: 0x0a,      #  CONTROL CHARACTER
-    0x000b: 0x0b,      #  CONTROL CHARACTER
-    0x000c: 0x0c,      #  CONTROL CHARACTER
-    0x000d: 0x0d,      #  CONTROL CHARACTER
-    0x000e: 0x0e,      #  CONTROL CHARACTER
-    0x000f: 0x0f,      #  CONTROL CHARACTER
+    0x000A: 0x0A,      #  CONTROL CHARACTER
+    0x000B: 0x0B,      #  CONTROL CHARACTER
+    0x000C: 0x0C,      #  CONTROL CHARACTER
+    0x000D: 0x0D,      #  CONTROL CHARACTER
+    0x000E: 0x0E,      #  CONTROL CHARACTER
+    0x000F: 0x0F,      #  CONTROL CHARACTER
     0x0010: 0x10,      #  CONTROL CHARACTER
     0x0011: 0x11,      #  CONTROL CHARACTER
     0x0012: 0x12,      #  CONTROL CHARACTER
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  CONTROL CHARACTER
     0x0018: 0x18,      #  CONTROL CHARACTER
     0x0019: 0x19,      #  CONTROL CHARACTER
-    0x001a: 0x1a,      #  CONTROL CHARACTER
-    0x001b: 0x1b,      #  CONTROL CHARACTER
-    0x001c: 0x1c,      #  CONTROL CHARACTER
-    0x001d: 0x1d,      #  CONTROL CHARACTER
-    0x001e: 0x1e,      #  CONTROL CHARACTER
-    0x001f: 0x1f,      #  CONTROL CHARACTER
+    0x001A: 0x1A,      #  CONTROL CHARACTER
+    0x001B: 0x1B,      #  CONTROL CHARACTER
+    0x001C: 0x1C,      #  CONTROL CHARACTER
+    0x001D: 0x1D,      #  CONTROL CHARACTER
+    0x001E: 0x1E,      #  CONTROL CHARACTER
+    0x001F: 0x1F,      #  CONTROL CHARACTER
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,138 +415,139 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  CONTROL CHARACTER
-    0x00a0: 0xca,      #  NO-BREAK SPACE
-    0x00a1: 0xc1,      #  INVERTED EXCLAMATION MARK
-    0x00a2: 0xa2,      #  CENT SIGN
-    0x00a3: 0xa3,      #  POUND SIGN
-    0x00a5: 0xb4,      #  YEN SIGN
-    0x00a7: 0xa4,      #  SECTION SIGN
-    0x00a8: 0xac,      #  DIAERESIS
-    0x00a9: 0xa9,      #  COPYRIGHT SIGN
-    0x00aa: 0xbb,      #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0xc7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0xc2,      #  NOT SIGN
-    0x00ae: 0xa8,      #  REGISTERED SIGN
-    0x00af: 0xf8,      #  MACRON
-    0x00b0: 0xa1,      #  DEGREE SIGN
-    0x00b1: 0xb1,      #  PLUS-MINUS SIGN
-    0x00b4: 0xab,      #  ACUTE ACCENT
-    0x00b5: 0xb5,      #  MICRO SIGN
-    0x00b6: 0xa6,      #  PILCROW SIGN
-    0x00b7: 0xe1,      #  MIDDLE DOT
-    0x00b8: 0xfc,      #  CEDILLA
-    0x00ba: 0xbc,      #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0xc8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bf: 0xc0,      #  INVERTED QUESTION MARK
-    0x00c0: 0xcb,      #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0xe7,      #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0xe5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0xcc,      #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0xae,      #  LATIN CAPITAL LETTER AE
-    0x00c7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0xe9,      #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0xe6,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0xe8,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0xed,      #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0xea,      #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0xeb,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0xec,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0xf1,      #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0xee,      #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0xef,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0xcd,      #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0xaf,      #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0xf4,      #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0xf2,      #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0xf3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0xa7,      #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x8b,      #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x8a,      #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x8c,      #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0xbe,      #  LATIN SMALL LETTER AE
-    0x00e7: 0x8d,      #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x8f,      #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x8e,      #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x9b,      #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x9a,      #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0xd6,      #  DIVISION SIGN
-    0x00f8: 0xbf,      #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x9d,      #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x9c,      #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x9e,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x9f,      #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0xd8,      #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011e: 0xda,      #  LATIN CAPITAL LETTER G WITH BREVE
-    0x011f: 0xdb,      #  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0xdc,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0xdd,      #  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xce,      #  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xcf,      #  LATIN SMALL LIGATURE OE
-    0x015e: 0xde,      #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0xdf,      #  LATIN SMALL LETTER S WITH CEDILLA
-    0x0178: 0xd9,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0xc4,      #  LATIN SMALL LETTER F WITH HOOK
-    0x02c6: 0xf6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02c7: 0xff,      #  CARON
-    0x02d8: 0xf9,      #  BREVE
-    0x02d9: 0xfa,      #  DOT ABOVE
-    0x02da: 0xfb,      #  RING ABOVE
-    0x02db: 0xfe,      #  OGONEK
-    0x02dc: 0xf7,      #  SMALL TILDE
-    0x02dd: 0xfd,      #  DOUBLE ACUTE ACCENT
-    0x03a9: 0xbd,      #  GREEK CAPITAL LETTER OMEGA
-    0x03c0: 0xb9,      #  GREEK SMALL LETTER PI
-    0x2013: 0xd0,      #  EN DASH
-    0x2014: 0xd1,      #  EM DASH
-    0x2018: 0xd4,      #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xd5,      #  RIGHT SINGLE QUOTATION MARK
-    0x201a: 0xe2,      #  SINGLE LOW-9 QUOTATION MARK
-    0x201c: 0xd2,      #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0xd3,      #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0xe3,      #  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xa0,      #  DAGGER
-    0x2021: 0xe0,      #  DOUBLE DAGGER
-    0x2022: 0xa5,      #  BULLET
-    0x2026: 0xc9,      #  HORIZONTAL ELLIPSIS
-    0x2030: 0xe4,      #  PER MILLE SIGN
-    0x2122: 0xaa,      #  TRADE MARK SIGN
-    0x2202: 0xb6,      #  PARTIAL DIFFERENTIAL
-    0x2206: 0xc6,      #  INCREMENT
-    0x220f: 0xb8,      #  N-ARY PRODUCT
-    0x2211: 0xb7,      #  N-ARY SUMMATION
-    0x221a: 0xc3,      #  SQUARE ROOT
-    0x221e: 0xb0,      #  INFINITY
-    0x222b: 0xba,      #  INTEGRAL
-    0x2248: 0xc5,      #  ALMOST EQUAL TO
-    0x2260: 0xad,      #  NOT EQUAL TO
-    0x2264: 0xb2,      #  LESS-THAN OR EQUAL TO
-    0x2265: 0xb3,      #  GREATER-THAN OR EQUAL TO
-    0x25ca: 0xd7,      #  LOZENGE
-    0xf8a0: 0xf5,      #  undefined1
-    0xf8ff: 0xf0,      #  Apple logo
-}
\ No newline at end of file
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  CONTROL CHARACTER
+    0x00A0: 0xCA,      #  NO-BREAK SPACE
+    0x00A1: 0xC1,      #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,      #  CENT SIGN
+    0x00A3: 0xA3,      #  POUND SIGN
+    0x00A5: 0xB4,      #  YEN SIGN
+    0x00A7: 0xA4,      #  SECTION SIGN
+    0x00A8: 0xAC,      #  DIAERESIS
+    0x00A9: 0xA9,      #  COPYRIGHT SIGN
+    0x00AA: 0xBB,      #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,      #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,      #  NOT SIGN
+    0x00AE: 0xA8,      #  REGISTERED SIGN
+    0x00AF: 0xF8,      #  MACRON
+    0x00B0: 0xA1,      #  DEGREE SIGN
+    0x00B1: 0xB1,      #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,      #  ACUTE ACCENT
+    0x00B5: 0xB5,      #  MICRO SIGN
+    0x00B6: 0xA6,      #  PILCROW SIGN
+    0x00B7: 0xE1,      #  MIDDLE DOT
+    0x00B8: 0xFC,      #  CEDILLA
+    0x00BA: 0xBC,      #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xC8,      #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,      #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,      #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,      #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,      #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,      #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,      #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,      #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAE,      #  LATIN CAPITAL LETTER AE
+    0x00C7: 0x82,      #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,      #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,      #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xE6,      #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xE8,      #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,      #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,      #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,      #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,      #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x84,      #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,      #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,      #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,      #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,      #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,      #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xAF,      #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xF4,      #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,      #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,      #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,      #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,      #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,      #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,      #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,      #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,      #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,      #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,      #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBE,      #  LATIN SMALL LETTER AE
+    0x00E7: 0x8D,      #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,      #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,      #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,      #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,      #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,      #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,      #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,      #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,      #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,      #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,      #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,      #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,      #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,      #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,      #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,      #  DIVISION SIGN
+    0x00F8: 0xBF,      #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0x9D,      #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,      #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,      #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,      #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xD8,      #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x011E: 0xDA,      #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xDB,      #  LATIN SMALL LETTER G WITH BREVE
+    0x0130: 0xDC,      #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0xDD,      #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,      #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,      #  LATIN SMALL LIGATURE OE
+    0x015E: 0xDE,      #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xDF,      #  LATIN SMALL LETTER S WITH CEDILLA
+    0x0178: 0xD9,      #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0xC4,      #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0xF6,      #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,      #  CARON
+    0x02D8: 0xF9,      #  BREVE
+    0x02D9: 0xFA,      #  DOT ABOVE
+    0x02DA: 0xFB,      #  RING ABOVE
+    0x02DB: 0xFE,      #  OGONEK
+    0x02DC: 0xF7,      #  SMALL TILDE
+    0x02DD: 0xFD,      #  DOUBLE ACUTE ACCENT
+    0x03A9: 0xBD,      #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xB9,      #  GREEK SMALL LETTER PI
+    0x2013: 0xD0,      #  EN DASH
+    0x2014: 0xD1,      #  EM DASH
+    0x2018: 0xD4,      #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,      #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,      #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,      #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,      #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,      #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,      #  DAGGER
+    0x2021: 0xE0,      #  DOUBLE DAGGER
+    0x2022: 0xA5,      #  BULLET
+    0x2026: 0xC9,      #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,      #  PER MILLE SIGN
+    0x2122: 0xAA,      #  TRADE MARK SIGN
+    0x2202: 0xB6,      #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,      #  INCREMENT
+    0x220F: 0xB8,      #  N-ARY PRODUCT
+    0x2211: 0xB7,      #  N-ARY SUMMATION
+    0x221A: 0xC3,      #  SQUARE ROOT
+    0x221E: 0xB0,      #  INFINITY
+    0x222B: 0xBA,      #  INTEGRAL
+    0x2248: 0xC5,      #  ALMOST EQUAL TO
+    0x2260: 0xAD,      #  NOT EQUAL TO
+    0x2264: 0xB2,      #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,      #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,      #  LOZENGE
+    0xF8A0: 0xF5,      #  undefined1
+    0xF8FF: 0xF0,      #  Apple logo
+}
+
index f7c3f016844a8aa20502310384b09f3155ad9638..cf5ddaeb9f0e8f05550b15d6a4b26962935ee414 100644 (file)
@@ -42,12 +42,12 @@ decoding_table = (
     u'\x07'    #  0x07 -> BELL
     u'\x08'    #  0x08 -> BACKSPACE
     u'\t'      #  0x09 -> HORIZONTAL TABULATION
-    u'\n'      #  0x0a -> LINE FEED
-    u'\x0b'    #  0x0b -> VERTICAL TABULATION
-    u'\x0c'    #  0x0c -> FORM FEED
-    u'\r'      #  0x0d -> CARRIAGE RETURN
-    u'\x0e'    #  0x0e -> SHIFT OUT
-    u'\x0f'    #  0x0f -> SHIFT IN
+    u'\n'      #  0x0A -> LINE FEED
+    u'\x0b'    #  0x0B -> VERTICAL TABULATION
+    u'\x0c'    #  0x0C -> FORM FEED
+    u'\r'      #  0x0D -> CARRIAGE RETURN
+    u'\x0e'    #  0x0E -> SHIFT OUT
+    u'\x0f'    #  0x0F -> SHIFT IN
     u'\x10'    #  0x10 -> DATA LINK ESCAPE
     u'\x11'    #  0x11 -> DEVICE CONTROL ONE
     u'\x12'    #  0x12 -> DEVICE CONTROL TWO
@@ -58,12 +58,12 @@ decoding_table = (
     u'\x17'    #  0x17 -> END OF TRANSMISSION BLOCK
     u'\x18'    #  0x18 -> CANCEL
     u'\x19'    #  0x19 -> END OF MEDIUM
-    u'\x1a'    #  0x1a -> SUBSTITUTE
-    u'\x1b'    #  0x1b -> ESCAPE
-    u'\x1c'    #  0x1c -> FILE SEPARATOR
-    u'\x1d'    #  0x1d -> GROUP SEPARATOR
-    u'\x1e'    #  0x1e -> RECORD SEPARATOR
-    u'\x1f'    #  0x1f -> UNIT SEPARATOR
+    u'\x1a'    #  0x1A -> SUBSTITUTE
+    u'\x1b'    #  0x1B -> ESCAPE
+    u'\x1c'    #  0x1C -> FILE SEPARATOR
+    u'\x1d'    #  0x1D -> GROUP SEPARATOR
+    u'\x1e'    #  0x1E -> RECORD SEPARATOR
+    u'\x1f'    #  0x1F -> UNIT SEPARATOR
     u' '       #  0x20 -> SPACE
     u'!'       #  0x21 -> EXCLAMATION MARK
     u'"'       #  0x22 -> QUOTATION MARK
@@ -74,12 +74,12 @@ decoding_table = (
     u"'"       #  0x27 -> APOSTROPHE
     u'('       #  0x28 -> LEFT PARENTHESIS
     u')'       #  0x29 -> RIGHT PARENTHESIS
-    u'*'       #  0x2a -> ASTERISK
-    u'+'       #  0x2b -> PLUS SIGN
-    u','       #  0x2c -> COMMA
-    u'-'       #  0x2d -> HYPHEN-MINUS
-    u'.'       #  0x2e -> FULL STOP
-    u'/'       #  0x2f -> SOLIDUS
+    u'*'       #  0x2A -> ASTERISK
+    u'+'       #  0x2B -> PLUS SIGN
+    u','       #  0x2C -> COMMA
+    u'-'       #  0x2D -> HYPHEN-MINUS
+    u'.'       #  0x2E -> FULL STOP
+    u'/'       #  0x2F -> SOLIDUS
     u'0'       #  0x30 -> DIGIT ZERO
     u'1'       #  0x31 -> DIGIT ONE
     u'2'       #  0x32 -> DIGIT TWO
@@ -90,12 +90,12 @@ decoding_table = (
     u'7'       #  0x37 -> DIGIT SEVEN
     u'8'       #  0x38 -> DIGIT EIGHT
     u'9'       #  0x39 -> DIGIT NINE
-    u':'       #  0x3a -> COLON
-    u';'       #  0x3b -> SEMICOLON
-    u'<'       #  0x3c -> LESS-THAN SIGN
-    u'='       #  0x3d -> EQUALS SIGN
-    u'>'       #  0x3e -> GREATER-THAN SIGN
-    u'?'       #  0x3f -> QUESTION MARK
+    u':'       #  0x3A -> COLON
+    u';'       #  0x3B -> SEMICOLON
+    u'<'       #  0x3C -> LESS-THAN SIGN
+    u'='       #  0x3D -> EQUALS SIGN
+    u'>'       #  0x3E -> GREATER-THAN SIGN
+    u'?'       #  0x3F -> QUESTION MARK
     u'@'       #  0x40 -> COMMERCIAL AT
     u'A'       #  0x41 -> LATIN CAPITAL LETTER A
     u'B'       #  0x42 -> LATIN CAPITAL LETTER B
@@ -106,12 +106,12 @@ decoding_table = (
     u'G'       #  0x47 -> LATIN CAPITAL LETTER G
     u'H'       #  0x48 -> LATIN CAPITAL LETTER H
     u'I'       #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'       #  0x4a -> LATIN CAPITAL LETTER J
-    u'K'       #  0x4b -> LATIN CAPITAL LETTER K
-    u'L'       #  0x4c -> LATIN CAPITAL LETTER L
-    u'M'       #  0x4d -> LATIN CAPITAL LETTER M
-    u'N'       #  0x4e -> LATIN CAPITAL LETTER N
-    u'O'       #  0x4f -> LATIN CAPITAL LETTER O
+    u'J'       #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'       #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'       #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'       #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'       #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'       #  0x4F -> LATIN CAPITAL LETTER O
     u'P'       #  0x50 -> LATIN CAPITAL LETTER P
     u'Q'       #  0x51 -> LATIN CAPITAL LETTER Q
     u'R'       #  0x52 -> LATIN CAPITAL LETTER R
@@ -122,12 +122,12 @@ decoding_table = (
     u'W'       #  0x57 -> LATIN CAPITAL LETTER W
     u'X'       #  0x58 -> LATIN CAPITAL LETTER X
     u'Y'       #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'       #  0x5a -> LATIN CAPITAL LETTER Z
-    u'['       #  0x5b -> LEFT SQUARE BRACKET
-    u'\\'      #  0x5c -> REVERSE SOLIDUS
-    u']'       #  0x5d -> RIGHT SQUARE BRACKET
-    u'^'       #  0x5e -> CIRCUMFLEX ACCENT
-    u'_'       #  0x5f -> LOW LINE
+    u'Z'       #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['       #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'      #  0x5C -> REVERSE SOLIDUS
+    u']'       #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'       #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'       #  0x5F -> LOW LINE
     u'`'       #  0x60 -> GRAVE ACCENT
     u'a'       #  0x61 -> LATIN SMALL LETTER A
     u'b'       #  0x62 -> LATIN SMALL LETTER B
@@ -138,12 +138,12 @@ decoding_table = (
     u'g'       #  0x67 -> LATIN SMALL LETTER G
     u'h'       #  0x68 -> LATIN SMALL LETTER H
     u'i'       #  0x69 -> LATIN SMALL LETTER I
-    u'j'       #  0x6a -> LATIN SMALL LETTER J
-    u'k'       #  0x6b -> LATIN SMALL LETTER K
-    u'l'       #  0x6c -> LATIN SMALL LETTER L
-    u'm'       #  0x6d -> LATIN SMALL LETTER M
-    u'n'       #  0x6e -> LATIN SMALL LETTER N
-    u'o'       #  0x6f -> LATIN SMALL LETTER O
+    u'j'       #  0x6A -> LATIN SMALL LETTER J
+    u'k'       #  0x6B -> LATIN SMALL LETTER K
+    u'l'       #  0x6C -> LATIN SMALL LETTER L
+    u'm'       #  0x6D -> LATIN SMALL LETTER M
+    u'n'       #  0x6E -> LATIN SMALL LETTER N
+    u'o'       #  0x6F -> LATIN SMALL LETTER O
     u'p'       #  0x70 -> LATIN SMALL LETTER P
     u'q'       #  0x71 -> LATIN SMALL LETTER Q
     u'r'       #  0x72 -> LATIN SMALL LETTER R
@@ -154,12 +154,12 @@ decoding_table = (
     u'w'       #  0x77 -> LATIN SMALL LETTER W
     u'x'       #  0x78 -> LATIN SMALL LETTER X
     u'y'       #  0x79 -> LATIN SMALL LETTER Y
-    u'z'       #  0x7a -> LATIN SMALL LETTER Z
-    u'{'       #  0x7b -> LEFT CURLY BRACKET
-    u'|'       #  0x7c -> VERTICAL LINE
-    u'}'       #  0x7d -> RIGHT CURLY BRACKET
-    u'~'       #  0x7e -> TILDE
-    u'\x7f'    #  0x7f -> DELETE
+    u'z'       #  0x7A -> LATIN SMALL LETTER Z
+    u'{'       #  0x7B -> LEFT CURLY BRACKET
+    u'|'       #  0x7C -> VERTICAL LINE
+    u'}'       #  0x7D -> RIGHT CURLY BRACKET
+    u'~'       #  0x7E -> TILDE
+    u'\x7f'    #  0x7F -> DELETE
     u'\x80'    #  0x80 -> <control>
     u'\x81'    #  0x81 -> <control>
     u'\x82'    #  0x82 -> <control>
@@ -170,12 +170,12 @@ decoding_table = (
     u'\x87'    #  0x87 -> <control>
     u'\x88'    #  0x88 -> <control>
     u'\x89'    #  0x89 -> <control>
-    u'\x8a'    #  0x8a -> <control>
-    u'\x8b'    #  0x8b -> <control>
-    u'\x8c'    #  0x8c -> <control>
-    u'\x8d'    #  0x8d -> <control>
-    u'\x8e'    #  0x8e -> <control>
-    u'\x8f'    #  0x8f -> <control>
+    u'\x8a'    #  0x8A -> <control>
+    u'\x8b'    #  0x8B -> <control>
+    u'\x8c'    #  0x8C -> <control>
+    u'\x8d'    #  0x8D -> <control>
+    u'\x8e'    #  0x8E -> <control>
+    u'\x8f'    #  0x8F -> <control>
     u'\x90'    #  0x90 -> <control>
     u'\x91'    #  0x91 -> <control>
     u'\x92'    #  0x92 -> <control>
@@ -186,104 +186,104 @@ decoding_table = (
     u'\x97'    #  0x97 -> <control>
     u'\x98'    #  0x98 -> <control>
     u'\x99'    #  0x99 -> <control>
-    u'\x9a'    #  0x9a -> <control>
-    u'\x9b'    #  0x9b -> <control>
-    u'\x9c'    #  0x9c -> <control>
-    u'\x9d'    #  0x9d -> <control>
-    u'\x9e'    #  0x9e -> <control>
-    u'\x9f'    #  0x9f -> <control>
+    u'\x9a'    #  0x9A -> <control>
+    u'\x9b'    #  0x9B -> <control>
+    u'\x9c'    #  0x9C -> <control>
+    u'\x9d'    #  0x9D -> <control>
+    u'\x9e'    #  0x9E -> <control>
+    u'\x9f'    #  0x9F -> <control>
     u'\ufffe'
-    u'\u0e01'  #  0xa1 -> THAI CHARACTER KO KAI
-    u'\u0e02'  #  0xa2 -> THAI CHARACTER KHO KHAI
-    u'\u0e03'  #  0xa3 -> THAI CHARACTER KHO KHUAT
-    u'\u0e04'  #  0xa4 -> THAI CHARACTER KHO KHWAI
-    u'\u0e05'  #  0xa5 -> THAI CHARACTER KHO KHON
-    u'\u0e06'  #  0xa6 -> THAI CHARACTER KHO RAKHANG
-    u'\u0e07'  #  0xa7 -> THAI CHARACTER NGO NGU
-    u'\u0e08'  #  0xa8 -> THAI CHARACTER CHO CHAN
-    u'\u0e09'  #  0xa9 -> THAI CHARACTER CHO CHING
-    u'\u0e0a'  #  0xaa -> THAI CHARACTER CHO CHANG
-    u'\u0e0b'  #  0xab -> THAI CHARACTER SO SO
-    u'\u0e0c'  #  0xac -> THAI CHARACTER CHO CHOE
-    u'\u0e0d'  #  0xad -> THAI CHARACTER YO YING
-    u'\u0e0e'  #  0xae -> THAI CHARACTER DO CHADA
-    u'\u0e0f'  #  0xaf -> THAI CHARACTER TO PATAK
-    u'\u0e10'  #  0xb0 -> THAI CHARACTER THO THAN
-    u'\u0e11'  #  0xb1 -> THAI CHARACTER THO NANGMONTHO
-    u'\u0e12'  #  0xb2 -> THAI CHARACTER THO PHUTHAO
-    u'\u0e13'  #  0xb3 -> THAI CHARACTER NO NEN
-    u'\u0e14'  #  0xb4 -> THAI CHARACTER DO DEK
-    u'\u0e15'  #  0xb5 -> THAI CHARACTER TO TAO
-    u'\u0e16'  #  0xb6 -> THAI CHARACTER THO THUNG
-    u'\u0e17'  #  0xb7 -> THAI CHARACTER THO THAHAN
-    u'\u0e18'  #  0xb8 -> THAI CHARACTER THO THONG
-    u'\u0e19'  #  0xb9 -> THAI CHARACTER NO NU
-    u'\u0e1a'  #  0xba -> THAI CHARACTER BO BAIMAI
-    u'\u0e1b'  #  0xbb -> THAI CHARACTER PO PLA
-    u'\u0e1c'  #  0xbc -> THAI CHARACTER PHO PHUNG
-    u'\u0e1d'  #  0xbd -> THAI CHARACTER FO FA
-    u'\u0e1e'  #  0xbe -> THAI CHARACTER PHO PHAN
-    u'\u0e1f'  #  0xbf -> THAI CHARACTER FO FAN
-    u'\u0e20'  #  0xc0 -> THAI CHARACTER PHO SAMPHAO
-    u'\u0e21'  #  0xc1 -> THAI CHARACTER MO MA
-    u'\u0e22'  #  0xc2 -> THAI CHARACTER YO YAK
-    u'\u0e23'  #  0xc3 -> THAI CHARACTER RO RUA
-    u'\u0e24'  #  0xc4 -> THAI CHARACTER RU
-    u'\u0e25'  #  0xc5 -> THAI CHARACTER LO LING
-    u'\u0e26'  #  0xc6 -> THAI CHARACTER LU
-    u'\u0e27'  #  0xc7 -> THAI CHARACTER WO WAEN
-    u'\u0e28'  #  0xc8 -> THAI CHARACTER SO SALA
-    u'\u0e29'  #  0xc9 -> THAI CHARACTER SO RUSI
-    u'\u0e2a'  #  0xca -> THAI CHARACTER SO SUA
-    u'\u0e2b'  #  0xcb -> THAI CHARACTER HO HIP
-    u'\u0e2c'  #  0xcc -> THAI CHARACTER LO CHULA
-    u'\u0e2d'  #  0xcd -> THAI CHARACTER O ANG
-    u'\u0e2e'  #  0xce -> THAI CHARACTER HO NOKHUK
-    u'\u0e2f'  #  0xcf -> THAI CHARACTER PAIYANNOI
-    u'\u0e30'  #  0xd0 -> THAI CHARACTER SARA A
-    u'\u0e31'  #  0xd1 -> THAI CHARACTER MAI HAN-AKAT
-    u'\u0e32'  #  0xd2 -> THAI CHARACTER SARA AA
-    u'\u0e33'  #  0xd3 -> THAI CHARACTER SARA AM
-    u'\u0e34'  #  0xd4 -> THAI CHARACTER SARA I
-    u'\u0e35'  #  0xd5 -> THAI CHARACTER SARA II
-    u'\u0e36'  #  0xd6 -> THAI CHARACTER SARA UE
-    u'\u0e37'  #  0xd7 -> THAI CHARACTER SARA UEE
-    u'\u0e38'  #  0xd8 -> THAI CHARACTER SARA U
-    u'\u0e39'  #  0xd9 -> THAI CHARACTER SARA UU
-    u'\u0e3a'  #  0xda -> THAI CHARACTER PHINTHU
+    u'\u0e01'  #  0xA1 -> THAI CHARACTER KO KAI
+    u'\u0e02'  #  0xA2 -> THAI CHARACTER KHO KHAI
+    u'\u0e03'  #  0xA3 -> THAI CHARACTER KHO KHUAT
+    u'\u0e04'  #  0xA4 -> THAI CHARACTER KHO KHWAI
+    u'\u0e05'  #  0xA5 -> THAI CHARACTER KHO KHON
+    u'\u0e06'  #  0xA6 -> THAI CHARACTER KHO RAKHANG
+    u'\u0e07'  #  0xA7 -> THAI CHARACTER NGO NGU
+    u'\u0e08'  #  0xA8 -> THAI CHARACTER CHO CHAN
+    u'\u0e09'  #  0xA9 -> THAI CHARACTER CHO CHING
+    u'\u0e0a'  #  0xAA -> THAI CHARACTER CHO CHANG
+    u'\u0e0b'  #  0xAB -> THAI CHARACTER SO SO
+    u'\u0e0c'  #  0xAC -> THAI CHARACTER CHO CHOE
+    u'\u0e0d'  #  0xAD -> THAI CHARACTER YO YING
+    u'\u0e0e'  #  0xAE -> THAI CHARACTER DO CHADA
+    u'\u0e0f'  #  0xAF -> THAI CHARACTER TO PATAK
+    u'\u0e10'  #  0xB0 -> THAI CHARACTER THO THAN
+    u'\u0e11'  #  0xB1 -> THAI CHARACTER THO NANGMONTHO
+    u'\u0e12'  #  0xB2 -> THAI CHARACTER THO PHUTHAO
+    u'\u0e13'  #  0xB3 -> THAI CHARACTER NO NEN
+    u'\u0e14'  #  0xB4 -> THAI CHARACTER DO DEK
+    u'\u0e15'  #  0xB5 -> THAI CHARACTER TO TAO
+    u'\u0e16'  #  0xB6 -> THAI CHARACTER THO THUNG
+    u'\u0e17'  #  0xB7 -> THAI CHARACTER THO THAHAN
+    u'\u0e18'  #  0xB8 -> THAI CHARACTER THO THONG
+    u'\u0e19'  #  0xB9 -> THAI CHARACTER NO NU
+    u'\u0e1a'  #  0xBA -> THAI CHARACTER BO BAIMAI
+    u'\u0e1b'  #  0xBB -> THAI CHARACTER PO PLA
+    u'\u0e1c'  #  0xBC -> THAI CHARACTER PHO PHUNG
+    u'\u0e1d'  #  0xBD -> THAI CHARACTER FO FA
+    u'\u0e1e'  #  0xBE -> THAI CHARACTER PHO PHAN
+    u'\u0e1f'  #  0xBF -> THAI CHARACTER FO FAN
+    u'\u0e20'  #  0xC0 -> THAI CHARACTER PHO SAMPHAO
+    u'\u0e21'  #  0xC1 -> THAI CHARACTER MO MA
+    u'\u0e22'  #  0xC2 -> THAI CHARACTER YO YAK
+    u'\u0e23'  #  0xC3 -> THAI CHARACTER RO RUA
+    u'\u0e24'  #  0xC4 -> THAI CHARACTER RU
+    u'\u0e25'  #  0xC5 -> THAI CHARACTER LO LING
+    u'\u0e26'  #  0xC6 -> THAI CHARACTER LU
+    u'\u0e27'  #  0xC7 -> THAI CHARACTER WO WAEN
+    u'\u0e28'  #  0xC8 -> THAI CHARACTER SO SALA
+    u'\u0e29'  #  0xC9 -> THAI CHARACTER SO RUSI
+    u'\u0e2a'  #  0xCA -> THAI CHARACTER SO SUA
+    u'\u0e2b'  #  0xCB -> THAI CHARACTER HO HIP
+    u'\u0e2c'  #  0xCC -> THAI CHARACTER LO CHULA
+    u'\u0e2d'  #  0xCD -> THAI CHARACTER O ANG
+    u'\u0e2e'  #  0xCE -> THAI CHARACTER HO NOKHUK
+    u'\u0e2f'  #  0xCF -> THAI CHARACTER PAIYANNOI
+    u'\u0e30'  #  0xD0 -> THAI CHARACTER SARA A
+    u'\u0e31'  #  0xD1 -> THAI CHARACTER MAI HAN-AKAT
+    u'\u0e32'  #  0xD2 -> THAI CHARACTER SARA AA
+    u'\u0e33'  #  0xD3 -> THAI CHARACTER SARA AM
+    u'\u0e34'  #  0xD4 -> THAI CHARACTER SARA I
+    u'\u0e35'  #  0xD5 -> THAI CHARACTER SARA II
+    u'\u0e36'  #  0xD6 -> THAI CHARACTER SARA UE
+    u'\u0e37'  #  0xD7 -> THAI CHARACTER SARA UEE
+    u'\u0e38'  #  0xD8 -> THAI CHARACTER SARA U
+    u'\u0e39'  #  0xD9 -> THAI CHARACTER SARA UU
+    u'\u0e3a'  #  0xDA -> THAI CHARACTER PHINTHU
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u0e3f'  #  0xdf -> THAI CURRENCY SYMBOL BAHT
-    u'\u0e40'  #  0xe0 -> THAI CHARACTER SARA E
-    u'\u0e41'  #  0xe1 -> THAI CHARACTER SARA AE
-    u'\u0e42'  #  0xe2 -> THAI CHARACTER SARA O
-    u'\u0e43'  #  0xe3 -> THAI CHARACTER SARA AI MAIMUAN
-    u'\u0e44'  #  0xe4 -> THAI CHARACTER SARA AI MAIMALAI
-    u'\u0e45'  #  0xe5 -> THAI CHARACTER LAKKHANGYAO
-    u'\u0e46'  #  0xe6 -> THAI CHARACTER MAIYAMOK
-    u'\u0e47'  #  0xe7 -> THAI CHARACTER MAITAIKHU
-    u'\u0e48'  #  0xe8 -> THAI CHARACTER MAI EK
-    u'\u0e49'  #  0xe9 -> THAI CHARACTER MAI THO
-    u'\u0e4a'  #  0xea -> THAI CHARACTER MAI TRI
-    u'\u0e4b'  #  0xeb -> THAI CHARACTER MAI CHATTAWA
-    u'\u0e4c'  #  0xec -> THAI CHARACTER THANTHAKHAT
-    u'\u0e4d'  #  0xed -> THAI CHARACTER NIKHAHIT
-    u'\u0e4e'  #  0xee -> THAI CHARACTER YAMAKKAN
-    u'\u0e4f'  #  0xef -> THAI CHARACTER FONGMAN
-    u'\u0e50'  #  0xf0 -> THAI DIGIT ZERO
-    u'\u0e51'  #  0xf1 -> THAI DIGIT ONE
-    u'\u0e52'  #  0xf2 -> THAI DIGIT TWO
-    u'\u0e53'  #  0xf3 -> THAI DIGIT THREE
-    u'\u0e54'  #  0xf4 -> THAI DIGIT FOUR
-    u'\u0e55'  #  0xf5 -> THAI DIGIT FIVE
-    u'\u0e56'  #  0xf6 -> THAI DIGIT SIX
-    u'\u0e57'  #  0xf7 -> THAI DIGIT SEVEN
-    u'\u0e58'  #  0xf8 -> THAI DIGIT EIGHT
-    u'\u0e59'  #  0xf9 -> THAI DIGIT NINE
-    u'\u0e5a'  #  0xfa -> THAI CHARACTER ANGKHANKHU
-    u'\u0e5b'  #  0xfb -> THAI CHARACTER KHOMUT
+    u'\u0e3f'  #  0xDF -> THAI CURRENCY SYMBOL BAHT
+    u'\u0e40'  #  0xE0 -> THAI CHARACTER SARA E
+    u'\u0e41'  #  0xE1 -> THAI CHARACTER SARA AE
+    u'\u0e42'  #  0xE2 -> THAI CHARACTER SARA O
+    u'\u0e43'  #  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
+    u'\u0e44'  #  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
+    u'\u0e45'  #  0xE5 -> THAI CHARACTER LAKKHANGYAO
+    u'\u0e46'  #  0xE6 -> THAI CHARACTER MAIYAMOK
+    u'\u0e47'  #  0xE7 -> THAI CHARACTER MAITAIKHU
+    u'\u0e48'  #  0xE8 -> THAI CHARACTER MAI EK
+    u'\u0e49'  #  0xE9 -> THAI CHARACTER MAI THO
+    u'\u0e4a'  #  0xEA -> THAI CHARACTER MAI TRI
+    u'\u0e4b'  #  0xEB -> THAI CHARACTER MAI CHATTAWA
+    u'\u0e4c'  #  0xEC -> THAI CHARACTER THANTHAKHAT
+    u'\u0e4d'  #  0xED -> THAI CHARACTER NIKHAHIT
+    u'\u0e4e'  #  0xEE -> THAI CHARACTER YAMAKKAN
+    u'\u0e4f'  #  0xEF -> THAI CHARACTER FONGMAN
+    u'\u0e50'  #  0xF0 -> THAI DIGIT ZERO
+    u'\u0e51'  #  0xF1 -> THAI DIGIT ONE
+    u'\u0e52'  #  0xF2 -> THAI DIGIT TWO
+    u'\u0e53'  #  0xF3 -> THAI DIGIT THREE
+    u'\u0e54'  #  0xF4 -> THAI DIGIT FOUR
+    u'\u0e55'  #  0xF5 -> THAI DIGIT FIVE
+    u'\u0e56'  #  0xF6 -> THAI DIGIT SIX
+    u'\u0e57'  #  0xF7 -> THAI DIGIT SEVEN
+    u'\u0e58'  #  0xF8 -> THAI DIGIT EIGHT
+    u'\u0e59'  #  0xF9 -> THAI DIGIT NINE
+    u'\u0e5a'  #  0xFA -> THAI CHARACTER ANGKHANKHU
+    u'\u0e5b'  #  0xFB -> THAI CHARACTER KHOMUT
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -303,12 +303,12 @@ encoding_map = {
     0x0007: 0x07,      #  BELL
     0x0008: 0x08,      #  BACKSPACE
     0x0009: 0x09,      #  HORIZONTAL TABULATION
-    0x000a: 0x0a,      #  LINE FEED
-    0x000b: 0x0b,      #  VERTICAL TABULATION
-    0x000c: 0x0c,      #  FORM FEED
-    0x000d: 0x0d,      #  CARRIAGE RETURN
-    0x000e: 0x0e,      #  SHIFT OUT
-    0x000f: 0x0f,      #  SHIFT IN
+    0x000A: 0x0A,      #  LINE FEED
+    0x000B: 0x0B,      #  VERTICAL TABULATION
+    0x000C: 0x0C,      #  FORM FEED
+    0x000D: 0x0D,      #  CARRIAGE RETURN
+    0x000E: 0x0E,      #  SHIFT OUT
+    0x000F: 0x0F,      #  SHIFT IN
     0x0010: 0x10,      #  DATA LINK ESCAPE
     0x0011: 0x11,      #  DEVICE CONTROL ONE
     0x0012: 0x12,      #  DEVICE CONTROL TWO
@@ -319,12 +319,12 @@ encoding_map = {
     0x0017: 0x17,      #  END OF TRANSMISSION BLOCK
     0x0018: 0x18,      #  CANCEL
     0x0019: 0x19,      #  END OF MEDIUM
-    0x001a: 0x1a,      #  SUBSTITUTE
-    0x001b: 0x1b,      #  ESCAPE
-    0x001c: 0x1c,      #  FILE SEPARATOR
-    0x001d: 0x1d,      #  GROUP SEPARATOR
-    0x001e: 0x1e,      #  RECORD SEPARATOR
-    0x001f: 0x1f,      #  UNIT SEPARATOR
+    0x001A: 0x1A,      #  SUBSTITUTE
+    0x001B: 0x1B,      #  ESCAPE
+    0x001C: 0x1C,      #  FILE SEPARATOR
+    0x001D: 0x1D,      #  GROUP SEPARATOR
+    0x001E: 0x1E,      #  RECORD SEPARATOR
+    0x001F: 0x1F,      #  UNIT SEPARATOR
     0x0020: 0x20,      #  SPACE
     0x0021: 0x21,      #  EXCLAMATION MARK
     0x0022: 0x22,      #  QUOTATION MARK
@@ -335,12 +335,12 @@ encoding_map = {
     0x0027: 0x27,      #  APOSTROPHE
     0x0028: 0x28,      #  LEFT PARENTHESIS
     0x0029: 0x29,      #  RIGHT PARENTHESIS
-    0x002a: 0x2a,      #  ASTERISK
-    0x002b: 0x2b,      #  PLUS SIGN
-    0x002c: 0x2c,      #  COMMA
-    0x002d: 0x2d,      #  HYPHEN-MINUS
-    0x002e: 0x2e,      #  FULL STOP
-    0x002f: 0x2f,      #  SOLIDUS
+    0x002A: 0x2A,      #  ASTERISK
+    0x002B: 0x2B,      #  PLUS SIGN
+    0x002C: 0x2C,      #  COMMA
+    0x002D: 0x2D,      #  HYPHEN-MINUS
+    0x002E: 0x2E,      #  FULL STOP
+    0x002F: 0x2F,      #  SOLIDUS
     0x0030: 0x30,      #  DIGIT ZERO
     0x0031: 0x31,      #  DIGIT ONE
     0x0032: 0x32,      #  DIGIT TWO
@@ -351,12 +351,12 @@ encoding_map = {
     0x0037: 0x37,      #  DIGIT SEVEN
     0x0038: 0x38,      #  DIGIT EIGHT
     0x0039: 0x39,      #  DIGIT NINE
-    0x003a: 0x3a,      #  COLON
-    0x003b: 0x3b,      #  SEMICOLON
-    0x003c: 0x3c,      #  LESS-THAN SIGN
-    0x003d: 0x3d,      #  EQUALS SIGN
-    0x003e: 0x3e,      #  GREATER-THAN SIGN
-    0x003f: 0x3f,      #  QUESTION MARK
+    0x003A: 0x3A,      #  COLON
+    0x003B: 0x3B,      #  SEMICOLON
+    0x003C: 0x3C,      #  LESS-THAN SIGN
+    0x003D: 0x3D,      #  EQUALS SIGN
+    0x003E: 0x3E,      #  GREATER-THAN SIGN
+    0x003F: 0x3F,      #  QUESTION MARK
     0x0040: 0x40,      #  COMMERCIAL AT
     0x0041: 0x41,      #  LATIN CAPITAL LETTER A
     0x0042: 0x42,      #  LATIN CAPITAL LETTER B
@@ -367,12 +367,12 @@ encoding_map = {
     0x0047: 0x47,      #  LATIN CAPITAL LETTER G
     0x0048: 0x48,      #  LATIN CAPITAL LETTER H
     0x0049: 0x49,      #  LATIN CAPITAL LETTER I
-    0x004a: 0x4a,      #  LATIN CAPITAL LETTER J
-    0x004b: 0x4b,      #  LATIN CAPITAL LETTER K
-    0x004c: 0x4c,      #  LATIN CAPITAL LETTER L
-    0x004d: 0x4d,      #  LATIN CAPITAL LETTER M
-    0x004e: 0x4e,      #  LATIN CAPITAL LETTER N
-    0x004f: 0x4f,      #  LATIN CAPITAL LETTER O
+    0x004A: 0x4A,      #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,      #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,      #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,      #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,      #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,      #  LATIN CAPITAL LETTER O
     0x0050: 0x50,      #  LATIN CAPITAL LETTER P
     0x0051: 0x51,      #  LATIN CAPITAL LETTER Q
     0x0052: 0x52,      #  LATIN CAPITAL LETTER R
@@ -383,12 +383,12 @@ encoding_map = {
     0x0057: 0x57,      #  LATIN CAPITAL LETTER W
     0x0058: 0x58,      #  LATIN CAPITAL LETTER X
     0x0059: 0x59,      #  LATIN CAPITAL LETTER Y
-    0x005a: 0x5a,      #  LATIN CAPITAL LETTER Z
-    0x005b: 0x5b,      #  LEFT SQUARE BRACKET
-    0x005c: 0x5c,      #  REVERSE SOLIDUS
-    0x005d: 0x5d,      #  RIGHT SQUARE BRACKET
-    0x005e: 0x5e,      #  CIRCUMFLEX ACCENT
-    0x005f: 0x5f,      #  LOW LINE
+    0x005A: 0x5A,      #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,      #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,      #  REVERSE SOLIDUS
+    0x005D: 0x5D,      #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,      #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,      #  LOW LINE
     0x0060: 0x60,      #  GRAVE ACCENT
     0x0061: 0x61,      #  LATIN SMALL LETTER A
     0x0062: 0x62,      #  LATIN SMALL LETTER B
@@ -399,12 +399,12 @@ encoding_map = {
     0x0067: 0x67,      #  LATIN SMALL LETTER G
     0x0068: 0x68,      #  LATIN SMALL LETTER H
     0x0069: 0x69,      #  LATIN SMALL LETTER I
-    0x006a: 0x6a,      #  LATIN SMALL LETTER J
-    0x006b: 0x6b,      #  LATIN SMALL LETTER K
-    0x006c: 0x6c,      #  LATIN SMALL LETTER L
-    0x006d: 0x6d,      #  LATIN SMALL LETTER M
-    0x006e: 0x6e,      #  LATIN SMALL LETTER N
-    0x006f: 0x6f,      #  LATIN SMALL LETTER O
+    0x006A: 0x6A,      #  LATIN SMALL LETTER J
+    0x006B: 0x6B,      #  LATIN SMALL LETTER K
+    0x006C: 0x6C,      #  LATIN SMALL LETTER L
+    0x006D: 0x6D,      #  LATIN SMALL LETTER M
+    0x006E: 0x6E,      #  LATIN SMALL LETTER N
+    0x006F: 0x6F,      #  LATIN SMALL LETTER O
     0x0070: 0x70,      #  LATIN SMALL LETTER P
     0x0071: 0x71,      #  LATIN SMALL LETTER Q
     0x0072: 0x72,      #  LATIN SMALL LETTER R
@@ -415,12 +415,12 @@ encoding_map = {
     0x0077: 0x77,      #  LATIN SMALL LETTER W
     0x0078: 0x78,      #  LATIN SMALL LETTER X
     0x0079: 0x79,      #  LATIN SMALL LETTER Y
-    0x007a: 0x7a,      #  LATIN SMALL LETTER Z
-    0x007b: 0x7b,      #  LEFT CURLY BRACKET
-    0x007c: 0x7c,      #  VERTICAL LINE
-    0x007d: 0x7d,      #  RIGHT CURLY BRACKET
-    0x007e: 0x7e,      #  TILDE
-    0x007f: 0x7f,      #  DELETE
+    0x007A: 0x7A,      #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,      #  LEFT CURLY BRACKET
+    0x007C: 0x7C,      #  VERTICAL LINE
+    0x007D: 0x7D,      #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,      #  TILDE
+    0x007F: 0x7F,      #  DELETE
     0x0080: 0x80,      #  <control>
     0x0081: 0x81,      #  <control>
     0x0082: 0x82,      #  <control>
@@ -431,12 +431,12 @@ encoding_map = {
     0x0087: 0x87,      #  <control>
     0x0088: 0x88,      #  <control>
     0x0089: 0x89,      #  <control>
-    0x008a: 0x8a,      #  <control>
-    0x008b: 0x8b,      #  <control>
-    0x008c: 0x8c,      #  <control>
-    0x008d: 0x8d,      #  <control>
-    0x008e: 0x8e,      #  <control>
-    0x008f: 0x8f,      #  <control>
+    0x008A: 0x8A,      #  <control>
+    0x008B: 0x8B,      #  <control>
+    0x008C: 0x8C,      #  <control>
+    0x008D: 0x8D,      #  <control>
+    0x008E: 0x8E,      #  <control>
+    0x008F: 0x8F,      #  <control>
     0x0090: 0x90,      #  <control>
     0x0091: 0x91,      #  <control>
     0x0092: 0x92,      #  <control>
@@ -447,97 +447,98 @@ encoding_map = {
     0x0097: 0x97,      #  <control>
     0x0098: 0x98,      #  <control>
     0x0099: 0x99,      #  <control>
-    0x009a: 0x9a,      #  <control>
-    0x009b: 0x9b,      #  <control>
-    0x009c: 0x9c,      #  <control>
-    0x009d: 0x9d,      #  <control>
-    0x009e: 0x9e,      #  <control>
-    0x009f: 0x9f,      #  <control>
-    0x0e01: 0xa1,      #  THAI CHARACTER KO KAI
-    0x0e02: 0xa2,      #  THAI CHARACTER KHO KHAI
-    0x0e03: 0xa3,      #  THAI CHARACTER KHO KHUAT
-    0x0e04: 0xa4,      #  THAI CHARACTER KHO KHWAI
-    0x0e05: 0xa5,      #  THAI CHARACTER KHO KHON
-    0x0e06: 0xa6,      #  THAI CHARACTER KHO RAKHANG
-    0x0e07: 0xa7,      #  THAI CHARACTER NGO NGU
-    0x0e08: 0xa8,      #  THAI CHARACTER CHO CHAN
-    0x0e09: 0xa9,      #  THAI CHARACTER CHO CHING
-    0x0e0a: 0xaa,      #  THAI CHARACTER CHO CHANG
-    0x0e0b: 0xab,      #  THAI CHARACTER SO SO
-    0x0e0c: 0xac,      #  THAI CHARACTER CHO CHOE
-    0x0e0d: 0xad,      #  THAI CHARACTER YO YING
-    0x0e0e: 0xae,      #  THAI CHARACTER DO CHADA
-    0x0e0f: 0xaf,      #  THAI CHARACTER TO PATAK
-    0x0e10: 0xb0,      #  THAI CHARACTER THO THAN
-    0x0e11: 0xb1,      #  THAI CHARACTER THO NANGMONTHO
-    0x0e12: 0xb2,      #  THAI CHARACTER THO PHUTHAO
-    0x0e13: 0xb3,      #  THAI CHARACTER NO NEN
-    0x0e14: 0xb4,      #  THAI CHARACTER DO DEK
-    0x0e15: 0xb5,      #  THAI CHARACTER TO TAO
-    0x0e16: 0xb6,      #  THAI CHARACTER THO THUNG
-    0x0e17: 0xb7,      #  THAI CHARACTER THO THAHAN
-    0x0e18: 0xb8,      #  THAI CHARACTER THO THONG
-    0x0e19: 0xb9,      #  THAI CHARACTER NO NU
-    0x0e1a: 0xba,      #  THAI CHARACTER BO BAIMAI
-    0x0e1b: 0xbb,      #  THAI CHARACTER PO PLA
-    0x0e1c: 0xbc,      #  THAI CHARACTER PHO PHUNG
-    0x0e1d: 0xbd,      #  THAI CHARACTER FO FA
-    0x0e1e: 0xbe,      #  THAI CHARACTER PHO PHAN
-    0x0e1f: 0xbf,      #  THAI CHARACTER FO FAN
-    0x0e20: 0xc0,      #  THAI CHARACTER PHO SAMPHAO
-    0x0e21: 0xc1,      #  THAI CHARACTER MO MA
-    0x0e22: 0xc2,      #  THAI CHARACTER YO YAK
-    0x0e23: 0xc3,      #  THAI CHARACTER RO RUA
-    0x0e24: 0xc4,      #  THAI CHARACTER RU
-    0x0e25: 0xc5,      #  THAI CHARACTER LO LING
-    0x0e26: 0xc6,      #  THAI CHARACTER LU
-    0x0e27: 0xc7,      #  THAI CHARACTER WO WAEN
-    0x0e28: 0xc8,      #  THAI CHARACTER SO SALA
-    0x0e29: 0xc9,      #  THAI CHARACTER SO RUSI
-    0x0e2a: 0xca,      #  THAI CHARACTER SO SUA
-    0x0e2b: 0xcb,      #  THAI CHARACTER HO HIP
-    0x0e2c: 0xcc,      #  THAI CHARACTER LO CHULA
-    0x0e2d: 0xcd,      #  THAI CHARACTER O ANG
-    0x0e2e: 0xce,      #  THAI CHARACTER HO NOKHUK
-    0x0e2f: 0xcf,      #  THAI CHARACTER PAIYANNOI
-    0x0e30: 0xd0,      #  THAI CHARACTER SARA A
-    0x0e31: 0xd1,      #  THAI CHARACTER MAI HAN-AKAT
-    0x0e32: 0xd2,      #  THAI CHARACTER SARA AA
-    0x0e33: 0xd3,      #  THAI CHARACTER SARA AM
-    0x0e34: 0xd4,      #  THAI CHARACTER SARA I
-    0x0e35: 0xd5,      #  THAI CHARACTER SARA II
-    0x0e36: 0xd6,      #  THAI CHARACTER SARA UE
-    0x0e37: 0xd7,      #  THAI CHARACTER SARA UEE
-    0x0e38: 0xd8,      #  THAI CHARACTER SARA U
-    0x0e39: 0xd9,      #  THAI CHARACTER SARA UU
-    0x0e3a: 0xda,      #  THAI CHARACTER PHINTHU
-    0x0e3f: 0xdf,      #  THAI CURRENCY SYMBOL BAHT
-    0x0e40: 0xe0,      #  THAI CHARACTER SARA E
-    0x0e41: 0xe1,      #  THAI CHARACTER SARA AE
-    0x0e42: 0xe2,      #  THAI CHARACTER SARA O
-    0x0e43: 0xe3,      #  THAI CHARACTER SARA AI MAIMUAN
-    0x0e44: 0xe4,      #  THAI CHARACTER SARA AI MAIMALAI
-    0x0e45: 0xe5,      #  THAI CHARACTER LAKKHANGYAO
-    0x0e46: 0xe6,      #  THAI CHARACTER MAIYAMOK
-    0x0e47: 0xe7,      #  THAI CHARACTER MAITAIKHU
-    0x0e48: 0xe8,      #  THAI CHARACTER MAI EK
-    0x0e49: 0xe9,      #  THAI CHARACTER MAI THO
-    0x0e4a: 0xea,      #  THAI CHARACTER MAI TRI
-    0x0e4b: 0xeb,      #  THAI CHARACTER MAI CHATTAWA
-    0x0e4c: 0xec,      #  THAI CHARACTER THANTHAKHAT
-    0x0e4d: 0xed,      #  THAI CHARACTER NIKHAHIT
-    0x0e4e: 0xee,      #  THAI CHARACTER YAMAKKAN
-    0x0e4f: 0xef,      #  THAI CHARACTER FONGMAN
-    0x0e50: 0xf0,      #  THAI DIGIT ZERO
-    0x0e51: 0xf1,      #  THAI DIGIT ONE
-    0x0e52: 0xf2,      #  THAI DIGIT TWO
-    0x0e53: 0xf3,      #  THAI DIGIT THREE
-    0x0e54: 0xf4,      #  THAI DIGIT FOUR
-    0x0e55: 0xf5,      #  THAI DIGIT FIVE
-    0x0e56: 0xf6,      #  THAI DIGIT SIX
-    0x0e57: 0xf7,      #  THAI DIGIT SEVEN
-    0x0e58: 0xf8,      #  THAI DIGIT EIGHT
-    0x0e59: 0xf9,      #  THAI DIGIT NINE
-    0x0e5a: 0xfa,      #  THAI CHARACTER ANGKHANKHU
-    0x0e5b: 0xfb,      #  THAI CHARACTER KHOMUT
-}
\ No newline at end of file
+    0x009A: 0x9A,      #  <control>
+    0x009B: 0x9B,      #  <control>
+    0x009C: 0x9C,      #  <control>
+    0x009D: 0x9D,      #  <control>
+    0x009E: 0x9E,      #  <control>
+    0x009F: 0x9F,      #  <control>
+    0x0E01: 0xA1,      #  THAI CHARACTER KO KAI
+    0x0E02: 0xA2,      #  THAI CHARACTER KHO KHAI
+    0x0E03: 0xA3,      #  THAI CHARACTER KHO KHUAT
+    0x0E04: 0xA4,      #  THAI CHARACTER KHO KHWAI
+    0x0E05: 0xA5,      #  THAI CHARACTER KHO KHON
+    0x0E06: 0xA6,      #  THAI CHARACTER KHO RAKHANG
+    0x0E07: 0xA7,      #  THAI CHARACTER NGO NGU
+    0x0E08: 0xA8,      #  THAI CHARACTER CHO CHAN
+    0x0E09: 0xA9,      #  THAI CHARACTER CHO CHING
+    0x0E0A: 0xAA,      #  THAI CHARACTER CHO CHANG
+    0x0E0B: 0xAB,      #  THAI CHARACTER SO SO
+    0x0E0C: 0xAC,      #  THAI CHARACTER CHO CHOE
+    0x0E0D: 0xAD,      #  THAI CHARACTER YO YING
+    0x0E0E: 0xAE,      #  THAI CHARACTER DO CHADA
+    0x0E0F: 0xAF,      #  THAI CHARACTER TO PATAK
+    0x0E10: 0xB0,      #  THAI CHARACTER THO THAN
+    0x0E11: 0xB1,      #  THAI CHARACTER THO NANGMONTHO
+    0x0E12: 0xB2,      #  THAI CHARACTER THO PHUTHAO
+    0x0E13: 0xB3,      #  THAI CHARACTER NO NEN
+    0x0E14: 0xB4,      #  THAI CHARACTER DO DEK
+    0x0E15: 0xB5,      #  THAI CHARACTER TO TAO
+    0x0E16: 0xB6,      #  THAI CHARACTER THO THUNG
+    0x0E17: 0xB7,      #  THAI CHARACTER THO THAHAN
+    0x0E18: 0xB8,      #  THAI CHARACTER THO THONG
+    0x0E19: 0xB9,      #  THAI CHARACTER NO NU
+    0x0E1A: 0xBA,      #  THAI CHARACTER BO BAIMAI
+    0x0E1B: 0xBB,      #  THAI CHARACTER PO PLA
+    0x0E1C: 0xBC,      #  THAI CHARACTER PHO PHUNG
+    0x0E1D: 0xBD,      #  THAI CHARACTER FO FA
+    0x0E1E: 0xBE,      #  THAI CHARACTER PHO PHAN
+    0x0E1F: 0xBF,      #  THAI CHARACTER FO FAN
+    0x0E20: 0xC0,      #  THAI CHARACTER PHO SAMPHAO
+    0x0E21: 0xC1,      #  THAI CHARACTER MO MA
+    0x0E22: 0xC2,      #  THAI CHARACTER YO YAK
+    0x0E23: 0xC3,      #  THAI CHARACTER RO RUA
+    0x0E24: 0xC4,      #  THAI CHARACTER RU
+    0x0E25: 0xC5,      #  THAI CHARACTER LO LING
+    0x0E26: 0xC6,      #  THAI CHARACTER LU
+    0x0E27: 0xC7,      #  THAI CHARACTER WO WAEN
+    0x0E28: 0xC8,      #  THAI CHARACTER SO SALA
+    0x0E29: 0xC9,      #  THAI CHARACTER SO RUSI
+    0x0E2A: 0xCA,      #  THAI CHARACTER SO SUA
+    0x0E2B: 0xCB,      #  THAI CHARACTER HO HIP
+    0x0E2C: 0xCC,      #  THAI CHARACTER LO CHULA
+    0x0E2D: 0xCD,      #  THAI CHARACTER O ANG
+    0x0E2E: 0xCE,      #  THAI CHARACTER HO NOKHUK
+    0x0E2F: 0xCF,      #  THAI CHARACTER PAIYANNOI
+    0x0E30: 0xD0,      #  THAI CHARACTER SARA A
+    0x0E31: 0xD1,      #  THAI CHARACTER MAI HAN-AKAT
+    0x0E32: 0xD2,      #  THAI CHARACTER SARA AA
+    0x0E33: 0xD3,      #  THAI CHARACTER SARA AM
+    0x0E34: 0xD4,      #  THAI CHARACTER SARA I
+    0x0E35: 0xD5,      #  THAI CHARACTER SARA II
+    0x0E36: 0xD6,      #  THAI CHARACTER SARA UE
+    0x0E37: 0xD7,      #  THAI CHARACTER SARA UEE
+    0x0E38: 0xD8,      #  THAI CHARACTER SARA U
+    0x0E39: 0xD9,      #  THAI CHARACTER SARA UU
+    0x0E3A: 0xDA,      #  THAI CHARACTER PHINTHU
+    0x0E3F: 0xDF,      #  THAI CURRENCY SYMBOL BAHT
+    0x0E40: 0xE0,      #  THAI CHARACTER SARA E
+    0x0E41: 0xE1,      #  THAI CHARACTER SARA AE
+    0x0E42: 0xE2,      #  THAI CHARACTER SARA O
+    0x0E43: 0xE3,      #  THAI CHARACTER SARA AI MAIMUAN
+    0x0E44: 0xE4,      #  THAI CHARACTER SARA AI MAIMALAI
+    0x0E45: 0xE5,      #  THAI CHARACTER LAKKHANGYAO
+    0x0E46: 0xE6,      #  THAI CHARACTER MAIYAMOK
+    0x0E47: 0xE7,      #  THAI CHARACTER MAITAIKHU
+    0x0E48: 0xE8,      #  THAI CHARACTER MAI EK
+    0x0E49: 0xE9,      #  THAI CHARACTER MAI THO
+    0x0E4A: 0xEA,      #  THAI CHARACTER MAI TRI
+    0x0E4B: 0xEB,      #  THAI CHARACTER MAI CHATTAWA
+    0x0E4C: 0xEC,      #  THAI CHARACTER THANTHAKHAT
+    0x0E4D: 0xED,      #  THAI CHARACTER NIKHAHIT
+    0x0E4E: 0xEE,      #  THAI CHARACTER YAMAKKAN
+    0x0E4F: 0xEF,      #  THAI CHARACTER FONGMAN
+    0x0E50: 0xF0,      #  THAI DIGIT ZERO
+    0x0E51: 0xF1,      #  THAI DIGIT ONE
+    0x0E52: 0xF2,      #  THAI DIGIT TWO
+    0x0E53: 0xF3,      #  THAI DIGIT THREE
+    0x0E54: 0xF4,      #  THAI DIGIT FOUR
+    0x0E55: 0xF5,      #  THAI DIGIT FIVE
+    0x0E56: 0xF6,      #  THAI DIGIT SIX
+    0x0E57: 0xF7,      #  THAI DIGIT SEVEN
+    0x0E58: 0xF8,      #  THAI DIGIT EIGHT
+    0x0E59: 0xF9,      #  THAI DIGIT NINE
+    0x0E5A: 0xFA,      #  THAI CHARACTER ANGKHANKHU
+    0x0E5B: 0xFB,      #  THAI CHARACTER KHOMUT
+}
+