source: icGREP/icgrep-devel/icgrep/UCD/CaseFolding.h @ 5673

Last change on this file since 5673 was 5673, checked in by cameron, 21 months ago

Case folding property objects

File size: 41.5 KB
Line 
1#ifndef CASEFOLDING_H
2#define CASEFOLDING_H
3/*
4 *  Copyright (c) 2017 International Characters, Inc.
5 *  This software is licensed to the public under the Open Software License 3.0.
6 *  icgrep is a trademark of International Characters, Inc.
7 *
8 *  This file is generated by casefold.py - manual edits may be lost.
9 */
10
11#include "PropertyAliases.h"
12#include "PropertyObjects.h"
13#include "PropertyValueAliases.h"
14#include "re/re_cc.h"
15#include "unicode_set.h"
16#include <vector>
17
18typedef unsigned codepoint_t;
19
20struct FoldEntry {
21    re::codepoint_t range_lo;
22    int fold_offset;
23    std::vector<re::interval_t> fold_pairs;
24};
25
26
27void caseInsensitiveInsertRange(re::CC * cc, const re::codepoint_t lo, const re::codepoint_t hi);
28
29inline void caseInsensitiveInsert(re::CC * cc, const re::codepoint_t cp) {
30    caseInsensitiveInsertRange(cc, cp, cp); 
31}
32
33const int foldTableSize = 246;
34
35const FoldEntry foldTable[foldTableSize] = {
36  {0x0, 0, {}},
37  {0x41, 32, {{0x4b, 0x212a}, {0x53, 0x17f}}},
38  {0x5b, 0, {}},
39  {0x61, -32, {{0x6b, 0x212a}, {0x73, 0x17f}}},
40  {0x7b, 0, {{0xb5, 0x3bc}, {0xb5, 0x39c}}},
41  {0xc0, 32, {{0xc5, 0x212b}}},
42  {0xd7, 0, {}},
43  {0xd8, 32, {}},
44  {0xdf, 0, {{0xdf, 0x1e9e}}},
45  {0xe0, -32, {{0xe5, 0x212b}}},
46  {0xf7, 0, {}},
47  {0xf8, -32, {}},
48  {0xff, 0, {{0xff, 0x178}}},
49  {0x100, 1, {}},
50  {0x130, 0, {}},
51  {0x132, 1, {}},
52  {0x138, 0, {}},
53  {0x139, 1, {}},
54  {0x149, 0, {}},
55  {0x14a, 1, {}},
56  {0x178, 0, {{0x178, 0xff}}},
57  {0x179, 1, {}},
58  {0x17f, 0, {{0x17f, 0x73}, {0x17f, 0x53}, {0x180, 0x243}, {0x181, 0x253}}},
59  {0x182, 1, {}},
60  {0x186, 0, {{0x186, 0x254}}},
61  {0x187, 1, {}},
62  {0x189, 205, {}},
63  {0x18b, 1, {}},
64  {0x18d, 0, {{0x18e, 0x1dd}, {0x18f, 0x259}, {0x190, 0x25b}}},
65  {0x191, 1, {}},
66  {0x193, 0, {{0x193, 0x260}, {0x194, 0x263}, {0x195, 0x1f6}, {0x196, 0x269},
67    {0x197, 0x268}}},
68  {0x198, 1, {}},
69  {0x19a, 0, {{0x19a, 0x23d}, {0x19c, 0x26f}, {0x19d, 0x272}, {0x19e, 0x220},
70    {0x19f, 0x275}}},
71  {0x1a0, 1, {}},
72  {0x1a6, 0, {{0x1a6, 0x280}}},
73  {0x1a7, 1, {}},
74  {0x1a9, 0, {{0x1a9, 0x283}}},
75  {0x1ac, 1, {}},
76  {0x1ae, 0, {{0x1ae, 0x288}}},
77  {0x1af, 1, {}},
78  {0x1b1, 217, {}},
79  {0x1b3, 1, {}},
80  {0x1b7, 0, {{0x1b7, 0x292}}},
81  {0x1b8, 1, {}},
82  {0x1ba, 0, {}},
83  {0x1bc, 1, {}},
84  {0x1be, 0, {{0x1bf, 0x1f7}}},
85  {0x1c4, 1, {{0x1c4, 0x1c6}}},
86  {0x1c6, 0, {}},
87  {0x1c5, 1, {{0x1c6, 0x1c4}, {0x1c7, 0x1c9}}},
88  {0x1c9, 0, {}},
89  {0x1c8, 1, {{0x1c9, 0x1c7}, {0x1ca, 0x1cc}}},
90  {0x1cc, 0, {}},
91  {0x1cb, 1, {{0x1cc, 0x1ca}}},
92  {0x1dd, 0, {{0x1dd, 0x18e}}},
93  {0x1de, 1, {}},
94  {0x1f0, 0, {}},
95  {0x1f1, 1, {{0x1f1, 0x1f3}}},
96  {0x1f3, 0, {}},
97  {0x1f2, 1, {{0x1f3, 0x1f1}}},
98  {0x1f6, 0, {{0x1f6, 0x195}, {0x1f7, 0x1bf}}},
99  {0x1f8, 1, {}},
100  {0x220, 0, {{0x220, 0x19e}}},
101  {0x222, 1, {}},
102  {0x234, 0, {{0x23a, 0x2c65}}},
103  {0x23b, 1, {}},
104  {0x23d, 0, {{0x23d, 0x19a}, {0x23e, 0x2c66}}},
105  {0x23f, 10815, {}},
106  {0x241, 1, {}},
107  {0x243, 0, {{0x243, 0x180}, {0x244, 0x289}, {0x245, 0x28c}}},
108  {0x246, 1, {}},
109  {0x250, 0, {{0x250, 0x2c6f}, {0x251, 0x2c6d}, {0x252, 0x2c70}, {0x253, 0x181},
110    {0x254, 0x186}}},
111  {0x256, -205, {}},
112  {0x258, 0, {{0x259, 0x18f}, {0x25b, 0x190}, {0x25c, 0xa7ab}, {0x260, 0x193},
113    {0x261, 0xa7ac}, {0x263, 0x194}, {0x265, 0xa78d}, {0x266, 0xa7aa},
114    {0x268, 0x197}, {0x269, 0x196}, {0x26a, 0xa7ae}, {0x26b, 0x2c62},
115    {0x26c, 0xa7ad}, {0x26f, 0x19c}, {0x271, 0x2c6e}, {0x272, 0x19d},
116    {0x275, 0x19f}, {0x27d, 0x2c64}, {0x280, 0x1a6}, {0x283, 0x1a9},
117    {0x287, 0xa7b1}, {0x288, 0x1ae}, {0x289, 0x244}}},
118  {0x28a, -217, {}},
119  {0x28c, 0, {{0x28c, 0x245}, {0x292, 0x1b7}, {0x29d, 0xa7b2}, {0x29e, 0xa7b0},
120    {0x345, 0x3b9}, {0x345, 0x399}, {0x345, 0x1fbe}}},
121  {0x370, 1, {}},
122  {0x374, 0, {}},
123  {0x376, 1, {}},
124  {0x378, 0, {}},
125  {0x37b, 130, {}},
126  {0x37e, 0, {{0x37f, 0x3f3}, {0x386, 0x3ac}}},
127  {0x388, 37, {}},
128  {0x38b, 0, {{0x38c, 0x3cc}}},
129  {0x38e, 63, {}},
130  {0x390, 0, {}},
131  {0x391, 32, {{0x392, 0x3d0}, {0x395, 0x3f5}, {0x398, 0x3d1}, {0x398, 0x3f4},
132    {0x399, 0x345}, {0x399, 0x1fbe}, {0x39a, 0x3f0}, {0x39c, 0xb5},
133    {0x3a0, 0x3d6}, {0x3a1, 0x3f1}}},
134  {0x3a2, 0, {}},
135  {0x3a3, 32, {{0x3a3, 0x3c2}, {0x3a6, 0x3d5}, {0x3a9, 0x2126}}},
136  {0x3ac, 0, {{0x3ac, 0x386}}},
137  {0x3ad, -37, {}},
138  {0x3b0, 0, {}},
139  {0x3b1, -32, {{0x3b2, 0x3d0}, {0x3b5, 0x3f5}, {0x3b8, 0x3d1}, {0x3b8, 0x3f4},
140    {0x3b9, 0x345}, {0x3b9, 0x1fbe}, {0x3ba, 0x3f0}, {0x3bc, 0xb5},
141    {0x3c0, 0x3d6}, {0x3c1, 0x3f1}}},
142  {0x3c2, 1, {{0x3c2, 0x3a3}}},
143  {0x3c4, 0, {}},
144  {0x3c3, -32, {{0x3c6, 0x3d5}, {0x3c9, 0x2126}}},
145  {0x3cc, 0, {{0x3cc, 0x38c}}},
146  {0x3cd, -63, {}},
147  {0x3cf, 0, {{0x3cf, 0x3d7}, {0x3d0, 0x3b2}, {0x3d0, 0x392}, {0x3d1, 0x3b8},
148    {0x3d1, 0x398}, {0x3d1, 0x3f4}, {0x3d5, 0x3c6}, {0x3d5, 0x3a6},
149    {0x3d6, 0x3c0}, {0x3d6, 0x3a0}, {0x3d7, 0x3cf}}},
150  {0x3d8, 1, {}},
151  {0x3f0, 0, {{0x3f0, 0x3ba}, {0x3f0, 0x39a}, {0x3f1, 0x3c1}, {0x3f1, 0x3a1},
152    {0x3f2, 0x3f9}, {0x3f3, 0x37f}, {0x3f4, 0x3b8}, {0x3f4, 0x398},
153    {0x3f4, 0x3d1}, {0x3f5, 0x3b5}, {0x3f5, 0x395}}},
154  {0x3f7, 1, {}},
155  {0x3f9, 0, {{0x3f9, 0x3f2}}},
156  {0x3fa, 1, {}},
157  {0x3fc, 0, {}},
158  {0x3fd, -130, {}},
159  {0x400, 80, {}},
160  {0x410, 0, {{0x412, 0x1c80}, {0x414, 0x1c81}, {0x41e, 0x1c82}}},
161  {0x421, 6242, {{0x422, 0x1c85}}},
162  {0x423, 0, {{0x42a, 0x1c86}, {0x432, 0x1c80}, {0x434, 0x1c81}, {0x43e, 0x1c82}}},
163  {0x441, 6210, {{0x442, 0x1c85}}},
164  {0x443, 0, {}},
165  {0x410, 32, {{0x412, 0x1c80}, {0x414, 0x1c81}, {0x41e, 0x1c82}, {0x422, 0x1c85},
166    {0x42a, 0x1c86}, {0x432, 0x1c80}, {0x434, 0x1c81}, {0x43e, 0x1c82},
167    {0x442, 0x1c85}, {0x44a, 0x1c86}}},
168  {0x450, -80, {}},
169  {0x460, 1, {{0x462, 0x1c87}, {0x463, 0x1c87}}},
170  {0x482, 0, {}},
171  {0x48a, 1, {}},
172  {0x4c0, 0, {{0x4c0, 0x4cf}}},
173  {0x4c1, 1, {}},
174  {0x4cf, 0, {{0x4cf, 0x4c0}}},
175  {0x4d0, 1, {}},
176  {0x530, 0, {}},
177  {0x531, 48, {}},
178  {0x557, 0, {}},
179  {0x561, -48, {}},
180  {0x587, 0, {}},
181  {0x10a0, 7264, {}},
182  {0x10c6, 0, {{0x10c7, 0x2d27}, {0x10cd, 0x2d2d}}},
183  {0x13a0, 38864, {}},
184  {0x13f0, 8, {}},
185  {0x13f6, 0, {}},
186  {0x13f8, -8, {}},
187  {0x13fe, 0, {{0x1c80, 0x432}, {0x1c80, 0x412}, {0x1c81, 0x434}, {0x1c81, 0x414},
188    {0x1c82, 0x43e}, {0x1c82, 0x41e}}},
189  {0x1c83, -6210, {}},
190  {0x1c85, 0, {}},
191  {0x1c83, -6242, {}},
192  {0x1c85, 0, {}},
193  {0x1c84, 1, {{0x1c85, 0x442}, {0x1c85, 0x422}}},
194  {0x1c86, 0, {{0x1c86, 0x44a}, {0x1c86, 0x42a}, {0x1c87, 0x463}, {0x1c87, 0x462},
195    {0x1c88, 0xa64b}, {0x1c88, 0xa64a}, {0x1d79, 0xa77d}, {0x1d7d, 0x2c63}}},
196  {0x1e00, 1, {{0x1e60, 0x1e9b}, {0x1e61, 0x1e9b}}},
197  {0x1e96, 0, {{0x1e9b, 0x1e61}, {0x1e9b, 0x1e60}, {0x1e9e, 0xdf}}},
198  {0x1ea0, 1, {}},
199  {0x1f00, 8, {}},
200  {0x1f16, 0, {}},
201  {0x1f18, -8, {}},
202  {0x1f1e, 0, {}},
203  {0x1f20, 8, {}},
204  {0x1f46, 0, {}},
205  {0x1f48, -8, {}},
206  {0x1f4e, 0, {{0x1f51, 0x1f59}, {0x1f53, 0x1f5b}, {0x1f55, 0x1f5d}, {0x1f57, 0x1f5f},
207    {0x1f59, 0x1f51}, {0x1f5b, 0x1f53}, {0x1f5d, 0x1f55}, {0x1f5f, 0x1f57}}},
208  {0x1f60, 8, {}},
209  {0x1f70, 74, {}},
210  {0x1f72, 86, {}},
211  {0x1f76, 100, {}},
212  {0x1f78, 128, {}},
213  {0x1f7a, 112, {}},
214  {0x1f7c, 126, {}},
215  {0x1f7e, 0, {}},
216  {0x1f80, 8, {}},
217  {0x1fb2, 0, {{0x1fb3, 0x1fbc}}},
218  {0x1fb8, -8, {}},
219  {0x1fba, -74, {}},
220  {0x1fbc, 0, {{0x1fbc, 0x1fb3}, {0x1fbe, 0x3b9}, {0x1fbe, 0x345}, {0x1fbe, 0x399},
221    {0x1fc3, 0x1fcc}}},
222  {0x1fc8, -86, {}},
223  {0x1fcc, 0, {{0x1fcc, 0x1fc3}}},
224  {0x1fd0, 8, {}},
225  {0x1fd2, 0, {}},
226  {0x1fd8, -8, {}},
227  {0x1fda, -100, {}},
228  {0x1fdc, 0, {}},
229  {0x1fe0, 8, {}},
230  {0x1fe2, 0, {{0x1fe5, 0x1fec}}},
231  {0x1fe8, -8, {}},
232  {0x1fea, -112, {}},
233  {0x1fec, 0, {{0x1fec, 0x1fe5}, {0x1ff3, 0x1ffc}}},
234  {0x1ff8, -128, {}},
235  {0x1ffa, -126, {}},
236  {0x1ffc, 0, {{0x1ffc, 0x1ff3}, {0x2126, 0x3c9}, {0x2126, 0x3a9}, {0x212a, 0x6b},
237    {0x212a, 0x4b}, {0x212b, 0xe5}, {0x212b, 0xc5}, {0x2132, 0x214e},
238    {0x214e, 0x2132}}},
239  {0x2160, 16, {}},
240  {0x2180, 0, {}},
241  {0x2183, 1, {}},
242  {0x2185, 0, {}},
243  {0x24b6, 26, {}},
244  {0x24ea, 0, {}},
245  {0x2c00, 48, {}},
246  {0x2c2f, 0, {}},
247  {0x2c30, -48, {}},
248  {0x2c5f, 0, {}},
249  {0x2c60, 1, {}},
250  {0x2c62, 0, {{0x2c62, 0x26b}, {0x2c63, 0x1d7d}, {0x2c64, 0x27d}, {0x2c65, 0x23a},
251    {0x2c66, 0x23e}}},
252  {0x2c67, 1, {}},
253  {0x2c6d, 0, {{0x2c6d, 0x251}, {0x2c6e, 0x271}, {0x2c6f, 0x250}, {0x2c70, 0x252}}},
254  {0x2c72, 1, {}},
255  {0x2c74, 0, {}},
256  {0x2c75, 1, {}},
257  {0x2c77, 0, {}},
258  {0x2c7e, -10815, {}},
259  {0x2c80, 1, {}},
260  {0x2ce4, 0, {}},
261  {0x2ceb, 1, {}},
262  {0x2cef, 0, {}},
263  {0x2cf2, 1, {}},
264  {0x2cf4, 0, {}},
265  {0x2d00, -7264, {}},
266  {0x2d26, 0, {{0x2d27, 0x10c7}, {0x2d2d, 0x10cd}}},
267  {0xa640, 1, {{0xa64a, 0x1c88}, {0xa64b, 0x1c88}}},
268  {0xa66e, 0, {}},
269  {0xa680, 1, {}},
270  {0xa69c, 0, {}},
271  {0xa722, 1, {}},
272  {0xa730, 0, {}},
273  {0xa732, 1, {}},
274  {0xa770, 0, {}},
275  {0xa779, 1, {}},
276  {0xa77d, 0, {{0xa77d, 0x1d79}}},
277  {0xa77e, 1, {}},
278  {0xa788, 0, {}},
279  {0xa78b, 1, {}},
280  {0xa78d, 0, {{0xa78d, 0x265}}},
281  {0xa790, 1, {}},
282  {0xa794, 0, {}},
283  {0xa796, 1, {}},
284  {0xa7aa, 0, {{0xa7aa, 0x266}, {0xa7ab, 0x25c}, {0xa7ac, 0x261}, {0xa7ad, 0x26c},
285    {0xa7ae, 0x26a}, {0xa7b0, 0x29e}, {0xa7b1, 0x287}, {0xa7b2, 0x29d},
286    {0xa7b3, 0xab53}}},
287  {0xa7b4, 1, {}},
288  {0xa7b8, 0, {{0xab53, 0xa7b3}}},
289  {0xab70, -38864, {}},
290  {0xabc0, 0, {}},
291  {0xff21, 32, {}},
292  {0xff3b, 0, {}},
293  {0xff41, -32, {}},
294  {0xff5b, 0, {}},
295  {0x10400, 40, {}},
296  {0x10450, 0, {}},
297  {0x104b0, 40, {}},
298  {0x104d4, 0, {}},
299  {0x104d8, -40, {}},
300  {0x104fc, 0, {}},
301  {0x10c80, 64, {}},
302  {0x10cb3, 0, {}},
303  {0x10cc0, -64, {}},
304  {0x10cf3, 0, {}},
305  {0x118a0, 32, {}},
306  {0x118e0, 0, {}},
307  {0x1e900, 34, {}},
308  {0x1e944, 0, {}},
309  {0x110000, 0, {}}};
310namespace UCD {
311    namespace SCF_ns {
312        /** Code Point Ranges for scf mapping to <none>
313        **/
314
315        const UnicodeSet null_codepoint_set
316                    {{{Empty, 34816}},
317             {}};
318
319        /** Code Point Ranges for scf mapping to <codepoint>
320        [0000, 0040], [005b, 00b4], [00b6, 00bf], [00d7, 00d7],
321        [00df, 00ff], [0101, 0101], [0103, 0103], [0105, 0105],
322        [0107, 0107], [0109, 0109], [010b, 010b], [010d, 010d],
323        [010f, 010f], [0111, 0111], [0113, 0113], [0115, 0115],
324        [0117, 0117], [0119, 0119], [011b, 011b], [011d, 011d],
325        [011f, 011f], [0121, 0121], [0123, 0123], [0125, 0125],
326        [0127, 0127], [0129, 0129], [012b, 012b], [012d, 012d],
327        [012f, 0131], [0133, 0133], [0135, 0135], [0137, 0138],
328        [013a, 013a], [013c, 013c], [013e, 013e], [0140, 0140],
329        [0142, 0142], [0144, 0144], [0146, 0146], [0148, 0149],
330        [014b, 014b], [014d, 014d], [014f, 014f], [0151, 0151],
331        [0153, 0153], [0155, 0155], [0157, 0157], [0159, 0159],
332        [015b, 015b], [015d, 015d], [015f, 015f], [0161, 0161],
333        [0163, 0163], [0165, 0165], [0167, 0167], [0169, 0169],
334        [016b, 016b], [016d, 016d], [016f, 016f], [0171, 0171],
335        [0173, 0173], [0175, 0175], [0177, 0177], [017a, 017a],
336        [017c, 017c], [017e, 017e], [0180, 0180], [0183, 0183],
337        [0185, 0185], [0188, 0188], [018c, 018d], [0192, 0192],
338        [0195, 0195], [0199, 019b], [019e, 019e], [01a1, 01a1],
339        [01a3, 01a3], [01a5, 01a5], [01a8, 01a8], [01aa, 01ab],
340        [01ad, 01ad], [01b0, 01b0], [01b4, 01b4], [01b6, 01b6],
341        [01b9, 01bb], [01bd, 01c3], [01c6, 01c6], [01c9, 01c9],
342        [01cc, 01cc], [01ce, 01ce], [01d0, 01d0], [01d2, 01d2],
343        [01d4, 01d4], [01d6, 01d6], [01d8, 01d8], [01da, 01da],
344        [01dc, 01dd], [01df, 01df], [01e1, 01e1], [01e3, 01e3],
345        [01e5, 01e5], [01e7, 01e7], [01e9, 01e9], [01eb, 01eb],
346        [01ed, 01ed], [01ef, 01f0], [01f3, 01f3], [01f5, 01f5],
347        [01f9, 01f9], [01fb, 01fb], [01fd, 01fd], [01ff, 01ff],
348        [0201, 0201], [0203, 0203], [0205, 0205], [0207, 0207],
349        [0209, 0209], [020b, 020b], [020d, 020d], [020f, 020f],
350        [0211, 0211], [0213, 0213], [0215, 0215], [0217, 0217],
351        [0219, 0219], [021b, 021b], [021d, 021d], [021f, 021f],
352        [0221, 0221], [0223, 0223], [0225, 0225], [0227, 0227],
353        [0229, 0229], [022b, 022b], [022d, 022d], [022f, 022f],
354        [0231, 0231], [0233, 0239], [023c, 023c], [023f, 0240],
355        [0242, 0242], [0247, 0247], [0249, 0249], [024b, 024b],
356        [024d, 024d], [024f, 0344], [0346, 036f], [0371, 0371],
357        [0373, 0375], [0377, 037e], [0380, 0385], [0387, 0387],
358        [038b, 038b], [038d, 038d], [0390, 0390], [03a2, 03a2],
359        [03ac, 03c1], [03c3, 03ce], [03d2, 03d4], [03d7, 03d7],
360        [03d9, 03d9], [03db, 03db], [03dd, 03dd], [03df, 03df],
361        [03e1, 03e1], [03e3, 03e3], [03e5, 03e5], [03e7, 03e7],
362        [03e9, 03e9], [03eb, 03eb], [03ed, 03ed], [03ef, 03ef],
363        [03f2, 03f3], [03f6, 03f6], [03f8, 03f8], [03fb, 03fc],
364        [0430, 045f], [0461, 0461], [0463, 0463], [0465, 0465],
365        [0467, 0467], [0469, 0469], [046b, 046b], [046d, 046d],
366        [046f, 046f], [0471, 0471], [0473, 0473], [0475, 0475],
367        [0477, 0477], [0479, 0479], [047b, 047b], [047d, 047d],
368        [047f, 047f], [0481, 0489], [048b, 048b], [048d, 048d],
369        [048f, 048f], [0491, 0491], [0493, 0493], [0495, 0495],
370        [0497, 0497], [0499, 0499], [049b, 049b], [049d, 049d],
371        [049f, 049f], [04a1, 04a1], [04a3, 04a3], [04a5, 04a5],
372        [04a7, 04a7], [04a9, 04a9], [04ab, 04ab], [04ad, 04ad],
373        [04af, 04af], [04b1, 04b1], [04b3, 04b3], [04b5, 04b5],
374        [04b7, 04b7], [04b9, 04b9], [04bb, 04bb], [04bd, 04bd],
375        [04bf, 04bf], [04c2, 04c2], [04c4, 04c4], [04c6, 04c6],
376        [04c8, 04c8], [04ca, 04ca], [04cc, 04cc], [04ce, 04cf],
377        [04d1, 04d1], [04d3, 04d3], [04d5, 04d5], [04d7, 04d7],
378        [04d9, 04d9], [04db, 04db], [04dd, 04dd], [04df, 04df],
379        [04e1, 04e1], [04e3, 04e3], [04e5, 04e5], [04e7, 04e7],
380        [04e9, 04e9], [04eb, 04eb], [04ed, 04ed], [04ef, 04ef],
381        [04f1, 04f1], [04f3, 04f3], [04f5, 04f5], [04f7, 04f7],
382        [04f9, 04f9], [04fb, 04fb], [04fd, 04fd], [04ff, 04ff],
383        [0501, 0501], [0503, 0503], [0505, 0505], [0507, 0507],
384        [0509, 0509], [050b, 050b], [050d, 050d], [050f, 050f],
385        [0511, 0511], [0513, 0513], [0515, 0515], [0517, 0517],
386        [0519, 0519], [051b, 051b], [051d, 051d], [051f, 051f],
387        [0521, 0521], [0523, 0523], [0525, 0525], [0527, 0527],
388        [0529, 0529], [052b, 052b], [052d, 052d], [052f, 0530],
389        [0557, 109f], [10c6, 10c6], [10c8, 10cc], [10ce, 13f7],
390        [13fe, 1c7f], [1c89, 1dff], [1e01, 1e01], [1e03, 1e03],
391        [1e05, 1e05], [1e07, 1e07], [1e09, 1e09], [1e0b, 1e0b],
392        [1e0d, 1e0d], [1e0f, 1e0f], [1e11, 1e11], [1e13, 1e13],
393        [1e15, 1e15], [1e17, 1e17], [1e19, 1e19], [1e1b, 1e1b],
394        [1e1d, 1e1d], [1e1f, 1e1f], [1e21, 1e21], [1e23, 1e23],
395        [1e25, 1e25], [1e27, 1e27], [1e29, 1e29], [1e2b, 1e2b],
396        [1e2d, 1e2d], [1e2f, 1e2f], [1e31, 1e31], [1e33, 1e33],
397        [1e35, 1e35], [1e37, 1e37], [1e39, 1e39], [1e3b, 1e3b],
398        [1e3d, 1e3d], [1e3f, 1e3f], [1e41, 1e41], [1e43, 1e43],
399        [1e45, 1e45], [1e47, 1e47], [1e49, 1e49], [1e4b, 1e4b],
400        [1e4d, 1e4d], [1e4f, 1e4f], [1e51, 1e51], [1e53, 1e53],
401        [1e55, 1e55], [1e57, 1e57], [1e59, 1e59], [1e5b, 1e5b],
402        [1e5d, 1e5d], [1e5f, 1e5f], [1e61, 1e61], [1e63, 1e63],
403        [1e65, 1e65], [1e67, 1e67], [1e69, 1e69], [1e6b, 1e6b],
404        [1e6d, 1e6d], [1e6f, 1e6f], [1e71, 1e71], [1e73, 1e73],
405        [1e75, 1e75], [1e77, 1e77], [1e79, 1e79], [1e7b, 1e7b],
406        [1e7d, 1e7d], [1e7f, 1e7f], [1e81, 1e81], [1e83, 1e83],
407        [1e85, 1e85], [1e87, 1e87], [1e89, 1e89], [1e8b, 1e8b],
408        [1e8d, 1e8d], [1e8f, 1e8f], [1e91, 1e91], [1e93, 1e93],
409        [1e95, 1e9a], [1e9c, 1e9d], [1e9f, 1e9f], [1ea1, 1ea1],
410        [1ea3, 1ea3], [1ea5, 1ea5], [1ea7, 1ea7], [1ea9, 1ea9],
411        [1eab, 1eab], [1ead, 1ead], [1eaf, 1eaf], [1eb1, 1eb1],
412        [1eb3, 1eb3], [1eb5, 1eb5], [1eb7, 1eb7], [1eb9, 1eb9],
413        [1ebb, 1ebb], [1ebd, 1ebd], [1ebf, 1ebf], [1ec1, 1ec1],
414        [1ec3, 1ec3], [1ec5, 1ec5], [1ec7, 1ec7], [1ec9, 1ec9],
415        [1ecb, 1ecb], [1ecd, 1ecd], [1ecf, 1ecf], [1ed1, 1ed1],
416        [1ed3, 1ed3], [1ed5, 1ed5], [1ed7, 1ed7], [1ed9, 1ed9],
417        [1edb, 1edb], [1edd, 1edd], [1edf, 1edf], [1ee1, 1ee1],
418        [1ee3, 1ee3], [1ee5, 1ee5], [1ee7, 1ee7], [1ee9, 1ee9],
419        [1eeb, 1eeb], [1eed, 1eed], [1eef, 1eef], [1ef1, 1ef1],
420        [1ef3, 1ef3], [1ef5, 1ef5], [1ef7, 1ef7], [1ef9, 1ef9],
421        [1efb, 1efb], [1efd, 1efd], [1eff, 1f07], [1f10, 1f17],
422        [1f1e, 1f27], [1f30, 1f37], [1f40, 1f47], [1f4e, 1f58],
423        [1f5a, 1f5a], [1f5c, 1f5c], [1f5e, 1f5e], [1f60, 1f67],
424        [1f70, 1f87], [1f90, 1f97], [1fa0, 1fa7], [1fb0, 1fb7],
425        [1fbd, 1fbd], [1fbf, 1fc7], [1fcd, 1fd7], [1fdc, 1fe7],
426        [1fed, 1ff7], [1ffd, 2125], [2127, 2129], [212c, 2131],
427        [2133, 215f], [2170, 2182], [2184, 24b5], [24d0, 2bff],
428        [2c2f, 2c5f], [2c61, 2c61], [2c65, 2c66], [2c68, 2c68],
429        [2c6a, 2c6a], [2c6c, 2c6c], [2c71, 2c71], [2c73, 2c74],
430        [2c76, 2c7d], [2c81, 2c81], [2c83, 2c83], [2c85, 2c85],
431        [2c87, 2c87], [2c89, 2c89], [2c8b, 2c8b], [2c8d, 2c8d],
432        [2c8f, 2c8f], [2c91, 2c91], [2c93, 2c93], [2c95, 2c95],
433        [2c97, 2c97], [2c99, 2c99], [2c9b, 2c9b], [2c9d, 2c9d],
434        [2c9f, 2c9f], [2ca1, 2ca1], [2ca3, 2ca3], [2ca5, 2ca5],
435        [2ca7, 2ca7], [2ca9, 2ca9], [2cab, 2cab], [2cad, 2cad],
436        [2caf, 2caf], [2cb1, 2cb1], [2cb3, 2cb3], [2cb5, 2cb5],
437        [2cb7, 2cb7], [2cb9, 2cb9], [2cbb, 2cbb], [2cbd, 2cbd],
438        [2cbf, 2cbf], [2cc1, 2cc1], [2cc3, 2cc3], [2cc5, 2cc5],
439        [2cc7, 2cc7], [2cc9, 2cc9], [2ccb, 2ccb], [2ccd, 2ccd],
440        [2ccf, 2ccf], [2cd1, 2cd1], [2cd3, 2cd3], [2cd5, 2cd5],
441        [2cd7, 2cd7], [2cd9, 2cd9], [2cdb, 2cdb], [2cdd, 2cdd],
442        [2cdf, 2cdf], [2ce1, 2ce1], [2ce3, 2cea], [2cec, 2cec],
443        [2cee, 2cf1], [2cf3, a63f], [a641, a641], [a643, a643],
444        [a645, a645], [a647, a647], [a649, a649], [a64b, a64b],
445        [a64d, a64d], [a64f, a64f], [a651, a651], [a653, a653],
446        [a655, a655], [a657, a657], [a659, a659], [a65b, a65b],
447        [a65d, a65d], [a65f, a65f], [a661, a661], [a663, a663],
448        [a665, a665], [a667, a667], [a669, a669], [a66b, a66b],
449        [a66d, a67f], [a681, a681], [a683, a683], [a685, a685],
450        [a687, a687], [a689, a689], [a68b, a68b], [a68d, a68d],
451        [a68f, a68f], [a691, a691], [a693, a693], [a695, a695],
452        [a697, a697], [a699, a699], [a69b, a721], [a723, a723],
453        [a725, a725], [a727, a727], [a729, a729], [a72b, a72b],
454        [a72d, a72d], [a72f, a731], [a733, a733], [a735, a735],
455        [a737, a737], [a739, a739], [a73b, a73b], [a73d, a73d],
456        [a73f, a73f], [a741, a741], [a743, a743], [a745, a745],
457        [a747, a747], [a749, a749], [a74b, a74b], [a74d, a74d],
458        [a74f, a74f], [a751, a751], [a753, a753], [a755, a755],
459        [a757, a757], [a759, a759], [a75b, a75b], [a75d, a75d],
460        [a75f, a75f], [a761, a761], [a763, a763], [a765, a765],
461        [a767, a767], [a769, a769], [a76b, a76b], [a76d, a76d],
462        [a76f, a778], [a77a, a77a], [a77c, a77c], [a77f, a77f],
463        [a781, a781], [a783, a783], [a785, a785], [a787, a78a],
464        [a78c, a78c], [a78e, a78f], [a791, a791], [a793, a795],
465        [a797, a797], [a799, a799], [a79b, a79b], [a79d, a79d],
466        [a79f, a79f], [a7a1, a7a1], [a7a3, a7a3], [a7a5, a7a5],
467        [a7a7, a7a7], [a7a9, a7a9], [a7af, a7af], [a7b5, a7b5],
468        [a7b7, ab6f], [abc0, ff20], [ff3b, 103ff], [10428, 104af],
469        [104d4, 10c7f], [10cb3, 1189f], [118c0, 1e8ff], [1e922, 10ffff]**/
470        const UnicodeSet reflexive_set
471                    {{{Full, 2}, {Mixed, 1}, {Full, 2}, {Mixed, 2}, {Full, 1},
472              {Mixed, 11}, {Full, 7}, {Mixed, 6}, {Empty, 1}, {Mixed, 1},
473              {Full, 1}, {Mixed, 8}, {Full, 90}, {Empty, 1}, {Mixed, 1},
474              {Full, 24}, {Mixed, 1}, {Full, 68}, {Mixed, 1}, {Full, 11},
475              {Mixed, 16}, {Full, 9}, {Mixed, 1}, {Full, 1}, {Mixed, 2},
476              {Full, 24}, {Mixed, 2}, {Full, 57}, {Empty, 1}, {Mixed, 1},
477              {Full, 1}, {Mixed, 5}, {Full, 970}, {Mixed, 3}, {Full, 4},
478              {Mixed, 5}, {Full, 29}, {Mixed, 1}, {Empty, 2}, {Full, 667},
479              {Mixed, 1}, {Full, 38}, {Empty, 1}, {Mixed, 1}, {Full, 3},
480              {Mixed, 2}, {Full, 61}, {Empty, 1}, {Mixed, 1}, {Full, 95},
481              {Empty, 1}, {Full, 1666}, {Empty, 1}, {Mixed, 1},
482              {Full, 30902}},
483             {0xf8000001, 0xffdfffff, 0x80800000, 0xaaaaaaaa, 0x55abaaaa,
484              0xaaaaab55, 0x54aaaaaa, 0x4e243129, 0xee512d2a, 0xb555524f,
485              0xaa29aaaa, 0xaaaaaaaa, 0x93faaaaa, 0xffffaa85, 0xffffffdf,
486              0x7fbaffff, 0x000128bf, 0xfffff004, 0xaa9c7ffb, 0x194caaaa,
487              0xffff0000, 0xaaaaaaaa, 0xaaaaabfe, 0xaaaaaaaa, 0xaaaad554,
488              0xaaaaaaaa, 0xaaaaaaaa, 0x0001aaaa, 0xff800000, 0xffffdf40,
489              0xc0ffffff, 0xfffffe00, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
490              0xaaaaaaaa, 0xb7eaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
491              0xc0ff00ff, 0x00ff00ff, 0x55ffc0ff, 0xffff00ff, 0x00ff00ff,
492              0xa0ff00ff, 0xf0ffe0ff, 0xe0ffe0ff, 0xfffbf3bf, 0xffff0000,
493              0xfffffff7, 0x003fffff, 0xffff0000, 0xffff8000, 0x3fda1562,
494              0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xfffbd7fa, 0xaaaaaaaa,
495              0xffffeaaa, 0xfaaaaaaa, 0xaaabaaab, 0xaaaaaaaa, 0x95ffaaaa,
496              0xaabad7aa, 0xffa082aa, 0x0000ffff, 0xf8000001, 0xffffff00,
497              0x0000ffff, 0xfff00000, 0xfff80000, 0xfffffffc}};
498
499        const unsigned buffer_length = 4958;
500        const static char __attribute__ ((aligned (32))) string_buffer[5120] = u8R"__(a
501b
502c
503d
504e
505f
506g
507h
508i
509j
510k
511l
512m
513n
514o
515p
516q
517r
518s
519t
520u
521v
522w
523x
524y
525z
526Ό
527à
528á
529â
530ã
531À
532Ã¥
533Ê
534ç
535Ú
536é
537ê
538ë
539ì
540í
541î
542ï
543ð
544ñ
545ò
546ó
547ÃŽ
548õ
549ö
550Þ
551ù
552ú
553û
554Ì
555Ü
556ß
557ā
558ă
559ą
560ć
561ĉ
562ċ
563č
564ď
565đ
566ē
567ĕ
568ė
569ę
570ě
571ĝ
572ğ
573Ä¡
574Ä£
575Ä¥
576ħ
577Ä©
578Ä«
579Ä­
580į
581ij
582ĵ
583Ä·
584ĺ
585Č
586ÄŸ
587ŀ
588ł
589ń
590ņ
591ň
592ŋ
593ō
594ŏ
595ő
596œ
597ŕ
598ŗ
599ř
600ś
601ŝ
602ş
603Å¡
604Å£
605Å¥
606ŧ
607Å©
608Å«
609Å­
610ů
611ű
612ų
613ŵ
614Å·
615ÿ
616ź
617Ō
618ÅŸ
619s
620ɓ
621ƃ
622ƅ
623ɔ
624ƈ
625ɖ
626ɗ
627ƌ
628ǝ
629ə
630ɛ
631ƒ
632É 
633É£
634É©
635Éš
636ƙ
637ɯ
638ɲ
639ɵ
640Æ¡
641Æ£
642Æ¥
643ʀ
644Æš
645ʃ
646Æ­
647ʈ
648Æ°
649ʊ
650ʋ
651ÆŽ
652ƶ
653ʒ
654ƹ
655Ɯ
656dž
657dž
658lj
659lj
660nj
661nj
662ǎ
663ǐ
664ǒ
665ǔ
666ǖ
667ǘ
668ǚ
669ǜ
670ǟ
671Ç¡
672Ç£
673Ç¥
674ǧ
675Ç©
676Ç«
677Ç­
678ǯ
679dz
680dz
681ǵ
682ƕ
683Æ¿
684ǹ
685Ç»
686ǜ
687Ç¿
688ȁ
689ȃ
690ȅ
691ȇ
692ȉ
693ȋ
694ȍ
695ȏ
696ȑ
697ȓ
698ȕ
699ȗ
700ș
701ț
702ȝ
703ȟ
704ƞ
705È£
706È¥
707ȧ
708È©
709È«
710È­
711ȯ
712ȱ
713ȳ
714â±¥
715Ȍ
716ƚ
717ⱊ
718ɂ
719ƀ
720ʉ
721ʌ
722ɇ
723ɉ
724ɋ
725ɍ
726ɏ
727ι
728ͱ
729ͳ
730Í·
731ϳ
732ά
733έ
734ή
735ί
736ό
737ύ
738ώ
739α
740β
741γ
742ÎŽ
743ε
744ζ
745η
746Ξ
747ι
748κ
749λ
750Ό
751Μ
752Ο
753ο
754π
755ρ
756σ
757τ
758υ
759φ
760χ
761ψ
762ω
763ϊ
764ϋ
765σ
766ϗ
767β
768Ξ
769φ
770π
771ϙ
772ϛ
773ϝ
774ϟ
775Ï¡
776Ï£
777Ï¥
778ϧ
779Ï©
780Ï«
781Ï­
782ϯ
783κ
784ρ
785Ξ
786ε
787Ïž
788ϲ
789Ï»
790Í»
791͌
792͜
793ѐ
794ё
795ђ
796ѓ
797є
798ѕ
799і
800ї
801ј
802љ
803њ
804ћ
805ќ
806ѝ
807ў
808џ
809а
810б
811в
812г
813ÐŽ
814е
815ж
816з
817О
818й
819к
820л
821Ќ
822М
823П
824п
825р
826с
827т
828у
829ф
830х
831ц
832ч
833ш
834щ
835ъ
836ы
837ь
838э
839ю
840я
841Ñ¡
842Ñ£
843Ñ¥
844ѧ
845Ñ©
846Ñ«
847Ñ­
848ѯ
849ѱ
850ѳ
851ѵ
852Ñ·
853ѹ
854Ñ»
855ќ
856Ñ¿
857ҁ
858ҋ
859ҍ
860ҏ
861ґ
862ғ
863ҕ
864җ
865ҙ
866қ
867ҝ
868ҟ
869Ò¡
870Ò£
871Ò¥
872Ò§
873Ò©
874Ò«
875Ò­
876Ò¯
877Ò±
878Ò³
879Òµ
880Ò·
881Ò¹
882Ò»
883Ҝ
884Ò¿
885ӏ
886ӂ
887ӄ
888ӆ
889ӈ
890ӊ
891ӌ
892ӎ
893ӑ
894ӓ
895ӕ
896ӗ
897ә
898ӛ
899ӝ
900ӟ
901Ó¡
902Ó£
903Ó¥
904Ó§
905Ó©
906Ó«
907Ó­
908Ó¯
909Ó±
910Ó³
911Óµ
912Ó·
913Ó¹
914Ó»
915Ӝ
916Ó¿
917ԁ
918ԃ
919ԅ
920ԇ
921ԉ
922ԋ
923ԍ
924ԏ
925ԑ
926ԓ
927ԕ
928ԗ
929ԙ
930ԛ
931ԝ
932ԟ
933Ô¡
934Ô£
935Ô¥
936Ô§
937Ô©
938Ô«
939Ô­
940Ô¯
941Õ¡
942Õ¢
943Õ£
944Õ€
945Õ¥
946ÕŠ
947Õ§
948Õš
949Õ©
950Õª
951Õ«
952Õ¬
953Õ­
954Õ®
955Õ¯
956Õ°
957Õ±
958Õ²
959Õ³
960ÕŽ
961Õµ
962Õ¶
963Õ·
964Õž
965Õ¹
966Õº
967Õ»
968Ռ
969՜
970ÕŸ
971Õ¿
972ր
973ց
974ւ
975փ
976ք
977օ
978ֆ
979⮀
980⎁
981⮂
982⎃
983⮄
984⮅
985⮆
986⮇
987⎈
988⮉
989⮊
990⮋
991⮌
992⎍
993⮎
994⎏
995⎐
996⮑
997⮒
998⮓
999⮔
1000⮕
1001⮖
1002⮗
1003⎘
1004⮙
1005⮚
1006⮛
1007⮜
1008⎝
1009⮞
1010⮟
1011⎠
1012⎡
1013⎢
1014⎣
1015⎀
1016⎥
1017⎧
1018⎭
1019Ᏸ
1020Ᏹ
1021Ᏺ
1022Ᏻ
1023Ꮞ
1024Ᏽ
1025в
1026ÐŽ
1027П
1028с
1029т
1030т
1031ъ
1032Ñ£
1033ꙋ
1034ខ
1035ឃ
1036ᾅ
1037ᾇ
1038ᾉ
1039ᾋ
1040ឍ
1041ត
1042ᾑ
1043ᾓ
1044ᾕ
1045ᾗ
1046ᾙ
1047ᾛ
1048ឝ
1049ᾟ
1050áž¡
1051ឣ
1052ឥ
1053ឧ
1054áž©
1055áž«
1056áž­
1057ឯ
1058áž±
1059áž³
1060ážµ
1061áž·
1062áž¹
1063áž»
1064វ
1065áž¿
1066ṁ
1067ṃ
1068ṅ
1069ṇ
1070ṉ
1071ṋ
1072ṍ
1073ṏ
1074ṑ
1075ṓ
1076ṕ
1077ṗ
1078ṙ
1079ṛ
1080ṝ
1081ṟ
1082ṡ
1083á¹£
1084á¹¥
1085ṧ
1086ṩ
1087ṫ
1088á¹­
1089ṯ
1090á¹±
1091á¹³
1092á¹µ
1093á¹·
1094á¹¹
1095á¹»
1096Ṝ
1097ṿ
1098ẁ
1099ẃ
1100ẅ
1101ẇ
1102ẉ
1103ẋ
1104ẍ
1105ẏ
1106ẑ
1107ẓ
1108ẕ
1109ṡ
1110ß
1111ạ
1112ả
1113ấ
1114ầ
1115ẩ
1116ẫ
1117ậ
1118ắ
1119ằ
1120ẳ
1121ẵ
1122ặ
1123ẹ
1124ẻ
1125ẜ
1126ế
1127ề
1128ể
1129ễ
1130ệ
1131ỉ
1132ị
1133ọ
1134ỏ
1135ố
1136ồ
1137ổ
1138ỗ
1139ộ
1140ớ
1141ờ
1142ở
1143ỡ
1144ợ
1145ụ
1146ủ
1147ứ
1148ừ
1149á»­
1150ữ
1151á»±
1152ỳ
1153ỵ
1154á»·
1155ỹ
1156á»»
1157Ờ
1158ỿ
1159ጀ
1160ጁ
1161ጂ
1162ጃ
1163ጄ
1164ጅ
1165ጆ
1166ጇ
1167ጐ
1168጑
1169ጒ
1170ጓ
1171ጔ
1172ጕ
1173ጠ
1174ጡ
1175ጢ
1176ጣ
1177ጀ
1178ጥ
1179ጊ
1180ጧ
1181ጰ
1182ጱ
1183ጲ
1184ጳ
1185ጎ
1186ጵ
1187ጶ
1188ጷ
1189ᜀ
1190ᜁ
1191ᜂ
1192ᜃ
1193ᜄ
1194ᜅ
1195ᜑ
1196ᜓ
1197᜕
1198᜗
1199ᜠ
1200ᜡ
1201ᜢ
1202ᜣ
1203ᜀ
1204ᜥ
1205ᜊ
1206ᜧ
1207ៀ
1208េ
1209ែ
1210ៃ
1211ោ
1212ៅ
1213ំ
1214ះ
1215័
1216៑
1217្
1218៓
1219។
1220៕
1221៖
1222ៗ
1223០
1224១
1225២
1226៣
1227ៀ
1228៥
1229៊
1230៧
1231៰
1232៱
1233ᜰ
1234ᜱ
1235៳
1236ι
1237ᜲ
1238ᜳ
1239ᜎ
1240᜵
1241ῃ
1242ῐ
1243ῑ
1244᜶
1245᜷
1246á¿ 
1247á¿¡
1248᜺
1249᜻
1250á¿¥
1251᜞
1252᜹
1253ᜌ
1254᜜
1255ῳ
1256ω
1257k
1258Ã¥
1259ⅎ
1260ⅰ
1261ⅱ
1262ⅲ
1263ⅳ
1264Ⅾ
1265ⅵ
1266ⅶ
1267ⅷ
1268ⅾ
1269ⅹ
1270ⅺ
1271ⅻ
1272⅌
1273⅜
1274â…Ÿ
1275ⅿ
1276ↄ
1277ⓐ
1278ⓑ
1279ⓒ
1280ⓓ
1281ⓔ
1282ⓕ
1283ⓖ
1284ⓗ
1285ⓘ
1286ⓙ
1287ⓚ
1288ⓛ
1289ⓜ
1290ⓝ
1291ⓞ
1292ⓟ
1293ⓠ
1294ⓡ
1295ⓢ
1296ⓣ
1297â“€
1298ⓥ
1299ⓩ
1300ⓧ
1301⓹
1302ⓩ
1303â°°
1304â°±
1305â°²
1306â°³
1307â°Ž
1308â°µ
1309â°¶
1310â°·
1311â°ž
1312â°¹
1313â°º
1314â°»
1315Ⰼ
1316Ⱌ
1317â°Ÿ
1318â°¿
1319ⱀ
1320ⱁ
1321ⱂ
1322ⱃ
1323ⱄ
1324ⱅ
1325ⱆ
1326ⱇ
1327ⱈ
1328ⱉ
1329ⱊ
1330ⱋ
1331ⱌ
1332ⱍ
1333ⱎ
1334ⱏ
1335ⱐ
1336ⱑ
1337ⱒ
1338ⱓ
1339ⱔ
1340ⱕ
1341ⱖ
1342ⱗ
1343ⱘ
1344ⱙ
1345ⱚ
1346ⱛ
1347ⱜ
1348ⱝ
1349ⱞ
1350ⱡ
1351É«
1352ᵜ
1353ɜ
1354ⱚ
1355ⱪ
1356ⱬ
1357ɑ
1358ɱ
1359ɐ
1360ɒ
1361â±³
1362ⱶ
1363È¿
1364ɀ
1365ⲁ
1366ⲃ
1367ⲅ
1368ⲇ
1369ⲉ
1370ⲋ
1371ⲍ
1372ⲏ
1373ⲑ
1374ⲓ
1375ⲕ
1376ⲗ
1377ⲙ
1378ⲛ
1379ⲝ
1380ⲟ
1381ⲡ
1382â²£
1383â²¥
1384ⲧ
1385ⲩ
1386ⲫ
1387â²­
1388ⲯ
1389â²±
1390â²³
1391â²µ
1392â²·
1393â²¹
1394â²»
1395Ⲝ
1396ⲿ
1397ⳁ
1398ⳃ
1399ⳅ
1400ⳇ
1401ⳉ
1402ⳋ
1403ⳍ
1404ⳏ
1405ⳑ
1406ⳓ
1407ⳕ
1408ⳗ
1409ⳙ
1410ⳛ
1411ⳝ
1412ⳟ
1413ⳡ
1414â³£
1415ⳬ
1416â³®
1417â³³
1418ꙁ
1419ꙃ
1420ꙅ
1421ꙇ
1422ꙉ
1423ꙋ
1424ꙍ
1425ꙏ
1426ꙑ
1427ꙓ
1428ꙕ
1429ꙗ
1430ꙙ
1431ꙛ
1432ꙝ
1433ꙟ
1434ꙡ
1435ꙣ
1436ꙥ
1437ꙧ
1438ꙩ
1439ꙫ
1440ꙭ
1441ꚁ
1442ꚃ
1443ꚅ
1444ꚇ
1445ꚉ
1446ꚋ
1447ꚍ
1448ꚏ
1449ꚑ
1450ꚓ
1451ꚕ
1452ꚗ
1453ꚙ
1454ꚛ
1455ꜣ
1456ꜥ
1457ꜧ
1458ꜩ
1459ꜫ
1460ꜭ
1461ꜯ
1462ꜳ
1463ꜵ
1464ꜷ
1465ꜹ
1466ꜻ
1467ꜜ
1468ꜿ
1469ꝁ
1470ꝃ
1471ꝅ
1472ꝇ
1473ꝉ
1474ꝋ
1475ꝍ
1476ꝏ
1477ꝑ
1478ꝓ
1479ꝕ
1480ꝗ
1481ꝙ
1482ꝛ
1483ꝝ
1484ꝟ
1485ꝡ
1486ꝣ
1487ꝥ
1488ꝧ
1489ꝩ
1490ꝫ
1491ꝭ
1492ꝯ
1493ꝺ
1494Ꝍ
1495áµ¹
1496ꝿ
1497ꞁ
1498ꞃ
1499ꞅ
1500ꞇ
1501ꞌ
1502É¥
1503ꞑ
1504ꞓ
1505ꞗ
1506ꞙ
1507ꞛ
1508ꞝ
1509ꞟ
1510ꞡ
1511ꞣ
1512ꞥ
1513ꞧ
1514ꞩ
1515ÉŠ
1516ɜ
1517É¡
1518ɬ
1519ɪ
1520ʞ
1521ʇ
1522ʝ
1523ꭓ
1524ꞵ
1525ꞷ
1526Ꭰ
1527Ꭱ
1528Ꭲ
1529Ꭳ
1530ᎀ
1531Ꭵ
1532ᎊ
1533Ꭷ
1534᎚
1535Ꭹ
1536Ꭺ
1537Ꭻ
1538Ꭼ
1539Ꭽ
1540Ꭾ
1541Ꭿ
1542Ꮀ
1543Ꮁ
1544Ꮂ
1545Ꮃ
1546Ꭾ
1547Ꮅ
1548Ꮆ
1549Ꮇ
1550Ꮎ
1551Ꮉ
1552Ꮊ
1553Ꮋ
1554ᎌ
1555᎜
1556᎟
1557Ꮏ
1558Ꮐ
1559Ꮑ
1560Ꮒ
1561Ꮓ
1562Ꮔ
1563Ꮕ
1564Ꮖ
1565Ꮗ
1566Ꮘ
1567Ꮙ
1568Ꮚ
1569Ꮛ
1570Ꮜ
1571Ꮝ
1572Ꮞ
1573Ꮟ
1574Ꮠ
1575Ꮡ
1576Ꮢ
1577Ꮣ
1578Ꮤ
1579Ꮥ
1580Ꮦ
1581Ꮧ
1582Ꮨ
1583Ꮩ
1584Ꮪ
1585Ꮫ
1586Ꮬ
1587Ꮭ
1588Ꮮ
1589Ꮯ
1590Ꮰ
1591Ꮱ
1592Ꮲ
1593Ꮳ
1594Ꮐ
1595Ꮵ
1596Ꮚ
1597Ꮷ
1598Ꮪ
1599Ꮹ
1600Ꮺ
1601Ꮻ
1602Ꮼ
1603Ꮽ
1604Ꮾ
1605Ꮿ
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632𐐚
1633𐐩
1634𐐪
1635𐐫
1636𐐬
1637𐐭
1638𐐮
1639𐐯
1640𐐰
1641𐐱
1642𐐲
1643𐐳
1644𐐎
1645𐐵
1646𐐶
1647𐐷
1648𐐞
1649𐐹
1650𐐺
1651𐐻
1652𐐌
1653𐐜
1654𐐟
1655𐐿
1656𐑀
1657𐑁
1658𐑂
1659𐑃
1660𐑄
1661𐑅
1662𐑆
1663𐑇
1664𐑈
1665𐑉
1666𐑊
1667𐑋
1668𐑌
1669𐑍
1670𐑎
1671𐑏
1672𐓘
1673𐓙
1674𐓚
1675𐓛
1676𐓜
1677𐓝
1678𐓞
1679𐓟
1680𐓠
1681𐓡
1682𐓢
1683𐓣
1684𐓀
1685𐓥
1686𐓊
1687𐓧
1688𐓚
1689𐓩
1690𐓪
1691𐓫
1692𐓬
1693𐓭
1694𐓮
1695𐓯
1696𐓰
1697𐓱
1698𐓲
1699𐓳
1700𐓎
1701𐓵
1702𐓶
1703𐓷
1704𐓞
1705𐓹
1706𐓺
1707𐓻
1708𐳀
1709𐳁
1710𐳂
1711𐳃
1712𐳄
1713𐳅
1714𐳆
1715𐳇
1716𐳈
1717𐳉
1718𐳊
1719𐳋
1720𐳌
1721𐳍
1722𐳎
1723𐳏
1724𐳐
1725𐳑
1726𐳒
1727𐳓
1728𐳔
1729𐳕
1730𐳖
1731𐳗
1732𐳘
1733𐳙
1734𐳚
1735𐳛
1736𐳜
1737𐳝
1738𐳞
1739𐳟
1740𐳠
1741𐳡
1742𐳢
1743𐳣
1744𐳀
1745𐳥
1746𐳊
1747𐳧
1748𐳚
1749𐳩
1750𐳪
1751𐳫
1752𐳬
1753𐳭
1754𐳮
1755𐳯
1756𐳰
1757𐳱
1758𐳲
1759𑣀
1760𑣁
1761𑣂
1762𑣃
1763𑣄
1764𑣅
1765𑣆
1766𑣇
1767𑣈
1768𑣉
1769𑣊
1770𑣋
1771𑣌
1772𑣍
1773𑣎
1774𑣏
1775𑣐
1776𑣑
1777𑣒
1778𑣓
1779𑣔
1780𑣕
1781𑣖
1782𑣗
1783𑣘
1784𑣙
1785𑣚
1786𑣛
1787𑣜
1788𑣝
1789𑣞
1790𑣟
1791𞀢
1792𞀣
1793𞀀
1794𞀥
1795𞀊
1796𞀧
1797𞀚
1798𞀩
1799𞀪
1800𞀫
1801𞀬
1802𞀭
1803𞀮
1804𞀯
1805𞀰
1806𞀱
1807𞀲
1808𞀳
1809𞀎
1810𞀵
1811𞀶
1812𞀷
1813𞀞
1814𞀹
1815𞀺
1816𞀻
1817𞀌
1818𞀜
1819𞀟
1820𞀿
1821𞥀
1822𞥁
1823𞥂
1824𞥃
1825)__";
1826
1827        const static std::vector<codepoint_t> defined_cps = {
1828        0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048,
1829        0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
1830        0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
1831        0x0059, 0x005a, 0x00b5, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4,
1832        0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc,
1833        0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4,
1834        0x00d5, 0x00d6, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd,
1835        0x00de, 0x0100, 0x0102, 0x0104, 0x0106, 0x0108, 0x010a, 0x010c,
1836        0x010e, 0x0110, 0x0112, 0x0114, 0x0116, 0x0118, 0x011a, 0x011c,
1837        0x011e, 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x012a, 0x012c,
1838        0x012e, 0x0132, 0x0134, 0x0136, 0x0139, 0x013b, 0x013d, 0x013f,
1839        0x0141, 0x0143, 0x0145, 0x0147, 0x014a, 0x014c, 0x014e, 0x0150,
1840        0x0152, 0x0154, 0x0156, 0x0158, 0x015a, 0x015c, 0x015e, 0x0160,
1841        0x0162, 0x0164, 0x0166, 0x0168, 0x016a, 0x016c, 0x016e, 0x0170,
1842        0x0172, 0x0174, 0x0176, 0x0178, 0x0179, 0x017b, 0x017d, 0x017f,
1843        0x0181, 0x0182, 0x0184, 0x0186, 0x0187, 0x0189, 0x018a, 0x018b,
1844        0x018e, 0x018f, 0x0190, 0x0191, 0x0193, 0x0194, 0x0196, 0x0197,
1845        0x0198, 0x019c, 0x019d, 0x019f, 0x01a0, 0x01a2, 0x01a4, 0x01a6,
1846        0x01a7, 0x01a9, 0x01ac, 0x01ae, 0x01af, 0x01b1, 0x01b2, 0x01b3,
1847        0x01b5, 0x01b7, 0x01b8, 0x01bc, 0x01c4, 0x01c5, 0x01c7, 0x01c8,
1848        0x01ca, 0x01cb, 0x01cd, 0x01cf, 0x01d1, 0x01d3, 0x01d5, 0x01d7,
1849        0x01d9, 0x01db, 0x01de, 0x01e0, 0x01e2, 0x01e4, 0x01e6, 0x01e8,
1850        0x01ea, 0x01ec, 0x01ee, 0x01f1, 0x01f2, 0x01f4, 0x01f6, 0x01f7,
1851        0x01f8, 0x01fa, 0x01fc, 0x01fe, 0x0200, 0x0202, 0x0204, 0x0206,
1852        0x0208, 0x020a, 0x020c, 0x020e, 0x0210, 0x0212, 0x0214, 0x0216,
1853        0x0218, 0x021a, 0x021c, 0x021e, 0x0220, 0x0222, 0x0224, 0x0226,
1854        0x0228, 0x022a, 0x022c, 0x022e, 0x0230, 0x0232, 0x023a, 0x023b,
1855        0x023d, 0x023e, 0x0241, 0x0243, 0x0244, 0x0245, 0x0246, 0x0248,
1856        0x024a, 0x024c, 0x024e, 0x0345, 0x0370, 0x0372, 0x0376, 0x037f,
1857        0x0386, 0x0388, 0x0389, 0x038a, 0x038c, 0x038e, 0x038f, 0x0391,
1858        0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399,
1859        0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1,
1860        0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa,
1861        0x03ab, 0x03c2, 0x03cf, 0x03d0, 0x03d1, 0x03d5, 0x03d6, 0x03d8,
1862        0x03da, 0x03dc, 0x03de, 0x03e0, 0x03e2, 0x03e4, 0x03e6, 0x03e8,
1863        0x03ea, 0x03ec, 0x03ee, 0x03f0, 0x03f1, 0x03f4, 0x03f5, 0x03f7,
1864        0x03f9, 0x03fa, 0x03fd, 0x03fe, 0x03ff, 0x0400, 0x0401, 0x0402,
1865        0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a,
1866        0x040b, 0x040c, 0x040d, 0x040e, 0x040f, 0x0410, 0x0411, 0x0412,
1867        0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
1868        0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
1869        0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
1870        0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0460, 0x0462, 0x0464,
1871        0x0466, 0x0468, 0x046a, 0x046c, 0x046e, 0x0470, 0x0472, 0x0474,
1872        0x0476, 0x0478, 0x047a, 0x047c, 0x047e, 0x0480, 0x048a, 0x048c,
1873        0x048e, 0x0490, 0x0492, 0x0494, 0x0496, 0x0498, 0x049a, 0x049c,
1874        0x049e, 0x04a0, 0x04a2, 0x04a4, 0x04a6, 0x04a8, 0x04aa, 0x04ac,
1875        0x04ae, 0x04b0, 0x04b2, 0x04b4, 0x04b6, 0x04b8, 0x04ba, 0x04bc,
1876        0x04be, 0x04c0, 0x04c1, 0x04c3, 0x04c5, 0x04c7, 0x04c9, 0x04cb,
1877        0x04cd, 0x04d0, 0x04d2, 0x04d4, 0x04d6, 0x04d8, 0x04da, 0x04dc,
1878        0x04de, 0x04e0, 0x04e2, 0x04e4, 0x04e6, 0x04e8, 0x04ea, 0x04ec,
1879        0x04ee, 0x04f0, 0x04f2, 0x04f4, 0x04f6, 0x04f8, 0x04fa, 0x04fc,
1880        0x04fe, 0x0500, 0x0502, 0x0504, 0x0506, 0x0508, 0x050a, 0x050c,
1881        0x050e, 0x0510, 0x0512, 0x0514, 0x0516, 0x0518, 0x051a, 0x051c,
1882        0x051e, 0x0520, 0x0522, 0x0524, 0x0526, 0x0528, 0x052a, 0x052c,
1883        0x052e, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537,
1884        0x0538, 0x0539, 0x053a, 0x053b, 0x053c, 0x053d, 0x053e, 0x053f,
1885        0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547,
1886        0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 0x054e, 0x054f,
1887        0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x10a0,
1888        0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8,
1889        0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0,
1890        0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8,
1891        0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, 0x10c0,
1892        0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x10c7, 0x10cd, 0x13f8,
1893        0x13f9, 0x13fa, 0x13fb, 0x13fc, 0x13fd, 0x1c80, 0x1c81, 0x1c82,
1894        0x1c83, 0x1c84, 0x1c85, 0x1c86, 0x1c87, 0x1c88, 0x1e00, 0x1e02,
1895        0x1e04, 0x1e06, 0x1e08, 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12,
1896        0x1e14, 0x1e16, 0x1e18, 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22,
1897        0x1e24, 0x1e26, 0x1e28, 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32,
1898        0x1e34, 0x1e36, 0x1e38, 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42,
1899        0x1e44, 0x1e46, 0x1e48, 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52,
1900        0x1e54, 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62,
1901        0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72,
1902        0x1e74, 0x1e76, 0x1e78, 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82,
1903        0x1e84, 0x1e86, 0x1e88, 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92,
1904        0x1e94, 0x1e9b, 0x1e9e, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8,
1905        0x1eaa, 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8,
1906        0x1eba, 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8,
1907        0x1eca, 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8,
1908        0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8,
1909        0x1eea, 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8,
1910        0x1efa, 0x1efc, 0x1efe, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c,
1911        0x1f0d, 0x1f0e, 0x1f0f, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c,
1912        0x1f1d, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e,
1913        0x1f2f, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e,
1914        0x1f3f, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x1f59,
1915        0x1f5b, 0x1f5d, 0x1f5f, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c,
1916        0x1f6d, 0x1f6e, 0x1f6f, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c,
1917        0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c,
1918        0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac,
1919        0x1fad, 0x1fae, 0x1faf, 0x1fb8, 0x1fb9, 0x1fba, 0x1fbb, 0x1fbc,
1920        0x1fbe, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fcc, 0x1fd8, 0x1fd9,
1921        0x1fda, 0x1fdb, 0x1fe8, 0x1fe9, 0x1fea, 0x1feb, 0x1fec, 0x1ff8,
1922        0x1ff9, 0x1ffa, 0x1ffb, 0x1ffc, 0x2126, 0x212a, 0x212b, 0x2132,
1923        0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
1924        0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f,
1925        0x2183, 0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc,
1926        0x24bd, 0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4,
1927        0x24c5, 0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc,
1928        0x24cd, 0x24ce, 0x24cf, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04,
1929        0x2c05, 0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c,
1930        0x2c0d, 0x2c0e, 0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14,
1931        0x2c15, 0x2c16, 0x2c17, 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c,
1932        0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24,
1933        0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c,
1934        0x2c2d, 0x2c2e, 0x2c60, 0x2c62, 0x2c63, 0x2c64, 0x2c67, 0x2c69,
1935        0x2c6b, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70, 0x2c72, 0x2c75, 0x2c7e,
1936        0x2c7f, 0x2c80, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a, 0x2c8c,
1937        0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a, 0x2c9c,
1938        0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa, 0x2cac,
1939        0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc,
1940        0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc,
1941        0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc,
1942        0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0xa640, 0xa642,
1943        0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650, 0xa652,
1944        0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660, 0xa662,
1945        0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682, 0xa684,
1946        0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692, 0xa694,
1947        0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728, 0xa72a,
1948        0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a, 0xa73c,
1949        0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a, 0xa74c,
1950        0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a, 0xa75c,
1951        0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a, 0xa76c,
1952        0xa76e, 0xa779, 0xa77b, 0xa77d, 0xa77e, 0xa780, 0xa782, 0xa784,
1953        0xa786, 0xa78b, 0xa78d, 0xa790, 0xa792, 0xa796, 0xa798, 0xa79a,
1954        0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7aa,
1955        0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7b0, 0xa7b1, 0xa7b2, 0xa7b3,
1956        0xa7b4, 0xa7b6, 0xab70, 0xab71, 0xab72, 0xab73, 0xab74, 0xab75,
1957        0xab76, 0xab77, 0xab78, 0xab79, 0xab7a, 0xab7b, 0xab7c, 0xab7d,
1958        0xab7e, 0xab7f, 0xab80, 0xab81, 0xab82, 0xab83, 0xab84, 0xab85,
1959        0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, 0xab8d,
1960        0xab8e, 0xab8f, 0xab90, 0xab91, 0xab92, 0xab93, 0xab94, 0xab95,
1961        0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d,
1962        0xab9e, 0xab9f, 0xaba0, 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5,
1963        0xaba6, 0xaba7, 0xaba8, 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad,
1964        0xabae, 0xabaf, 0xabb0, 0xabb1, 0xabb2, 0xabb3, 0xabb4, 0xabb5,
1965        0xabb6, 0xabb7, 0xabb8, 0xabb9, 0xabba, 0xabbb, 0xabbc, 0xabbd,
1966        0xabbe, 0xabbf, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26,
1967        0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e,
1968        0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36,
1969        0xff37, 0xff38, 0xff39, 0xff3a, 0x10400, 0x10401, 0x10402, 0x10403,
1970        0x10404, 0x10405, 0x10406, 0x10407, 0x10408, 0x10409, 0x1040a,
1971        0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f, 0x10410, 0x10411,
1972        0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 0x10418,
1973        0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f,
1974        0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426,
1975        0x10427, 0x104b0, 0x104b1, 0x104b2, 0x104b3, 0x104b4, 0x104b5,
1976        0x104b6, 0x104b7, 0x104b8, 0x104b9, 0x104ba, 0x104bb, 0x104bc,
1977        0x104bd, 0x104be, 0x104bf, 0x104c0, 0x104c1, 0x104c2, 0x104c3,
1978        0x104c4, 0x104c5, 0x104c6, 0x104c7, 0x104c8, 0x104c9, 0x104ca,
1979        0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1,
1980        0x104d2, 0x104d3, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84,
1981        0x10c85, 0x10c86, 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b,
1982        0x10c8c, 0x10c8d, 0x10c8e, 0x10c8f, 0x10c90, 0x10c91, 0x10c92,
1983        0x10c93, 0x10c94, 0x10c95, 0x10c96, 0x10c97, 0x10c98, 0x10c99,
1984        0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, 0x10c9f, 0x10ca0,
1985        0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, 0x10ca7,
1986        0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae,
1987        0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x118a0, 0x118a1, 0x118a2,
1988        0x118a3, 0x118a4, 0x118a5, 0x118a6, 0x118a7, 0x118a8, 0x118a9,
1989        0x118aa, 0x118ab, 0x118ac, 0x118ad, 0x118ae, 0x118af, 0x118b0,
1990        0x118b1, 0x118b2, 0x118b3, 0x118b4, 0x118b5, 0x118b6, 0x118b7,
1991        0x118b8, 0x118b9, 0x118ba, 0x118bb, 0x118bc, 0x118bd, 0x118be,
1992        0x118bf, 0x1e900, 0x1e901, 0x1e902, 0x1e903, 0x1e904, 0x1e905,
1993        0x1e906, 0x1e907, 0x1e908, 0x1e909, 0x1e90a, 0x1e90b, 0x1e90c,
1994        0x1e90d, 0x1e90e, 0x1e90f, 0x1e910, 0x1e911, 0x1e912, 0x1e913,
1995        0x1e914, 0x1e915, 0x1e916, 0x1e917, 0x1e918, 0x1e919, 0x1e91a,
1996        0x1e91b, 0x1e91c, 0x1e91d, 0x1e91e, 0x1e91f, 0x1e920, 0x1e921};
1997        static StringPropertyObject property_object(scf, 
1998                                                    null_codepoint_set, 
1999                                                    reflexive_set, 
2000                                                    static_cast<const char *>(string_buffer), 
2001                                                    buffer_length, 
2002                                                    defined_cps);
2003    }
2004    namespace CF_ns {
2005        /** Code Point Ranges for cf (possibly overriding values from SCF)
2006        [00df, 00df], [0130, 0130], [0149, 0149], [01f0, 01f0],
2007        [0390, 0390], [03b0, 03b0], [0587, 0587], [1e96, 1e9a],
2008        [1e9e, 1e9e], [1f50, 1f50], [1f52, 1f52], [1f54, 1f54],
2009        [1f56, 1f56], [1f80, 1faf], [1fb2, 1fb4], [1fb6, 1fb7],
2010        [1fbc, 1fbc], [1fc2, 1fc4], [1fc6, 1fc7], [1fcc, 1fcc],
2011        [1fd2, 1fd3], [1fd6, 1fd7], [1fe2, 1fe4], [1fe6, 1fe7],
2012        [1ff2, 1ff4], [1ff6, 1ff7], [1ffc, 1ffc], [fb00, fb06],
2013        [fb13, fb17]**/
2014
2015        const UnicodeSet explicitly_defined_set
2016                    {{{Empty, 6}, {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 4},
2017              {Mixed, 1}, {Empty, 12}, {Mixed, 2}, {Empty, 14}, {Mixed, 1},
2018              {Empty, 199}, {Mixed, 1}, {Empty, 5}, {Mixed, 1}, {Empty, 1},
2019              {Full, 1}, {Mixed, 3}, {Empty, 1752}, {Mixed, 1},
2020              {Empty, 32807}},
2021             {0x80000000, 0x00010000, 0x00000200, 0x00010000, 0x00010000,
2022              0x00010000, 0x00000080, 0x47c00000, 0x00550000, 0x10dcffff,
2023              0x00cc10dc, 0x10dc00dc, 0x00f8007f}};
2024
2025        const unsigned buffer_length = 575;
2026        const static char __attribute__ ((aligned (32))) string_buffer[768] = u8R"__(ss
2027i̇
2028ÊŒn
2029ǰ
2030ΐ
2031ΰ
2032եւ
2033ẖ
2034ẗ
2035ẘ
2036ẙ
2037aÊŸ
2038ss
2039ὐ
2040ὒ
2041ὔ
2042ὖ
2043ጀι
2044ጁι
2045ጂι
2046ጃι
2047ጄι
2048ጅι
2049ጆι
2050ጇι
2051ጀι
2052ጁι
2053ጂι
2054ጃι
2055ጄι
2056ጅι
2057ጆι
2058ጇι
2059ጠι
2060ጡι
2061ጢι
2062ጣι
2063ጀι
2064ጥι
2065ጊι
2066ጧι
2067ጠι
2068ጡι
2069ጢι
2070ጣι
2071ጀι
2072ጥι
2073ጊι
2074ጧι
2075ᜠι
2076ᜡι
2077ᜢι
2078ᜣι
2079ᜀι
2080ᜥι
2081ᜊι
2082ᜧι
2083ᜠι
2084ᜡι
2085ᜢι
2086ᜣι
2087ᜀι
2088ᜥι
2089ᜊι
2090ᜧι
2091ᜰι
2092αι
2093άι
2094ᾶ
2095ᾶι
2096αι
2097ᜎι
2098ηι
2099ήι
2100ῆ
2101ῆι
2102ηι
2103ῒ
2104ΐ
2105ῖ
2106ῗ
2107ῢ
2108ΰ
2109ῤ
2110ῦ
2111ῧ
2112ᜌι
2113ωι
2114ώι
2115ῶ
2116ῶι
2117ωι
2118ff
2119fi
2120fl
2121ffi
2122ffl
2123st
2124st
2125ÕŽÕ¶
2126ÕŽÕ¥
2127ÕŽÕ«
2128ÕŸÕ¶
2129ÕŽÕ­
2130)__";
2131
2132        const static std::vector<codepoint_t> defined_cps = {
2133        0x00df, 0x0130, 0x0149, 0x01f0, 0x0390, 0x03b0, 0x0587, 0x1e96,
2134        0x1e97, 0x1e98, 0x1e99, 0x1e9a, 0x1e9e, 0x1f50, 0x1f52, 0x1f54,
2135        0x1f56, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86,
2136        0x1f87, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e,
2137        0x1f8f, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96,
2138        0x1f97, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e,
2139        0x1f9f, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6,
2140        0x1fa7, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae,
2141        0x1faf, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb6, 0x1fb7, 0x1fbc, 0x1fc2,
2142        0x1fc3, 0x1fc4, 0x1fc6, 0x1fc7, 0x1fcc, 0x1fd2, 0x1fd3, 0x1fd6,
2143        0x1fd7, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe6, 0x1fe7, 0x1ff2, 0x1ff3,
2144        0x1ff4, 0x1ff6, 0x1ff7, 0x1ffc, 0xfb00, 0xfb01, 0xfb02, 0xfb03,
2145        0xfb04, 0xfb05, 0xfb06, 0xfb13, 0xfb14, 0xfb15, 0xfb16, 0xfb17};
2146        static StringOverridePropertyObject property_object(cf, 
2147                                                    SCF_ns::property_object, 
2148                                                    explicitly_defined_set, 
2149                                                    static_cast<const char *>(string_buffer), 
2150                                                    buffer_length, 
2151                                                    defined_cps);
2152    }
2153}
2154
2155#endif
Note: See TracBrowser for help on using the repository browser.