1/*
2* Copyright (C) 2017-2019 Apple Inc. All rights reserved.
3*
4* Redistribution and use in source and binary forms, with or without
5* modification, are permitted provided that the following conditions
6* are met:
7*
8* 1. Redistributions of source code must retain the above copyright
9* notice, this list of conditions and the following disclaimer.
10* 2. Redistributions in binary form must reproduce the above copyright
11* notice, this list of conditions and the following disclaimer in the
12* documentation and/or other materials provided with the distribution.
13*
14* THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24*/
25
26// DO NO EDIT! - This file was generated by /home/user/data/webkitgtk-2.25.2/Source/JavaScriptCore/yarr/generateYarrUnicodePropertyTables.py
27static std::unique_ptr<CharacterClass> createCharacterClass0()
28{
29 // Name = Any, number of codePoints: 1114112
30 auto characterClass = std::make_unique<CharacterClass>(
31 std::initializer_list<UChar32>({}),
32 std::initializer_list<CharacterRange>({{0x00, 0x7f}}),
33 std::initializer_list<UChar32>({}),
34 std::initializer_list<CharacterRange>({{0x0080, 0x10ffff}}),
35 CharacterClassWidths::HasBothBMPAndNonBMP);
36 return characterClass;
37}
38
39static std::unique_ptr<CharacterClass> createCharacterClass1()
40{
41 // Name = ASCII, number of codePoints: 128
42 auto characterClass = std::make_unique<CharacterClass>(
43 std::initializer_list<UChar32>({}),
44 std::initializer_list<CharacterRange>({{0x00, 0x7f}}),
45 std::initializer_list<UChar32>({}),
46 std::initializer_list<CharacterRange>({}),
47 CharacterClassWidths::HasBMPChars);
48 return characterClass;
49}
50
51static std::unique_ptr<CharacterClass> createCharacterClass2()
52{
53 // Name = Assigned, number of codePoints: 276955
54 auto characterClass = std::make_unique<CharacterClass>(
55 std::initializer_list<UChar32>({}),
56 std::initializer_list<CharacterRange>({{0x00, 0x7f}}),
57 std::initializer_list<UChar32>({0x038c, 0x085e, 0x09b2, 0x09d7, 0x0a3c, 0x0a51, 0x0a5e, 0x0ad0,
58 0x0b9c, 0x0bd0, 0x0bd7, 0x0cde, 0x0dbd, 0x0dca, 0x0dd6, 0x0e84,
59 0x0e8a, 0x0e8d, 0x0ea5, 0x0ea7, 0x0ec6, 0x10c7, 0x10cd, 0x1258,
60 0x12c0, 0x1940, 0x1f59, 0x1f5b, 0x1f5d, 0x2d27, 0x2d2d, 0xfb3e,
61 0xfeff, 0x101a0, 0x1056f, 0x10808, 0x1083c, 0x1093f, 0x110cd, 0x11288,
62 0x11350, 0x11357, 0x1145b, 0x118ff, 0x11d3a, 0x1d4a2, 0x1d4bb, 0x1d546,
63 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42, 0x1ee47, 0x1ee49, 0x1ee4b,
64 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d, 0x1ee5f, 0x1ee64, 0x1ee7e,
65 0x1f97a, 0xe0001}),
66 std::initializer_list<CharacterRange>({{0x0080, 0x0377}, {0x037a, 0x037f}, {0x0384, 0x038a}, {0x038e, 0x03a1},
67 {0x03a3, 0x052f}, {0x0531, 0x0556}, {0x0559, 0x058a}, {0x058d, 0x058f},
68 {0x0591, 0x05c7}, {0x05d0, 0x05ea}, {0x05ef, 0x05f4}, {0x0600, 0x061c},
69 {0x061e, 0x070d}, {0x070f, 0x074a}, {0x074d, 0x07b1}, {0x07c0, 0x07fa},
70 {0x07fd, 0x082d}, {0x0830, 0x083e}, {0x0840, 0x085b}, {0x0860, 0x086a},
71 {0x08a0, 0x08b4}, {0x08b6, 0x08bd}, {0x08d3, 0x0983}, {0x0985, 0x098c},
72 {0x098f, 0x0990}, {0x0993, 0x09a8}, {0x09aa, 0x09b0}, {0x09b6, 0x09b9},
73 {0x09bc, 0x09c4}, {0x09c7, 0x09c8}, {0x09cb, 0x09ce}, {0x09dc, 0x09dd},
74 {0x09df, 0x09e3}, {0x09e6, 0x09fe}, {0x0a01, 0x0a03}, {0x0a05, 0x0a0a},
75 {0x0a0f, 0x0a10}, {0x0a13, 0x0a28}, {0x0a2a, 0x0a30}, {0x0a32, 0x0a33},
76 {0x0a35, 0x0a36}, {0x0a38, 0x0a39}, {0x0a3e, 0x0a42}, {0x0a47, 0x0a48},
77 {0x0a4b, 0x0a4d}, {0x0a59, 0x0a5c}, {0x0a66, 0x0a76}, {0x0a81, 0x0a83},
78 {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91}, {0x0a93, 0x0aa8}, {0x0aaa, 0x0ab0},
79 {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9}, {0x0abc, 0x0ac5}, {0x0ac7, 0x0ac9},
80 {0x0acb, 0x0acd}, {0x0ae0, 0x0ae3}, {0x0ae6, 0x0af1}, {0x0af9, 0x0aff},
81 {0x0b01, 0x0b03}, {0x0b05, 0x0b0c}, {0x0b0f, 0x0b10}, {0x0b13, 0x0b28},
82 {0x0b2a, 0x0b30}, {0x0b32, 0x0b33}, {0x0b35, 0x0b39}, {0x0b3c, 0x0b44},
83 {0x0b47, 0x0b48}, {0x0b4b, 0x0b4d}, {0x0b56, 0x0b57}, {0x0b5c, 0x0b5d},
84 {0x0b5f, 0x0b63}, {0x0b66, 0x0b77}, {0x0b82, 0x0b83}, {0x0b85, 0x0b8a},
85 {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a}, {0x0b9e, 0x0b9f},
86 {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9}, {0x0bbe, 0x0bc2},
87 {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcd}, {0x0be6, 0x0bfa}, {0x0c00, 0x0c0c},
88 {0x0c0e, 0x0c10}, {0x0c12, 0x0c28}, {0x0c2a, 0x0c39}, {0x0c3d, 0x0c44},
89 {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56}, {0x0c58, 0x0c5a},
90 {0x0c60, 0x0c63}, {0x0c66, 0x0c6f}, {0x0c78, 0x0c8c}, {0x0c8e, 0x0c90},
91 {0x0c92, 0x0ca8}, {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9}, {0x0cbc, 0x0cc4},
92 {0x0cc6, 0x0cc8}, {0x0cca, 0x0ccd}, {0x0cd5, 0x0cd6}, {0x0ce0, 0x0ce3},
93 {0x0ce6, 0x0cef}, {0x0cf1, 0x0cf2}, {0x0d00, 0x0d03}, {0x0d05, 0x0d0c},
94 {0x0d0e, 0x0d10}, {0x0d12, 0x0d44}, {0x0d46, 0x0d48}, {0x0d4a, 0x0d4f},
95 {0x0d54, 0x0d63}, {0x0d66, 0x0d7f}, {0x0d82, 0x0d83}, {0x0d85, 0x0d96},
96 {0x0d9a, 0x0db1}, {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6}, {0x0dcf, 0x0dd4},
97 {0x0dd8, 0x0ddf}, {0x0de6, 0x0def}, {0x0df2, 0x0df4}, {0x0e01, 0x0e3a},
98 {0x0e3f, 0x0e5b}, {0x0e81, 0x0e82}, {0x0e87, 0x0e88}, {0x0e94, 0x0e97},
99 {0x0e99, 0x0e9f}, {0x0ea1, 0x0ea3}, {0x0eaa, 0x0eab}, {0x0ead, 0x0eb9},
100 {0x0ebb, 0x0ebd}, {0x0ec0, 0x0ec4}, {0x0ec8, 0x0ecd}, {0x0ed0, 0x0ed9},
101 {0x0edc, 0x0edf}, {0x0f00, 0x0f47}, {0x0f49, 0x0f6c}, {0x0f71, 0x0f97},
102 {0x0f99, 0x0fbc}, {0x0fbe, 0x0fcc}, {0x0fce, 0x0fda}, {0x1000, 0x10c5},
103 {0x10d0, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256}, {0x125a, 0x125d},
104 {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5},
105 {0x12b8, 0x12be}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310},
106 {0x1312, 0x1315}, {0x1318, 0x135a}, {0x135d, 0x137c}, {0x1380, 0x1399},
107 {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1400, 0x169c}, {0x16a0, 0x16f8},
108 {0x1700, 0x170c}, {0x170e, 0x1714}, {0x1720, 0x1736}, {0x1740, 0x1753},
109 {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1772, 0x1773}, {0x1780, 0x17dd},
110 {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1800, 0x180e}, {0x1810, 0x1819},
111 {0x1820, 0x1878}, {0x1880, 0x18aa}, {0x18b0, 0x18f5}, {0x1900, 0x191e},
112 {0x1920, 0x192b}, {0x1930, 0x193b}, {0x1944, 0x196d}, {0x1970, 0x1974},
113 {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x19d0, 0x19da}, {0x19de, 0x1a1b},
114 {0x1a1e, 0x1a5e}, {0x1a60, 0x1a7c}, {0x1a7f, 0x1a89}, {0x1a90, 0x1a99},
115 {0x1aa0, 0x1aad}, {0x1ab0, 0x1abe}, {0x1b00, 0x1b4b}, {0x1b50, 0x1b7c},
116 {0x1b80, 0x1bf3}, {0x1bfc, 0x1c37}, {0x1c3b, 0x1c49}, {0x1c4d, 0x1c88},
117 {0x1c90, 0x1cba}, {0x1cbd, 0x1cc7}, {0x1cd0, 0x1cf9}, {0x1d00, 0x1df9},
118 {0x1dfb, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d},
119 {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fc4},
120 {0x1fc6, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fdd, 0x1fef}, {0x1ff2, 0x1ff4},
121 {0x1ff6, 0x1ffe}, {0x2000, 0x2064}, {0x2066, 0x2071}, {0x2074, 0x208e},
122 {0x2090, 0x209c}, {0x20a0, 0x20bf}, {0x20d0, 0x20f0}, {0x2100, 0x218b},
123 {0x2190, 0x2426}, {0x2440, 0x244a}, {0x2460, 0x2b73}, {0x2b76, 0x2b95},
124 {0x2b98, 0x2bc8}, {0x2bca, 0x2bfe}, {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e},
125 {0x2c60, 0x2cf3}, {0x2cf9, 0x2d25}, {0x2d30, 0x2d67}, {0x2d6f, 0x2d70},
126 {0x2d7f, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6},
127 {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6},
128 {0x2dd8, 0x2dde}, {0x2de0, 0x2e4e}, {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3},
129 {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3000, 0x303f}, {0x3041, 0x3096},
130 {0x3099, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e}, {0x3190, 0x31ba},
131 {0x31c0, 0x31e3}, {0x31f0, 0x321e}, {0x3220, 0x32fe}, {0x3300, 0x4db5},
132 {0x4dc0, 0x9fef}, {0xa000, 0xa48c}, {0xa490, 0xa4c6}, {0xa4d0, 0xa62b},
133 {0xa640, 0xa6f7}, {0xa700, 0xa7b9}, {0xa7f7, 0xa82b}, {0xa830, 0xa839},
134 {0xa840, 0xa877}, {0xa880, 0xa8c5}, {0xa8ce, 0xa8d9}, {0xa8e0, 0xa953},
135 {0xa95f, 0xa97c}, {0xa980, 0xa9cd}, {0xa9cf, 0xa9d9}, {0xa9de, 0xa9fe},
136 {0xaa00, 0xaa36}, {0xaa40, 0xaa4d}, {0xaa50, 0xaa59}, {0xaa5c, 0xaac2},
137 {0xaadb, 0xaaf6}, {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16},
138 {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab65}, {0xab70, 0xabed},
139 {0xabf0, 0xabf9}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb},
140 {0xd800, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
141 {0xfb1d, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44},
142 {0xfb46, 0xfbc1}, {0xfbd3, 0xfd3f}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7},
143 {0xfdf0, 0xfdfd}, {0xfe00, 0xfe19}, {0xfe20, 0xfe52}, {0xfe54, 0xfe66},
144 {0xfe68, 0xfe6b}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff01, 0xffbe},
145 {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc},
146 {0xffe0, 0xffe6}, {0xffe8, 0xffee}, {0xfff9, 0xfffd}, {0x10000, 0x1000b},
147 {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
148 {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10100, 0x10102}, {0x10107, 0x10133},
149 {0x10137, 0x1018e}, {0x10190, 0x1019b}, {0x101d0, 0x101fd}, {0x10280, 0x1029c},
150 {0x102a0, 0x102d0}, {0x102e0, 0x102fb}, {0x10300, 0x10323}, {0x1032d, 0x1034a},
151 {0x10350, 0x1037a}, {0x10380, 0x1039d}, {0x1039f, 0x103c3}, {0x103c8, 0x103d5},
152 {0x10400, 0x1049d}, {0x104a0, 0x104a9}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb},
153 {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10600, 0x10736}, {0x10740, 0x10755},
154 {0x10760, 0x10767}, {0x10800, 0x10805}, {0x1080a, 0x10835}, {0x10837, 0x10838},
155 {0x1083f, 0x10855}, {0x10857, 0x1089e}, {0x108a7, 0x108af}, {0x108e0, 0x108f2},
156 {0x108f4, 0x108f5}, {0x108fb, 0x1091b}, {0x1091f, 0x10939}, {0x10980, 0x109b7},
157 {0x109bc, 0x109cf}, {0x109d2, 0x10a03}, {0x10a05, 0x10a06}, {0x10a0c, 0x10a13},
158 {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a38, 0x10a3a}, {0x10a3f, 0x10a48},
159 {0x10a50, 0x10a58}, {0x10a60, 0x10a9f}, {0x10ac0, 0x10ae6}, {0x10aeb, 0x10af6},
160 {0x10b00, 0x10b35}, {0x10b39, 0x10b55}, {0x10b58, 0x10b72}, {0x10b78, 0x10b91},
161 {0x10b99, 0x10b9c}, {0x10ba9, 0x10baf}, {0x10c00, 0x10c48}, {0x10c80, 0x10cb2},
162 {0x10cc0, 0x10cf2}, {0x10cfa, 0x10d27}, {0x10d30, 0x10d39}, {0x10e60, 0x10e7e},
163 {0x10f00, 0x10f27}, {0x10f30, 0x10f59}, {0x11000, 0x1104d}, {0x11052, 0x1106f},
164 {0x1107f, 0x110c1}, {0x110d0, 0x110e8}, {0x110f0, 0x110f9}, {0x11100, 0x11134},
165 {0x11136, 0x11146}, {0x11150, 0x11176}, {0x11180, 0x111cd}, {0x111d0, 0x111df},
166 {0x111e1, 0x111f4}, {0x11200, 0x11211}, {0x11213, 0x1123e}, {0x11280, 0x11286},
167 {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a9}, {0x112b0, 0x112ea},
168 {0x112f0, 0x112f9}, {0x11300, 0x11303}, {0x11305, 0x1130c}, {0x1130f, 0x11310},
169 {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339},
170 {0x1133b, 0x11344}, {0x11347, 0x11348}, {0x1134b, 0x1134d}, {0x1135d, 0x11363},
171 {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11400, 0x11459}, {0x1145d, 0x1145e},
172 {0x11480, 0x114c7}, {0x114d0, 0x114d9}, {0x11580, 0x115b5}, {0x115b8, 0x115dd},
173 {0x11600, 0x11644}, {0x11650, 0x11659}, {0x11660, 0x1166c}, {0x11680, 0x116b7},
174 {0x116c0, 0x116c9}, {0x11700, 0x1171a}, {0x1171d, 0x1172b}, {0x11730, 0x1173f},
175 {0x11800, 0x1183b}, {0x118a0, 0x118f2}, {0x11a00, 0x11a47}, {0x11a50, 0x11a83},
176 {0x11a86, 0x11aa2}, {0x11ac0, 0x11af8}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c36},
177 {0x11c38, 0x11c45}, {0x11c50, 0x11c6c}, {0x11c70, 0x11c8f}, {0x11c92, 0x11ca7},
178 {0x11ca9, 0x11cb6}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09}, {0x11d0b, 0x11d36},
179 {0x11d3c, 0x11d3d}, {0x11d3f, 0x11d47}, {0x11d50, 0x11d59}, {0x11d60, 0x11d65},
180 {0x11d67, 0x11d68}, {0x11d6a, 0x11d8e}, {0x11d90, 0x11d91}, {0x11d93, 0x11d98},
181 {0x11da0, 0x11da9}, {0x11ee0, 0x11ef8}, {0x12000, 0x12399}, {0x12400, 0x1246e},
182 {0x12470, 0x12474}, {0x12480, 0x12543}, {0x13000, 0x1342e}, {0x14400, 0x14646},
183 {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, {0x16a60, 0x16a69}, {0x16a6e, 0x16a6f},
184 {0x16ad0, 0x16aed}, {0x16af0, 0x16af5}, {0x16b00, 0x16b45}, {0x16b50, 0x16b59},
185 {0x16b5b, 0x16b61}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16e40, 0x16e9a},
186 {0x16f00, 0x16f44}, {0x16f50, 0x16f7e}, {0x16f8f, 0x16f9f}, {0x16fe0, 0x16fe1},
187 {0x17000, 0x187f1}, {0x18800, 0x18af2}, {0x1b000, 0x1b11e}, {0x1b170, 0x1b2fb},
188 {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99},
189 {0x1bc9c, 0x1bca3}, {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d129, 0x1d1e8},
190 {0x1d200, 0x1d245}, {0x1d2e0, 0x1d2f3}, {0x1d300, 0x1d356}, {0x1d360, 0x1d378},
191 {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6},
192 {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505},
193 {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539},
194 {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5},
195 {0x1d6a8, 0x1d7cb}, {0x1d7ce, 0x1da8b}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf},
196 {0x1e000, 0x1e006}, {0x1e008, 0x1e018}, {0x1e01b, 0x1e021}, {0x1e023, 0x1e024},
197 {0x1e026, 0x1e02a}, {0x1e800, 0x1e8c4}, {0x1e8c7, 0x1e8d6}, {0x1e900, 0x1e94a},
198 {0x1e950, 0x1e959}, {0x1e95e, 0x1e95f}, {0x1ec71, 0x1ecb4}, {0x1ee00, 0x1ee03},
199 {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37},
200 {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a},
201 {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89},
202 {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb},
203 {0x1eef0, 0x1eef1}, {0x1f000, 0x1f02b}, {0x1f030, 0x1f093}, {0x1f0a0, 0x1f0ae},
204 {0x1f0b1, 0x1f0bf}, {0x1f0c1, 0x1f0cf}, {0x1f0d1, 0x1f0f5}, {0x1f100, 0x1f10c},
205 {0x1f110, 0x1f16b}, {0x1f170, 0x1f1ac}, {0x1f1e6, 0x1f202}, {0x1f210, 0x1f23b},
206 {0x1f240, 0x1f248}, {0x1f250, 0x1f251}, {0x1f260, 0x1f265}, {0x1f300, 0x1f6d4},
207 {0x1f6e0, 0x1f6ec}, {0x1f6f0, 0x1f6f9}, {0x1f700, 0x1f773}, {0x1f780, 0x1f7d8},
208 {0x1f800, 0x1f80b}, {0x1f810, 0x1f847}, {0x1f850, 0x1f859}, {0x1f860, 0x1f887},
209 {0x1f890, 0x1f8ad}, {0x1f900, 0x1f90b}, {0x1f910, 0x1f93e}, {0x1f940, 0x1f970},
210 {0x1f973, 0x1f976}, {0x1f97c, 0x1f9a2}, {0x1f9b0, 0x1f9b9}, {0x1f9c0, 0x1f9c2},
211 {0x1f9d0, 0x1f9ff}, {0x1fa60, 0x1fa6d}, {0x20000, 0x2a6d6}, {0x2a700, 0x2b734},
212 {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}, {0x2f800, 0x2fa1d},
213 {0xe0020, 0xe007f}, {0xe0100, 0xe01ef}, {0xf0000, 0xffffd}, {0x100000, 0x10fffd}}),
214 CharacterClassWidths::HasBothBMPAndNonBMP);
215 return characterClass;
216}
217
218static std::unique_ptr<CharacterClass> createCharacterClass3()
219{
220 // Name = Other, number of codePoints: 976890
221 auto characterClass = std::make_unique<CharacterClass>(
222 std::initializer_list<UChar32>({0x7f}),
223 std::initializer_list<CharacterRange>({{0x00, 0x1f}}),
224 std::initializer_list<UChar32>({0x00ad, 0x038b, 0x038d, 0x03a2, 0x0530, 0x0590, 0x06dd, 0x083f,
225 0x085f, 0x08b5, 0x08e2, 0x0984, 0x09a9, 0x09b1, 0x09de, 0x0a04,
226 0x0a29, 0x0a31, 0x0a34, 0x0a37, 0x0a3d, 0x0a5d, 0x0a84, 0x0a8e,
227 0x0a92, 0x0aa9, 0x0ab1, 0x0ab4, 0x0ac6, 0x0aca, 0x0b00, 0x0b04,
228 0x0b29, 0x0b31, 0x0b34, 0x0b5e, 0x0b84, 0x0b91, 0x0b9b, 0x0b9d,
229 0x0bc9, 0x0c0d, 0x0c11, 0x0c29, 0x0c45, 0x0c49, 0x0c57, 0x0c8d,
230 0x0c91, 0x0ca9, 0x0cb4, 0x0cc5, 0x0cc9, 0x0cdf, 0x0cf0, 0x0d04,
231 0x0d0d, 0x0d11, 0x0d45, 0x0d49, 0x0d84, 0x0db2, 0x0dbc, 0x0dd5,
232 0x0dd7, 0x0e83, 0x0e89, 0x0e98, 0x0ea0, 0x0ea4, 0x0ea6, 0x0eac,
233 0x0eba, 0x0ec5, 0x0ec7, 0x0f48, 0x0f98, 0x0fbd, 0x0fcd, 0x10c6,
234 0x1249, 0x1257, 0x1259, 0x1289, 0x12b1, 0x12bf, 0x12c1, 0x12d7,
235 0x1311, 0x170d, 0x176d, 0x1771, 0x191f, 0x1a5f, 0x1dfa, 0x1f58,
236 0x1f5a, 0x1f5c, 0x1f5e, 0x1fb5, 0x1fc5, 0x1fdc, 0x1ff5, 0x1fff,
237 0x208f, 0x2bc9, 0x2bff, 0x2c2f, 0x2c5f, 0x2d26, 0x2da7, 0x2daf,
238 0x2db7, 0x2dbf, 0x2dc7, 0x2dcf, 0x2dd7, 0x2ddf, 0x2e9a, 0x3040,
239 0x3130, 0x318f, 0x321f, 0x32ff, 0xa9ce, 0xa9ff, 0xab27, 0xab2f,
240 0xfb37, 0xfb3d, 0xfb3f, 0xfb42, 0xfb45, 0xfe53, 0xfe67, 0xfe75,
241 0xffe7, 0x1000c, 0x10027, 0x1003b, 0x1003e, 0x1018f, 0x1039e, 0x10809,
242 0x10836, 0x10856, 0x108f3, 0x10a04, 0x10a14, 0x10a18, 0x110bd, 0x11135,
243 0x111e0, 0x11212, 0x11287, 0x11289, 0x1128e, 0x1129e, 0x11304, 0x11329,
244 0x11331, 0x11334, 0x1133a, 0x1145a, 0x1145c, 0x11c09, 0x11c37, 0x11ca8,
245 0x11d07, 0x11d0a, 0x11d3b, 0x11d3e, 0x11d66, 0x11d69, 0x11d8f, 0x11d92,
246 0x1246f, 0x16a5f, 0x16b5a, 0x16b62, 0x1d455, 0x1d49d, 0x1d4ad, 0x1d4ba,
247 0x1d4bc, 0x1d4c4, 0x1d506, 0x1d515, 0x1d51d, 0x1d53a, 0x1d53f, 0x1d545,
248 0x1d551, 0x1daa0, 0x1e007, 0x1e022, 0x1e025, 0x1ee04, 0x1ee20, 0x1ee23,
249 0x1ee28, 0x1ee33, 0x1ee38, 0x1ee3a, 0x1ee48, 0x1ee4a, 0x1ee4c, 0x1ee50,
250 0x1ee53, 0x1ee58, 0x1ee5a, 0x1ee5c, 0x1ee5e, 0x1ee60, 0x1ee63, 0x1ee6b,
251 0x1ee73, 0x1ee78, 0x1ee7d, 0x1ee7f, 0x1ee8a, 0x1eea4, 0x1eeaa, 0x1f0c0,
252 0x1f0d0, 0x1f93f, 0x1f97b}),
253 std::initializer_list<CharacterRange>({{0x0080, 0x009f}, {0x0378, 0x0379}, {0x0380, 0x0383}, {0x0557, 0x0558},
254 {0x058b, 0x058c}, {0x05c8, 0x05cf}, {0x05eb, 0x05ee}, {0x05f5, 0x0605},
255 {0x061c, 0x061d}, {0x070e, 0x070f}, {0x074b, 0x074c}, {0x07b2, 0x07bf},
256 {0x07fb, 0x07fc}, {0x082e, 0x082f}, {0x085c, 0x085d}, {0x086b, 0x089f},
257 {0x08be, 0x08d2}, {0x098d, 0x098e}, {0x0991, 0x0992}, {0x09b3, 0x09b5},
258 {0x09ba, 0x09bb}, {0x09c5, 0x09c6}, {0x09c9, 0x09ca}, {0x09cf, 0x09d6},
259 {0x09d8, 0x09db}, {0x09e4, 0x09e5}, {0x09ff, 0x0a00}, {0x0a0b, 0x0a0e},
260 {0x0a11, 0x0a12}, {0x0a3a, 0x0a3b}, {0x0a43, 0x0a46}, {0x0a49, 0x0a4a},
261 {0x0a4e, 0x0a50}, {0x0a52, 0x0a58}, {0x0a5f, 0x0a65}, {0x0a77, 0x0a80},
262 {0x0aba, 0x0abb}, {0x0ace, 0x0acf}, {0x0ad1, 0x0adf}, {0x0ae4, 0x0ae5},
263 {0x0af2, 0x0af8}, {0x0b0d, 0x0b0e}, {0x0b11, 0x0b12}, {0x0b3a, 0x0b3b},
264 {0x0b45, 0x0b46}, {0x0b49, 0x0b4a}, {0x0b4e, 0x0b55}, {0x0b58, 0x0b5b},
265 {0x0b64, 0x0b65}, {0x0b78, 0x0b81}, {0x0b8b, 0x0b8d}, {0x0b96, 0x0b98},
266 {0x0ba0, 0x0ba2}, {0x0ba5, 0x0ba7}, {0x0bab, 0x0bad}, {0x0bba, 0x0bbd},
267 {0x0bc3, 0x0bc5}, {0x0bce, 0x0bcf}, {0x0bd1, 0x0bd6}, {0x0bd8, 0x0be5},
268 {0x0bfb, 0x0bff}, {0x0c3a, 0x0c3c}, {0x0c4e, 0x0c54}, {0x0c5b, 0x0c5f},
269 {0x0c64, 0x0c65}, {0x0c70, 0x0c77}, {0x0cba, 0x0cbb}, {0x0cce, 0x0cd4},
270 {0x0cd7, 0x0cdd}, {0x0ce4, 0x0ce5}, {0x0cf3, 0x0cff}, {0x0d50, 0x0d53},
271 {0x0d64, 0x0d65}, {0x0d80, 0x0d81}, {0x0d97, 0x0d99}, {0x0dbe, 0x0dbf},
272 {0x0dc7, 0x0dc9}, {0x0dcb, 0x0dce}, {0x0de0, 0x0de5}, {0x0df0, 0x0df1},
273 {0x0df5, 0x0e00}, {0x0e3b, 0x0e3e}, {0x0e5c, 0x0e80}, {0x0e85, 0x0e86},
274 {0x0e8b, 0x0e8c}, {0x0e8e, 0x0e93}, {0x0ea8, 0x0ea9}, {0x0ebe, 0x0ebf},
275 {0x0ece, 0x0ecf}, {0x0eda, 0x0edb}, {0x0ee0, 0x0eff}, {0x0f6d, 0x0f70},
276 {0x0fdb, 0x0fff}, {0x10c8, 0x10cc}, {0x10ce, 0x10cf}, {0x124e, 0x124f},
277 {0x125e, 0x125f}, {0x128e, 0x128f}, {0x12b6, 0x12b7}, {0x12c6, 0x12c7},
278 {0x1316, 0x1317}, {0x135b, 0x135c}, {0x137d, 0x137f}, {0x139a, 0x139f},
279 {0x13f6, 0x13f7}, {0x13fe, 0x13ff}, {0x169d, 0x169f}, {0x16f9, 0x16ff},
280 {0x1715, 0x171f}, {0x1737, 0x173f}, {0x1754, 0x175f}, {0x1774, 0x177f},
281 {0x17de, 0x17df}, {0x17ea, 0x17ef}, {0x17fa, 0x17ff}, {0x180e, 0x180f},
282 {0x181a, 0x181f}, {0x1879, 0x187f}, {0x18ab, 0x18af}, {0x18f6, 0x18ff},
283 {0x192c, 0x192f}, {0x193c, 0x193f}, {0x1941, 0x1943}, {0x196e, 0x196f},
284 {0x1975, 0x197f}, {0x19ac, 0x19af}, {0x19ca, 0x19cf}, {0x19db, 0x19dd},
285 {0x1a1c, 0x1a1d}, {0x1a7d, 0x1a7e}, {0x1a8a, 0x1a8f}, {0x1a9a, 0x1a9f},
286 {0x1aae, 0x1aaf}, {0x1abf, 0x1aff}, {0x1b4c, 0x1b4f}, {0x1b7d, 0x1b7f},
287 {0x1bf4, 0x1bfb}, {0x1c38, 0x1c3a}, {0x1c4a, 0x1c4c}, {0x1c89, 0x1c8f},
288 {0x1cbb, 0x1cbc}, {0x1cc8, 0x1ccf}, {0x1cfa, 0x1cff}, {0x1f16, 0x1f17},
289 {0x1f1e, 0x1f1f}, {0x1f46, 0x1f47}, {0x1f4e, 0x1f4f}, {0x1f7e, 0x1f7f},
290 {0x1fd4, 0x1fd5}, {0x1ff0, 0x1ff1}, {0x200b, 0x200f}, {0x202a, 0x202e},
291 {0x2060, 0x206f}, {0x2072, 0x2073}, {0x209d, 0x209f}, {0x20c0, 0x20cf},
292 {0x20f1, 0x20ff}, {0x218c, 0x218f}, {0x2427, 0x243f}, {0x244b, 0x245f},
293 {0x2b74, 0x2b75}, {0x2b96, 0x2b97}, {0x2cf4, 0x2cf8}, {0x2d28, 0x2d2c},
294 {0x2d2e, 0x2d2f}, {0x2d68, 0x2d6e}, {0x2d71, 0x2d7e}, {0x2d97, 0x2d9f},
295 {0x2e4f, 0x2e7f}, {0x2ef4, 0x2eff}, {0x2fd6, 0x2fef}, {0x2ffc, 0x2fff},
296 {0x3097, 0x3098}, {0x3100, 0x3104}, {0x31bb, 0x31bf}, {0x31e4, 0x31ef},
297 {0x4db6, 0x4dbf}, {0x9ff0, 0x9fff}, {0xa48d, 0xa48f}, {0xa4c7, 0xa4cf},
298 {0xa62c, 0xa63f}, {0xa6f8, 0xa6ff}, {0xa7ba, 0xa7f6}, {0xa82c, 0xa82f},
299 {0xa83a, 0xa83f}, {0xa878, 0xa87f}, {0xa8c6, 0xa8cd}, {0xa8da, 0xa8df},
300 {0xa954, 0xa95e}, {0xa97d, 0xa97f}, {0xa9da, 0xa9dd}, {0xaa37, 0xaa3f},
301 {0xaa4e, 0xaa4f}, {0xaa5a, 0xaa5b}, {0xaac3, 0xaada}, {0xaaf7, 0xab00},
302 {0xab07, 0xab08}, {0xab0f, 0xab10}, {0xab17, 0xab1f}, {0xab66, 0xab6f},
303 {0xabee, 0xabef}, {0xabfa, 0xabff}, {0xd7a4, 0xd7af}, {0xd7c7, 0xd7ca},
304 {0xd7fc, 0xf8ff}, {0xfa6e, 0xfa6f}, {0xfada, 0xfaff}, {0xfb07, 0xfb12},
305 {0xfb18, 0xfb1c}, {0xfbc2, 0xfbd2}, {0xfd40, 0xfd4f}, {0xfd90, 0xfd91},
306 {0xfdc8, 0xfdef}, {0xfdfe, 0xfdff}, {0xfe1a, 0xfe1f}, {0xfe6c, 0xfe6f},
307 {0xfefd, 0xff00}, {0xffbf, 0xffc1}, {0xffc8, 0xffc9}, {0xffd0, 0xffd1},
308 {0xffd8, 0xffd9}, {0xffdd, 0xffdf}, {0xffef, 0xfffb}, {0xfffe, 0xffff},
309 {0x1004e, 0x1004f}, {0x1005e, 0x1007f}, {0x100fb, 0x100ff}, {0x10103, 0x10106},
310 {0x10134, 0x10136}, {0x1019c, 0x1019f}, {0x101a1, 0x101cf}, {0x101fe, 0x1027f},
311 {0x1029d, 0x1029f}, {0x102d1, 0x102df}, {0x102fc, 0x102ff}, {0x10324, 0x1032c},
312 {0x1034b, 0x1034f}, {0x1037b, 0x1037f}, {0x103c4, 0x103c7}, {0x103d6, 0x103ff},
313 {0x1049e, 0x1049f}, {0x104aa, 0x104af}, {0x104d4, 0x104d7}, {0x104fc, 0x104ff},
314 {0x10528, 0x1052f}, {0x10564, 0x1056e}, {0x10570, 0x105ff}, {0x10737, 0x1073f},
315 {0x10756, 0x1075f}, {0x10768, 0x107ff}, {0x10806, 0x10807}, {0x10839, 0x1083b},
316 {0x1083d, 0x1083e}, {0x1089f, 0x108a6}, {0x108b0, 0x108df}, {0x108f6, 0x108fa},
317 {0x1091c, 0x1091e}, {0x1093a, 0x1093e}, {0x10940, 0x1097f}, {0x109b8, 0x109bb},
318 {0x109d0, 0x109d1}, {0x10a07, 0x10a0b}, {0x10a36, 0x10a37}, {0x10a3b, 0x10a3e},
319 {0x10a49, 0x10a4f}, {0x10a59, 0x10a5f}, {0x10aa0, 0x10abf}, {0x10ae7, 0x10aea},
320 {0x10af7, 0x10aff}, {0x10b36, 0x10b38}, {0x10b56, 0x10b57}, {0x10b73, 0x10b77},
321 {0x10b92, 0x10b98}, {0x10b9d, 0x10ba8}, {0x10bb0, 0x10bff}, {0x10c49, 0x10c7f},
322 {0x10cb3, 0x10cbf}, {0x10cf3, 0x10cf9}, {0x10d28, 0x10d2f}, {0x10d3a, 0x10e5f},
323 {0x10e7f, 0x10eff}, {0x10f28, 0x10f2f}, {0x10f5a, 0x10fff}, {0x1104e, 0x11051},
324 {0x11070, 0x1107e}, {0x110c2, 0x110cf}, {0x110e9, 0x110ef}, {0x110fa, 0x110ff},
325 {0x11147, 0x1114f}, {0x11177, 0x1117f}, {0x111ce, 0x111cf}, {0x111f5, 0x111ff},
326 {0x1123f, 0x1127f}, {0x112aa, 0x112af}, {0x112eb, 0x112ef}, {0x112fa, 0x112ff},
327 {0x1130d, 0x1130e}, {0x11311, 0x11312}, {0x11345, 0x11346}, {0x11349, 0x1134a},
328 {0x1134e, 0x1134f}, {0x11351, 0x11356}, {0x11358, 0x1135c}, {0x11364, 0x11365},
329 {0x1136d, 0x1136f}, {0x11375, 0x113ff}, {0x1145f, 0x1147f}, {0x114c8, 0x114cf},
330 {0x114da, 0x1157f}, {0x115b6, 0x115b7}, {0x115de, 0x115ff}, {0x11645, 0x1164f},
331 {0x1165a, 0x1165f}, {0x1166d, 0x1167f}, {0x116b8, 0x116bf}, {0x116ca, 0x116ff},
332 {0x1171b, 0x1171c}, {0x1172c, 0x1172f}, {0x11740, 0x117ff}, {0x1183c, 0x1189f},
333 {0x118f3, 0x118fe}, {0x11900, 0x119ff}, {0x11a48, 0x11a4f}, {0x11a84, 0x11a85},
334 {0x11aa3, 0x11abf}, {0x11af9, 0x11bff}, {0x11c46, 0x11c4f}, {0x11c6d, 0x11c6f},
335 {0x11c90, 0x11c91}, {0x11cb7, 0x11cff}, {0x11d37, 0x11d39}, {0x11d48, 0x11d4f},
336 {0x11d5a, 0x11d5f}, {0x11d99, 0x11d9f}, {0x11daa, 0x11edf}, {0x11ef9, 0x11fff},
337 {0x1239a, 0x123ff}, {0x12475, 0x1247f}, {0x12544, 0x12fff}, {0x1342f, 0x143ff},
338 {0x14647, 0x167ff}, {0x16a39, 0x16a3f}, {0x16a6a, 0x16a6d}, {0x16a70, 0x16acf},
339 {0x16aee, 0x16aef}, {0x16af6, 0x16aff}, {0x16b46, 0x16b4f}, {0x16b78, 0x16b7c},
340 {0x16b90, 0x16e3f}, {0x16e9b, 0x16eff}, {0x16f45, 0x16f4f}, {0x16f7f, 0x16f8e},
341 {0x16fa0, 0x16fdf}, {0x16fe2, 0x16fff}, {0x187f2, 0x187ff}, {0x18af3, 0x1afff},
342 {0x1b11f, 0x1b16f}, {0x1b2fc, 0x1bbff}, {0x1bc6b, 0x1bc6f}, {0x1bc7d, 0x1bc7f},
343 {0x1bc89, 0x1bc8f}, {0x1bc9a, 0x1bc9b}, {0x1bca0, 0x1cfff}, {0x1d0f6, 0x1d0ff},
344 {0x1d127, 0x1d128}, {0x1d173, 0x1d17a}, {0x1d1e9, 0x1d1ff}, {0x1d246, 0x1d2df},
345 {0x1d2f4, 0x1d2ff}, {0x1d357, 0x1d35f}, {0x1d379, 0x1d3ff}, {0x1d4a0, 0x1d4a1},
346 {0x1d4a3, 0x1d4a4}, {0x1d4a7, 0x1d4a8}, {0x1d50b, 0x1d50c}, {0x1d547, 0x1d549},
347 {0x1d6a6, 0x1d6a7}, {0x1d7cc, 0x1d7cd}, {0x1da8c, 0x1da9a}, {0x1dab0, 0x1dfff},
348 {0x1e019, 0x1e01a}, {0x1e02b, 0x1e7ff}, {0x1e8c5, 0x1e8c6}, {0x1e8d7, 0x1e8ff},
349 {0x1e94b, 0x1e94f}, {0x1e95a, 0x1e95d}, {0x1e960, 0x1ec70}, {0x1ecb5, 0x1edff},
350 {0x1ee25, 0x1ee26}, {0x1ee3c, 0x1ee41}, {0x1ee43, 0x1ee46}, {0x1ee55, 0x1ee56},
351 {0x1ee65, 0x1ee66}, {0x1ee9c, 0x1eea0}, {0x1eebc, 0x1eeef}, {0x1eef2, 0x1efff},
352 {0x1f02c, 0x1f02f}, {0x1f094, 0x1f09f}, {0x1f0af, 0x1f0b0}, {0x1f0f6, 0x1f0ff},
353 {0x1f10d, 0x1f10f}, {0x1f16c, 0x1f16f}, {0x1f1ad, 0x1f1e5}, {0x1f203, 0x1f20f},
354 {0x1f23c, 0x1f23f}, {0x1f249, 0x1f24f}, {0x1f252, 0x1f25f}, {0x1f266, 0x1f2ff},
355 {0x1f6d5, 0x1f6df}, {0x1f6ed, 0x1f6ef}, {0x1f6fa, 0x1f6ff}, {0x1f774, 0x1f77f},
356 {0x1f7d9, 0x1f7ff}, {0x1f80c, 0x1f80f}, {0x1f848, 0x1f84f}, {0x1f85a, 0x1f85f},
357 {0x1f888, 0x1f88f}, {0x1f8ae, 0x1f8ff}, {0x1f90c, 0x1f90f}, {0x1f971, 0x1f972},
358 {0x1f977, 0x1f979}, {0x1f9a3, 0x1f9af}, {0x1f9ba, 0x1f9bf}, {0x1f9c3, 0x1f9cf},
359 {0x1fa00, 0x1fa5f}, {0x1fa6e, 0x1ffff}, {0x2a6d7, 0x2a6ff}, {0x2b735, 0x2b73f},
360 {0x2b81e, 0x2b81f}, {0x2cea2, 0x2ceaf}, {0x2ebe1, 0x2f7ff}, {0x2fa1e, 0xe00ff},
361 {0xe01f0, 0x10ffff}}),
362 CharacterClassWidths::HasBothBMPAndNonBMP);
363 return characterClass;
364}
365
366static std::unique_ptr<CharacterClass> createCharacterClass4()
367{
368 // Name = Unassigned, number of codePoints: 837157
369 auto characterClass = std::make_unique<CharacterClass>(
370 std::initializer_list<UChar32>({}),
371 std::initializer_list<CharacterRange>({}),
372 std::initializer_list<UChar32>({0x038b, 0x038d, 0x03a2, 0x0530, 0x0590, 0x061d, 0x070e, 0x083f,
373 0x085f, 0x08b5, 0x0984, 0x09a9, 0x09b1, 0x09de, 0x0a04, 0x0a29,
374 0x0a31, 0x0a34, 0x0a37, 0x0a3d, 0x0a5d, 0x0a84, 0x0a8e, 0x0a92,
375 0x0aa9, 0x0ab1, 0x0ab4, 0x0ac6, 0x0aca, 0x0b00, 0x0b04, 0x0b29,
376 0x0b31, 0x0b34, 0x0b5e, 0x0b84, 0x0b91, 0x0b9b, 0x0b9d, 0x0bc9,
377 0x0c0d, 0x0c11, 0x0c29, 0x0c45, 0x0c49, 0x0c57, 0x0c8d, 0x0c91,
378 0x0ca9, 0x0cb4, 0x0cc5, 0x0cc9, 0x0cdf, 0x0cf0, 0x0d04, 0x0d0d,
379 0x0d11, 0x0d45, 0x0d49, 0x0d84, 0x0db2, 0x0dbc, 0x0dd5, 0x0dd7,
380 0x0e83, 0x0e89, 0x0e98, 0x0ea0, 0x0ea4, 0x0ea6, 0x0eac, 0x0eba,
381 0x0ec5, 0x0ec7, 0x0f48, 0x0f98, 0x0fbd, 0x0fcd, 0x10c6, 0x1249,
382 0x1257, 0x1259, 0x1289, 0x12b1, 0x12bf, 0x12c1, 0x12d7, 0x1311,
383 0x170d, 0x176d, 0x1771, 0x180f, 0x191f, 0x1a5f, 0x1dfa, 0x1f58,
384 0x1f5a, 0x1f5c, 0x1f5e, 0x1fb5, 0x1fc5, 0x1fdc, 0x1ff5, 0x1fff,
385 0x2065, 0x208f, 0x2bc9, 0x2bff, 0x2c2f, 0x2c5f, 0x2d26, 0x2da7,
386 0x2daf, 0x2db7, 0x2dbf, 0x2dc7, 0x2dcf, 0x2dd7, 0x2ddf, 0x2e9a,
387 0x3040, 0x3130, 0x318f, 0x321f, 0x32ff, 0xa9ce, 0xa9ff, 0xab27,
388 0xab2f, 0xfb37, 0xfb3d, 0xfb3f, 0xfb42, 0xfb45, 0xfe53, 0xfe67,
389 0xfe75, 0xff00, 0xffe7, 0x1000c, 0x10027, 0x1003b, 0x1003e, 0x1018f,
390 0x1039e, 0x10809, 0x10836, 0x10856, 0x108f3, 0x10a04, 0x10a14, 0x10a18,
391 0x11135, 0x111e0, 0x11212, 0x11287, 0x11289, 0x1128e, 0x1129e, 0x11304,
392 0x11329, 0x11331, 0x11334, 0x1133a, 0x1145a, 0x1145c, 0x11c09, 0x11c37,
393 0x11ca8, 0x11d07, 0x11d0a, 0x11d3b, 0x11d3e, 0x11d66, 0x11d69, 0x11d8f,
394 0x11d92, 0x1246f, 0x16a5f, 0x16b5a, 0x16b62, 0x1d455, 0x1d49d, 0x1d4ad,
395 0x1d4ba, 0x1d4bc, 0x1d4c4, 0x1d506, 0x1d515, 0x1d51d, 0x1d53a, 0x1d53f,
396 0x1d545, 0x1d551, 0x1daa0, 0x1e007, 0x1e022, 0x1e025, 0x1ee04, 0x1ee20,
397 0x1ee23, 0x1ee28, 0x1ee33, 0x1ee38, 0x1ee3a, 0x1ee48, 0x1ee4a, 0x1ee4c,
398 0x1ee50, 0x1ee53, 0x1ee58, 0x1ee5a, 0x1ee5c, 0x1ee5e, 0x1ee60, 0x1ee63,
399 0x1ee6b, 0x1ee73, 0x1ee78, 0x1ee7d, 0x1ee7f, 0x1ee8a, 0x1eea4, 0x1eeaa,
400 0x1f0c0, 0x1f0d0, 0x1f93f, 0x1f97b}),
401 std::initializer_list<CharacterRange>({{0x0378, 0x0379}, {0x0380, 0x0383}, {0x0557, 0x0558}, {0x058b, 0x058c},
402 {0x05c8, 0x05cf}, {0x05eb, 0x05ee}, {0x05f5, 0x05ff}, {0x074b, 0x074c},
403 {0x07b2, 0x07bf}, {0x07fb, 0x07fc}, {0x082e, 0x082f}, {0x085c, 0x085d},
404 {0x086b, 0x089f}, {0x08be, 0x08d2}, {0x098d, 0x098e}, {0x0991, 0x0992},
405 {0x09b3, 0x09b5}, {0x09ba, 0x09bb}, {0x09c5, 0x09c6}, {0x09c9, 0x09ca},
406 {0x09cf, 0x09d6}, {0x09d8, 0x09db}, {0x09e4, 0x09e5}, {0x09ff, 0x0a00},
407 {0x0a0b, 0x0a0e}, {0x0a11, 0x0a12}, {0x0a3a, 0x0a3b}, {0x0a43, 0x0a46},
408 {0x0a49, 0x0a4a}, {0x0a4e, 0x0a50}, {0x0a52, 0x0a58}, {0x0a5f, 0x0a65},
409 {0x0a77, 0x0a80}, {0x0aba, 0x0abb}, {0x0ace, 0x0acf}, {0x0ad1, 0x0adf},
410 {0x0ae4, 0x0ae5}, {0x0af2, 0x0af8}, {0x0b0d, 0x0b0e}, {0x0b11, 0x0b12},
411 {0x0b3a, 0x0b3b}, {0x0b45, 0x0b46}, {0x0b49, 0x0b4a}, {0x0b4e, 0x0b55},
412 {0x0b58, 0x0b5b}, {0x0b64, 0x0b65}, {0x0b78, 0x0b81}, {0x0b8b, 0x0b8d},
413 {0x0b96, 0x0b98}, {0x0ba0, 0x0ba2}, {0x0ba5, 0x0ba7}, {0x0bab, 0x0bad},
414 {0x0bba, 0x0bbd}, {0x0bc3, 0x0bc5}, {0x0bce, 0x0bcf}, {0x0bd1, 0x0bd6},
415 {0x0bd8, 0x0be5}, {0x0bfb, 0x0bff}, {0x0c3a, 0x0c3c}, {0x0c4e, 0x0c54},
416 {0x0c5b, 0x0c5f}, {0x0c64, 0x0c65}, {0x0c70, 0x0c77}, {0x0cba, 0x0cbb},
417 {0x0cce, 0x0cd4}, {0x0cd7, 0x0cdd}, {0x0ce4, 0x0ce5}, {0x0cf3, 0x0cff},
418 {0x0d50, 0x0d53}, {0x0d64, 0x0d65}, {0x0d80, 0x0d81}, {0x0d97, 0x0d99},
419 {0x0dbe, 0x0dbf}, {0x0dc7, 0x0dc9}, {0x0dcb, 0x0dce}, {0x0de0, 0x0de5},
420 {0x0df0, 0x0df1}, {0x0df5, 0x0e00}, {0x0e3b, 0x0e3e}, {0x0e5c, 0x0e80},
421 {0x0e85, 0x0e86}, {0x0e8b, 0x0e8c}, {0x0e8e, 0x0e93}, {0x0ea8, 0x0ea9},
422 {0x0ebe, 0x0ebf}, {0x0ece, 0x0ecf}, {0x0eda, 0x0edb}, {0x0ee0, 0x0eff},
423 {0x0f6d, 0x0f70}, {0x0fdb, 0x0fff}, {0x10c8, 0x10cc}, {0x10ce, 0x10cf},
424 {0x124e, 0x124f}, {0x125e, 0x125f}, {0x128e, 0x128f}, {0x12b6, 0x12b7},
425 {0x12c6, 0x12c7}, {0x1316, 0x1317}, {0x135b, 0x135c}, {0x137d, 0x137f},
426 {0x139a, 0x139f}, {0x13f6, 0x13f7}, {0x13fe, 0x13ff}, {0x169d, 0x169f},
427 {0x16f9, 0x16ff}, {0x1715, 0x171f}, {0x1737, 0x173f}, {0x1754, 0x175f},
428 {0x1774, 0x177f}, {0x17de, 0x17df}, {0x17ea, 0x17ef}, {0x17fa, 0x17ff},
429 {0x181a, 0x181f}, {0x1879, 0x187f}, {0x18ab, 0x18af}, {0x18f6, 0x18ff},
430 {0x192c, 0x192f}, {0x193c, 0x193f}, {0x1941, 0x1943}, {0x196e, 0x196f},
431 {0x1975, 0x197f}, {0x19ac, 0x19af}, {0x19ca, 0x19cf}, {0x19db, 0x19dd},
432 {0x1a1c, 0x1a1d}, {0x1a7d, 0x1a7e}, {0x1a8a, 0x1a8f}, {0x1a9a, 0x1a9f},
433 {0x1aae, 0x1aaf}, {0x1abf, 0x1aff}, {0x1b4c, 0x1b4f}, {0x1b7d, 0x1b7f},
434 {0x1bf4, 0x1bfb}, {0x1c38, 0x1c3a}, {0x1c4a, 0x1c4c}, {0x1c89, 0x1c8f},
435 {0x1cbb, 0x1cbc}, {0x1cc8, 0x1ccf}, {0x1cfa, 0x1cff}, {0x1f16, 0x1f17},
436 {0x1f1e, 0x1f1f}, {0x1f46, 0x1f47}, {0x1f4e, 0x1f4f}, {0x1f7e, 0x1f7f},
437 {0x1fd4, 0x1fd5}, {0x1ff0, 0x1ff1}, {0x2072, 0x2073}, {0x209d, 0x209f},
438 {0x20c0, 0x20cf}, {0x20f1, 0x20ff}, {0x218c, 0x218f}, {0x2427, 0x243f},
439 {0x244b, 0x245f}, {0x2b74, 0x2b75}, {0x2b96, 0x2b97}, {0x2cf4, 0x2cf8},
440 {0x2d28, 0x2d2c}, {0x2d2e, 0x2d2f}, {0x2d68, 0x2d6e}, {0x2d71, 0x2d7e},
441 {0x2d97, 0x2d9f}, {0x2e4f, 0x2e7f}, {0x2ef4, 0x2eff}, {0x2fd6, 0x2fef},
442 {0x2ffc, 0x2fff}, {0x3097, 0x3098}, {0x3100, 0x3104}, {0x31bb, 0x31bf},
443 {0x31e4, 0x31ef}, {0x4db6, 0x4dbf}, {0x9ff0, 0x9fff}, {0xa48d, 0xa48f},
444 {0xa4c7, 0xa4cf}, {0xa62c, 0xa63f}, {0xa6f8, 0xa6ff}, {0xa7ba, 0xa7f6},
445 {0xa82c, 0xa82f}, {0xa83a, 0xa83f}, {0xa878, 0xa87f}, {0xa8c6, 0xa8cd},
446 {0xa8da, 0xa8df}, {0xa954, 0xa95e}, {0xa97d, 0xa97f}, {0xa9da, 0xa9dd},
447 {0xaa37, 0xaa3f}, {0xaa4e, 0xaa4f}, {0xaa5a, 0xaa5b}, {0xaac3, 0xaada},
448 {0xaaf7, 0xab00}, {0xab07, 0xab08}, {0xab0f, 0xab10}, {0xab17, 0xab1f},
449 {0xab66, 0xab6f}, {0xabee, 0xabef}, {0xabfa, 0xabff}, {0xd7a4, 0xd7af},
450 {0xd7c7, 0xd7ca}, {0xd7fc, 0xd7ff}, {0xfa6e, 0xfa6f}, {0xfada, 0xfaff},
451 {0xfb07, 0xfb12}, {0xfb18, 0xfb1c}, {0xfbc2, 0xfbd2}, {0xfd40, 0xfd4f},
452 {0xfd90, 0xfd91}, {0xfdc8, 0xfdef}, {0xfdfe, 0xfdff}, {0xfe1a, 0xfe1f},
453 {0xfe6c, 0xfe6f}, {0xfefd, 0xfefe}, {0xffbf, 0xffc1}, {0xffc8, 0xffc9},
454 {0xffd0, 0xffd1}, {0xffd8, 0xffd9}, {0xffdd, 0xffdf}, {0xffef, 0xfff8},
455 {0xfffe, 0xffff}, {0x1004e, 0x1004f}, {0x1005e, 0x1007f}, {0x100fb, 0x100ff},
456 {0x10103, 0x10106}, {0x10134, 0x10136}, {0x1019c, 0x1019f}, {0x101a1, 0x101cf},
457 {0x101fe, 0x1027f}, {0x1029d, 0x1029f}, {0x102d1, 0x102df}, {0x102fc, 0x102ff},
458 {0x10324, 0x1032c}, {0x1034b, 0x1034f}, {0x1037b, 0x1037f}, {0x103c4, 0x103c7},
459 {0x103d6, 0x103ff}, {0x1049e, 0x1049f}, {0x104aa, 0x104af}, {0x104d4, 0x104d7},
460 {0x104fc, 0x104ff}, {0x10528, 0x1052f}, {0x10564, 0x1056e}, {0x10570, 0x105ff},
461 {0x10737, 0x1073f}, {0x10756, 0x1075f}, {0x10768, 0x107ff}, {0x10806, 0x10807},
462 {0x10839, 0x1083b}, {0x1083d, 0x1083e}, {0x1089f, 0x108a6}, {0x108b0, 0x108df},
463 {0x108f6, 0x108fa}, {0x1091c, 0x1091e}, {0x1093a, 0x1093e}, {0x10940, 0x1097f},
464 {0x109b8, 0x109bb}, {0x109d0, 0x109d1}, {0x10a07, 0x10a0b}, {0x10a36, 0x10a37},
465 {0x10a3b, 0x10a3e}, {0x10a49, 0x10a4f}, {0x10a59, 0x10a5f}, {0x10aa0, 0x10abf},
466 {0x10ae7, 0x10aea}, {0x10af7, 0x10aff}, {0x10b36, 0x10b38}, {0x10b56, 0x10b57},
467 {0x10b73, 0x10b77}, {0x10b92, 0x10b98}, {0x10b9d, 0x10ba8}, {0x10bb0, 0x10bff},
468 {0x10c49, 0x10c7f}, {0x10cb3, 0x10cbf}, {0x10cf3, 0x10cf9}, {0x10d28, 0x10d2f},
469 {0x10d3a, 0x10e5f}, {0x10e7f, 0x10eff}, {0x10f28, 0x10f2f}, {0x10f5a, 0x10fff},
470 {0x1104e, 0x11051}, {0x11070, 0x1107e}, {0x110c2, 0x110cc}, {0x110ce, 0x110cf},
471 {0x110e9, 0x110ef}, {0x110fa, 0x110ff}, {0x11147, 0x1114f}, {0x11177, 0x1117f},
472 {0x111ce, 0x111cf}, {0x111f5, 0x111ff}, {0x1123f, 0x1127f}, {0x112aa, 0x112af},
473 {0x112eb, 0x112ef}, {0x112fa, 0x112ff}, {0x1130d, 0x1130e}, {0x11311, 0x11312},
474 {0x11345, 0x11346}, {0x11349, 0x1134a}, {0x1134e, 0x1134f}, {0x11351, 0x11356},
475 {0x11358, 0x1135c}, {0x11364, 0x11365}, {0x1136d, 0x1136f}, {0x11375, 0x113ff},
476 {0x1145f, 0x1147f}, {0x114c8, 0x114cf}, {0x114da, 0x1157f}, {0x115b6, 0x115b7},
477 {0x115de, 0x115ff}, {0x11645, 0x1164f}, {0x1165a, 0x1165f}, {0x1166d, 0x1167f},
478 {0x116b8, 0x116bf}, {0x116ca, 0x116ff}, {0x1171b, 0x1171c}, {0x1172c, 0x1172f},
479 {0x11740, 0x117ff}, {0x1183c, 0x1189f}, {0x118f3, 0x118fe}, {0x11900, 0x119ff},
480 {0x11a48, 0x11a4f}, {0x11a84, 0x11a85}, {0x11aa3, 0x11abf}, {0x11af9, 0x11bff},
481 {0x11c46, 0x11c4f}, {0x11c6d, 0x11c6f}, {0x11c90, 0x11c91}, {0x11cb7, 0x11cff},
482 {0x11d37, 0x11d39}, {0x11d48, 0x11d4f}, {0x11d5a, 0x11d5f}, {0x11d99, 0x11d9f},
483 {0x11daa, 0x11edf}, {0x11ef9, 0x11fff}, {0x1239a, 0x123ff}, {0x12475, 0x1247f},
484 {0x12544, 0x12fff}, {0x1342f, 0x143ff}, {0x14647, 0x167ff}, {0x16a39, 0x16a3f},
485 {0x16a6a, 0x16a6d}, {0x16a70, 0x16acf}, {0x16aee, 0x16aef}, {0x16af6, 0x16aff},
486 {0x16b46, 0x16b4f}, {0x16b78, 0x16b7c}, {0x16b90, 0x16e3f}, {0x16e9b, 0x16eff},
487 {0x16f45, 0x16f4f}, {0x16f7f, 0x16f8e}, {0x16fa0, 0x16fdf}, {0x16fe2, 0x16fff},
488 {0x187f2, 0x187ff}, {0x18af3, 0x1afff}, {0x1b11f, 0x1b16f}, {0x1b2fc, 0x1bbff},
489 {0x1bc6b, 0x1bc6f}, {0x1bc7d, 0x1bc7f}, {0x1bc89, 0x1bc8f}, {0x1bc9a, 0x1bc9b},
490 {0x1bca4, 0x1cfff}, {0x1d0f6, 0x1d0ff}, {0x1d127, 0x1d128}, {0x1d1e9, 0x1d1ff},
491 {0x1d246, 0x1d2df}, {0x1d2f4, 0x1d2ff}, {0x1d357, 0x1d35f}, {0x1d379, 0x1d3ff},
492 {0x1d4a0, 0x1d4a1}, {0x1d4a3, 0x1d4a4}, {0x1d4a7, 0x1d4a8}, {0x1d50b, 0x1d50c},
493 {0x1d547, 0x1d549}, {0x1d6a6, 0x1d6a7}, {0x1d7cc, 0x1d7cd}, {0x1da8c, 0x1da9a},
494 {0x1dab0, 0x1dfff}, {0x1e019, 0x1e01a}, {0x1e02b, 0x1e7ff}, {0x1e8c5, 0x1e8c6},
495 {0x1e8d7, 0x1e8ff}, {0x1e94b, 0x1e94f}, {0x1e95a, 0x1e95d}, {0x1e960, 0x1ec70},
496 {0x1ecb5, 0x1edff}, {0x1ee25, 0x1ee26}, {0x1ee3c, 0x1ee41}, {0x1ee43, 0x1ee46},
497 {0x1ee55, 0x1ee56}, {0x1ee65, 0x1ee66}, {0x1ee9c, 0x1eea0}, {0x1eebc, 0x1eeef},
498 {0x1eef2, 0x1efff}, {0x1f02c, 0x1f02f}, {0x1f094, 0x1f09f}, {0x1f0af, 0x1f0b0},
499 {0x1f0f6, 0x1f0ff}, {0x1f10d, 0x1f10f}, {0x1f16c, 0x1f16f}, {0x1f1ad, 0x1f1e5},
500 {0x1f203, 0x1f20f}, {0x1f23c, 0x1f23f}, {0x1f249, 0x1f24f}, {0x1f252, 0x1f25f},
501 {0x1f266, 0x1f2ff}, {0x1f6d5, 0x1f6df}, {0x1f6ed, 0x1f6ef}, {0x1f6fa, 0x1f6ff},
502 {0x1f774, 0x1f77f}, {0x1f7d9, 0x1f7ff}, {0x1f80c, 0x1f80f}, {0x1f848, 0x1f84f},
503 {0x1f85a, 0x1f85f}, {0x1f888, 0x1f88f}, {0x1f8ae, 0x1f8ff}, {0x1f90c, 0x1f90f},
504 {0x1f971, 0x1f972}, {0x1f977, 0x1f979}, {0x1f9a3, 0x1f9af}, {0x1f9ba, 0x1f9bf},
505 {0x1f9c3, 0x1f9cf}, {0x1fa00, 0x1fa5f}, {0x1fa6e, 0x1ffff}, {0x2a6d7, 0x2a6ff},
506 {0x2b735, 0x2b73f}, {0x2b81e, 0x2b81f}, {0x2cea2, 0x2ceaf}, {0x2ebe1, 0x2f7ff},
507 {0x2fa1e, 0xe0000}, {0xe0002, 0xe001f}, {0xe0080, 0xe00ff}, {0xe01f0, 0xeffff},
508 {0xffffe, 0xfffff}, {0x10fffe, 0x10ffff}}),
509 CharacterClassWidths::HasBothBMPAndNonBMP);
510 return characterClass;
511}
512
513static std::unique_ptr<CharacterClass> createCharacterClass5()
514{
515 // Name = Letter, number of codePoints: 125419
516 auto characterClass = std::make_unique<CharacterClass>(
517 std::initializer_list<UChar32>({}),
518 std::initializer_list<CharacterRange>({{0x41, 0x5a}, {0x61, 0x7a}}),
519 std::initializer_list<UChar32>({0x00aa, 0x00b5, 0x00ba, 0x02ec, 0x02ee, 0x037f, 0x0386, 0x038c,
520 0x0559, 0x06d5, 0x06ff, 0x0710, 0x07b1, 0x07fa, 0x081a, 0x0824,
521 0x0828, 0x093d, 0x0950, 0x09b2, 0x09bd, 0x09ce, 0x09fc, 0x0a5e,
522 0x0abd, 0x0ad0, 0x0af9, 0x0b3d, 0x0b71, 0x0b83, 0x0b9c, 0x0bd0,
523 0x0c3d, 0x0c80, 0x0cbd, 0x0cde, 0x0d3d, 0x0d4e, 0x0dbd, 0x0e84,
524 0x0e8a, 0x0e8d, 0x0ea5, 0x0ea7, 0x0ebd, 0x0ec6, 0x0f00, 0x103f,
525 0x1061, 0x108e, 0x10c7, 0x10cd, 0x1258, 0x12c0, 0x17d7, 0x17dc,
526 0x18aa, 0x1aa7, 0x1f59, 0x1f5b, 0x1f5d, 0x1fbe, 0x2071, 0x207f,
527 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214e, 0x2d27,
528 0x2d2d, 0x2d6f, 0x2e2f, 0xa8fb, 0xa9cf, 0xaa7a, 0xaab1, 0xaac0,
529 0xaac2, 0xfb1d, 0xfb3e, 0x10808, 0x1083c, 0x10a00, 0x10f27, 0x11144,
530 0x11176, 0x111da, 0x111dc, 0x11288, 0x1133d, 0x11350, 0x114c7, 0x11644,
531 0x118ff, 0x11a00, 0x11a3a, 0x11a50, 0x11a9d, 0x11c40, 0x11d46, 0x11d98,
532 0x16f50, 0x1d4a2, 0x1d4bb, 0x1d546, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b,
533 0x1ee42, 0x1ee47, 0x1ee49, 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b,
534 0x1ee5d, 0x1ee5f, 0x1ee64, 0x1ee7e}),
535 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x02c1}, {0x02c6, 0x02d1},
536 {0x02e0, 0x02e4}, {0x0370, 0x0374}, {0x0376, 0x0377}, {0x037a, 0x037d},
537 {0x0388, 0x038a}, {0x038e, 0x03a1}, {0x03a3, 0x03f5}, {0x03f7, 0x0481},
538 {0x048a, 0x052f}, {0x0531, 0x0556}, {0x0560, 0x0588}, {0x05d0, 0x05ea},
539 {0x05ef, 0x05f2}, {0x0620, 0x064a}, {0x066e, 0x066f}, {0x0671, 0x06d3},
540 {0x06e5, 0x06e6}, {0x06ee, 0x06ef}, {0x06fa, 0x06fc}, {0x0712, 0x072f},
541 {0x074d, 0x07a5}, {0x07ca, 0x07ea}, {0x07f4, 0x07f5}, {0x0800, 0x0815},
542 {0x0840, 0x0858}, {0x0860, 0x086a}, {0x08a0, 0x08b4}, {0x08b6, 0x08bd},
543 {0x0904, 0x0939}, {0x0958, 0x0961}, {0x0971, 0x0980}, {0x0985, 0x098c},
544 {0x098f, 0x0990}, {0x0993, 0x09a8}, {0x09aa, 0x09b0}, {0x09b6, 0x09b9},
545 {0x09dc, 0x09dd}, {0x09df, 0x09e1}, {0x09f0, 0x09f1}, {0x0a05, 0x0a0a},
546 {0x0a0f, 0x0a10}, {0x0a13, 0x0a28}, {0x0a2a, 0x0a30}, {0x0a32, 0x0a33},
547 {0x0a35, 0x0a36}, {0x0a38, 0x0a39}, {0x0a59, 0x0a5c}, {0x0a72, 0x0a74},
548 {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91}, {0x0a93, 0x0aa8}, {0x0aaa, 0x0ab0},
549 {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9}, {0x0ae0, 0x0ae1}, {0x0b05, 0x0b0c},
550 {0x0b0f, 0x0b10}, {0x0b13, 0x0b28}, {0x0b2a, 0x0b30}, {0x0b32, 0x0b33},
551 {0x0b35, 0x0b39}, {0x0b5c, 0x0b5d}, {0x0b5f, 0x0b61}, {0x0b85, 0x0b8a},
552 {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a}, {0x0b9e, 0x0b9f},
553 {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9}, {0x0c05, 0x0c0c},
554 {0x0c0e, 0x0c10}, {0x0c12, 0x0c28}, {0x0c2a, 0x0c39}, {0x0c58, 0x0c5a},
555 {0x0c60, 0x0c61}, {0x0c85, 0x0c8c}, {0x0c8e, 0x0c90}, {0x0c92, 0x0ca8},
556 {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9}, {0x0ce0, 0x0ce1}, {0x0cf1, 0x0cf2},
557 {0x0d05, 0x0d0c}, {0x0d0e, 0x0d10}, {0x0d12, 0x0d3a}, {0x0d54, 0x0d56},
558 {0x0d5f, 0x0d61}, {0x0d7a, 0x0d7f}, {0x0d85, 0x0d96}, {0x0d9a, 0x0db1},
559 {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6}, {0x0e01, 0x0e30}, {0x0e32, 0x0e33},
560 {0x0e40, 0x0e46}, {0x0e81, 0x0e82}, {0x0e87, 0x0e88}, {0x0e94, 0x0e97},
561 {0x0e99, 0x0e9f}, {0x0ea1, 0x0ea3}, {0x0eaa, 0x0eab}, {0x0ead, 0x0eb0},
562 {0x0eb2, 0x0eb3}, {0x0ec0, 0x0ec4}, {0x0edc, 0x0edf}, {0x0f40, 0x0f47},
563 {0x0f49, 0x0f6c}, {0x0f88, 0x0f8c}, {0x1000, 0x102a}, {0x1050, 0x1055},
564 {0x105a, 0x105d}, {0x1065, 0x1066}, {0x106e, 0x1070}, {0x1075, 0x1081},
565 {0x10a0, 0x10c5}, {0x10d0, 0x10fa}, {0x10fc, 0x1248}, {0x124a, 0x124d},
566 {0x1250, 0x1256}, {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d},
567 {0x1290, 0x12b0}, {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c2, 0x12c5},
568 {0x12c8, 0x12d6}, {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a},
569 {0x1380, 0x138f}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1401, 0x166c},
570 {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x16f1, 0x16f8},
571 {0x1700, 0x170c}, {0x170e, 0x1711}, {0x1720, 0x1731}, {0x1740, 0x1751},
572 {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1780, 0x17b3}, {0x1820, 0x1878},
573 {0x1880, 0x1884}, {0x1887, 0x18a8}, {0x18b0, 0x18f5}, {0x1900, 0x191e},
574 {0x1950, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9},
575 {0x1a00, 0x1a16}, {0x1a20, 0x1a54}, {0x1b05, 0x1b33}, {0x1b45, 0x1b4b},
576 {0x1b83, 0x1ba0}, {0x1bae, 0x1baf}, {0x1bba, 0x1be5}, {0x1c00, 0x1c23},
577 {0x1c4d, 0x1c4f}, {0x1c5a, 0x1c7d}, {0x1c80, 0x1c88}, {0x1c90, 0x1cba},
578 {0x1cbd, 0x1cbf}, {0x1ce9, 0x1cec}, {0x1cee, 0x1cf1}, {0x1cf5, 0x1cf6},
579 {0x1d00, 0x1dbf}, {0x1e00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45},
580 {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4},
581 {0x1fb6, 0x1fbc}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3},
582 {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc},
583 {0x2090, 0x209c}, {0x210a, 0x2113}, {0x2119, 0x211d}, {0x212a, 0x212d},
584 {0x212f, 0x2139}, {0x213c, 0x213f}, {0x2145, 0x2149}, {0x2183, 0x2184},
585 {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e}, {0x2c60, 0x2ce4}, {0x2ceb, 0x2cee},
586 {0x2cf2, 0x2cf3}, {0x2d00, 0x2d25}, {0x2d30, 0x2d67}, {0x2d80, 0x2d96},
587 {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe},
588 {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde},
589 {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c}, {0x3041, 0x3096},
590 {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, {0x3105, 0x312f},
591 {0x3131, 0x318e}, {0x31a0, 0x31ba}, {0x31f0, 0x31ff}, {0x3400, 0x4db5},
592 {0x4e00, 0x9fef}, {0xa000, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c},
593 {0xa610, 0xa61f}, {0xa62a, 0xa62b}, {0xa640, 0xa66e}, {0xa67f, 0xa69d},
594 {0xa6a0, 0xa6e5}, {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7b9},
595 {0xa7f7, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a}, {0xa80c, 0xa822},
596 {0xa840, 0xa873}, {0xa882, 0xa8b3}, {0xa8f2, 0xa8f7}, {0xa8fd, 0xa8fe},
597 {0xa90a, 0xa925}, {0xa930, 0xa946}, {0xa960, 0xa97c}, {0xa984, 0xa9b2},
598 {0xa9e0, 0xa9e4}, {0xa9e6, 0xa9ef}, {0xa9fa, 0xa9fe}, {0xaa00, 0xaa28},
599 {0xaa40, 0xaa42}, {0xaa44, 0xaa4b}, {0xaa60, 0xaa76}, {0xaa7e, 0xaaaf},
600 {0xaab5, 0xaab6}, {0xaab9, 0xaabd}, {0xaadb, 0xaadd}, {0xaae0, 0xaaea},
601 {0xaaf2, 0xaaf4}, {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16},
602 {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab5a}, {0xab5c, 0xab65},
603 {0xab70, 0xabe2}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb},
604 {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
605 {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb40, 0xfb41},
606 {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f},
607 {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc},
608 {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe}, {0xffc2, 0xffc7},
609 {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b},
610 {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
611 {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10280, 0x1029c}, {0x102a0, 0x102d0},
612 {0x10300, 0x1031f}, {0x1032d, 0x10340}, {0x10342, 0x10349}, {0x10350, 0x10375},
613 {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x10400, 0x1049d},
614 {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563},
615 {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10800, 0x10805},
616 {0x1080a, 0x10835}, {0x10837, 0x10838}, {0x1083f, 0x10855}, {0x10860, 0x10876},
617 {0x10880, 0x1089e}, {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915},
618 {0x10920, 0x10939}, {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a10, 0x10a13},
619 {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c},
620 {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55},
621 {0x10b60, 0x10b72}, {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, {0x10c80, 0x10cb2},
622 {0x10cc0, 0x10cf2}, {0x10d00, 0x10d23}, {0x10f00, 0x10f1c}, {0x10f30, 0x10f45},
623 {0x11003, 0x11037}, {0x11083, 0x110af}, {0x110d0, 0x110e8}, {0x11103, 0x11126},
624 {0x11150, 0x11172}, {0x11183, 0x111b2}, {0x111c1, 0x111c4}, {0x11200, 0x11211},
625 {0x11213, 0x1122b}, {0x11280, 0x11286}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d},
626 {0x1129f, 0x112a8}, {0x112b0, 0x112de}, {0x11305, 0x1130c}, {0x1130f, 0x11310},
627 {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339},
628 {0x1135d, 0x11361}, {0x11400, 0x11434}, {0x11447, 0x1144a}, {0x11480, 0x114af},
629 {0x114c4, 0x114c5}, {0x11580, 0x115ae}, {0x115d8, 0x115db}, {0x11600, 0x1162f},
630 {0x11680, 0x116aa}, {0x11700, 0x1171a}, {0x11800, 0x1182b}, {0x118a0, 0x118df},
631 {0x11a0b, 0x11a32}, {0x11a5c, 0x11a83}, {0x11a86, 0x11a89}, {0x11ac0, 0x11af8},
632 {0x11c00, 0x11c08}, {0x11c0a, 0x11c2e}, {0x11c72, 0x11c8f}, {0x11d00, 0x11d06},
633 {0x11d08, 0x11d09}, {0x11d0b, 0x11d30}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68},
634 {0x11d6a, 0x11d89}, {0x11ee0, 0x11ef2}, {0x12000, 0x12399}, {0x12480, 0x12543},
635 {0x13000, 0x1342e}, {0x14400, 0x14646}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e},
636 {0x16ad0, 0x16aed}, {0x16b00, 0x16b2f}, {0x16b40, 0x16b43}, {0x16b63, 0x16b77},
637 {0x16b7d, 0x16b8f}, {0x16e40, 0x16e7f}, {0x16f00, 0x16f44}, {0x16f93, 0x16f9f},
638 {0x16fe0, 0x16fe1}, {0x17000, 0x187f1}, {0x18800, 0x18af2}, {0x1b000, 0x1b11e},
639 {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88},
640 {0x1bc90, 0x1bc99}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f},
641 {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3},
642 {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c},
643 {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d54a, 0x1d550},
644 {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa},
645 {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e},
646 {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb},
647 {0x1e800, 0x1e8c4}, {0x1e900, 0x1e943}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f},
648 {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f},
649 {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72},
650 {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b},
651 {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x20000, 0x2a6d6},
652 {0x2a700, 0x2b734}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0},
653 {0x2f800, 0x2fa1d}}),
654 CharacterClassWidths::HasBothBMPAndNonBMP);
655 return characterClass;
656}
657
658static std::unique_ptr<CharacterClass> createCharacterClass6()
659{
660 // Name = Cased_Letter, number of codePoints: 3957
661 auto characterClass = std::make_unique<CharacterClass>(
662 std::initializer_list<UChar32>({}),
663 std::initializer_list<CharacterRange>({{0x41, 0x5a}, {0x61, 0x7a}}),
664 std::initializer_list<UChar32>({0x00b5, 0x037f, 0x0386, 0x038c, 0x10c7, 0x10cd, 0x1f59, 0x1f5b,
665 0x1f5d, 0x1fbe, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128,
666 0x2139, 0x214e, 0x2d27, 0x2d2d, 0xa7fa, 0x1d4a2, 0x1d4bb, 0x1d546}),
667 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x01ba}, {0x01bc, 0x01bf},
668 {0x01c4, 0x0293}, {0x0295, 0x02af}, {0x0370, 0x0373}, {0x0376, 0x0377},
669 {0x037b, 0x037d}, {0x0388, 0x038a}, {0x038e, 0x03a1}, {0x03a3, 0x03f5},
670 {0x03f7, 0x0481}, {0x048a, 0x052f}, {0x0531, 0x0556}, {0x0560, 0x0588},
671 {0x10a0, 0x10c5}, {0x10d0, 0x10fa}, {0x10fd, 0x10ff}, {0x13a0, 0x13f5},
672 {0x13f8, 0x13fd}, {0x1c80, 0x1c88}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf},
673 {0x1d00, 0x1d2b}, {0x1d6b, 0x1d77}, {0x1d79, 0x1d9a}, {0x1e00, 0x1f15},
674 {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
675 {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fc2, 0x1fc4},
676 {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec},
677 {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x210a, 0x2113}, {0x2119, 0x211d},
678 {0x212a, 0x212d}, {0x212f, 0x2134}, {0x213c, 0x213f}, {0x2145, 0x2149},
679 {0x2183, 0x2184}, {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e}, {0x2c60, 0x2c7b},
680 {0x2c7e, 0x2ce4}, {0x2ceb, 0x2cee}, {0x2cf2, 0x2cf3}, {0x2d00, 0x2d25},
681 {0xa640, 0xa66d}, {0xa680, 0xa69b}, {0xa722, 0xa76f}, {0xa771, 0xa787},
682 {0xa78b, 0xa78e}, {0xa790, 0xa7b9}, {0xab30, 0xab5a}, {0xab60, 0xab65},
683 {0xab70, 0xabbf}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xff21, 0xff3a},
684 {0xff41, 0xff5a}, {0x10400, 0x1044f}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb},
685 {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x118a0, 0x118df}, {0x16e40, 0x16e7f},
686 {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6},
687 {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505},
688 {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539},
689 {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5},
690 {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714},
691 {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788},
692 {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb}, {0x1e900, 0x1e943}}),
693 CharacterClassWidths::HasBothBMPAndNonBMP);
694 return characterClass;
695}
696
697static std::unique_ptr<CharacterClass> createCharacterClass7()
698{
699 // Name = Control, number of codePoints: 65
700 auto characterClass = std::make_unique<CharacterClass>(
701 std::initializer_list<UChar32>({0x7f}),
702 std::initializer_list<CharacterRange>({{0x00, 0x1f}}),
703 std::initializer_list<UChar32>({}),
704 std::initializer_list<CharacterRange>({{0x0080, 0x009f}}),
705 CharacterClassWidths::HasBMPChars);
706 return characterClass;
707}
708
709static std::unique_ptr<CharacterClass> createCharacterClass8()
710{
711 // Name = Separator, number of codePoints: 19
712 auto characterClass = std::make_unique<CharacterClass>(
713 std::initializer_list<UChar32>({0x20}),
714 std::initializer_list<CharacterRange>({}),
715 std::initializer_list<UChar32>({0x00a0, 0x1680, 0x202f, 0x205f, 0x3000}),
716 std::initializer_list<CharacterRange>({{0x2000, 0x200a}, {0x2028, 0x2029}}),
717 CharacterClassWidths::HasBMPChars);
718 return characterClass;
719}
720
721static std::unique_ptr<CharacterClass> createCharacterClass9()
722{
723 // Name = Space_Separator, number of codePoints: 17
724 auto characterClass = std::make_unique<CharacterClass>(
725 std::initializer_list<UChar32>({0x20}),
726 std::initializer_list<CharacterRange>({}),
727 std::initializer_list<UChar32>({0x00a0, 0x1680, 0x202f, 0x205f, 0x3000}),
728 std::initializer_list<CharacterRange>({{0x2000, 0x200a}}),
729 CharacterClassWidths::HasBMPChars);
730 return characterClass;
731}
732
733static std::unique_ptr<CharacterClass> createCharacterClass10()
734{
735 // Name = Punctuation, number of codePoints: 788
736 auto characterClass = std::make_unique<CharacterClass>(
737 std::initializer_list<UChar32>({0x5f, 0x7b, 0x7d}),
738 std::initializer_list<CharacterRange>({{0x21, 0x23}, {0x25, 0x2a}, {0x2c, 0x2f}, {0x3a, 0x3b},
739 {0x3f, 0x40}, {0x5b, 0x5d}}),
740 std::initializer_list<UChar32>({0x00a1, 0x00a7, 0x00ab, 0x00bb, 0x00bf, 0x037e, 0x0387, 0x05be,
741 0x05c0, 0x05c3, 0x05c6, 0x061b, 0x06d4, 0x085e, 0x0970, 0x09fd,
742 0x0a76, 0x0af0, 0x0c84, 0x0df4, 0x0e4f, 0x0f14, 0x0f85, 0x10fb,
743 0x1400, 0x1cd3, 0x2d70, 0x3030, 0x303d, 0x30a0, 0x30fb, 0xa673,
744 0xa67e, 0xa8fc, 0xa95f, 0xabeb, 0xfe63, 0xfe68, 0xff3f, 0xff5b,
745 0xff5d, 0x1039f, 0x103d0, 0x1056f, 0x10857, 0x1091f, 0x1093f, 0x10a7f,
746 0x111cd, 0x111db, 0x112a9, 0x1145b, 0x1145d, 0x114c6, 0x1183b, 0x16af5,
747 0x16b44, 0x1bc9f}),
748 std::initializer_list<CharacterRange>({{0x00b6, 0x00b7}, {0x055a, 0x055f}, {0x0589, 0x058a}, {0x05f3, 0x05f4},
749 {0x0609, 0x060a}, {0x060c, 0x060d}, {0x061e, 0x061f}, {0x066a, 0x066d},
750 {0x0700, 0x070d}, {0x07f7, 0x07f9}, {0x0830, 0x083e}, {0x0964, 0x0965},
751 {0x0e5a, 0x0e5b}, {0x0f04, 0x0f12}, {0x0f3a, 0x0f3d}, {0x0fd0, 0x0fd4},
752 {0x0fd9, 0x0fda}, {0x104a, 0x104f}, {0x1360, 0x1368}, {0x166d, 0x166e},
753 {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6},
754 {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x1a1e, 0x1a1f},
755 {0x1aa0, 0x1aa6}, {0x1aa8, 0x1aad}, {0x1b5a, 0x1b60}, {0x1bfc, 0x1bff},
756 {0x1c3b, 0x1c3f}, {0x1c7e, 0x1c7f}, {0x1cc0, 0x1cc7}, {0x2010, 0x2027},
757 {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x205e}, {0x207d, 0x207e},
758 {0x208d, 0x208e}, {0x2308, 0x230b}, {0x2329, 0x232a}, {0x2768, 0x2775},
759 {0x27c5, 0x27c6}, {0x27e6, 0x27ef}, {0x2983, 0x2998}, {0x29d8, 0x29db},
760 {0x29fc, 0x29fd}, {0x2cf9, 0x2cfc}, {0x2cfe, 0x2cff}, {0x2e00, 0x2e2e},
761 {0x2e30, 0x2e4e}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f},
762 {0xa4fe, 0xa4ff}, {0xa60d, 0xa60f}, {0xa6f2, 0xa6f7}, {0xa874, 0xa877},
763 {0xa8ce, 0xa8cf}, {0xa8f8, 0xa8fa}, {0xa92e, 0xa92f}, {0xa9c1, 0xa9cd},
764 {0xa9de, 0xa9df}, {0xaa5c, 0xaa5f}, {0xaade, 0xaadf}, {0xaaf0, 0xaaf1},
765 {0xfd3e, 0xfd3f}, {0xfe10, 0xfe19}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61},
766 {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a}, {0xff0c, 0xff0f},
767 {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d}, {0xff5f, 0xff65},
768 {0x10100, 0x10102}, {0x10a50, 0x10a58}, {0x10af0, 0x10af6}, {0x10b39, 0x10b3f},
769 {0x10b99, 0x10b9c}, {0x10f55, 0x10f59}, {0x11047, 0x1104d}, {0x110bb, 0x110bc},
770 {0x110be, 0x110c1}, {0x11140, 0x11143}, {0x11174, 0x11175}, {0x111c5, 0x111c8},
771 {0x111dd, 0x111df}, {0x11238, 0x1123d}, {0x1144b, 0x1144f}, {0x115c1, 0x115d7},
772 {0x11641, 0x11643}, {0x11660, 0x1166c}, {0x1173c, 0x1173e}, {0x11a3f, 0x11a46},
773 {0x11a9a, 0x11a9c}, {0x11a9e, 0x11aa2}, {0x11c41, 0x11c45}, {0x11c70, 0x11c71},
774 {0x11ef7, 0x11ef8}, {0x12470, 0x12474}, {0x16a6e, 0x16a6f}, {0x16b37, 0x16b3b},
775 {0x16e97, 0x16e9a}, {0x1da87, 0x1da8b}, {0x1e95e, 0x1e95f}}),
776 CharacterClassWidths::HasBothBMPAndNonBMP);
777 return characterClass;
778}
779
780static std::unique_ptr<CharacterClass> createCharacterClass11()
781{
782 // Name = Other_Punctuation, number of codePoints: 584
783 auto characterClass = std::make_unique<CharacterClass>(
784 std::initializer_list<UChar32>({0x2a, 0x2c, 0x5c}),
785 std::initializer_list<CharacterRange>({{0x21, 0x23}, {0x25, 0x27}, {0x2e, 0x2f}, {0x3a, 0x3b},
786 {0x3f, 0x40}}),
787 std::initializer_list<UChar32>({0x00a1, 0x00a7, 0x00bf, 0x037e, 0x0387, 0x0589, 0x05c0, 0x05c3,
788 0x05c6, 0x061b, 0x06d4, 0x085e, 0x0970, 0x09fd, 0x0a76, 0x0af0,
789 0x0c84, 0x0df4, 0x0e4f, 0x0f14, 0x0f85, 0x10fb, 0x1cd3, 0x2053,
790 0x2d70, 0x2e0b, 0x2e1b, 0x2e41, 0x303d, 0x30fb, 0xa673, 0xa67e,
791 0xa8fc, 0xa95f, 0xabeb, 0xfe19, 0xfe30, 0xfe68, 0xff0a, 0xff0c,
792 0xff3c, 0xff61, 0x1039f, 0x103d0, 0x1056f, 0x10857, 0x1091f, 0x1093f,
793 0x10a7f, 0x111cd, 0x111db, 0x112a9, 0x1145b, 0x1145d, 0x114c6, 0x1183b,
794 0x16af5, 0x16b44, 0x1bc9f}),
795 std::initializer_list<CharacterRange>({{0x00b6, 0x00b7}, {0x055a, 0x055f}, {0x05f3, 0x05f4}, {0x0609, 0x060a},
796 {0x060c, 0x060d}, {0x061e, 0x061f}, {0x066a, 0x066d}, {0x0700, 0x070d},
797 {0x07f7, 0x07f9}, {0x0830, 0x083e}, {0x0964, 0x0965}, {0x0e5a, 0x0e5b},
798 {0x0f04, 0x0f12}, {0x0fd0, 0x0fd4}, {0x0fd9, 0x0fda}, {0x104a, 0x104f},
799 {0x1360, 0x1368}, {0x166d, 0x166e}, {0x16eb, 0x16ed}, {0x1735, 0x1736},
800 {0x17d4, 0x17d6}, {0x17d8, 0x17da}, {0x1800, 0x1805}, {0x1807, 0x180a},
801 {0x1944, 0x1945}, {0x1a1e, 0x1a1f}, {0x1aa0, 0x1aa6}, {0x1aa8, 0x1aad},
802 {0x1b5a, 0x1b60}, {0x1bfc, 0x1bff}, {0x1c3b, 0x1c3f}, {0x1c7e, 0x1c7f},
803 {0x1cc0, 0x1cc7}, {0x2016, 0x2017}, {0x2020, 0x2027}, {0x2030, 0x2038},
804 {0x203b, 0x203e}, {0x2041, 0x2043}, {0x2047, 0x2051}, {0x2055, 0x205e},
805 {0x2cf9, 0x2cfc}, {0x2cfe, 0x2cff}, {0x2e00, 0x2e01}, {0x2e06, 0x2e08},
806 {0x2e0e, 0x2e16}, {0x2e18, 0x2e19}, {0x2e1e, 0x2e1f}, {0x2e2a, 0x2e2e},
807 {0x2e30, 0x2e39}, {0x2e3c, 0x2e3f}, {0x2e43, 0x2e4e}, {0x3001, 0x3003},
808 {0xa4fe, 0xa4ff}, {0xa60d, 0xa60f}, {0xa6f2, 0xa6f7}, {0xa874, 0xa877},
809 {0xa8ce, 0xa8cf}, {0xa8f8, 0xa8fa}, {0xa92e, 0xa92f}, {0xa9c1, 0xa9cd},
810 {0xa9de, 0xa9df}, {0xaa5c, 0xaa5f}, {0xaade, 0xaadf}, {0xaaf0, 0xaaf1},
811 {0xfe10, 0xfe16}, {0xfe45, 0xfe46}, {0xfe49, 0xfe4c}, {0xfe50, 0xfe52},
812 {0xfe54, 0xfe57}, {0xfe5f, 0xfe61}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03},
813 {0xff05, 0xff07}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20},
814 {0xff64, 0xff65}, {0x10100, 0x10102}, {0x10a50, 0x10a58}, {0x10af0, 0x10af6},
815 {0x10b39, 0x10b3f}, {0x10b99, 0x10b9c}, {0x10f55, 0x10f59}, {0x11047, 0x1104d},
816 {0x110bb, 0x110bc}, {0x110be, 0x110c1}, {0x11140, 0x11143}, {0x11174, 0x11175},
817 {0x111c5, 0x111c8}, {0x111dd, 0x111df}, {0x11238, 0x1123d}, {0x1144b, 0x1144f},
818 {0x115c1, 0x115d7}, {0x11641, 0x11643}, {0x11660, 0x1166c}, {0x1173c, 0x1173e},
819 {0x11a3f, 0x11a46}, {0x11a9a, 0x11a9c}, {0x11a9e, 0x11aa2}, {0x11c41, 0x11c45},
820 {0x11c70, 0x11c71}, {0x11ef7, 0x11ef8}, {0x12470, 0x12474}, {0x16a6e, 0x16a6f},
821 {0x16b37, 0x16b3b}, {0x16e97, 0x16e9a}, {0x1da87, 0x1da8b}, {0x1e95e, 0x1e95f}}),
822 CharacterClassWidths::HasBothBMPAndNonBMP);
823 return characterClass;
824}
825
826static std::unique_ptr<CharacterClass> createCharacterClass12()
827{
828 // Name = Symbol, number of codePoints: 7110
829 auto characterClass = std::make_unique<CharacterClass>(
830 std::initializer_list<UChar32>({0x24, 0x2b, 0x5e, 0x60, 0x7c, 0x7e}),
831 std::initializer_list<CharacterRange>({{0x3c, 0x3e}}),
832 std::initializer_list<UChar32>({0x00ac, 0x00b4, 0x00b8, 0x00d7, 0x00f7, 0x02ed, 0x0375, 0x03f6,
833 0x0482, 0x060b, 0x06de, 0x06e9, 0x07f6, 0x0af1, 0x0b70, 0x0c7f,
834 0x0d4f, 0x0d79, 0x0e3f, 0x0f13, 0x0f34, 0x0f36, 0x0f38, 0x17db,
835 0x1940, 0x1fbd, 0x2044, 0x2052, 0x2114, 0x2125, 0x2127, 0x2129,
836 0x212e, 0x214f, 0x3004, 0x3020, 0x3250, 0xab5b, 0xfb29, 0xfe62,
837 0xfe69, 0xff04, 0xff0b, 0xff3e, 0xff40, 0xff5c, 0xff5e, 0x101a0,
838 0x10ac8, 0x1173f, 0x16b45, 0x1bc9c, 0x1d245, 0x1d6c1, 0x1d6db, 0x1d6fb,
839 0x1d715, 0x1d735, 0x1d74f, 0x1d76f, 0x1d789, 0x1d7a9, 0x1d7c3, 0x1ecac,
840 0x1ecb0, 0x1f97a}),
841 std::initializer_list<CharacterRange>({{0x00a2, 0x00a6}, {0x00a8, 0x00a9}, {0x00ae, 0x00b1}, {0x02c2, 0x02c5},
842 {0x02d2, 0x02df}, {0x02e5, 0x02eb}, {0x02ef, 0x02ff}, {0x0384, 0x0385},
843 {0x058d, 0x058f}, {0x0606, 0x0608}, {0x060e, 0x060f}, {0x06fd, 0x06fe},
844 {0x07fe, 0x07ff}, {0x09f2, 0x09f3}, {0x09fa, 0x09fb}, {0x0bf3, 0x0bfa},
845 {0x0f01, 0x0f03}, {0x0f15, 0x0f17}, {0x0f1a, 0x0f1f}, {0x0fbe, 0x0fc5},
846 {0x0fc7, 0x0fcc}, {0x0fce, 0x0fcf}, {0x0fd5, 0x0fd8}, {0x109e, 0x109f},
847 {0x1390, 0x1399}, {0x19de, 0x19ff}, {0x1b61, 0x1b6a}, {0x1b74, 0x1b7c},
848 {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef},
849 {0x1ffd, 0x1ffe}, {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20bf},
850 {0x2100, 0x2101}, {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2116, 0x2118},
851 {0x211e, 0x2123}, {0x213a, 0x213b}, {0x2140, 0x2144}, {0x214a, 0x214d},
852 {0x218a, 0x218b}, {0x2190, 0x2307}, {0x230c, 0x2328}, {0x232b, 0x2426},
853 {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2767}, {0x2794, 0x27c4},
854 {0x27c7, 0x27e5}, {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb},
855 {0x29fe, 0x2b73}, {0x2b76, 0x2b95}, {0x2b98, 0x2bc8}, {0x2bca, 0x2bfe},
856 {0x2ce5, 0x2cea}, {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5},
857 {0x2ff0, 0x2ffb}, {0x3012, 0x3013}, {0x3036, 0x3037}, {0x303e, 0x303f},
858 {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f}, {0x31c0, 0x31e3},
859 {0x3200, 0x321e}, {0x322a, 0x3247}, {0x3260, 0x327f}, {0x328a, 0x32b0},
860 {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6},
861 {0xa700, 0xa716}, {0xa720, 0xa721}, {0xa789, 0xa78a}, {0xa828, 0xa82b},
862 {0xa836, 0xa839}, {0xaa77, 0xaa79}, {0xfbb2, 0xfbc1}, {0xfdfc, 0xfdfd},
863 {0xfe64, 0xfe66}, {0xff1c, 0xff1e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee},
864 {0xfffc, 0xfffd}, {0x10137, 0x1013f}, {0x10179, 0x10189}, {0x1018c, 0x1018e},
865 {0x10190, 0x1019b}, {0x101d0, 0x101fc}, {0x10877, 0x10878}, {0x16b3c, 0x16b3f},
866 {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d129, 0x1d164}, {0x1d16a, 0x1d16c},
867 {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, {0x1d1ae, 0x1d1e8}, {0x1d200, 0x1d241},
868 {0x1d300, 0x1d356}, {0x1d800, 0x1d9ff}, {0x1da37, 0x1da3a}, {0x1da6d, 0x1da74},
869 {0x1da76, 0x1da83}, {0x1da85, 0x1da86}, {0x1eef0, 0x1eef1}, {0x1f000, 0x1f02b},
870 {0x1f030, 0x1f093}, {0x1f0a0, 0x1f0ae}, {0x1f0b1, 0x1f0bf}, {0x1f0c1, 0x1f0cf},
871 {0x1f0d1, 0x1f0f5}, {0x1f110, 0x1f16b}, {0x1f170, 0x1f1ac}, {0x1f1e6, 0x1f202},
872 {0x1f210, 0x1f23b}, {0x1f240, 0x1f248}, {0x1f250, 0x1f251}, {0x1f260, 0x1f265},
873 {0x1f300, 0x1f6d4}, {0x1f6e0, 0x1f6ec}, {0x1f6f0, 0x1f6f9}, {0x1f700, 0x1f773},
874 {0x1f780, 0x1f7d8}, {0x1f800, 0x1f80b}, {0x1f810, 0x1f847}, {0x1f850, 0x1f859},
875 {0x1f860, 0x1f887}, {0x1f890, 0x1f8ad}, {0x1f900, 0x1f90b}, {0x1f910, 0x1f93e},
876 {0x1f940, 0x1f970}, {0x1f973, 0x1f976}, {0x1f97c, 0x1f9a2}, {0x1f9b0, 0x1f9b9},
877 {0x1f9c0, 0x1f9c2}, {0x1f9d0, 0x1f9ff}, {0x1fa60, 0x1fa6d}}),
878 CharacterClassWidths::HasBothBMPAndNonBMP);
879 return characterClass;
880}
881
882static std::unique_ptr<CharacterClass> createCharacterClass13()
883{
884 // Name = Currency_Symbol, number of codePoints: 57
885 auto characterClass = std::make_unique<CharacterClass>(
886 std::initializer_list<UChar32>({0x24}),
887 std::initializer_list<CharacterRange>({}),
888 std::initializer_list<UChar32>({0x058f, 0x060b, 0x09fb, 0x0af1, 0x0bf9, 0x0e3f, 0x17db, 0xa838,
889 0xfdfc, 0xfe69, 0xff04, 0x1ecb0}),
890 std::initializer_list<CharacterRange>({{0x00a2, 0x00a5}, {0x07fe, 0x07ff}, {0x09f2, 0x09f3}, {0x20a0, 0x20bf},
891 {0xffe0, 0xffe1}, {0xffe5, 0xffe6}}),
892 CharacterClassWidths::HasBothBMPAndNonBMP);
893 return characterClass;
894}
895
896static std::unique_ptr<CharacterClass> createCharacterClass14()
897{
898 // Name = Open_Punctuation, number of codePoints: 75
899 auto characterClass = std::make_unique<CharacterClass>(
900 std::initializer_list<UChar32>({0x28, 0x5b, 0x7b}),
901 std::initializer_list<CharacterRange>({}),
902 std::initializer_list<UChar32>({0x0f3a, 0x0f3c, 0x169b, 0x201a, 0x201e, 0x2045, 0x207d, 0x208d,
903 0x2308, 0x230a, 0x2329, 0x2768, 0x276a, 0x276c, 0x276e, 0x2770,
904 0x2772, 0x2774, 0x27c5, 0x27e6, 0x27e8, 0x27ea, 0x27ec, 0x27ee,
905 0x2983, 0x2985, 0x2987, 0x2989, 0x298b, 0x298d, 0x298f, 0x2991,
906 0x2993, 0x2995, 0x2997, 0x29d8, 0x29da, 0x29fc, 0x2e22, 0x2e24,
907 0x2e26, 0x2e28, 0x2e42, 0x3008, 0x300a, 0x300c, 0x300e, 0x3010,
908 0x3014, 0x3016, 0x3018, 0x301a, 0x301d, 0xfd3f, 0xfe17, 0xfe35,
909 0xfe37, 0xfe39, 0xfe3b, 0xfe3d, 0xfe3f, 0xfe41, 0xfe43, 0xfe47,
910 0xfe59, 0xfe5b, 0xfe5d, 0xff08, 0xff3b, 0xff5b, 0xff5f, 0xff62}),
911 std::initializer_list<CharacterRange>({}),
912 CharacterClassWidths::HasBMPChars);
913 return characterClass;
914}
915
916static std::unique_ptr<CharacterClass> createCharacterClass15()
917{
918 // Name = Close_Punctuation, number of codePoints: 73
919 auto characterClass = std::make_unique<CharacterClass>(
920 std::initializer_list<UChar32>({0x29, 0x5d, 0x7d}),
921 std::initializer_list<CharacterRange>({}),
922 std::initializer_list<UChar32>({0x0f3b, 0x0f3d, 0x169c, 0x2046, 0x207e, 0x208e, 0x2309, 0x230b,
923 0x232a, 0x2769, 0x276b, 0x276d, 0x276f, 0x2771, 0x2773, 0x2775,
924 0x27c6, 0x27e7, 0x27e9, 0x27eb, 0x27ed, 0x27ef, 0x2984, 0x2986,
925 0x2988, 0x298a, 0x298c, 0x298e, 0x2990, 0x2992, 0x2994, 0x2996,
926 0x2998, 0x29d9, 0x29db, 0x29fd, 0x2e23, 0x2e25, 0x2e27, 0x2e29,
927 0x3009, 0x300b, 0x300d, 0x300f, 0x3011, 0x3015, 0x3017, 0x3019,
928 0x301b, 0xfd3e, 0xfe18, 0xfe36, 0xfe38, 0xfe3a, 0xfe3c, 0xfe3e,
929 0xfe40, 0xfe42, 0xfe44, 0xfe48, 0xfe5a, 0xfe5c, 0xfe5e, 0xff09,
930 0xff3d, 0xff5d, 0xff60, 0xff63}),
931 std::initializer_list<CharacterRange>({{0x301e, 0x301f}}),
932 CharacterClassWidths::HasBMPChars);
933 return characterClass;
934}
935
936static std::unique_ptr<CharacterClass> createCharacterClass16()
937{
938 // Name = Math_Symbol, number of codePoints: 948
939 auto characterClass = std::make_unique<CharacterClass>(
940 std::initializer_list<UChar32>({0x2b, 0x7c, 0x7e}),
941 std::initializer_list<CharacterRange>({{0x3c, 0x3e}}),
942 std::initializer_list<UChar32>({0x00ac, 0x00b1, 0x00d7, 0x00f7, 0x03f6, 0x2044, 0x2052, 0x2118,
943 0x214b, 0x21a0, 0x21a3, 0x21a6, 0x21ae, 0x21d2, 0x21d4, 0x237c,
944 0x25b7, 0x25c1, 0x266f, 0xfb29, 0xfe62, 0xff0b, 0xff5c, 0xff5e,
945 0xffe2, 0x1d6c1, 0x1d6db, 0x1d6fb, 0x1d715, 0x1d735, 0x1d74f, 0x1d76f,
946 0x1d789, 0x1d7a9, 0x1d7c3}),
947 std::initializer_list<CharacterRange>({{0x0606, 0x0608}, {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144},
948 {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21ce, 0x21cf}, {0x21f4, 0x22ff},
949 {0x2320, 0x2321}, {0x239b, 0x23b3}, {0x23dc, 0x23e1}, {0x25f8, 0x25ff},
950 {0x27c0, 0x27c4}, {0x27c7, 0x27e5}, {0x27f0, 0x27ff}, {0x2900, 0x2982},
951 {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff}, {0x2b30, 0x2b44},
952 {0x2b47, 0x2b4c}, {0xfe64, 0xfe66}, {0xff1c, 0xff1e}, {0xffe9, 0xffec},
953 {0x1eef0, 0x1eef1}}),
954 CharacterClassWidths::HasBothBMPAndNonBMP);
955 return characterClass;
956}
957
958static std::unique_ptr<CharacterClass> createCharacterClass17()
959{
960 // Name = Dash_Punctuation, number of codePoints: 24
961 auto characterClass = std::make_unique<CharacterClass>(
962 std::initializer_list<UChar32>({0x2d}),
963 std::initializer_list<CharacterRange>({}),
964 std::initializer_list<UChar32>({0x058a, 0x05be, 0x1400, 0x1806, 0x2e17, 0x2e1a, 0x2e40, 0x301c,
965 0x3030, 0x30a0, 0xfe58, 0xfe63, 0xff0d}),
966 std::initializer_list<CharacterRange>({{0x2010, 0x2015}, {0x2e3a, 0x2e3b}, {0xfe31, 0xfe32}}),
967 CharacterClassWidths::HasBMPChars);
968 return characterClass;
969}
970
971static std::unique_ptr<CharacterClass> createCharacterClass18()
972{
973 // Name = Number, number of codePoints: 1653
974 auto characterClass = std::make_unique<CharacterClass>(
975 std::initializer_list<UChar32>({}),
976 std::initializer_list<CharacterRange>({{0x30, 0x39}}),
977 std::initializer_list<UChar32>({0x00b9, 0x2070, 0x2cfd, 0x3007, 0x10341, 0x1034a}),
978 std::initializer_list<CharacterRange>({{0x00b2, 0x00b3}, {0x00bc, 0x00be}, {0x0660, 0x0669}, {0x06f0, 0x06f9},
979 {0x07c0, 0x07c9}, {0x0966, 0x096f}, {0x09e6, 0x09ef}, {0x09f4, 0x09f9},
980 {0x0a66, 0x0a6f}, {0x0ae6, 0x0aef}, {0x0b66, 0x0b6f}, {0x0b72, 0x0b77},
981 {0x0be6, 0x0bf2}, {0x0c66, 0x0c6f}, {0x0c78, 0x0c7e}, {0x0ce6, 0x0cef},
982 {0x0d58, 0x0d5e}, {0x0d66, 0x0d78}, {0x0de6, 0x0def}, {0x0e50, 0x0e59},
983 {0x0ed0, 0x0ed9}, {0x0f20, 0x0f33}, {0x1040, 0x1049}, {0x1090, 0x1099},
984 {0x1369, 0x137c}, {0x16ee, 0x16f0}, {0x17e0, 0x17e9}, {0x17f0, 0x17f9},
985 {0x1810, 0x1819}, {0x1946, 0x194f}, {0x19d0, 0x19da}, {0x1a80, 0x1a89},
986 {0x1a90, 0x1a99}, {0x1b50, 0x1b59}, {0x1bb0, 0x1bb9}, {0x1c40, 0x1c49},
987 {0x1c50, 0x1c59}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2150, 0x2182},
988 {0x2185, 0x2189}, {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793},
989 {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229},
990 {0x3248, 0x324f}, {0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf},
991 {0xa620, 0xa629}, {0xa6e6, 0xa6ef}, {0xa830, 0xa835}, {0xa8d0, 0xa8d9},
992 {0xa900, 0xa909}, {0xa9d0, 0xa9d9}, {0xa9f0, 0xa9f9}, {0xaa50, 0xaa59},
993 {0xabf0, 0xabf9}, {0xff10, 0xff19}, {0x10107, 0x10133}, {0x10140, 0x10178},
994 {0x1018a, 0x1018b}, {0x102e1, 0x102fb}, {0x10320, 0x10323}, {0x103d1, 0x103d5},
995 {0x104a0, 0x104a9}, {0x10858, 0x1085f}, {0x10879, 0x1087f}, {0x108a7, 0x108af},
996 {0x108fb, 0x108ff}, {0x10916, 0x1091b}, {0x109bc, 0x109bd}, {0x109c0, 0x109cf},
997 {0x109d2, 0x109ff}, {0x10a40, 0x10a48}, {0x10a7d, 0x10a7e}, {0x10a9d, 0x10a9f},
998 {0x10aeb, 0x10aef}, {0x10b58, 0x10b5f}, {0x10b78, 0x10b7f}, {0x10ba9, 0x10baf},
999 {0x10cfa, 0x10cff}, {0x10d30, 0x10d39}, {0x10e60, 0x10e7e}, {0x10f1d, 0x10f26},
1000 {0x10f51, 0x10f54}, {0x11052, 0x1106f}, {0x110f0, 0x110f9}, {0x11136, 0x1113f},
1001 {0x111d0, 0x111d9}, {0x111e1, 0x111f4}, {0x112f0, 0x112f9}, {0x11450, 0x11459},
1002 {0x114d0, 0x114d9}, {0x11650, 0x11659}, {0x116c0, 0x116c9}, {0x11730, 0x1173b},
1003 {0x118e0, 0x118f2}, {0x11c50, 0x11c6c}, {0x11d50, 0x11d59}, {0x11da0, 0x11da9},
1004 {0x12400, 0x1246e}, {0x16a60, 0x16a69}, {0x16b50, 0x16b59}, {0x16b5b, 0x16b61},
1005 {0x16e80, 0x16e96}, {0x1d2e0, 0x1d2f3}, {0x1d360, 0x1d378}, {0x1d7ce, 0x1d7ff},
1006 {0x1e8c7, 0x1e8cf}, {0x1e950, 0x1e959}, {0x1ec71, 0x1ecab}, {0x1ecad, 0x1ecaf},
1007 {0x1ecb1, 0x1ecb4}, {0x1f100, 0x1f10c}}),
1008 CharacterClassWidths::HasBothBMPAndNonBMP);
1009 return characterClass;
1010}
1011
1012static std::unique_ptr<CharacterClass> createCharacterClass19()
1013{
1014 // Name = Decimal_Number, number of codePoints: 610
1015 auto characterClass = std::make_unique<CharacterClass>(
1016 std::initializer_list<UChar32>({}),
1017 std::initializer_list<CharacterRange>({{0x30, 0x39}}),
1018 std::initializer_list<UChar32>({}),
1019 std::initializer_list<CharacterRange>({{0x0660, 0x0669}, {0x06f0, 0x06f9}, {0x07c0, 0x07c9}, {0x0966, 0x096f},
1020 {0x09e6, 0x09ef}, {0x0a66, 0x0a6f}, {0x0ae6, 0x0aef}, {0x0b66, 0x0b6f},
1021 {0x0be6, 0x0bef}, {0x0c66, 0x0c6f}, {0x0ce6, 0x0cef}, {0x0d66, 0x0d6f},
1022 {0x0de6, 0x0def}, {0x0e50, 0x0e59}, {0x0ed0, 0x0ed9}, {0x0f20, 0x0f29},
1023 {0x1040, 0x1049}, {0x1090, 0x1099}, {0x17e0, 0x17e9}, {0x1810, 0x1819},
1024 {0x1946, 0x194f}, {0x19d0, 0x19d9}, {0x1a80, 0x1a89}, {0x1a90, 0x1a99},
1025 {0x1b50, 0x1b59}, {0x1bb0, 0x1bb9}, {0x1c40, 0x1c49}, {0x1c50, 0x1c59},
1026 {0xa620, 0xa629}, {0xa8d0, 0xa8d9}, {0xa900, 0xa909}, {0xa9d0, 0xa9d9},
1027 {0xa9f0, 0xa9f9}, {0xaa50, 0xaa59}, {0xabf0, 0xabf9}, {0xff10, 0xff19},
1028 {0x104a0, 0x104a9}, {0x10d30, 0x10d39}, {0x11066, 0x1106f}, {0x110f0, 0x110f9},
1029 {0x11136, 0x1113f}, {0x111d0, 0x111d9}, {0x112f0, 0x112f9}, {0x11450, 0x11459},
1030 {0x114d0, 0x114d9}, {0x11650, 0x11659}, {0x116c0, 0x116c9}, {0x11730, 0x11739},
1031 {0x118e0, 0x118e9}, {0x11c50, 0x11c59}, {0x11d50, 0x11d59}, {0x11da0, 0x11da9},
1032 {0x16a60, 0x16a69}, {0x16b50, 0x16b59}, {0x1d7ce, 0x1d7ff}, {0x1e950, 0x1e959}}),
1033 CharacterClassWidths::HasBothBMPAndNonBMP);
1034 return characterClass;
1035}
1036
1037static std::unique_ptr<CharacterClass> createCharacterClass20()
1038{
1039 // Name = Uppercase_Letter, number of codePoints: 1781
1040 auto characterClass = std::make_unique<CharacterClass>(
1041 std::initializer_list<UChar32>({}),
1042 std::initializer_list<CharacterRange>({{0x41, 0x5a}}),
1043 std::initializer_list<UChar32>({0x0100, 0x0102, 0x0104, 0x0106, 0x0108, 0x010a, 0x010c, 0x010e,
1044 0x0110, 0x0112, 0x0114, 0x0116, 0x0118, 0x011a, 0x011c, 0x011e,
1045 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x012a, 0x012c, 0x012e,
1046 0x0130, 0x0132, 0x0134, 0x0136, 0x0139, 0x013b, 0x013d, 0x013f,
1047 0x0141, 0x0143, 0x0145, 0x0147, 0x014a, 0x014c, 0x014e, 0x0150,
1048 0x0152, 0x0154, 0x0156, 0x0158, 0x015a, 0x015c, 0x015e, 0x0160,
1049 0x0162, 0x0164, 0x0166, 0x0168, 0x016a, 0x016c, 0x016e, 0x0170,
1050 0x0172, 0x0174, 0x0176, 0x017b, 0x017d, 0x0184, 0x01a2, 0x01a4,
1051 0x01a9, 0x01ac, 0x01b5, 0x01bc, 0x01c4, 0x01c7, 0x01ca, 0x01cd,
1052 0x01cf, 0x01d1, 0x01d3, 0x01d5, 0x01d7, 0x01d9, 0x01db, 0x01de,
1053 0x01e0, 0x01e2, 0x01e4, 0x01e6, 0x01e8, 0x01ea, 0x01ec, 0x01ee,
1054 0x01f1, 0x01f4, 0x01fa, 0x01fc, 0x01fe, 0x0200, 0x0202, 0x0204,
1055 0x0206, 0x0208, 0x020a, 0x020c, 0x020e, 0x0210, 0x0212, 0x0214,
1056 0x0216, 0x0218, 0x021a, 0x021c, 0x021e, 0x0220, 0x0222, 0x0224,
1057 0x0226, 0x0228, 0x022a, 0x022c, 0x022e, 0x0230, 0x0232, 0x0241,
1058 0x0248, 0x024a, 0x024c, 0x024e, 0x0370, 0x0372, 0x0376, 0x037f,
1059 0x0386, 0x038c, 0x03cf, 0x03d8, 0x03da, 0x03dc, 0x03de, 0x03e0,
1060 0x03e2, 0x03e4, 0x03e6, 0x03e8, 0x03ea, 0x03ec, 0x03ee, 0x03f4,
1061 0x03f7, 0x0460, 0x0462, 0x0464, 0x0466, 0x0468, 0x046a, 0x046c,
1062 0x046e, 0x0470, 0x0472, 0x0474, 0x0476, 0x0478, 0x047a, 0x047c,
1063 0x047e, 0x0480, 0x048a, 0x048c, 0x048e, 0x0490, 0x0492, 0x0494,
1064 0x0496, 0x0498, 0x049a, 0x049c, 0x049e, 0x04a0, 0x04a2, 0x04a4,
1065 0x04a6, 0x04a8, 0x04aa, 0x04ac, 0x04ae, 0x04b0, 0x04b2, 0x04b4,
1066 0x04b6, 0x04b8, 0x04ba, 0x04bc, 0x04be, 0x04c3, 0x04c5, 0x04c7,
1067 0x04c9, 0x04cb, 0x04cd, 0x04d0, 0x04d2, 0x04d4, 0x04d6, 0x04d8,
1068 0x04da, 0x04dc, 0x04de, 0x04e0, 0x04e2, 0x04e4, 0x04e6, 0x04e8,
1069 0x04ea, 0x04ec, 0x04ee, 0x04f0, 0x04f2, 0x04f4, 0x04f6, 0x04f8,
1070 0x04fa, 0x04fc, 0x04fe, 0x0500, 0x0502, 0x0504, 0x0506, 0x0508,
1071 0x050a, 0x050c, 0x050e, 0x0510, 0x0512, 0x0514, 0x0516, 0x0518,
1072 0x051a, 0x051c, 0x051e, 0x0520, 0x0522, 0x0524, 0x0526, 0x0528,
1073 0x052a, 0x052c, 0x052e, 0x10c7, 0x10cd, 0x1e00, 0x1e02, 0x1e04,
1074 0x1e06, 0x1e08, 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12, 0x1e14,
1075 0x1e16, 0x1e18, 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22, 0x1e24,
1076 0x1e26, 0x1e28, 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32, 0x1e34,
1077 0x1e36, 0x1e38, 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42, 0x1e44,
1078 0x1e46, 0x1e48, 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54,
1079 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64,
1080 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74,
1081 0x1e76, 0x1e78, 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84,
1082 0x1e86, 0x1e88, 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94,
1083 0x1e9e, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac,
1084 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc,
1085 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc,
1086 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda, 0x1edc,
1087 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea, 0x1eec,
1088 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa, 0x1efc,
1089 0x1efe, 0x1f59, 0x1f5b, 0x1f5d, 0x1f5f, 0x2102, 0x2107, 0x2115,
1090 0x2124, 0x2126, 0x2128, 0x2145, 0x2183, 0x2c60, 0x2c67, 0x2c69,
1091 0x2c6b, 0x2c72, 0x2c75, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a,
1092 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a,
1093 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa,
1094 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba,
1095 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca,
1096 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda,
1097 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0xa640,
1098 0xa642, 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650,
1099 0xa652, 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660,
1100 0xa662, 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682,
1101 0xa684, 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692,
1102 0xa694, 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728,
1103 0xa72a, 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a,
1104 0xa73c, 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a,
1105 0xa74c, 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a,
1106 0xa75c, 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a,
1107 0xa76c, 0xa76e, 0xa779, 0xa77b, 0xa780, 0xa782, 0xa784, 0xa786,
1108 0xa78b, 0xa78d, 0xa790, 0xa792, 0xa796, 0xa798, 0xa79a, 0xa79c,
1109 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7b6, 0xa7b8,
1110 0x1d49c, 0x1d4a2, 0x1d546, 0x1d7ca}),
1111 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00de}, {0x0178, 0x0179}, {0x0181, 0x0182},
1112 {0x0186, 0x0187}, {0x0189, 0x018b}, {0x018e, 0x0191}, {0x0193, 0x0194},
1113 {0x0196, 0x0198}, {0x019c, 0x019d}, {0x019f, 0x01a0}, {0x01a6, 0x01a7},
1114 {0x01ae, 0x01af}, {0x01b1, 0x01b3}, {0x01b7, 0x01b8}, {0x01f6, 0x01f8},
1115 {0x023a, 0x023b}, {0x023d, 0x023e}, {0x0243, 0x0246}, {0x0388, 0x038a},
1116 {0x038e, 0x038f}, {0x0391, 0x03a1}, {0x03a3, 0x03ab}, {0x03d2, 0x03d4},
1117 {0x03f9, 0x03fa}, {0x03fd, 0x042f}, {0x04c0, 0x04c1}, {0x0531, 0x0556},
1118 {0x10a0, 0x10c5}, {0x13a0, 0x13f5}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf},
1119 {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d}, {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f},
1120 {0x1f48, 0x1f4d}, {0x1f68, 0x1f6f}, {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb},
1121 {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec}, {0x1ff8, 0x1ffb}, {0x210b, 0x210d},
1122 {0x2110, 0x2112}, {0x2119, 0x211d}, {0x212a, 0x212d}, {0x2130, 0x2133},
1123 {0x213e, 0x213f}, {0x2c00, 0x2c2e}, {0x2c62, 0x2c64}, {0x2c6d, 0x2c70},
1124 {0x2c7e, 0x2c80}, {0xa77d, 0xa77e}, {0xa7aa, 0xa7ae}, {0xa7b0, 0xa7b4},
1125 {0xff21, 0xff3a}, {0x10400, 0x10427}, {0x104b0, 0x104d3}, {0x10c80, 0x10cb2},
1126 {0x118a0, 0x118bf}, {0x16e40, 0x16e5f}, {0x1d400, 0x1d419}, {0x1d434, 0x1d44d},
1127 {0x1d468, 0x1d481}, {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac},
1128 {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9}, {0x1d504, 0x1d505}, {0x1d507, 0x1d50a},
1129 {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e},
1130 {0x1d540, 0x1d544}, {0x1d54a, 0x1d550}, {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9},
1131 {0x1d5d4, 0x1d5ed}, {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689},
1132 {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734}, {0x1d756, 0x1d76e},
1133 {0x1d790, 0x1d7a8}, {0x1e900, 0x1e921}}),
1134 CharacterClassWidths::HasBothBMPAndNonBMP);
1135 return characterClass;
1136}
1137
1138static std::unique_ptr<CharacterClass> createCharacterClass21()
1139{
1140 // Name = Modifier_Symbol, number of codePoints: 121
1141 auto characterClass = std::make_unique<CharacterClass>(
1142 std::initializer_list<UChar32>({0x5e, 0x60}),
1143 std::initializer_list<CharacterRange>({}),
1144 std::initializer_list<UChar32>({0x00a8, 0x00af, 0x00b4, 0x00b8, 0x02ed, 0x0375, 0x1fbd, 0xab5b,
1145 0xff3e, 0xff40, 0xffe3}),
1146 std::initializer_list<CharacterRange>({{0x02c2, 0x02c5}, {0x02d2, 0x02df}, {0x02e5, 0x02eb}, {0x02ef, 0x02ff},
1147 {0x0384, 0x0385}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf},
1148 {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c}, {0xa700, 0xa716},
1149 {0xa720, 0xa721}, {0xa789, 0xa78a}, {0xfbb2, 0xfbc1}, {0x1f3fb, 0x1f3ff}}),
1150 CharacterClassWidths::HasBothBMPAndNonBMP);
1151 return characterClass;
1152}
1153
1154static std::unique_ptr<CharacterClass> createCharacterClass22()
1155{
1156 // Name = Connector_Punctuation, number of codePoints: 10
1157 auto characterClass = std::make_unique<CharacterClass>(
1158 std::initializer_list<UChar32>({0x5f}),
1159 std::initializer_list<CharacterRange>({}),
1160 std::initializer_list<UChar32>({0x2054, 0xff3f}),
1161 std::initializer_list<CharacterRange>({{0x203f, 0x2040}, {0xfe33, 0xfe34}, {0xfe4d, 0xfe4f}}),
1162 CharacterClassWidths::HasBMPChars);
1163 return characterClass;
1164}
1165
1166static std::unique_ptr<CharacterClass> createCharacterClass23()
1167{
1168 // Name = Lowercase_Letter, number of codePoints: 2145
1169 auto characterClass = std::make_unique<CharacterClass>(
1170 std::initializer_list<UChar32>({}),
1171 std::initializer_list<CharacterRange>({{0x61, 0x7a}}),
1172 std::initializer_list<UChar32>({0x00b5, 0x0101, 0x0103, 0x0105, 0x0107, 0x0109, 0x010b, 0x010d,
1173 0x010f, 0x0111, 0x0113, 0x0115, 0x0117, 0x0119, 0x011b, 0x011d,
1174 0x011f, 0x0121, 0x0123, 0x0125, 0x0127, 0x0129, 0x012b, 0x012d,
1175 0x012f, 0x0131, 0x0133, 0x0135, 0x013a, 0x013c, 0x013e, 0x0140,
1176 0x0142, 0x0144, 0x0146, 0x014b, 0x014d, 0x014f, 0x0151, 0x0153,
1177 0x0155, 0x0157, 0x0159, 0x015b, 0x015d, 0x015f, 0x0161, 0x0163,
1178 0x0165, 0x0167, 0x0169, 0x016b, 0x016d, 0x016f, 0x0171, 0x0173,
1179 0x0175, 0x0177, 0x017a, 0x017c, 0x0183, 0x0185, 0x0188, 0x0192,
1180 0x0195, 0x019e, 0x01a1, 0x01a3, 0x01a5, 0x01a8, 0x01ad, 0x01b0,
1181 0x01b4, 0x01b6, 0x01c6, 0x01c9, 0x01cc, 0x01ce, 0x01d0, 0x01d2,
1182 0x01d4, 0x01d6, 0x01d8, 0x01da, 0x01df, 0x01e1, 0x01e3, 0x01e5,
1183 0x01e7, 0x01e9, 0x01eb, 0x01ed, 0x01f3, 0x01f5, 0x01f9, 0x01fb,
1184 0x01fd, 0x01ff, 0x0201, 0x0203, 0x0205, 0x0207, 0x0209, 0x020b,
1185 0x020d, 0x020f, 0x0211, 0x0213, 0x0215, 0x0217, 0x0219, 0x021b,
1186 0x021d, 0x021f, 0x0221, 0x0223, 0x0225, 0x0227, 0x0229, 0x022b,
1187 0x022d, 0x022f, 0x0231, 0x023c, 0x0242, 0x0247, 0x0249, 0x024b,
1188 0x024d, 0x0371, 0x0373, 0x0377, 0x0390, 0x03d9, 0x03db, 0x03dd,
1189 0x03df, 0x03e1, 0x03e3, 0x03e5, 0x03e7, 0x03e9, 0x03eb, 0x03ed,
1190 0x03f5, 0x03f8, 0x0461, 0x0463, 0x0465, 0x0467, 0x0469, 0x046b,
1191 0x046d, 0x046f, 0x0471, 0x0473, 0x0475, 0x0477, 0x0479, 0x047b,
1192 0x047d, 0x047f, 0x0481, 0x048b, 0x048d, 0x048f, 0x0491, 0x0493,
1193 0x0495, 0x0497, 0x0499, 0x049b, 0x049d, 0x049f, 0x04a1, 0x04a3,
1194 0x04a5, 0x04a7, 0x04a9, 0x04ab, 0x04ad, 0x04af, 0x04b1, 0x04b3,
1195 0x04b5, 0x04b7, 0x04b9, 0x04bb, 0x04bd, 0x04bf, 0x04c2, 0x04c4,
1196 0x04c6, 0x04c8, 0x04ca, 0x04cc, 0x04d1, 0x04d3, 0x04d5, 0x04d7,
1197 0x04d9, 0x04db, 0x04dd, 0x04df, 0x04e1, 0x04e3, 0x04e5, 0x04e7,
1198 0x04e9, 0x04eb, 0x04ed, 0x04ef, 0x04f1, 0x04f3, 0x04f5, 0x04f7,
1199 0x04f9, 0x04fb, 0x04fd, 0x04ff, 0x0501, 0x0503, 0x0505, 0x0507,
1200 0x0509, 0x050b, 0x050d, 0x050f, 0x0511, 0x0513, 0x0515, 0x0517,
1201 0x0519, 0x051b, 0x051d, 0x051f, 0x0521, 0x0523, 0x0525, 0x0527,
1202 0x0529, 0x052b, 0x052d, 0x052f, 0x1e01, 0x1e03, 0x1e05, 0x1e07,
1203 0x1e09, 0x1e0b, 0x1e0d, 0x1e0f, 0x1e11, 0x1e13, 0x1e15, 0x1e17,
1204 0x1e19, 0x1e1b, 0x1e1d, 0x1e1f, 0x1e21, 0x1e23, 0x1e25, 0x1e27,
1205 0x1e29, 0x1e2b, 0x1e2d, 0x1e2f, 0x1e31, 0x1e33, 0x1e35, 0x1e37,
1206 0x1e39, 0x1e3b, 0x1e3d, 0x1e3f, 0x1e41, 0x1e43, 0x1e45, 0x1e47,
1207 0x1e49, 0x1e4b, 0x1e4d, 0x1e4f, 0x1e51, 0x1e53, 0x1e55, 0x1e57,
1208 0x1e59, 0x1e5b, 0x1e5d, 0x1e5f, 0x1e61, 0x1e63, 0x1e65, 0x1e67,
1209 0x1e69, 0x1e6b, 0x1e6d, 0x1e6f, 0x1e71, 0x1e73, 0x1e75, 0x1e77,
1210 0x1e79, 0x1e7b, 0x1e7d, 0x1e7f, 0x1e81, 0x1e83, 0x1e85, 0x1e87,
1211 0x1e89, 0x1e8b, 0x1e8d, 0x1e8f, 0x1e91, 0x1e93, 0x1e9f, 0x1ea1,
1212 0x1ea3, 0x1ea5, 0x1ea7, 0x1ea9, 0x1eab, 0x1ead, 0x1eaf, 0x1eb1,
1213 0x1eb3, 0x1eb5, 0x1eb7, 0x1eb9, 0x1ebb, 0x1ebd, 0x1ebf, 0x1ec1,
1214 0x1ec3, 0x1ec5, 0x1ec7, 0x1ec9, 0x1ecb, 0x1ecd, 0x1ecf, 0x1ed1,
1215 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed9, 0x1edb, 0x1edd, 0x1edf, 0x1ee1,
1216 0x1ee3, 0x1ee5, 0x1ee7, 0x1ee9, 0x1eeb, 0x1eed, 0x1eef, 0x1ef1,
1217 0x1ef3, 0x1ef5, 0x1ef7, 0x1ef9, 0x1efb, 0x1efd, 0x1fbe, 0x210a,
1218 0x2113, 0x212f, 0x2134, 0x2139, 0x214e, 0x2184, 0x2c61, 0x2c68,
1219 0x2c6a, 0x2c6c, 0x2c71, 0x2c81, 0x2c83, 0x2c85, 0x2c87, 0x2c89,
1220 0x2c8b, 0x2c8d, 0x2c8f, 0x2c91, 0x2c93, 0x2c95, 0x2c97, 0x2c99,
1221 0x2c9b, 0x2c9d, 0x2c9f, 0x2ca1, 0x2ca3, 0x2ca5, 0x2ca7, 0x2ca9,
1222 0x2cab, 0x2cad, 0x2caf, 0x2cb1, 0x2cb3, 0x2cb5, 0x2cb7, 0x2cb9,
1223 0x2cbb, 0x2cbd, 0x2cbf, 0x2cc1, 0x2cc3, 0x2cc5, 0x2cc7, 0x2cc9,
1224 0x2ccb, 0x2ccd, 0x2ccf, 0x2cd1, 0x2cd3, 0x2cd5, 0x2cd7, 0x2cd9,
1225 0x2cdb, 0x2cdd, 0x2cdf, 0x2ce1, 0x2cec, 0x2cee, 0x2cf3, 0x2d27,
1226 0x2d2d, 0xa641, 0xa643, 0xa645, 0xa647, 0xa649, 0xa64b, 0xa64d,
1227 0xa64f, 0xa651, 0xa653, 0xa655, 0xa657, 0xa659, 0xa65b, 0xa65d,
1228 0xa65f, 0xa661, 0xa663, 0xa665, 0xa667, 0xa669, 0xa66b, 0xa66d,
1229 0xa681, 0xa683, 0xa685, 0xa687, 0xa689, 0xa68b, 0xa68d, 0xa68f,
1230 0xa691, 0xa693, 0xa695, 0xa697, 0xa699, 0xa69b, 0xa723, 0xa725,
1231 0xa727, 0xa729, 0xa72b, 0xa72d, 0xa733, 0xa735, 0xa737, 0xa739,
1232 0xa73b, 0xa73d, 0xa73f, 0xa741, 0xa743, 0xa745, 0xa747, 0xa749,
1233 0xa74b, 0xa74d, 0xa74f, 0xa751, 0xa753, 0xa755, 0xa757, 0xa759,
1234 0xa75b, 0xa75d, 0xa75f, 0xa761, 0xa763, 0xa765, 0xa767, 0xa769,
1235 0xa76b, 0xa76d, 0xa76f, 0xa77a, 0xa77c, 0xa77f, 0xa781, 0xa783,
1236 0xa785, 0xa787, 0xa78c, 0xa78e, 0xa791, 0xa797, 0xa799, 0xa79b,
1237 0xa79d, 0xa79f, 0xa7a1, 0xa7a3, 0xa7a5, 0xa7a7, 0xa7a9, 0xa7af,
1238 0xa7b5, 0xa7b7, 0xa7b9, 0xa7fa, 0x1d4bb, 0x1d7cb}),
1239 std::initializer_list<CharacterRange>({{0x00df, 0x00f6}, {0x00f8, 0x00ff}, {0x0137, 0x0138}, {0x0148, 0x0149},
1240 {0x017e, 0x0180}, {0x018c, 0x018d}, {0x0199, 0x019b}, {0x01aa, 0x01ab},
1241 {0x01b9, 0x01ba}, {0x01bd, 0x01bf}, {0x01dc, 0x01dd}, {0x01ef, 0x01f0},
1242 {0x0233, 0x0239}, {0x023f, 0x0240}, {0x024f, 0x0293}, {0x0295, 0x02af},
1243 {0x037b, 0x037d}, {0x03ac, 0x03ce}, {0x03d0, 0x03d1}, {0x03d5, 0x03d7},
1244 {0x03ef, 0x03f3}, {0x03fb, 0x03fc}, {0x0430, 0x045f}, {0x04ce, 0x04cf},
1245 {0x0560, 0x0588}, {0x10d0, 0x10fa}, {0x10fd, 0x10ff}, {0x13f8, 0x13fd},
1246 {0x1c80, 0x1c88}, {0x1d00, 0x1d2b}, {0x1d6b, 0x1d77}, {0x1d79, 0x1d9a},
1247 {0x1e95, 0x1e9d}, {0x1eff, 0x1f07}, {0x1f10, 0x1f15}, {0x1f20, 0x1f27},
1248 {0x1f30, 0x1f37}, {0x1f40, 0x1f45}, {0x1f50, 0x1f57}, {0x1f60, 0x1f67},
1249 {0x1f70, 0x1f7d}, {0x1f80, 0x1f87}, {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7},
1250 {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7},
1251 {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4},
1252 {0x1ff6, 0x1ff7}, {0x210e, 0x210f}, {0x213c, 0x213d}, {0x2146, 0x2149},
1253 {0x2c30, 0x2c5e}, {0x2c65, 0x2c66}, {0x2c73, 0x2c74}, {0x2c76, 0x2c7b},
1254 {0x2ce3, 0x2ce4}, {0x2d00, 0x2d25}, {0xa72f, 0xa731}, {0xa771, 0xa778},
1255 {0xa793, 0xa795}, {0xab30, 0xab5a}, {0xab60, 0xab65}, {0xab70, 0xabbf},
1256 {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xff41, 0xff5a}, {0x10428, 0x1044f},
1257 {0x104d8, 0x104fb}, {0x10cc0, 0x10cf2}, {0x118c0, 0x118df}, {0x16e60, 0x16e7f},
1258 {0x1d41a, 0x1d433}, {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b},
1259 {0x1d4b6, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503},
1260 {0x1d51e, 0x1d537}, {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3},
1261 {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f}, {0x1d68a, 0x1d6a5},
1262 {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b},
1263 {0x1d736, 0x1d74e}, {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f},
1264 {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9}, {0x1e922, 0x1e943}}),
1265 CharacterClassWidths::HasBothBMPAndNonBMP);
1266 return characterClass;
1267}
1268
1269static std::unique_ptr<CharacterClass> createCharacterClass24()
1270{
1271 // Name = Other_Symbol, number of codePoints: 5984
1272 auto characterClass = std::make_unique<CharacterClass>(
1273 std::initializer_list<UChar32>({}),
1274 std::initializer_list<CharacterRange>({}),
1275 std::initializer_list<UChar32>({0x00a6, 0x00a9, 0x00ae, 0x00b0, 0x0482, 0x06de, 0x06e9, 0x07f6,
1276 0x09fa, 0x0b70, 0x0bfa, 0x0c7f, 0x0d4f, 0x0d79, 0x0f13, 0x0f34,
1277 0x0f36, 0x0f38, 0x1940, 0x2114, 0x2125, 0x2127, 0x2129, 0x212e,
1278 0x214a, 0x214f, 0x21d3, 0x3004, 0x3020, 0x3250, 0xa839, 0xfdfd,
1279 0xffe4, 0xffe8, 0x101a0, 0x10ac8, 0x1173f, 0x16b45, 0x1bc9c, 0x1d245,
1280 0x1ecac, 0x1f97a}),
1281 std::initializer_list<CharacterRange>({{0x058d, 0x058e}, {0x060e, 0x060f}, {0x06fd, 0x06fe}, {0x0bf3, 0x0bf8},
1282 {0x0f01, 0x0f03}, {0x0f15, 0x0f17}, {0x0f1a, 0x0f1f}, {0x0fbe, 0x0fc5},
1283 {0x0fc7, 0x0fcc}, {0x0fce, 0x0fcf}, {0x0fd5, 0x0fd8}, {0x109e, 0x109f},
1284 {0x1390, 0x1399}, {0x19de, 0x19ff}, {0x1b61, 0x1b6a}, {0x1b74, 0x1b7c},
1285 {0x2100, 0x2101}, {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2116, 0x2117},
1286 {0x211e, 0x2123}, {0x213a, 0x213b}, {0x214c, 0x214d}, {0x218a, 0x218b},
1287 {0x2195, 0x2199}, {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5},
1288 {0x21a7, 0x21ad}, {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d5, 0x21f3},
1289 {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b},
1290 {0x237d, 0x239a}, {0x23b4, 0x23db}, {0x23e2, 0x2426}, {0x2440, 0x244a},
1291 {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7},
1292 {0x2600, 0x266e}, {0x2670, 0x2767}, {0x2794, 0x27bf}, {0x2800, 0x28ff},
1293 {0x2b00, 0x2b2f}, {0x2b45, 0x2b46}, {0x2b4d, 0x2b73}, {0x2b76, 0x2b95},
1294 {0x2b98, 0x2bc8}, {0x2bca, 0x2bfe}, {0x2ce5, 0x2cea}, {0x2e80, 0x2e99},
1295 {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3012, 0x3013},
1296 {0x3036, 0x3037}, {0x303e, 0x303f}, {0x3190, 0x3191}, {0x3196, 0x319f},
1297 {0x31c0, 0x31e3}, {0x3200, 0x321e}, {0x322a, 0x3247}, {0x3260, 0x327f},
1298 {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff},
1299 {0xa490, 0xa4c6}, {0xa828, 0xa82b}, {0xa836, 0xa837}, {0xaa77, 0xaa79},
1300 {0xffed, 0xffee}, {0xfffc, 0xfffd}, {0x10137, 0x1013f}, {0x10179, 0x10189},
1301 {0x1018c, 0x1018e}, {0x10190, 0x1019b}, {0x101d0, 0x101fc}, {0x10877, 0x10878},
1302 {0x16b3c, 0x16b3f}, {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d129, 0x1d164},
1303 {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, {0x1d1ae, 0x1d1e8},
1304 {0x1d200, 0x1d241}, {0x1d300, 0x1d356}, {0x1d800, 0x1d9ff}, {0x1da37, 0x1da3a},
1305 {0x1da6d, 0x1da74}, {0x1da76, 0x1da83}, {0x1da85, 0x1da86}, {0x1f000, 0x1f02b},
1306 {0x1f030, 0x1f093}, {0x1f0a0, 0x1f0ae}, {0x1f0b1, 0x1f0bf}, {0x1f0c1, 0x1f0cf},
1307 {0x1f0d1, 0x1f0f5}, {0x1f110, 0x1f16b}, {0x1f170, 0x1f1ac}, {0x1f1e6, 0x1f202},
1308 {0x1f210, 0x1f23b}, {0x1f240, 0x1f248}, {0x1f250, 0x1f251}, {0x1f260, 0x1f265},
1309 {0x1f300, 0x1f3fa}, {0x1f400, 0x1f6d4}, {0x1f6e0, 0x1f6ec}, {0x1f6f0, 0x1f6f9},
1310 {0x1f700, 0x1f773}, {0x1f780, 0x1f7d8}, {0x1f800, 0x1f80b}, {0x1f810, 0x1f847},
1311 {0x1f850, 0x1f859}, {0x1f860, 0x1f887}, {0x1f890, 0x1f8ad}, {0x1f900, 0x1f90b},
1312 {0x1f910, 0x1f93e}, {0x1f940, 0x1f970}, {0x1f973, 0x1f976}, {0x1f97c, 0x1f9a2},
1313 {0x1f9b0, 0x1f9b9}, {0x1f9c0, 0x1f9c2}, {0x1f9d0, 0x1f9ff}, {0x1fa60, 0x1fa6d}}),
1314 CharacterClassWidths::HasBothBMPAndNonBMP);
1315 return characterClass;
1316}
1317
1318static std::unique_ptr<CharacterClass> createCharacterClass25()
1319{
1320 // Name = Other_Letter, number of codePoints: 121212
1321 auto characterClass = std::make_unique<CharacterClass>(
1322 std::initializer_list<UChar32>({}),
1323 std::initializer_list<CharacterRange>({}),
1324 std::initializer_list<UChar32>({0x00aa, 0x00ba, 0x01bb, 0x0294, 0x06d5, 0x06ff, 0x0710, 0x07b1,
1325 0x093d, 0x0950, 0x09b2, 0x09bd, 0x09ce, 0x09fc, 0x0a5e, 0x0abd,
1326 0x0ad0, 0x0af9, 0x0b3d, 0x0b71, 0x0b83, 0x0b9c, 0x0bd0, 0x0c3d,
1327 0x0c80, 0x0cbd, 0x0cde, 0x0d3d, 0x0d4e, 0x0dbd, 0x0e84, 0x0e8a,
1328 0x0e8d, 0x0ea5, 0x0ea7, 0x0ebd, 0x0f00, 0x103f, 0x1061, 0x108e,
1329 0x1258, 0x12c0, 0x17dc, 0x18aa, 0x3006, 0x303c, 0x309f, 0x30ff,
1330 0xa66e, 0xa78f, 0xa7f7, 0xa8fb, 0xaa7a, 0xaab1, 0xaac0, 0xaac2,
1331 0xaaf2, 0xfb1d, 0xfb3e, 0x10808, 0x1083c, 0x10a00, 0x10f27, 0x11144,
1332 0x11176, 0x111da, 0x111dc, 0x11288, 0x1133d, 0x11350, 0x114c7, 0x11644,
1333 0x118ff, 0x11a00, 0x11a3a, 0x11a50, 0x11a9d, 0x11c40, 0x11d46, 0x11d98,
1334 0x16f50, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42, 0x1ee47, 0x1ee49,
1335 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d, 0x1ee5f, 0x1ee64,
1336 0x1ee7e}),
1337 std::initializer_list<CharacterRange>({{0x01c0, 0x01c3}, {0x05d0, 0x05ea}, {0x05ef, 0x05f2}, {0x0620, 0x063f},
1338 {0x0641, 0x064a}, {0x066e, 0x066f}, {0x0671, 0x06d3}, {0x06ee, 0x06ef},
1339 {0x06fa, 0x06fc}, {0x0712, 0x072f}, {0x074d, 0x07a5}, {0x07ca, 0x07ea},
1340 {0x0800, 0x0815}, {0x0840, 0x0858}, {0x0860, 0x086a}, {0x08a0, 0x08b4},
1341 {0x08b6, 0x08bd}, {0x0904, 0x0939}, {0x0958, 0x0961}, {0x0972, 0x0980},
1342 {0x0985, 0x098c}, {0x098f, 0x0990}, {0x0993, 0x09a8}, {0x09aa, 0x09b0},
1343 {0x09b6, 0x09b9}, {0x09dc, 0x09dd}, {0x09df, 0x09e1}, {0x09f0, 0x09f1},
1344 {0x0a05, 0x0a0a}, {0x0a0f, 0x0a10}, {0x0a13, 0x0a28}, {0x0a2a, 0x0a30},
1345 {0x0a32, 0x0a33}, {0x0a35, 0x0a36}, {0x0a38, 0x0a39}, {0x0a59, 0x0a5c},
1346 {0x0a72, 0x0a74}, {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91}, {0x0a93, 0x0aa8},
1347 {0x0aaa, 0x0ab0}, {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9}, {0x0ae0, 0x0ae1},
1348 {0x0b05, 0x0b0c}, {0x0b0f, 0x0b10}, {0x0b13, 0x0b28}, {0x0b2a, 0x0b30},
1349 {0x0b32, 0x0b33}, {0x0b35, 0x0b39}, {0x0b5c, 0x0b5d}, {0x0b5f, 0x0b61},
1350 {0x0b85, 0x0b8a}, {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a},
1351 {0x0b9e, 0x0b9f}, {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9},
1352 {0x0c05, 0x0c0c}, {0x0c0e, 0x0c10}, {0x0c12, 0x0c28}, {0x0c2a, 0x0c39},
1353 {0x0c58, 0x0c5a}, {0x0c60, 0x0c61}, {0x0c85, 0x0c8c}, {0x0c8e, 0x0c90},
1354 {0x0c92, 0x0ca8}, {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9}, {0x0ce0, 0x0ce1},
1355 {0x0cf1, 0x0cf2}, {0x0d05, 0x0d0c}, {0x0d0e, 0x0d10}, {0x0d12, 0x0d3a},
1356 {0x0d54, 0x0d56}, {0x0d5f, 0x0d61}, {0x0d7a, 0x0d7f}, {0x0d85, 0x0d96},
1357 {0x0d9a, 0x0db1}, {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6}, {0x0e01, 0x0e30},
1358 {0x0e32, 0x0e33}, {0x0e40, 0x0e45}, {0x0e81, 0x0e82}, {0x0e87, 0x0e88},
1359 {0x0e94, 0x0e97}, {0x0e99, 0x0e9f}, {0x0ea1, 0x0ea3}, {0x0eaa, 0x0eab},
1360 {0x0ead, 0x0eb0}, {0x0eb2, 0x0eb3}, {0x0ec0, 0x0ec4}, {0x0edc, 0x0edf},
1361 {0x0f40, 0x0f47}, {0x0f49, 0x0f6c}, {0x0f88, 0x0f8c}, {0x1000, 0x102a},
1362 {0x1050, 0x1055}, {0x105a, 0x105d}, {0x1065, 0x1066}, {0x106e, 0x1070},
1363 {0x1075, 0x1081}, {0x1100, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256},
1364 {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0},
1365 {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6},
1366 {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a}, {0x1380, 0x138f},
1367 {0x1401, 0x166c}, {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea},
1368 {0x16f1, 0x16f8}, {0x1700, 0x170c}, {0x170e, 0x1711}, {0x1720, 0x1731},
1369 {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1780, 0x17b3},
1370 {0x1820, 0x1842}, {0x1844, 0x1878}, {0x1880, 0x1884}, {0x1887, 0x18a8},
1371 {0x18b0, 0x18f5}, {0x1900, 0x191e}, {0x1950, 0x196d}, {0x1970, 0x1974},
1372 {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x1a00, 0x1a16}, {0x1a20, 0x1a54},
1373 {0x1b05, 0x1b33}, {0x1b45, 0x1b4b}, {0x1b83, 0x1ba0}, {0x1bae, 0x1baf},
1374 {0x1bba, 0x1be5}, {0x1c00, 0x1c23}, {0x1c4d, 0x1c4f}, {0x1c5a, 0x1c77},
1375 {0x1ce9, 0x1cec}, {0x1cee, 0x1cf1}, {0x1cf5, 0x1cf6}, {0x2135, 0x2138},
1376 {0x2d30, 0x2d67}, {0x2d80, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae},
1377 {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce},
1378 {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x3041, 0x3096}, {0x30a1, 0x30fa},
1379 {0x3105, 0x312f}, {0x3131, 0x318e}, {0x31a0, 0x31ba}, {0x31f0, 0x31ff},
1380 {0x3400, 0x4db5}, {0x4e00, 0x9fef}, {0xa000, 0xa014}, {0xa016, 0xa48c},
1381 {0xa4d0, 0xa4f7}, {0xa500, 0xa60b}, {0xa610, 0xa61f}, {0xa62a, 0xa62b},
1382 {0xa6a0, 0xa6e5}, {0xa7fb, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a},
1383 {0xa80c, 0xa822}, {0xa840, 0xa873}, {0xa882, 0xa8b3}, {0xa8f2, 0xa8f7},
1384 {0xa8fd, 0xa8fe}, {0xa90a, 0xa925}, {0xa930, 0xa946}, {0xa960, 0xa97c},
1385 {0xa984, 0xa9b2}, {0xa9e0, 0xa9e4}, {0xa9e7, 0xa9ef}, {0xa9fa, 0xa9fe},
1386 {0xaa00, 0xaa28}, {0xaa40, 0xaa42}, {0xaa44, 0xaa4b}, {0xaa60, 0xaa6f},
1387 {0xaa71, 0xaa76}, {0xaa7e, 0xaaaf}, {0xaab5, 0xaab6}, {0xaab9, 0xaabd},
1388 {0xaadb, 0xaadc}, {0xaae0, 0xaaea}, {0xab01, 0xab06}, {0xab09, 0xab0e},
1389 {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xabc0, 0xabe2},
1390 {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d},
1391 {0xfa70, 0xfad9}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c},
1392 {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d},
1393 {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74},
1394 {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d}, {0xffa0, 0xffbe},
1395 {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc},
1396 {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d},
1397 {0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10280, 0x1029c},
1398 {0x102a0, 0x102d0}, {0x10300, 0x1031f}, {0x1032d, 0x10340}, {0x10342, 0x10349},
1399 {0x10350, 0x10375}, {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf},
1400 {0x10450, 0x1049d}, {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10600, 0x10736},
1401 {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10800, 0x10805}, {0x1080a, 0x10835},
1402 {0x10837, 0x10838}, {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e},
1403 {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939},
1404 {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a10, 0x10a13}, {0x10a15, 0x10a17},
1405 {0x10a19, 0x10a35}, {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7},
1406 {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55}, {0x10b60, 0x10b72},
1407 {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, {0x10d00, 0x10d23}, {0x10f00, 0x10f1c},
1408 {0x10f30, 0x10f45}, {0x11003, 0x11037}, {0x11083, 0x110af}, {0x110d0, 0x110e8},
1409 {0x11103, 0x11126}, {0x11150, 0x11172}, {0x11183, 0x111b2}, {0x111c1, 0x111c4},
1410 {0x11200, 0x11211}, {0x11213, 0x1122b}, {0x11280, 0x11286}, {0x1128a, 0x1128d},
1411 {0x1128f, 0x1129d}, {0x1129f, 0x112a8}, {0x112b0, 0x112de}, {0x11305, 0x1130c},
1412 {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333},
1413 {0x11335, 0x11339}, {0x1135d, 0x11361}, {0x11400, 0x11434}, {0x11447, 0x1144a},
1414 {0x11480, 0x114af}, {0x114c4, 0x114c5}, {0x11580, 0x115ae}, {0x115d8, 0x115db},
1415 {0x11600, 0x1162f}, {0x11680, 0x116aa}, {0x11700, 0x1171a}, {0x11800, 0x1182b},
1416 {0x11a0b, 0x11a32}, {0x11a5c, 0x11a83}, {0x11a86, 0x11a89}, {0x11ac0, 0x11af8},
1417 {0x11c00, 0x11c08}, {0x11c0a, 0x11c2e}, {0x11c72, 0x11c8f}, {0x11d00, 0x11d06},
1418 {0x11d08, 0x11d09}, {0x11d0b, 0x11d30}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68},
1419 {0x11d6a, 0x11d89}, {0x11ee0, 0x11ef2}, {0x12000, 0x12399}, {0x12480, 0x12543},
1420 {0x13000, 0x1342e}, {0x14400, 0x14646}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e},
1421 {0x16ad0, 0x16aed}, {0x16b00, 0x16b2f}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f},
1422 {0x16f00, 0x16f44}, {0x17000, 0x187f1}, {0x18800, 0x18af2}, {0x1b000, 0x1b11e},
1423 {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88},
1424 {0x1bc90, 0x1bc99}, {0x1e800, 0x1e8c4}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f},
1425 {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f},
1426 {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72},
1427 {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b},
1428 {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x20000, 0x2a6d6},
1429 {0x2a700, 0x2b734}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0},
1430 {0x2f800, 0x2fa1d}}),
1431 CharacterClassWidths::HasBothBMPAndNonBMP);
1432 return characterClass;
1433}
1434
1435static std::unique_ptr<CharacterClass> createCharacterClass26()
1436{
1437 // Name = Initial_Punctuation, number of codePoints: 12
1438 auto characterClass = std::make_unique<CharacterClass>(
1439 std::initializer_list<UChar32>({}),
1440 std::initializer_list<CharacterRange>({}),
1441 std::initializer_list<UChar32>({0x00ab, 0x2018, 0x201f, 0x2039, 0x2e02, 0x2e04, 0x2e09, 0x2e0c,
1442 0x2e1c, 0x2e20}),
1443 std::initializer_list<CharacterRange>({{0x201b, 0x201c}}),
1444 CharacterClassWidths::HasBMPChars);
1445 return characterClass;
1446}
1447
1448static std::unique_ptr<CharacterClass> createCharacterClass27()
1449{
1450 // Name = Format, number of codePoints: 152
1451 auto characterClass = std::make_unique<CharacterClass>(
1452 std::initializer_list<UChar32>({}),
1453 std::initializer_list<CharacterRange>({}),
1454 std::initializer_list<UChar32>({0x00ad, 0x061c, 0x06dd, 0x070f, 0x08e2, 0x180e, 0xfeff, 0x110bd,
1455 0x110cd, 0xe0001}),
1456 std::initializer_list<CharacterRange>({{0x0600, 0x0605}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2064},
1457 {0x2066, 0x206f}, {0xfff9, 0xfffb}, {0x1bca0, 0x1bca3}, {0x1d173, 0x1d17a},
1458 {0xe0020, 0xe007f}}),
1459 CharacterClassWidths::HasBothBMPAndNonBMP);
1460 return characterClass;
1461}
1462
1463static std::unique_ptr<CharacterClass> createCharacterClass28()
1464{
1465 // Name = Other_Number, number of codePoints: 807
1466 auto characterClass = std::make_unique<CharacterClass>(
1467 std::initializer_list<UChar32>({}),
1468 std::initializer_list<CharacterRange>({}),
1469 std::initializer_list<UChar32>({0x00b9, 0x19da, 0x2070, 0x2189, 0x2cfd}),
1470 std::initializer_list<CharacterRange>({{0x00b2, 0x00b3}, {0x00bc, 0x00be}, {0x09f4, 0x09f9}, {0x0b72, 0x0b77},
1471 {0x0bf0, 0x0bf2}, {0x0c78, 0x0c7e}, {0x0d58, 0x0d5e}, {0x0d70, 0x0d78},
1472 {0x0f2a, 0x0f33}, {0x1369, 0x137c}, {0x17f0, 0x17f9}, {0x2074, 0x2079},
1473 {0x2080, 0x2089}, {0x2150, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff},
1474 {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3248, 0x324f},
1475 {0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf}, {0xa830, 0xa835},
1476 {0x10107, 0x10133}, {0x10175, 0x10178}, {0x1018a, 0x1018b}, {0x102e1, 0x102fb},
1477 {0x10320, 0x10323}, {0x10858, 0x1085f}, {0x10879, 0x1087f}, {0x108a7, 0x108af},
1478 {0x108fb, 0x108ff}, {0x10916, 0x1091b}, {0x109bc, 0x109bd}, {0x109c0, 0x109cf},
1479 {0x109d2, 0x109ff}, {0x10a40, 0x10a48}, {0x10a7d, 0x10a7e}, {0x10a9d, 0x10a9f},
1480 {0x10aeb, 0x10aef}, {0x10b58, 0x10b5f}, {0x10b78, 0x10b7f}, {0x10ba9, 0x10baf},
1481 {0x10cfa, 0x10cff}, {0x10e60, 0x10e7e}, {0x10f1d, 0x10f26}, {0x10f51, 0x10f54},
1482 {0x11052, 0x11065}, {0x111e1, 0x111f4}, {0x1173a, 0x1173b}, {0x118ea, 0x118f2},
1483 {0x11c5a, 0x11c6c}, {0x16b5b, 0x16b61}, {0x16e80, 0x16e96}, {0x1d2e0, 0x1d2f3},
1484 {0x1d360, 0x1d378}, {0x1e8c7, 0x1e8cf}, {0x1ec71, 0x1ecab}, {0x1ecad, 0x1ecaf},
1485 {0x1ecb1, 0x1ecb4}, {0x1f100, 0x1f10c}}),
1486 CharacterClassWidths::HasBothBMPAndNonBMP);
1487 return characterClass;
1488}
1489
1490static std::unique_ptr<CharacterClass> createCharacterClass29()
1491{
1492 // Name = Final_Punctuation, number of codePoints: 10
1493 auto characterClass = std::make_unique<CharacterClass>(
1494 std::initializer_list<UChar32>({}),
1495 std::initializer_list<CharacterRange>({}),
1496 std::initializer_list<UChar32>({0x00bb, 0x2019, 0x201d, 0x203a, 0x2e03, 0x2e05, 0x2e0a, 0x2e0d,
1497 0x2e1d, 0x2e21}),
1498 std::initializer_list<CharacterRange>({}),
1499 CharacterClassWidths::HasBMPChars);
1500 return characterClass;
1501}
1502
1503static std::unique_ptr<CharacterClass> createCharacterClass30()
1504{
1505 // Name = Titlecase_Letter, number of codePoints: 31
1506 auto characterClass = std::make_unique<CharacterClass>(
1507 std::initializer_list<UChar32>({}),
1508 std::initializer_list<CharacterRange>({}),
1509 std::initializer_list<UChar32>({0x01c5, 0x01c8, 0x01cb, 0x01f2, 0x1fbc, 0x1fcc, 0x1ffc}),
1510 std::initializer_list<CharacterRange>({{0x1f88, 0x1f8f}, {0x1f98, 0x1f9f}, {0x1fa8, 0x1faf}}),
1511 CharacterClassWidths::HasBMPChars);
1512 return characterClass;
1513}
1514
1515static std::unique_ptr<CharacterClass> createCharacterClass31()
1516{
1517 // Name = Modifier_Letter, number of codePoints: 250
1518 auto characterClass = std::make_unique<CharacterClass>(
1519 std::initializer_list<UChar32>({}),
1520 std::initializer_list<CharacterRange>({}),
1521 std::initializer_list<UChar32>({0x02ec, 0x02ee, 0x0374, 0x037a, 0x0559, 0x0640, 0x07fa, 0x081a,
1522 0x0824, 0x0828, 0x0971, 0x0e46, 0x0ec6, 0x10fc, 0x17d7, 0x1843,
1523 0x1aa7, 0x1d78, 0x2071, 0x207f, 0x2d6f, 0x2e2f, 0x3005, 0x303b,
1524 0xa015, 0xa60c, 0xa67f, 0xa770, 0xa788, 0xa9cf, 0xa9e6, 0xaa70,
1525 0xaadd, 0xff70}),
1526 std::initializer_list<CharacterRange>({{0x02b0, 0x02c1}, {0x02c6, 0x02d1}, {0x02e0, 0x02e4}, {0x06e5, 0x06e6},
1527 {0x07f4, 0x07f5}, {0x1c78, 0x1c7d}, {0x1d2c, 0x1d6a}, {0x1d9b, 0x1dbf},
1528 {0x2090, 0x209c}, {0x2c7c, 0x2c7d}, {0x3031, 0x3035}, {0x309d, 0x309e},
1529 {0x30fc, 0x30fe}, {0xa4f8, 0xa4fd}, {0xa69c, 0xa69d}, {0xa717, 0xa71f},
1530 {0xa7f8, 0xa7f9}, {0xaaf3, 0xaaf4}, {0xab5c, 0xab5f}, {0xff9e, 0xff9f},
1531 {0x16b40, 0x16b43}, {0x16f93, 0x16f9f}, {0x16fe0, 0x16fe1}}),
1532 CharacterClassWidths::HasBothBMPAndNonBMP);
1533 return characterClass;
1534}
1535
1536static std::unique_ptr<CharacterClass> createCharacterClass32()
1537{
1538 // Name = Mark, number of codePoints: 2233
1539 auto characterClass = std::make_unique<CharacterClass>(
1540 std::initializer_list<UChar32>({}),
1541 std::initializer_list<CharacterRange>({}),
1542 std::initializer_list<UChar32>({0x05bf, 0x05c7, 0x0670, 0x0711, 0x07fd, 0x09bc, 0x09d7, 0x09fe,
1543 0x0a3c, 0x0a51, 0x0a75, 0x0abc, 0x0b3c, 0x0b82, 0x0bd7, 0x0cbc,
1544 0x0d57, 0x0dca, 0x0dd6, 0x0e31, 0x0eb1, 0x0f35, 0x0f37, 0x0f39,
1545 0x0fc6, 0x108f, 0x17dd, 0x18a9, 0x1a7f, 0x1ced, 0x2d7f, 0xa802,
1546 0xa806, 0xa80b, 0xa8ff, 0xa9e5, 0xaa43, 0xaab0, 0xaac1, 0xfb1e,
1547 0x101fd, 0x102e0, 0x10a3f, 0x11173, 0x1123e, 0x11357, 0x1145e, 0x11a47,
1548 0x11d3a, 0x11d47, 0x1da75, 0x1da84}),
1549 std::initializer_list<CharacterRange>({{0x0300, 0x036f}, {0x0483, 0x0489}, {0x0591, 0x05bd}, {0x05c1, 0x05c2},
1550 {0x05c4, 0x05c5}, {0x0610, 0x061a}, {0x064b, 0x065f}, {0x06d6, 0x06dc},
1551 {0x06df, 0x06e4}, {0x06e7, 0x06e8}, {0x06ea, 0x06ed}, {0x0730, 0x074a},
1552 {0x07a6, 0x07b0}, {0x07eb, 0x07f3}, {0x0816, 0x0819}, {0x081b, 0x0823},
1553 {0x0825, 0x0827}, {0x0829, 0x082d}, {0x0859, 0x085b}, {0x08d3, 0x08e1},
1554 {0x08e3, 0x0903}, {0x093a, 0x093c}, {0x093e, 0x094f}, {0x0951, 0x0957},
1555 {0x0962, 0x0963}, {0x0981, 0x0983}, {0x09be, 0x09c4}, {0x09c7, 0x09c8},
1556 {0x09cb, 0x09cd}, {0x09e2, 0x09e3}, {0x0a01, 0x0a03}, {0x0a3e, 0x0a42},
1557 {0x0a47, 0x0a48}, {0x0a4b, 0x0a4d}, {0x0a70, 0x0a71}, {0x0a81, 0x0a83},
1558 {0x0abe, 0x0ac5}, {0x0ac7, 0x0ac9}, {0x0acb, 0x0acd}, {0x0ae2, 0x0ae3},
1559 {0x0afa, 0x0aff}, {0x0b01, 0x0b03}, {0x0b3e, 0x0b44}, {0x0b47, 0x0b48},
1560 {0x0b4b, 0x0b4d}, {0x0b56, 0x0b57}, {0x0b62, 0x0b63}, {0x0bbe, 0x0bc2},
1561 {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcd}, {0x0c00, 0x0c04}, {0x0c3e, 0x0c44},
1562 {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56}, {0x0c62, 0x0c63},
1563 {0x0c81, 0x0c83}, {0x0cbe, 0x0cc4}, {0x0cc6, 0x0cc8}, {0x0cca, 0x0ccd},
1564 {0x0cd5, 0x0cd6}, {0x0ce2, 0x0ce3}, {0x0d00, 0x0d03}, {0x0d3b, 0x0d3c},
1565 {0x0d3e, 0x0d44}, {0x0d46, 0x0d48}, {0x0d4a, 0x0d4d}, {0x0d62, 0x0d63},
1566 {0x0d82, 0x0d83}, {0x0dcf, 0x0dd4}, {0x0dd8, 0x0ddf}, {0x0df2, 0x0df3},
1567 {0x0e34, 0x0e3a}, {0x0e47, 0x0e4e}, {0x0eb4, 0x0eb9}, {0x0ebb, 0x0ebc},
1568 {0x0ec8, 0x0ecd}, {0x0f18, 0x0f19}, {0x0f3e, 0x0f3f}, {0x0f71, 0x0f84},
1569 {0x0f86, 0x0f87}, {0x0f8d, 0x0f97}, {0x0f99, 0x0fbc}, {0x102b, 0x103e},
1570 {0x1056, 0x1059}, {0x105e, 0x1060}, {0x1062, 0x1064}, {0x1067, 0x106d},
1571 {0x1071, 0x1074}, {0x1082, 0x108d}, {0x109a, 0x109d}, {0x135d, 0x135f},
1572 {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773},
1573 {0x17b4, 0x17d3}, {0x180b, 0x180d}, {0x1885, 0x1886}, {0x1920, 0x192b},
1574 {0x1930, 0x193b}, {0x1a17, 0x1a1b}, {0x1a55, 0x1a5e}, {0x1a60, 0x1a7c},
1575 {0x1ab0, 0x1abe}, {0x1b00, 0x1b04}, {0x1b34, 0x1b44}, {0x1b6b, 0x1b73},
1576 {0x1b80, 0x1b82}, {0x1ba1, 0x1bad}, {0x1be6, 0x1bf3}, {0x1c24, 0x1c37},
1577 {0x1cd0, 0x1cd2}, {0x1cd4, 0x1ce8}, {0x1cf2, 0x1cf4}, {0x1cf7, 0x1cf9},
1578 {0x1dc0, 0x1df9}, {0x1dfb, 0x1dff}, {0x20d0, 0x20f0}, {0x2cef, 0x2cf1},
1579 {0x2de0, 0x2dff}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xa66f, 0xa672},
1580 {0xa674, 0xa67d}, {0xa69e, 0xa69f}, {0xa6f0, 0xa6f1}, {0xa823, 0xa827},
1581 {0xa880, 0xa881}, {0xa8b4, 0xa8c5}, {0xa8e0, 0xa8f1}, {0xa926, 0xa92d},
1582 {0xa947, 0xa953}, {0xa980, 0xa983}, {0xa9b3, 0xa9c0}, {0xaa29, 0xaa36},
1583 {0xaa4c, 0xaa4d}, {0xaa7b, 0xaa7d}, {0xaab2, 0xaab4}, {0xaab7, 0xaab8},
1584 {0xaabe, 0xaabf}, {0xaaeb, 0xaaef}, {0xaaf5, 0xaaf6}, {0xabe3, 0xabea},
1585 {0xabec, 0xabed}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe2f}, {0x10376, 0x1037a},
1586 {0x10a01, 0x10a03}, {0x10a05, 0x10a06}, {0x10a0c, 0x10a0f}, {0x10a38, 0x10a3a},
1587 {0x10ae5, 0x10ae6}, {0x10d24, 0x10d27}, {0x10f46, 0x10f50}, {0x11000, 0x11002},
1588 {0x11038, 0x11046}, {0x1107f, 0x11082}, {0x110b0, 0x110ba}, {0x11100, 0x11102},
1589 {0x11127, 0x11134}, {0x11145, 0x11146}, {0x11180, 0x11182}, {0x111b3, 0x111c0},
1590 {0x111c9, 0x111cc}, {0x1122c, 0x11237}, {0x112df, 0x112ea}, {0x11300, 0x11303},
1591 {0x1133b, 0x1133c}, {0x1133e, 0x11344}, {0x11347, 0x11348}, {0x1134b, 0x1134d},
1592 {0x11362, 0x11363}, {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11435, 0x11446},
1593 {0x114b0, 0x114c3}, {0x115af, 0x115b5}, {0x115b8, 0x115c0}, {0x115dc, 0x115dd},
1594 {0x11630, 0x11640}, {0x116ab, 0x116b7}, {0x1171d, 0x1172b}, {0x1182c, 0x1183a},
1595 {0x11a01, 0x11a0a}, {0x11a33, 0x11a39}, {0x11a3b, 0x11a3e}, {0x11a51, 0x11a5b},
1596 {0x11a8a, 0x11a99}, {0x11c2f, 0x11c36}, {0x11c38, 0x11c3f}, {0x11c92, 0x11ca7},
1597 {0x11ca9, 0x11cb6}, {0x11d31, 0x11d36}, {0x11d3c, 0x11d3d}, {0x11d3f, 0x11d45},
1598 {0x11d8a, 0x11d8e}, {0x11d90, 0x11d91}, {0x11d93, 0x11d97}, {0x11ef3, 0x11ef6},
1599 {0x16af0, 0x16af4}, {0x16b30, 0x16b36}, {0x16f51, 0x16f7e}, {0x16f8f, 0x16f92},
1600 {0x1bc9d, 0x1bc9e}, {0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, {0x1d17b, 0x1d182},
1601 {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244}, {0x1da00, 0x1da36},
1602 {0x1da3b, 0x1da6c}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1e000, 0x1e006},
1603 {0x1e008, 0x1e018}, {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a},
1604 {0x1e8d0, 0x1e8d6}, {0x1e944, 0x1e94a}, {0xe0100, 0xe01ef}}),
1605 CharacterClassWidths::HasBothBMPAndNonBMP);
1606 return characterClass;
1607}
1608
1609static std::unique_ptr<CharacterClass> createCharacterClass33()
1610{
1611 // Name = Nonspacing_Mark, number of codePoints: 1805
1612 auto characterClass = std::make_unique<CharacterClass>(
1613 std::initializer_list<UChar32>({}),
1614 std::initializer_list<CharacterRange>({}),
1615 std::initializer_list<UChar32>({0x05bf, 0x05c7, 0x0670, 0x0711, 0x07fd, 0x093a, 0x093c, 0x094d,
1616 0x0981, 0x09bc, 0x09cd, 0x09fe, 0x0a3c, 0x0a51, 0x0a75, 0x0abc,
1617 0x0acd, 0x0b01, 0x0b3c, 0x0b3f, 0x0b4d, 0x0b56, 0x0b82, 0x0bc0,
1618 0x0bcd, 0x0c00, 0x0c04, 0x0c81, 0x0cbc, 0x0cbf, 0x0cc6, 0x0d4d,
1619 0x0dca, 0x0dd6, 0x0e31, 0x0eb1, 0x0f35, 0x0f37, 0x0f39, 0x0fc6,
1620 0x1082, 0x108d, 0x109d, 0x17c6, 0x17dd, 0x18a9, 0x1932, 0x1a1b,
1621 0x1a56, 0x1a60, 0x1a62, 0x1a7f, 0x1b34, 0x1b3c, 0x1b42, 0x1be6,
1622 0x1bed, 0x1ced, 0x1cf4, 0x20e1, 0x2d7f, 0xa66f, 0xa802, 0xa806,
1623 0xa80b, 0xa8ff, 0xa9b3, 0xa9bc, 0xa9e5, 0xaa43, 0xaa4c, 0xaa7c,
1624 0xaab0, 0xaac1, 0xaaf6, 0xabe5, 0xabe8, 0xabed, 0xfb1e, 0x101fd,
1625 0x102e0, 0x10a3f, 0x11001, 0x11173, 0x11234, 0x1123e, 0x112df, 0x11340,
1626 0x11446, 0x1145e, 0x114ba, 0x1163d, 0x116ab, 0x116ad, 0x116b7, 0x11a47,
1627 0x11c3f, 0x11d3a, 0x11d47, 0x11d95, 0x11d97, 0x1da75, 0x1da84}),
1628 std::initializer_list<CharacterRange>({{0x0300, 0x036f}, {0x0483, 0x0487}, {0x0591, 0x05bd}, {0x05c1, 0x05c2},
1629 {0x05c4, 0x05c5}, {0x0610, 0x061a}, {0x064b, 0x065f}, {0x06d6, 0x06dc},
1630 {0x06df, 0x06e4}, {0x06e7, 0x06e8}, {0x06ea, 0x06ed}, {0x0730, 0x074a},
1631 {0x07a6, 0x07b0}, {0x07eb, 0x07f3}, {0x0816, 0x0819}, {0x081b, 0x0823},
1632 {0x0825, 0x0827}, {0x0829, 0x082d}, {0x0859, 0x085b}, {0x08d3, 0x08e1},
1633 {0x08e3, 0x0902}, {0x0941, 0x0948}, {0x0951, 0x0957}, {0x0962, 0x0963},
1634 {0x09c1, 0x09c4}, {0x09e2, 0x09e3}, {0x0a01, 0x0a02}, {0x0a41, 0x0a42},
1635 {0x0a47, 0x0a48}, {0x0a4b, 0x0a4d}, {0x0a70, 0x0a71}, {0x0a81, 0x0a82},
1636 {0x0ac1, 0x0ac5}, {0x0ac7, 0x0ac8}, {0x0ae2, 0x0ae3}, {0x0afa, 0x0aff},
1637 {0x0b41, 0x0b44}, {0x0b62, 0x0b63}, {0x0c3e, 0x0c40}, {0x0c46, 0x0c48},
1638 {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56}, {0x0c62, 0x0c63}, {0x0ccc, 0x0ccd},
1639 {0x0ce2, 0x0ce3}, {0x0d00, 0x0d01}, {0x0d3b, 0x0d3c}, {0x0d41, 0x0d44},
1640 {0x0d62, 0x0d63}, {0x0dd2, 0x0dd4}, {0x0e34, 0x0e3a}, {0x0e47, 0x0e4e},
1641 {0x0eb4, 0x0eb9}, {0x0ebb, 0x0ebc}, {0x0ec8, 0x0ecd}, {0x0f18, 0x0f19},
1642 {0x0f71, 0x0f7e}, {0x0f80, 0x0f84}, {0x0f86, 0x0f87}, {0x0f8d, 0x0f97},
1643 {0x0f99, 0x0fbc}, {0x102d, 0x1030}, {0x1032, 0x1037}, {0x1039, 0x103a},
1644 {0x103d, 0x103e}, {0x1058, 0x1059}, {0x105e, 0x1060}, {0x1071, 0x1074},
1645 {0x1085, 0x1086}, {0x135d, 0x135f}, {0x1712, 0x1714}, {0x1732, 0x1734},
1646 {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b4, 0x17b5}, {0x17b7, 0x17bd},
1647 {0x17c9, 0x17d3}, {0x180b, 0x180d}, {0x1885, 0x1886}, {0x1920, 0x1922},
1648 {0x1927, 0x1928}, {0x1939, 0x193b}, {0x1a17, 0x1a18}, {0x1a58, 0x1a5e},
1649 {0x1a65, 0x1a6c}, {0x1a73, 0x1a7c}, {0x1ab0, 0x1abd}, {0x1b00, 0x1b03},
1650 {0x1b36, 0x1b3a}, {0x1b6b, 0x1b73}, {0x1b80, 0x1b81}, {0x1ba2, 0x1ba5},
1651 {0x1ba8, 0x1ba9}, {0x1bab, 0x1bad}, {0x1be8, 0x1be9}, {0x1bef, 0x1bf1},
1652 {0x1c2c, 0x1c33}, {0x1c36, 0x1c37}, {0x1cd0, 0x1cd2}, {0x1cd4, 0x1ce0},
1653 {0x1ce2, 0x1ce8}, {0x1cf8, 0x1cf9}, {0x1dc0, 0x1df9}, {0x1dfb, 0x1dff},
1654 {0x20d0, 0x20dc}, {0x20e5, 0x20f0}, {0x2cef, 0x2cf1}, {0x2de0, 0x2dff},
1655 {0x302a, 0x302d}, {0x3099, 0x309a}, {0xa674, 0xa67d}, {0xa69e, 0xa69f},
1656 {0xa6f0, 0xa6f1}, {0xa825, 0xa826}, {0xa8c4, 0xa8c5}, {0xa8e0, 0xa8f1},
1657 {0xa926, 0xa92d}, {0xa947, 0xa951}, {0xa980, 0xa982}, {0xa9b6, 0xa9b9},
1658 {0xaa29, 0xaa2e}, {0xaa31, 0xaa32}, {0xaa35, 0xaa36}, {0xaab2, 0xaab4},
1659 {0xaab7, 0xaab8}, {0xaabe, 0xaabf}, {0xaaec, 0xaaed}, {0xfe00, 0xfe0f},
1660 {0xfe20, 0xfe2f}, {0x10376, 0x1037a}, {0x10a01, 0x10a03}, {0x10a05, 0x10a06},
1661 {0x10a0c, 0x10a0f}, {0x10a38, 0x10a3a}, {0x10ae5, 0x10ae6}, {0x10d24, 0x10d27},
1662 {0x10f46, 0x10f50}, {0x11038, 0x11046}, {0x1107f, 0x11081}, {0x110b3, 0x110b6},
1663 {0x110b9, 0x110ba}, {0x11100, 0x11102}, {0x11127, 0x1112b}, {0x1112d, 0x11134},
1664 {0x11180, 0x11181}, {0x111b6, 0x111be}, {0x111c9, 0x111cc}, {0x1122f, 0x11231},
1665 {0x11236, 0x11237}, {0x112e3, 0x112ea}, {0x11300, 0x11301}, {0x1133b, 0x1133c},
1666 {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11438, 0x1143f}, {0x11442, 0x11444},
1667 {0x114b3, 0x114b8}, {0x114bf, 0x114c0}, {0x114c2, 0x114c3}, {0x115b2, 0x115b5},
1668 {0x115bc, 0x115bd}, {0x115bf, 0x115c0}, {0x115dc, 0x115dd}, {0x11633, 0x1163a},
1669 {0x1163f, 0x11640}, {0x116b0, 0x116b5}, {0x1171d, 0x1171f}, {0x11722, 0x11725},
1670 {0x11727, 0x1172b}, {0x1182f, 0x11837}, {0x11839, 0x1183a}, {0x11a01, 0x11a0a},
1671 {0x11a33, 0x11a38}, {0x11a3b, 0x11a3e}, {0x11a51, 0x11a56}, {0x11a59, 0x11a5b},
1672 {0x11a8a, 0x11a96}, {0x11a98, 0x11a99}, {0x11c30, 0x11c36}, {0x11c38, 0x11c3d},
1673 {0x11c92, 0x11ca7}, {0x11caa, 0x11cb0}, {0x11cb2, 0x11cb3}, {0x11cb5, 0x11cb6},
1674 {0x11d31, 0x11d36}, {0x11d3c, 0x11d3d}, {0x11d3f, 0x11d45}, {0x11d90, 0x11d91},
1675 {0x11ef3, 0x11ef4}, {0x16af0, 0x16af4}, {0x16b30, 0x16b36}, {0x16f8f, 0x16f92},
1676 {0x1bc9d, 0x1bc9e}, {0x1d167, 0x1d169}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b},
1677 {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244}, {0x1da00, 0x1da36}, {0x1da3b, 0x1da6c},
1678 {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1e000, 0x1e006}, {0x1e008, 0x1e018},
1679 {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a}, {0x1e8d0, 0x1e8d6},
1680 {0x1e944, 0x1e94a}, {0xe0100, 0xe01ef}}),
1681 CharacterClassWidths::HasBothBMPAndNonBMP);
1682 return characterClass;
1683}
1684
1685static std::unique_ptr<CharacterClass> createCharacterClass34()
1686{
1687 // Name = Enclosing_Mark, number of codePoints: 13
1688 auto characterClass = std::make_unique<CharacterClass>(
1689 std::initializer_list<UChar32>({}),
1690 std::initializer_list<CharacterRange>({}),
1691 std::initializer_list<UChar32>({0x1abe}),
1692 std::initializer_list<CharacterRange>({{0x0488, 0x0489}, {0x20dd, 0x20e0}, {0x20e2, 0x20e4}, {0xa670, 0xa672}}),
1693 CharacterClassWidths::HasBMPChars);
1694 return characterClass;
1695}
1696
1697static std::unique_ptr<CharacterClass> createCharacterClass35()
1698{
1699 // Name = Spacing_Mark, number of codePoints: 415
1700 auto characterClass = std::make_unique<CharacterClass>(
1701 std::initializer_list<UChar32>({}),
1702 std::initializer_list<CharacterRange>({}),
1703 std::initializer_list<UChar32>({0x0903, 0x093b, 0x09d7, 0x0a03, 0x0a83, 0x0ac9, 0x0b3e, 0x0b40,
1704 0x0b57, 0x0bd7, 0x0cbe, 0x0d57, 0x0f7f, 0x1031, 0x1038, 0x108f,
1705 0x17b6, 0x1a55, 0x1a57, 0x1a61, 0x1b04, 0x1b35, 0x1b3b, 0x1b82,
1706 0x1ba1, 0x1baa, 0x1be7, 0x1bee, 0x1ce1, 0x1cf7, 0xa827, 0xa983,
1707 0xaa4d, 0xaa7b, 0xaa7d, 0xaaeb, 0xaaf5, 0xabec, 0x11000, 0x11002,
1708 0x11082, 0x1112c, 0x11182, 0x11235, 0x11357, 0x11445, 0x114b9, 0x114c1,
1709 0x115be, 0x1163e, 0x116ac, 0x116b6, 0x11726, 0x11838, 0x11a39, 0x11a97,
1710 0x11c2f, 0x11c3e, 0x11ca9, 0x11cb1, 0x11cb4, 0x11d96}),
1711 std::initializer_list<CharacterRange>({{0x093e, 0x0940}, {0x0949, 0x094c}, {0x094e, 0x094f}, {0x0982, 0x0983},
1712 {0x09be, 0x09c0}, {0x09c7, 0x09c8}, {0x09cb, 0x09cc}, {0x0a3e, 0x0a40},
1713 {0x0abe, 0x0ac0}, {0x0acb, 0x0acc}, {0x0b02, 0x0b03}, {0x0b47, 0x0b48},
1714 {0x0b4b, 0x0b4c}, {0x0bbe, 0x0bbf}, {0x0bc1, 0x0bc2}, {0x0bc6, 0x0bc8},
1715 {0x0bca, 0x0bcc}, {0x0c01, 0x0c03}, {0x0c41, 0x0c44}, {0x0c82, 0x0c83},
1716 {0x0cc0, 0x0cc4}, {0x0cc7, 0x0cc8}, {0x0cca, 0x0ccb}, {0x0cd5, 0x0cd6},
1717 {0x0d02, 0x0d03}, {0x0d3e, 0x0d40}, {0x0d46, 0x0d48}, {0x0d4a, 0x0d4c},
1718 {0x0d82, 0x0d83}, {0x0dcf, 0x0dd1}, {0x0dd8, 0x0ddf}, {0x0df2, 0x0df3},
1719 {0x0f3e, 0x0f3f}, {0x102b, 0x102c}, {0x103b, 0x103c}, {0x1056, 0x1057},
1720 {0x1062, 0x1064}, {0x1067, 0x106d}, {0x1083, 0x1084}, {0x1087, 0x108c},
1721 {0x109a, 0x109c}, {0x17be, 0x17c5}, {0x17c7, 0x17c8}, {0x1923, 0x1926},
1722 {0x1929, 0x192b}, {0x1930, 0x1931}, {0x1933, 0x1938}, {0x1a19, 0x1a1a},
1723 {0x1a63, 0x1a64}, {0x1a6d, 0x1a72}, {0x1b3d, 0x1b41}, {0x1b43, 0x1b44},
1724 {0x1ba6, 0x1ba7}, {0x1bea, 0x1bec}, {0x1bf2, 0x1bf3}, {0x1c24, 0x1c2b},
1725 {0x1c34, 0x1c35}, {0x1cf2, 0x1cf3}, {0x302e, 0x302f}, {0xa823, 0xa824},
1726 {0xa880, 0xa881}, {0xa8b4, 0xa8c3}, {0xa952, 0xa953}, {0xa9b4, 0xa9b5},
1727 {0xa9ba, 0xa9bb}, {0xa9bd, 0xa9c0}, {0xaa2f, 0xaa30}, {0xaa33, 0xaa34},
1728 {0xaaee, 0xaaef}, {0xabe3, 0xabe4}, {0xabe6, 0xabe7}, {0xabe9, 0xabea},
1729 {0x110b0, 0x110b2}, {0x110b7, 0x110b8}, {0x11145, 0x11146}, {0x111b3, 0x111b5},
1730 {0x111bf, 0x111c0}, {0x1122c, 0x1122e}, {0x11232, 0x11233}, {0x112e0, 0x112e2},
1731 {0x11302, 0x11303}, {0x1133e, 0x1133f}, {0x11341, 0x11344}, {0x11347, 0x11348},
1732 {0x1134b, 0x1134d}, {0x11362, 0x11363}, {0x11435, 0x11437}, {0x11440, 0x11441},
1733 {0x114b0, 0x114b2}, {0x114bb, 0x114be}, {0x115af, 0x115b1}, {0x115b8, 0x115bb},
1734 {0x11630, 0x11632}, {0x1163b, 0x1163c}, {0x116ae, 0x116af}, {0x11720, 0x11721},
1735 {0x1182c, 0x1182e}, {0x11a57, 0x11a58}, {0x11d8a, 0x11d8e}, {0x11d93, 0x11d94},
1736 {0x11ef5, 0x11ef6}, {0x16f51, 0x16f7e}, {0x1d165, 0x1d166}, {0x1d16d, 0x1d172}}),
1737 CharacterClassWidths::HasBothBMPAndNonBMP);
1738 return characterClass;
1739}
1740
1741static std::unique_ptr<CharacterClass> createCharacterClass36()
1742{
1743 // Name = Letter_Number, number of codePoints: 236
1744 auto characterClass = std::make_unique<CharacterClass>(
1745 std::initializer_list<UChar32>({}),
1746 std::initializer_list<CharacterRange>({}),
1747 std::initializer_list<UChar32>({0x3007, 0x10341, 0x1034a}),
1748 std::initializer_list<CharacterRange>({{0x16ee, 0x16f0}, {0x2160, 0x2182}, {0x2185, 0x2188}, {0x3021, 0x3029},
1749 {0x3038, 0x303a}, {0xa6e6, 0xa6ef}, {0x10140, 0x10174}, {0x103d1, 0x103d5},
1750 {0x12400, 0x1246e}}),
1751 CharacterClassWidths::HasBothBMPAndNonBMP);
1752 return characterClass;
1753}
1754
1755static std::unique_ptr<CharacterClass> createCharacterClass37()
1756{
1757 // Name = Line_Separator, number of codePoints: 1
1758 auto characterClass = std::make_unique<CharacterClass>(
1759 std::initializer_list<UChar32>({}),
1760 std::initializer_list<CharacterRange>({}),
1761 std::initializer_list<UChar32>({0x2028}),
1762 std::initializer_list<CharacterRange>({}),
1763 CharacterClassWidths::HasBMPChars);
1764 return characterClass;
1765}
1766
1767static std::unique_ptr<CharacterClass> createCharacterClass38()
1768{
1769 // Name = Paragraph_Separator, number of codePoints: 1
1770 auto characterClass = std::make_unique<CharacterClass>(
1771 std::initializer_list<UChar32>({}),
1772 std::initializer_list<CharacterRange>({}),
1773 std::initializer_list<UChar32>({0x2029}),
1774 std::initializer_list<CharacterRange>({}),
1775 CharacterClassWidths::HasBMPChars);
1776 return characterClass;
1777}
1778
1779static std::unique_ptr<CharacterClass> createCharacterClass39()
1780{
1781 // Name = Surrogate, number of codePoints: 2048
1782 auto characterClass = std::make_unique<CharacterClass>(
1783 std::initializer_list<UChar32>({}),
1784 std::initializer_list<CharacterRange>({}),
1785 std::initializer_list<UChar32>({}),
1786 std::initializer_list<CharacterRange>({{0xd800, 0xdfff}}),
1787 CharacterClassWidths::HasBMPChars);
1788 return characterClass;
1789}
1790
1791static std::unique_ptr<CharacterClass> createCharacterClass40()
1792{
1793 // Name = Private_Use, number of codePoints: 137468
1794 auto characterClass = std::make_unique<CharacterClass>(
1795 std::initializer_list<UChar32>({}),
1796 std::initializer_list<CharacterRange>({}),
1797 std::initializer_list<UChar32>({}),
1798 std::initializer_list<CharacterRange>({{0xe000, 0xf8ff}, {0xf0000, 0xffffd}, {0x100000, 0x10fffd}}),
1799 CharacterClassWidths::HasBothBMPAndNonBMP);
1800 return characterClass;
1801}
1802
1803static std::unique_ptr<CharacterClass> createCharacterClass41()
1804{
1805 // Name = Bidi_Mirrored, number of codePoints: 545
1806 auto characterClass = std::make_unique<CharacterClass>(
1807 std::initializer_list<UChar32>({0x3c, 0x3e, 0x5b, 0x5d, 0x7b, 0x7d}),
1808 std::initializer_list<CharacterRange>({{0x28, 0x29}}),
1809 std::initializer_list<UChar32>({0x00ab, 0x00bb, 0x2140, 0x2211, 0x2224, 0x2226, 0x2239, 0x2262,
1810 0x2298, 0x27c0, 0x29b8, 0x29c9, 0x29e1, 0x2a24, 0x2a26, 0x2a29,
1811 0x2adc, 0x2ade, 0x2af3, 0x2afd, 0x2bfe, 0xff1c, 0xff1e, 0xff3b,
1812 0xff3d, 0xff5b, 0xff5d, 0x1d6db, 0x1d715, 0x1d74f, 0x1d789, 0x1d7c3}),
1813 std::initializer_list<CharacterRange>({{0x0f3a, 0x0f3d}, {0x169b, 0x169c}, {0x2039, 0x203a}, {0x2045, 0x2046},
1814 {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2201, 0x2204}, {0x2208, 0x220d},
1815 {0x2215, 0x2216}, {0x221a, 0x221d}, {0x221f, 0x2222}, {0x222b, 0x2233},
1816 {0x223b, 0x224c}, {0x2252, 0x2255}, {0x225f, 0x2260}, {0x2264, 0x226b},
1817 {0x226e, 0x228c}, {0x228f, 0x2292}, {0x22a2, 0x22a3}, {0x22a6, 0x22b8},
1818 {0x22be, 0x22bf}, {0x22c9, 0x22cd}, {0x22d0, 0x22d1}, {0x22d6, 0x22ed},
1819 {0x22f0, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321}, {0x2329, 0x232a},
1820 {0x2768, 0x2775}, {0x27c3, 0x27c6}, {0x27c8, 0x27c9}, {0x27cb, 0x27cd},
1821 {0x27d3, 0x27d6}, {0x27dc, 0x27de}, {0x27e2, 0x27ef}, {0x2983, 0x2998},
1822 {0x299b, 0x29a0}, {0x29a2, 0x29af}, {0x29c0, 0x29c5}, {0x29ce, 0x29d2},
1823 {0x29d4, 0x29d5}, {0x29d8, 0x29dc}, {0x29e3, 0x29e5}, {0x29e8, 0x29e9},
1824 {0x29f4, 0x29f9}, {0x29fc, 0x29fd}, {0x2a0a, 0x2a1c}, {0x2a1e, 0x2a21},
1825 {0x2a2b, 0x2a2e}, {0x2a34, 0x2a35}, {0x2a3c, 0x2a3e}, {0x2a57, 0x2a58},
1826 {0x2a64, 0x2a65}, {0x2a6a, 0x2a6d}, {0x2a6f, 0x2a70}, {0x2a73, 0x2a74},
1827 {0x2a79, 0x2aa3}, {0x2aa6, 0x2aad}, {0x2aaf, 0x2ad6}, {0x2ae2, 0x2ae6},
1828 {0x2aec, 0x2aee}, {0x2af7, 0x2afb}, {0x2e02, 0x2e05}, {0x2e09, 0x2e0a},
1829 {0x2e0c, 0x2e0d}, {0x2e1c, 0x2e1d}, {0x2e20, 0x2e29}, {0x3008, 0x3011},
1830 {0x3014, 0x301b}, {0xfe59, 0xfe5e}, {0xfe64, 0xfe65}, {0xff08, 0xff09},
1831 {0xff5f, 0xff60}, {0xff62, 0xff63}}),
1832 CharacterClassWidths::HasBothBMPAndNonBMP);
1833 return characterClass;
1834}
1835
1836static std::unique_ptr<CharacterClass> createCharacterClass42()
1837{
1838 // Name = Math, number of codePoints: 2310
1839 auto characterClass = std::make_unique<CharacterClass>(
1840 std::initializer_list<UChar32>({0x2b, 0x5e, 0x7c, 0x7e}),
1841 std::initializer_list<CharacterRange>({{0x3c, 0x3e}}),
1842 std::initializer_list<UChar32>({0x00ac, 0x00b1, 0x00d7, 0x00f7, 0x03d5, 0x2016, 0x2040, 0x2044,
1843 0x2052, 0x20e1, 0x2102, 0x2107, 0x2115, 0x2124, 0x214b, 0x21dd,
1844 0x237c, 0x23b7, 0x23d0, 0x25e2, 0x25e4, 0x2640, 0x2642, 0xfb29,
1845 0xfe68, 0xff0b, 0xff3c, 0xff3e, 0xff5c, 0xff5e, 0xffe2, 0x1d4a2,
1846 0x1d4bb, 0x1d546, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42, 0x1ee47,
1847 0x1ee49, 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d, 0x1ee5f,
1848 0x1ee64, 0x1ee7e}),
1849 std::initializer_list<CharacterRange>({{0x03d0, 0x03d2}, {0x03f0, 0x03f1}, {0x03f4, 0x03f6}, {0x0606, 0x0608},
1850 {0x2032, 0x2034}, {0x2061, 0x2064}, {0x207a, 0x207e}, {0x208a, 0x208e},
1851 {0x20d0, 0x20dc}, {0x20e5, 0x20e6}, {0x20eb, 0x20ef}, {0x210a, 0x2113},
1852 {0x2118, 0x211d}, {0x2128, 0x2129}, {0x212c, 0x212d}, {0x212f, 0x2131},
1853 {0x2133, 0x2138}, {0x213c, 0x2149}, {0x2190, 0x21a7}, {0x21a9, 0x21ae},
1854 {0x21b0, 0x21b1}, {0x21b6, 0x21b7}, {0x21bc, 0x21db}, {0x21e4, 0x21e5},
1855 {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321}, {0x239b, 0x23b5},
1856 {0x23dc, 0x23e2}, {0x25a0, 0x25a1}, {0x25ae, 0x25b7}, {0x25bc, 0x25c1},
1857 {0x25c6, 0x25c7}, {0x25ca, 0x25cb}, {0x25cf, 0x25d3}, {0x25e7, 0x25ec},
1858 {0x25f8, 0x25ff}, {0x2605, 0x2606}, {0x2660, 0x2663}, {0x266d, 0x266f},
1859 {0x27c0, 0x27ff}, {0x2900, 0x2aff}, {0x2b30, 0x2b44}, {0x2b47, 0x2b4c},
1860 {0xfe61, 0xfe66}, {0xff1c, 0xff1e}, {0xffe9, 0xffec}, {0x1d400, 0x1d454},
1861 {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac},
1862 {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a},
1863 {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e},
1864 {0x1d540, 0x1d544}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d7cb},
1865 {0x1d7ce, 0x1d7ff}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22},
1866 {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52},
1867 {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77},
1868 {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3},
1869 {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x1eef0, 0x1eef1}}),
1870 CharacterClassWidths::HasBothBMPAndNonBMP);
1871 return characterClass;
1872}
1873
1874static std::unique_ptr<CharacterClass> createCharacterClass43()
1875{
1876 // Name = Alphabetic, number of codePoints: 126989
1877 auto characterClass = std::make_unique<CharacterClass>(
1878 std::initializer_list<UChar32>({}),
1879 std::initializer_list<CharacterRange>({{0x41, 0x5a}, {0x61, 0x7a}}),
1880 std::initializer_list<UChar32>({0x00aa, 0x00b5, 0x00ba, 0x02ec, 0x02ee, 0x0345, 0x037f, 0x0386,
1881 0x038c, 0x0559, 0x05bf, 0x05c7, 0x06ff, 0x07fa, 0x09b2, 0x09ce,
1882 0x09d7, 0x09fc, 0x0a51, 0x0a5e, 0x0ad0, 0x0b71, 0x0b9c, 0x0bd0,
1883 0x0bd7, 0x0cde, 0x0d4e, 0x0dbd, 0x0dd6, 0x0e4d, 0x0e84, 0x0e8a,
1884 0x0e8d, 0x0ea5, 0x0ea7, 0x0ec6, 0x0ecd, 0x0f00, 0x1038, 0x108e,
1885 0x10c7, 0x10cd, 0x1258, 0x12c0, 0x135f, 0x17d7, 0x17dc, 0x1aa7,
1886 0x1f59, 0x1f5b, 0x1f5d, 0x1fbe, 0x2071, 0x207f, 0x2102, 0x2107,
1887 0x2115, 0x2124, 0x2126, 0x2128, 0x214e, 0x2d27, 0x2d2d, 0x2d6f,
1888 0x2e2f, 0xa8c5, 0xa8fb, 0xa9cf, 0xaa7a, 0xaac0, 0xaac2, 0xfb3e,
1889 0x10808, 0x1083c, 0x10f27, 0x11176, 0x111da, 0x111dc, 0x11237, 0x1123e,
1890 0x11288, 0x11350, 0x11357, 0x114c7, 0x11640, 0x11644, 0x118ff, 0x11a9d,
1891 0x11c40, 0x11d3a, 0x11d43, 0x11d98, 0x1bc9e, 0x1d4a2, 0x1d4bb, 0x1d546,
1892 0x1e947, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42, 0x1ee47, 0x1ee49,
1893 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d, 0x1ee5f, 0x1ee64,
1894 0x1ee7e}),
1895 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x02c1}, {0x02c6, 0x02d1},
1896 {0x02e0, 0x02e4}, {0x0370, 0x0374}, {0x0376, 0x0377}, {0x037a, 0x037d},
1897 {0x0388, 0x038a}, {0x038e, 0x03a1}, {0x03a3, 0x03f5}, {0x03f7, 0x0481},
1898 {0x048a, 0x052f}, {0x0531, 0x0556}, {0x0560, 0x0588}, {0x05b0, 0x05bd},
1899 {0x05c1, 0x05c2}, {0x05c4, 0x05c5}, {0x05d0, 0x05ea}, {0x05ef, 0x05f2},
1900 {0x0610, 0x061a}, {0x0620, 0x0657}, {0x0659, 0x065f}, {0x066e, 0x06d3},
1901 {0x06d5, 0x06dc}, {0x06e1, 0x06e8}, {0x06ed, 0x06ef}, {0x06fa, 0x06fc},
1902 {0x0710, 0x073f}, {0x074d, 0x07b1}, {0x07ca, 0x07ea}, {0x07f4, 0x07f5},
1903 {0x0800, 0x0817}, {0x081a, 0x082c}, {0x0840, 0x0858}, {0x0860, 0x086a},
1904 {0x08a0, 0x08b4}, {0x08b6, 0x08bd}, {0x08d4, 0x08df}, {0x08e3, 0x08e9},
1905 {0x08f0, 0x093b}, {0x093d, 0x094c}, {0x094e, 0x0950}, {0x0955, 0x0963},
1906 {0x0971, 0x0983}, {0x0985, 0x098c}, {0x098f, 0x0990}, {0x0993, 0x09a8},
1907 {0x09aa, 0x09b0}, {0x09b6, 0x09b9}, {0x09bd, 0x09c4}, {0x09c7, 0x09c8},
1908 {0x09cb, 0x09cc}, {0x09dc, 0x09dd}, {0x09df, 0x09e3}, {0x09f0, 0x09f1},
1909 {0x0a01, 0x0a03}, {0x0a05, 0x0a0a}, {0x0a0f, 0x0a10}, {0x0a13, 0x0a28},
1910 {0x0a2a, 0x0a30}, {0x0a32, 0x0a33}, {0x0a35, 0x0a36}, {0x0a38, 0x0a39},
1911 {0x0a3e, 0x0a42}, {0x0a47, 0x0a48}, {0x0a4b, 0x0a4c}, {0x0a59, 0x0a5c},
1912 {0x0a70, 0x0a75}, {0x0a81, 0x0a83}, {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91},
1913 {0x0a93, 0x0aa8}, {0x0aaa, 0x0ab0}, {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9},
1914 {0x0abd, 0x0ac5}, {0x0ac7, 0x0ac9}, {0x0acb, 0x0acc}, {0x0ae0, 0x0ae3},
1915 {0x0af9, 0x0afc}, {0x0b01, 0x0b03}, {0x0b05, 0x0b0c}, {0x0b0f, 0x0b10},
1916 {0x0b13, 0x0b28}, {0x0b2a, 0x0b30}, {0x0b32, 0x0b33}, {0x0b35, 0x0b39},
1917 {0x0b3d, 0x0b44}, {0x0b47, 0x0b48}, {0x0b4b, 0x0b4c}, {0x0b56, 0x0b57},
1918 {0x0b5c, 0x0b5d}, {0x0b5f, 0x0b63}, {0x0b82, 0x0b83}, {0x0b85, 0x0b8a},
1919 {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a}, {0x0b9e, 0x0b9f},
1920 {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9}, {0x0bbe, 0x0bc2},
1921 {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcc}, {0x0c00, 0x0c03}, {0x0c05, 0x0c0c},
1922 {0x0c0e, 0x0c10}, {0x0c12, 0x0c28}, {0x0c2a, 0x0c39}, {0x0c3d, 0x0c44},
1923 {0x0c46, 0x0c48}, {0x0c4a, 0x0c4c}, {0x0c55, 0x0c56}, {0x0c58, 0x0c5a},
1924 {0x0c60, 0x0c63}, {0x0c80, 0x0c83}, {0x0c85, 0x0c8c}, {0x0c8e, 0x0c90},
1925 {0x0c92, 0x0ca8}, {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9}, {0x0cbd, 0x0cc4},
1926 {0x0cc6, 0x0cc8}, {0x0cca, 0x0ccc}, {0x0cd5, 0x0cd6}, {0x0ce0, 0x0ce3},
1927 {0x0cf1, 0x0cf2}, {0x0d00, 0x0d03}, {0x0d05, 0x0d0c}, {0x0d0e, 0x0d10},
1928 {0x0d12, 0x0d3a}, {0x0d3d, 0x0d44}, {0x0d46, 0x0d48}, {0x0d4a, 0x0d4c},
1929 {0x0d54, 0x0d57}, {0x0d5f, 0x0d63}, {0x0d7a, 0x0d7f}, {0x0d82, 0x0d83},
1930 {0x0d85, 0x0d96}, {0x0d9a, 0x0db1}, {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6},
1931 {0x0dcf, 0x0dd4}, {0x0dd8, 0x0ddf}, {0x0df2, 0x0df3}, {0x0e01, 0x0e3a},
1932 {0x0e40, 0x0e46}, {0x0e81, 0x0e82}, {0x0e87, 0x0e88}, {0x0e94, 0x0e97},
1933 {0x0e99, 0x0e9f}, {0x0ea1, 0x0ea3}, {0x0eaa, 0x0eab}, {0x0ead, 0x0eb9},
1934 {0x0ebb, 0x0ebd}, {0x0ec0, 0x0ec4}, {0x0edc, 0x0edf}, {0x0f40, 0x0f47},
1935 {0x0f49, 0x0f6c}, {0x0f71, 0x0f81}, {0x0f88, 0x0f97}, {0x0f99, 0x0fbc},
1936 {0x1000, 0x1036}, {0x103b, 0x103f}, {0x1050, 0x1062}, {0x1065, 0x1068},
1937 {0x106e, 0x1086}, {0x109c, 0x109d}, {0x10a0, 0x10c5}, {0x10d0, 0x10fa},
1938 {0x10fc, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256}, {0x125a, 0x125d},
1939 {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5},
1940 {0x12b8, 0x12be}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310},
1941 {0x1312, 0x1315}, {0x1318, 0x135a}, {0x1380, 0x138f}, {0x13a0, 0x13f5},
1942 {0x13f8, 0x13fd}, {0x1401, 0x166c}, {0x166f, 0x167f}, {0x1681, 0x169a},
1943 {0x16a0, 0x16ea}, {0x16ee, 0x16f8}, {0x1700, 0x170c}, {0x170e, 0x1713},
1944 {0x1720, 0x1733}, {0x1740, 0x1753}, {0x1760, 0x176c}, {0x176e, 0x1770},
1945 {0x1772, 0x1773}, {0x1780, 0x17b3}, {0x17b6, 0x17c8}, {0x1820, 0x1878},
1946 {0x1880, 0x18aa}, {0x18b0, 0x18f5}, {0x1900, 0x191e}, {0x1920, 0x192b},
1947 {0x1930, 0x1938}, {0x1950, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab},
1948 {0x19b0, 0x19c9}, {0x1a00, 0x1a1b}, {0x1a20, 0x1a5e}, {0x1a61, 0x1a74},
1949 {0x1b00, 0x1b33}, {0x1b35, 0x1b43}, {0x1b45, 0x1b4b}, {0x1b80, 0x1ba9},
1950 {0x1bac, 0x1baf}, {0x1bba, 0x1be5}, {0x1be7, 0x1bf1}, {0x1c00, 0x1c35},
1951 {0x1c4d, 0x1c4f}, {0x1c5a, 0x1c7d}, {0x1c80, 0x1c88}, {0x1c90, 0x1cba},
1952 {0x1cbd, 0x1cbf}, {0x1ce9, 0x1cec}, {0x1cee, 0x1cf3}, {0x1cf5, 0x1cf6},
1953 {0x1d00, 0x1dbf}, {0x1de7, 0x1df4}, {0x1e00, 0x1f15}, {0x1f18, 0x1f1d},
1954 {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d},
1955 {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc},
1956 {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4},
1957 {0x1ff6, 0x1ffc}, {0x2090, 0x209c}, {0x210a, 0x2113}, {0x2119, 0x211d},
1958 {0x212a, 0x212d}, {0x212f, 0x2139}, {0x213c, 0x213f}, {0x2145, 0x2149},
1959 {0x2160, 0x2188}, {0x24b6, 0x24e9}, {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e},
1960 {0x2c60, 0x2ce4}, {0x2ceb, 0x2cee}, {0x2cf2, 0x2cf3}, {0x2d00, 0x2d25},
1961 {0x2d30, 0x2d67}, {0x2d80, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae},
1962 {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce},
1963 {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2dff}, {0x3005, 0x3007},
1964 {0x3021, 0x3029}, {0x3031, 0x3035}, {0x3038, 0x303c}, {0x3041, 0x3096},
1965 {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, {0x3105, 0x312f},
1966 {0x3131, 0x318e}, {0x31a0, 0x31ba}, {0x31f0, 0x31ff}, {0x3400, 0x4db5},
1967 {0x4e00, 0x9fef}, {0xa000, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c},
1968 {0xa610, 0xa61f}, {0xa62a, 0xa62b}, {0xa640, 0xa66e}, {0xa674, 0xa67b},
1969 {0xa67f, 0xa6ef}, {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7b9},
1970 {0xa7f7, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a}, {0xa80c, 0xa827},
1971 {0xa840, 0xa873}, {0xa880, 0xa8c3}, {0xa8f2, 0xa8f7}, {0xa8fd, 0xa8fe},
1972 {0xa90a, 0xa92a}, {0xa930, 0xa952}, {0xa960, 0xa97c}, {0xa980, 0xa9b2},
1973 {0xa9b4, 0xa9bf}, {0xa9e0, 0xa9e4}, {0xa9e6, 0xa9ef}, {0xa9fa, 0xa9fe},
1974 {0xaa00, 0xaa36}, {0xaa40, 0xaa4d}, {0xaa60, 0xaa76}, {0xaa7e, 0xaabe},
1975 {0xaadb, 0xaadd}, {0xaae0, 0xaaef}, {0xaaf2, 0xaaf5}, {0xab01, 0xab06},
1976 {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e},
1977 {0xab30, 0xab5a}, {0xab5c, 0xab65}, {0xab70, 0xabea}, {0xac00, 0xd7a3},
1978 {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9},
1979 {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb28}, {0xfb2a, 0xfb36},
1980 {0xfb38, 0xfb3c}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1},
1981 {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb},
1982 {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a},
1983 {0xff66, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7},
1984 {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a},
1985 {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa},
1986 {0x10140, 0x10174}, {0x10280, 0x1029c}, {0x102a0, 0x102d0}, {0x10300, 0x1031f},
1987 {0x1032d, 0x1034a}, {0x10350, 0x1037a}, {0x10380, 0x1039d}, {0x103a0, 0x103c3},
1988 {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, {0x10400, 0x1049d}, {0x104b0, 0x104d3},
1989 {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10600, 0x10736},
1990 {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10800, 0x10805}, {0x1080a, 0x10835},
1991 {0x10837, 0x10838}, {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e},
1992 {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939},
1993 {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a00, 0x10a03}, {0x10a05, 0x10a06},
1994 {0x10a0c, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a60, 0x10a7c},
1995 {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35},
1996 {0x10b40, 0x10b55}, {0x10b60, 0x10b72}, {0x10b80, 0x10b91}, {0x10c00, 0x10c48},
1997 {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d27}, {0x10f00, 0x10f1c},
1998 {0x10f30, 0x10f45}, {0x11000, 0x11045}, {0x11082, 0x110b8}, {0x110d0, 0x110e8},
1999 {0x11100, 0x11132}, {0x11144, 0x11146}, {0x11150, 0x11172}, {0x11180, 0x111bf},
2000 {0x111c1, 0x111c4}, {0x11200, 0x11211}, {0x11213, 0x11234}, {0x11280, 0x11286},
2001 {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8}, {0x112b0, 0x112e8},
2002 {0x11300, 0x11303}, {0x11305, 0x1130c}, {0x1130f, 0x11310}, {0x11313, 0x11328},
2003 {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133d, 0x11344},
2004 {0x11347, 0x11348}, {0x1134b, 0x1134c}, {0x1135d, 0x11363}, {0x11400, 0x11441},
2005 {0x11443, 0x11445}, {0x11447, 0x1144a}, {0x11480, 0x114c1}, {0x114c4, 0x114c5},
2006 {0x11580, 0x115b5}, {0x115b8, 0x115be}, {0x115d8, 0x115dd}, {0x11600, 0x1163e},
2007 {0x11680, 0x116b5}, {0x11700, 0x1171a}, {0x1171d, 0x1172a}, {0x11800, 0x11838},
2008 {0x118a0, 0x118df}, {0x11a00, 0x11a32}, {0x11a35, 0x11a3e}, {0x11a50, 0x11a83},
2009 {0x11a86, 0x11a97}, {0x11ac0, 0x11af8}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c36},
2010 {0x11c38, 0x11c3e}, {0x11c72, 0x11c8f}, {0x11c92, 0x11ca7}, {0x11ca9, 0x11cb6},
2011 {0x11d00, 0x11d06}, {0x11d08, 0x11d09}, {0x11d0b, 0x11d36}, {0x11d3c, 0x11d3d},
2012 {0x11d3f, 0x11d41}, {0x11d46, 0x11d47}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68},
2013 {0x11d6a, 0x11d8e}, {0x11d90, 0x11d91}, {0x11d93, 0x11d96}, {0x11ee0, 0x11ef6},
2014 {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12480, 0x12543}, {0x13000, 0x1342e},
2015 {0x14400, 0x14646}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, {0x16ad0, 0x16aed},
2016 {0x16b00, 0x16b36}, {0x16b40, 0x16b43}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f},
2017 {0x16e40, 0x16e7f}, {0x16f00, 0x16f44}, {0x16f50, 0x16f7e}, {0x16f93, 0x16f9f},
2018 {0x16fe0, 0x16fe1}, {0x17000, 0x187f1}, {0x18800, 0x18af2}, {0x1b000, 0x1b11e},
2019 {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88},
2020 {0x1bc90, 0x1bc99}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f},
2021 {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3},
2022 {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c},
2023 {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d54a, 0x1d550},
2024 {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa},
2025 {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e},
2026 {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb},
2027 {0x1e000, 0x1e006}, {0x1e008, 0x1e018}, {0x1e01b, 0x1e021}, {0x1e023, 0x1e024},
2028 {0x1e026, 0x1e02a}, {0x1e800, 0x1e8c4}, {0x1e900, 0x1e943}, {0x1ee00, 0x1ee03},
2029 {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37},
2030 {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a},
2031 {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89},
2032 {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb},
2033 {0x1f130, 0x1f149}, {0x1f150, 0x1f169}, {0x1f170, 0x1f189}, {0x20000, 0x2a6d6},
2034 {0x2a700, 0x2b734}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0},
2035 {0x2f800, 0x2fa1d}}),
2036 CharacterClassWidths::HasBothBMPAndNonBMP);
2037 return characterClass;
2038}
2039
2040static std::unique_ptr<CharacterClass> createCharacterClass44()
2041{
2042 // Name = Lowercase, number of codePoints: 2334
2043 auto characterClass = std::make_unique<CharacterClass>(
2044 std::initializer_list<UChar32>({}),
2045 std::initializer_list<CharacterRange>({{0x61, 0x7a}}),
2046 std::initializer_list<UChar32>({0x00aa, 0x00b5, 0x00ba, 0x0101, 0x0103, 0x0105, 0x0107, 0x0109,
2047 0x010b, 0x010d, 0x010f, 0x0111, 0x0113, 0x0115, 0x0117, 0x0119,
2048 0x011b, 0x011d, 0x011f, 0x0121, 0x0123, 0x0125, 0x0127, 0x0129,
2049 0x012b, 0x012d, 0x012f, 0x0131, 0x0133, 0x0135, 0x013a, 0x013c,
2050 0x013e, 0x0140, 0x0142, 0x0144, 0x0146, 0x014b, 0x014d, 0x014f,
2051 0x0151, 0x0153, 0x0155, 0x0157, 0x0159, 0x015b, 0x015d, 0x015f,
2052 0x0161, 0x0163, 0x0165, 0x0167, 0x0169, 0x016b, 0x016d, 0x016f,
2053 0x0171, 0x0173, 0x0175, 0x0177, 0x017a, 0x017c, 0x0183, 0x0185,
2054 0x0188, 0x0192, 0x0195, 0x019e, 0x01a1, 0x01a3, 0x01a5, 0x01a8,
2055 0x01ad, 0x01b0, 0x01b4, 0x01b6, 0x01c6, 0x01c9, 0x01cc, 0x01ce,
2056 0x01d0, 0x01d2, 0x01d4, 0x01d6, 0x01d8, 0x01da, 0x01df, 0x01e1,
2057 0x01e3, 0x01e5, 0x01e7, 0x01e9, 0x01eb, 0x01ed, 0x01f3, 0x01f5,
2058 0x01f9, 0x01fb, 0x01fd, 0x01ff, 0x0201, 0x0203, 0x0205, 0x0207,
2059 0x0209, 0x020b, 0x020d, 0x020f, 0x0211, 0x0213, 0x0215, 0x0217,
2060 0x0219, 0x021b, 0x021d, 0x021f, 0x0221, 0x0223, 0x0225, 0x0227,
2061 0x0229, 0x022b, 0x022d, 0x022f, 0x0231, 0x023c, 0x0242, 0x0247,
2062 0x0249, 0x024b, 0x024d, 0x0345, 0x0371, 0x0373, 0x0377, 0x0390,
2063 0x03d9, 0x03db, 0x03dd, 0x03df, 0x03e1, 0x03e3, 0x03e5, 0x03e7,
2064 0x03e9, 0x03eb, 0x03ed, 0x03f5, 0x03f8, 0x0461, 0x0463, 0x0465,
2065 0x0467, 0x0469, 0x046b, 0x046d, 0x046f, 0x0471, 0x0473, 0x0475,
2066 0x0477, 0x0479, 0x047b, 0x047d, 0x047f, 0x0481, 0x048b, 0x048d,
2067 0x048f, 0x0491, 0x0493, 0x0495, 0x0497, 0x0499, 0x049b, 0x049d,
2068 0x049f, 0x04a1, 0x04a3, 0x04a5, 0x04a7, 0x04a9, 0x04ab, 0x04ad,
2069 0x04af, 0x04b1, 0x04b3, 0x04b5, 0x04b7, 0x04b9, 0x04bb, 0x04bd,
2070 0x04bf, 0x04c2, 0x04c4, 0x04c6, 0x04c8, 0x04ca, 0x04cc, 0x04d1,
2071 0x04d3, 0x04d5, 0x04d7, 0x04d9, 0x04db, 0x04dd, 0x04df, 0x04e1,
2072 0x04e3, 0x04e5, 0x04e7, 0x04e9, 0x04eb, 0x04ed, 0x04ef, 0x04f1,
2073 0x04f3, 0x04f5, 0x04f7, 0x04f9, 0x04fb, 0x04fd, 0x04ff, 0x0501,
2074 0x0503, 0x0505, 0x0507, 0x0509, 0x050b, 0x050d, 0x050f, 0x0511,
2075 0x0513, 0x0515, 0x0517, 0x0519, 0x051b, 0x051d, 0x051f, 0x0521,
2076 0x0523, 0x0525, 0x0527, 0x0529, 0x052b, 0x052d, 0x052f, 0x1e01,
2077 0x1e03, 0x1e05, 0x1e07, 0x1e09, 0x1e0b, 0x1e0d, 0x1e0f, 0x1e11,
2078 0x1e13, 0x1e15, 0x1e17, 0x1e19, 0x1e1b, 0x1e1d, 0x1e1f, 0x1e21,
2079 0x1e23, 0x1e25, 0x1e27, 0x1e29, 0x1e2b, 0x1e2d, 0x1e2f, 0x1e31,
2080 0x1e33, 0x1e35, 0x1e37, 0x1e39, 0x1e3b, 0x1e3d, 0x1e3f, 0x1e41,
2081 0x1e43, 0x1e45, 0x1e47, 0x1e49, 0x1e4b, 0x1e4d, 0x1e4f, 0x1e51,
2082 0x1e53, 0x1e55, 0x1e57, 0x1e59, 0x1e5b, 0x1e5d, 0x1e5f, 0x1e61,
2083 0x1e63, 0x1e65, 0x1e67, 0x1e69, 0x1e6b, 0x1e6d, 0x1e6f, 0x1e71,
2084 0x1e73, 0x1e75, 0x1e77, 0x1e79, 0x1e7b, 0x1e7d, 0x1e7f, 0x1e81,
2085 0x1e83, 0x1e85, 0x1e87, 0x1e89, 0x1e8b, 0x1e8d, 0x1e8f, 0x1e91,
2086 0x1e93, 0x1e9f, 0x1ea1, 0x1ea3, 0x1ea5, 0x1ea7, 0x1ea9, 0x1eab,
2087 0x1ead, 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7, 0x1eb9, 0x1ebb,
2088 0x1ebd, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ec9, 0x1ecb,
2089 0x1ecd, 0x1ecf, 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed9, 0x1edb,
2090 0x1edd, 0x1edf, 0x1ee1, 0x1ee3, 0x1ee5, 0x1ee7, 0x1ee9, 0x1eeb,
2091 0x1eed, 0x1eef, 0x1ef1, 0x1ef3, 0x1ef5, 0x1ef7, 0x1ef9, 0x1efb,
2092 0x1efd, 0x1fbe, 0x2071, 0x207f, 0x210a, 0x2113, 0x212f, 0x2134,
2093 0x2139, 0x214e, 0x2184, 0x2c61, 0x2c68, 0x2c6a, 0x2c6c, 0x2c71,
2094 0x2c81, 0x2c83, 0x2c85, 0x2c87, 0x2c89, 0x2c8b, 0x2c8d, 0x2c8f,
2095 0x2c91, 0x2c93, 0x2c95, 0x2c97, 0x2c99, 0x2c9b, 0x2c9d, 0x2c9f,
2096 0x2ca1, 0x2ca3, 0x2ca5, 0x2ca7, 0x2ca9, 0x2cab, 0x2cad, 0x2caf,
2097 0x2cb1, 0x2cb3, 0x2cb5, 0x2cb7, 0x2cb9, 0x2cbb, 0x2cbd, 0x2cbf,
2098 0x2cc1, 0x2cc3, 0x2cc5, 0x2cc7, 0x2cc9, 0x2ccb, 0x2ccd, 0x2ccf,
2099 0x2cd1, 0x2cd3, 0x2cd5, 0x2cd7, 0x2cd9, 0x2cdb, 0x2cdd, 0x2cdf,
2100 0x2ce1, 0x2cec, 0x2cee, 0x2cf3, 0x2d27, 0x2d2d, 0xa641, 0xa643,
2101 0xa645, 0xa647, 0xa649, 0xa64b, 0xa64d, 0xa64f, 0xa651, 0xa653,
2102 0xa655, 0xa657, 0xa659, 0xa65b, 0xa65d, 0xa65f, 0xa661, 0xa663,
2103 0xa665, 0xa667, 0xa669, 0xa66b, 0xa66d, 0xa681, 0xa683, 0xa685,
2104 0xa687, 0xa689, 0xa68b, 0xa68d, 0xa68f, 0xa691, 0xa693, 0xa695,
2105 0xa697, 0xa699, 0xa723, 0xa725, 0xa727, 0xa729, 0xa72b, 0xa72d,
2106 0xa733, 0xa735, 0xa737, 0xa739, 0xa73b, 0xa73d, 0xa73f, 0xa741,
2107 0xa743, 0xa745, 0xa747, 0xa749, 0xa74b, 0xa74d, 0xa74f, 0xa751,
2108 0xa753, 0xa755, 0xa757, 0xa759, 0xa75b, 0xa75d, 0xa75f, 0xa761,
2109 0xa763, 0xa765, 0xa767, 0xa769, 0xa76b, 0xa76d, 0xa77a, 0xa77c,
2110 0xa77f, 0xa781, 0xa783, 0xa785, 0xa787, 0xa78c, 0xa78e, 0xa791,
2111 0xa797, 0xa799, 0xa79b, 0xa79d, 0xa79f, 0xa7a1, 0xa7a3, 0xa7a5,
2112 0xa7a7, 0xa7a9, 0xa7af, 0xa7b5, 0xa7b7, 0xa7b9, 0x1d4bb, 0x1d7cb}),
2113 std::initializer_list<CharacterRange>({{0x00df, 0x00f6}, {0x00f8, 0x00ff}, {0x0137, 0x0138}, {0x0148, 0x0149},
2114 {0x017e, 0x0180}, {0x018c, 0x018d}, {0x0199, 0x019b}, {0x01aa, 0x01ab},
2115 {0x01b9, 0x01ba}, {0x01bd, 0x01bf}, {0x01dc, 0x01dd}, {0x01ef, 0x01f0},
2116 {0x0233, 0x0239}, {0x023f, 0x0240}, {0x024f, 0x0293}, {0x0295, 0x02b8},
2117 {0x02c0, 0x02c1}, {0x02e0, 0x02e4}, {0x037a, 0x037d}, {0x03ac, 0x03ce},
2118 {0x03d0, 0x03d1}, {0x03d5, 0x03d7}, {0x03ef, 0x03f3}, {0x03fb, 0x03fc},
2119 {0x0430, 0x045f}, {0x04ce, 0x04cf}, {0x0560, 0x0588}, {0x10d0, 0x10fa},
2120 {0x10fd, 0x10ff}, {0x13f8, 0x13fd}, {0x1c80, 0x1c88}, {0x1d00, 0x1dbf},
2121 {0x1e95, 0x1e9d}, {0x1eff, 0x1f07}, {0x1f10, 0x1f15}, {0x1f20, 0x1f27},
2122 {0x1f30, 0x1f37}, {0x1f40, 0x1f45}, {0x1f50, 0x1f57}, {0x1f60, 0x1f67},
2123 {0x1f70, 0x1f7d}, {0x1f80, 0x1f87}, {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7},
2124 {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7},
2125 {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4},
2126 {0x1ff6, 0x1ff7}, {0x2090, 0x209c}, {0x210e, 0x210f}, {0x213c, 0x213d},
2127 {0x2146, 0x2149}, {0x2170, 0x217f}, {0x24d0, 0x24e9}, {0x2c30, 0x2c5e},
2128 {0x2c65, 0x2c66}, {0x2c73, 0x2c74}, {0x2c76, 0x2c7d}, {0x2ce3, 0x2ce4},
2129 {0x2d00, 0x2d25}, {0xa69b, 0xa69d}, {0xa72f, 0xa731}, {0xa76f, 0xa778},
2130 {0xa793, 0xa795}, {0xa7f8, 0xa7fa}, {0xab30, 0xab5a}, {0xab5c, 0xab65},
2131 {0xab70, 0xabbf}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xff41, 0xff5a},
2132 {0x10428, 0x1044f}, {0x104d8, 0x104fb}, {0x10cc0, 0x10cf2}, {0x118c0, 0x118df},
2133 {0x16e60, 0x16e7f}, {0x1d41a, 0x1d433}, {0x1d44e, 0x1d454}, {0x1d456, 0x1d467},
2134 {0x1d482, 0x1d49b}, {0x1d4b6, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d4cf},
2135 {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537}, {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f},
2136 {0x1d5ba, 0x1d5d3}, {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f},
2137 {0x1d68a, 0x1d6a5}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1}, {0x1d6fc, 0x1d714},
2138 {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d755}, {0x1d770, 0x1d788},
2139 {0x1d78a, 0x1d78f}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9}, {0x1e922, 0x1e943}}),
2140 CharacterClassWidths::HasBothBMPAndNonBMP);
2141 return characterClass;
2142}
2143
2144static std::unique_ptr<CharacterClass> createCharacterClass45()
2145{
2146 // Name = Uppercase, number of codePoints: 1901
2147 auto characterClass = std::make_unique<CharacterClass>(
2148 std::initializer_list<UChar32>({}),
2149 std::initializer_list<CharacterRange>({{0x41, 0x5a}}),
2150 std::initializer_list<UChar32>({0x0100, 0x0102, 0x0104, 0x0106, 0x0108, 0x010a, 0x010c, 0x010e,
2151 0x0110, 0x0112, 0x0114, 0x0116, 0x0118, 0x011a, 0x011c, 0x011e,
2152 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x012a, 0x012c, 0x012e,
2153 0x0130, 0x0132, 0x0134, 0x0136, 0x0139, 0x013b, 0x013d, 0x013f,
2154 0x0141, 0x0143, 0x0145, 0x0147, 0x014a, 0x014c, 0x014e, 0x0150,
2155 0x0152, 0x0154, 0x0156, 0x0158, 0x015a, 0x015c, 0x015e, 0x0160,
2156 0x0162, 0x0164, 0x0166, 0x0168, 0x016a, 0x016c, 0x016e, 0x0170,
2157 0x0172, 0x0174, 0x0176, 0x017b, 0x017d, 0x0184, 0x01a2, 0x01a4,
2158 0x01a9, 0x01ac, 0x01b5, 0x01bc, 0x01c4, 0x01c7, 0x01ca, 0x01cd,
2159 0x01cf, 0x01d1, 0x01d3, 0x01d5, 0x01d7, 0x01d9, 0x01db, 0x01de,
2160 0x01e0, 0x01e2, 0x01e4, 0x01e6, 0x01e8, 0x01ea, 0x01ec, 0x01ee,
2161 0x01f1, 0x01f4, 0x01fa, 0x01fc, 0x01fe, 0x0200, 0x0202, 0x0204,
2162 0x0206, 0x0208, 0x020a, 0x020c, 0x020e, 0x0210, 0x0212, 0x0214,
2163 0x0216, 0x0218, 0x021a, 0x021c, 0x021e, 0x0220, 0x0222, 0x0224,
2164 0x0226, 0x0228, 0x022a, 0x022c, 0x022e, 0x0230, 0x0232, 0x0241,
2165 0x0248, 0x024a, 0x024c, 0x024e, 0x0370, 0x0372, 0x0376, 0x037f,
2166 0x0386, 0x038c, 0x03cf, 0x03d8, 0x03da, 0x03dc, 0x03de, 0x03e0,
2167 0x03e2, 0x03e4, 0x03e6, 0x03e8, 0x03ea, 0x03ec, 0x03ee, 0x03f4,
2168 0x03f7, 0x0460, 0x0462, 0x0464, 0x0466, 0x0468, 0x046a, 0x046c,
2169 0x046e, 0x0470, 0x0472, 0x0474, 0x0476, 0x0478, 0x047a, 0x047c,
2170 0x047e, 0x0480, 0x048a, 0x048c, 0x048e, 0x0490, 0x0492, 0x0494,
2171 0x0496, 0x0498, 0x049a, 0x049c, 0x049e, 0x04a0, 0x04a2, 0x04a4,
2172 0x04a6, 0x04a8, 0x04aa, 0x04ac, 0x04ae, 0x04b0, 0x04b2, 0x04b4,
2173 0x04b6, 0x04b8, 0x04ba, 0x04bc, 0x04be, 0x04c3, 0x04c5, 0x04c7,
2174 0x04c9, 0x04cb, 0x04cd, 0x04d0, 0x04d2, 0x04d4, 0x04d6, 0x04d8,
2175 0x04da, 0x04dc, 0x04de, 0x04e0, 0x04e2, 0x04e4, 0x04e6, 0x04e8,
2176 0x04ea, 0x04ec, 0x04ee, 0x04f0, 0x04f2, 0x04f4, 0x04f6, 0x04f8,
2177 0x04fa, 0x04fc, 0x04fe, 0x0500, 0x0502, 0x0504, 0x0506, 0x0508,
2178 0x050a, 0x050c, 0x050e, 0x0510, 0x0512, 0x0514, 0x0516, 0x0518,
2179 0x051a, 0x051c, 0x051e, 0x0520, 0x0522, 0x0524, 0x0526, 0x0528,
2180 0x052a, 0x052c, 0x052e, 0x10c7, 0x10cd, 0x1e00, 0x1e02, 0x1e04,
2181 0x1e06, 0x1e08, 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12, 0x1e14,
2182 0x1e16, 0x1e18, 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22, 0x1e24,
2183 0x1e26, 0x1e28, 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32, 0x1e34,
2184 0x1e36, 0x1e38, 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42, 0x1e44,
2185 0x1e46, 0x1e48, 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54,
2186 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64,
2187 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74,
2188 0x1e76, 0x1e78, 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84,
2189 0x1e86, 0x1e88, 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94,
2190 0x1e9e, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac,
2191 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc,
2192 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc,
2193 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda, 0x1edc,
2194 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea, 0x1eec,
2195 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa, 0x1efc,
2196 0x1efe, 0x1f59, 0x1f5b, 0x1f5d, 0x1f5f, 0x2102, 0x2107, 0x2115,
2197 0x2124, 0x2126, 0x2128, 0x2145, 0x2183, 0x2c60, 0x2c67, 0x2c69,
2198 0x2c6b, 0x2c72, 0x2c75, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a,
2199 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a,
2200 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa,
2201 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba,
2202 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca,
2203 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda,
2204 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0xa640,
2205 0xa642, 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650,
2206 0xa652, 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660,
2207 0xa662, 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682,
2208 0xa684, 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692,
2209 0xa694, 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728,
2210 0xa72a, 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a,
2211 0xa73c, 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a,
2212 0xa74c, 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a,
2213 0xa75c, 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a,
2214 0xa76c, 0xa76e, 0xa779, 0xa77b, 0xa780, 0xa782, 0xa784, 0xa786,
2215 0xa78b, 0xa78d, 0xa790, 0xa792, 0xa796, 0xa798, 0xa79a, 0xa79c,
2216 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7b6, 0xa7b8,
2217 0x1d49c, 0x1d4a2, 0x1d546, 0x1d7ca}),
2218 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00de}, {0x0178, 0x0179}, {0x0181, 0x0182},
2219 {0x0186, 0x0187}, {0x0189, 0x018b}, {0x018e, 0x0191}, {0x0193, 0x0194},
2220 {0x0196, 0x0198}, {0x019c, 0x019d}, {0x019f, 0x01a0}, {0x01a6, 0x01a7},
2221 {0x01ae, 0x01af}, {0x01b1, 0x01b3}, {0x01b7, 0x01b8}, {0x01f6, 0x01f8},
2222 {0x023a, 0x023b}, {0x023d, 0x023e}, {0x0243, 0x0246}, {0x0388, 0x038a},
2223 {0x038e, 0x038f}, {0x0391, 0x03a1}, {0x03a3, 0x03ab}, {0x03d2, 0x03d4},
2224 {0x03f9, 0x03fa}, {0x03fd, 0x042f}, {0x04c0, 0x04c1}, {0x0531, 0x0556},
2225 {0x10a0, 0x10c5}, {0x13a0, 0x13f5}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf},
2226 {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d}, {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f},
2227 {0x1f48, 0x1f4d}, {0x1f68, 0x1f6f}, {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb},
2228 {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec}, {0x1ff8, 0x1ffb}, {0x210b, 0x210d},
2229 {0x2110, 0x2112}, {0x2119, 0x211d}, {0x212a, 0x212d}, {0x2130, 0x2133},
2230 {0x213e, 0x213f}, {0x2160, 0x216f}, {0x24b6, 0x24cf}, {0x2c00, 0x2c2e},
2231 {0x2c62, 0x2c64}, {0x2c6d, 0x2c70}, {0x2c7e, 0x2c80}, {0xa77d, 0xa77e},
2232 {0xa7aa, 0xa7ae}, {0xa7b0, 0xa7b4}, {0xff21, 0xff3a}, {0x10400, 0x10427},
2233 {0x104b0, 0x104d3}, {0x10c80, 0x10cb2}, {0x118a0, 0x118bf}, {0x16e40, 0x16e5f},
2234 {0x1d400, 0x1d419}, {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49e, 0x1d49f},
2235 {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9},
2236 {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c},
2237 {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d54a, 0x1d550},
2238 {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed}, {0x1d608, 0x1d621},
2239 {0x1d63c, 0x1d655}, {0x1d670, 0x1d689}, {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa},
2240 {0x1d71c, 0x1d734}, {0x1d756, 0x1d76e}, {0x1d790, 0x1d7a8}, {0x1e900, 0x1e921},
2241 {0x1f130, 0x1f149}, {0x1f150, 0x1f169}, {0x1f170, 0x1f189}}),
2242 CharacterClassWidths::HasBothBMPAndNonBMP);
2243 return characterClass;
2244}
2245
2246static std::unique_ptr<CharacterClass> createCharacterClass46()
2247{
2248 // Name = Cased, number of codePoints: 4266
2249 auto characterClass = std::make_unique<CharacterClass>(
2250 std::initializer_list<UChar32>({}),
2251 std::initializer_list<CharacterRange>({{0x41, 0x5a}, {0x61, 0x7a}}),
2252 std::initializer_list<UChar32>({0x00aa, 0x00b5, 0x00ba, 0x0345, 0x037f, 0x0386, 0x038c, 0x10c7,
2253 0x10cd, 0x1f59, 0x1f5b, 0x1f5d, 0x1fbe, 0x2071, 0x207f, 0x2102,
2254 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2139, 0x214e, 0x2d27,
2255 0x2d2d, 0x1d4a2, 0x1d4bb, 0x1d546}),
2256 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x01ba}, {0x01bc, 0x01bf},
2257 {0x01c4, 0x0293}, {0x0295, 0x02b8}, {0x02c0, 0x02c1}, {0x02e0, 0x02e4},
2258 {0x0370, 0x0373}, {0x0376, 0x0377}, {0x037a, 0x037d}, {0x0388, 0x038a},
2259 {0x038e, 0x03a1}, {0x03a3, 0x03f5}, {0x03f7, 0x0481}, {0x048a, 0x052f},
2260 {0x0531, 0x0556}, {0x0560, 0x0588}, {0x10a0, 0x10c5}, {0x10d0, 0x10fa},
2261 {0x10fd, 0x10ff}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1c80, 0x1c88},
2262 {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1d00, 0x1dbf}, {0x1e00, 0x1f15},
2263 {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
2264 {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fc2, 0x1fc4},
2265 {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec},
2266 {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2090, 0x209c}, {0x210a, 0x2113},
2267 {0x2119, 0x211d}, {0x212a, 0x212d}, {0x212f, 0x2134}, {0x213c, 0x213f},
2268 {0x2145, 0x2149}, {0x2160, 0x217f}, {0x2183, 0x2184}, {0x24b6, 0x24e9},
2269 {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e}, {0x2c60, 0x2ce4}, {0x2ceb, 0x2cee},
2270 {0x2cf2, 0x2cf3}, {0x2d00, 0x2d25}, {0xa640, 0xa66d}, {0xa680, 0xa69d},
2271 {0xa722, 0xa787}, {0xa78b, 0xa78e}, {0xa790, 0xa7b9}, {0xa7f8, 0xa7fa},
2272 {0xab30, 0xab5a}, {0xab5c, 0xab65}, {0xab70, 0xabbf}, {0xfb00, 0xfb06},
2273 {0xfb13, 0xfb17}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0x10400, 0x1044f},
2274 {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2},
2275 {0x118a0, 0x118df}, {0x16e40, 0x16e7f}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c},
2276 {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9},
2277 {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
2278 {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544},
2279 {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da},
2280 {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e},
2281 {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2},
2282 {0x1d7c4, 0x1d7cb}, {0x1e900, 0x1e943}, {0x1f130, 0x1f149}, {0x1f150, 0x1f169},
2283 {0x1f170, 0x1f189}}),
2284 CharacterClassWidths::HasBothBMPAndNonBMP);
2285 return characterClass;
2286}
2287
2288static std::unique_ptr<CharacterClass> createCharacterClass47()
2289{
2290 // Name = Case_Ignorable, number of codePoints: 2357
2291 auto characterClass = std::make_unique<CharacterClass>(
2292 std::initializer_list<UChar32>({0x27, 0x2e, 0x3a, 0x5e, 0x60}),
2293 std::initializer_list<CharacterRange>({}),
2294 std::initializer_list<UChar32>({0x00a8, 0x00ad, 0x00af, 0x00b4, 0x037a, 0x0387, 0x0559, 0x05bf,
2295 0x05c7, 0x05f4, 0x061c, 0x0640, 0x0670, 0x070f, 0x0711, 0x07fa,
2296 0x07fd, 0x093a, 0x093c, 0x094d, 0x0971, 0x0981, 0x09bc, 0x09cd,
2297 0x09fe, 0x0a3c, 0x0a51, 0x0a75, 0x0abc, 0x0acd, 0x0b01, 0x0b3c,
2298 0x0b3f, 0x0b4d, 0x0b56, 0x0b82, 0x0bc0, 0x0bcd, 0x0c00, 0x0c04,
2299 0x0c81, 0x0cbc, 0x0cbf, 0x0cc6, 0x0d4d, 0x0dca, 0x0dd6, 0x0e31,
2300 0x0eb1, 0x0ec6, 0x0f35, 0x0f37, 0x0f39, 0x0fc6, 0x1082, 0x108d,
2301 0x109d, 0x10fc, 0x17c6, 0x17d7, 0x17dd, 0x1843, 0x18a9, 0x1932,
2302 0x1a1b, 0x1a56, 0x1a60, 0x1a62, 0x1a7f, 0x1aa7, 0x1b34, 0x1b3c,
2303 0x1b42, 0x1be6, 0x1bed, 0x1ced, 0x1cf4, 0x1d78, 0x1fbd, 0x2024,
2304 0x2027, 0x2071, 0x207f, 0x2d6f, 0x2d7f, 0x2e2f, 0x3005, 0x303b,
2305 0xa015, 0xa60c, 0xa67f, 0xa770, 0xa802, 0xa806, 0xa80b, 0xa8ff,
2306 0xa9b3, 0xa9bc, 0xa9cf, 0xaa43, 0xaa4c, 0xaa70, 0xaa7c, 0xaab0,
2307 0xaac1, 0xaadd, 0xaaf6, 0xabe5, 0xabe8, 0xabed, 0xfb1e, 0xfe13,
2308 0xfe52, 0xfe55, 0xfeff, 0xff07, 0xff0e, 0xff1a, 0xff3e, 0xff40,
2309 0xff70, 0xffe3, 0x101fd, 0x102e0, 0x10a3f, 0x11001, 0x110bd, 0x110cd,
2310 0x11173, 0x11234, 0x1123e, 0x112df, 0x11340, 0x11446, 0x1145e, 0x114ba,
2311 0x1163d, 0x116ab, 0x116ad, 0x116b7, 0x11a47, 0x11c3f, 0x11d3a, 0x11d47,
2312 0x11d95, 0x11d97, 0x1da75, 0x1da84, 0xe0001}),
2313 std::initializer_list<CharacterRange>({{0x00b7, 0x00b8}, {0x02b0, 0x036f}, {0x0374, 0x0375}, {0x0384, 0x0385},
2314 {0x0483, 0x0489}, {0x0591, 0x05bd}, {0x05c1, 0x05c2}, {0x05c4, 0x05c5},
2315 {0x0600, 0x0605}, {0x0610, 0x061a}, {0x064b, 0x065f}, {0x06d6, 0x06dd},
2316 {0x06df, 0x06e8}, {0x06ea, 0x06ed}, {0x0730, 0x074a}, {0x07a6, 0x07b0},
2317 {0x07eb, 0x07f5}, {0x0816, 0x082d}, {0x0859, 0x085b}, {0x08d3, 0x0902},
2318 {0x0941, 0x0948}, {0x0951, 0x0957}, {0x0962, 0x0963}, {0x09c1, 0x09c4},
2319 {0x09e2, 0x09e3}, {0x0a01, 0x0a02}, {0x0a41, 0x0a42}, {0x0a47, 0x0a48},
2320 {0x0a4b, 0x0a4d}, {0x0a70, 0x0a71}, {0x0a81, 0x0a82}, {0x0ac1, 0x0ac5},
2321 {0x0ac7, 0x0ac8}, {0x0ae2, 0x0ae3}, {0x0afa, 0x0aff}, {0x0b41, 0x0b44},
2322 {0x0b62, 0x0b63}, {0x0c3e, 0x0c40}, {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d},
2323 {0x0c55, 0x0c56}, {0x0c62, 0x0c63}, {0x0ccc, 0x0ccd}, {0x0ce2, 0x0ce3},
2324 {0x0d00, 0x0d01}, {0x0d3b, 0x0d3c}, {0x0d41, 0x0d44}, {0x0d62, 0x0d63},
2325 {0x0dd2, 0x0dd4}, {0x0e34, 0x0e3a}, {0x0e46, 0x0e4e}, {0x0eb4, 0x0eb9},
2326 {0x0ebb, 0x0ebc}, {0x0ec8, 0x0ecd}, {0x0f18, 0x0f19}, {0x0f71, 0x0f7e},
2327 {0x0f80, 0x0f84}, {0x0f86, 0x0f87}, {0x0f8d, 0x0f97}, {0x0f99, 0x0fbc},
2328 {0x102d, 0x1030}, {0x1032, 0x1037}, {0x1039, 0x103a}, {0x103d, 0x103e},
2329 {0x1058, 0x1059}, {0x105e, 0x1060}, {0x1071, 0x1074}, {0x1085, 0x1086},
2330 {0x135d, 0x135f}, {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753},
2331 {0x1772, 0x1773}, {0x17b4, 0x17b5}, {0x17b7, 0x17bd}, {0x17c9, 0x17d3},
2332 {0x180b, 0x180e}, {0x1885, 0x1886}, {0x1920, 0x1922}, {0x1927, 0x1928},
2333 {0x1939, 0x193b}, {0x1a17, 0x1a18}, {0x1a58, 0x1a5e}, {0x1a65, 0x1a6c},
2334 {0x1a73, 0x1a7c}, {0x1ab0, 0x1abe}, {0x1b00, 0x1b03}, {0x1b36, 0x1b3a},
2335 {0x1b6b, 0x1b73}, {0x1b80, 0x1b81}, {0x1ba2, 0x1ba5}, {0x1ba8, 0x1ba9},
2336 {0x1bab, 0x1bad}, {0x1be8, 0x1be9}, {0x1bef, 0x1bf1}, {0x1c2c, 0x1c33},
2337 {0x1c36, 0x1c37}, {0x1c78, 0x1c7d}, {0x1cd0, 0x1cd2}, {0x1cd4, 0x1ce0},
2338 {0x1ce2, 0x1ce8}, {0x1cf8, 0x1cf9}, {0x1d2c, 0x1d6a}, {0x1d9b, 0x1df9},
2339 {0x1dfb, 0x1dff}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf},
2340 {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x200b, 0x200f}, {0x2018, 0x2019},
2341 {0x202a, 0x202e}, {0x2060, 0x2064}, {0x2066, 0x206f}, {0x2090, 0x209c},
2342 {0x20d0, 0x20f0}, {0x2c7c, 0x2c7d}, {0x2cef, 0x2cf1}, {0x2de0, 0x2dff},
2343 {0x302a, 0x302d}, {0x3031, 0x3035}, {0x3099, 0x309e}, {0x30fc, 0x30fe},
2344 {0xa4f8, 0xa4fd}, {0xa66f, 0xa672}, {0xa674, 0xa67d}, {0xa69c, 0xa69f},
2345 {0xa6f0, 0xa6f1}, {0xa700, 0xa721}, {0xa788, 0xa78a}, {0xa7f8, 0xa7f9},
2346 {0xa825, 0xa826}, {0xa8c4, 0xa8c5}, {0xa8e0, 0xa8f1}, {0xa926, 0xa92d},
2347 {0xa947, 0xa951}, {0xa980, 0xa982}, {0xa9b6, 0xa9b9}, {0xa9e5, 0xa9e6},
2348 {0xaa29, 0xaa2e}, {0xaa31, 0xaa32}, {0xaa35, 0xaa36}, {0xaab2, 0xaab4},
2349 {0xaab7, 0xaab8}, {0xaabe, 0xaabf}, {0xaaec, 0xaaed}, {0xaaf3, 0xaaf4},
2350 {0xab5b, 0xab5f}, {0xfbb2, 0xfbc1}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe2f},
2351 {0xff9e, 0xff9f}, {0xfff9, 0xfffb}, {0x10376, 0x1037a}, {0x10a01, 0x10a03},
2352 {0x10a05, 0x10a06}, {0x10a0c, 0x10a0f}, {0x10a38, 0x10a3a}, {0x10ae5, 0x10ae6},
2353 {0x10d24, 0x10d27}, {0x10f46, 0x10f50}, {0x11038, 0x11046}, {0x1107f, 0x11081},
2354 {0x110b3, 0x110b6}, {0x110b9, 0x110ba}, {0x11100, 0x11102}, {0x11127, 0x1112b},
2355 {0x1112d, 0x11134}, {0x11180, 0x11181}, {0x111b6, 0x111be}, {0x111c9, 0x111cc},
2356 {0x1122f, 0x11231}, {0x11236, 0x11237}, {0x112e3, 0x112ea}, {0x11300, 0x11301},
2357 {0x1133b, 0x1133c}, {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11438, 0x1143f},
2358 {0x11442, 0x11444}, {0x114b3, 0x114b8}, {0x114bf, 0x114c0}, {0x114c2, 0x114c3},
2359 {0x115b2, 0x115b5}, {0x115bc, 0x115bd}, {0x115bf, 0x115c0}, {0x115dc, 0x115dd},
2360 {0x11633, 0x1163a}, {0x1163f, 0x11640}, {0x116b0, 0x116b5}, {0x1171d, 0x1171f},
2361 {0x11722, 0x11725}, {0x11727, 0x1172b}, {0x1182f, 0x11837}, {0x11839, 0x1183a},
2362 {0x11a01, 0x11a0a}, {0x11a33, 0x11a38}, {0x11a3b, 0x11a3e}, {0x11a51, 0x11a56},
2363 {0x11a59, 0x11a5b}, {0x11a8a, 0x11a96}, {0x11a98, 0x11a99}, {0x11c30, 0x11c36},
2364 {0x11c38, 0x11c3d}, {0x11c92, 0x11ca7}, {0x11caa, 0x11cb0}, {0x11cb2, 0x11cb3},
2365 {0x11cb5, 0x11cb6}, {0x11d31, 0x11d36}, {0x11d3c, 0x11d3d}, {0x11d3f, 0x11d45},
2366 {0x11d90, 0x11d91}, {0x11ef3, 0x11ef4}, {0x16af0, 0x16af4}, {0x16b30, 0x16b36},
2367 {0x16b40, 0x16b43}, {0x16f8f, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x1bc9d, 0x1bc9e},
2368 {0x1bca0, 0x1bca3}, {0x1d167, 0x1d169}, {0x1d173, 0x1d182}, {0x1d185, 0x1d18b},
2369 {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244}, {0x1da00, 0x1da36}, {0x1da3b, 0x1da6c},
2370 {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1e000, 0x1e006}, {0x1e008, 0x1e018},
2371 {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a}, {0x1e8d0, 0x1e8d6},
2372 {0x1e944, 0x1e94a}, {0x1f3fb, 0x1f3ff}, {0xe0020, 0xe007f}, {0xe0100, 0xe01ef}}),
2373 CharacterClassWidths::HasBothBMPAndNonBMP);
2374 return characterClass;
2375}
2376
2377static std::unique_ptr<CharacterClass> createCharacterClass48()
2378{
2379 // Name = Changes_When_Lowercased, number of codePoints: 1383
2380 auto characterClass = std::make_unique<CharacterClass>(
2381 std::initializer_list<UChar32>({}),
2382 std::initializer_list<CharacterRange>({{0x41, 0x5a}}),
2383 std::initializer_list<UChar32>({0x0100, 0x0102, 0x0104, 0x0106, 0x0108, 0x010a, 0x010c, 0x010e,
2384 0x0110, 0x0112, 0x0114, 0x0116, 0x0118, 0x011a, 0x011c, 0x011e,
2385 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x012a, 0x012c, 0x012e,
2386 0x0130, 0x0132, 0x0134, 0x0136, 0x0139, 0x013b, 0x013d, 0x013f,
2387 0x0141, 0x0143, 0x0145, 0x0147, 0x014a, 0x014c, 0x014e, 0x0150,
2388 0x0152, 0x0154, 0x0156, 0x0158, 0x015a, 0x015c, 0x015e, 0x0160,
2389 0x0162, 0x0164, 0x0166, 0x0168, 0x016a, 0x016c, 0x016e, 0x0170,
2390 0x0172, 0x0174, 0x0176, 0x017b, 0x017d, 0x0184, 0x01a2, 0x01a4,
2391 0x01a9, 0x01ac, 0x01b5, 0x01bc, 0x01cd, 0x01cf, 0x01d1, 0x01d3,
2392 0x01d5, 0x01d7, 0x01d9, 0x01db, 0x01de, 0x01e0, 0x01e2, 0x01e4,
2393 0x01e6, 0x01e8, 0x01ea, 0x01ec, 0x01ee, 0x01f4, 0x01fa, 0x01fc,
2394 0x01fe, 0x0200, 0x0202, 0x0204, 0x0206, 0x0208, 0x020a, 0x020c,
2395 0x020e, 0x0210, 0x0212, 0x0214, 0x0216, 0x0218, 0x021a, 0x021c,
2396 0x021e, 0x0220, 0x0222, 0x0224, 0x0226, 0x0228, 0x022a, 0x022c,
2397 0x022e, 0x0230, 0x0232, 0x0241, 0x0248, 0x024a, 0x024c, 0x024e,
2398 0x0370, 0x0372, 0x0376, 0x037f, 0x0386, 0x038c, 0x03cf, 0x03d8,
2399 0x03da, 0x03dc, 0x03de, 0x03e0, 0x03e2, 0x03e4, 0x03e6, 0x03e8,
2400 0x03ea, 0x03ec, 0x03ee, 0x03f4, 0x03f7, 0x0460, 0x0462, 0x0464,
2401 0x0466, 0x0468, 0x046a, 0x046c, 0x046e, 0x0470, 0x0472, 0x0474,
2402 0x0476, 0x0478, 0x047a, 0x047c, 0x047e, 0x0480, 0x048a, 0x048c,
2403 0x048e, 0x0490, 0x0492, 0x0494, 0x0496, 0x0498, 0x049a, 0x049c,
2404 0x049e, 0x04a0, 0x04a2, 0x04a4, 0x04a6, 0x04a8, 0x04aa, 0x04ac,
2405 0x04ae, 0x04b0, 0x04b2, 0x04b4, 0x04b6, 0x04b8, 0x04ba, 0x04bc,
2406 0x04be, 0x04c3, 0x04c5, 0x04c7, 0x04c9, 0x04cb, 0x04cd, 0x04d0,
2407 0x04d2, 0x04d4, 0x04d6, 0x04d8, 0x04da, 0x04dc, 0x04de, 0x04e0,
2408 0x04e2, 0x04e4, 0x04e6, 0x04e8, 0x04ea, 0x04ec, 0x04ee, 0x04f0,
2409 0x04f2, 0x04f4, 0x04f6, 0x04f8, 0x04fa, 0x04fc, 0x04fe, 0x0500,
2410 0x0502, 0x0504, 0x0506, 0x0508, 0x050a, 0x050c, 0x050e, 0x0510,
2411 0x0512, 0x0514, 0x0516, 0x0518, 0x051a, 0x051c, 0x051e, 0x0520,
2412 0x0522, 0x0524, 0x0526, 0x0528, 0x052a, 0x052c, 0x052e, 0x10c7,
2413 0x10cd, 0x1e00, 0x1e02, 0x1e04, 0x1e06, 0x1e08, 0x1e0a, 0x1e0c,
2414 0x1e0e, 0x1e10, 0x1e12, 0x1e14, 0x1e16, 0x1e18, 0x1e1a, 0x1e1c,
2415 0x1e1e, 0x1e20, 0x1e22, 0x1e24, 0x1e26, 0x1e28, 0x1e2a, 0x1e2c,
2416 0x1e2e, 0x1e30, 0x1e32, 0x1e34, 0x1e36, 0x1e38, 0x1e3a, 0x1e3c,
2417 0x1e3e, 0x1e40, 0x1e42, 0x1e44, 0x1e46, 0x1e48, 0x1e4a, 0x1e4c,
2418 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58, 0x1e5a, 0x1e5c,
2419 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c,
2420 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78, 0x1e7a, 0x1e7c,
2421 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88, 0x1e8a, 0x1e8c,
2422 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e9e, 0x1ea0, 0x1ea2, 0x1ea4,
2423 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4,
2424 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4,
2425 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4,
2426 0x1ed6, 0x1ed8, 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4,
2427 0x1ee6, 0x1ee8, 0x1eea, 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4,
2428 0x1ef6, 0x1ef8, 0x1efa, 0x1efc, 0x1efe, 0x1f59, 0x1f5b, 0x1f5d,
2429 0x1f5f, 0x2126, 0x2132, 0x2183, 0x2c60, 0x2c67, 0x2c69, 0x2c6b,
2430 0x2c72, 0x2c75, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a, 0x2c8c,
2431 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a, 0x2c9c,
2432 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa, 0x2cac,
2433 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc,
2434 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc,
2435 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc,
2436 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0xa640, 0xa642,
2437 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650, 0xa652,
2438 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660, 0xa662,
2439 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682, 0xa684,
2440 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692, 0xa694,
2441 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728, 0xa72a,
2442 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a, 0xa73c,
2443 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a, 0xa74c,
2444 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a, 0xa75c,
2445 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a, 0xa76c,
2446 0xa76e, 0xa779, 0xa77b, 0xa780, 0xa782, 0xa784, 0xa786, 0xa78b,
2447 0xa78d, 0xa790, 0xa792, 0xa796, 0xa798, 0xa79a, 0xa79c, 0xa79e,
2448 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7b6, 0xa7b8}),
2449 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00de}, {0x0178, 0x0179}, {0x0181, 0x0182},
2450 {0x0186, 0x0187}, {0x0189, 0x018b}, {0x018e, 0x0191}, {0x0193, 0x0194},
2451 {0x0196, 0x0198}, {0x019c, 0x019d}, {0x019f, 0x01a0}, {0x01a6, 0x01a7},
2452 {0x01ae, 0x01af}, {0x01b1, 0x01b3}, {0x01b7, 0x01b8}, {0x01c4, 0x01c5},
2453 {0x01c7, 0x01c8}, {0x01ca, 0x01cb}, {0x01f1, 0x01f2}, {0x01f6, 0x01f8},
2454 {0x023a, 0x023b}, {0x023d, 0x023e}, {0x0243, 0x0246}, {0x0388, 0x038a},
2455 {0x038e, 0x038f}, {0x0391, 0x03a1}, {0x03a3, 0x03ab}, {0x03f9, 0x03fa},
2456 {0x03fd, 0x042f}, {0x04c0, 0x04c1}, {0x0531, 0x0556}, {0x10a0, 0x10c5},
2457 {0x13a0, 0x13f5}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1f08, 0x1f0f},
2458 {0x1f18, 0x1f1d}, {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d},
2459 {0x1f68, 0x1f6f}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f}, {0x1fa8, 0x1faf},
2460 {0x1fb8, 0x1fbc}, {0x1fc8, 0x1fcc}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec},
2461 {0x1ff8, 0x1ffc}, {0x212a, 0x212b}, {0x2160, 0x216f}, {0x24b6, 0x24cf},
2462 {0x2c00, 0x2c2e}, {0x2c62, 0x2c64}, {0x2c6d, 0x2c70}, {0x2c7e, 0x2c80},
2463 {0xa77d, 0xa77e}, {0xa7aa, 0xa7ae}, {0xa7b0, 0xa7b4}, {0xff21, 0xff3a},
2464 {0x10400, 0x10427}, {0x104b0, 0x104d3}, {0x10c80, 0x10cb2}, {0x118a0, 0x118bf},
2465 {0x16e40, 0x16e5f}, {0x1e900, 0x1e921}}),
2466 CharacterClassWidths::HasBothBMPAndNonBMP);
2467 return characterClass;
2468}
2469
2470static std::unique_ptr<CharacterClass> createCharacterClass49()
2471{
2472 // Name = Changes_When_Uppercased, number of codePoints: 1475
2473 auto characterClass = std::make_unique<CharacterClass>(
2474 std::initializer_list<UChar32>({}),
2475 std::initializer_list<CharacterRange>({{0x61, 0x7a}}),
2476 std::initializer_list<UChar32>({0x00b5, 0x0101, 0x0103, 0x0105, 0x0107, 0x0109, 0x010b, 0x010d,
2477 0x010f, 0x0111, 0x0113, 0x0115, 0x0117, 0x0119, 0x011b, 0x011d,
2478 0x011f, 0x0121, 0x0123, 0x0125, 0x0127, 0x0129, 0x012b, 0x012d,
2479 0x012f, 0x0131, 0x0133, 0x0135, 0x0137, 0x013a, 0x013c, 0x013e,
2480 0x0140, 0x0142, 0x0144, 0x0146, 0x014b, 0x014d, 0x014f, 0x0151,
2481 0x0153, 0x0155, 0x0157, 0x0159, 0x015b, 0x015d, 0x015f, 0x0161,
2482 0x0163, 0x0165, 0x0167, 0x0169, 0x016b, 0x016d, 0x016f, 0x0171,
2483 0x0173, 0x0175, 0x0177, 0x017a, 0x017c, 0x0183, 0x0185, 0x0188,
2484 0x018c, 0x0192, 0x0195, 0x019e, 0x01a1, 0x01a3, 0x01a5, 0x01a8,
2485 0x01ad, 0x01b0, 0x01b4, 0x01b6, 0x01b9, 0x01bd, 0x01bf, 0x01ce,
2486 0x01d0, 0x01d2, 0x01d4, 0x01d6, 0x01d8, 0x01da, 0x01df, 0x01e1,
2487 0x01e3, 0x01e5, 0x01e7, 0x01e9, 0x01eb, 0x01ed, 0x01f5, 0x01f9,
2488 0x01fb, 0x01fd, 0x01ff, 0x0201, 0x0203, 0x0205, 0x0207, 0x0209,
2489 0x020b, 0x020d, 0x020f, 0x0211, 0x0213, 0x0215, 0x0217, 0x0219,
2490 0x021b, 0x021d, 0x021f, 0x0223, 0x0225, 0x0227, 0x0229, 0x022b,
2491 0x022d, 0x022f, 0x0231, 0x0233, 0x023c, 0x0242, 0x0247, 0x0249,
2492 0x024b, 0x024d, 0x0259, 0x0263, 0x026f, 0x0275, 0x027d, 0x0280,
2493 0x0283, 0x0292, 0x0345, 0x0371, 0x0373, 0x0377, 0x0390, 0x03d9,
2494 0x03db, 0x03dd, 0x03df, 0x03e1, 0x03e3, 0x03e5, 0x03e7, 0x03e9,
2495 0x03eb, 0x03ed, 0x03f5, 0x03f8, 0x03fb, 0x0461, 0x0463, 0x0465,
2496 0x0467, 0x0469, 0x046b, 0x046d, 0x046f, 0x0471, 0x0473, 0x0475,
2497 0x0477, 0x0479, 0x047b, 0x047d, 0x047f, 0x0481, 0x048b, 0x048d,
2498 0x048f, 0x0491, 0x0493, 0x0495, 0x0497, 0x0499, 0x049b, 0x049d,
2499 0x049f, 0x04a1, 0x04a3, 0x04a5, 0x04a7, 0x04a9, 0x04ab, 0x04ad,
2500 0x04af, 0x04b1, 0x04b3, 0x04b5, 0x04b7, 0x04b9, 0x04bb, 0x04bd,
2501 0x04bf, 0x04c2, 0x04c4, 0x04c6, 0x04c8, 0x04ca, 0x04cc, 0x04d1,
2502 0x04d3, 0x04d5, 0x04d7, 0x04d9, 0x04db, 0x04dd, 0x04df, 0x04e1,
2503 0x04e3, 0x04e5, 0x04e7, 0x04e9, 0x04eb, 0x04ed, 0x04ef, 0x04f1,
2504 0x04f3, 0x04f5, 0x04f7, 0x04f9, 0x04fb, 0x04fd, 0x04ff, 0x0501,
2505 0x0503, 0x0505, 0x0507, 0x0509, 0x050b, 0x050d, 0x050f, 0x0511,
2506 0x0513, 0x0515, 0x0517, 0x0519, 0x051b, 0x051d, 0x051f, 0x0521,
2507 0x0523, 0x0525, 0x0527, 0x0529, 0x052b, 0x052d, 0x052f, 0x1d79,
2508 0x1d7d, 0x1e01, 0x1e03, 0x1e05, 0x1e07, 0x1e09, 0x1e0b, 0x1e0d,
2509 0x1e0f, 0x1e11, 0x1e13, 0x1e15, 0x1e17, 0x1e19, 0x1e1b, 0x1e1d,
2510 0x1e1f, 0x1e21, 0x1e23, 0x1e25, 0x1e27, 0x1e29, 0x1e2b, 0x1e2d,
2511 0x1e2f, 0x1e31, 0x1e33, 0x1e35, 0x1e37, 0x1e39, 0x1e3b, 0x1e3d,
2512 0x1e3f, 0x1e41, 0x1e43, 0x1e45, 0x1e47, 0x1e49, 0x1e4b, 0x1e4d,
2513 0x1e4f, 0x1e51, 0x1e53, 0x1e55, 0x1e57, 0x1e59, 0x1e5b, 0x1e5d,
2514 0x1e5f, 0x1e61, 0x1e63, 0x1e65, 0x1e67, 0x1e69, 0x1e6b, 0x1e6d,
2515 0x1e6f, 0x1e71, 0x1e73, 0x1e75, 0x1e77, 0x1e79, 0x1e7b, 0x1e7d,
2516 0x1e7f, 0x1e81, 0x1e83, 0x1e85, 0x1e87, 0x1e89, 0x1e8b, 0x1e8d,
2517 0x1e8f, 0x1e91, 0x1e93, 0x1ea1, 0x1ea3, 0x1ea5, 0x1ea7, 0x1ea9,
2518 0x1eab, 0x1ead, 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7, 0x1eb9,
2519 0x1ebb, 0x1ebd, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ec9,
2520 0x1ecb, 0x1ecd, 0x1ecf, 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed9,
2521 0x1edb, 0x1edd, 0x1edf, 0x1ee1, 0x1ee3, 0x1ee5, 0x1ee7, 0x1ee9,
2522 0x1eeb, 0x1eed, 0x1eef, 0x1ef1, 0x1ef3, 0x1ef5, 0x1ef7, 0x1ef9,
2523 0x1efb, 0x1efd, 0x1fbc, 0x1fbe, 0x1fcc, 0x1ffc, 0x214e, 0x2184,
2524 0x2c61, 0x2c68, 0x2c6a, 0x2c6c, 0x2c73, 0x2c76, 0x2c81, 0x2c83,
2525 0x2c85, 0x2c87, 0x2c89, 0x2c8b, 0x2c8d, 0x2c8f, 0x2c91, 0x2c93,
2526 0x2c95, 0x2c97, 0x2c99, 0x2c9b, 0x2c9d, 0x2c9f, 0x2ca1, 0x2ca3,
2527 0x2ca5, 0x2ca7, 0x2ca9, 0x2cab, 0x2cad, 0x2caf, 0x2cb1, 0x2cb3,
2528 0x2cb5, 0x2cb7, 0x2cb9, 0x2cbb, 0x2cbd, 0x2cbf, 0x2cc1, 0x2cc3,
2529 0x2cc5, 0x2cc7, 0x2cc9, 0x2ccb, 0x2ccd, 0x2ccf, 0x2cd1, 0x2cd3,
2530 0x2cd5, 0x2cd7, 0x2cd9, 0x2cdb, 0x2cdd, 0x2cdf, 0x2ce1, 0x2ce3,
2531 0x2cec, 0x2cee, 0x2cf3, 0x2d27, 0x2d2d, 0xa641, 0xa643, 0xa645,
2532 0xa647, 0xa649, 0xa64b, 0xa64d, 0xa64f, 0xa651, 0xa653, 0xa655,
2533 0xa657, 0xa659, 0xa65b, 0xa65d, 0xa65f, 0xa661, 0xa663, 0xa665,
2534 0xa667, 0xa669, 0xa66b, 0xa66d, 0xa681, 0xa683, 0xa685, 0xa687,
2535 0xa689, 0xa68b, 0xa68d, 0xa68f, 0xa691, 0xa693, 0xa695, 0xa697,
2536 0xa699, 0xa69b, 0xa723, 0xa725, 0xa727, 0xa729, 0xa72b, 0xa72d,
2537 0xa72f, 0xa733, 0xa735, 0xa737, 0xa739, 0xa73b, 0xa73d, 0xa73f,
2538 0xa741, 0xa743, 0xa745, 0xa747, 0xa749, 0xa74b, 0xa74d, 0xa74f,
2539 0xa751, 0xa753, 0xa755, 0xa757, 0xa759, 0xa75b, 0xa75d, 0xa75f,
2540 0xa761, 0xa763, 0xa765, 0xa767, 0xa769, 0xa76b, 0xa76d, 0xa76f,
2541 0xa77a, 0xa77c, 0xa77f, 0xa781, 0xa783, 0xa785, 0xa787, 0xa78c,
2542 0xa791, 0xa793, 0xa797, 0xa799, 0xa79b, 0xa79d, 0xa79f, 0xa7a1,
2543 0xa7a3, 0xa7a5, 0xa7a7, 0xa7a9, 0xa7b5, 0xa7b7, 0xa7b9, 0xab53}),
2544 std::initializer_list<CharacterRange>({{0x00df, 0x00f6}, {0x00f8, 0x00ff}, {0x0148, 0x0149}, {0x017e, 0x0180},
2545 {0x0199, 0x019a}, {0x01c5, 0x01c6}, {0x01c8, 0x01c9}, {0x01cb, 0x01cc},
2546 {0x01dc, 0x01dd}, {0x01ef, 0x01f0}, {0x01f2, 0x01f3}, {0x023f, 0x0240},
2547 {0x024f, 0x0254}, {0x0256, 0x0257}, {0x025b, 0x025c}, {0x0260, 0x0261},
2548 {0x0265, 0x0266}, {0x0268, 0x026c}, {0x0271, 0x0272}, {0x0287, 0x028c},
2549 {0x029d, 0x029e}, {0x037b, 0x037d}, {0x03ac, 0x03ce}, {0x03d0, 0x03d1},
2550 {0x03d5, 0x03d7}, {0x03ef, 0x03f3}, {0x0430, 0x045f}, {0x04ce, 0x04cf},
2551 {0x0561, 0x0587}, {0x10d0, 0x10fa}, {0x10fd, 0x10ff}, {0x13f8, 0x13fd},
2552 {0x1c80, 0x1c88}, {0x1e95, 0x1e9b}, {0x1eff, 0x1f07}, {0x1f10, 0x1f15},
2553 {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45}, {0x1f50, 0x1f57},
2554 {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fb7},
2555 {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fd7},
2556 {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7}, {0x2170, 0x217f},
2557 {0x24d0, 0x24e9}, {0x2c30, 0x2c5e}, {0x2c65, 0x2c66}, {0x2d00, 0x2d25},
2558 {0xab70, 0xabbf}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xff41, 0xff5a},
2559 {0x10428, 0x1044f}, {0x104d8, 0x104fb}, {0x10cc0, 0x10cf2}, {0x118c0, 0x118df},
2560 {0x16e60, 0x16e7f}, {0x1e922, 0x1e943}}),
2561 CharacterClassWidths::HasBothBMPAndNonBMP);
2562 return characterClass;
2563}
2564
2565static std::unique_ptr<CharacterClass> createCharacterClass50()
2566{
2567 // Name = Changes_When_Titlecased, number of codePoints: 1402
2568 auto characterClass = std::make_unique<CharacterClass>(
2569 std::initializer_list<UChar32>({}),
2570 std::initializer_list<CharacterRange>({{0x61, 0x7a}}),
2571 std::initializer_list<UChar32>({0x00b5, 0x0101, 0x0103, 0x0105, 0x0107, 0x0109, 0x010b, 0x010d,
2572 0x010f, 0x0111, 0x0113, 0x0115, 0x0117, 0x0119, 0x011b, 0x011d,
2573 0x011f, 0x0121, 0x0123, 0x0125, 0x0127, 0x0129, 0x012b, 0x012d,
2574 0x012f, 0x0131, 0x0133, 0x0135, 0x0137, 0x013a, 0x013c, 0x013e,
2575 0x0140, 0x0142, 0x0144, 0x0146, 0x014b, 0x014d, 0x014f, 0x0151,
2576 0x0153, 0x0155, 0x0157, 0x0159, 0x015b, 0x015d, 0x015f, 0x0161,
2577 0x0163, 0x0165, 0x0167, 0x0169, 0x016b, 0x016d, 0x016f, 0x0171,
2578 0x0173, 0x0175, 0x0177, 0x017a, 0x017c, 0x0183, 0x0185, 0x0188,
2579 0x018c, 0x0192, 0x0195, 0x019e, 0x01a1, 0x01a3, 0x01a5, 0x01a8,
2580 0x01ad, 0x01b0, 0x01b4, 0x01b6, 0x01b9, 0x01bd, 0x01bf, 0x01c4,
2581 0x01cc, 0x01ce, 0x01d0, 0x01d2, 0x01d4, 0x01d6, 0x01d8, 0x01da,
2582 0x01df, 0x01e1, 0x01e3, 0x01e5, 0x01e7, 0x01e9, 0x01eb, 0x01ed,
2583 0x01f3, 0x01f5, 0x01f9, 0x01fb, 0x01fd, 0x01ff, 0x0201, 0x0203,
2584 0x0205, 0x0207, 0x0209, 0x020b, 0x020d, 0x020f, 0x0211, 0x0213,
2585 0x0215, 0x0217, 0x0219, 0x021b, 0x021d, 0x021f, 0x0223, 0x0225,
2586 0x0227, 0x0229, 0x022b, 0x022d, 0x022f, 0x0231, 0x0233, 0x023c,
2587 0x0242, 0x0247, 0x0249, 0x024b, 0x024d, 0x0259, 0x0263, 0x026f,
2588 0x0275, 0x027d, 0x0280, 0x0283, 0x0292, 0x0345, 0x0371, 0x0373,
2589 0x0377, 0x0390, 0x03d9, 0x03db, 0x03dd, 0x03df, 0x03e1, 0x03e3,
2590 0x03e5, 0x03e7, 0x03e9, 0x03eb, 0x03ed, 0x03f5, 0x03f8, 0x03fb,
2591 0x0461, 0x0463, 0x0465, 0x0467, 0x0469, 0x046b, 0x046d, 0x046f,
2592 0x0471, 0x0473, 0x0475, 0x0477, 0x0479, 0x047b, 0x047d, 0x047f,
2593 0x0481, 0x048b, 0x048d, 0x048f, 0x0491, 0x0493, 0x0495, 0x0497,
2594 0x0499, 0x049b, 0x049d, 0x049f, 0x04a1, 0x04a3, 0x04a5, 0x04a7,
2595 0x04a9, 0x04ab, 0x04ad, 0x04af, 0x04b1, 0x04b3, 0x04b5, 0x04b7,
2596 0x04b9, 0x04bb, 0x04bd, 0x04bf, 0x04c2, 0x04c4, 0x04c6, 0x04c8,
2597 0x04ca, 0x04cc, 0x04d1, 0x04d3, 0x04d5, 0x04d7, 0x04d9, 0x04db,
2598 0x04dd, 0x04df, 0x04e1, 0x04e3, 0x04e5, 0x04e7, 0x04e9, 0x04eb,
2599 0x04ed, 0x04ef, 0x04f1, 0x04f3, 0x04f5, 0x04f7, 0x04f9, 0x04fb,
2600 0x04fd, 0x04ff, 0x0501, 0x0503, 0x0505, 0x0507, 0x0509, 0x050b,
2601 0x050d, 0x050f, 0x0511, 0x0513, 0x0515, 0x0517, 0x0519, 0x051b,
2602 0x051d, 0x051f, 0x0521, 0x0523, 0x0525, 0x0527, 0x0529, 0x052b,
2603 0x052d, 0x052f, 0x1d79, 0x1d7d, 0x1e01, 0x1e03, 0x1e05, 0x1e07,
2604 0x1e09, 0x1e0b, 0x1e0d, 0x1e0f, 0x1e11, 0x1e13, 0x1e15, 0x1e17,
2605 0x1e19, 0x1e1b, 0x1e1d, 0x1e1f, 0x1e21, 0x1e23, 0x1e25, 0x1e27,
2606 0x1e29, 0x1e2b, 0x1e2d, 0x1e2f, 0x1e31, 0x1e33, 0x1e35, 0x1e37,
2607 0x1e39, 0x1e3b, 0x1e3d, 0x1e3f, 0x1e41, 0x1e43, 0x1e45, 0x1e47,
2608 0x1e49, 0x1e4b, 0x1e4d, 0x1e4f, 0x1e51, 0x1e53, 0x1e55, 0x1e57,
2609 0x1e59, 0x1e5b, 0x1e5d, 0x1e5f, 0x1e61, 0x1e63, 0x1e65, 0x1e67,
2610 0x1e69, 0x1e6b, 0x1e6d, 0x1e6f, 0x1e71, 0x1e73, 0x1e75, 0x1e77,
2611 0x1e79, 0x1e7b, 0x1e7d, 0x1e7f, 0x1e81, 0x1e83, 0x1e85, 0x1e87,
2612 0x1e89, 0x1e8b, 0x1e8d, 0x1e8f, 0x1e91, 0x1e93, 0x1ea1, 0x1ea3,
2613 0x1ea5, 0x1ea7, 0x1ea9, 0x1eab, 0x1ead, 0x1eaf, 0x1eb1, 0x1eb3,
2614 0x1eb5, 0x1eb7, 0x1eb9, 0x1ebb, 0x1ebd, 0x1ebf, 0x1ec1, 0x1ec3,
2615 0x1ec5, 0x1ec7, 0x1ec9, 0x1ecb, 0x1ecd, 0x1ecf, 0x1ed1, 0x1ed3,
2616 0x1ed5, 0x1ed7, 0x1ed9, 0x1edb, 0x1edd, 0x1edf, 0x1ee1, 0x1ee3,
2617 0x1ee5, 0x1ee7, 0x1ee9, 0x1eeb, 0x1eed, 0x1eef, 0x1ef1, 0x1ef3,
2618 0x1ef5, 0x1ef7, 0x1ef9, 0x1efb, 0x1efd, 0x1fbe, 0x214e, 0x2184,
2619 0x2c61, 0x2c68, 0x2c6a, 0x2c6c, 0x2c73, 0x2c76, 0x2c81, 0x2c83,
2620 0x2c85, 0x2c87, 0x2c89, 0x2c8b, 0x2c8d, 0x2c8f, 0x2c91, 0x2c93,
2621 0x2c95, 0x2c97, 0x2c99, 0x2c9b, 0x2c9d, 0x2c9f, 0x2ca1, 0x2ca3,
2622 0x2ca5, 0x2ca7, 0x2ca9, 0x2cab, 0x2cad, 0x2caf, 0x2cb1, 0x2cb3,
2623 0x2cb5, 0x2cb7, 0x2cb9, 0x2cbb, 0x2cbd, 0x2cbf, 0x2cc1, 0x2cc3,
2624 0x2cc5, 0x2cc7, 0x2cc9, 0x2ccb, 0x2ccd, 0x2ccf, 0x2cd1, 0x2cd3,
2625 0x2cd5, 0x2cd7, 0x2cd9, 0x2cdb, 0x2cdd, 0x2cdf, 0x2ce1, 0x2ce3,
2626 0x2cec, 0x2cee, 0x2cf3, 0x2d27, 0x2d2d, 0xa641, 0xa643, 0xa645,
2627 0xa647, 0xa649, 0xa64b, 0xa64d, 0xa64f, 0xa651, 0xa653, 0xa655,
2628 0xa657, 0xa659, 0xa65b, 0xa65d, 0xa65f, 0xa661, 0xa663, 0xa665,
2629 0xa667, 0xa669, 0xa66b, 0xa66d, 0xa681, 0xa683, 0xa685, 0xa687,
2630 0xa689, 0xa68b, 0xa68d, 0xa68f, 0xa691, 0xa693, 0xa695, 0xa697,
2631 0xa699, 0xa69b, 0xa723, 0xa725, 0xa727, 0xa729, 0xa72b, 0xa72d,
2632 0xa72f, 0xa733, 0xa735, 0xa737, 0xa739, 0xa73b, 0xa73d, 0xa73f,
2633 0xa741, 0xa743, 0xa745, 0xa747, 0xa749, 0xa74b, 0xa74d, 0xa74f,
2634 0xa751, 0xa753, 0xa755, 0xa757, 0xa759, 0xa75b, 0xa75d, 0xa75f,
2635 0xa761, 0xa763, 0xa765, 0xa767, 0xa769, 0xa76b, 0xa76d, 0xa76f,
2636 0xa77a, 0xa77c, 0xa77f, 0xa781, 0xa783, 0xa785, 0xa787, 0xa78c,
2637 0xa791, 0xa793, 0xa797, 0xa799, 0xa79b, 0xa79d, 0xa79f, 0xa7a1,
2638 0xa7a3, 0xa7a5, 0xa7a7, 0xa7a9, 0xa7b5, 0xa7b7, 0xa7b9, 0xab53}),
2639 std::initializer_list<CharacterRange>({{0x00df, 0x00f6}, {0x00f8, 0x00ff}, {0x0148, 0x0149}, {0x017e, 0x0180},
2640 {0x0199, 0x019a}, {0x01c6, 0x01c7}, {0x01c9, 0x01ca}, {0x01dc, 0x01dd},
2641 {0x01ef, 0x01f1}, {0x023f, 0x0240}, {0x024f, 0x0254}, {0x0256, 0x0257},
2642 {0x025b, 0x025c}, {0x0260, 0x0261}, {0x0265, 0x0266}, {0x0268, 0x026c},
2643 {0x0271, 0x0272}, {0x0287, 0x028c}, {0x029d, 0x029e}, {0x037b, 0x037d},
2644 {0x03ac, 0x03ce}, {0x03d0, 0x03d1}, {0x03d5, 0x03d7}, {0x03ef, 0x03f3},
2645 {0x0430, 0x045f}, {0x04ce, 0x04cf}, {0x0561, 0x0587}, {0x13f8, 0x13fd},
2646 {0x1c80, 0x1c88}, {0x1e95, 0x1e9b}, {0x1eff, 0x1f07}, {0x1f10, 0x1f15},
2647 {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45}, {0x1f50, 0x1f57},
2648 {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87}, {0x1f90, 0x1f97},
2649 {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7}, {0x1fc2, 0x1fc4},
2650 {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7},
2651 {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7}, {0x2170, 0x217f}, {0x24d0, 0x24e9},
2652 {0x2c30, 0x2c5e}, {0x2c65, 0x2c66}, {0x2d00, 0x2d25}, {0xab70, 0xabbf},
2653 {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xff41, 0xff5a}, {0x10428, 0x1044f},
2654 {0x104d8, 0x104fb}, {0x10cc0, 0x10cf2}, {0x118c0, 0x118df}, {0x16e60, 0x16e7f},
2655 {0x1e922, 0x1e943}}),
2656 CharacterClassWidths::HasBothBMPAndNonBMP);
2657 return characterClass;
2658}
2659
2660static std::unique_ptr<CharacterClass> createCharacterClass51()
2661{
2662 // Name = Changes_When_Casefolded, number of codePoints: 1456
2663 auto characterClass = std::make_unique<CharacterClass>(
2664 std::initializer_list<UChar32>({}),
2665 std::initializer_list<CharacterRange>({{0x41, 0x5a}}),
2666 std::initializer_list<UChar32>({0x00b5, 0x0100, 0x0102, 0x0104, 0x0106, 0x0108, 0x010a, 0x010c,
2667 0x010e, 0x0110, 0x0112, 0x0114, 0x0116, 0x0118, 0x011a, 0x011c,
2668 0x011e, 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x012a, 0x012c,
2669 0x012e, 0x0130, 0x0132, 0x0134, 0x0136, 0x0139, 0x013b, 0x013d,
2670 0x013f, 0x0141, 0x0143, 0x0145, 0x0147, 0x014c, 0x014e, 0x0150,
2671 0x0152, 0x0154, 0x0156, 0x0158, 0x015a, 0x015c, 0x015e, 0x0160,
2672 0x0162, 0x0164, 0x0166, 0x0168, 0x016a, 0x016c, 0x016e, 0x0170,
2673 0x0172, 0x0174, 0x0176, 0x017b, 0x017d, 0x017f, 0x0184, 0x01a2,
2674 0x01a4, 0x01a9, 0x01ac, 0x01b5, 0x01bc, 0x01cd, 0x01cf, 0x01d1,
2675 0x01d3, 0x01d5, 0x01d7, 0x01d9, 0x01db, 0x01de, 0x01e0, 0x01e2,
2676 0x01e4, 0x01e6, 0x01e8, 0x01ea, 0x01ec, 0x01ee, 0x01f4, 0x01fa,
2677 0x01fc, 0x01fe, 0x0200, 0x0202, 0x0204, 0x0206, 0x0208, 0x020a,
2678 0x020c, 0x020e, 0x0210, 0x0212, 0x0214, 0x0216, 0x0218, 0x021a,
2679 0x021c, 0x021e, 0x0220, 0x0222, 0x0224, 0x0226, 0x0228, 0x022a,
2680 0x022c, 0x022e, 0x0230, 0x0232, 0x0241, 0x0248, 0x024a, 0x024c,
2681 0x024e, 0x0345, 0x0370, 0x0372, 0x0376, 0x037f, 0x0386, 0x038c,
2682 0x03c2, 0x03d8, 0x03da, 0x03dc, 0x03de, 0x03e0, 0x03e2, 0x03e4,
2683 0x03e6, 0x03e8, 0x03ea, 0x03ec, 0x03ee, 0x03f7, 0x0460, 0x0462,
2684 0x0464, 0x0466, 0x0468, 0x046a, 0x046c, 0x046e, 0x0470, 0x0472,
2685 0x0474, 0x0476, 0x0478, 0x047a, 0x047c, 0x047e, 0x0480, 0x048a,
2686 0x048c, 0x048e, 0x0490, 0x0492, 0x0494, 0x0496, 0x0498, 0x049a,
2687 0x049c, 0x049e, 0x04a0, 0x04a2, 0x04a4, 0x04a6, 0x04a8, 0x04aa,
2688 0x04ac, 0x04ae, 0x04b0, 0x04b2, 0x04b4, 0x04b6, 0x04b8, 0x04ba,
2689 0x04bc, 0x04be, 0x04c3, 0x04c5, 0x04c7, 0x04c9, 0x04cb, 0x04cd,
2690 0x04d0, 0x04d2, 0x04d4, 0x04d6, 0x04d8, 0x04da, 0x04dc, 0x04de,
2691 0x04e0, 0x04e2, 0x04e4, 0x04e6, 0x04e8, 0x04ea, 0x04ec, 0x04ee,
2692 0x04f0, 0x04f2, 0x04f4, 0x04f6, 0x04f8, 0x04fa, 0x04fc, 0x04fe,
2693 0x0500, 0x0502, 0x0504, 0x0506, 0x0508, 0x050a, 0x050c, 0x050e,
2694 0x0510, 0x0512, 0x0514, 0x0516, 0x0518, 0x051a, 0x051c, 0x051e,
2695 0x0520, 0x0522, 0x0524, 0x0526, 0x0528, 0x052a, 0x052c, 0x052e,
2696 0x0587, 0x10c7, 0x10cd, 0x1e00, 0x1e02, 0x1e04, 0x1e06, 0x1e08,
2697 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12, 0x1e14, 0x1e16, 0x1e18,
2698 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22, 0x1e24, 0x1e26, 0x1e28,
2699 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32, 0x1e34, 0x1e36, 0x1e38,
2700 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42, 0x1e44, 0x1e46, 0x1e48,
2701 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58,
2702 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68,
2703 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78,
2704 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88,
2705 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e9e, 0x1ea0,
2706 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, 0x1eae, 0x1eb0,
2707 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc, 0x1ebe, 0x1ec0,
2708 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc, 0x1ece, 0x1ed0,
2709 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda, 0x1edc, 0x1ede, 0x1ee0,
2710 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea, 0x1eec, 0x1eee, 0x1ef0,
2711 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa, 0x1efc, 0x1efe, 0x1f59,
2712 0x1f5b, 0x1f5d, 0x1f5f, 0x2126, 0x2132, 0x2183, 0x2c60, 0x2c67,
2713 0x2c69, 0x2c6b, 0x2c72, 0x2c75, 0x2c82, 0x2c84, 0x2c86, 0x2c88,
2714 0x2c8a, 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98,
2715 0x2c9a, 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8,
2716 0x2caa, 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8,
2717 0x2cba, 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8,
2718 0x2cca, 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8,
2719 0x2cda, 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2,
2720 0xa640, 0xa642, 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e,
2721 0xa650, 0xa652, 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e,
2722 0xa660, 0xa662, 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680,
2723 0xa682, 0xa684, 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690,
2724 0xa692, 0xa694, 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726,
2725 0xa728, 0xa72a, 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738,
2726 0xa73a, 0xa73c, 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748,
2727 0xa74a, 0xa74c, 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758,
2728 0xa75a, 0xa75c, 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768,
2729 0xa76a, 0xa76c, 0xa76e, 0xa779, 0xa77b, 0xa780, 0xa782, 0xa784,
2730 0xa786, 0xa78b, 0xa78d, 0xa790, 0xa792, 0xa796, 0xa798, 0xa79a,
2731 0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7b6,
2732 0xa7b8}),
2733 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00df}, {0x0149, 0x014a}, {0x0178, 0x0179},
2734 {0x0181, 0x0182}, {0x0186, 0x0187}, {0x0189, 0x018b}, {0x018e, 0x0191},
2735 {0x0193, 0x0194}, {0x0196, 0x0198}, {0x019c, 0x019d}, {0x019f, 0x01a0},
2736 {0x01a6, 0x01a7}, {0x01ae, 0x01af}, {0x01b1, 0x01b3}, {0x01b7, 0x01b8},
2737 {0x01c4, 0x01c5}, {0x01c7, 0x01c8}, {0x01ca, 0x01cb}, {0x01f1, 0x01f2},
2738 {0x01f6, 0x01f8}, {0x023a, 0x023b}, {0x023d, 0x023e}, {0x0243, 0x0246},
2739 {0x0388, 0x038a}, {0x038e, 0x038f}, {0x0391, 0x03a1}, {0x03a3, 0x03ab},
2740 {0x03cf, 0x03d1}, {0x03d5, 0x03d6}, {0x03f0, 0x03f1}, {0x03f4, 0x03f5},
2741 {0x03f9, 0x03fa}, {0x03fd, 0x042f}, {0x04c0, 0x04c1}, {0x0531, 0x0556},
2742 {0x10a0, 0x10c5}, {0x13f8, 0x13fd}, {0x1c80, 0x1c88}, {0x1c90, 0x1cba},
2743 {0x1cbd, 0x1cbf}, {0x1e9a, 0x1e9b}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d},
2744 {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f68, 0x1f6f},
2745 {0x1f80, 0x1faf}, {0x1fb2, 0x1fb4}, {0x1fb7, 0x1fbc}, {0x1fc2, 0x1fc4},
2746 {0x1fc7, 0x1fcc}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec}, {0x1ff2, 0x1ff4},
2747 {0x1ff7, 0x1ffc}, {0x212a, 0x212b}, {0x2160, 0x216f}, {0x24b6, 0x24cf},
2748 {0x2c00, 0x2c2e}, {0x2c62, 0x2c64}, {0x2c6d, 0x2c70}, {0x2c7e, 0x2c80},
2749 {0xa77d, 0xa77e}, {0xa7aa, 0xa7ae}, {0xa7b0, 0xa7b4}, {0xab70, 0xabbf},
2750 {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xff21, 0xff3a}, {0x10400, 0x10427},
2751 {0x104b0, 0x104d3}, {0x10c80, 0x10cb2}, {0x118a0, 0x118bf}, {0x16e40, 0x16e5f},
2752 {0x1e900, 0x1e921}}),
2753 CharacterClassWidths::HasBothBMPAndNonBMP);
2754 return characterClass;
2755}
2756
2757static std::unique_ptr<CharacterClass> createCharacterClass52()
2758{
2759 // Name = Changes_When_Casemapped, number of codePoints: 2827
2760 auto characterClass = std::make_unique<CharacterClass>(
2761 std::initializer_list<UChar32>({}),
2762 std::initializer_list<CharacterRange>({{0x41, 0x5a}, {0x61, 0x7a}}),
2763 std::initializer_list<UChar32>({0x00b5, 0x01bf, 0x0259, 0x0263, 0x026f, 0x0275, 0x027d, 0x0280,
2764 0x0283, 0x0292, 0x0345, 0x037f, 0x0386, 0x038c, 0x10c7, 0x10cd,
2765 0x1d79, 0x1d7d, 0x1e9e, 0x1f59, 0x1f5b, 0x1f5d, 0x1fbe, 0x2126,
2766 0x2132, 0x214e, 0x2d27, 0x2d2d, 0xab53}),
2767 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x0137}, {0x0139, 0x018c},
2768 {0x018e, 0x019a}, {0x019c, 0x01a9}, {0x01ac, 0x01b9}, {0x01bc, 0x01bd},
2769 {0x01c4, 0x0220}, {0x0222, 0x0233}, {0x023a, 0x0254}, {0x0256, 0x0257},
2770 {0x025b, 0x025c}, {0x0260, 0x0261}, {0x0265, 0x0266}, {0x0268, 0x026c},
2771 {0x0271, 0x0272}, {0x0287, 0x028c}, {0x029d, 0x029e}, {0x0370, 0x0373},
2772 {0x0376, 0x0377}, {0x037b, 0x037d}, {0x0388, 0x038a}, {0x038e, 0x03a1},
2773 {0x03a3, 0x03d1}, {0x03d5, 0x03f5}, {0x03f7, 0x03fb}, {0x03fd, 0x0481},
2774 {0x048a, 0x052f}, {0x0531, 0x0556}, {0x0561, 0x0587}, {0x10a0, 0x10c5},
2775 {0x10d0, 0x10fa}, {0x10fd, 0x10ff}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd},
2776 {0x1c80, 0x1c88}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1e00, 0x1e9b},
2777 {0x1ea0, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d},
2778 {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc},
2779 {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb},
2780 {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x212a, 0x212b},
2781 {0x2160, 0x217f}, {0x2183, 0x2184}, {0x24b6, 0x24e9}, {0x2c00, 0x2c2e},
2782 {0x2c30, 0x2c5e}, {0x2c60, 0x2c70}, {0x2c72, 0x2c73}, {0x2c75, 0x2c76},
2783 {0x2c7e, 0x2ce3}, {0x2ceb, 0x2cee}, {0x2cf2, 0x2cf3}, {0x2d00, 0x2d25},
2784 {0xa640, 0xa66d}, {0xa680, 0xa69b}, {0xa722, 0xa72f}, {0xa732, 0xa76f},
2785 {0xa779, 0xa787}, {0xa78b, 0xa78d}, {0xa790, 0xa793}, {0xa796, 0xa7ae},
2786 {0xa7b0, 0xa7b9}, {0xab70, 0xabbf}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
2787 {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0x10400, 0x1044f}, {0x104b0, 0x104d3},
2788 {0x104d8, 0x104fb}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x118a0, 0x118df},
2789 {0x16e40, 0x16e7f}, {0x1e900, 0x1e943}}),
2790 CharacterClassWidths::HasBothBMPAndNonBMP);
2791 return characterClass;
2792}
2793
2794static std::unique_ptr<CharacterClass> createCharacterClass53()
2795{
2796 // Name = ID_Start, number of codePoints: 125660
2797 auto characterClass = std::make_unique<CharacterClass>(
2798 std::initializer_list<UChar32>({}),
2799 std::initializer_list<CharacterRange>({{0x41, 0x5a}, {0x61, 0x7a}}),
2800 std::initializer_list<UChar32>({0x00aa, 0x00b5, 0x00ba, 0x02ec, 0x02ee, 0x037f, 0x0386, 0x038c,
2801 0x0559, 0x06d5, 0x06ff, 0x0710, 0x07b1, 0x07fa, 0x081a, 0x0824,
2802 0x0828, 0x093d, 0x0950, 0x09b2, 0x09bd, 0x09ce, 0x09fc, 0x0a5e,
2803 0x0abd, 0x0ad0, 0x0af9, 0x0b3d, 0x0b71, 0x0b83, 0x0b9c, 0x0bd0,
2804 0x0c3d, 0x0c80, 0x0cbd, 0x0cde, 0x0d3d, 0x0d4e, 0x0dbd, 0x0e84,
2805 0x0e8a, 0x0e8d, 0x0ea5, 0x0ea7, 0x0ebd, 0x0ec6, 0x0f00, 0x103f,
2806 0x1061, 0x108e, 0x10c7, 0x10cd, 0x1258, 0x12c0, 0x17d7, 0x17dc,
2807 0x18aa, 0x1aa7, 0x1f59, 0x1f5b, 0x1f5d, 0x1fbe, 0x2071, 0x207f,
2808 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214e, 0x2d27,
2809 0x2d2d, 0x2d6f, 0xa8fb, 0xa9cf, 0xaa7a, 0xaab1, 0xaac0, 0xaac2,
2810 0xfb1d, 0xfb3e, 0x10808, 0x1083c, 0x10a00, 0x10f27, 0x11144, 0x11176,
2811 0x111da, 0x111dc, 0x11288, 0x1133d, 0x11350, 0x114c7, 0x11644, 0x118ff,
2812 0x11a00, 0x11a3a, 0x11a50, 0x11a9d, 0x11c40, 0x11d46, 0x11d98, 0x16f50,
2813 0x1d4a2, 0x1d4bb, 0x1d546, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42,
2814 0x1ee47, 0x1ee49, 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d,
2815 0x1ee5f, 0x1ee64, 0x1ee7e}),
2816 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x02c1}, {0x02c6, 0x02d1},
2817 {0x02e0, 0x02e4}, {0x0370, 0x0374}, {0x0376, 0x0377}, {0x037a, 0x037d},
2818 {0x0388, 0x038a}, {0x038e, 0x03a1}, {0x03a3, 0x03f5}, {0x03f7, 0x0481},
2819 {0x048a, 0x052f}, {0x0531, 0x0556}, {0x0560, 0x0588}, {0x05d0, 0x05ea},
2820 {0x05ef, 0x05f2}, {0x0620, 0x064a}, {0x066e, 0x066f}, {0x0671, 0x06d3},
2821 {0x06e5, 0x06e6}, {0x06ee, 0x06ef}, {0x06fa, 0x06fc}, {0x0712, 0x072f},
2822 {0x074d, 0x07a5}, {0x07ca, 0x07ea}, {0x07f4, 0x07f5}, {0x0800, 0x0815},
2823 {0x0840, 0x0858}, {0x0860, 0x086a}, {0x08a0, 0x08b4}, {0x08b6, 0x08bd},
2824 {0x0904, 0x0939}, {0x0958, 0x0961}, {0x0971, 0x0980}, {0x0985, 0x098c},
2825 {0x098f, 0x0990}, {0x0993, 0x09a8}, {0x09aa, 0x09b0}, {0x09b6, 0x09b9},
2826 {0x09dc, 0x09dd}, {0x09df, 0x09e1}, {0x09f0, 0x09f1}, {0x0a05, 0x0a0a},
2827 {0x0a0f, 0x0a10}, {0x0a13, 0x0a28}, {0x0a2a, 0x0a30}, {0x0a32, 0x0a33},
2828 {0x0a35, 0x0a36}, {0x0a38, 0x0a39}, {0x0a59, 0x0a5c}, {0x0a72, 0x0a74},
2829 {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91}, {0x0a93, 0x0aa8}, {0x0aaa, 0x0ab0},
2830 {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9}, {0x0ae0, 0x0ae1}, {0x0b05, 0x0b0c},
2831 {0x0b0f, 0x0b10}, {0x0b13, 0x0b28}, {0x0b2a, 0x0b30}, {0x0b32, 0x0b33},
2832 {0x0b35, 0x0b39}, {0x0b5c, 0x0b5d}, {0x0b5f, 0x0b61}, {0x0b85, 0x0b8a},
2833 {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a}, {0x0b9e, 0x0b9f},
2834 {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9}, {0x0c05, 0x0c0c},
2835 {0x0c0e, 0x0c10}, {0x0c12, 0x0c28}, {0x0c2a, 0x0c39}, {0x0c58, 0x0c5a},
2836 {0x0c60, 0x0c61}, {0x0c85, 0x0c8c}, {0x0c8e, 0x0c90}, {0x0c92, 0x0ca8},
2837 {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9}, {0x0ce0, 0x0ce1}, {0x0cf1, 0x0cf2},
2838 {0x0d05, 0x0d0c}, {0x0d0e, 0x0d10}, {0x0d12, 0x0d3a}, {0x0d54, 0x0d56},
2839 {0x0d5f, 0x0d61}, {0x0d7a, 0x0d7f}, {0x0d85, 0x0d96}, {0x0d9a, 0x0db1},
2840 {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6}, {0x0e01, 0x0e30}, {0x0e32, 0x0e33},
2841 {0x0e40, 0x0e46}, {0x0e81, 0x0e82}, {0x0e87, 0x0e88}, {0x0e94, 0x0e97},
2842 {0x0e99, 0x0e9f}, {0x0ea1, 0x0ea3}, {0x0eaa, 0x0eab}, {0x0ead, 0x0eb0},
2843 {0x0eb2, 0x0eb3}, {0x0ec0, 0x0ec4}, {0x0edc, 0x0edf}, {0x0f40, 0x0f47},
2844 {0x0f49, 0x0f6c}, {0x0f88, 0x0f8c}, {0x1000, 0x102a}, {0x1050, 0x1055},
2845 {0x105a, 0x105d}, {0x1065, 0x1066}, {0x106e, 0x1070}, {0x1075, 0x1081},
2846 {0x10a0, 0x10c5}, {0x10d0, 0x10fa}, {0x10fc, 0x1248}, {0x124a, 0x124d},
2847 {0x1250, 0x1256}, {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d},
2848 {0x1290, 0x12b0}, {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c2, 0x12c5},
2849 {0x12c8, 0x12d6}, {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a},
2850 {0x1380, 0x138f}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1401, 0x166c},
2851 {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x16ee, 0x16f8},
2852 {0x1700, 0x170c}, {0x170e, 0x1711}, {0x1720, 0x1731}, {0x1740, 0x1751},
2853 {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1780, 0x17b3}, {0x1820, 0x1878},
2854 {0x1880, 0x18a8}, {0x18b0, 0x18f5}, {0x1900, 0x191e}, {0x1950, 0x196d},
2855 {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x1a00, 0x1a16},
2856 {0x1a20, 0x1a54}, {0x1b05, 0x1b33}, {0x1b45, 0x1b4b}, {0x1b83, 0x1ba0},
2857 {0x1bae, 0x1baf}, {0x1bba, 0x1be5}, {0x1c00, 0x1c23}, {0x1c4d, 0x1c4f},
2858 {0x1c5a, 0x1c7d}, {0x1c80, 0x1c88}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf},
2859 {0x1ce9, 0x1cec}, {0x1cee, 0x1cf1}, {0x1cf5, 0x1cf6}, {0x1d00, 0x1dbf},
2860 {0x1e00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d},
2861 {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc},
2862 {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb},
2863 {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2090, 0x209c},
2864 {0x210a, 0x2113}, {0x2118, 0x211d}, {0x212a, 0x2139}, {0x213c, 0x213f},
2865 {0x2145, 0x2149}, {0x2160, 0x2188}, {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e},
2866 {0x2c60, 0x2ce4}, {0x2ceb, 0x2cee}, {0x2cf2, 0x2cf3}, {0x2d00, 0x2d25},
2867 {0x2d30, 0x2d67}, {0x2d80, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae},
2868 {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce},
2869 {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x3005, 0x3007}, {0x3021, 0x3029},
2870 {0x3031, 0x3035}, {0x3038, 0x303c}, {0x3041, 0x3096}, {0x309b, 0x309f},
2871 {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e},
2872 {0x31a0, 0x31ba}, {0x31f0, 0x31ff}, {0x3400, 0x4db5}, {0x4e00, 0x9fef},
2873 {0xa000, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c}, {0xa610, 0xa61f},
2874 {0xa62a, 0xa62b}, {0xa640, 0xa66e}, {0xa67f, 0xa69d}, {0xa6a0, 0xa6ef},
2875 {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7b9}, {0xa7f7, 0xa801},
2876 {0xa803, 0xa805}, {0xa807, 0xa80a}, {0xa80c, 0xa822}, {0xa840, 0xa873},
2877 {0xa882, 0xa8b3}, {0xa8f2, 0xa8f7}, {0xa8fd, 0xa8fe}, {0xa90a, 0xa925},
2878 {0xa930, 0xa946}, {0xa960, 0xa97c}, {0xa984, 0xa9b2}, {0xa9e0, 0xa9e4},
2879 {0xa9e6, 0xa9ef}, {0xa9fa, 0xa9fe}, {0xaa00, 0xaa28}, {0xaa40, 0xaa42},
2880 {0xaa44, 0xaa4b}, {0xaa60, 0xaa76}, {0xaa7e, 0xaaaf}, {0xaab5, 0xaab6},
2881 {0xaab9, 0xaabd}, {0xaadb, 0xaadd}, {0xaae0, 0xaaea}, {0xaaf2, 0xaaf4},
2882 {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26},
2883 {0xab28, 0xab2e}, {0xab30, 0xab5a}, {0xab5c, 0xab65}, {0xab70, 0xabe2},
2884 {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d},
2885 {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1f, 0xfb28},
2886 {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44},
2887 {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7},
2888 {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff21, 0xff3a},
2889 {0xff41, 0xff5a}, {0xff66, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf},
2890 {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026},
2891 {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, {0x10050, 0x1005d},
2892 {0x10080, 0x100fa}, {0x10140, 0x10174}, {0x10280, 0x1029c}, {0x102a0, 0x102d0},
2893 {0x10300, 0x1031f}, {0x1032d, 0x1034a}, {0x10350, 0x10375}, {0x10380, 0x1039d},
2894 {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, {0x10400, 0x1049d},
2895 {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563},
2896 {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10800, 0x10805},
2897 {0x1080a, 0x10835}, {0x10837, 0x10838}, {0x1083f, 0x10855}, {0x10860, 0x10876},
2898 {0x10880, 0x1089e}, {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915},
2899 {0x10920, 0x10939}, {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a10, 0x10a13},
2900 {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c},
2901 {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55},
2902 {0x10b60, 0x10b72}, {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, {0x10c80, 0x10cb2},
2903 {0x10cc0, 0x10cf2}, {0x10d00, 0x10d23}, {0x10f00, 0x10f1c}, {0x10f30, 0x10f45},
2904 {0x11003, 0x11037}, {0x11083, 0x110af}, {0x110d0, 0x110e8}, {0x11103, 0x11126},
2905 {0x11150, 0x11172}, {0x11183, 0x111b2}, {0x111c1, 0x111c4}, {0x11200, 0x11211},
2906 {0x11213, 0x1122b}, {0x11280, 0x11286}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d},
2907 {0x1129f, 0x112a8}, {0x112b0, 0x112de}, {0x11305, 0x1130c}, {0x1130f, 0x11310},
2908 {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339},
2909 {0x1135d, 0x11361}, {0x11400, 0x11434}, {0x11447, 0x1144a}, {0x11480, 0x114af},
2910 {0x114c4, 0x114c5}, {0x11580, 0x115ae}, {0x115d8, 0x115db}, {0x11600, 0x1162f},
2911 {0x11680, 0x116aa}, {0x11700, 0x1171a}, {0x11800, 0x1182b}, {0x118a0, 0x118df},
2912 {0x11a0b, 0x11a32}, {0x11a5c, 0x11a83}, {0x11a86, 0x11a89}, {0x11ac0, 0x11af8},
2913 {0x11c00, 0x11c08}, {0x11c0a, 0x11c2e}, {0x11c72, 0x11c8f}, {0x11d00, 0x11d06},
2914 {0x11d08, 0x11d09}, {0x11d0b, 0x11d30}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68},
2915 {0x11d6a, 0x11d89}, {0x11ee0, 0x11ef2}, {0x12000, 0x12399}, {0x12400, 0x1246e},
2916 {0x12480, 0x12543}, {0x13000, 0x1342e}, {0x14400, 0x14646}, {0x16800, 0x16a38},
2917 {0x16a40, 0x16a5e}, {0x16ad0, 0x16aed}, {0x16b00, 0x16b2f}, {0x16b40, 0x16b43},
2918 {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16e40, 0x16e7f}, {0x16f00, 0x16f44},
2919 {0x16f93, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x17000, 0x187f1}, {0x18800, 0x18af2},
2920 {0x1b000, 0x1b11e}, {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c},
2921 {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c},
2922 {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9},
2923 {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
2924 {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544},
2925 {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da},
2926 {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e},
2927 {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2},
2928 {0x1d7c4, 0x1d7cb}, {0x1e800, 0x1e8c4}, {0x1e900, 0x1e943}, {0x1ee00, 0x1ee03},
2929 {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37},
2930 {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a},
2931 {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89},
2932 {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb},
2933 {0x20000, 0x2a6d6}, {0x2a700, 0x2b734}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1},
2934 {0x2ceb0, 0x2ebe0}, {0x2f800, 0x2fa1d}}),
2935 CharacterClassWidths::HasBothBMPAndNonBMP);
2936 return characterClass;
2937}
2938
2939static std::unique_ptr<CharacterClass> createCharacterClass54()
2940{
2941 // Name = ID_Continue, number of codePoints: 128510
2942 auto characterClass = std::make_unique<CharacterClass>(
2943 std::initializer_list<UChar32>({0x5f}),
2944 std::initializer_list<CharacterRange>({{0x30, 0x39}, {0x41, 0x5a}, {0x61, 0x7a}}),
2945 std::initializer_list<UChar32>({0x00aa, 0x00b5, 0x00b7, 0x00ba, 0x02ec, 0x02ee, 0x037f, 0x038c,
2946 0x0559, 0x05bf, 0x05c7, 0x06ff, 0x07fa, 0x07fd, 0x09b2, 0x09d7,
2947 0x09fc, 0x09fe, 0x0a3c, 0x0a51, 0x0a5e, 0x0ad0, 0x0b71, 0x0b9c,
2948 0x0bd0, 0x0bd7, 0x0cde, 0x0dbd, 0x0dca, 0x0dd6, 0x0e84, 0x0e8a,
2949 0x0e8d, 0x0ea5, 0x0ea7, 0x0ec6, 0x0f00, 0x0f35, 0x0f37, 0x0f39,
2950 0x0fc6, 0x10c7, 0x10cd, 0x1258, 0x12c0, 0x17d7, 0x1aa7, 0x1f59,
2951 0x1f5b, 0x1f5d, 0x1fbe, 0x2054, 0x2071, 0x207f, 0x20e1, 0x2102,
2952 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214e, 0x2d27, 0x2d2d,
2953 0x2d6f, 0xa8fb, 0xfb3e, 0xff3f, 0x101fd, 0x102e0, 0x10808, 0x1083c,
2954 0x10a3f, 0x10f27, 0x11176, 0x111dc, 0x1123e, 0x11288, 0x11350, 0x11357,
2955 0x1145e, 0x114c7, 0x11644, 0x118ff, 0x11a47, 0x11a9d, 0x11d3a, 0x1d4a2,
2956 0x1d4bb, 0x1d546, 0x1da75, 0x1da84, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b,
2957 0x1ee42, 0x1ee47, 0x1ee49, 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b,
2958 0x1ee5d, 0x1ee5f, 0x1ee64, 0x1ee7e}),
2959 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x02c1}, {0x02c6, 0x02d1},
2960 {0x02e0, 0x02e4}, {0x0300, 0x0374}, {0x0376, 0x0377}, {0x037a, 0x037d},
2961 {0x0386, 0x038a}, {0x038e, 0x03a1}, {0x03a3, 0x03f5}, {0x03f7, 0x0481},
2962 {0x0483, 0x0487}, {0x048a, 0x052f}, {0x0531, 0x0556}, {0x0560, 0x0588},
2963 {0x0591, 0x05bd}, {0x05c1, 0x05c2}, {0x05c4, 0x05c5}, {0x05d0, 0x05ea},
2964 {0x05ef, 0x05f2}, {0x0610, 0x061a}, {0x0620, 0x0669}, {0x066e, 0x06d3},
2965 {0x06d5, 0x06dc}, {0x06df, 0x06e8}, {0x06ea, 0x06fc}, {0x0710, 0x074a},
2966 {0x074d, 0x07b1}, {0x07c0, 0x07f5}, {0x0800, 0x082d}, {0x0840, 0x085b},
2967 {0x0860, 0x086a}, {0x08a0, 0x08b4}, {0x08b6, 0x08bd}, {0x08d3, 0x08e1},
2968 {0x08e3, 0x0963}, {0x0966, 0x096f}, {0x0971, 0x0983}, {0x0985, 0x098c},
2969 {0x098f, 0x0990}, {0x0993, 0x09a8}, {0x09aa, 0x09b0}, {0x09b6, 0x09b9},
2970 {0x09bc, 0x09c4}, {0x09c7, 0x09c8}, {0x09cb, 0x09ce}, {0x09dc, 0x09dd},
2971 {0x09df, 0x09e3}, {0x09e6, 0x09f1}, {0x0a01, 0x0a03}, {0x0a05, 0x0a0a},
2972 {0x0a0f, 0x0a10}, {0x0a13, 0x0a28}, {0x0a2a, 0x0a30}, {0x0a32, 0x0a33},
2973 {0x0a35, 0x0a36}, {0x0a38, 0x0a39}, {0x0a3e, 0x0a42}, {0x0a47, 0x0a48},
2974 {0x0a4b, 0x0a4d}, {0x0a59, 0x0a5c}, {0x0a66, 0x0a75}, {0x0a81, 0x0a83},
2975 {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91}, {0x0a93, 0x0aa8}, {0x0aaa, 0x0ab0},
2976 {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9}, {0x0abc, 0x0ac5}, {0x0ac7, 0x0ac9},
2977 {0x0acb, 0x0acd}, {0x0ae0, 0x0ae3}, {0x0ae6, 0x0aef}, {0x0af9, 0x0aff},
2978 {0x0b01, 0x0b03}, {0x0b05, 0x0b0c}, {0x0b0f, 0x0b10}, {0x0b13, 0x0b28},
2979 {0x0b2a, 0x0b30}, {0x0b32, 0x0b33}, {0x0b35, 0x0b39}, {0x0b3c, 0x0b44},
2980 {0x0b47, 0x0b48}, {0x0b4b, 0x0b4d}, {0x0b56, 0x0b57}, {0x0b5c, 0x0b5d},
2981 {0x0b5f, 0x0b63}, {0x0b66, 0x0b6f}, {0x0b82, 0x0b83}, {0x0b85, 0x0b8a},
2982 {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a}, {0x0b9e, 0x0b9f},
2983 {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9}, {0x0bbe, 0x0bc2},
2984 {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcd}, {0x0be6, 0x0bef}, {0x0c00, 0x0c0c},
2985 {0x0c0e, 0x0c10}, {0x0c12, 0x0c28}, {0x0c2a, 0x0c39}, {0x0c3d, 0x0c44},
2986 {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56}, {0x0c58, 0x0c5a},
2987 {0x0c60, 0x0c63}, {0x0c66, 0x0c6f}, {0x0c80, 0x0c83}, {0x0c85, 0x0c8c},
2988 {0x0c8e, 0x0c90}, {0x0c92, 0x0ca8}, {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9},
2989 {0x0cbc, 0x0cc4}, {0x0cc6, 0x0cc8}, {0x0cca, 0x0ccd}, {0x0cd5, 0x0cd6},
2990 {0x0ce0, 0x0ce3}, {0x0ce6, 0x0cef}, {0x0cf1, 0x0cf2}, {0x0d00, 0x0d03},
2991 {0x0d05, 0x0d0c}, {0x0d0e, 0x0d10}, {0x0d12, 0x0d44}, {0x0d46, 0x0d48},
2992 {0x0d4a, 0x0d4e}, {0x0d54, 0x0d57}, {0x0d5f, 0x0d63}, {0x0d66, 0x0d6f},
2993 {0x0d7a, 0x0d7f}, {0x0d82, 0x0d83}, {0x0d85, 0x0d96}, {0x0d9a, 0x0db1},
2994 {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6}, {0x0dcf, 0x0dd4}, {0x0dd8, 0x0ddf},
2995 {0x0de6, 0x0def}, {0x0df2, 0x0df3}, {0x0e01, 0x0e3a}, {0x0e40, 0x0e4e},
2996 {0x0e50, 0x0e59}, {0x0e81, 0x0e82}, {0x0e87, 0x0e88}, {0x0e94, 0x0e97},
2997 {0x0e99, 0x0e9f}, {0x0ea1, 0x0ea3}, {0x0eaa, 0x0eab}, {0x0ead, 0x0eb9},
2998 {0x0ebb, 0x0ebd}, {0x0ec0, 0x0ec4}, {0x0ec8, 0x0ecd}, {0x0ed0, 0x0ed9},
2999 {0x0edc, 0x0edf}, {0x0f18, 0x0f19}, {0x0f20, 0x0f29}, {0x0f3e, 0x0f47},
3000 {0x0f49, 0x0f6c}, {0x0f71, 0x0f84}, {0x0f86, 0x0f97}, {0x0f99, 0x0fbc},
3001 {0x1000, 0x1049}, {0x1050, 0x109d}, {0x10a0, 0x10c5}, {0x10d0, 0x10fa},
3002 {0x10fc, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256}, {0x125a, 0x125d},
3003 {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5},
3004 {0x12b8, 0x12be}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310},
3005 {0x1312, 0x1315}, {0x1318, 0x135a}, {0x135d, 0x135f}, {0x1369, 0x1371},
3006 {0x1380, 0x138f}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1401, 0x166c},
3007 {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x16ee, 0x16f8},
3008 {0x1700, 0x170c}, {0x170e, 0x1714}, {0x1720, 0x1734}, {0x1740, 0x1753},
3009 {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1772, 0x1773}, {0x1780, 0x17d3},
3010 {0x17dc, 0x17dd}, {0x17e0, 0x17e9}, {0x180b, 0x180d}, {0x1810, 0x1819},
3011 {0x1820, 0x1878}, {0x1880, 0x18aa}, {0x18b0, 0x18f5}, {0x1900, 0x191e},
3012 {0x1920, 0x192b}, {0x1930, 0x193b}, {0x1946, 0x196d}, {0x1970, 0x1974},
3013 {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x19d0, 0x19da}, {0x1a00, 0x1a1b},
3014 {0x1a20, 0x1a5e}, {0x1a60, 0x1a7c}, {0x1a7f, 0x1a89}, {0x1a90, 0x1a99},
3015 {0x1ab0, 0x1abd}, {0x1b00, 0x1b4b}, {0x1b50, 0x1b59}, {0x1b6b, 0x1b73},
3016 {0x1b80, 0x1bf3}, {0x1c00, 0x1c37}, {0x1c40, 0x1c49}, {0x1c4d, 0x1c7d},
3017 {0x1c80, 0x1c88}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1cd0, 0x1cd2},
3018 {0x1cd4, 0x1cf9}, {0x1d00, 0x1df9}, {0x1dfb, 0x1f15}, {0x1f18, 0x1f1d},
3019 {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d},
3020 {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc},
3021 {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4},
3022 {0x1ff6, 0x1ffc}, {0x203f, 0x2040}, {0x2090, 0x209c}, {0x20d0, 0x20dc},
3023 {0x20e5, 0x20f0}, {0x210a, 0x2113}, {0x2118, 0x211d}, {0x212a, 0x2139},
3024 {0x213c, 0x213f}, {0x2145, 0x2149}, {0x2160, 0x2188}, {0x2c00, 0x2c2e},
3025 {0x2c30, 0x2c5e}, {0x2c60, 0x2ce4}, {0x2ceb, 0x2cf3}, {0x2d00, 0x2d25},
3026 {0x2d30, 0x2d67}, {0x2d7f, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae},
3027 {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce},
3028 {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2dff}, {0x3005, 0x3007},
3029 {0x3021, 0x302f}, {0x3031, 0x3035}, {0x3038, 0x303c}, {0x3041, 0x3096},
3030 {0x3099, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, {0x3105, 0x312f},
3031 {0x3131, 0x318e}, {0x31a0, 0x31ba}, {0x31f0, 0x31ff}, {0x3400, 0x4db5},
3032 {0x4e00, 0x9fef}, {0xa000, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c},
3033 {0xa610, 0xa62b}, {0xa640, 0xa66f}, {0xa674, 0xa67d}, {0xa67f, 0xa6f1},
3034 {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7b9}, {0xa7f7, 0xa827},
3035 {0xa840, 0xa873}, {0xa880, 0xa8c5}, {0xa8d0, 0xa8d9}, {0xa8e0, 0xa8f7},
3036 {0xa8fd, 0xa92d}, {0xa930, 0xa953}, {0xa960, 0xa97c}, {0xa980, 0xa9c0},
3037 {0xa9cf, 0xa9d9}, {0xa9e0, 0xa9fe}, {0xaa00, 0xaa36}, {0xaa40, 0xaa4d},
3038 {0xaa50, 0xaa59}, {0xaa60, 0xaa76}, {0xaa7a, 0xaac2}, {0xaadb, 0xaadd},
3039 {0xaae0, 0xaaef}, {0xaaf2, 0xaaf6}, {0xab01, 0xab06}, {0xab09, 0xab0e},
3040 {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab5a},
3041 {0xab5c, 0xab65}, {0xab70, 0xabea}, {0xabec, 0xabed}, {0xabf0, 0xabf9},
3042 {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d},
3043 {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb28},
3044 {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44},
3045 {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7},
3046 {0xfdf0, 0xfdfb}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe2f}, {0xfe33, 0xfe34},
3047 {0xfe4d, 0xfe4f}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff10, 0xff19},
3048 {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe}, {0xffc2, 0xffc7},
3049 {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b},
3050 {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
3051 {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10140, 0x10174}, {0x10280, 0x1029c},
3052 {0x102a0, 0x102d0}, {0x10300, 0x1031f}, {0x1032d, 0x1034a}, {0x10350, 0x1037a},
3053 {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5},
3054 {0x10400, 0x1049d}, {0x104a0, 0x104a9}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb},
3055 {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10600, 0x10736}, {0x10740, 0x10755},
3056 {0x10760, 0x10767}, {0x10800, 0x10805}, {0x1080a, 0x10835}, {0x10837, 0x10838},
3057 {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e}, {0x108e0, 0x108f2},
3058 {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939}, {0x10980, 0x109b7},
3059 {0x109be, 0x109bf}, {0x10a00, 0x10a03}, {0x10a05, 0x10a06}, {0x10a0c, 0x10a13},
3060 {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a38, 0x10a3a}, {0x10a60, 0x10a7c},
3061 {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae6}, {0x10b00, 0x10b35},
3062 {0x10b40, 0x10b55}, {0x10b60, 0x10b72}, {0x10b80, 0x10b91}, {0x10c00, 0x10c48},
3063 {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d27}, {0x10d30, 0x10d39},
3064 {0x10f00, 0x10f1c}, {0x10f30, 0x10f50}, {0x11000, 0x11046}, {0x11066, 0x1106f},
3065 {0x1107f, 0x110ba}, {0x110d0, 0x110e8}, {0x110f0, 0x110f9}, {0x11100, 0x11134},
3066 {0x11136, 0x1113f}, {0x11144, 0x11146}, {0x11150, 0x11173}, {0x11180, 0x111c4},
3067 {0x111c9, 0x111cc}, {0x111d0, 0x111da}, {0x11200, 0x11211}, {0x11213, 0x11237},
3068 {0x11280, 0x11286}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8},
3069 {0x112b0, 0x112ea}, {0x112f0, 0x112f9}, {0x11300, 0x11303}, {0x11305, 0x1130c},
3070 {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333},
3071 {0x11335, 0x11339}, {0x1133b, 0x11344}, {0x11347, 0x11348}, {0x1134b, 0x1134d},
3072 {0x1135d, 0x11363}, {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11400, 0x1144a},
3073 {0x11450, 0x11459}, {0x11480, 0x114c5}, {0x114d0, 0x114d9}, {0x11580, 0x115b5},
3074 {0x115b8, 0x115c0}, {0x115d8, 0x115dd}, {0x11600, 0x11640}, {0x11650, 0x11659},
3075 {0x11680, 0x116b7}, {0x116c0, 0x116c9}, {0x11700, 0x1171a}, {0x1171d, 0x1172b},
3076 {0x11730, 0x11739}, {0x11800, 0x1183a}, {0x118a0, 0x118e9}, {0x11a00, 0x11a3e},
3077 {0x11a50, 0x11a83}, {0x11a86, 0x11a99}, {0x11ac0, 0x11af8}, {0x11c00, 0x11c08},
3078 {0x11c0a, 0x11c36}, {0x11c38, 0x11c40}, {0x11c50, 0x11c59}, {0x11c72, 0x11c8f},
3079 {0x11c92, 0x11ca7}, {0x11ca9, 0x11cb6}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09},
3080 {0x11d0b, 0x11d36}, {0x11d3c, 0x11d3d}, {0x11d3f, 0x11d47}, {0x11d50, 0x11d59},
3081 {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d8e}, {0x11d90, 0x11d91},
3082 {0x11d93, 0x11d98}, {0x11da0, 0x11da9}, {0x11ee0, 0x11ef6}, {0x12000, 0x12399},
3083 {0x12400, 0x1246e}, {0x12480, 0x12543}, {0x13000, 0x1342e}, {0x14400, 0x14646},
3084 {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, {0x16a60, 0x16a69}, {0x16ad0, 0x16aed},
3085 {0x16af0, 0x16af4}, {0x16b00, 0x16b36}, {0x16b40, 0x16b43}, {0x16b50, 0x16b59},
3086 {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16e40, 0x16e7f}, {0x16f00, 0x16f44},
3087 {0x16f50, 0x16f7e}, {0x16f8f, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x17000, 0x187f1},
3088 {0x18800, 0x18af2}, {0x1b000, 0x1b11e}, {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a},
3089 {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1bc9d, 0x1bc9e},
3090 {0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b},
3091 {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c},
3092 {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9},
3093 {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
3094 {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544},
3095 {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da},
3096 {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e},
3097 {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2},
3098 {0x1d7c4, 0x1d7cb}, {0x1d7ce, 0x1d7ff}, {0x1da00, 0x1da36}, {0x1da3b, 0x1da6c},
3099 {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1e000, 0x1e006}, {0x1e008, 0x1e018},
3100 {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a}, {0x1e800, 0x1e8c4},
3101 {0x1e8d0, 0x1e8d6}, {0x1e900, 0x1e94a}, {0x1e950, 0x1e959}, {0x1ee00, 0x1ee03},
3102 {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37},
3103 {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a},
3104 {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89},
3105 {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb},
3106 {0x20000, 0x2a6d6}, {0x2a700, 0x2b734}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1},
3107 {0x2ceb0, 0x2ebe0}, {0x2f800, 0x2fa1d}, {0xe0100, 0xe01ef}}),
3108 CharacterClassWidths::HasBothBMPAndNonBMP);
3109 return characterClass;
3110}
3111
3112static std::unique_ptr<CharacterClass> createCharacterClass55()
3113{
3114 // Name = XID_Start, number of codePoints: 125637
3115 auto characterClass = std::make_unique<CharacterClass>(
3116 std::initializer_list<UChar32>({}),
3117 std::initializer_list<CharacterRange>({{0x41, 0x5a}, {0x61, 0x7a}}),
3118 std::initializer_list<UChar32>({0x00aa, 0x00b5, 0x00ba, 0x02ec, 0x02ee, 0x037f, 0x0386, 0x038c,
3119 0x0559, 0x06d5, 0x06ff, 0x0710, 0x07b1, 0x07fa, 0x081a, 0x0824,
3120 0x0828, 0x093d, 0x0950, 0x09b2, 0x09bd, 0x09ce, 0x09fc, 0x0a5e,
3121 0x0abd, 0x0ad0, 0x0af9, 0x0b3d, 0x0b71, 0x0b83, 0x0b9c, 0x0bd0,
3122 0x0c3d, 0x0c80, 0x0cbd, 0x0cde, 0x0d3d, 0x0d4e, 0x0dbd, 0x0e32,
3123 0x0e84, 0x0e8a, 0x0e8d, 0x0ea5, 0x0ea7, 0x0eb2, 0x0ebd, 0x0ec6,
3124 0x0f00, 0x103f, 0x1061, 0x108e, 0x10c7, 0x10cd, 0x1258, 0x12c0,
3125 0x17d7, 0x17dc, 0x18aa, 0x1aa7, 0x1f59, 0x1f5b, 0x1f5d, 0x1fbe,
3126 0x2071, 0x207f, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128,
3127 0x214e, 0x2d27, 0x2d2d, 0x2d6f, 0xa8fb, 0xa9cf, 0xaa7a, 0xaab1,
3128 0xaac0, 0xaac2, 0xfb1d, 0xfb3e, 0xfe71, 0xfe73, 0xfe77, 0xfe79,
3129 0xfe7b, 0xfe7d, 0x10808, 0x1083c, 0x10a00, 0x10f27, 0x11144, 0x11176,
3130 0x111da, 0x111dc, 0x11288, 0x1133d, 0x11350, 0x114c7, 0x11644, 0x118ff,
3131 0x11a00, 0x11a3a, 0x11a50, 0x11a9d, 0x11c40, 0x11d46, 0x11d98, 0x16f50,
3132 0x1d4a2, 0x1d4bb, 0x1d546, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42,
3133 0x1ee47, 0x1ee49, 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d,
3134 0x1ee5f, 0x1ee64, 0x1ee7e}),
3135 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x02c1}, {0x02c6, 0x02d1},
3136 {0x02e0, 0x02e4}, {0x0370, 0x0374}, {0x0376, 0x0377}, {0x037b, 0x037d},
3137 {0x0388, 0x038a}, {0x038e, 0x03a1}, {0x03a3, 0x03f5}, {0x03f7, 0x0481},
3138 {0x048a, 0x052f}, {0x0531, 0x0556}, {0x0560, 0x0588}, {0x05d0, 0x05ea},
3139 {0x05ef, 0x05f2}, {0x0620, 0x064a}, {0x066e, 0x066f}, {0x0671, 0x06d3},
3140 {0x06e5, 0x06e6}, {0x06ee, 0x06ef}, {0x06fa, 0x06fc}, {0x0712, 0x072f},
3141 {0x074d, 0x07a5}, {0x07ca, 0x07ea}, {0x07f4, 0x07f5}, {0x0800, 0x0815},
3142 {0x0840, 0x0858}, {0x0860, 0x086a}, {0x08a0, 0x08b4}, {0x08b6, 0x08bd},
3143 {0x0904, 0x0939}, {0x0958, 0x0961}, {0x0971, 0x0980}, {0x0985, 0x098c},
3144 {0x098f, 0x0990}, {0x0993, 0x09a8}, {0x09aa, 0x09b0}, {0x09b6, 0x09b9},
3145 {0x09dc, 0x09dd}, {0x09df, 0x09e1}, {0x09f0, 0x09f1}, {0x0a05, 0x0a0a},
3146 {0x0a0f, 0x0a10}, {0x0a13, 0x0a28}, {0x0a2a, 0x0a30}, {0x0a32, 0x0a33},
3147 {0x0a35, 0x0a36}, {0x0a38, 0x0a39}, {0x0a59, 0x0a5c}, {0x0a72, 0x0a74},
3148 {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91}, {0x0a93, 0x0aa8}, {0x0aaa, 0x0ab0},
3149 {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9}, {0x0ae0, 0x0ae1}, {0x0b05, 0x0b0c},
3150 {0x0b0f, 0x0b10}, {0x0b13, 0x0b28}, {0x0b2a, 0x0b30}, {0x0b32, 0x0b33},
3151 {0x0b35, 0x0b39}, {0x0b5c, 0x0b5d}, {0x0b5f, 0x0b61}, {0x0b85, 0x0b8a},
3152 {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a}, {0x0b9e, 0x0b9f},
3153 {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9}, {0x0c05, 0x0c0c},
3154 {0x0c0e, 0x0c10}, {0x0c12, 0x0c28}, {0x0c2a, 0x0c39}, {0x0c58, 0x0c5a},
3155 {0x0c60, 0x0c61}, {0x0c85, 0x0c8c}, {0x0c8e, 0x0c90}, {0x0c92, 0x0ca8},
3156 {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9}, {0x0ce0, 0x0ce1}, {0x0cf1, 0x0cf2},
3157 {0x0d05, 0x0d0c}, {0x0d0e, 0x0d10}, {0x0d12, 0x0d3a}, {0x0d54, 0x0d56},
3158 {0x0d5f, 0x0d61}, {0x0d7a, 0x0d7f}, {0x0d85, 0x0d96}, {0x0d9a, 0x0db1},
3159 {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6}, {0x0e01, 0x0e30}, {0x0e40, 0x0e46},
3160 {0x0e81, 0x0e82}, {0x0e87, 0x0e88}, {0x0e94, 0x0e97}, {0x0e99, 0x0e9f},
3161 {0x0ea1, 0x0ea3}, {0x0eaa, 0x0eab}, {0x0ead, 0x0eb0}, {0x0ec0, 0x0ec4},
3162 {0x0edc, 0x0edf}, {0x0f40, 0x0f47}, {0x0f49, 0x0f6c}, {0x0f88, 0x0f8c},
3163 {0x1000, 0x102a}, {0x1050, 0x1055}, {0x105a, 0x105d}, {0x1065, 0x1066},
3164 {0x106e, 0x1070}, {0x1075, 0x1081}, {0x10a0, 0x10c5}, {0x10d0, 0x10fa},
3165 {0x10fc, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256}, {0x125a, 0x125d},
3166 {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5},
3167 {0x12b8, 0x12be}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310},
3168 {0x1312, 0x1315}, {0x1318, 0x135a}, {0x1380, 0x138f}, {0x13a0, 0x13f5},
3169 {0x13f8, 0x13fd}, {0x1401, 0x166c}, {0x166f, 0x167f}, {0x1681, 0x169a},
3170 {0x16a0, 0x16ea}, {0x16ee, 0x16f8}, {0x1700, 0x170c}, {0x170e, 0x1711},
3171 {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
3172 {0x1780, 0x17b3}, {0x1820, 0x1878}, {0x1880, 0x18a8}, {0x18b0, 0x18f5},
3173 {0x1900, 0x191e}, {0x1950, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab},
3174 {0x19b0, 0x19c9}, {0x1a00, 0x1a16}, {0x1a20, 0x1a54}, {0x1b05, 0x1b33},
3175 {0x1b45, 0x1b4b}, {0x1b83, 0x1ba0}, {0x1bae, 0x1baf}, {0x1bba, 0x1be5},
3176 {0x1c00, 0x1c23}, {0x1c4d, 0x1c4f}, {0x1c5a, 0x1c7d}, {0x1c80, 0x1c88},
3177 {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1ce9, 0x1cec}, {0x1cee, 0x1cf1},
3178 {0x1cf5, 0x1cf6}, {0x1d00, 0x1dbf}, {0x1e00, 0x1f15}, {0x1f18, 0x1f1d},
3179 {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d},
3180 {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc},
3181 {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4},
3182 {0x1ff6, 0x1ffc}, {0x2090, 0x209c}, {0x210a, 0x2113}, {0x2118, 0x211d},
3183 {0x212a, 0x2139}, {0x213c, 0x213f}, {0x2145, 0x2149}, {0x2160, 0x2188},
3184 {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e}, {0x2c60, 0x2ce4}, {0x2ceb, 0x2cee},
3185 {0x2cf2, 0x2cf3}, {0x2d00, 0x2d25}, {0x2d30, 0x2d67}, {0x2d80, 0x2d96},
3186 {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe},
3187 {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde},
3188 {0x3005, 0x3007}, {0x3021, 0x3029}, {0x3031, 0x3035}, {0x3038, 0x303c},
3189 {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff},
3190 {0x3105, 0x312f}, {0x3131, 0x318e}, {0x31a0, 0x31ba}, {0x31f0, 0x31ff},
3191 {0x3400, 0x4db5}, {0x4e00, 0x9fef}, {0xa000, 0xa48c}, {0xa4d0, 0xa4fd},
3192 {0xa500, 0xa60c}, {0xa610, 0xa61f}, {0xa62a, 0xa62b}, {0xa640, 0xa66e},
3193 {0xa67f, 0xa69d}, {0xa6a0, 0xa6ef}, {0xa717, 0xa71f}, {0xa722, 0xa788},
3194 {0xa78b, 0xa7b9}, {0xa7f7, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a},
3195 {0xa80c, 0xa822}, {0xa840, 0xa873}, {0xa882, 0xa8b3}, {0xa8f2, 0xa8f7},
3196 {0xa8fd, 0xa8fe}, {0xa90a, 0xa925}, {0xa930, 0xa946}, {0xa960, 0xa97c},
3197 {0xa984, 0xa9b2}, {0xa9e0, 0xa9e4}, {0xa9e6, 0xa9ef}, {0xa9fa, 0xa9fe},
3198 {0xaa00, 0xaa28}, {0xaa40, 0xaa42}, {0xaa44, 0xaa4b}, {0xaa60, 0xaa76},
3199 {0xaa7e, 0xaaaf}, {0xaab5, 0xaab6}, {0xaab9, 0xaabd}, {0xaadb, 0xaadd},
3200 {0xaae0, 0xaaea}, {0xaaf2, 0xaaf4}, {0xab01, 0xab06}, {0xab09, 0xab0e},
3201 {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab5a},
3202 {0xab5c, 0xab65}, {0xab70, 0xabe2}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6},
3203 {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06},
3204 {0xfb13, 0xfb17}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c},
3205 {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfc5d},
3206 {0xfc64, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdf9},
3207 {0xfe7f, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xff9d},
3208 {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7},
3209 {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a},
3210 {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa},
3211 {0x10140, 0x10174}, {0x10280, 0x1029c}, {0x102a0, 0x102d0}, {0x10300, 0x1031f},
3212 {0x1032d, 0x1034a}, {0x10350, 0x10375}, {0x10380, 0x1039d}, {0x103a0, 0x103c3},
3213 {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, {0x10400, 0x1049d}, {0x104b0, 0x104d3},
3214 {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10600, 0x10736},
3215 {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10800, 0x10805}, {0x1080a, 0x10835},
3216 {0x10837, 0x10838}, {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e},
3217 {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939},
3218 {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a10, 0x10a13}, {0x10a15, 0x10a17},
3219 {0x10a19, 0x10a35}, {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7},
3220 {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55}, {0x10b60, 0x10b72},
3221 {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2},
3222 {0x10d00, 0x10d23}, {0x10f00, 0x10f1c}, {0x10f30, 0x10f45}, {0x11003, 0x11037},
3223 {0x11083, 0x110af}, {0x110d0, 0x110e8}, {0x11103, 0x11126}, {0x11150, 0x11172},
3224 {0x11183, 0x111b2}, {0x111c1, 0x111c4}, {0x11200, 0x11211}, {0x11213, 0x1122b},
3225 {0x11280, 0x11286}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8},
3226 {0x112b0, 0x112de}, {0x11305, 0x1130c}, {0x1130f, 0x11310}, {0x11313, 0x11328},
3227 {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1135d, 0x11361},
3228 {0x11400, 0x11434}, {0x11447, 0x1144a}, {0x11480, 0x114af}, {0x114c4, 0x114c5},
3229 {0x11580, 0x115ae}, {0x115d8, 0x115db}, {0x11600, 0x1162f}, {0x11680, 0x116aa},
3230 {0x11700, 0x1171a}, {0x11800, 0x1182b}, {0x118a0, 0x118df}, {0x11a0b, 0x11a32},
3231 {0x11a5c, 0x11a83}, {0x11a86, 0x11a89}, {0x11ac0, 0x11af8}, {0x11c00, 0x11c08},
3232 {0x11c0a, 0x11c2e}, {0x11c72, 0x11c8f}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09},
3233 {0x11d0b, 0x11d30}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d89},
3234 {0x11ee0, 0x11ef2}, {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12480, 0x12543},
3235 {0x13000, 0x1342e}, {0x14400, 0x14646}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e},
3236 {0x16ad0, 0x16aed}, {0x16b00, 0x16b2f}, {0x16b40, 0x16b43}, {0x16b63, 0x16b77},
3237 {0x16b7d, 0x16b8f}, {0x16e40, 0x16e7f}, {0x16f00, 0x16f44}, {0x16f93, 0x16f9f},
3238 {0x16fe0, 0x16fe1}, {0x17000, 0x187f1}, {0x18800, 0x18af2}, {0x1b000, 0x1b11e},
3239 {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88},
3240 {0x1bc90, 0x1bc99}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f},
3241 {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3},
3242 {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c},
3243 {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d54a, 0x1d550},
3244 {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa},
3245 {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e},
3246 {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb},
3247 {0x1e800, 0x1e8c4}, {0x1e900, 0x1e943}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f},
3248 {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f},
3249 {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72},
3250 {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b},
3251 {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x20000, 0x2a6d6},
3252 {0x2a700, 0x2b734}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0},
3253 {0x2f800, 0x2fa1d}}),
3254 CharacterClassWidths::HasBothBMPAndNonBMP);
3255 return characterClass;
3256}
3257
3258static std::unique_ptr<CharacterClass> createCharacterClass56()
3259{
3260 // Name = XID_Continue, number of codePoints: 128491
3261 auto characterClass = std::make_unique<CharacterClass>(
3262 std::initializer_list<UChar32>({0x5f}),
3263 std::initializer_list<CharacterRange>({{0x30, 0x39}, {0x41, 0x5a}, {0x61, 0x7a}}),
3264 std::initializer_list<UChar32>({0x00aa, 0x00b5, 0x00b7, 0x00ba, 0x02ec, 0x02ee, 0x037f, 0x038c,
3265 0x0559, 0x05bf, 0x05c7, 0x06ff, 0x07fa, 0x07fd, 0x09b2, 0x09d7,
3266 0x09fc, 0x09fe, 0x0a3c, 0x0a51, 0x0a5e, 0x0ad0, 0x0b71, 0x0b9c,
3267 0x0bd0, 0x0bd7, 0x0cde, 0x0dbd, 0x0dca, 0x0dd6, 0x0e84, 0x0e8a,
3268 0x0e8d, 0x0ea5, 0x0ea7, 0x0ec6, 0x0f00, 0x0f35, 0x0f37, 0x0f39,
3269 0x0fc6, 0x10c7, 0x10cd, 0x1258, 0x12c0, 0x17d7, 0x1aa7, 0x1f59,
3270 0x1f5b, 0x1f5d, 0x1fbe, 0x2054, 0x2071, 0x207f, 0x20e1, 0x2102,
3271 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214e, 0x2d27, 0x2d2d,
3272 0x2d6f, 0xa8fb, 0xfb3e, 0xfe71, 0xfe73, 0xfe77, 0xfe79, 0xfe7b,
3273 0xfe7d, 0xff3f, 0x101fd, 0x102e0, 0x10808, 0x1083c, 0x10a3f, 0x10f27,
3274 0x11176, 0x111dc, 0x1123e, 0x11288, 0x11350, 0x11357, 0x1145e, 0x114c7,
3275 0x11644, 0x118ff, 0x11a47, 0x11a9d, 0x11d3a, 0x1d4a2, 0x1d4bb, 0x1d546,
3276 0x1da75, 0x1da84, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42, 0x1ee47,
3277 0x1ee49, 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d, 0x1ee5f,
3278 0x1ee64, 0x1ee7e}),
3279 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x02c1}, {0x02c6, 0x02d1},
3280 {0x02e0, 0x02e4}, {0x0300, 0x0374}, {0x0376, 0x0377}, {0x037b, 0x037d},
3281 {0x0386, 0x038a}, {0x038e, 0x03a1}, {0x03a3, 0x03f5}, {0x03f7, 0x0481},
3282 {0x0483, 0x0487}, {0x048a, 0x052f}, {0x0531, 0x0556}, {0x0560, 0x0588},
3283 {0x0591, 0x05bd}, {0x05c1, 0x05c2}, {0x05c4, 0x05c5}, {0x05d0, 0x05ea},
3284 {0x05ef, 0x05f2}, {0x0610, 0x061a}, {0x0620, 0x0669}, {0x066e, 0x06d3},
3285 {0x06d5, 0x06dc}, {0x06df, 0x06e8}, {0x06ea, 0x06fc}, {0x0710, 0x074a},
3286 {0x074d, 0x07b1}, {0x07c0, 0x07f5}, {0x0800, 0x082d}, {0x0840, 0x085b},
3287 {0x0860, 0x086a}, {0x08a0, 0x08b4}, {0x08b6, 0x08bd}, {0x08d3, 0x08e1},
3288 {0x08e3, 0x0963}, {0x0966, 0x096f}, {0x0971, 0x0983}, {0x0985, 0x098c},
3289 {0x098f, 0x0990}, {0x0993, 0x09a8}, {0x09aa, 0x09b0}, {0x09b6, 0x09b9},
3290 {0x09bc, 0x09c4}, {0x09c7, 0x09c8}, {0x09cb, 0x09ce}, {0x09dc, 0x09dd},
3291 {0x09df, 0x09e3}, {0x09e6, 0x09f1}, {0x0a01, 0x0a03}, {0x0a05, 0x0a0a},
3292 {0x0a0f, 0x0a10}, {0x0a13, 0x0a28}, {0x0a2a, 0x0a30}, {0x0a32, 0x0a33},
3293 {0x0a35, 0x0a36}, {0x0a38, 0x0a39}, {0x0a3e, 0x0a42}, {0x0a47, 0x0a48},
3294 {0x0a4b, 0x0a4d}, {0x0a59, 0x0a5c}, {0x0a66, 0x0a75}, {0x0a81, 0x0a83},
3295 {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91}, {0x0a93, 0x0aa8}, {0x0aaa, 0x0ab0},
3296 {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9}, {0x0abc, 0x0ac5}, {0x0ac7, 0x0ac9},
3297 {0x0acb, 0x0acd}, {0x0ae0, 0x0ae3}, {0x0ae6, 0x0aef}, {0x0af9, 0x0aff},
3298 {0x0b01, 0x0b03}, {0x0b05, 0x0b0c}, {0x0b0f, 0x0b10}, {0x0b13, 0x0b28},
3299 {0x0b2a, 0x0b30}, {0x0b32, 0x0b33}, {0x0b35, 0x0b39}, {0x0b3c, 0x0b44},
3300 {0x0b47, 0x0b48}, {0x0b4b, 0x0b4d}, {0x0b56, 0x0b57}, {0x0b5c, 0x0b5d},
3301 {0x0b5f, 0x0b63}, {0x0b66, 0x0b6f}, {0x0b82, 0x0b83}, {0x0b85, 0x0b8a},
3302 {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a}, {0x0b9e, 0x0b9f},
3303 {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9}, {0x0bbe, 0x0bc2},
3304 {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcd}, {0x0be6, 0x0bef}, {0x0c00, 0x0c0c},
3305 {0x0c0e, 0x0c10}, {0x0c12, 0x0c28}, {0x0c2a, 0x0c39}, {0x0c3d, 0x0c44},
3306 {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56}, {0x0c58, 0x0c5a},
3307 {0x0c60, 0x0c63}, {0x0c66, 0x0c6f}, {0x0c80, 0x0c83}, {0x0c85, 0x0c8c},
3308 {0x0c8e, 0x0c90}, {0x0c92, 0x0ca8}, {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9},
3309 {0x0cbc, 0x0cc4}, {0x0cc6, 0x0cc8}, {0x0cca, 0x0ccd}, {0x0cd5, 0x0cd6},
3310 {0x0ce0, 0x0ce3}, {0x0ce6, 0x0cef}, {0x0cf1, 0x0cf2}, {0x0d00, 0x0d03},
3311 {0x0d05, 0x0d0c}, {0x0d0e, 0x0d10}, {0x0d12, 0x0d44}, {0x0d46, 0x0d48},
3312 {0x0d4a, 0x0d4e}, {0x0d54, 0x0d57}, {0x0d5f, 0x0d63}, {0x0d66, 0x0d6f},
3313 {0x0d7a, 0x0d7f}, {0x0d82, 0x0d83}, {0x0d85, 0x0d96}, {0x0d9a, 0x0db1},
3314 {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6}, {0x0dcf, 0x0dd4}, {0x0dd8, 0x0ddf},
3315 {0x0de6, 0x0def}, {0x0df2, 0x0df3}, {0x0e01, 0x0e3a}, {0x0e40, 0x0e4e},
3316 {0x0e50, 0x0e59}, {0x0e81, 0x0e82}, {0x0e87, 0x0e88}, {0x0e94, 0x0e97},
3317 {0x0e99, 0x0e9f}, {0x0ea1, 0x0ea3}, {0x0eaa, 0x0eab}, {0x0ead, 0x0eb9},
3318 {0x0ebb, 0x0ebd}, {0x0ec0, 0x0ec4}, {0x0ec8, 0x0ecd}, {0x0ed0, 0x0ed9},
3319 {0x0edc, 0x0edf}, {0x0f18, 0x0f19}, {0x0f20, 0x0f29}, {0x0f3e, 0x0f47},
3320 {0x0f49, 0x0f6c}, {0x0f71, 0x0f84}, {0x0f86, 0x0f97}, {0x0f99, 0x0fbc},
3321 {0x1000, 0x1049}, {0x1050, 0x109d}, {0x10a0, 0x10c5}, {0x10d0, 0x10fa},
3322 {0x10fc, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256}, {0x125a, 0x125d},
3323 {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5},
3324 {0x12b8, 0x12be}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310},
3325 {0x1312, 0x1315}, {0x1318, 0x135a}, {0x135d, 0x135f}, {0x1369, 0x1371},
3326 {0x1380, 0x138f}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1401, 0x166c},
3327 {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x16ee, 0x16f8},
3328 {0x1700, 0x170c}, {0x170e, 0x1714}, {0x1720, 0x1734}, {0x1740, 0x1753},
3329 {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1772, 0x1773}, {0x1780, 0x17d3},
3330 {0x17dc, 0x17dd}, {0x17e0, 0x17e9}, {0x180b, 0x180d}, {0x1810, 0x1819},
3331 {0x1820, 0x1878}, {0x1880, 0x18aa}, {0x18b0, 0x18f5}, {0x1900, 0x191e},
3332 {0x1920, 0x192b}, {0x1930, 0x193b}, {0x1946, 0x196d}, {0x1970, 0x1974},
3333 {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x19d0, 0x19da}, {0x1a00, 0x1a1b},
3334 {0x1a20, 0x1a5e}, {0x1a60, 0x1a7c}, {0x1a7f, 0x1a89}, {0x1a90, 0x1a99},
3335 {0x1ab0, 0x1abd}, {0x1b00, 0x1b4b}, {0x1b50, 0x1b59}, {0x1b6b, 0x1b73},
3336 {0x1b80, 0x1bf3}, {0x1c00, 0x1c37}, {0x1c40, 0x1c49}, {0x1c4d, 0x1c7d},
3337 {0x1c80, 0x1c88}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1cd0, 0x1cd2},
3338 {0x1cd4, 0x1cf9}, {0x1d00, 0x1df9}, {0x1dfb, 0x1f15}, {0x1f18, 0x1f1d},
3339 {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d},
3340 {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc},
3341 {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4},
3342 {0x1ff6, 0x1ffc}, {0x203f, 0x2040}, {0x2090, 0x209c}, {0x20d0, 0x20dc},
3343 {0x20e5, 0x20f0}, {0x210a, 0x2113}, {0x2118, 0x211d}, {0x212a, 0x2139},
3344 {0x213c, 0x213f}, {0x2145, 0x2149}, {0x2160, 0x2188}, {0x2c00, 0x2c2e},
3345 {0x2c30, 0x2c5e}, {0x2c60, 0x2ce4}, {0x2ceb, 0x2cf3}, {0x2d00, 0x2d25},
3346 {0x2d30, 0x2d67}, {0x2d7f, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae},
3347 {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce},
3348 {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2dff}, {0x3005, 0x3007},
3349 {0x3021, 0x302f}, {0x3031, 0x3035}, {0x3038, 0x303c}, {0x3041, 0x3096},
3350 {0x3099, 0x309a}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff},
3351 {0x3105, 0x312f}, {0x3131, 0x318e}, {0x31a0, 0x31ba}, {0x31f0, 0x31ff},
3352 {0x3400, 0x4db5}, {0x4e00, 0x9fef}, {0xa000, 0xa48c}, {0xa4d0, 0xa4fd},
3353 {0xa500, 0xa60c}, {0xa610, 0xa62b}, {0xa640, 0xa66f}, {0xa674, 0xa67d},
3354 {0xa67f, 0xa6f1}, {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7b9},
3355 {0xa7f7, 0xa827}, {0xa840, 0xa873}, {0xa880, 0xa8c5}, {0xa8d0, 0xa8d9},
3356 {0xa8e0, 0xa8f7}, {0xa8fd, 0xa92d}, {0xa930, 0xa953}, {0xa960, 0xa97c},
3357 {0xa980, 0xa9c0}, {0xa9cf, 0xa9d9}, {0xa9e0, 0xa9fe}, {0xaa00, 0xaa36},
3358 {0xaa40, 0xaa4d}, {0xaa50, 0xaa59}, {0xaa60, 0xaa76}, {0xaa7a, 0xaac2},
3359 {0xaadb, 0xaadd}, {0xaae0, 0xaaef}, {0xaaf2, 0xaaf6}, {0xab01, 0xab06},
3360 {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e},
3361 {0xab30, 0xab5a}, {0xab5c, 0xab65}, {0xab70, 0xabea}, {0xabec, 0xabed},
3362 {0xabf0, 0xabf9}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb},
3363 {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
3364 {0xfb1d, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb40, 0xfb41},
3365 {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfc5d}, {0xfc64, 0xfd3d},
3366 {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdf9}, {0xfe00, 0xfe0f},
3367 {0xfe20, 0xfe2f}, {0xfe33, 0xfe34}, {0xfe4d, 0xfe4f}, {0xfe7f, 0xfefc},
3368 {0xff10, 0xff19}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe},
3369 {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc},
3370 {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d},
3371 {0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10140, 0x10174},
3372 {0x10280, 0x1029c}, {0x102a0, 0x102d0}, {0x10300, 0x1031f}, {0x1032d, 0x1034a},
3373 {0x10350, 0x1037a}, {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf},
3374 {0x103d1, 0x103d5}, {0x10400, 0x1049d}, {0x104a0, 0x104a9}, {0x104b0, 0x104d3},
3375 {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10600, 0x10736},
3376 {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10800, 0x10805}, {0x1080a, 0x10835},
3377 {0x10837, 0x10838}, {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e},
3378 {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939},
3379 {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a00, 0x10a03}, {0x10a05, 0x10a06},
3380 {0x10a0c, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a38, 0x10a3a},
3381 {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae6},
3382 {0x10b00, 0x10b35}, {0x10b40, 0x10b55}, {0x10b60, 0x10b72}, {0x10b80, 0x10b91},
3383 {0x10c00, 0x10c48}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d27},
3384 {0x10d30, 0x10d39}, {0x10f00, 0x10f1c}, {0x10f30, 0x10f50}, {0x11000, 0x11046},
3385 {0x11066, 0x1106f}, {0x1107f, 0x110ba}, {0x110d0, 0x110e8}, {0x110f0, 0x110f9},
3386 {0x11100, 0x11134}, {0x11136, 0x1113f}, {0x11144, 0x11146}, {0x11150, 0x11173},
3387 {0x11180, 0x111c4}, {0x111c9, 0x111cc}, {0x111d0, 0x111da}, {0x11200, 0x11211},
3388 {0x11213, 0x11237}, {0x11280, 0x11286}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d},
3389 {0x1129f, 0x112a8}, {0x112b0, 0x112ea}, {0x112f0, 0x112f9}, {0x11300, 0x11303},
3390 {0x11305, 0x1130c}, {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330},
3391 {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133b, 0x11344}, {0x11347, 0x11348},
3392 {0x1134b, 0x1134d}, {0x1135d, 0x11363}, {0x11366, 0x1136c}, {0x11370, 0x11374},
3393 {0x11400, 0x1144a}, {0x11450, 0x11459}, {0x11480, 0x114c5}, {0x114d0, 0x114d9},
3394 {0x11580, 0x115b5}, {0x115b8, 0x115c0}, {0x115d8, 0x115dd}, {0x11600, 0x11640},
3395 {0x11650, 0x11659}, {0x11680, 0x116b7}, {0x116c0, 0x116c9}, {0x11700, 0x1171a},
3396 {0x1171d, 0x1172b}, {0x11730, 0x11739}, {0x11800, 0x1183a}, {0x118a0, 0x118e9},
3397 {0x11a00, 0x11a3e}, {0x11a50, 0x11a83}, {0x11a86, 0x11a99}, {0x11ac0, 0x11af8},
3398 {0x11c00, 0x11c08}, {0x11c0a, 0x11c36}, {0x11c38, 0x11c40}, {0x11c50, 0x11c59},
3399 {0x11c72, 0x11c8f}, {0x11c92, 0x11ca7}, {0x11ca9, 0x11cb6}, {0x11d00, 0x11d06},
3400 {0x11d08, 0x11d09}, {0x11d0b, 0x11d36}, {0x11d3c, 0x11d3d}, {0x11d3f, 0x11d47},
3401 {0x11d50, 0x11d59}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d8e},
3402 {0x11d90, 0x11d91}, {0x11d93, 0x11d98}, {0x11da0, 0x11da9}, {0x11ee0, 0x11ef6},
3403 {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12480, 0x12543}, {0x13000, 0x1342e},
3404 {0x14400, 0x14646}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, {0x16a60, 0x16a69},
3405 {0x16ad0, 0x16aed}, {0x16af0, 0x16af4}, {0x16b00, 0x16b36}, {0x16b40, 0x16b43},
3406 {0x16b50, 0x16b59}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16e40, 0x16e7f},
3407 {0x16f00, 0x16f44}, {0x16f50, 0x16f7e}, {0x16f8f, 0x16f9f}, {0x16fe0, 0x16fe1},
3408 {0x17000, 0x187f1}, {0x18800, 0x18af2}, {0x1b000, 0x1b11e}, {0x1b170, 0x1b2fb},
3409 {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99},
3410 {0x1bc9d, 0x1bc9e}, {0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, {0x1d17b, 0x1d182},
3411 {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244}, {0x1d400, 0x1d454},
3412 {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac},
3413 {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a},
3414 {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e},
3415 {0x1d540, 0x1d544}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0},
3416 {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734},
3417 {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8},
3418 {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb}, {0x1d7ce, 0x1d7ff}, {0x1da00, 0x1da36},
3419 {0x1da3b, 0x1da6c}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1e000, 0x1e006},
3420 {0x1e008, 0x1e018}, {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a},
3421 {0x1e800, 0x1e8c4}, {0x1e8d0, 0x1e8d6}, {0x1e900, 0x1e94a}, {0x1e950, 0x1e959},
3422 {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32},
3423 {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62},
3424 {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c},
3425 {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9},
3426 {0x1eeab, 0x1eebb}, {0x20000, 0x2a6d6}, {0x2a700, 0x2b734}, {0x2b740, 0x2b81d},
3427 {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}, {0x2f800, 0x2fa1d}, {0xe0100, 0xe01ef}}),
3428 CharacterClassWidths::HasBothBMPAndNonBMP);
3429 return characterClass;
3430}
3431
3432static std::unique_ptr<CharacterClass> createCharacterClass57()
3433{
3434 // Name = Default_Ignorable_Code_Point, number of codePoints: 4173
3435 auto characterClass = std::make_unique<CharacterClass>(
3436 std::initializer_list<UChar32>({}),
3437 std::initializer_list<CharacterRange>({}),
3438 std::initializer_list<UChar32>({0x00ad, 0x034f, 0x061c, 0x3164, 0xfeff, 0xffa0}),
3439 std::initializer_list<CharacterRange>({{0x115f, 0x1160}, {0x17b4, 0x17b5}, {0x180b, 0x180e}, {0x200b, 0x200f},
3440 {0x202a, 0x202e}, {0x2060, 0x206f}, {0xfe00, 0xfe0f}, {0xfff0, 0xfff8},
3441 {0x1bca0, 0x1bca3}, {0x1d173, 0x1d17a}, {0xe0000, 0xe0fff}}),
3442 CharacterClassWidths::HasBothBMPAndNonBMP);
3443 return characterClass;
3444}
3445
3446static std::unique_ptr<CharacterClass> createCharacterClass58()
3447{
3448 // Name = Grapheme_Extend, number of codePoints: 1943
3449 auto characterClass = std::make_unique<CharacterClass>(
3450 std::initializer_list<UChar32>({}),
3451 std::initializer_list<CharacterRange>({}),
3452 std::initializer_list<UChar32>({0x05bf, 0x05c7, 0x0670, 0x0711, 0x07fd, 0x093a, 0x093c, 0x094d,
3453 0x0981, 0x09bc, 0x09be, 0x09cd, 0x09d7, 0x09fe, 0x0a3c, 0x0a51,
3454 0x0a75, 0x0abc, 0x0acd, 0x0b01, 0x0b3c, 0x0b4d, 0x0b82, 0x0bbe,
3455 0x0bc0, 0x0bcd, 0x0bd7, 0x0c00, 0x0c04, 0x0c81, 0x0cbc, 0x0cbf,
3456 0x0cc2, 0x0cc6, 0x0d3e, 0x0d4d, 0x0d57, 0x0dca, 0x0dcf, 0x0dd6,
3457 0x0ddf, 0x0e31, 0x0eb1, 0x0f35, 0x0f37, 0x0f39, 0x0fc6, 0x1082,
3458 0x108d, 0x109d, 0x17c6, 0x17dd, 0x18a9, 0x1932, 0x1a1b, 0x1a56,
3459 0x1a60, 0x1a62, 0x1a7f, 0x1b34, 0x1b3c, 0x1b42, 0x1be6, 0x1bed,
3460 0x1ced, 0x1cf4, 0x200c, 0x2d7f, 0xa802, 0xa806, 0xa80b, 0xa8ff,
3461 0xa9b3, 0xa9bc, 0xa9e5, 0xaa43, 0xaa4c, 0xaa7c, 0xaab0, 0xaac1,
3462 0xaaf6, 0xabe5, 0xabe8, 0xabed, 0xfb1e, 0x101fd, 0x102e0, 0x10a3f,
3463 0x11001, 0x11173, 0x11234, 0x1123e, 0x112df, 0x1133e, 0x11340, 0x11357,
3464 0x11446, 0x1145e, 0x114b0, 0x114ba, 0x114bd, 0x115af, 0x1163d, 0x116ab,
3465 0x116ad, 0x116b7, 0x11a47, 0x11c3f, 0x11d3a, 0x11d47, 0x11d95, 0x11d97,
3466 0x1d165, 0x1da75, 0x1da84}),
3467 std::initializer_list<CharacterRange>({{0x0300, 0x036f}, {0x0483, 0x0489}, {0x0591, 0x05bd}, {0x05c1, 0x05c2},
3468 {0x05c4, 0x05c5}, {0x0610, 0x061a}, {0x064b, 0x065f}, {0x06d6, 0x06dc},
3469 {0x06df, 0x06e4}, {0x06e7, 0x06e8}, {0x06ea, 0x06ed}, {0x0730, 0x074a},
3470 {0x07a6, 0x07b0}, {0x07eb, 0x07f3}, {0x0816, 0x0819}, {0x081b, 0x0823},
3471 {0x0825, 0x0827}, {0x0829, 0x082d}, {0x0859, 0x085b}, {0x08d3, 0x08e1},
3472 {0x08e3, 0x0902}, {0x0941, 0x0948}, {0x0951, 0x0957}, {0x0962, 0x0963},
3473 {0x09c1, 0x09c4}, {0x09e2, 0x09e3}, {0x0a01, 0x0a02}, {0x0a41, 0x0a42},
3474 {0x0a47, 0x0a48}, {0x0a4b, 0x0a4d}, {0x0a70, 0x0a71}, {0x0a81, 0x0a82},
3475 {0x0ac1, 0x0ac5}, {0x0ac7, 0x0ac8}, {0x0ae2, 0x0ae3}, {0x0afa, 0x0aff},
3476 {0x0b3e, 0x0b3f}, {0x0b41, 0x0b44}, {0x0b56, 0x0b57}, {0x0b62, 0x0b63},
3477 {0x0c3e, 0x0c40}, {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56},
3478 {0x0c62, 0x0c63}, {0x0ccc, 0x0ccd}, {0x0cd5, 0x0cd6}, {0x0ce2, 0x0ce3},
3479 {0x0d00, 0x0d01}, {0x0d3b, 0x0d3c}, {0x0d41, 0x0d44}, {0x0d62, 0x0d63},
3480 {0x0dd2, 0x0dd4}, {0x0e34, 0x0e3a}, {0x0e47, 0x0e4e}, {0x0eb4, 0x0eb9},
3481 {0x0ebb, 0x0ebc}, {0x0ec8, 0x0ecd}, {0x0f18, 0x0f19}, {0x0f71, 0x0f7e},
3482 {0x0f80, 0x0f84}, {0x0f86, 0x0f87}, {0x0f8d, 0x0f97}, {0x0f99, 0x0fbc},
3483 {0x102d, 0x1030}, {0x1032, 0x1037}, {0x1039, 0x103a}, {0x103d, 0x103e},
3484 {0x1058, 0x1059}, {0x105e, 0x1060}, {0x1071, 0x1074}, {0x1085, 0x1086},
3485 {0x135d, 0x135f}, {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753},
3486 {0x1772, 0x1773}, {0x17b4, 0x17b5}, {0x17b7, 0x17bd}, {0x17c9, 0x17d3},
3487 {0x180b, 0x180d}, {0x1885, 0x1886}, {0x1920, 0x1922}, {0x1927, 0x1928},
3488 {0x1939, 0x193b}, {0x1a17, 0x1a18}, {0x1a58, 0x1a5e}, {0x1a65, 0x1a6c},
3489 {0x1a73, 0x1a7c}, {0x1ab0, 0x1abe}, {0x1b00, 0x1b03}, {0x1b36, 0x1b3a},
3490 {0x1b6b, 0x1b73}, {0x1b80, 0x1b81}, {0x1ba2, 0x1ba5}, {0x1ba8, 0x1ba9},
3491 {0x1bab, 0x1bad}, {0x1be8, 0x1be9}, {0x1bef, 0x1bf1}, {0x1c2c, 0x1c33},
3492 {0x1c36, 0x1c37}, {0x1cd0, 0x1cd2}, {0x1cd4, 0x1ce0}, {0x1ce2, 0x1ce8},
3493 {0x1cf8, 0x1cf9}, {0x1dc0, 0x1df9}, {0x1dfb, 0x1dff}, {0x20d0, 0x20f0},
3494 {0x2cef, 0x2cf1}, {0x2de0, 0x2dff}, {0x302a, 0x302f}, {0x3099, 0x309a},
3495 {0xa66f, 0xa672}, {0xa674, 0xa67d}, {0xa69e, 0xa69f}, {0xa6f0, 0xa6f1},
3496 {0xa825, 0xa826}, {0xa8c4, 0xa8c5}, {0xa8e0, 0xa8f1}, {0xa926, 0xa92d},
3497 {0xa947, 0xa951}, {0xa980, 0xa982}, {0xa9b6, 0xa9b9}, {0xaa29, 0xaa2e},
3498 {0xaa31, 0xaa32}, {0xaa35, 0xaa36}, {0xaab2, 0xaab4}, {0xaab7, 0xaab8},
3499 {0xaabe, 0xaabf}, {0xaaec, 0xaaed}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe2f},
3500 {0xff9e, 0xff9f}, {0x10376, 0x1037a}, {0x10a01, 0x10a03}, {0x10a05, 0x10a06},
3501 {0x10a0c, 0x10a0f}, {0x10a38, 0x10a3a}, {0x10ae5, 0x10ae6}, {0x10d24, 0x10d27},
3502 {0x10f46, 0x10f50}, {0x11038, 0x11046}, {0x1107f, 0x11081}, {0x110b3, 0x110b6},
3503 {0x110b9, 0x110ba}, {0x11100, 0x11102}, {0x11127, 0x1112b}, {0x1112d, 0x11134},
3504 {0x11180, 0x11181}, {0x111b6, 0x111be}, {0x111c9, 0x111cc}, {0x1122f, 0x11231},
3505 {0x11236, 0x11237}, {0x112e3, 0x112ea}, {0x11300, 0x11301}, {0x1133b, 0x1133c},
3506 {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11438, 0x1143f}, {0x11442, 0x11444},
3507 {0x114b3, 0x114b8}, {0x114bf, 0x114c0}, {0x114c2, 0x114c3}, {0x115b2, 0x115b5},
3508 {0x115bc, 0x115bd}, {0x115bf, 0x115c0}, {0x115dc, 0x115dd}, {0x11633, 0x1163a},
3509 {0x1163f, 0x11640}, {0x116b0, 0x116b5}, {0x1171d, 0x1171f}, {0x11722, 0x11725},
3510 {0x11727, 0x1172b}, {0x1182f, 0x11837}, {0x11839, 0x1183a}, {0x11a01, 0x11a0a},
3511 {0x11a33, 0x11a38}, {0x11a3b, 0x11a3e}, {0x11a51, 0x11a56}, {0x11a59, 0x11a5b},
3512 {0x11a8a, 0x11a96}, {0x11a98, 0x11a99}, {0x11c30, 0x11c36}, {0x11c38, 0x11c3d},
3513 {0x11c92, 0x11ca7}, {0x11caa, 0x11cb0}, {0x11cb2, 0x11cb3}, {0x11cb5, 0x11cb6},
3514 {0x11d31, 0x11d36}, {0x11d3c, 0x11d3d}, {0x11d3f, 0x11d45}, {0x11d90, 0x11d91},
3515 {0x11ef3, 0x11ef4}, {0x16af0, 0x16af4}, {0x16b30, 0x16b36}, {0x16f8f, 0x16f92},
3516 {0x1bc9d, 0x1bc9e}, {0x1d167, 0x1d169}, {0x1d16e, 0x1d172}, {0x1d17b, 0x1d182},
3517 {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244}, {0x1da00, 0x1da36},
3518 {0x1da3b, 0x1da6c}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1e000, 0x1e006},
3519 {0x1e008, 0x1e018}, {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a},
3520 {0x1e8d0, 0x1e8d6}, {0x1e944, 0x1e94a}, {0xe0020, 0xe007f}, {0xe0100, 0xe01ef}}),
3521 CharacterClassWidths::HasBothBMPAndNonBMP);
3522 return characterClass;
3523}
3524
3525static std::unique_ptr<CharacterClass> createCharacterClass59()
3526{
3527 // Name = Grapheme_Base, number of codePoints: 135374
3528 auto characterClass = std::make_unique<CharacterClass>(
3529 std::initializer_list<UChar32>({}),
3530 std::initializer_list<CharacterRange>({{0x20, 0x7e}}),
3531 std::initializer_list<UChar32>({0x038c, 0x05be, 0x05c0, 0x05c3, 0x05c6, 0x061b, 0x06de, 0x06e9,
3532 0x0710, 0x07b1, 0x081a, 0x0824, 0x0828, 0x085e, 0x093b, 0x09b2,
3533 0x09bd, 0x09ce, 0x0a03, 0x0a5e, 0x0a76, 0x0a83, 0x0ac9, 0x0ad0,
3534 0x0af9, 0x0b3d, 0x0b40, 0x0b83, 0x0b9c, 0x0bbf, 0x0bd0, 0x0c3d,
3535 0x0cde, 0x0d3d, 0x0dbd, 0x0e84, 0x0e8a, 0x0e8d, 0x0ea5, 0x0ea7,
3536 0x0ebd, 0x0ec6, 0x0f36, 0x0f38, 0x0f7f, 0x0f85, 0x1031, 0x1038,
3537 0x10c7, 0x10cd, 0x1258, 0x12c0, 0x17b6, 0x18aa, 0x1940, 0x1a57,
3538 0x1a61, 0x1b35, 0x1b3b, 0x1baa, 0x1be7, 0x1bee, 0x1cd3, 0x1ce1,
3539 0x1f59, 0x1f5b, 0x1f5d, 0x2d27, 0x2d2d, 0xa673, 0xaa4d, 0xaab1,
3540 0xaac0, 0xaac2, 0xfb1d, 0xfb3e, 0x101a0, 0x1056f, 0x10808, 0x1083c,
3541 0x1093f, 0x11000, 0x1112c, 0x111cd, 0x11235, 0x11288, 0x1133d, 0x1133f,
3542 0x11350, 0x11445, 0x1145b, 0x1145d, 0x114b9, 0x114be, 0x114c1, 0x115be,
3543 0x1163e, 0x116ac, 0x116b6, 0x11726, 0x11838, 0x1183b, 0x118ff, 0x11a00,
3544 0x11a50, 0x11a97, 0x11c3e, 0x11ca9, 0x11cb1, 0x11cb4, 0x11d46, 0x11d96,
3545 0x11d98, 0x16af5, 0x1bc9c, 0x1bc9f, 0x1d166, 0x1d245, 0x1d4a2, 0x1d4bb,
3546 0x1d546, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42, 0x1ee47, 0x1ee49,
3547 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d, 0x1ee5f, 0x1ee64,
3548 0x1ee7e, 0x1f97a}),
3549 std::initializer_list<CharacterRange>({{0x00a0, 0x00ac}, {0x00ae, 0x02ff}, {0x0370, 0x0377}, {0x037a, 0x037f},
3550 {0x0384, 0x038a}, {0x038e, 0x03a1}, {0x03a3, 0x0482}, {0x048a, 0x052f},
3551 {0x0531, 0x0556}, {0x0559, 0x058a}, {0x058d, 0x058f}, {0x05d0, 0x05ea},
3552 {0x05ef, 0x05f4}, {0x0606, 0x060f}, {0x061e, 0x064a}, {0x0660, 0x066f},
3553 {0x0671, 0x06d5}, {0x06e5, 0x06e6}, {0x06ee, 0x070d}, {0x0712, 0x072f},
3554 {0x074d, 0x07a5}, {0x07c0, 0x07ea}, {0x07f4, 0x07fa}, {0x07fe, 0x0815},
3555 {0x0830, 0x083e}, {0x0840, 0x0858}, {0x0860, 0x086a}, {0x08a0, 0x08b4},
3556 {0x08b6, 0x08bd}, {0x0903, 0x0939}, {0x093d, 0x0940}, {0x0949, 0x094c},
3557 {0x094e, 0x0950}, {0x0958, 0x0961}, {0x0964, 0x0980}, {0x0982, 0x0983},
3558 {0x0985, 0x098c}, {0x098f, 0x0990}, {0x0993, 0x09a8}, {0x09aa, 0x09b0},
3559 {0x09b6, 0x09b9}, {0x09bf, 0x09c0}, {0x09c7, 0x09c8}, {0x09cb, 0x09cc},
3560 {0x09dc, 0x09dd}, {0x09df, 0x09e1}, {0x09e6, 0x09fd}, {0x0a05, 0x0a0a},
3561 {0x0a0f, 0x0a10}, {0x0a13, 0x0a28}, {0x0a2a, 0x0a30}, {0x0a32, 0x0a33},
3562 {0x0a35, 0x0a36}, {0x0a38, 0x0a39}, {0x0a3e, 0x0a40}, {0x0a59, 0x0a5c},
3563 {0x0a66, 0x0a6f}, {0x0a72, 0x0a74}, {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91},
3564 {0x0a93, 0x0aa8}, {0x0aaa, 0x0ab0}, {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9},
3565 {0x0abd, 0x0ac0}, {0x0acb, 0x0acc}, {0x0ae0, 0x0ae1}, {0x0ae6, 0x0af1},
3566 {0x0b02, 0x0b03}, {0x0b05, 0x0b0c}, {0x0b0f, 0x0b10}, {0x0b13, 0x0b28},
3567 {0x0b2a, 0x0b30}, {0x0b32, 0x0b33}, {0x0b35, 0x0b39}, {0x0b47, 0x0b48},
3568 {0x0b4b, 0x0b4c}, {0x0b5c, 0x0b5d}, {0x0b5f, 0x0b61}, {0x0b66, 0x0b77},
3569 {0x0b85, 0x0b8a}, {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a},
3570 {0x0b9e, 0x0b9f}, {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9},
3571 {0x0bc1, 0x0bc2}, {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcc}, {0x0be6, 0x0bfa},
3572 {0x0c01, 0x0c03}, {0x0c05, 0x0c0c}, {0x0c0e, 0x0c10}, {0x0c12, 0x0c28},
3573 {0x0c2a, 0x0c39}, {0x0c41, 0x0c44}, {0x0c58, 0x0c5a}, {0x0c60, 0x0c61},
3574 {0x0c66, 0x0c6f}, {0x0c78, 0x0c80}, {0x0c82, 0x0c8c}, {0x0c8e, 0x0c90},
3575 {0x0c92, 0x0ca8}, {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9}, {0x0cbd, 0x0cbe},
3576 {0x0cc0, 0x0cc1}, {0x0cc3, 0x0cc4}, {0x0cc7, 0x0cc8}, {0x0cca, 0x0ccb},
3577 {0x0ce0, 0x0ce1}, {0x0ce6, 0x0cef}, {0x0cf1, 0x0cf2}, {0x0d02, 0x0d03},
3578 {0x0d05, 0x0d0c}, {0x0d0e, 0x0d10}, {0x0d12, 0x0d3a}, {0x0d3f, 0x0d40},
3579 {0x0d46, 0x0d48}, {0x0d4a, 0x0d4c}, {0x0d4e, 0x0d4f}, {0x0d54, 0x0d56},
3580 {0x0d58, 0x0d61}, {0x0d66, 0x0d7f}, {0x0d82, 0x0d83}, {0x0d85, 0x0d96},
3581 {0x0d9a, 0x0db1}, {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6}, {0x0dd0, 0x0dd1},
3582 {0x0dd8, 0x0dde}, {0x0de6, 0x0def}, {0x0df2, 0x0df4}, {0x0e01, 0x0e30},
3583 {0x0e32, 0x0e33}, {0x0e3f, 0x0e46}, {0x0e4f, 0x0e5b}, {0x0e81, 0x0e82},
3584 {0x0e87, 0x0e88}, {0x0e94, 0x0e97}, {0x0e99, 0x0e9f}, {0x0ea1, 0x0ea3},
3585 {0x0eaa, 0x0eab}, {0x0ead, 0x0eb0}, {0x0eb2, 0x0eb3}, {0x0ec0, 0x0ec4},
3586 {0x0ed0, 0x0ed9}, {0x0edc, 0x0edf}, {0x0f00, 0x0f17}, {0x0f1a, 0x0f34},
3587 {0x0f3a, 0x0f47}, {0x0f49, 0x0f6c}, {0x0f88, 0x0f8c}, {0x0fbe, 0x0fc5},
3588 {0x0fc7, 0x0fcc}, {0x0fce, 0x0fda}, {0x1000, 0x102c}, {0x103b, 0x103c},
3589 {0x103f, 0x1057}, {0x105a, 0x105d}, {0x1061, 0x1070}, {0x1075, 0x1081},
3590 {0x1083, 0x1084}, {0x1087, 0x108c}, {0x108e, 0x109c}, {0x109e, 0x10c5},
3591 {0x10d0, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256}, {0x125a, 0x125d},
3592 {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5},
3593 {0x12b8, 0x12be}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310},
3594 {0x1312, 0x1315}, {0x1318, 0x135a}, {0x1360, 0x137c}, {0x1380, 0x1399},
3595 {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1400, 0x169c}, {0x16a0, 0x16f8},
3596 {0x1700, 0x170c}, {0x170e, 0x1711}, {0x1720, 0x1731}, {0x1735, 0x1736},
3597 {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1780, 0x17b3},
3598 {0x17be, 0x17c5}, {0x17c7, 0x17c8}, {0x17d4, 0x17dc}, {0x17e0, 0x17e9},
3599 {0x17f0, 0x17f9}, {0x1800, 0x180a}, {0x1810, 0x1819}, {0x1820, 0x1878},
3600 {0x1880, 0x1884}, {0x1887, 0x18a8}, {0x18b0, 0x18f5}, {0x1900, 0x191e},
3601 {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931}, {0x1933, 0x1938},
3602 {0x1944, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9},
3603 {0x19d0, 0x19da}, {0x19de, 0x1a16}, {0x1a19, 0x1a1a}, {0x1a1e, 0x1a55},
3604 {0x1a63, 0x1a64}, {0x1a6d, 0x1a72}, {0x1a80, 0x1a89}, {0x1a90, 0x1a99},
3605 {0x1aa0, 0x1aad}, {0x1b04, 0x1b33}, {0x1b3d, 0x1b41}, {0x1b43, 0x1b4b},
3606 {0x1b50, 0x1b6a}, {0x1b74, 0x1b7c}, {0x1b82, 0x1ba1}, {0x1ba6, 0x1ba7},
3607 {0x1bae, 0x1be5}, {0x1bea, 0x1bec}, {0x1bf2, 0x1bf3}, {0x1bfc, 0x1c2b},
3608 {0x1c34, 0x1c35}, {0x1c3b, 0x1c49}, {0x1c4d, 0x1c88}, {0x1c90, 0x1cba},
3609 {0x1cbd, 0x1cc7}, {0x1ce9, 0x1cec}, {0x1cee, 0x1cf3}, {0x1cf5, 0x1cf7},
3610 {0x1d00, 0x1dbf}, {0x1e00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45},
3611 {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4},
3612 {0x1fb6, 0x1fc4}, {0x1fc6, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fdd, 0x1fef},
3613 {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffe}, {0x2000, 0x200a}, {0x2010, 0x2027},
3614 {0x202f, 0x205f}, {0x2070, 0x2071}, {0x2074, 0x208e}, {0x2090, 0x209c},
3615 {0x20a0, 0x20bf}, {0x2100, 0x218b}, {0x2190, 0x2426}, {0x2440, 0x244a},
3616 {0x2460, 0x2b73}, {0x2b76, 0x2b95}, {0x2b98, 0x2bc8}, {0x2bca, 0x2bfe},
3617 {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e}, {0x2c60, 0x2cee}, {0x2cf2, 0x2cf3},
3618 {0x2cf9, 0x2d25}, {0x2d30, 0x2d67}, {0x2d6f, 0x2d70}, {0x2d80, 0x2d96},
3619 {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe},
3620 {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde},
3621 {0x2e00, 0x2e4e}, {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5},
3622 {0x2ff0, 0x2ffb}, {0x3000, 0x3029}, {0x3030, 0x303f}, {0x3041, 0x3096},
3623 {0x309b, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e}, {0x3190, 0x31ba},
3624 {0x31c0, 0x31e3}, {0x31f0, 0x321e}, {0x3220, 0x32fe}, {0x3300, 0x4db5},
3625 {0x4dc0, 0x9fef}, {0xa000, 0xa48c}, {0xa490, 0xa4c6}, {0xa4d0, 0xa62b},
3626 {0xa640, 0xa66e}, {0xa67e, 0xa69d}, {0xa6a0, 0xa6ef}, {0xa6f2, 0xa6f7},
3627 {0xa700, 0xa7b9}, {0xa7f7, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a},
3628 {0xa80c, 0xa824}, {0xa827, 0xa82b}, {0xa830, 0xa839}, {0xa840, 0xa877},
3629 {0xa880, 0xa8c3}, {0xa8ce, 0xa8d9}, {0xa8f2, 0xa8fe}, {0xa900, 0xa925},
3630 {0xa92e, 0xa946}, {0xa952, 0xa953}, {0xa95f, 0xa97c}, {0xa983, 0xa9b2},
3631 {0xa9b4, 0xa9b5}, {0xa9ba, 0xa9bb}, {0xa9bd, 0xa9cd}, {0xa9cf, 0xa9d9},
3632 {0xa9de, 0xa9e4}, {0xa9e6, 0xa9fe}, {0xaa00, 0xaa28}, {0xaa2f, 0xaa30},
3633 {0xaa33, 0xaa34}, {0xaa40, 0xaa42}, {0xaa44, 0xaa4b}, {0xaa50, 0xaa59},
3634 {0xaa5c, 0xaa7b}, {0xaa7d, 0xaaaf}, {0xaab5, 0xaab6}, {0xaab9, 0xaabd},
3635 {0xaadb, 0xaaeb}, {0xaaee, 0xaaf5}, {0xab01, 0xab06}, {0xab09, 0xab0e},
3636 {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab65},
3637 {0xab70, 0xabe4}, {0xabe6, 0xabe7}, {0xabe9, 0xabec}, {0xabf0, 0xabf9},
3638 {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d},
3639 {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1f, 0xfb36},
3640 {0xfb38, 0xfb3c}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbc1},
3641 {0xfbd3, 0xfd3f}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfd},
3642 {0xfe10, 0xfe19}, {0xfe30, 0xfe52}, {0xfe54, 0xfe66}, {0xfe68, 0xfe6b},
3643 {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff01, 0xff9d}, {0xffa0, 0xffbe},
3644 {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc},
3645 {0xffe0, 0xffe6}, {0xffe8, 0xffee}, {0xfffc, 0xfffd}, {0x10000, 0x1000b},
3646 {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
3647 {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10100, 0x10102}, {0x10107, 0x10133},
3648 {0x10137, 0x1018e}, {0x10190, 0x1019b}, {0x101d0, 0x101fc}, {0x10280, 0x1029c},
3649 {0x102a0, 0x102d0}, {0x102e1, 0x102fb}, {0x10300, 0x10323}, {0x1032d, 0x1034a},
3650 {0x10350, 0x10375}, {0x10380, 0x1039d}, {0x1039f, 0x103c3}, {0x103c8, 0x103d5},
3651 {0x10400, 0x1049d}, {0x104a0, 0x104a9}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb},
3652 {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10600, 0x10736}, {0x10740, 0x10755},
3653 {0x10760, 0x10767}, {0x10800, 0x10805}, {0x1080a, 0x10835}, {0x10837, 0x10838},
3654 {0x1083f, 0x10855}, {0x10857, 0x1089e}, {0x108a7, 0x108af}, {0x108e0, 0x108f2},
3655 {0x108f4, 0x108f5}, {0x108fb, 0x1091b}, {0x1091f, 0x10939}, {0x10980, 0x109b7},
3656 {0x109bc, 0x109cf}, {0x109d2, 0x10a00}, {0x10a10, 0x10a13}, {0x10a15, 0x10a17},
3657 {0x10a19, 0x10a35}, {0x10a40, 0x10a48}, {0x10a50, 0x10a58}, {0x10a60, 0x10a9f},
3658 {0x10ac0, 0x10ae4}, {0x10aeb, 0x10af6}, {0x10b00, 0x10b35}, {0x10b39, 0x10b55},
3659 {0x10b58, 0x10b72}, {0x10b78, 0x10b91}, {0x10b99, 0x10b9c}, {0x10ba9, 0x10baf},
3660 {0x10c00, 0x10c48}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10cfa, 0x10d23},
3661 {0x10d30, 0x10d39}, {0x10e60, 0x10e7e}, {0x10f00, 0x10f27}, {0x10f30, 0x10f45},
3662 {0x10f51, 0x10f59}, {0x11002, 0x11037}, {0x11047, 0x1104d}, {0x11052, 0x1106f},
3663 {0x11082, 0x110b2}, {0x110b7, 0x110b8}, {0x110bb, 0x110bc}, {0x110be, 0x110c1},
3664 {0x110d0, 0x110e8}, {0x110f0, 0x110f9}, {0x11103, 0x11126}, {0x11136, 0x11146},
3665 {0x11150, 0x11172}, {0x11174, 0x11176}, {0x11182, 0x111b5}, {0x111bf, 0x111c8},
3666 {0x111d0, 0x111df}, {0x111e1, 0x111f4}, {0x11200, 0x11211}, {0x11213, 0x1122e},
3667 {0x11232, 0x11233}, {0x11238, 0x1123d}, {0x11280, 0x11286}, {0x1128a, 0x1128d},
3668 {0x1128f, 0x1129d}, {0x1129f, 0x112a9}, {0x112b0, 0x112de}, {0x112e0, 0x112e2},
3669 {0x112f0, 0x112f9}, {0x11302, 0x11303}, {0x11305, 0x1130c}, {0x1130f, 0x11310},
3670 {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339},
3671 {0x11341, 0x11344}, {0x11347, 0x11348}, {0x1134b, 0x1134d}, {0x1135d, 0x11363},
3672 {0x11400, 0x11437}, {0x11440, 0x11441}, {0x11447, 0x11459}, {0x11480, 0x114af},
3673 {0x114b1, 0x114b2}, {0x114bb, 0x114bc}, {0x114c4, 0x114c7}, {0x114d0, 0x114d9},
3674 {0x11580, 0x115ae}, {0x115b0, 0x115b1}, {0x115b8, 0x115bb}, {0x115c1, 0x115db},
3675 {0x11600, 0x11632}, {0x1163b, 0x1163c}, {0x11641, 0x11644}, {0x11650, 0x11659},
3676 {0x11660, 0x1166c}, {0x11680, 0x116aa}, {0x116ae, 0x116af}, {0x116c0, 0x116c9},
3677 {0x11700, 0x1171a}, {0x11720, 0x11721}, {0x11730, 0x1173f}, {0x11800, 0x1182e},
3678 {0x118a0, 0x118f2}, {0x11a0b, 0x11a32}, {0x11a39, 0x11a3a}, {0x11a3f, 0x11a46},
3679 {0x11a57, 0x11a58}, {0x11a5c, 0x11a83}, {0x11a86, 0x11a89}, {0x11a9a, 0x11aa2},
3680 {0x11ac0, 0x11af8}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c2f}, {0x11c40, 0x11c45},
3681 {0x11c50, 0x11c6c}, {0x11c70, 0x11c8f}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09},
3682 {0x11d0b, 0x11d30}, {0x11d50, 0x11d59}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68},
3683 {0x11d6a, 0x11d8e}, {0x11d93, 0x11d94}, {0x11da0, 0x11da9}, {0x11ee0, 0x11ef2},
3684 {0x11ef5, 0x11ef8}, {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12470, 0x12474},
3685 {0x12480, 0x12543}, {0x13000, 0x1342e}, {0x14400, 0x14646}, {0x16800, 0x16a38},
3686 {0x16a40, 0x16a5e}, {0x16a60, 0x16a69}, {0x16a6e, 0x16a6f}, {0x16ad0, 0x16aed},
3687 {0x16b00, 0x16b2f}, {0x16b37, 0x16b45}, {0x16b50, 0x16b59}, {0x16b5b, 0x16b61},
3688 {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16e40, 0x16e9a}, {0x16f00, 0x16f44},
3689 {0x16f50, 0x16f7e}, {0x16f93, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x17000, 0x187f1},
3690 {0x18800, 0x18af2}, {0x1b000, 0x1b11e}, {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a},
3691 {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1d000, 0x1d0f5},
3692 {0x1d100, 0x1d126}, {0x1d129, 0x1d164}, {0x1d16a, 0x1d16d}, {0x1d183, 0x1d184},
3693 {0x1d18c, 0x1d1a9}, {0x1d1ae, 0x1d1e8}, {0x1d200, 0x1d241}, {0x1d2e0, 0x1d2f3},
3694 {0x1d300, 0x1d356}, {0x1d360, 0x1d378}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c},
3695 {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9},
3696 {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
3697 {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544},
3698 {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d7cb}, {0x1d7ce, 0x1d9ff},
3699 {0x1da37, 0x1da3a}, {0x1da6d, 0x1da74}, {0x1da76, 0x1da83}, {0x1da85, 0x1da8b},
3700 {0x1e800, 0x1e8c4}, {0x1e8c7, 0x1e8cf}, {0x1e900, 0x1e943}, {0x1e950, 0x1e959},
3701 {0x1e95e, 0x1e95f}, {0x1ec71, 0x1ecb4}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f},
3702 {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f},
3703 {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72},
3704 {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b},
3705 {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x1eef0, 0x1eef1},
3706 {0x1f000, 0x1f02b}, {0x1f030, 0x1f093}, {0x1f0a0, 0x1f0ae}, {0x1f0b1, 0x1f0bf},
3707 {0x1f0c1, 0x1f0cf}, {0x1f0d1, 0x1f0f5}, {0x1f100, 0x1f10c}, {0x1f110, 0x1f16b},
3708 {0x1f170, 0x1f1ac}, {0x1f1e6, 0x1f202}, {0x1f210, 0x1f23b}, {0x1f240, 0x1f248},
3709 {0x1f250, 0x1f251}, {0x1f260, 0x1f265}, {0x1f300, 0x1f6d4}, {0x1f6e0, 0x1f6ec},
3710 {0x1f6f0, 0x1f6f9}, {0x1f700, 0x1f773}, {0x1f780, 0x1f7d8}, {0x1f800, 0x1f80b},
3711 {0x1f810, 0x1f847}, {0x1f850, 0x1f859}, {0x1f860, 0x1f887}, {0x1f890, 0x1f8ad},
3712 {0x1f900, 0x1f90b}, {0x1f910, 0x1f93e}, {0x1f940, 0x1f970}, {0x1f973, 0x1f976},
3713 {0x1f97c, 0x1f9a2}, {0x1f9b0, 0x1f9b9}, {0x1f9c0, 0x1f9c2}, {0x1f9d0, 0x1f9ff},
3714 {0x1fa60, 0x1fa6d}, {0x20000, 0x2a6d6}, {0x2a700, 0x2b734}, {0x2b740, 0x2b81d},
3715 {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}, {0x2f800, 0x2fa1d}}),
3716 CharacterClassWidths::HasBothBMPAndNonBMP);
3717 return characterClass;
3718}
3719
3720static std::unique_ptr<CharacterClass> createCharacterClass60()
3721{
3722 // Name = Changes_When_NFKC_Casefolded, number of codePoints: 10306
3723 auto characterClass = std::make_unique<CharacterClass>(
3724 std::initializer_list<UChar32>({}),
3725 std::initializer_list<CharacterRange>({{0x41, 0x5a}}),
3726 std::initializer_list<UChar32>({0x00a0, 0x00a8, 0x00aa, 0x00ad, 0x00af, 0x0100, 0x0102, 0x0104,
3727 0x0106, 0x0108, 0x010a, 0x010c, 0x010e, 0x0110, 0x0112, 0x0114,
3728 0x0116, 0x0118, 0x011a, 0x011c, 0x011e, 0x0120, 0x0122, 0x0124,
3729 0x0126, 0x0128, 0x012a, 0x012c, 0x012e, 0x0130, 0x0136, 0x0139,
3730 0x013b, 0x013d, 0x0143, 0x0145, 0x0147, 0x014c, 0x014e, 0x0150,
3731 0x0152, 0x0154, 0x0156, 0x0158, 0x015a, 0x015c, 0x015e, 0x0160,
3732 0x0162, 0x0164, 0x0166, 0x0168, 0x016a, 0x016c, 0x016e, 0x0170,
3733 0x0172, 0x0174, 0x0176, 0x017b, 0x017d, 0x017f, 0x0184, 0x01a2,
3734 0x01a4, 0x01a9, 0x01ac, 0x01b5, 0x01bc, 0x01cf, 0x01d1, 0x01d3,
3735 0x01d5, 0x01d7, 0x01d9, 0x01db, 0x01de, 0x01e0, 0x01e2, 0x01e4,
3736 0x01e6, 0x01e8, 0x01ea, 0x01ec, 0x01ee, 0x01fa, 0x01fc, 0x01fe,
3737 0x0200, 0x0202, 0x0204, 0x0206, 0x0208, 0x020a, 0x020c, 0x020e,
3738 0x0210, 0x0212, 0x0214, 0x0216, 0x0218, 0x021a, 0x021c, 0x021e,
3739 0x0220, 0x0222, 0x0224, 0x0226, 0x0228, 0x022a, 0x022c, 0x022e,
3740 0x0230, 0x0232, 0x0241, 0x0248, 0x024a, 0x024c, 0x024e, 0x034f,
3741 0x0370, 0x0372, 0x0374, 0x0376, 0x037a, 0x038c, 0x03c2, 0x03d8,
3742 0x03da, 0x03dc, 0x03de, 0x03e0, 0x03e2, 0x03e4, 0x03e6, 0x03e8,
3743 0x03ea, 0x03ec, 0x03ee, 0x03f7, 0x0460, 0x0462, 0x0464, 0x0466,
3744 0x0468, 0x046a, 0x046c, 0x046e, 0x0470, 0x0472, 0x0474, 0x0476,
3745 0x0478, 0x047a, 0x047c, 0x047e, 0x0480, 0x048a, 0x048c, 0x048e,
3746 0x0490, 0x0492, 0x0494, 0x0496, 0x0498, 0x049a, 0x049c, 0x049e,
3747 0x04a0, 0x04a2, 0x04a4, 0x04a6, 0x04a8, 0x04aa, 0x04ac, 0x04ae,
3748 0x04b0, 0x04b2, 0x04b4, 0x04b6, 0x04b8, 0x04ba, 0x04bc, 0x04be,
3749 0x04c3, 0x04c5, 0x04c7, 0x04c9, 0x04cb, 0x04cd, 0x04d0, 0x04d2,
3750 0x04d4, 0x04d6, 0x04d8, 0x04da, 0x04dc, 0x04de, 0x04e0, 0x04e2,
3751 0x04e4, 0x04e6, 0x04e8, 0x04ea, 0x04ec, 0x04ee, 0x04f0, 0x04f2,
3752 0x04f4, 0x04f6, 0x04f8, 0x04fa, 0x04fc, 0x04fe, 0x0500, 0x0502,
3753 0x0504, 0x0506, 0x0508, 0x050a, 0x050c, 0x050e, 0x0510, 0x0512,
3754 0x0514, 0x0516, 0x0518, 0x051a, 0x051c, 0x051e, 0x0520, 0x0522,
3755 0x0524, 0x0526, 0x0528, 0x052a, 0x052c, 0x052e, 0x0587, 0x061c,
3756 0x09df, 0x0a33, 0x0a36, 0x0a5e, 0x0e33, 0x0eb3, 0x0f0c, 0x0f43,
3757 0x0f4d, 0x0f52, 0x0f57, 0x0f5c, 0x0f69, 0x0f73, 0x0f81, 0x0f93,
3758 0x0f9d, 0x0fa2, 0x0fa7, 0x0fac, 0x0fb9, 0x10c7, 0x10cd, 0x10fc,
3759 0x1d78, 0x1e00, 0x1e02, 0x1e04, 0x1e06, 0x1e08, 0x1e0a, 0x1e0c,
3760 0x1e0e, 0x1e10, 0x1e12, 0x1e14, 0x1e16, 0x1e18, 0x1e1a, 0x1e1c,
3761 0x1e1e, 0x1e20, 0x1e22, 0x1e24, 0x1e26, 0x1e28, 0x1e2a, 0x1e2c,
3762 0x1e2e, 0x1e30, 0x1e32, 0x1e34, 0x1e36, 0x1e38, 0x1e3a, 0x1e3c,
3763 0x1e3e, 0x1e40, 0x1e42, 0x1e44, 0x1e46, 0x1e48, 0x1e4a, 0x1e4c,
3764 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58, 0x1e5a, 0x1e5c,
3765 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c,
3766 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78, 0x1e7a, 0x1e7c,
3767 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88, 0x1e8a, 0x1e8c,
3768 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e9e, 0x1ea0, 0x1ea2, 0x1ea4,
3769 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4,
3770 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4,
3771 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4,
3772 0x1ed6, 0x1ed8, 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4,
3773 0x1ee6, 0x1ee8, 0x1eea, 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4,
3774 0x1ef6, 0x1ef8, 0x1efa, 0x1efc, 0x1efe, 0x1f59, 0x1f5b, 0x1f5d,
3775 0x1f5f, 0x1f71, 0x1f73, 0x1f75, 0x1f77, 0x1f79, 0x1f7b, 0x1f7d,
3776 0x1fd3, 0x1fe3, 0x2011, 0x2017, 0x203c, 0x203e, 0x2057, 0x20a8,
3777 0x2124, 0x2126, 0x2128, 0x2183, 0x2189, 0x2a0c, 0x2adc, 0x2c60,
3778 0x2c67, 0x2c69, 0x2c6b, 0x2c72, 0x2c75, 0x2c82, 0x2c84, 0x2c86,
3779 0x2c88, 0x2c8a, 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96,
3780 0x2c98, 0x2c9a, 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6,
3781 0x2ca8, 0x2caa, 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6,
3782 0x2cb8, 0x2cba, 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6,
3783 0x2cc8, 0x2cca, 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6,
3784 0x2cd8, 0x2cda, 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced,
3785 0x2cf2, 0x2d6f, 0x2e9f, 0x2ef3, 0x3000, 0x3036, 0x309f, 0x30ff,
3786 0xa640, 0xa642, 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e,
3787 0xa650, 0xa652, 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e,
3788 0xa660, 0xa662, 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680,
3789 0xa682, 0xa684, 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690,
3790 0xa692, 0xa694, 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726,
3791 0xa728, 0xa72a, 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738,
3792 0xa73a, 0xa73c, 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748,
3793 0xa74a, 0xa74c, 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758,
3794 0xa75a, 0xa75c, 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768,
3795 0xa76a, 0xa76c, 0xa76e, 0xa770, 0xa779, 0xa77b, 0xa780, 0xa782,
3796 0xa784, 0xa786, 0xa78b, 0xa78d, 0xa790, 0xa792, 0xa796, 0xa798,
3797 0xa79a, 0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8,
3798 0xa7b6, 0xa7b8, 0xfa10, 0xfa12, 0xfa20, 0xfa22, 0xfb1d, 0xfb3e,
3799 0xfe74, 0xfeff, 0x1d4a2, 0x1d4bb, 0x1d546, 0x1ee24, 0x1ee27, 0x1ee39,
3800 0x1ee3b, 0x1ee42, 0x1ee47, 0x1ee49, 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59,
3801 0x1ee5b, 0x1ee5d, 0x1ee5f, 0x1ee64, 0x1ee7e, 0x1f190}),
3802 std::initializer_list<CharacterRange>({{0x00b2, 0x00b5}, {0x00b8, 0x00ba}, {0x00bc, 0x00be}, {0x00c0, 0x00d6},
3803 {0x00d8, 0x00df}, {0x0132, 0x0134}, {0x013f, 0x0141}, {0x0149, 0x014a},
3804 {0x0178, 0x0179}, {0x0181, 0x0182}, {0x0186, 0x0187}, {0x0189, 0x018b},
3805 {0x018e, 0x0191}, {0x0193, 0x0194}, {0x0196, 0x0198}, {0x019c, 0x019d},
3806 {0x019f, 0x01a0}, {0x01a6, 0x01a7}, {0x01ae, 0x01af}, {0x01b1, 0x01b3},
3807 {0x01b7, 0x01b8}, {0x01c4, 0x01cd}, {0x01f1, 0x01f4}, {0x01f6, 0x01f8},
3808 {0x023a, 0x023b}, {0x023d, 0x023e}, {0x0243, 0x0246}, {0x02b0, 0x02b8},
3809 {0x02d8, 0x02dd}, {0x02e0, 0x02e4}, {0x0340, 0x0341}, {0x0343, 0x0345},
3810 {0x037e, 0x037f}, {0x0384, 0x038a}, {0x038e, 0x038f}, {0x0391, 0x03a1},
3811 {0x03a3, 0x03ab}, {0x03cf, 0x03d6}, {0x03f0, 0x03f2}, {0x03f4, 0x03f5},
3812 {0x03f9, 0x03fa}, {0x03fd, 0x042f}, {0x04c0, 0x04c1}, {0x0531, 0x0556},
3813 {0x0675, 0x0678}, {0x0958, 0x095f}, {0x09dc, 0x09dd}, {0x0a59, 0x0a5b},
3814 {0x0b5c, 0x0b5d}, {0x0edc, 0x0edd}, {0x0f75, 0x0f79}, {0x10a0, 0x10c5},
3815 {0x115f, 0x1160}, {0x13f8, 0x13fd}, {0x17b4, 0x17b5}, {0x180b, 0x180e},
3816 {0x1c80, 0x1c88}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1d2c, 0x1d2e},
3817 {0x1d30, 0x1d3a}, {0x1d3c, 0x1d4d}, {0x1d4f, 0x1d6a}, {0x1d9b, 0x1dbf},
3818 {0x1e9a, 0x1e9b}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d}, {0x1f28, 0x1f2f},
3819 {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f68, 0x1f6f}, {0x1f80, 0x1faf},
3820 {0x1fb2, 0x1fb4}, {0x1fb7, 0x1fc4}, {0x1fc7, 0x1fcf}, {0x1fd8, 0x1fdb},
3821 {0x1fdd, 0x1fdf}, {0x1fe8, 0x1fef}, {0x1ff2, 0x1ff4}, {0x1ff7, 0x1ffe},
3822 {0x2000, 0x200f}, {0x2024, 0x2026}, {0x202a, 0x202f}, {0x2033, 0x2034},
3823 {0x2036, 0x2037}, {0x2047, 0x2049}, {0x205f, 0x2071}, {0x2074, 0x208e},
3824 {0x2090, 0x209c}, {0x2100, 0x2103}, {0x2105, 0x2107}, {0x2109, 0x2113},
3825 {0x2115, 0x2116}, {0x2119, 0x211d}, {0x2120, 0x2122}, {0x212a, 0x212d},
3826 {0x212f, 0x2139}, {0x213b, 0x2140}, {0x2145, 0x2149}, {0x2150, 0x217f},
3827 {0x222c, 0x222d}, {0x222f, 0x2230}, {0x2329, 0x232a}, {0x2460, 0x24ea},
3828 {0x2a74, 0x2a76}, {0x2c00, 0x2c2e}, {0x2c62, 0x2c64}, {0x2c6d, 0x2c70},
3829 {0x2c7c, 0x2c80}, {0x2f00, 0x2fd5}, {0x3038, 0x303a}, {0x309b, 0x309c},
3830 {0x3131, 0x318e}, {0x3192, 0x319f}, {0x3200, 0x321e}, {0x3220, 0x3247},
3831 {0x3250, 0x327e}, {0x3280, 0x32fe}, {0x3300, 0x33ff}, {0xa69c, 0xa69d},
3832 {0xa77d, 0xa77e}, {0xa7aa, 0xa7ae}, {0xa7b0, 0xa7b4}, {0xa7f8, 0xa7f9},
3833 {0xab5c, 0xab5f}, {0xab70, 0xabbf}, {0xf900, 0xfa0d}, {0xfa15, 0xfa1e},
3834 {0xfa25, 0xfa26}, {0xfa2a, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06},
3835 {0xfb13, 0xfb17}, {0xfb1f, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb40, 0xfb41},
3836 {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f},
3837 {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfc}, {0xfe00, 0xfe19}, {0xfe30, 0xfe44},
3838 {0xfe47, 0xfe52}, {0xfe54, 0xfe66}, {0xfe68, 0xfe6b}, {0xfe70, 0xfe72},
3839 {0xfe76, 0xfefc}, {0xff01, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf},
3840 {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0xffe0, 0xffe6}, {0xffe8, 0xffee},
3841 {0xfff0, 0xfff8}, {0x10400, 0x10427}, {0x104b0, 0x104d3}, {0x10c80, 0x10cb2},
3842 {0x118a0, 0x118bf}, {0x16e40, 0x16e5f}, {0x1bca0, 0x1bca3}, {0x1d15e, 0x1d164},
3843 {0x1d173, 0x1d17a}, {0x1d1bb, 0x1d1c0}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c},
3844 {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9},
3845 {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
3846 {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544},
3847 {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d7cb}, {0x1d7ce, 0x1d7ff},
3848 {0x1e900, 0x1e921}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22},
3849 {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52},
3850 {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77},
3851 {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3},
3852 {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x1f100, 0x1f10a}, {0x1f110, 0x1f12e},
3853 {0x1f130, 0x1f14f}, {0x1f16a, 0x1f16b}, {0x1f200, 0x1f202}, {0x1f210, 0x1f23b},
3854 {0x1f240, 0x1f248}, {0x1f250, 0x1f251}, {0x2f800, 0x2fa1d}, {0xe0000, 0xe0fff}}),
3855 CharacterClassWidths::HasBothBMPAndNonBMP);
3856 return characterClass;
3857}
3858
3859static std::unique_ptr<CharacterClass> createCharacterClass61()
3860{
3861 // Name = White_Space, number of codePoints: 25
3862 auto characterClass = std::make_unique<CharacterClass>(
3863 std::initializer_list<UChar32>({0x20}),
3864 std::initializer_list<CharacterRange>({{0x09, 0x0d}}),
3865 std::initializer_list<UChar32>({0x0085, 0x00a0, 0x1680, 0x202f, 0x205f, 0x3000}),
3866 std::initializer_list<CharacterRange>({{0x2000, 0x200a}, {0x2028, 0x2029}}),
3867 CharacterClassWidths::HasBMPChars);
3868 return characterClass;
3869}
3870
3871static std::unique_ptr<CharacterClass> createCharacterClass62()
3872{
3873 // Name = Bidi_Control, number of codePoints: 12
3874 auto characterClass = std::make_unique<CharacterClass>(
3875 std::initializer_list<UChar32>({}),
3876 std::initializer_list<CharacterRange>({}),
3877 std::initializer_list<UChar32>({0x061c}),
3878 std::initializer_list<CharacterRange>({{0x200e, 0x200f}, {0x202a, 0x202e}, {0x2066, 0x2069}}),
3879 CharacterClassWidths::HasBMPChars);
3880 return characterClass;
3881}
3882
3883static std::unique_ptr<CharacterClass> createCharacterClass63()
3884{
3885 // Name = Join_Control, number of codePoints: 2
3886 auto characterClass = std::make_unique<CharacterClass>(
3887 std::initializer_list<UChar32>({}),
3888 std::initializer_list<CharacterRange>({}),
3889 std::initializer_list<UChar32>({}),
3890 std::initializer_list<CharacterRange>({{0x200c, 0x200d}}),
3891 CharacterClassWidths::HasBMPChars);
3892 return characterClass;
3893}
3894
3895static std::unique_ptr<CharacterClass> createCharacterClass64()
3896{
3897 // Name = Dash, number of codePoints: 28
3898 auto characterClass = std::make_unique<CharacterClass>(
3899 std::initializer_list<UChar32>({0x2d}),
3900 std::initializer_list<CharacterRange>({}),
3901 std::initializer_list<UChar32>({0x058a, 0x05be, 0x1400, 0x1806, 0x2053, 0x207b, 0x208b, 0x2212,
3902 0x2e17, 0x2e1a, 0x2e40, 0x301c, 0x3030, 0x30a0, 0xfe58, 0xfe63,
3903 0xff0d}),
3904 std::initializer_list<CharacterRange>({{0x2010, 0x2015}, {0x2e3a, 0x2e3b}, {0xfe31, 0xfe32}}),
3905 CharacterClassWidths::HasBMPChars);
3906 return characterClass;
3907}
3908
3909static std::unique_ptr<CharacterClass> createCharacterClass65()
3910{
3911 // Name = Quotation_Mark, number of codePoints: 30
3912 auto characterClass = std::make_unique<CharacterClass>(
3913 std::initializer_list<UChar32>({0x22, 0x27}),
3914 std::initializer_list<CharacterRange>({}),
3915 std::initializer_list<UChar32>({0x00ab, 0x00bb, 0x2e42, 0xff02, 0xff07}),
3916 std::initializer_list<CharacterRange>({{0x2018, 0x201f}, {0x2039, 0x203a}, {0x300c, 0x300f}, {0x301d, 0x301f},
3917 {0xfe41, 0xfe44}, {0xff62, 0xff63}}),
3918 CharacterClassWidths::HasBMPChars);
3919 return characterClass;
3920}
3921
3922static std::unique_ptr<CharacterClass> createCharacterClass66()
3923{
3924 // Name = Terminal_Punctuation, number of codePoints: 264
3925 auto characterClass = std::make_unique<CharacterClass>(
3926 std::initializer_list<UChar32>({0x21, 0x2c, 0x2e, 0x3f}),
3927 std::initializer_list<CharacterRange>({{0x3a, 0x3b}}),
3928 std::initializer_list<UChar32>({0x037e, 0x0387, 0x0589, 0x05c3, 0x060c, 0x061b, 0x06d4, 0x070c,
3929 0x085e, 0x0f08, 0x17da, 0x2e2e, 0x2e3c, 0x2e41, 0x2e4c, 0x2e4e,
3930 0xa92f, 0xaadf, 0xabeb, 0xff01, 0xff0c, 0xff0e, 0xff1f, 0xff61,
3931 0xff64, 0x1039f, 0x103d0, 0x10857, 0x1091f, 0x111cd, 0x112a9, 0x1145b,
3932 0x11c71, 0x16af5, 0x16b44, 0x1bc9f}),
3933 std::initializer_list<CharacterRange>({{0x061e, 0x061f}, {0x0700, 0x070a}, {0x07f8, 0x07f9}, {0x0830, 0x083e},
3934 {0x0964, 0x0965}, {0x0e5a, 0x0e5b}, {0x0f0d, 0x0f12}, {0x104a, 0x104b},
3935 {0x1361, 0x1368}, {0x166d, 0x166e}, {0x16eb, 0x16ed}, {0x1735, 0x1736},
3936 {0x17d4, 0x17d6}, {0x1802, 0x1805}, {0x1808, 0x1809}, {0x1944, 0x1945},
3937 {0x1aa8, 0x1aab}, {0x1b5a, 0x1b5b}, {0x1b5d, 0x1b5f}, {0x1c3b, 0x1c3f},
3938 {0x1c7e, 0x1c7f}, {0x203c, 0x203d}, {0x2047, 0x2049}, {0x3001, 0x3002},
3939 {0xa4fe, 0xa4ff}, {0xa60d, 0xa60f}, {0xa6f3, 0xa6f7}, {0xa876, 0xa877},
3940 {0xa8ce, 0xa8cf}, {0xa9c7, 0xa9c9}, {0xaa5d, 0xaa5f}, {0xaaf0, 0xaaf1},
3941 {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xff1a, 0xff1b}, {0x10a56, 0x10a57},
3942 {0x10af0, 0x10af5}, {0x10b3a, 0x10b3f}, {0x10b99, 0x10b9c}, {0x10f55, 0x10f59},
3943 {0x11047, 0x1104d}, {0x110be, 0x110c1}, {0x11141, 0x11143}, {0x111c5, 0x111c6},
3944 {0x111de, 0x111df}, {0x11238, 0x1123c}, {0x1144b, 0x1144d}, {0x115c2, 0x115c5},
3945 {0x115c9, 0x115d7}, {0x11641, 0x11642}, {0x1173c, 0x1173e}, {0x11a42, 0x11a43},
3946 {0x11a9b, 0x11a9c}, {0x11aa1, 0x11aa2}, {0x11c41, 0x11c43}, {0x11ef7, 0x11ef8},
3947 {0x12470, 0x12474}, {0x16a6e, 0x16a6f}, {0x16b37, 0x16b39}, {0x16e97, 0x16e98},
3948 {0x1da87, 0x1da8a}}),
3949 CharacterClassWidths::HasBothBMPAndNonBMP);
3950 return characterClass;
3951}
3952
3953static std::unique_ptr<CharacterClass> createCharacterClass67()
3954{
3955 // Name = Hex_Digit, number of codePoints: 44
3956 auto characterClass = std::make_unique<CharacterClass>(
3957 std::initializer_list<UChar32>({}),
3958 std::initializer_list<CharacterRange>({{0x30, 0x39}, {0x41, 0x46}, {0x61, 0x66}}),
3959 std::initializer_list<UChar32>({}),
3960 std::initializer_list<CharacterRange>({{0xff10, 0xff19}, {0xff21, 0xff26}, {0xff41, 0xff46}}),
3961 CharacterClassWidths::HasBMPChars);
3962 return characterClass;
3963}
3964
3965static std::unique_ptr<CharacterClass> createCharacterClass68()
3966{
3967 // Name = ASCII_Hex_Digit, number of codePoints: 22
3968 auto characterClass = std::make_unique<CharacterClass>(
3969 std::initializer_list<UChar32>({}),
3970 std::initializer_list<CharacterRange>({{0x30, 0x39}, {0x41, 0x46}, {0x61, 0x66}}),
3971 std::initializer_list<UChar32>({}),
3972 std::initializer_list<CharacterRange>({}),
3973 CharacterClassWidths::HasBMPChars);
3974 return characterClass;
3975}
3976
3977static std::unique_ptr<CharacterClass> createCharacterClass69()
3978{
3979 // Name = Ideographic, number of codePoints: 96184
3980 auto characterClass = std::make_unique<CharacterClass>(
3981 std::initializer_list<UChar32>({}),
3982 std::initializer_list<CharacterRange>({}),
3983 std::initializer_list<UChar32>({}),
3984 std::initializer_list<CharacterRange>({{0x3006, 0x3007}, {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3400, 0x4db5},
3985 {0x4e00, 0x9fef}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0x17000, 0x187f1},
3986 {0x18800, 0x18af2}, {0x1b170, 0x1b2fb}, {0x20000, 0x2a6d6}, {0x2a700, 0x2b734},
3987 {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}, {0x2f800, 0x2fa1d}}),
3988 CharacterClassWidths::HasBothBMPAndNonBMP);
3989 return characterClass;
3990}
3991
3992static std::unique_ptr<CharacterClass> createCharacterClass70()
3993{
3994 // Name = Diacritic, number of codePoints: 818
3995 auto characterClass = std::make_unique<CharacterClass>(
3996 std::initializer_list<UChar32>({0x5e, 0x60}),
3997 std::initializer_list<CharacterRange>({}),
3998 std::initializer_list<UChar32>({0x00a8, 0x00af, 0x00b4, 0x037a, 0x0559, 0x05bf, 0x05c4, 0x093c,
3999 0x094d, 0x0971, 0x09bc, 0x09cd, 0x0a3c, 0x0a4d, 0x0abc, 0x0acd,
4000 0x0b3c, 0x0b4d, 0x0bcd, 0x0c4d, 0x0cbc, 0x0ccd, 0x0d4d, 0x0dca,
4001 0x0e4e, 0x0f35, 0x0f37, 0x0f39, 0x0fc6, 0x1037, 0x108f, 0x17dd,
4002 0x1a7f, 0x1b34, 0x1b44, 0x1ced, 0x1cf4, 0x1fbd, 0x2e2f, 0x30fc,
4003 0xa66f, 0xa67f, 0xa788, 0xa8c4, 0xa953, 0xa9b3, 0xa9c0, 0xa9e5,
4004 0xaaf6, 0xfb1e, 0xff3e, 0xff40, 0xff70, 0xffe3, 0x102e0, 0x11173,
4005 0x111c0, 0x1133c, 0x1134d, 0x11442, 0x11446, 0x1163f, 0x1172b, 0x11a34,
4006 0x11a47, 0x11a99, 0x11c3f, 0x11d42, 0x11d97}),
4007 std::initializer_list<CharacterRange>({{0x00b7, 0x00b8}, {0x02b0, 0x034e}, {0x0350, 0x0357}, {0x035d, 0x0362},
4008 {0x0374, 0x0375}, {0x0384, 0x0385}, {0x0483, 0x0487}, {0x0591, 0x05a1},
4009 {0x05a3, 0x05bd}, {0x05c1, 0x05c2}, {0x064b, 0x0652}, {0x0657, 0x0658},
4010 {0x06df, 0x06e0}, {0x06e5, 0x06e6}, {0x06ea, 0x06ec}, {0x0730, 0x074a},
4011 {0x07a6, 0x07b0}, {0x07eb, 0x07f5}, {0x0818, 0x0819}, {0x08e3, 0x08fe},
4012 {0x0951, 0x0954}, {0x0afd, 0x0aff}, {0x0d3b, 0x0d3c}, {0x0e47, 0x0e4c},
4013 {0x0ec8, 0x0ecc}, {0x0f18, 0x0f19}, {0x0f3e, 0x0f3f}, {0x0f82, 0x0f84},
4014 {0x0f86, 0x0f87}, {0x1039, 0x103a}, {0x1087, 0x108d}, {0x109a, 0x109b},
4015 {0x17c9, 0x17d3}, {0x1939, 0x193b}, {0x1a75, 0x1a7c}, {0x1ab0, 0x1abd},
4016 {0x1b6b, 0x1b73}, {0x1baa, 0x1bab}, {0x1c36, 0x1c37}, {0x1c78, 0x1c7d},
4017 {0x1cd0, 0x1ce8}, {0x1cf7, 0x1cf9}, {0x1d2c, 0x1d6a}, {0x1dc4, 0x1dcf},
4018 {0x1df5, 0x1df9}, {0x1dfd, 0x1dff}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf},
4019 {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2cef, 0x2cf1},
4020 {0x302a, 0x302f}, {0x3099, 0x309c}, {0xa67c, 0xa67d}, {0xa69c, 0xa69d},
4021 {0xa6f0, 0xa6f1}, {0xa717, 0xa721}, {0xa7f8, 0xa7f9}, {0xa8e0, 0xa8f1},
4022 {0xa92b, 0xa92e}, {0xaa7b, 0xaa7d}, {0xaabf, 0xaac2}, {0xab5b, 0xab5f},
4023 {0xabec, 0xabed}, {0xfe20, 0xfe2f}, {0xff9e, 0xff9f}, {0x10ae5, 0x10ae6},
4024 {0x10d22, 0x10d27}, {0x10f46, 0x10f50}, {0x110b9, 0x110ba}, {0x11133, 0x11134},
4025 {0x111ca, 0x111cc}, {0x11235, 0x11236}, {0x112e9, 0x112ea}, {0x11366, 0x1136c},
4026 {0x11370, 0x11374}, {0x114c2, 0x114c3}, {0x115bf, 0x115c0}, {0x116b6, 0x116b7},
4027 {0x11839, 0x1183a}, {0x11d44, 0x11d45}, {0x16af0, 0x16af4}, {0x16f8f, 0x16f9f},
4028 {0x1d167, 0x1d169}, {0x1d16d, 0x1d172}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b},
4029 {0x1d1aa, 0x1d1ad}, {0x1e8d0, 0x1e8d6}, {0x1e944, 0x1e946}, {0x1e948, 0x1e94a}}),
4030 CharacterClassWidths::HasBothBMPAndNonBMP);
4031 return characterClass;
4032}
4033
4034static std::unique_ptr<CharacterClass> createCharacterClass71()
4035{
4036 // Name = Extender, number of codePoints: 44
4037 auto characterClass = std::make_unique<CharacterClass>(
4038 std::initializer_list<UChar32>({}),
4039 std::initializer_list<CharacterRange>({}),
4040 std::initializer_list<UChar32>({0x00b7, 0x0640, 0x07fa, 0x0e46, 0x0ec6, 0x180a, 0x1843, 0x1aa7,
4041 0x1c36, 0x1c7b, 0x3005, 0xa015, 0xa60c, 0xa9cf, 0xa9e6, 0xaa70,
4042 0xaadd, 0xff70, 0x1135d, 0x11a98}),
4043 std::initializer_list<CharacterRange>({{0x02d0, 0x02d1}, {0x3031, 0x3035}, {0x309d, 0x309e}, {0x30fc, 0x30fe},
4044 {0xaaf3, 0xaaf4}, {0x115c6, 0x115c8}, {0x16b42, 0x16b43}, {0x16fe0, 0x16fe1},
4045 {0x1e944, 0x1e946}}),
4046 CharacterClassWidths::HasBothBMPAndNonBMP);
4047 return characterClass;
4048}
4049
4050static std::unique_ptr<CharacterClass> createCharacterClass72()
4051{
4052 // Name = Noncharacter_Code_Point, number of codePoints: 66
4053 auto characterClass = std::make_unique<CharacterClass>(
4054 std::initializer_list<UChar32>({}),
4055 std::initializer_list<CharacterRange>({}),
4056 std::initializer_list<UChar32>({}),
4057 std::initializer_list<CharacterRange>({{0xfdd0, 0xfdef}, {0xfffe, 0xffff}, {0x1fffe, 0x1ffff}, {0x2fffe, 0x2ffff},
4058 {0x3fffe, 0x3ffff}, {0x4fffe, 0x4ffff}, {0x5fffe, 0x5ffff}, {0x6fffe, 0x6ffff},
4059 {0x7fffe, 0x7ffff}, {0x8fffe, 0x8ffff}, {0x9fffe, 0x9ffff}, {0xafffe, 0xaffff},
4060 {0xbfffe, 0xbffff}, {0xcfffe, 0xcffff}, {0xdfffe, 0xdffff}, {0xefffe, 0xeffff},
4061 {0xffffe, 0xfffff}, {0x10fffe, 0x10ffff}}),
4062 CharacterClassWidths::HasBothBMPAndNonBMP);
4063 return characterClass;
4064}
4065
4066static std::unique_ptr<CharacterClass> createCharacterClass73()
4067{
4068 // Name = IDS_Binary_Operator, number of codePoints: 10
4069 auto characterClass = std::make_unique<CharacterClass>(
4070 std::initializer_list<UChar32>({}),
4071 std::initializer_list<CharacterRange>({}),
4072 std::initializer_list<UChar32>({}),
4073 std::initializer_list<CharacterRange>({{0x2ff0, 0x2ff1}, {0x2ff4, 0x2ffb}}),
4074 CharacterClassWidths::HasBMPChars);
4075 return characterClass;
4076}
4077
4078static std::unique_ptr<CharacterClass> createCharacterClass74()
4079{
4080 // Name = IDS_Trinary_Operator, number of codePoints: 2
4081 auto characterClass = std::make_unique<CharacterClass>(
4082 std::initializer_list<UChar32>({}),
4083 std::initializer_list<CharacterRange>({}),
4084 std::initializer_list<UChar32>({}),
4085 std::initializer_list<CharacterRange>({{0x2ff2, 0x2ff3}}),
4086 CharacterClassWidths::HasBMPChars);
4087 return characterClass;
4088}
4089
4090static std::unique_ptr<CharacterClass> createCharacterClass75()
4091{
4092 // Name = Radical, number of codePoints: 329
4093 auto characterClass = std::make_unique<CharacterClass>(
4094 std::initializer_list<UChar32>({}),
4095 std::initializer_list<CharacterRange>({}),
4096 std::initializer_list<UChar32>({}),
4097 std::initializer_list<CharacterRange>({{0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}}),
4098 CharacterClassWidths::HasBMPChars);
4099 return characterClass;
4100}
4101
4102static std::unique_ptr<CharacterClass> createCharacterClass76()
4103{
4104 // Name = Unified_Ideograph, number of codePoints: 87887
4105 auto characterClass = std::make_unique<CharacterClass>(
4106 std::initializer_list<UChar32>({}),
4107 std::initializer_list<CharacterRange>({}),
4108 std::initializer_list<UChar32>({0xfa11, 0xfa1f, 0xfa21}),
4109 std::initializer_list<CharacterRange>({{0x3400, 0x4db5}, {0x4e00, 0x9fef}, {0xfa0e, 0xfa0f}, {0xfa13, 0xfa14},
4110 {0xfa23, 0xfa24}, {0xfa27, 0xfa29}, {0x20000, 0x2a6d6}, {0x2a700, 0x2b734},
4111 {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}}),
4112 CharacterClassWidths::HasBothBMPAndNonBMP);
4113 return characterClass;
4114}
4115
4116static std::unique_ptr<CharacterClass> createCharacterClass77()
4117{
4118 // Name = Deprecated, number of codePoints: 15
4119 auto characterClass = std::make_unique<CharacterClass>(
4120 std::initializer_list<UChar32>({}),
4121 std::initializer_list<CharacterRange>({}),
4122 std::initializer_list<UChar32>({0x0149, 0x0673, 0x0f77, 0x0f79, 0xe0001}),
4123 std::initializer_list<CharacterRange>({{0x17a3, 0x17a4}, {0x206a, 0x206f}, {0x2329, 0x232a}}),
4124 CharacterClassWidths::HasBothBMPAndNonBMP);
4125 return characterClass;
4126}
4127
4128static std::unique_ptr<CharacterClass> createCharacterClass78()
4129{
4130 // Name = Soft_Dotted, number of codePoints: 46
4131 auto characterClass = std::make_unique<CharacterClass>(
4132 std::initializer_list<UChar32>({}),
4133 std::initializer_list<CharacterRange>({{0x69, 0x6a}}),
4134 std::initializer_list<UChar32>({0x012f, 0x0249, 0x0268, 0x029d, 0x02b2, 0x03f3, 0x0456, 0x0458,
4135 0x1d62, 0x1d96, 0x1da4, 0x1da8, 0x1e2d, 0x1ecb, 0x2071, 0x2c7c}),
4136 std::initializer_list<CharacterRange>({{0x2148, 0x2149}, {0x1d422, 0x1d423}, {0x1d456, 0x1d457}, {0x1d48a, 0x1d48b},
4137 {0x1d4be, 0x1d4bf}, {0x1d4f2, 0x1d4f3}, {0x1d526, 0x1d527}, {0x1d55a, 0x1d55b},
4138 {0x1d58e, 0x1d58f}, {0x1d5c2, 0x1d5c3}, {0x1d5f6, 0x1d5f7}, {0x1d62a, 0x1d62b},
4139 {0x1d65e, 0x1d65f}, {0x1d692, 0x1d693}}),
4140 CharacterClassWidths::HasBothBMPAndNonBMP);
4141 return characterClass;
4142}
4143
4144static std::unique_ptr<CharacterClass> createCharacterClass79()
4145{
4146 // Name = Logical_Order_Exception, number of codePoints: 19
4147 auto characterClass = std::make_unique<CharacterClass>(
4148 std::initializer_list<UChar32>({}),
4149 std::initializer_list<CharacterRange>({}),
4150 std::initializer_list<UChar32>({0x19ba, 0xaab9}),
4151 std::initializer_list<CharacterRange>({{0x0e40, 0x0e44}, {0x0ec0, 0x0ec4}, {0x19b5, 0x19b7}, {0xaab5, 0xaab6},
4152 {0xaabb, 0xaabc}}),
4153 CharacterClassWidths::HasBMPChars);
4154 return characterClass;
4155}
4156
4157static std::unique_ptr<CharacterClass> createCharacterClass80()
4158{
4159 // Name = Sentence_Terminal, number of codePoints: 141
4160 auto characterClass = std::make_unique<CharacterClass>(
4161 std::initializer_list<UChar32>({0x21, 0x2e, 0x3f}),
4162 std::initializer_list<CharacterRange>({}),
4163 std::initializer_list<UChar32>({0x0589, 0x06d4, 0x07f9, 0x0837, 0x0839, 0x1362, 0x166e, 0x1803,
4164 0x1809, 0x2e2e, 0x2e3c, 0x3002, 0xa4ff, 0xa6f3, 0xa6f7, 0xa92f,
4165 0xabeb, 0xfe52, 0xff01, 0xff0e, 0xff1f, 0xff61, 0x111cd, 0x112a9,
4166 0x16af5, 0x16b44, 0x16e98, 0x1bc9f, 0x1da88}),
4167 std::initializer_list<CharacterRange>({{0x061e, 0x061f}, {0x0700, 0x0702}, {0x083d, 0x083e}, {0x0964, 0x0965},
4168 {0x104a, 0x104b}, {0x1367, 0x1368}, {0x1735, 0x1736}, {0x1944, 0x1945},
4169 {0x1aa8, 0x1aab}, {0x1b5a, 0x1b5b}, {0x1b5e, 0x1b5f}, {0x1c3b, 0x1c3c},
4170 {0x1c7e, 0x1c7f}, {0x203c, 0x203d}, {0x2047, 0x2049}, {0xa60e, 0xa60f},
4171 {0xa876, 0xa877}, {0xa8ce, 0xa8cf}, {0xa9c8, 0xa9c9}, {0xaa5d, 0xaa5f},
4172 {0xaaf0, 0xaaf1}, {0xfe56, 0xfe57}, {0x10a56, 0x10a57}, {0x10f55, 0x10f59},
4173 {0x11047, 0x11048}, {0x110be, 0x110c1}, {0x11141, 0x11143}, {0x111c5, 0x111c6},
4174 {0x111de, 0x111df}, {0x11238, 0x11239}, {0x1123b, 0x1123c}, {0x1144b, 0x1144c},
4175 {0x115c2, 0x115c3}, {0x115c9, 0x115d7}, {0x11641, 0x11642}, {0x1173c, 0x1173e},
4176 {0x11a42, 0x11a43}, {0x11a9b, 0x11a9c}, {0x11c41, 0x11c42}, {0x11ef7, 0x11ef8},
4177 {0x16a6e, 0x16a6f}, {0x16b37, 0x16b38}}),
4178 CharacterClassWidths::HasBothBMPAndNonBMP);
4179 return characterClass;
4180}
4181
4182static std::unique_ptr<CharacterClass> createCharacterClass81()
4183{
4184 // Name = Variation_Selector, number of codePoints: 259
4185 auto characterClass = std::make_unique<CharacterClass>(
4186 std::initializer_list<UChar32>({}),
4187 std::initializer_list<CharacterRange>({}),
4188 std::initializer_list<UChar32>({}),
4189 std::initializer_list<CharacterRange>({{0x180b, 0x180d}, {0xfe00, 0xfe0f}, {0xe0100, 0xe01ef}}),
4190 CharacterClassWidths::HasBothBMPAndNonBMP);
4191 return characterClass;
4192}
4193
4194static std::unique_ptr<CharacterClass> createCharacterClass82()
4195{
4196 // Name = Pattern_White_Space, number of codePoints: 11
4197 auto characterClass = std::make_unique<CharacterClass>(
4198 std::initializer_list<UChar32>({0x20}),
4199 std::initializer_list<CharacterRange>({{0x09, 0x0d}}),
4200 std::initializer_list<UChar32>({0x0085}),
4201 std::initializer_list<CharacterRange>({{0x200e, 0x200f}, {0x2028, 0x2029}}),
4202 CharacterClassWidths::HasBMPChars);
4203 return characterClass;
4204}
4205
4206static std::unique_ptr<CharacterClass> createCharacterClass83()
4207{
4208 // Name = Pattern_Syntax, number of codePoints: 2760
4209 auto characterClass = std::make_unique<CharacterClass>(
4210 std::initializer_list<UChar32>({0x60}),
4211 std::initializer_list<CharacterRange>({{0x21, 0x2f}, {0x3a, 0x40}, {0x5b, 0x5e}, {0x7b, 0x7e}}),
4212 std::initializer_list<UChar32>({0x00a9, 0x00ae, 0x00b6, 0x00bb, 0x00bf, 0x00d7, 0x00f7, 0x3030}),
4213 std::initializer_list<CharacterRange>({{0x00a1, 0x00a7}, {0x00ab, 0x00ac}, {0x00b0, 0x00b1}, {0x2010, 0x2027},
4214 {0x2030, 0x203e}, {0x2041, 0x2053}, {0x2055, 0x205e}, {0x2190, 0x245f},
4215 {0x2500, 0x2775}, {0x2794, 0x2bff}, {0x2e00, 0x2e7f}, {0x3001, 0x3003},
4216 {0x3008, 0x3020}, {0xfd3e, 0xfd3f}, {0xfe45, 0xfe46}}),
4217 CharacterClassWidths::HasBMPChars);
4218 return characterClass;
4219}
4220
4221static std::unique_ptr<CharacterClass> createCharacterClass84()
4222{
4223 // Name = Regional_Indicator, number of codePoints: 26
4224 auto characterClass = std::make_unique<CharacterClass>(
4225 std::initializer_list<UChar32>({}),
4226 std::initializer_list<CharacterRange>({}),
4227 std::initializer_list<UChar32>({}),
4228 std::initializer_list<CharacterRange>({{0x1f1e6, 0x1f1ff}}),
4229 CharacterClassWidths::HasNonBMPChars);
4230 return characterClass;
4231}
4232
4233static std::unique_ptr<CharacterClass> createCharacterClass85()
4234{
4235 // Name = Emoji, number of codePoints: 1250
4236 auto characterClass = std::make_unique<CharacterClass>(
4237 std::initializer_list<UChar32>({0x23, 0x2a}),
4238 std::initializer_list<CharacterRange>({{0x30, 0x39}}),
4239 std::initializer_list<UChar32>({0x00a9, 0x00ae, 0x203c, 0x2049, 0x2122, 0x2139, 0x2328, 0x23cf,
4240 0x24c2, 0x25b6, 0x25c0, 0x260e, 0x2611, 0x2618, 0x261d, 0x2620,
4241 0x2626, 0x262a, 0x2640, 0x2642, 0x2663, 0x2668, 0x267b, 0x2699,
4242 0x26c8, 0x26d1, 0x26fd, 0x2702, 0x2705, 0x270f, 0x2712, 0x2714,
4243 0x2716, 0x271d, 0x2721, 0x2728, 0x2744, 0x2747, 0x274c, 0x274e,
4244 0x2757, 0x27a1, 0x27b0, 0x27bf, 0x2b50, 0x2b55, 0x3030, 0x303d,
4245 0x3297, 0x3299, 0x1f004, 0x1f0cf, 0x1f18e, 0x1f21a, 0x1f22f, 0x1f587,
4246 0x1f590, 0x1f5a8, 0x1f5bc, 0x1f5e1, 0x1f5e3, 0x1f5e8, 0x1f5ef, 0x1f5f3,
4247 0x1f6e9, 0x1f6f0, 0x1f97a}),
4248 std::initializer_list<CharacterRange>({{0x2194, 0x2199}, {0x21a9, 0x21aa}, {0x231a, 0x231b}, {0x23e9, 0x23f3},
4249 {0x23f8, 0x23fa}, {0x25aa, 0x25ab}, {0x25fb, 0x25fe}, {0x2600, 0x2604},
4250 {0x2614, 0x2615}, {0x2622, 0x2623}, {0x262e, 0x262f}, {0x2638, 0x263a},
4251 {0x2648, 0x2653}, {0x265f, 0x2660}, {0x2665, 0x2666}, {0x267e, 0x267f},
4252 {0x2692, 0x2697}, {0x269b, 0x269c}, {0x26a0, 0x26a1}, {0x26aa, 0x26ab},
4253 {0x26b0, 0x26b1}, {0x26bd, 0x26be}, {0x26c4, 0x26c5}, {0x26ce, 0x26cf},
4254 {0x26d3, 0x26d4}, {0x26e9, 0x26ea}, {0x26f0, 0x26f5}, {0x26f7, 0x26fa},
4255 {0x2708, 0x270d}, {0x2733, 0x2734}, {0x2753, 0x2755}, {0x2763, 0x2764},
4256 {0x2795, 0x2797}, {0x2934, 0x2935}, {0x2b05, 0x2b07}, {0x2b1b, 0x2b1c},
4257 {0x1f170, 0x1f171}, {0x1f17e, 0x1f17f}, {0x1f191, 0x1f19a}, {0x1f1e6, 0x1f1ff},
4258 {0x1f201, 0x1f202}, {0x1f232, 0x1f23a}, {0x1f250, 0x1f251}, {0x1f300, 0x1f321},
4259 {0x1f324, 0x1f393}, {0x1f396, 0x1f397}, {0x1f399, 0x1f39b}, {0x1f39e, 0x1f3f0},
4260 {0x1f3f3, 0x1f3f5}, {0x1f3f7, 0x1f4fd}, {0x1f4ff, 0x1f53d}, {0x1f549, 0x1f54e},
4261 {0x1f550, 0x1f567}, {0x1f56f, 0x1f570}, {0x1f573, 0x1f57a}, {0x1f58a, 0x1f58d},
4262 {0x1f595, 0x1f596}, {0x1f5a4, 0x1f5a5}, {0x1f5b1, 0x1f5b2}, {0x1f5c2, 0x1f5c4},
4263 {0x1f5d1, 0x1f5d3}, {0x1f5dc, 0x1f5de}, {0x1f5fa, 0x1f64f}, {0x1f680, 0x1f6c5},
4264 {0x1f6cb, 0x1f6d2}, {0x1f6e0, 0x1f6e5}, {0x1f6eb, 0x1f6ec}, {0x1f6f3, 0x1f6f9},
4265 {0x1f910, 0x1f93a}, {0x1f93c, 0x1f93e}, {0x1f940, 0x1f945}, {0x1f947, 0x1f970},
4266 {0x1f973, 0x1f976}, {0x1f97c, 0x1f9a2}, {0x1f9b0, 0x1f9b9}, {0x1f9c0, 0x1f9c2},
4267 {0x1f9d0, 0x1f9ff}}),
4268 CharacterClassWidths::HasBothBMPAndNonBMP);
4269 return characterClass;
4270}
4271
4272static std::unique_ptr<CharacterClass> createCharacterClass86()
4273{
4274 // Name = Emoji_Presentation, number of codePoints: 1032
4275 auto characterClass = std::make_unique<CharacterClass>(
4276 std::initializer_list<UChar32>({}),
4277 std::initializer_list<CharacterRange>({}),
4278 std::initializer_list<UChar32>({0x23f0, 0x23f3, 0x267f, 0x2693, 0x26a1, 0x26ce, 0x26d4, 0x26ea,
4279 0x26f5, 0x26fa, 0x26fd, 0x2705, 0x2728, 0x274c, 0x274e, 0x2757,
4280 0x27b0, 0x27bf, 0x2b50, 0x2b55, 0x1f004, 0x1f0cf, 0x1f18e, 0x1f201,
4281 0x1f21a, 0x1f22f, 0x1f3f4, 0x1f440, 0x1f57a, 0x1f5a4, 0x1f6cc, 0x1f97a}),
4282 std::initializer_list<CharacterRange>({{0x231a, 0x231b}, {0x23e9, 0x23ec}, {0x25fd, 0x25fe}, {0x2614, 0x2615},
4283 {0x2648, 0x2653}, {0x26aa, 0x26ab}, {0x26bd, 0x26be}, {0x26c4, 0x26c5},
4284 {0x26f2, 0x26f3}, {0x270a, 0x270b}, {0x2753, 0x2755}, {0x2795, 0x2797},
4285 {0x2b1b, 0x2b1c}, {0x1f191, 0x1f19a}, {0x1f1e6, 0x1f1ff}, {0x1f232, 0x1f236},
4286 {0x1f238, 0x1f23a}, {0x1f250, 0x1f251}, {0x1f300, 0x1f320}, {0x1f32d, 0x1f335},
4287 {0x1f337, 0x1f37c}, {0x1f37e, 0x1f393}, {0x1f3a0, 0x1f3ca}, {0x1f3cf, 0x1f3d3},
4288 {0x1f3e0, 0x1f3f0}, {0x1f3f8, 0x1f43e}, {0x1f442, 0x1f4fc}, {0x1f4ff, 0x1f53d},
4289 {0x1f54b, 0x1f54e}, {0x1f550, 0x1f567}, {0x1f595, 0x1f596}, {0x1f5fb, 0x1f64f},
4290 {0x1f680, 0x1f6c5}, {0x1f6d0, 0x1f6d2}, {0x1f6eb, 0x1f6ec}, {0x1f6f4, 0x1f6f9},
4291 {0x1f910, 0x1f93a}, {0x1f93c, 0x1f93e}, {0x1f940, 0x1f945}, {0x1f947, 0x1f970},
4292 {0x1f973, 0x1f976}, {0x1f97c, 0x1f9a2}, {0x1f9b0, 0x1f9b9}, {0x1f9c0, 0x1f9c2},
4293 {0x1f9d0, 0x1f9ff}}),
4294 CharacterClassWidths::HasBothBMPAndNonBMP);
4295 return characterClass;
4296}
4297
4298static std::unique_ptr<CharacterClass> createCharacterClass87()
4299{
4300 // Name = Emoji_Modifier, number of codePoints: 5
4301 auto characterClass = std::make_unique<CharacterClass>(
4302 std::initializer_list<UChar32>({}),
4303 std::initializer_list<CharacterRange>({}),
4304 std::initializer_list<UChar32>({}),
4305 std::initializer_list<CharacterRange>({{0x1f3fb, 0x1f3ff}}),
4306 CharacterClassWidths::HasNonBMPChars);
4307 return characterClass;
4308}
4309
4310static std::unique_ptr<CharacterClass> createCharacterClass88()
4311{
4312 // Name = Emoji_Modifier_Base, number of codePoints: 106
4313 auto characterClass = std::make_unique<CharacterClass>(
4314 std::initializer_list<UChar32>({}),
4315 std::initializer_list<CharacterRange>({}),
4316 std::initializer_list<UChar32>({0x261d, 0x26f9, 0x1f385, 0x1f3c7, 0x1f46e, 0x1f47c, 0x1f4aa, 0x1f57a,
4317 0x1f590, 0x1f6a3, 0x1f6c0, 0x1f6cc, 0x1f926}),
4318 std::initializer_list<CharacterRange>({{0x270a, 0x270d}, {0x1f3c2, 0x1f3c4}, {0x1f3ca, 0x1f3cc}, {0x1f442, 0x1f443},
4319 {0x1f446, 0x1f450}, {0x1f466, 0x1f469}, {0x1f470, 0x1f478}, {0x1f481, 0x1f483},
4320 {0x1f485, 0x1f487}, {0x1f574, 0x1f575}, {0x1f595, 0x1f596}, {0x1f645, 0x1f647},
4321 {0x1f64b, 0x1f64f}, {0x1f6b4, 0x1f6b6}, {0x1f918, 0x1f91c}, {0x1f91e, 0x1f91f},
4322 {0x1f930, 0x1f939}, {0x1f93d, 0x1f93e}, {0x1f9b5, 0x1f9b6}, {0x1f9b8, 0x1f9b9},
4323 {0x1f9d1, 0x1f9dd}}),
4324 CharacterClassWidths::HasBothBMPAndNonBMP);
4325 return characterClass;
4326}
4327
4328static std::unique_ptr<CharacterClass> createCharacterClass89()
4329{
4330 // Name = Emoji_Component, number of codePoints: 146
4331 auto characterClass = std::make_unique<CharacterClass>(
4332 std::initializer_list<UChar32>({0x23, 0x2a}),
4333 std::initializer_list<CharacterRange>({{0x30, 0x39}}),
4334 std::initializer_list<UChar32>({0x200d, 0x20e3, 0xfe0f}),
4335 std::initializer_list<CharacterRange>({{0x1f1e6, 0x1f1ff}, {0x1f3fb, 0x1f3ff}, {0x1f9b0, 0x1f9b3}, {0xe0020, 0xe007f}}),
4336 CharacterClassWidths::HasBothBMPAndNonBMP);
4337 return characterClass;
4338}
4339
4340static std::unique_ptr<CharacterClass> createCharacterClass90()
4341{
4342 // Name = Extended_Pictographic, number of codePoints: 3793
4343 auto characterClass = std::make_unique<CharacterClass>(
4344 std::initializer_list<UChar32>({}),
4345 std::initializer_list<CharacterRange>({}),
4346 std::initializer_list<UChar32>({0x00a9, 0x00ae, 0x203c, 0x2049, 0x2122, 0x2139, 0x2328, 0x2388,
4347 0x23cf, 0x24c2, 0x25b6, 0x25c0, 0x2714, 0x2716, 0x271d, 0x2721,
4348 0x2728, 0x2744, 0x2747, 0x274c, 0x274e, 0x2757, 0x27a1, 0x27b0,
4349 0x27bf, 0x2b50, 0x2b55, 0x3030, 0x303d, 0x3297, 0x3299, 0x1f12f,
4350 0x1f18e, 0x1f21a, 0x1f22f}),
4351 std::initializer_list<CharacterRange>({{0x2194, 0x2199}, {0x21a9, 0x21aa}, {0x231a, 0x231b}, {0x23e9, 0x23f3},
4352 {0x23f8, 0x23fa}, {0x25aa, 0x25ab}, {0x25fb, 0x25fe}, {0x2600, 0x2605},
4353 {0x2607, 0x2612}, {0x2614, 0x2685}, {0x2690, 0x2705}, {0x2708, 0x2712},
4354 {0x2733, 0x2734}, {0x2753, 0x2755}, {0x2763, 0x2767}, {0x2795, 0x2797},
4355 {0x2934, 0x2935}, {0x2b05, 0x2b07}, {0x2b1b, 0x2b1c}, {0x1f000, 0x1f0ff},
4356 {0x1f10d, 0x1f10f}, {0x1f16c, 0x1f171}, {0x1f17e, 0x1f17f}, {0x1f191, 0x1f19a},
4357 {0x1f1ad, 0x1f1e5}, {0x1f201, 0x1f20f}, {0x1f232, 0x1f23a}, {0x1f23c, 0x1f23f},
4358 {0x1f249, 0x1f3fa}, {0x1f400, 0x1f53d}, {0x1f546, 0x1f64f}, {0x1f680, 0x1f6ff},
4359 {0x1f774, 0x1f77f}, {0x1f7d5, 0x1f7ff}, {0x1f80c, 0x1f80f}, {0x1f848, 0x1f84f},
4360 {0x1f85a, 0x1f85f}, {0x1f888, 0x1f88f}, {0x1f8ae, 0x1f8ff}, {0x1f90c, 0x1f93a},
4361 {0x1f93c, 0x1f945}, {0x1f947, 0x1fffd}}),
4362 CharacterClassWidths::HasBothBMPAndNonBMP);
4363 return characterClass;
4364}
4365
4366static std::unique_ptr<CharacterClass> createCharacterClass91()
4367{
4368 // Name = Unknown, number of codePoints: 976673
4369 auto characterClass = std::make_unique<CharacterClass>(
4370 std::initializer_list<UChar32>({}),
4371 std::initializer_list<CharacterRange>({}),
4372 std::initializer_list<UChar32>({0x038b, 0x038d, 0x03a2, 0x0530, 0x0590, 0x061d, 0x070e, 0x083f,
4373 0x085f, 0x08b5, 0x0984, 0x09a9, 0x09b1, 0x09de, 0x0a04, 0x0a29,
4374 0x0a31, 0x0a34, 0x0a37, 0x0a3d, 0x0a5d, 0x0a84, 0x0a8e, 0x0a92,
4375 0x0aa9, 0x0ab1, 0x0ab4, 0x0ac6, 0x0aca, 0x0b00, 0x0b04, 0x0b29,
4376 0x0b31, 0x0b34, 0x0b5e, 0x0b84, 0x0b91, 0x0b9b, 0x0b9d, 0x0bc9,
4377 0x0c0d, 0x0c11, 0x0c29, 0x0c45, 0x0c49, 0x0c57, 0x0c8d, 0x0c91,
4378 0x0ca9, 0x0cb4, 0x0cc5, 0x0cc9, 0x0cdf, 0x0cf0, 0x0d04, 0x0d0d,
4379 0x0d11, 0x0d45, 0x0d49, 0x0d84, 0x0db2, 0x0dbc, 0x0dd5, 0x0dd7,
4380 0x0e83, 0x0e89, 0x0e98, 0x0ea0, 0x0ea4, 0x0ea6, 0x0eac, 0x0eba,
4381 0x0ec5, 0x0ec7, 0x0f48, 0x0f98, 0x0fbd, 0x0fcd, 0x10c6, 0x1249,
4382 0x1257, 0x1259, 0x1289, 0x12b1, 0x12bf, 0x12c1, 0x12d7, 0x1311,
4383 0x170d, 0x176d, 0x1771, 0x180f, 0x191f, 0x1a5f, 0x1dfa, 0x1f58,
4384 0x1f5a, 0x1f5c, 0x1f5e, 0x1fb5, 0x1fc5, 0x1fdc, 0x1ff5, 0x1fff,
4385 0x2065, 0x208f, 0x2bc9, 0x2bff, 0x2c2f, 0x2c5f, 0x2d26, 0x2da7,
4386 0x2daf, 0x2db7, 0x2dbf, 0x2dc7, 0x2dcf, 0x2dd7, 0x2ddf, 0x2e9a,
4387 0x3040, 0x3130, 0x318f, 0x321f, 0x32ff, 0xa9ce, 0xa9ff, 0xab27,
4388 0xab2f, 0xfb37, 0xfb3d, 0xfb3f, 0xfb42, 0xfb45, 0xfe53, 0xfe67,
4389 0xfe75, 0xff00, 0xffe7, 0x1000c, 0x10027, 0x1003b, 0x1003e, 0x1018f,
4390 0x1039e, 0x10809, 0x10836, 0x10856, 0x108f3, 0x10a04, 0x10a14, 0x10a18,
4391 0x11135, 0x111e0, 0x11212, 0x11287, 0x11289, 0x1128e, 0x1129e, 0x11304,
4392 0x11329, 0x11331, 0x11334, 0x1133a, 0x1145a, 0x1145c, 0x11c09, 0x11c37,
4393 0x11ca8, 0x11d07, 0x11d0a, 0x11d3b, 0x11d3e, 0x11d66, 0x11d69, 0x11d8f,
4394 0x11d92, 0x1246f, 0x16a5f, 0x16b5a, 0x16b62, 0x1d455, 0x1d49d, 0x1d4ad,
4395 0x1d4ba, 0x1d4bc, 0x1d4c4, 0x1d506, 0x1d515, 0x1d51d, 0x1d53a, 0x1d53f,
4396 0x1d545, 0x1d551, 0x1daa0, 0x1e007, 0x1e022, 0x1e025, 0x1ee04, 0x1ee20,
4397 0x1ee23, 0x1ee28, 0x1ee33, 0x1ee38, 0x1ee3a, 0x1ee48, 0x1ee4a, 0x1ee4c,
4398 0x1ee50, 0x1ee53, 0x1ee58, 0x1ee5a, 0x1ee5c, 0x1ee5e, 0x1ee60, 0x1ee63,
4399 0x1ee6b, 0x1ee73, 0x1ee78, 0x1ee7d, 0x1ee7f, 0x1ee8a, 0x1eea4, 0x1eeaa,
4400 0x1f0c0, 0x1f0d0, 0x1f93f, 0x1f97b}),
4401 std::initializer_list<CharacterRange>({{0x0378, 0x0379}, {0x0380, 0x0383}, {0x0557, 0x0558}, {0x058b, 0x058c},
4402 {0x05c8, 0x05cf}, {0x05eb, 0x05ee}, {0x05f5, 0x05ff}, {0x074b, 0x074c},
4403 {0x07b2, 0x07bf}, {0x07fb, 0x07fc}, {0x082e, 0x082f}, {0x085c, 0x085d},
4404 {0x086b, 0x089f}, {0x08be, 0x08d2}, {0x098d, 0x098e}, {0x0991, 0x0992},
4405 {0x09b3, 0x09b5}, {0x09ba, 0x09bb}, {0x09c5, 0x09c6}, {0x09c9, 0x09ca},
4406 {0x09cf, 0x09d6}, {0x09d8, 0x09db}, {0x09e4, 0x09e5}, {0x09ff, 0x0a00},
4407 {0x0a0b, 0x0a0e}, {0x0a11, 0x0a12}, {0x0a3a, 0x0a3b}, {0x0a43, 0x0a46},
4408 {0x0a49, 0x0a4a}, {0x0a4e, 0x0a50}, {0x0a52, 0x0a58}, {0x0a5f, 0x0a65},
4409 {0x0a77, 0x0a80}, {0x0aba, 0x0abb}, {0x0ace, 0x0acf}, {0x0ad1, 0x0adf},
4410 {0x0ae4, 0x0ae5}, {0x0af2, 0x0af8}, {0x0b0d, 0x0b0e}, {0x0b11, 0x0b12},
4411 {0x0b3a, 0x0b3b}, {0x0b45, 0x0b46}, {0x0b49, 0x0b4a}, {0x0b4e, 0x0b55},
4412 {0x0b58, 0x0b5b}, {0x0b64, 0x0b65}, {0x0b78, 0x0b81}, {0x0b8b, 0x0b8d},
4413 {0x0b96, 0x0b98}, {0x0ba0, 0x0ba2}, {0x0ba5, 0x0ba7}, {0x0bab, 0x0bad},
4414 {0x0bba, 0x0bbd}, {0x0bc3, 0x0bc5}, {0x0bce, 0x0bcf}, {0x0bd1, 0x0bd6},
4415 {0x0bd8, 0x0be5}, {0x0bfb, 0x0bff}, {0x0c3a, 0x0c3c}, {0x0c4e, 0x0c54},
4416 {0x0c5b, 0x0c5f}, {0x0c64, 0x0c65}, {0x0c70, 0x0c77}, {0x0cba, 0x0cbb},
4417 {0x0cce, 0x0cd4}, {0x0cd7, 0x0cdd}, {0x0ce4, 0x0ce5}, {0x0cf3, 0x0cff},
4418 {0x0d50, 0x0d53}, {0x0d64, 0x0d65}, {0x0d80, 0x0d81}, {0x0d97, 0x0d99},
4419 {0x0dbe, 0x0dbf}, {0x0dc7, 0x0dc9}, {0x0dcb, 0x0dce}, {0x0de0, 0x0de5},
4420 {0x0df0, 0x0df1}, {0x0df5, 0x0e00}, {0x0e3b, 0x0e3e}, {0x0e5c, 0x0e80},
4421 {0x0e85, 0x0e86}, {0x0e8b, 0x0e8c}, {0x0e8e, 0x0e93}, {0x0ea8, 0x0ea9},
4422 {0x0ebe, 0x0ebf}, {0x0ece, 0x0ecf}, {0x0eda, 0x0edb}, {0x0ee0, 0x0eff},
4423 {0x0f6d, 0x0f70}, {0x0fdb, 0x0fff}, {0x10c8, 0x10cc}, {0x10ce, 0x10cf},
4424 {0x124e, 0x124f}, {0x125e, 0x125f}, {0x128e, 0x128f}, {0x12b6, 0x12b7},
4425 {0x12c6, 0x12c7}, {0x1316, 0x1317}, {0x135b, 0x135c}, {0x137d, 0x137f},
4426 {0x139a, 0x139f}, {0x13f6, 0x13f7}, {0x13fe, 0x13ff}, {0x169d, 0x169f},
4427 {0x16f9, 0x16ff}, {0x1715, 0x171f}, {0x1737, 0x173f}, {0x1754, 0x175f},
4428 {0x1774, 0x177f}, {0x17de, 0x17df}, {0x17ea, 0x17ef}, {0x17fa, 0x17ff},
4429 {0x181a, 0x181f}, {0x1879, 0x187f}, {0x18ab, 0x18af}, {0x18f6, 0x18ff},
4430 {0x192c, 0x192f}, {0x193c, 0x193f}, {0x1941, 0x1943}, {0x196e, 0x196f},
4431 {0x1975, 0x197f}, {0x19ac, 0x19af}, {0x19ca, 0x19cf}, {0x19db, 0x19dd},
4432 {0x1a1c, 0x1a1d}, {0x1a7d, 0x1a7e}, {0x1a8a, 0x1a8f}, {0x1a9a, 0x1a9f},
4433 {0x1aae, 0x1aaf}, {0x1abf, 0x1aff}, {0x1b4c, 0x1b4f}, {0x1b7d, 0x1b7f},
4434 {0x1bf4, 0x1bfb}, {0x1c38, 0x1c3a}, {0x1c4a, 0x1c4c}, {0x1c89, 0x1c8f},
4435 {0x1cbb, 0x1cbc}, {0x1cc8, 0x1ccf}, {0x1cfa, 0x1cff}, {0x1f16, 0x1f17},
4436 {0x1f1e, 0x1f1f}, {0x1f46, 0x1f47}, {0x1f4e, 0x1f4f}, {0x1f7e, 0x1f7f},
4437 {0x1fd4, 0x1fd5}, {0x1ff0, 0x1ff1}, {0x2072, 0x2073}, {0x209d, 0x209f},
4438 {0x20c0, 0x20cf}, {0x20f1, 0x20ff}, {0x218c, 0x218f}, {0x2427, 0x243f},
4439 {0x244b, 0x245f}, {0x2b74, 0x2b75}, {0x2b96, 0x2b97}, {0x2cf4, 0x2cf8},
4440 {0x2d28, 0x2d2c}, {0x2d2e, 0x2d2f}, {0x2d68, 0x2d6e}, {0x2d71, 0x2d7e},
4441 {0x2d97, 0x2d9f}, {0x2e4f, 0x2e7f}, {0x2ef4, 0x2eff}, {0x2fd6, 0x2fef},
4442 {0x2ffc, 0x2fff}, {0x3097, 0x3098}, {0x3100, 0x3104}, {0x31bb, 0x31bf},
4443 {0x31e4, 0x31ef}, {0x4db6, 0x4dbf}, {0x9ff0, 0x9fff}, {0xa48d, 0xa48f},
4444 {0xa4c7, 0xa4cf}, {0xa62c, 0xa63f}, {0xa6f8, 0xa6ff}, {0xa7ba, 0xa7f6},
4445 {0xa82c, 0xa82f}, {0xa83a, 0xa83f}, {0xa878, 0xa87f}, {0xa8c6, 0xa8cd},
4446 {0xa8da, 0xa8df}, {0xa954, 0xa95e}, {0xa97d, 0xa97f}, {0xa9da, 0xa9dd},
4447 {0xaa37, 0xaa3f}, {0xaa4e, 0xaa4f}, {0xaa5a, 0xaa5b}, {0xaac3, 0xaada},
4448 {0xaaf7, 0xab00}, {0xab07, 0xab08}, {0xab0f, 0xab10}, {0xab17, 0xab1f},
4449 {0xab66, 0xab6f}, {0xabee, 0xabef}, {0xabfa, 0xabff}, {0xd7a4, 0xd7af},
4450 {0xd7c7, 0xd7ca}, {0xd7fc, 0xf8ff}, {0xfa6e, 0xfa6f}, {0xfada, 0xfaff},
4451 {0xfb07, 0xfb12}, {0xfb18, 0xfb1c}, {0xfbc2, 0xfbd2}, {0xfd40, 0xfd4f},
4452 {0xfd90, 0xfd91}, {0xfdc8, 0xfdef}, {0xfdfe, 0xfdff}, {0xfe1a, 0xfe1f},
4453 {0xfe6c, 0xfe6f}, {0xfefd, 0xfefe}, {0xffbf, 0xffc1}, {0xffc8, 0xffc9},
4454 {0xffd0, 0xffd1}, {0xffd8, 0xffd9}, {0xffdd, 0xffdf}, {0xffef, 0xfff8},
4455 {0xfffe, 0xffff}, {0x1004e, 0x1004f}, {0x1005e, 0x1007f}, {0x100fb, 0x100ff},
4456 {0x10103, 0x10106}, {0x10134, 0x10136}, {0x1019c, 0x1019f}, {0x101a1, 0x101cf},
4457 {0x101fe, 0x1027f}, {0x1029d, 0x1029f}, {0x102d1, 0x102df}, {0x102fc, 0x102ff},
4458 {0x10324, 0x1032c}, {0x1034b, 0x1034f}, {0x1037b, 0x1037f}, {0x103c4, 0x103c7},
4459 {0x103d6, 0x103ff}, {0x1049e, 0x1049f}, {0x104aa, 0x104af}, {0x104d4, 0x104d7},
4460 {0x104fc, 0x104ff}, {0x10528, 0x1052f}, {0x10564, 0x1056e}, {0x10570, 0x105ff},
4461 {0x10737, 0x1073f}, {0x10756, 0x1075f}, {0x10768, 0x107ff}, {0x10806, 0x10807},
4462 {0x10839, 0x1083b}, {0x1083d, 0x1083e}, {0x1089f, 0x108a6}, {0x108b0, 0x108df},
4463 {0x108f6, 0x108fa}, {0x1091c, 0x1091e}, {0x1093a, 0x1093e}, {0x10940, 0x1097f},
4464 {0x109b8, 0x109bb}, {0x109d0, 0x109d1}, {0x10a07, 0x10a0b}, {0x10a36, 0x10a37},
4465 {0x10a3b, 0x10a3e}, {0x10a49, 0x10a4f}, {0x10a59, 0x10a5f}, {0x10aa0, 0x10abf},
4466 {0x10ae7, 0x10aea}, {0x10af7, 0x10aff}, {0x10b36, 0x10b38}, {0x10b56, 0x10b57},
4467 {0x10b73, 0x10b77}, {0x10b92, 0x10b98}, {0x10b9d, 0x10ba8}, {0x10bb0, 0x10bff},
4468 {0x10c49, 0x10c7f}, {0x10cb3, 0x10cbf}, {0x10cf3, 0x10cf9}, {0x10d28, 0x10d2f},
4469 {0x10d3a, 0x10e5f}, {0x10e7f, 0x10eff}, {0x10f28, 0x10f2f}, {0x10f5a, 0x10fff},
4470 {0x1104e, 0x11051}, {0x11070, 0x1107e}, {0x110c2, 0x110cc}, {0x110ce, 0x110cf},
4471 {0x110e9, 0x110ef}, {0x110fa, 0x110ff}, {0x11147, 0x1114f}, {0x11177, 0x1117f},
4472 {0x111ce, 0x111cf}, {0x111f5, 0x111ff}, {0x1123f, 0x1127f}, {0x112aa, 0x112af},
4473 {0x112eb, 0x112ef}, {0x112fa, 0x112ff}, {0x1130d, 0x1130e}, {0x11311, 0x11312},
4474 {0x11345, 0x11346}, {0x11349, 0x1134a}, {0x1134e, 0x1134f}, {0x11351, 0x11356},
4475 {0x11358, 0x1135c}, {0x11364, 0x11365}, {0x1136d, 0x1136f}, {0x11375, 0x113ff},
4476 {0x1145f, 0x1147f}, {0x114c8, 0x114cf}, {0x114da, 0x1157f}, {0x115b6, 0x115b7},
4477 {0x115de, 0x115ff}, {0x11645, 0x1164f}, {0x1165a, 0x1165f}, {0x1166d, 0x1167f},
4478 {0x116b8, 0x116bf}, {0x116ca, 0x116ff}, {0x1171b, 0x1171c}, {0x1172c, 0x1172f},
4479 {0x11740, 0x117ff}, {0x1183c, 0x1189f}, {0x118f3, 0x118fe}, {0x11900, 0x119ff},
4480 {0x11a48, 0x11a4f}, {0x11a84, 0x11a85}, {0x11aa3, 0x11abf}, {0x11af9, 0x11bff},
4481 {0x11c46, 0x11c4f}, {0x11c6d, 0x11c6f}, {0x11c90, 0x11c91}, {0x11cb7, 0x11cff},
4482 {0x11d37, 0x11d39}, {0x11d48, 0x11d4f}, {0x11d5a, 0x11d5f}, {0x11d99, 0x11d9f},
4483 {0x11daa, 0x11edf}, {0x11ef9, 0x11fff}, {0x1239a, 0x123ff}, {0x12475, 0x1247f},
4484 {0x12544, 0x12fff}, {0x1342f, 0x143ff}, {0x14647, 0x167ff}, {0x16a39, 0x16a3f},
4485 {0x16a6a, 0x16a6d}, {0x16a70, 0x16acf}, {0x16aee, 0x16aef}, {0x16af6, 0x16aff},
4486 {0x16b46, 0x16b4f}, {0x16b78, 0x16b7c}, {0x16b90, 0x16e3f}, {0x16e9b, 0x16eff},
4487 {0x16f45, 0x16f4f}, {0x16f7f, 0x16f8e}, {0x16fa0, 0x16fdf}, {0x16fe2, 0x16fff},
4488 {0x187f2, 0x187ff}, {0x18af3, 0x1afff}, {0x1b11f, 0x1b16f}, {0x1b2fc, 0x1bbff},
4489 {0x1bc6b, 0x1bc6f}, {0x1bc7d, 0x1bc7f}, {0x1bc89, 0x1bc8f}, {0x1bc9a, 0x1bc9b},
4490 {0x1bca4, 0x1cfff}, {0x1d0f6, 0x1d0ff}, {0x1d127, 0x1d128}, {0x1d1e9, 0x1d1ff},
4491 {0x1d246, 0x1d2df}, {0x1d2f4, 0x1d2ff}, {0x1d357, 0x1d35f}, {0x1d379, 0x1d3ff},
4492 {0x1d4a0, 0x1d4a1}, {0x1d4a3, 0x1d4a4}, {0x1d4a7, 0x1d4a8}, {0x1d50b, 0x1d50c},
4493 {0x1d547, 0x1d549}, {0x1d6a6, 0x1d6a7}, {0x1d7cc, 0x1d7cd}, {0x1da8c, 0x1da9a},
4494 {0x1dab0, 0x1dfff}, {0x1e019, 0x1e01a}, {0x1e02b, 0x1e7ff}, {0x1e8c5, 0x1e8c6},
4495 {0x1e8d7, 0x1e8ff}, {0x1e94b, 0x1e94f}, {0x1e95a, 0x1e95d}, {0x1e960, 0x1ec70},
4496 {0x1ecb5, 0x1edff}, {0x1ee25, 0x1ee26}, {0x1ee3c, 0x1ee41}, {0x1ee43, 0x1ee46},
4497 {0x1ee55, 0x1ee56}, {0x1ee65, 0x1ee66}, {0x1ee9c, 0x1eea0}, {0x1eebc, 0x1eeef},
4498 {0x1eef2, 0x1efff}, {0x1f02c, 0x1f02f}, {0x1f094, 0x1f09f}, {0x1f0af, 0x1f0b0},
4499 {0x1f0f6, 0x1f0ff}, {0x1f10d, 0x1f10f}, {0x1f16c, 0x1f16f}, {0x1f1ad, 0x1f1e5},
4500 {0x1f203, 0x1f20f}, {0x1f23c, 0x1f23f}, {0x1f249, 0x1f24f}, {0x1f252, 0x1f25f},
4501 {0x1f266, 0x1f2ff}, {0x1f6d5, 0x1f6df}, {0x1f6ed, 0x1f6ef}, {0x1f6fa, 0x1f6ff},
4502 {0x1f774, 0x1f77f}, {0x1f7d9, 0x1f7ff}, {0x1f80c, 0x1f80f}, {0x1f848, 0x1f84f},
4503 {0x1f85a, 0x1f85f}, {0x1f888, 0x1f88f}, {0x1f8ae, 0x1f8ff}, {0x1f90c, 0x1f90f},
4504 {0x1f971, 0x1f972}, {0x1f977, 0x1f979}, {0x1f9a3, 0x1f9af}, {0x1f9ba, 0x1f9bf},
4505 {0x1f9c3, 0x1f9cf}, {0x1fa00, 0x1fa5f}, {0x1fa6e, 0x1ffff}, {0x2a6d7, 0x2a6ff},
4506 {0x2b735, 0x2b73f}, {0x2b81e, 0x2b81f}, {0x2cea2, 0x2ceaf}, {0x2ebe1, 0x2f7ff},
4507 {0x2fa1e, 0xe0000}, {0xe0002, 0xe001f}, {0xe0080, 0xe00ff}, {0xe01f0, 0x10ffff}}),
4508 CharacterClassWidths::HasBothBMPAndNonBMP);
4509 return characterClass;
4510}
4511
4512static std::unique_ptr<CharacterClass> createCharacterClass92()
4513{
4514 // Name = Common, number of codePoints: 7591
4515 auto characterClass = std::make_unique<CharacterClass>(
4516 std::initializer_list<UChar32>({}),
4517 std::initializer_list<CharacterRange>({{0x00, 0x40}, {0x5b, 0x60}, {0x7b, 0x7f}}),
4518 std::initializer_list<UChar32>({0x00d7, 0x00f7, 0x0374, 0x037e, 0x0385, 0x0387, 0x0589, 0x0605,
4519 0x060c, 0x061b, 0x061f, 0x0640, 0x06dd, 0x08e2, 0x0e3f, 0x10fb,
4520 0x1805, 0x1cd3, 0x1ce1, 0x3006, 0x30a0, 0xa92e, 0xa9cf, 0xab5b,
4521 0xfeff, 0xff70, 0x1d4a2, 0x1d4bb, 0x1d546, 0x1f97a, 0xe0001}),
4522 std::initializer_list<CharacterRange>({{0x0080, 0x00a9}, {0x00ab, 0x00b9}, {0x00bb, 0x00bf}, {0x02b9, 0x02df},
4523 {0x02e5, 0x02e9}, {0x02ec, 0x02ff}, {0x0964, 0x0965}, {0x0fd5, 0x0fd8},
4524 {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x1802, 0x1803}, {0x1ce9, 0x1cec},
4525 {0x1cee, 0x1cf3}, {0x1cf5, 0x1cf7}, {0x2000, 0x200b}, {0x200e, 0x2064},
4526 {0x2066, 0x2070}, {0x2074, 0x207e}, {0x2080, 0x208e}, {0x20a0, 0x20bf},
4527 {0x2100, 0x2125}, {0x2127, 0x2129}, {0x212c, 0x2131}, {0x2133, 0x214d},
4528 {0x214f, 0x215f}, {0x2189, 0x218b}, {0x2190, 0x2426}, {0x2440, 0x244a},
4529 {0x2460, 0x27ff}, {0x2900, 0x2b73}, {0x2b76, 0x2b95}, {0x2b98, 0x2bc8},
4530 {0x2bca, 0x2bfe}, {0x2e00, 0x2e4e}, {0x2ff0, 0x2ffb}, {0x3000, 0x3004},
4531 {0x3008, 0x3020}, {0x3030, 0x3037}, {0x303c, 0x303f}, {0x309b, 0x309c},
4532 {0x30fb, 0x30fc}, {0x3190, 0x319f}, {0x31c0, 0x31e3}, {0x3220, 0x325f},
4533 {0x327f, 0x32cf}, {0x3358, 0x33ff}, {0x4dc0, 0x4dff}, {0xa700, 0xa721},
4534 {0xa788, 0xa78a}, {0xa830, 0xa839}, {0xfd3e, 0xfd3f}, {0xfe10, 0xfe19},
4535 {0xfe30, 0xfe52}, {0xfe54, 0xfe66}, {0xfe68, 0xfe6b}, {0xff01, 0xff20},
4536 {0xff3b, 0xff40}, {0xff5b, 0xff65}, {0xff9e, 0xff9f}, {0xffe0, 0xffe6},
4537 {0xffe8, 0xffee}, {0xfff9, 0xfffd}, {0x10100, 0x10102}, {0x10107, 0x10133},
4538 {0x10137, 0x1013f}, {0x10190, 0x1019b}, {0x101d0, 0x101fc}, {0x102e1, 0x102fb},
4539 {0x1bca0, 0x1bca3}, {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d129, 0x1d166},
4540 {0x1d16a, 0x1d17a}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, {0x1d1ae, 0x1d1e8},
4541 {0x1d2e0, 0x1d2f3}, {0x1d300, 0x1d356}, {0x1d360, 0x1d378}, {0x1d400, 0x1d454},
4542 {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac},
4543 {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a},
4544 {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e},
4545 {0x1d540, 0x1d544}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d7cb},
4546 {0x1d7ce, 0x1d7ff}, {0x1ec71, 0x1ecb4}, {0x1f000, 0x1f02b}, {0x1f030, 0x1f093},
4547 {0x1f0a0, 0x1f0ae}, {0x1f0b1, 0x1f0bf}, {0x1f0c1, 0x1f0cf}, {0x1f0d1, 0x1f0f5},
4548 {0x1f100, 0x1f10c}, {0x1f110, 0x1f16b}, {0x1f170, 0x1f1ac}, {0x1f1e6, 0x1f1ff},
4549 {0x1f201, 0x1f202}, {0x1f210, 0x1f23b}, {0x1f240, 0x1f248}, {0x1f250, 0x1f251},
4550 {0x1f260, 0x1f265}, {0x1f300, 0x1f6d4}, {0x1f6e0, 0x1f6ec}, {0x1f6f0, 0x1f6f9},
4551 {0x1f700, 0x1f773}, {0x1f780, 0x1f7d8}, {0x1f800, 0x1f80b}, {0x1f810, 0x1f847},
4552 {0x1f850, 0x1f859}, {0x1f860, 0x1f887}, {0x1f890, 0x1f8ad}, {0x1f900, 0x1f90b},
4553 {0x1f910, 0x1f93e}, {0x1f940, 0x1f970}, {0x1f973, 0x1f976}, {0x1f97c, 0x1f9a2},
4554 {0x1f9b0, 0x1f9b9}, {0x1f9c0, 0x1f9c2}, {0x1f9d0, 0x1f9ff}, {0x1fa60, 0x1fa6d},
4555 {0xe0020, 0xe007f}}),
4556 CharacterClassWidths::HasBothBMPAndNonBMP);
4557 return characterClass;
4558}
4559
4560static std::unique_ptr<CharacterClass> createCharacterClass93()
4561{
4562 // Name = Latin, number of codePoints: 1353
4563 auto characterClass = std::make_unique<CharacterClass>(
4564 std::initializer_list<UChar32>({}),
4565 std::initializer_list<CharacterRange>({{0x41, 0x5a}, {0x61, 0x7a}}),
4566 std::initializer_list<UChar32>({0x00aa, 0x00ba, 0x2071, 0x207f, 0x2132, 0x214e}),
4567 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x02b8}, {0x02e0, 0x02e4},
4568 {0x1d00, 0x1d25}, {0x1d2c, 0x1d5c}, {0x1d62, 0x1d65}, {0x1d6b, 0x1d77},
4569 {0x1d79, 0x1dbe}, {0x1e00, 0x1eff}, {0x2090, 0x209c}, {0x212a, 0x212b},
4570 {0x2160, 0x2188}, {0x2c60, 0x2c7f}, {0xa722, 0xa787}, {0xa78b, 0xa7b9},
4571 {0xa7f7, 0xa7ff}, {0xab30, 0xab5a}, {0xab5c, 0xab64}, {0xfb00, 0xfb06},
4572 {0xff21, 0xff3a}, {0xff41, 0xff5a}}),
4573 CharacterClassWidths::HasBMPChars);
4574 return characterClass;
4575}
4576
4577static std::unique_ptr<CharacterClass> createCharacterClass94()
4578{
4579 // Name = Greek, number of codePoints: 518
4580 auto characterClass = std::make_unique<CharacterClass>(
4581 std::initializer_list<UChar32>({}),
4582 std::initializer_list<CharacterRange>({}),
4583 std::initializer_list<UChar32>({0x037f, 0x0384, 0x0386, 0x038c, 0x1dbf, 0x1f59, 0x1f5b, 0x1f5d,
4584 0x2126, 0xab65, 0x101a0}),
4585 std::initializer_list<CharacterRange>({{0x0370, 0x0373}, {0x0375, 0x0377}, {0x037a, 0x037d}, {0x0388, 0x038a},
4586 {0x038e, 0x03a1}, {0x03a3, 0x03e1}, {0x03f0, 0x03ff}, {0x1d26, 0x1d2a},
4587 {0x1d5d, 0x1d61}, {0x1d66, 0x1d6a}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d},
4588 {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d},
4589 {0x1f80, 0x1fb4}, {0x1fb6, 0x1fc4}, {0x1fc6, 0x1fd3}, {0x1fd6, 0x1fdb},
4590 {0x1fdd, 0x1fef}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffe}, {0x10140, 0x1018e},
4591 {0x1d200, 0x1d245}}),
4592 CharacterClassWidths::HasBothBMPAndNonBMP);
4593 return characterClass;
4594}
4595
4596static std::unique_ptr<CharacterClass> createCharacterClass95()
4597{
4598 // Name = Cyrillic, number of codePoints: 443
4599 auto characterClass = std::make_unique<CharacterClass>(
4600 std::initializer_list<UChar32>({}),
4601 std::initializer_list<CharacterRange>({}),
4602 std::initializer_list<UChar32>({0x1d2b, 0x1d78}),
4603 std::initializer_list<CharacterRange>({{0x0400, 0x0484}, {0x0487, 0x052f}, {0x1c80, 0x1c88}, {0x2de0, 0x2dff},
4604 {0xa640, 0xa69f}, {0xfe2e, 0xfe2f}}),
4605 CharacterClassWidths::HasBMPChars);
4606 return characterClass;
4607}
4608
4609static std::unique_ptr<CharacterClass> createCharacterClass96()
4610{
4611 // Name = Armenian, number of codePoints: 95
4612 auto characterClass = std::make_unique<CharacterClass>(
4613 std::initializer_list<UChar32>({}),
4614 std::initializer_list<CharacterRange>({}),
4615 std::initializer_list<UChar32>({0x058a}),
4616 std::initializer_list<CharacterRange>({{0x0531, 0x0556}, {0x0559, 0x0588}, {0x058d, 0x058f}, {0xfb13, 0xfb17}}),
4617 CharacterClassWidths::HasBMPChars);
4618 return characterClass;
4619}
4620
4621static std::unique_ptr<CharacterClass> createCharacterClass97()
4622{
4623 // Name = Hebrew, number of codePoints: 134
4624 auto characterClass = std::make_unique<CharacterClass>(
4625 std::initializer_list<UChar32>({}),
4626 std::initializer_list<CharacterRange>({}),
4627 std::initializer_list<UChar32>({0xfb3e}),
4628 std::initializer_list<CharacterRange>({{0x0591, 0x05c7}, {0x05d0, 0x05ea}, {0x05ef, 0x05f4}, {0xfb1d, 0xfb36},
4629 {0xfb38, 0xfb3c}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfb4f}}),
4630 CharacterClassWidths::HasBMPChars);
4631 return characterClass;
4632}
4633
4634static std::unique_ptr<CharacterClass> createCharacterClass98()
4635{
4636 // Name = Arabic, number of codePoints: 1281
4637 auto characterClass = std::make_unique<CharacterClass>(
4638 std::initializer_list<UChar32>({}),
4639 std::initializer_list<CharacterRange>({}),
4640 std::initializer_list<UChar32>({0x061c, 0x061e, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42, 0x1ee47,
4641 0x1ee49, 0x1ee4b, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d, 0x1ee5f,
4642 0x1ee64, 0x1ee7e}),
4643 std::initializer_list<CharacterRange>({{0x0600, 0x0604}, {0x0606, 0x060b}, {0x060d, 0x061a}, {0x0620, 0x063f},
4644 {0x0641, 0x064a}, {0x0656, 0x066f}, {0x0671, 0x06dc}, {0x06de, 0x06ff},
4645 {0x0750, 0x077f}, {0x08a0, 0x08b4}, {0x08b6, 0x08bd}, {0x08d3, 0x08e1},
4646 {0x08e3, 0x08ff}, {0xfb50, 0xfbc1}, {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f},
4647 {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfd}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc},
4648 {0x10e60, 0x10e7e}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22},
4649 {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52},
4650 {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77},
4651 {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3},
4652 {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x1eef0, 0x1eef1}}),
4653 CharacterClassWidths::HasBothBMPAndNonBMP);
4654 return characterClass;
4655}
4656
4657static std::unique_ptr<CharacterClass> createCharacterClass99()
4658{
4659 // Name = Syriac, number of codePoints: 88
4660 auto characterClass = std::make_unique<CharacterClass>(
4661 std::initializer_list<UChar32>({}),
4662 std::initializer_list<CharacterRange>({}),
4663 std::initializer_list<UChar32>({}),
4664 std::initializer_list<CharacterRange>({{0x0700, 0x070d}, {0x070f, 0x074a}, {0x074d, 0x074f}, {0x0860, 0x086a}}),
4665 CharacterClassWidths::HasBMPChars);
4666 return characterClass;
4667}
4668
4669static std::unique_ptr<CharacterClass> createCharacterClass100()
4670{
4671 // Name = Thaana, number of codePoints: 50
4672 auto characterClass = std::make_unique<CharacterClass>(
4673 std::initializer_list<UChar32>({}),
4674 std::initializer_list<CharacterRange>({}),
4675 std::initializer_list<UChar32>({}),
4676 std::initializer_list<CharacterRange>({{0x0780, 0x07b1}}),
4677 CharacterClassWidths::HasBMPChars);
4678 return characterClass;
4679}
4680
4681static std::unique_ptr<CharacterClass> createCharacterClass101()
4682{
4683 // Name = Devanagari, number of codePoints: 156
4684 auto characterClass = std::make_unique<CharacterClass>(
4685 std::initializer_list<UChar32>({}),
4686 std::initializer_list<CharacterRange>({}),
4687 std::initializer_list<UChar32>({}),
4688 std::initializer_list<CharacterRange>({{0x0900, 0x0950}, {0x0953, 0x0963}, {0x0966, 0x097f}, {0xa8e0, 0xa8ff}}),
4689 CharacterClassWidths::HasBMPChars);
4690 return characterClass;
4691}
4692
4693static std::unique_ptr<CharacterClass> createCharacterClass102()
4694{
4695 // Name = Bengali, number of codePoints: 96
4696 auto characterClass = std::make_unique<CharacterClass>(
4697 std::initializer_list<UChar32>({}),
4698 std::initializer_list<CharacterRange>({}),
4699 std::initializer_list<UChar32>({0x09b2, 0x09d7}),
4700 std::initializer_list<CharacterRange>({{0x0980, 0x0983}, {0x0985, 0x098c}, {0x098f, 0x0990}, {0x0993, 0x09a8},
4701 {0x09aa, 0x09b0}, {0x09b6, 0x09b9}, {0x09bc, 0x09c4}, {0x09c7, 0x09c8},
4702 {0x09cb, 0x09ce}, {0x09dc, 0x09dd}, {0x09df, 0x09e3}, {0x09e6, 0x09fe}}),
4703 CharacterClassWidths::HasBMPChars);
4704 return characterClass;
4705}
4706
4707static std::unique_ptr<CharacterClass> createCharacterClass103()
4708{
4709 // Name = Gurmukhi, number of codePoints: 80
4710 auto characterClass = std::make_unique<CharacterClass>(
4711 std::initializer_list<UChar32>({}),
4712 std::initializer_list<CharacterRange>({}),
4713 std::initializer_list<UChar32>({0x0a3c, 0x0a51, 0x0a5e}),
4714 std::initializer_list<CharacterRange>({{0x0a01, 0x0a03}, {0x0a05, 0x0a0a}, {0x0a0f, 0x0a10}, {0x0a13, 0x0a28},
4715 {0x0a2a, 0x0a30}, {0x0a32, 0x0a33}, {0x0a35, 0x0a36}, {0x0a38, 0x0a39},
4716 {0x0a3e, 0x0a42}, {0x0a47, 0x0a48}, {0x0a4b, 0x0a4d}, {0x0a59, 0x0a5c},
4717 {0x0a66, 0x0a76}}),
4718 CharacterClassWidths::HasBMPChars);
4719 return characterClass;
4720}
4721
4722static std::unique_ptr<CharacterClass> createCharacterClass104()
4723{
4724 // Name = Gujarati, number of codePoints: 91
4725 auto characterClass = std::make_unique<CharacterClass>(
4726 std::initializer_list<UChar32>({}),
4727 std::initializer_list<CharacterRange>({}),
4728 std::initializer_list<UChar32>({0x0ad0}),
4729 std::initializer_list<CharacterRange>({{0x0a81, 0x0a83}, {0x0a85, 0x0a8d}, {0x0a8f, 0x0a91}, {0x0a93, 0x0aa8},
4730 {0x0aaa, 0x0ab0}, {0x0ab2, 0x0ab3}, {0x0ab5, 0x0ab9}, {0x0abc, 0x0ac5},
4731 {0x0ac7, 0x0ac9}, {0x0acb, 0x0acd}, {0x0ae0, 0x0ae3}, {0x0ae6, 0x0af1},
4732 {0x0af9, 0x0aff}}),
4733 CharacterClassWidths::HasBMPChars);
4734 return characterClass;
4735}
4736
4737static std::unique_ptr<CharacterClass> createCharacterClass105()
4738{
4739 // Name = Oriya, number of codePoints: 90
4740 auto characterClass = std::make_unique<CharacterClass>(
4741 std::initializer_list<UChar32>({}),
4742 std::initializer_list<CharacterRange>({}),
4743 std::initializer_list<UChar32>({}),
4744 std::initializer_list<CharacterRange>({{0x0b01, 0x0b03}, {0x0b05, 0x0b0c}, {0x0b0f, 0x0b10}, {0x0b13, 0x0b28},
4745 {0x0b2a, 0x0b30}, {0x0b32, 0x0b33}, {0x0b35, 0x0b39}, {0x0b3c, 0x0b44},
4746 {0x0b47, 0x0b48}, {0x0b4b, 0x0b4d}, {0x0b56, 0x0b57}, {0x0b5c, 0x0b5d},
4747 {0x0b5f, 0x0b63}, {0x0b66, 0x0b77}}),
4748 CharacterClassWidths::HasBMPChars);
4749 return characterClass;
4750}
4751
4752static std::unique_ptr<CharacterClass> createCharacterClass106()
4753{
4754 // Name = Tamil, number of codePoints: 72
4755 auto characterClass = std::make_unique<CharacterClass>(
4756 std::initializer_list<UChar32>({}),
4757 std::initializer_list<CharacterRange>({}),
4758 std::initializer_list<UChar32>({0x0b9c, 0x0bd0, 0x0bd7}),
4759 std::initializer_list<CharacterRange>({{0x0b82, 0x0b83}, {0x0b85, 0x0b8a}, {0x0b8e, 0x0b90}, {0x0b92, 0x0b95},
4760 {0x0b99, 0x0b9a}, {0x0b9e, 0x0b9f}, {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa},
4761 {0x0bae, 0x0bb9}, {0x0bbe, 0x0bc2}, {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcd},
4762 {0x0be6, 0x0bfa}}),
4763 CharacterClassWidths::HasBMPChars);
4764 return characterClass;
4765}
4766
4767static std::unique_ptr<CharacterClass> createCharacterClass107()
4768{
4769 // Name = Telugu, number of codePoints: 97
4770 auto characterClass = std::make_unique<CharacterClass>(
4771 std::initializer_list<UChar32>({}),
4772 std::initializer_list<CharacterRange>({}),
4773 std::initializer_list<UChar32>({}),
4774 std::initializer_list<CharacterRange>({{0x0c00, 0x0c0c}, {0x0c0e, 0x0c10}, {0x0c12, 0x0c28}, {0x0c2a, 0x0c39},
4775 {0x0c3d, 0x0c44}, {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56},
4776 {0x0c58, 0x0c5a}, {0x0c60, 0x0c63}, {0x0c66, 0x0c6f}, {0x0c78, 0x0c7f}}),
4777 CharacterClassWidths::HasBMPChars);
4778 return characterClass;
4779}
4780
4781static std::unique_ptr<CharacterClass> createCharacterClass108()
4782{
4783 // Name = Kannada, number of codePoints: 89
4784 auto characterClass = std::make_unique<CharacterClass>(
4785 std::initializer_list<UChar32>({}),
4786 std::initializer_list<CharacterRange>({}),
4787 std::initializer_list<UChar32>({0x0cde}),
4788 std::initializer_list<CharacterRange>({{0x0c80, 0x0c8c}, {0x0c8e, 0x0c90}, {0x0c92, 0x0ca8}, {0x0caa, 0x0cb3},
4789 {0x0cb5, 0x0cb9}, {0x0cbc, 0x0cc4}, {0x0cc6, 0x0cc8}, {0x0cca, 0x0ccd},
4790 {0x0cd5, 0x0cd6}, {0x0ce0, 0x0ce3}, {0x0ce6, 0x0cef}, {0x0cf1, 0x0cf2}}),
4791 CharacterClassWidths::HasBMPChars);
4792 return characterClass;
4793}
4794
4795static std::unique_ptr<CharacterClass> createCharacterClass109()
4796{
4797 // Name = Malayalam, number of codePoints: 117
4798 auto characterClass = std::make_unique<CharacterClass>(
4799 std::initializer_list<UChar32>({}),
4800 std::initializer_list<CharacterRange>({}),
4801 std::initializer_list<UChar32>({}),
4802 std::initializer_list<CharacterRange>({{0x0d00, 0x0d03}, {0x0d05, 0x0d0c}, {0x0d0e, 0x0d10}, {0x0d12, 0x0d44},
4803 {0x0d46, 0x0d48}, {0x0d4a, 0x0d4f}, {0x0d54, 0x0d63}, {0x0d66, 0x0d7f}}),
4804 CharacterClassWidths::HasBMPChars);
4805 return characterClass;
4806}
4807
4808static std::unique_ptr<CharacterClass> createCharacterClass110()
4809{
4810 // Name = Sinhala, number of codePoints: 110
4811 auto characterClass = std::make_unique<CharacterClass>(
4812 std::initializer_list<UChar32>({}),
4813 std::initializer_list<CharacterRange>({}),
4814 std::initializer_list<UChar32>({0x0dbd, 0x0dca, 0x0dd6}),
4815 std::initializer_list<CharacterRange>({{0x0d82, 0x0d83}, {0x0d85, 0x0d96}, {0x0d9a, 0x0db1}, {0x0db3, 0x0dbb},
4816 {0x0dc0, 0x0dc6}, {0x0dcf, 0x0dd4}, {0x0dd8, 0x0ddf}, {0x0de6, 0x0def},
4817 {0x0df2, 0x0df4}, {0x111e1, 0x111f4}}),
4818 CharacterClassWidths::HasBothBMPAndNonBMP);
4819 return characterClass;
4820}
4821
4822static std::unique_ptr<CharacterClass> createCharacterClass111()
4823{
4824 // Name = Thai, number of codePoints: 86
4825 auto characterClass = std::make_unique<CharacterClass>(
4826 std::initializer_list<UChar32>({}),
4827 std::initializer_list<CharacterRange>({}),
4828 std::initializer_list<UChar32>({}),
4829 std::initializer_list<CharacterRange>({{0x0e01, 0x0e3a}, {0x0e40, 0x0e5b}}),
4830 CharacterClassWidths::HasBMPChars);
4831 return characterClass;
4832}
4833
4834static std::unique_ptr<CharacterClass> createCharacterClass112()
4835{
4836 // Name = Lao, number of codePoints: 67
4837 auto characterClass = std::make_unique<CharacterClass>(
4838 std::initializer_list<UChar32>({}),
4839 std::initializer_list<CharacterRange>({}),
4840 std::initializer_list<UChar32>({0x0e84, 0x0e8a, 0x0e8d, 0x0ea5, 0x0ea7, 0x0ec6}),
4841 std::initializer_list<CharacterRange>({{0x0e81, 0x0e82}, {0x0e87, 0x0e88}, {0x0e94, 0x0e97}, {0x0e99, 0x0e9f},
4842 {0x0ea1, 0x0ea3}, {0x0eaa, 0x0eab}, {0x0ead, 0x0eb9}, {0x0ebb, 0x0ebd},
4843 {0x0ec0, 0x0ec4}, {0x0ec8, 0x0ecd}, {0x0ed0, 0x0ed9}, {0x0edc, 0x0edf}}),
4844 CharacterClassWidths::HasBMPChars);
4845 return characterClass;
4846}
4847
4848static std::unique_ptr<CharacterClass> createCharacterClass113()
4849{
4850 // Name = Tibetan, number of codePoints: 207
4851 auto characterClass = std::make_unique<CharacterClass>(
4852 std::initializer_list<UChar32>({}),
4853 std::initializer_list<CharacterRange>({}),
4854 std::initializer_list<UChar32>({}),
4855 std::initializer_list<CharacterRange>({{0x0f00, 0x0f47}, {0x0f49, 0x0f6c}, {0x0f71, 0x0f97}, {0x0f99, 0x0fbc},
4856 {0x0fbe, 0x0fcc}, {0x0fce, 0x0fd4}, {0x0fd9, 0x0fda}}),
4857 CharacterClassWidths::HasBMPChars);
4858 return characterClass;
4859}
4860
4861static std::unique_ptr<CharacterClass> createCharacterClass114()
4862{
4863 // Name = Myanmar, number of codePoints: 223
4864 auto characterClass = std::make_unique<CharacterClass>(
4865 std::initializer_list<UChar32>({}),
4866 std::initializer_list<CharacterRange>({}),
4867 std::initializer_list<UChar32>({}),
4868 std::initializer_list<CharacterRange>({{0x1000, 0x109f}, {0xa9e0, 0xa9fe}, {0xaa60, 0xaa7f}}),
4869 CharacterClassWidths::HasBMPChars);
4870 return characterClass;
4871}
4872
4873static std::unique_ptr<CharacterClass> createCharacterClass115()
4874{
4875 // Name = Georgian, number of codePoints: 173
4876 auto characterClass = std::make_unique<CharacterClass>(
4877 std::initializer_list<UChar32>({}),
4878 std::initializer_list<CharacterRange>({}),
4879 std::initializer_list<UChar32>({0x10c7, 0x10cd, 0x2d27, 0x2d2d}),
4880 std::initializer_list<CharacterRange>({{0x10a0, 0x10c5}, {0x10d0, 0x10fa}, {0x10fc, 0x10ff}, {0x1c90, 0x1cba},
4881 {0x1cbd, 0x1cbf}, {0x2d00, 0x2d25}}),
4882 CharacterClassWidths::HasBMPChars);
4883 return characterClass;
4884}
4885
4886static std::unique_ptr<CharacterClass> createCharacterClass116()
4887{
4888 // Name = Hangul, number of codePoints: 11739
4889 auto characterClass = std::make_unique<CharacterClass>(
4890 std::initializer_list<UChar32>({}),
4891 std::initializer_list<CharacterRange>({}),
4892 std::initializer_list<UChar32>({}),
4893 std::initializer_list<CharacterRange>({{0x1100, 0x11ff}, {0x302e, 0x302f}, {0x3131, 0x318e}, {0x3200, 0x321e},
4894 {0x3260, 0x327e}, {0xa960, 0xa97c}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6},
4895 {0xd7cb, 0xd7fb}, {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf},
4896 {0xffd2, 0xffd7}, {0xffda, 0xffdc}}),
4897 CharacterClassWidths::HasBMPChars);
4898 return characterClass;
4899}
4900
4901static std::unique_ptr<CharacterClass> createCharacterClass117()
4902{
4903 // Name = Ethiopic, number of codePoints: 495
4904 auto characterClass = std::make_unique<CharacterClass>(
4905 std::initializer_list<UChar32>({}),
4906 std::initializer_list<CharacterRange>({}),
4907 std::initializer_list<UChar32>({0x1258, 0x12c0}),
4908 std::initializer_list<CharacterRange>({{0x1200, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256}, {0x125a, 0x125d},
4909 {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5},
4910 {0x12b8, 0x12be}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310},
4911 {0x1312, 0x1315}, {0x1318, 0x135a}, {0x135d, 0x137c}, {0x1380, 0x1399},
4912 {0x2d80, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6},
4913 {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6},
4914 {0x2dd8, 0x2dde}, {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16},
4915 {0xab20, 0xab26}, {0xab28, 0xab2e}}),
4916 CharacterClassWidths::HasBMPChars);
4917 return characterClass;
4918}
4919
4920static std::unique_ptr<CharacterClass> createCharacterClass118()
4921{
4922 // Name = Cherokee, number of codePoints: 172
4923 auto characterClass = std::make_unique<CharacterClass>(
4924 std::initializer_list<UChar32>({}),
4925 std::initializer_list<CharacterRange>({}),
4926 std::initializer_list<UChar32>({}),
4927 std::initializer_list<CharacterRange>({{0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0xab70, 0xabbf}}),
4928 CharacterClassWidths::HasBMPChars);
4929 return characterClass;
4930}
4931
4932static std::unique_ptr<CharacterClass> createCharacterClass119()
4933{
4934 // Name = Canadian_Aboriginal, number of codePoints: 710
4935 auto characterClass = std::make_unique<CharacterClass>(
4936 std::initializer_list<UChar32>({}),
4937 std::initializer_list<CharacterRange>({}),
4938 std::initializer_list<UChar32>({}),
4939 std::initializer_list<CharacterRange>({{0x1400, 0x167f}, {0x18b0, 0x18f5}}),
4940 CharacterClassWidths::HasBMPChars);
4941 return characterClass;
4942}
4943
4944static std::unique_ptr<CharacterClass> createCharacterClass120()
4945{
4946 // Name = Ogham, number of codePoints: 29
4947 auto characterClass = std::make_unique<CharacterClass>(
4948 std::initializer_list<UChar32>({}),
4949 std::initializer_list<CharacterRange>({}),
4950 std::initializer_list<UChar32>({}),
4951 std::initializer_list<CharacterRange>({{0x1680, 0x169c}}),
4952 CharacterClassWidths::HasBMPChars);
4953 return characterClass;
4954}
4955
4956static std::unique_ptr<CharacterClass> createCharacterClass121()
4957{
4958 // Name = Runic, number of codePoints: 86
4959 auto characterClass = std::make_unique<CharacterClass>(
4960 std::initializer_list<UChar32>({}),
4961 std::initializer_list<CharacterRange>({}),
4962 std::initializer_list<UChar32>({}),
4963 std::initializer_list<CharacterRange>({{0x16a0, 0x16ea}, {0x16ee, 0x16f8}}),
4964 CharacterClassWidths::HasBMPChars);
4965 return characterClass;
4966}
4967
4968static std::unique_ptr<CharacterClass> createCharacterClass122()
4969{
4970 // Name = Khmer, number of codePoints: 146
4971 auto characterClass = std::make_unique<CharacterClass>(
4972 std::initializer_list<UChar32>({}),
4973 std::initializer_list<CharacterRange>({}),
4974 std::initializer_list<UChar32>({}),
4975 std::initializer_list<CharacterRange>({{0x1780, 0x17dd}, {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x19e0, 0x19ff}}),
4976 CharacterClassWidths::HasBMPChars);
4977 return characterClass;
4978}
4979
4980static std::unique_ptr<CharacterClass> createCharacterClass123()
4981{
4982 // Name = Mongolian, number of codePoints: 167
4983 auto characterClass = std::make_unique<CharacterClass>(
4984 std::initializer_list<UChar32>({}),
4985 std::initializer_list<CharacterRange>({}),
4986 std::initializer_list<UChar32>({0x1804}),
4987 std::initializer_list<CharacterRange>({{0x1800, 0x1801}, {0x1806, 0x180e}, {0x1810, 0x1819}, {0x1820, 0x1878},
4988 {0x1880, 0x18aa}, {0x11660, 0x1166c}}),
4989 CharacterClassWidths::HasBothBMPAndNonBMP);
4990 return characterClass;
4991}
4992
4993static std::unique_ptr<CharacterClass> createCharacterClass124()
4994{
4995 // Name = Hiragana, number of codePoints: 376
4996 auto characterClass = std::make_unique<CharacterClass>(
4997 std::initializer_list<UChar32>({}),
4998 std::initializer_list<CharacterRange>({}),
4999 std::initializer_list<UChar32>({0x1f200}),
5000 std::initializer_list<CharacterRange>({{0x3041, 0x3096}, {0x309d, 0x309f}, {0x1b001, 0x1b11e}}),
5001 CharacterClassWidths::HasBothBMPAndNonBMP);
5002 return characterClass;
5003}
5004
5005static std::unique_ptr<CharacterClass> createCharacterClass125()
5006{
5007 // Name = Katakana, number of codePoints: 300
5008 auto characterClass = std::make_unique<CharacterClass>(
5009 std::initializer_list<UChar32>({}),
5010 std::initializer_list<CharacterRange>({}),
5011 std::initializer_list<UChar32>({0x1b000}),
5012 std::initializer_list<CharacterRange>({{0x30a1, 0x30fa}, {0x30fd, 0x30ff}, {0x31f0, 0x31ff}, {0x32d0, 0x32fe},
5013 {0x3300, 0x3357}, {0xff66, 0xff6f}, {0xff71, 0xff9d}}),
5014 CharacterClassWidths::HasBothBMPAndNonBMP);
5015 return characterClass;
5016}
5017
5018static std::unique_ptr<CharacterClass> createCharacterClass126()
5019{
5020 // Name = Bopomofo, number of codePoints: 72
5021 auto characterClass = std::make_unique<CharacterClass>(
5022 std::initializer_list<UChar32>({}),
5023 std::initializer_list<CharacterRange>({}),
5024 std::initializer_list<UChar32>({}),
5025 std::initializer_list<CharacterRange>({{0x02ea, 0x02eb}, {0x3105, 0x312f}, {0x31a0, 0x31ba}}),
5026 CharacterClassWidths::HasBMPChars);
5027 return characterClass;
5028}
5029
5030static std::unique_ptr<CharacterClass> createCharacterClass127()
5031{
5032 // Name = Han, number of codePoints: 89233
5033 auto characterClass = std::make_unique<CharacterClass>(
5034 std::initializer_list<UChar32>({}),
5035 std::initializer_list<CharacterRange>({}),
5036 std::initializer_list<UChar32>({0x3005, 0x3007}),
5037 std::initializer_list<CharacterRange>({{0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x3021, 0x3029},
5038 {0x3038, 0x303b}, {0x3400, 0x4db5}, {0x4e00, 0x9fef}, {0xf900, 0xfa6d},
5039 {0xfa70, 0xfad9}, {0x20000, 0x2a6d6}, {0x2a700, 0x2b734}, {0x2b740, 0x2b81d},
5040 {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}, {0x2f800, 0x2fa1d}}),
5041 CharacterClassWidths::HasBothBMPAndNonBMP);
5042 return characterClass;
5043}
5044
5045static std::unique_ptr<CharacterClass> createCharacterClass128()
5046{
5047 // Name = Yi, number of codePoints: 1220
5048 auto characterClass = std::make_unique<CharacterClass>(
5049 std::initializer_list<UChar32>({}),
5050 std::initializer_list<CharacterRange>({}),
5051 std::initializer_list<UChar32>({}),
5052 std::initializer_list<CharacterRange>({{0xa000, 0xa48c}, {0xa490, 0xa4c6}}),
5053 CharacterClassWidths::HasBMPChars);
5054 return characterClass;
5055}
5056
5057static std::unique_ptr<CharacterClass> createCharacterClass129()
5058{
5059 // Name = Old_Italic, number of codePoints: 39
5060 auto characterClass = std::make_unique<CharacterClass>(
5061 std::initializer_list<UChar32>({}),
5062 std::initializer_list<CharacterRange>({}),
5063 std::initializer_list<UChar32>({}),
5064 std::initializer_list<CharacterRange>({{0x10300, 0x10323}, {0x1032d, 0x1032f}}),
5065 CharacterClassWidths::HasNonBMPChars);
5066 return characterClass;
5067}
5068
5069static std::unique_ptr<CharacterClass> createCharacterClass130()
5070{
5071 // Name = Gothic, number of codePoints: 27
5072 auto characterClass = std::make_unique<CharacterClass>(
5073 std::initializer_list<UChar32>({}),
5074 std::initializer_list<CharacterRange>({}),
5075 std::initializer_list<UChar32>({}),
5076 std::initializer_list<CharacterRange>({{0x10330, 0x1034a}}),
5077 CharacterClassWidths::HasNonBMPChars);
5078 return characterClass;
5079}
5080
5081static std::unique_ptr<CharacterClass> createCharacterClass131()
5082{
5083 // Name = Deseret, number of codePoints: 80
5084 auto characterClass = std::make_unique<CharacterClass>(
5085 std::initializer_list<UChar32>({}),
5086 std::initializer_list<CharacterRange>({}),
5087 std::initializer_list<UChar32>({}),
5088 std::initializer_list<CharacterRange>({{0x10400, 0x1044f}}),
5089 CharacterClassWidths::HasNonBMPChars);
5090 return characterClass;
5091}
5092
5093static std::unique_ptr<CharacterClass> createCharacterClass132()
5094{
5095 // Name = Inherited, number of codePoints: 569
5096 auto characterClass = std::make_unique<CharacterClass>(
5097 std::initializer_list<UChar32>({}),
5098 std::initializer_list<CharacterRange>({}),
5099 std::initializer_list<UChar32>({0x0670, 0x1ced, 0x1cf4, 0x101fd, 0x102e0, 0x1133b}),
5100 std::initializer_list<CharacterRange>({{0x0300, 0x036f}, {0x0485, 0x0486}, {0x064b, 0x0655}, {0x0951, 0x0952},
5101 {0x1ab0, 0x1abe}, {0x1cd0, 0x1cd2}, {0x1cd4, 0x1ce0}, {0x1ce2, 0x1ce8},
5102 {0x1cf8, 0x1cf9}, {0x1dc0, 0x1df9}, {0x1dfb, 0x1dff}, {0x200c, 0x200d},
5103 {0x20d0, 0x20f0}, {0x302a, 0x302d}, {0x3099, 0x309a}, {0xfe00, 0xfe0f},
5104 {0xfe20, 0xfe2d}, {0x1d167, 0x1d169}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b},
5105 {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef}}),
5106 CharacterClassWidths::HasBothBMPAndNonBMP);
5107 return characterClass;
5108}
5109
5110static std::unique_ptr<CharacterClass> createCharacterClass133()
5111{
5112 // Name = Tagalog, number of codePoints: 20
5113 auto characterClass = std::make_unique<CharacterClass>(
5114 std::initializer_list<UChar32>({}),
5115 std::initializer_list<CharacterRange>({}),
5116 std::initializer_list<UChar32>({}),
5117 std::initializer_list<CharacterRange>({{0x1700, 0x170c}, {0x170e, 0x1714}}),
5118 CharacterClassWidths::HasBMPChars);
5119 return characterClass;
5120}
5121
5122static std::unique_ptr<CharacterClass> createCharacterClass134()
5123{
5124 // Name = Hanunoo, number of codePoints: 21
5125 auto characterClass = std::make_unique<CharacterClass>(
5126 std::initializer_list<UChar32>({}),
5127 std::initializer_list<CharacterRange>({}),
5128 std::initializer_list<UChar32>({}),
5129 std::initializer_list<CharacterRange>({{0x1720, 0x1734}}),
5130 CharacterClassWidths::HasBMPChars);
5131 return characterClass;
5132}
5133
5134static std::unique_ptr<CharacterClass> createCharacterClass135()
5135{
5136 // Name = Buhid, number of codePoints: 20
5137 auto characterClass = std::make_unique<CharacterClass>(
5138 std::initializer_list<UChar32>({}),
5139 std::initializer_list<CharacterRange>({}),
5140 std::initializer_list<UChar32>({}),
5141 std::initializer_list<CharacterRange>({{0x1740, 0x1753}}),
5142 CharacterClassWidths::HasBMPChars);
5143 return characterClass;
5144}
5145
5146static std::unique_ptr<CharacterClass> createCharacterClass136()
5147{
5148 // Name = Tagbanwa, number of codePoints: 18
5149 auto characterClass = std::make_unique<CharacterClass>(
5150 std::initializer_list<UChar32>({}),
5151 std::initializer_list<CharacterRange>({}),
5152 std::initializer_list<UChar32>({}),
5153 std::initializer_list<CharacterRange>({{0x1760, 0x176c}, {0x176e, 0x1770}, {0x1772, 0x1773}}),
5154 CharacterClassWidths::HasBMPChars);
5155 return characterClass;
5156}
5157
5158static std::unique_ptr<CharacterClass> createCharacterClass137()
5159{
5160 // Name = Limbu, number of codePoints: 68
5161 auto characterClass = std::make_unique<CharacterClass>(
5162 std::initializer_list<UChar32>({}),
5163 std::initializer_list<CharacterRange>({}),
5164 std::initializer_list<UChar32>({0x1940}),
5165 std::initializer_list<CharacterRange>({{0x1900, 0x191e}, {0x1920, 0x192b}, {0x1930, 0x193b}, {0x1944, 0x194f}}),
5166 CharacterClassWidths::HasBMPChars);
5167 return characterClass;
5168}
5169
5170static std::unique_ptr<CharacterClass> createCharacterClass138()
5171{
5172 // Name = Tai_Le, number of codePoints: 35
5173 auto characterClass = std::make_unique<CharacterClass>(
5174 std::initializer_list<UChar32>({}),
5175 std::initializer_list<CharacterRange>({}),
5176 std::initializer_list<UChar32>({}),
5177 std::initializer_list<CharacterRange>({{0x1950, 0x196d}, {0x1970, 0x1974}}),
5178 CharacterClassWidths::HasBMPChars);
5179 return characterClass;
5180}
5181
5182static std::unique_ptr<CharacterClass> createCharacterClass139()
5183{
5184 // Name = Linear_B, number of codePoints: 211
5185 auto characterClass = std::make_unique<CharacterClass>(
5186 std::initializer_list<UChar32>({}),
5187 std::initializer_list<CharacterRange>({}),
5188 std::initializer_list<UChar32>({}),
5189 std::initializer_list<CharacterRange>({{0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d},
5190 {0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa}}),
5191 CharacterClassWidths::HasNonBMPChars);
5192 return characterClass;
5193}
5194
5195static std::unique_ptr<CharacterClass> createCharacterClass140()
5196{
5197 // Name = Ugaritic, number of codePoints: 31
5198 auto characterClass = std::make_unique<CharacterClass>(
5199 std::initializer_list<UChar32>({}),
5200 std::initializer_list<CharacterRange>({}),
5201 std::initializer_list<UChar32>({0x1039f}),
5202 std::initializer_list<CharacterRange>({{0x10380, 0x1039d}}),
5203 CharacterClassWidths::HasNonBMPChars);
5204 return characterClass;
5205}
5206
5207static std::unique_ptr<CharacterClass> createCharacterClass141()
5208{
5209 // Name = Shavian, number of codePoints: 48
5210 auto characterClass = std::make_unique<CharacterClass>(
5211 std::initializer_list<UChar32>({}),
5212 std::initializer_list<CharacterRange>({}),
5213 std::initializer_list<UChar32>({}),
5214 std::initializer_list<CharacterRange>({{0x10450, 0x1047f}}),
5215 CharacterClassWidths::HasNonBMPChars);
5216 return characterClass;
5217}
5218
5219static std::unique_ptr<CharacterClass> createCharacterClass142()
5220{
5221 // Name = Osmanya, number of codePoints: 40
5222 auto characterClass = std::make_unique<CharacterClass>(
5223 std::initializer_list<UChar32>({}),
5224 std::initializer_list<CharacterRange>({}),
5225 std::initializer_list<UChar32>({}),
5226 std::initializer_list<CharacterRange>({{0x10480, 0x1049d}, {0x104a0, 0x104a9}}),
5227 CharacterClassWidths::HasNonBMPChars);
5228 return characterClass;
5229}
5230
5231static std::unique_ptr<CharacterClass> createCharacterClass143()
5232{
5233 // Name = Cypriot, number of codePoints: 55
5234 auto characterClass = std::make_unique<CharacterClass>(
5235 std::initializer_list<UChar32>({}),
5236 std::initializer_list<CharacterRange>({}),
5237 std::initializer_list<UChar32>({0x10808, 0x1083c, 0x1083f}),
5238 std::initializer_list<CharacterRange>({{0x10800, 0x10805}, {0x1080a, 0x10835}, {0x10837, 0x10838}}),
5239 CharacterClassWidths::HasNonBMPChars);
5240 return characterClass;
5241}
5242
5243static std::unique_ptr<CharacterClass> createCharacterClass144()
5244{
5245 // Name = Braille, number of codePoints: 256
5246 auto characterClass = std::make_unique<CharacterClass>(
5247 std::initializer_list<UChar32>({}),
5248 std::initializer_list<CharacterRange>({}),
5249 std::initializer_list<UChar32>({}),
5250 std::initializer_list<CharacterRange>({{0x2800, 0x28ff}}),
5251 CharacterClassWidths::HasBMPChars);
5252 return characterClass;
5253}
5254
5255static std::unique_ptr<CharacterClass> createCharacterClass145()
5256{
5257 // Name = Buginese, number of codePoints: 30
5258 auto characterClass = std::make_unique<CharacterClass>(
5259 std::initializer_list<UChar32>({}),
5260 std::initializer_list<CharacterRange>({}),
5261 std::initializer_list<UChar32>({}),
5262 std::initializer_list<CharacterRange>({{0x1a00, 0x1a1b}, {0x1a1e, 0x1a1f}}),
5263 CharacterClassWidths::HasBMPChars);
5264 return characterClass;
5265}
5266
5267static std::unique_ptr<CharacterClass> createCharacterClass146()
5268{
5269 // Name = Coptic, number of codePoints: 137
5270 auto characterClass = std::make_unique<CharacterClass>(
5271 std::initializer_list<UChar32>({}),
5272 std::initializer_list<CharacterRange>({}),
5273 std::initializer_list<UChar32>({}),
5274 std::initializer_list<CharacterRange>({{0x03e2, 0x03ef}, {0x2c80, 0x2cf3}, {0x2cf9, 0x2cff}}),
5275 CharacterClassWidths::HasBMPChars);
5276 return characterClass;
5277}
5278
5279static std::unique_ptr<CharacterClass> createCharacterClass147()
5280{
5281 // Name = New_Tai_Lue, number of codePoints: 83
5282 auto characterClass = std::make_unique<CharacterClass>(
5283 std::initializer_list<UChar32>({}),
5284 std::initializer_list<CharacterRange>({}),
5285 std::initializer_list<UChar32>({}),
5286 std::initializer_list<CharacterRange>({{0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x19d0, 0x19da}, {0x19de, 0x19df}}),
5287 CharacterClassWidths::HasBMPChars);
5288 return characterClass;
5289}
5290
5291static std::unique_ptr<CharacterClass> createCharacterClass148()
5292{
5293 // Name = Glagolitic, number of codePoints: 132
5294 auto characterClass = std::make_unique<CharacterClass>(
5295 std::initializer_list<UChar32>({}),
5296 std::initializer_list<CharacterRange>({}),
5297 std::initializer_list<UChar32>({}),
5298 std::initializer_list<CharacterRange>({{0x2c00, 0x2c2e}, {0x2c30, 0x2c5e}, {0x1e000, 0x1e006}, {0x1e008, 0x1e018},
5299 {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a}}),
5300 CharacterClassWidths::HasBothBMPAndNonBMP);
5301 return characterClass;
5302}
5303
5304static std::unique_ptr<CharacterClass> createCharacterClass149()
5305{
5306 // Name = Tifinagh, number of codePoints: 59
5307 auto characterClass = std::make_unique<CharacterClass>(
5308 std::initializer_list<UChar32>({}),
5309 std::initializer_list<CharacterRange>({}),
5310 std::initializer_list<UChar32>({0x2d7f}),
5311 std::initializer_list<CharacterRange>({{0x2d30, 0x2d67}, {0x2d6f, 0x2d70}}),
5312 CharacterClassWidths::HasBMPChars);
5313 return characterClass;
5314}
5315
5316static std::unique_ptr<CharacterClass> createCharacterClass150()
5317{
5318 // Name = Syloti_Nagri, number of codePoints: 44
5319 auto characterClass = std::make_unique<CharacterClass>(
5320 std::initializer_list<UChar32>({}),
5321 std::initializer_list<CharacterRange>({}),
5322 std::initializer_list<UChar32>({}),
5323 std::initializer_list<CharacterRange>({{0xa800, 0xa82b}}),
5324 CharacterClassWidths::HasBMPChars);
5325 return characterClass;
5326}
5327
5328static std::unique_ptr<CharacterClass> createCharacterClass151()
5329{
5330 // Name = Old_Persian, number of codePoints: 50
5331 auto characterClass = std::make_unique<CharacterClass>(
5332 std::initializer_list<UChar32>({}),
5333 std::initializer_list<CharacterRange>({}),
5334 std::initializer_list<UChar32>({}),
5335 std::initializer_list<CharacterRange>({{0x103a0, 0x103c3}, {0x103c8, 0x103d5}}),
5336 CharacterClassWidths::HasNonBMPChars);
5337 return characterClass;
5338}
5339
5340static std::unique_ptr<CharacterClass> createCharacterClass152()
5341{
5342 // Name = Kharoshthi, number of codePoints: 68
5343 auto characterClass = std::make_unique<CharacterClass>(
5344 std::initializer_list<UChar32>({}),
5345 std::initializer_list<CharacterRange>({}),
5346 std::initializer_list<UChar32>({}),
5347 std::initializer_list<CharacterRange>({{0x10a00, 0x10a03}, {0x10a05, 0x10a06}, {0x10a0c, 0x10a13}, {0x10a15, 0x10a17},
5348 {0x10a19, 0x10a35}, {0x10a38, 0x10a3a}, {0x10a3f, 0x10a48}, {0x10a50, 0x10a58}}),
5349 CharacterClassWidths::HasNonBMPChars);
5350 return characterClass;
5351}
5352
5353static std::unique_ptr<CharacterClass> createCharacterClass153()
5354{
5355 // Name = Balinese, number of codePoints: 121
5356 auto characterClass = std::make_unique<CharacterClass>(
5357 std::initializer_list<UChar32>({}),
5358 std::initializer_list<CharacterRange>({}),
5359 std::initializer_list<UChar32>({}),
5360 std::initializer_list<CharacterRange>({{0x1b00, 0x1b4b}, {0x1b50, 0x1b7c}}),
5361 CharacterClassWidths::HasBMPChars);
5362 return characterClass;
5363}
5364
5365static std::unique_ptr<CharacterClass> createCharacterClass154()
5366{
5367 // Name = Cuneiform, number of codePoints: 1234
5368 auto characterClass = std::make_unique<CharacterClass>(
5369 std::initializer_list<UChar32>({}),
5370 std::initializer_list<CharacterRange>({}),
5371 std::initializer_list<UChar32>({}),
5372 std::initializer_list<CharacterRange>({{0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12470, 0x12474}, {0x12480, 0x12543}}),
5373 CharacterClassWidths::HasNonBMPChars);
5374 return characterClass;
5375}
5376
5377static std::unique_ptr<CharacterClass> createCharacterClass155()
5378{
5379 // Name = Phoenician, number of codePoints: 29
5380 auto characterClass = std::make_unique<CharacterClass>(
5381 std::initializer_list<UChar32>({}),
5382 std::initializer_list<CharacterRange>({}),
5383 std::initializer_list<UChar32>({0x1091f}),
5384 std::initializer_list<CharacterRange>({{0x10900, 0x1091b}}),
5385 CharacterClassWidths::HasNonBMPChars);
5386 return characterClass;
5387}
5388
5389static std::unique_ptr<CharacterClass> createCharacterClass156()
5390{
5391 // Name = Phags_Pa, number of codePoints: 56
5392 auto characterClass = std::make_unique<CharacterClass>(
5393 std::initializer_list<UChar32>({}),
5394 std::initializer_list<CharacterRange>({}),
5395 std::initializer_list<UChar32>({}),
5396 std::initializer_list<CharacterRange>({{0xa840, 0xa877}}),
5397 CharacterClassWidths::HasBMPChars);
5398 return characterClass;
5399}
5400
5401static std::unique_ptr<CharacterClass> createCharacterClass157()
5402{
5403 // Name = Nko, number of codePoints: 62
5404 auto characterClass = std::make_unique<CharacterClass>(
5405 std::initializer_list<UChar32>({}),
5406 std::initializer_list<CharacterRange>({}),
5407 std::initializer_list<UChar32>({}),
5408 std::initializer_list<CharacterRange>({{0x07c0, 0x07fa}, {0x07fd, 0x07ff}}),
5409 CharacterClassWidths::HasBMPChars);
5410 return characterClass;
5411}
5412
5413static std::unique_ptr<CharacterClass> createCharacterClass158()
5414{
5415 // Name = Sundanese, number of codePoints: 72
5416 auto characterClass = std::make_unique<CharacterClass>(
5417 std::initializer_list<UChar32>({}),
5418 std::initializer_list<CharacterRange>({}),
5419 std::initializer_list<UChar32>({}),
5420 std::initializer_list<CharacterRange>({{0x1b80, 0x1bbf}, {0x1cc0, 0x1cc7}}),
5421 CharacterClassWidths::HasBMPChars);
5422 return characterClass;
5423}
5424
5425static std::unique_ptr<CharacterClass> createCharacterClass159()
5426{
5427 // Name = Lepcha, number of codePoints: 74
5428 auto characterClass = std::make_unique<CharacterClass>(
5429 std::initializer_list<UChar32>({}),
5430 std::initializer_list<CharacterRange>({}),
5431 std::initializer_list<UChar32>({}),
5432 std::initializer_list<CharacterRange>({{0x1c00, 0x1c37}, {0x1c3b, 0x1c49}, {0x1c4d, 0x1c4f}}),
5433 CharacterClassWidths::HasBMPChars);
5434 return characterClass;
5435}
5436
5437static std::unique_ptr<CharacterClass> createCharacterClass160()
5438{
5439 // Name = Ol_Chiki, number of codePoints: 48
5440 auto characterClass = std::make_unique<CharacterClass>(
5441 std::initializer_list<UChar32>({}),
5442 std::initializer_list<CharacterRange>({}),
5443 std::initializer_list<UChar32>({}),
5444 std::initializer_list<CharacterRange>({{0x1c50, 0x1c7f}}),
5445 CharacterClassWidths::HasBMPChars);
5446 return characterClass;
5447}
5448
5449static std::unique_ptr<CharacterClass> createCharacterClass161()
5450{
5451 // Name = Vai, number of codePoints: 300
5452 auto characterClass = std::make_unique<CharacterClass>(
5453 std::initializer_list<UChar32>({}),
5454 std::initializer_list<CharacterRange>({}),
5455 std::initializer_list<UChar32>({}),
5456 std::initializer_list<CharacterRange>({{0xa500, 0xa62b}}),
5457 CharacterClassWidths::HasBMPChars);
5458 return characterClass;
5459}
5460
5461static std::unique_ptr<CharacterClass> createCharacterClass162()
5462{
5463 // Name = Saurashtra, number of codePoints: 82
5464 auto characterClass = std::make_unique<CharacterClass>(
5465 std::initializer_list<UChar32>({}),
5466 std::initializer_list<CharacterRange>({}),
5467 std::initializer_list<UChar32>({}),
5468 std::initializer_list<CharacterRange>({{0xa880, 0xa8c5}, {0xa8ce, 0xa8d9}}),
5469 CharacterClassWidths::HasBMPChars);
5470 return characterClass;
5471}
5472
5473static std::unique_ptr<CharacterClass> createCharacterClass163()
5474{
5475 // Name = Kayah_Li, number of codePoints: 47
5476 auto characterClass = std::make_unique<CharacterClass>(
5477 std::initializer_list<UChar32>({}),
5478 std::initializer_list<CharacterRange>({}),
5479 std::initializer_list<UChar32>({0xa92f}),
5480 std::initializer_list<CharacterRange>({{0xa900, 0xa92d}}),
5481 CharacterClassWidths::HasBMPChars);
5482 return characterClass;
5483}
5484
5485static std::unique_ptr<CharacterClass> createCharacterClass164()
5486{
5487 // Name = Rejang, number of codePoints: 37
5488 auto characterClass = std::make_unique<CharacterClass>(
5489 std::initializer_list<UChar32>({}),
5490 std::initializer_list<CharacterRange>({}),
5491 std::initializer_list<UChar32>({0xa95f}),
5492 std::initializer_list<CharacterRange>({{0xa930, 0xa953}}),
5493 CharacterClassWidths::HasBMPChars);
5494 return characterClass;
5495}
5496
5497static std::unique_ptr<CharacterClass> createCharacterClass165()
5498{
5499 // Name = Lycian, number of codePoints: 29
5500 auto characterClass = std::make_unique<CharacterClass>(
5501 std::initializer_list<UChar32>({}),
5502 std::initializer_list<CharacterRange>({}),
5503 std::initializer_list<UChar32>({}),
5504 std::initializer_list<CharacterRange>({{0x10280, 0x1029c}}),
5505 CharacterClassWidths::HasNonBMPChars);
5506 return characterClass;
5507}
5508
5509static std::unique_ptr<CharacterClass> createCharacterClass166()
5510{
5511 // Name = Carian, number of codePoints: 49
5512 auto characterClass = std::make_unique<CharacterClass>(
5513 std::initializer_list<UChar32>({}),
5514 std::initializer_list<CharacterRange>({}),
5515 std::initializer_list<UChar32>({}),
5516 std::initializer_list<CharacterRange>({{0x102a0, 0x102d0}}),
5517 CharacterClassWidths::HasNonBMPChars);
5518 return characterClass;
5519}
5520
5521static std::unique_ptr<CharacterClass> createCharacterClass167()
5522{
5523 // Name = Lydian, number of codePoints: 27
5524 auto characterClass = std::make_unique<CharacterClass>(
5525 std::initializer_list<UChar32>({}),
5526 std::initializer_list<CharacterRange>({}),
5527 std::initializer_list<UChar32>({0x1093f}),
5528 std::initializer_list<CharacterRange>({{0x10920, 0x10939}}),
5529 CharacterClassWidths::HasNonBMPChars);
5530 return characterClass;
5531}
5532
5533static std::unique_ptr<CharacterClass> createCharacterClass168()
5534{
5535 // Name = Cham, number of codePoints: 83
5536 auto characterClass = std::make_unique<CharacterClass>(
5537 std::initializer_list<UChar32>({}),
5538 std::initializer_list<CharacterRange>({}),
5539 std::initializer_list<UChar32>({}),
5540 std::initializer_list<CharacterRange>({{0xaa00, 0xaa36}, {0xaa40, 0xaa4d}, {0xaa50, 0xaa59}, {0xaa5c, 0xaa5f}}),
5541 CharacterClassWidths::HasBMPChars);
5542 return characterClass;
5543}
5544
5545static std::unique_ptr<CharacterClass> createCharacterClass169()
5546{
5547 // Name = Tai_Tham, number of codePoints: 127
5548 auto characterClass = std::make_unique<CharacterClass>(
5549 std::initializer_list<UChar32>({}),
5550 std::initializer_list<CharacterRange>({}),
5551 std::initializer_list<UChar32>({}),
5552 std::initializer_list<CharacterRange>({{0x1a20, 0x1a5e}, {0x1a60, 0x1a7c}, {0x1a7f, 0x1a89}, {0x1a90, 0x1a99},
5553 {0x1aa0, 0x1aad}}),
5554 CharacterClassWidths::HasBMPChars);
5555 return characterClass;
5556}
5557
5558static std::unique_ptr<CharacterClass> createCharacterClass170()
5559{
5560 // Name = Tai_Viet, number of codePoints: 72
5561 auto characterClass = std::make_unique<CharacterClass>(
5562 std::initializer_list<UChar32>({}),
5563 std::initializer_list<CharacterRange>({}),
5564 std::initializer_list<UChar32>({}),
5565 std::initializer_list<CharacterRange>({{0xaa80, 0xaac2}, {0xaadb, 0xaadf}}),
5566 CharacterClassWidths::HasBMPChars);
5567 return characterClass;
5568}
5569
5570static std::unique_ptr<CharacterClass> createCharacterClass171()
5571{
5572 // Name = Avestan, number of codePoints: 61
5573 auto characterClass = std::make_unique<CharacterClass>(
5574 std::initializer_list<UChar32>({}),
5575 std::initializer_list<CharacterRange>({}),
5576 std::initializer_list<UChar32>({}),
5577 std::initializer_list<CharacterRange>({{0x10b00, 0x10b35}, {0x10b39, 0x10b3f}}),
5578 CharacterClassWidths::HasNonBMPChars);
5579 return characterClass;
5580}
5581
5582static std::unique_ptr<CharacterClass> createCharacterClass172()
5583{
5584 // Name = Egyptian_Hieroglyphs, number of codePoints: 1071
5585 auto characterClass = std::make_unique<CharacterClass>(
5586 std::initializer_list<UChar32>({}),
5587 std::initializer_list<CharacterRange>({}),
5588 std::initializer_list<UChar32>({}),
5589 std::initializer_list<CharacterRange>({{0x13000, 0x1342e}}),
5590 CharacterClassWidths::HasNonBMPChars);
5591 return characterClass;
5592}
5593
5594static std::unique_ptr<CharacterClass> createCharacterClass173()
5595{
5596 // Name = Samaritan, number of codePoints: 61
5597 auto characterClass = std::make_unique<CharacterClass>(
5598 std::initializer_list<UChar32>({}),
5599 std::initializer_list<CharacterRange>({}),
5600 std::initializer_list<UChar32>({}),
5601 std::initializer_list<CharacterRange>({{0x0800, 0x082d}, {0x0830, 0x083e}}),
5602 CharacterClassWidths::HasBMPChars);
5603 return characterClass;
5604}
5605
5606static std::unique_ptr<CharacterClass> createCharacterClass174()
5607{
5608 // Name = Lisu, number of codePoints: 48
5609 auto characterClass = std::make_unique<CharacterClass>(
5610 std::initializer_list<UChar32>({}),
5611 std::initializer_list<CharacterRange>({}),
5612 std::initializer_list<UChar32>({}),
5613 std::initializer_list<CharacterRange>({{0xa4d0, 0xa4ff}}),
5614 CharacterClassWidths::HasBMPChars);
5615 return characterClass;
5616}
5617
5618static std::unique_ptr<CharacterClass> createCharacterClass175()
5619{
5620 // Name = Bamum, number of codePoints: 657
5621 auto characterClass = std::make_unique<CharacterClass>(
5622 std::initializer_list<UChar32>({}),
5623 std::initializer_list<CharacterRange>({}),
5624 std::initializer_list<UChar32>({}),
5625 std::initializer_list<CharacterRange>({{0xa6a0, 0xa6f7}, {0x16800, 0x16a38}}),
5626 CharacterClassWidths::HasBothBMPAndNonBMP);
5627 return characterClass;
5628}
5629
5630static std::unique_ptr<CharacterClass> createCharacterClass176()
5631{
5632 // Name = Javanese, number of codePoints: 90
5633 auto characterClass = std::make_unique<CharacterClass>(
5634 std::initializer_list<UChar32>({}),
5635 std::initializer_list<CharacterRange>({}),
5636 std::initializer_list<UChar32>({}),
5637 std::initializer_list<CharacterRange>({{0xa980, 0xa9cd}, {0xa9d0, 0xa9d9}, {0xa9de, 0xa9df}}),
5638 CharacterClassWidths::HasBMPChars);
5639 return characterClass;
5640}
5641
5642static std::unique_ptr<CharacterClass> createCharacterClass177()
5643{
5644 // Name = Meetei_Mayek, number of codePoints: 79
5645 auto characterClass = std::make_unique<CharacterClass>(
5646 std::initializer_list<UChar32>({}),
5647 std::initializer_list<CharacterRange>({}),
5648 std::initializer_list<UChar32>({}),
5649 std::initializer_list<CharacterRange>({{0xaae0, 0xaaf6}, {0xabc0, 0xabed}, {0xabf0, 0xabf9}}),
5650 CharacterClassWidths::HasBMPChars);
5651 return characterClass;
5652}
5653
5654static std::unique_ptr<CharacterClass> createCharacterClass178()
5655{
5656 // Name = Imperial_Aramaic, number of codePoints: 31
5657 auto characterClass = std::make_unique<CharacterClass>(
5658 std::initializer_list<UChar32>({}),
5659 std::initializer_list<CharacterRange>({}),
5660 std::initializer_list<UChar32>({}),
5661 std::initializer_list<CharacterRange>({{0x10840, 0x10855}, {0x10857, 0x1085f}}),
5662 CharacterClassWidths::HasNonBMPChars);
5663 return characterClass;
5664}
5665
5666static std::unique_ptr<CharacterClass> createCharacterClass179()
5667{
5668 // Name = Old_South_Arabian, number of codePoints: 32
5669 auto characterClass = std::make_unique<CharacterClass>(
5670 std::initializer_list<UChar32>({}),
5671 std::initializer_list<CharacterRange>({}),
5672 std::initializer_list<UChar32>({}),
5673 std::initializer_list<CharacterRange>({{0x10a60, 0x10a7f}}),
5674 CharacterClassWidths::HasNonBMPChars);
5675 return characterClass;
5676}
5677
5678static std::unique_ptr<CharacterClass> createCharacterClass180()
5679{
5680 // Name = Inscriptional_Parthian, number of codePoints: 30
5681 auto characterClass = std::make_unique<CharacterClass>(
5682 std::initializer_list<UChar32>({}),
5683 std::initializer_list<CharacterRange>({}),
5684 std::initializer_list<UChar32>({}),
5685 std::initializer_list<CharacterRange>({{0x10b40, 0x10b55}, {0x10b58, 0x10b5f}}),
5686 CharacterClassWidths::HasNonBMPChars);
5687 return characterClass;
5688}
5689
5690static std::unique_ptr<CharacterClass> createCharacterClass181()
5691{
5692 // Name = Inscriptional_Pahlavi, number of codePoints: 27
5693 auto characterClass = std::make_unique<CharacterClass>(
5694 std::initializer_list<UChar32>({}),
5695 std::initializer_list<CharacterRange>({}),
5696 std::initializer_list<UChar32>({}),
5697 std::initializer_list<CharacterRange>({{0x10b60, 0x10b72}, {0x10b78, 0x10b7f}}),
5698 CharacterClassWidths::HasNonBMPChars);
5699 return characterClass;
5700}
5701
5702static std::unique_ptr<CharacterClass> createCharacterClass182()
5703{
5704 // Name = Old_Turkic, number of codePoints: 73
5705 auto characterClass = std::make_unique<CharacterClass>(
5706 std::initializer_list<UChar32>({}),
5707 std::initializer_list<CharacterRange>({}),
5708 std::initializer_list<UChar32>({}),
5709 std::initializer_list<CharacterRange>({{0x10c00, 0x10c48}}),
5710 CharacterClassWidths::HasNonBMPChars);
5711 return characterClass;
5712}
5713
5714static std::unique_ptr<CharacterClass> createCharacterClass183()
5715{
5716 // Name = Kaithi, number of codePoints: 67
5717 auto characterClass = std::make_unique<CharacterClass>(
5718 std::initializer_list<UChar32>({}),
5719 std::initializer_list<CharacterRange>({}),
5720 std::initializer_list<UChar32>({0x110cd}),
5721 std::initializer_list<CharacterRange>({{0x11080, 0x110c1}}),
5722 CharacterClassWidths::HasNonBMPChars);
5723 return characterClass;
5724}
5725
5726static std::unique_ptr<CharacterClass> createCharacterClass184()
5727{
5728 // Name = Batak, number of codePoints: 56
5729 auto characterClass = std::make_unique<CharacterClass>(
5730 std::initializer_list<UChar32>({}),
5731 std::initializer_list<CharacterRange>({}),
5732 std::initializer_list<UChar32>({}),
5733 std::initializer_list<CharacterRange>({{0x1bc0, 0x1bf3}, {0x1bfc, 0x1bff}}),
5734 CharacterClassWidths::HasBMPChars);
5735 return characterClass;
5736}
5737
5738static std::unique_ptr<CharacterClass> createCharacterClass185()
5739{
5740 // Name = Brahmi, number of codePoints: 109
5741 auto characterClass = std::make_unique<CharacterClass>(
5742 std::initializer_list<UChar32>({}),
5743 std::initializer_list<CharacterRange>({}),
5744 std::initializer_list<UChar32>({0x1107f}),
5745 std::initializer_list<CharacterRange>({{0x11000, 0x1104d}, {0x11052, 0x1106f}}),
5746 CharacterClassWidths::HasNonBMPChars);
5747 return characterClass;
5748}
5749
5750static std::unique_ptr<CharacterClass> createCharacterClass186()
5751{
5752 // Name = Mandaic, number of codePoints: 29
5753 auto characterClass = std::make_unique<CharacterClass>(
5754 std::initializer_list<UChar32>({}),
5755 std::initializer_list<CharacterRange>({}),
5756 std::initializer_list<UChar32>({0x085e}),
5757 std::initializer_list<CharacterRange>({{0x0840, 0x085b}}),
5758 CharacterClassWidths::HasBMPChars);
5759 return characterClass;
5760}
5761
5762static std::unique_ptr<CharacterClass> createCharacterClass187()
5763{
5764 // Name = Chakma, number of codePoints: 70
5765 auto characterClass = std::make_unique<CharacterClass>(
5766 std::initializer_list<UChar32>({}),
5767 std::initializer_list<CharacterRange>({}),
5768 std::initializer_list<UChar32>({}),
5769 std::initializer_list<CharacterRange>({{0x11100, 0x11134}, {0x11136, 0x11146}}),
5770 CharacterClassWidths::HasNonBMPChars);
5771 return characterClass;
5772}
5773
5774static std::unique_ptr<CharacterClass> createCharacterClass188()
5775{
5776 // Name = Meroitic_Cursive, number of codePoints: 90
5777 auto characterClass = std::make_unique<CharacterClass>(
5778 std::initializer_list<UChar32>({}),
5779 std::initializer_list<CharacterRange>({}),
5780 std::initializer_list<UChar32>({}),
5781 std::initializer_list<CharacterRange>({{0x109a0, 0x109b7}, {0x109bc, 0x109cf}, {0x109d2, 0x109ff}}),
5782 CharacterClassWidths::HasNonBMPChars);
5783 return characterClass;
5784}
5785
5786static std::unique_ptr<CharacterClass> createCharacterClass189()
5787{
5788 // Name = Meroitic_Hieroglyphs, number of codePoints: 32
5789 auto characterClass = std::make_unique<CharacterClass>(
5790 std::initializer_list<UChar32>({}),
5791 std::initializer_list<CharacterRange>({}),
5792 std::initializer_list<UChar32>({}),
5793 std::initializer_list<CharacterRange>({{0x10980, 0x1099f}}),
5794 CharacterClassWidths::HasNonBMPChars);
5795 return characterClass;
5796}
5797
5798static std::unique_ptr<CharacterClass> createCharacterClass190()
5799{
5800 // Name = Miao, number of codePoints: 133
5801 auto characterClass = std::make_unique<CharacterClass>(
5802 std::initializer_list<UChar32>({}),
5803 std::initializer_list<CharacterRange>({}),
5804 std::initializer_list<UChar32>({}),
5805 std::initializer_list<CharacterRange>({{0x16f00, 0x16f44}, {0x16f50, 0x16f7e}, {0x16f8f, 0x16f9f}}),
5806 CharacterClassWidths::HasNonBMPChars);
5807 return characterClass;
5808}
5809
5810static std::unique_ptr<CharacterClass> createCharacterClass191()
5811{
5812 // Name = Sharada, number of codePoints: 94
5813 auto characterClass = std::make_unique<CharacterClass>(
5814 std::initializer_list<UChar32>({}),
5815 std::initializer_list<CharacterRange>({}),
5816 std::initializer_list<UChar32>({}),
5817 std::initializer_list<CharacterRange>({{0x11180, 0x111cd}, {0x111d0, 0x111df}}),
5818 CharacterClassWidths::HasNonBMPChars);
5819 return characterClass;
5820}
5821
5822static std::unique_ptr<CharacterClass> createCharacterClass192()
5823{
5824 // Name = Sora_Sompeng, number of codePoints: 35
5825 auto characterClass = std::make_unique<CharacterClass>(
5826 std::initializer_list<UChar32>({}),
5827 std::initializer_list<CharacterRange>({}),
5828 std::initializer_list<UChar32>({}),
5829 std::initializer_list<CharacterRange>({{0x110d0, 0x110e8}, {0x110f0, 0x110f9}}),
5830 CharacterClassWidths::HasNonBMPChars);
5831 return characterClass;
5832}
5833
5834static std::unique_ptr<CharacterClass> createCharacterClass193()
5835{
5836 // Name = Takri, number of codePoints: 66
5837 auto characterClass = std::make_unique<CharacterClass>(
5838 std::initializer_list<UChar32>({}),
5839 std::initializer_list<CharacterRange>({}),
5840 std::initializer_list<UChar32>({}),
5841 std::initializer_list<CharacterRange>({{0x11680, 0x116b7}, {0x116c0, 0x116c9}}),
5842 CharacterClassWidths::HasNonBMPChars);
5843 return characterClass;
5844}
5845
5846static std::unique_ptr<CharacterClass> createCharacterClass194()
5847{
5848 // Name = Caucasian_Albanian, number of codePoints: 53
5849 auto characterClass = std::make_unique<CharacterClass>(
5850 std::initializer_list<UChar32>({}),
5851 std::initializer_list<CharacterRange>({}),
5852 std::initializer_list<UChar32>({0x1056f}),
5853 std::initializer_list<CharacterRange>({{0x10530, 0x10563}}),
5854 CharacterClassWidths::HasNonBMPChars);
5855 return characterClass;
5856}
5857
5858static std::unique_ptr<CharacterClass> createCharacterClass195()
5859{
5860 // Name = Bassa_Vah, number of codePoints: 36
5861 auto characterClass = std::make_unique<CharacterClass>(
5862 std::initializer_list<UChar32>({}),
5863 std::initializer_list<CharacterRange>({}),
5864 std::initializer_list<UChar32>({}),
5865 std::initializer_list<CharacterRange>({{0x16ad0, 0x16aed}, {0x16af0, 0x16af5}}),
5866 CharacterClassWidths::HasNonBMPChars);
5867 return characterClass;
5868}
5869
5870static std::unique_ptr<CharacterClass> createCharacterClass196()
5871{
5872 // Name = Duployan, number of codePoints: 143
5873 auto characterClass = std::make_unique<CharacterClass>(
5874 std::initializer_list<UChar32>({}),
5875 std::initializer_list<CharacterRange>({}),
5876 std::initializer_list<UChar32>({}),
5877 std::initializer_list<CharacterRange>({{0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99},
5878 {0x1bc9c, 0x1bc9f}}),
5879 CharacterClassWidths::HasNonBMPChars);
5880 return characterClass;
5881}
5882
5883static std::unique_ptr<CharacterClass> createCharacterClass197()
5884{
5885 // Name = Elbasan, number of codePoints: 40
5886 auto characterClass = std::make_unique<CharacterClass>(
5887 std::initializer_list<UChar32>({}),
5888 std::initializer_list<CharacterRange>({}),
5889 std::initializer_list<UChar32>({}),
5890 std::initializer_list<CharacterRange>({{0x10500, 0x10527}}),
5891 CharacterClassWidths::HasNonBMPChars);
5892 return characterClass;
5893}
5894
5895static std::unique_ptr<CharacterClass> createCharacterClass198()
5896{
5897 // Name = Grantha, number of codePoints: 85
5898 auto characterClass = std::make_unique<CharacterClass>(
5899 std::initializer_list<UChar32>({}),
5900 std::initializer_list<CharacterRange>({}),
5901 std::initializer_list<UChar32>({0x11350, 0x11357}),
5902 std::initializer_list<CharacterRange>({{0x11300, 0x11303}, {0x11305, 0x1130c}, {0x1130f, 0x11310}, {0x11313, 0x11328},
5903 {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133c, 0x11344},
5904 {0x11347, 0x11348}, {0x1134b, 0x1134d}, {0x1135d, 0x11363}, {0x11366, 0x1136c},
5905 {0x11370, 0x11374}}),
5906 CharacterClassWidths::HasNonBMPChars);
5907 return characterClass;
5908}
5909
5910static std::unique_ptr<CharacterClass> createCharacterClass199()
5911{
5912 // Name = Pahawh_Hmong, number of codePoints: 127
5913 auto characterClass = std::make_unique<CharacterClass>(
5914 std::initializer_list<UChar32>({}),
5915 std::initializer_list<CharacterRange>({}),
5916 std::initializer_list<UChar32>({}),
5917 std::initializer_list<CharacterRange>({{0x16b00, 0x16b45}, {0x16b50, 0x16b59}, {0x16b5b, 0x16b61}, {0x16b63, 0x16b77},
5918 {0x16b7d, 0x16b8f}}),
5919 CharacterClassWidths::HasNonBMPChars);
5920 return characterClass;
5921}
5922
5923static std::unique_ptr<CharacterClass> createCharacterClass200()
5924{
5925 // Name = Khojki, number of codePoints: 62
5926 auto characterClass = std::make_unique<CharacterClass>(
5927 std::initializer_list<UChar32>({}),
5928 std::initializer_list<CharacterRange>({}),
5929 std::initializer_list<UChar32>({}),
5930 std::initializer_list<CharacterRange>({{0x11200, 0x11211}, {0x11213, 0x1123e}}),
5931 CharacterClassWidths::HasNonBMPChars);
5932 return characterClass;
5933}
5934
5935static std::unique_ptr<CharacterClass> createCharacterClass201()
5936{
5937 // Name = Linear_A, number of codePoints: 341
5938 auto characterClass = std::make_unique<CharacterClass>(
5939 std::initializer_list<UChar32>({}),
5940 std::initializer_list<CharacterRange>({}),
5941 std::initializer_list<UChar32>({}),
5942 std::initializer_list<CharacterRange>({{0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}}),
5943 CharacterClassWidths::HasNonBMPChars);
5944 return characterClass;
5945}
5946
5947static std::unique_ptr<CharacterClass> createCharacterClass202()
5948{
5949 // Name = Mahajani, number of codePoints: 39
5950 auto characterClass = std::make_unique<CharacterClass>(
5951 std::initializer_list<UChar32>({}),
5952 std::initializer_list<CharacterRange>({}),
5953 std::initializer_list<UChar32>({}),
5954 std::initializer_list<CharacterRange>({{0x11150, 0x11176}}),
5955 CharacterClassWidths::HasNonBMPChars);
5956 return characterClass;
5957}
5958
5959static std::unique_ptr<CharacterClass> createCharacterClass203()
5960{
5961 // Name = Manichaean, number of codePoints: 51
5962 auto characterClass = std::make_unique<CharacterClass>(
5963 std::initializer_list<UChar32>({}),
5964 std::initializer_list<CharacterRange>({}),
5965 std::initializer_list<UChar32>({}),
5966 std::initializer_list<CharacterRange>({{0x10ac0, 0x10ae6}, {0x10aeb, 0x10af6}}),
5967 CharacterClassWidths::HasNonBMPChars);
5968 return characterClass;
5969}
5970
5971static std::unique_ptr<CharacterClass> createCharacterClass204()
5972{
5973 // Name = Mende_Kikakui, number of codePoints: 213
5974 auto characterClass = std::make_unique<CharacterClass>(
5975 std::initializer_list<UChar32>({}),
5976 std::initializer_list<CharacterRange>({}),
5977 std::initializer_list<UChar32>({}),
5978 std::initializer_list<CharacterRange>({{0x1e800, 0x1e8c4}, {0x1e8c7, 0x1e8d6}}),
5979 CharacterClassWidths::HasNonBMPChars);
5980 return characterClass;
5981}
5982
5983static std::unique_ptr<CharacterClass> createCharacterClass205()
5984{
5985 // Name = Modi, number of codePoints: 79
5986 auto characterClass = std::make_unique<CharacterClass>(
5987 std::initializer_list<UChar32>({}),
5988 std::initializer_list<CharacterRange>({}),
5989 std::initializer_list<UChar32>({}),
5990 std::initializer_list<CharacterRange>({{0x11600, 0x11644}, {0x11650, 0x11659}}),
5991 CharacterClassWidths::HasNonBMPChars);
5992 return characterClass;
5993}
5994
5995static std::unique_ptr<CharacterClass> createCharacterClass206()
5996{
5997 // Name = Mro, number of codePoints: 43
5998 auto characterClass = std::make_unique<CharacterClass>(
5999 std::initializer_list<UChar32>({}),
6000 std::initializer_list<CharacterRange>({}),
6001 std::initializer_list<UChar32>({}),
6002 std::initializer_list<CharacterRange>({{0x16a40, 0x16a5e}, {0x16a60, 0x16a69}, {0x16a6e, 0x16a6f}}),
6003 CharacterClassWidths::HasNonBMPChars);
6004 return characterClass;
6005}
6006
6007static std::unique_ptr<CharacterClass> createCharacterClass207()
6008{
6009 // Name = Old_North_Arabian, number of codePoints: 32
6010 auto characterClass = std::make_unique<CharacterClass>(
6011 std::initializer_list<UChar32>({}),
6012 std::initializer_list<CharacterRange>({}),
6013 std::initializer_list<UChar32>({}),
6014 std::initializer_list<CharacterRange>({{0x10a80, 0x10a9f}}),
6015 CharacterClassWidths::HasNonBMPChars);
6016 return characterClass;
6017}
6018
6019static std::unique_ptr<CharacterClass> createCharacterClass208()
6020{
6021 // Name = Nabataean, number of codePoints: 40
6022 auto characterClass = std::make_unique<CharacterClass>(
6023 std::initializer_list<UChar32>({}),
6024 std::initializer_list<CharacterRange>({}),
6025 std::initializer_list<UChar32>({}),
6026 std::initializer_list<CharacterRange>({{0x10880, 0x1089e}, {0x108a7, 0x108af}}),
6027 CharacterClassWidths::HasNonBMPChars);
6028 return characterClass;
6029}
6030
6031static std::unique_ptr<CharacterClass> createCharacterClass209()
6032{
6033 // Name = Palmyrene, number of codePoints: 32
6034 auto characterClass = std::make_unique<CharacterClass>(
6035 std::initializer_list<UChar32>({}),
6036 std::initializer_list<CharacterRange>({}),
6037 std::initializer_list<UChar32>({}),
6038 std::initializer_list<CharacterRange>({{0x10860, 0x1087f}}),
6039 CharacterClassWidths::HasNonBMPChars);
6040 return characterClass;
6041}
6042
6043static std::unique_ptr<CharacterClass> createCharacterClass210()
6044{
6045 // Name = Pau_Cin_Hau, number of codePoints: 57
6046 auto characterClass = std::make_unique<CharacterClass>(
6047 std::initializer_list<UChar32>({}),
6048 std::initializer_list<CharacterRange>({}),
6049 std::initializer_list<UChar32>({}),
6050 std::initializer_list<CharacterRange>({{0x11ac0, 0x11af8}}),
6051 CharacterClassWidths::HasNonBMPChars);
6052 return characterClass;
6053}
6054
6055static std::unique_ptr<CharacterClass> createCharacterClass211()
6056{
6057 // Name = Old_Permic, number of codePoints: 43
6058 auto characterClass = std::make_unique<CharacterClass>(
6059 std::initializer_list<UChar32>({}),
6060 std::initializer_list<CharacterRange>({}),
6061 std::initializer_list<UChar32>({}),
6062 std::initializer_list<CharacterRange>({{0x10350, 0x1037a}}),
6063 CharacterClassWidths::HasNonBMPChars);
6064 return characterClass;
6065}
6066
6067static std::unique_ptr<CharacterClass> createCharacterClass212()
6068{
6069 // Name = Psalter_Pahlavi, number of codePoints: 29
6070 auto characterClass = std::make_unique<CharacterClass>(
6071 std::initializer_list<UChar32>({}),
6072 std::initializer_list<CharacterRange>({}),
6073 std::initializer_list<UChar32>({}),
6074 std::initializer_list<CharacterRange>({{0x10b80, 0x10b91}, {0x10b99, 0x10b9c}, {0x10ba9, 0x10baf}}),
6075 CharacterClassWidths::HasNonBMPChars);
6076 return characterClass;
6077}
6078
6079static std::unique_ptr<CharacterClass> createCharacterClass213()
6080{
6081 // Name = Siddham, number of codePoints: 92
6082 auto characterClass = std::make_unique<CharacterClass>(
6083 std::initializer_list<UChar32>({}),
6084 std::initializer_list<CharacterRange>({}),
6085 std::initializer_list<UChar32>({}),
6086 std::initializer_list<CharacterRange>({{0x11580, 0x115b5}, {0x115b8, 0x115dd}}),
6087 CharacterClassWidths::HasNonBMPChars);
6088 return characterClass;
6089}
6090
6091static std::unique_ptr<CharacterClass> createCharacterClass214()
6092{
6093 // Name = Khudawadi, number of codePoints: 69
6094 auto characterClass = std::make_unique<CharacterClass>(
6095 std::initializer_list<UChar32>({}),
6096 std::initializer_list<CharacterRange>({}),
6097 std::initializer_list<UChar32>({}),
6098 std::initializer_list<CharacterRange>({{0x112b0, 0x112ea}, {0x112f0, 0x112f9}}),
6099 CharacterClassWidths::HasNonBMPChars);
6100 return characterClass;
6101}
6102
6103static std::unique_ptr<CharacterClass> createCharacterClass215()
6104{
6105 // Name = Tirhuta, number of codePoints: 82
6106 auto characterClass = std::make_unique<CharacterClass>(
6107 std::initializer_list<UChar32>({}),
6108 std::initializer_list<CharacterRange>({}),
6109 std::initializer_list<UChar32>({}),
6110 std::initializer_list<CharacterRange>({{0x11480, 0x114c7}, {0x114d0, 0x114d9}}),
6111 CharacterClassWidths::HasNonBMPChars);
6112 return characterClass;
6113}
6114
6115static std::unique_ptr<CharacterClass> createCharacterClass216()
6116{
6117 // Name = Warang_Citi, number of codePoints: 84
6118 auto characterClass = std::make_unique<CharacterClass>(
6119 std::initializer_list<UChar32>({}),
6120 std::initializer_list<CharacterRange>({}),
6121 std::initializer_list<UChar32>({0x118ff}),
6122 std::initializer_list<CharacterRange>({{0x118a0, 0x118f2}}),
6123 CharacterClassWidths::HasNonBMPChars);
6124 return characterClass;
6125}
6126
6127static std::unique_ptr<CharacterClass> createCharacterClass217()
6128{
6129 // Name = Ahom, number of codePoints: 58
6130 auto characterClass = std::make_unique<CharacterClass>(
6131 std::initializer_list<UChar32>({}),
6132 std::initializer_list<CharacterRange>({}),
6133 std::initializer_list<UChar32>({}),
6134 std::initializer_list<CharacterRange>({{0x11700, 0x1171a}, {0x1171d, 0x1172b}, {0x11730, 0x1173f}}),
6135 CharacterClassWidths::HasNonBMPChars);
6136 return characterClass;
6137}
6138
6139static std::unique_ptr<CharacterClass> createCharacterClass218()
6140{
6141 // Name = Anatolian_Hieroglyphs, number of codePoints: 583
6142 auto characterClass = std::make_unique<CharacterClass>(
6143 std::initializer_list<UChar32>({}),
6144 std::initializer_list<CharacterRange>({}),
6145 std::initializer_list<UChar32>({}),
6146 std::initializer_list<CharacterRange>({{0x14400, 0x14646}}),
6147 CharacterClassWidths::HasNonBMPChars);
6148 return characterClass;
6149}
6150
6151static std::unique_ptr<CharacterClass> createCharacterClass219()
6152{
6153 // Name = Hatran, number of codePoints: 26
6154 auto characterClass = std::make_unique<CharacterClass>(
6155 std::initializer_list<UChar32>({}),
6156 std::initializer_list<CharacterRange>({}),
6157 std::initializer_list<UChar32>({}),
6158 std::initializer_list<CharacterRange>({{0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x108fb, 0x108ff}}),
6159 CharacterClassWidths::HasNonBMPChars);
6160 return characterClass;
6161}
6162
6163static std::unique_ptr<CharacterClass> createCharacterClass220()
6164{
6165 // Name = Multani, number of codePoints: 38
6166 auto characterClass = std::make_unique<CharacterClass>(
6167 std::initializer_list<UChar32>({}),
6168 std::initializer_list<CharacterRange>({}),
6169 std::initializer_list<UChar32>({0x11288}),
6170 std::initializer_list<CharacterRange>({{0x11280, 0x11286}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a9}}),
6171 CharacterClassWidths::HasNonBMPChars);
6172 return characterClass;
6173}
6174
6175static std::unique_ptr<CharacterClass> createCharacterClass221()
6176{
6177 // Name = Old_Hungarian, number of codePoints: 108
6178 auto characterClass = std::make_unique<CharacterClass>(
6179 std::initializer_list<UChar32>({}),
6180 std::initializer_list<CharacterRange>({}),
6181 std::initializer_list<UChar32>({}),
6182 std::initializer_list<CharacterRange>({{0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10cfa, 0x10cff}}),
6183 CharacterClassWidths::HasNonBMPChars);
6184 return characterClass;
6185}
6186
6187static std::unique_ptr<CharacterClass> createCharacterClass222()
6188{
6189 // Name = SignWriting, number of codePoints: 672
6190 auto characterClass = std::make_unique<CharacterClass>(
6191 std::initializer_list<UChar32>({}),
6192 std::initializer_list<CharacterRange>({}),
6193 std::initializer_list<UChar32>({}),
6194 std::initializer_list<CharacterRange>({{0x1d800, 0x1da8b}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}}),
6195 CharacterClassWidths::HasNonBMPChars);
6196 return characterClass;
6197}
6198
6199static std::unique_ptr<CharacterClass> createCharacterClass223()
6200{
6201 // Name = Adlam, number of codePoints: 87
6202 auto characterClass = std::make_unique<CharacterClass>(
6203 std::initializer_list<UChar32>({}),
6204 std::initializer_list<CharacterRange>({}),
6205 std::initializer_list<UChar32>({}),
6206 std::initializer_list<CharacterRange>({{0x1e900, 0x1e94a}, {0x1e950, 0x1e959}, {0x1e95e, 0x1e95f}}),
6207 CharacterClassWidths::HasNonBMPChars);
6208 return characterClass;
6209}
6210
6211static std::unique_ptr<CharacterClass> createCharacterClass224()
6212{
6213 // Name = Bhaiksuki, number of codePoints: 97
6214 auto characterClass = std::make_unique<CharacterClass>(
6215 std::initializer_list<UChar32>({}),
6216 std::initializer_list<CharacterRange>({}),
6217 std::initializer_list<UChar32>({}),
6218 std::initializer_list<CharacterRange>({{0x11c00, 0x11c08}, {0x11c0a, 0x11c36}, {0x11c38, 0x11c45}, {0x11c50, 0x11c6c}}),
6219 CharacterClassWidths::HasNonBMPChars);
6220 return characterClass;
6221}
6222
6223static std::unique_ptr<CharacterClass> createCharacterClass225()
6224{
6225 // Name = Marchen, number of codePoints: 68
6226 auto characterClass = std::make_unique<CharacterClass>(
6227 std::initializer_list<UChar32>({}),
6228 std::initializer_list<CharacterRange>({}),
6229 std::initializer_list<UChar32>({}),
6230 std::initializer_list<CharacterRange>({{0x11c70, 0x11c8f}, {0x11c92, 0x11ca7}, {0x11ca9, 0x11cb6}}),
6231 CharacterClassWidths::HasNonBMPChars);
6232 return characterClass;
6233}
6234
6235static std::unique_ptr<CharacterClass> createCharacterClass226()
6236{
6237 // Name = Newa, number of codePoints: 93
6238 auto characterClass = std::make_unique<CharacterClass>(
6239 std::initializer_list<UChar32>({}),
6240 std::initializer_list<CharacterRange>({}),
6241 std::initializer_list<UChar32>({0x1145b}),
6242 std::initializer_list<CharacterRange>({{0x11400, 0x11459}, {0x1145d, 0x1145e}}),
6243 CharacterClassWidths::HasNonBMPChars);
6244 return characterClass;
6245}
6246
6247static std::unique_ptr<CharacterClass> createCharacterClass227()
6248{
6249 // Name = Osage, number of codePoints: 72
6250 auto characterClass = std::make_unique<CharacterClass>(
6251 std::initializer_list<UChar32>({}),
6252 std::initializer_list<CharacterRange>({}),
6253 std::initializer_list<UChar32>({}),
6254 std::initializer_list<CharacterRange>({{0x104b0, 0x104d3}, {0x104d8, 0x104fb}}),
6255 CharacterClassWidths::HasNonBMPChars);
6256 return characterClass;
6257}
6258
6259static std::unique_ptr<CharacterClass> createCharacterClass228()
6260{
6261 // Name = Tangut, number of codePoints: 6886
6262 auto characterClass = std::make_unique<CharacterClass>(
6263 std::initializer_list<UChar32>({}),
6264 std::initializer_list<CharacterRange>({}),
6265 std::initializer_list<UChar32>({0x16fe0}),
6266 std::initializer_list<CharacterRange>({{0x17000, 0x187f1}, {0x18800, 0x18af2}}),
6267 CharacterClassWidths::HasNonBMPChars);
6268 return characterClass;
6269}
6270
6271static std::unique_ptr<CharacterClass> createCharacterClass229()
6272{
6273 // Name = Masaram_Gondi, number of codePoints: 75
6274 auto characterClass = std::make_unique<CharacterClass>(
6275 std::initializer_list<UChar32>({}),
6276 std::initializer_list<CharacterRange>({}),
6277 std::initializer_list<UChar32>({0x11d3a}),
6278 std::initializer_list<CharacterRange>({{0x11d00, 0x11d06}, {0x11d08, 0x11d09}, {0x11d0b, 0x11d36}, {0x11d3c, 0x11d3d},
6279 {0x11d3f, 0x11d47}, {0x11d50, 0x11d59}}),
6280 CharacterClassWidths::HasNonBMPChars);
6281 return characterClass;
6282}
6283
6284static std::unique_ptr<CharacterClass> createCharacterClass230()
6285{
6286 // Name = Nushu, number of codePoints: 397
6287 auto characterClass = std::make_unique<CharacterClass>(
6288 std::initializer_list<UChar32>({}),
6289 std::initializer_list<CharacterRange>({}),
6290 std::initializer_list<UChar32>({0x16fe1}),
6291 std::initializer_list<CharacterRange>({{0x1b170, 0x1b2fb}}),
6292 CharacterClassWidths::HasNonBMPChars);
6293 return characterClass;
6294}
6295
6296static std::unique_ptr<CharacterClass> createCharacterClass231()
6297{
6298 // Name = Soyombo, number of codePoints: 81
6299 auto characterClass = std::make_unique<CharacterClass>(
6300 std::initializer_list<UChar32>({}),
6301 std::initializer_list<CharacterRange>({}),
6302 std::initializer_list<UChar32>({}),
6303 std::initializer_list<CharacterRange>({{0x11a50, 0x11a83}, {0x11a86, 0x11aa2}}),
6304 CharacterClassWidths::HasNonBMPChars);
6305 return characterClass;
6306}
6307
6308static std::unique_ptr<CharacterClass> createCharacterClass232()
6309{
6310 // Name = Zanabazar_Square, number of codePoints: 72
6311 auto characterClass = std::make_unique<CharacterClass>(
6312 std::initializer_list<UChar32>({}),
6313 std::initializer_list<CharacterRange>({}),
6314 std::initializer_list<UChar32>({}),
6315 std::initializer_list<CharacterRange>({{0x11a00, 0x11a47}}),
6316 CharacterClassWidths::HasNonBMPChars);
6317 return characterClass;
6318}
6319
6320static std::unique_ptr<CharacterClass> createCharacterClass233()
6321{
6322 // Name = Dogra, number of codePoints: 60
6323 auto characterClass = std::make_unique<CharacterClass>(
6324 std::initializer_list<UChar32>({}),
6325 std::initializer_list<CharacterRange>({}),
6326 std::initializer_list<UChar32>({}),
6327 std::initializer_list<CharacterRange>({{0x11800, 0x1183b}}),
6328 CharacterClassWidths::HasNonBMPChars);
6329 return characterClass;
6330}
6331
6332static std::unique_ptr<CharacterClass> createCharacterClass234()
6333{
6334 // Name = Gunjala_Gondi, number of codePoints: 63
6335 auto characterClass = std::make_unique<CharacterClass>(
6336 std::initializer_list<UChar32>({}),
6337 std::initializer_list<CharacterRange>({}),
6338 std::initializer_list<UChar32>({}),
6339 std::initializer_list<CharacterRange>({{0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d8e}, {0x11d90, 0x11d91},
6340 {0x11d93, 0x11d98}, {0x11da0, 0x11da9}}),
6341 CharacterClassWidths::HasNonBMPChars);
6342 return characterClass;
6343}
6344
6345static std::unique_ptr<CharacterClass> createCharacterClass235()
6346{
6347 // Name = Makasar, number of codePoints: 25
6348 auto characterClass = std::make_unique<CharacterClass>(
6349 std::initializer_list<UChar32>({}),
6350 std::initializer_list<CharacterRange>({}),
6351 std::initializer_list<UChar32>({}),
6352 std::initializer_list<CharacterRange>({{0x11ee0, 0x11ef8}}),
6353 CharacterClassWidths::HasNonBMPChars);
6354 return characterClass;
6355}
6356
6357static std::unique_ptr<CharacterClass> createCharacterClass236()
6358{
6359 // Name = Medefaidrin, number of codePoints: 91
6360 auto characterClass = std::make_unique<CharacterClass>(
6361 std::initializer_list<UChar32>({}),
6362 std::initializer_list<CharacterRange>({}),
6363 std::initializer_list<UChar32>({}),
6364 std::initializer_list<CharacterRange>({{0x16e40, 0x16e9a}}),
6365 CharacterClassWidths::HasNonBMPChars);
6366 return characterClass;
6367}
6368
6369static std::unique_ptr<CharacterClass> createCharacterClass237()
6370{
6371 // Name = Hanifi_Rohingya, number of codePoints: 50
6372 auto characterClass = std::make_unique<CharacterClass>(
6373 std::initializer_list<UChar32>({}),
6374 std::initializer_list<CharacterRange>({}),
6375 std::initializer_list<UChar32>({}),
6376 std::initializer_list<CharacterRange>({{0x10d00, 0x10d27}, {0x10d30, 0x10d39}}),
6377 CharacterClassWidths::HasNonBMPChars);
6378 return characterClass;
6379}
6380
6381static std::unique_ptr<CharacterClass> createCharacterClass238()
6382{
6383 // Name = Sogdian, number of codePoints: 42
6384 auto characterClass = std::make_unique<CharacterClass>(
6385 std::initializer_list<UChar32>({}),
6386 std::initializer_list<CharacterRange>({}),
6387 std::initializer_list<UChar32>({}),
6388 std::initializer_list<CharacterRange>({{0x10f30, 0x10f59}}),
6389 CharacterClassWidths::HasNonBMPChars);
6390 return characterClass;
6391}
6392
6393static std::unique_ptr<CharacterClass> createCharacterClass239()
6394{
6395 // Name = Old_Sogdian, number of codePoints: 40
6396 auto characterClass = std::make_unique<CharacterClass>(
6397 std::initializer_list<UChar32>({}),
6398 std::initializer_list<CharacterRange>({}),
6399 std::initializer_list<UChar32>({}),
6400 std::initializer_list<CharacterRange>({{0x10f00, 0x10f27}}),
6401 CharacterClassWidths::HasNonBMPChars);
6402 return characterClass;
6403}
6404
6405static std::unique_ptr<CharacterClass> createCharacterClass240()
6406{
6407 // Name = Common, number of codePoints: 7209
6408 auto characterClass = std::make_unique<CharacterClass>(
6409 std::initializer_list<UChar32>({}),
6410 std::initializer_list<CharacterRange>({{0x00, 0x40}, {0x5b, 0x60}, {0x7b, 0x7f}}),
6411 std::initializer_list<UChar32>({0x00d7, 0x00f7, 0x0374, 0x037e, 0x0385, 0x0387, 0x0605, 0x06dd,
6412 0x08e2, 0x0e3f, 0x3000, 0x3004, 0x3012, 0x3020, 0x3036, 0x327f,
6413 0x33ff, 0xab5b, 0xfeff, 0x1d4a2, 0x1d4bb, 0x1d546, 0x1f97a, 0xe0001}),
6414 std::initializer_list<CharacterRange>({{0x0080, 0x00a9}, {0x00ab, 0x00b9}, {0x00bb, 0x00bf}, {0x02b9, 0x02df},
6415 {0x02e5, 0x02e9}, {0x02ec, 0x02ff}, {0x0fd5, 0x0fd8}, {0x16eb, 0x16ed},
6416 {0x2000, 0x200b}, {0x200e, 0x2064}, {0x2066, 0x2070}, {0x2074, 0x207e},
6417 {0x2080, 0x208e}, {0x20a0, 0x20bf}, {0x2100, 0x2125}, {0x2127, 0x2129},
6418 {0x212c, 0x2131}, {0x2133, 0x214d}, {0x214f, 0x215f}, {0x2189, 0x218b},
6419 {0x2190, 0x2426}, {0x2440, 0x244a}, {0x2460, 0x27ff}, {0x2900, 0x2b73},
6420 {0x2b76, 0x2b95}, {0x2b98, 0x2bc8}, {0x2bca, 0x2bfe}, {0x2e00, 0x2e42},
6421 {0x2e44, 0x2e4e}, {0x2ff0, 0x2ffb}, {0x3248, 0x325f}, {0x32b1, 0x32bf},
6422 {0x32cc, 0x32cf}, {0x3371, 0x337a}, {0x3380, 0x33df}, {0x4dc0, 0x4dff},
6423 {0xa700, 0xa721}, {0xa788, 0xa78a}, {0xfd3e, 0xfd3f}, {0xfe10, 0xfe19},
6424 {0xfe30, 0xfe44}, {0xfe47, 0xfe52}, {0xfe54, 0xfe66}, {0xfe68, 0xfe6b},
6425 {0xff01, 0xff20}, {0xff3b, 0xff40}, {0xff5b, 0xff60}, {0xffe0, 0xffe6},
6426 {0xffe8, 0xffee}, {0xfff9, 0xfffd}, {0x10190, 0x1019b}, {0x101d0, 0x101fc},
6427 {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d129, 0x1d166}, {0x1d16a, 0x1d17a},
6428 {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9}, {0x1d1ae, 0x1d1e8}, {0x1d2e0, 0x1d2f3},
6429 {0x1d300, 0x1d356}, {0x1d372, 0x1d378}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c},
6430 {0x1d49e, 0x1d49f}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9},
6431 {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
6432 {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544},
6433 {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d7cb}, {0x1d7ce, 0x1d7ff},
6434 {0x1ec71, 0x1ecb4}, {0x1f000, 0x1f02b}, {0x1f030, 0x1f093}, {0x1f0a0, 0x1f0ae},
6435 {0x1f0b1, 0x1f0bf}, {0x1f0c1, 0x1f0cf}, {0x1f0d1, 0x1f0f5}, {0x1f100, 0x1f10c},
6436 {0x1f110, 0x1f16b}, {0x1f170, 0x1f1ac}, {0x1f1e6, 0x1f1ff}, {0x1f201, 0x1f202},
6437 {0x1f210, 0x1f23b}, {0x1f240, 0x1f248}, {0x1f260, 0x1f265}, {0x1f300, 0x1f6d4},
6438 {0x1f6e0, 0x1f6ec}, {0x1f6f0, 0x1f6f9}, {0x1f700, 0x1f773}, {0x1f780, 0x1f7d8},
6439 {0x1f800, 0x1f80b}, {0x1f810, 0x1f847}, {0x1f850, 0x1f859}, {0x1f860, 0x1f887},
6440 {0x1f890, 0x1f8ad}, {0x1f900, 0x1f90b}, {0x1f910, 0x1f93e}, {0x1f940, 0x1f970},
6441 {0x1f973, 0x1f976}, {0x1f97c, 0x1f9a2}, {0x1f9b0, 0x1f9b9}, {0x1f9c0, 0x1f9c2},
6442 {0x1f9d0, 0x1f9ff}, {0x1fa60, 0x1fa6d}, {0xe0020, 0xe007f}}),
6443 CharacterClassWidths::HasBothBMPAndNonBMP);
6444 return characterClass;
6445}
6446
6447static std::unique_ptr<CharacterClass> createCharacterClass241()
6448{
6449 // Name = Inherited, number of codePoints: 514
6450 auto characterClass = std::make_unique<CharacterClass>(
6451 std::initializer_list<UChar32>({}),
6452 std::initializer_list<CharacterRange>({}),
6453 std::initializer_list<UChar32>({0x101fd}),
6454 std::initializer_list<CharacterRange>({{0x0300, 0x0341}, {0x0343, 0x0344}, {0x0346, 0x0362}, {0x1ab0, 0x1abe},
6455 {0x1dc2, 0x1df9}, {0x1dfb, 0x1dff}, {0x200c, 0x200d}, {0x20d0, 0x20ef},
6456 {0xfe00, 0xfe0f}, {0xfe20, 0xfe2d}, {0x1d167, 0x1d169}, {0x1d17b, 0x1d182},
6457 {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef}}),
6458 CharacterClassWidths::HasBothBMPAndNonBMP);
6459 return characterClass;
6460}
6461
6462static std::unique_ptr<CharacterClass> createCharacterClass242()
6463{
6464 // Name = Bengali, number of codePoints: 112
6465 auto characterClass = std::make_unique<CharacterClass>(
6466 std::initializer_list<UChar32>({}),
6467 std::initializer_list<CharacterRange>({}),
6468 std::initializer_list<UChar32>({0x09b2, 0x09d7, 0x1cd0, 0x1cd2, 0x1cd8, 0x1ce1, 0x1cea, 0x1ced,
6469 0xa8f1}),
6470 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0x0980, 0x0983}, {0x0985, 0x098c},
6471 {0x098f, 0x0990}, {0x0993, 0x09a8}, {0x09aa, 0x09b0}, {0x09b6, 0x09b9},
6472 {0x09bc, 0x09c4}, {0x09c7, 0x09c8}, {0x09cb, 0x09ce}, {0x09dc, 0x09dd},
6473 {0x09df, 0x09e3}, {0x09e6, 0x09fe}, {0x1cd5, 0x1cd6}, {0x1cf5, 0x1cf7}}),
6474 CharacterClassWidths::HasBMPChars);
6475 return characterClass;
6476}
6477
6478static std::unique_ptr<CharacterClass> createCharacterClass243()
6479{
6480 // Name = Devanagari, number of codePoints: 212
6481 auto characterClass = std::make_unique<CharacterClass>(
6482 std::initializer_list<UChar32>({}),
6483 std::initializer_list<CharacterRange>({}),
6484 std::initializer_list<UChar32>({0x20f0}),
6485 std::initializer_list<CharacterRange>({{0x0900, 0x097f}, {0x1cd0, 0x1cf6}, {0x1cf8, 0x1cf9}, {0xa830, 0xa839},
6486 {0xa8e0, 0xa8ff}}),
6487 CharacterClassWidths::HasBMPChars);
6488 return characterClass;
6489}
6490
6491static std::unique_ptr<CharacterClass> createCharacterClass244()
6492{
6493 // Name = Duployan, number of codePoints: 147
6494 auto characterClass = std::make_unique<CharacterClass>(
6495 std::initializer_list<UChar32>({}),
6496 std::initializer_list<CharacterRange>({}),
6497 std::initializer_list<UChar32>({}),
6498 std::initializer_list<CharacterRange>({{0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99},
6499 {0x1bc9c, 0x1bca3}}),
6500 CharacterClassWidths::HasNonBMPChars);
6501 return characterClass;
6502}
6503
6504static std::unique_ptr<CharacterClass> createCharacterClass245()
6505{
6506 // Name = Greek, number of codePoints: 522
6507 auto characterClass = std::make_unique<CharacterClass>(
6508 std::initializer_list<UChar32>({}),
6509 std::initializer_list<CharacterRange>({}),
6510 std::initializer_list<UChar32>({0x0342, 0x0345, 0x037f, 0x0384, 0x0386, 0x038c, 0x1f59, 0x1f5b,
6511 0x1f5d, 0x2126, 0xab65, 0x101a0}),
6512 std::initializer_list<CharacterRange>({{0x0370, 0x0373}, {0x0375, 0x0377}, {0x037a, 0x037d}, {0x0388, 0x038a},
6513 {0x038e, 0x03a1}, {0x03a3, 0x03e1}, {0x03f0, 0x03ff}, {0x1d26, 0x1d2a},
6514 {0x1d5d, 0x1d61}, {0x1d66, 0x1d6a}, {0x1dbf, 0x1dc1}, {0x1f00, 0x1f15},
6515 {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
6516 {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fc4}, {0x1fc6, 0x1fd3},
6517 {0x1fd6, 0x1fdb}, {0x1fdd, 0x1fef}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffe},
6518 {0x10140, 0x1018e}, {0x1d200, 0x1d245}}),
6519 CharacterClassWidths::HasBothBMPAndNonBMP);
6520 return characterClass;
6521}
6522
6523static std::unique_ptr<CharacterClass> createCharacterClass246()
6524{
6525 // Name = Han, number of codePoints: 89512
6526 auto characterClass = std::make_unique<CharacterClass>(
6527 std::initializer_list<UChar32>({}),
6528 std::initializer_list<CharacterRange>({}),
6529 std::initializer_list<UChar32>({0x3003, 0x3030, 0x30fb}),
6530 std::initializer_list<CharacterRange>({{0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x3001, 0x3002},
6531 {0x3005, 0x3011}, {0x3013, 0x301f}, {0x3021, 0x302d}, {0x3037, 0x303f},
6532 {0x3190, 0x319f}, {0x31c0, 0x31e3}, {0x3220, 0x3247}, {0x3280, 0x32b0},
6533 {0x32c0, 0x32cb}, {0x3358, 0x3370}, {0x337b, 0x337f}, {0x33e0, 0x33fe},
6534 {0x3400, 0x4db5}, {0x4e00, 0x9fef}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9},
6535 {0xfe45, 0xfe46}, {0xff61, 0xff65}, {0x1d360, 0x1d371}, {0x1f250, 0x1f251},
6536 {0x20000, 0x2a6d6}, {0x2a700, 0x2b734}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1},
6537 {0x2ceb0, 0x2ebe0}, {0x2f800, 0x2fa1d}}),
6538 CharacterClassWidths::HasBothBMPAndNonBMP);
6539 return characterClass;
6540}
6541
6542static std::unique_ptr<CharacterClass> createCharacterClass247()
6543{
6544 // Name = Latin, number of codePoints: 1373
6545 auto characterClass = std::make_unique<CharacterClass>(
6546 std::initializer_list<UChar32>({}),
6547 std::initializer_list<CharacterRange>({{0x41, 0x5a}, {0x61, 0x7a}}),
6548 std::initializer_list<UChar32>({0x00aa, 0x00ba, 0x10fb, 0x2071, 0x207f, 0x20f0, 0x2132, 0x214e,
6549 0xa92e}),
6550 std::initializer_list<CharacterRange>({{0x00c0, 0x00d6}, {0x00d8, 0x00f6}, {0x00f8, 0x02b8}, {0x02e0, 0x02e4},
6551 {0x0363, 0x036f}, {0x0485, 0x0486}, {0x0951, 0x0952}, {0x1d00, 0x1d25},
6552 {0x1d2c, 0x1d5c}, {0x1d62, 0x1d65}, {0x1d6b, 0x1d77}, {0x1d79, 0x1dbe},
6553 {0x1e00, 0x1eff}, {0x2090, 0x209c}, {0x212a, 0x212b}, {0x2160, 0x2188},
6554 {0x2c60, 0x2c7f}, {0xa722, 0xa787}, {0xa78b, 0xa7b9}, {0xa7f7, 0xa7ff},
6555 {0xab30, 0xab5a}, {0xab5c, 0xab64}, {0xfb00, 0xfb06}, {0xff21, 0xff3a},
6556 {0xff41, 0xff5a}}),
6557 CharacterClassWidths::HasBMPChars);
6558 return characterClass;
6559}
6560
6561static std::unique_ptr<CharacterClass> createCharacterClass248()
6562{
6563 // Name = Arabic, number of codePoints: 1325
6564 auto characterClass = std::make_unique<CharacterClass>(
6565 std::initializer_list<UChar32>({}),
6566 std::initializer_list<CharacterRange>({}),
6567 std::initializer_list<UChar32>({0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42, 0x1ee47, 0x1ee49, 0x1ee4b,
6568 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d, 0x1ee5f, 0x1ee64, 0x1ee7e}),
6569 std::initializer_list<CharacterRange>({{0x0600, 0x0604}, {0x0606, 0x061c}, {0x061e, 0x06dc}, {0x06de, 0x06ff},
6570 {0x0750, 0x077f}, {0x08a0, 0x08b4}, {0x08b6, 0x08bd}, {0x08d3, 0x08e1},
6571 {0x08e3, 0x08ff}, {0xfb50, 0xfbc1}, {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f},
6572 {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfd}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc},
6573 {0x102e0, 0x102fb}, {0x10e60, 0x10e7e}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f},
6574 {0x1ee21, 0x1ee22}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f},
6575 {0x1ee51, 0x1ee52}, {0x1ee61, 0x1ee62}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72},
6576 {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b},
6577 {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x1eef0, 0x1eef1}}),
6578 CharacterClassWidths::HasBothBMPAndNonBMP);
6579 return characterClass;
6580}
6581
6582static std::unique_ptr<CharacterClass> createCharacterClass249()
6583{
6584 // Name = Coptic, number of codePoints: 165
6585 auto characterClass = std::make_unique<CharacterClass>(
6586 std::initializer_list<UChar32>({}),
6587 std::initializer_list<CharacterRange>({}),
6588 std::initializer_list<UChar32>({}),
6589 std::initializer_list<CharacterRange>({{0x03e2, 0x03ef}, {0x2c80, 0x2cf3}, {0x2cf9, 0x2cff}, {0x102e0, 0x102fb}}),
6590 CharacterClassWidths::HasBothBMPAndNonBMP);
6591 return characterClass;
6592}
6593
6594static std::unique_ptr<CharacterClass> createCharacterClass250()
6595{
6596 // Name = Hanifi_Rohingya, number of codePoints: 55
6597 auto characterClass = std::make_unique<CharacterClass>(
6598 std::initializer_list<UChar32>({}),
6599 std::initializer_list<CharacterRange>({}),
6600 std::initializer_list<UChar32>({0x060c, 0x061b, 0x061f, 0x0640, 0x06d4}),
6601 std::initializer_list<CharacterRange>({{0x10d00, 0x10d27}, {0x10d30, 0x10d39}}),
6602 CharacterClassWidths::HasBothBMPAndNonBMP);
6603 return characterClass;
6604}
6605
6606static std::unique_ptr<CharacterClass> createCharacterClass251()
6607{
6608 // Name = Syriac, number of codePoints: 105
6609 auto characterClass = std::make_unique<CharacterClass>(
6610 std::initializer_list<UChar32>({}),
6611 std::initializer_list<CharacterRange>({}),
6612 std::initializer_list<UChar32>({0x060c, 0x061f, 0x0640, 0x0670}),
6613 std::initializer_list<CharacterRange>({{0x061b, 0x061c}, {0x064b, 0x0655}, {0x0700, 0x070d}, {0x070f, 0x074a},
6614 {0x074d, 0x074f}, {0x0860, 0x086a}}),
6615 CharacterClassWidths::HasBMPChars);
6616 return characterClass;
6617}
6618
6619static std::unique_ptr<CharacterClass> createCharacterClass252()
6620{
6621 // Name = Thaana, number of codePoints: 66
6622 auto characterClass = std::make_unique<CharacterClass>(
6623 std::initializer_list<UChar32>({}),
6624 std::initializer_list<CharacterRange>({}),
6625 std::initializer_list<UChar32>({0x060c, 0x061f, 0xfdf2, 0xfdfd}),
6626 std::initializer_list<CharacterRange>({{0x061b, 0x061c}, {0x0660, 0x0669}, {0x0780, 0x07b1}}),
6627 CharacterClassWidths::HasBMPChars);
6628 return characterClass;
6629}
6630
6631static std::unique_ptr<CharacterClass> createCharacterClass253()
6632{
6633 // Name = Armenian, number of codePoints: 96
6634 auto characterClass = std::make_unique<CharacterClass>(
6635 std::initializer_list<UChar32>({}),
6636 std::initializer_list<CharacterRange>({}),
6637 std::initializer_list<UChar32>({}),
6638 std::initializer_list<CharacterRange>({{0x0531, 0x0556}, {0x0559, 0x058a}, {0x058d, 0x058f}, {0xfb13, 0xfb17}}),
6639 CharacterClassWidths::HasBMPChars);
6640 return characterClass;
6641}
6642
6643static std::unique_ptr<CharacterClass> createCharacterClass254()
6644{
6645 // Name = Georgian, number of codePoints: 175
6646 auto characterClass = std::make_unique<CharacterClass>(
6647 std::initializer_list<UChar32>({}),
6648 std::initializer_list<CharacterRange>({}),
6649 std::initializer_list<UChar32>({0x0589, 0x10c7, 0x10cd, 0x2d27, 0x2d2d}),
6650 std::initializer_list<CharacterRange>({{0x10a0, 0x10c5}, {0x10d0, 0x10ff}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf},
6651 {0x2d00, 0x2d25}}),
6652 CharacterClassWidths::HasBMPChars);
6653 return characterClass;
6654}
6655
6656static std::unique_ptr<CharacterClass> createCharacterClass255()
6657{
6658 // Name = Bopomofo, number of codePoints: 112
6659 auto characterClass = std::make_unique<CharacterClass>(
6660 std::initializer_list<UChar32>({}),
6661 std::initializer_list<CharacterRange>({}),
6662 std::initializer_list<UChar32>({0x3003, 0x3030, 0x3037, 0x30fb}),
6663 std::initializer_list<CharacterRange>({{0x02ea, 0x02eb}, {0x3001, 0x3002}, {0x3008, 0x3011}, {0x3013, 0x301f},
6664 {0x302a, 0x302d}, {0x3105, 0x312f}, {0x31a0, 0x31ba}, {0xfe45, 0xfe46},
6665 {0xff61, 0xff65}}),
6666 CharacterClassWidths::HasBMPChars);
6667 return characterClass;
6668}
6669
6670static std::unique_ptr<CharacterClass> createCharacterClass256()
6671{
6672 // Name = Buginese, number of codePoints: 31
6673 auto characterClass = std::make_unique<CharacterClass>(
6674 std::initializer_list<UChar32>({}),
6675 std::initializer_list<CharacterRange>({}),
6676 std::initializer_list<UChar32>({0xa9cf}),
6677 std::initializer_list<CharacterRange>({{0x1a00, 0x1a1b}, {0x1a1e, 0x1a1f}}),
6678 CharacterClassWidths::HasBMPChars);
6679 return characterClass;
6680}
6681
6682static std::unique_ptr<CharacterClass> createCharacterClass257()
6683{
6684 // Name = Javanese, number of codePoints: 91
6685 auto characterClass = std::make_unique<CharacterClass>(
6686 std::initializer_list<UChar32>({}),
6687 std::initializer_list<CharacterRange>({}),
6688 std::initializer_list<UChar32>({}),
6689 std::initializer_list<CharacterRange>({{0xa980, 0xa9cd}, {0xa9cf, 0xa9d9}, {0xa9de, 0xa9df}}),
6690 CharacterClassWidths::HasBMPChars);
6691 return characterClass;
6692}
6693
6694static std::unique_ptr<CharacterClass> createCharacterClass258()
6695{
6696 // Name = Cypriot, number of codePoints: 112
6697 auto characterClass = std::make_unique<CharacterClass>(
6698 std::initializer_list<UChar32>({}),
6699 std::initializer_list<CharacterRange>({}),
6700 std::initializer_list<UChar32>({0x10808, 0x1083c, 0x1083f}),
6701 std::initializer_list<CharacterRange>({{0x10100, 0x10102}, {0x10107, 0x10133}, {0x10137, 0x1013f}, {0x10800, 0x10805},
6702 {0x1080a, 0x10835}, {0x10837, 0x10838}}),
6703 CharacterClassWidths::HasNonBMPChars);
6704 return characterClass;
6705}
6706
6707static std::unique_ptr<CharacterClass> createCharacterClass259()
6708{
6709 // Name = Linear_B, number of codePoints: 268
6710 auto characterClass = std::make_unique<CharacterClass>(
6711 std::initializer_list<UChar32>({}),
6712 std::initializer_list<CharacterRange>({}),
6713 std::initializer_list<UChar32>({}),
6714 std::initializer_list<CharacterRange>({{0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d},
6715 {0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10100, 0x10102},
6716 {0x10107, 0x10133}, {0x10137, 0x1013f}}),
6717 CharacterClassWidths::HasNonBMPChars);
6718 return characterClass;
6719}
6720
6721static std::unique_ptr<CharacterClass> createCharacterClass260()
6722{
6723 // Name = Cyrillic, number of codePoints: 446
6724 auto characterClass = std::make_unique<CharacterClass>(
6725 std::initializer_list<UChar32>({}),
6726 std::initializer_list<CharacterRange>({}),
6727 std::initializer_list<UChar32>({0x1d2b, 0x1d78, 0x2e43}),
6728 std::initializer_list<CharacterRange>({{0x0400, 0x052f}, {0x1c80, 0x1c88}, {0x2de0, 0x2dff}, {0xa640, 0xa69f},
6729 {0xfe2e, 0xfe2f}}),
6730 CharacterClassWidths::HasBMPChars);
6731 return characterClass;
6732}
6733
6734static std::unique_ptr<CharacterClass> createCharacterClass261()
6735{
6736 // Name = Glagolitic, number of codePoints: 136
6737 auto characterClass = std::make_unique<CharacterClass>(
6738 std::initializer_list<UChar32>({}),
6739 std::initializer_list<CharacterRange>({}),
6740 std::initializer_list<UChar32>({0x0484, 0x0487, 0x2e43, 0xa66f}),
6741 std::initializer_list<CharacterRange>({{0x2c00, 0x2c2e}, {0x2c30, 0x2c5e}, {0x1e000, 0x1e006}, {0x1e008, 0x1e018},
6742 {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a}}),
6743 CharacterClassWidths::HasBothBMPAndNonBMP);
6744 return characterClass;
6745}
6746
6747static std::unique_ptr<CharacterClass> createCharacterClass262()
6748{
6749 // Name = Old_Permic, number of codePoints: 44
6750 auto characterClass = std::make_unique<CharacterClass>(
6751 std::initializer_list<UChar32>({}),
6752 std::initializer_list<CharacterRange>({}),
6753 std::initializer_list<UChar32>({0x0483}),
6754 std::initializer_list<CharacterRange>({{0x10350, 0x1037a}}),
6755 CharacterClassWidths::HasBothBMPAndNonBMP);
6756 return characterClass;
6757}
6758
6759static std::unique_ptr<CharacterClass> createCharacterClass263()
6760{
6761 // Name = Grantha, number of codePoints: 113
6762 auto characterClass = std::make_unique<CharacterClass>(
6763 std::initializer_list<UChar32>({}),
6764 std::initializer_list<CharacterRange>({}),
6765 std::initializer_list<UChar32>({0x1cd0, 0x20f0, 0x11350, 0x11357}),
6766 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0x0be6, 0x0bf3}, {0x1cd2, 0x1cd3},
6767 {0x1cf2, 0x1cf4}, {0x1cf8, 0x1cf9}, {0x11300, 0x11303}, {0x11305, 0x1130c},
6768 {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333},
6769 {0x11335, 0x11339}, {0x1133b, 0x11344}, {0x11347, 0x11348}, {0x1134b, 0x1134d},
6770 {0x1135d, 0x11363}, {0x11366, 0x1136c}, {0x11370, 0x11374}}),
6771 CharacterClassWidths::HasBothBMPAndNonBMP);
6772 return characterClass;
6773}
6774
6775static std::unique_ptr<CharacterClass> createCharacterClass264()
6776{
6777 // Name = Sharada, number of codePoints: 100
6778 auto characterClass = std::make_unique<CharacterClass>(
6779 std::initializer_list<UChar32>({}),
6780 std::initializer_list<CharacterRange>({}),
6781 std::initializer_list<UChar32>({0x0951, 0x1cd7, 0x1cd9, 0x1ce0}),
6782 std::initializer_list<CharacterRange>({{0x1cdc, 0x1cdd}, {0x11180, 0x111cd}, {0x111d0, 0x111df}}),
6783 CharacterClassWidths::HasBothBMPAndNonBMP);
6784 return characterClass;
6785}
6786
6787static std::unique_ptr<CharacterClass> createCharacterClass265()
6788{
6789 // Name = Tamil, number of codePoints: 82
6790 auto characterClass = std::make_unique<CharacterClass>(
6791 std::initializer_list<UChar32>({}),
6792 std::initializer_list<CharacterRange>({}),
6793 std::initializer_list<UChar32>({0x0b9c, 0x0bd0, 0x0bd7, 0x1cda, 0xa8f3, 0x11301, 0x11303}),
6794 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0x0b82, 0x0b83}, {0x0b85, 0x0b8a},
6795 {0x0b8e, 0x0b90}, {0x0b92, 0x0b95}, {0x0b99, 0x0b9a}, {0x0b9e, 0x0b9f},
6796 {0x0ba3, 0x0ba4}, {0x0ba8, 0x0baa}, {0x0bae, 0x0bb9}, {0x0bbe, 0x0bc2},
6797 {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcd}, {0x0be6, 0x0bfa}, {0x1133b, 0x1133c}}),
6798 CharacterClassWidths::HasBothBMPAndNonBMP);
6799 return characterClass;
6800}
6801
6802static std::unique_ptr<CharacterClass> createCharacterClass266()
6803{
6804 // Name = Gujarati, number of codePoints: 105
6805 auto characterClass = std::make_unique<CharacterClass>(
6806 std::initializer_list<UChar32>({}),
6807 std::initializer_list<CharacterRange>({}),
6808 std::initializer_list<UChar32>({0x0ad0}),
6809 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0x0a81, 0x0a83}, {0x0a85, 0x0a8d},
6810 {0x0a8f, 0x0a91}, {0x0a93, 0x0aa8}, {0x0aaa, 0x0ab0}, {0x0ab2, 0x0ab3},
6811 {0x0ab5, 0x0ab9}, {0x0abc, 0x0ac5}, {0x0ac7, 0x0ac9}, {0x0acb, 0x0acd},
6812 {0x0ae0, 0x0ae3}, {0x0ae6, 0x0af1}, {0x0af9, 0x0aff}, {0xa830, 0xa839}}),
6813 CharacterClassWidths::HasBMPChars);
6814 return characterClass;
6815}
6816
6817static std::unique_ptr<CharacterClass> createCharacterClass267()
6818{
6819 // Name = Khojki, number of codePoints: 82
6820 auto characterClass = std::make_unique<CharacterClass>(
6821 std::initializer_list<UChar32>({}),
6822 std::initializer_list<CharacterRange>({}),
6823 std::initializer_list<UChar32>({}),
6824 std::initializer_list<CharacterRange>({{0x0ae6, 0x0aef}, {0xa830, 0xa839}, {0x11200, 0x11211}, {0x11213, 0x1123e}}),
6825 CharacterClassWidths::HasBothBMPAndNonBMP);
6826 return characterClass;
6827}
6828
6829static std::unique_ptr<CharacterClass> createCharacterClass268()
6830{
6831 // Name = Gurmukhi, number of codePoints: 94
6832 auto characterClass = std::make_unique<CharacterClass>(
6833 std::initializer_list<UChar32>({}),
6834 std::initializer_list<CharacterRange>({}),
6835 std::initializer_list<UChar32>({0x0a3c, 0x0a51, 0x0a5e}),
6836 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0x0a01, 0x0a03}, {0x0a05, 0x0a0a},
6837 {0x0a0f, 0x0a10}, {0x0a13, 0x0a28}, {0x0a2a, 0x0a30}, {0x0a32, 0x0a33},
6838 {0x0a35, 0x0a36}, {0x0a38, 0x0a39}, {0x0a3e, 0x0a42}, {0x0a47, 0x0a48},
6839 {0x0a4b, 0x0a4d}, {0x0a59, 0x0a5c}, {0x0a66, 0x0a76}, {0xa830, 0xa839}}),
6840 CharacterClassWidths::HasBMPChars);
6841 return characterClass;
6842}
6843
6844static std::unique_ptr<CharacterClass> createCharacterClass269()
6845{
6846 // Name = Multani, number of codePoints: 48
6847 auto characterClass = std::make_unique<CharacterClass>(
6848 std::initializer_list<UChar32>({}),
6849 std::initializer_list<CharacterRange>({}),
6850 std::initializer_list<UChar32>({0x11288}),
6851 std::initializer_list<CharacterRange>({{0x0a66, 0x0a6f}, {0x11280, 0x11286}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d},
6852 {0x1129f, 0x112a9}}),
6853 CharacterClassWidths::HasBothBMPAndNonBMP);
6854 return characterClass;
6855}
6856
6857static std::unique_ptr<CharacterClass> createCharacterClass270()
6858{
6859 // Name = Hiragana, number of codePoints: 428
6860 auto characterClass = std::make_unique<CharacterClass>(
6861 std::initializer_list<UChar32>({}),
6862 std::initializer_list<CharacterRange>({}),
6863 std::initializer_list<UChar32>({0x3003, 0x3037, 0xff70, 0x1f200}),
6864 std::initializer_list<CharacterRange>({{0x3001, 0x3002}, {0x3008, 0x3011}, {0x3013, 0x301f}, {0x3030, 0x3035},
6865 {0x303c, 0x303d}, {0x3041, 0x3096}, {0x3099, 0x30a0}, {0x30fb, 0x30fc},
6866 {0xfe45, 0xfe46}, {0xff61, 0xff65}, {0xff9e, 0xff9f}, {0x1b001, 0x1b11e}}),
6867 CharacterClassWidths::HasBothBMPAndNonBMP);
6868 return characterClass;
6869}
6870
6871static std::unique_ptr<CharacterClass> createCharacterClass271()
6872{
6873 // Name = Katakana, number of codePoints: 352
6874 auto characterClass = std::make_unique<CharacterClass>(
6875 std::initializer_list<UChar32>({}),
6876 std::initializer_list<CharacterRange>({}),
6877 std::initializer_list<UChar32>({0x3003, 0x3037, 0x1b000}),
6878 std::initializer_list<CharacterRange>({{0x3001, 0x3002}, {0x3008, 0x3011}, {0x3013, 0x301f}, {0x3030, 0x3035},
6879 {0x303c, 0x303d}, {0x3099, 0x309c}, {0x30a0, 0x30ff}, {0x31f0, 0x31ff},
6880 {0x32d0, 0x32fe}, {0x3300, 0x3357}, {0xfe45, 0xfe46}, {0xff61, 0xff9f}}),
6881 CharacterClassWidths::HasBothBMPAndNonBMP);
6882 return characterClass;
6883}
6884
6885static std::unique_ptr<CharacterClass> createCharacterClass272()
6886{
6887 // Name = Mongolian, number of codePoints: 170
6888 auto characterClass = std::make_unique<CharacterClass>(
6889 std::initializer_list<UChar32>({}),
6890 std::initializer_list<CharacterRange>({}),
6891 std::initializer_list<UChar32>({}),
6892 std::initializer_list<CharacterRange>({{0x1800, 0x180e}, {0x1810, 0x1819}, {0x1820, 0x1878}, {0x1880, 0x18aa},
6893 {0x11660, 0x1166c}}),
6894 CharacterClassWidths::HasBothBMPAndNonBMP);
6895 return characterClass;
6896}
6897
6898static std::unique_ptr<CharacterClass> createCharacterClass273()
6899{
6900 // Name = Phags_Pa, number of codePoints: 59
6901 auto characterClass = std::make_unique<CharacterClass>(
6902 std::initializer_list<UChar32>({}),
6903 std::initializer_list<CharacterRange>({}),
6904 std::initializer_list<UChar32>({0x1805}),
6905 std::initializer_list<CharacterRange>({{0x1802, 0x1803}, {0xa840, 0xa877}}),
6906 CharacterClassWidths::HasBMPChars);
6907 return characterClass;
6908}
6909
6910static std::unique_ptr<CharacterClass> createCharacterClass274()
6911{
6912 // Name = Chakma, number of codePoints: 90
6913 auto characterClass = std::make_unique<CharacterClass>(
6914 std::initializer_list<UChar32>({}),
6915 std::initializer_list<CharacterRange>({}),
6916 std::initializer_list<UChar32>({}),
6917 std::initializer_list<CharacterRange>({{0x09e6, 0x09ef}, {0x1040, 0x1049}, {0x11100, 0x11134}, {0x11136, 0x11146}}),
6918 CharacterClassWidths::HasBothBMPAndNonBMP);
6919 return characterClass;
6920}
6921
6922static std::unique_ptr<CharacterClass> createCharacterClass275()
6923{
6924 // Name = Syloti_Nagri, number of codePoints: 56
6925 auto characterClass = std::make_unique<CharacterClass>(
6926 std::initializer_list<UChar32>({}),
6927 std::initializer_list<CharacterRange>({}),
6928 std::initializer_list<UChar32>({}),
6929 std::initializer_list<CharacterRange>({{0x0964, 0x0965}, {0x09e6, 0x09ef}, {0xa800, 0xa82b}}),
6930 CharacterClassWidths::HasBMPChars);
6931 return characterClass;
6932}
6933
6934static std::unique_ptr<CharacterClass> createCharacterClass276()
6935{
6936 // Name = Myanmar, number of codePoints: 224
6937 auto characterClass = std::make_unique<CharacterClass>(
6938 std::initializer_list<UChar32>({}),
6939 std::initializer_list<CharacterRange>({}),
6940 std::initializer_list<UChar32>({0xa92e}),
6941 std::initializer_list<CharacterRange>({{0x1000, 0x109f}, {0xa9e0, 0xa9fe}, {0xaa60, 0xaa7f}}),
6942 CharacterClassWidths::HasBMPChars);
6943 return characterClass;
6944}
6945
6946static std::unique_ptr<CharacterClass> createCharacterClass277()
6947{
6948 // Name = Tai_Le, number of codePoints: 45
6949 auto characterClass = std::make_unique<CharacterClass>(
6950 std::initializer_list<UChar32>({}),
6951 std::initializer_list<CharacterRange>({}),
6952 std::initializer_list<UChar32>({}),
6953 std::initializer_list<CharacterRange>({{0x1040, 0x1049}, {0x1950, 0x196d}, {0x1970, 0x1974}}),
6954 CharacterClassWidths::HasBMPChars);
6955 return characterClass;
6956}
6957
6958static std::unique_ptr<CharacterClass> createCharacterClass278()
6959{
6960 // Name = Linear_A, number of codePoints: 386
6961 auto characterClass = std::make_unique<CharacterClass>(
6962 std::initializer_list<UChar32>({}),
6963 std::initializer_list<CharacterRange>({}),
6964 std::initializer_list<UChar32>({}),
6965 std::initializer_list<CharacterRange>({{0x10107, 0x10133}, {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}}),
6966 CharacterClassWidths::HasNonBMPChars);
6967 return characterClass;
6968}
6969
6970static std::unique_ptr<CharacterClass> createCharacterClass279()
6971{
6972 // Name = Kannada, number of codePoints: 103
6973 auto characterClass = std::make_unique<CharacterClass>(
6974 std::initializer_list<UChar32>({}),
6975 std::initializer_list<CharacterRange>({}),
6976 std::initializer_list<UChar32>({0x0cde, 0x1cd0, 0x1cd2, 0x1cda, 0x1cf4}),
6977 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0x0c80, 0x0c8c}, {0x0c8e, 0x0c90},
6978 {0x0c92, 0x0ca8}, {0x0caa, 0x0cb3}, {0x0cb5, 0x0cb9}, {0x0cbc, 0x0cc4},
6979 {0x0cc6, 0x0cc8}, {0x0cca, 0x0ccd}, {0x0cd5, 0x0cd6}, {0x0ce0, 0x0ce3},
6980 {0x0ce6, 0x0cef}, {0x0cf1, 0x0cf2}, {0xa830, 0xa835}}),
6981 CharacterClassWidths::HasBMPChars);
6982 return characterClass;
6983}
6984
6985static std::unique_ptr<CharacterClass> createCharacterClass280()
6986{
6987 // Name = Kayah_Li, number of codePoints: 48
6988 auto characterClass = std::make_unique<CharacterClass>(
6989 std::initializer_list<UChar32>({}),
6990 std::initializer_list<CharacterRange>({}),
6991 std::initializer_list<UChar32>({}),
6992 std::initializer_list<CharacterRange>({{0xa900, 0xa92f}}),
6993 CharacterClassWidths::HasBMPChars);
6994 return characterClass;
6995}
6996
6997static std::unique_ptr<CharacterClass> createCharacterClass281()
6998{
6999 // Name = Buhid, number of codePoints: 22
7000 auto characterClass = std::make_unique<CharacterClass>(
7001 std::initializer_list<UChar32>({}),
7002 std::initializer_list<CharacterRange>({}),
7003 std::initializer_list<UChar32>({}),
7004 std::initializer_list<CharacterRange>({{0x1735, 0x1736}, {0x1740, 0x1753}}),
7005 CharacterClassWidths::HasBMPChars);
7006 return characterClass;
7007}
7008
7009static std::unique_ptr<CharacterClass> createCharacterClass282()
7010{
7011 // Name = Hanunoo, number of codePoints: 23
7012 auto characterClass = std::make_unique<CharacterClass>(
7013 std::initializer_list<UChar32>({}),
7014 std::initializer_list<CharacterRange>({}),
7015 std::initializer_list<UChar32>({}),
7016 std::initializer_list<CharacterRange>({{0x1720, 0x1736}}),
7017 CharacterClassWidths::HasBMPChars);
7018 return characterClass;
7019}
7020
7021static std::unique_ptr<CharacterClass> createCharacterClass283()
7022{
7023 // Name = Tagbanwa, number of codePoints: 20
7024 auto characterClass = std::make_unique<CharacterClass>(
7025 std::initializer_list<UChar32>({}),
7026 std::initializer_list<CharacterRange>({}),
7027 std::initializer_list<UChar32>({}),
7028 std::initializer_list<CharacterRange>({{0x1735, 0x1736}, {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1772, 0x1773}}),
7029 CharacterClassWidths::HasBMPChars);
7030 return characterClass;
7031}
7032
7033static std::unique_ptr<CharacterClass> createCharacterClass284()
7034{
7035 // Name = Tagalog, number of codePoints: 22
7036 auto characterClass = std::make_unique<CharacterClass>(
7037 std::initializer_list<UChar32>({}),
7038 std::initializer_list<CharacterRange>({}),
7039 std::initializer_list<UChar32>({}),
7040 std::initializer_list<CharacterRange>({{0x1700, 0x170c}, {0x170e, 0x1714}, {0x1735, 0x1736}}),
7041 CharacterClassWidths::HasBMPChars);
7042 return characterClass;
7043}
7044
7045static std::unique_ptr<CharacterClass> createCharacterClass285()
7046{
7047 // Name = Dogra, number of codePoints: 82
7048 auto characterClass = std::make_unique<CharacterClass>(
7049 std::initializer_list<UChar32>({}),
7050 std::initializer_list<CharacterRange>({}),
7051 std::initializer_list<UChar32>({}),
7052 std::initializer_list<CharacterRange>({{0x0964, 0x096f}, {0xa830, 0xa839}, {0x11800, 0x1183b}}),
7053 CharacterClassWidths::HasBothBMPAndNonBMP);
7054 return characterClass;
7055}
7056
7057static std::unique_ptr<CharacterClass> createCharacterClass286()
7058{
7059 // Name = Kaithi, number of codePoints: 87
7060 auto characterClass = std::make_unique<CharacterClass>(
7061 std::initializer_list<UChar32>({}),
7062 std::initializer_list<CharacterRange>({}),
7063 std::initializer_list<UChar32>({0x110cd}),
7064 std::initializer_list<CharacterRange>({{0x0966, 0x096f}, {0xa830, 0xa839}, {0x11080, 0x110c1}}),
7065 CharacterClassWidths::HasBothBMPAndNonBMP);
7066 return characterClass;
7067}
7068
7069static std::unique_ptr<CharacterClass> createCharacterClass287()
7070{
7071 // Name = Mahajani, number of codePoints: 61
7072 auto characterClass = std::make_unique<CharacterClass>(
7073 std::initializer_list<UChar32>({}),
7074 std::initializer_list<CharacterRange>({}),
7075 std::initializer_list<UChar32>({}),
7076 std::initializer_list<CharacterRange>({{0x0964, 0x096f}, {0xa830, 0xa839}, {0x11150, 0x11176}}),
7077 CharacterClassWidths::HasBothBMPAndNonBMP);
7078 return characterClass;
7079}
7080
7081static std::unique_ptr<CharacterClass> createCharacterClass288()
7082{
7083 // Name = Hangul, number of codePoints: 11775
7084 auto characterClass = std::make_unique<CharacterClass>(
7085 std::initializer_list<UChar32>({}),
7086 std::initializer_list<CharacterRange>({}),
7087 std::initializer_list<UChar32>({0x3003, 0x3037, 0x30fb}),
7088 std::initializer_list<CharacterRange>({{0x1100, 0x11ff}, {0x3001, 0x3002}, {0x3008, 0x3011}, {0x3013, 0x301f},
7089 {0x302e, 0x3030}, {0x3131, 0x318e}, {0x3200, 0x321e}, {0x3260, 0x327e},
7090 {0xa960, 0xa97c}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb},
7091 {0xfe45, 0xfe46}, {0xff61, 0xff65}, {0xffa0, 0xffbe}, {0xffc2, 0xffc7},
7092 {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}}),
7093 CharacterClassWidths::HasBMPChars);
7094 return characterClass;
7095}
7096
7097static std::unique_ptr<CharacterClass> createCharacterClass289()
7098{
7099 // Name = Yi, number of codePoints: 1246
7100 auto characterClass = std::make_unique<CharacterClass>(
7101 std::initializer_list<UChar32>({}),
7102 std::initializer_list<CharacterRange>({}),
7103 std::initializer_list<UChar32>({0x30fb}),
7104 std::initializer_list<CharacterRange>({{0x3001, 0x3002}, {0x3008, 0x3011}, {0x3014, 0x301b}, {0xa000, 0xa48c},
7105 {0xa490, 0xa4c6}, {0xff61, 0xff65}}),
7106 CharacterClassWidths::HasBMPChars);
7107 return characterClass;
7108}
7109
7110static std::unique_ptr<CharacterClass> createCharacterClass290()
7111{
7112 // Name = Malayalam, number of codePoints: 125
7113 auto characterClass = std::make_unique<CharacterClass>(
7114 std::initializer_list<UChar32>({}),
7115 std::initializer_list<CharacterRange>({}),
7116 std::initializer_list<UChar32>({0x1cda}),
7117 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0x0d00, 0x0d03}, {0x0d05, 0x0d0c},
7118 {0x0d0e, 0x0d10}, {0x0d12, 0x0d44}, {0x0d46, 0x0d48}, {0x0d4a, 0x0d4f},
7119 {0x0d54, 0x0d63}, {0x0d66, 0x0d7f}, {0xa830, 0xa832}}),
7120 CharacterClassWidths::HasBMPChars);
7121 return characterClass;
7122}
7123
7124static std::unique_ptr<CharacterClass> createCharacterClass291()
7125{
7126 // Name = Oriya, number of codePoints: 95
7127 auto characterClass = std::make_unique<CharacterClass>(
7128 std::initializer_list<UChar32>({}),
7129 std::initializer_list<CharacterRange>({}),
7130 std::initializer_list<UChar32>({0x1cda}),
7131 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0x0b01, 0x0b03}, {0x0b05, 0x0b0c},
7132 {0x0b0f, 0x0b10}, {0x0b13, 0x0b28}, {0x0b2a, 0x0b30}, {0x0b32, 0x0b33},
7133 {0x0b35, 0x0b39}, {0x0b3c, 0x0b44}, {0x0b47, 0x0b48}, {0x0b4b, 0x0b4d},
7134 {0x0b56, 0x0b57}, {0x0b5c, 0x0b5d}, {0x0b5f, 0x0b63}, {0x0b66, 0x0b77}}),
7135 CharacterClassWidths::HasBMPChars);
7136 return characterClass;
7137}
7138
7139static std::unique_ptr<CharacterClass> createCharacterClass292()
7140{
7141 // Name = Telugu, number of codePoints: 102
7142 auto characterClass = std::make_unique<CharacterClass>(
7143 std::initializer_list<UChar32>({}),
7144 std::initializer_list<CharacterRange>({}),
7145 std::initializer_list<UChar32>({0x1cda}),
7146 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0x0c00, 0x0c0c}, {0x0c0e, 0x0c10},
7147 {0x0c12, 0x0c28}, {0x0c2a, 0x0c39}, {0x0c3d, 0x0c44}, {0x0c46, 0x0c48},
7148 {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56}, {0x0c58, 0x0c5a}, {0x0c60, 0x0c63},
7149 {0x0c66, 0x0c6f}, {0x0c78, 0x0c7f}}),
7150 CharacterClassWidths::HasBMPChars);
7151 return characterClass;
7152}
7153
7154static std::unique_ptr<CharacterClass> createCharacterClass293()
7155{
7156 // Name = Adlam, number of codePoints: 88
7157 auto characterClass = std::make_unique<CharacterClass>(
7158 std::initializer_list<UChar32>({}),
7159 std::initializer_list<CharacterRange>({}),
7160 std::initializer_list<UChar32>({0x0640}),
7161 std::initializer_list<CharacterRange>({{0x1e900, 0x1e94a}, {0x1e950, 0x1e959}, {0x1e95e, 0x1e95f}}),
7162 CharacterClassWidths::HasBothBMPAndNonBMP);
7163 return characterClass;
7164}
7165
7166static std::unique_ptr<CharacterClass> createCharacterClass294()
7167{
7168 // Name = Mandaic, number of codePoints: 30
7169 auto characterClass = std::make_unique<CharacterClass>(
7170 std::initializer_list<UChar32>({}),
7171 std::initializer_list<CharacterRange>({}),
7172 std::initializer_list<UChar32>({0x0640, 0x085e}),
7173 std::initializer_list<CharacterRange>({{0x0840, 0x085b}}),
7174 CharacterClassWidths::HasBMPChars);
7175 return characterClass;
7176}
7177
7178static std::unique_ptr<CharacterClass> createCharacterClass295()
7179{
7180 // Name = Manichaean, number of codePoints: 52
7181 auto characterClass = std::make_unique<CharacterClass>(
7182 std::initializer_list<UChar32>({}),
7183 std::initializer_list<CharacterRange>({}),
7184 std::initializer_list<UChar32>({0x0640}),
7185 std::initializer_list<CharacterRange>({{0x10ac0, 0x10ae6}, {0x10aeb, 0x10af6}}),
7186 CharacterClassWidths::HasBothBMPAndNonBMP);
7187 return characterClass;
7188}
7189
7190static std::unique_ptr<CharacterClass> createCharacterClass296()
7191{
7192 // Name = Psalter_Pahlavi, number of codePoints: 30
7193 auto characterClass = std::make_unique<CharacterClass>(
7194 std::initializer_list<UChar32>({}),
7195 std::initializer_list<CharacterRange>({}),
7196 std::initializer_list<UChar32>({0x0640}),
7197 std::initializer_list<CharacterRange>({{0x10b80, 0x10b91}, {0x10b99, 0x10b9c}, {0x10ba9, 0x10baf}}),
7198 CharacterClassWidths::HasBothBMPAndNonBMP);
7199 return characterClass;
7200}
7201
7202static std::unique_ptr<CharacterClass> createCharacterClass297()
7203{
7204 // Name = Sogdian, number of codePoints: 43
7205 auto characterClass = std::make_unique<CharacterClass>(
7206 std::initializer_list<UChar32>({}),
7207 std::initializer_list<CharacterRange>({}),
7208 std::initializer_list<UChar32>({0x0640}),
7209 std::initializer_list<CharacterRange>({{0x10f30, 0x10f59}}),
7210 CharacterClassWidths::HasBothBMPAndNonBMP);
7211 return characterClass;
7212}
7213
7214static std::unique_ptr<CharacterClass> createCharacterClass298()
7215{
7216 // Name = Modi, number of codePoints: 89
7217 auto characterClass = std::make_unique<CharacterClass>(
7218 std::initializer_list<UChar32>({}),
7219 std::initializer_list<CharacterRange>({}),
7220 std::initializer_list<UChar32>({}),
7221 std::initializer_list<CharacterRange>({{0xa830, 0xa839}, {0x11600, 0x11644}, {0x11650, 0x11659}}),
7222 CharacterClassWidths::HasBothBMPAndNonBMP);
7223 return characterClass;
7224}
7225
7226static std::unique_ptr<CharacterClass> createCharacterClass299()
7227{
7228 // Name = Khudawadi, number of codePoints: 81
7229 auto characterClass = std::make_unique<CharacterClass>(
7230 std::initializer_list<UChar32>({}),
7231 std::initializer_list<CharacterRange>({}),
7232 std::initializer_list<UChar32>({}),
7233 std::initializer_list<CharacterRange>({{0x0964, 0x0965}, {0xa830, 0xa839}, {0x112b0, 0x112ea}, {0x112f0, 0x112f9}}),
7234 CharacterClassWidths::HasBothBMPAndNonBMP);
7235 return characterClass;
7236}
7237
7238static std::unique_ptr<CharacterClass> createCharacterClass300()
7239{
7240 // Name = Takri, number of codePoints: 78
7241 auto characterClass = std::make_unique<CharacterClass>(
7242 std::initializer_list<UChar32>({}),
7243 std::initializer_list<CharacterRange>({}),
7244 std::initializer_list<UChar32>({}),
7245 std::initializer_list<CharacterRange>({{0x0964, 0x0965}, {0xa830, 0xa839}, {0x11680, 0x116b7}, {0x116c0, 0x116c9}}),
7246 CharacterClassWidths::HasBothBMPAndNonBMP);
7247 return characterClass;
7248}
7249
7250static std::unique_ptr<CharacterClass> createCharacterClass301()
7251{
7252 // Name = Tirhuta, number of codePoints: 96
7253 auto characterClass = std::make_unique<CharacterClass>(
7254 std::initializer_list<UChar32>({}),
7255 std::initializer_list<CharacterRange>({}),
7256 std::initializer_list<UChar32>({}),
7257 std::initializer_list<CharacterRange>({{0x0951, 0x0952}, {0x0964, 0x0965}, {0xa830, 0xa839}, {0x11480, 0x114c7},
7258 {0x114d0, 0x114d9}}),
7259 CharacterClassWidths::HasBothBMPAndNonBMP);
7260 return characterClass;
7261}
7262
7263static std::unique_ptr<CharacterClass> createCharacterClass302()
7264{
7265 // Name = Gunjala_Gondi, number of codePoints: 65
7266 auto characterClass = std::make_unique<CharacterClass>(
7267 std::initializer_list<UChar32>({}),
7268 std::initializer_list<CharacterRange>({}),
7269 std::initializer_list<UChar32>({}),
7270 std::initializer_list<CharacterRange>({{0x0964, 0x0965}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d8e},
7271 {0x11d90, 0x11d91}, {0x11d93, 0x11d98}, {0x11da0, 0x11da9}}),
7272 CharacterClassWidths::HasBothBMPAndNonBMP);
7273 return characterClass;
7274}
7275
7276static std::unique_ptr<CharacterClass> createCharacterClass303()
7277{
7278 // Name = Sinhala, number of codePoints: 112
7279 auto characterClass = std::make_unique<CharacterClass>(
7280 std::initializer_list<UChar32>({}),
7281 std::initializer_list<CharacterRange>({}),
7282 std::initializer_list<UChar32>({0x0dbd, 0x0dca, 0x0dd6}),
7283 std::initializer_list<CharacterRange>({{0x0964, 0x0965}, {0x0d82, 0x0d83}, {0x0d85, 0x0d96}, {0x0d9a, 0x0db1},
7284 {0x0db3, 0x0dbb}, {0x0dc0, 0x0dc6}, {0x0dcf, 0x0dd4}, {0x0dd8, 0x0ddf},
7285 {0x0de6, 0x0def}, {0x0df2, 0x0df4}, {0x111e1, 0x111f4}}),
7286 CharacterClassWidths::HasBothBMPAndNonBMP);
7287 return characterClass;
7288}
7289
7290static std::unique_ptr<CharacterClass> createCharacterClass304()
7291{
7292 // Name = Limbu, number of codePoints: 69
7293 auto characterClass = std::make_unique<CharacterClass>(
7294 std::initializer_list<UChar32>({}),
7295 std::initializer_list<CharacterRange>({}),
7296 std::initializer_list<UChar32>({0x0965, 0x1940}),
7297 std::initializer_list<CharacterRange>({{0x1900, 0x191e}, {0x1920, 0x192b}, {0x1930, 0x193b}, {0x1944, 0x194f}}),
7298 CharacterClassWidths::HasBMPChars);
7299 return characterClass;
7300}
7301
7302typedef std::unique_ptr<CharacterClass> (*CreateCharacterClass)();
7303static CreateCharacterClass createFunctions[305] = {
7304 createCharacterClass0, createCharacterClass1, createCharacterClass2, createCharacterClass3,
7305 createCharacterClass4, createCharacterClass5, createCharacterClass6, createCharacterClass7,
7306 createCharacterClass8, createCharacterClass9, createCharacterClass10, createCharacterClass11,
7307 createCharacterClass12, createCharacterClass13, createCharacterClass14, createCharacterClass15,
7308 createCharacterClass16, createCharacterClass17, createCharacterClass18, createCharacterClass19,
7309 createCharacterClass20, createCharacterClass21, createCharacterClass22, createCharacterClass23,
7310 createCharacterClass24, createCharacterClass25, createCharacterClass26, createCharacterClass27,
7311 createCharacterClass28, createCharacterClass29, createCharacterClass30, createCharacterClass31,
7312 createCharacterClass32, createCharacterClass33, createCharacterClass34, createCharacterClass35,
7313 createCharacterClass36, createCharacterClass37, createCharacterClass38, createCharacterClass39,
7314 createCharacterClass40, createCharacterClass41, createCharacterClass42, createCharacterClass43,
7315 createCharacterClass44, createCharacterClass45, createCharacterClass46, createCharacterClass47,
7316 createCharacterClass48, createCharacterClass49, createCharacterClass50, createCharacterClass51,
7317 createCharacterClass52, createCharacterClass53, createCharacterClass54, createCharacterClass55,
7318 createCharacterClass56, createCharacterClass57, createCharacterClass58, createCharacterClass59,
7319 createCharacterClass60, createCharacterClass61, createCharacterClass62, createCharacterClass63,
7320 createCharacterClass64, createCharacterClass65, createCharacterClass66, createCharacterClass67,
7321 createCharacterClass68, createCharacterClass69, createCharacterClass70, createCharacterClass71,
7322 createCharacterClass72, createCharacterClass73, createCharacterClass74, createCharacterClass75,
7323 createCharacterClass76, createCharacterClass77, createCharacterClass78, createCharacterClass79,
7324 createCharacterClass80, createCharacterClass81, createCharacterClass82, createCharacterClass83,
7325 createCharacterClass84, createCharacterClass85, createCharacterClass86, createCharacterClass87,
7326 createCharacterClass88, createCharacterClass89, createCharacterClass90, createCharacterClass91,
7327 createCharacterClass92, createCharacterClass93, createCharacterClass94, createCharacterClass95,
7328 createCharacterClass96, createCharacterClass97, createCharacterClass98, createCharacterClass99,
7329 createCharacterClass100, createCharacterClass101, createCharacterClass102, createCharacterClass103,
7330 createCharacterClass104, createCharacterClass105, createCharacterClass106, createCharacterClass107,
7331 createCharacterClass108, createCharacterClass109, createCharacterClass110, createCharacterClass111,
7332 createCharacterClass112, createCharacterClass113, createCharacterClass114, createCharacterClass115,
7333 createCharacterClass116, createCharacterClass117, createCharacterClass118, createCharacterClass119,
7334 createCharacterClass120, createCharacterClass121, createCharacterClass122, createCharacterClass123,
7335 createCharacterClass124, createCharacterClass125, createCharacterClass126, createCharacterClass127,
7336 createCharacterClass128, createCharacterClass129, createCharacterClass130, createCharacterClass131,
7337 createCharacterClass132, createCharacterClass133, createCharacterClass134, createCharacterClass135,
7338 createCharacterClass136, createCharacterClass137, createCharacterClass138, createCharacterClass139,
7339 createCharacterClass140, createCharacterClass141, createCharacterClass142, createCharacterClass143,
7340 createCharacterClass144, createCharacterClass145, createCharacterClass146, createCharacterClass147,
7341 createCharacterClass148, createCharacterClass149, createCharacterClass150, createCharacterClass151,
7342 createCharacterClass152, createCharacterClass153, createCharacterClass154, createCharacterClass155,
7343 createCharacterClass156, createCharacterClass157, createCharacterClass158, createCharacterClass159,
7344 createCharacterClass160, createCharacterClass161, createCharacterClass162, createCharacterClass163,
7345 createCharacterClass164, createCharacterClass165, createCharacterClass166, createCharacterClass167,
7346 createCharacterClass168, createCharacterClass169, createCharacterClass170, createCharacterClass171,
7347 createCharacterClass172, createCharacterClass173, createCharacterClass174, createCharacterClass175,
7348 createCharacterClass176, createCharacterClass177, createCharacterClass178, createCharacterClass179,
7349 createCharacterClass180, createCharacterClass181, createCharacterClass182, createCharacterClass183,
7350 createCharacterClass184, createCharacterClass185, createCharacterClass186, createCharacterClass187,
7351 createCharacterClass188, createCharacterClass189, createCharacterClass190, createCharacterClass191,
7352 createCharacterClass192, createCharacterClass193, createCharacterClass194, createCharacterClass195,
7353 createCharacterClass196, createCharacterClass197, createCharacterClass198, createCharacterClass199,
7354 createCharacterClass200, createCharacterClass201, createCharacterClass202, createCharacterClass203,
7355 createCharacterClass204, createCharacterClass205, createCharacterClass206, createCharacterClass207,
7356 createCharacterClass208, createCharacterClass209, createCharacterClass210, createCharacterClass211,
7357 createCharacterClass212, createCharacterClass213, createCharacterClass214, createCharacterClass215,
7358 createCharacterClass216, createCharacterClass217, createCharacterClass218, createCharacterClass219,
7359 createCharacterClass220, createCharacterClass221, createCharacterClass222, createCharacterClass223,
7360 createCharacterClass224, createCharacterClass225, createCharacterClass226, createCharacterClass227,
7361 createCharacterClass228, createCharacterClass229, createCharacterClass230, createCharacterClass231,
7362 createCharacterClass232, createCharacterClass233, createCharacterClass234, createCharacterClass235,
7363 createCharacterClass236, createCharacterClass237, createCharacterClass238, createCharacterClass239,
7364 createCharacterClass240, createCharacterClass241, createCharacterClass242, createCharacterClass243,
7365 createCharacterClass244, createCharacterClass245, createCharacterClass246, createCharacterClass247,
7366 createCharacterClass248, createCharacterClass249, createCharacterClass250, createCharacterClass251,
7367 createCharacterClass252, createCharacterClass253, createCharacterClass254, createCharacterClass255,
7368 createCharacterClass256, createCharacterClass257, createCharacterClass258, createCharacterClass259,
7369 createCharacterClass260, createCharacterClass261, createCharacterClass262, createCharacterClass263,
7370 createCharacterClass264, createCharacterClass265, createCharacterClass266, createCharacterClass267,
7371 createCharacterClass268, createCharacterClass269, createCharacterClass270, createCharacterClass271,
7372 createCharacterClass272, createCharacterClass273, createCharacterClass274, createCharacterClass275,
7373 createCharacterClass276, createCharacterClass277, createCharacterClass278, createCharacterClass279,
7374 createCharacterClass280, createCharacterClass281, createCharacterClass282, createCharacterClass283,
7375 createCharacterClass284, createCharacterClass285, createCharacterClass286, createCharacterClass287,
7376 createCharacterClass288, createCharacterClass289, createCharacterClass290, createCharacterClass291,
7377 createCharacterClass292, createCharacterClass293, createCharacterClass294, createCharacterClass295,
7378 createCharacterClass296, createCharacterClass297, createCharacterClass298, createCharacterClass299,
7379 createCharacterClass300, createCharacterClass301, createCharacterClass302, createCharacterClass303,
7380 createCharacterClass304,};
7381
7382// General_Category:
7383static const struct HashIndex generalCategoryTableIndex[152] = {
7384 { -1, -1 },
7385 { -1, -1 },
7386 { -1, -1 },
7387 { -1, -1 },
7388 { 31, -1 },
7389 { 1, 128 },
7390 { 73, -1 },
7391 { 26, 139 },
7392 { 46, -1 },
7393 { -1, -1 },
7394 { 45, 136 },
7395 { -1, -1 },
7396 { -1, -1 },
7397 { 50, -1 },
7398 { -1, -1 },
7399 { 29, -1 },
7400 { 51, -1 },
7401 { -1, -1 },
7402 { -1, -1 },
7403 { -1, -1 },
7404 { 34, 143 },
7405 { 20, -1 },
7406 { -1, -1 },
7407 { -1, -1 },
7408 { -1, -1 },
7409 { 37, -1 },
7410 { 61, -1 },
7411 { 82, -1 },
7412 { -1, -1 },
7413 { 69, 148 },
7414 { 79, -1 },
7415 { 27, 144 },
7416 { -1, -1 },
7417 { -1, -1 },
7418 { 21, -1 },
7419 { 24, 146 },
7420 { -1, -1 },
7421 { -1, -1 },
7422 { -1, -1 },
7423 { -1, -1 },
7424 { -1, -1 },
7425 { 58, 150 },
7426 { -1, -1 },
7427 { 10, -1 },
7428 { 39, 138 },
7429 { 40, 137 },
7430 { 5, -1 },
7431 { -1, -1 },
7432 { -1, -1 },
7433 { -1, -1 },
7434 { 60, -1 },
7435 { -1, -1 },
7436 { 67, -1 },
7437 { -1, -1 },
7438 { -1, -1 },
7439 { 16, 142 },
7440 { 72, 149 },
7441 { 71, -1 },
7442 { -1, -1 },
7443 { 12, -1 },
7444 { 0, -1 },
7445 { 54, -1 },
7446 { 11, 133 },
7447 { 43, -1 },
7448 { 4, -1 },
7449 { -1, -1 },
7450 { -1, -1 },
7451 { -1, -1 },
7452 { 19, -1 },
7453 { 30, -1 },
7454 { -1, -1 },
7455 { -1, -1 },
7456 { -1, -1 },
7457 { -1, -1 },
7458 { -1, -1 },
7459 { -1, -1 },
7460 { -1, -1 },
7461 { 2, -1 },
7462 { -1, -1 },
7463 { -1, -1 },
7464 { -1, -1 },
7465 { -1, -1 },
7466 { -1, -1 },
7467 { -1, -1 },
7468 { 6, 140 },
7469 { 25, -1 },
7470 { 48, -1 },
7471 { -1, -1 },
7472 { -1, -1 },
7473 { -1, -1 },
7474 { 59, -1 },
7475 { 42, 151 },
7476 { 8, -1 },
7477 { -1, -1 },
7478 { -1, -1 },
7479 { -1, -1 },
7480 { -1, -1 },
7481 { -1, -1 },
7482 { 18, 131 },
7483 { 65, -1 },
7484 { -1, -1 },
7485 { -1, -1 },
7486 { 28, -1 },
7487 { 9, -1 },
7488 { -1, -1 },
7489 { 41, -1 },
7490 { -1, -1 },
7491 { -1, -1 },
7492 { 22, -1 },
7493 { 44, 145 },
7494 { 13, 134 },
7495 { 23, 132 },
7496 { 77, -1 },
7497 { -1, -1 },
7498 { -1, -1 },
7499 { 7, -1 },
7500 { -1, -1 },
7501 { 47, -1 },
7502 { -1, -1 },
7503 { -1, -1 },
7504 { -1, -1 },
7505 { 66, -1 },
7506 { -1, -1 },
7507 { 32, -1 },
7508 { -1, -1 },
7509 { -1, -1 },
7510 { 15, 130 },
7511 { -1, -1 },
7512 { 3, 129 },
7513 { 14, -1 },
7514 { 17, -1 },
7515 { 33, -1 },
7516 { 35, 135 },
7517 { 36, -1 },
7518 { 38, 141 },
7519 { 49, 147 },
7520 { 52, -1 },
7521 { 53, -1 },
7522 { 55, -1 },
7523 { 56, -1 },
7524 { 57, -1 },
7525 { 62, -1 },
7526 { 63, -1 },
7527 { 64, -1 },
7528 { 68, -1 },
7529 { 70, -1 },
7530 { 74, -1 },
7531 { 75, -1 },
7532 { 76, -1 },
7533 { 78, -1 },
7534 { 80, -1 },
7535 { 81, -1 },
7536};
7537
7538static const struct HashValue generalCategoryTableValue[83] = {
7539 { "Spacing_Mark", 35 },
7540 { "Mc", 35 },
7541 { "Modifier_Symbol", 21 },
7542 { "Sk", 21 },
7543 { "Punctuation", 10 },
7544 { "P", 10 },
7545 { "punct", 10 },
7546 { "Decimal_Number", 19 },
7547 { "Nd", 19 },
7548 { "digit", 19 },
7549 { "Other_Number", 28 },
7550 { "No", 28 },
7551 { "Mark", 32 },
7552 { "M", 32 },
7553 { "Combining_Mark", 32 },
7554 { "Other", 3 },
7555 { "C", 3 },
7556 { "Nonspacing_Mark", 33 },
7557 { "Mn", 33 },
7558 { "Connector_Punctuation", 22 },
7559 { "Pc", 22 },
7560 { "Private_Use", 40 },
7561 { "Co", 40 },
7562 { "Format", 27 },
7563 { "Cf", 27 },
7564 { "Line_Separator", 37 },
7565 { "Zl", 37 },
7566 { "Symbol", 12 },
7567 { "S", 12 },
7568 { "Close_Punctuation", 15 },
7569 { "Pe", 15 },
7570 { "Cased_Letter", 6 },
7571 { "LC", 6 },
7572 { "Letter", 5 },
7573 { "L", 5 },
7574 { "Titlecase_Letter", 30 },
7575 { "Lt", 30 },
7576 { "Dash_Punctuation", 17 },
7577 { "Pd", 17 },
7578 { "Open_Punctuation", 14 },
7579 { "Ps", 14 },
7580 { "Enclosing_Mark", 34 },
7581 { "Me", 34 },
7582 { "Lowercase_Letter", 23 },
7583 { "Ll", 23 },
7584 { "Letter_Number", 36 },
7585 { "Nl", 36 },
7586 { "Surrogate", 39 },
7587 { "Cs", 39 },
7588 { "Currency_Symbol", 13 },
7589 { "Sc", 13 },
7590 { "Separator", 8 },
7591 { "Z", 8 },
7592 { "Other_Symbol", 24 },
7593 { "So", 24 },
7594 { "Final_Punctuation", 29 },
7595 { "Pf", 29 },
7596 { "Paragraph_Separator", 38 },
7597 { "Zp", 38 },
7598 { "Modifier_Letter", 31 },
7599 { "Lm", 31 },
7600 { "Control", 7 },
7601 { "Cc", 7 },
7602 { "cntrl", 7 },
7603 { "Initial_Punctuation", 26 },
7604 { "Pi", 26 },
7605 { "Other_Letter", 25 },
7606 { "Lo", 25 },
7607 { "Number", 18 },
7608 { "N", 18 },
7609 { "Any", 0 },
7610 { "Assigned", 2 },
7611 { "Unassigned", 4 },
7612 { "Cn", 4 },
7613 { "Other_Punctuation", 11 },
7614 { "Po", 11 },
7615 { "Uppercase_Letter", 20 },
7616 { "Lu", 20 },
7617 { "Math_Symbol", 16 },
7618 { "Sm", 16 },
7619 { "ASCII", 1 },
7620 { "Space_Separator", 9 },
7621 { "Zs", 9 },
7622};
7623
7624static const struct HashTable generalCategoryHashTable =
7625 { 83, 127, generalCategoryTableValue, generalCategoryTableIndex };
7626
7627// binary properties:
7628static const struct HashIndex binaryPropertyTableIndex[152] = {
7629 { -1, -1 },
7630 { 38, -1 },
7631 { 11, -1 },
7632 { -1, -1 },
7633 { -1, -1 },
7634 { 74, -1 },
7635 { -1, -1 },
7636 { 5, 143 },
7637 { -1, -1 },
7638 { 35, -1 },
7639 { 67, 150 },
7640 { -1, -1 },
7641 { -1, -1 },
7642 { -1, -1 },
7643 { 9, 137 },
7644 { 12, 132 },
7645 { -1, -1 },
7646 { 60, -1 },
7647 { 73, 151 },
7648 { -1, -1 },
7649 { -1, -1 },
7650 { 22, -1 },
7651 { 7, 141 },
7652 { 15, -1 },
7653 { 24, 136 },
7654 { -1, -1 },
7655 { -1, -1 },
7656 { -1, -1 },
7657 { 34, -1 },
7658 { -1, -1 },
7659 { 4, 149 },
7660 { 89, -1 },
7661 { 85, 148 },
7662 { 2, -1 },
7663 { 80, -1 },
7664 { -1, -1 },
7665 { -1, -1 },
7666 { 6, -1 },
7667 { -1, -1 },
7668 { 83, -1 },
7669 { -1, -1 },
7670 { 47, -1 },
7671 { 29, 131 },
7672 { 23, -1 },
7673 { -1, -1 },
7674 { -1, -1 },
7675 { 41, -1 },
7676 { 25, 142 },
7677 { -1, -1 },
7678 { -1, -1 },
7679 { 93, -1 },
7680 { 28, 138 },
7681 { -1, -1 },
7682 { 1, 146 },
7683 { 0, 135 },
7684 { 50, -1 },
7685 { -1, -1 },
7686 { 48, -1 },
7687 { 66, -1 },
7688 { -1, -1 },
7689 { 42, 134 },
7690 { 33, -1 },
7691 { 51, -1 },
7692 { 68, -1 },
7693 { -1, -1 },
7694 { -1, -1 },
7695 { -1, -1 },
7696 { -1, -1 },
7697 { 56, -1 },
7698 { 31, -1 },
7699 { 71, -1 },
7700 { 77, -1 },
7701 { 59, 144 },
7702 { -1, -1 },
7703 { 10, -1 },
7704 { -1, -1 },
7705 { 70, -1 },
7706 { 36, -1 },
7707 { -1, -1 },
7708 { 19, -1 },
7709 { -1, -1 },
7710 { 17, 128 },
7711 { 27, -1 },
7712 { -1, -1 },
7713 { -1, -1 },
7714 { 94, -1 },
7715 { -1, -1 },
7716 { 84, -1 },
7717 { 16, 147 },
7718 { -1, -1 },
7719 { -1, -1 },
7720 { 79, -1 },
7721 { -1, -1 },
7722 { 64, -1 },
7723 { 63, -1 },
7724 { 3, -1 },
7725 { 40, -1 },
7726 { -1, -1 },
7727 { 72, -1 },
7728 { 75, 145 },
7729 { -1, -1 },
7730 { 26, 133 },
7731 { -1, -1 },
7732 { 13, 139 },
7733 { -1, -1 },
7734 { -1, -1 },
7735 { -1, -1 },
7736 { -1, -1 },
7737 { -1, -1 },
7738 { 81, -1 },
7739 { 57, -1 },
7740 { -1, -1 },
7741 { 91, -1 },
7742 { 8, 129 },
7743 { -1, -1 },
7744 { -1, -1 },
7745 { -1, -1 },
7746 { 49, -1 },
7747 { -1, -1 },
7748 { 14, -1 },
7749 { 62, -1 },
7750 { -1, -1 },
7751 { 61, -1 },
7752 { -1, -1 },
7753 { 90, -1 },
7754 { -1, -1 },
7755 { 37, -1 },
7756 { -1, -1 },
7757 { 18, 130 },
7758 { 20, -1 },
7759 { 21, -1 },
7760 { 30, -1 },
7761 { 32, -1 },
7762 { 39, -1 },
7763 { 43, -1 },
7764 { 44, -1 },
7765 { 45, -1 },
7766 { 46, -1 },
7767 { 52, 140 },
7768 { 53, -1 },
7769 { 54, -1 },
7770 { 55, -1 },
7771 { 58, -1 },
7772 { 65, -1 },
7773 { 69, -1 },
7774 { 76, -1 },
7775 { 78, -1 },
7776 { 82, -1 },
7777 { 86, -1 },
7778 { 87, -1 },
7779 { 88, -1 },
7780 { 92, -1 },
7781};
7782
7783static const struct HashValue binaryPropertyTableValue[95] = {
7784 { "Grapheme_Extend", 58 },
7785 { "Gr_Ext", 58 },
7786 { "Extended_Pictographic", 90 },
7787 { "Emoji_Presentation", 86 },
7788 { "Pattern_White_Space", 82 },
7789 { "Pat_WS", 82 },
7790 { "Emoji_Component", 89 },
7791 { "Changes_When_Uppercased", 49 },
7792 { "CWU", 49 },
7793 { "Ideographic", 69 },
7794 { "Ideo", 69 },
7795 { "IDS_Binary_Operator", 73 },
7796 { "IDSB", 73 },
7797 { "Regional_Indicator", 84 },
7798 { "RI", 84 },
7799 { "Alphabetic", 43 },
7800 { "Alpha", 43 },
7801 { "Math", 42 },
7802 { "Math", 42 },
7803 { "Changes_When_Casemapped", 52 },
7804 { "CWCM", 52 },
7805 { "IDS_Trinary_Operator", 74 },
7806 { "IDST", 74 },
7807 { "Changes_When_NFKC_Casefolded", 60 },
7808 { "CWKCF", 60 },
7809 { "Bidi_Control", 62 },
7810 { "Bidi_C", 62 },
7811 { "ASCII_Hex_Digit", 68 },
7812 { "AHex", 68 },
7813 { "Cased", 46 },
7814 { "Cased", 46 },
7815 { "Soft_Dotted", 78 },
7816 { "SD", 78 },
7817 { "Case_Ignorable", 47 },
7818 { "CI", 47 },
7819 { "Extender", 71 },
7820 { "Ext", 71 },
7821 { "Changes_When_Titlecased", 50 },
7822 { "CWT", 50 },
7823 { "Lowercase", 44 },
7824 { "Lower", 44 },
7825 { "Sentence_Terminal", 80 },
7826 { "STerm", 80 },
7827 { "Deprecated", 77 },
7828 { "Dep", 77 },
7829 { "Pattern_Syntax", 83 },
7830 { "Pat_Syn", 83 },
7831 { "Emoji_Modifier_Base", 88 },
7832 { "Join_Control", 63 },
7833 { "Join_C", 63 },
7834 { "Logical_Order_Exception", 79 },
7835 { "LOE", 79 },
7836 { "XID_Start", 55 },
7837 { "XIDS", 55 },
7838 { "Emoji_Modifier", 87 },
7839 { "Terminal_Punctuation", 66 },
7840 { "Term", 66 },
7841 { "Variation_Selector", 81 },
7842 { "VS", 81 },
7843 { "ID_Continue", 54 },
7844 { "IDC", 54 },
7845 { "Hex_Digit", 67 },
7846 { "Hex", 67 },
7847 { "Grapheme_Base", 59 },
7848 { "Gr_Base", 59 },
7849 { "Diacritic", 70 },
7850 { "Dia", 70 },
7851 { "Uppercase", 45 },
7852 { "Upper", 45 },
7853 { "ID_Start", 53 },
7854 { "IDS", 53 },
7855 { "Unified_Ideograph", 76 },
7856 { "UIdeo", 76 },
7857 { "Bidi_Mirrored", 41 },
7858 { "Bidi_M", 41 },
7859 { "Dash", 64 },
7860 { "Dash", 64 },
7861 { "XID_Continue", 56 },
7862 { "XIDC", 56 },
7863 { "Changes_When_Lowercased", 48 },
7864 { "CWL", 48 },
7865 { "Changes_When_Casefolded", 51 },
7866 { "CWCF", 51 },
7867 { "Noncharacter_Code_Point", 72 },
7868 { "NChar", 72 },
7869 { "Radical", 75 },
7870 { "Radical", 75 },
7871 { "Quotation_Mark", 65 },
7872 { "QMark", 65 },
7873 { "White_Space", 61 },
7874 { "WSpace", 61 },
7875 { "space", 61 },
7876 { "Default_Ignorable_Code_Point", 57 },
7877 { "DI", 57 },
7878 { "Emoji", 85 },
7879};
7880
7881static const struct HashTable binaryPropertyHashTable =
7882 { 95, 127, binaryPropertyTableValue, binaryPropertyTableIndex };
7883
7884// Scripts:
7885static const struct HashIndex scriptTableIndex[582] = {
7886 { -1, -1 },
7887 { -1, -1 },
7888 { 27, -1 },
7889 { -1, -1 },
7890 { -1, -1 },
7891 { -1, -1 },
7892 { -1, -1 },
7893 { 285, -1 },
7894 { -1, -1 },
7895 { -1, -1 },
7896 { 21, -1 },
7897 { -1, -1 },
7898 { -1, -1 },
7899 { 165, -1 },
7900 { 8, -1 },
7901 { -1, -1 },
7902 { 23, 515 },
7903 { 128, 579 },
7904 { -1, -1 },
7905 { -1, -1 },
7906 { -1, -1 },
7907 { -1, -1 },
7908 { 71, -1 },
7909 { -1, -1 },
7910 { 38, -1 },
7911 { -1, -1 },
7912 { -1, -1 },
7913 { 36, -1 },
7914 { -1, -1 },
7915 { 247, -1 },
7916 { 51, 516 },
7917 { 153, -1 },
7918 { -1, -1 },
7919 { -1, -1 },
7920 { -1, -1 },
7921 { -1, -1 },
7922 { 202, -1 },
7923 { -1, -1 },
7924 { 101, -1 },
7925 { -1, -1 },
7926 { -1, -1 },
7927 { -1, -1 },
7928 { 212, -1 },
7929 { 271, -1 },
7930 { -1, -1 },
7931 { -1, -1 },
7932 { -1, -1 },
7933 { -1, -1 },
7934 { -1, -1 },
7935 { 279, -1 },
7936 { 188, -1 },
7937 { 7, 521 },
7938 { -1, -1 },
7939 { -1, -1 },
7940 { 138, 531 },
7941 { 171, -1 },
7942 { -1, -1 },
7943 { 193, -1 },
7944 { -1, -1 },
7945 { 163, 538 },
7946 { -1, -1 },
7947 { 289, -1 },
7948 { -1, -1 },
7949 { 262, -1 },
7950 { 137, -1 },
7951 { -1, -1 },
7952 { 290, -1 },
7953 { -1, -1 },
7954 { 83, -1 },
7955 { -1, -1 },
7956 { 2, -1 },
7957 { -1, -1 },
7958 { 174, -1 },
7959 { 197, -1 },
7960 { 268, -1 },
7961 { -1, -1 },
7962 { -1, -1 },
7963 { 241, -1 },
7964 { -1, -1 },
7965 { 232, 562 },
7966 { 181, -1 },
7967 { -1, -1 },
7968 { -1, -1 },
7969 { -1, -1 },
7970 { 68, -1 },
7971 { -1, -1 },
7972 { -1, -1 },
7973 { 236, -1 },
7974 { -1, -1 },
7975 { 223, -1 },
7976 { 255, -1 },
7977 { -1, -1 },
7978 { -1, -1 },
7979 { -1, -1 },
7980 { 234, 568 },
7981 { -1, -1 },
7982 { -1, -1 },
7983 { 134, -1 },
7984 { -1, -1 },
7985 { -1, -1 },
7986 { -1, -1 },
7987 { 37, -1 },
7988 { -1, -1 },
7989 { 158, 556 },
7990 { -1, -1 },
7991 { -1, -1 },
7992 { 220, -1 },
7993 { 164, -1 },
7994 { 28, 532 },
7995 { 5, 514 },
7996 { -1, -1 },
7997 { 64, -1 },
7998 { -1, -1 },
7999 { 80, -1 },
8000 { 254, -1 },
8001 { 145, -1 },
8002 { -1, -1 },
8003 { -1, -1 },
8004 { -1, -1 },
8005 { 175, -1 },
8006 { -1, -1 },
8007 { 155, 544 },
8008 { -1, -1 },
8009 { 139, 528 },
8010 { 277, -1 },
8011 { 198, -1 },
8012 { -1, -1 },
8013 { -1, -1 },
8014 { -1, -1 },
8015 { -1, -1 },
8016 { 265, -1 },
8017 { 248, -1 },
8018 { 52, 565 },
8019 { 129, 542 },
8020 { 93, -1 },
8021 { 260, -1 },
8022 { 132, -1 },
8023 { -1, -1 },
8024 { -1, -1 },
8025 { -1, -1 },
8026 { 124, -1 },
8027 { 215, -1 },
8028 { 114, -1 },
8029 { 74, -1 },
8030 { -1, -1 },
8031 { -1, -1 },
8032 { 296, -1 },
8033 { -1, -1 },
8034 { -1, -1 },
8035 { 43, -1 },
8036 { -1, -1 },
8037 { -1, -1 },
8038 { -1, -1 },
8039 { -1, -1 },
8040 { -1, -1 },
8041 { 205, -1 },
8042 { -1, -1 },
8043 { 82, 553 },
8044 { 273, -1 },
8045 { -1, -1 },
8046 { 19, -1 },
8047 { 50, -1 },
8048 { 116, -1 },
8049 { -1, -1 },
8050 { 61, -1 },
8051 { 39, -1 },
8052 { 100, -1 },
8053 { -1, -1 },
8054 { -1, -1 },
8055 { 120, -1 },
8056 { 107, 576 },
8057 { -1, -1 },
8058 { -1, -1 },
8059 { -1, -1 },
8060 { 243, -1 },
8061 { 119, 539 },
8062 { -1, -1 },
8063 { 231, -1 },
8064 { 70, -1 },
8065 { -1, -1 },
8066 { -1, -1 },
8067 { -1, -1 },
8068 { -1, -1 },
8069 { -1, -1 },
8070 { -1, -1 },
8071 { 214, -1 },
8072 { -1, -1 },
8073 { 9, 527 },
8074 { 121, 525 },
8075 { -1, -1 },
8076 { -1, -1 },
8077 { -1, -1 },
8078 { -1, -1 },
8079 { -1, -1 },
8080 { 157, -1 },
8081 { -1, -1 },
8082 { -1, -1 },
8083 { 44, 551 },
8084 { 203, -1 },
8085 { -1, -1 },
8086 { -1, -1 },
8087 { -1, -1 },
8088 { -1, -1 },
8089 { 87, -1 },
8090 { 92, -1 },
8091 { -1, -1 },
8092 { -1, -1 },
8093 { 253, -1 },
8094 { -1, -1 },
8095 { 156, -1 },
8096 { 251, -1 },
8097 { 84, 519 },
8098 { -1, -1 },
8099 { 266, -1 },
8100 { 65, -1 },
8101 { 256, -1 },
8102 { 63, -1 },
8103 { 227, -1 },
8104 { -1, -1 },
8105 { 1, 530 },
8106 { -1, -1 },
8107 { 166, -1 },
8108 { 102, 558 },
8109 { 280, -1 },
8110 { 294, -1 },
8111 { 250, -1 },
8112 { 34, -1 },
8113 { -1, -1 },
8114 { -1, -1 },
8115 { 25, 512 },
8116 { 204, -1 },
8117 { 217, -1 },
8118 { -1, -1 },
8119 { -1, -1 },
8120 { -1, -1 },
8121 { 216, -1 },
8122 { -1, -1 },
8123 { -1, -1 },
8124 { 85, -1 },
8125 { 31, -1 },
8126 { -1, -1 },
8127 { 113, 526 },
8128 { -1, -1 },
8129 { -1, -1 },
8130 { -1, -1 },
8131 { 66, 549 },
8132 { -1, -1 },
8133 { 48, -1 },
8134 { 104, -1 },
8135 { -1, -1 },
8136 { -1, -1 },
8137 { -1, -1 },
8138 { -1, -1 },
8139 { -1, -1 },
8140 { 201, -1 },
8141 { -1, -1 },
8142 { 183, 552 },
8143 { -1, -1 },
8144 { -1, -1 },
8145 { -1, -1 },
8146 { -1, -1 },
8147 { 135, -1 },
8148 { -1, -1 },
8149 { -1, -1 },
8150 { -1, -1 },
8151 { 154, -1 },
8152 { 4, -1 },
8153 { 186, -1 },
8154 { -1, -1 },
8155 { 218, -1 },
8156 { 168, -1 },
8157 { 192, 555 },
8158 { -1, -1 },
8159 { -1, -1 },
8160 { -1, -1 },
8161 { -1, -1 },
8162 { 54, 522 },
8163 { 127, 580 },
8164 { -1, -1 },
8165 { 162, -1 },
8166 { -1, -1 },
8167 { -1, -1 },
8168 { -1, -1 },
8169 { -1, -1 },
8170 { -1, -1 },
8171 { -1, -1 },
8172 { 91, 534 },
8173 { 257, -1 },
8174 { -1, -1 },
8175 { 261, -1 },
8176 { 56, -1 },
8177 { -1, -1 },
8178 { -1, -1 },
8179 { -1, -1 },
8180 { 184, 548 },
8181 { 14, -1 },
8182 { -1, -1 },
8183 { -1, -1 },
8184 { -1, -1 },
8185 { -1, -1 },
8186 { -1, -1 },
8187 { 224, 564 },
8188 { 41, 547 },
8189 { -1, -1 },
8190 { 10, -1 },
8191 { -1, -1 },
8192 { -1, -1 },
8193 { -1, -1 },
8194 { -1, -1 },
8195 { 53, -1 },
8196 { 239, -1 },
8197 { 11, -1 },
8198 { 60, -1 },
8199 { -1, -1 },
8200 { 274, -1 },
8201 { -1, -1 },
8202 { -1, -1 },
8203 { -1, -1 },
8204 { -1, -1 },
8205 { 206, -1 },
8206 { 249, -1 },
8207 { -1, -1 },
8208 { -1, -1 },
8209 { -1, -1 },
8210 { -1, -1 },
8211 { 97, 540 },
8212 { -1, -1 },
8213 { -1, -1 },
8214 { -1, -1 },
8215 { -1, -1 },
8216 { 35, -1 },
8217 { -1, -1 },
8218 { 210, -1 },
8219 { -1, -1 },
8220 { 283, -1 },
8221 { 208, -1 },
8222 { 226, -1 },
8223 { -1, -1 },
8224 { 276, -1 },
8225 { 103, 541 },
8226 { 0, -1 },
8227 { 75, 578 },
8228 { -1, -1 },
8229 { -1, -1 },
8230 { -1, -1 },
8231 { -1, -1 },
8232 { 109, 569 },
8233 { -1, -1 },
8234 { -1, -1 },
8235 { 58, 517 },
8236 { 24, -1 },
8237 { -1, -1 },
8238 { -1, -1 },
8239 { -1, -1 },
8240 { -1, -1 },
8241 { 110, 533 },
8242 { -1, -1 },
8243 { -1, -1 },
8244 { 46, -1 },
8245 { 259, -1 },
8246 { -1, -1 },
8247 { -1, -1 },
8248 { 112, -1 },
8249 { -1, -1 },
8250 { 42, -1 },
8251 { 18, -1 },
8252 { -1, -1 },
8253 { -1, -1 },
8254 { 73, -1 },
8255 { 13, -1 },
8256 { 295, -1 },
8257 { 117, 574 },
8258 { 131, -1 },
8259 { 30, -1 },
8260 { -1, -1 },
8261 { -1, -1 },
8262 { 33, -1 },
8263 { -1, -1 },
8264 { -1, -1 },
8265 { -1, -1 },
8266 { -1, -1 },
8267 { 49, -1 },
8268 { 148, -1 },
8269 { -1, -1 },
8270 { 178, -1 },
8271 { 125, -1 },
8272 { 16, 523 },
8273 { -1, -1 },
8274 { -1, -1 },
8275 { 118, -1 },
8276 { 151, -1 },
8277 { -1, -1 },
8278 { 78, -1 },
8279 { -1, -1 },
8280 { -1, -1 },
8281 { 55, 536 },
8282 { -1, -1 },
8283 { 17, -1 },
8284 { 235, -1 },
8285 { -1, -1 },
8286 { 182, -1 },
8287 { -1, -1 },
8288 { -1, -1 },
8289 { -1, -1 },
8290 { -1, -1 },
8291 { -1, -1 },
8292 { -1, -1 },
8293 { 278, -1 },
8294 { -1, -1 },
8295 { -1, -1 },
8296 { -1, -1 },
8297 { 275, -1 },
8298 { 111, -1 },
8299 { -1, -1 },
8300 { -1, -1 },
8301 { 72, 518 },
8302 { -1, -1 },
8303 { -1, -1 },
8304 { 40, -1 },
8305 { -1, -1 },
8306 { -1, -1 },
8307 { 45, 524 },
8308 { -1, -1 },
8309 { 281, -1 },
8310 { -1, -1 },
8311 { 29, 535 },
8312 { 98, -1 },
8313 { -1, -1 },
8314 { -1, -1 },
8315 { 270, -1 },
8316 { -1, -1 },
8317 { -1, -1 },
8318 { -1, -1 },
8319 { 15, -1 },
8320 { 142, 546 },
8321 { -1, -1 },
8322 { 219, 557 },
8323 { -1, -1 },
8324 { -1, -1 },
8325 { 123, -1 },
8326 { -1, -1 },
8327 { -1, -1 },
8328 { -1, -1 },
8329 { 169, -1 },
8330 { -1, -1 },
8331 { -1, -1 },
8332 { -1, -1 },
8333 { 86, -1 },
8334 { -1, -1 },
8335 { -1, -1 },
8336 { 287, -1 },
8337 { -1, -1 },
8338 { -1, -1 },
8339 { 185, -1 },
8340 { 77, -1 },
8341 { -1, -1 },
8342 { 90, 561 },
8343 { 76, -1 },
8344 { 267, -1 },
8345 { -1, -1 },
8346 { -1, -1 },
8347 { -1, -1 },
8348 { -1, -1 },
8349 { -1, -1 },
8350 { -1, -1 },
8351 { 136, -1 },
8352 { 32, 573 },
8353 { -1, -1 },
8354 { -1, -1 },
8355 { 6, 513 },
8356 { 221, 560 },
8357 { -1, -1 },
8358 { 22, -1 },
8359 { -1, -1 },
8360 { -1, -1 },
8361 { 12, -1 },
8362 { 161, 567 },
8363 { -1, -1 },
8364 { -1, -1 },
8365 { -1, -1 },
8366 { -1, -1 },
8367 { 67, -1 },
8368 { -1, -1 },
8369 { -1, -1 },
8370 { 57, 566 },
8371 { 20, -1 },
8372 { 62, -1 },
8373 { 246, -1 },
8374 { 108, -1 },
8375 { -1, -1 },
8376 { -1, -1 },
8377 { 3, -1 },
8378 { -1, -1 },
8379 { -1, -1 },
8380 { -1, -1 },
8381 { -1, -1 },
8382 { -1, -1 },
8383 { 133, -1 },
8384 { 81, 545 },
8385 { -1, -1 },
8386 { 94, -1 },
8387 { 191, -1 },
8388 { 167, -1 },
8389 { -1, -1 },
8390 { -1, -1 },
8391 { -1, -1 },
8392 { -1, -1 },
8393 { -1, -1 },
8394 { -1, -1 },
8395 { 297, -1 },
8396 { 149, -1 },
8397 { -1, -1 },
8398 { 26, -1 },
8399 { 47, -1 },
8400 { 59, -1 },
8401 { 69, 575 },
8402 { 79, -1 },
8403 { 88, -1 },
8404 { 89, -1 },
8405 { 95, 520 },
8406 { 96, -1 },
8407 { 99, 529 },
8408 { 105, -1 },
8409 { 106, -1 },
8410 { 115, 554 },
8411 { 122, 543 },
8412 { 126, -1 },
8413 { 130, -1 },
8414 { 140, -1 },
8415 { 141, -1 },
8416 { 143, -1 },
8417 { 144, 570 },
8418 { 146, -1 },
8419 { 147, -1 },
8420 { 150, 563 },
8421 { 152, -1 },
8422 { 159, 537 },
8423 { 160, -1 },
8424 { 170, -1 },
8425 { 172, -1 },
8426 { 173, -1 },
8427 { 176, 550 },
8428 { 177, -1 },
8429 { 179, -1 },
8430 { 180, 581 },
8431 { 187, -1 },
8432 { 189, 559 },
8433 { 190, -1 },
8434 { 194, -1 },
8435 { 195, -1 },
8436 { 196, -1 },
8437 { 199, -1 },
8438 { 200, 571 },
8439 { 207, -1 },
8440 { 209, -1 },
8441 { 211, -1 },
8442 { 213, -1 },
8443 { 222, -1 },
8444 { 225, 577 },
8445 { 228, -1 },
8446 { 229, -1 },
8447 { 230, -1 },
8448 { 233, -1 },
8449 { 237, -1 },
8450 { 238, -1 },
8451 { 240, -1 },
8452 { 242, -1 },
8453 { 244, -1 },
8454 { 245, -1 },
8455 { 252, -1 },
8456 { 258, -1 },
8457 { 263, 572 },
8458 { 264, -1 },
8459 { 269, -1 },
8460 { 272, -1 },
8461 { 282, -1 },
8462 { 284, -1 },
8463 { 286, -1 },
8464 { 288, -1 },
8465 { 291, -1 },
8466 { 292, -1 },
8467 { 293, -1 },
8468};
8469
8470static const struct HashValue scriptTableValue[298] = {
8471 { "Tangut", 228 },
8472 { "Tang", 228 },
8473 { "Thaana", 100 },
8474 { "Thaa", 100 },
8475 { "Adlam", 223 },
8476 { "Adlm", 223 },
8477 { "Telugu", 107 },
8478 { "Telu", 107 },
8479 { "Cyrillic", 95 },
8480 { "Cyrl", 95 },
8481 { "Zanabazar_Square", 232 },
8482 { "Zanb", 232 },
8483 { "Hangul", 116 },
8484 { "Hang", 116 },
8485 { "Old_South_Arabian", 179 },
8486 { "Sarb", 179 },
8487 { "Ethiopic", 117 },
8488 { "Ethi", 117 },
8489 { "Inherited", 132 },
8490 { "Zinh", 132 },
8491 { "Qaai", 132 },
8492 { "Meroitic_Cursive", 188 },
8493 { "Merc", 188 },
8494 { "Bhaiksuki", 224 },
8495 { "Bhks", 224 },
8496 { "Ahom", 217 },
8497 { "Ahom", 217 },
8498 { "Han", 127 },
8499 { "Hani", 127 },
8500 { "Old_North_Arabian", 207 },
8501 { "Narb", 207 },
8502 { "Armenian", 96 },
8503 { "Armn", 96 },
8504 { "Tamil", 106 },
8505 { "Taml", 106 },
8506 { "Bopomofo", 126 },
8507 { "Bopo", 126 },
8508 { "Bassa_Vah", 195 },
8509 { "Bass", 195 },
8510 { "Sundanese", 158 },
8511 { "Sund", 158 },
8512 { "Osage", 227 },
8513 { "Osge", 227 },
8514 { "Old_Sogdian", 239 },
8515 { "Sogo", 239 },
8516 { "Tagalog", 133 },
8517 { "Tglg", 133 },
8518 { "Malayalam", 109 },
8519 { "Mlym", 109 },
8520 { "Marchen", 225 },
8521 { "Marc", 225 },
8522 { "Carian", 166 },
8523 { "Cari", 166 },
8524 { "Hiragana", 124 },
8525 { "Hira", 124 },
8526 { "Tagbanwa", 136 },
8527 { "Tagb", 136 },
8528 { "Meetei_Mayek", 177 },
8529 { "Mtei", 177 },
8530 { "Hanifi_Rohingya", 237 },
8531 { "Rohg", 237 },
8532 { "Pahawh_Hmong", 199 },
8533 { "Hmng", 199 },
8534 { "Tai_Le", 138 },
8535 { "Tale", 138 },
8536 { "Kayah_Li", 163 },
8537 { "Kali", 163 },
8538 { "Buginese", 145 },
8539 { "Bugi", 145 },
8540 { "Kharoshthi", 152 },
8541 { "Khar", 152 },
8542 { "Tai_Tham", 169 },
8543 { "Lana", 169 },
8544 { "Old_Italic", 129 },
8545 { "Ital", 129 },
8546 { "Old_Persian", 151 },
8547 { "Xpeo", 151 },
8548 { "Warang_Citi", 216 },
8549 { "Wara", 216 },
8550 { "Latin", 93 },
8551 { "Latn", 93 },
8552 { "Saurashtra", 162 },
8553 { "Saur", 162 },
8554 { "Shavian", 141 },
8555 { "Shaw", 141 },
8556 { "Georgian", 115 },
8557 { "Geor", 115 },
8558 { "Grantha", 198 },
8559 { "Gran", 198 },
8560 { "Duployan", 196 },
8561 { "Dupl", 196 },
8562 { "Batak", 184 },
8563 { "Batk", 184 },
8564 { "Devanagari", 101 },
8565 { "Deva", 101 },
8566 { "Thai", 111 },
8567 { "Thai", 111 },
8568 { "Tibetan", 113 },
8569 { "Tibt", 113 },
8570 { "Tifinagh", 149 },
8571 { "Tfng", 149 },
8572 { "Ugaritic", 140 },
8573 { "Ugar", 140 },
8574 { "Braille", 144 },
8575 { "Brai", 144 },
8576 { "Anatolian_Hieroglyphs", 218 },
8577 { "Hluw", 218 },
8578 { "Greek", 94 },
8579 { "Grek", 94 },
8580 { "Lycian", 165 },
8581 { "Lyci", 165 },
8582 { "Mende_Kikakui", 204 },
8583 { "Mend", 204 },
8584 { "Tai_Viet", 170 },
8585 { "Tavt", 170 },
8586 { "Vai", 161 },
8587 { "Vaii", 161 },
8588 { "Ogham", 120 },
8589 { "Ogam", 120 },
8590 { "Inscriptional_Parthian", 180 },
8591 { "Prti", 180 },
8592 { "Cham", 168 },
8593 { "Cham", 168 },
8594 { "Syriac", 99 },
8595 { "Syrc", 99 },
8596 { "Runic", 121 },
8597 { "Runr", 121 },
8598 { "Gothic", 130 },
8599 { "Goth", 130 },
8600 { "Mahajani", 202 },
8601 { "Mahj", 202 },
8602 { "Katakana", 125 },
8603 { "Kana", 125 },
8604 { "Osmanya", 142 },
8605 { "Osma", 142 },
8606 { "New_Tai_Lue", 147 },
8607 { "Talu", 147 },
8608 { "Ol_Chiki", 160 },
8609 { "Olck", 160 },
8610 { "Newa", 226 },
8611 { "Newa", 226 },
8612 { "Limbu", 137 },
8613 { "Limb", 137 },
8614 { "Pau_Cin_Hau", 210 },
8615 { "Pauc", 210 },
8616 { "Cherokee", 118 },
8617 { "Cher", 118 },
8618 { "Miao", 190 },
8619 { "Plrd", 190 },
8620 { "Oriya", 105 },
8621 { "Orya", 105 },
8622 { "Medefaidrin", 236 },
8623 { "Medf", 236 },
8624 { "Sharada", 191 },
8625 { "Shrd", 191 },
8626 { "Gujarati", 104 },
8627 { "Gujr", 104 },
8628 { "Nushu", 230 },
8629 { "Nshu", 230 },
8630 { "Modi", 205 },
8631 { "Modi", 205 },
8632 { "Gunjala_Gondi", 234 },
8633 { "Gong", 234 },
8634 { "Inscriptional_Pahlavi", 181 },
8635 { "Phli", 181 },
8636 { "Manichaean", 203 },
8637 { "Mani", 203 },
8638 { "Khmer", 122 },
8639 { "Khmr", 122 },
8640 { "Cuneiform", 154 },
8641 { "Xsux", 154 },
8642 { "Khudawadi", 214 },
8643 { "Sind", 214 },
8644 { "Mandaic", 186 },
8645 { "Mand", 186 },
8646 { "Hatran", 219 },
8647 { "Hatr", 219 },
8648 { "Syloti_Nagri", 150 },
8649 { "Sylo", 150 },
8650 { "Nko", 157 },
8651 { "Nkoo", 157 },
8652 { "Canadian_Aboriginal", 119 },
8653 { "Cans", 119 },
8654 { "Meroitic_Hieroglyphs", 189 },
8655 { "Mero", 189 },
8656 { "Phoenician", 155 },
8657 { "Phnx", 155 },
8658 { "Nabataean", 208 },
8659 { "Nbat", 208 },
8660 { "Bengali", 102 },
8661 { "Beng", 102 },
8662 { "Kaithi", 183 },
8663 { "Kthi", 183 },
8664 { "Glagolitic", 148 },
8665 { "Glag", 148 },
8666 { "Imperial_Aramaic", 178 },
8667 { "Armi", 178 },
8668 { "Sora_Sompeng", 192 },
8669 { "Sora", 192 },
8670 { "Gurmukhi", 103 },
8671 { "Guru", 103 },
8672 { "Javanese", 176 },
8673 { "Java", 176 },
8674 { "Old_Permic", 211 },
8675 { "Perm", 211 },
8676 { "Phags_Pa", 156 },
8677 { "Phag", 156 },
8678 { "Cypriot", 143 },
8679 { "Cprt", 143 },
8680 { "Kannada", 108 },
8681 { "Knda", 108 },
8682 { "Khojki", 200 },
8683 { "Khoj", 200 },
8684 { "Mongolian", 123 },
8685 { "Mong", 123 },
8686 { "Sinhala", 110 },
8687 { "Sinh", 110 },
8688 { "Brahmi", 185 },
8689 { "Brah", 185 },
8690 { "Elbasan", 197 },
8691 { "Elba", 197 },
8692 { "Deseret", 131 },
8693 { "Dsrt", 131 },
8694 { "Rejang", 164 },
8695 { "Rjng", 164 },
8696 { "SignWriting", 222 },
8697 { "Sgnw", 222 },
8698 { "Multani", 220 },
8699 { "Mult", 220 },
8700 { "Yi", 128 },
8701 { "Yiii", 128 },
8702 { "Balinese", 153 },
8703 { "Bali", 153 },
8704 { "Lao", 112 },
8705 { "Laoo", 112 },
8706 { "Hanunoo", 134 },
8707 { "Hano", 134 },
8708 { "Masaram_Gondi", 229 },
8709 { "Gonm", 229 },
8710 { "Linear_B", 139 },
8711 { "Linb", 139 },
8712 { "Linear_A", 201 },
8713 { "Lina", 201 },
8714 { "Dogra", 233 },
8715 { "Dogr", 233 },
8716 { "Old_Turkic", 182 },
8717 { "Orkh", 182 },
8718 { "Lepcha", 159 },
8719 { "Lepc", 159 },
8720 { "Lydian", 167 },
8721 { "Lydi", 167 },
8722 { "Egyptian_Hieroglyphs", 172 },
8723 { "Egyp", 172 },
8724 { "Sogdian", 238 },
8725 { "Sogd", 238 },
8726 { "Caucasian_Albanian", 194 },
8727 { "Aghb", 194 },
8728 { "Makasar", 235 },
8729 { "Maka", 235 },
8730 { "Old_Hungarian", 221 },
8731 { "Hung", 221 },
8732 { "Samaritan", 173 },
8733 { "Samr", 173 },
8734 { "Lisu", 174 },
8735 { "Lisu", 174 },
8736 { "Buhid", 135 },
8737 { "Buhd", 135 },
8738 { "Palmyrene", 209 },
8739 { "Palm", 209 },
8740 { "Tirhuta", 215 },
8741 { "Tirh", 215 },
8742 { "Mro", 206 },
8743 { "Mroo", 206 },
8744 { "Common", 92 },
8745 { "Zyyy", 92 },
8746 { "Coptic", 146 },
8747 { "Copt", 146 },
8748 { "Qaac", 146 },
8749 { "Chakma", 187 },
8750 { "Cakm", 187 },
8751 { "Arabic", 98 },
8752 { "Arab", 98 },
8753 { "Bamum", 175 },
8754 { "Bamu", 175 },
8755 { "Myanmar", 114 },
8756 { "Mymr", 114 },
8757 { "Siddham", 213 },
8758 { "Sidd", 213 },
8759 { "Soyombo", 231 },
8760 { "Soyo", 231 },
8761 { "Avestan", 171 },
8762 { "Avst", 171 },
8763 { "Hebrew", 97 },
8764 { "Hebr", 97 },
8765 { "Psalter_Pahlavi", 212 },
8766 { "Phlp", 212 },
8767 { "Takri", 193 },
8768 { "Takr", 193 },
8769};
8770
8771static const struct HashTable scriptHashTable =
8772 { 298, 511, scriptTableValue, scriptTableIndex };
8773
8774// Script_Extensions:
8775static const struct HashIndex scriptExtensionTableIndex[582] = {
8776 { -1, -1 },
8777 { -1, -1 },
8778 { 27, -1 },
8779 { -1, -1 },
8780 { -1, -1 },
8781 { -1, -1 },
8782 { -1, -1 },
8783 { 285, -1 },
8784 { -1, -1 },
8785 { -1, -1 },
8786 { 21, -1 },
8787 { -1, -1 },
8788 { -1, -1 },
8789 { 169, -1 },
8790 { 8, -1 },
8791 { -1, -1 },
8792 { 23, 516 },
8793 { 132, 579 },
8794 { -1, -1 },
8795 { -1, -1 },
8796 { -1, -1 },
8797 { -1, -1 },
8798 { 75, -1 },
8799 { -1, -1 },
8800 { 38, -1 },
8801 { -1, -1 },
8802 { -1, -1 },
8803 { 36, -1 },
8804 { -1, -1 },
8805 { 247, -1 },
8806 { 51, 517 },
8807 { 157, -1 },
8808 { -1, -1 },
8809 { -1, -1 },
8810 { -1, -1 },
8811 { -1, -1 },
8812 { 204, -1 },
8813 { -1, -1 },
8814 { 105, -1 },
8815 { -1, -1 },
8816 { -1, -1 },
8817 { -1, -1 },
8818 { 214, -1 },
8819 { 271, -1 },
8820 { -1, -1 },
8821 { -1, -1 },
8822 { -1, -1 },
8823 { -1, -1 },
8824 { -1, -1 },
8825 { 164, -1 },
8826 { 192, -1 },
8827 { 7, 522 },
8828 { -1, -1 },
8829 { -1, -1 },
8830 { 142, 555 },
8831 { 175, -1 },
8832 { -1, -1 },
8833 { 195, -1 },
8834 { -1, -1 },
8835 { 167, 535 },
8836 { -1, -1 },
8837 { 289, -1 },
8838 { -1, -1 },
8839 { 262, -1 },
8840 { 141, -1 },
8841 { -1, -1 },
8842 { 290, -1 },
8843 { -1, -1 },
8844 { 87, -1 },
8845 { -1, -1 },
8846 { 2, -1 },
8847 { -1, -1 },
8848 { 178, -1 },
8849 { 199, -1 },
8850 { 268, -1 },
8851 { -1, -1 },
8852 { -1, -1 },
8853 { 241, -1 },
8854 { -1, -1 },
8855 { 232, 560 },
8856 { 185, -1 },
8857 { -1, -1 },
8858 { -1, -1 },
8859 { -1, -1 },
8860 { 72, -1 },
8861 { -1, -1 },
8862 { -1, -1 },
8863 { 236, -1 },
8864 { -1, -1 },
8865 { 225, -1 },
8866 { 255, -1 },
8867 { -1, -1 },
8868 { -1, -1 },
8869 { -1, -1 },
8870 { 234, 566 },
8871 { -1, -1 },
8872 { -1, -1 },
8873 { 138, -1 },
8874 { -1, -1 },
8875 { -1, -1 },
8876 { -1, -1 },
8877 { 37, -1 },
8878 { -1, -1 },
8879 { 162, 553 },
8880 { -1, -1 },
8881 { -1, -1 },
8882 { 148, -1 },
8883 { 168, -1 },
8884 { 28, 531 },
8885 { 5, 514 },
8886 { -1, -1 },
8887 { 68, -1 },
8888 { -1, -1 },
8889 { 84, -1 },
8890 { 254, -1 },
8891 { 149, -1 },
8892 { -1, -1 },
8893 { -1, -1 },
8894 { -1, -1 },
8895 { 179, -1 },
8896 { -1, -1 },
8897 { 159, 541 },
8898 { -1, -1 },
8899 { 143, 528 },
8900 { 277, -1 },
8901 { 200, -1 },
8902 { -1, -1 },
8903 { -1, -1 },
8904 { -1, -1 },
8905 { -1, -1 },
8906 { 265, -1 },
8907 { 248, -1 },
8908 { 52, 563 },
8909 { 133, 539 },
8910 { 97, -1 },
8911 { 260, -1 },
8912 { 136, -1 },
8913 { -1, -1 },
8914 { -1, -1 },
8915 { -1, -1 },
8916 { 128, -1 },
8917 { 217, -1 },
8918 { 118, -1 },
8919 { 78, -1 },
8920 { -1, -1 },
8921 { -1, -1 },
8922 { 296, -1 },
8923 { -1, -1 },
8924 { -1, -1 },
8925 { 43, -1 },
8926 { -1, -1 },
8927 { -1, -1 },
8928 { -1, -1 },
8929 { -1, -1 },
8930 { -1, -1 },
8931 { 207, -1 },
8932 { -1, -1 },
8933 { 86, 550 },
8934 { 273, -1 },
8935 { -1, -1 },
8936 { 19, -1 },
8937 { 250, -1 },
8938 { 62, -1 },
8939 { -1, -1 },
8940 { 63, -1 },
8941 { 39, -1 },
8942 { 104, -1 },
8943 { -1, -1 },
8944 { -1, -1 },
8945 { 124, -1 },
8946 { 111, 576 },
8947 { -1, -1 },
8948 { -1, -1 },
8949 { -1, -1 },
8950 { 243, -1 },
8951 { 123, 536 },
8952 { -1, -1 },
8953 { 231, -1 },
8954 { 74, -1 },
8955 { -1, -1 },
8956 { -1, -1 },
8957 { -1, -1 },
8958 { -1, -1 },
8959 { -1, -1 },
8960 { -1, -1 },
8961 { 216, -1 },
8962 { -1, -1 },
8963 { 9, 527 },
8964 { 125, 525 },
8965 { -1, -1 },
8966 { -1, -1 },
8967 { -1, -1 },
8968 { -1, -1 },
8969 { -1, -1 },
8970 { 161, -1 },
8971 { -1, -1 },
8972 { -1, -1 },
8973 { 44, 547 },
8974 { 41, -1 },
8975 { -1, -1 },
8976 { -1, -1 },
8977 { -1, -1 },
8978 { -1, -1 },
8979 { 91, -1 },
8980 { 108, -1 },
8981 { -1, -1 },
8982 { -1, -1 },
8983 { 253, -1 },
8984 { -1, -1 },
8985 { 160, -1 },
8986 { 251, -1 },
8987 { 88, 520 },
8988 { -1, -1 },
8989 { 266, -1 },
8990 { 69, -1 },
8991 { 256, -1 },
8992 { 67, -1 },
8993 { 55, -1 },
8994 { -1, -1 },
8995 { 1, 554 },
8996 { -1, -1 },
8997 { 170, -1 },
8998 { 106, 557 },
8999 { 280, -1 },
9000 { 294, -1 },
9001 { 50, -1 },
9002 { 34, -1 },
9003 { -1, -1 },
9004 { -1, -1 },
9005 { 25, 512 },
9006 { 42, -1 },
9007 { 219, -1 },
9008 { -1, -1 },
9009 { -1, -1 },
9010 { -1, -1 },
9011 { 218, -1 },
9012 { -1, -1 },
9013 { -1, -1 },
9014 { 89, -1 },
9015 { 31, -1 },
9016 { -1, -1 },
9017 { 117, 526 },
9018 { -1, -1 },
9019 { -1, -1 },
9020 { -1, -1 },
9021 { 70, 545 },
9022 { -1, -1 },
9023 { 48, -1 },
9024 { 96, -1 },
9025 { -1, -1 },
9026 { -1, -1 },
9027 { -1, -1 },
9028 { -1, -1 },
9029 { -1, -1 },
9030 { 203, -1 },
9031 { -1, -1 },
9032 { 187, 548 },
9033 { -1, -1 },
9034 { -1, -1 },
9035 { -1, -1 },
9036 { -1, -1 },
9037 { 139, -1 },
9038 { -1, -1 },
9039 { -1, -1 },
9040 { -1, -1 },
9041 { 158, -1 },
9042 { 4, -1 },
9043 { 190, -1 },
9044 { -1, -1 },
9045 { 220, -1 },
9046 { 172, -1 },
9047 { 120, 552 },
9048 { -1, -1 },
9049 { -1, -1 },
9050 { -1, -1 },
9051 { -1, -1 },
9052 { 54, 523 },
9053 { 131, 580 },
9054 { -1, -1 },
9055 { 166, -1 },
9056 { -1, -1 },
9057 { -1, -1 },
9058 { -1, -1 },
9059 { -1, -1 },
9060 { -1, -1 },
9061 { -1, -1 },
9062 { 107, 533 },
9063 { 257, -1 },
9064 { -1, -1 },
9065 { 261, -1 },
9066 { 66, -1 },
9067 { -1, -1 },
9068 { -1, -1 },
9069 { -1, -1 },
9070 { 188, 544 },
9071 { 14, -1 },
9072 { -1, -1 },
9073 { -1, -1 },
9074 { -1, -1 },
9075 { -1, -1 },
9076 { -1, -1 },
9077 { 226, 562 },
9078 { 194, 549 },
9079 { -1, -1 },
9080 { 10, -1 },
9081 { -1, -1 },
9082 { -1, -1 },
9083 { -1, -1 },
9084 { -1, -1 },
9085 { 53, -1 },
9086 { 239, -1 },
9087 { 11, -1 },
9088 { 60, -1 },
9089 { -1, -1 },
9090 { 274, -1 },
9091 { -1, -1 },
9092 { -1, -1 },
9093 { -1, -1 },
9094 { -1, -1 },
9095 { 208, -1 },
9096 { 49, -1 },
9097 { -1, -1 },
9098 { -1, -1 },
9099 { -1, -1 },
9100 { -1, -1 },
9101 { 101, 537 },
9102 { -1, -1 },
9103 { -1, -1 },
9104 { -1, -1 },
9105 { -1, -1 },
9106 { 35, -1 },
9107 { -1, -1 },
9108 { 212, -1 },
9109 { -1, -1 },
9110 { 283, -1 },
9111 { 210, -1 },
9112 { 228, -1 },
9113 { -1, -1 },
9114 { 276, -1 },
9115 { 95, 538 },
9116 { 0, -1 },
9117 { 79, 578 },
9118 { -1, -1 },
9119 { -1, -1 },
9120 { -1, -1 },
9121 { -1, -1 },
9122 { 113, 567 },
9123 { -1, -1 },
9124 { -1, -1 },
9125 { 58, 518 },
9126 { 24, -1 },
9127 { -1, -1 },
9128 { -1, -1 },
9129 { -1, -1 },
9130 { -1, -1 },
9131 { 114, 532 },
9132 { -1, -1 },
9133 { -1, -1 },
9134 { 46, -1 },
9135 { 259, -1 },
9136 { -1, -1 },
9137 { -1, -1 },
9138 { 116, -1 },
9139 { -1, -1 },
9140 { 206, -1 },
9141 { 18, -1 },
9142 { -1, -1 },
9143 { -1, -1 },
9144 { 77, -1 },
9145 { 13, -1 },
9146 { 295, -1 },
9147 { 121, 572 },
9148 { 135, -1 },
9149 { 30, -1 },
9150 { -1, -1 },
9151 { -1, -1 },
9152 { 33, -1 },
9153 { -1, -1 },
9154 { -1, -1 },
9155 { -1, -1 },
9156 { -1, -1 },
9157 { 249, -1 },
9158 { 152, -1 },
9159 { -1, -1 },
9160 { 182, -1 },
9161 { 129, -1 },
9162 { 16, 524 },
9163 { -1, -1 },
9164 { -1, -1 },
9165 { 122, -1 },
9166 { 155, -1 },
9167 { -1, -1 },
9168 { 82, -1 },
9169 { -1, -1 },
9170 { -1, -1 },
9171 { 65, 573 },
9172 { -1, -1 },
9173 { 17, -1 },
9174 { 235, -1 },
9175 { -1, -1 },
9176 { 186, -1 },
9177 { -1, -1 },
9178 { -1, -1 },
9179 { -1, -1 },
9180 { -1, -1 },
9181 { -1, -1 },
9182 { -1, -1 },
9183 { 163, -1 },
9184 { -1, -1 },
9185 { -1, -1 },
9186 { -1, -1 },
9187 { 275, -1 },
9188 { 115, -1 },
9189 { -1, -1 },
9190 { -1, -1 },
9191 { 76, 519 },
9192 { -1, -1 },
9193 { -1, -1 },
9194 { 40, -1 },
9195 { -1, -1 },
9196 { -1, -1 },
9197 { 45, 515 },
9198 { -1, -1 },
9199 { 281, -1 },
9200 { -1, -1 },
9201 { 29, 534 },
9202 { 102, -1 },
9203 { -1, -1 },
9204 { -1, -1 },
9205 { 270, -1 },
9206 { -1, -1 },
9207 { -1, -1 },
9208 { -1, -1 },
9209 { 15, -1 },
9210 { 56, 530 },
9211 { -1, -1 },
9212 { 147, 556 },
9213 { -1, -1 },
9214 { -1, -1 },
9215 { 127, -1 },
9216 { -1, -1 },
9217 { -1, -1 },
9218 { -1, -1 },
9219 { 173, -1 },
9220 { -1, -1 },
9221 { -1, -1 },
9222 { -1, -1 },
9223 { 90, -1 },
9224 { -1, -1 },
9225 { -1, -1 },
9226 { 287, -1 },
9227 { -1, -1 },
9228 { -1, -1 },
9229 { 189, -1 },
9230 { 81, -1 },
9231 { -1, -1 },
9232 { 94, 559 },
9233 { 80, -1 },
9234 { 267, -1 },
9235 { -1, -1 },
9236 { -1, -1 },
9237 { -1, -1 },
9238 { -1, -1 },
9239 { -1, -1 },
9240 { -1, -1 },
9241 { 140, -1 },
9242 { 32, 571 },
9243 { -1, -1 },
9244 { -1, -1 },
9245 { 6, 513 },
9246 { 223, 558 },
9247 { -1, -1 },
9248 { 22, -1 },
9249 { -1, -1 },
9250 { -1, -1 },
9251 { 12, -1 },
9252 { 165, 565 },
9253 { -1, -1 },
9254 { -1, -1 },
9255 { -1, -1 },
9256 { -1, -1 },
9257 { 71, -1 },
9258 { -1, -1 },
9259 { -1, -1 },
9260 { 57, 564 },
9261 { 20, -1 },
9262 { 64, -1 },
9263 { 246, -1 },
9264 { 112, -1 },
9265 { -1, -1 },
9266 { -1, -1 },
9267 { 3, -1 },
9268 { -1, -1 },
9269 { -1, -1 },
9270 { -1, -1 },
9271 { -1, -1 },
9272 { -1, -1 },
9273 { 137, -1 },
9274 { 85, 542 },
9275 { -1, -1 },
9276 { 98, -1 },
9277 { 119, -1 },
9278 { 171, -1 },
9279 { -1, -1 },
9280 { -1, -1 },
9281 { -1, -1 },
9282 { -1, -1 },
9283 { -1, -1 },
9284 { -1, -1 },
9285 { 297, -1 },
9286 { 153, -1 },
9287 { -1, -1 },
9288 { 26, -1 },
9289 { 47, -1 },
9290 { 59, -1 },
9291 { 61, 551 },
9292 { 73, 575 },
9293 { 83, -1 },
9294 { 92, -1 },
9295 { 93, -1 },
9296 { 99, 521 },
9297 { 100, -1 },
9298 { 103, 529 },
9299 { 109, -1 },
9300 { 110, -1 },
9301 { 126, 540 },
9302 { 130, -1 },
9303 { 134, -1 },
9304 { 144, -1 },
9305 { 145, -1 },
9306 { 146, 543 },
9307 { 150, -1 },
9308 { 151, -1 },
9309 { 154, 561 },
9310 { 156, -1 },
9311 { 174, -1 },
9312 { 176, -1 },
9313 { 177, -1 },
9314 { 180, 546 },
9315 { 181, -1 },
9316 { 183, -1 },
9317 { 184, 581 },
9318 { 191, -1 },
9319 { 193, -1 },
9320 { 196, -1 },
9321 { 197, -1 },
9322 { 198, -1 },
9323 { 201, -1 },
9324 { 202, 569 },
9325 { 205, -1 },
9326 { 209, -1 },
9327 { 211, -1 },
9328 { 213, -1 },
9329 { 215, -1 },
9330 { 221, -1 },
9331 { 222, 568 },
9332 { 224, -1 },
9333 { 227, 577 },
9334 { 229, -1 },
9335 { 230, -1 },
9336 { 233, -1 },
9337 { 237, -1 },
9338 { 238, -1 },
9339 { 240, -1 },
9340 { 242, -1 },
9341 { 244, -1 },
9342 { 245, -1 },
9343 { 252, -1 },
9344 { 258, -1 },
9345 { 263, 570 },
9346 { 264, -1 },
9347 { 269, -1 },
9348 { 272, -1 },
9349 { 278, 574 },
9350 { 279, -1 },
9351 { 282, -1 },
9352 { 284, -1 },
9353 { 286, -1 },
9354 { 288, -1 },
9355 { 291, -1 },
9356 { 292, -1 },
9357 { 293, -1 },
9358};
9359
9360static const struct HashValue scriptExtensionTableValue[298] = {
9361 { "Tangut", 228 },
9362 { "Tang", 228 },
9363 { "Thaana", 252 },
9364 { "Thaa", 252 },
9365 { "Adlam", 293 },
9366 { "Adlm", 293 },
9367 { "Telugu", 292 },
9368 { "Telu", 292 },
9369 { "Cyrillic", 260 },
9370 { "Cyrl", 260 },
9371 { "Zanabazar_Square", 232 },
9372 { "Zanb", 232 },
9373 { "Hangul", 288 },
9374 { "Hang", 288 },
9375 { "Old_South_Arabian", 179 },
9376 { "Sarb", 179 },
9377 { "Ethiopic", 117 },
9378 { "Ethi", 117 },
9379 { "Inherited", 241 },
9380 { "Zinh", 241 },
9381 { "Qaai", 241 },
9382 { "Meroitic_Cursive", 188 },
9383 { "Merc", 188 },
9384 { "Bhaiksuki", 224 },
9385 { "Bhks", 224 },
9386 { "Ahom", 217 },
9387 { "Ahom", 217 },
9388 { "Han", 246 },
9389 { "Hani", 246 },
9390 { "Old_North_Arabian", 207 },
9391 { "Narb", 207 },
9392 { "Armenian", 253 },
9393 { "Armn", 253 },
9394 { "Tamil", 265 },
9395 { "Taml", 265 },
9396 { "Bopomofo", 255 },
9397 { "Bopo", 255 },
9398 { "Bassa_Vah", 195 },
9399 { "Bass", 195 },
9400 { "Sundanese", 158 },
9401 { "Sund", 158 },
9402 { "Old_Permic", 262 },
9403 { "Perm", 262 },
9404 { "Old_Sogdian", 239 },
9405 { "Sogo", 239 },
9406 { "Tagalog", 284 },
9407 { "Tglg", 284 },
9408 { "Malayalam", 290 },
9409 { "Mlym", 290 },
9410 { "Lydian", 167 },
9411 { "Lydi", 167 },
9412 { "Carian", 166 },
9413 { "Cari", 166 },
9414 { "Hiragana", 270 },
9415 { "Hira", 270 },
9416 { "Multani", 269 },
9417 { "Mult", 269 },
9418 { "Meetei_Mayek", 177 },
9419 { "Mtei", 177 },
9420 { "Hanifi_Rohingya", 250 },
9421 { "Rohg", 250 },
9422 { "Vai", 161 },
9423 { "Vaii", 161 },
9424 { "Pahawh_Hmong", 199 },
9425 { "Hmng", 199 },
9426 { "Tagbanwa", 283 },
9427 { "Tagb", 283 },
9428 { "Tai_Le", 277 },
9429 { "Tale", 277 },
9430 { "Kayah_Li", 280 },
9431 { "Kali", 280 },
9432 { "Buginese", 256 },
9433 { "Bugi", 256 },
9434 { "Kharoshthi", 152 },
9435 { "Khar", 152 },
9436 { "Tai_Tham", 169 },
9437 { "Lana", 169 },
9438 { "Old_Italic", 129 },
9439 { "Ital", 129 },
9440 { "Old_Persian", 151 },
9441 { "Xpeo", 151 },
9442 { "Warang_Citi", 216 },
9443 { "Wara", 216 },
9444 { "Latin", 247 },
9445 { "Latn", 247 },
9446 { "Saurashtra", 162 },
9447 { "Saur", 162 },
9448 { "Shavian", 141 },
9449 { "Shaw", 141 },
9450 { "Georgian", 254 },
9451 { "Geor", 254 },
9452 { "Grantha", 263 },
9453 { "Gran", 263 },
9454 { "Duployan", 244 },
9455 { "Dupl", 244 },
9456 { "Braille", 144 },
9457 { "Brai", 144 },
9458 { "Devanagari", 243 },
9459 { "Deva", 243 },
9460 { "Thai", 111 },
9461 { "Thai", 111 },
9462 { "Tibetan", 113 },
9463 { "Tibt", 113 },
9464 { "Tifinagh", 149 },
9465 { "Tfng", 149 },
9466 { "Ugaritic", 140 },
9467 { "Ugar", 140 },
9468 { "Batak", 184 },
9469 { "Batk", 184 },
9470 { "Anatolian_Hieroglyphs", 218 },
9471 { "Hluw", 218 },
9472 { "Greek", 245 },
9473 { "Grek", 245 },
9474 { "Lycian", 165 },
9475 { "Lyci", 165 },
9476 { "Mende_Kikakui", 204 },
9477 { "Mend", 204 },
9478 { "Tai_Viet", 170 },
9479 { "Tavt", 170 },
9480 { "Kaithi", 286 },
9481 { "Kthi", 286 },
9482 { "Ogham", 120 },
9483 { "Ogam", 120 },
9484 { "Inscriptional_Parthian", 180 },
9485 { "Prti", 180 },
9486 { "Cham", 168 },
9487 { "Cham", 168 },
9488 { "Syriac", 251 },
9489 { "Syrc", 251 },
9490 { "Runic", 121 },
9491 { "Runr", 121 },
9492 { "Gothic", 130 },
9493 { "Goth", 130 },
9494 { "Mahajani", 287 },
9495 { "Mahj", 287 },
9496 { "Katakana", 271 },
9497 { "Kana", 271 },
9498 { "Osmanya", 142 },
9499 { "Osma", 142 },
9500 { "New_Tai_Lue", 147 },
9501 { "Talu", 147 },
9502 { "Ol_Chiki", 160 },
9503 { "Olck", 160 },
9504 { "Newa", 226 },
9505 { "Newa", 226 },
9506 { "Limbu", 304 },
9507 { "Limb", 304 },
9508 { "Elbasan", 197 },
9509 { "Elba", 197 },
9510 { "Cherokee", 118 },
9511 { "Cher", 118 },
9512 { "Miao", 190 },
9513 { "Plrd", 190 },
9514 { "Oriya", 291 },
9515 { "Orya", 291 },
9516 { "Medefaidrin", 236 },
9517 { "Medf", 236 },
9518 { "Sharada", 264 },
9519 { "Shrd", 264 },
9520 { "Gujarati", 266 },
9521 { "Gujr", 266 },
9522 { "Nushu", 230 },
9523 { "Nshu", 230 },
9524 { "Chakma", 274 },
9525 { "Cakm", 274 },
9526 { "Gunjala_Gondi", 302 },
9527 { "Gong", 302 },
9528 { "Inscriptional_Pahlavi", 181 },
9529 { "Phli", 181 },
9530 { "Manichaean", 295 },
9531 { "Mani", 295 },
9532 { "Khmer", 122 },
9533 { "Khmr", 122 },
9534 { "Cuneiform", 154 },
9535 { "Xsux", 154 },
9536 { "Khudawadi", 299 },
9537 { "Sind", 299 },
9538 { "Mandaic", 294 },
9539 { "Mand", 294 },
9540 { "Hatran", 219 },
9541 { "Hatr", 219 },
9542 { "Syloti_Nagri", 275 },
9543 { "Sylo", 275 },
9544 { "Nko", 157 },
9545 { "Nkoo", 157 },
9546 { "Canadian_Aboriginal", 119 },
9547 { "Cans", 119 },
9548 { "Meroitic_Hieroglyphs", 189 },
9549 { "Mero", 189 },
9550 { "Phoenician", 155 },
9551 { "Phnx", 155 },
9552 { "Nabataean", 208 },
9553 { "Nbat", 208 },
9554 { "Bengali", 242 },
9555 { "Beng", 242 },
9556 { "Glagolitic", 261 },
9557 { "Glag", 261 },
9558 { "Imperial_Aramaic", 178 },
9559 { "Armi", 178 },
9560 { "Sora_Sompeng", 192 },
9561 { "Sora", 192 },
9562 { "Gurmukhi", 268 },
9563 { "Guru", 268 },
9564 { "Javanese", 257 },
9565 { "Java", 257 },
9566 { "Osage", 227 },
9567 { "Osge", 227 },
9568 { "Phags_Pa", 273 },
9569 { "Phag", 273 },
9570 { "Cypriot", 258 },
9571 { "Cprt", 258 },
9572 { "Kannada", 279 },
9573 { "Knda", 279 },
9574 { "Khojki", 267 },
9575 { "Khoj", 267 },
9576 { "Mongolian", 272 },
9577 { "Mong", 272 },
9578 { "Sinhala", 303 },
9579 { "Sinh", 303 },
9580 { "Brahmi", 185 },
9581 { "Brah", 185 },
9582 { "Pau_Cin_Hau", 210 },
9583 { "Pauc", 210 },
9584 { "Deseret", 131 },
9585 { "Dsrt", 131 },
9586 { "Rejang", 164 },
9587 { "Rjng", 164 },
9588 { "SignWriting", 222 },
9589 { "Sgnw", 222 },
9590 { "Yi", 289 },
9591 { "Yiii", 289 },
9592 { "Balinese", 153 },
9593 { "Bali", 153 },
9594 { "Lao", 112 },
9595 { "Laoo", 112 },
9596 { "Hanunoo", 282 },
9597 { "Hano", 282 },
9598 { "Masaram_Gondi", 229 },
9599 { "Gonm", 229 },
9600 { "Linear_B", 259 },
9601 { "Linb", 259 },
9602 { "Linear_A", 278 },
9603 { "Lina", 278 },
9604 { "Dogra", 285 },
9605 { "Dogr", 285 },
9606 { "Old_Turkic", 182 },
9607 { "Orkh", 182 },
9608 { "Lepcha", 159 },
9609 { "Lepc", 159 },
9610 { "Marchen", 225 },
9611 { "Marc", 225 },
9612 { "Egyptian_Hieroglyphs", 172 },
9613 { "Egyp", 172 },
9614 { "Sogdian", 297 },
9615 { "Sogd", 297 },
9616 { "Caucasian_Albanian", 194 },
9617 { "Aghb", 194 },
9618 { "Makasar", 235 },
9619 { "Maka", 235 },
9620 { "Old_Hungarian", 221 },
9621 { "Hung", 221 },
9622 { "Samaritan", 173 },
9623 { "Samr", 173 },
9624 { "Lisu", 174 },
9625 { "Lisu", 174 },
9626 { "Buhid", 281 },
9627 { "Buhd", 281 },
9628 { "Palmyrene", 209 },
9629 { "Palm", 209 },
9630 { "Tirhuta", 301 },
9631 { "Tirh", 301 },
9632 { "Mro", 206 },
9633 { "Mroo", 206 },
9634 { "Common", 240 },
9635 { "Zyyy", 240 },
9636 { "Coptic", 249 },
9637 { "Copt", 249 },
9638 { "Qaac", 249 },
9639 { "Modi", 298 },
9640 { "Modi", 298 },
9641 { "Arabic", 248 },
9642 { "Arab", 248 },
9643 { "Bamum", 175 },
9644 { "Bamu", 175 },
9645 { "Myanmar", 276 },
9646 { "Mymr", 276 },
9647 { "Siddham", 213 },
9648 { "Sidd", 213 },
9649 { "Soyombo", 231 },
9650 { "Soyo", 231 },
9651 { "Avestan", 171 },
9652 { "Avst", 171 },
9653 { "Hebrew", 97 },
9654 { "Hebr", 97 },
9655 { "Psalter_Pahlavi", 296 },
9656 { "Phlp", 296 },
9657 { "Takri", 300 },
9658 { "Takr", 300 },
9659};
9660
9661static const struct HashTable scriptExtensionHashTable =
9662 { 298, 511, scriptExtensionTableValue, scriptExtensionTableIndex };
9663
9664
9665