diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## 0.7.0 (September 2025)
+
+- Updated to [Unicode 16.0.0](https://www.unicode.org/versions/Unicode16.0.0/).
+
 ## 0.6.0 (July 2024)
 
 - Updated to [Unicode 15.1.0](https://www.unicode.org/versions/Unicode15.1.0/).
@@ -22,17 +26,17 @@
 
 ## 0.5.0 (July 2024)
 
-- Fix the inlining of `Addr#` literals and reduce their size. This results in
+- Fixed the inlining of `Addr#` literals and reduce their size. This results in
   a sensible decrease of the executable size.
 - Changed `integerValue` from `Char -> Maybe Int` to `(Integral a) => Char -> Maybe a`.
 
 ## 0.4.0.1 (December 2022)
 
-- Fix [Unicode blocks handling on big-endian architectures](https://github.com/composewell/unicode-data/issues/97).
+- Fixed [Unicode blocks handling on big-endian architectures](https://github.com/composewell/unicode-data/issues/97).
 
 ## 0.4.0 (September 2022)
 
-- Update to [Unicode 15.0.0](https://www.unicode.org/versions/Unicode15.0.0/).
+- Updated to [Unicode 15.0.0](https://www.unicode.org/versions/Unicode15.0.0/).
 
 ## 0.3.1 (September 2022)
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
 The Haskell data structures are generated programmatically from the
 [Unicode character database](https://www.unicode.org/ucd/) (UCD) files.
 The latest Unicode version supported by this library is
-[`15.1.0`](https://www.unicode.org/versions/Unicode15.1.0/).
+[`16.0.0`](https://www.unicode.org/versions/Unicode16.0.0/).
 
 Please see the
 [Haddock documentation](https://hackage.haskell.org/package/unicode-data)
diff --git a/lib/Unicode/Char.hs b/lib/Unicode/Char.hs
--- a/lib/Unicode/Char.hs
+++ b/lib/Unicode/Char.hs
@@ -7,7 +7,7 @@
 --
 -- This module provides APIs to access the Unicode character database (UCD)
 -- corresponding to [Unicode Standard version
--- 15.1.0](https://www.unicode.org/versions/Unicode15.1.0/).
+-- 16.0.0](https://www.unicode.org/versions/Unicode16.0.0/).
 --
 -- This module re-exports several sub-modules under it.  The sub-module
 -- structure under `Unicode.Char` is largely based on the
diff --git a/lib/Unicode/Char/General/Blocks.hs b/lib/Unicode/Char/General/Blocks.hs
--- a/lib/Unicode/Char/General/Blocks.hs
+++ b/lib/Unicode/Char/General/Blocks.hs
@@ -1,7 +1,3 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ViewPatterns #-}
-{-# LANGUAGE DeriveGeneric #-}
-
 -- |
 -- Module      : Unicode.Char.General.Blocks
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
diff --git a/lib/Unicode/Internal/Char/Blocks.hs b/lib/Unicode/Internal/Char/Blocks.hs
--- a/lib/Unicode/Internal/Char/Blocks.hs
+++ b/lib/Unicode/Internal/Char/Blocks.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/Blocks.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/Blocks.txt
 -- |
 -- Module      : Unicode.Internal.Char.Blocks
 -- Copyright   : (c) 2022 Composewell Technologies and Contributors
@@ -19,7 +19,7 @@
 
 -- | Unicode [block](https://www.unicode.org/glossary/#block).
 --
--- There is a total of 328 blocks.
+-- There is a total of 338 blocks.
 --
 -- @since 0.3.1
 data Block
@@ -208,6 +208,7 @@
     | Elbasan -- ^ @U+10500..U+1052F@: Elbasan.
     | CaucasianAlbanian -- ^ @U+10530..U+1056F@: Caucasian Albanian.
     | Vithkuqi -- ^ @U+10570..U+105BF@: Vithkuqi.
+    | Todhri -- ^ @U+105C0..U+105FF@: Todhri.
     | LinearA -- ^ @U+10600..U+1077F@: Linear A.
     | LatinExtendedF -- ^ @U+10780..U+107BF@: Latin Extended-F.
     | CypriotSyllabary -- ^ @U+10800..U+1083F@: Cypriot Syllabary.
@@ -230,6 +231,7 @@
     | OldTurkic -- ^ @U+10C00..U+10C4F@: Old Turkic.
     | OldHungarian -- ^ @U+10C80..U+10CFF@: Old Hungarian.
     | HanifiRohingya -- ^ @U+10D00..U+10D3F@: Hanifi Rohingya.
+    | Garay -- ^ @U+10D40..U+10D8F@: Garay.
     | RumiNumeralSymbols -- ^ @U+10E60..U+10E7F@: Rumi Numeral Symbols.
     | Yezidi -- ^ @U+10E80..U+10EBF@: Yezidi.
     | ArabicExtendedC -- ^ @U+10EC0..U+10EFF@: Arabic Extended-C.
@@ -249,12 +251,14 @@
     | Multani -- ^ @U+11280..U+112AF@: Multani.
     | Khudawadi -- ^ @U+112B0..U+112FF@: Khudawadi.
     | Grantha -- ^ @U+11300..U+1137F@: Grantha.
+    | TuluTigalari -- ^ @U+11380..U+113FF@: Tulu-Tigalari.
     | Newa -- ^ @U+11400..U+1147F@: Newa.
     | Tirhuta -- ^ @U+11480..U+114DF@: Tirhuta.
     | Siddham -- ^ @U+11580..U+115FF@: Siddham.
     | Modi -- ^ @U+11600..U+1165F@: Modi.
     | MongolianSupplement -- ^ @U+11660..U+1167F@: Mongolian Supplement.
     | Takri -- ^ @U+11680..U+116CF@: Takri.
+    | MyanmarExtendedC -- ^ @U+116D0..U+116FF@: Myanmar Extended-C.
     | Ahom -- ^ @U+11700..U+1174F@: Ahom.
     | Dogra -- ^ @U+11800..U+1184F@: Dogra.
     | WarangCiti -- ^ @U+118A0..U+118FF@: Warang Citi.
@@ -265,6 +269,7 @@
     | UnifiedCanadianAboriginalSyllabicsExtendedA -- ^ @U+11AB0..U+11ABF@: Unified Canadian Aboriginal Syllabics Extended-A.
     | PauCinHau -- ^ @U+11AC0..U+11AFF@: Pau Cin Hau.
     | DevanagariExtendedA -- ^ @U+11B00..U+11B5F@: Devanagari Extended-A.
+    | Sunuwar -- ^ @U+11BC0..U+11BFF@: Sunuwar.
     | Bhaiksuki -- ^ @U+11C00..U+11C6F@: Bhaiksuki.
     | Marchen -- ^ @U+11C70..U+11CBF@: Marchen.
     | MasaramGondi -- ^ @U+11D00..U+11D5F@: Masaram Gondi.
@@ -279,12 +284,15 @@
     | CyproMinoan -- ^ @U+12F90..U+12FFF@: Cypro-Minoan.
     | EgyptianHieroglyphs -- ^ @U+13000..U+1342F@: Egyptian Hieroglyphs.
     | EgyptianHieroglyphFormatControls -- ^ @U+13430..U+1345F@: Egyptian Hieroglyph Format Controls.
+    | EgyptianHieroglyphsExtendedA -- ^ @U+13460..U+143FF@: Egyptian Hieroglyphs Extended-A.
     | AnatolianHieroglyphs -- ^ @U+14400..U+1467F@: Anatolian Hieroglyphs.
+    | GurungKhema -- ^ @U+16100..U+1613F@: Gurung Khema.
     | BamumSupplement -- ^ @U+16800..U+16A3F@: Bamum Supplement.
     | Mro -- ^ @U+16A40..U+16A6F@: Mro.
     | Tangsa -- ^ @U+16A70..U+16ACF@: Tangsa.
     | BassaVah -- ^ @U+16AD0..U+16AFF@: Bassa Vah.
     | PahawhHmong -- ^ @U+16B00..U+16B8F@: Pahawh Hmong.
+    | KiratRai -- ^ @U+16D40..U+16D7F@: Kirat Rai.
     | Medefaidrin -- ^ @U+16E40..U+16E9F@: Medefaidrin.
     | Miao -- ^ @U+16F00..U+16F9F@: Miao.
     | IdeographicSymbolsAndPunctuation -- ^ @U+16FE0..U+16FFF@: Ideographic Symbols and Punctuation.
@@ -299,6 +307,7 @@
     | Nushu -- ^ @U+1B170..U+1B2FF@: Nushu.
     | Duployan -- ^ @U+1BC00..U+1BC9F@: Duployan.
     | ShorthandFormatControls -- ^ @U+1BCA0..U+1BCAF@: Shorthand Format Controls.
+    | SymbolsForLegacyComputingSupplement -- ^ @U+1CC00..U+1CEBF@: Symbols for Legacy Computing Supplement.
     | ZnamennyMusicalNotation -- ^ @U+1CF00..U+1CFCF@: Znamenny Musical Notation.
     | ByzantineMusicalSymbols -- ^ @U+1D000..U+1D0FF@: Byzantine Musical Symbols.
     | MusicalSymbols -- ^ @U+1D100..U+1D1FF@: Musical Symbols.
@@ -316,6 +325,7 @@
     | Toto -- ^ @U+1E290..U+1E2BF@: Toto.
     | Wancho -- ^ @U+1E2C0..U+1E2FF@: Wancho.
     | NagMundari -- ^ @U+1E4D0..U+1E4FF@: Nag Mundari.
+    | OlOnal -- ^ @U+1E5D0..U+1E5FF@: Ol Onal.
     | EthiopicExtendedB -- ^ @U+1E7E0..U+1E7FF@: Ethiopic Extended-B.
     | MendeKikakui -- ^ @U+1E800..U+1E8DF@: Mende Kikakui.
     | Adlam -- ^ @U+1E900..U+1E95F@: Adlam.
@@ -355,7 +365,7 @@
 
 -- | Block definition
 --
--- Undefined for values greater than 327.
+-- Undefined for values greater than 337.
 --
 -- Returned value:
 --
@@ -551,155 +561,165 @@
     182# -> (# 0x10500#, 0x1052f#, "Elbasan\0"# #)
     183# -> (# 0x10530#, 0x1056f#, "Caucasian Albanian\0"# #)
     184# -> (# 0x10570#, 0x105bf#, "Vithkuqi\0"# #)
-    185# -> (# 0x10600#, 0x1077f#, "Linear A\0"# #)
-    186# -> (# 0x10780#, 0x107bf#, "Latin Extended-F\0"# #)
-    187# -> (# 0x10800#, 0x1083f#, "Cypriot Syllabary\0"# #)
-    188# -> (# 0x10840#, 0x1085f#, "Imperial Aramaic\0"# #)
-    189# -> (# 0x10860#, 0x1087f#, "Palmyrene\0"# #)
-    190# -> (# 0x10880#, 0x108af#, "Nabataean\0"# #)
-    191# -> (# 0x108e0#, 0x108ff#, "Hatran\0"# #)
-    192# -> (# 0x10900#, 0x1091f#, "Phoenician\0"# #)
-    193# -> (# 0x10920#, 0x1093f#, "Lydian\0"# #)
-    194# -> (# 0x10980#, 0x1099f#, "Meroitic Hieroglyphs\0"# #)
-    195# -> (# 0x109a0#, 0x109ff#, "Meroitic Cursive\0"# #)
-    196# -> (# 0x10a00#, 0x10a5f#, "Kharoshthi\0"# #)
-    197# -> (# 0x10a60#, 0x10a7f#, "Old South Arabian\0"# #)
-    198# -> (# 0x10a80#, 0x10a9f#, "Old North Arabian\0"# #)
-    199# -> (# 0x10ac0#, 0x10aff#, "Manichaean\0"# #)
-    200# -> (# 0x10b00#, 0x10b3f#, "Avestan\0"# #)
-    201# -> (# 0x10b40#, 0x10b5f#, "Inscriptional Parthian\0"# #)
-    202# -> (# 0x10b60#, 0x10b7f#, "Inscriptional Pahlavi\0"# #)
-    203# -> (# 0x10b80#, 0x10baf#, "Psalter Pahlavi\0"# #)
-    204# -> (# 0x10c00#, 0x10c4f#, "Old Turkic\0"# #)
-    205# -> (# 0x10c80#, 0x10cff#, "Old Hungarian\0"# #)
-    206# -> (# 0x10d00#, 0x10d3f#, "Hanifi Rohingya\0"# #)
-    207# -> (# 0x10e60#, 0x10e7f#, "Rumi Numeral Symbols\0"# #)
-    208# -> (# 0x10e80#, 0x10ebf#, "Yezidi\0"# #)
-    209# -> (# 0x10ec0#, 0x10eff#, "Arabic Extended-C\0"# #)
-    210# -> (# 0x10f00#, 0x10f2f#, "Old Sogdian\0"# #)
-    211# -> (# 0x10f30#, 0x10f6f#, "Sogdian\0"# #)
-    212# -> (# 0x10f70#, 0x10faf#, "Old Uyghur\0"# #)
-    213# -> (# 0x10fb0#, 0x10fdf#, "Chorasmian\0"# #)
-    214# -> (# 0x10fe0#, 0x10fff#, "Elymaic\0"# #)
-    215# -> (# 0x11000#, 0x1107f#, "Brahmi\0"# #)
-    216# -> (# 0x11080#, 0x110cf#, "Kaithi\0"# #)
-    217# -> (# 0x110d0#, 0x110ff#, "Sora Sompeng\0"# #)
-    218# -> (# 0x11100#, 0x1114f#, "Chakma\0"# #)
-    219# -> (# 0x11150#, 0x1117f#, "Mahajani\0"# #)
-    220# -> (# 0x11180#, 0x111df#, "Sharada\0"# #)
-    221# -> (# 0x111e0#, 0x111ff#, "Sinhala Archaic Numbers\0"# #)
-    222# -> (# 0x11200#, 0x1124f#, "Khojki\0"# #)
-    223# -> (# 0x11280#, 0x112af#, "Multani\0"# #)
-    224# -> (# 0x112b0#, 0x112ff#, "Khudawadi\0"# #)
-    225# -> (# 0x11300#, 0x1137f#, "Grantha\0"# #)
-    226# -> (# 0x11400#, 0x1147f#, "Newa\0"# #)
-    227# -> (# 0x11480#, 0x114df#, "Tirhuta\0"# #)
-    228# -> (# 0x11580#, 0x115ff#, "Siddham\0"# #)
-    229# -> (# 0x11600#, 0x1165f#, "Modi\0"# #)
-    230# -> (# 0x11660#, 0x1167f#, "Mongolian Supplement\0"# #)
-    231# -> (# 0x11680#, 0x116cf#, "Takri\0"# #)
-    232# -> (# 0x11700#, 0x1174f#, "Ahom\0"# #)
-    233# -> (# 0x11800#, 0x1184f#, "Dogra\0"# #)
-    234# -> (# 0x118a0#, 0x118ff#, "Warang Citi\0"# #)
-    235# -> (# 0x11900#, 0x1195f#, "Dives Akuru\0"# #)
-    236# -> (# 0x119a0#, 0x119ff#, "Nandinagari\0"# #)
-    237# -> (# 0x11a00#, 0x11a4f#, "Zanabazar Square\0"# #)
-    238# -> (# 0x11a50#, 0x11aaf#, "Soyombo\0"# #)
-    239# -> (# 0x11ab0#, 0x11abf#, "Unified Canadian Aboriginal Syllabics Extended-A\0"# #)
-    240# -> (# 0x11ac0#, 0x11aff#, "Pau Cin Hau\0"# #)
-    241# -> (# 0x11b00#, 0x11b5f#, "Devanagari Extended-A\0"# #)
-    242# -> (# 0x11c00#, 0x11c6f#, "Bhaiksuki\0"# #)
-    243# -> (# 0x11c70#, 0x11cbf#, "Marchen\0"# #)
-    244# -> (# 0x11d00#, 0x11d5f#, "Masaram Gondi\0"# #)
-    245# -> (# 0x11d60#, 0x11daf#, "Gunjala Gondi\0"# #)
-    246# -> (# 0x11ee0#, 0x11eff#, "Makasar\0"# #)
-    247# -> (# 0x11f00#, 0x11f5f#, "Kawi\0"# #)
-    248# -> (# 0x11fb0#, 0x11fbf#, "Lisu Supplement\0"# #)
-    249# -> (# 0x11fc0#, 0x11fff#, "Tamil Supplement\0"# #)
-    250# -> (# 0x12000#, 0x123ff#, "Cuneiform\0"# #)
-    251# -> (# 0x12400#, 0x1247f#, "Cuneiform Numbers and Punctuation\0"# #)
-    252# -> (# 0x12480#, 0x1254f#, "Early Dynastic Cuneiform\0"# #)
-    253# -> (# 0x12f90#, 0x12fff#, "Cypro-Minoan\0"# #)
-    254# -> (# 0x13000#, 0x1342f#, "Egyptian Hieroglyphs\0"# #)
-    255# -> (# 0x13430#, 0x1345f#, "Egyptian Hieroglyph Format Controls\0"# #)
-    256# -> (# 0x14400#, 0x1467f#, "Anatolian Hieroglyphs\0"# #)
-    257# -> (# 0x16800#, 0x16a3f#, "Bamum Supplement\0"# #)
-    258# -> (# 0x16a40#, 0x16a6f#, "Mro\0"# #)
-    259# -> (# 0x16a70#, 0x16acf#, "Tangsa\0"# #)
-    260# -> (# 0x16ad0#, 0x16aff#, "Bassa Vah\0"# #)
-    261# -> (# 0x16b00#, 0x16b8f#, "Pahawh Hmong\0"# #)
-    262# -> (# 0x16e40#, 0x16e9f#, "Medefaidrin\0"# #)
-    263# -> (# 0x16f00#, 0x16f9f#, "Miao\0"# #)
-    264# -> (# 0x16fe0#, 0x16fff#, "Ideographic Symbols and Punctuation\0"# #)
-    265# -> (# 0x17000#, 0x187ff#, "Tangut\0"# #)
-    266# -> (# 0x18800#, 0x18aff#, "Tangut Components\0"# #)
-    267# -> (# 0x18b00#, 0x18cff#, "Khitan Small Script\0"# #)
-    268# -> (# 0x18d00#, 0x18d7f#, "Tangut Supplement\0"# #)
-    269# -> (# 0x1aff0#, 0x1afff#, "Kana Extended-B\0"# #)
-    270# -> (# 0x1b000#, 0x1b0ff#, "Kana Supplement\0"# #)
-    271# -> (# 0x1b100#, 0x1b12f#, "Kana Extended-A\0"# #)
-    272# -> (# 0x1b130#, 0x1b16f#, "Small Kana Extension\0"# #)
-    273# -> (# 0x1b170#, 0x1b2ff#, "Nushu\0"# #)
-    274# -> (# 0x1bc00#, 0x1bc9f#, "Duployan\0"# #)
-    275# -> (# 0x1bca0#, 0x1bcaf#, "Shorthand Format Controls\0"# #)
-    276# -> (# 0x1cf00#, 0x1cfcf#, "Znamenny Musical Notation\0"# #)
-    277# -> (# 0x1d000#, 0x1d0ff#, "Byzantine Musical Symbols\0"# #)
-    278# -> (# 0x1d100#, 0x1d1ff#, "Musical Symbols\0"# #)
-    279# -> (# 0x1d200#, 0x1d24f#, "Ancient Greek Musical Notation\0"# #)
-    280# -> (# 0x1d2c0#, 0x1d2df#, "Kaktovik Numerals\0"# #)
-    281# -> (# 0x1d2e0#, 0x1d2ff#, "Mayan Numerals\0"# #)
-    282# -> (# 0x1d300#, 0x1d35f#, "Tai Xuan Jing Symbols\0"# #)
-    283# -> (# 0x1d360#, 0x1d37f#, "Counting Rod Numerals\0"# #)
-    284# -> (# 0x1d400#, 0x1d7ff#, "Mathematical Alphanumeric Symbols\0"# #)
-    285# -> (# 0x1d800#, 0x1daaf#, "Sutton SignWriting\0"# #)
-    286# -> (# 0x1df00#, 0x1dfff#, "Latin Extended-G\0"# #)
-    287# -> (# 0x1e000#, 0x1e02f#, "Glagolitic Supplement\0"# #)
-    288# -> (# 0x1e030#, 0x1e08f#, "Cyrillic Extended-D\0"# #)
-    289# -> (# 0x1e100#, 0x1e14f#, "Nyiakeng Puachue Hmong\0"# #)
-    290# -> (# 0x1e290#, 0x1e2bf#, "Toto\0"# #)
-    291# -> (# 0x1e2c0#, 0x1e2ff#, "Wancho\0"# #)
-    292# -> (# 0x1e4d0#, 0x1e4ff#, "Nag Mundari\0"# #)
-    293# -> (# 0x1e7e0#, 0x1e7ff#, "Ethiopic Extended-B\0"# #)
-    294# -> (# 0x1e800#, 0x1e8df#, "Mende Kikakui\0"# #)
-    295# -> (# 0x1e900#, 0x1e95f#, "Adlam\0"# #)
-    296# -> (# 0x1ec70#, 0x1ecbf#, "Indic Siyaq Numbers\0"# #)
-    297# -> (# 0x1ed00#, 0x1ed4f#, "Ottoman Siyaq Numbers\0"# #)
-    298# -> (# 0x1ee00#, 0x1eeff#, "Arabic Mathematical Alphabetic Symbols\0"# #)
-    299# -> (# 0x1f000#, 0x1f02f#, "Mahjong Tiles\0"# #)
-    300# -> (# 0x1f030#, 0x1f09f#, "Domino Tiles\0"# #)
-    301# -> (# 0x1f0a0#, 0x1f0ff#, "Playing Cards\0"# #)
-    302# -> (# 0x1f100#, 0x1f1ff#, "Enclosed Alphanumeric Supplement\0"# #)
-    303# -> (# 0x1f200#, 0x1f2ff#, "Enclosed Ideographic Supplement\0"# #)
-    304# -> (# 0x1f300#, 0x1f5ff#, "Miscellaneous Symbols and Pictographs\0"# #)
-    305# -> (# 0x1f600#, 0x1f64f#, "Emoticons\0"# #)
-    306# -> (# 0x1f650#, 0x1f67f#, "Ornamental Dingbats\0"# #)
-    307# -> (# 0x1f680#, 0x1f6ff#, "Transport and Map Symbols\0"# #)
-    308# -> (# 0x1f700#, 0x1f77f#, "Alchemical Symbols\0"# #)
-    309# -> (# 0x1f780#, 0x1f7ff#, "Geometric Shapes Extended\0"# #)
-    310# -> (# 0x1f800#, 0x1f8ff#, "Supplemental Arrows-C\0"# #)
-    311# -> (# 0x1f900#, 0x1f9ff#, "Supplemental Symbols and Pictographs\0"# #)
-    312# -> (# 0x1fa00#, 0x1fa6f#, "Chess Symbols\0"# #)
-    313# -> (# 0x1fa70#, 0x1faff#, "Symbols and Pictographs Extended-A\0"# #)
-    314# -> (# 0x1fb00#, 0x1fbff#, "Symbols for Legacy Computing\0"# #)
-    315# -> (# 0x20000#, 0x2a6df#, "CJK Unified Ideographs Extension B\0"# #)
-    316# -> (# 0x2a700#, 0x2b73f#, "CJK Unified Ideographs Extension C\0"# #)
-    317# -> (# 0x2b740#, 0x2b81f#, "CJK Unified Ideographs Extension D\0"# #)
-    318# -> (# 0x2b820#, 0x2ceaf#, "CJK Unified Ideographs Extension E\0"# #)
-    319# -> (# 0x2ceb0#, 0x2ebef#, "CJK Unified Ideographs Extension F\0"# #)
-    320# -> (# 0x2ebf0#, 0x2ee5f#, "CJK Unified Ideographs Extension I\0"# #)
-    321# -> (# 0x2f800#, 0x2fa1f#, "CJK Compatibility Ideographs Supplement\0"# #)
-    322# -> (# 0x30000#, 0x3134f#, "CJK Unified Ideographs Extension G\0"# #)
-    323# -> (# 0x31350#, 0x323af#, "CJK Unified Ideographs Extension H\0"# #)
-    324# -> (# 0xe0000#, 0xe007f#, "Tags\0"# #)
-    325# -> (# 0xe0100#, 0xe01ef#, "Variation Selectors Supplement\0"# #)
-    326# -> (# 0xf0000#, 0xfffff#, "Supplementary Private Use Area-A\0"# #)
+    185# -> (# 0x105c0#, 0x105ff#, "Todhri\0"# #)
+    186# -> (# 0x10600#, 0x1077f#, "Linear A\0"# #)
+    187# -> (# 0x10780#, 0x107bf#, "Latin Extended-F\0"# #)
+    188# -> (# 0x10800#, 0x1083f#, "Cypriot Syllabary\0"# #)
+    189# -> (# 0x10840#, 0x1085f#, "Imperial Aramaic\0"# #)
+    190# -> (# 0x10860#, 0x1087f#, "Palmyrene\0"# #)
+    191# -> (# 0x10880#, 0x108af#, "Nabataean\0"# #)
+    192# -> (# 0x108e0#, 0x108ff#, "Hatran\0"# #)
+    193# -> (# 0x10900#, 0x1091f#, "Phoenician\0"# #)
+    194# -> (# 0x10920#, 0x1093f#, "Lydian\0"# #)
+    195# -> (# 0x10980#, 0x1099f#, "Meroitic Hieroglyphs\0"# #)
+    196# -> (# 0x109a0#, 0x109ff#, "Meroitic Cursive\0"# #)
+    197# -> (# 0x10a00#, 0x10a5f#, "Kharoshthi\0"# #)
+    198# -> (# 0x10a60#, 0x10a7f#, "Old South Arabian\0"# #)
+    199# -> (# 0x10a80#, 0x10a9f#, "Old North Arabian\0"# #)
+    200# -> (# 0x10ac0#, 0x10aff#, "Manichaean\0"# #)
+    201# -> (# 0x10b00#, 0x10b3f#, "Avestan\0"# #)
+    202# -> (# 0x10b40#, 0x10b5f#, "Inscriptional Parthian\0"# #)
+    203# -> (# 0x10b60#, 0x10b7f#, "Inscriptional Pahlavi\0"# #)
+    204# -> (# 0x10b80#, 0x10baf#, "Psalter Pahlavi\0"# #)
+    205# -> (# 0x10c00#, 0x10c4f#, "Old Turkic\0"# #)
+    206# -> (# 0x10c80#, 0x10cff#, "Old Hungarian\0"# #)
+    207# -> (# 0x10d00#, 0x10d3f#, "Hanifi Rohingya\0"# #)
+    208# -> (# 0x10d40#, 0x10d8f#, "Garay\0"# #)
+    209# -> (# 0x10e60#, 0x10e7f#, "Rumi Numeral Symbols\0"# #)
+    210# -> (# 0x10e80#, 0x10ebf#, "Yezidi\0"# #)
+    211# -> (# 0x10ec0#, 0x10eff#, "Arabic Extended-C\0"# #)
+    212# -> (# 0x10f00#, 0x10f2f#, "Old Sogdian\0"# #)
+    213# -> (# 0x10f30#, 0x10f6f#, "Sogdian\0"# #)
+    214# -> (# 0x10f70#, 0x10faf#, "Old Uyghur\0"# #)
+    215# -> (# 0x10fb0#, 0x10fdf#, "Chorasmian\0"# #)
+    216# -> (# 0x10fe0#, 0x10fff#, "Elymaic\0"# #)
+    217# -> (# 0x11000#, 0x1107f#, "Brahmi\0"# #)
+    218# -> (# 0x11080#, 0x110cf#, "Kaithi\0"# #)
+    219# -> (# 0x110d0#, 0x110ff#, "Sora Sompeng\0"# #)
+    220# -> (# 0x11100#, 0x1114f#, "Chakma\0"# #)
+    221# -> (# 0x11150#, 0x1117f#, "Mahajani\0"# #)
+    222# -> (# 0x11180#, 0x111df#, "Sharada\0"# #)
+    223# -> (# 0x111e0#, 0x111ff#, "Sinhala Archaic Numbers\0"# #)
+    224# -> (# 0x11200#, 0x1124f#, "Khojki\0"# #)
+    225# -> (# 0x11280#, 0x112af#, "Multani\0"# #)
+    226# -> (# 0x112b0#, 0x112ff#, "Khudawadi\0"# #)
+    227# -> (# 0x11300#, 0x1137f#, "Grantha\0"# #)
+    228# -> (# 0x11380#, 0x113ff#, "Tulu-Tigalari\0"# #)
+    229# -> (# 0x11400#, 0x1147f#, "Newa\0"# #)
+    230# -> (# 0x11480#, 0x114df#, "Tirhuta\0"# #)
+    231# -> (# 0x11580#, 0x115ff#, "Siddham\0"# #)
+    232# -> (# 0x11600#, 0x1165f#, "Modi\0"# #)
+    233# -> (# 0x11660#, 0x1167f#, "Mongolian Supplement\0"# #)
+    234# -> (# 0x11680#, 0x116cf#, "Takri\0"# #)
+    235# -> (# 0x116d0#, 0x116ff#, "Myanmar Extended-C\0"# #)
+    236# -> (# 0x11700#, 0x1174f#, "Ahom\0"# #)
+    237# -> (# 0x11800#, 0x1184f#, "Dogra\0"# #)
+    238# -> (# 0x118a0#, 0x118ff#, "Warang Citi\0"# #)
+    239# -> (# 0x11900#, 0x1195f#, "Dives Akuru\0"# #)
+    240# -> (# 0x119a0#, 0x119ff#, "Nandinagari\0"# #)
+    241# -> (# 0x11a00#, 0x11a4f#, "Zanabazar Square\0"# #)
+    242# -> (# 0x11a50#, 0x11aaf#, "Soyombo\0"# #)
+    243# -> (# 0x11ab0#, 0x11abf#, "Unified Canadian Aboriginal Syllabics Extended-A\0"# #)
+    244# -> (# 0x11ac0#, 0x11aff#, "Pau Cin Hau\0"# #)
+    245# -> (# 0x11b00#, 0x11b5f#, "Devanagari Extended-A\0"# #)
+    246# -> (# 0x11bc0#, 0x11bff#, "Sunuwar\0"# #)
+    247# -> (# 0x11c00#, 0x11c6f#, "Bhaiksuki\0"# #)
+    248# -> (# 0x11c70#, 0x11cbf#, "Marchen\0"# #)
+    249# -> (# 0x11d00#, 0x11d5f#, "Masaram Gondi\0"# #)
+    250# -> (# 0x11d60#, 0x11daf#, "Gunjala Gondi\0"# #)
+    251# -> (# 0x11ee0#, 0x11eff#, "Makasar\0"# #)
+    252# -> (# 0x11f00#, 0x11f5f#, "Kawi\0"# #)
+    253# -> (# 0x11fb0#, 0x11fbf#, "Lisu Supplement\0"# #)
+    254# -> (# 0x11fc0#, 0x11fff#, "Tamil Supplement\0"# #)
+    255# -> (# 0x12000#, 0x123ff#, "Cuneiform\0"# #)
+    256# -> (# 0x12400#, 0x1247f#, "Cuneiform Numbers and Punctuation\0"# #)
+    257# -> (# 0x12480#, 0x1254f#, "Early Dynastic Cuneiform\0"# #)
+    258# -> (# 0x12f90#, 0x12fff#, "Cypro-Minoan\0"# #)
+    259# -> (# 0x13000#, 0x1342f#, "Egyptian Hieroglyphs\0"# #)
+    260# -> (# 0x13430#, 0x1345f#, "Egyptian Hieroglyph Format Controls\0"# #)
+    261# -> (# 0x13460#, 0x143ff#, "Egyptian Hieroglyphs Extended-A\0"# #)
+    262# -> (# 0x14400#, 0x1467f#, "Anatolian Hieroglyphs\0"# #)
+    263# -> (# 0x16100#, 0x1613f#, "Gurung Khema\0"# #)
+    264# -> (# 0x16800#, 0x16a3f#, "Bamum Supplement\0"# #)
+    265# -> (# 0x16a40#, 0x16a6f#, "Mro\0"# #)
+    266# -> (# 0x16a70#, 0x16acf#, "Tangsa\0"# #)
+    267# -> (# 0x16ad0#, 0x16aff#, "Bassa Vah\0"# #)
+    268# -> (# 0x16b00#, 0x16b8f#, "Pahawh Hmong\0"# #)
+    269# -> (# 0x16d40#, 0x16d7f#, "Kirat Rai\0"# #)
+    270# -> (# 0x16e40#, 0x16e9f#, "Medefaidrin\0"# #)
+    271# -> (# 0x16f00#, 0x16f9f#, "Miao\0"# #)
+    272# -> (# 0x16fe0#, 0x16fff#, "Ideographic Symbols and Punctuation\0"# #)
+    273# -> (# 0x17000#, 0x187ff#, "Tangut\0"# #)
+    274# -> (# 0x18800#, 0x18aff#, "Tangut Components\0"# #)
+    275# -> (# 0x18b00#, 0x18cff#, "Khitan Small Script\0"# #)
+    276# -> (# 0x18d00#, 0x18d7f#, "Tangut Supplement\0"# #)
+    277# -> (# 0x1aff0#, 0x1afff#, "Kana Extended-B\0"# #)
+    278# -> (# 0x1b000#, 0x1b0ff#, "Kana Supplement\0"# #)
+    279# -> (# 0x1b100#, 0x1b12f#, "Kana Extended-A\0"# #)
+    280# -> (# 0x1b130#, 0x1b16f#, "Small Kana Extension\0"# #)
+    281# -> (# 0x1b170#, 0x1b2ff#, "Nushu\0"# #)
+    282# -> (# 0x1bc00#, 0x1bc9f#, "Duployan\0"# #)
+    283# -> (# 0x1bca0#, 0x1bcaf#, "Shorthand Format Controls\0"# #)
+    284# -> (# 0x1cc00#, 0x1cebf#, "Symbols for Legacy Computing Supplement\0"# #)
+    285# -> (# 0x1cf00#, 0x1cfcf#, "Znamenny Musical Notation\0"# #)
+    286# -> (# 0x1d000#, 0x1d0ff#, "Byzantine Musical Symbols\0"# #)
+    287# -> (# 0x1d100#, 0x1d1ff#, "Musical Symbols\0"# #)
+    288# -> (# 0x1d200#, 0x1d24f#, "Ancient Greek Musical Notation\0"# #)
+    289# -> (# 0x1d2c0#, 0x1d2df#, "Kaktovik Numerals\0"# #)
+    290# -> (# 0x1d2e0#, 0x1d2ff#, "Mayan Numerals\0"# #)
+    291# -> (# 0x1d300#, 0x1d35f#, "Tai Xuan Jing Symbols\0"# #)
+    292# -> (# 0x1d360#, 0x1d37f#, "Counting Rod Numerals\0"# #)
+    293# -> (# 0x1d400#, 0x1d7ff#, "Mathematical Alphanumeric Symbols\0"# #)
+    294# -> (# 0x1d800#, 0x1daaf#, "Sutton SignWriting\0"# #)
+    295# -> (# 0x1df00#, 0x1dfff#, "Latin Extended-G\0"# #)
+    296# -> (# 0x1e000#, 0x1e02f#, "Glagolitic Supplement\0"# #)
+    297# -> (# 0x1e030#, 0x1e08f#, "Cyrillic Extended-D\0"# #)
+    298# -> (# 0x1e100#, 0x1e14f#, "Nyiakeng Puachue Hmong\0"# #)
+    299# -> (# 0x1e290#, 0x1e2bf#, "Toto\0"# #)
+    300# -> (# 0x1e2c0#, 0x1e2ff#, "Wancho\0"# #)
+    301# -> (# 0x1e4d0#, 0x1e4ff#, "Nag Mundari\0"# #)
+    302# -> (# 0x1e5d0#, 0x1e5ff#, "Ol Onal\0"# #)
+    303# -> (# 0x1e7e0#, 0x1e7ff#, "Ethiopic Extended-B\0"# #)
+    304# -> (# 0x1e800#, 0x1e8df#, "Mende Kikakui\0"# #)
+    305# -> (# 0x1e900#, 0x1e95f#, "Adlam\0"# #)
+    306# -> (# 0x1ec70#, 0x1ecbf#, "Indic Siyaq Numbers\0"# #)
+    307# -> (# 0x1ed00#, 0x1ed4f#, "Ottoman Siyaq Numbers\0"# #)
+    308# -> (# 0x1ee00#, 0x1eeff#, "Arabic Mathematical Alphabetic Symbols\0"# #)
+    309# -> (# 0x1f000#, 0x1f02f#, "Mahjong Tiles\0"# #)
+    310# -> (# 0x1f030#, 0x1f09f#, "Domino Tiles\0"# #)
+    311# -> (# 0x1f0a0#, 0x1f0ff#, "Playing Cards\0"# #)
+    312# -> (# 0x1f100#, 0x1f1ff#, "Enclosed Alphanumeric Supplement\0"# #)
+    313# -> (# 0x1f200#, 0x1f2ff#, "Enclosed Ideographic Supplement\0"# #)
+    314# -> (# 0x1f300#, 0x1f5ff#, "Miscellaneous Symbols and Pictographs\0"# #)
+    315# -> (# 0x1f600#, 0x1f64f#, "Emoticons\0"# #)
+    316# -> (# 0x1f650#, 0x1f67f#, "Ornamental Dingbats\0"# #)
+    317# -> (# 0x1f680#, 0x1f6ff#, "Transport and Map Symbols\0"# #)
+    318# -> (# 0x1f700#, 0x1f77f#, "Alchemical Symbols\0"# #)
+    319# -> (# 0x1f780#, 0x1f7ff#, "Geometric Shapes Extended\0"# #)
+    320# -> (# 0x1f800#, 0x1f8ff#, "Supplemental Arrows-C\0"# #)
+    321# -> (# 0x1f900#, 0x1f9ff#, "Supplemental Symbols and Pictographs\0"# #)
+    322# -> (# 0x1fa00#, 0x1fa6f#, "Chess Symbols\0"# #)
+    323# -> (# 0x1fa70#, 0x1faff#, "Symbols and Pictographs Extended-A\0"# #)
+    324# -> (# 0x1fb00#, 0x1fbff#, "Symbols for Legacy Computing\0"# #)
+    325# -> (# 0x20000#, 0x2a6df#, "CJK Unified Ideographs Extension B\0"# #)
+    326# -> (# 0x2a700#, 0x2b73f#, "CJK Unified Ideographs Extension C\0"# #)
+    327# -> (# 0x2b740#, 0x2b81f#, "CJK Unified Ideographs Extension D\0"# #)
+    328# -> (# 0x2b820#, 0x2ceaf#, "CJK Unified Ideographs Extension E\0"# #)
+    329# -> (# 0x2ceb0#, 0x2ebef#, "CJK Unified Ideographs Extension F\0"# #)
+    330# -> (# 0x2ebf0#, 0x2ee5f#, "CJK Unified Ideographs Extension I\0"# #)
+    331# -> (# 0x2f800#, 0x2fa1f#, "CJK Compatibility Ideographs Supplement\0"# #)
+    332# -> (# 0x30000#, 0x3134f#, "CJK Unified Ideographs Extension G\0"# #)
+    333# -> (# 0x31350#, 0x323af#, "CJK Unified Ideographs Extension H\0"# #)
+    334# -> (# 0xe0000#, 0xe007f#, "Tags\0"# #)
+    335# -> (# 0xe0100#, 0xe01ef#, "Variation Selectors Supplement\0"# #)
+    336# -> (# 0xf0000#, 0xfffff#, "Supplementary Private Use Area-A\0"# #)
     _    -> (# 0x100000#, 0x10ffff#, "Supplementary Private Use Area-B\0"# #)
 
 -- | Character block, if defined, else -1.
 --
 -- @since 0.3.1
 block :: Char# -> Int#
-block c# = getBlock 0# 327#
+block c# = getBlock 0# 337#
     where
     -- [NOTE] Encoding
     -- A range is encoded as two LE Word32:
@@ -741,9 +761,9 @@
     \\0\0\144\28\0\8\191\28\0\0\192\28\32\8\207\28\0\0\208\28\64\8\255\28\0\0\0\29\96\8\127\29\0\0\128\29\128\8\191\29\0\0\192\29\160\8\255\29\0\0\0\30\192\8\255\30\0\0\0\31\224\8\255\31\0\0\0\32\0\9\111\32\0\0\112\32\32\9\159\32\0\0\160\32\64\9\207\32\0\0\208\32\96\9\255\32\0\0\0\33\128\9\79\33\0\0\80\33\160\9\143\33\0\0\144\33\192\9\255\33\0\0\0\34\224\9\255\34\0\0\0\35\0\10\255\35\0\0\0\36\32\10\63\36\0\0\64\36\64\10\95\36\0\0\96\36\96\10\255\36\0\0\0\37\128\10\127\37\0\0\128\37\160\10\159\37\0\0\160\37\192\10\255\37\0\0\0\38\224\10\255\38\0\0\0\39\0\11\191\39\0\0\192\39\32\11\239\39\0\0\240\39\64\11\255\39\0\0\0\40\96\11\255\40\0\0\0\41\128\11\127\41\0\0\128\41\160\11\255\41\0\0\0\42\192\11\255\42\0\0\0\43\224\11\255\
     \\43\0\0\0\44\0\12\95\44\0\0\96\44\32\12\127\44\0\0\128\44\64\12\255\44\0\0\0\45\96\12\47\45\0\0\48\45\128\12\127\45\0\0\128\45\160\12\223\45\0\0\224\45\192\12\255\45\0\0\0\46\224\12\127\46\0\0\128\46\0\13\255\46\0\0\0\47\32\13\223\47\0\0\240\47\64\13\255\47\0\0\0\48\96\13\63\48\0\0\64\48\128\13\159\48\0\0\160\48\160\13\255\48\0\0\0\49\192\13\47\49\0\0\48\49\224\13\143\49\0\0\144\49\0\14\159\49\0\0\160\49\32\14\191\49\0\0\192\49\64\14\239\49\0\0\240\49\96\14\255\49\0\0\0\50\128\14\255\50\0\0\0\51\160\14\255\51\0\0\0\52\192\14\191\77\0\0\192\77\224\14\255\77\0\0\0\78\0\15\255\159\0\0\0\160\32\15\143\164\0\0\144\164\64\15\207\164\0\0\208\164\96\15\255\164\0\0\0\165\128\15\63\166\0\0\64\166\160\15\159\166\0\0\160\166\192\15\255\166\0\0\0\167\224\15\
     \\31\167\0\0\32\167\0\16\255\167\0\0\0\168\32\16\47\168\0\0\48\168\64\16\63\168\0\0\64\168\96\16\127\168\0\0\128\168\128\16\223\168\0\0\224\168\160\16\255\168\0\0\0\169\192\16\47\169\0\0\48\169\224\16\95\169\0\0\96\169\0\17\127\169\0\0\128\169\32\17\223\169\0\0\224\169\64\17\255\169\0\0\0\170\96\17\95\170\0\0\96\170\128\17\127\170\0\0\128\170\160\17\223\170\0\0\224\170\192\17\255\170\0\0\0\171\224\17\47\171\0\0\48\171\0\18\111\171\0\0\112\171\32\18\191\171\0\0\192\171\64\18\255\171\0\0\0\172\96\18\175\215\0\0\176\215\128\18\255\215\0\0\0\216\160\18\127\219\0\0\128\219\192\18\255\219\0\0\0\220\224\18\255\223\0\0\0\224\0\19\255\248\0\0\0\249\32\19\255\250\0\0\0\251\64\19\79\251\0\0\80\251\96\19\255\253\0\0\0\254\128\19\15\254\0\0\16\254\160\19\31\254\0\0\32\254\192\19\47\254\0\0\48\254\224\
-    \\19\79\254\0\0\80\254\0\20\111\254\0\0\112\254\32\20\255\254\0\0\0\255\64\20\239\255\0\0\240\255\96\20\255\255\0\0\0\0\129\20\127\0\1\0\128\0\161\20\255\0\1\0\0\1\193\20\63\1\1\0\64\1\225\20\143\1\1\0\144\1\1\21\207\1\1\0\208\1\33\21\255\1\1\0\128\2\65\21\159\2\1\0\160\2\97\21\223\2\1\0\224\2\129\21\255\2\1\0\0\3\161\21\47\3\1\0\48\3\193\21\79\3\1\0\80\3\225\21\127\3\1\0\128\3\1\22\159\3\1\0\160\3\33\22\223\3\1\0\0\4\65\22\79\4\1\0\80\4\97\22\127\4\1\0\128\4\129\22\175\4\1\0\176\4\161\22\255\4\1\0\0\5\193\22\47\5\1\0\48\5\225\22\111\5\1\0\112\5\1\23\191\5\1\0\0\6\33\23\127\7\1\0\128\7\65\23\191\7\1\0\0\8\97\23\63\8\1\0\64\8\129\23\95\8\1\0\96\8\161\23\127\8\1\0\128\8\193\23\175\8\1\0\224\8\
-    \\225\23\255\8\1\0\0\9\1\24\31\9\1\0\32\9\33\24\63\9\1\0\128\9\65\24\159\9\1\0\160\9\97\24\255\9\1\0\0\10\129\24\95\10\1\0\96\10\161\24\127\10\1\0\128\10\193\24\159\10\1\0\192\10\225\24\255\10\1\0\0\11\1\25\63\11\1\0\64\11\33\25\95\11\1\0\96\11\65\25\127\11\1\0\128\11\97\25\175\11\1\0\0\12\129\25\79\12\1\0\128\12\161\25\255\12\1\0\0\13\193\25\63\13\1\0\96\14\225\25\127\14\1\0\128\14\1\26\191\14\1\0\192\14\33\26\255\14\1\0\0\15\65\26\47\15\1\0\48\15\97\26\111\15\1\0\112\15\129\26\175\15\1\0\176\15\161\26\223\15\1\0\224\15\193\26\255\15\1\0\0\16\225\26\127\16\1\0\128\16\1\27\207\16\1\0\208\16\33\27\255\16\1\0\0\17\65\27\79\17\1\0\80\17\97\27\127\17\1\0\128\17\129\27\223\17\1\0\224\17\161\27\255\17\1\0\0\18\193\27\79\18\1\0\128\
-    \\18\225\27\175\18\1\0\176\18\1\28\255\18\1\0\0\19\33\28\127\19\1\0\0\20\65\28\127\20\1\0\128\20\97\28\223\20\1\0\128\21\129\28\255\21\1\0\0\22\161\28\95\22\1\0\96\22\193\28\127\22\1\0\128\22\225\28\207\22\1\0\0\23\1\29\79\23\1\0\0\24\33\29\79\24\1\0\160\24\65\29\255\24\1\0\0\25\97\29\95\25\1\0\160\25\129\29\255\25\1\0\0\26\161\29\79\26\1\0\80\26\193\29\175\26\1\0\176\26\225\29\191\26\1\0\192\26\1\30\255\26\1\0\0\27\33\30\95\27\1\0\0\28\65\30\111\28\1\0\112\28\97\30\191\28\1\0\0\29\129\30\95\29\1\0\96\29\161\30\175\29\1\0\224\30\193\30\255\30\1\0\0\31\225\30\95\31\1\0\176\31\1\31\191\31\1\0\192\31\33\31\255\31\1\0\0\32\65\31\255\35\1\0\0\36\97\31\127\36\1\0\128\36\129\31\79\37\1\0\144\47\161\31\255\47\1\0\0\48\193\31\47\52\1\0\
-    \\48\52\225\31\95\52\1\0\0\68\1\32\127\70\1\0\0\104\33\32\63\106\1\0\64\106\65\32\111\106\1\0\112\106\97\32\207\106\1\0\208\106\129\32\255\106\1\0\0\107\161\32\143\107\1\0\64\110\193\32\159\110\1\0\0\111\225\32\159\111\1\0\224\111\1\33\255\111\1\0\0\112\33\33\255\135\1\0\0\136\65\33\255\138\1\0\0\139\97\33\255\140\1\0\0\141\129\33\127\141\1\0\240\175\161\33\255\175\1\0\0\176\193\33\255\176\1\0\0\177\225\33\47\177\1\0\48\177\1\34\111\177\1\0\112\177\33\34\255\178\1\0\0\188\65\34\159\188\1\0\160\188\97\34\175\188\1\0\0\207\129\34\207\207\1\0\0\208\161\34\255\208\1\0\0\209\193\34\255\209\1\0\0\210\225\34\79\210\1\0\192\210\1\35\223\210\1\0\224\210\33\35\255\210\1\0\0\211\65\35\95\211\1\0\96\211\97\35\127\211\1\0\0\212\129\35\255\215\1\0\0\216\161\35\175\218\1\0\0\223\193\35\255\223\1\
-    \\0\0\224\225\35\47\224\1\0\48\224\1\36\143\224\1\0\0\225\33\36\79\225\1\0\144\226\65\36\191\226\1\0\192\226\97\36\255\226\1\0\208\228\129\36\255\228\1\0\224\231\161\36\255\231\1\0\0\232\193\36\223\232\1\0\0\233\225\36\95\233\1\0\112\236\1\37\191\236\1\0\0\237\33\37\79\237\1\0\0\238\65\37\255\238\1\0\0\240\97\37\47\240\1\0\48\240\129\37\159\240\1\0\160\240\161\37\255\240\1\0\0\241\193\37\255\241\1\0\0\242\225\37\255\242\1\0\0\243\1\38\255\245\1\0\0\246\33\38\79\246\1\0\80\246\65\38\127\246\1\0\128\246\97\38\255\246\1\0\0\247\129\38\127\247\1\0\128\247\161\38\255\247\1\0\0\248\193\38\255\248\1\0\0\249\225\38\255\249\1\0\0\250\1\39\111\250\1\0\112\250\33\39\255\250\1\0\0\251\65\39\255\251\1\0\0\0\98\39\223\166\2\0\0\167\130\39\63\183\2\0\64\183\162\39\31\184\2\0\32\184\194\39\175\206\
-    \\2\0\176\206\226\39\239\235\2\0\240\235\2\40\95\238\2\0\0\248\34\40\31\250\2\0\0\0\67\40\79\19\3\0\80\19\99\40\175\35\3\0\0\0\142\40\127\0\14\0\0\1\174\40\239\1\14\0\0\0\207\40\255\255\15\0\0\0\240\40\255\255\16\0"#
+    \\19\79\254\0\0\80\254\0\20\111\254\0\0\112\254\32\20\255\254\0\0\0\255\64\20\239\255\0\0\240\255\96\20\255\255\0\0\0\0\129\20\127\0\1\0\128\0\161\20\255\0\1\0\0\1\193\20\63\1\1\0\64\1\225\20\143\1\1\0\144\1\1\21\207\1\1\0\208\1\33\21\255\1\1\0\128\2\65\21\159\2\1\0\160\2\97\21\223\2\1\0\224\2\129\21\255\2\1\0\0\3\161\21\47\3\1\0\48\3\193\21\79\3\1\0\80\3\225\21\127\3\1\0\128\3\1\22\159\3\1\0\160\3\33\22\223\3\1\0\0\4\65\22\79\4\1\0\80\4\97\22\127\4\1\0\128\4\129\22\175\4\1\0\176\4\161\22\255\4\1\0\0\5\193\22\47\5\1\0\48\5\225\22\111\5\1\0\112\5\1\23\191\5\1\0\192\5\33\23\255\5\1\0\0\6\65\23\127\7\1\0\128\7\97\23\191\7\1\0\0\8\129\23\63\8\1\0\64\8\161\23\95\8\1\0\96\8\193\23\127\8\1\0\128\8\
+    \\225\23\175\8\1\0\224\8\1\24\255\8\1\0\0\9\33\24\31\9\1\0\32\9\65\24\63\9\1\0\128\9\97\24\159\9\1\0\160\9\129\24\255\9\1\0\0\10\161\24\95\10\1\0\96\10\193\24\127\10\1\0\128\10\225\24\159\10\1\0\192\10\1\25\255\10\1\0\0\11\33\25\63\11\1\0\64\11\65\25\95\11\1\0\96\11\97\25\127\11\1\0\128\11\129\25\175\11\1\0\0\12\161\25\79\12\1\0\128\12\193\25\255\12\1\0\0\13\225\25\63\13\1\0\64\13\1\26\143\13\1\0\96\14\33\26\127\14\1\0\128\14\65\26\191\14\1\0\192\14\97\26\255\14\1\0\0\15\129\26\47\15\1\0\48\15\161\26\111\15\1\0\112\15\193\26\175\15\1\0\176\15\225\26\223\15\1\0\224\15\1\27\255\15\1\0\0\16\33\27\127\16\1\0\128\16\65\27\207\16\1\0\208\16\97\27\255\16\1\0\0\17\129\27\79\17\1\0\80\17\161\27\127\17\1\0\128\17\193\27\223\17\1\0\224\
+    \\17\225\27\255\17\1\0\0\18\1\28\79\18\1\0\128\18\33\28\175\18\1\0\176\18\65\28\255\18\1\0\0\19\97\28\127\19\1\0\128\19\129\28\255\19\1\0\0\20\161\28\127\20\1\0\128\20\193\28\223\20\1\0\128\21\225\28\255\21\1\0\0\22\1\29\95\22\1\0\96\22\33\29\127\22\1\0\128\22\65\29\207\22\1\0\208\22\97\29\255\22\1\0\0\23\129\29\79\23\1\0\0\24\161\29\79\24\1\0\160\24\193\29\255\24\1\0\0\25\225\29\95\25\1\0\160\25\1\30\255\25\1\0\0\26\33\30\79\26\1\0\80\26\65\30\175\26\1\0\176\26\97\30\191\26\1\0\192\26\129\30\255\26\1\0\0\27\161\30\95\27\1\0\192\27\193\30\255\27\1\0\0\28\225\30\111\28\1\0\112\28\1\31\191\28\1\0\0\29\33\31\95\29\1\0\96\29\65\31\175\29\1\0\224\30\97\31\255\30\1\0\0\31\129\31\95\31\1\0\176\31\161\31\191\31\1\0\192\31\193\31\255\31\1\0\
+    \\0\32\225\31\255\35\1\0\0\36\1\32\127\36\1\0\128\36\33\32\79\37\1\0\144\47\65\32\255\47\1\0\0\48\97\32\47\52\1\0\48\52\129\32\95\52\1\0\96\52\161\32\255\67\1\0\0\68\193\32\127\70\1\0\0\97\225\32\63\97\1\0\0\104\1\33\63\106\1\0\64\106\33\33\111\106\1\0\112\106\65\33\207\106\1\0\208\106\97\33\255\106\1\0\0\107\129\33\143\107\1\0\64\109\161\33\127\109\1\0\64\110\193\33\159\110\1\0\0\111\225\33\159\111\1\0\224\111\1\34\255\111\1\0\0\112\33\34\255\135\1\0\0\136\65\34\255\138\1\0\0\139\97\34\255\140\1\0\0\141\129\34\127\141\1\0\240\175\161\34\255\175\1\0\0\176\193\34\255\176\1\0\0\177\225\34\47\177\1\0\48\177\1\35\111\177\1\0\112\177\33\35\255\178\1\0\0\188\65\35\159\188\1\0\160\188\97\35\175\188\1\0\0\204\129\35\191\206\1\0\0\207\161\35\207\207\1\0\0\208\193\35\255\208\1\
+    \\0\0\209\225\35\255\209\1\0\0\210\1\36\79\210\1\0\192\210\33\36\223\210\1\0\224\210\65\36\255\210\1\0\0\211\97\36\95\211\1\0\96\211\129\36\127\211\1\0\0\212\161\36\255\215\1\0\0\216\193\36\175\218\1\0\0\223\225\36\255\223\1\0\0\224\1\37\47\224\1\0\48\224\33\37\143\224\1\0\0\225\65\37\79\225\1\0\144\226\97\37\191\226\1\0\192\226\129\37\255\226\1\0\208\228\161\37\255\228\1\0\208\229\193\37\255\229\1\0\224\231\225\37\255\231\1\0\0\232\1\38\223\232\1\0\0\233\33\38\95\233\1\0\112\236\65\38\191\236\1\0\0\237\97\38\79\237\1\0\0\238\129\38\255\238\1\0\0\240\161\38\47\240\1\0\48\240\193\38\159\240\1\0\160\240\225\38\255\240\1\0\0\241\1\39\255\241\1\0\0\242\33\39\255\242\1\0\0\243\65\39\255\245\1\0\0\246\97\39\79\246\1\0\80\246\129\39\127\246\1\0\128\246\161\39\255\246\1\0\0\247\193\39\127\247\
+    \\1\0\128\247\225\39\255\247\1\0\0\248\1\40\255\248\1\0\0\249\33\40\255\249\1\0\0\250\65\40\111\250\1\0\112\250\97\40\255\250\1\0\0\251\129\40\255\251\1\0\0\0\162\40\223\166\2\0\0\167\194\40\63\183\2\0\64\183\226\40\31\184\2\0\32\184\2\41\175\206\2\0\176\206\34\41\239\235\2\0\240\235\66\41\95\238\2\0\0\248\98\41\31\250\2\0\0\0\131\41\79\19\3\0\80\19\163\41\175\35\3\0\0\0\206\41\127\0\14\0\0\1\238\41\239\1\14\0\0\0\15\42\255\255\15\0\0\0\48\42\255\255\16\0"#
diff --git a/lib/Unicode/Internal/Char/CaseFolding.hs b/lib/Unicode/Internal/Char/CaseFolding.hs
--- a/lib/Unicode/Internal/Char/CaseFolding.hs
+++ b/lib/Unicode/Internal/Char/CaseFolding.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/CaseFolding.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/CaseFolding.txt
 -- |
 -- Module      : Unicode.Internal.Char.CaseFolding
 -- Copyright   : (c) 2022 Composewell Technologies and Contributors
@@ -558,6 +558,7 @@
   '\7302' -> 0x44a
   '\7303' -> 0x463
   '\7304' -> 0xa64b
+  '\7305' -> 0x1c8a
   '\7312' -> 0x10d0
   '\7313' -> 0x10d1
   '\7314' -> 0x10d2
@@ -1165,9 +1166,13 @@
   '\42950' -> 0x1d8e
   '\42951' -> 0xa7c8
   '\42953' -> 0xa7ca
+  '\42955' -> 0x264
+  '\42956' -> 0xa7cd
   '\42960' -> 0xa7d1
   '\42966' -> 0xa7d7
   '\42968' -> 0xa7d9
+  '\42970' -> 0xa7db
+  '\42972' -> 0x19b
   '\42997' -> 0xa7f6
   '\43888' -> 0x13a0
   '\43889' -> 0x13a1
@@ -1449,6 +1454,28 @@
   '\68784' -> 0x10cf0
   '\68785' -> 0x10cf1
   '\68786' -> 0x10cf2
+  '\68944' -> 0x10d70
+  '\68945' -> 0x10d71
+  '\68946' -> 0x10d72
+  '\68947' -> 0x10d73
+  '\68948' -> 0x10d74
+  '\68949' -> 0x10d75
+  '\68950' -> 0x10d76
+  '\68951' -> 0x10d77
+  '\68952' -> 0x10d78
+  '\68953' -> 0x10d79
+  '\68954' -> 0x10d7a
+  '\68955' -> 0x10d7b
+  '\68956' -> 0x10d7c
+  '\68957' -> 0x10d7d
+  '\68958' -> 0x10d7e
+  '\68959' -> 0x10d7f
+  '\68960' -> 0x10d80
+  '\68961' -> 0x10d81
+  '\68962' -> 0x10d82
+  '\68963' -> 0x10d83
+  '\68964' -> 0x10d84
+  '\68965' -> 0x10d85
   '\71840' -> 0x118c0
   '\71841' -> 0x118c1
   '\71842' -> 0x118c2
diff --git a/lib/Unicode/Internal/Char/DerivedCoreProperties.hs b/lib/Unicode/Internal/Char/DerivedCoreProperties.hs
--- a/lib/Unicode/Internal/Char/DerivedCoreProperties.hs
+++ b/lib/Unicode/Internal/Char/DerivedCoreProperties.hs
@@ -1,703 +1,720 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/DerivedCoreProperties.txt
--- |
--- Module      : Unicode.Internal.Char.DerivedCoreProperties
--- Copyright   : (c) 2020 Composewell Technologies and Contributors
--- License     : Apache-2.0
--- Maintainer  : streamly@composewell.com
--- Stability   : experimental
-
-{-# OPTIONS_HADDOCK hide #-}
-{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
-{-# HLINT ignore "Use camelCase" #-}
-
-module Unicode.Internal.Char.DerivedCoreProperties
-    ( isXID_Continue
-    , isXID_Start
-    , isID_Continue
-    , isID_Start
-    , isUppercase
-    , isLowercase
-    , isAlphabetic
-    ) where
-
-import Data.Bits (Bits(..))
-import Data.Char (ord)
-import Data.Int (Int8)
-import Data.Word (Word16)
-import GHC.Exts (Ptr(..))
-import Unicode.Internal.Bits (lookupBit, lookupWord16AsInt)
-
-{-# INLINE isXID_Continue #-}
-isXID_Continue :: Char -> Bool
-isXID_Continue c
-    | c < '\x002F' = False
-    | c < '\x323B0' = lookupIsXID_ContinueBitMap (ord c)
-    | c < '\xE0000' = False
-    | c < '\xE01F0' = lookupIsXID_ContinueBitMap (ord c - 0xADC50)
-    | otherwise = False
-
-{-# INLINE lookupIsXID_ContinueBitMap #-}
-lookupIsXID_ContinueBitMap :: Int -> Bool
-lookupIsXID_ContinueBitMap n =
-    lookupBit data# (
-        lookupWord16AsInt offsets# (
-            n `shiftR` 8
-        ) + ((n `shiftR` 3) .&. mask)
-    ) (n .&. 7)
-    where
-    mask = (1 `shiftL` 5) - 1
-    !(Ptr data#) = isXID_ContinueDataBitMap
-    !(Ptr offsets#) = isXID_ContinueOffsetsBitMap
-
-isXID_ContinueDataBitMap :: Ptr Int8
-isXID_ContinueDataBitMap = Ptr
-    "\132\252\47\63\80\253\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\111\
-    \\240\239\254\255\255\63\135\0\0\0\0\255\255\255\31\255\255\255\31\0\0\0\0\255\254\255\255\127\0\0\0\48\0\0\0\0\0\128\1\0\16\0\0\0\2\128\0\0\255\31\
-    \\0\0\0\0\0\0\255\31\226\255\1\0\224\0\0\0\254\255\62\31\254\255\255\255\255\255\255\255\255\255\127\230\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\7\255\255\255\255\255\255\255\255\255\195\255\255\255\255\255\255\255\255\255\255\255\255\239\159\255\
-    \\253\255\159\238\159\249\255\255\253\237\243\159\57\224\176\207\255\2\0\236\199\61\214\24\199\255\195\199\61\129\0\192\255\0\0\184\255\3\255\255\255\255\255\255\255\255\255\255\255\1\
-    \\255\255\255\255\255\7\255\255\255\255\255\255\255\255\63\0\0\255\255\255\15\255\7\255\255\255\126\0\255\255\255\255\255\255\255\255\255\251\255\255\255\255\191\32\255\255\255\255\255\255\
-    \\255\128\0\128\255\255\127\0\127\127\127\127\127\127\127\127\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\255\255\255\255\61\127\61\255\127\255\255\255\255\255\255\255\
-    \\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\
-    \\255\63\255\1\0\0\63\0\0\0\0\255\255\255\255\255\255\255\231\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\63\36\255\239\255\255\127\255\255\183\255\
-    \\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\3\254\255\255\135\254\255\255\7\0\0\0\0\0\4\160\4\
-    \\255\255\127\255\255\255\127\255\15\255\15\192\255\255\255\255\63\31\0\255\255\255\255\255\15\255\255\255\3\255\7\0\0\0\0\128\255\252\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\249\255\255\255\255\255\255\255\7\235\3\0\0\252\255\223\253\255\255\253\255\243\223\61\96\39\207\255\0\0\239\223\253\255\255\253\239\243\223\61\96\96\207\255\14\0\191\231\223\223\
-    \\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\255\255\255\247\224\255\255\255\255\255\254\255\255\255\
-    \\255\255\255\255\255\255\255\127\0\0\255\255\255\255\0\0\0\0\0\0\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\207\255\254\255\239\159\249\255\255\253\197\243\159\121\128\176\207\255\3\80\255\255\0\0\255\255\24\0\0\224\0\0\0\0\
-    \\138\170\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\255\3\0\248\15\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\255\255\255\255\255\255\7\0\255\255\255\255\255\255\7\0\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\3\255\3\160\194\255\254\255\255\255\31\254\255\223\255\255\254\255\255\255\31\64\0\0\0\0\0\0\0\255\3\
-    \\254\255\255\135\254\255\255\7\224\255\255\255\255\255\255\255\255\255\255\127\252\252\252\28\0\0\0\0\255\255\255\255\255\255\255\0\255\227\255\255\255\255\255\63\255\1\255\255\255\255\
-    \\255\231\0\0\247\255\255\255\255\7\0\4\0\0\0\39\0\240\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\15\0\255\255\127\248\255\255\255\255\255\15\255\255\255\255\255\255\255\127\255\255\255\159\255\3\255\3\128\0\255\191\255\127\0\0\0\0\0\0\255\255\255\255\255\31\255\63\255\67\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\127\0\0\255\255\255\255\255\255\255\3\255\255\255\255\255\0\255\3\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\27\3\0\0\0\0\0\0\0\0\224\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\1\0\
-    \\0\0\255\255\255\255\255\255\255\255\255\255\255\63\240\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\251\252\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\223\184\192\215\255\255\251\255\255\255\255\255\255\255\255\255\191\255\223\253\255\255\255\255\255\223\125\240\128\207\255\0\252\238\255\127\252\255\255\251\47\127\132\95\255\192\255\12\0\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\255\255\255\255\255\63\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\3\255\
-    \\255\255\255\255\0\255\255\255\255\255\255\15\0\255\247\255\247\183\255\251\255\251\27\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\111\255\127\242\111\255\
-    \\255\255\191\249\15\0\255\3\0\0\0\0\0\0\0\0\255\252\255\255\255\255\255\252\27\0\0\0\255\255\255\255\255\63\255\255\255\255\15\0\255\255\255\31\255\255\255\255\255\255\
-    \\255\255\1\128\255\3\255\255\255\127\251\255\255\255\255\127\180\255\0\255\3\191\253\255\255\255\127\251\1\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\255\255\127\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\
-    \\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\63\255\255\255\255\191\32\255\255\255\255\255\247\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\61\255\255\255\
-    \\255\255\255\255\255\231\0\254\3\0\255\255\0\0\255\255\255\255\255\255\255\255\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\95\220\31\207\15\
-    \\255\31\220\31\255\255\253\255\255\255\255\199\7\0\255\3\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\255\255\127\0\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\255\255\255\255\255\255\127\0\15\0\255\
-    \\3\248\255\255\224\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\31\248\15\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\251\252\255\255\255\255\255\255\255\255\255\255\255\255\255\255\254\255\255\255\127\2\255\255\
-    \\255\255\255\1\254\255\255\255\255\191\182\0\255\255\255\135\7\0\255\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\247\207\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\255\255\255\247\255\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\
-    \\247\207\255\255\255\255\255\255\127\248\255\255\255\255\255\31\32\0\16\0\0\248\254\255\0\0\0\0\0\0\0\0\0\0\255\255\255\31\128\0\255\255\255\255\1\0\0\0\255\255\
-    \\63\0\0\0\0\0\255\255\31\0\0\0\255\255\127\0\248\224\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\1\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\
-    \\184\192\215\255\255\251\255\255\255\255\255\255\255\255\255\191\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\255\
-    \\255\255\255\255\255\255\255\135\255\255\255\255\255\255\255\128\255\255\0\0\0\0\0\0\0\0\27\0\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\238\135\249\255\255\253\109\211\135\57\2\94\192\255\63\0\238\191\251\255\255\253\237\243\191\59\1\0\207\255\0\254\254\255\255\255\255\255\255\
-    \\7\255\127\255\3\0\0\0\0\214\247\255\255\175\255\255\63\95\127\255\243\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\159\255\255\254\255\255\7\255\255\255\255\255\
-    \\255\255\255\255\199\255\1\255\255\63\128\255\255\31\0\255\255\15\0\255\223\13\0\255\255\255\255\255\255\255\255\255\255\143\48\255\3\0\0\255\31\255\255\255\15\0\0\255\255\255\
-    \\255\255\255\240\191\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\16\0\0\255\255\255\255\255\255\15\0\255\255\255\255\255\255\255\255\63\0\255\3\255\
-    \\255\255\232\255\255\255\255\255\255\127\0\255\63\255\3\255\255\127\252\255\255\255\255\255\255\255\255\7\0\0\56\255\255\124\0\126\126\126\0\127\127\255\255\255\255\255\247\255\3\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\55\255\3\255\255\255\255\255\255\255\63\0\0\255\255\255\255\255\255\255\255\252\255\255\255\255\255\255\0\0\0\0\0\255\3\255\
-    \\255\255\255\0\224\255\255\255\7\255\255\255\255\255\7\255\255\255\63\255\255\255\255\15\255\62\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\63\255\3\255\255\255\255\15\255\255\255\255\15\255\255\255\255\255\255\127\0\255\255\63\0\255\0\0\0\191\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\63\253\255\255\255\
-    \\255\191\145\255\255\63\0\255\255\127\0\255\255\255\127\0\0\0\0\0\0\0\0\255\255\55\0\255\255\63\0\255\255\255\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\
-    \\192\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\0\255\255\63\0\255\255\7\0\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\
-    \\0\0\0\192\255\63\128\255\255\255\255\255\255\255\7\4\0\255\255\255\1\255\3\255\255\255\255\255\255\223\255\240\0\255\255\255\255\79\0\255\255\255\255\255\255\255\255\31\222\255\
-    \\23\0\0\0\0\255\255\251\255\255\255\255\192\3\0\0\0\0\0\0\0\127\189\255\191\255\1\255\255\255\255\255\255\255\7\255\3\239\159\249\255\255\253\237\251\159\57\129\224\207\
-    \\31\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\7\255\195\3\0\0\0\255\255\255\255\255\255\255\255\191\0\255\3\0\0\0\
-    \\0\255\255\255\255\255\255\255\255\17\0\255\3\0\0\0\0\255\255\255\255\255\255\255\1\255\3\0\0\0\0\0\0\255\255\255\231\255\15\255\3\127\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\3\0\128\255\255\255\
-    \\255\255\255\255\127\128\0\255\255\255\255\255\255\255\255\255\35\0\0\255\255\255\255\255\255\255\255\255\1\255\253\255\255\255\255\127\255\1\0\255\3\0\0\252\255\255\255\252\255\255\
-    \\254\127\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\
-    \\1\255\255\255\127\255\3\255\255\255\255\255\255\255\255\255\127\255\3\255\255\255\63\31\0\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\31\255\1\255\99\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\255\255\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\255\255\249\219\7\255\255\255\255\255\
-    \\255\255\63\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\127\0\0\
-    \\0\0\0\255\255\255\255\255\255\255\255\255\15\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\255\255\255\150\254\247\10\132\234\150\170\150\247\247\
-    \\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0"#
-
-isXID_ContinueOffsetsBitMap :: Ptr Word16
-isXID_ContinueOffsetsBitMap = Ptr
-    "\14\2\133\0\141\0\56\5\38\5\138\8\171\0\153\1\3\1\242\2\51\10\203\0\102\2\87\5\83\10\198\3\224\6\133\0\60\1\52\7\132\0\133\0\115\10\147\10\234\0\41\2\84\4\40\3\4\4\133\0\133\0\80\7\80\0\0\0\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\80\8\32\1\244\1\244\1\112\0\178\2\
-    \\244\1\244\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\99\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\119\5\133\0\179\10\71\2\211\10\92\6\243\10\19\11\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\56\4\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\133\0\
-    \\87\9\60\9\22\5\51\11\18\3\228\3\185\1\215\7\246\4\83\11\115\11\219\5\133\0\147\11\179\11\211\11\49\0\243\11\97\3\162\4\178\4\30\9\19\12\51\12\83\12\115\12\147\12\123\1\179\12\211\12\243\12\60\6\19\13\244\1\51\13\123\6\145\6\112\7\133\0\133\0\133\0\226\4\210\4\62\3\244\1\244\1\244\1\244\1\244\1\244\1\
-    \\244\1\244\1\244\1\76\3\133\0\133\0\133\0\133\0\154\3\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\133\0\133\0\83\13\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\
-    \\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\133\0\133\0\115\13\247\7\244\1\244\1\15\8\244\9\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\129\3\133\0\133\0\133\0\133\0\217\1\16\0\244\1\244\1\
-    \\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\18\0\133\0\31\4\45\4\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\147\13\244\1\244\1\244\1\244\1\244\1\
-    \\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\145\5\244\1\165\5\243\5\244\1\199\6\134\2\146\2\170\8\244\1\244\1\254\8\244\1\244\1\244\1\244\1\179\13\211\13\116\4\130\4\244\1\187\5\244\1\244\1\29\6\243\13\19\14\244\1\244\1\244\1\244\1\51\14\244\1\244\1\244\1\244\1\244\1\
-    \\244\1\244\1\244\1\244\1\244\1\244\1\244\1\246\1\244\1\244\1\244\1\244\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\95\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\87\1\208\2\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\220\2\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\22\7\133\0\133\0\
-    \\232\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\133\0\133\0\240\1\244\1\244\1\244\1\244\1\244\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\207\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\101\1\72\3\133\0"#
-
-{-# INLINE isXID_Start #-}
-isXID_Start :: Char -> Bool
-isXID_Start c = c >= '\x0041' && c <= '\x323AF' && lookupIsXID_StartBitMap (ord c)
-
-{-# INLINE lookupIsXID_StartBitMap #-}
-lookupIsXID_StartBitMap :: Int -> Bool
-lookupIsXID_StartBitMap n =
-    lookupBit data# (
-        lookupWord16AsInt offsets# (
-            n `shiftR` 8
-        ) + ((n `shiftR` 3) .&. mask)
-    ) (n .&. 7)
-    where
-    mask = (1 `shiftL` 5) - 1
-    !(Ptr data#) = isXID_StartDataBitMap
-    !(Ptr offsets#) = isXID_StartOffsetsBitMap
-
-isXID_StartDataBitMap :: Ptr Int8
-isXID_StartDataBitMap = Ptr
-    "\132\252\47\63\80\253\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\111\
-    \\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\224\255\255\255\255\255\254\255\255\
-    \\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\0\0\0\0\0\0\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\254\255\255\7\254\255\255\7\0\0\0\0\0\4\32\4\255\255\127\255\255\255\127\255\255\255\255\191\32\255\255\255\255\255\255\
-    \\255\128\0\0\255\255\127\0\127\127\127\127\127\127\127\127\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\63\240\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\7\0\255\239\255\255\
-    \\127\255\255\183\255\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\31\120\12\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\
-    \\255\255\255\247\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\255\255\255\255\255\63\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\159\255\255\254\255\255\7\255\255\255\255\255\255\255\
-    \\255\255\199\255\1\0\239\254\255\255\63\0\0\0\0\0\255\255\255\31\255\255\255\31\0\0\0\0\255\254\255\255\31\0\0\0\255\255\255\255\255\255\255\255\15\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\255\255\255\255\255\255\7\0\255\255\255\255\255\
-    \\255\7\0\128\0\0\63\60\98\192\225\255\3\64\0\0\255\255\255\255\191\32\255\255\255\255\255\247\255\31\255\255\0\12\0\0\255\255\255\255\255\127\0\128\255\255\255\63\255\255\
-    \\255\255\255\255\255\255\255\255\0\0\126\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\247\
-    \\15\0\0\255\255\127\196\255\255\255\255\255\255\98\62\5\0\0\56\255\7\28\0\255\255\255\255\7\0\4\0\0\0\39\0\240\0\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\255\255\127\248\255\255\255\255\255\15\0\0\0\0\224\0\252\255\255\255\63\255\1\255\255\255\255\255\231\0\
-    \\0\0\0\0\222\111\4\255\255\255\255\255\31\128\63\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\0\0\255\255\255\255\255\
-    \\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\128\255\252\255\255\255\255\255\255\255\255\255\255\255\255\249\255\255\255\255\255\255\255\7\
-    \\235\3\0\0\252\255\255\63\0\255\255\127\0\0\0\255\255\255\31\240\255\255\255\255\255\7\0\0\128\0\0\223\255\0\124\224\159\249\255\255\253\237\35\0\0\0\176\3\0\2\
-    \\0\232\199\61\214\24\199\255\3\0\0\1\0\0\0\0\0\0\0\255\254\255\255\255\31\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\31\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\0\0\0\0\255\255\255\255\255\7\0\0\0\192\254\255\255\255\255\255\255\
-    \\255\255\255\255\255\47\0\96\192\0\156\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\255\255\255\255\15\255\255\255\255\15\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\3\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\128\0\0\255\31\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\138\170\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\128\0\255\255\63\0\0\0\0\0\255\255\3\0\0\0\0\0\255\255\31\
-    \\0\0\0\255\255\127\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\254\255\255\7\254\255\255\7\192\255\255\255\255\255\255\
-    \\63\255\255\255\127\252\252\252\28\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\252\255\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\223\184\64\215\255\255\251\255\255\255\255\255\255\255\255\255\191\255\
-    \\255\255\255\255\255\127\0\255\255\63\0\255\0\0\0\191\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\255\255\255\255\
-    \\61\127\61\255\127\255\255\255\255\255\255\254\255\255\255\127\2\255\255\255\255\255\1\0\0\0\0\0\0\0\0\255\255\255\135\7\0\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\61\255\255\255\255\255\255\255\255\
-    \\7\0\0\0\0\255\255\0\0\255\255\255\255\255\255\255\255\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\95\220\31\207\15\255\31\220\31\255\
-    \\255\255\255\255\255\0\0\16\0\0\0\0\0\0\0\255\255\255\255\255\7\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\127\0\0\0\0\0\
-    \\15\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\15\0\0\255\255\255\255\255\255\0\0\15\0\0\0\248\255\255\224\255\255\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\111\255\127\242\111\255\255\255\0\128\2\
-    \\0\0\0\0\0\0\0\0\0\0\0\255\252\255\255\255\255\1\0\10\0\0\0\255\255\255\255\255\255\31\0\128\7\0\128\3\0\0\0\255\255\255\255\255\255\0\0\176\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\127\0\0\0\0\0\15\0\0\0\0\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\
-    \\100\222\255\235\239\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\31\255\1\255\3\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\0\255\255\255\255\255\255\15\0\255\247\255\247\183\255\251\255\251\27\0\0\0\0\0\0\0\0\255\255\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\128\63\0\64\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\0\248\160\255\253\
-    \\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\
-    \\0\0\0\255\255\255\255\0\224\255\255\255\7\255\255\255\255\63\0\255\255\255\63\255\255\255\255\15\255\62\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\
-    \\255\255\255\255\255\255\1\0\0\0\0\0\255\255\3\128\255\255\3\0\255\255\3\0\255\223\1\0\255\255\255\255\255\255\15\0\0\0\128\16\0\0\0\0\255\255\255\255\255\255\
-    \\255\255\255\255\255\1\255\255\255\255\255\5\255\255\255\255\255\255\255\255\63\0\0\255\255\255\255\255\255\255\255\252\255\255\255\255\255\255\0\0\0\0\0\255\3\255\255\251\255\255\
-    \\15\0\128\1\0\0\0\0\0\0\0\127\189\255\191\255\1\255\255\255\255\255\127\0\0\0\0\0\0\255\255\255\63\31\0\255\255\255\255\255\15\255\255\255\3\0\0\0\0\0\
-    \\0\255\255\255\255\255\255\255\255\255\255\255\1\255\255\255\255\255\5\255\255\255\255\255\255\255\255\63\0\255\255\63\0\255\255\7\0\255\255\3\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\255\255\255\255\255\255\255\255\255\7\1\0\0\0\0\0\0\0\248\255\0\0\0\0\0\0\0\0\11\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\63\4\16\1\0\0\255\255\255\1\255\7\255\255\255\126\0\0\255\255\255\255\255\
-    \\3\0\0\0\0\0\0\253\255\255\255\0\0\0\224\255\255\255\255\255\255\255\255\255\255\63\0\2\0\0\252\255\255\255\7\48\4\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\
-    \\255\255\255\255\255\255\35\0\0\1\255\3\0\254\255\225\159\249\255\255\253\197\35\0\64\0\176\3\0\3\16\224\135\249\255\255\253\109\3\0\0\0\94\0\0\28\0\224\191\251\
-    \\255\255\253\237\35\0\0\1\0\3\0\0\2\224\223\253\255\255\253\255\35\0\0\0\39\3\0\0\0\225\223\253\255\255\253\239\35\0\0\0\96\3\0\6\0\240\223\253\255\255\
-    \\255\255\39\0\64\112\128\3\0\0\252\224\255\127\252\255\255\251\47\127\0\0\0\0\0\0\0\254\255\255\255\255\255\5\0\127\0\0\0\0\0\0\0\214\247\255\255\175\255\5\
-    \\32\95\0\0\240\0\0\0\0\224\255\255\255\255\255\15\0\224\31\0\0\0\0\0\0\248\255\255\255\1\192\0\252\255\255\255\255\63\0\0\0\224\0\0\0\254\3\62\31\254\
-    \\255\255\255\255\255\255\255\255\255\127\224\254\255\255\255\255\255\255\255\255\255\255\247\187\247\255\255\7\0\0\0\255\255\255\255\255\255\15\0\252\255\255\255\255\255\15\0\0\0\0\
-    \\0\0\0\252\104\126\126\126\0\127\127\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\0\0\0\63\253\255\255\255\255\191\145\255\255\63\0\255\
-    \\255\127\0\255\255\255\127\0\0\0\0\0\0\0\0\255\255\55\0\255\255\63\0\255\255\255\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\192\0\0\0\0\0\0\0\
-    \\0\248\255\255\255\255\255\255\0\0\0\0\0\0\0\38\0\248\255\255\255\255\255\0\0\0\0\255\255\255\1\0\0\248\255\255\255\127\0\0\0\144\0\255\255\255\255\71\0\248\
-    \\255\255\255\255\255\7\0\30\0\0\20\0\0\0\0\224\159\249\255\255\253\237\35\0\0\1\224\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\
-    \\7\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\248\255\255\255\255\7\4\0\0\1\240\255\255\255\255\255\3\0\32\0\
-    \\0\255\255\255\255\255\255\255\255\255\1\255\253\255\255\255\127\0\0\1\0\0\0\0\0\252\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\251\255\255\255\255\1\
-    \\0\64\0\0\0\191\253\255\255\255\3\0\1\0\0\0\0\0\0\0\0\0\0\0\0\244\255\253\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\
-    \\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\1\255\255\255\
-    \\127\0\0\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\63\0\0\255\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\247\15\0\0\0\
-    \\0\0\0\255\255\255\255\255\255\255\255\15\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\255\255\255\150\254\247\10\132\234\150\170\150\247\247\
-    \\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0"#
-
-isXID_StartOffsetsBitMap :: Ptr Word16
-isXID_StartOffsetsBitMap = Ptr
-    "\157\0\51\0\59\0\38\5\239\4\175\5\5\4\45\10\15\10\139\10\171\10\167\3\203\10\235\10\11\11\193\3\84\2\51\0\148\5\3\6\50\0\51\0\217\1\214\8\242\8\65\9\179\4\43\11\7\3\133\0\51\0\31\6\103\4\0\0\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\72\1\188\0\4\1\4\1\75\11\91\0\
-    \\4\1\4\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\133\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\155\1\51\0\116\2\106\3\107\11\135\3\179\2\139\11\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\236\2\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\51\0\
-    \\123\8\96\8\220\0\9\9\123\4\207\4\40\1\217\3\233\3\155\8\37\4\204\7\51\0\69\5\171\11\203\11\248\1\117\9\59\2\64\4\80\4\151\4\235\11\11\12\41\9\43\12\31\7\87\6\63\6\75\12\77\3\255\6\107\12\4\1\139\12\171\12\8\1\203\12\51\0\51\0\51\0\18\5\2\5\24\2\4\1\4\1\4\1\4\1\4\1\4\1\
-    \\4\1\4\1\4\1\38\2\51\0\51\0\51\0\51\0\140\2\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\51\0\51\0\235\12\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\
-    \\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\51\0\51\0\11\13\184\6\4\1\4\1\208\6\149\9\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\178\7\51\0\51\0\51\0\51\0\233\0\16\0\4\1\4\1\
-    \\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\18\0\51\0\211\2\225\2\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\113\7\4\1\4\1\4\1\4\1\4\1\
-    \\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\123\5\104\1\116\1\43\13\4\1\4\1\4\1\4\1\4\1\4\1\4\1\236\7\6\8\39\3\53\3\4\1\152\6\4\1\4\1\224\6\148\1\75\13\4\1\4\1\4\1\4\1\107\13\4\1\4\1\4\1\4\1\4\1\
-    \\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\129\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\121\0\183\1\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\195\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\229\5\51\0\51\0\
-    \\248\0\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\4\1\51\0\51\0\0\1\4\1\4\1\4\1\4\1\4\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\62\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\72\1"#
-
-{-# INLINE isID_Continue #-}
-isID_Continue :: Char -> Bool
-isID_Continue c
-    | c < '\x002F' = False
-    | c < '\x323B0' = lookupIsID_ContinueBitMap (ord c)
-    | c < '\xE0000' = False
-    | c < '\xE01F0' = lookupIsID_ContinueBitMap (ord c - 0xADC50)
-    | otherwise = False
-
-{-# INLINE lookupIsID_ContinueBitMap #-}
-lookupIsID_ContinueBitMap :: Int -> Bool
-lookupIsID_ContinueBitMap n =
-    lookupBit data# (
-        lookupWord16AsInt offsets# (
-            n `shiftR` 8
-        ) + ((n `shiftR` 3) .&. mask)
-    ) (n .&. 7)
-    where
-    mask = (1 `shiftL` 5) - 1
-    !(Ptr data#) = isID_ContinueDataBitMap
-    !(Ptr offsets#) = isID_ContinueOffsetsBitMap
-
-isID_ContinueDataBitMap :: Ptr Int8
-isID_ContinueDataBitMap = Ptr
-    "\132\252\47\63\80\253\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\111\
-    \\240\239\254\255\255\63\135\0\0\0\0\255\255\255\31\255\255\255\31\0\0\0\0\255\254\255\255\127\0\0\0\48\0\0\0\0\0\128\1\0\16\0\0\0\2\128\0\0\255\31\
-    \\0\0\0\0\0\0\255\31\226\255\1\0\224\0\0\0\254\255\62\31\254\255\255\255\255\255\255\255\255\255\127\254\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\7\255\255\255\255\255\255\255\255\255\195\255\255\255\255\255\255\255\255\255\255\255\255\239\159\255\
-    \\253\255\159\238\159\249\255\255\253\237\243\159\57\224\176\207\255\2\0\236\199\61\214\24\199\255\195\199\61\129\0\192\255\0\0\184\255\3\255\255\255\255\255\255\255\255\255\255\255\1\
-    \\255\255\255\255\255\7\255\255\255\255\255\255\255\255\63\0\0\255\255\255\15\255\7\255\255\255\126\0\255\255\255\255\255\255\255\255\255\251\255\255\255\255\191\32\255\255\255\255\255\255\
-    \\255\128\0\128\255\255\127\0\127\127\127\127\127\127\127\127\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\255\255\255\255\61\127\61\255\127\255\255\255\255\255\255\255\
-    \\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\
-    \\255\63\255\1\0\0\63\0\0\0\0\255\255\255\255\255\255\255\231\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\63\36\255\239\255\255\127\255\255\183\255\
-    \\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\3\254\255\255\135\254\255\255\7\0\0\0\0\0\4\160\4\
-    \\255\255\127\255\255\255\127\255\15\255\15\192\255\255\255\255\63\31\0\255\255\255\255\255\15\255\255\255\3\255\7\0\0\0\0\128\255\252\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\249\255\255\255\255\255\255\255\7\235\3\0\0\252\255\223\253\255\255\253\255\243\223\61\96\39\207\255\0\0\239\223\253\255\255\253\239\243\223\61\96\96\207\255\14\0\191\231\223\223\
-    \\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\255\255\255\247\224\255\255\255\255\255\254\255\255\255\
-    \\255\255\255\255\255\255\255\127\0\0\255\255\255\255\0\0\0\0\0\0\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\207\255\254\255\239\159\249\255\255\253\197\243\159\121\128\176\207\255\3\80\255\255\0\0\255\255\24\0\0\224\0\0\0\0\
-    \\223\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\255\3\0\248\15\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\255\255\255\255\255\255\7\0\255\255\255\255\255\255\7\0\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\3\255\3\160\194\255\254\255\255\255\31\254\255\223\255\255\254\255\255\255\31\64\0\0\0\0\0\0\0\255\3\
-    \\254\255\255\135\254\255\255\7\224\255\255\255\255\255\255\255\255\255\255\127\252\252\252\28\0\0\0\0\255\255\255\255\255\255\255\0\255\227\255\255\255\255\255\63\255\1\255\255\255\255\
-    \\255\231\0\0\247\255\255\255\255\7\0\4\0\0\0\39\0\240\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\15\0\255\255\127\248\255\255\255\255\255\15\255\255\255\255\255\255\255\127\255\255\255\159\255\3\255\3\128\0\255\191\255\127\0\0\0\0\0\0\255\255\255\255\255\31\255\63\255\67\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\127\0\0\255\255\255\255\255\255\255\3\255\255\255\255\255\0\255\3\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\27\3\0\0\0\0\0\0\0\0\224\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\1\0\
-    \\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\251\252\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\188\192\215\255\255\251\255\255\255\255\255\255\255\255\255\
-    \\191\255\223\253\255\255\255\255\255\223\125\240\128\207\255\0\252\238\255\127\252\255\255\251\47\127\132\95\255\192\255\12\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\31\0\0\0\0\0\0\0\0\255\255\255\255\255\63\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\
-    \\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\3\255\255\255\255\255\0\255\255\255\255\255\255\15\0\255\247\255\
-    \\247\183\255\251\255\251\27\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\111\255\127\242\111\255\255\255\191\249\15\0\255\3\0\0\0\0\0\0\0\0\
-    \\255\252\255\255\255\255\255\252\27\0\0\0\255\255\255\255\255\63\255\255\255\255\15\0\255\255\255\31\255\255\255\255\255\255\255\255\1\128\255\3\255\255\255\127\251\255\255\255\255\127\
-    \\180\255\0\255\3\191\253\255\255\255\127\251\1\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\127\0\191\231\223\
-    \\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\
-    \\255\255\255\3\255\255\255\255\255\255\255\255\255\63\255\255\255\255\191\32\255\255\255\255\255\247\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\61\255\255\255\255\255\255\255\255\231\0\254\3\0\255\255\0\0\255\255\
-    \\255\255\255\255\255\255\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\95\220\31\207\15\255\31\220\31\255\255\253\255\255\255\255\199\7\0\255\3\
-    \\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\127\0\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\
-    \\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\255\255\255\255\255\255\127\0\15\0\255\3\248\255\255\224\255\255\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\248\15\0\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\251\252\255\255\255\255\255\255\255\255\255\255\255\255\255\255\254\255\255\255\127\2\255\255\255\255\255\1\254\255\255\255\255\191\182\0\255\255\255\135\
-    \\7\0\255\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\247\207\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\
-    \\255\255\253\255\255\247\255\255\255\247\255\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\247\207\255\255\255\255\255\255\127\248\255\255\255\255\255\31\
-    \\32\0\16\0\0\248\254\255\0\0\0\0\0\0\0\0\0\0\255\255\255\31\128\0\255\255\255\255\1\0\0\0\255\255\63\0\0\0\0\0\255\255\31\0\0\0\255\255\127\0\
-    \\248\224\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\3\0\0\0\0\127\0\248\224\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\63\0\0\255\255\255\255\255\255\
-    \\255\255\252\255\255\255\255\255\255\0\0\0\0\0\255\15\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\255\
-    \\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\188\192\215\255\255\251\255\
-    \\255\255\255\255\255\255\255\255\191\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\255\255\255\255\255\255\255\255\
-    \\135\255\255\255\255\255\255\255\128\255\255\0\0\0\0\0\0\0\0\27\0\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\238\135\249\255\255\253\109\211\135\57\2\94\192\255\63\0\238\191\251\255\255\253\237\243\191\59\1\0\207\255\0\254\254\255\255\255\255\255\255\7\255\127\255\3\0\0\
-    \\0\0\214\247\255\255\175\255\255\63\95\127\255\243\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\159\255\255\254\255\255\7\255\255\255\255\255\255\255\255\255\199\255\1\
-    \\255\255\63\128\255\255\31\0\255\255\15\0\255\223\13\0\255\255\255\255\255\255\255\255\255\255\143\48\255\3\0\0\255\31\255\255\255\15\0\0\255\255\255\255\255\255\240\191\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\16\0\0\255\255\255\255\255\255\15\0\255\255\255\255\255\255\255\255\63\0\255\3\255\255\255\232\255\255\255\255\
-    \\255\255\127\0\255\63\255\3\255\255\127\252\255\255\255\255\255\255\255\255\7\0\0\56\255\255\124\0\126\126\126\0\127\127\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\55\255\3\255\255\255\255\0\224\255\255\255\7\255\255\255\255\255\7\255\255\255\63\255\255\255\255\15\255\62\0\0\0\0\0\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\63\255\3\255\255\255\255\15\255\255\255\255\15\255\255\255\255\255\255\127\0\255\255\63\0\255\0\0\0\191\255\255\255\255\255\253\7\0\0\
-    \\0\0\0\0\0\0\63\253\255\255\255\255\191\145\255\255\63\0\255\255\127\0\255\255\255\127\0\0\0\0\0\0\0\0\255\255\55\0\255\255\63\0\255\255\255\3\0\0\0\0\
-    \\0\0\0\0\255\255\255\255\255\255\255\192\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\0\255\255\63\0\255\255\7\0\255\255\3\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\255\255\255\255\255\255\255\255\127\0\0\0\192\255\63\128\255\255\255\255\255\255\255\7\4\0\255\255\255\1\255\3\255\255\255\255\255\255\223\255\240\0\255\255\255\255\79\0\
-    \\255\255\255\255\255\255\255\255\31\222\255\23\0\0\0\0\255\255\251\255\255\255\255\192\3\0\0\0\0\0\0\0\127\189\255\191\255\1\255\255\255\255\255\255\255\7\255\3\239\159\
-    \\249\255\255\253\237\251\159\57\129\224\207\31\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\7\255\195\3\0\0\0\255\255\255\255\
-    \\255\255\255\255\191\0\255\3\0\0\0\0\255\255\255\255\255\255\255\255\17\0\255\3\0\0\0\0\255\255\255\255\255\255\255\1\255\3\0\0\0\0\0\0\255\255\255\231\255\15\
-    \\255\3\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\
-    \\255\255\255\255\255\3\0\128\255\255\255\255\255\255\255\127\128\0\255\255\255\255\255\255\255\255\255\35\0\0\255\255\255\255\255\255\255\255\255\1\255\253\255\255\255\255\127\255\1\0\
-    \\255\3\0\0\252\255\255\255\252\255\255\254\127\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\255\255\255\255\255\255\255\1\255\255\255\127\255\3\255\255\255\255\255\255\255\255\255\127\255\3\255\255\255\63\31\0\255\255\255\255\255\255\255\255\255\255\255\255\255\7\
-    \\255\31\255\1\255\99\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\127\255\255\249\219\7\255\255\255\255\255\255\255\63\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\31\0\127\0\0\0\0\0\255\255\255\255\255\255\255\255\255\15\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\255\255\255\
-    \\150\254\247\10\132\234\150\170\150\247\247\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0"#
-
-isID_ContinueOffsetsBitMap :: Ptr Word16
-isID_ContinueOffsetsBitMap = Ptr
-    "\14\2\133\0\141\0\40\5\22\5\122\8\171\0\153\1\3\1\242\2\94\10\203\0\102\2\71\5\126\10\198\3\208\6\133\0\60\1\36\7\132\0\133\0\158\10\190\10\234\0\41\2\84\4\40\3\4\4\133\0\133\0\64\7\80\0\0\0\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\64\8\32\1\244\1\244\1\112\0\178\2\
-    \\244\1\244\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\99\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\103\5\133\0\222\10\71\2\254\10\76\6\30\11\62\11\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\56\4\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\133\0\
-    \\71\9\44\9\133\0\130\9\18\3\228\3\185\1\199\7\246\4\94\11\126\11\203\5\133\0\158\11\190\11\222\11\49\0\254\11\97\3\162\4\178\4\14\9\30\12\62\12\94\12\126\12\158\12\123\1\190\12\222\12\254\12\44\6\30\13\244\1\62\13\107\6\129\6\96\7\133\0\133\0\133\0\226\4\210\4\62\3\244\1\244\1\244\1\244\1\244\1\244\1\
-    \\244\1\244\1\244\1\76\3\133\0\133\0\133\0\133\0\154\3\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\133\0\133\0\94\13\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\
-    \\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\133\0\133\0\126\13\231\7\244\1\244\1\255\7\31\10\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\129\3\133\0\133\0\133\0\133\0\217\1\16\0\244\1\244\1\
-    \\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\18\0\133\0\31\4\45\4\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\158\13\244\1\244\1\244\1\244\1\244\1\
-    \\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\129\5\244\1\149\5\227\5\244\1\183\6\134\2\146\2\154\8\244\1\244\1\238\8\244\1\244\1\244\1\244\1\190\13\222\13\116\4\130\4\244\1\171\5\244\1\244\1\13\6\254\13\30\14\244\1\244\1\244\1\244\1\62\14\244\1\244\1\244\1\244\1\244\1\
-    \\244\1\244\1\244\1\244\1\244\1\244\1\244\1\246\1\244\1\244\1\244\1\244\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\95\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\87\1\208\2\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\220\2\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\6\7\133\0\133\0\
-    \\232\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\244\1\133\0\133\0\240\1\244\1\244\1\244\1\244\1\244\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\207\1\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\133\0\
-    \\133\0\133\0\133\0\101\1\72\3\133\0"#
-
-{-# INLINE isID_Start #-}
-isID_Start :: Char -> Bool
-isID_Start c = c >= '\x0041' && c <= '\x323AF' && lookupIsID_StartBitMap (ord c)
-
-{-# INLINE lookupIsID_StartBitMap #-}
-lookupIsID_StartBitMap :: Int -> Bool
-lookupIsID_StartBitMap n =
-    lookupBit data# (
-        lookupWord16AsInt offsets# (
-            n `shiftR` 8
-        ) + ((n `shiftR` 3) .&. mask)
-    ) (n .&. 7)
-    where
-    mask = (1 `shiftL` 5) - 1
-    !(Ptr data#) = isID_StartDataBitMap
-    !(Ptr offsets#) = isID_StartOffsetsBitMap
-
-isID_StartDataBitMap :: Ptr Int8
-isID_StartDataBitMap = Ptr
-    "\132\252\47\63\80\253\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\111\
-    \\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\224\255\255\255\255\255\254\255\255\
-    \\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\0\0\0\0\0\0\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\254\255\255\7\254\255\255\7\0\0\0\0\0\4\32\4\255\255\127\255\255\255\127\255\255\255\255\191\32\255\255\255\255\255\255\
-    \\255\128\0\0\255\255\127\0\127\127\127\127\127\127\127\127\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\252\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\7\
-    \\0\255\239\255\255\127\255\255\183\255\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\31\120\12\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\
-    \\255\253\255\255\247\255\255\255\247\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\255\255\255\255\255\63\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\159\255\255\254\255\255\7\255\255\
-    \\255\255\255\255\255\255\255\199\255\1\0\239\254\255\255\63\0\0\0\0\0\255\255\255\31\255\255\255\31\0\0\0\0\255\254\255\255\31\0\0\0\255\255\255\255\255\255\255\255\15\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\255\255\255\255\255\255\7\0\
-    \\255\255\255\255\255\255\7\0\128\0\0\63\60\98\192\225\255\3\64\0\0\255\255\255\255\191\32\255\255\255\255\255\247\255\31\255\255\0\12\0\0\255\255\255\255\255\127\0\128\255\
-    \\255\255\63\255\255\255\255\255\255\255\255\255\255\0\0\126\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\1\0\0\247\15\0\0\255\255\127\196\255\255\255\255\255\255\98\62\5\0\0\56\255\7\28\0\255\255\255\255\7\0\4\0\0\0\39\0\240\0\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\255\255\127\248\255\255\255\255\255\15\0\0\0\0\224\0\252\255\255\255\63\255\1\255\255\
-    \\255\255\255\231\0\0\0\0\0\222\111\4\255\255\255\255\255\31\128\63\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\0\0\
-    \\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\128\255\252\255\255\255\255\255\255\255\255\255\255\255\255\249\255\255\255\
-    \\255\255\255\255\7\235\3\0\0\252\255\255\63\0\255\255\127\0\0\0\255\255\255\31\240\255\255\255\255\255\7\0\0\128\0\0\223\255\0\124\224\159\249\255\255\253\237\35\0\0\
-    \\0\176\3\0\2\0\232\199\61\214\24\199\255\3\0\0\1\0\0\0\0\0\0\0\255\254\255\255\255\31\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\
-    \\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\0\0\0\0\255\255\255\255\255\7\0\0\0\192\254\255\
-    \\255\255\255\255\255\255\255\255\255\255\47\0\96\192\0\156\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\255\255\255\255\15\255\255\255\255\15\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\3\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\128\0\0\
-    \\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\223\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\128\0\255\255\63\0\0\0\0\0\255\255\3\0\0\0\
-    \\0\0\255\255\31\0\0\0\255\255\127\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\254\255\255\7\254\255\255\7\192\255\
-    \\255\255\255\255\255\255\255\255\255\127\252\252\252\28\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\223\188\64\215\255\255\251\255\255\255\255\255\255\255\255\255\191\255\255\255\255\255\255\127\0\255\255\63\0\255\0\0\
-    \\0\191\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\
-    \\255\255\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\255\255\255\255\61\127\61\255\127\255\255\255\255\255\255\254\255\255\
-    \\255\127\2\255\255\255\255\255\1\0\0\0\0\0\0\0\0\255\255\255\135\7\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\61\255\255\255\255\255\255\255\255\7\0\0\0\0\255\255\0\0\255\255\255\255\255\
-    \\255\255\255\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\95\220\31\207\15\255\31\220\31\255\255\255\255\255\255\0\0\16\0\0\0\0\0\0\
-    \\0\255\255\255\255\255\7\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\127\0\0\0\0\0\15\0\0\0\0\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\255\255\255\15\0\0\255\255\255\255\255\255\0\0\15\0\0\0\248\255\255\224\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\111\255\127\242\111\255\255\255\0\128\2\0\0\0\0\0\0\0\0\0\0\0\255\252\255\
-    \\255\255\255\1\0\10\0\0\0\255\255\255\255\255\255\31\0\128\7\0\128\3\0\0\0\255\255\255\255\255\255\0\0\176\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\255\255\255\255\255\127\0\0\0\0\0\15\0\0\0\0\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\7\255\31\255\1\255\3\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\255\255\255\255\255\255\15\0\255\247\255\247\
-    \\183\255\251\255\251\27\0\0\0\0\0\0\0\0\255\255\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\
-    \\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\128\63\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\0\248\160\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\3\0\0\0\248\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\127\0\248\160\255\253\127\95\219\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\63\0\0\255\255\255\255\255\255\255\255\252\255\255\255\255\255\255\0\0\0\0\0\255\15\255\255\
-    \\255\255\0\224\255\255\255\7\255\255\255\255\63\0\255\255\255\63\255\255\255\255\15\255\62\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\
-    \\255\1\0\0\0\0\0\255\255\3\128\255\255\3\0\255\255\3\0\255\223\1\0\255\255\255\255\255\255\15\0\0\0\128\16\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\
-    \\1\255\255\255\255\255\5\255\255\255\255\255\255\255\255\63\0\255\255\63\0\255\255\7\0\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\251\255\255\15\0\128\1\
-    \\0\0\0\0\0\0\0\127\189\255\191\255\1\255\255\255\255\255\127\0\0\0\0\0\0\255\255\255\63\31\0\255\255\255\255\255\15\255\255\255\3\0\0\0\0\0\0\255\255\255\
-    \\255\255\255\255\255\255\255\255\1\255\255\255\255\255\5\255\255\255\255\255\255\255\255\63\0\255\255\255\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\192\0\0\0\0\0\
-    \\0\0\0\255\255\255\255\255\255\255\255\255\7\1\0\0\0\0\0\0\0\248\255\0\0\0\0\0\0\0\0\11\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\63\4\16\1\0\0\255\255\255\1\255\7\255\255\255\126\0\0\255\255\255\255\255\
-    \\3\0\0\0\0\0\0\253\255\255\255\0\0\0\224\255\255\255\255\255\255\255\255\255\255\63\0\2\0\0\252\255\255\255\7\48\4\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\
-    \\255\255\255\255\255\255\35\0\0\1\255\3\0\254\255\225\159\249\255\255\253\197\35\0\64\0\176\3\0\3\16\224\135\249\255\255\253\109\3\0\0\0\94\0\0\28\0\224\191\251\
-    \\255\255\253\237\35\0\0\1\0\3\0\0\2\224\223\253\255\255\253\255\35\0\0\0\39\3\0\0\0\225\223\253\255\255\253\239\35\0\0\0\96\3\0\6\0\240\223\253\255\255\
-    \\255\255\39\0\64\112\128\3\0\0\252\224\255\127\252\255\255\251\47\127\0\0\0\0\0\0\0\254\255\255\255\255\255\13\0\127\0\0\0\0\0\0\0\214\247\255\255\175\255\13\
-    \\32\95\0\0\240\0\0\0\0\224\255\255\255\255\255\15\0\224\31\0\0\0\0\0\0\248\255\255\255\1\192\0\252\255\255\255\255\63\0\0\0\224\0\0\0\254\3\62\31\254\
-    \\255\255\255\255\255\255\255\255\255\127\248\254\255\255\255\255\255\255\255\255\255\255\247\187\247\255\255\7\0\0\0\255\255\255\255\255\255\15\0\252\255\255\255\255\255\15\0\0\0\0\
-    \\0\0\0\252\104\126\126\126\0\127\127\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\0\0\0\63\253\255\255\255\255\191\145\255\255\63\0\255\
-    \\255\127\0\255\255\255\127\0\0\0\0\0\0\0\0\255\255\55\0\248\255\255\255\255\255\255\0\0\0\0\0\0\0\38\0\248\255\255\255\255\255\0\0\0\0\255\255\255\1\0\
-    \\0\248\255\255\255\127\0\0\0\144\0\255\255\255\255\71\0\248\255\255\255\255\255\7\0\30\0\0\20\0\0\0\0\224\159\249\255\255\253\237\35\0\0\1\224\3\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\7\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\248\255\
-    \\255\255\255\7\4\0\0\1\240\255\255\255\255\255\3\0\32\0\0\255\255\255\255\255\255\255\255\255\1\255\253\255\255\255\127\0\0\1\0\0\0\0\0\252\255\255\255\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\127\251\255\255\255\255\1\0\64\0\0\0\191\253\255\255\255\3\0\1\0\0\0\0\0\0\0\0\0\0\0\0\244\255\253\255\255\255\15\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\255\255\255\255\255\255\255\1\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\63\0\0\255\255\223\255\255\255\223\255\255\127\255\
-    \\255\255\127\255\255\255\253\255\255\255\253\255\255\247\15\0\0\0\0\0\0\255\255\255\255\255\255\255\255\15\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\239\255\255\255\150\254\247\10\132\234\150\170\150\247\247\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0"#
-
-isID_StartOffsetsBitMap :: Ptr Word16
-isID_StartOffsetsBitMap = Ptr
-    "\157\0\51\0\59\0\24\5\220\0\161\5\10\4\95\10\65\10\189\10\221\10\172\3\253\10\29\11\61\11\198\3\89\2\51\0\134\5\245\5\50\0\51\0\222\1\3\9\31\9\111\9\184\4\93\11\12\3\133\0\51\0\17\6\108\4\0\0\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\77\1\188\0\9\1\9\1\125\11\91\0\
-    \\9\1\9\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\133\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\160\1\51\0\121\2\111\3\157\11\140\3\184\2\189\11\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\241\2\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\51\0\
-    \\109\8\82\8\51\0\168\8\128\4\212\4\45\1\222\3\238\3\200\8\42\4\190\7\51\0\55\5\221\11\167\9\253\1\55\9\64\2\69\4\85\4\156\4\253\11\29\12\87\9\61\12\17\7\73\6\49\6\93\12\82\3\241\6\125\12\9\1\157\12\189\12\13\1\221\12\51\0\51\0\51\0\4\5\244\4\29\2\9\1\9\1\9\1\9\1\9\1\9\1\
-    \\9\1\9\1\9\1\43\2\51\0\51\0\51\0\51\0\145\2\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\51\0\51\0\253\12\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\
-    \\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\51\0\51\0\29\13\170\6\9\1\9\1\194\6\199\9\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\164\7\51\0\51\0\51\0\51\0\238\0\16\0\9\1\9\1\
-    \\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\18\0\51\0\216\2\230\2\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\99\7\9\1\9\1\9\1\9\1\9\1\
-    \\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\109\5\109\1\121\1\61\13\9\1\9\1\9\1\9\1\9\1\9\1\9\1\222\7\248\7\44\3\58\3\9\1\138\6\9\1\9\1\210\6\153\1\93\13\9\1\9\1\9\1\9\1\125\13\9\1\9\1\9\1\9\1\9\1\
-    \\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\129\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\121\0\188\1\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\200\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\215\5\51\0\51\0\
-    \\253\0\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\9\1\51\0\51\0\5\1\9\1\9\1\9\1\9\1\9\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\67\1\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\51\0\
-    \\51\0\51\0\51\0\77\1"#
-
-{-# INLINE isUppercase #-}
-isUppercase :: Char -> Bool
-isUppercase c = c >= '\x0041' && c <= '\x1F189' && lookupIsUppercaseBitMap (ord c)
-
-{-# INLINE lookupIsUppercaseBitMap #-}
-lookupIsUppercaseBitMap :: Int -> Bool
-lookupIsUppercaseBitMap n =
-    lookupBit data# (
-        lookupWord16AsInt offsets# (
-            n `shiftR` 8
-        ) + ((n `shiftR` 3) .&. mask)
-    ) (n .&. 7)
-    where
-    mask = (1 `shiftL` 5) - 1
-    !(Ptr data#) = isUppercaseDataBitMap
-    !(Ptr offsets#) = isUppercaseOffsetsBitMap
-
-isUppercaseDataBitMap :: Ptr Int8
-isUppercaseDataBitMap = Ptr
-    "\255\255\255\255\255\255\0\0\0\0\0\0\85\85\85\85\1\84\85\85\85\85\85\85\171\42\85\85\85\85\85\85\254\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\255\255\255\255\255\231\0\0\0\0\0\0\0\0\85\85\85\85\85\21\0\0\85\85\85\5\0\0\0\0\0\0\0\0\0\0\0\0\240\255\255\31\
-    \\0\0\0\192\255\255\127\0\0\0\0\255\255\255\1\0\0\0\4\0\0\0\0\0\0\254\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\255\255\255\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\0\0\0\0\0\0\0\0\254\255\255\7\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\255\255\127\127\0\0\0\0\255\0\63\0\255\0\255\0\63\0\170\0\255\0\0\0\0\0\0\0\0\0\15\0\15\0\15\0\31\0\15\85\85\85\
-    \\85\85\85\85\170\170\84\85\85\85\85\85\43\214\206\219\177\213\210\174\17\144\164\170\74\85\85\210\85\85\85\85\85\85\85\85\85\85\85\85\85\85\85\85\85\85\21\64\85\85\
-    \\85\85\85\85\85\85\85\85\85\85\254\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\255\255\
-    \\255\0\0\0\0\0\0\255\255\255\3\255\255\255\3\255\255\255\3\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\255\255\255\255\191\32\0\0\0\0\0\0\84\85\84\85\85\85\85\85\85\85\0\106\85\40\69\85\85\125\95\85\245\2\65\1\0\0\32\0\85\85\85\85\
-    \\85\85\5\108\122\85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\255\255\255\255\255\255\255\255\255\255\63\0\132\56\39\62\80\61\15\192\32\0\0\0\255\255\0\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\247\255\247\
-    \\55\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\69\128\64\215\254\255\251\15\0\0\0\128\
-    \\28\85\85\85\144\230\176\231\223\31\0\0\0\123\95\252\1\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\0\255\255\255\1\
-    \\0\0\0\252\255\255\7\176\231\223\31\0\0\0\123\95\252\1\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\208\100\222\63\
-    \\0\0\0\255\255\255\3\0\0\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\255\247\255\247\55\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\3\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\208\100\222\63\0\0\0\255\255\255\3\0\0\
-    \\0\0\0\0\0\0\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\0\0\0\0\0\0\157\234\37\192\85\85\85\85\
-    \\85\85\85\85\85\85\85\85\5\40\4\0"#
-
-isUppercaseOffsetsBitMap :: Ptr Word16
-isUppercaseOffsetsBitMap = Ptr
-    "\184\0\247\0\190\1\62\2\0\0\26\0\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\130\1\59\1\59\1\226\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\40\0\59\1\22\1\215\0\59\1\2\2\59\1\59\1\69\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\62\3\59\1\59\1\59\1\59\1\59\1\
-    \\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\
-    \\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\
-    \\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\64\0\158\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\
-    \\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\
-    \\59\1\59\1\59\1\59\1\59\1\121\0\59\1\59\1\59\1\59\1\197\2\20\2\59\1\59\1\59\1\59\1\59\1\59\1\137\0\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\160\0\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\
-    \\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\
-    \\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\214\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\
-    \\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\
-    \\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\165\2\94\2\113\2\93\0\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\113\1\59\1\59\1\59\1\59\1\59\1\59\1\59\1\95\1"#
-
-{-# INLINE isLowercase #-}
-isLowercase :: Char -> Bool
-isLowercase c = c >= '\x0061' && c <= '\x1E943' && lookupIsLowercaseBitMap (ord c)
-
-{-# INLINE lookupIsLowercaseBitMap #-}
-lookupIsLowercaseBitMap :: Int -> Bool
-lookupIsLowercaseBitMap n =
-    lookupBit data# (
-        lookupWord16AsInt offsets# (
-            n `shiftR` 8
-        ) + ((n `shiftR` 3) .&. mask)
-    ) (n .&. 7)
-    where
-    mask = (1 `shiftL` 5) - 1
-    !(Ptr data#) = isLowercaseDataBitMap
-    !(Ptr offsets#) = isLowercaseOffsetsBitMap
-
-isLowercaseDataBitMap :: Ptr Int8
-isLowercaseDataBitMap = Ptr
-    "\170\170\170\170\170\170\170\85\85\171\170\170\170\170\170\212\41\49\36\78\42\45\81\230\64\82\85\181\170\170\41\170\170\170\170\170\170\250\147\133\170\255\255\255\255\255\255\255\255\239\
-    \\255\255\255\255\1\3\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252\255\255\15\0\0\192\223\
-    \\255\255\0\0\0\252\255\255\15\0\0\192\235\239\255\0\0\0\252\255\255\223\15\0\0\192\255\255\127\63\0\0\0\255\255\255\253\0\0\0\252\255\255\247\11\0\0\0\0\0\
-    \\0\255\255\255\255\255\255\170\170\170\170\2\168\170\170\170\170\170\170\84\213\170\170\170\170\170\170\0\0\0\0\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\15\255\251\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252\255\255\255\15\127\0\248\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\255\255\0\0\0\0\
-    \\0\0\0\0\32\0\0\0\0\0\138\60\0\0\1\0\0\240\255\255\255\127\227\170\170\170\47\25\255\255\255\255\191\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\63\0\196\8\0\
-    \\0\128\16\50\192\67\0\0\0\0\255\255\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\3\0\0\0\0\168\170\171\
-    \\170\170\170\170\170\170\170\255\149\170\80\186\170\170\130\160\170\10\5\170\2\0\0\92\7\170\170\170\170\170\170\170\170\170\170\170\170\170\170\170\170\170\170\234\191\170\170\170\170\170\
-    \\170\170\170\170\170\170\170\0\0\0\0\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\255\255\255\255\255\255\7\0\0\196\8\0\0\128\16\50\192\67\0\0\0\0\255\255\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\128\0\0\255\31\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\254\255\255\7\0\0\0\0\0\4\32\4\0\0\0\128\255\255\127\255\15\0\0\192\255\255\255\0\0\0\252\255\255\15\0\0\192\255\255\255\0\
-    \\0\0\252\255\255\15\0\0\192\255\255\255\0\0\0\252\255\255\63\0\0\0\252\255\255\247\3\0\0\240\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\255\251\255\251\27\0\0\0\0\
-    \\0\0\0\0\170\170\170\170\170\42\0\0\170\170\170\58\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\185\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\254\255\
-    \\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\98\21\218\63\170\170\170\170\170\170\170\170\170\170\170\170\26\80\8\0\255\0\
-    \\63\0\255\0\255\0\63\0\255\0\255\0\255\63\255\0\255\0\255\0\223\64\220\0\207\0\255\0\220\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\128\0\0\255\31\0\
-    \\0\0\0\0\0\0\0\0\0\0\0"#
-
-isLowercaseOffsetsBitMap :: Ptr Word16
-isLowercaseOffsetsBitMap = Ptr
-    "\135\2\0\0\31\0\90\1\145\0\171\0\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\46\1\40\1\40\1\158\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\242\2\218\2\13\2\130\3\115\2\190\1\40\1\40\1\207\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\98\3\122\1\40\1\40\1\40\1\40\1\
-    \\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\
-    \\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\
-    \\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\28\3\237\1\40\1\40\1\40\1\66\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\
-    \\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\
-    \\40\1\37\1\40\1\40\1\40\1\72\3\40\1\40\1\40\1\40\1\198\0\4\3\40\1\48\3\40\1\40\1\40\1\40\1\65\2\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\130\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\
-    \\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\
-    \\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\60\0\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\
-    \\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\
-    \\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\89\0\167\2\186\2\119\0\40\1\40\1\40\1\40\1\40\1\40\1\40\1\230\0\0\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\40\1\28\1"#
-
-{-# INLINE isAlphabetic #-}
-isAlphabetic :: Char -> Bool
-isAlphabetic c = c >= '\x0041' && c <= '\x323AF' && lookupIsAlphabeticBitMap (ord c)
-
-{-# INLINE lookupIsAlphabeticBitMap #-}
-lookupIsAlphabeticBitMap :: Int -> Bool
-lookupIsAlphabeticBitMap n =
-    lookupBit data# (
-        lookupWord16AsInt offsets# (
-            n `shiftR` 8
-        ) + ((n `shiftR` 3) .&. mask)
-    ) (n .&. 7)
-    where
-    mask = (1 `shiftL` 5) - 1
-    !(Ptr data#) = isAlphabeticDataBitMap
-    !(Ptr offsets#) = isAlphabeticOffsetsBitMap
-
-isAlphabeticDataBitMap :: Ptr Int8
-isAlphabeticDataBitMap = Ptr
-    "\132\252\47\62\80\189\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\111\
-    \\240\239\254\255\255\63\0\0\0\0\0\255\255\255\31\255\255\255\31\0\0\0\0\255\254\255\255\31\0\0\0\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\7\255\255\255\255\255\255\255\254\0\192\255\255\255\255\255\255\255\255\255\255\255\255\239\31\254\225\
-    \\0\156\224\255\255\255\255\255\254\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\0\0\0\0\0\0\255\255\255\252\255\31\0\0\255\255\255\1\255\7\255\255\255\126\
-    \\0\0\255\255\255\255\255\3\240\255\248\3\255\255\255\255\191\32\255\255\255\255\255\255\255\128\0\0\255\255\127\0\127\127\127\127\127\127\127\127\255\255\255\255\255\255\255\3\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\128\255\31\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\3\252\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\255\255\127\0\255\239\255\255\127\255\255\183\255\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\120\12\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\255\255\255\247\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\0\
-    \\0\0\0\0\0\0\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\159\255\255\254\255\255\7\255\255\255\255\255\255\255\255\255\199\255\1\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\255\255\255\255\255\255\7\0\255\255\255\255\255\255\7\0\240\0\255\255\255\255\71\0\255\
-    \\255\255\255\255\255\255\255\30\192\0\20\0\0\0\0\254\255\255\7\254\255\255\7\192\255\255\255\255\255\255\255\255\255\255\127\252\252\252\28\0\0\0\0\255\255\255\255\255\255\0\
-    \\224\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\252\255\255\255\7\48\4\255\31\255\255\0\12\0\0\255\255\255\255\255\127\240\143\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\0\0\126\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\128\255\252\255\255\255\255\255\255\255\255\255\255\255\255\249\255\255\255\255\255\255\255\7\235\3\0\0\252\255\255\255\7\255\255\
-    \\255\255\7\0\255\255\255\31\255\255\255\255\255\255\247\255\0\128\0\0\255\255\0\124\255\255\255\255\7\0\4\0\0\0\39\0\240\0\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\255\255\127\248\255\255\255\255\255\15\255\255\255\255\255\255\255\127\254\255\31\0\0\0\0\0\128\0\0\
-    \\128\1\112\0\0\0\0\0\0\255\255\255\255\255\31\128\63\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\0\0\255\255\255\
-    \\255\255\15\0\0\255\255\251\255\255\255\159\192\3\0\0\0\0\0\0\0\127\189\255\191\255\1\255\255\255\255\255\255\255\1\0\0\0\0\0\0\0\255\254\255\255\255\31\254\255\
-    \\15\255\255\254\255\255\255\31\0\0\0\0\0\0\0\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\
-    \\1\0\0\0\0\0\238\159\249\255\255\253\237\227\159\25\192\176\15\0\2\0\236\199\61\214\24\199\255\195\199\29\129\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\255\255\255\255\255\27\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\223\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\128\0\255\255\63\0\0\0\0\0\255\
-    \\255\3\0\0\0\0\0\255\255\31\0\0\0\255\255\127\0\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\128\0\0\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\255\255\255\255\
-    \\255\255\3\0\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\100\222\255\
-    \\235\239\255\255\255\255\255\255\255\239\255\223\225\255\15\0\254\255\239\159\249\255\255\253\197\227\159\89\128\176\15\0\3\16\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\255\255\255\254\255\255\255\127\2\255\255\
-    \\255\255\255\1\0\0\0\0\255\191\182\0\255\255\255\135\7\0\255\255\255\255\255\255\255\127\17\0\0\0\0\0\0\0\255\255\255\255\255\255\63\1\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\127\0\0\0\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\15\0\0\255\255\255\255\255\255\255\255\187\7\0\
-    \\128\3\0\0\0\255\255\255\255\255\255\255\255\179\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\127\0\0\0\63\0\0\0\0\255\255\255\255\
-    \\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\31\255\1\255\67\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\111\255\127\242\111\255\255\255\191\153\7\0\0\0\0\0\0\0\0\0\0\0\255\252\255\255\255\255\255\252\
-    \\26\0\0\0\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\254\255\255\7\254\255\255\7\0\0\0\0\0\4\32\4\255\255\127\255\255\255\127\255\15\255\1\0\0\255\255\
-    \\255\63\31\0\255\255\255\255\255\15\255\255\255\3\0\0\0\0\0\0\239\255\255\255\150\254\247\10\132\234\150\170\150\247\247\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\
-    \\0\0\255\255\255\3\255\255\255\3\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\223\188\64\215\255\255\251\255\255\255\255\255\255\255\255\255\
-    \\191\255\255\255\255\0\0\0\255\255\255\255\255\255\15\0\255\255\255\255\255\255\255\255\47\0\0\0\0\0\252\232\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\
-    \\255\255\255\255\61\127\61\255\127\255\255\255\255\255\255\127\249\0\0\255\255\255\255\255\255\255\255\0\60\255\255\255\255\191\32\255\255\255\255\255\247\127\0\248\224\255\253\127\95\219\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\
-    \\127\0\248\224\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\63\0\0\255\255\255\255\255\255\255\255\252\255\255\255\255\
-    \\255\255\0\0\0\0\0\255\15\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\224\255\255\255\7\255\255\255\255\
-    \\255\7\255\255\255\63\255\255\255\255\15\255\62\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\0\0\0\0\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\255\255\255\255\15\255\255\255\255\15\128\255\255\15\0\255\255\15\0\255\223\13\0\255\255\255\255\255\255\207\255\255\1\
-    \\128\16\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\1\255\255\255\255\255\7\255\255\255\255\255\255\255\255\63\0\0\0\0\0\62\0\255\255\255\255\255\255\255\1\4\0\
-    \\255\255\255\1\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\255\255\255\3\255\255\255\3\255\255\
-    \\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\255\255\255\255\61\
-    \\127\61\255\127\255\255\255\255\255\61\255\255\255\255\255\255\255\255\7\0\0\0\0\255\255\0\0\255\255\255\255\255\255\255\255\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\
-    \\63\255\255\255\255\255\255\223\95\220\31\207\15\255\31\220\31\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\
-    \\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\238\135\249\255\255\253\109\195\135\25\2\94\0\0\63\0\238\191\251\255\255\
-    \\253\237\227\191\27\1\0\15\0\0\30\255\223\253\255\255\253\255\227\223\29\96\39\15\0\0\0\239\223\253\255\255\253\239\227\223\29\96\96\15\0\14\0\255\223\253\255\255\255\255\
-    \\231\223\93\240\128\15\0\0\252\238\255\127\252\255\255\251\47\127\128\95\255\0\0\12\0\254\255\255\255\255\255\255\7\127\32\0\0\0\0\0\0\214\247\255\255\175\255\255\59\95\
-    \\32\0\240\0\0\0\0\255\255\255\255\255\255\239\255\239\31\0\0\0\0\0\0\255\255\255\255\255\243\0\252\255\255\255\255\191\255\3\0\255\255\255\255\255\255\127\0\0\224\0\
-    \\252\255\255\255\63\255\1\255\255\255\255\255\231\0\0\0\0\0\222\111\4\224\0\0\0\254\3\62\31\254\255\255\255\255\255\255\255\255\255\127\224\254\255\255\255\255\255\255\255\255\
-    \\255\255\247\255\255\255\255\255\255\127\0\255\63\0\0\255\255\127\252\255\255\255\255\255\255\255\127\5\0\0\56\255\255\60\0\126\126\126\0\127\127\255\255\255\255\255\247\255\3\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\0\0\255\255\255\255\255\0\255\255\255\255\255\255\15\0\255\247\255\247\183\255\251\255\251\27\0\0\0\0\0\0\0\0\255\
-    \\255\255\255\255\255\127\0\255\255\63\0\255\0\0\0\191\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\63\253\255\255\255\255\191\145\255\255\63\0\255\255\127\0\255\255\255\
-    \\127\0\0\0\0\0\0\0\0\255\255\55\0\255\255\63\0\255\255\255\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\192\0\0\0\0\0\0\0\0\255\255\255\255\255\
-    \\255\63\0\255\255\63\0\255\255\7\0\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\239\159\249\255\255\253\237\227\159\25\129\224\15\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\255\255\255\231\255\7\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\231\127\0\
-    \\0\255\255\255\255\255\255\255\255\255\32\0\0\255\255\255\255\255\255\255\255\255\1\255\253\255\255\255\255\127\127\1\0\0\0\0\0\252\255\255\255\252\255\255\254\127\0\0\0\0\
-    \\0\0\0\0\0\127\251\255\255\255\255\127\180\203\0\0\0\191\253\255\255\255\127\123\1\0\0\0\0\0\0\0\0\0\0\0\0\255\255\253\255\255\255\255\199\1\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\255\255\255\255\255\255\255\1\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\63\0\0\255\255\255\255\255\255\0\0\15\0\0\0\248\255\255\224\255\
-    \\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\135\255\255\255\255\255\255\255\128\255\255\0\0\0\0\0\0\0\0\11\0\3\0\255\255\223\
-    \\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\247\15\0\0\0\0\0\0\255\255\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\127\255\255\249\219\7\255\255\255\255\255\255\255\63\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\
-    \\255\143\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"#
-
-isAlphabeticOffsetsBitMap :: Ptr Word16
-isAlphabeticOffsetsBitMap = Ptr
-    "\69\7\82\0\90\0\178\7\28\1\206\5\120\0\179\2\182\0\122\5\119\10\82\4\151\10\183\10\215\10\10\4\11\8\82\0\240\7\253\9\81\0\82\0\30\2\20\9\48\9\96\7\159\3\247\10\23\11\252\0\82\0\25\10\23\5\0\0\73\1\73\1\43\5\73\1\73\1\73\1\73\1\73\1\73\1\73\1\141\1\212\0\109\4\73\1\55\11\152\0\
-    \\73\1\73\1\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\45\7\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\
-    \\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\
-    \\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\224\1\82\0\211\2\45\3\208\7\74\3\87\11\119\11\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\
-    \\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\131\3\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\82\0\
-    \\70\8\43\8\82\0\129\8\183\4\149\2\109\1\34\4\50\4\188\8\247\8\151\11\82\0\183\11\215\11\247\11\49\0\23\12\97\2\144\4\160\4\211\4\70\9\121\2\237\3\55\12\103\6\6\6\238\5\87\12\16\3\236\6\119\12\73\1\151\12\183\12\77\1\215\12\82\0\82\0\82\0\3\5\243\4\62\2\73\1\73\1\73\1\73\1\73\1\73\1\
-    \\73\1\73\1\73\1\76\2\82\0\82\0\82\0\82\0\235\2\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\82\0\82\0\247\12\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\
-    \\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\82\0\82\0\23\13\55\13\73\1\73\1\133\4\87\13\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\161\8\82\0\82\0\82\0\82\0\46\1\16\0\73\1\73\1\
-    \\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\18\0\82\0\106\3\120\3\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\185\6\73\1\73\1\73\1\73\1\73\1\
-    \\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\97\5\173\1\185\1\119\13\73\1\73\1\73\1\73\1\73\1\73\1\73\1\151\13\183\13\191\3\205\3\73\1\71\6\73\1\73\1\205\6\217\1\215\13\73\1\73\1\73\1\73\1\128\7\73\1\73\1\154\7\73\1\73\1\
-    \\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\
-    \\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\
-    \\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\
-    \\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\248\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\240\0\252\1\82\0\82\0\82\0\
-    \\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\8\2\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\176\5\82\0\82\0\
-    \\61\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\73\1\82\0\82\0\69\1\73\1\73\1\73\1\73\1\73\1\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\131\1\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\82\0\
-    \\82\0\82\0\82\0\141\1"#
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/DerivedCoreProperties.txt
+-- |
+-- Module      : Unicode.Internal.Char.DerivedCoreProperties
+-- Copyright   : (c) 2020 Composewell Technologies and Contributors
+-- License     : Apache-2.0
+-- Maintainer  : streamly@composewell.com
+-- Stability   : experimental
+
+{-# OPTIONS_HADDOCK hide #-}
+{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
+{-# HLINT ignore "Use camelCase" #-}
+
+module Unicode.Internal.Char.DerivedCoreProperties
+    ( isXID_Continue
+    , isXID_Start
+    , isID_Continue
+    , isID_Start
+    , isUppercase
+    , isLowercase
+    , isAlphabetic
+    ) where
+
+import Data.Bits (Bits(..))
+import Data.Char (ord)
+import Data.Int (Int8)
+import Data.Word (Word16)
+import GHC.Exts (Ptr(..))
+import Unicode.Internal.Bits (lookupBit, lookupWord16AsInt)
+
+{-# INLINE isXID_Continue #-}
+isXID_Continue :: Char -> Bool
+isXID_Continue c
+    | c < '\x002F' = False
+    | c < '\x323B0' = lookupIsXID_ContinueBitMap (ord c)
+    | c < '\xE0000' = False
+    | c < '\xE01F0' = lookupIsXID_ContinueBitMap (ord c - 0xADC50)
+    | otherwise = False
+
+{-# INLINE lookupIsXID_ContinueBitMap #-}
+lookupIsXID_ContinueBitMap :: Int -> Bool
+lookupIsXID_ContinueBitMap n =
+    lookupBit data# (
+        lookupWord16AsInt offsets# (
+            n `shiftR` 8
+        ) + ((n `shiftR` 3) .&. mask)
+    ) (n .&. 7)
+    where
+    mask = (1 `shiftL` 5) - 1
+    !(Ptr data#) = isXID_ContinueDataBitMap
+    !(Ptr offsets#) = isXID_ContinueOffsetsBitMap
+
+isXID_ContinueDataBitMap :: Ptr Int8
+isXID_ContinueDataBitMap = Ptr
+    "\224\255\255\255\255\255\254\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\0\0\0\0\0\0\255\255\0\0\255\255\24\0\0\224\0\0\0\0\138\170\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\31\255\3\0\248\15\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\255\255\255\255\255\255\7\0\255\255\255\255\255\255\7\0\4\0\0\0\39\0\240\0\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\255\255\127\248\255\255\255\255\255\15\255\255\255\255\255\255\255\127\
+    \\255\255\255\159\255\3\255\3\128\0\255\191\255\127\0\0\0\0\0\0\255\7\255\255\255\255\255\255\255\255\255\195\255\255\255\255\255\255\255\255\255\255\255\255\239\159\255\253\255\159\
+    \\238\159\249\255\255\253\237\243\159\57\224\176\207\255\2\0\236\199\61\214\24\199\255\195\199\61\129\0\192\255\0\0\184\255\3\255\255\255\255\255\255\255\255\255\255\255\1\255\255\255\
+    \\255\255\7\255\255\255\255\255\255\255\255\63\0\0\255\255\255\15\255\7\255\255\255\126\128\255\255\255\255\255\255\255\255\255\251\255\255\255\255\191\32\255\255\255\255\255\255\255\128\0\
+    \\128\255\255\127\0\127\127\127\127\127\127\127\127\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\255\255\255\255\61\127\61\255\127\255\255\255\255\255\255\127\0\15\0\
+    \\255\3\248\255\255\224\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\
+    \\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\132\252\47\63\80\253\
+    \\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\111\240\239\254\255\255\63\
+    \\135\0\0\0\0\255\255\255\31\255\255\255\31\0\0\0\0\255\254\255\255\127\0\0\0\48\0\0\0\0\0\128\1\0\16\0\0\0\2\128\0\0\255\31\0\0\0\0\0\0\
+    \\255\31\226\255\1\0\0\3\255\3\160\194\255\254\255\255\255\31\254\255\223\255\255\254\255\255\255\31\64\0\0\0\0\0\0\0\224\0\0\0\254\255\62\31\254\255\255\255\255\255\
+    \\255\255\255\255\127\230\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\255\255\
+    \\255\255\255\255\231\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\63\36\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\255\1\0\0\63\0\0\0\0\128\255\252\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\249\255\255\255\255\255\255\255\63\235\31\0\0\252\255\223\253\255\255\253\255\243\223\61\96\39\207\255\0\0\239\223\253\255\255\253\239\243\223\61\
+    \\96\96\207\255\14\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\255\3\254\255\255\135\254\255\255\7\0\0\0\0\0\4\160\4\255\255\127\255\255\255\127\255\15\255\15\192\255\255\255\255\63\31\0\255\255\255\255\255\15\255\255\255\3\255\7\0\
+    \\0\0\0\255\3\254\255\255\135\254\255\255\7\224\255\255\255\255\255\255\255\255\255\255\127\252\252\252\28\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\255\255\63\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\7\255\31\255\1\255\99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\1\0\0\0\191\231\223\223\255\255\255\123\95\252\
+    \\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\255\255\255\247\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\207\255\254\255\239\159\249\255\255\253\197\243\159\121\128\176\207\255\3\80\
+    \\255\255\255\255\255\31\255\63\255\67\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\127\0\0\255\255\255\255\255\255\255\3\255\239\255\255\
+    \\127\255\255\183\255\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\
+    \\255\1\0\255\3\255\255\255\255\255\0\255\3\255\255\255\255\63\190\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\27\3\0\28\0\0\0\
+    \\0\0\0\240\255\255\255\255\255\255\255\255\255\255\255\63\240\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\251\252\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\223\184\192\215\255\255\251\255\255\255\255\255\255\255\255\255\191\255\223\253\255\255\255\255\255\223\125\240\128\207\255\0\252\238\255\127\252\255\255\251\47\127\132\95\255\192\255\12\
+    \\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\255\255\255\255\255\63\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\
+    \\3\255\255\255\255\255\255\127\0\255\255\63\0\255\0\0\0\191\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\7\255\
+    \\255\255\255\255\63\255\255\255\255\15\0\255\255\255\31\255\255\255\255\255\255\255\255\1\128\255\3\255\255\255\127\251\255\255\255\255\127\180\255\0\255\3\191\253\255\255\255\127\251\1\
+    \\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\127\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\
+    \\63\255\255\255\255\191\32\255\255\255\255\255\247\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\61\255\255\255\255\255\255\255\255\231\0\254\3\0\255\255\0\0\255\255\255\255\255\255\255\255\255\255\63\63\255\255\255\
+    \\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\95\220\31\207\15\255\31\220\31\255\255\253\255\255\255\255\199\7\0\255\7\0\0\0\0\0\0\0\0\0\0\1\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\127\0\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\111\255\127\242\111\255\255\255\
+    \\191\249\15\0\255\3\0\0\0\0\0\0\0\0\255\252\255\255\255\255\255\252\27\0\0\0\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\248\15\0\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\251\252\255\255\255\255\255\255\255\255\255\255\255\255\255\255\254\255\255\255\127\2\255\255\255\255\255\1\254\255\255\255\255\191\182\0\255\255\255\135\7\0\255\
+    \\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\247\207\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\
+    \\255\255\247\255\255\255\247\255\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\247\207\255\255\255\255\255\255\127\248\255\255\255\255\255\31\32\0\16\
+    \\0\0\248\254\255\0\0\0\0\0\0\0\0\0\0\255\255\255\31\128\0\255\255\255\255\1\0\0\0\255\255\63\0\0\0\0\0\255\255\31\0\0\0\255\255\127\0\248\224\255\
+    \\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\
+    \\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\184\192\215\255\255\251\255\255\255\255\255\255\255\255\255\191\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\255\255\255\255\255\255\255\255\135\255\255\255\255\255\255\255\128\255\255\0\
+    \\0\0\0\0\0\0\0\27\0\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\238\135\249\255\255\253\109\211\
+    \\135\57\2\94\192\255\63\0\238\191\251\255\255\253\237\243\191\59\1\0\207\255\0\254\254\255\255\255\255\255\255\7\255\127\255\3\0\0\0\0\214\247\255\255\175\255\255\63\95\127\
+    \\255\243\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\159\255\255\254\255\255\7\255\255\255\255\255\255\255\255\255\199\255\1\255\255\63\128\255\255\31\0\255\255\15\0\
+    \\255\223\13\0\255\255\255\255\255\255\255\255\255\255\143\48\255\3\0\0\255\255\255\255\255\255\255\0\255\227\255\255\255\255\255\63\255\7\255\255\255\255\255\231\0\0\247\255\255\255\
+    \\255\7\255\31\255\255\255\15\0\0\255\255\255\255\255\255\240\191\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\16\0\0\255\255\255\255\255\255\15\0\
+    \\255\255\255\255\255\255\255\255\63\0\255\3\255\255\255\232\255\255\255\255\255\255\127\0\255\63\255\3\255\255\127\252\255\255\255\255\255\255\255\255\7\0\0\56\255\255\124\0\126\126\
+    \\126\0\127\127\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\55\255\3\255\255\255\255\255\255\255\63\0\0\255\255\255\255\255\255\255\255\252\255\
+    \\255\255\255\255\255\0\0\0\0\0\255\3\255\255\255\255\0\224\255\255\255\7\255\255\255\255\255\7\255\255\255\63\255\255\255\255\15\255\62\0\0\0\0\0\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\3\255\255\255\255\15\255\255\255\255\15\255\255\255\255\255\0\255\255\255\255\255\255\15\0\255\247\255\247\183\255\251\255\251\27\
+    \\255\255\255\255\255\255\15\0\63\253\255\255\255\255\191\145\255\255\63\0\255\255\127\0\255\255\255\127\0\0\0\0\0\0\0\0\255\255\55\0\255\255\63\0\255\255\255\3\0\0\
+    \\0\0\0\0\0\0\255\255\255\255\255\255\255\192\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\0\255\255\63\0\255\255\7\0\255\255\3\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\192\255\63\128\255\255\255\255\255\255\255\7\4\0\255\255\255\1\255\3\255\255\255\255\255\255\223\255\240\0\255\255\255\255\
+    \\79\0\255\255\255\255\255\255\255\255\31\222\255\23\0\0\0\0\255\255\251\255\255\255\255\192\3\0\0\0\0\0\0\0\127\189\255\191\255\1\255\255\255\255\255\255\255\7\255\3\
+    \\239\159\249\255\255\253\237\251\159\57\129\224\207\31\31\0\255\75\255\255\255\255\191\255\165\247\15\0\6\0\0\0\255\255\255\255\255\255\255\255\255\7\255\195\3\0\0\0\255\255\
+    \\255\255\255\255\255\255\191\0\255\3\0\0\0\0\255\255\255\255\255\255\255\255\17\0\255\3\0\0\0\0\255\255\255\255\255\255\255\1\255\3\255\255\15\0\0\0\255\255\255\231\
+    \\255\15\255\3\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\255\255\
+    \\255\255\255\255\255\255\255\3\0\128\255\255\255\255\255\255\255\127\128\0\255\255\255\255\255\255\255\255\255\35\0\0\255\255\255\255\255\255\255\255\255\1\255\253\255\255\255\255\127\255\
+    \\1\0\255\3\0\0\252\255\255\255\252\255\255\254\127\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\255\255\255\255\255\255\255\1\255\255\255\127\255\3\255\255\255\255\255\255\255\255\255\127\255\3\255\255\255\63\31\0\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\128\255\255\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\127\255\255\249\219\7\255\255\255\255\255\255\255\63\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\31\0\127\0\0\0\0\0\255\255\255\255\255\255\255\255\255\15\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\255\
+    \\255\255\150\254\247\10\132\234\150\170\150\247\247\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0"#
+
+isXID_ContinueOffsetsBitMap :: Ptr Word16
+isXID_ContinueOffsetsBitMap = Ptr
+    "\126\3\145\2\153\2\158\5\140\5\169\8\218\0\183\2\50\1\144\4\82\10\250\0\56\3\189\5\114\10\92\2\39\7\145\2\107\1\123\7\144\2\145\2\146\10\178\10\25\1\153\3\188\0\52\0\210\10\145\2\145\2\151\7\62\2\238\1\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\111\8\79\1\100\3\100\3\124\2\0\0\
+    \\100\3\100\3\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\227\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\221\5\145\2\242\10\25\3\18\11\163\6\50\11\82\11\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\160\0\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\145\2\
+    \\118\9\91\9\124\5\114\11\30\0\183\3\222\4\206\1\34\4\146\11\178\11\210\11\145\2\65\6\242\11\18\12\31\2\50\12\109\0\75\5\92\5\61\9\82\12\114\12\146\12\178\12\210\12\251\2\242\12\18\13\50\13\46\8\82\13\43\5\114\13\194\6\216\6\183\7\145\2\145\2\145\2\23\5\7\5\74\0\100\3\100\3\100\3\100\3\100\3\100\3\
+    \\100\3\100\3\100\3\88\0\145\2\145\2\145\2\145\2\240\3\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\252\3\145\2\145\2\146\13\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\
+    \\100\3\100\3\100\3\35\5\100\3\100\3\100\3\100\3\100\3\100\3\145\2\145\2\178\13\134\1\100\3\158\1\182\1\19\10\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\215\3\145\2\145\2\145\2\145\2\210\13\254\1\100\3\100\3\
+    \\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\0\2\145\2\135\0\149\0\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\14\4\100\3\100\3\100\3\100\3\100\3\
+    \\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\102\3\100\3\100\3\247\5\100\3\11\6\89\6\100\3\14\7\66\4\78\4\201\8\100\3\100\3\29\9\100\3\100\3\100\3\100\3\242\13\18\14\176\4\190\4\100\3\33\6\131\6\100\3\15\8\50\14\82\14\100\3\100\3\100\3\100\3\114\14\100\3\100\3\100\3\100\3\100\3\
+    \\100\3\100\3\100\3\100\3\100\3\100\3\100\3\102\3\100\3\100\3\100\3\100\3\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\223\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\215\2\110\4\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\122\4\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\93\7\145\2\145\2\
+    \\88\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\145\2\145\2\96\3\100\3\100\3\100\3\100\3\100\3\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\244\4\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\229\2\84\0\145\2"#
+
+{-# INLINE isXID_Start #-}
+isXID_Start :: Char -> Bool
+isXID_Start c = c >= '\x0041' && c <= '\x323AF' && lookupIsXID_StartBitMap (ord c)
+
+{-# INLINE lookupIsXID_StartBitMap #-}
+lookupIsXID_StartBitMap :: Int -> Bool
+lookupIsXID_StartBitMap n =
+    lookupBit data# (
+        lookupWord16AsInt offsets# (
+            n `shiftR` 8
+        ) + ((n `shiftR` 3) .&. mask)
+    ) (n .&. 7)
+    where
+    mask = (1 `shiftL` 5) - 1
+    !(Ptr data#) = isXID_StartDataBitMap
+    !(Ptr offsets#) = isXID_StartOffsetsBitMap
+
+isXID_StartDataBitMap :: Ptr Int8
+isXID_StartDataBitMap = Ptr
+    "\224\255\255\255\255\255\254\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\0\0\0\0\0\0\255\255\255\255\255\255\0\0\15\0\0\0\248\255\255\224\255\255\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\138\170\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\31\128\0\255\255\63\0\0\0\0\0\255\255\3\0\0\0\0\0\255\255\31\0\0\0\255\255\127\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\128\0\
+    \\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\132\252\47\63\80\253\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\239\111\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\
+    \\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\254\255\255\7\254\255\255\
+    \\7\0\0\0\0\0\4\32\4\255\255\127\255\255\255\127\255\255\255\255\191\32\255\255\255\255\255\255\255\128\0\0\255\255\127\0\127\127\127\127\127\127\127\127\0\0\0\0\255\239\
+    \\255\255\127\255\255\183\255\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\31\120\12\0\255\31\255\255\0\12\0\0\255\255\255\255\255\127\0\128\255\255\255\63\255\255\255\255\255\255\255\255\255\255\0\0\126\0\0\0\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\31\255\1\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\223\184\64\215\255\255\251\255\255\255\255\255\255\255\255\255\191\255\255\255\255\255\1\0\0\247\15\0\0\255\255\127\196\255\255\255\255\255\255\98\62\5\0\0\56\255\7\28\0\191\
+    \\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\255\255\255\247\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\159\255\255\254\255\255\7\255\255\255\255\255\255\255\255\255\199\255\1\248\255\255\255\255\7\
+    \\4\0\0\1\240\255\255\255\255\255\3\0\32\0\0\255\255\255\255\255\255\255\255\255\1\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\63\0\0\255\
+    \\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\
+    \\255\255\255\255\255\255\7\0\255\255\255\255\255\255\7\0\128\0\0\63\60\98\192\225\255\3\64\0\0\255\255\255\255\191\32\255\255\255\255\255\247\255\255\255\255\7\0\4\0\0\
+    \\0\39\0\240\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\255\255\127\248\255\255\255\255\255\15\0\0\
+    \\0\0\224\0\252\255\255\255\63\255\7\255\255\255\255\255\231\0\0\0\0\0\222\111\4\255\255\255\255\255\31\128\63\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\255\255\255\63\0\0\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\128\255\252\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\249\255\255\255\255\255\255\255\63\235\31\0\0\252\255\255\63\0\255\255\127\0\0\0\255\255\255\31\240\255\255\255\255\255\7\0\0\128\0\0\223\
+    \\255\0\124\224\159\249\255\255\253\237\35\0\0\0\176\3\0\2\0\232\199\61\214\24\199\255\3\0\0\1\0\0\0\0\0\0\0\255\254\255\255\255\31\0\0\0\31\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\0\0\0\
+    \\0\255\255\255\255\255\7\0\0\0\192\254\255\255\255\255\255\255\255\255\255\255\255\47\0\96\192\0\156\255\255\255\255\255\255\255\255\255\255\255\63\240\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\3\252\255\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\128\0\0\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\127\111\255\127\242\111\255\255\255\0\128\2\0\0\0\0\0\0\0\0\0\0\0\255\252\255\255\255\255\1\0\10\0\0\0\255\255\255\255\255\0\255\255\255\255\255\255\15\
+    \\0\255\247\255\247\183\255\251\255\251\27\255\255\255\255\255\255\15\0\0\0\0\252\255\255\63\128\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\
+    \\255\3\3\0\28\0\0\0\0\0\0\0\254\255\255\7\254\255\255\7\192\255\255\255\255\255\255\63\255\255\255\127\252\252\252\28\0\0\0\0\255\253\255\255\255\127\0\0\1\0\
+    \\0\0\0\0\252\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\1\0\0\0\127\251\255\255\255\255\1\0\64\0\
+    \\0\0\191\253\255\255\255\3\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\7\0\255\255\255\255\255\255\255\255\
+    \\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\255\255\255\15\0\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\
+    \\223\100\222\255\235\239\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\255\255\255\255\61\127\61\255\127\255\255\255\255\255\255\254\255\255\255\127\2\255\255\255\255\255\
+    \\1\0\0\0\0\0\0\0\0\255\255\255\135\7\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\61\255\255\255\255\255\255\255\255\7\0\0\0\0\255\255\0\0\255\255\255\255\255\255\255\255\255\255\63\63\255\
+    \\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\95\220\31\207\15\255\31\220\31\244\255\253\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\7\0\255\255\255\255\255\255\0\0\16\0\0\0\0\0\0\0\255\255\
+    \\255\255\255\7\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\127\0\0\0\0\0\15\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\
+    \\63\1\0\239\254\255\255\63\0\0\0\0\0\255\255\255\31\255\255\255\31\0\0\0\0\255\254\255\255\31\0\0\0\255\255\255\255\255\255\31\0\128\7\0\128\3\0\0\0\255\
+    \\255\255\255\255\255\0\0\176\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\127\0\0\0\0\0\15\0\0\0\0\255\255\255\63\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\0\255\255\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\128\63\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\
+    \\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\0\248\160\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\255\255\255\255\0\224\255\255\255\7\255\255\255\255\63\0\255\255\255\63\
+    \\255\255\255\255\15\255\62\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\0\0\0\0\255\255\3\128\255\255\3\0\255\255\3\
+    \\0\255\223\1\0\255\255\255\255\255\255\15\0\0\0\128\16\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\1\255\255\255\255\255\5\255\255\255\255\255\255\255\255\63\0\0\
+    \\255\255\255\255\255\255\255\255\252\255\255\255\255\255\255\0\0\0\0\0\255\3\255\255\251\255\255\15\0\128\1\0\0\0\0\0\0\0\127\189\255\191\255\1\255\255\255\255\255\127\
+    \\0\0\0\0\0\0\255\255\255\63\31\0\255\255\255\255\255\15\255\255\255\3\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\1\255\255\255\255\255\5\255\255\255\255\
+    \\255\255\255\255\63\0\255\255\63\0\255\255\7\0\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\7\1\0\0\0\0\0\0\0\248\255\
+    \\0\0\0\0\0\0\0\0\11\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\63\4\16\1\0\0\255\
+    \\255\255\1\255\7\255\255\255\126\0\0\255\255\255\255\255\3\0\0\0\0\0\0\253\255\255\255\0\0\0\224\255\255\255\255\255\255\255\255\255\255\63\0\2\0\0\252\255\255\255\
+    \\7\48\4\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\255\255\255\255\255\255\35\0\0\1\255\3\0\254\255\225\159\249\255\255\253\197\35\0\64\0\176\3\0\3\16\224\135\249\
+    \\255\255\253\109\3\0\0\0\94\0\0\28\0\224\191\251\255\255\253\237\35\0\0\1\0\3\0\0\2\224\223\253\255\255\253\255\35\0\0\0\39\3\0\0\0\225\223\253\255\255\
+    \\253\239\35\0\0\0\96\3\0\6\0\240\223\253\255\255\255\255\39\0\64\112\128\3\0\0\252\224\255\127\252\255\255\251\47\127\0\0\0\0\0\0\0\254\255\255\255\255\255\5\
+    \\0\127\0\0\0\0\0\0\0\214\247\255\255\175\255\5\32\95\0\0\240\0\0\0\0\224\255\255\255\255\255\15\0\224\31\0\0\0\0\0\0\248\255\255\255\1\192\0\252\255\
+    \\255\255\255\63\0\0\0\224\0\0\0\254\3\62\31\254\255\255\255\255\255\255\255\255\255\127\224\254\255\255\255\255\255\255\255\255\255\255\247\187\247\255\255\7\0\0\0\255\255\255\
+    \\255\255\255\15\0\252\255\255\255\255\255\15\0\0\0\0\0\0\0\252\104\126\126\126\0\127\127\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\
+    \\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\255\255\255\255\15\255\255\255\255\15\255\255\255\255\255\255\127\0\255\255\63\0\255\0\0\
+    \\0\191\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\63\253\255\255\255\255\191\145\255\255\63\0\255\255\127\0\255\255\255\127\0\0\0\0\0\0\0\0\255\255\55\0\255\
+    \\255\63\0\255\255\255\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\192\0\0\0\0\0\0\0\0\248\255\255\255\255\255\255\0\0\0\0\0\0\0\38\0\248\255\255\
+    \\255\255\255\0\0\0\0\255\255\255\1\0\0\248\255\255\255\127\0\0\0\144\0\255\255\255\255\71\0\248\255\255\255\255\255\7\0\30\0\0\20\0\0\0\0\224\159\249\255\255\
+    \\253\237\35\0\0\1\224\3\0\0\0\255\75\255\255\255\255\191\0\0\0\10\0\0\0\0\0\255\255\255\7\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\128\255\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\247\15\0\
+    \\0\0\0\0\0\255\255\255\255\255\255\255\255\15\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\255\255\255\150\254\247\10\132\234\150\170\150\
+    \\247\247\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0"#
+
+isXID_StartOffsetsBitMap :: Ptr Word16
+isXID_StartOffsetsBitMap = Ptr
+    "\79\1\3\1\11\1\24\2\221\4\197\6\173\4\161\10\131\10\255\10\31\11\79\4\63\11\95\11\127\11\105\4\91\3\3\1\170\6\25\7\2\1\3\1\200\2\135\9\163\9\242\9\128\0\159\11\175\3\55\1\3\1\53\7\20\5\208\0\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\174\1\110\1\40\5\40\5\191\11\0\0\
+    \\40\5\40\5\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\55\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\138\2\3\1\206\1\18\4\223\11\47\4\55\2\255\11\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\148\3\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\3\1\
+    \\44\9\17\9\205\4\186\9\72\0\178\5\142\1\129\4\145\4\76\9\31\12\107\5\3\1\63\12\95\12\127\12\3\8\38\10\66\3\133\5\150\5\100\0\159\12\191\12\218\9\223\12\35\8\164\7\140\7\255\12\245\3\75\5\231\2\228\5\210\5\4\6\24\6\85\7\3\1\3\1\3\1\0\5\240\4\31\3\40\5\40\5\40\5\40\5\40\5\40\5\
+    \\40\5\40\5\40\5\45\3\3\1\3\1\3\1\3\1\230\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\242\1\3\1\3\1\31\13\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\
+    \\40\5\40\5\40\5\85\6\40\5\40\5\40\5\40\5\40\5\40\5\3\1\3\1\255\2\30\0\40\5\54\0\176\0\70\10\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\125\8\3\1\3\1\3\1\3\1\63\13\224\0\40\5\40\5\
+    \\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\226\0\3\1\123\3\137\3\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\4\2\40\5\40\5\40\5\40\5\40\5\
+    \\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\145\6\87\2\99\2\95\13\40\5\40\5\40\5\40\5\40\5\40\5\40\5\157\8\183\8\207\3\221\3\40\5\91\6\229\7\40\5\44\5\131\2\127\13\40\5\40\5\40\5\40\5\159\13\40\5\40\5\40\5\40\5\40\5\
+    \\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\51\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\43\1\166\2\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\178\2\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\251\6\3\1\3\1\
+    \\77\6\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\40\5\3\1\3\1\85\6\40\5\40\5\40\5\40\5\40\5\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\164\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\174\1"#
+
+{-# INLINE isID_Continue #-}
+isID_Continue :: Char -> Bool
+isID_Continue c
+    | c < '\x002F' = False
+    | c < '\x323B0' = lookupIsID_ContinueBitMap (ord c)
+    | c < '\xE0000' = False
+    | c < '\xE01F0' = lookupIsID_ContinueBitMap (ord c - 0xADC50)
+    | otherwise = False
+
+{-# INLINE lookupIsID_ContinueBitMap #-}
+lookupIsID_ContinueBitMap :: Int -> Bool
+lookupIsID_ContinueBitMap n =
+    lookupBit data# (
+        lookupWord16AsInt offsets# (
+            n `shiftR` 8
+        ) + ((n `shiftR` 3) .&. mask)
+    ) (n .&. 7)
+    where
+    mask = (1 `shiftL` 5) - 1
+    !(Ptr data#) = isID_ContinueDataBitMap
+    !(Ptr offsets#) = isID_ContinueOffsetsBitMap
+
+isID_ContinueDataBitMap :: Ptr Int8
+isID_ContinueDataBitMap = Ptr
+    "\224\255\255\255\255\255\254\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\0\0\0\0\0\0\255\255\0\0\255\255\24\0\0\224\0\0\0\0\223\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\31\255\3\0\248\15\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\255\255\255\255\255\255\7\0\255\255\255\255\255\255\7\0\4\0\0\0\39\0\240\0\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\255\255\127\248\255\255\255\255\255\15\255\255\255\255\255\255\255\127\
+    \\255\255\255\159\255\3\255\3\128\0\255\191\255\127\0\0\0\0\0\0\255\7\255\255\255\255\255\255\255\255\255\195\255\255\255\255\255\255\255\255\255\255\255\255\239\159\255\253\255\159\
+    \\238\159\249\255\255\253\237\243\159\57\224\176\207\255\2\0\236\199\61\214\24\199\255\195\199\61\129\0\192\255\0\0\184\255\3\255\255\255\255\255\255\255\255\255\255\255\1\255\255\255\
+    \\255\255\7\255\255\255\255\255\255\255\255\63\0\0\255\255\255\15\255\7\255\255\255\126\128\255\255\255\255\255\255\255\255\255\251\255\255\255\255\191\32\255\255\255\255\255\255\255\128\0\
+    \\128\255\255\127\0\127\127\127\127\127\127\127\127\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\255\255\255\255\61\127\61\255\127\255\255\255\255\255\255\127\0\15\0\
+    \\255\3\248\255\255\224\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\
+    \\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\132\252\47\63\80\253\
+    \\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\111\240\239\254\255\255\63\
+    \\135\0\0\0\0\255\255\255\31\255\255\255\31\0\0\0\0\255\254\255\255\127\0\0\0\48\0\0\0\0\0\128\1\0\16\0\0\0\2\128\0\0\255\31\0\0\0\0\0\0\
+    \\255\31\226\255\1\0\0\3\255\3\160\194\255\254\255\255\255\31\254\255\223\255\255\254\255\255\255\31\64\0\0\0\0\0\0\0\224\0\0\0\254\255\62\31\254\255\255\255\255\255\
+    \\255\255\255\255\127\254\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\255\255\
+    \\255\255\255\255\231\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\63\36\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\255\1\0\0\63\0\0\0\0\128\255\252\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\249\255\255\255\255\255\255\255\63\235\31\0\0\252\255\223\253\255\255\253\255\243\223\61\96\39\207\255\0\0\239\223\253\255\255\253\239\243\223\61\
+    \\96\96\207\255\14\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\255\3\254\255\255\135\254\255\255\7\0\0\0\0\0\4\160\4\255\255\127\255\255\255\127\255\15\255\15\192\255\255\255\255\63\31\0\255\255\255\255\255\15\255\255\255\3\255\7\0\
+    \\0\0\0\255\3\254\255\255\135\254\255\255\7\224\255\255\255\255\255\255\255\255\255\255\127\252\252\252\28\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\255\255\63\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\7\255\31\255\1\255\99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\1\0\0\0\191\231\223\223\255\255\255\123\95\252\
+    \\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\255\255\255\247\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\207\255\254\255\239\159\249\255\255\253\197\243\159\121\128\176\207\255\3\80\
+    \\255\255\255\255\255\31\255\63\255\67\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\127\0\0\255\255\255\255\255\255\255\3\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\255\255\255\255\1\0\255\3\255\255\255\255\255\0\255\3\255\255\255\255\63\190\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\
+    \\255\255\27\3\0\28\0\0\0\0\0\0\240\255\239\255\255\127\255\255\183\255\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\251\252\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\188\192\215\255\255\251\255\255\255\255\255\255\255\255\255\191\
+    \\255\223\253\255\255\255\255\255\223\125\240\128\207\255\0\252\238\255\127\252\255\255\251\47\127\132\95\255\192\255\12\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\
+    \\0\0\0\0\0\0\0\0\255\255\255\255\255\63\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\3\255\255\255\255\255\255\127\0\255\255\63\0\255\0\0\0\191\255\
+    \\255\255\255\255\253\7\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\7\255\255\255\255\255\63\255\255\255\255\15\0\255\255\255\31\255\255\255\255\
+    \\255\255\255\255\1\128\255\3\255\255\255\127\251\255\255\255\255\127\180\255\0\255\3\191\253\255\255\255\127\251\1\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\255\255\127\0\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\
+    \\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\63\255\255\255\255\191\32\255\255\255\255\255\247\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\61\255\
+    \\255\255\255\255\255\255\255\231\0\254\3\0\255\255\0\0\255\255\255\255\255\255\255\255\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\95\220\31\
+    \\207\15\255\31\220\31\255\255\253\255\255\255\255\199\7\0\255\7\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\255\255\127\0\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\111\255\127\242\111\255\255\255\191\249\15\0\255\3\0\0\0\0\0\0\0\0\255\252\255\255\255\
+    \\255\255\252\27\0\0\0\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\248\15\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\251\252\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\254\255\255\255\127\2\255\255\255\255\255\1\254\255\255\255\255\191\182\0\255\255\255\135\7\0\255\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\
+    \\255\253\255\255\247\207\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\255\255\255\247\255\255\223\255\255\255\223\255\255\127\255\255\
+    \\255\127\255\255\255\253\255\255\255\253\255\255\247\207\255\255\255\255\255\255\127\248\255\255\255\255\255\31\32\0\16\0\0\248\254\255\0\0\0\0\0\0\0\0\0\0\255\255\255\31\
+    \\128\0\255\255\255\255\1\0\0\0\255\255\63\0\0\0\0\0\255\255\31\0\0\0\255\255\127\0\248\224\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\
+    \\0\0\248\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\127\0\248\224\255\253\127\95\219\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\63\0\0\255\255\255\255\255\255\255\255\252\255\255\255\255\255\255\0\0\0\0\0\255\15\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\188\192\215\255\255\251\255\255\255\255\255\255\255\255\255\191\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\255\255\255\255\255\255\255\255\135\255\255\255\255\255\255\255\128\255\255\0\0\0\0\0\0\0\0\27\0\3\
+    \\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\238\135\249\255\255\253\109\211\135\57\2\94\192\255\63\0\238\191\
+    \\251\255\255\253\237\243\191\59\1\0\207\255\0\254\254\255\255\255\255\255\255\7\255\127\255\3\0\0\0\0\214\247\255\255\175\255\255\63\95\127\255\243\0\0\0\0\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\159\255\255\254\255\255\7\255\255\255\255\255\255\255\255\255\199\255\1\255\255\63\128\255\255\31\0\255\255\15\0\255\223\13\0\255\255\255\255\255\255\
+    \\255\255\255\255\143\48\255\3\0\0\255\255\255\255\255\255\255\0\255\227\255\255\255\255\255\63\255\7\255\255\255\255\255\231\0\0\247\255\255\255\255\7\255\31\255\255\255\15\0\0\
+    \\255\255\255\255\255\255\240\191\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\16\0\0\255\255\255\255\255\255\15\0\255\255\255\255\255\255\255\255\63\0\
+    \\255\3\255\255\255\232\255\255\255\255\255\255\127\0\255\63\255\3\255\255\127\252\255\255\255\255\255\255\255\255\7\0\0\56\255\255\124\0\126\126\126\0\127\127\255\255\255\255\255\247\
+    \\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\55\255\3\255\255\255\255\0\224\255\255\255\7\255\255\255\255\255\7\255\255\255\63\255\255\255\255\15\255\62\0\0\0\
+    \\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\3\255\255\255\255\15\255\255\255\255\15\255\255\255\255\255\0\255\255\255\255\255\255\15\0\255\247\
+    \\255\247\183\255\251\255\251\27\255\255\255\255\255\255\15\0\63\253\255\255\255\255\191\145\255\255\63\0\255\255\127\0\255\255\255\127\0\0\0\0\0\0\0\0\255\255\55\0\255\255\
+    \\63\0\255\255\255\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\192\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\0\255\255\63\0\255\255\7\0\255\255\3\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\192\255\63\128\255\255\255\255\255\255\255\7\4\0\255\255\255\1\255\3\255\255\255\255\255\255\
+    \\223\255\240\0\255\255\255\255\79\0\255\255\255\255\255\255\255\255\31\222\255\23\0\0\0\0\255\255\251\255\255\255\255\192\3\0\0\0\0\0\0\0\127\189\255\191\255\1\255\255\
+    \\255\255\255\255\255\7\255\3\239\159\249\255\255\253\237\251\159\57\129\224\207\31\31\0\255\75\255\255\255\255\191\255\165\247\15\0\6\0\0\0\255\255\255\255\255\255\255\255\255\7\
+    \\255\195\3\0\0\0\255\255\255\255\255\255\255\255\191\0\255\3\0\0\0\0\255\255\255\255\255\255\255\255\17\0\255\3\0\0\0\0\255\255\255\255\255\255\255\1\255\3\255\255\
+    \\15\0\0\0\255\255\255\231\255\15\255\3\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\7\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\3\0\128\255\255\255\255\255\255\255\127\128\0\255\255\255\255\255\255\255\255\255\35\0\0\255\255\255\255\255\255\255\255\255\1\
+    \\255\253\255\255\255\255\127\255\1\0\255\3\0\0\252\255\255\255\252\255\255\254\127\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\1\255\255\255\127\255\3\255\255\255\255\255\255\255\255\255\127\255\3\255\255\255\63\31\0\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\128\255\255\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\127\255\255\249\219\7\255\255\255\255\255\255\255\63\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\127\0\0\0\0\0\255\255\255\255\255\255\255\255\255\15\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\239\255\255\255\150\254\247\10\132\234\150\170\150\247\247\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0"#
+
+isID_ContinueOffsetsBitMap :: Ptr Word16
+isID_ContinueOffsetsBitMap = Ptr
+    "\126\3\145\2\153\2\139\5\121\5\150\8\218\0\183\2\50\1\144\4\122\10\250\0\56\3\170\5\154\10\92\2\20\7\145\2\107\1\104\7\144\2\145\2\186\10\218\10\25\1\153\3\188\0\52\0\250\10\145\2\145\2\132\7\62\2\238\1\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\92\8\79\1\100\3\100\3\124\2\0\0\
+    \\100\3\100\3\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\227\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\202\5\145\2\26\11\25\3\58\11\144\6\90\11\122\11\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\160\0\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\145\2\
+    \\99\9\72\9\145\2\158\9\30\0\183\3\83\5\206\1\34\4\154\11\186\11\218\11\145\2\46\6\250\11\26\12\31\2\58\12\109\0\34\5\51\5\42\9\90\12\122\12\154\12\186\12\218\12\251\2\250\12\26\13\58\13\27\8\90\13\2\5\122\13\175\6\197\6\164\7\145\2\145\2\145\2\238\4\222\4\74\0\100\3\100\3\100\3\100\3\100\3\100\3\
+    \\100\3\100\3\100\3\88\0\145\2\145\2\145\2\145\2\240\3\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\252\3\145\2\145\2\154\13\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\
+    \\100\3\100\3\100\3\250\4\100\3\100\3\100\3\100\3\100\3\100\3\145\2\145\2\186\13\134\1\100\3\158\1\182\1\59\10\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\215\3\145\2\145\2\145\2\145\2\218\13\254\1\100\3\100\3\
+    \\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\0\2\145\2\135\0\149\0\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\14\4\100\3\100\3\100\3\100\3\100\3\
+    \\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\102\3\100\3\100\3\228\5\100\3\248\5\70\6\100\3\251\6\66\4\78\4\182\8\100\3\100\3\10\9\100\3\100\3\100\3\100\3\250\13\26\14\176\4\190\4\100\3\14\6\112\6\100\3\252\7\58\14\90\14\100\3\100\3\100\3\100\3\122\14\100\3\100\3\100\3\100\3\100\3\
+    \\100\3\100\3\100\3\100\3\100\3\100\3\100\3\102\3\100\3\100\3\100\3\100\3\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\223\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\215\2\110\4\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\122\4\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\74\7\145\2\145\2\
+    \\88\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\100\3\145\2\145\2\96\3\100\3\100\3\100\3\100\3\100\3\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\105\5\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\145\2\
+    \\145\2\145\2\145\2\229\2\84\0\145\2"#
+
+{-# INLINE isID_Start #-}
+isID_Start :: Char -> Bool
+isID_Start c = c >= '\x0041' && c <= '\x323AF' && lookupIsID_StartBitMap (ord c)
+
+{-# INLINE lookupIsID_StartBitMap #-}
+lookupIsID_StartBitMap :: Int -> Bool
+lookupIsID_StartBitMap n =
+    lookupBit data# (
+        lookupWord16AsInt offsets# (
+            n `shiftR` 8
+        ) + ((n `shiftR` 3) .&. mask)
+    ) (n .&. 7)
+    where
+    mask = (1 `shiftL` 5) - 1
+    !(Ptr data#) = isID_StartDataBitMap
+    !(Ptr offsets#) = isID_StartOffsetsBitMap
+
+isID_StartDataBitMap :: Ptr Int8
+isID_StartDataBitMap = Ptr
+    "\224\255\255\255\255\255\254\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\0\0\0\0\0\0\255\255\255\255\255\255\0\0\15\0\0\0\248\255\255\224\255\255\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\223\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\31\128\0\255\255\63\0\0\0\0\0\255\255\3\0\0\0\0\0\255\255\31\0\0\0\255\255\127\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\128\0\
+    \\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\132\252\47\63\80\253\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\239\111\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\0\31\80\0\0\255\
+    \\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\254\255\255\7\254\255\255\
+    \\7\0\0\0\0\0\4\32\4\255\255\127\255\255\255\127\255\255\255\255\191\32\255\255\255\255\255\255\255\128\0\0\255\255\127\0\127\127\127\127\127\127\127\127\0\0\0\0\255\239\
+    \\255\255\127\255\255\183\255\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\31\120\12\0\255\31\255\255\0\12\0\0\255\255\255\255\255\127\0\128\255\255\255\63\255\255\255\255\255\255\255\255\255\255\0\0\126\0\0\0\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\31\255\1\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\223\188\64\215\255\255\251\255\255\255\255\255\255\255\255\255\191\255\255\255\255\255\1\0\0\247\15\0\0\255\255\127\196\255\255\255\255\255\255\98\62\5\0\0\56\255\7\28\0\191\
+    \\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\255\247\255\255\255\247\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\159\255\255\254\255\255\7\255\255\255\255\255\255\255\255\255\199\255\1\248\255\255\255\255\7\
+    \\4\0\0\1\240\255\255\255\255\255\3\0\32\0\0\255\255\255\255\255\255\255\255\255\1\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\63\0\0\255\
+    \\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\1\0\0\0\0\0\0\
+    \\255\255\255\255\255\255\7\0\255\255\255\255\255\255\7\0\128\0\0\63\60\98\192\225\255\3\64\0\0\255\255\255\255\191\32\255\255\255\255\255\247\255\255\255\255\7\0\4\0\0\
+    \\0\39\0\240\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\255\255\127\248\255\255\255\255\255\15\0\0\
+    \\0\0\224\0\252\255\255\255\63\255\7\255\255\255\255\255\231\0\0\0\0\0\222\111\4\255\255\255\255\255\31\128\63\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\255\255\255\63\0\0\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\128\255\252\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\249\255\255\255\255\255\255\255\63\235\31\0\0\252\255\255\63\0\255\255\127\0\0\0\255\255\255\31\240\255\255\255\255\255\7\0\0\128\0\0\223\
+    \\255\0\124\224\159\249\255\255\253\237\35\0\0\0\176\3\0\2\0\232\199\61\214\24\199\255\3\0\0\1\0\0\0\0\0\0\0\255\254\255\255\255\31\0\0\0\31\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\0\0\0\
+    \\0\255\255\255\255\255\7\0\0\0\192\254\255\255\255\255\255\255\255\255\255\255\255\47\0\96\192\0\156\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\252\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\128\
+    \\0\0\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\111\255\127\242\111\255\255\255\0\128\2\0\0\
+    \\0\0\0\0\0\0\0\0\0\255\252\255\255\255\255\1\0\10\0\0\0\255\255\255\255\255\0\255\255\255\255\255\255\15\0\255\247\255\247\183\255\251\255\251\27\255\255\255\255\255\
+    \\255\15\0\0\0\0\252\255\255\63\128\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\3\3\0\28\0\0\0\0\0\0\0\254\255\255\7\
+    \\254\255\255\7\192\255\255\255\255\255\255\255\255\255\255\127\252\252\252\28\0\0\0\0\255\253\255\255\255\127\0\0\1\0\0\0\0\0\252\255\255\255\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\1\0\0\0\127\251\255\255\255\255\1\0\64\0\0\0\191\253\255\255\255\3\0\1\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\7\0\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\15\0\0\191\231\223\223\255\255\255\
+    \\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\255\255\61\
+    \\127\61\255\255\255\255\255\61\255\255\255\255\61\127\61\255\127\255\255\255\255\255\255\254\255\255\255\127\2\255\255\255\255\255\1\0\0\0\0\0\0\0\0\255\255\255\135\7\0\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\
+    \\0\255\255\61\255\255\255\255\255\255\255\255\7\0\0\0\0\255\255\0\0\255\255\255\255\255\255\255\255\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\
+    \\255\223\95\220\31\207\15\255\31\220\31\244\255\253\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\7\0\255\255\255\255\255\255\0\0\16\0\0\0\0\0\0\0\255\255\255\255\255\7\0\1\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\255\255\255\255\255\127\0\0\0\0\0\15\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\1\0\239\254\255\255\63\0\0\0\0\0\255\255\255\
+    \\31\255\255\255\31\0\0\0\0\255\254\255\255\31\0\0\0\255\255\255\255\255\255\31\0\128\7\0\128\3\0\0\0\255\255\255\255\255\255\0\0\176\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\255\255\255\255\255\127\0\0\0\0\0\15\0\0\0\0\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\255\255\255\127\224\7\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\
+    \\255\255\31\128\63\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\127\0\248\160\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\3\0\0\0\0\127\0\248\160\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\63\0\
+    \\0\255\255\255\255\255\255\255\255\252\255\255\255\255\255\255\0\0\0\0\0\255\15\255\255\255\255\0\224\255\255\255\7\255\255\255\255\63\0\255\255\255\63\255\255\255\255\15\255\62\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\0\0\0\0\255\255\3\128\255\255\3\0\255\255\3\0\255\223\1\0\255\255\
+    \\255\255\255\255\15\0\0\0\128\16\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\1\255\255\255\255\255\5\255\255\255\255\255\255\255\255\63\0\255\255\63\0\255\255\7\0\
+    \\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\251\255\255\15\0\128\1\0\0\0\0\0\0\0\127\189\255\191\255\1\255\255\255\255\255\127\0\0\0\0\0\0\
+    \\255\255\255\63\31\0\255\255\255\255\255\15\255\255\255\3\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\1\255\255\255\255\255\5\255\255\255\255\255\255\255\255\63\0\
+    \\255\255\255\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\192\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\7\1\0\0\0\0\0\0\0\248\255\0\0\
+    \\0\0\0\0\0\0\11\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\63\4\16\1\0\0\255\255\255\
+    \\1\255\7\255\255\255\126\0\0\255\255\255\255\255\3\0\0\0\0\0\0\253\255\255\255\0\0\0\224\255\255\255\255\255\255\255\255\255\255\63\0\2\0\0\252\255\255\255\7\48\
+    \\4\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\240\255\255\255\255\255\255\35\0\0\1\255\3\0\254\255\225\159\249\255\255\253\197\35\0\64\0\176\3\0\3\16\224\135\249\255\255\
+    \\253\109\3\0\0\0\94\0\0\28\0\224\191\251\255\255\253\237\35\0\0\1\0\3\0\0\2\224\223\253\255\255\253\255\35\0\0\0\39\3\0\0\0\225\223\253\255\255\253\239\
+    \\35\0\0\0\96\3\0\6\0\240\223\253\255\255\255\255\39\0\64\112\128\3\0\0\252\224\255\127\252\255\255\251\47\127\0\0\0\0\0\0\0\254\255\255\255\255\255\13\0\127\
+    \\0\0\0\0\0\0\0\214\247\255\255\175\255\13\32\95\0\0\240\0\0\0\0\224\255\255\255\255\255\15\0\224\31\0\0\0\0\0\0\248\255\255\255\1\192\0\252\255\255\255\
+    \\255\63\0\0\0\224\0\0\0\254\3\62\31\254\255\255\255\255\255\255\255\255\255\127\248\254\255\255\255\255\255\255\255\255\255\255\247\187\247\255\255\7\0\0\0\255\255\255\255\255\
+    \\255\15\0\252\255\255\255\255\255\15\0\0\0\0\0\0\0\252\104\126\126\126\0\127\127\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\0\0\
+    \\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\255\255\255\255\15\255\255\255\255\15\255\255\255\255\255\255\127\0\255\255\63\0\255\0\0\0\191\
+    \\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\63\253\255\255\255\255\191\145\255\255\63\0\255\255\127\0\255\255\255\127\0\0\0\0\0\0\0\0\255\255\55\0\248\255\255\
+    \\255\255\255\255\0\0\0\0\0\0\0\38\0\248\255\255\255\255\255\0\0\0\0\255\255\255\1\0\0\248\255\255\255\127\0\0\0\144\0\255\255\255\255\71\0\248\255\255\255\255\
+    \\255\7\0\30\0\0\20\0\0\0\0\224\159\249\255\255\253\237\35\0\0\1\224\3\0\0\0\255\75\255\255\255\255\191\0\0\0\10\0\0\0\0\0\255\255\255\7\0\0\0\
+    \\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\128\255\255\223\255\255\255\223\255\255\127\255\
+    \\255\255\127\255\255\255\253\255\255\255\253\255\255\247\15\0\0\0\0\0\0\255\255\255\255\255\255\255\255\15\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\239\255\255\255\150\254\247\10\132\234\150\170\150\247\247\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0"#
+
+isID_StartOffsetsBitMap :: Ptr Word16
+isID_StartOffsetsBitMap = Ptr
+    "\79\1\3\1\11\1\24\2\205\4\181\6\173\4\209\10\179\10\47\11\79\11\79\4\111\11\143\11\175\11\105\4\91\3\3\1\154\6\9\7\2\1\3\1\200\2\178\9\206\9\30\10\128\0\207\11\175\3\55\1\3\1\37\7\4\5\208\0\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\174\1\110\1\24\5\24\5\239\11\0\0\
+    \\24\5\24\5\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\55\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\138\2\3\1\206\1\18\4\15\12\47\4\55\2\47\12\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\148\3\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\3\1\
+    \\28\9\1\9\3\1\87\9\72\0\162\5\142\1\129\4\145\4\119\9\79\12\91\5\3\1\111\12\143\12\86\10\243\7\230\9\66\3\117\5\134\5\100\0\175\12\207\12\6\10\239\12\19\8\148\7\124\7\15\13\245\3\59\5\231\2\212\5\194\5\244\5\8\6\69\7\3\1\3\1\3\1\240\4\224\4\31\3\24\5\24\5\24\5\24\5\24\5\24\5\
+    \\24\5\24\5\24\5\45\3\3\1\3\1\3\1\3\1\230\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\242\1\3\1\3\1\47\13\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\
+    \\24\5\24\5\24\5\69\6\24\5\24\5\24\5\24\5\24\5\24\5\3\1\3\1\255\2\30\0\24\5\54\0\176\0\118\10\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\109\8\3\1\3\1\3\1\3\1\79\13\224\0\24\5\24\5\
+    \\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\226\0\3\1\123\3\137\3\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\4\2\24\5\24\5\24\5\24\5\24\5\
+    \\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\129\6\87\2\99\2\111\13\24\5\24\5\24\5\24\5\24\5\24\5\24\5\141\8\167\8\207\3\221\3\24\5\75\6\213\7\24\5\28\5\131\2\143\13\24\5\24\5\24\5\24\5\175\13\24\5\24\5\24\5\24\5\24\5\
+    \\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\51\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\43\1\166\2\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\178\2\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\235\6\3\1\3\1\
+    \\61\6\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\24\5\3\1\3\1\69\6\24\5\24\5\24\5\24\5\24\5\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\164\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\3\1\
+    \\3\1\3\1\3\1\174\1"#
+
+{-# INLINE isUppercase #-}
+isUppercase :: Char -> Bool
+isUppercase c = c >= '\x0041' && c <= '\x1F189' && lookupIsUppercaseBitMap (ord c)
+
+{-# INLINE lookupIsUppercaseBitMap #-}
+lookupIsUppercaseBitMap :: Int -> Bool
+lookupIsUppercaseBitMap n =
+    lookupBit data# (
+        lookupWord16AsInt offsets# (
+            n `shiftR` 9
+        ) + ((n `shiftR` 3) .&. mask)
+    ) (n .&. 7)
+    where
+    mask = (1 `shiftL` 6) - 1
+    !(Ptr data#) = isUppercaseDataBitMap
+    !(Ptr offsets#) = isUppercaseOffsetsBitMap
+
+isUppercaseDataBitMap :: Ptr Int8
+isUppercaseDataBitMap = Ptr
+    "\255\255\255\255\255\255\0\0\0\0\0\0\157\234\37\192\85\85\85\85\85\85\85\85\85\85\85\85\5\40\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\85\85\85\85\85\21\0\0\85\85\85\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\84\85\84\85\85\85\85\85\
+    \\85\85\0\106\85\40\69\85\85\125\95\85\245\26\65\21\0\0\32\0\255\255\255\3\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\0\255\255\255\1\0\0\0\252\255\255\
+    \\7\0\0\0\240\255\255\31\0\0\0\192\255\255\127\0\0\0\0\255\255\255\1\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\7\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\255\255\255\255\255\231\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\132\56\39\62\80\61\15\192\32\0\0\0\255\255\0\0\8\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\254\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\255\255\127\127\0\0\0\0\85\85\85\85\85\85\85\170\170\84\85\85\85\85\85\43\214\206\219\177\213\
+    \\210\174\17\144\164\170\74\85\85\210\85\85\85\85\85\85\5\108\122\85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\69\128\64\215\254\255\251\15\0\0\0\128\28\85\85\85\144\230\255\255\255\255\255\255\0\0\0\0\0\0\157\234\37\192\85\85\85\85\85\85\85\85\85\85\
+    \\85\85\5\40\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\255\255\255\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\254\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\255\255\255\255\191\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\3\255\
+    \\255\255\3\255\255\255\3\255\255\255\255\255\255\0\0\0\0\0\0\85\85\85\85\1\84\85\85\85\85\85\85\171\42\85\85\85\85\85\85\85\85\85\85\85\85\254\255\255\255\127\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\63\
+    \\0\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\247\255\
+    \\247\55\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\63\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\3\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\208\100\222\63\0\0\0\255\255\255\3\0\0\176\231\
+    \\223\31\0\0\0\123\95\252\1\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\0\255\255\255\1\0\0\0\252\255\255\7\0\
+    \\0\0\240\255\255\31\0\0\0\192\255\255\127\0\0\0\0\255\255\255\1\0\0\0\4\0\0\0\0\0\0\255\255\255\3\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\
+    \\208\100\222\63\0\0\0\255\255\255\3\0\0\176\231\223\31\0\0\0\123\95\252\1\0\0\240\255\255\63\0\0\0\255\255\255\3\0\0\240\255\255\63\0\0\0\0\0\0\0\
+    \\0\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\85\85\85\85\85\85\85\85\85\85\85\85\85\85\85\85\85\85\21\64\85\85\85\85\85\85\85\85\85\85\85\85\0\255\0\63\0\255\0\255\0\63\0\
+    \\170\0\255\0\0\0\0\0\0\0\0\0\15\0\15\0\15\0\31\0\15"#
+
+isUppercaseOffsetsBitMap :: Ptr Word16
+isUppercaseOffsetsBitMap = Ptr
+    "\191\1\254\1\39\3\107\3\107\3\107\3\107\3\107\3\176\2\119\3\107\3\107\3\107\3\107\3\61\1\27\5\135\1\107\3\103\1\107\3\107\3\107\3\0\0\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\
+    \\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\56\0\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\
+    \\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\132\2\107\3\107\3\183\3\107\3\107\3\107\3\225\0\107\3\107\3\107\3\107\3\107\3\14\1\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\
+    \\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\95\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\
+    \\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\42\4\119\0\107\3\107\3\107\3\107\3\107\3\107\3\107\3\107\3\177\0\107\3\107\3\107\3\245\2"#
+
+{-# INLINE isLowercase #-}
+isLowercase :: Char -> Bool
+isLowercase c = c >= '\x0061' && c <= '\x1E943' && lookupIsLowercaseBitMap (ord c)
+
+{-# INLINE lookupIsLowercaseBitMap #-}
+lookupIsLowercaseBitMap :: Int -> Bool
+lookupIsLowercaseBitMap n =
+    lookupBit data# (
+        lookupWord16AsInt offsets# (
+            n `shiftR` 9
+        ) + ((n `shiftR` 3) .&. mask)
+    ) (n .&. 7)
+    where
+    mask = (1 `shiftL` 6) - 1
+    !(Ptr data#) = isLowercaseDataBitMap
+    !(Ptr offsets#) = isLowercaseOffsetsBitMap
+
+isLowercaseDataBitMap :: Ptr Int8
+isLowercaseDataBitMap = Ptr
+    "\170\170\170\170\170\170\170\170\170\170\170\170\170\170\170\170\170\170\234\191\170\170\170\170\170\170\170\170\170\170\170\170\255\0\63\0\255\0\255\0\63\0\255\0\255\0\255\63\255\0\
+    \\255\0\255\0\223\64\220\0\207\0\255\0\220\0\0\0\252\255\255\15\0\0\192\223\255\255\0\0\0\252\255\255\15\0\0\192\235\239\255\0\0\0\252\255\255\15\0\0\192\255\
+    \\255\255\0\0\0\252\255\255\15\0\0\192\255\255\255\0\0\0\252\255\255\15\0\0\192\255\255\255\0\0\0\252\255\255\63\0\0\0\252\255\255\247\3\0\0\240\255\255\223\15\
+    \\0\0\192\255\255\127\63\0\0\0\255\255\255\253\0\0\0\252\255\255\247\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\255\251\255\127\224\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\251\255\127\224\7\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\185\255\
+    \\255\255\255\255\253\7\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252\255\255\255\15\0\0\0\0\0\0\255\255\255\255\255\255\98\21\218\63\170\170\170\170\170\170\170\
+    \\170\170\170\170\170\26\80\8\0\255\255\255\255\191\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\247\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\0\248\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\63\0\0\0\0\0\255\255\255\255\255\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\255\251\255\251\27\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\254\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\170\170\170\170\170\
+    \\42\0\0\170\170\170\58\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\168\170\171\170\170\170\170\170\170\170\255\149\170\80\186\170\170\130\160\170\10\37\170\10\0\0\92\
+    \\7\0\0\0\0\0\0\255\255\255\255\255\255\170\170\170\170\2\168\170\170\170\170\170\170\84\213\170\170\170\170\170\170\170\170\170\170\170\170\0\0\0\0\0\0\255\255\255\255\255\
+    \\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\128\0\0\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\196\8\0\0\128\16\50\192\67\0\0\0\0\255\255\16\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\0\248\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\254\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\63\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\254\255\255\7\0\0\0\0\0\4\32\4\0\0\0\128\255\255\127\255\170\170\170\170\170\170\170\85\85\171\170\170\
+    \\170\170\170\212\41\49\36\78\42\45\81\230\64\82\85\181\170\170\41\170\170\170\170\170\170\250\147\133\170\255\255\255\255\255\255\255\255\239\255\255\255\255\1\3\0\0\0\31\0\0\
+    \\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\138\60\0\0\1\0\0\240\255\255\255\127\227\170\170\170\47\25\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252\255\255\
+    \\15\0\0\192\223\255\255\0\0\0\252\255\255\15\0\0\192\235\239\255\0\0\0\252\255\255\15\0\0\192\255\255\255\0\0\0\252\255\255\15\0\0\192\255\255\255\0\0\0\252\
+    \\255\255\15\0\0\192\255\255"#
+
+isLowercaseOffsetsBitMap :: Ptr Word16
+isLowercaseOffsetsBitMap = Ptr
+    "\232\4\39\5\133\3\104\2\104\2\104\2\104\2\104\2\209\1\105\2\104\2\104\2\104\2\104\2\176\4\0\0\183\3\104\2\232\3\104\2\104\2\104\2\171\1\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\
+    \\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\69\3\104\2\20\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\
+    \\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\241\1\104\2\225\2\104\2\104\2\169\2\44\1\104\2\104\2\127\4\104\2\104\2\104\2\104\2\104\2\76\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\
+    \\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\88\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\
+    \\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\104\2\63\0\114\0\104\2\104\2\104\2\172\0\230\0\104\2\104\2\104\2\130\1"#
+
+{-# INLINE isAlphabetic #-}
+isAlphabetic :: Char -> Bool
+isAlphabetic c = c >= '\x0041' && c <= '\x323AF' && lookupIsAlphabeticBitMap (ord c)
+
+{-# INLINE lookupIsAlphabeticBitMap #-}
+lookupIsAlphabeticBitMap :: Int -> Bool
+lookupIsAlphabeticBitMap n =
+    lookupBit data# (
+        lookupWord16AsInt offsets# (
+            n `shiftR` 8
+        ) + ((n `shiftR` 3) .&. mask)
+    ) (n .&. 7)
+    where
+    mask = (1 `shiftL` 5) - 1
+    !(Ptr data#) = isAlphabeticDataBitMap
+    !(Ptr offsets#) = isAlphabeticOffsetsBitMap
+
+isAlphabeticDataBitMap :: Ptr Int8
+isAlphabeticDataBitMap = Ptr
+    "\132\252\47\62\80\189\255\243\224\67\0\0\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\239\111\
+    \\240\239\254\255\255\63\0\0\0\0\0\255\255\255\31\255\255\255\31\0\0\0\0\255\254\255\255\31\0\0\0\224\255\255\255\255\255\254\255\255\255\255\255\255\255\255\255\255\127\0\
+    \\0\255\255\255\255\0\0\0\0\0\0\255\255\255\252\255\31\0\0\255\255\255\1\255\7\255\255\255\126\128\0\255\255\255\255\255\3\240\255\248\3\255\255\255\255\191\32\255\255\255\
+    \\255\255\255\255\128\0\0\255\255\127\0\127\127\127\127\127\127\127\127\255\255\255\255\255\255\255\255\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\255\255\127\0\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\195\255\3\
+    \\0\31\80\0\0\255\7\255\255\255\255\255\255\255\254\0\192\255\255\255\255\255\255\255\255\255\255\255\255\239\31\254\225\0\156\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\254\255\255\7\254\255\255\7\0\0\0\0\0\4\32\4\255\255\127\255\255\
+    \\255\127\255\15\255\1\0\0\255\255\255\63\31\0\255\255\255\255\255\15\255\255\255\3\0\0\0\0\0\0\254\255\255\7\254\255\255\7\192\255\255\255\255\255\255\255\255\255\255\127\
+    \\252\252\252\28\0\0\0\0\255\255\255\255\255\255\0\224\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\252\255\255\255\7\48\4\255\255\255\255\255\255\255\255\255\255\255\63\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\111\255\127\242\111\255\255\255\191\153\7\0\0\0\0\0\0\0\0\0\0\
+    \\0\255\252\255\255\255\255\255\252\26\0\0\0\255\239\255\255\127\255\255\183\255\63\255\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\248\255\255\255\31\0\255\31\255\255\0\12\0\0\255\255\255\255\255\127\240\143\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\0\0\126\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\255\31\255\1\255\
+    \\67\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\128\0\0\255\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\255\255\255\255\255\255\
+    \\3\0\0\128\255\252\255\255\255\255\255\255\255\255\255\255\255\255\249\255\255\255\255\255\255\255\63\235\31\0\0\252\255\255\255\7\255\255\255\255\7\0\255\255\255\31\255\255\255\255\
+    \\255\255\247\255\0\128\0\0\255\255\0\124\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\253\255\
+    \\255\247\255\255\255\247\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\0\0\0\0\0\0\0\0\255\255\255\255\255\63\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\255\255\255\255\255\255\255\255\159\255\255\254\255\255\7\255\255\255\255\255\
+    \\255\255\255\255\199\255\1\255\255\255\255\255\255\255\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\1\0\0\0\0\0\0\255\255\255\255\255\255\7\0\255\255\255\255\255\255\7\0\240\0\255\255\255\255\71\0\255\255\255\255\255\255\255\255\30\192\0\20\0\0\0\0\255\255\
+    \\255\255\7\0\4\0\0\0\39\0\240\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\0\255\255\127\248\255\
+    \\255\255\255\255\15\255\255\255\255\255\255\255\127\254\255\31\0\0\0\0\0\128\0\0\128\1\112\0\0\0\0\0\0\255\255\255\255\255\31\128\63\0\64\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\0\0\255\255\255\255\255\15\0\0\255\255\251\255\255\255\159\192\3\0\0\0\0\0\0\0\127\189\255\191\255\
+    \\1\255\255\255\255\255\255\255\1\0\0\0\0\0\0\0\255\254\255\255\255\31\254\255\15\255\255\254\255\255\255\31\0\0\0\0\0\0\0\0\255\255\255\255\255\255\31\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\252\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\223\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\128\0\255\255\63\0\0\0\0\0\255\255\3\0\0\0\0\0\255\255\31\0\0\0\255\255\127\0\255\255\255\255\255\
+    \\0\0\0\0\252\255\255\63\130\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\27\3\0\28\0\0\0\0\0\0\16\191\231\223\223\255\255\
+    \\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\239\255\
+    \\223\225\255\15\0\254\255\239\159\249\255\255\253\197\227\159\89\128\176\15\0\3\16\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\1\0\255\255\255\255\255\255\254\255\255\255\127\2\255\255\255\255\255\1\0\0\0\0\255\191\182\
+    \\0\255\255\255\135\7\0\255\253\255\255\255\255\127\127\1\0\0\0\0\0\252\255\255\255\252\255\255\254\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\255\255\255\255\1\0\0\0\255\255\255\255\255\255\255\127\17\0\0\0\0\0\0\0\255\255\255\255\255\255\63\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\255\255\255\255\255\255\63\127\0\0\0\63\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\15\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\15\0\0\0\248\255\255\224\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\63\1\0\238\159\249\255\255\253\237\227\159\25\192\176\15\0\2\0\236\199\61\214\24\199\
+    \\255\195\199\29\129\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\31\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\248\255\223\188\64\215\255\255\251\255\255\
+    \\255\255\255\255\255\255\255\191\255\255\255\255\0\0\0\255\255\255\255\255\255\15\0\255\255\255\255\255\255\255\255\47\0\0\0\0\0\252\232\255\255\255\255\255\255\255\255\187\7\0\
+    \\128\3\0\0\0\255\255\255\255\255\255\255\255\179\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\127\0\0\0\63\0\0\0\0\255\255\255\63\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\31\120\12\0\239\255\255\255\150\254\247\10\132\234\150\170\150\247\247\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0\255\255\255\3\255\255\255\
+    \\3\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\61\127\61\255\255\255\255\255\61\255\255\255\255\61\127\61\255\127\255\255\255\255\
+    \\255\255\127\249\0\0\255\255\255\255\255\255\255\255\0\60\255\255\255\255\191\32\255\255\255\255\255\247\127\0\248\224\255\253\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\3\0\0\0\248\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\127\0\248\224\255\253\127\95\219\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\255\255\63\0\0\255\255\255\255\255\255\255\255\252\255\255\255\255\255\255\0\0\0\0\0\255\15\255\255\255\255\
+    \\0\224\255\255\255\7\255\255\255\255\255\7\255\255\255\63\255\255\255\255\15\255\62\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\31\255\255\255\255\255\255\1\
+    \\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\255\255\255\255\15\255\255\255\255\15\128\255\255\15\0\255\255\15\0\255\223\13\0\
+    \\255\255\255\255\255\255\207\255\255\1\128\16\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\1\255\255\255\255\255\7\255\255\255\255\255\255\255\255\63\0\0\0\0\0\62\0\
+    \\255\255\255\255\255\255\255\1\4\0\255\255\255\1\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\
+    \\255\255\255\3\255\255\255\3\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\7\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\61\127\61\255\
+    \\255\255\255\255\61\255\255\255\255\61\127\61\255\127\255\255\255\255\255\61\255\255\255\255\255\255\255\255\7\0\0\0\0\255\255\0\0\255\255\255\255\255\255\255\255\255\255\63\63\255\
+    \\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\95\220\31\207\15\255\31\220\31\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\1\0\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\135\255\
+    \\255\255\255\255\255\255\128\255\255\0\0\0\0\0\0\0\0\11\0\3\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\238\135\249\255\255\253\109\195\135\25\2\94\0\0\63\0\238\191\251\255\255\253\237\227\191\27\1\0\15\0\0\30\255\223\253\255\255\253\255\227\223\29\96\39\15\0\0\0\
+    \\239\223\253\255\255\253\239\227\223\29\96\96\15\0\14\0\255\223\253\255\255\255\255\231\223\93\240\128\15\0\0\252\238\255\127\252\255\255\251\47\127\128\95\255\0\0\12\0\254\255\
+    \\255\255\255\255\255\7\127\32\0\0\0\0\0\0\214\247\255\255\175\255\255\59\95\32\0\240\0\0\0\0\255\255\255\255\255\255\239\255\239\31\0\0\0\0\0\0\255\255\255\255\
+    \\255\243\0\252\255\255\255\255\191\255\3\0\255\255\255\255\255\255\127\0\0\224\0\252\255\255\255\63\255\7\255\255\255\255\255\231\0\0\0\0\0\222\111\4\224\0\0\0\254\3\
+    \\62\31\254\255\255\255\255\255\255\255\255\255\127\224\254\255\255\255\255\255\255\255\255\255\255\247\255\255\255\255\255\255\127\0\255\63\0\0\255\255\127\252\255\255\255\255\255\255\255\127\
+    \\5\0\0\56\255\255\60\0\126\126\126\0\127\127\255\255\255\255\255\247\255\3\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\0\0\255\255\255\255\255\0\255\255\255\255\
+    \\255\255\15\0\255\247\255\247\183\255\251\255\251\27\255\255\255\255\255\255\15\0\255\255\255\255\255\255\127\0\255\255\63\0\255\0\0\0\191\255\255\255\255\255\253\7\0\0\0\0\
+    \\0\0\0\0\63\253\255\255\255\255\191\145\255\255\63\0\255\255\127\0\255\255\255\127\0\0\0\0\0\0\0\0\255\255\55\0\255\255\63\0\255\255\255\3\0\0\0\0\0\0\
+    \\0\0\255\255\255\255\255\255\255\192\0\0\0\0\0\0\0\0\255\255\255\255\255\255\63\0\255\255\63\0\255\255\7\0\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\239\159\249\255\255\253\237\227\159\25\129\224\15\0\0\0\255\75\255\255\255\255\191\255\165\55\10\0\0\0\0\0\255\255\255\231\255\7\0\0\127\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\1\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\0\0\128\255\255\255\255\
+    \\255\255\231\127\0\0\255\255\255\255\255\255\255\255\255\32\0\0\255\255\255\255\255\255\255\255\255\1\127\251\255\255\255\255\127\180\203\0\0\0\191\253\255\255\255\127\123\1\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\255\255\253\255\255\255\255\199\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\1\
+    \\255\255\255\127\0\0\255\255\255\255\255\255\255\255\255\127\0\0\255\255\255\63\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\63\0\0\0\0\128\255\255\223\255\255\255\223\255\255\127\255\255\255\127\255\255\255\253\255\255\255\253\255\255\247\15\0\0\0\0\0\0\255\255\255\127\224\7\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\255\255\249\219\7\255\255\255\255\255\255\255\63\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\255\255\255\255\255\255\255\255\143\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"#
+
+isAlphabeticOffsetsBitMap :: Ptr Word16
+isAlphabeticOffsetsBitMap = Ptr
+    "\65\1\215\0\223\0\135\7\206\4\245\5\253\0\150\1\111\0\161\5\36\11\36\7\68\11\100\11\132\11\134\4\148\8\215\0\121\8\107\10\214\0\215\0\107\3\130\9\158\9\92\1\27\4\164\11\196\11\33\2\215\0\135\10\139\2\0\0\178\0\178\0\159\2\178\0\178\0\178\0\178\0\178\0\178\0\178\0\31\8\141\0\63\7\178\0\228\11\81\0\
+    \\178\0\178\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\41\1\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\
+    \\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\
+    \\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\45\3\215\0\65\2\189\2\165\7\218\2\4\12\36\12\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\
+    \\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\255\3\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\215\0\
+    \\207\8\180\8\215\0\10\9\5\5\120\1\1\2\158\4\174\4\42\9\101\9\68\12\215\0\100\12\132\12\164\12\49\0\196\12\174\3\65\5\82\5\33\5\180\9\198\3\105\4\228\12\197\7\100\6\76\6\4\13\36\13\225\1\68\13\44\6\21\6\100\13\182\0\132\13\215\0\215\0\215\0\241\4\225\4\139\3\178\0\178\0\178\0\178\0\178\0\178\0\
+    \\178\0\178\0\178\0\153\3\215\0\215\0\215\0\215\0\89\2\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\101\2\215\0\215\0\169\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\
+    \\178\0\178\0\178\0\172\0\178\0\178\0\178\0\178\0\178\0\178\0\215\0\215\0\164\13\222\6\178\0\246\6\111\7\229\10\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\197\6\215\0\215\0\215\0\215\0\196\13\16\0\178\0\178\0\
+    \\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\18\0\215\0\230\3\244\3\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\119\2\178\0\178\0\178\0\178\0\178\0\
+    \\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\136\5\250\2\6\3\228\13\178\0\178\0\178\0\178\0\178\0\178\0\178\0\4\14\36\14\59\4\73\4\178\0\165\6\4\7\178\0\194\1\38\3\68\14\178\0\178\0\178\0\178\0\63\8\178\0\178\0\89\8\178\0\178\0\
+    \\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\
+    \\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\
+    \\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\
+    \\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\37\1\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\29\1\73\3\215\0\215\0\215\0\
+    \\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\85\3\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\5\215\0\215\0\
+    \\182\1\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\178\0\215\0\215\0\190\1\178\0\178\0\178\0\178\0\178\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\23\2\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\215\0\
+    \\215\0\215\0\215\0\33\2"#
 
diff --git a/lib/Unicode/Internal/Char/DerivedNumericValues.hs b/lib/Unicode/Internal/Char/DerivedNumericValues.hs
--- a/lib/Unicode/Internal/Char/DerivedNumericValues.hs
+++ b/lib/Unicode/Internal/Char/DerivedNumericValues.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/extracted/DerivedNumericValues.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedNumericValues.txt
 -- |
 -- Module      : Unicode.Internal.Char.DerivedNumericValues
 -- Copyright   : (c) 2022 Composewell Technologies and Contributors
@@ -1136,6 +1136,16 @@
   '\68919' -> Just 7
   '\68920' -> Just 8
   '\68921' -> Just 9
+  '\68928' -> Just 0
+  '\68929' -> Just 1
+  '\68930' -> Just 2
+  '\68931' -> Just 3
+  '\68932' -> Just 4
+  '\68933' -> Just 5
+  '\68934' -> Just 6
+  '\68935' -> Just 7
+  '\68936' -> Just 8
+  '\68937' -> Just 9
   '\69216' -> Just 1
   '\69217' -> Just 2
   '\69218' -> Just 3
@@ -1318,6 +1328,26 @@
   '\71367' -> Just 7
   '\71368' -> Just 8
   '\71369' -> Just 9
+  '\71376' -> Just 0
+  '\71377' -> Just 1
+  '\71378' -> Just 2
+  '\71379' -> Just 3
+  '\71380' -> Just 4
+  '\71381' -> Just 5
+  '\71382' -> Just 6
+  '\71383' -> Just 7
+  '\71384' -> Just 8
+  '\71385' -> Just 9
+  '\71386' -> Just 0
+  '\71387' -> Just 1
+  '\71388' -> Just 2
+  '\71389' -> Just 3
+  '\71390' -> Just 4
+  '\71391' -> Just 5
+  '\71392' -> Just 6
+  '\71393' -> Just 7
+  '\71394' -> Just 8
+  '\71395' -> Just 9
   '\71472' -> Just 0
   '\71473' -> Just 1
   '\71474' -> Just 2
@@ -1359,6 +1389,16 @@
   '\72023' -> Just 7
   '\72024' -> Just 8
   '\72025' -> Just 9
+  '\72688' -> Just 0
+  '\72689' -> Just 1
+  '\72690' -> Just 2
+  '\72691' -> Just 3
+  '\72692' -> Just 4
+  '\72693' -> Just 5
+  '\72694' -> Just 6
+  '\72695' -> Just 7
+  '\72696' -> Just 8
+  '\72697' -> Just 9
   '\72784' -> Just 0
   '\72785' -> Just 1
   '\72786' -> Just 2
@@ -1550,6 +1590,16 @@
   '\74860' -> Just 7
   '\74861' -> Just 8
   '\74862' -> Just 9
+  '\90416' -> Just 0
+  '\90417' -> Just 1
+  '\90418' -> Just 2
+  '\90419' -> Just 3
+  '\90420' -> Just 4
+  '\90421' -> Just 5
+  '\90422' -> Just 6
+  '\90423' -> Just 7
+  '\90424' -> Just 8
+  '\90425' -> Just 9
   '\92768' -> Just 0
   '\92769' -> Just 1
   '\92770' -> Just 2
@@ -1587,6 +1637,16 @@
   '\93023' -> Just 100000000
   '\93024' -> Just 10000000000
   '\93025' -> Just 1000000000000
+  '\93552' -> Just 0
+  '\93553' -> Just 1
+  '\93554' -> Just 2
+  '\93555' -> Just 3
+  '\93556' -> Just 4
+  '\93557' -> Just 5
+  '\93558' -> Just 6
+  '\93559' -> Just 7
+  '\93560' -> Just 8
+  '\93561' -> Just 9
   '\93824' -> Just 0
   '\93825' -> Just 1
   '\93826' -> Just 2
@@ -1610,6 +1670,16 @@
   '\93844' -> Just 1
   '\93845' -> Just 2
   '\93846' -> Just 3
+  '\118000' -> Just 0
+  '\118001' -> Just 1
+  '\118002' -> Just 2
+  '\118003' -> Just 3
+  '\118004' -> Just 4
+  '\118005' -> Just 5
+  '\118006' -> Just 6
+  '\118007' -> Just 7
+  '\118008' -> Just 8
+  '\118009' -> Just 9
   '\119488' -> Just 0
   '\119489' -> Just 1
   '\119490' -> Just 2
@@ -1755,6 +1825,16 @@
   '\124151' -> Just 7
   '\124152' -> Just 8
   '\124153' -> Just 9
+  '\124401' -> Just 0
+  '\124402' -> Just 1
+  '\124403' -> Just 2
+  '\124404' -> Just 3
+  '\124405' -> Just 4
+  '\124406' -> Just 5
+  '\124407' -> Just 6
+  '\124408' -> Just 7
+  '\124409' -> Just 8
+  '\124410' -> Just 9
   '\125127' -> Just 1
   '\125128' -> Just 2
   '\125129' -> Just 3
diff --git a/lib/Unicode/Internal/Char/PropList.hs b/lib/Unicode/Internal/Char/PropList.hs
--- a/lib/Unicode/Internal/Char/PropList.hs
+++ b/lib/Unicode/Internal/Char/PropList.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/PropList.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/PropList.txt
 -- |
 -- Module      : Unicode.Internal.Char.PropList
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
diff --git a/lib/Unicode/Internal/Char/SpecialCasing/LowerCaseMapping.hs b/lib/Unicode/Internal/Char/SpecialCasing/LowerCaseMapping.hs
--- a/lib/Unicode/Internal/Char/SpecialCasing/LowerCaseMapping.hs
+++ b/lib/Unicode/Internal/Char/SpecialCasing/LowerCaseMapping.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.SpecialCasing.LowerCaseMapping
 -- Copyright   : (c) 2022 Composewell Technologies and Contributors
@@ -618,6 +618,7 @@
   '\5107' -> 0x13fb
   '\5108' -> 0x13fc
   '\5109' -> 0x13fd
+  '\7305' -> 0x1c8a
   '\7312' -> 0x10d0
   '\7313' -> 0x10d1
   '\7314' -> 0x10d2
@@ -1223,9 +1224,13 @@
   '\42950' -> 0x1d8e
   '\42951' -> 0xa7c8
   '\42953' -> 0xa7ca
+  '\42955' -> 0x264
+  '\42956' -> 0xa7cd
   '\42960' -> 0xa7d1
   '\42966' -> 0xa7d7
   '\42968' -> 0xa7d9
+  '\42970' -> 0xa7db
+  '\42972' -> 0x19b
   '\42997' -> 0xa7f6
   '\64256' -> 0xfb00
   '\64257' -> 0xfb01
@@ -1427,6 +1432,28 @@
   '\68784' -> 0x10cf0
   '\68785' -> 0x10cf1
   '\68786' -> 0x10cf2
+  '\68944' -> 0x10d70
+  '\68945' -> 0x10d71
+  '\68946' -> 0x10d72
+  '\68947' -> 0x10d73
+  '\68948' -> 0x10d74
+  '\68949' -> 0x10d75
+  '\68950' -> 0x10d76
+  '\68951' -> 0x10d77
+  '\68952' -> 0x10d78
+  '\68953' -> 0x10d79
+  '\68954' -> 0x10d7a
+  '\68955' -> 0x10d7b
+  '\68956' -> 0x10d7c
+  '\68957' -> 0x10d7d
+  '\68958' -> 0x10d7e
+  '\68959' -> 0x10d7f
+  '\68960' -> 0x10d80
+  '\68961' -> 0x10d81
+  '\68962' -> 0x10d82
+  '\68963' -> 0x10d83
+  '\68964' -> 0x10d84
+  '\68965' -> 0x10d85
   '\71840' -> 0x118c0
   '\71841' -> 0x118c1
   '\71842' -> 0x118c2
diff --git a/lib/Unicode/Internal/Char/SpecialCasing/TitleCaseMapping.hs b/lib/Unicode/Internal/Char/SpecialCasing/TitleCaseMapping.hs
--- a/lib/Unicode/Internal/Char/SpecialCasing/TitleCaseMapping.hs
+++ b/lib/Unicode/Internal/Char/SpecialCasing/TitleCaseMapping.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.SpecialCasing.TitleCaseMapping
 -- Copyright   : (c) 2022 Composewell Technologies and Contributors
@@ -150,6 +150,7 @@
   '\405' -> 0x1f6
   '\409' -> 0x198
   '\410' -> 0x23d
+  '\411' -> 0xa7dc
   '\414' -> 0x220
   '\417' -> 0x1a0
   '\419' -> 0x1a2
@@ -245,6 +246,7 @@
   '\608' -> 0x193
   '\609' -> 0xa7ac
   '\611' -> 0x194
+  '\612' -> 0xa7cb
   '\613' -> 0xa78d
   '\614' -> 0xa7aa
   '\616' -> 0x197
@@ -584,6 +586,7 @@
   '\7302' -> 0x42a
   '\7303' -> 0x462
   '\7304' -> 0xa64a
+  '\7306' -> 0x1c89
   '\7545' -> 0xa77d
   '\7549' -> 0x2c63
   '\7566' -> 0xa7c6
@@ -1164,9 +1167,11 @@
   '\42947' -> 0xa7c2
   '\42952' -> 0xa7c7
   '\42954' -> 0xa7c9
+  '\42957' -> 0xa7cc
   '\42961' -> 0xa7d0
   '\42967' -> 0xa7d6
   '\42969' -> 0xa7d8
+  '\42971' -> 0xa7da
   '\42998' -> 0xa7f5
   '\43859' -> 0xa7b3
   '\43888' -> 0x13a0
@@ -1449,6 +1454,28 @@
   '\68848' -> 0x10cb0
   '\68849' -> 0x10cb1
   '\68850' -> 0x10cb2
+  '\68976' -> 0x10d50
+  '\68977' -> 0x10d51
+  '\68978' -> 0x10d52
+  '\68979' -> 0x10d53
+  '\68980' -> 0x10d54
+  '\68981' -> 0x10d55
+  '\68982' -> 0x10d56
+  '\68983' -> 0x10d57
+  '\68984' -> 0x10d58
+  '\68985' -> 0x10d59
+  '\68986' -> 0x10d5a
+  '\68987' -> 0x10d5b
+  '\68988' -> 0x10d5c
+  '\68989' -> 0x10d5d
+  '\68990' -> 0x10d5e
+  '\68991' -> 0x10d5f
+  '\68992' -> 0x10d60
+  '\68993' -> 0x10d61
+  '\68994' -> 0x10d62
+  '\68995' -> 0x10d63
+  '\68996' -> 0x10d64
+  '\68997' -> 0x10d65
   '\71872' -> 0x118a0
   '\71873' -> 0x118a1
   '\71874' -> 0x118a2
diff --git a/lib/Unicode/Internal/Char/SpecialCasing/UpperCaseMapping.hs b/lib/Unicode/Internal/Char/SpecialCasing/UpperCaseMapping.hs
--- a/lib/Unicode/Internal/Char/SpecialCasing/UpperCaseMapping.hs
+++ b/lib/Unicode/Internal/Char/SpecialCasing/UpperCaseMapping.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.SpecialCasing.UpperCaseMapping
 -- Copyright   : (c) 2022 Composewell Technologies and Contributors
@@ -150,6 +150,7 @@
   '\405' -> 0x1f6
   '\409' -> 0x198
   '\410' -> 0x23d
+  '\411' -> 0xa7dc
   '\414' -> 0x220
   '\417' -> 0x1a0
   '\419' -> 0x1a2
@@ -241,6 +242,7 @@
   '\608' -> 0x193
   '\609' -> 0xa7ac
   '\611' -> 0x194
+  '\612' -> 0xa7cb
   '\613' -> 0xa78d
   '\614' -> 0xa7aa
   '\616' -> 0x197
@@ -580,6 +582,7 @@
   '\7302' -> 0x42a
   '\7303' -> 0x462
   '\7304' -> 0xa64a
+  '\7306' -> 0x1c89
   '\7545' -> 0xa77d
   '\7549' -> 0x2c63
   '\7566' -> 0xa7c6
@@ -1160,9 +1163,11 @@
   '\42947' -> 0xa7c2
   '\42952' -> 0xa7c7
   '\42954' -> 0xa7c9
+  '\42957' -> 0xa7cc
   '\42961' -> 0xa7d0
   '\42967' -> 0xa7d6
   '\42969' -> 0xa7d8
+  '\42971' -> 0xa7da
   '\42998' -> 0xa7f5
   '\43859' -> 0xa7b3
   '\43888' -> 0x13a0
@@ -1445,6 +1450,28 @@
   '\68848' -> 0x10cb0
   '\68849' -> 0x10cb1
   '\68850' -> 0x10cb2
+  '\68976' -> 0x10d50
+  '\68977' -> 0x10d51
+  '\68978' -> 0x10d52
+  '\68979' -> 0x10d53
+  '\68980' -> 0x10d54
+  '\68981' -> 0x10d55
+  '\68982' -> 0x10d56
+  '\68983' -> 0x10d57
+  '\68984' -> 0x10d58
+  '\68985' -> 0x10d59
+  '\68986' -> 0x10d5a
+  '\68987' -> 0x10d5b
+  '\68988' -> 0x10d5c
+  '\68989' -> 0x10d5d
+  '\68990' -> 0x10d5e
+  '\68991' -> 0x10d5f
+  '\68992' -> 0x10d60
+  '\68993' -> 0x10d61
+  '\68994' -> 0x10d62
+  '\68995' -> 0x10d63
+  '\68996' -> 0x10d64
+  '\68997' -> 0x10d65
   '\71872' -> 0x118a0
   '\71873' -> 0x118a1
   '\71874' -> 0x118a2
diff --git a/lib/Unicode/Internal/Char/UnicodeData/CombiningClass.hs b/lib/Unicode/Internal/Char/UnicodeData/CombiningClass.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/CombiningClass.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/CombiningClass.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.CombiningClass
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -301,6 +301,7 @@
   '\2137' -> 220
   '\2138' -> 220
   '\2139' -> 220
+  '\2199' -> 230
   '\2200' -> 230
   '\2201' -> 220
   '\2202' -> 220
@@ -746,6 +747,11 @@
   '\68901' -> 230
   '\68902' -> 230
   '\68903' -> 230
+  '\68969' -> 230
+  '\68970' -> 230
+  '\68971' -> 230
+  '\68972' -> 230
+  '\68973' -> 230
   '\69291' -> 230
   '\69292' -> 230
   '\69373' -> 220
@@ -798,6 +804,9 @@
   '\70514' -> 230
   '\70515' -> 230
   '\70516' -> 230
+  '\70606' -> 9
+  '\70607' -> 9
+  '\70608' -> 9
   '\70722' -> 9
   '\70726' -> 7
   '\70750' -> 230
@@ -825,6 +834,7 @@
   '\73111' -> 9
   '\73537' -> 9
   '\73538' -> 9
+  '\90415' -> 9
   '\92912' -> 1
   '\92913' -> 1
   '\92914' -> 1
@@ -928,6 +938,8 @@
   '\124141' -> 232
   '\124142' -> 220
   '\124143' -> 230
+  '\124398' -> 230
+  '\124399' -> 220
   '\125136' -> 220
   '\125137' -> 220
   '\125138' -> 220
@@ -970,62 +982,71 @@
 isCombiningDataBitMap :: Ptr Int8
 isCombiningDataBitMap = Ptr
     "\0\0\0\0\0\0\16\0\128\0\0\0\0\0\0\0\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\31\0\0\0\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\96\8\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\252\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\192\251\239\62\0\0\0\0\0\14\0\0\0\0\0\0\0\255\0\0\0\0\0\252\255\255\251\255\255\255\0\0\0\
-    \\0\0\0\0\16\0\32\30\0\0\0\0\0\0\0\0\0\0\0\0\16\0\32\0\0\0\0\0\64\0\160\0\0\0\0\0\135\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\48\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\4\32\0\0\0\0\0\0\128\6\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\255\255\255\255\255\255\255\255\255\127\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\157\193\2\0\0\0\0\0\64\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\255\7\0\0\0\0\0\248\255\255\0\0\1\0\0\0\0\0\0\0\
-    \\0\0\0\0\192\159\159\61\0\0\0\0\2\0\0\0\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\248\15\32\0\0\0\0\0\0\128\6\
-    \\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\7\0\15\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\15\0\0\0\0\0\0\0\0\0\3\0\0\160\2\0\0\0\0\0\0\22\60\221\0\0\
-    \\0\0\0\0\0\64\0\0\0\0\0\0\0\16\0\32\96\0\0\0\0\0\0\0\0\0\0\0\0\16\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\32\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\0\0\0\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\224\0\0\0\0\0\0\0\0\192\255\1\0\0\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\64\0\0\0\0\0\1\128\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\7\0\0\0\0\0\24\0\0\0\0\0\0\0\8\0\0\0\0\0\0\0\0\0\1\4\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\7\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\96\8\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\52\
+    \\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\0\0\0\0\0\0\0\0\0\0\0\0\0\0\8\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\31\226\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\128\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\127\255\255\249\219\7\0\0\0\0\0\
+    \\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\224\0\0\0\0\0\0\0\0\192\255\1\0\0\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\64\0\0\0\0\0\1\128\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\7\0\0\0\0\0\24\0\0\0\0\0\0\0\8\0\0\0\0\0\0\0\0\0\
+    \\1\4\0\0\0\0\0\0\128\6\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\15\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\15\0\0\0\0\0\0\0\0\0\3\0\0\160\2\0\
+    \\0\0\0\0\0\22\60\221\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\16\0\32\96\0\0\0\0\0\0\0\0\0\0\0\0\16\0\32\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\24\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\0\0\0\252\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\0\0\
     \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\32\64\0\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0\255\255\3\0\0\0\0\0\0\56\
-    \\0\0\0\0\8\0\0\0\0\0\0\0\0\0\0\0\8\0\1\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\0\0\0\0\0\0\0\
-    \\0\0\0\16\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\32\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\32\0\0\0\0\0\0\96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\0\24\0\32\0\0\192\31\
-    \\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\0\0\0\0\0\0\0\0\0\0\68\0\0\64\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\1\0\0\0\0\0\0\0\0\1\0\224\159\0\0\0\0\
-    \\0\0\255\191\255\127\0\0\0\0\0\0\0\0\0\0\0\0\16\0\16\0\0\0\0\248\15\0\0\0\0\0\0\12\0\0\0\0\0\0\64\0\12\0\0\160\0\0\0\0\
-    \\0\135\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\248\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\254\255\255\255\255\191\182\0\0\0\0\0\0\0\0\0\0\0\0\0\128\240\
-    \\63\0\0\0\192\0\0\0\0\0\0\0\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\
-    \\31\226\255\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\3\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\127\255\255\249\219\7\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\240\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\31\0\0\0\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\0\0\0\
-    \\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\52\0\0\0\0\0\0\0\0\0\128\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\192\0\0\0\0\0\0\0\0\0\0\0\0\0\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\240\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\
-    \\224\0\0\0\0\0\0\0\0\192\255\1\0\0\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\240\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\31\226\255\1\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\255\253\33\16\3\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255"#
+    \\0\0\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\64\0\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\
+    \\0\0\255\255\3\0\0\0\0\0\0\56\0\0\0\0\8\0\0\0\0\0\0\0\0\0\0\0\8\0\1\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\227\7\248\231\
+    \\15\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\227\7\248\231\15\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\0\0\0\0\0\0\0\0\62\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\
+    \\0\0\0\0\0\0\224\0\0\0\0\0\0\0\0\192\255\1\0\0\0\0\0\60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\48\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\32\0\0\0\0\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\127\255\
+    \\255\249\219\7\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\240\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\255\255\255\255\255\255\255\255\255\127\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\48\0\0\0\16\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\32\0\0\0\0\0\0\0\0\68\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\1\0\0\0\0\0\0\0\0\0\0\0\0\0\128\240\63\0\0\0\192\0\0\0\0\
+    \\0\0\0\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\31\0\0\0\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\
+    \\0\0\0\0\0\0\64\0\0\0\0\0\1\128\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\7\0\0\0\0\0\24\0\0\0\0\0\0\0\8\0\0\0\0\0\
+    \\0\0\0\0\1\4\0\0\0\0\0\0\96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\0\24\0\32\0\0\
+    \\192\31\31\0\0\0\0\0\0\0\0\0\0\192\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\31\226\255\1\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\
+    \\255\253\33\16\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\0\160\0\0\0\0\0\135\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\248\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\254\255\255\255\255\191\182\0\0\0\0\0\0\0\16\0\32\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\16\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\240\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\240\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\0\0\255\7\0\0\0\0\0\248\255\255\0\0\1\0\0\
+    \\0\0\0\0\0\0\0\0\0\192\159\159\61\0\0\0\0\2\0\0\0\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\248\15\32\0\0\0\
+    \\0\0\0\128\6\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\157\193\2\0\0\0\0\0\64\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\192\251\239\62\0\0\0\0\0\14\0\0\0\0\0\0\128\255\0\0\0\0\0\252\
+    \\255\255\251\255\255\255\0\0\0\0\0\0\0\16\0\32\30\0\0\0\0\0\0\0\0\0\0\0\0\16\0\32\0\0\0\0\0\64\0\160\0\0\0\0\0\135\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\240\0\0\0\0\0\0\0\0\62\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\127\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\240\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\192\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\1\0\0\0\0\0\0\0\0\1\0\224\159\0\0\0\0\0\
+    \\0\255\191\255\127\0\0\0\0\0\0\0\0\0\0\0\0\16\0\16\0\0\0\0\248\15\0\0\0\0\0\0\12\0\0\0\0\0\0\64\0\12\0"#
 
 isCombiningOffsets1BitMap :: Ptr Word16
 isCombiningOffsets1BitMap = Ptr
-    "\167\0\187\0\187\0\187\0\187\0\187\0\187\0\187\0\187\0\216\0\187\0\148\3\9\5\245\4\187\0\187\0\187\0\187\0\187\0\187\0\232\0\187\0\31\7\187\0\187\0\187\0\187\0\187\0\66\7\187\0\187\0\187\0\187\0\187\0\187\0\187\0\187\0\249\6\188\4\104\2\187\0\187\0\187\0\187\0\187\0\34\0\187\0\252\0\249\1\14\2\
-    \\187\0\189\1\173\7\44\6\114\9\187\0\58\2\192\6\166\2\59\1\66\5\88\3\31\3\154\3\76\4\187\0\187\0\187\0\123\1\152\1\218\3\18\4\124\5\247\5\140\8\106\0\0\0\97\8\73\0\130\7\216\7\159\1\187\0\14\9"#
+    "\213\2\233\2\233\2\233\2\233\2\233\2\233\2\233\2\233\2\6\3\233\2\254\4\183\3\139\1\233\2\233\2\233\2\233\2\233\2\233\2\22\3\233\2\240\0\233\2\233\2\233\2\233\2\233\2\19\1\233\2\233\2\233\2\233\2\233\2\233\2\233\2\233\2\90\6\106\3\158\9\233\2\233\2\40\2\150\4\233\2\194\4\189\5\63\11\181\7\233\2\
+    \\143\5\73\8\29\9\220\9\130\8\154\2\97\2\4\5\25\8\233\2\233\2\233\2\245\7\55\4\182\1\238\1\64\7\33\6\202\0\98\0\0\0\159\0\65\0\27\0\233\2\233\2\233\2\233\2\159\6\233\2\42\3\83\1\111\5\223\8\233\2\103\10"#
 
 isCombiningOffsets2BitMap :: Ptr Word8
 isCombiningOffsets2BitMap = Ptr
-    "\55\48\22\0\1\1\1\1\1\1\34\1\1\1\1\4\63\71\1\1\1\1\40\1\1\1\1\14\1\12\79"#
+    "\49\42\22\0\1\1\1\1\1\1\34\1\1\1\1\4\57\65\1\1\1\1\73\1\1\1\1\14\1\12\81"#
 
diff --git a/lib/Unicode/Internal/Char/UnicodeData/Compositions.hs b/lib/Unicode/Internal/Char/UnicodeData/Compositions.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/Compositions.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/Compositions.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.Compositions
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -949,6 +949,8 @@
 compose '\12529' '\12441' = Just '\12537'
 compose '\12530' '\12441' = Just '\12538'
 compose '\12541' '\12441' = Just '\12542'
+compose '\67026' '\775' = Just '\67017'
+compose '\67034' '\775' = Just '\67044'
 compose '\69785' '\69818' = Just '\69786'
 compose '\69787' '\69818' = Just '\69788'
 compose '\69797' '\69818' = Just '\69803'
@@ -956,12 +958,30 @@
 compose '\69938' '\69927' = Just '\69935'
 compose '\70471' '\70462' = Just '\70475'
 compose '\70471' '\70487' = Just '\70476'
+compose '\70530' '\70601' = Just '\70531'
+compose '\70532' '\70587' = Just '\70533'
+compose '\70539' '\70594' = Just '\70542'
+compose '\70544' '\70601' = Just '\70545'
+compose '\70594' '\70594' = Just '\70597'
+compose '\70594' '\70584' = Just '\70599'
+compose '\70594' '\70601' = Just '\70600'
 compose '\70841' '\70842' = Just '\70843'
 compose '\70841' '\70832' = Just '\70844'
 compose '\70841' '\70845' = Just '\70846'
 compose '\71096' '\71087' = Just '\71098'
 compose '\71097' '\71087' = Just '\71099'
 compose '\71989' '\71984' = Just '\71992'
+compose '\90398' '\90398' = Just '\90401'
+compose '\90398' '\90409' = Just '\90402'
+compose '\90398' '\90399' = Just '\90403'
+compose '\90409' '\90399' = Just '\90404'
+compose '\90398' '\90400' = Just '\90405'
+compose '\90401' '\90399' = Just '\90406'
+compose '\90402' '\90399' = Just '\90407'
+compose '\90401' '\90400' = Just '\90408'
+compose '\93543' '\93543' = Just '\93544'
+compose '\93539' '\93543' = Just '\93545'
+compose '\93545' '\93543' = Just '\93546'
 
 compose _ _ = Nothing
 
@@ -1002,19 +1022,37 @@
 composeStarters '\69938' '\69927' = Just '\69935'
 composeStarters '\70471' '\70462' = Just '\70475'
 composeStarters '\70471' '\70487' = Just '\70476'
+composeStarters '\70530' '\70601' = Just '\70531'
+composeStarters '\70532' '\70587' = Just '\70533'
+composeStarters '\70539' '\70594' = Just '\70542'
+composeStarters '\70544' '\70601' = Just '\70545'
+composeStarters '\70594' '\70594' = Just '\70597'
+composeStarters '\70594' '\70584' = Just '\70599'
+composeStarters '\70594' '\70601' = Just '\70600'
 composeStarters '\70841' '\70842' = Just '\70843'
 composeStarters '\70841' '\70832' = Just '\70844'
 composeStarters '\70841' '\70845' = Just '\70846'
 composeStarters '\71096' '\71087' = Just '\71098'
 composeStarters '\71097' '\71087' = Just '\71099'
 composeStarters '\71989' '\71984' = Just '\71992'
+composeStarters '\90398' '\90398' = Just '\90401'
+composeStarters '\90398' '\90409' = Just '\90402'
+composeStarters '\90398' '\90399' = Just '\90403'
+composeStarters '\90409' '\90399' = Just '\90404'
+composeStarters '\90398' '\90400' = Just '\90405'
+composeStarters '\90401' '\90399' = Just '\90406'
+composeStarters '\90402' '\90399' = Just '\90407'
+composeStarters '\90401' '\90400' = Just '\90408'
+composeStarters '\93543' '\93543' = Just '\93544'
+composeStarters '\93539' '\93543' = Just '\93545'
+composeStarters '\93545' '\93543' = Just '\93546'
 
 composeStarters _ _ = Nothing
 
 
 {-# INLINE isSecondStarter #-}
 isSecondStarter :: Char -> Bool
-isSecondStarter c = c >= '\x09BE' && c <= '\x11930' && lookupIsSecondStarterBitMap (ord c)
+isSecondStarter c = c >= '\x09BE' && c <= '\x16D67' && lookupIsSecondStarterBitMap (ord c)
 
 {-# INLINE lookupIsSecondStarterBitMap #-}
 lookupIsSecondStarterBitMap :: Int -> Bool
@@ -1022,33 +1060,35 @@
     lookupBit data# (
         lookupWord16AsInt offsets1# (
             lookupWord8AsInt offsets2# (
-                n `shiftR` 11
+                n `shiftR` 12
             ) + ((n `shiftR` 9) .&. maskOffsets)
         ) + ((n `shiftR` 3) .&. maskData)
     ) (n .&. 7)
     where
     maskData = (1 `shiftL` 6) - 1
-    maskOffsets = (1 `shiftL` 2) - 1
+    maskOffsets = (1 `shiftL` 3) - 1
     !(Ptr data#) = isSecondStarterDataBitMap
     !(Ptr offsets1#) = isSecondStarterOffsets1BitMap
     !(Ptr offsets2#) = isSecondStarterOffsets2BitMap
 
 isSecondStarterDataBitMap :: Ptr Int8
 isSecondStarterDataBitMap = Ptr
-    "\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\
-    \\96\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\64\0\0\192\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\36\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\
-    \\0\0\0\0\0\0\0\0"#
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\1\2\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\64\0\0\192\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\128\0\0\0\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\128\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\9\4\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\36\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\96\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\64\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\128\0\0\0\0"#
 
 isSecondStarterOffsets1BitMap :: Ptr Word16
 isSecondStarterOffsets1BitMap = Ptr
-    "\15\0\214\0\74\0\6\0\6\0\6\0\6\0\0\0\6\0\6\0\6\0\175\0\6\0\6\0\138\0\31\0\38\1\6\0\175\0\6\0\6\0\22\1"#
+    "\85\0\0\1\106\1\231\0\38\0\231\0\231\0\231\0\231\0\231\0\231\0\231\0\231\0\240\0\161\0\160\1\231\0\225\0\231\0\231\0\231\0\231\0\122\0\231\0\231\0\231\0\231\0\231\0\231\0\231\0\231\0\0\0\231\0\231\0\231\0\231\0\231\0\77\0"#
 
 isSecondStarterOffsets2BitMap :: Ptr Word8
 isSecondStarterOffsets2BitMap = Ptr
-    "\3\0\7\10\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\14\21"#
+    "\9\17\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\0\5\5\5\5\31"#
 
diff --git a/lib/Unicode/Internal/Char/UnicodeData/Decomposable.hs b/lib/Unicode/Internal/Char/UnicodeData/Decomposable.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/Decomposable.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/Decomposable.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.Decomposable
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -42,43 +42,49 @@
 
 isDecomposableDataBitMap :: Ptr Int8
 isDecomposableDataBitMap = Ptr
-    "\16\18\0\0\80\0\0\0\146\2\0\0\5\224\51\3\51\3\0\0\0\240\0\0\0\0\0\0\15\60\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\88\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\20\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\129\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\116\0\0\0\0\255\63\229\127\101\252\255\255\
-    \\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\160\0\252\127\95\219\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\20\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\88\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\192\31\0\0\0\0\0\0\0\0\0\0\248\1\0\0\0\0\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\8\32\132\16\0\2\104\1\2\0\8\32\132\16\0\
-    \\2\0\0\0\0\0\0\0\0\0\0\0\0\124\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\18\0\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\176\0\0\0\0\
-    \\139\112\0\2\0\0\0\2\0\0\139\112\0\0\192\0\0\0\0\0\0\0\0\0\6\0\207\252\252\252\63\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\85\4\0\0\0\0\40\11\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\191\255\126\62\191\255\126\190\255\255\252\255\63\255\241\126\248\241\243\255\63\255\255\127\0\0\0\0\3\128\1\0\0\224\255\223\207\255\
-    \\49\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\12\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\12\0\64\0\0\0\224\0\0\0\0\0\0\0\0\0\80\85\85\165\2\219\54\0\0\16\64\0\80\85\85\165\2\219\54\0\0\144\71\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\11\255\255\255\255\255\255\255\255\255\255\255\
-    \\3\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\95\222\255\207\239\255\255\220\63\255\63\229\127\101\252\255\255\255\255\255\255\255\63\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\160\0\252\127\95\219\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\207\192\255\15\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\27\0\0\0\0\0\16\64\224\215\1\0\0\252\1\0\0\124\24\0\0\
-    \\0\0\0\0\72\0\0\0\0\78\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\25\0\48\0\0\0\0\0\0\16\0\
-    \\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\18\0\0\0\0\255\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\176\0\0\0\0"#
+    "\255\255\255\207\192\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\27\0\0\0\0\0\16\64\224\215\
+    \\1\0\0\252\1\0\0\124\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\88\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\24\0\0\0\0\0\0\40\64\2\0\0\0\0\0\160\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\8\32\132\16\0\2\104\1\2\0\8\32\132\16\0\2\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\129\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\116\0\0\0\0\139\112\0\2\0\0\0\
+    \\2\0\0\139\112\0\0\192\0\0\0\0\0\0\0\0\0\6\0\207\252\252\252\63\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\85\4\0\0\0\0\40\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\31\0\0\0\0\0\0\0\0\0\0\248\1\0\0\0\0\0\0\0\0\0\80\85\85\
+    \\165\2\219\54\0\0\16\64\0\80\85\85\165\2\219\54\0\0\144\71\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\11\255\255\255\255\255\255\255\255\255\255\255\3\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\
+    \\255\223\95\222\255\207\239\255\255\220\63\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\12\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\12\0\64\0\0\0\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\254\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\88\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\16\0\0\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\8\32\
+    \\132\16\0\2\104\1\2\0\8\32\132\16\0\2\0\0\0\0\0\0\0\0\0\0\0\0\124\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\8\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\18\0\0\0\0\255\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\24\0\176\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\192\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\0\0\0\40\
+    \\64\2\0\0\0\0\0\160\1\0\0\0\0\0\0\16\18\0\0\80\0\0\0\146\2\0\0\5\224\51\3\51\3\0\0\0\240\0\0\0\0\0\0\15\60\0\0\0\0\0\
+    \\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\254\1\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\191\255\126\62\191\255\126\190\255\255\252\255\63\255\241\126\248\241\243\255\63\255\255\127\0\0\0\0\3\128\1\0\0\224\255\223\207\255\49\255\255\63\229\127\101\
+    \\252\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\0\0\0\160\0\252\127\95\219\127\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\0\0\0\0\0\0\72\0\0\0\0\78\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\25\0\48\0\0\0\0\0\
+    \\0\16\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\18\0\0\
+    \\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\176\0\0\0\0\0\0\0\0\0\0\72\0\0\0\0\78\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\25\0\48\0\0\0\0\0\0\16\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\129\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\116\0\0\0\0"#
 
 isDecomposableOffsets1BitMap :: Ptr Word16
 isDecomposableOffsets1BitMap = Ptr
-    "\242\3\230\1\230\1\230\1\230\1\230\1\230\1\230\1\230\1\18\4\36\1\230\1\230\1\251\1\230\1\230\1\230\1\230\1\230\1\230\1\230\1\50\4\46\1\135\0\173\0\79\0\230\1\38\0\230\1\230\1\230\1\230\1\18\4\36\1\230\1\230\1\120\3\9\5\238\2\147\2\174\2\68\5\228\0\83\2\225\1\230\1\230\1\230\1\230\1\79\3\
-    \\230\1\95\4\184\3\0\0\230\1\230\1\230\1\19\3\230\1\230\1"#
+    "\232\1\102\1\102\1\102\1\102\1\102\1\102\1\102\1\102\1\8\2\165\5\102\1\102\1\149\2\241\4\102\1\102\1\102\1\74\1\102\1\102\1\152\3\102\1\102\1\102\1\102\1\102\1\8\2\165\5\102\1\102\1\175\1\102\1\102\1\102\1\102\1\102\1\102\1\102\1\40\2\122\2\139\4\115\0\59\0\102\1\35\3\102\1\102\1\102\1\152\3\
+    \\102\1\102\1\102\1\102\1\102\1\101\5\0\0\37\1\48\4\75\4\15\6\229\0\173\0\140\3\102\1\102\1\102\1\102\1\134\1\102\1\85\2\207\2\102\1\102\1\102\1\102\1\102\1\245\2\102\1"#
 
 isDecomposableOffsets2BitMap :: Ptr Word8
 isDecomposableOffsets2BitMap = Ptr
-    "\36\44\52\0\1\1\1\1\1\1\1\1\1\1\1\5\1\23\1\1\1\1\1\1\1\1\1\1\1\13\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\17"#
+    "\55\63\13\0\1\1\1\1\1\1\1\1\1\1\1\5\19\41\1\1\1\1\71\1\1\1\1\1\1\31\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\35"#
 
diff --git a/lib/Unicode/Internal/Char/UnicodeData/DecomposableK.hs b/lib/Unicode/Internal/Char/UnicodeData/DecomposableK.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/DecomposableK.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/DecomposableK.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.DecomposableK
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -46,59 +46,68 @@
     \\252\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\8\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
     \\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\48\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
     \\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\8\0\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\124\0\0\0\0\0\0\0\0\0\224\1\0\0\0\0\0\0\0\0\5\0\8\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\18\0\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\24\0\176\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\190\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\112\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\31\0\0\0\0\0\0\0\0\0\0\248\1\0\0\0\0\0\0\0\8\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\8\0\0\0\0\48\0\0\0\0\0\16\0\0\0\0\0\0\8\32\132\16\0\2\232\3\2\0\8\32\132\16\0\2\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\64\85\4\0\0\0\0\40\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\112\255\247\255\191\255\255\255\7\0\1\0\0\0\248\255\255\255\255\0\0\0\0\0\0\0\0\16\18\0\0\80\176\1\0\146\2\0\0\5\224\51\
-    \\3\51\3\0\0\0\240\0\0\0\0\0\0\15\60\0\0\0\0\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\88\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\88\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0\0\0\0\0\0\7\0\255\255\255\255\255\15\255\1\3\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\
-    \\3\0\0\255\255\159\255\247\255\127\15\215\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\254\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\127\252\252\252\28\127\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\130\0\112\128\216\80\128\3\128\128\0\0\243\255\255\127\255\31\0\1\0\0\0\0\
-    \\0\0\0\0\0\0\239\254\111\62\87\189\251\251\225\3\255\255\255\255\255\255\0\2\0\12\0\64\0\0\0\224\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\64\85\4\0\0\0\0\40\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\240\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\133\60\119\191\255\126\62\191\255\126\190\255\255\252\
-    \\255\63\255\253\254\249\243\243\255\63\255\255\255\0\0\0\0\3\128\1\0\240\255\255\223\207\255\63\255\255\255\207\192\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\255\1\0\0\0\63\31\0\0\0\0\0\0\0\0\0\0\0\27\0\0\0\0\0\16\68\240\215\1\0\0\252\1\0\0\124\127\0\0\0\55\2\239\255\255\255\150\254\247\10\
-    \\132\234\150\170\150\247\247\94\255\251\255\15\238\251\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\255\7\255\255\255\127\255\255\255\255\0\0\0\28\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\48\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\28\3\7\0\255\255\255\255\255\15\255\1\3\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\255\7\255\255\255\127\255\255\255\255\0\0\0\28\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\129\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\116\0\0\0\0\139\112\0\2\0\0\0\2\0\0\
-    \\139\112\0\0\192\0\0\0\0\0\0\0\0\0\6\0\207\252\252\252\63\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\20\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-    \\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\255\255\255\255\255\255\255\
-    \\255\252\255\255\255\255\255\255\0\0\0\0\0\255\31\255\63\229\127\101\252\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\127\0\248\
-    \\160\255\255\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\248\255\255\255\255\255\127\255\255\255\255\255\0\255\255\255\255\255\127\255\255\255\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\
-    \\100\222\255\235\239\255\255\255\255\255\255\255\191\231\223\223\255\255\255\123\95\252\253\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\
-    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\207\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \\255\15\255\255\255\255\255\255\255\255\255\255\255\3\255\255\63\63\255\255\255\255\63\63\255\170\255\255\255\63\255\255\255\255\255\255\223\255\223\255\207\239\255\255\220\127\0\0\0\0\
-    \\0\0\72\0\0\0\0\78\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\25\0\48\0\0\0\0\0\0\16\0\0\0\
-    \\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\18\0\0\0\0\255\0\0\
-    \\0\0\0\0\0\0\0\0\0\0\0\24\0\176\0\0\0\0"#
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\0\0\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\8\0\0\
+    \\0\0\48\0\0\0\0\0\16\0\0\0\0\0\0\8\32\132\16\0\2\232\3\2\0\8\32\132\16\0\2\0\0\0\0\0\0\0\0\72\0\0\0\0\78\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\25\0\48\0\0\0\0\0\0\16\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\
+    \\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\129\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\116\0\0\0\0\124\0\0\0\0\0\0\0\0\0\224\1\0\0\0\0\0\0\0\0\5\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\18\0\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\176\0\0\0\0\64\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\16\0\0\0\139\112\0\2\0\0\0\2\0\
+    \\0\139\112\0\0\192\0\0\0\0\0\0\0\0\0\6\0\207\252\252\252\63\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\31\0\0\0\0\0\0\0\0\0\0\248\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\88\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\0\0\0\40\64\2\0\0\0\0\0\160\1\0\0\0\0\0\0\8\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\8\0\0\0\0\48\0\0\0\0\0\16\0\0\0\0\0\0\8\32\132\16\0\2\232\3\2\0\8\32\132\16\0\2\0\0\0\0\0\0\0\0\0\1\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\129\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\116\
+    \\0\0\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\112\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\254\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\112\255\247\
+    \\255\191\255\255\255\7\0\1\0\0\0\248\255\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\254\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\63\0\0\255\255\255\255\255\255\255\255\252\255\255\255\255\255\255\0\0\0\0\0\255\31\239\255\255\255\150\254\247\10\132\234\150\170\150\247\247\94\255\251\255\15\238\251\255\15\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\7\255\255\255\127\255\255\255\255\
+    \\0\0\0\28\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\0\0\0\40\64\2\0\0\
+    \\0\0\0\160\1\0\0\0\0\0\0\7\0\255\255\255\255\255\15\255\1\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\7\255\255\255\127\255\255\255\255\0\0\0\28\0\0\0\0\1\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\190\255\255\255\255\255\253\7\0\0\0\0\0\0\0\0\7\0\255\255\
+    \\255\255\255\15\255\1\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\3\0\0\255\255\159\255\247\255\127\15\215\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\31\254\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\127\252\252\252\28\127\127\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\7\130\0\112\128\
+    \\216\80\128\3\128\128\0\0\243\255\255\127\255\31\0\1\0\0\0\0\0\0\0\0\0\0\239\254\111\62\87\189\251\251\225\3\255\255\255\255\255\255\0\2\0\12\0\64\0\0\
+    \\0\224\0\0\0\0\0\0\255\255\255\255\255\255\255\63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\64\85\4\0\0\0\0\40\11\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\1\133\60\119\191\255\126\62\191\255\126\190\255\255\252\255\63\255\253\254\249\243\243\255\63\255\255\255\0\0\0\0\3\128\1\0\240\255\255\223\207\255\63\255\255\
+    \\255\207\192\255\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\1\0\0\0\63\31\0\0\0\0\0\0\0\0\0\0\0\27\0\0\0\0\0\16\68\240\215\1\0\
+    \\0\252\1\0\0\124\127\0\0\0\55\2\16\18\0\0\80\176\1\0\146\2\0\0\5\224\51\3\51\3\0\0\0\240\0\0\0\0\0\0\15\60\0\0\0\0\0\0\0\6\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\255\255\255\255\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\48\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\28\3\255\63\229\127\101\252\255\255\
+    \\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\0\127\0\248\160\255\255\127\95\219\255\255\255\255\255\255\255\255\255\255\255\255\255\3\0\0\0\
+    \\248\255\255\255\255\255\127\255\255\255\255\255\0\255\255\255\255\255\127\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\223\255\255\255\255\255\255\255\255\223\100\222\255\235\239\255\255\255\255\255\255\255\191\231\223\223\255\255\255\123\95\252\253\
+    \\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \\255\255\255\255\255\255\255\255\207\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\15\255\255\255\255\255\255\255\255\255\255\255\3\255\255\63\63\255\255\255\255\63\
+    \\63\255\170\255\255\255\63\255\255\255\255\255\255\223\255\223\255\207\239\255\255\220\127\0\0\0\0\0\0\72\0\0\0\0\78\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\25\0\48\0\0\0\0\0\0\16\0\0\0\0\0\0\28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\18\0\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\176\0\0\0\0"#
 
 isDecomposableOffsets1BitMap :: Ptr Word16
 isDecomposableOffsets1BitMap = Ptr
-    "\47\7\102\3\46\3\80\1\188\1\80\1\80\1\80\1\96\1\80\1\80\1\80\1\80\1\39\6\80\1\39\5\80\1\80\1\80\1\80\1\127\7\223\7\159\7\23\4\0\0\28\8\80\1\80\1\80\1\80\1\80\1\80\1\80\1\80\1\87\4\107\0\244\5\208\3\80\1\80\1\80\1\219\3\80\1\80\1\80\1\96\1\80\1\80\1\80\1\80\1\
-    \\127\7\223\7\159\7\23\4\228\1\80\1\82\8\126\8\80\1\80\1\80\1\80\1\80\1\80\1\80\1\80\1\39\6\80\1\39\5\80\1\80\1\85\5\148\5\254\6\217\0\244\0\248\8\190\6\30\2\48\1\80\1\80\1\80\1\80\1\118\2\159\2\184\8\150\4\223\2\86\2\80\1\80\1\160\1\111\0\52\0\208\4\80\1\80\1\80\1\80\1\
-    \\80\1\80\1\212\5"#
+    "\229\5\108\3\52\3\58\2\11\3\58\2\58\2\58\2\65\2\196\6\58\2\58\2\58\2\58\2\50\5\188\9\82\5\75\7\210\2\58\2\47\10\91\10\58\2\58\2\58\2\58\2\58\2\58\2\58\2\58\2\124\9\58\2\91\8\58\2\58\2\58\2\58\2\50\5\188\9\82\5\75\7\0\0\249\9\58\2\58\2\58\2\58\2\58\2\58\2\58\2\
+    \\58\2\178\2\58\2\178\5\75\6\58\2\58\2\58\2\15\7\58\2\58\2\58\2\58\2\139\7\107\0\137\8\200\8\129\2\195\1\222\1\77\1\135\1\19\1\217\0\58\2\58\2\58\2\58\2\50\8\136\4\149\10\202\7\8\9\192\4\58\2\58\2\30\4\111\0\52\0\58\4\58\2\58\2\58\2\58\2\58\2\4\5\58\2\4\8\58\2\58\2\
+    \\58\2\58\2\58\2\58\2\146\5"#
 
 isDecomposableOffsets2BitMap :: Ptr Word8
 isDecomposableOffsets2BitMap = Ptr
-    "\71\79\87\24\26\26\26\26\26\26\10\26\26\26\26\16\5\0\26\26\26\26\26\26\26\26\26\26\26\54\95\36\26\26\26\26\26\26\26\26\26\26\26\26\26\26\26\30"#
+    "\65\73\81\41\22\22\22\22\22\22\27\22\22\22\22\10\6\0\22\22\22\22\89\22\22\22\22\22\45\18\97\53\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\59"#
 
diff --git a/lib/Unicode/Internal/Char/UnicodeData/Decompositions.hs b/lib/Unicode/Internal/Char/UnicodeData/Decompositions.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/Decompositions.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/Decompositions.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.Decompositions
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -1508,6 +1508,8 @@
   '\64332' -> "\1489\1471"
   '\64333' -> "\1499\1471"
   '\64334' -> "\1508\1471"
+  '\67017' -> "\67026\775"
+  '\67044' -> "\67034\775"
   '\69786' -> "\69785\69818"
   '\69788' -> "\69787\69818"
   '\69803' -> "\69797\69818"
@@ -1515,12 +1517,30 @@
   '\69935' -> "\69938\69927"
   '\70475' -> "\70471\70462"
   '\70476' -> "\70471\70487"
+  '\70531' -> "\70530\70601"
+  '\70533' -> "\70532\70587"
+  '\70542' -> "\70539\70594"
+  '\70545' -> "\70544\70601"
+  '\70597' -> "\70594\70594"
+  '\70599' -> "\70594\70584"
+  '\70600' -> "\70594\70601"
   '\70843' -> "\70841\70842"
   '\70844' -> "\70841\70832"
   '\70846' -> "\70841\70845"
   '\71098' -> "\71096\71087"
   '\71099' -> "\71097\71087"
   '\71992' -> "\71989\71984"
+  '\90401' -> "\90398\90398"
+  '\90402' -> "\90398\90409"
+  '\90403' -> "\90398\90399"
+  '\90404' -> "\90409\90399"
+  '\90405' -> "\90398\90400"
+  '\90406' -> "\90401\90399"
+  '\90407' -> "\90402\90399"
+  '\90408' -> "\90401\90400"
+  '\93544' -> "\93543\93543"
+  '\93545' -> "\93539\93543"
+  '\93546' -> "\93545\93543"
   '\119134' -> "\119127\119141"
   '\119135' -> "\119128\119141"
   '\119136' -> "\119135\119150"
diff --git a/lib/Unicode/Internal/Char/UnicodeData/DecompositionsK.hs b/lib/Unicode/Internal/Char/UnicodeData/DecompositionsK.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/DecompositionsK.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/DecompositionsK.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.DecompositionsK
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
diff --git a/lib/Unicode/Internal/Char/UnicodeData/DecompositionsK2.hs b/lib/Unicode/Internal/Char/UnicodeData/DecompositionsK2.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/DecompositionsK2.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/DecompositionsK2.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.DecompositionsK2
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -1554,6 +1554,8 @@
   '\65516' -> "\8595"
   '\65517' -> "\9632"
   '\65518' -> "\9675"
+  '\67017' -> "\67026\775"
+  '\67044' -> "\67034\775"
   '\67457' -> "\720"
   '\67458' -> "\721"
   '\67459' -> "\230"
@@ -1617,12 +1619,66 @@
   '\69935' -> "\69938\69927"
   '\70475' -> "\70471\70462"
   '\70476' -> "\70471\70487"
+  '\70531' -> "\70530\70601"
+  '\70533' -> "\70532\70587"
+  '\70542' -> "\70539\70594"
+  '\70545' -> "\70544\70601"
+  '\70597' -> "\70594\70594"
+  '\70599' -> "\70594\70584"
+  '\70600' -> "\70594\70601"
   '\70843' -> "\70841\70842"
   '\70844' -> "\70841\70832"
   '\70846' -> "\70841\70845"
   '\71098' -> "\71096\71087"
   '\71099' -> "\71097\71087"
   '\71992' -> "\71989\71984"
+  '\90401' -> "\90398\90398"
+  '\90402' -> "\90398\90409"
+  '\90403' -> "\90398\90399"
+  '\90404' -> "\90409\90399"
+  '\90405' -> "\90398\90400"
+  '\90406' -> "\90401\90399"
+  '\90407' -> "\90402\90399"
+  '\90408' -> "\90401\90400"
+  '\93544' -> "\93543\93543"
+  '\93545' -> "\93539\93543"
+  '\93546' -> "\93545\93543"
+  '\117974' -> "A"
+  '\117975' -> "B"
+  '\117976' -> "C"
+  '\117977' -> "D"
+  '\117978' -> "E"
+  '\117979' -> "F"
+  '\117980' -> "G"
+  '\117981' -> "H"
+  '\117982' -> "I"
+  '\117983' -> "J"
+  '\117984' -> "K"
+  '\117985' -> "L"
+  '\117986' -> "M"
+  '\117987' -> "N"
+  '\117988' -> "O"
+  '\117989' -> "P"
+  '\117990' -> "Q"
+  '\117991' -> "R"
+  '\117992' -> "S"
+  '\117993' -> "T"
+  '\117994' -> "U"
+  '\117995' -> "V"
+  '\117996' -> "W"
+  '\117997' -> "X"
+  '\117998' -> "Y"
+  '\117999' -> "Z"
+  '\118000' -> "0"
+  '\118001' -> "1"
+  '\118002' -> "2"
+  '\118003' -> "3"
+  '\118004' -> "4"
+  '\118005' -> "5"
+  '\118006' -> "6"
+  '\118007' -> "7"
+  '\118008' -> "8"
+  '\118009' -> "9"
   '\119134' -> "\119127\119141"
   '\119135' -> "\119128\119141"
   '\119136' -> "\119135\119150"
diff --git a/lib/Unicode/Internal/Char/UnicodeData/GeneralCategory.hs b/lib/Unicode/Internal/Char/UnicodeData/GeneralCategory.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/GeneralCategory.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/GeneralCategory.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.GeneralCategory
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -273,186 +273,191 @@
 generalCategoryDataBitMap :: Ptr Int8
 generalCategoryDataBitMap = Ptr
     "\1\0\0\1\0\1\0\0\0\0\0\1\0\1\0\1\1\0\1\1\0\1\0\0\0\1\1\0\0\0\1\1\1\13\18\14\18\13\14\17\17\17\17\17\3\3\3\3\29\3\
-    \\3\29\3\3\3\3\3\3\29\3\3\3\3\3\3\17\17\4\3\3\6\5\29\20\1\1\1\1\1\1\1\1\18\1\1\1\1\4\1\1\1\1\1\3\3\0\0\0\0\2\
-    \\20\1\20\21\4\15\18\26\21\20\10\4\16\10\10\10\17\0\0\0\0\0\0\0\0\18\1\1\1\1\1\1\29\29\1\1\1\29\1\1\29\29\29\10\10\10\10\10\10\10\
-    \\21\10\10\10\10\10\10\10\17\19\17\17\29\29\29\29\4\4\4\4\4\5\3\4\4\4\17\3\3\3\4\1\21\21\1\1\0\0\1\1\0\0\0\1\0\1\0\1\0\1\
-    \\0\0\0\0\1\4\4\4\17\17\29\29\29\29\29\5\29\29\29\29\6\29\6\6\6\5\29\29\7\7\0\1\0\1\0\1\1\1\0\1\0\1\0\1\0\1\1\1\1\1\
-    \\0\29\0\0\0\0\29\20\20\20\0\0\0\0\0\29\0\29\0\0\0\0\29\0\0\0\0\29\29\0\0\0\0\0\0\0\29\0\0\0\0\0\0\29\29\29\29\29\29\8\
-    \\8\17\17\17\17\4\4\5\6\5\4\6\6\6\6\6\5\4\6\5\5\6\6\5\5\29\4\4\4\29\29\29\29\5\5\5\5\5\3\3\5\5\5\5\3\3\21\17\10\10\
-    \\10\10\10\10\10\10\4\4\5\5\5\6\29\29\5\6\4\5\5\5\5\17\17\17\3\4\4\4\4\4\4\4\3\5\5\5\5\5\5\5\6\5\5\5\4\4\4\4\5\4\
-    \\4\6\6\29\29\5\5\6\5\4\5\5\5\4\4\5\5\4\29\29\29\29\29\3\3\3\0\1\4\4\5\5\6\17\17\29\18\17\17\19\17\17\21\21\17\17\17\13\14\13\
-    \\14\18\18\18\18\18\18\18\18\13\14\18\18\18\18\21\21\21\21\21\6\6\5\5\5\5\29\29\6\5\5\17\29\29\29\29\12\13\14\13\14\13\14\17\29\29\29\29\29\29\
+    \\3\29\3\3\3\3\3\3\29\3\3\3\3\3\3\17\17\17\17\17\17\5\4\5\4\17\17\29\17\4\4\4\4\3\17\17\17\12\12\11\11\13\14\13\14\18\18\18\18\18\
+    \\18\18\18\13\14\18\18\18\18\21\21\21\21\0\21\21\21\21\0\1\0\1\3\3\5\5\5\5\5\5\4\5\5\5\4\4\5\6\5\4\6\6\6\6\6\6\5\6\4\5\
+    \\5\5\5\17\17\17\3\4\4\4\4\4\4\4\3\5\5\5\5\5\5\5\6\5\5\5\4\4\4\4\5\4\4\6\6\29\29\5\5\6\5\4\4\5\5\4\29\29\29\29\
+    \\29\20\1\1\1\1\1\1\1\1\18\1\1\1\1\4\1\1\1\1\1\3\3\0\0\0\0\2\20\1\20\21\4\15\18\26\21\20\10\4\16\10\10\10\17\0\0\0\0\0\
+    \\0\0\0\18\1\1\1\1\1\1\29\29\1\1\1\29\1\1\29\29\29\4\4\3\17\17\4\3\3\6\5\29\5\5\5\5\29\29\29\29\29\5\29\29\29\29\6\29\6\6\
+    \\6\5\29\29\8\8\4\4\4\4\3\4\4\4\4\4\5\3\4\4\4\29\29\29\29\5\5\5\5\5\3\3\5\5\5\5\5\5\5\29\6\29\29\6\29\6\6\5\5\29\
+    \\29\29\29\5\4\29\4\4\4\4\29\4\4\29\4\4\4\4\4\4\4\4\29\4\4\4\4\29\29\29\29\4\4\29\4\29\4\4\29\4\4\29\4\29\29\4\5\5\5\5\
+    \\5\5\5\3\5\5\5\5\5\29\29\5\5\5\29\29\4\4\4\4\4\4\29\17\17\17\17\10\17\17\17\29\17\17\17\17\4\6\6\4\6\5\17\17\17\29\5\5\5\5\
+    \\5\12\3\3\3\3\3\21\21\18\18\18\18\21\21\29\0\1\0\1\3\20\0\1\29\1\29\1\0\1\0\1\0\29\29\29\3\3\3\0\1\4\4\5\5\5\6\29\29\6\
+    \\6\5\29\29\4\1\21\21\1\1\0\0\1\1\0\0\0\1\0\1\0\1\0\1\0\0\0\0\1\4\4\4\17\17\29\29\29\29\29\10\10\10\10\10\10\10\21\10\10\10\
+    \\10\10\10\10\17\19\17\17\29\29\29\29\7\7\0\1\0\1\0\1\1\1\0\1\0\1\0\1\0\1\1\1\1\1\0\29\0\0\0\0\29\20\20\20\0\0\0\0\0\29\
+    \\0\29\0\0\0\0\29\0\0\0\0\29\29\0\0\0\0\0\0\0\29\0\0\0\0\0\0\29\29\29\29\29\29\8\8\17\17\29\29\29\29\5\29\5\5\29\5\5\29\5\
+    \\5\20\20\3\3\4\4\4\4\4\4\21\5\5\5\5\3\3\21\17\10\10\10\10\10\10\10\10\4\4\5\5\6\17\17\29\12\13\14\13\14\13\14\17\29\29\29\29\29\29\
     \\29\3\1\1\1\17\0\23\24\26\26\26\26\26\22\17\19\19\19\19\21\17\17\29\29\29\29\29\29\29\5\5\6\6\6\6\29\5\5\6\29\4\4\4\29\4\4\4\4\17\
-    \\4\5\5\5\29\29\17\29\0\1\0\1\3\20\0\1\0\1\3\3\5\5\21\21\21\21\21\21\5\21\21\17\9\9\9\9\9\29\29\4\4\4\4\3\17\17\17\19\29\29\
-    \\29\29\29\29\29\21\21\21\21\21\21\21\18\18\18\18\18\0\1\1\21\18\21\21\1\21\19\21\29\29\29\29\29\29\0\0\0\0\0\29\1\1\1\1\1\1\3\3\3\3\
-    \\3\3\3\3\20\20\20\20\20\20\20\20\3\20\3\20\20\0\1\0\1\4\4\5\5\29\29\29\29\0\1\0\1\0\1\4\5\4\29\29\29\29\29\29\5\5\5\5\5\5\
-    \\5\12\5\5\5\5\5\4\29\29\6\17\17\17\17\17\17\17\17\29\26\5\6\6\6\29\29\29\29\4\5\5\5\5\5\5\5\3\5\5\5\5\5\29\29\5\5\5\29\29\
-    \\4\4\4\4\4\4\29\17\17\17\19\17\17\17\19\4\5\29\29\29\29\29\29\5\29\5\5\29\5\5\20\20\3\3\4\4\4\4\4\4\21\13\14\21\21\21\21\21\18\18\
-    \\18\18\21\21\29\5\5\5\6\6\5\6\5\5\5\5\5\29\5\6\6\29\4\4\4\5\6\6\5\5\6\4\4\4\4\4\6\6\6\6\6\6\6\6\29\6\6\5\5\29\
-    \\29\29\29\5\4\29\4\4\4\4\29\4\4\29\4\4\4\4\4\4\4\4\29\4\4\4\4\29\29\29\29\4\4\29\4\29\4\4\29\4\4\29\4\29\29\4\29\29\29\29\
-    \\4\4\6\29\29\29\29\20\4\4\4\4\4\4\29\29\29\29\29\29\29\29\6\6\29\29\6\6\5\4\29\5\5\29\29\29\29\1\1\29\1\29\1\1\1\17\3\1\1\1\
-    \\20\3\3\3\3\1\1\1\1\1\1\1\0\1\18\0\0\0\0\0\21\21\0\21\21\21\21\0\4\4\4\4\4\29\29\26\26\26\26\26\26\18\18\18\18\18\21\21\18\21\
-    \\21\18\21\18\21\21\21\21\21\21\21\18\21\21\21\5\5\5\5\5\26\21\5\5\6\6\29\29\29\29\15\16\13\15\15\16\13\15\16\13\14\13\14\13\14\13\14\13\14\10\
-    \\10\18\18\18\13\14\29\4\4\4\4\5\6\29\29\3\17\17\17\17\17\17\21\21\21\21\21\21\21\21\29\29\29\29\29\29\29\17\17\17\17\17\17\17\3\29\29\5\19\19\
-    \\18\20\21\19\19\29\1\18\1\1\1\1\1\1\0\0\0\0\0\0\0\1\1\1\1\1\1\29\1\1\1\1\1\0\0\29\0\29\0\29\0\29\0\4\4\4\29\29\29\4\
-    \\4\5\5\17\17\8\8\4\4\4\4\4\29\4\4\29\29\5\4\5\5\5\5\4\4\4\4\4\4\5\6\5\5\5\5\5\5\5\5\21\21\21\21\0\21\0\21\0\0\0\
-    \\0\21\1\17\12\29\29\21\21\19\10\10\10\10\29\29\29\1\3\20\20\29\29\29\29\4\29\4\29\4\29\4\4\4\4\29\4\29\4\29\29\29\29\20\20\0\17\12\3\3\
-    \\3\3\3\21\21\18\10\10\20\1\17\17\18\12\18\18\18\29\29\29\29\29\29\21\21\10\10\10\10\21\21\10\10\21\21\21\29\5\5\5\5\5\5\5\29\8\8\29\10\10\
-    \\10\10\10\10\8\8\29\29\29\4\4\4\29\29\29\4\29\29\4\4\4\4\4\29\29\4\29\29\29\29\29\29\6\0\1\29\1\29\1\0\1\29\29\29\29\29\29\29\4\4\
-    \\29\29\29\29\6\6\17\29\29\29\12\4\4\4\4\4\4\4\21\17\4\4\4\4\4\4\14\13\22\4\4\4\4\4\4\4\21\17\4\4\9\29\29\29\29\29\22\17\17\17\
-    \\21\3\4\9\4\4\4\4\4\4\4\6\6\6\5\5\5\5\6\5\6\6\6\6\5\5\5\5\5\6\6\6\6\5\6\6\6\6\6\29\5\6\6\29\29\29\6\6\6\6\
-    \\5\5\29\29\22\22\22\22\22\22\22\22\26\26\26\26\26\26\26\26\29\26\26\26\21\21\29\29\29\17\17\8\8\17\17\29\29\29\29\18\18\18\18\18\18\13\14\13\14\13\
-    \\14\12\29\29\0\0\0\0\0\20\20\20\0\1\0\1\0\1\0\0\1\22\17\17\17\19\17\17\17\4\17\4\4\5\4\4\4\5\4\4\4\4\4\4\4\5\5\5\5\5\
-    \\5\5\17\3\4\4\29\29\5\4\6\6\6\26\26\26\26\26\29\29\29\29\29\29\1\1\1\1\1\1\1\29\29\29\29\29\5\5\29\6\6\5\6\5\5\4\4\17\4\5\
-    \\5\5\29\5\5\29\4\18\4\4\4\4\4\4\29\4\29\29\29\4\4\3\17\17\17\17\17\17\17\13\4\4\4\4\4\29\29\10\21\4\4\4\4\4\4\4\10\10\10\10\
-    \\29\29\29\17\17\17\17\29\29\29\8\8\10\10\17\17\17\21\4\4\4\4\4\4\4\5\5\29\29\8\8\6\6\6\5\21\21\5\5\5\17\26\17\17\17\5\29\29\29\29\
-    \\29\26\29\29\29\29\29\29\1\29\29\5\5\5\5\5\5\4\5\4\4\5\5\5\5\5\5\6\4\4\4\4\17\17\17\17\17\29\29\29\29\29\0\29\29\0\0\29\4\4\
-    \\29\5\5\12\29\29\6\5\5\5\5\5\5\6\6\4\4\4\4\19\21\21\21\21\21\21\21\19\19\19\19\19\19\19\19\4\4\29\29\5\4\6\5\5\5\5\6\6\6\5\
-    \\4\4\4\29\29\5\5\5\21\21\5\5\5\5\21\21\21\6\6\6\6\6\6\4\4\4\4\4\4\9\9\9\9\9\9\9\29\4\5\5\5\5\5\5\29\21\21\1\0\0\
-    \\0\1\1\4\0\1\1\1\0\0\1\0\0\1\0\0\0\0\2\20\20\29\8\8\10\10\10\10\10\10\21\5\21\5\5\5\5\4\4\4\5\17\29\8\8\4\4\4\4\4\
-    \\4\3\4\4\4\4\4\5\5\4\6\6\6\4\4\6\6\6\6\6\29\29\6\6\5\29\29\12\12\12\12\12\12\17\17\18\17\11\17\17\17\18\13\14\17\18\17\12\17\17\
-    \\17\29\17\17\17\17\4\6\6\4\6\5\17\17\17\29\8\8\10\29\29\29\21\21\10\10\10\10\10\10\21\21\21\21\21\21\21\29\21\21\21\21\21\17\17\29\13\14\21\21\
-    \\13\14\13\14\12\13\14\14\17\17\17\17\11\11\11\5\10\10\10\10\10\10\10\29\29\29\29\29\29\29\10\10\4\4\29\29\5\29\6\6\6\6\5\5\6\5\5\5\5\29\
-    \\6\6\4\4\4\17\17\17\9\9\5\5\5\5\6\6\6\6\29\29\6\6\6\29\29\29\29\29\29\4\4\4\6\6\5\5\6\6\5\5\4\4\4\4\5\5\6\5\5\6\
-    \\5\5\29\5\5\29\5\5\5\5\29\29\29\29\19\5\5\4\6\4\4\4\4\6\6\5\5\5\29\5\29\0\0\0\0\0\0\0\0\13\17\14\20\11\1\1\1\1\1\1\
-    \\1\1\13\18\14\18\25\25\25\25\25\25\25\25\8\8\29\29\4\4\4\4\0\2\1\0\2\1\0\1\0\0\0\1\21\0\21\21\4\5\6\6\29\4\4\4\4\4\29\29\
-    \\4\4\4\4\4\10\10\17\6\29\6\6\6\5\4\21\21\21\17\17\17\17\21\17\21\21\21\21\29\29\21\21\22\4\4\4\4\4\4\4\13\14\29\29\29\4\5\6\6\17\
-    \\4\4\4\5\6\5\6\6\5\5\5\5\5\6\6\6\5\6\5\17\17\17\17\17\17\29\29\29\29\10\12\17\13\17\17\17\17\17\18\17\11\17\17\17\17\17\17\17\22\5\
-    \\5\5\5\5\5\7\5\7\7\7\5\5\5\5\5\7\7\7\17\5\5\5\5\17\6\5\5\5\29\29\29\29\29\8\8\29\29\29\29\4\21\9\9\9\9\9\9\9\9\0\
-    \\1\9\9\9\3\4\17\21\21\0\1\0\1\1\21\21\21\0\1\0\1\5\10\10\10\10\17\17\17\0\1\21\5\5\5\5\5\5\17\17\17\17\17\17\17\12\17\15\16\17\
-    \\17\17\17\11\6\6\6\6\6\6\5\6\6\4\4\4\6\6\5\6\6\17\6\5\29\29\29\29\29\29\29\4\4\20\20\20\20\20\20\29\29\29\29\29\4\5\4\17\4\6\
-    \\29\29\29\9\9\9\9\9\10\10\10\10\29\29\29\21\3\29\3\3\3\3\3\3\29\29\29\29\29\4\4\4\4\4\29\3\29\5\5\4\6\4\4\4\4\5\5\6\6\17\
-    \\26\26\26\5\5\5\5\5\21\21\5\5\5\21\29\29\8\8\17\17\17\17\17\17\17\5\5\5\26\5\5\5\5\5\21\21\21\21\21\5\21\21\1\1\1\1\5\5\5\5\
-    \\3\29\29\29\29\5\5\5\5\5\5\29\29\29\29\5\29\29\29\29\29\29\21\21\21\21\20\20\20\20\20\8\8\8\8\8\8\8\8\17\17\18\18\18\17\3\3\20\20\20\
-    \\20\3\3\20\20\20\20\20\20\4\4\19\19\10\10\10\10\21\19\4\17\5\29\21\4\10\10\10\10\10\10\21\5\21\5\13\14\13\14\6\6\3\3\1\4\4\4\4\4\6\
-    \\5\6\6\5\29\29\17\17\17\17\10\17\17\17\17\17\17\5\4\4\4\5\17\17\4\29\8\8\4\4\4\21\21\4\6\5\6\4\4\4\4\4\6\5\6\5\6\6\5\5\
-    \\5\6\5\4\4\29\29\21\5\5\17\17\17\4\29\29\29\0\0\0\0\2\20\20\20\1\1\1\29\1\1\10\3\29\29\10\10\10\10\18\18\18\13\14\3\18\18\18\18\18\
-    \\21\21\21\18\18\21\21\21\21\21\21\5\29\29\29\8\8\29\29\29\29\17\17\15\16\17\15\16\17\17\15\16\15\16\17\17\8\8\29\29\17\17\17\17\15\16\17\15\16\17\
-    \\17\17\17\17\17\17\12\12\17\17\17\17\17\17\29\3\8\8\4\17\4\17\17\17\12\12\11\11\13\14\13\14\13\14\17\17\13\14\17\13\14\17\17\4\4\4\4\4\4\3\
-    \\3\3\3\17\21\29\29\5\6\29\6\6\5\29\29\5\5\5\5\5\17\5\5\5\5\6\6\5\5\17\17\26\17\17\5\29\29\29\29\29\10\10\29\4\4\4\4\4\6\5\
-    \\5\6\6\5\5\6\6\29\4\4\4\29\5\5\4\6\6\8\8\17\17\29\17\5\4\4\4\4\4\5\5\5\5\17\17\17\4\17\17\17\29\29\29\29\29\4\4\4\4\6\
-    \\6\5\5\5\29\29\29\6\6\5\5\5\3\3\3\3\3\17\3\5\29\29\29\1\18\1\1\1\1\1\1\0\1\29\29\8\8\4\4\29\29\29\29\29\17\8\8\29\29\29\
-    \\29\29\29\21\21\21\20\20\20\20\20\8\8\17\17\18\18\18\17\0\0\0\0\0\0\0\29\0\0\29\1\17\5\5\17\5\5\17\5\5\5\5\5\5\12\5\5\5\5\5\
-    \\17\29\29\9\9\9\0\1\9\9\9\10\21\21\29\29\29\29\13\14\13\14\21\21\21\21\0\1\0\1\5\5\0\1\29\29\29\29\5\5\6\6\29\4\4\4\17\29\29\29\
-    \\29\29\29\2\2\2\2\2\2\2\2\27\27\27\27\27\27\27\27\28\28\28\28\28\28\28\28\4\4\4\4\4\4\5\29\8\8\29\29\29\29\29\19"#
+    \\4\5\5\5\29\29\17\29\5\5\21\21\21\21\21\21\5\21\21\17\4\4\29\29\5\29\6\6\6\6\5\5\6\5\5\5\5\5\29\5\29\29\29\29\29\29\29\21\21\21\
+    \\21\21\21\21\18\18\18\18\18\0\1\1\21\18\21\21\1\21\0\0\0\0\0\29\1\1\1\1\1\1\3\3\3\3\3\3\3\3\20\20\20\20\20\20\20\20\3\20\3\20\
+    \\20\0\1\0\1\4\4\5\5\29\29\29\29\4\4\4\29\29\5\6\5\5\5\29\29\29\29\5\6\6\29\4\4\4\5\6\6\5\5\6\4\4\4\4\4\6\6\6\6\6\
+    \\6\6\6\26\26\26\26\26\29\29\29\29\29\5\5\5\5\5\5\5\12\5\5\5\5\5\4\29\29\4\4\29\5\5\4\6\6\17\17\17\17\17\17\17\17\29\26\20\4\4\
+    \\4\4\4\4\29\29\29\29\29\29\29\29\6\6\29\29\6\6\5\4\29\5\5\29\29\29\29\1\1\29\1\29\1\1\1\17\3\1\1\1\20\3\3\3\3\1\1\1\1\1\
+    \\1\1\0\1\18\0\0\0\0\0\21\21\10\10\10\10\21\21\10\10\21\21\21\29\4\4\4\4\4\29\29\26\26\26\26\26\26\18\18\18\18\18\21\21\18\21\21\18\21\18\
+    \\21\21\21\21\21\21\21\18\21\21\21\5\5\5\5\5\26\21\5\6\6\6\29\29\29\29\15\16\13\15\15\16\13\15\16\13\14\13\14\13\14\13\14\13\14\10\10\18\18\18\
+    \\13\14\29\5\5\6\6\29\29\29\29\3\17\17\17\17\17\17\21\21\21\21\21\21\21\21\29\29\29\29\29\29\29\17\17\17\17\17\17\17\3\29\29\5\19\19\18\20\21\19\
+    \\19\29\1\18\1\1\1\1\1\1\0\0\0\0\0\0\0\1\1\1\1\1\1\29\1\1\1\1\1\0\0\29\0\29\0\29\0\29\0\4\4\5\5\17\17\8\8\4\4\4\
+    \\4\4\29\4\4\29\29\5\4\5\5\5\5\4\4\4\4\4\4\5\6\5\5\5\5\5\5\5\5\21\21\21\21\0\21\0\21\0\0\0\0\21\1\0\1\29\29\29\29\29\
+    \\8\8\29\29\29\29\29\19\21\29\29\29\29\29\29\4\29\4\29\4\29\4\4\4\4\29\4\29\4\29\29\29\29\20\20\0\17\8\8\10\10\17\17\17\21\18\10\10\20\1\
+    \\17\17\18\12\18\18\18\29\29\29\29\29\29\21\21\0\1\0\1\0\1\4\5\5\5\5\5\5\29\8\8\29\10\10\10\10\10\10\8\8\29\29\29\4\4\4\29\29\29\4\
+    \\29\29\4\4\4\4\4\29\29\4\29\29\29\29\29\29\6\5\5\17\29\29\29\29\8\8\29\29\17\17\17\17\19\29\29\29\29\29\29\29\4\4\29\29\29\29\6\6\17\29\
+    \\29\29\12\4\4\4\4\4\4\4\21\17\4\4\4\4\5\6\29\29\22\4\4\4\4\4\4\4\21\17\4\4\4\4\4\4\14\13\14\13\14\17\17\13\22\17\17\17\21\3\
+    \\4\9\4\4\4\4\4\4\4\6\6\6\5\5\5\5\6\5\6\6\6\6\5\5\5\5\5\6\6\6\6\5\6\6\6\6\6\29\5\6\6\29\29\29\6\6\6\6\6\5\
+    \\4\6\22\22\22\22\22\22\22\22\26\26\26\26\26\26\26\26\29\26\26\26\21\21\29\29\29\17\17\8\8\6\6\6\5\21\21\18\18\18\18\18\18\13\14\13\14\13\14\12\
+    \\29\29\0\0\0\0\0\20\20\20\0\1\0\1\0\1\0\0\1\29\29\22\17\17\17\19\17\17\17\4\17\4\4\5\4\4\4\5\4\4\4\4\4\4\4\5\5\5\5\5\
+    \\5\5\17\3\4\5\4\29\29\29\29\29\29\1\1\1\1\1\1\1\29\29\29\29\29\5\5\29\29\29\29\29\1\29\29\4\18\4\4\4\4\4\4\29\4\29\29\4\29\29\
+    \\29\29\4\4\4\6\6\5\5\6\6\5\5\4\4\4\5\17\29\4\4\4\4\4\29\29\10\21\4\4\4\4\4\4\4\10\10\10\10\29\29\29\17\8\8\29\29\29\29\4\
+    \\21\4\4\4\4\4\4\4\5\5\29\29\8\8\10\29\29\29\21\21\5\5\5\17\26\17\17\17\5\29\29\29\29\29\26\29\29\29\29\29\29\18\18\4\5\4\4\5\5\5\
+    \\5\5\5\6\4\4\4\4\17\17\17\17\17\29\29\29\29\29\0\29\29\0\0\29\6\5\5\5\5\29\6\6\6\6\6\6\29\6\5\5\5\5\5\5\6\6\4\4\4\4\
+    \\19\21\21\21\21\21\21\21\19\19\19\19\19\19\19\19\10\10\10\10\29\29\29\5\6\29\6\6\5\29\29\5\5\5\5\5\17\5\5\5\5\6\6\5\5\6\6\6\5\4\
+    \\4\4\29\29\5\5\5\21\21\5\5\5\5\21\21\21\6\6\6\6\6\6\4\4\4\4\4\4\9\9\9\9\9\9\9\29\18\17\17\19\17\17\21\21\1\0\0\0\1\1\
+    \\4\0\1\1\1\0\0\1\0\0\1\0\0\0\0\2\20\20\29\8\8\10\10\10\10\10\10\21\5\21\5\5\5\5\4\4\4\4\5\5\6\5\5\4\4\17\4\4\9\29\
+    \\29\29\29\29\8\8\4\4\4\4\4\4\3\4\4\4\4\4\5\5\4\6\6\6\4\4\6\6\6\6\6\29\6\6\5\6\6\4\4\4\29\29\29\4\4\6\29\29\29\29\
+    \\12\12\12\12\12\12\17\17\18\17\11\17\17\17\18\13\14\17\18\17\12\17\17\5\5\5\5\5\29\21\21\10\10\10\10\10\10\21\21\21\21\21\21\21\29\21\21\21\21\21\
+    \\17\17\17\13\14\13\14\21\21\21\21\29\29\21\21\13\14\21\21\13\14\13\14\12\13\14\14\17\17\17\17\11\11\11\5\10\10\10\10\10\10\10\29\29\29\29\29\29\29\10\
+    \\10\4\4\4\17\17\17\9\9\9\9\9\29\29\4\5\6\6\17\4\4\4\6\5\5\6\6\6\6\29\29\6\6\6\29\29\29\29\29\29\4\4\4\4\4\29\3\29\5\5\
+    \\4\6\4\4\4\4\6\6\5\5\5\29\5\29\9\10\21\21\29\29\29\29\29\21\21\21\21\21\5\29\29\29\0\0\0\0\0\0\0\0\13\17\14\20\11\1\1\1\1\1\
+    \\1\1\1\13\18\14\18\25\25\25\25\25\25\25\25\8\8\29\29\4\4\4\4\0\2\1\0\2\1\0\1\0\0\0\1\21\0\21\21\4\5\6\6\29\4\4\4\4\4\29\
+    \\29\4\5\5\5\29\5\5\29\6\29\6\6\6\5\4\21\21\21\17\17\17\17\21\17\21\21\21\21\21\6\6\5\5\5\6\5\4\17\4\6\29\29\29\22\4\4\4\4\4\
+    \\4\4\13\14\29\29\29\3\3\1\4\4\4\4\4\5\6\5\6\6\5\5\5\5\5\6\6\6\5\6\5\5\6\5\5\29\6\6\5\6\5\17\17\17\17\17\17\29\29\29\
+    \\29\10\12\17\13\17\17\17\17\17\18\17\11\17\17\17\17\17\17\17\22\5\5\5\5\5\5\7\5\7\7\7\5\5\5\5\5\7\7\7\17\5\5\5\5\17\6\5\5\6\
+    \\6\5\5\29\21\9\9\9\9\9\9\9\9\0\1\9\9\9\3\4\17\21\21\0\1\0\1\1\21\21\21\0\1\0\1\5\10\10\10\10\17\17\17\0\1\21\5\5\5\5\
+    \\5\5\17\17\17\17\17\17\17\12\17\15\16\17\17\17\17\11\8\8\4\4\4\21\21\4\6\5\6\4\4\4\4\4\6\6\5\6\6\17\6\5\29\29\4\4\20\20\20\20\
+    \\20\20\29\29\29\29\29\4\5\4\4\4\4\4\10\10\17\9\9\9\9\9\10\10\10\10\29\29\29\21\3\29\3\3\3\3\3\3\29\29\29\29\29\5\5\4\6\4\4\4\
+    \\4\5\5\6\6\17\4\4\29\29\5\4\6\5\5\5\5\6\6\6\5\5\5\5\5\5\29\29\29\29\19\9\9\5\5\5\5\6\6\6\5\5\5\5\5\17\29\29\5\5\
+    \\6\6\29\4\4\4\17\3\3\3\4\4\4\4\4\3\3\17\17\17\19\4\5\29\29\29\29\29\29\26\26\26\5\5\5\5\5\21\21\5\5\5\21\29\29\8\8\17\17\17\
+    \\17\17\17\17\5\5\5\26\5\5\5\5\5\21\21\21\21\21\5\21\21\4\8\8\8\8\8\8\8\29\29\29\29\17\17\17\19\17\17\17\17\17\17\29\3\1\1\1\1\5\
+    \\5\5\5\3\29\29\29\29\1\17\12\29\29\21\21\19\21\29\29\29\29\29\21\21\21\21\20\20\20\20\20\8\8\8\8\8\8\8\8\17\17\18\18\18\17\3\3\20\20\20\
+    \\20\3\3\20\20\20\20\20\20\4\4\4\5\17\17\4\29\4\29\29\29\4\4\29\29\5\4\6\6\6\6\5\5\29\29\4\4\19\19\10\10\10\10\21\19\4\17\5\29\21\
+    \\4\10\10\10\10\10\10\21\5\21\5\13\14\13\14\6\6\8\8\17\17\17\17\4\4\4\4\4\4\6\5\6\6\5\29\29\17\17\17\17\29\29\29\10\10\29\4\4\4\4\
+    \\4\6\5\6\5\6\6\5\5\5\5\29\29\6\0\0\0\0\2\20\20\20\1\1\1\29\1\1\3\20\20\29\29\29\29\10\3\29\29\10\10\10\10\18\18\18\13\14\3\18\
+    \\18\18\18\18\21\21\21\18\18\21\21\21\21\21\21\29\29\21\8\8\4\17\4\17\17\17\15\16\17\15\16\17\17\15\16\15\16\17\17\4\4\29\29\21\5\5\17\15\16\17\
+    \\15\16\17\17\17\17\17\17\17\12\12\17\17\17\17\17\17\17\13\14\17\13\14\17\17\4\4\4\4\4\4\3\3\3\3\17\21\29\29\5\5\5\6\6\5\6\5\5\17\17\
+    \\26\17\17\5\29\29\29\29\29\8\8\17\17\29\17\5\4\4\4\4\4\5\5\5\5\17\17\17\4\17\17\17\29\29\29\29\29\4\4\4\4\6\6\5\5\5\29\29\29\6\
+    \\6\5\5\5\3\3\3\3\3\17\3\5\29\29\29\1\18\1\1\1\1\1\1\0\1\29\29\8\8\4\4\29\29\29\29\29\17\8\8\29\29\29\29\29\29\21\21\21\20\20\
+    \\20\20\20\8\8\17\17\18\18\18\17\0\0\0\0\0\0\0\29\0\0\29\1\17\5\5\17\5\5\17\5\5\5\5\5\5\12\5\17\17\17\4\29\29\29\21\13\14\21\21\
+    \\21\21\21\0\1\0\1\5\5\0\1\29\29\29\29\2\2\2\2\2\2\2\2\27\27\27\27\27\27\27\27\28\28\28\28\28\28\28\28\4\4\29\5\5\12\29\29\4\17\29\
+    \\29\29\29\29\29\8\8\5\29\29\29\29\29\4\4\4\4\4\4\5\29"#
 
 generalCategoryOffsets1BitMap :: Ptr Word16
 generalCategoryOffsets1BitMap = Ptr
-    "\8\6\146\4\96\3\96\3\96\3\96\3\6\6\108\1\214\9\146\3\184\6\134\1\96\3\96\3\96\3\96\3\96\3\7\6\127\1\115\11\198\6\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\145\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\54\0\44\0\26\8\96\3\96\3\96\3\96\3\96\3\95\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\97\3\249\4\48\4\96\3\96\3\96\3\96\3\48\4\48\4\48\4\48\4\52\4\86\2\96\3\96\3\104\7\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\
-    \\48\4\48\4\50\4\146\3\146\3\146\3\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\50\4\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\103\3\97\3\103\3\
-    \\96\3\96\3\96\3\96\3\96\3\103\3\96\3\96\3\96\3\96\3\103\3\97\3\103\3\96\3\97\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\144\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\146\3\146\3\146\3\146\3\80\5\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\140\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\188\9\237\1\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\142\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\97\3\88\3\96\3\97\3\34\5\88\3\96\3\96\3\96\3\70\3\146\1\166\7\146\3\21\10\179\11\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\236\2\96\3\96\3\96\3\96\3\130\5\16\2\141\9\146\3\146\3\146\3\96\3\100\3\96\3\
-    \\96\3\97\3\96\3\96\3\89\3\96\3\140\3\96\3\140\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\143\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\164\6\146\3\146\3\146\3\182\5\182\5\182\5\182\5\182\5\182\5\96\3\96\3\96\3\140\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\144\3\146\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\83\5\96\3\96\3\98\5\96\3\96\3\189\8\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\4\8\123\5\145\3\96\3\96\3\96\3\97\3\146\5\209\2\151\5\20\9\195\5\21\10\96\3\96\3\96\3\140\3\141\3\146\3\96\3\96\3\96\3\96\3\96\3\142\3\96\3\
-    \\96\3\96\3\144\3\21\10\174\7\48\4\48\4\48\4\48\4\48\4\48\4\195\1\195\1\223\3\185\10\48\4\48\4\48\4\48\4\176\8\48\4\48\4\48\4\189\7\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\236\3\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\
-    \\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\236\3\48\4\234\3\48\4\48\4\48\4\48\4\48\4\48\4\195\1\199\2\9\2\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\207\0\146\3\96\3\96\3\96\3\96\3\96\3\96\3\182\5\182\5\148\4\157\4\251\9\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\207\0\146\3\96\3\96\3\96\3\96\3\143\3\146\3\43\5\146\3\146\3\146\3\40\5\146\3\171\9\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\142\3\146\3\96\3\96\3\97\3\172\9\96\3\96\3\96\3\96\3\96\3\142\3\96\3\96\3\96\3\96\3\96\3\141\3\218\2\164\9\21\10\29\9\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\96\3\96\3\96\3\55\12\146\3\146\3\96\3\96\3\96\3\96\3\96\3\5\6\21\10\63\12\96\3\96\3\104\7\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\141\3\
-    \\48\4\48\4\48\4\48\4\48\4\48\4\49\4\146\3\96\3\96\3\96\3\96\3\96\3\59\0\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\7\196\6\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\144\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\141\3\96\3\96\3\96\3\96\3\96\3\96\3\145\3\146\3\223\7\92\1\92\1\227\7\117\0\117\0\117\0\117\0\95\4\74\0\74\0\74\0\238\9\243\9\21\10\205\10\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\142\0\92\1\92\1\92\1\92\1\92\1\92\1\146\0\185\4\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\124\5\214\1\246\7\83\9\199\2\199\2\
-    \\135\6\146\3\146\3\146\3\146\3\142\0\92\1\92\1\92\1\92\1\144\0\92\1\225\7\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\142\0\92\1\92\1\92\1\92\1\92\1\92\1\146\0\185\4\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\123\1\21\10\179\11\48\4\48\4\48\4\49\4\92\1\186\7\48\4\48\4\48\4\92\1\150\0\92\1\48\4\48\4\48\4\48\4\92\1\186\7\48\4\48\4\48\4\48\4\
-    \\150\0\92\1\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\236\3\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\17\4\19\4\92\1\92\1\92\1\184\7\48\4\48\4\48\4\48\4\48\4\198\1\195\1\195\1\195\1\197\1\
-    \\17\4\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\212\5\16\4\16\4\194\1\195\1\195\1\195\1\195\1\195\1\195\1\195\1\191\1\195\1\195\1\195\1\199\1\48\4\
-    \\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\17\4\19\4\92\1\92\1\92\1\184\7\48\4\48\4\48\4\48\4\48\4\198\1\195\1\195\1\195\1\197\1\17\4\195\1\195\1\
-    \\105\4\18\1\25\1\122\2\74\0\74\0\74\0\14\1\4\1\21\1\126\2\74\0\74\0\86\4\117\0\117\0\91\4\74\0\74\0\74\0\117\0\117\0\117\0\95\4\74\0\74\0\86\4\117\0\117\0\91\4\74\0\74\0\74\0\117\0\117\0\117\0\95\4\74\0\74\0\126\0\117\0\117\0\117\0\124\0\74\0\74\0\79\0\88\4\117\0\117\0\
-    \\122\0\96\3\96\3\96\3\96\3\5\6\146\3\21\10\179\11\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\92\1\92\1\92\1\224\7\96\3\96\3\96\3\96\3\96\3\212\6\144\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\177\2\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\144\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\145\3\146\3\96\3\96\3\3\6\223\2\221\2\225\2\199\2\200\2\96\3\96\3\96\3\38\2\96\3\143\3\96\3\96\3\96\3\139\3\30\6\157\4\96\3\96\3\96\3\96\3\96\3\125\1\157\4\157\4\222\9\157\4\157\4\157\4\157\4\157\4\251\9\157\4\157\4\7\5\146\3\48\4\48\4\48\4\48\4\48\4\48\4\
-    \\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\52\4\146\3\146\3\146\3\146\3\146\3\146\3\146\3\182\5\182\5\182\5\182\5\182\5\182\5\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\
-    \\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\46\2\243\1\215\4\6\1\89\4\117\0\28\1\93\4\74\0\74\0\74\0\187\3\25\0\192\0\192\0\192\0\190\3\185\0\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\9\37\7\196\6\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\142\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\9\6\44\4\33\11\146\3\21\10\15\5\74\11\96\3\96\3\26\8\96\3\96\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\117\0\117\0\117\0\117\0\74\0\74\0\74\0\74\0\92\1\92\1\151\0\198\6\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\140\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\144\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\96\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\142\3\56\4\117\0\27\1\117\0\27\1\207\11\74\0\101\4\74\0\101\4\135\0\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\117\0\117\0\117\0\117\0\117\0\117\0\74\0\74\0\74\0\74\0\74\0\74\0\192\0\192\0\192\0\192\0\75\9\228\0\192\0\192\0\192\0\
-    \\192\0\192\0\192\0\191\0\239\0\192\0\192\0\192\0\192\0\192\0\192\0\22\1\117\0\117\0\117\0\23\1\40\4\74\0\74\0\74\0\74\0\74\0\178\4\181\2\157\4\157\4\157\4\157\4\183\2\215\11\146\3\96\3\96\3\96\3\106\3\205\0\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\164\6\146\3\146\3\146\3\182\5\182\5\182\5\182\5\182\5\182\5\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\158\4\244\3\157\4\157\4\157\4\
-    \\157\4\157\4\160\4\61\2\48\4\62\2\197\6\146\3\179\2\181\2\157\4\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\38\6\146\3\35\6\135\9\96\3\70\6\97\3\73\6\90\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\127\9\142\2\132\9\146\3\172\9\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\140\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\144\3\146\3\146\3\146\3\146\3\38\6\146\3\35\6\135\9\96\3\70\6\97\3\73\6\90\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\96\3\127\9\142\2\132\9\146\3\172\9\96\3\96\3\96\3\96\3\96\3\96\3\96\3\90\5\48\4\48\4\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\236\2\96\3\96\3\96\3\96\3\96\3\96\3\86\2\146\3\146\3\146\3\146\3\96\3\229\6\48\4\252\11\48\4\48\4\193\10\22\3\48\4\48\4\48\4\48\4\48\4\
-    \\48\4\48\4\48\4\48\4\239\3\48\4\48\4\48\4\97\2\195\1\195\1\205\1\48\4\48\4\48\4\48\4\96\2\193\10\48\4\48\4\48\4\48\4\49\4\146\3\146\3\146\3\48\4\53\4\146\3\146\3\92\1\92\1\92\1\92\1\92\1\92\1\92\1\184\7\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\180\7\92\1\92\1\
-    \\96\3\96\3\104\6\110\6\96\3\96\3\96\3\171\11\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\234\7\92\1\92\1\141\0\92\1\92\1\92\1\92\1\92\1\183\7\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\
-    \\48\4\48\4\50\4\146\3\146\3\146\3\146\3\146\3\146\3\243\4\48\4\48\4\48\4\48\4\48\4\52\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\52\4\146\3\48\4\49\4\92\2\48\4\92\2\48\4\92\2\48\4\48\4\48\4\50\4\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\
-    \\96\3\143\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\140\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\145\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\140\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\240\0\188\3\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\193\0\193\0\236\0\
-    \\192\0\192\0\192\0\192\0\192\0\9\0\0\0\21\0\66\7\62\7\194\0\16\0\189\0\58\7\120\8\125\8\193\0\11\0\192\0\192\0\126\8\192\0\192\0\192\0\192\0\192\0\192\0\242\0\64\7\197\0\192\0\74\0\74\0\74\0\74\0\74\0\74\0\74\0\74\0\83\0\74\0\74\0\74\0\134\2\134\2\35\10\134\2\140\2\142\2\137\2\
-    \\146\2\142\2\142\2\143\2\134\2\230\5\192\0\236\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\186\3\233\5\192\0\152\2\232\0\192\0\192\0\4\0\6\0\192\0\196\0\58\5\53\5\59\5\146\3\146\3\165\1\81\10\96\3\96\3\96\3\105\6\93\1\146\3\96\3\96\3\3\6\157\4\67\9\9\2\146\3\146\3\96\3\96\3\111\11\
-    \\9\2\146\3\146\3\146\3\146\3\96\3\96\3\105\6\227\7\146\3\146\3\96\3\96\3\97\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\92\1\92\1\92\1\224\7\96\3\96\3\96\3\96\3\96\3\212\6\144\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\177\2\96\3\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\70\1\67\3\68\3\68\3\68\3\68\3\68\3\68\3\11\2\143\11\134\2\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\149\11\146\3\23\8\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\117\0\117\0\117\0\117\0\74\0\74\0\74\0\74\0\92\1\92\1\151\0\198\6\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\108\8\108\8\108\8\108\8\241\5\150\7\21\10\27\10\116\0\117\0\117\0\88\8\73\0\74\0\74\0\101\8\108\8\108\8\108\8\108\8\2\2\102\0\230\4\109\0\117\0\117\0\118\0\90\4\74\0\74\0\75\0\74\0\217\3\180\1\157\4\151\6\96\3\96\3\96\3\96\3\118\1\
-    \\6\6\157\4\157\4\21\10\43\1\1\6\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\33\2\247\3\77\1\89\7\21\10\116\10\199\2\201\2\0\6\96\3\96\3\96\3\157\4\157\4\157\4\233\2\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\3\6\157\4\174\2\146\3\21\10\101\7\96\3\
-    \\96\3\96\3\6\6\84\1\68\4\188\6\96\3\96\3\96\3\96\3\96\3\96\3\49\1\156\4\148\5\8\6\96\3\125\4\21\10\117\1\96\3\140\8\38\5\35\5\96\3\96\3\94\3\77\6\18\6\215\1\155\3\147\3\109\3\137\6\21\10\49\10\55\10\24\2\106\3\35\5\96\3\96\3\94\3\116\3\240\7\78\3\230\2\4\10\206\4\37\1\
-    \\21\10\93\7\146\3\24\2\98\3\93\3\96\3\96\3\94\3\91\3\18\6\43\3\41\11\145\3\146\3\137\6\21\10\84\2\216\2\49\3\38\5\35\5\96\3\96\3\94\3\91\3\249\6\215\1\127\7\13\2\109\3\137\6\21\10\63\10\146\3\83\3\119\4\103\3\112\3\65\5\119\4\96\3\68\5\160\5\220\0\45\5\146\3\37\1\21\10\185\7\
-    \\113\2\3\7\99\3\94\3\96\3\96\3\94\3\96\3\139\4\19\2\56\8\45\6\40\5\137\6\21\10\56\4\143\0\197\8\99\3\94\3\96\3\96\3\94\3\100\3\249\6\154\5\75\3\149\3\63\5\137\6\21\10\131\3\146\3\225\6\99\3\94\3\96\3\96\3\96\3\96\3\112\7\252\7\160\8\27\8\93\1\137\6\21\10\92\1\101\6\49\3\
-    \\96\3\97\3\236\2\96\3\96\3\93\3\74\6\97\3\213\0\75\8\68\3\37\1\21\10\72\5\146\3\95\3\96\3\96\3\96\3\96\3\96\3\181\6\59\8\120\1\9\6\21\10\201\5\146\3\146\3\146\3\146\3\112\3\101\3\96\3\96\3\207\4\96\3\181\6\190\2\175\9\7\5\21\10\116\8\146\3\146\3\146\3\146\3\166\8\199\2\171\8\
-    \\58\2\21\10\80\7\84\7\73\10\96\3\95\3\96\3\96\3\96\3\141\3\181\2\127\1\49\11\4\6\157\4\181\2\157\4\157\4\157\4\47\7\60\2\190\7\43\4\8\2\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\72\8\155\4\35\8\21\10\212\9\125\5\40\8\116\7\25\7\144\4\96\3\55\3\55\1\21\10\143\6\117\0\
-    \\117\0\117\0\117\0\24\1\201\6\74\0\74\0\74\0\74\0\74\0\174\3\96\3\96\3\103\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\8\7\199\2\91\1\92\1\226\7\96\3\96\3\48\4\54\4\117\0\117\0\117\0\117\0\117\0\117\0\117\0\117\0\117\0\117\0\31\1\126\0\96\3\96\3\100\1\61\5\96\3\96\3\172\1\
-    \\146\3\96\3\96\3\159\2\146\3\96\3\99\3\161\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\42\8\221\6\100\9\156\4\111\1\249\2\21\10\179\11\92\1\229\7\85\9\218\9\21\10\179\11\96\3\96\3\96\3\96\3\106\7\96\3\96\3\96\3\96\3\96\3\96\3\145\3\110\7\96\3\96\3\96\3\96\3\173\2\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\140\3\146\3\96\3\96\3\2\6\90\10\96\3\96\3\96\3\96\3\96\3\96\3\84\10\7\5\205\8\144\5\141\5\226\2\21\10\179\11\21\10\179\11\63\4\221\8\157\4\251\8\157\4\7\5\146\3\146\3\146\3\146\3\146\3\146\3\187\6\96\3\96\3\96\3\96\3\96\3\151\4\135\5\104\9\141\3\21\10\
-    \\212\9\47\4\244\3\161\4\196\7\60\3\96\3\96\3\96\3\254\6\132\1\21\10\101\7\96\3\96\3\96\3\96\3\149\4\213\8\254\3\59\4\96\3\96\3\96\3\96\3\64\3\140\5\55\11\60\4\21\10\24\5\21\10\101\7\96\3\96\3\96\3\59\0\74\0\60\5\117\0\117\0\117\0\117\0\117\0\18\1\199\2\146\3\51\11\157\4\155\4\
-    \\137\1\138\1\159\1\74\0\74\0\74\0\74\0\74\0\130\2\134\2\134\2\134\2\134\2\134\2\134\2\134\2\184\3\74\0\186\3\74\0\74\0\74\0\131\2\134\2\134\2\134\2\134\2\157\4\157\4\157\4\157\4\157\4\157\4\157\4\157\4\74\0\117\0\126\0\31\1\74\0\117\0\74\0\117\0\126\0\31\1\74\0\111\4\74\0\117\0\74\0\
-    \\126\0\74\0\31\12\74\0\31\12\74\0\31\12\98\4\95\0\163\10\157\10\128\0\252\0\74\0\224\5\132\0\72\7\174\5\179\5\135\7\6\4\199\2\251\1\199\2\92\9\145\7\199\2\141\7\243\8\185\5\182\5\171\10\177\10\92\1\25\4\134\2\165\9\241\6\241\6\241\6\241\6\85\2\146\3\157\4\6\9\1\9\157\4\119\9\146\3\202\3\
-    \\53\7\132\8\196\3\165\4\171\4\200\0\180\0\100\2\106\2\92\1\92\1\37\9\37\9\37\9\37\9\42\9\244\11\185\10\191\10\227\3\237\3\48\4\48\4\48\4\94\2\231\3\48\4\48\4\48\4\96\2\195\1\117\0\117\0\117\0\117\0\117\0\117\0\74\0\74\0\74\0\74\0\74\0\74\0\20\0\195\0\12\0\89\0\192\0\192\0\192\0\
-    \\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\192\0\55\9\60\9\8\12\95\10\74\0\74\0\74\0\74\0\97\4\167\6\96\3\96\3\96\3\96\3\96\3\96\3\96\3\238\1\237\1\11\2\96\3\96\3\97\3\146\3\97\3\97\3\97\3\97\3\97\3\97\3\97\3\97\3\157\4\157\4\157\4\157\4\218\10\212\10\84\9\89\9\13\4\
-    \\37\0\199\2\244\10\232\8\199\2\186\1\216\5\146\3\146\3\146\3\146\3\48\4\48\4\48\4\193\7\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\52\4\146\3\116\5\17\4\204\7\208\7\36\9\10\8\223\4\47\9\95\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\97\3\9\3\80\5\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\173\0\96\3\77\2\96\3\96\3\21\10\169\11\146\3\146\3\192\0\192\0\192\0\192\0\192\0\167\2\11\9\10\6\192\0\192\0\192\0\52\2\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\31\7\37\9\82\9\146\3\251\5\254\5\96\3\96\3\31\8\197\10\182\7\114\2\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\192\6\146\3\29\7\96\3\96\3\96\3\96\3\96\3\64\3\68\3\166\5\57\4\21\10\179\11\157\4\157\4\147\4\246\5\21\10\101\7\96\3\96\3\3\6\78\9\96\3\96\3\2\6\157\4\254\3\56\4\96\3\96\3\96\3\141\3\188\6\96\3\96\3\96\3\96\3\96\3\54\3\83\11\198\2\248\10\21\10\
-    \\205\10\166\0\96\3\21\10\131\4\96\3\96\3\96\3\96\3\96\3\184\6\62\1\146\3\254\5\33\4\21\10\226\10\96\3\96\3\15\3\121\10\96\3\96\3\96\3\96\3\96\3\96\3\152\1\107\11\173\2\146\3\146\3\80\6\96\3\79\11\65\0\146\3\237\2\237\2\237\2\146\3\97\3\97\3\74\0\74\0\74\0\74\0\74\0\179\3\74\0\
-    \\193\4\74\0\74\0\74\0\74\0\74\0\74\0\74\0\74\0\74\0\74\0\96\3\96\3\96\3\96\3\109\9\114\9\21\10\179\11\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\39\12\
-    \\39\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\47\12\157\4\157\4\86\6\236\1\157\4\157\4\7\11\16\4\13\11\215\7\156\7\230\1\236\4\158\0\99\3\96\3\96\3\
-    \\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\210\3\244\2\150\7\21\10\27\10\116\0\117\0\117\0\88\8\73\0\74\0\74\0\30\0\21\11\96\3\118\1\96\3\96\3\96\3\96\3\27\11\96\3\96\3\96\3\97\3\236\2\236\2\236\2\27\5\74\4\29\3\146\3\190\5\224\8\92\1\92\1\
-    \\92\1\92\1\92\1\154\9\48\4\37\9\37\9\37\9\37\9\37\9\37\9\149\9\187\7\48\4\255\4\48\4\51\4\55\4\146\3\146\3\146\3\146\3\146\3\48\4\48\4\48\4\48\4\48\4\196\10\96\3\96\3\96\3\96\3\227\7\26\8\96\3\96\3\122\5\108\5\96\3\96\3\96\3\96\3\3\6\21\9\96\3\96\3\96\3\238\2\96\3\
-    \\96\3\96\3\96\3\142\3\96\3\69\2\146\3\146\3\146\3\146\3\146\3\117\0\117\0\117\0\117\0\117\0\74\0\74\0\74\0\74\0\74\0\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\140\3\21\10\179\11\117\0\117\0\117\0\117\0\33\1\74\0\74\0\74\0\74\0\41\6\96\3\96\3\96\3\96\3\96\3\96\3\97\3\
-    \\146\3\96\3\96\3\140\3\146\3\96\3\146\3\146\3\146\3\52\0\134\2\134\2\134\2\134\2\134\2\50\0\167\9\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\140\3\94\3\96\3\96\3\96\3\96\3\98\3\31\5\96\3\96\3\238\2\92\1\96\3\96\3\81\5\150\0\96\3\96\3\96\3\97\3\231\7\92\1\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\96\3\96\3\135\4\140\0\62\6\178\2\100\3\95\3\96\3\96\3\140\3\254\9\92\1\230\7\199\2\237\1\96\3\96\3\96\3\152\8\96\3\96\3\96\3\105\6\146\3\146\3\146\3\146\3\96\3\102\6\96\3\96\3\134\6\140\0\200\2\146\3\96\3\96\3\96\3\96\3\96\3\96\3\140\3\62\4\96\3\96\3\140\3\
-    \\92\1\96\3\96\3\143\3\92\1\96\3\96\3\144\3\116\6\146\3\142\0\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\145\3\146\3\146\3\146\3\146\3\146\3\146\3\117\0\117\0\117\0\117\0\117\0\117\0\34\1\146\3\74\0\74\0\74\0\74\0\74\0\
-    \\74\0\42\6\141\0\124\10\96\3\96\3\96\3\96\3\96\3\96\3\157\4\9\6\221\8\141\0\92\1\18\5\21\10\156\1\11\2\60\3\96\3\96\3\96\3\96\3\96\3\131\5\60\11\157\6\160\6\96\3\96\3\96\3\145\3\21\10\179\11\146\4\96\3\96\3\96\3\2\6\130\1\9\5\21\10\160\7\146\3\96\3\96\3\96\3\96\3\108\10\
-    \\146\3\60\3\96\3\96\3\96\3\96\3\96\3\128\5\127\1\191\6\14\9\21\10\0\11\142\0\92\1\226\7\146\3\96\3\96\3\93\3\96\3\96\3\127\5\38\3\101\10\253\2\146\3\146\3\146\3\146\3\146\3\146\3\146\3\97\3\86\3\96\3\98\3\96\3\23\12\96\3\96\3\96\3\96\3\96\3\2\6\141\5\21\9\21\10\179\11\87\11\
-    \\38\5\35\5\96\3\96\3\94\3\91\3\93\11\15\8\19\8\45\5\26\8\143\1\252\9\252\9\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\126\5\157\4\136\10\193\6\21\10\101\11\144\3\146\3\146\3\146\3\96\3\96\3\96\3\
-    \\96\3\96\3\96\3\141\5\137\5\55\6\146\3\21\10\179\11\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\141\5\37\3\149\10\146\3\21\10\179\11\199\2\196\6\146\3\146\3\96\3\96\3\96\3\96\3\96\3\202\8\128\1\23\12\21\10\179\11\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\8\7\132\5\
-    \\58\8\21\10\124\6\97\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\127\5\157\4\222\1\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\117\0\117\0\117\0\
-    \\117\0\74\0\74\0\74\0\74\0\21\10\80\7\228\7\61\5\96\3\94\3\96\3\96\3\96\3\124\5\7\5\128\1\195\6\146\3\21\10\80\7\92\1\226\7\25\11\96\3\96\3\96\3\180\2\157\4\157\4\219\6\47\8\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\97\3\93\3\96\3\96\3\96\3\96\3\45\7\3\3\175\6\
-    \\146\3\21\10\179\11\98\3\94\3\96\3\96\3\96\3\121\7\50\6\145\3\21\10\179\11\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\67\8\96\3\94\3\96\3\96\3\96\3\71\8\135\11\218\8\199\2\21\10\179\11\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\145\3\146\3\92\1\92\1\183\7\
-    \\236\6\233\6\48\4\54\4\56\4\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\97\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\145\3\96\3\96\3\96\3\97\3\21\10\
-    \\205\10\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\97\3\21\10\179\11\96\3\96\3\96\3\140\3\229\11\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\143\3\96\3\141\3\96\3\145\3\96\3\143\10\28\6\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\48\4\48\4\48\4\48\4\49\4\92\2\48\4\48\4\48\4\48\4\48\4\48\4\209\1\20\7\24\6\196\9\13\7\161\4\48\4\48\4\48\4\16\7\48\4\48\4\48\4\48\4\48\4\48\4\48\4\53\4\146\3\146\3\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\204\9\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\
-    \\146\3\146\3\146\3\146\3\146\3\146\3\146\3\92\1\92\1\227\7\146\3\92\1\92\1\227\7\146\3\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\49\4\146\3\92\1\92\1\92\1\230\7\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\117\0\117\0\117\0\
-    \\95\4\74\0\74\0\86\4\117\0\117\0\91\4\98\4\74\0\74\0\117\0\117\0\117\0\95\4\74\0\74\0\246\0\204\6\11\1\91\4\169\3\99\4\74\0\117\0\117\0\117\0\95\4\74\0\74\0\74\0\74\0\77\0\86\4\117\0\117\0\120\0\74\0\74\0\75\0\84\4\117\0\117\0\118\0\74\0\74\0\74\0\82\4\117\0\117\0\117\0\
-    \\124\0\74\0\74\0\79\0\163\11\21\10\21\10\21\10\21\10\21\10\21\10\74\0\85\0\74\0\38\6\33\6\42\6\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\7\5\157\4\157\4\46\11\52\8\21\9\134\2\
-    \\134\2\134\2\134\2\134\2\134\2\134\2\164\9\146\3\146\3\146\3\11\2\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\96\3\94\6\
-    \\92\1\7\5\146\3\146\3\146\3\146\3\146\3\100\3\96\3\96\3\96\3\120\3\95\3\101\3\211\4\125\3\202\4\120\3\200\4\120\3\101\3\101\3\206\4\96\3\93\3\96\3\142\3\28\2\93\3\96\3\142\3\146\3\146\3\146\3\146\3\146\3\146\3\241\4\146\3\53\4\146\3\48\4\48\4\48\4\48\4\48\4\52\4\48\4\55\4\54\4\
-    \\146\3\50\4\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\
-    \\48\4\48\4\13\10\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\89\2\48\4\51\4\48\4\51\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\49\4\
-    \\90\2\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\54\4\48\4\52\4\55\4\146\3\48\4\52\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\146\3\48\4\54\4\48\4\48\4\48\4\48\4\48\4\146\3\48\4\48\4\48\4\50\4\54\4\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\146\3\48\4\
-    \\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\52\4\146\3\48\4\50\4\48\4\51\4\48\4\55\4\48\4\48\4\48\4\48\4\48\4\189\7\50\4\243\4\48\4\52\4\48\4\55\4\48\4\55\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\48\4\192\7\
-    \\48\4\48\4\48\4\48\4\48\4\48\4\53\4\146\3\146\3\146\3\146\3\21\10\179\11"#
+    "\87\8\108\1\108\1\108\1\108\1\108\1\107\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\109\1\242\3\94\4\108\1\108\1\108\1\108\1\94\4\94\4\94\4\94\4\96\4\22\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\115\1\109\1\115\1\108\1\108\1\108\1\108\1\108\1\115\1\108\1\108\1\
+    \\108\1\108\1\115\1\109\1\115\1\108\1\109\1\108\1\108\1\108\1\108\1\108\1\108\1\59\6\90\4\165\11\186\3\171\10\49\5\27\11\108\1\108\1\87\8\108\1\108\1\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\47\10\108\1\108\1\108\1\108\1\52\10\171\10\15\12\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\245\0\245\0\245\0\245\0\202\0\202\0\202\0\202\0\158\2\158\2\35\2\224\6\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\58\6\186\4\108\1\108\1\108\1\108\1\56\6\146\0\87\10\186\3\210\6\172\0\108\1\
+    \\108\1\108\1\108\1\108\1\57\6\165\0\207\11\224\6\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\185\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\54\0\
+    \\44\0\108\1\108\1\165\7\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\
+    \\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\96\4\186\3\186\3\186\3\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\171\10\15\12\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\184\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\186\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\180\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\244\9\181\2\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\182\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\109\1\100\1\108\1\109\1\68\5\100\1\108\1\108\1\108\1\
+    \\244\6\184\0\182\1\186\3\171\10\15\12\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\108\1\158\1\108\1\108\1\108\1\108\1\178\5\216\2\238\8\186\3\186\3\186\3\108\1\112\1\108\1\108\1\109\1\108\1\108\1\101\1\108\1\180\3\108\1\180\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\183\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\197\6\186\3\186\3\186\3\230\5\230\5\230\5\230\5\230\5\230\5\108\1\108\1\108\1\108\1\108\1\108\1\230\5\230\5\188\4\197\4\
+    \\10\10\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\183\3\108\1\181\3\108\1\185\3\108\1\123\11\136\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\172\5\39\11\8\3\147\9\169\3\169\3\168\6\186\3\186\3\186\3\186\3\108\1\108\1\108\1\180\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\184\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\180\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\184\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\109\1\194\5\44\4\199\5\101\3\243\5\171\10\108\1\
+    \\108\1\108\1\180\3\181\3\186\3\108\1\108\1\108\1\108\1\108\1\182\3\108\1\108\1\108\1\184\3\171\10\176\6\94\4\94\4\94\4\94\4\94\4\94\4\95\0\95\0\13\4\83\11\94\4\94\4\94\4\94\4\9\8\94\4\94\4\94\4\246\7\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\26\4\
+    \\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\26\4\94\4\24\4\94\4\94\4\94\4\94\4\94\4\94\4\95\0\159\8\159\8\159\8\159\8\35\6\223\7\171\10\177\10\244\0\245\0\245\0\139\8\201\0\202\0\202\0\152\8\159\8\159\8\
+    \\159\8\159\8\202\2\230\0\14\5\237\0\245\0\245\0\246\0\136\4\202\0\202\0\203\0\202\0\213\0\202\0\77\6\72\6\81\6\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\19\2\186\3\108\1\108\1\108\1\108\1\183\3\186\3\77\5\186\3\186\3\186\3\74\5\186\3\88\8\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\182\3\186\3\108\1\108\1\109\1\89\8\108\1\108\1\108\1\108\1\108\1\182\3\108\1\108\1\108\1\108\1\108\1\181\3\140\1\228\9\171\10\157\6\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\108\1\108\1\108\1\141\12\186\3\186\3\108\1\108\1\108\1\108\1\108\1\55\6\171\10\226\4\108\1\108\1\165\7\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\181\3\94\4\94\4\94\4\94\4\94\4\94\4\95\4\186\3\108\1\108\1\108\1\108\1\108\1\59\0\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\86\7\222\6\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\184\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\181\3\108\1\108\1\108\1\108\1\108\1\108\1\185\3\186\3\36\8\158\2\158\2\40\8\245\0\245\0\245\0\245\0\141\4\202\0\202\0\202\0\135\10\140\10\171\10\117\10\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\26\2\158\2\158\2\158\2\158\2\158\2\158\2\30\2\23\7\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\108\1\108\1\108\1\161\0\171\10\15\12\26\2\158\2\158\2\158\2\158\2\28\2\158\2\38\8\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\26\2\158\2\158\2\158\2\158\2\158\2\158\2\30\2\23\7\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\53\6\111\10\116\10\122\5\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\125\5\108\1\108\1\140\5\108\1\108\1\251\8\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\53\8\171\5\185\3\94\4\94\4\94\4\95\4\158\2\243\7\94\4\94\4\94\4\158\2\34\2\158\2\94\4\94\4\94\4\94\4\158\2\243\7\94\4\94\4\
+    \\94\4\94\4\34\2\158\2\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\26\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\63\4\65\4\158\2\158\2\158\2\241\7\94\4\94\4\94\4\94\4\94\4\98\0\95\0\95\0\
+    \\95\0\97\0\63\4\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\4\6\62\4\62\4\94\0\95\0\95\0\95\0\95\0\95\0\95\0\95\0\91\0\95\0\95\0\95\0\
+    \\99\0\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\63\4\65\4\158\2\158\2\158\2\241\7\94\4\94\4\94\4\94\4\94\4\98\0\95\0\95\0\95\0\97\0\63\4\
+    \\95\0\95\0\151\4\96\2\103\2\50\3\202\0\202\0\202\0\92\2\82\2\99\2\54\3\202\0\202\0\132\4\245\0\245\0\137\4\202\0\202\0\202\0\245\0\245\0\245\0\141\4\202\0\202\0\132\4\245\0\245\0\137\4\202\0\202\0\202\0\245\0\245\0\245\0\141\4\202\0\202\0\254\0\245\0\245\0\245\0\252\0\202\0\202\0\207\0\134\4\
+    \\245\0\245\0\250\0\108\1\108\1\108\1\108\1\55\6\186\3\171\10\15\12\171\10\48\1\245\0\245\0\109\2\189\1\202\0\202\0\254\0\199\6\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\158\2\158\2\158\2\37\8\108\1\108\1\108\1\108\1\108\1\117\12\184\3\186\3\61\5\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\141\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\184\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\185\3\186\3\108\1\108\1\53\6\145\1\143\1\147\1\169\3\170\3\108\1\108\1\108\1\238\2\108\1\183\3\108\1\108\1\108\1\179\3\138\3\197\4\108\1\108\1\108\1\108\1\108\1\163\0\197\4\197\4\95\10\197\4\197\4\197\4\197\4\197\4\10\10\197\4\197\4\76\1\186\3\94\4\94\4\94\4\94\4\
+    \\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\98\4\186\3\186\3\186\3\186\3\186\3\186\3\186\3\230\5\230\5\230\5\230\5\230\5\230\5\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\
+    \\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\210\1\187\2\255\4\84\2\135\4\245\0\106\2\139\4\202\0\202\0\202\0\227\3\25\0\4\2\4\2\4\2\230\3\253\1\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\101\9\86\7\222\6\186\3\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\182\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\180\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\184\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\186\3\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\182\3\102\4\245\0\105\2\245\0\105\2\43\12\202\0\147\4\202\0\147\4\7\1\108\1\108\1\108\1\108\1\108\1\108\1\182\3\186\3\245\0\245\0\245\0\245\0\245\0\245\0\202\0\202\0\202\0\202\0\202\0\202\0\4\2\4\2\4\2\4\2\139\9\50\2\4\2\4\2\4\2\4\2\4\2\4\2\3\2\
+    \\61\2\4\2\4\2\4\2\4\2\4\2\4\2\100\2\245\0\245\0\245\0\101\2\86\4\202\0\202\0\202\0\202\0\202\0\148\10\144\3\197\4\197\4\197\4\197\4\146\3\51\12\186\3\108\1\108\1\108\1\118\1\17\2\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\197\6\186\3\186\3\186\3\230\5\230\5\230\5\230\5\230\5\230\5\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\198\4\34\4\197\4\197\4\197\4\197\4\197\4\200\4\249\2\
+    \\94\4\250\2\223\6\186\3\142\3\144\3\197\4\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\77\6\186\3\74\6\198\9\108\1\99\6\109\1\102\6\102\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\190\9\70\3\195\9\186\3\89\8\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\150\5\94\4\94\4\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\158\1\108\1\108\1\108\1\108\1\108\1\108\1\22\3\186\3\186\3\186\3\186\3\108\1\4\7\94\4\5\8\94\4\94\4\91\11\73\12\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\29\4\94\4\94\4\94\4\33\3\95\0\95\0\105\0\94\4\
+    \\94\4\94\4\94\4\32\3\91\11\94\4\94\4\94\4\94\4\94\4\100\4\186\3\186\3\94\4\99\4\186\3\186\3\158\2\158\2\158\2\158\2\158\2\158\2\158\2\241\7\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\237\7\158\2\158\2\108\1\108\1\143\6\149\6\108\1\108\1\108\1\7\12\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\47\8\158\2\158\2\25\2\158\2\158\2\158\2\158\2\158\2\240\7\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\96\4\186\3\186\3\186\3\186\3\186\3\186\3\27\5\94\4\94\4\94\4\
+    \\94\4\94\4\98\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\98\4\186\3\94\4\95\4\28\3\94\4\28\3\94\4\28\3\94\4\94\4\94\4\96\4\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\183\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\180\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\122\5\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\115\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\57\7\169\3\157\2\158\2\39\8\108\1\108\1\94\4\100\4\245\0\245\0\245\0\245\0\245\0\245\0\245\0\245\0\245\0\245\0\
+    \\109\2\254\0\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\185\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\180\3\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\62\2\228\3\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\5\2\5\2\58\2\4\2\
+    \\4\2\4\2\4\2\4\2\9\0\0\0\21\0\113\7\109\7\6\2\16\0\1\2\105\7\171\8\176\8\5\2\11\0\4\2\4\2\177\8\4\2\4\2\4\2\4\2\4\2\4\2\64\2\111\7\9\2\4\2\202\0\202\0\202\0\202\0\202\0\202\0\202\0\202\0\211\0\202\0\202\0\202\0\62\3\62\3\185\10\62\3\68\3\70\3\65\3\74\3\
+    \\70\3\70\3\71\3\62\3\22\6\4\2\58\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\226\3\25\6\4\2\80\3\54\2\4\2\4\2\4\0\6\0\4\2\8\2\27\6\216\1\222\1\186\3\186\3\228\1\3\9\108\1\108\1\108\1\144\6\159\2\186\3\108\1\108\1\53\6\197\4\131\9\209\2\186\3\186\3\108\1\108\1\203\11\209\2\
+    \\186\3\186\3\186\3\186\3\108\1\108\1\144\6\40\8\186\3\186\3\108\1\108\1\109\1\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\158\2\158\2\158\2\37\8\108\1\108\1\108\1\108\1\108\1\117\12\184\3\186\3\61\5\186\3\186\3\186\3\186\3\186\3\186\3\141\3\108\1\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\62\1\126\3\127\3\127\3\127\3\127\3\127\3\127\3\211\2\235\11\62\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\241\11\186\3\84\8\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\245\0\245\0\245\0\245\0\202\0\202\0\202\0\202\0\158\2\158\2\35\2\224\6\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\7\4\94\7\197\4\184\6\108\1\108\1\108\1\108\1\156\0\56\6\197\4\197\4\171\10\1\11\51\6\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\233\2\37\4\69\1\136\7\171\10\164\9\169\3\171\3\50\6\108\1\108\1\108\1\197\4\197\4\197\4\155\1\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\53\6\197\4\69\6\186\3\171\10\162\7\108\1\108\1\108\1\56\6\150\2\114\4\214\6\108\1\108\1\108\1\108\1\108\1\108\1\134\0\196\4\196\5\58\6\108\1\165\4\171\10\155\0\108\1\191\8\72\5\69\5\108\1\108\1\106\1\205\10\211\10\40\11\195\3\187\3\121\1\
+    \\170\6\171\10\225\10\231\10\224\2\118\1\69\5\108\1\108\1\106\1\128\1\2\3\90\1\152\1\20\3\246\4\115\2\171\10\125\6\186\3\224\2\110\1\105\1\108\1\108\1\106\1\103\1\211\10\14\3\31\7\185\3\186\3\170\6\171\10\101\5\138\1\108\3\72\5\69\5\108\1\108\1\106\1\103\1\252\9\40\11\240\1\213\2\121\1\170\6\171\10\
+    \\239\10\186\3\95\1\195\7\115\1\124\1\107\5\195\7\108\1\110\5\208\5\40\1\79\5\186\3\115\2\171\10\242\7\154\10\52\7\111\1\106\1\108\1\108\1\106\1\108\1\179\4\219\2\24\1\84\6\74\5\170\6\171\10\102\4\27\2\66\8\111\1\106\1\108\1\108\1\106\1\112\1\252\9\202\5\87\1\189\3\105\5\170\6\171\10\200\7\186\3\
+    \\0\7\111\1\106\1\108\1\108\1\108\1\108\1\173\7\238\6\211\8\112\6\159\2\170\6\171\10\158\2\140\6\108\3\108\1\109\1\158\1\108\1\108\1\105\1\103\6\109\1\33\1\108\8\127\3\115\2\171\10\114\5\186\3\107\1\108\1\108\1\108\1\108\1\108\1\207\6\13\10\158\0\59\6\171\10\121\2\186\3\186\3\186\3\186\3\124\1\113\1\
+    \\108\1\108\1\247\4\108\1\207\6\153\3\92\8\76\1\171\10\167\8\186\3\186\3\186\3\186\3\217\8\169\3\222\8\246\2\171\10\127\7\131\7\249\10\108\1\107\1\108\1\108\1\108\1\181\3\144\3\165\0\39\7\54\6\197\4\144\3\197\4\197\4\197\4\231\7\248\2\247\7\89\4\208\2\186\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\
+    \\108\1\105\8\195\4\120\6\171\10\85\10\173\5\140\7\177\7\74\7\184\4\108\1\114\3\214\5\171\10\249\5\245\0\245\0\245\0\245\0\102\2\227\6\202\0\202\0\202\0\202\0\202\0\214\3\108\1\108\1\235\1\103\5\108\1\108\1\166\2\186\3\108\1\108\1\87\3\186\3\108\1\111\1\201\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\
+    \\142\7\252\6\140\0\196\4\149\0\57\10\171\10\15\12\158\2\42\8\149\9\91\10\171\10\15\12\108\1\108\1\108\1\108\1\167\7\108\1\108\1\108\1\108\1\108\1\108\1\185\3\171\7\108\1\108\1\108\1\108\1\68\6\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\180\3\186\3\108\1\108\1\52\6\14\11\108\1\108\1\108\1\108\1\
+    \\108\1\108\1\8\11\76\1\11\9\192\5\189\5\148\1\171\10\15\12\171\10\15\12\109\4\37\9\197\4\67\9\197\4\76\1\186\3\186\3\186\3\186\3\186\3\186\3\213\6\108\1\108\1\108\1\108\1\108\1\191\4\183\5\190\7\161\1\171\10\85\10\93\4\34\4\201\4\253\7\119\3\108\1\108\1\108\1\1\10\170\0\171\10\162\7\108\1\108\1\
+    \\108\1\108\1\189\4\19\9\79\4\105\4\108\1\108\1\108\1\108\1\123\3\188\5\45\7\106\4\171\10\58\5\171\10\162\7\108\1\108\1\108\1\59\0\202\0\218\4\245\0\245\0\245\0\245\0\245\0\96\2\169\3\186\3\41\7\197\4\195\4\175\0\176\0\193\0\202\0\202\0\202\0\202\0\202\0\58\3\62\3\62\3\62\3\62\3\62\3\62\3\
+    \\62\3\224\3\202\0\226\3\202\0\202\0\202\0\59\3\62\3\62\3\62\3\62\3\197\4\197\4\197\4\197\4\197\4\197\4\197\4\197\4\202\0\245\0\254\0\109\2\202\0\245\0\202\0\245\0\254\0\109\2\202\0\157\4\202\0\245\0\202\0\254\0\202\0\93\12\202\0\93\12\202\0\93\12\144\4\223\0\54\11\48\11\0\1\74\2\202\0\16\6\
+    \\4\1\119\7\222\5\227\5\208\7\52\4\169\3\195\2\169\3\156\9\218\7\169\3\214\7\59\9\233\5\230\5\69\11\75\11\158\2\71\4\62\3\229\9\16\7\16\7\16\7\16\7\102\5\186\3\197\4\78\9\73\9\197\4\21\3\186\3\111\0\100\7\183\8\236\3\205\4\211\4\12\2\248\1\36\3\42\3\158\2\158\2\101\9\101\9\101\9\101\9\
+    \\106\9\116\8\83\11\89\11\17\4\27\4\94\4\94\4\94\4\30\3\21\4\94\4\94\4\94\4\32\3\95\0\245\0\245\0\245\0\245\0\245\0\245\0\202\0\202\0\202\0\202\0\202\0\202\0\20\0\7\2\12\0\217\0\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\119\9\124\9\85\12\166\1\202\0\202\0\
+    \\202\0\202\0\143\4\91\6\108\1\108\1\108\1\108\1\108\1\108\1\108\1\182\2\181\2\211\2\108\1\108\1\109\1\186\3\109\1\109\1\109\1\109\1\109\1\109\1\109\1\109\1\197\4\197\4\197\4\197\4\115\11\109\11\148\9\153\9\59\4\37\0\169\3\141\11\48\9\169\3\0\8\8\6\186\3\186\3\186\3\186\3\94\4\94\4\94\4\250\7\
+    \\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\98\4\186\3\164\5\63\4\17\8\21\8\100\9\21\10\195\1\111\9\107\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\109\1\136\2\122\5\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\43\10\108\1\79\0\108\1\108\1\171\10\5\12\
+    \\186\3\186\3\4\2\4\2\4\2\4\2\4\2\35\5\83\9\60\6\4\2\4\2\4\2\118\0\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\80\7\101\9\146\9\186\3\45\6\48\6\108\1\108\1\116\6\126\8\239\7\233\4\108\1\108\1\108\1\108\1\108\1\108\1\218\6\186\3\78\7\108\1\108\1\108\1\108\1\108\1\123\3\127\3\
+    \\217\10\103\4\171\10\15\12\197\4\197\4\187\4\40\6\171\10\162\7\108\1\108\1\53\6\142\9\108\1\108\1\52\6\197\4\79\4\102\4\108\1\108\1\108\1\181\3\214\6\108\1\108\1\108\1\108\1\108\1\113\3\47\7\168\3\127\10\171\10\117\10\55\1\108\1\171\10\171\4\108\1\108\1\108\1\108\1\108\1\210\6\92\9\186\3\48\6\132\5\
+    \\171\10\94\5\108\1\108\1\142\2\169\9\108\1\108\1\108\1\108\1\108\1\108\1\129\0\199\11\68\6\186\3\186\3\12\1\108\1\71\8\18\1\186\3\159\1\159\1\159\1\186\3\109\1\109\1\202\0\202\0\202\0\202\0\202\0\219\3\202\0\61\11\202\0\202\0\202\0\202\0\202\0\202\0\202\0\202\0\202\0\202\0\108\1\108\1\108\1\108\1\
+    \\177\9\182\9\171\10\15\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\101\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\
+    \\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\109\12\197\4\197\4\145\11\180\2\197\4\197\4\86\0\62\4\156\5\28\8\172\1\174\2\20\5\42\2\111\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\0\4\
+    \\122\10\223\7\171\10\177\10\244\0\245\0\245\0\139\8\201\0\202\0\202\0\30\0\153\11\108\1\156\0\108\1\108\1\108\1\108\1\159\11\108\1\108\1\108\1\109\1\158\1\158\1\158\1\61\5\120\4\202\1\186\3\238\5\40\9\158\2\158\2\158\2\158\2\158\2\218\9\94\4\101\9\101\9\101\9\101\9\101\9\101\9\213\9\244\7\94\4\248\3\
+    \\94\4\97\4\101\4\186\3\186\3\186\3\186\3\186\3\94\4\94\4\94\4\94\4\94\4\125\8\108\1\108\1\108\1\108\1\40\8\87\8\108\1\108\1\170\5\154\7\108\1\108\1\108\1\108\1\53\6\27\1\108\1\108\1\108\1\160\1\108\1\108\1\108\1\108\1\182\3\108\1\58\8\186\3\186\3\186\3\186\3\186\3\245\0\245\0\245\0\245\0\
+    \\245\0\202\0\202\0\202\0\202\0\202\0\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\180\3\171\10\15\12\245\0\245\0\245\0\245\0\111\2\202\0\202\0\202\0\202\0\80\6\108\1\108\1\108\1\108\1\108\1\108\1\109\1\186\3\108\1\108\1\180\3\186\3\108\1\186\3\186\3\186\3\52\0\62\3\62\3\62\3\62\3\62\3\
+    \\50\0\231\9\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\180\3\106\1\108\1\108\1\108\1\108\1\110\1\65\5\108\1\108\1\160\1\158\2\108\1\108\1\123\5\34\2\108\1\108\1\108\1\109\1\44\8\158\2\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\175\4\24\2\203\8\141\3\112\1\107\1\108\1\108\1\180\3\102\3\
+    \\158\2\43\8\169\3\181\2\108\1\108\1\108\1\205\9\108\1\108\1\108\1\144\6\186\3\186\3\186\3\186\3\108\1\141\6\108\1\108\1\167\6\24\2\170\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\180\3\108\4\108\1\108\1\180\3\158\2\108\1\108\1\183\3\158\2\108\1\108\1\184\3\19\11\186\3\26\2\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\185\3\186\3\186\3\186\3\186\3\186\3\186\3\245\0\245\0\245\0\245\0\245\0\245\0\112\2\186\3\202\0\202\0\202\0\202\0\202\0\202\0\81\6\25\2\172\9\108\1\108\1\108\1\108\1\108\1\108\1\197\4\59\6\37\9\25\2\158\2\
+    \\52\5\171\10\190\0\211\2\119\3\108\1\108\1\108\1\108\1\108\1\179\5\179\11\190\6\193\6\108\1\108\1\108\1\185\3\171\10\15\12\186\4\108\1\108\1\108\1\52\6\168\0\43\5\171\10\176\1\186\3\108\1\108\1\108\1\108\1\199\10\186\3\119\3\108\1\108\1\108\1\108\1\108\1\176\5\165\0\217\6\86\9\171\10\102\11\26\2\158\2\
+    \\39\8\186\3\108\1\108\1\105\1\108\1\108\1\175\5\174\11\65\0\61\10\186\3\186\3\186\3\186\3\186\3\186\3\186\3\109\1\98\1\108\1\110\1\108\1\125\12\108\1\108\1\108\1\108\1\108\1\52\6\189\5\27\1\171\10\15\12\38\10\72\5\69\5\108\1\108\1\106\1\103\1\161\3\76\8\80\8\79\5\87\8\181\0\11\10\11\10\186\3\
+    \\108\1\105\6\108\1\108\1\108\1\108\1\110\1\189\5\82\1\186\7\71\0\181\2\88\6\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\174\5\197\4\232\8\219\6\171\10\193\11\184\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\189\5\185\5\147\7\186\3\171\10\15\12\186\3\186\3\186\3\186\3\108\1\108\1\
+    \\108\1\108\1\108\1\108\1\189\5\173\11\65\12\186\3\171\10\15\12\169\3\222\6\186\3\186\3\108\1\108\1\108\1\108\1\108\1\8\9\166\0\125\12\171\10\15\12\171\10\171\10\115\10\186\3\186\3\186\3\108\1\108\1\108\1\95\3\180\5\12\10\171\10\7\5\109\1\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\175\5\197\4\86\5\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\245\0\245\0\245\0\245\0\202\0\202\0\202\0\202\0\171\10\127\7\41\8\103\5\169\3\209\2\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\125\12\186\3\171\10\15\12\108\1\106\1\108\1\108\1\108\1\172\5\76\1\166\0\221\6\186\3\171\10\127\7\158\2\39\8\5\11\108\1\108\1\108\1\143\3\197\4\197\4\250\6\24\9\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\109\1\105\1\108\1\108\1\108\1\108\1\41\5\127\2\124\0\186\3\171\10\15\12\110\1\106\1\108\1\108\1\108\1\182\7\29\9\185\3\171\10\15\12\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\100\8\108\1\106\1\108\1\108\1\108\1\104\8\227\11\34\9\169\3\
+    \\171\10\133\12\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\185\3\186\3\158\2\158\2\240\7\11\7\8\7\94\4\100\4\102\4\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\109\1\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\108\1\108\1\108\1\53\6\197\4\5\10\171\10\15\12\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\185\3\108\1\108\1\108\1\109\1\171\10\117\10\
+    \\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\109\1\171\10\15\12\108\1\108\1\108\1\180\3\30\10\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\180\3\186\3\186\3\186\3\186\3\103\5\
+    \\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\98\4\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\
+    \\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\96\4\186\3\94\4\94\4\94\4\94\4\95\4\28\3\94\4\94\4\94\4\94\4\94\4\94\4\227\8\69\7\132\3\69\10\62\7\201\4\94\4\94\4\94\4\65\7\94\4\94\4\94\4\94\4\94\4\94\4\94\4\99\4\186\3\186\3\94\4\94\4\94\4\94\4\
+    \\94\4\94\4\94\4\94\4\77\10\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\158\2\158\2\40\8\186\3\158\2\158\2\40\8\186\3\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\95\4\186\3\158\2\158\2\158\2\43\8\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\245\0\245\0\245\0\141\4\202\0\202\0\132\4\245\0\245\0\137\4\144\4\202\0\202\0\245\0\245\0\245\0\141\4\202\0\202\0\68\2\230\6\89\2\137\4\209\3\145\4\202\0\245\0\245\0\245\0\141\4\202\0\202\0\202\0\202\0\205\0\132\4\245\0\245\0\248\0\202\0\
+    \\202\0\203\0\130\4\245\0\245\0\246\0\202\0\202\0\202\0\128\4\245\0\245\0\245\0\252\0\202\0\202\0\207\0\255\11\171\10\171\10\171\10\171\10\171\10\171\10\76\1\197\4\197\4\36\7\131\2\27\1\62\3\62\3\62\3\62\3\62\3\62\3\62\3\228\9\186\3\186\3\186\3\211\2\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\186\3\186\3\186\3\186\3\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\108\1\133\6\158\2\76\1\186\3\186\3\186\3\186\3\186\3\112\1\108\1\108\1\108\1\132\1\107\1\113\1\251\4\109\6\242\4\132\1\240\4\
+    \\132\1\113\1\113\1\246\4\108\1\105\1\108\1\182\3\228\2\105\1\108\1\182\3\186\3\186\3\186\3\186\3\186\3\186\3\25\5\186\3\99\4\186\3\94\4\94\4\94\4\94\4\94\4\98\4\94\4\101\4\100\4\186\3\96\4\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\186\3\
+    \\186\3\186\3\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\163\10\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\
+    \\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\25\3\94\4\97\4\94\4\97\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\95\4\26\3\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\100\4\94\4\98\4\101\4\186\3\94\4\98\4\
+    \\94\4\94\4\94\4\94\4\94\4\94\4\94\4\186\3\94\4\100\4\94\4\94\4\94\4\94\4\94\4\186\3\94\4\94\4\94\4\96\4\94\4\98\4\100\4\186\3\186\3\186\3\186\3\186\3\186\3\186\3\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\98\4\186\3\94\4\96\4\94\4\97\4\94\4\118\8\94\4\94\4\
+    \\94\4\94\4\94\4\94\4\95\4\27\5\94\4\94\11\94\4\100\4\94\4\101\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\249\7\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\94\4\171\10\15\12"#
 
 generalCategoryOffsets2BitMap :: Ptr Word16
 generalCategoryOffsets2BitMap = Ptr
-    "\205\9\242\8\17\9\214\5\193\6\219\6\237\9\13\10\125\5\45\10\77\10\109\10\141\10\173\10\205\10\237\10\13\11\0\1\188\0\45\11\255\0\0\1\239\1\77\11\109\11\15\2\141\11\173\11\205\11\237\11\217\8\13\12\45\12\77\12\127\4\197\7\226\7\76\2\62\2\97\4\175\4\143\4\127\4\43\2\109\12\141\12\173\12\126\0\205\12\64\0\
-    \\54\4\175\4\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\102\0\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\
-    \\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\
-    \\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\94\0\0\1\0\1\0\1\64\3\0\1\237\12\47\9\13\13\45\13\77\13\109\13\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\
-    \\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\227\2\141\13\141\13\141\13\141\13\141\13\141\13\141\13\141\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\173\13\0\1\
-    \\106\7\79\7\0\1\165\7\205\13\237\13\141\1\13\14\132\3\45\14\77\14\161\6\0\1\109\14\141\14\2\8\173\14\205\14\237\14\21\5\41\5\79\9\13\15\45\15\77\15\109\15\141\15\205\3\173\15\205\15\237\15\109\1\0\0\108\2\13\16\45\16\33\1\77\16\0\1\0\1\0\1\112\3\96\3\65\1\74\1\74\1\74\1\74\1\74\1\74\1\
-    \\74\1\74\1\74\1\124\2\0\1\0\1\0\1\0\1\156\2\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\0\1\0\1\109\16\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\
-    \\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\0\1\0\1\141\16\46\6\74\1\74\1\70\6\142\9\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\135\6\0\1\0\1\0\1\0\1\6\1\30\0\74\1\74\1\
-    \\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\32\0\0\1\202\2\216\2\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\173\16\74\1\74\1\74\1\74\1\74\1\
-    \\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\154\5\156\0\205\16\237\16\13\17\45\17\226\4\245\4\77\17\175\4\175\4\47\7\74\1\74\1\74\1\74\1\109\17\141\17\3\3\17\3\74\1\22\4\74\1\74\1\78\1\173\17\164\3\74\1\74\1\182\3\237\3\205\17\74\1\62\8\33\8\237\17\13\18\
-    \\175\4\175\4\45\18\77\18\109\18\175\4\141\18\173\18\74\1\74\1\74\1\74\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\
-    \\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\
-    \\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\
-    \\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\223\0\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\215\0\205\1\0\1\0\1\0\1\
-    \\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\217\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\95\5\0\1\0\1\
-    \\21\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\74\1\0\1\0\1\29\1\74\1\74\1\74\1\74\1\74\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\163\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\
-    \\0\1\0\1\0\1\173\1\186\5\208\5"#
+    "\14\3\135\9\166\9\160\6\83\7\109\7\98\10\130\10\71\6\162\10\194\10\226\10\2\11\34\11\66\11\98\11\130\11\79\1\30\0\16\9\205\4\79\1\224\4\162\11\194\11\177\2\226\11\2\12\34\12\66\12\110\9\98\12\130\12\162\12\73\5\28\8\57\8\238\2\224\2\43\5\121\5\89\5\73\5\205\2\194\12\226\12\2\13\233\0\34\13\0\0\
+    \\0\5\121\5\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\209\0\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\
+    \\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\
+    \\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\201\0\79\1\79\1\79\1\215\3\79\1\66\13\196\9\98\13\130\13\162\13\194\13\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\
+    \\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\122\3\226\13\226\13\226\13\226\13\226\13\226\13\226\13\226\13\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\2\14\79\1\
+    \\145\2\225\7\79\1\252\7\34\14\66\14\220\1\98\14\27\4\130\14\162\14\51\7\79\1\194\14\226\14\89\8\2\15\34\15\66\15\223\5\243\5\228\9\98\15\130\15\162\15\194\15\226\15\79\2\2\16\34\16\66\16\188\1\137\0\98\16\130\16\162\16\112\1\194\16\79\1\79\1\79\1\7\4\247\3\144\1\153\1\153\1\153\1\153\1\153\1\153\1\
+    \\153\1\153\1\153\1\65\3\79\1\79\1\79\1\79\1\28\2\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\40\2\79\1\79\1\226\16\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\
+    \\153\1\153\1\153\1\2\17\153\1\153\1\153\1\153\1\153\1\153\1\79\1\79\1\34\17\57\0\153\1\81\0\105\0\35\10\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\25\7\79\1\79\1\79\1\79\1\66\17\167\0\153\1\153\1\
+    \\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\169\0\79\1\97\3\111\3\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\58\2\153\1\153\1\153\1\153\1\153\1\
+    \\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\7\1\121\5\98\17\100\6\130\17\162\17\194\17\226\17\2\18\172\5\191\5\34\18\121\5\121\5\193\7\153\1\153\1\153\1\153\1\45\3\66\18\154\3\168\3\153\1\100\4\173\4\153\1\157\1\98\18\59\4\153\1\153\1\77\4\132\4\130\18\153\1\149\8\120\8\162\18\194\18\
+    \\121\5\121\5\226\18\2\19\34\19\121\5\66\19\98\19\153\1\153\1\153\1\153\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\
+    \\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\
+    \\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\
+    \\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\47\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\39\1\111\2\79\1\79\1\79\1\
+    \\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\123\2\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\41\6\79\1\79\1\
+    \\100\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\153\1\79\1\79\1\108\1\153\1\153\1\153\1\153\1\153\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\242\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\79\1\
+    \\79\1\79\1\79\1\252\1\132\6\154\6"#
 
diff --git a/lib/Unicode/Internal/Char/UnicodeData/SimpleLowerCaseMapping.hs b/lib/Unicode/Internal/Char/UnicodeData/SimpleLowerCaseMapping.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/SimpleLowerCaseMapping.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/SimpleLowerCaseMapping.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.SimpleLowerCaseMapping
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -610,6 +610,7 @@
   '\5107' -> '\5115'
   '\5108' -> '\5116'
   '\5109' -> '\5117'
+  '\7305' -> '\7306'
   '\7312' -> '\4304'
   '\7313' -> '\4305'
   '\7314' -> '\4306'
@@ -1158,9 +1159,13 @@
   '\42950' -> '\7566'
   '\42951' -> '\42952'
   '\42953' -> '\42954'
+  '\42955' -> '\612'
+  '\42956' -> '\42957'
   '\42960' -> '\42961'
   '\42966' -> '\42967'
   '\42968' -> '\42969'
+  '\42970' -> '\42971'
+  '\42972' -> '\411'
   '\42997' -> '\42998'
   '\65313' -> '\65345'
   '\65314' -> '\65346'
@@ -1350,6 +1355,28 @@
   '\68784' -> '\68848'
   '\68785' -> '\68849'
   '\68786' -> '\68850'
+  '\68944' -> '\68976'
+  '\68945' -> '\68977'
+  '\68946' -> '\68978'
+  '\68947' -> '\68979'
+  '\68948' -> '\68980'
+  '\68949' -> '\68981'
+  '\68950' -> '\68982'
+  '\68951' -> '\68983'
+  '\68952' -> '\68984'
+  '\68953' -> '\68985'
+  '\68954' -> '\68986'
+  '\68955' -> '\68987'
+  '\68956' -> '\68988'
+  '\68957' -> '\68989'
+  '\68958' -> '\68990'
+  '\68959' -> '\68991'
+  '\68960' -> '\68992'
+  '\68961' -> '\68993'
+  '\68962' -> '\68994'
+  '\68963' -> '\68995'
+  '\68964' -> '\68996'
+  '\68965' -> '\68997'
   '\71840' -> '\71872'
   '\71841' -> '\71873'
   '\71842' -> '\71874'
diff --git a/lib/Unicode/Internal/Char/UnicodeData/SimpleTitleCaseMapping.hs b/lib/Unicode/Internal/Char/UnicodeData/SimpleTitleCaseMapping.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/SimpleTitleCaseMapping.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/SimpleTitleCaseMapping.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.SimpleTitleCaseMapping
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -145,6 +145,7 @@
   '\405' -> '\502'
   '\409' -> '\408'
   '\410' -> '\573'
+  '\411' -> '\42972'
   '\414' -> '\544'
   '\417' -> '\416'
   '\419' -> '\418'
@@ -239,6 +240,7 @@
   '\608' -> '\403'
   '\609' -> '\42924'
   '\611' -> '\404'
+  '\612' -> '\42955'
   '\613' -> '\42893'
   '\614' -> '\42922'
   '\616' -> '\407'
@@ -575,6 +577,7 @@
   '\7302' -> '\1066'
   '\7303' -> '\1122'
   '\7304' -> '\42570'
+  '\7306' -> '\7305'
   '\7545' -> '\42877'
   '\7549' -> '\11363'
   '\7566' -> '\42950'
@@ -1098,9 +1101,11 @@
   '\42947' -> '\42946'
   '\42952' -> '\42951'
   '\42954' -> '\42953'
+  '\42957' -> '\42956'
   '\42961' -> '\42960'
   '\42967' -> '\42966'
   '\42969' -> '\42968'
+  '\42971' -> '\42970'
   '\42998' -> '\42997'
   '\43859' -> '\42931'
   '\43888' -> '\5024'
@@ -1371,6 +1376,28 @@
   '\68848' -> '\68784'
   '\68849' -> '\68785'
   '\68850' -> '\68786'
+  '\68976' -> '\68944'
+  '\68977' -> '\68945'
+  '\68978' -> '\68946'
+  '\68979' -> '\68947'
+  '\68980' -> '\68948'
+  '\68981' -> '\68949'
+  '\68982' -> '\68950'
+  '\68983' -> '\68951'
+  '\68984' -> '\68952'
+  '\68985' -> '\68953'
+  '\68986' -> '\68954'
+  '\68987' -> '\68955'
+  '\68988' -> '\68956'
+  '\68989' -> '\68957'
+  '\68990' -> '\68958'
+  '\68991' -> '\68959'
+  '\68992' -> '\68960'
+  '\68993' -> '\68961'
+  '\68994' -> '\68962'
+  '\68995' -> '\68963'
+  '\68996' -> '\68964'
+  '\68997' -> '\68965'
   '\71872' -> '\71840'
   '\71873' -> '\71841'
   '\71874' -> '\71842'
diff --git a/lib/Unicode/Internal/Char/UnicodeData/SimpleUpperCaseMapping.hs b/lib/Unicode/Internal/Char/UnicodeData/SimpleUpperCaseMapping.hs
--- a/lib/Unicode/Internal/Char/UnicodeData/SimpleUpperCaseMapping.hs
+++ b/lib/Unicode/Internal/Char/UnicodeData/SimpleUpperCaseMapping.hs
@@ -1,4 +1,4 @@
--- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/UnicodeData.txt
+-- autogenerated from https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt
 -- |
 -- Module      : Unicode.Internal.Char.UnicodeData.SimpleUpperCaseMapping
 -- Copyright   : (c) 2020 Composewell Technologies and Contributors
@@ -145,6 +145,7 @@
   '\405' -> '\502'
   '\409' -> '\408'
   '\410' -> '\573'
+  '\411' -> '\42972'
   '\414' -> '\544'
   '\417' -> '\416'
   '\419' -> '\418'
@@ -235,6 +236,7 @@
   '\608' -> '\403'
   '\609' -> '\42924'
   '\611' -> '\404'
+  '\612' -> '\42955'
   '\613' -> '\42893'
   '\614' -> '\42922'
   '\616' -> '\407'
@@ -571,6 +573,7 @@
   '\7302' -> '\1066'
   '\7303' -> '\1122'
   '\7304' -> '\42570'
+  '\7306' -> '\7305'
   '\7545' -> '\42877'
   '\7549' -> '\11363'
   '\7566' -> '\42950'
@@ -1094,9 +1097,11 @@
   '\42947' -> '\42946'
   '\42952' -> '\42951'
   '\42954' -> '\42953'
+  '\42957' -> '\42956'
   '\42961' -> '\42960'
   '\42967' -> '\42966'
   '\42969' -> '\42968'
+  '\42971' -> '\42970'
   '\42998' -> '\42997'
   '\43859' -> '\42931'
   '\43888' -> '\5024'
@@ -1367,6 +1372,28 @@
   '\68848' -> '\68784'
   '\68849' -> '\68785'
   '\68850' -> '\68786'
+  '\68976' -> '\68944'
+  '\68977' -> '\68945'
+  '\68978' -> '\68946'
+  '\68979' -> '\68947'
+  '\68980' -> '\68948'
+  '\68981' -> '\68949'
+  '\68982' -> '\68950'
+  '\68983' -> '\68951'
+  '\68984' -> '\68952'
+  '\68985' -> '\68953'
+  '\68986' -> '\68954'
+  '\68987' -> '\68955'
+  '\68988' -> '\68956'
+  '\68989' -> '\68957'
+  '\68990' -> '\68958'
+  '\68991' -> '\68959'
+  '\68992' -> '\68960'
+  '\68993' -> '\68961'
+  '\68994' -> '\68962'
+  '\68995' -> '\68963'
+  '\68996' -> '\68964'
+  '\68997' -> '\68965'
   '\71872' -> '\71840'
   '\71873' -> '\71841'
   '\71874' -> '\71842'
diff --git a/lib/Unicode/Internal/Char/Version.hs b/lib/Unicode/Internal/Char/Version.hs
--- a/lib/Unicode/Internal/Char/Version.hs
+++ b/lib/Unicode/Internal/Char/Version.hs
@@ -13,8 +13,8 @@
 import Data.Version (Version, makeVersion)
 
 -- | Version of the Unicode standard used by this package:
--- [15.1.0](https://www.unicode.org/versions/Unicode15.1.0/).
+-- [16.0.0](https://www.unicode.org/versions/Unicode16.0.0/).
 --
 -- @since 0.3.0
 unicodeVersion :: Version
-unicodeVersion = makeVersion [15,1,0]
+unicodeVersion = makeVersion [16,0,0]
diff --git a/test/ICU/CharSpec.hs b/test/ICU/CharSpec.hs
--- a/test/ICU/CharSpec.hs
+++ b/test/ICU/CharSpec.hs
@@ -5,6 +5,8 @@
     ) where
 
 import Control.Applicative (Alternative(..))
+import Data.Bits (Bits(..))
+import qualified Data.Char as Char
 import Data.Foldable (traverse_)
 import Data.Version (showVersion, versionBranch)
 import Numeric (showHex)
@@ -35,6 +37,12 @@
     ourUnicodeVersion = versionBranch U.unicodeVersion
     theirUnicodeVersion = versionBranch ICU.unicodeVersion
     showCodePoint c = ("U+" ++) . fmap U.toUpper . showHex (U.ord c)
+    -- Check if the character is not assigned in exactly one Unicode version.
+    isUnassigned c = (U.generalCategory c == U.NotAssigned)
+               `xor` (ICU.toGeneralCategory (ICU.charType c) == Char.NotAssigned)
+    -- Check if the character has changed its general category
+    hasDifferentCategory c = fromEnum (U.generalCategory c)
+                          /= fromEnum (ICU.toGeneralCategory (ICU.charType c))
 
     -- There is no feature to display warnings other than `trace`, so
     -- hack our own:
@@ -61,8 +69,11 @@
             | n == nRef = acc
             -- Unicode version mismatch: char is not mapped in one of the libs:
             -- add warning.
-            | age' > ourUnicodeVersion || age' > theirUnicodeVersion
-            = acc{warnings=c : warnings acc}
+            | age' > ourUnicodeVersion || age' > theirUnicodeVersion ||
+              isUnassigned c
+            = acc{warnings=(c, Unassigned) : warnings acc}
+            | hasDifferentCategory c
+            = acc{warnings=(c, CategoryChange) : warnings acc}
             -- Error
             | otherwise =
                 let !msg = mconcat
@@ -75,14 +86,18 @@
             !nRef = fRef c
             age = ICU.charAge c
             age' = take 3 (versionBranch age)
-        mkWarning c = it (showCodePoint c "") . pendingWith $ mconcat
+        mkWarning (c, reason) = it (showCodePoint c "") . pendingWith $ mconcat
             [ "Incompatible ICU Unicode version: expected "
             , showVersion U.unicodeVersion
             , ", got: "
             , showVersion ICU.unicodeVersion
-            , " (ICU character age is: "
-            , showVersion (ICU.charAge c)
-            , ")" ]
+            , case reason of
+                Unassigned -> mconcat
+                    [ " (ICU character age is: "
+                    , showVersion (ICU.charAge c)
+                    , ")" ]
+                CategoryChange -> " (different general category)"
+            ]
 
 -- | Helper to compare our GeneralCategory to 'Data.Char.GeneralCategory'.
 data GeneralCategory = forall c. (Show c, Enum c) => GeneralCategory c
@@ -93,6 +108,12 @@
 instance Eq GeneralCategory where
     GeneralCategory a == GeneralCategory b = fromEnum a == fromEnum b
 
+data MismatchReason
+    = Unassigned
+    | CategoryChange
+
 -- | Warning accumulator
-data Acc = Acc { warnings :: ![Char], firstError :: !(Maybe String) }
+data Acc = Acc
+    { warnings :: ![(Char, MismatchReason)]
+    , firstError :: !(Maybe String) }
 
diff --git a/test/Unicode/CharSpec.hs b/test/Unicode/CharSpec.hs
--- a/test/Unicode/CharSpec.hs
+++ b/test/Unicode/CharSpec.hs
@@ -182,7 +182,7 @@
       UChar.isUpperCase `shouldBeEqualToV` Char.isUpperCase
 #endif
     it "toLower" do
-      UChar.toLower `shouldBeEqualToV` Char.toLower
+      UChar.toLower `shouldBeEqualToV'` Char.toLower
     let caseCheck f (c, cs) = c `shouldSatisfy` (== cs) . f
     describe "toLowerString" do
         it "Examples" do
@@ -203,7 +203,7 @@
                     in cf == foldMap UChar.toLowerString cf
             traverse_ check [minBound..maxBound]
     it "toUpper" do
-      UChar.toUpper `shouldBeEqualToV` Char.toUpper
+      UChar.toUpper `shouldBeEqualToV'` Char.toUpper
     describe "toUpperString" do
         it "Examples" do
             let examples = [ ('\0', "\0")
@@ -224,7 +224,7 @@
                     in cf == foldMap UChar.toUpperString cf
             traverse_ check [minBound..maxBound]
     it "toTitle" do
-      UChar.toTitle `shouldBeEqualToV` Char.toTitle
+      UChar.toTitle `shouldBeEqualToV'` Char.toTitle
     describe "toTitleString" do
         it "Examples" do
             let examples = [ ('\0', "\0")
@@ -287,7 +287,7 @@
     -- If we use `pendingWith` then the whole test is pending, not just
     -- the assertion.
     shouldBeEqualToV
-        :: forall b. (HasCallStack) => (Eq b, Show b)
+        :: forall b. (HasCallStack, Eq b, Show b)
         => (Char -> b)
         -> (Char -> b)
         -> IO ()
@@ -295,8 +295,25 @@
         let same x = f x == g x
         in traverse_ (`shouldSatisfyV` same) [minBound..maxBound]
 
+    -- This adds an additional fallback depending on the resulting characters
+    shouldBeEqualToV'
+        :: (HasCallStack)
+        => (Char -> Char)
+        -> (Char -> Char)
+        -> IO ()
+    shouldBeEqualToV' f g =
+        let same x = f x == g x
+        in traverse_ (\c -> shouldSatisfyV' c (Just (f, g)) same) [minBound..maxBound]
+
     shouldSatisfyV :: (HasCallStack) => Char -> (Char -> Bool) -> IO ()
-    shouldSatisfyV c h
+    shouldSatisfyV = (`shouldSatisfyV'` Nothing)
+
+    shouldSatisfyV' :: (HasCallStack)
+                    => Char
+                    -> Maybe (Char -> Char, Char -> Char)
+                    -> (Char -> Bool)
+                    -> IO ()
+    shouldSatisfyV' c cs h
         | hasSameUnicodeVersion = shouldSatisfy c h
         | h c = pure ()
         | not hasGhcUnicodeVersion = traceM . mconcat $
@@ -313,6 +330,15 @@
             [ "[WARNING] Cannot test ", show c
             , ": incompatible Unicode version (different general category)."
             , " Expected "
+            , showVersion UChar.unicodeVersion
+            , ", but got: "
+            , showVersion unicodeVersion ]
+        -- In case we compared 2 functions (Char -> Char),
+        -- skip if one of the resulting char is unassigned.
+        | Just (f, g) <- cs, let c1 = f c, let c2 = g c
+        , isUnassigned c1 || isUnassigned c2 = traceM . mconcat $
+            [ "[WARNING] Cannot test ", show c
+            , ": incompatible Unicode version (unassigned mapped char). Expected "
             , showVersion UChar.unicodeVersion
             , ", but got: "
             , showVersion unicodeVersion ]
diff --git a/unicode-data.cabal b/unicode-data.cabal
--- a/unicode-data.cabal
+++ b/unicode-data.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                unicode-data
-version:             0.6.0
+version:             0.7.0
 synopsis:            Access Unicode Character Database (UCD)
 description:
   @unicode-data@ provides Haskell APIs to efficiently access the
@@ -9,7 +9,7 @@
   .
   The Haskell data structures are generated programmatically from the UCD files.
   The latest Unicode version supported by this library is
-  @<https://www.unicode.org/versions/Unicode15.1.0/ 15.1.0>@.
+  @<https://www.unicode.org/versions/Unicode16.0.0/ 16.0.0>@.
 homepage:            http://github.com/composewell/unicode-data
 bug-reports:         https://github.com/composewell/unicode-data/issues
 license:             Apache-2.0
@@ -20,8 +20,7 @@
 category:            Data,Text,Unicode
 stability:           Experimental
 build-type:          Simple
-tested-with:         GHC==8.0.2
-                   , GHC==8.2.2
+tested-with:         GHC==8.2.2
                    , GHC==8.4.4
                    , GHC==8.6.5
                    , GHC==8.8.4
@@ -30,8 +29,9 @@
                    , GHC==9.2.8
                    , GHC==9.4.8
                    , GHC==9.6.5
-                   , GHC==9.8.2
-                   , GHC==9.10.1
+                   , GHC==9.8.4
+                   , GHC==9.10.2
+                   , GHC==9.12.2
 
 extra-doc-files:
     Changelog.md
@@ -118,7 +118,7 @@
   hs-source-dirs: lib
   ghc-options: -O2
   build-depends:
-      base >=4.7 && < 4.21
+      base >=4.7 && < 4.23
   if impl(ghc < 9.0)
     -- Required for unpackCString#
     build-depends: ghc-prim
@@ -132,7 +132,7 @@
   other-modules:
       Unicode.CharSpec
   build-depends:
-      base             >= 4.7   && < 4.21
+      base             >= 4.7   && < 4.23
     , hspec            >= 2.0   && < 2.12
     , unicode-data
   if flag(dev-has-icu)
@@ -159,9 +159,9 @@
     Unicode.Char.NumericBench
     Unicode.Char.Numeric.CompatBench
   build-depends:
-    base        >= 4.7   && < 4.21,
+    base        >= 4.7   && < 4.23,
     deepseq     >= 1.1   && < 1.6,
-    tasty-bench >= 0.2.5 && < 0.4,
+    tasty-bench >= 0.2.5 && < 0.5,
     tasty       >= 1.4.1 && < 1.6,
     unicode-data
   if impl(ghc < 9.0)
