source: icGREP/icgrep-devel/icgrep/UCD/DerivedNormalizationProps.h @ 5656

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

UCD_Config.h, add Indic and CompositionExclusion? properties

File size: 93.6 KB
Line 
1#ifndef DERIVEDNORMALIZATIONPROPS_H
2#define DERIVEDNORMALIZATIONPROPS_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 UCD_properties.py - manual edits may be lost.
9 */
10
11#include "PropertyAliases.h"
12#include "unicode_set.h"
13#include <vector>
14
15namespace UCD {
16    namespace CWKCF_ns {
17        /** Code Point Ranges for CWKCF
18        [0041, 005a], [00a0, 00a0], [00a8, 00a8], [00aa, 00aa],
19        [00ad, 00ad], [00af, 00af], [00b2, 00b5], [00b8, 00ba],
20        [00bc, 00be], [00c0, 00d6], [00d8, 00df], [0100, 0100],
21        [0102, 0102], [0104, 0104], [0106, 0106], [0108, 0108],
22        [010a, 010a], [010c, 010c], [010e, 010e], [0110, 0110],
23        [0112, 0112], [0114, 0114], [0116, 0116], [0118, 0118],
24        [011a, 011a], [011c, 011c], [011e, 011e], [0120, 0120],
25        [0122, 0122], [0124, 0124], [0126, 0126], [0128, 0128],
26        [012a, 012a], [012c, 012c], [012e, 012e], [0130, 0130],
27        [0132, 0134], [0136, 0136], [0139, 0139], [013b, 013b],
28        [013d, 013d], [013f, 0141], [0143, 0143], [0145, 0145],
29        [0147, 0147], [0149, 014a], [014c, 014c], [014e, 014e],
30        [0150, 0150], [0152, 0152], [0154, 0154], [0156, 0156],
31        [0158, 0158], [015a, 015a], [015c, 015c], [015e, 015e],
32        [0160, 0160], [0162, 0162], [0164, 0164], [0166, 0166],
33        [0168, 0168], [016a, 016a], [016c, 016c], [016e, 016e],
34        [0170, 0170], [0172, 0172], [0174, 0174], [0176, 0176],
35        [0178, 0179], [017b, 017b], [017d, 017d], [017f, 017f],
36        [0181, 0182], [0184, 0184], [0186, 0187], [0189, 018b],
37        [018e, 0191], [0193, 0194], [0196, 0198], [019c, 019d],
38        [019f, 01a0], [01a2, 01a2], [01a4, 01a4], [01a6, 01a7],
39        [01a9, 01a9], [01ac, 01ac], [01ae, 01af], [01b1, 01b3],
40        [01b5, 01b5], [01b7, 01b8], [01bc, 01bc], [01c4, 01cd],
41        [01cf, 01cf], [01d1, 01d1], [01d3, 01d3], [01d5, 01d5],
42        [01d7, 01d7], [01d9, 01d9], [01db, 01db], [01de, 01de],
43        [01e0, 01e0], [01e2, 01e2], [01e4, 01e4], [01e6, 01e6],
44        [01e8, 01e8], [01ea, 01ea], [01ec, 01ec], [01ee, 01ee],
45        [01f1, 01f4], [01f6, 01f8], [01fa, 01fa], [01fc, 01fc],
46        [01fe, 01fe], [0200, 0200], [0202, 0202], [0204, 0204],
47        [0206, 0206], [0208, 0208], [020a, 020a], [020c, 020c],
48        [020e, 020e], [0210, 0210], [0212, 0212], [0214, 0214],
49        [0216, 0216], [0218, 0218], [021a, 021a], [021c, 021c],
50        [021e, 021e], [0220, 0220], [0222, 0222], [0224, 0224],
51        [0226, 0226], [0228, 0228], [022a, 022a], [022c, 022c],
52        [022e, 022e], [0230, 0230], [0232, 0232], [023a, 023b],
53        [023d, 023e], [0241, 0241], [0243, 0246], [0248, 0248],
54        [024a, 024a], [024c, 024c], [024e, 024e], [02b0, 02b8],
55        [02d8, 02dd], [02e0, 02e4], [0340, 0341], [0343, 0345],
56        [034f, 034f], [0370, 0370], [0372, 0372], [0374, 0374],
57        [0376, 0376], [037a, 037a], [037e, 037f], [0384, 038a],
58        [038c, 038c], [038e, 038f], [0391, 03a1], [03a3, 03ab],
59        [03c2, 03c2], [03cf, 03d6], [03d8, 03d8], [03da, 03da],
60        [03dc, 03dc], [03de, 03de], [03e0, 03e0], [03e2, 03e2],
61        [03e4, 03e4], [03e6, 03e6], [03e8, 03e8], [03ea, 03ea],
62        [03ec, 03ec], [03ee, 03ee], [03f0, 03f2], [03f4, 03f5],
63        [03f7, 03f7], [03f9, 03fa], [03fd, 042f], [0460, 0460],
64        [0462, 0462], [0464, 0464], [0466, 0466], [0468, 0468],
65        [046a, 046a], [046c, 046c], [046e, 046e], [0470, 0470],
66        [0472, 0472], [0474, 0474], [0476, 0476], [0478, 0478],
67        [047a, 047a], [047c, 047c], [047e, 047e], [0480, 0480],
68        [048a, 048a], [048c, 048c], [048e, 048e], [0490, 0490],
69        [0492, 0492], [0494, 0494], [0496, 0496], [0498, 0498],
70        [049a, 049a], [049c, 049c], [049e, 049e], [04a0, 04a0],
71        [04a2, 04a2], [04a4, 04a4], [04a6, 04a6], [04a8, 04a8],
72        [04aa, 04aa], [04ac, 04ac], [04ae, 04ae], [04b0, 04b0],
73        [04b2, 04b2], [04b4, 04b4], [04b6, 04b6], [04b8, 04b8],
74        [04ba, 04ba], [04bc, 04bc], [04be, 04be], [04c0, 04c1],
75        [04c3, 04c3], [04c5, 04c5], [04c7, 04c7], [04c9, 04c9],
76        [04cb, 04cb], [04cd, 04cd], [04d0, 04d0], [04d2, 04d2],
77        [04d4, 04d4], [04d6, 04d6], [04d8, 04d8], [04da, 04da],
78        [04dc, 04dc], [04de, 04de], [04e0, 04e0], [04e2, 04e2],
79        [04e4, 04e4], [04e6, 04e6], [04e8, 04e8], [04ea, 04ea],
80        [04ec, 04ec], [04ee, 04ee], [04f0, 04f0], [04f2, 04f2],
81        [04f4, 04f4], [04f6, 04f6], [04f8, 04f8], [04fa, 04fa],
82        [04fc, 04fc], [04fe, 04fe], [0500, 0500], [0502, 0502],
83        [0504, 0504], [0506, 0506], [0508, 0508], [050a, 050a],
84        [050c, 050c], [050e, 050e], [0510, 0510], [0512, 0512],
85        [0514, 0514], [0516, 0516], [0518, 0518], [051a, 051a],
86        [051c, 051c], [051e, 051e], [0520, 0520], [0522, 0522],
87        [0524, 0524], [0526, 0526], [0528, 0528], [052a, 052a],
88        [052c, 052c], [052e, 052e], [0531, 0556], [0587, 0587],
89        [061c, 061c], [0675, 0678], [0958, 095f], [09dc, 09dd],
90        [09df, 09df], [0a33, 0a33], [0a36, 0a36], [0a59, 0a5b],
91        [0a5e, 0a5e], [0b5c, 0b5d], [0e33, 0e33], [0eb3, 0eb3],
92        [0edc, 0edd], [0f0c, 0f0c], [0f43, 0f43], [0f4d, 0f4d],
93        [0f52, 0f52], [0f57, 0f57], [0f5c, 0f5c], [0f69, 0f69],
94        [0f73, 0f73], [0f75, 0f79], [0f81, 0f81], [0f93, 0f93],
95        [0f9d, 0f9d], [0fa2, 0fa2], [0fa7, 0fa7], [0fac, 0fac],
96        [0fb9, 0fb9], [10a0, 10c5], [10c7, 10c7], [10cd, 10cd],
97        [10fc, 10fc], [115f, 1160], [13f8, 13fd], [17b4, 17b5],
98        [180b, 180e], [1c80, 1c88], [1d2c, 1d2e], [1d30, 1d3a],
99        [1d3c, 1d4d], [1d4f, 1d6a], [1d78, 1d78], [1d9b, 1dbf],
100        [1e00, 1e00], [1e02, 1e02], [1e04, 1e04], [1e06, 1e06],
101        [1e08, 1e08], [1e0a, 1e0a], [1e0c, 1e0c], [1e0e, 1e0e],
102        [1e10, 1e10], [1e12, 1e12], [1e14, 1e14], [1e16, 1e16],
103        [1e18, 1e18], [1e1a, 1e1a], [1e1c, 1e1c], [1e1e, 1e1e],
104        [1e20, 1e20], [1e22, 1e22], [1e24, 1e24], [1e26, 1e26],
105        [1e28, 1e28], [1e2a, 1e2a], [1e2c, 1e2c], [1e2e, 1e2e],
106        [1e30, 1e30], [1e32, 1e32], [1e34, 1e34], [1e36, 1e36],
107        [1e38, 1e38], [1e3a, 1e3a], [1e3c, 1e3c], [1e3e, 1e3e],
108        [1e40, 1e40], [1e42, 1e42], [1e44, 1e44], [1e46, 1e46],
109        [1e48, 1e48], [1e4a, 1e4a], [1e4c, 1e4c], [1e4e, 1e4e],
110        [1e50, 1e50], [1e52, 1e52], [1e54, 1e54], [1e56, 1e56],
111        [1e58, 1e58], [1e5a, 1e5a], [1e5c, 1e5c], [1e5e, 1e5e],
112        [1e60, 1e60], [1e62, 1e62], [1e64, 1e64], [1e66, 1e66],
113        [1e68, 1e68], [1e6a, 1e6a], [1e6c, 1e6c], [1e6e, 1e6e],
114        [1e70, 1e70], [1e72, 1e72], [1e74, 1e74], [1e76, 1e76],
115        [1e78, 1e78], [1e7a, 1e7a], [1e7c, 1e7c], [1e7e, 1e7e],
116        [1e80, 1e80], [1e82, 1e82], [1e84, 1e84], [1e86, 1e86],
117        [1e88, 1e88], [1e8a, 1e8a], [1e8c, 1e8c], [1e8e, 1e8e],
118        [1e90, 1e90], [1e92, 1e92], [1e94, 1e94], [1e9a, 1e9b],
119        [1e9e, 1e9e], [1ea0, 1ea0], [1ea2, 1ea2], [1ea4, 1ea4],
120        [1ea6, 1ea6], [1ea8, 1ea8], [1eaa, 1eaa], [1eac, 1eac],
121        [1eae, 1eae], [1eb0, 1eb0], [1eb2, 1eb2], [1eb4, 1eb4],
122        [1eb6, 1eb6], [1eb8, 1eb8], [1eba, 1eba], [1ebc, 1ebc],
123        [1ebe, 1ebe], [1ec0, 1ec0], [1ec2, 1ec2], [1ec4, 1ec4],
124        [1ec6, 1ec6], [1ec8, 1ec8], [1eca, 1eca], [1ecc, 1ecc],
125        [1ece, 1ece], [1ed0, 1ed0], [1ed2, 1ed2], [1ed4, 1ed4],
126        [1ed6, 1ed6], [1ed8, 1ed8], [1eda, 1eda], [1edc, 1edc],
127        [1ede, 1ede], [1ee0, 1ee0], [1ee2, 1ee2], [1ee4, 1ee4],
128        [1ee6, 1ee6], [1ee8, 1ee8], [1eea, 1eea], [1eec, 1eec],
129        [1eee, 1eee], [1ef0, 1ef0], [1ef2, 1ef2], [1ef4, 1ef4],
130        [1ef6, 1ef6], [1ef8, 1ef8], [1efa, 1efa], [1efc, 1efc],
131        [1efe, 1efe], [1f08, 1f0f], [1f18, 1f1d], [1f28, 1f2f],
132        [1f38, 1f3f], [1f48, 1f4d], [1f59, 1f59], [1f5b, 1f5b],
133        [1f5d, 1f5d], [1f5f, 1f5f], [1f68, 1f6f], [1f71, 1f71],
134        [1f73, 1f73], [1f75, 1f75], [1f77, 1f77], [1f79, 1f79],
135        [1f7b, 1f7b], [1f7d, 1f7d], [1f80, 1faf], [1fb2, 1fb4],
136        [1fb7, 1fc4], [1fc7, 1fcf], [1fd3, 1fd3], [1fd8, 1fdb],
137        [1fdd, 1fdf], [1fe3, 1fe3], [1fe8, 1fef], [1ff2, 1ff4],
138        [1ff7, 1ffe], [2000, 200f], [2011, 2011], [2017, 2017],
139        [2024, 2026], [202a, 202f], [2033, 2034], [2036, 2037],
140        [203c, 203c], [203e, 203e], [2047, 2049], [2057, 2057],
141        [205f, 2071], [2074, 208e], [2090, 209c], [20a8, 20a8],
142        [2100, 2103], [2105, 2107], [2109, 2113], [2115, 2116],
143        [2119, 211d], [2120, 2122], [2124, 2124], [2126, 2126],
144        [2128, 2128], [212a, 212d], [212f, 2139], [213b, 2140],
145        [2145, 2149], [2150, 217f], [2183, 2183], [2189, 2189],
146        [222c, 222d], [222f, 2230], [2329, 232a], [2460, 24ea],
147        [2a0c, 2a0c], [2a74, 2a76], [2adc, 2adc], [2c00, 2c2e],
148        [2c60, 2c60], [2c62, 2c64], [2c67, 2c67], [2c69, 2c69],
149        [2c6b, 2c6b], [2c6d, 2c70], [2c72, 2c72], [2c75, 2c75],
150        [2c7c, 2c80], [2c82, 2c82], [2c84, 2c84], [2c86, 2c86],
151        [2c88, 2c88], [2c8a, 2c8a], [2c8c, 2c8c], [2c8e, 2c8e],
152        [2c90, 2c90], [2c92, 2c92], [2c94, 2c94], [2c96, 2c96],
153        [2c98, 2c98], [2c9a, 2c9a], [2c9c, 2c9c], [2c9e, 2c9e],
154        [2ca0, 2ca0], [2ca2, 2ca2], [2ca4, 2ca4], [2ca6, 2ca6],
155        [2ca8, 2ca8], [2caa, 2caa], [2cac, 2cac], [2cae, 2cae],
156        [2cb0, 2cb0], [2cb2, 2cb2], [2cb4, 2cb4], [2cb6, 2cb6],
157        [2cb8, 2cb8], [2cba, 2cba], [2cbc, 2cbc], [2cbe, 2cbe],
158        [2cc0, 2cc0], [2cc2, 2cc2], [2cc4, 2cc4], [2cc6, 2cc6],
159        [2cc8, 2cc8], [2cca, 2cca], [2ccc, 2ccc], [2cce, 2cce],
160        [2cd0, 2cd0], [2cd2, 2cd2], [2cd4, 2cd4], [2cd6, 2cd6],
161        [2cd8, 2cd8], [2cda, 2cda], [2cdc, 2cdc], [2cde, 2cde],
162        [2ce0, 2ce0], [2ce2, 2ce2], [2ceb, 2ceb], [2ced, 2ced],
163        [2cf2, 2cf2], [2d6f, 2d6f], [2e9f, 2e9f], [2ef3, 2ef3],
164        [2f00, 2fd5], [3000, 3000], [3036, 3036], [3038, 303a],
165        [309b, 309c], [309f, 309f], [30ff, 30ff], [3131, 318e],
166        [3192, 319f], [3200, 321e], [3220, 3247], [3250, 327e],
167        [3280, 32fe], [3300, 33ff], [a640, a640], [a642, a642],
168        [a644, a644], [a646, a646], [a648, a648], [a64a, a64a],
169        [a64c, a64c], [a64e, a64e], [a650, a650], [a652, a652],
170        [a654, a654], [a656, a656], [a658, a658], [a65a, a65a],
171        [a65c, a65c], [a65e, a65e], [a660, a660], [a662, a662],
172        [a664, a664], [a666, a666], [a668, a668], [a66a, a66a],
173        [a66c, a66c], [a680, a680], [a682, a682], [a684, a684],
174        [a686, a686], [a688, a688], [a68a, a68a], [a68c, a68c],
175        [a68e, a68e], [a690, a690], [a692, a692], [a694, a694],
176        [a696, a696], [a698, a698], [a69a, a69a], [a69c, a69d],
177        [a722, a722], [a724, a724], [a726, a726], [a728, a728],
178        [a72a, a72a], [a72c, a72c], [a72e, a72e], [a732, a732],
179        [a734, a734], [a736, a736], [a738, a738], [a73a, a73a],
180        [a73c, a73c], [a73e, a73e], [a740, a740], [a742, a742],
181        [a744, a744], [a746, a746], [a748, a748], [a74a, a74a],
182        [a74c, a74c], [a74e, a74e], [a750, a750], [a752, a752],
183        [a754, a754], [a756, a756], [a758, a758], [a75a, a75a],
184        [a75c, a75c], [a75e, a75e], [a760, a760], [a762, a762],
185        [a764, a764], [a766, a766], [a768, a768], [a76a, a76a],
186        [a76c, a76c], [a76e, a76e], [a770, a770], [a779, a779],
187        [a77b, a77b], [a77d, a77e], [a780, a780], [a782, a782],
188        [a784, a784], [a786, a786], [a78b, a78b], [a78d, a78d],
189        [a790, a790], [a792, a792], [a796, a796], [a798, a798],
190        [a79a, a79a], [a79c, a79c], [a79e, a79e], [a7a0, a7a0],
191        [a7a2, a7a2], [a7a4, a7a4], [a7a6, a7a6], [a7a8, a7a8],
192        [a7aa, a7ae], [a7b0, a7b4], [a7b6, a7b6], [a7f8, a7f9],
193        [ab5c, ab5f], [ab70, abbf], [f900, fa0d], [fa10, fa10],
194        [fa12, fa12], [fa15, fa1e], [fa20, fa20], [fa22, fa22],
195        [fa25, fa26], [fa2a, fa6d], [fa70, fad9], [fb00, fb06],
196        [fb13, fb17], [fb1d, fb1d], [fb1f, fb36], [fb38, fb3c],
197        [fb3e, fb3e], [fb40, fb41], [fb43, fb44], [fb46, fbb1],
198        [fbd3, fd3d], [fd50, fd8f], [fd92, fdc7], [fdf0, fdfc],
199        [fe00, fe19], [fe30, fe44], [fe47, fe52], [fe54, fe66],
200        [fe68, fe6b], [fe70, fe72], [fe74, fe74], [fe76, fefc],
201        [feff, feff], [ff01, ffbe], [ffc2, ffc7], [ffca, ffcf],
202        [ffd2, ffd7], [ffda, ffdc], [ffe0, ffe6], [ffe8, ffee],
203        [fff0, fff8], [10400, 10427], [104b0, 104d3], [10c80, 10cb2],
204        [118a0, 118bf], [1bca0, 1bca3], [1d15e, 1d164], [1d173, 1d17a],
205        [1d1bb, 1d1c0], [1d400, 1d454], [1d456, 1d49c], [1d49e, 1d49f],
206        [1d4a2, 1d4a2], [1d4a5, 1d4a6], [1d4a9, 1d4ac], [1d4ae, 1d4b9],
207        [1d4bb, 1d4bb], [1d4bd, 1d4c3], [1d4c5, 1d505], [1d507, 1d50a],
208        [1d50d, 1d514], [1d516, 1d51c], [1d51e, 1d539], [1d53b, 1d53e],
209        [1d540, 1d544], [1d546, 1d546], [1d54a, 1d550], [1d552, 1d6a5],
210        [1d6a8, 1d7cb], [1d7ce, 1d7ff], [1e900, 1e921], [1ee00, 1ee03],
211        [1ee05, 1ee1f], [1ee21, 1ee22], [1ee24, 1ee24], [1ee27, 1ee27],
212        [1ee29, 1ee32], [1ee34, 1ee37], [1ee39, 1ee39], [1ee3b, 1ee3b],
213        [1ee42, 1ee42], [1ee47, 1ee47], [1ee49, 1ee49], [1ee4b, 1ee4b],
214        [1ee4d, 1ee4f], [1ee51, 1ee52], [1ee54, 1ee54], [1ee57, 1ee57],
215        [1ee59, 1ee59], [1ee5b, 1ee5b], [1ee5d, 1ee5d], [1ee5f, 1ee5f],
216        [1ee61, 1ee62], [1ee64, 1ee64], [1ee67, 1ee6a], [1ee6c, 1ee72],
217        [1ee74, 1ee77], [1ee79, 1ee7c], [1ee7e, 1ee7e], [1ee80, 1ee89],
218        [1ee8b, 1ee9b], [1eea1, 1eea3], [1eea5, 1eea9], [1eeab, 1eebb],
219        [1f100, 1f10a], [1f110, 1f12e], [1f130, 1f14f], [1f16a, 1f16b],
220        [1f190, 1f190], [1f200, 1f202], [1f210, 1f23b], [1f240, 1f248],
221        [1f250, 1f251], [2f800, 2fa1d], [e0000, e0fff]**/
222        const UnicodeSet codepoint_set
223            {{{Empty, 2}, {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 1},
224              {Mixed, 11}, {Empty, 2}, {Mixed, 3}, {Empty, 2}, {Mixed, 6},
225              {Full, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 8}, {Empty, 1},
226              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2}, {Mixed, 1},
227              {Empty, 22}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2},
228              {Mixed, 2}, {Empty, 7}, {Mixed, 1}, {Empty, 22}, {Mixed, 1},
229              {Empty, 3}, {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
230              {Mixed, 4}, {Empty, 7}, {Full, 1}, {Mixed, 2}, {Empty, 2},
231              {Mixed, 2}, {Empty, 19}, {Mixed, 1}, {Empty, 29}, {Mixed, 1},
232              {Empty, 2}, {Mixed, 1}, {Empty, 35}, {Mixed, 1}, {Empty, 4},
233              {Mixed, 4}, {Full, 1}, {Empty, 2}, {Mixed, 12}, {Full, 1},
234              {Mixed, 9}, {Empty, 2}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
235              {Empty, 4}, {Mixed, 1}, {Empty, 7}, {Mixed, 1}, {Empty, 9},
236              {Full, 4}, {Mixed, 1}, {Empty, 40}, {Mixed, 1}, {Empty, 2},
237              {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 9}, {Full, 1},
238              {Mixed, 1}, {Empty, 1}, {Mixed, 5}, {Empty, 3}, {Mixed, 1},
239              {Empty, 8}, {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Full, 6},
240              {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Empty, 2}, {Mixed, 1},
241              {Empty, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Full, 2},
242              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Full, 1}, {Mixed, 2},
243              {Full, 3}, {Mixed, 1}, {Full, 8}, {Empty, 914}, {Mixed, 3},
244              {Empty, 4}, {Mixed, 5}, {Empty, 1}, {Mixed, 1}, {Empty, 26},
245              {Mixed, 2}, {Full, 2}, {Empty, 618}, {Full, 8}, {Mixed, 2},
246              {Full, 1}, {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1},
247              {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Full, 10}, {Mixed, 2},
248              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 6}, {Full, 3},
249              {Mixed, 2}, {Full, 4}, {Mixed, 3}, {Empty, 32}, {Full, 1},
250              {Mixed, 1}, {Empty, 3}, {Mixed, 2}, {Empty, 61}, {Full, 1},
251              {Mixed, 1}, {Empty, 95}, {Full, 1}, {Empty, 1311}, {Mixed, 1},
252              {Empty, 164}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 17},
253              {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Full, 1},
254              {Mixed, 3}, {Full, 10}, {Mixed, 1}, {Full, 8}, {Mixed, 1},
255              {Full, 1}, {Empty, 136}, {Full, 1}, {Mixed, 1}, {Empty, 38},
256              {Mixed, 6}, {Empty, 18}, {Mixed, 5}, {Empty, 3}, {Mixed, 3},
257              {Empty, 2093}, {Full, 16}, {Mixed, 1}, {Empty, 22575},
258              {Full, 128}, {Empty, 6016}},
259             {0x07fffffe, 0x773ca501, 0xff7fffff, 0x55555555, 0xaa5d5555,
260              0x555556ab, 0xab555555, 0xb1dbced6, 0x11aed2d5, 0x4aaabff0,
261              0x55de5555, 0x55555555, 0x6c055555, 0x0000557a, 0x01ff0000,
262              0x3f000000, 0x0000001f, 0x0000803b, 0xc4550000, 0xfffed7f0,
263              0x00000ffb, 0x557f8004, 0xe6b75555, 0x0000ffff, 0x55555555,
264              0x55555401, 0x55555555, 0x55552aab, 0x55555555, 0x55555555,
265              0xfffe5555, 0x007fffff, 0x00000080, 0x10000000, 0x01e00000,
266              0xff000000, 0xb0000000, 0x00480000, 0x4e000000, 0x30000000,
267              0x00080000, 0x00080000, 0x30000000, 0x00001000, 0x10842008,
268              0x03e80200, 0x20080002, 0x02001084, 0x000020bf, 0x10000000,
269              0x80000000, 0x00000001, 0x3f000000, 0x00300000, 0x00007800,
270              0x000001ff, 0xf7ff7000, 0xffffbfff, 0x010007ff, 0xf8000000,
271              0x55555555, 0x55555555, 0x55555555, 0x55555555, 0x4c155555,
272              0x55555555, 0x55555555, 0x55555555, 0x3f00ff00, 0xff00ff00,
273              0xaa003f00, 0x2aaaff00, 0xff9cffff, 0xef08ff9f, 0x7f9cff08,
274              0x0082ffff, 0x50d8fc70, 0x80800380, 0xfff3ffff, 0x1fff7fff,
275              0x00000100, 0x3e6ffeef, 0xfbffbd57, 0xffff03e1, 0x00000208,
276              0x0001b000, 0x00000600, 0x000007ff, 0x00001000, 0x00700000,
277              0x10000000, 0x00007fff, 0xf025ea9d, 0x55555555, 0x55555555,
278              0x55555555, 0x00042805, 0x00008000, 0x80000000, 0x00080000,
279              0x003fffff, 0x00000001, 0x07400000, 0x98000000, 0x80000000,
280              0xfffe0000, 0xfffc7fff, 0x7fffffff, 0xffff00ff, 0x7fffffff,
281              0x7fffffff, 0x55555555, 0x00001555, 0x35555555, 0x55545554,
282              0x55555555, 0x6a015555, 0x55452855, 0x005f7d55, 0x03000000,
283              0xf0000000, 0xffff0000, 0x7fe53fff, 0xfffffc65, 0xffff3fff,
284              0x03ffffff, 0xa0f8007f, 0x5f7fffff, 0xffffffdb, 0x0003ffff,
285              0xfff80000, 0x3fffffff, 0xffff0000, 0xfffcffff, 0x000000ff,
286              0x1fff0000, 0x03ffffff, 0xffff0000, 0xfff7ff9f, 0xffd70f7f,
287              0x9fffffff, 0xfffffffe, 0x7fffffff, 0x1cfcfcfc, 0x01ff7f7f,
288              0x000000ff, 0xffff0000, 0x000fffff, 0x0007ffff, 0x0000000f,
289              0xc0000000, 0x07f8001f, 0xf8000000, 0x00000001, 0xffdfffff,
290              0xdfffffff, 0xebffde64, 0xffffffef, 0xdfdfe7bf, 0x7bffffff,
291              0xfffdfc5f, 0xffffff3f, 0xffffcfff, 0x00000003, 0xffffffef,
292              0x0af7fe96, 0xaa96ea84, 0x5ef7f796, 0x0ffffbff, 0x0ffffbee,
293              0xffff07ff, 0xffff7fff, 0x0000ffff, 0x00000c00, 0x00010000,
294              0xffff0007, 0x0fffffff, 0x000301ff, 0x3fffffff}};
295        static BinaryPropertyObject property_object{CWKCF, codepoint_set};
296    }
297    namespace COMP_EX_ns {
298        /** Code Point Ranges for Comp_Ex
299        [0340, 0341], [0343, 0344], [0374, 0374], [037e, 037e],
300        [0387, 0387], [0958, 095f], [09dc, 09dd], [09df, 09df],
301        [0a33, 0a33], [0a36, 0a36], [0a59, 0a5b], [0a5e, 0a5e],
302        [0b5c, 0b5d], [0f43, 0f43], [0f4d, 0f4d], [0f52, 0f52],
303        [0f57, 0f57], [0f5c, 0f5c], [0f69, 0f69], [0f73, 0f73],
304        [0f75, 0f76], [0f78, 0f78], [0f81, 0f81], [0f93, 0f93],
305        [0f9d, 0f9d], [0fa2, 0fa2], [0fa7, 0fa7], [0fac, 0fac],
306        [0fb9, 0fb9], [1f71, 1f71], [1f73, 1f73], [1f75, 1f75],
307        [1f77, 1f77], [1f79, 1f79], [1f7b, 1f7b], [1f7d, 1f7d],
308        [1fbb, 1fbb], [1fbe, 1fbe], [1fc9, 1fc9], [1fcb, 1fcb],
309        [1fd3, 1fd3], [1fdb, 1fdb], [1fe3, 1fe3], [1feb, 1feb],
310        [1fee, 1fef], [1ff9, 1ff9], [1ffb, 1ffb], [1ffd, 1ffd],
311        [2000, 2001], [2126, 2126], [212a, 212b], [2329, 232a],
312        [2adc, 2adc], [f900, fa0d], [fa10, fa10], [fa12, fa12],
313        [fa15, fa1e], [fa20, fa20], [fa22, fa22], [fa25, fa26],
314        [fa2a, fa6d], [fa70, fad9], [fb1d, fb1d], [fb1f, fb1f],
315        [fb2a, fb36], [fb38, fb3c], [fb3e, fb3e], [fb40, fb41],
316        [fb43, fb44], [fb46, fb4e], [1d15e, 1d164], [1d1bb, 1d1c0],
317        [2f800, 2fa1d]**/
318        const UnicodeSet codepoint_set
319            {{{Empty, 26}, {Mixed, 3}, {Empty, 45}, {Mixed, 1}, {Empty, 3},
320              {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 7}, {Mixed, 1},
321              {Empty, 31}, {Mixed, 4}, {Empty, 125}, {Mixed, 1}, {Empty, 1},
322              {Mixed, 4}, {Empty, 8}, {Mixed, 1}, {Empty, 15}, {Mixed, 1},
323              {Empty, 60}, {Mixed, 1}, {Empty, 1649}, {Full, 8}, {Mixed, 2},
324              {Full, 1}, {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1},
325              {Mixed, 3}, {Empty, 1711}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
326              {Empty, 2353}, {Full, 16}, {Mixed, 1}, {Empty, 28719}},
327             {0x0000001b, 0x40100000, 0x00000080, 0xff000000, 0xb0000000,
328              0x00480000, 0x4e000000, 0x30000000, 0x10842008, 0x01680200,
329              0x20080002, 0x02001084, 0x2aaa0000, 0x48000000, 0x08080a00,
330              0x2a00c808, 0x00000003, 0x00000c40, 0x00000600, 0x10000000,
331              0x7fe53fff, 0xfffffc65, 0xffff3fff, 0x03ffffff, 0xa0000000,
332              0x5f7ffc00, 0x00007fdb, 0xc0000000, 0x0000001f, 0xf8000000,
333              0x00000001, 0x3fffffff}};
334        static BinaryPropertyObject property_object{Comp_Ex, codepoint_set};
335    }
336    namespace FC_NFKC_ns {
337        /** Code Point Ranges for FC_NFKC
338        [037a, 037a], [03d2, 03d4], [03f2, 03f2], [03f9, 03f9],
339        [1d2c, 1d2e], [1d30, 1d3a], [1d3c, 1d42], [20a8, 20a8],
340        [2102, 2103], [2107, 2107], [2109, 2109], [210b, 210d],
341        [2110, 2112], [2115, 2116], [2119, 211d], [2120, 2122],
342        [2124, 2124], [2128, 2128], [212c, 212d], [2130, 2131],
343        [2133, 2133], [213b, 213b], [213e, 213f], [2145, 2145],
344        [2c7d, 2c7d], [3250, 3250], [32cc, 32cc], [32ce, 32cf],
345        [3371, 3371], [3373, 3373], [3375, 3375], [337a, 337a],
346        [3380, 3387], [338a, 338c], [3390, 3394], [33a9, 33ac],
347        [33b4, 33c1], [33c3, 33c3], [33c6, 33c9], [33cb, 33cb],
348        [33cd, 33ce], [33d7, 33d7], [33d9, 33da], [33dc, 33df],
349        [a7f8, a7f8], [1d400, 1d419], [1d434, 1d44d], [1d468, 1d481],
350        [1d49c, 1d49c], [1d49e, 1d49f], [1d4a2, 1d4a2], [1d4a5, 1d4a6],
351        [1d4a9, 1d4ac], [1d4ae, 1d4b5], [1d4d0, 1d4e9], [1d504, 1d505],
352        [1d507, 1d50a], [1d50d, 1d514], [1d516, 1d51c], [1d538, 1d539],
353        [1d53b, 1d53e], [1d540, 1d544], [1d546, 1d546], [1d54a, 1d550],
354        [1d56c, 1d585], [1d5a0, 1d5b9], [1d5d4, 1d5ed], [1d608, 1d621],
355        [1d63c, 1d655], [1d670, 1d689], [1d6a8, 1d6c0], [1d6d3, 1d6d3],
356        [1d6e2, 1d6fa], [1d70d, 1d70d], [1d71c, 1d734], [1d747, 1d747],
357        [1d756, 1d76e], [1d781, 1d781], [1d790, 1d7a8], [1d7bb, 1d7bb],
358        [1d7ca, 1d7ca], [1f110, 1f12e], [1f130, 1f14f], [1f16a, 1f16b],
359        [1f190, 1f190]**/
360        const UnicodeSet codepoint_set
361            {{{Empty, 27}, {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 201},
362              {Mixed, 2}, {Empty, 26}, {Mixed, 1}, {Empty, 2}, {Mixed, 3},
363              {Empty, 88}, {Mixed, 1}, {Empty, 46}, {Mixed, 1}, {Empty, 3},
364              {Mixed, 1}, {Empty, 4}, {Mixed, 4}, {Empty, 928}, {Mixed, 1},
365              {Empty, 2400}, {Mixed, 31}, {Empty, 201}, {Mixed, 5},
366              {Empty, 30835}},
367             {0x04000000, 0x001c0000, 0x02040000, 0xf7ff7000, 0x00000007,
368              0x00000100, 0x3e673a8c, 0xc80b3117, 0x00000020, 0x20000000,
369              0x00010000, 0x0000d000, 0x042a0000, 0x001f1cff, 0xfff01e00,
370              0xf6806bcb, 0x01000000, 0x03ffffff, 0xfff00000, 0x00003fff,
371              0xffffff00, 0xd0000003, 0x003fde64, 0xffff0000, 0x000003ff,
372              0x1fdfe7b0, 0x7b000000, 0x0001fc5f, 0xfffff000, 0x0000003f,
373              0x03ffffff, 0xfff00000, 0x00003fff, 0xffffff00, 0xf0000003,
374              0x003fffff, 0xffff0000, 0x000003ff, 0xffffff00, 0x00080001,
375              0x07fffffc, 0xf0002000, 0x001fffff, 0xffc00080, 0x00007fff,
376              0xffff0002, 0x080001ff, 0x00000400, 0xffff0000, 0xffff7fff,
377              0x0000ffff, 0x00000c00, 0x00010000}};
378        static BinaryPropertyObject property_object{FC_NFKC, codepoint_set};
379    }
380    namespace NFC_QC_ns {
381        /** Code Point Ranges for NFC_QC
382        [0300, 0304], [0306, 030c], [030f, 030f], [0311, 0311],
383        [0313, 0314], [031b, 031b], [0323, 0328], [032d, 032e],
384        [0330, 0331], [0338, 0338], [0340, 0345], [0374, 0374],
385        [037e, 037e], [0387, 0387], [0653, 0655], [093c, 093c],
386        [0958, 095f], [09be, 09be], [09d7, 09d7], [09dc, 09dd],
387        [09df, 09df], [0a33, 0a33], [0a36, 0a36], [0a59, 0a5b],
388        [0a5e, 0a5e], [0b3e, 0b3e], [0b56, 0b57], [0b5c, 0b5d],
389        [0bbe, 0bbe], [0bd7, 0bd7], [0c56, 0c56], [0cc2, 0cc2],
390        [0cd5, 0cd6], [0d3e, 0d3e], [0d57, 0d57], [0dca, 0dca],
391        [0dcf, 0dcf], [0ddf, 0ddf], [0f43, 0f43], [0f4d, 0f4d],
392        [0f52, 0f52], [0f57, 0f57], [0f5c, 0f5c], [0f69, 0f69],
393        [0f73, 0f73], [0f75, 0f76], [0f78, 0f78], [0f81, 0f81],
394        [0f93, 0f93], [0f9d, 0f9d], [0fa2, 0fa2], [0fa7, 0fa7],
395        [0fac, 0fac], [0fb9, 0fb9], [102e, 102e], [1161, 1175],
396        [11a8, 11c2], [1b35, 1b35], [1f71, 1f71], [1f73, 1f73],
397        [1f75, 1f75], [1f77, 1f77], [1f79, 1f79], [1f7b, 1f7b],
398        [1f7d, 1f7d], [1fbb, 1fbb], [1fbe, 1fbe], [1fc9, 1fc9],
399        [1fcb, 1fcb], [1fd3, 1fd3], [1fdb, 1fdb], [1fe3, 1fe3],
400        [1feb, 1feb], [1fee, 1fef], [1ff9, 1ff9], [1ffb, 1ffb],
401        [1ffd, 1ffd], [2000, 2001], [2126, 2126], [212a, 212b],
402        [2329, 232a], [2adc, 2adc], [3099, 309a], [f900, fa0d],
403        [fa10, fa10], [fa12, fa12], [fa15, fa1e], [fa20, fa20],
404        [fa22, fa22], [fa25, fa26], [fa2a, fa6d], [fa70, fad9],
405        [fb1d, fb1d], [fb1f, fb1f], [fb2a, fb36], [fb38, fb3c],
406        [fb3e, fb3e], [fb40, fb41], [fb43, fb44], [fb46, fb4e],
407        [110ba, 110ba], [11127, 11127], [1133e, 1133e], [11357, 11357],
408        [114b0, 114b0], [114ba, 114ba], [114bd, 114bd], [115af, 115af],
409        [1d15e, 1d164], [1d1bb, 1d1c0], [2f800, 2fa1d]**/
410        const UnicodeSet codepoint_set
411            {{{Empty, 24}, {Mixed, 5}, {Empty, 21}, {Mixed, 1}, {Empty, 22},
412              {Mixed, 2}, {Empty, 2}, {Mixed, 2}, {Empty, 2}, {Mixed, 2},
413              {Empty, 6}, {Mixed, 2}, {Empty, 2}, {Mixed, 2}, {Empty, 3},
414              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2}, {Mixed, 2},
415              {Empty, 3}, {Mixed, 1}, {Empty, 11}, {Mixed, 4}, {Empty, 3},
416              {Mixed, 1}, {Empty, 9}, {Mixed, 1}, {Empty, 1}, {Mixed, 2},
417              {Empty, 74}, {Mixed, 1}, {Empty, 33}, {Mixed, 1}, {Empty, 1},
418              {Mixed, 4}, {Empty, 8}, {Mixed, 1}, {Empty, 15}, {Mixed, 1},
419              {Empty, 60}, {Mixed, 1}, {Empty, 45}, {Mixed, 1},
420              {Empty, 1603}, {Full, 8}, {Mixed, 2}, {Full, 1}, {Mixed, 1},
421              {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Empty, 170},
422              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 15}, {Mixed, 2},
423              {Empty, 10}, {Mixed, 1}, {Empty, 7}, {Mixed, 1},
424              {Empty, 1500}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
425              {Empty, 2353}, {Full, 16}, {Mixed, 1}, {Empty, 28719}},
426             {0x081a9fdf, 0x010361f8, 0x0000003f, 0x40100000, 0x00000080,
427              0x00380000, 0x10000000, 0xff000000, 0x40000000, 0xb0800000,
428              0x00480000, 0x4e000000, 0x40000000, 0x30c00000, 0x40000000,
429              0x00800000, 0x00400000, 0x00600004, 0x40000000, 0x00800000,
430              0x80008400, 0x10842008, 0x01680200, 0x20080002, 0x02001084,
431              0x00004000, 0x003ffffe, 0xffffff00, 0x00000007, 0x00200000,
432              0x2aaa0000, 0x48000000, 0x08080a00, 0x2a00c808, 0x00000003,
433              0x00000c40, 0x00000600, 0x10000000, 0x06000000, 0x7fe53fff,
434              0xfffffc65, 0xffff3fff, 0x03ffffff, 0xa0000000, 0x5f7ffc00,
435              0x00007fdb, 0x04000000, 0x00000080, 0x40000000, 0x00800000,
436              0x24010000, 0x00008000, 0xc0000000, 0x0000001f, 0xf8000000,
437              0x00000001, 0x3fffffff}};
438        static BinaryPropertyObject property_object{NFC_QC, codepoint_set};
439    }
440    namespace NFD_QC_ns {
441        /** Code Point Ranges for NFD_QC
442        [00c0, 00c5], [00c7, 00cf], [00d1, 00d6], [00d9, 00dd],
443        [00e0, 00e5], [00e7, 00ef], [00f1, 00f6], [00f9, 00fd],
444        [00ff, 010f], [0112, 0125], [0128, 0130], [0134, 0137],
445        [0139, 013e], [0143, 0148], [014c, 0151], [0154, 0165],
446        [0168, 017e], [01a0, 01a1], [01af, 01b0], [01cd, 01dc],
447        [01de, 01e3], [01e6, 01f0], [01f4, 01f5], [01f8, 021b],
448        [021e, 021f], [0226, 0233], [0340, 0341], [0343, 0344],
449        [0374, 0374], [037e, 037e], [0385, 038a], [038c, 038c],
450        [038e, 0390], [03aa, 03b0], [03ca, 03ce], [03d3, 03d4],
451        [0400, 0401], [0403, 0403], [0407, 0407], [040c, 040e],
452        [0419, 0419], [0439, 0439], [0450, 0451], [0453, 0453],
453        [0457, 0457], [045c, 045e], [0476, 0477], [04c1, 04c2],
454        [04d0, 04d3], [04d6, 04d7], [04da, 04df], [04e2, 04e7],
455        [04ea, 04f5], [04f8, 04f9], [0622, 0626], [06c0, 06c0],
456        [06c2, 06c2], [06d3, 06d3], [0929, 0929], [0931, 0931],
457        [0934, 0934], [0958, 095f], [09cb, 09cc], [09dc, 09dd],
458        [09df, 09df], [0a33, 0a33], [0a36, 0a36], [0a59, 0a5b],
459        [0a5e, 0a5e], [0b48, 0b48], [0b4b, 0b4c], [0b5c, 0b5d],
460        [0b94, 0b94], [0bca, 0bcc], [0c48, 0c48], [0cc0, 0cc0],
461        [0cc7, 0cc8], [0cca, 0ccb], [0d4a, 0d4c], [0dda, 0dda],
462        [0ddc, 0dde], [0f43, 0f43], [0f4d, 0f4d], [0f52, 0f52],
463        [0f57, 0f57], [0f5c, 0f5c], [0f69, 0f69], [0f73, 0f73],
464        [0f75, 0f76], [0f78, 0f78], [0f81, 0f81], [0f93, 0f93],
465        [0f9d, 0f9d], [0fa2, 0fa2], [0fa7, 0fa7], [0fac, 0fac],
466        [0fb9, 0fb9], [1026, 1026], [1b06, 1b06], [1b08, 1b08],
467        [1b0a, 1b0a], [1b0c, 1b0c], [1b0e, 1b0e], [1b12, 1b12],
468        [1b3b, 1b3b], [1b3d, 1b3d], [1b40, 1b41], [1b43, 1b43],
469        [1e00, 1e99], [1e9b, 1e9b], [1ea0, 1ef9], [1f00, 1f15],
470        [1f18, 1f1d], [1f20, 1f45], [1f48, 1f4d], [1f50, 1f57],
471        [1f59, 1f59], [1f5b, 1f5b], [1f5d, 1f5d], [1f5f, 1f7d],
472        [1f80, 1fb4], [1fb6, 1fbc], [1fbe, 1fbe], [1fc1, 1fc4],
473        [1fc6, 1fd3], [1fd6, 1fdb], [1fdd, 1fef], [1ff2, 1ff4],
474        [1ff6, 1ffd], [2000, 2001], [2126, 2126], [212a, 212b],
475        [219a, 219b], [21ae, 21ae], [21cd, 21cf], [2204, 2204],
476        [2209, 2209], [220c, 220c], [2224, 2224], [2226, 2226],
477        [2241, 2241], [2244, 2244], [2247, 2247], [2249, 2249],
478        [2260, 2260], [2262, 2262], [226d, 2271], [2274, 2275],
479        [2278, 2279], [2280, 2281], [2284, 2285], [2288, 2289],
480        [22ac, 22af], [22e0, 22e3], [22ea, 22ed], [2329, 232a],
481        [2adc, 2adc], [304c, 304c], [304e, 304e], [3050, 3050],
482        [3052, 3052], [3054, 3054], [3056, 3056], [3058, 3058],
483        [305a, 305a], [305c, 305c], [305e, 305e], [3060, 3060],
484        [3062, 3062], [3065, 3065], [3067, 3067], [3069, 3069],
485        [3070, 3071], [3073, 3074], [3076, 3077], [3079, 307a],
486        [307c, 307d], [3094, 3094], [309e, 309e], [30ac, 30ac],
487        [30ae, 30ae], [30b0, 30b0], [30b2, 30b2], [30b4, 30b4],
488        [30b6, 30b6], [30b8, 30b8], [30ba, 30ba], [30bc, 30bc],
489        [30be, 30be], [30c0, 30c0], [30c2, 30c2], [30c5, 30c5],
490        [30c7, 30c7], [30c9, 30c9], [30d0, 30d1], [30d3, 30d4],
491        [30d6, 30d7], [30d9, 30da], [30dc, 30dd], [30f4, 30f4],
492        [30f7, 30fa], [30fe, 30fe], [ac00, d7a3], [f900, fa0d],
493        [fa10, fa10], [fa12, fa12], [fa15, fa1e], [fa20, fa20],
494        [fa22, fa22], [fa25, fa26], [fa2a, fa6d], [fa70, fad9],
495        [fb1d, fb1d], [fb1f, fb1f], [fb2a, fb36], [fb38, fb3c],
496        [fb3e, fb3e], [fb40, fb41], [fb43, fb44], [fb46, fb4e],
497        [1109a, 1109a], [1109c, 1109c], [110ab, 110ab], [1112e, 1112f],
498        [1134b, 1134c], [114bb, 114bc], [114be, 114be], [115ba, 115bb],
499        [1d15e, 1d164], [1d1bb, 1d1c0], [2f800, 2fa1d]**/
500        const UnicodeSet codepoint_set
501            {{{Empty, 6}, {Mixed, 6}, {Empty, 1}, {Mixed, 5}, {Empty, 8},
502              {Mixed, 5}, {Empty, 1}, {Mixed, 4}, {Empty, 2}, {Mixed, 2},
503              {Empty, 9}, {Mixed, 1}, {Empty, 4}, {Mixed, 1}, {Empty, 18},
504              {Mixed, 2}, {Empty, 3}, {Mixed, 1}, {Empty, 2}, {Mixed, 2},
505              {Empty, 7}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
506              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
507              {Empty, 3}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 11},
508              {Mixed, 4}, {Empty, 3}, {Mixed, 1}, {Empty, 86}, {Mixed, 3},
509              {Empty, 21}, {Full, 4}, {Mixed, 1}, {Full, 2}, {Mixed, 2},
510              {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 4}, {Empty, 8},
511              {Mixed, 1}, {Empty, 2}, {Mixed, 3}, {Empty, 1}, {Mixed, 6},
512              {Empty, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 60},
513              {Mixed, 1}, {Empty, 43}, {Mixed, 6}, {Empty, 984},
514              {Full, 349}, {Mixed, 1}, {Empty, 266}, {Full, 8}, {Mixed, 2},
515              {Full, 1}, {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1},
516              {Mixed, 3}, {Empty, 169}, {Mixed, 2}, {Empty, 3}, {Mixed, 1},
517              {Empty, 16}, {Mixed, 1}, {Empty, 10}, {Mixed, 1}, {Empty, 7},
518              {Mixed, 1}, {Empty, 1500}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
519              {Empty, 2353}, {Full, 16}, {Mixed, 1}, {Empty, 28719}},
520             {0x3e7effbf, 0xbe7effbf, 0xfffcffff, 0x7ef1ff3f, 0xfff3f1f8,
521              0x7fffff3f, 0x00018003, 0xdfffe000, 0xff31ffcf, 0xcfffffff,
522              0x000fffc0, 0x0000001b, 0x40100000, 0x0001d7e0, 0x0001fc00,
523              0x00187c00, 0x0200708b, 0x02000000, 0x708b0000, 0x00c00000,
524              0xfccf0006, 0x033ffcfc, 0x0000007c, 0x00080005, 0x00120200,
525              0xff000000, 0xb0001800, 0x00480000, 0x4e000000, 0x30001900,
526              0x00100000, 0x00001c00, 0x00000100, 0x00000d81, 0x00001c00,
527              0x74000000, 0x10842008, 0x01680200, 0x20080002, 0x02001084,
528              0x00000040, 0x00045540, 0x28000000, 0x0000000b, 0x0bffffff,
529              0x03ffffff, 0x3f3fffff, 0xaaff3f3f, 0x3fffffff, 0x5fdfffff,
530              0xefcfffde, 0x3fdcffff, 0x00000003, 0x00000c40, 0x0c000000,
531              0x00004000, 0x0000e000, 0x00001210, 0x00000050, 0x00000292,
532              0x0333e005, 0x00000333, 0x0000f000, 0x00003c0f, 0x00000600,
533              0x10000000, 0x55555000, 0x36db02a5, 0x40100000, 0x55555000,
534              0x36db02a5, 0x47900000, 0x0000000f, 0x7fe53fff, 0xfffffc65,
535              0xffff3fff, 0x03ffffff, 0xa0000000, 0x5f7ffc00, 0x00007fdb,
536              0x14000000, 0x00000800, 0x0000c000, 0x00001800, 0x58000000,
537              0x0c000000, 0xc0000000, 0x0000001f, 0xf8000000, 0x00000001,
538              0x3fffffff}};
539        static BinaryPropertyObject property_object{NFD_QC, codepoint_set};
540    }
541    namespace NFKC_CF_ns {
542        /** Code Point Ranges for NFKC_CF
543        [0041, 005a], [00a0, 00a0], [00a8, 00a8], [00aa, 00aa],
544        [00ad, 00ad], [00af, 00af], [00b2, 00b5], [00b8, 00ba],
545        [00bc, 00be], [00c0, 00d6], [00d8, 00df], [0100, 0100],
546        [0102, 0102], [0104, 0104], [0106, 0106], [0108, 0108],
547        [010a, 010a], [010c, 010c], [010e, 010e], [0110, 0110],
548        [0112, 0112], [0114, 0114], [0116, 0116], [0118, 0118],
549        [011a, 011a], [011c, 011c], [011e, 011e], [0120, 0120],
550        [0122, 0122], [0124, 0124], [0126, 0126], [0128, 0128],
551        [012a, 012a], [012c, 012c], [012e, 012e], [0130, 0130],
552        [0132, 0134], [0136, 0136], [0139, 0139], [013b, 013b],
553        [013d, 013d], [013f, 0141], [0143, 0143], [0145, 0145],
554        [0147, 0147], [0149, 014a], [014c, 014c], [014e, 014e],
555        [0150, 0150], [0152, 0152], [0154, 0154], [0156, 0156],
556        [0158, 0158], [015a, 015a], [015c, 015c], [015e, 015e],
557        [0160, 0160], [0162, 0162], [0164, 0164], [0166, 0166],
558        [0168, 0168], [016a, 016a], [016c, 016c], [016e, 016e],
559        [0170, 0170], [0172, 0172], [0174, 0174], [0176, 0176],
560        [0178, 0179], [017b, 017b], [017d, 017d], [017f, 017f],
561        [0181, 0182], [0184, 0184], [0186, 0187], [0189, 018b],
562        [018e, 0191], [0193, 0194], [0196, 0198], [019c, 019d],
563        [019f, 01a0], [01a2, 01a2], [01a4, 01a4], [01a6, 01a7],
564        [01a9, 01a9], [01ac, 01ac], [01ae, 01af], [01b1, 01b3],
565        [01b5, 01b5], [01b7, 01b8], [01bc, 01bc], [01c4, 01cd],
566        [01cf, 01cf], [01d1, 01d1], [01d3, 01d3], [01d5, 01d5],
567        [01d7, 01d7], [01d9, 01d9], [01db, 01db], [01de, 01de],
568        [01e0, 01e0], [01e2, 01e2], [01e4, 01e4], [01e6, 01e6],
569        [01e8, 01e8], [01ea, 01ea], [01ec, 01ec], [01ee, 01ee],
570        [01f1, 01f4], [01f6, 01f8], [01fa, 01fa], [01fc, 01fc],
571        [01fe, 01fe], [0200, 0200], [0202, 0202], [0204, 0204],
572        [0206, 0206], [0208, 0208], [020a, 020a], [020c, 020c],
573        [020e, 020e], [0210, 0210], [0212, 0212], [0214, 0214],
574        [0216, 0216], [0218, 0218], [021a, 021a], [021c, 021c],
575        [021e, 021e], [0220, 0220], [0222, 0222], [0224, 0224],
576        [0226, 0226], [0228, 0228], [022a, 022a], [022c, 022c],
577        [022e, 022e], [0230, 0230], [0232, 0232], [023a, 023b],
578        [023d, 023e], [0241, 0241], [0243, 0246], [0248, 0248],
579        [024a, 024a], [024c, 024c], [024e, 024e], [02b0, 02b8],
580        [02d8, 02dd], [02e0, 02e4], [0340, 0341], [0343, 0345],
581        [034f, 034f], [0370, 0370], [0372, 0372], [0374, 0374],
582        [0376, 0376], [037a, 037a], [037e, 037f], [0384, 038a],
583        [038c, 038c], [038e, 038f], [0391, 03a1], [03a3, 03ab],
584        [03c2, 03c2], [03cf, 03d6], [03d8, 03d8], [03da, 03da],
585        [03dc, 03dc], [03de, 03de], [03e0, 03e0], [03e2, 03e2],
586        [03e4, 03e4], [03e6, 03e6], [03e8, 03e8], [03ea, 03ea],
587        [03ec, 03ec], [03ee, 03ee], [03f0, 03f2], [03f4, 03f5],
588        [03f7, 03f7], [03f9, 03fa], [03fd, 042f], [0460, 0460],
589        [0462, 0462], [0464, 0464], [0466, 0466], [0468, 0468],
590        [046a, 046a], [046c, 046c], [046e, 046e], [0470, 0470],
591        [0472, 0472], [0474, 0474], [0476, 0476], [0478, 0478],
592        [047a, 047a], [047c, 047c], [047e, 047e], [0480, 0480],
593        [048a, 048a], [048c, 048c], [048e, 048e], [0490, 0490],
594        [0492, 0492], [0494, 0494], [0496, 0496], [0498, 0498],
595        [049a, 049a], [049c, 049c], [049e, 049e], [04a0, 04a0],
596        [04a2, 04a2], [04a4, 04a4], [04a6, 04a6], [04a8, 04a8],
597        [04aa, 04aa], [04ac, 04ac], [04ae, 04ae], [04b0, 04b0],
598        [04b2, 04b2], [04b4, 04b4], [04b6, 04b6], [04b8, 04b8],
599        [04ba, 04ba], [04bc, 04bc], [04be, 04be], [04c0, 04c1],
600        [04c3, 04c3], [04c5, 04c5], [04c7, 04c7], [04c9, 04c9],
601        [04cb, 04cb], [04cd, 04cd], [04d0, 04d0], [04d2, 04d2],
602        [04d4, 04d4], [04d6, 04d6], [04d8, 04d8], [04da, 04da],
603        [04dc, 04dc], [04de, 04de], [04e0, 04e0], [04e2, 04e2],
604        [04e4, 04e4], [04e6, 04e6], [04e8, 04e8], [04ea, 04ea],
605        [04ec, 04ec], [04ee, 04ee], [04f0, 04f0], [04f2, 04f2],
606        [04f4, 04f4], [04f6, 04f6], [04f8, 04f8], [04fa, 04fa],
607        [04fc, 04fc], [04fe, 04fe], [0500, 0500], [0502, 0502],
608        [0504, 0504], [0506, 0506], [0508, 0508], [050a, 050a],
609        [050c, 050c], [050e, 050e], [0510, 0510], [0512, 0512],
610        [0514, 0514], [0516, 0516], [0518, 0518], [051a, 051a],
611        [051c, 051c], [051e, 051e], [0520, 0520], [0522, 0522],
612        [0524, 0524], [0526, 0526], [0528, 0528], [052a, 052a],
613        [052c, 052c], [052e, 052e], [0531, 0556], [0587, 0587],
614        [061c, 061c], [0675, 0678], [0958, 095f], [09dc, 09dd],
615        [09df, 09df], [0a33, 0a33], [0a36, 0a36], [0a59, 0a5b],
616        [0a5e, 0a5e], [0b5c, 0b5d], [0e33, 0e33], [0eb3, 0eb3],
617        [0edc, 0edd], [0f0c, 0f0c], [0f43, 0f43], [0f4d, 0f4d],
618        [0f52, 0f52], [0f57, 0f57], [0f5c, 0f5c], [0f69, 0f69],
619        [0f73, 0f73], [0f75, 0f79], [0f81, 0f81], [0f93, 0f93],
620        [0f9d, 0f9d], [0fa2, 0fa2], [0fa7, 0fa7], [0fac, 0fac],
621        [0fb9, 0fb9], [10a0, 10c5], [10c7, 10c7], [10cd, 10cd],
622        [10fc, 10fc], [115f, 1160], [13f8, 13fd], [17b4, 17b5],
623        [180b, 180e], [1c80, 1c88], [1d2c, 1d2e], [1d30, 1d3a],
624        [1d3c, 1d4d], [1d4f, 1d6a], [1d78, 1d78], [1d9b, 1dbf],
625        [1e00, 1e00], [1e02, 1e02], [1e04, 1e04], [1e06, 1e06],
626        [1e08, 1e08], [1e0a, 1e0a], [1e0c, 1e0c], [1e0e, 1e0e],
627        [1e10, 1e10], [1e12, 1e12], [1e14, 1e14], [1e16, 1e16],
628        [1e18, 1e18], [1e1a, 1e1a], [1e1c, 1e1c], [1e1e, 1e1e],
629        [1e20, 1e20], [1e22, 1e22], [1e24, 1e24], [1e26, 1e26],
630        [1e28, 1e28], [1e2a, 1e2a], [1e2c, 1e2c], [1e2e, 1e2e],
631        [1e30, 1e30], [1e32, 1e32], [1e34, 1e34], [1e36, 1e36],
632        [1e38, 1e38], [1e3a, 1e3a], [1e3c, 1e3c], [1e3e, 1e3e],
633        [1e40, 1e40], [1e42, 1e42], [1e44, 1e44], [1e46, 1e46],
634        [1e48, 1e48], [1e4a, 1e4a], [1e4c, 1e4c], [1e4e, 1e4e],
635        [1e50, 1e50], [1e52, 1e52], [1e54, 1e54], [1e56, 1e56],
636        [1e58, 1e58], [1e5a, 1e5a], [1e5c, 1e5c], [1e5e, 1e5e],
637        [1e60, 1e60], [1e62, 1e62], [1e64, 1e64], [1e66, 1e66],
638        [1e68, 1e68], [1e6a, 1e6a], [1e6c, 1e6c], [1e6e, 1e6e],
639        [1e70, 1e70], [1e72, 1e72], [1e74, 1e74], [1e76, 1e76],
640        [1e78, 1e78], [1e7a, 1e7a], [1e7c, 1e7c], [1e7e, 1e7e],
641        [1e80, 1e80], [1e82, 1e82], [1e84, 1e84], [1e86, 1e86],
642        [1e88, 1e88], [1e8a, 1e8a], [1e8c, 1e8c], [1e8e, 1e8e],
643        [1e90, 1e90], [1e92, 1e92], [1e94, 1e94], [1e9a, 1e9b],
644        [1e9e, 1e9e], [1ea0, 1ea0], [1ea2, 1ea2], [1ea4, 1ea4],
645        [1ea6, 1ea6], [1ea8, 1ea8], [1eaa, 1eaa], [1eac, 1eac],
646        [1eae, 1eae], [1eb0, 1eb0], [1eb2, 1eb2], [1eb4, 1eb4],
647        [1eb6, 1eb6], [1eb8, 1eb8], [1eba, 1eba], [1ebc, 1ebc],
648        [1ebe, 1ebe], [1ec0, 1ec0], [1ec2, 1ec2], [1ec4, 1ec4],
649        [1ec6, 1ec6], [1ec8, 1ec8], [1eca, 1eca], [1ecc, 1ecc],
650        [1ece, 1ece], [1ed0, 1ed0], [1ed2, 1ed2], [1ed4, 1ed4],
651        [1ed6, 1ed6], [1ed8, 1ed8], [1eda, 1eda], [1edc, 1edc],
652        [1ede, 1ede], [1ee0, 1ee0], [1ee2, 1ee2], [1ee4, 1ee4],
653        [1ee6, 1ee6], [1ee8, 1ee8], [1eea, 1eea], [1eec, 1eec],
654        [1eee, 1eee], [1ef0, 1ef0], [1ef2, 1ef2], [1ef4, 1ef4],
655        [1ef6, 1ef6], [1ef8, 1ef8], [1efa, 1efa], [1efc, 1efc],
656        [1efe, 1efe], [1f08, 1f0f], [1f18, 1f1d], [1f28, 1f2f],
657        [1f38, 1f3f], [1f48, 1f4d], [1f59, 1f59], [1f5b, 1f5b],
658        [1f5d, 1f5d], [1f5f, 1f5f], [1f68, 1f6f], [1f71, 1f71],
659        [1f73, 1f73], [1f75, 1f75], [1f77, 1f77], [1f79, 1f79],
660        [1f7b, 1f7b], [1f7d, 1f7d], [1f80, 1faf], [1fb2, 1fb4],
661        [1fb7, 1fc4], [1fc7, 1fcf], [1fd3, 1fd3], [1fd8, 1fdb],
662        [1fdd, 1fdf], [1fe3, 1fe3], [1fe8, 1fef], [1ff2, 1ff4],
663        [1ff7, 1ffe], [2000, 200f], [2011, 2011], [2017, 2017],
664        [2024, 2026], [202a, 202f], [2033, 2034], [2036, 2037],
665        [203c, 203c], [203e, 203e], [2047, 2049], [2057, 2057],
666        [205f, 2071], [2074, 208e], [2090, 209c], [20a8, 20a8],
667        [2100, 2103], [2105, 2107], [2109, 2113], [2115, 2116],
668        [2119, 211d], [2120, 2122], [2124, 2124], [2126, 2126],
669        [2128, 2128], [212a, 212d], [212f, 2139], [213b, 2140],
670        [2145, 2149], [2150, 217f], [2183, 2183], [2189, 2189],
671        [222c, 222d], [222f, 2230], [2329, 232a], [2460, 24ea],
672        [2a0c, 2a0c], [2a74, 2a76], [2adc, 2adc], [2c00, 2c2e],
673        [2c60, 2c60], [2c62, 2c64], [2c67, 2c67], [2c69, 2c69],
674        [2c6b, 2c6b], [2c6d, 2c70], [2c72, 2c72], [2c75, 2c75],
675        [2c7c, 2c80], [2c82, 2c82], [2c84, 2c84], [2c86, 2c86],
676        [2c88, 2c88], [2c8a, 2c8a], [2c8c, 2c8c], [2c8e, 2c8e],
677        [2c90, 2c90], [2c92, 2c92], [2c94, 2c94], [2c96, 2c96],
678        [2c98, 2c98], [2c9a, 2c9a], [2c9c, 2c9c], [2c9e, 2c9e],
679        [2ca0, 2ca0], [2ca2, 2ca2], [2ca4, 2ca4], [2ca6, 2ca6],
680        [2ca8, 2ca8], [2caa, 2caa], [2cac, 2cac], [2cae, 2cae],
681        [2cb0, 2cb0], [2cb2, 2cb2], [2cb4, 2cb4], [2cb6, 2cb6],
682        [2cb8, 2cb8], [2cba, 2cba], [2cbc, 2cbc], [2cbe, 2cbe],
683        [2cc0, 2cc0], [2cc2, 2cc2], [2cc4, 2cc4], [2cc6, 2cc6],
684        [2cc8, 2cc8], [2cca, 2cca], [2ccc, 2ccc], [2cce, 2cce],
685        [2cd0, 2cd0], [2cd2, 2cd2], [2cd4, 2cd4], [2cd6, 2cd6],
686        [2cd8, 2cd8], [2cda, 2cda], [2cdc, 2cdc], [2cde, 2cde],
687        [2ce0, 2ce0], [2ce2, 2ce2], [2ceb, 2ceb], [2ced, 2ced],
688        [2cf2, 2cf2], [2d6f, 2d6f], [2e9f, 2e9f], [2ef3, 2ef3],
689        [2f00, 2fd5], [3000, 3000], [3036, 3036], [3038, 303a],
690        [309b, 309c], [309f, 309f], [30ff, 30ff], [3131, 318e],
691        [3192, 319f], [3200, 321e], [3220, 3247], [3250, 327e],
692        [3280, 32fe], [3300, 33ff], [a640, a640], [a642, a642],
693        [a644, a644], [a646, a646], [a648, a648], [a64a, a64a],
694        [a64c, a64c], [a64e, a64e], [a650, a650], [a652, a652],
695        [a654, a654], [a656, a656], [a658, a658], [a65a, a65a],
696        [a65c, a65c], [a65e, a65e], [a660, a660], [a662, a662],
697        [a664, a664], [a666, a666], [a668, a668], [a66a, a66a],
698        [a66c, a66c], [a680, a680], [a682, a682], [a684, a684],
699        [a686, a686], [a688, a688], [a68a, a68a], [a68c, a68c],
700        [a68e, a68e], [a690, a690], [a692, a692], [a694, a694],
701        [a696, a696], [a698, a698], [a69a, a69a], [a69c, a69d],
702        [a722, a722], [a724, a724], [a726, a726], [a728, a728],
703        [a72a, a72a], [a72c, a72c], [a72e, a72e], [a732, a732],
704        [a734, a734], [a736, a736], [a738, a738], [a73a, a73a],
705        [a73c, a73c], [a73e, a73e], [a740, a740], [a742, a742],
706        [a744, a744], [a746, a746], [a748, a748], [a74a, a74a],
707        [a74c, a74c], [a74e, a74e], [a750, a750], [a752, a752],
708        [a754, a754], [a756, a756], [a758, a758], [a75a, a75a],
709        [a75c, a75c], [a75e, a75e], [a760, a760], [a762, a762],
710        [a764, a764], [a766, a766], [a768, a768], [a76a, a76a],
711        [a76c, a76c], [a76e, a76e], [a770, a770], [a779, a779],
712        [a77b, a77b], [a77d, a77e], [a780, a780], [a782, a782],
713        [a784, a784], [a786, a786], [a78b, a78b], [a78d, a78d],
714        [a790, a790], [a792, a792], [a796, a796], [a798, a798],
715        [a79a, a79a], [a79c, a79c], [a79e, a79e], [a7a0, a7a0],
716        [a7a2, a7a2], [a7a4, a7a4], [a7a6, a7a6], [a7a8, a7a8],
717        [a7aa, a7ae], [a7b0, a7b4], [a7b6, a7b6], [a7f8, a7f9],
718        [ab5c, ab5f], [ab70, abbf], [f900, fa0d], [fa10, fa10],
719        [fa12, fa12], [fa15, fa1e], [fa20, fa20], [fa22, fa22],
720        [fa25, fa26], [fa2a, fa6d], [fa70, fad9], [fb00, fb06],
721        [fb13, fb17], [fb1d, fb1d], [fb1f, fb36], [fb38, fb3c],
722        [fb3e, fb3e], [fb40, fb41], [fb43, fb44], [fb46, fbb1],
723        [fbd3, fd3d], [fd50, fd8f], [fd92, fdc7], [fdf0, fdfc],
724        [fe00, fe19], [fe30, fe44], [fe47, fe52], [fe54, fe66],
725        [fe68, fe6b], [fe70, fe72], [fe74, fe74], [fe76, fefc],
726        [feff, feff], [ff01, ffbe], [ffc2, ffc7], [ffca, ffcf],
727        [ffd2, ffd7], [ffda, ffdc], [ffe0, ffe6], [ffe8, ffee],
728        [fff0, fff8], [10400, 10427], [104b0, 104d3], [10c80, 10cb2],
729        [118a0, 118bf], [1bca0, 1bca3], [1d15e, 1d164], [1d173, 1d17a],
730        [1d1bb, 1d1c0], [1d400, 1d454], [1d456, 1d49c], [1d49e, 1d49f],
731        [1d4a2, 1d4a2], [1d4a5, 1d4a6], [1d4a9, 1d4ac], [1d4ae, 1d4b9],
732        [1d4bb, 1d4bb], [1d4bd, 1d4c3], [1d4c5, 1d505], [1d507, 1d50a],
733        [1d50d, 1d514], [1d516, 1d51c], [1d51e, 1d539], [1d53b, 1d53e],
734        [1d540, 1d544], [1d546, 1d546], [1d54a, 1d550], [1d552, 1d6a5],
735        [1d6a8, 1d7cb], [1d7ce, 1d7ff], [1e900, 1e921], [1ee00, 1ee03],
736        [1ee05, 1ee1f], [1ee21, 1ee22], [1ee24, 1ee24], [1ee27, 1ee27],
737        [1ee29, 1ee32], [1ee34, 1ee37], [1ee39, 1ee39], [1ee3b, 1ee3b],
738        [1ee42, 1ee42], [1ee47, 1ee47], [1ee49, 1ee49], [1ee4b, 1ee4b],
739        [1ee4d, 1ee4f], [1ee51, 1ee52], [1ee54, 1ee54], [1ee57, 1ee57],
740        [1ee59, 1ee59], [1ee5b, 1ee5b], [1ee5d, 1ee5d], [1ee5f, 1ee5f],
741        [1ee61, 1ee62], [1ee64, 1ee64], [1ee67, 1ee6a], [1ee6c, 1ee72],
742        [1ee74, 1ee77], [1ee79, 1ee7c], [1ee7e, 1ee7e], [1ee80, 1ee89],
743        [1ee8b, 1ee9b], [1eea1, 1eea3], [1eea5, 1eea9], [1eeab, 1eebb],
744        [1f100, 1f10a], [1f110, 1f12e], [1f130, 1f14f], [1f16a, 1f16b],
745        [1f190, 1f190], [1f200, 1f202], [1f210, 1f23b], [1f240, 1f248],
746        [1f250, 1f251], [2f800, 2fa1d], [e0000, e0fff]**/
747        const UnicodeSet codepoint_set
748            {{{Empty, 2}, {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 1},
749              {Mixed, 11}, {Empty, 2}, {Mixed, 3}, {Empty, 2}, {Mixed, 6},
750              {Full, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 8}, {Empty, 1},
751              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2}, {Mixed, 1},
752              {Empty, 22}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2},
753              {Mixed, 2}, {Empty, 7}, {Mixed, 1}, {Empty, 22}, {Mixed, 1},
754              {Empty, 3}, {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
755              {Mixed, 4}, {Empty, 7}, {Full, 1}, {Mixed, 2}, {Empty, 2},
756              {Mixed, 2}, {Empty, 19}, {Mixed, 1}, {Empty, 29}, {Mixed, 1},
757              {Empty, 2}, {Mixed, 1}, {Empty, 35}, {Mixed, 1}, {Empty, 4},
758              {Mixed, 4}, {Full, 1}, {Empty, 2}, {Mixed, 12}, {Full, 1},
759              {Mixed, 9}, {Empty, 2}, {Mixed, 3}, {Full, 1}, {Mixed, 1},
760              {Empty, 4}, {Mixed, 1}, {Empty, 7}, {Mixed, 1}, {Empty, 9},
761              {Full, 4}, {Mixed, 1}, {Empty, 40}, {Mixed, 1}, {Empty, 2},
762              {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 9}, {Full, 1},
763              {Mixed, 1}, {Empty, 1}, {Mixed, 5}, {Empty, 3}, {Mixed, 1},
764              {Empty, 8}, {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Full, 6},
765              {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Empty, 2}, {Mixed, 1},
766              {Empty, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Full, 2},
767              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Full, 1}, {Mixed, 2},
768              {Full, 3}, {Mixed, 1}, {Full, 8}, {Empty, 914}, {Mixed, 3},
769              {Empty, 4}, {Mixed, 5}, {Empty, 1}, {Mixed, 1}, {Empty, 26},
770              {Mixed, 2}, {Full, 2}, {Empty, 618}, {Full, 8}, {Mixed, 2},
771              {Full, 1}, {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1},
772              {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Full, 10}, {Mixed, 2},
773              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 6}, {Full, 3},
774              {Mixed, 2}, {Full, 4}, {Mixed, 3}, {Empty, 32}, {Full, 1},
775              {Mixed, 1}, {Empty, 3}, {Mixed, 2}, {Empty, 61}, {Full, 1},
776              {Mixed, 1}, {Empty, 95}, {Full, 1}, {Empty, 1311}, {Mixed, 1},
777              {Empty, 164}, {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 17},
778              {Full, 2}, {Mixed, 1}, {Full, 1}, {Mixed, 3}, {Full, 1},
779              {Mixed, 3}, {Full, 10}, {Mixed, 1}, {Full, 8}, {Mixed, 1},
780              {Full, 1}, {Empty, 136}, {Full, 1}, {Mixed, 1}, {Empty, 38},
781              {Mixed, 6}, {Empty, 18}, {Mixed, 5}, {Empty, 3}, {Mixed, 3},
782              {Empty, 2093}, {Full, 16}, {Mixed, 1}, {Empty, 22575},
783              {Full, 128}, {Empty, 6016}},
784             {0x07fffffe, 0x773ca501, 0xff7fffff, 0x55555555, 0xaa5d5555,
785              0x555556ab, 0xab555555, 0xb1dbced6, 0x11aed2d5, 0x4aaabff0,
786              0x55de5555, 0x55555555, 0x6c055555, 0x0000557a, 0x01ff0000,
787              0x3f000000, 0x0000001f, 0x0000803b, 0xc4550000, 0xfffed7f0,
788              0x00000ffb, 0x557f8004, 0xe6b75555, 0x0000ffff, 0x55555555,
789              0x55555401, 0x55555555, 0x55552aab, 0x55555555, 0x55555555,
790              0xfffe5555, 0x007fffff, 0x00000080, 0x10000000, 0x01e00000,
791              0xff000000, 0xb0000000, 0x00480000, 0x4e000000, 0x30000000,
792              0x00080000, 0x00080000, 0x30000000, 0x00001000, 0x10842008,
793              0x03e80200, 0x20080002, 0x02001084, 0x000020bf, 0x10000000,
794              0x80000000, 0x00000001, 0x3f000000, 0x00300000, 0x00007800,
795              0x000001ff, 0xf7ff7000, 0xffffbfff, 0x010007ff, 0xf8000000,
796              0x55555555, 0x55555555, 0x55555555, 0x55555555, 0x4c155555,
797              0x55555555, 0x55555555, 0x55555555, 0x3f00ff00, 0xff00ff00,
798              0xaa003f00, 0x2aaaff00, 0xff9cffff, 0xef08ff9f, 0x7f9cff08,
799              0x0082ffff, 0x50d8fc70, 0x80800380, 0xfff3ffff, 0x1fff7fff,
800              0x00000100, 0x3e6ffeef, 0xfbffbd57, 0xffff03e1, 0x00000208,
801              0x0001b000, 0x00000600, 0x000007ff, 0x00001000, 0x00700000,
802              0x10000000, 0x00007fff, 0xf025ea9d, 0x55555555, 0x55555555,
803              0x55555555, 0x00042805, 0x00008000, 0x80000000, 0x00080000,
804              0x003fffff, 0x00000001, 0x07400000, 0x98000000, 0x80000000,
805              0xfffe0000, 0xfffc7fff, 0x7fffffff, 0xffff00ff, 0x7fffffff,
806              0x7fffffff, 0x55555555, 0x00001555, 0x35555555, 0x55545554,
807              0x55555555, 0x6a015555, 0x55452855, 0x005f7d55, 0x03000000,
808              0xf0000000, 0xffff0000, 0x7fe53fff, 0xfffffc65, 0xffff3fff,
809              0x03ffffff, 0xa0f8007f, 0x5f7fffff, 0xffffffdb, 0x0003ffff,
810              0xfff80000, 0x3fffffff, 0xffff0000, 0xfffcffff, 0x000000ff,
811              0x1fff0000, 0x03ffffff, 0xffff0000, 0xfff7ff9f, 0xffd70f7f,
812              0x9fffffff, 0xfffffffe, 0x7fffffff, 0x1cfcfcfc, 0x01ff7f7f,
813              0x000000ff, 0xffff0000, 0x000fffff, 0x0007ffff, 0x0000000f,
814              0xc0000000, 0x07f8001f, 0xf8000000, 0x00000001, 0xffdfffff,
815              0xdfffffff, 0xebffde64, 0xffffffef, 0xdfdfe7bf, 0x7bffffff,
816              0xfffdfc5f, 0xffffff3f, 0xffffcfff, 0x00000003, 0xffffffef,
817              0x0af7fe96, 0xaa96ea84, 0x5ef7f796, 0x0ffffbff, 0x0ffffbee,
818              0xffff07ff, 0xffff7fff, 0x0000ffff, 0x00000c00, 0x00010000,
819              0xffff0007, 0x0fffffff, 0x000301ff, 0x3fffffff}};
820        static BinaryPropertyObject property_object{NFKC_CF, codepoint_set};
821    }
822    namespace NFKC_QC_ns {
823        /** Code Point Ranges for NFKC_QC
824        [00a0, 00a0], [00a8, 00a8], [00aa, 00aa], [00af, 00af],
825        [00b2, 00b5], [00b8, 00ba], [00bc, 00be], [0132, 0133],
826        [013f, 0140], [0149, 0149], [017f, 017f], [01c4, 01cc],
827        [01f1, 01f3], [02b0, 02b8], [02d8, 02dd], [02e0, 02e4],
828        [0300, 0304], [0306, 030c], [030f, 030f], [0311, 0311],
829        [0313, 0314], [031b, 031b], [0323, 0328], [032d, 032e],
830        [0330, 0331], [0338, 0338], [0340, 0345], [0374, 0374],
831        [037a, 037a], [037e, 037e], [0384, 0385], [0387, 0387],
832        [03d0, 03d6], [03f0, 03f2], [03f4, 03f5], [03f9, 03f9],
833        [0587, 0587], [0653, 0655], [0675, 0678], [093c, 093c],
834        [0958, 095f], [09be, 09be], [09d7, 09d7], [09dc, 09dd],
835        [09df, 09df], [0a33, 0a33], [0a36, 0a36], [0a59, 0a5b],
836        [0a5e, 0a5e], [0b3e, 0b3e], [0b56, 0b57], [0b5c, 0b5d],
837        [0bbe, 0bbe], [0bd7, 0bd7], [0c56, 0c56], [0cc2, 0cc2],
838        [0cd5, 0cd6], [0d3e, 0d3e], [0d57, 0d57], [0dca, 0dca],
839        [0dcf, 0dcf], [0ddf, 0ddf], [0e33, 0e33], [0eb3, 0eb3],
840        [0edc, 0edd], [0f0c, 0f0c], [0f43, 0f43], [0f4d, 0f4d],
841        [0f52, 0f52], [0f57, 0f57], [0f5c, 0f5c], [0f69, 0f69],
842        [0f73, 0f73], [0f75, 0f79], [0f81, 0f81], [0f93, 0f93],
843        [0f9d, 0f9d], [0fa2, 0fa2], [0fa7, 0fa7], [0fac, 0fac],
844        [0fb9, 0fb9], [102e, 102e], [10fc, 10fc], [1161, 1175],
845        [11a8, 11c2], [1b35, 1b35], [1d2c, 1d2e], [1d30, 1d3a],
846        [1d3c, 1d4d], [1d4f, 1d6a], [1d78, 1d78], [1d9b, 1dbf],
847        [1e9a, 1e9b], [1f71, 1f71], [1f73, 1f73], [1f75, 1f75],
848        [1f77, 1f77], [1f79, 1f79], [1f7b, 1f7b], [1f7d, 1f7d],
849        [1fbb, 1fbb], [1fbd, 1fc1], [1fc9, 1fc9], [1fcb, 1fcb],
850        [1fcd, 1fcf], [1fd3, 1fd3], [1fdb, 1fdb], [1fdd, 1fdf],
851        [1fe3, 1fe3], [1feb, 1feb], [1fed, 1fef], [1ff9, 1ff9],
852        [1ffb, 1ffb], [1ffd, 1ffe], [2000, 200a], [2011, 2011],
853        [2017, 2017], [2024, 2026], [202f, 202f], [2033, 2034],
854        [2036, 2037], [203c, 203c], [203e, 203e], [2047, 2049],
855        [2057, 2057], [205f, 205f], [2070, 2071], [2074, 208e],
856        [2090, 209c], [20a8, 20a8], [2100, 2103], [2105, 2107],
857        [2109, 2113], [2115, 2116], [2119, 211d], [2120, 2122],
858        [2124, 2124], [2126, 2126], [2128, 2128], [212a, 212d],
859        [212f, 2131], [2133, 2139], [213b, 2140], [2145, 2149],
860        [2150, 217f], [2189, 2189], [222c, 222d], [222f, 2230],
861        [2329, 232a], [2460, 24ea], [2a0c, 2a0c], [2a74, 2a76],
862        [2adc, 2adc], [2c7c, 2c7d], [2d6f, 2d6f], [2e9f, 2e9f],
863        [2ef3, 2ef3], [2f00, 2fd5], [3000, 3000], [3036, 3036],
864        [3038, 303a], [3099, 309c], [309f, 309f], [30ff, 30ff],
865        [3131, 318e], [3192, 319f], [3200, 321e], [3220, 3247],
866        [3250, 327e], [3280, 32fe], [3300, 33ff], [a69c, a69d],
867        [a770, a770], [a7f8, a7f9], [ab5c, ab5f], [f900, fa0d],
868        [fa10, fa10], [fa12, fa12], [fa15, fa1e], [fa20, fa20],
869        [fa22, fa22], [fa25, fa26], [fa2a, fa6d], [fa70, fad9],
870        [fb00, fb06], [fb13, fb17], [fb1d, fb1d], [fb1f, fb36],
871        [fb38, fb3c], [fb3e, fb3e], [fb40, fb41], [fb43, fb44],
872        [fb46, fbb1], [fbd3, fd3d], [fd50, fd8f], [fd92, fdc7],
873        [fdf0, fdfc], [fe10, fe19], [fe30, fe44], [fe47, fe52],
874        [fe54, fe66], [fe68, fe6b], [fe70, fe72], [fe74, fe74],
875        [fe76, fefc], [ff01, ffbe], [ffc2, ffc7], [ffca, ffcf],
876        [ffd2, ffd7], [ffda, ffdc], [ffe0, ffe6], [ffe8, ffee],
877        [110ba, 110ba], [11127, 11127], [1133e, 1133e], [11357, 11357],
878        [114b0, 114b0], [114ba, 114ba], [114bd, 114bd], [115af, 115af],
879        [1d15e, 1d164], [1d1bb, 1d1c0], [1d400, 1d454], [1d456, 1d49c],
880        [1d49e, 1d49f], [1d4a2, 1d4a2], [1d4a5, 1d4a6], [1d4a9, 1d4ac],
881        [1d4ae, 1d4b9], [1d4bb, 1d4bb], [1d4bd, 1d4c3], [1d4c5, 1d505],
882        [1d507, 1d50a], [1d50d, 1d514], [1d516, 1d51c], [1d51e, 1d539],
883        [1d53b, 1d53e], [1d540, 1d544], [1d546, 1d546], [1d54a, 1d550],
884        [1d552, 1d6a5], [1d6a8, 1d7cb], [1d7ce, 1d7ff], [1ee00, 1ee03],
885        [1ee05, 1ee1f], [1ee21, 1ee22], [1ee24, 1ee24], [1ee27, 1ee27],
886        [1ee29, 1ee32], [1ee34, 1ee37], [1ee39, 1ee39], [1ee3b, 1ee3b],
887        [1ee42, 1ee42], [1ee47, 1ee47], [1ee49, 1ee49], [1ee4b, 1ee4b],
888        [1ee4d, 1ee4f], [1ee51, 1ee52], [1ee54, 1ee54], [1ee57, 1ee57],
889        [1ee59, 1ee59], [1ee5b, 1ee5b], [1ee5d, 1ee5d], [1ee5f, 1ee5f],
890        [1ee61, 1ee62], [1ee64, 1ee64], [1ee67, 1ee6a], [1ee6c, 1ee72],
891        [1ee74, 1ee77], [1ee79, 1ee7c], [1ee7e, 1ee7e], [1ee80, 1ee89],
892        [1ee8b, 1ee9b], [1eea1, 1eea3], [1eea5, 1eea9], [1eeab, 1eebb],
893        [1f100, 1f10a], [1f110, 1f12e], [1f130, 1f14f], [1f16a, 1f16b],
894        [1f190, 1f190], [1f200, 1f202], [1f210, 1f23b], [1f240, 1f248],
895        [1f250, 1f251], [2f800, 2fa1d]**/
896        const UnicodeSet codepoint_set
897            {{{Empty, 5}, {Mixed, 1}, {Empty, 3}, {Mixed, 3}, {Empty, 2},
898              {Mixed, 2}, {Empty, 5}, {Mixed, 8}, {Empty, 1}, {Mixed, 2},
899              {Empty, 12}, {Mixed, 1}, {Empty, 5}, {Mixed, 2}, {Empty, 21},
900              {Mixed, 2}, {Empty, 2}, {Mixed, 2}, {Empty, 2}, {Mixed, 2},
901              {Empty, 6}, {Mixed, 2}, {Empty, 2}, {Mixed, 2}, {Empty, 3},
902              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2}, {Mixed, 2},
903              {Empty, 3}, {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 3},
904              {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 4},
905              {Empty, 3}, {Mixed, 1}, {Empty, 5}, {Mixed, 1}, {Empty, 3},
906              {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Empty, 74}, {Mixed, 1},
907              {Empty, 15}, {Mixed, 4}, {Full, 1}, {Empty, 6}, {Mixed, 1},
908              {Empty, 6}, {Mixed, 1}, {Empty, 1}, {Mixed, 9}, {Empty, 2},
909              {Mixed, 3}, {Full, 1}, {Mixed, 1}, {Empty, 4}, {Mixed, 1},
910              {Empty, 7}, {Mixed, 1}, {Empty, 9}, {Full, 4}, {Mixed, 1},
911              {Empty, 40}, {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 2},
912              {Mixed, 1}, {Empty, 12}, {Mixed, 1}, {Empty, 7}, {Mixed, 1},
913              {Empty, 8}, {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Full, 6},
914              {Mixed, 1}, {Empty, 1}, {Mixed, 2}, {Empty, 2}, {Mixed, 1},
915              {Empty, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Full, 2},
916              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Full, 1}, {Mixed, 2},
917              {Full, 3}, {Mixed, 1}, {Full, 8}, {Empty, 916}, {Mixed, 1},
918              {Empty, 6}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 26},
919              {Mixed, 1}, {Empty, 621}, {Full, 8}, {Mixed, 2}, {Full, 1},
920              {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1}, {Mixed, 3},
921              {Full, 2}, {Mixed, 2}, {Full, 10}, {Mixed, 2}, {Full, 1},
922              {Mixed, 1}, {Full, 1}, {Mixed, 6}, {Full, 3}, {Mixed, 2},
923              {Full, 4}, {Mixed, 3}, {Empty, 133}, {Mixed, 1}, {Empty, 3},
924              {Mixed, 1}, {Empty, 15}, {Mixed, 2}, {Empty, 10}, {Mixed, 1},
925              {Empty, 7}, {Mixed, 1}, {Empty, 1500}, {Mixed, 2}, {Empty, 1},
926              {Mixed, 2}, {Empty, 17}, {Full, 2}, {Mixed, 1}, {Full, 1},
927              {Mixed, 3}, {Full, 1}, {Mixed, 3}, {Full, 10}, {Mixed, 1},
928              {Full, 8}, {Mixed, 1}, {Full, 1}, {Empty, 176}, {Mixed, 6},
929              {Empty, 18}, {Mixed, 5}, {Empty, 3}, {Mixed, 3},
930              {Empty, 2093}, {Full, 16}, {Mixed, 1}, {Empty, 28719}},
931             {0x773c8501, 0x800c0000, 0x00000201, 0x80000000, 0x00001ff0,
932              0x000e0000, 0x01ff0000, 0x3f000000, 0x0000001f, 0x081a9fdf,
933              0x010361f8, 0x0000003f, 0x44100000, 0x000000b0, 0x007f0000,
934              0x02370000, 0x00000080, 0x00380000, 0x01e00000, 0x10000000,
935              0xff000000, 0x40000000, 0xb0800000, 0x00480000, 0x4e000000,
936              0x40000000, 0x30c00000, 0x40000000, 0x00800000, 0x00400000,
937              0x00600004, 0x40000000, 0x00800000, 0x80008400, 0x00080000,
938              0x00080000, 0x30000000, 0x00001000, 0x10842008, 0x03e80200,
939              0x20080002, 0x02001084, 0x00004000, 0x10000000, 0x003ffffe,
940              0xffffff00, 0x00000007, 0x00200000, 0xf7ff7000, 0xffffbfff,
941              0x010007ff, 0xf8000000, 0x0c000000, 0x2aaa0000, 0xe8000000,
942              0xe808ea03, 0x6a00e808, 0x008207ff, 0x50d88070, 0x80800380,
943              0xfff30000, 0x1fff7fff, 0x00000100, 0x3e6ffeef, 0xfbfbbd57,
944              0xffff03e1, 0x00000200, 0x0001b000, 0x00000600, 0x000007ff,
945              0x00001000, 0x00700000, 0x10000000, 0x30000000, 0x00008000,
946              0x80000000, 0x00080000, 0x003fffff, 0x00000001, 0x07400000,
947              0x9e000000, 0x80000000, 0xfffe0000, 0xfffc7fff, 0x7fffffff,
948              0xffff00ff, 0x7fffffff, 0x7fffffff, 0x30000000, 0x00010000,
949              0x03000000, 0xf0000000, 0x7fe53fff, 0xfffffc65, 0xffff3fff,
950              0x03ffffff, 0xa0f8007f, 0x5f7fffff, 0xffffffdb, 0x0003ffff,
951              0xfff80000, 0x3fffffff, 0xffff0000, 0xfffcffff, 0x000000ff,
952              0x1fff0000, 0x03ff0000, 0xffff0000, 0xfff7ff9f, 0xffd70f7f,
953              0x1fffffff, 0xfffffffe, 0x7fffffff, 0x1cfcfcfc, 0x00007f7f,
954              0x04000000, 0x00000080, 0x40000000, 0x00800000, 0x24010000,
955              0x00008000, 0xc0000000, 0x0000001f, 0xf8000000, 0x00000001,
956              0xffdfffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xdfdfe7bf,
957              0x7bffffff, 0xfffdfc5f, 0xffffff3f, 0xffffcfff, 0xffffffef,
958              0x0af7fe96, 0xaa96ea84, 0x5ef7f796, 0x0ffffbff, 0x0ffffbee,
959              0xffff07ff, 0xffff7fff, 0x0000ffff, 0x00000c00, 0x00010000,
960              0xffff0007, 0x0fffffff, 0x000301ff, 0x3fffffff}};
961        static BinaryPropertyObject property_object{NFKC_QC, codepoint_set};
962    }
963    namespace NFKD_QC_ns {
964        /** Code Point Ranges for NFKD_QC
965        [00a0, 00a0], [00a8, 00a8], [00aa, 00aa], [00af, 00af],
966        [00b2, 00b5], [00b8, 00ba], [00bc, 00be], [00c0, 00c5],
967        [00c7, 00cf], [00d1, 00d6], [00d9, 00dd], [00e0, 00e5],
968        [00e7, 00ef], [00f1, 00f6], [00f9, 00fd], [00ff, 010f],
969        [0112, 0125], [0128, 0130], [0132, 0137], [0139, 0140],
970        [0143, 0149], [014c, 0151], [0154, 0165], [0168, 017f],
971        [01a0, 01a1], [01af, 01b0], [01c4, 01dc], [01de, 01e3],
972        [01e6, 01f5], [01f8, 021b], [021e, 021f], [0226, 0233],
973        [02b0, 02b8], [02d8, 02dd], [02e0, 02e4], [0340, 0341],
974        [0343, 0344], [0374, 0374], [037a, 037a], [037e, 037e],
975        [0384, 038a], [038c, 038c], [038e, 0390], [03aa, 03b0],
976        [03ca, 03ce], [03d0, 03d6], [03f0, 03f2], [03f4, 03f5],
977        [03f9, 03f9], [0400, 0401], [0403, 0403], [0407, 0407],
978        [040c, 040e], [0419, 0419], [0439, 0439], [0450, 0451],
979        [0453, 0453], [0457, 0457], [045c, 045e], [0476, 0477],
980        [04c1, 04c2], [04d0, 04d3], [04d6, 04d7], [04da, 04df],
981        [04e2, 04e7], [04ea, 04f5], [04f8, 04f9], [0587, 0587],
982        [0622, 0626], [0675, 0678], [06c0, 06c0], [06c2, 06c2],
983        [06d3, 06d3], [0929, 0929], [0931, 0931], [0934, 0934],
984        [0958, 095f], [09cb, 09cc], [09dc, 09dd], [09df, 09df],
985        [0a33, 0a33], [0a36, 0a36], [0a59, 0a5b], [0a5e, 0a5e],
986        [0b48, 0b48], [0b4b, 0b4c], [0b5c, 0b5d], [0b94, 0b94],
987        [0bca, 0bcc], [0c48, 0c48], [0cc0, 0cc0], [0cc7, 0cc8],
988        [0cca, 0ccb], [0d4a, 0d4c], [0dda, 0dda], [0ddc, 0dde],
989        [0e33, 0e33], [0eb3, 0eb3], [0edc, 0edd], [0f0c, 0f0c],
990        [0f43, 0f43], [0f4d, 0f4d], [0f52, 0f52], [0f57, 0f57],
991        [0f5c, 0f5c], [0f69, 0f69], [0f73, 0f73], [0f75, 0f79],
992        [0f81, 0f81], [0f93, 0f93], [0f9d, 0f9d], [0fa2, 0fa2],
993        [0fa7, 0fa7], [0fac, 0fac], [0fb9, 0fb9], [1026, 1026],
994        [10fc, 10fc], [1b06, 1b06], [1b08, 1b08], [1b0a, 1b0a],
995        [1b0c, 1b0c], [1b0e, 1b0e], [1b12, 1b12], [1b3b, 1b3b],
996        [1b3d, 1b3d], [1b40, 1b41], [1b43, 1b43], [1d2c, 1d2e],
997        [1d30, 1d3a], [1d3c, 1d4d], [1d4f, 1d6a], [1d78, 1d78],
998        [1d9b, 1dbf], [1e00, 1e9b], [1ea0, 1ef9], [1f00, 1f15],
999        [1f18, 1f1d], [1f20, 1f45], [1f48, 1f4d], [1f50, 1f57],
1000        [1f59, 1f59], [1f5b, 1f5b], [1f5d, 1f5d], [1f5f, 1f7d],
1001        [1f80, 1fb4], [1fb6, 1fc4], [1fc6, 1fd3], [1fd6, 1fdb],
1002        [1fdd, 1fef], [1ff2, 1ff4], [1ff6, 1ffe], [2000, 200a],
1003        [2011, 2011], [2017, 2017], [2024, 2026], [202f, 202f],
1004        [2033, 2034], [2036, 2037], [203c, 203c], [203e, 203e],
1005        [2047, 2049], [2057, 2057], [205f, 205f], [2070, 2071],
1006        [2074, 208e], [2090, 209c], [20a8, 20a8], [2100, 2103],
1007        [2105, 2107], [2109, 2113], [2115, 2116], [2119, 211d],
1008        [2120, 2122], [2124, 2124], [2126, 2126], [2128, 2128],
1009        [212a, 212d], [212f, 2131], [2133, 2139], [213b, 2140],
1010        [2145, 2149], [2150, 217f], [2189, 2189], [219a, 219b],
1011        [21ae, 21ae], [21cd, 21cf], [2204, 2204], [2209, 2209],
1012        [220c, 220c], [2224, 2224], [2226, 2226], [222c, 222d],
1013        [222f, 2230], [2241, 2241], [2244, 2244], [2247, 2247],
1014        [2249, 2249], [2260, 2260], [2262, 2262], [226d, 2271],
1015        [2274, 2275], [2278, 2279], [2280, 2281], [2284, 2285],
1016        [2288, 2289], [22ac, 22af], [22e0, 22e3], [22ea, 22ed],
1017        [2329, 232a], [2460, 24ea], [2a0c, 2a0c], [2a74, 2a76],
1018        [2adc, 2adc], [2c7c, 2c7d], [2d6f, 2d6f], [2e9f, 2e9f],
1019        [2ef3, 2ef3], [2f00, 2fd5], [3000, 3000], [3036, 3036],
1020        [3038, 303a], [304c, 304c], [304e, 304e], [3050, 3050],
1021        [3052, 3052], [3054, 3054], [3056, 3056], [3058, 3058],
1022        [305a, 305a], [305c, 305c], [305e, 305e], [3060, 3060],
1023        [3062, 3062], [3065, 3065], [3067, 3067], [3069, 3069],
1024        [3070, 3071], [3073, 3074], [3076, 3077], [3079, 307a],
1025        [307c, 307d], [3094, 3094], [309b, 309c], [309e, 309f],
1026        [30ac, 30ac], [30ae, 30ae], [30b0, 30b0], [30b2, 30b2],
1027        [30b4, 30b4], [30b6, 30b6], [30b8, 30b8], [30ba, 30ba],
1028        [30bc, 30bc], [30be, 30be], [30c0, 30c0], [30c2, 30c2],
1029        [30c5, 30c5], [30c7, 30c7], [30c9, 30c9], [30d0, 30d1],
1030        [30d3, 30d4], [30d6, 30d7], [30d9, 30da], [30dc, 30dd],
1031        [30f4, 30f4], [30f7, 30fa], [30fe, 30ff], [3131, 318e],
1032        [3192, 319f], [3200, 321e], [3220, 3247], [3250, 327e],
1033        [3280, 32fe], [3300, 33ff], [a69c, a69d], [a770, a770],
1034        [a7f8, a7f9], [ab5c, ab5f], [ac00, d7a3], [f900, fa0d],
1035        [fa10, fa10], [fa12, fa12], [fa15, fa1e], [fa20, fa20],
1036        [fa22, fa22], [fa25, fa26], [fa2a, fa6d], [fa70, fad9],
1037        [fb00, fb06], [fb13, fb17], [fb1d, fb1d], [fb1f, fb36],
1038        [fb38, fb3c], [fb3e, fb3e], [fb40, fb41], [fb43, fb44],
1039        [fb46, fbb1], [fbd3, fd3d], [fd50, fd8f], [fd92, fdc7],
1040        [fdf0, fdfc], [fe10, fe19], [fe30, fe44], [fe47, fe52],
1041        [fe54, fe66], [fe68, fe6b], [fe70, fe72], [fe74, fe74],
1042        [fe76, fefc], [ff01, ffbe], [ffc2, ffc7], [ffca, ffcf],
1043        [ffd2, ffd7], [ffda, ffdc], [ffe0, ffe6], [ffe8, ffee],
1044        [1109a, 1109a], [1109c, 1109c], [110ab, 110ab], [1112e, 1112f],
1045        [1134b, 1134c], [114bb, 114bc], [114be, 114be], [115ba, 115bb],
1046        [1d15e, 1d164], [1d1bb, 1d1c0], [1d400, 1d454], [1d456, 1d49c],
1047        [1d49e, 1d49f], [1d4a2, 1d4a2], [1d4a5, 1d4a6], [1d4a9, 1d4ac],
1048        [1d4ae, 1d4b9], [1d4bb, 1d4bb], [1d4bd, 1d4c3], [1d4c5, 1d505],
1049        [1d507, 1d50a], [1d50d, 1d514], [1d516, 1d51c], [1d51e, 1d539],
1050        [1d53b, 1d53e], [1d540, 1d544], [1d546, 1d546], [1d54a, 1d550],
1051        [1d552, 1d6a5], [1d6a8, 1d7cb], [1d7ce, 1d7ff], [1ee00, 1ee03],
1052        [1ee05, 1ee1f], [1ee21, 1ee22], [1ee24, 1ee24], [1ee27, 1ee27],
1053        [1ee29, 1ee32], [1ee34, 1ee37], [1ee39, 1ee39], [1ee3b, 1ee3b],
1054        [1ee42, 1ee42], [1ee47, 1ee47], [1ee49, 1ee49], [1ee4b, 1ee4b],
1055        [1ee4d, 1ee4f], [1ee51, 1ee52], [1ee54, 1ee54], [1ee57, 1ee57],
1056        [1ee59, 1ee59], [1ee5b, 1ee5b], [1ee5d, 1ee5d], [1ee5f, 1ee5f],
1057        [1ee61, 1ee62], [1ee64, 1ee64], [1ee67, 1ee6a], [1ee6c, 1ee72],
1058        [1ee74, 1ee77], [1ee79, 1ee7c], [1ee7e, 1ee7e], [1ee80, 1ee89],
1059        [1ee8b, 1ee9b], [1eea1, 1eea3], [1eea5, 1eea9], [1eeab, 1eebb],
1060        [1f100, 1f10a], [1f110, 1f12e], [1f130, 1f14f], [1f16a, 1f16b],
1061        [1f190, 1f190], [1f200, 1f202], [1f210, 1f23b], [1f240, 1f248],
1062        [1f250, 1f251], [2f800, 2fa1d]**/
1063        const UnicodeSet codepoint_set
1064            {{{Empty, 5}, {Mixed, 7}, {Empty, 1}, {Mixed, 5}, {Empty, 3},
1065              {Mixed, 3}, {Empty, 2}, {Mixed, 10}, {Empty, 2}, {Mixed, 2},
1066              {Empty, 4}, {Mixed, 1}, {Empty, 4}, {Mixed, 1}, {Empty, 1},
1067              {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 18}, {Mixed, 2},
1068              {Empty, 3}, {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 7},
1069              {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
1070              {Empty, 3}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3},
1071              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2}, {Mixed, 1},
1072              {Empty, 3}, {Mixed, 2}, {Empty, 1}, {Mixed, 1}, {Empty, 1},
1073              {Mixed, 4}, {Empty, 3}, {Mixed, 1}, {Empty, 5}, {Mixed, 1},
1074              {Empty, 80}, {Mixed, 3}, {Empty, 14}, {Mixed, 4}, {Full, 1},
1075              {Empty, 2}, {Full, 4}, {Mixed, 1}, {Full, 2}, {Mixed, 2},
1076              {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 9}, {Empty, 2},
1077              {Mixed, 3}, {Full, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 6},
1078              {Empty, 1}, {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 9},
1079              {Full, 4}, {Mixed, 1}, {Empty, 40}, {Mixed, 1}, {Empty, 2},
1080              {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 12}, {Mixed, 1},
1081              {Empty, 7}, {Mixed, 1}, {Empty, 8}, {Mixed, 1}, {Empty, 2},
1082              {Mixed, 1}, {Full, 6}, {Mixed, 1}, {Empty, 1}, {Mixed, 8},
1083              {Empty, 1}, {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 3},
1084              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Full, 3}, {Mixed, 1},
1085              {Full, 8}, {Empty, 916}, {Mixed, 1}, {Empty, 6}, {Mixed, 1},
1086              {Empty, 3}, {Mixed, 1}, {Empty, 26}, {Mixed, 1}, {Empty, 5},
1087              {Full, 349}, {Mixed, 1}, {Empty, 266}, {Full, 8}, {Mixed, 2},
1088              {Full, 1}, {Mixed, 1}, {Full, 2}, {Mixed, 1}, {Empty, 1},
1089              {Mixed, 3}, {Full, 2}, {Mixed, 2}, {Full, 10}, {Mixed, 2},
1090              {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 6}, {Full, 3},
1091              {Mixed, 2}, {Full, 4}, {Mixed, 3}, {Empty, 132}, {Mixed, 2},
1092              {Empty, 3}, {Mixed, 1}, {Empty, 16}, {Mixed, 1}, {Empty, 10},
1093              {Mixed, 1}, {Empty, 7}, {Mixed, 1}, {Empty, 1500}, {Mixed, 2},
1094              {Empty, 1}, {Mixed, 2}, {Empty, 17}, {Full, 2}, {Mixed, 1},
1095              {Full, 1}, {Mixed, 3}, {Full, 1}, {Mixed, 3}, {Full, 10},
1096              {Mixed, 1}, {Full, 8}, {Mixed, 1}, {Full, 1}, {Empty, 176},
1097              {Mixed, 6}, {Empty, 18}, {Mixed, 5}, {Empty, 3}, {Mixed, 3},
1098              {Empty, 2093}, {Full, 16}, {Mixed, 1}, {Empty, 28719}},
1099             {0x773c8501, 0x3e7effbf, 0xbe7effbf, 0xfffcffff, 0xfefdff3f,
1100              0xfff3f3f9, 0xffffff3f, 0x00018003, 0xdffffff0, 0xff3fffcf,
1101              0xcfffffff, 0x000fffc0, 0x01ff0000, 0x3f000000, 0x0000001f,
1102              0x0000001b, 0x44100000, 0x0001d7f0, 0x0001fc00, 0x007f7c00,
1103              0x02370000, 0x0200708b, 0x02000000, 0x708b0000, 0x00c00000,
1104              0xfccf0006, 0x033ffcfc, 0x00000080, 0x0000007c, 0x01e00000,
1105              0x00080005, 0x00120200, 0xff000000, 0xb0001800, 0x00480000,
1106              0x4e000000, 0x30001900, 0x00100000, 0x00001c00, 0x00000100,
1107              0x00000d81, 0x00001c00, 0x74000000, 0x00080000, 0x00080000,
1108              0x30000000, 0x00001000, 0x10842008, 0x03e80200, 0x20080002,
1109              0x02001084, 0x00000040, 0x10000000, 0x00045540, 0x28000000,
1110              0x0000000b, 0xf7ff7000, 0xffffbfff, 0x010007ff, 0xf8000000,
1111              0x0fffffff, 0x03ffffff, 0x3f3fffff, 0xaaff3f3f, 0x3fffffff,
1112              0xffdfffff, 0xefcfffdf, 0x7fdcffff, 0x008207ff, 0x50d88070,
1113              0x80800380, 0xfff30000, 0x1fff7fff, 0x00000100, 0x3e6ffeef,
1114              0xfbfbbd57, 0xffff03e1, 0x0c000200, 0x00004000, 0x0000e000,
1115              0x00001210, 0x0001b050, 0x00000292, 0x0333e005, 0x00000333,
1116              0x0000f000, 0x00003c0f, 0x00000600, 0x000007ff, 0x00001000,
1117              0x00700000, 0x10000000, 0x30000000, 0x00008000, 0x80000000,
1118              0x00080000, 0x003fffff, 0x00000001, 0x07400000, 0x55555000,
1119              0x36db02a5, 0xd8100000, 0x55555000, 0x36db02a5, 0xc7900000,
1120              0xfffe0000, 0xfffc7fff, 0x7fffffff, 0xffff00ff, 0x7fffffff,
1121              0x7fffffff, 0x30000000, 0x00010000, 0x03000000, 0xf0000000,
1122              0x0000000f, 0x7fe53fff, 0xfffffc65, 0xffff3fff, 0x03ffffff,
1123              0xa0f8007f, 0x5f7fffff, 0xffffffdb, 0x0003ffff, 0xfff80000,
1124              0x3fffffff, 0xffff0000, 0xfffcffff, 0x000000ff, 0x1fff0000,
1125              0x03ff0000, 0xffff0000, 0xfff7ff9f, 0xffd70f7f, 0x1fffffff,
1126              0xfffffffe, 0x7fffffff, 0x1cfcfcfc, 0x00007f7f, 0x14000000,
1127              0x00000800, 0x0000c000, 0x00001800, 0x58000000, 0x0c000000,
1128              0xc0000000, 0x0000001f, 0xf8000000, 0x00000001, 0xffdfffff,
1129              0xdfffffff, 0xebffde64, 0xffffffef, 0xdfdfe7bf, 0x7bffffff,
1130              0xfffdfc5f, 0xffffff3f, 0xffffcfff, 0xffffffef, 0x0af7fe96,
1131              0xaa96ea84, 0x5ef7f796, 0x0ffffbff, 0x0ffffbee, 0xffff07ff,
1132              0xffff7fff, 0x0000ffff, 0x00000c00, 0x00010000, 0xffff0007,
1133              0x0fffffff, 0x000301ff, 0x3fffffff}};
1134        static BinaryPropertyObject property_object{NFKD_QC, codepoint_set};
1135    }
1136    namespace XO_NFC_ns {
1137        /** Code Point Ranges for XO_NFC
1138        [0344, 0344], [0958, 095f], [09dc, 09dd], [09df, 09df],
1139        [0a33, 0a33], [0a36, 0a36], [0a59, 0a5b], [0a5e, 0a5e],
1140        [0b5c, 0b5d], [0f43, 0f43], [0f4d, 0f4d], [0f52, 0f52],
1141        [0f57, 0f57], [0f5c, 0f5c], [0f69, 0f69], [0f73, 0f73],
1142        [0f75, 0f76], [0f78, 0f78], [0f81, 0f81], [0f93, 0f93],
1143        [0f9d, 0f9d], [0fa2, 0fa2], [0fa7, 0fa7], [0fac, 0fac],
1144        [0fb9, 0fb9], [2adc, 2adc], [fb1d, fb1d], [fb1f, fb1f],
1145        [fb2a, fb36], [fb38, fb3c], [fb3e, fb3e], [fb40, fb41],
1146        [fb43, fb44], [fb46, fb4e], [1d15e, 1d164], [1d1bb, 1d1c0]**/
1147        const UnicodeSet codepoint_set
1148            {{{Empty, 26}, {Mixed, 1}, {Empty, 47}, {Mixed, 1}, {Empty, 3},
1149              {Mixed, 1}, {Empty, 2}, {Mixed, 2}, {Empty, 7}, {Mixed, 1},
1150              {Empty, 31}, {Mixed, 4}, {Empty, 216}, {Mixed, 1},
1151              {Empty, 1665}, {Mixed, 3}, {Empty, 1711}, {Mixed, 2},
1152              {Empty, 1}, {Mixed, 2}, {Empty, 31089}},
1153             {0x00000010, 0xff000000, 0xb0000000, 0x00480000, 0x4e000000,
1154              0x30000000, 0x10842008, 0x01680200, 0x20080002, 0x02001084,
1155              0x10000000, 0xa0000000, 0x5f7ffc00, 0x00007fdb, 0xc0000000,
1156              0x0000001f, 0xf8000000, 0x00000001}};
1157        static BinaryPropertyObject property_object{XO_NFC, codepoint_set};
1158    }
1159    namespace XO_NFD_ns {
1160        /** Code Point Ranges for XO_NFD
1161        [00c0, 00c5], [00c7, 00cf], [00d1, 00d6], [00d9, 00dd],
1162        [00e0, 00e5], [00e7, 00ef], [00f1, 00f6], [00f9, 00fd],
1163        [00ff, 010f], [0112, 0125], [0128, 0130], [0134, 0137],
1164        [0139, 013e], [0143, 0148], [014c, 0151], [0154, 0165],
1165        [0168, 017e], [01a0, 01a1], [01af, 01b0], [01cd, 01dc],
1166        [01de, 01e3], [01e6, 01f0], [01f4, 01f5], [01f8, 021b],
1167        [021e, 021f], [0226, 0233], [0344, 0344], [0385, 0386],
1168        [0388, 038a], [038c, 038c], [038e, 0390], [03aa, 03b0],
1169        [03ca, 03ce], [03d3, 03d4], [0400, 0401], [0403, 0403],
1170        [0407, 0407], [040c, 040e], [0419, 0419], [0439, 0439],
1171        [0450, 0451], [0453, 0453], [0457, 0457], [045c, 045e],
1172        [0476, 0477], [04c1, 04c2], [04d0, 04d3], [04d6, 04d7],
1173        [04da, 04df], [04e2, 04e7], [04ea, 04f5], [04f8, 04f9],
1174        [0622, 0626], [06c0, 06c0], [06c2, 06c2], [06d3, 06d3],
1175        [0929, 0929], [0931, 0931], [0934, 0934], [0958, 095f],
1176        [09cb, 09cc], [09dc, 09dd], [09df, 09df], [0a33, 0a33],
1177        [0a36, 0a36], [0a59, 0a5b], [0a5e, 0a5e], [0b48, 0b48],
1178        [0b4b, 0b4c], [0b5c, 0b5d], [0b94, 0b94], [0bca, 0bcc],
1179        [0c48, 0c48], [0cc0, 0cc0], [0cc7, 0cc8], [0cca, 0ccb],
1180        [0d4a, 0d4c], [0dda, 0dda], [0ddc, 0dde], [0f43, 0f43],
1181        [0f4d, 0f4d], [0f52, 0f52], [0f57, 0f57], [0f5c, 0f5c],
1182        [0f69, 0f69], [0f73, 0f73], [0f75, 0f76], [0f78, 0f78],
1183        [0f81, 0f81], [0f93, 0f93], [0f9d, 0f9d], [0fa2, 0fa2],
1184        [0fa7, 0fa7], [0fac, 0fac], [0fb9, 0fb9], [1026, 1026],
1185        [1b06, 1b06], [1b08, 1b08], [1b0a, 1b0a], [1b0c, 1b0c],
1186        [1b0e, 1b0e], [1b12, 1b12], [1b3b, 1b3b], [1b3d, 1b3d],
1187        [1b40, 1b41], [1b43, 1b43], [1e00, 1e99], [1e9b, 1e9b],
1188        [1ea0, 1ef9], [1f00, 1f15], [1f18, 1f1d], [1f20, 1f45],
1189        [1f48, 1f4d], [1f50, 1f57], [1f59, 1f59], [1f5b, 1f5b],
1190        [1f5d, 1f5d], [1f5f, 1f7d], [1f80, 1fb4], [1fb6, 1fbc],
1191        [1fc1, 1fc4], [1fc6, 1fd3], [1fd6, 1fdb], [1fdd, 1fee],
1192        [1ff2, 1ff4], [1ff6, 1ffc], [212b, 212b], [219a, 219b],
1193        [21ae, 21ae], [21cd, 21cf], [2204, 2204], [2209, 2209],
1194        [220c, 220c], [2224, 2224], [2226, 2226], [2241, 2241],
1195        [2244, 2244], [2247, 2247], [2249, 2249], [2260, 2260],
1196        [2262, 2262], [226d, 2271], [2274, 2275], [2278, 2279],
1197        [2280, 2281], [2284, 2285], [2288, 2289], [22ac, 22af],
1198        [22e0, 22e3], [22ea, 22ed], [2adc, 2adc], [304c, 304c],
1199        [304e, 304e], [3050, 3050], [3052, 3052], [3054, 3054],
1200        [3056, 3056], [3058, 3058], [305a, 305a], [305c, 305c],
1201        [305e, 305e], [3060, 3060], [3062, 3062], [3065, 3065],
1202        [3067, 3067], [3069, 3069], [3070, 3071], [3073, 3074],
1203        [3076, 3077], [3079, 307a], [307c, 307d], [3094, 3094],
1204        [309e, 309e], [30ac, 30ac], [30ae, 30ae], [30b0, 30b0],
1205        [30b2, 30b2], [30b4, 30b4], [30b6, 30b6], [30b8, 30b8],
1206        [30ba, 30ba], [30bc, 30bc], [30be, 30be], [30c0, 30c0],
1207        [30c2, 30c2], [30c5, 30c5], [30c7, 30c7], [30c9, 30c9],
1208        [30d0, 30d1], [30d3, 30d4], [30d6, 30d7], [30d9, 30da],
1209        [30dc, 30dd], [30f4, 30f4], [30f7, 30fa], [30fe, 30fe],
1210        [ac00, d7a3], [fb1d, fb1d], [fb1f, fb1f], [fb2a, fb36],
1211        [fb38, fb3c], [fb3e, fb3e], [fb40, fb41], [fb43, fb44],
1212        [fb46, fb4e], [1109a, 1109a], [1109c, 1109c], [110ab, 110ab],
1213        [1112e, 1112f], [1134b, 1134c], [114bb, 114bc], [114be, 114be],
1214        [115ba, 115bb], [1d15e, 1d164], [1d1bb, 1d1c0]**/
1215        const UnicodeSet codepoint_set
1216            {{{Empty, 6}, {Mixed, 6}, {Empty, 1}, {Mixed, 5}, {Empty, 8},
1217              {Mixed, 1}, {Empty, 1}, {Mixed, 3}, {Empty, 1}, {Mixed, 4},
1218              {Empty, 2}, {Mixed, 2}, {Empty, 9}, {Mixed, 1}, {Empty, 4},
1219              {Mixed, 1}, {Empty, 18}, {Mixed, 2}, {Empty, 3}, {Mixed, 1},
1220              {Empty, 2}, {Mixed, 2}, {Empty, 7}, {Mixed, 1}, {Empty, 1},
1221              {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
1222              {Empty, 3}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3},
1223              {Mixed, 1}, {Empty, 11}, {Mixed, 4}, {Empty, 3}, {Mixed, 1},
1224              {Empty, 86}, {Mixed, 3}, {Empty, 21}, {Full, 4}, {Mixed, 1},
1225              {Full, 2}, {Mixed, 2}, {Full, 1}, {Mixed, 2}, {Full, 1},
1226              {Mixed, 3}, {Empty, 9}, {Mixed, 1}, {Empty, 2}, {Mixed, 3},
1227              {Empty, 1}, {Mixed, 6}, {Empty, 1}, {Mixed, 1}, {Empty, 62},
1228              {Mixed, 1}, {Empty, 43}, {Mixed, 6}, {Empty, 984},
1229              {Full, 349}, {Mixed, 1}, {Empty, 282}, {Mixed, 3},
1230              {Empty, 169}, {Mixed, 2}, {Empty, 3}, {Mixed, 1}, {Empty, 16},
1231              {Mixed, 1}, {Empty, 10}, {Mixed, 1}, {Empty, 7}, {Mixed, 1},
1232              {Empty, 1500}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
1233              {Empty, 31089}},
1234             {0x3e7effbf, 0xbe7effbf, 0xfffcffff, 0x7ef1ff3f, 0xfff3f1f8,
1235              0x7fffff3f, 0x00018003, 0xdfffe000, 0xff31ffcf, 0xcfffffff,
1236              0x000fffc0, 0x00000010, 0x0001d760, 0x0001fc00, 0x00187c00,
1237              0x0200708b, 0x02000000, 0x708b0000, 0x00c00000, 0xfccf0006,
1238              0x033ffcfc, 0x0000007c, 0x00080005, 0x00120200, 0xff000000,
1239              0xb0001800, 0x00480000, 0x4e000000, 0x30001900, 0x00100000,
1240              0x00001c00, 0x00000100, 0x00000d81, 0x00001c00, 0x74000000,
1241              0x10842008, 0x01680200, 0x20080002, 0x02001084, 0x00000040,
1242              0x00045540, 0x28000000, 0x0000000b, 0x0bffffff, 0x03ffffff,
1243              0x3f3fffff, 0xaaff3f3f, 0x3fffffff, 0x1fdfffff, 0xefcfffde,
1244              0x1fdc7fff, 0x00000800, 0x0c000000, 0x00004000, 0x0000e000,
1245              0x00001210, 0x00000050, 0x00000292, 0x0333e005, 0x00000333,
1246              0x0000f000, 0x00003c0f, 0x10000000, 0x55555000, 0x36db02a5,
1247              0x40100000, 0x55555000, 0x36db02a5, 0x47900000, 0x0000000f,
1248              0xa0000000, 0x5f7ffc00, 0x00007fdb, 0x14000000, 0x00000800,
1249              0x0000c000, 0x00001800, 0x58000000, 0x0c000000, 0xc0000000,
1250              0x0000001f, 0xf8000000, 0x00000001}};
1251        static BinaryPropertyObject property_object{XO_NFD, codepoint_set};
1252    }
1253    namespace XO_NFKC_ns {
1254        /** Code Point Ranges for XO_NFKC
1255        [00a8, 00a8], [00af, 00af], [00b4, 00b4], [00b8, 00b8],
1256        [00bc, 00be], [0132, 0133], [013f, 0140], [0149, 0149],
1257        [01c4, 01cc], [01f1, 01f3], [02d8, 02dd], [0344, 0344],
1258        [037a, 037a], [0384, 0385], [0587, 0587], [0675, 0678],
1259        [0958, 095f], [09dc, 09dd], [09df, 09df], [0a33, 0a33],
1260        [0a36, 0a36], [0a59, 0a5b], [0a5e, 0a5e], [0b5c, 0b5d],
1261        [0e33, 0e33], [0eb3, 0eb3], [0edc, 0edd], [0f43, 0f43],
1262        [0f4d, 0f4d], [0f52, 0f52], [0f57, 0f57], [0f5c, 0f5c],
1263        [0f69, 0f69], [0f73, 0f73], [0f75, 0f79], [0f81, 0f81],
1264        [0f93, 0f93], [0f9d, 0f9d], [0fa2, 0fa2], [0fa7, 0fa7],
1265        [0fac, 0fac], [0fb9, 0fb9], [1e9a, 1e9a], [1fbd, 1fbd],
1266        [1fbf, 1fc1], [1fcd, 1fcf], [1fdd, 1fdf], [1fed, 1fee],
1267        [1ffd, 1ffe], [2017, 2017], [2025, 2026], [2033, 2034],
1268        [2036, 2037], [203c, 203c], [203e, 203e], [2047, 2049],
1269        [2057, 2057], [20a8, 20a8], [2100, 2101], [2103, 2103],
1270        [2105, 2106], [2109, 2109], [2116, 2116], [2120, 2122],
1271        [213b, 213b], [2150, 215f], [2161, 2163], [2165, 2168],
1272        [216a, 216b], [2171, 2173], [2175, 2178], [217a, 217b],
1273        [2189, 2189], [222c, 222d], [222f, 2230], [2469, 24b5],
1274        [2a0c, 2a0c], [2a74, 2a76], [2adc, 2adc], [309b, 309c],
1275        [309f, 309f], [30ff, 30ff], [3200, 321e], [3220, 3243],
1276        [3250, 325f], [327c, 327d], [32b1, 32cf], [3300, 33ff],
1277        [fb00, fb06], [fb13, fb17], [fb1d, fb1d], [fb1f, fb1f],
1278        [fb2a, fb36], [fb38, fb3c], [fb3e, fb3e], [fb40, fb41],
1279        [fb43, fb44], [fb46, fb4f], [fbdd, fbdd], [fbea, fbfb],
1280        [fc00, fd3d], [fd50, fd8f], [fd92, fdc7], [fdf0, fdfc],
1281        [fe19, fe19], [fe30, fe30], [fe49, fe4c], [fe70, fe72],
1282        [fe74, fe74], [fe76, fe7f], [fef5, fefc], [ffe3, ffe3],
1283        [1d15e, 1d164], [1d1bb, 1d1c0], [1f100, 1f10a], [1f110, 1f12a],
1284        [1f12d, 1f12e], [1f14a, 1f14f], [1f16a, 1f16b], [1f190, 1f190],
1285        [1f200, 1f201], [1f240, 1f248]**/
1286        const UnicodeSet codepoint_set
1287            {{{Empty, 5}, {Mixed, 1}, {Empty, 3}, {Mixed, 2}, {Empty, 3},
1288              {Mixed, 2}, {Empty, 6}, {Mixed, 1}, {Empty, 3}, {Mixed, 3},
1289              {Empty, 15}, {Mixed, 1}, {Empty, 6}, {Mixed, 1}, {Empty, 22},
1290              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 2}, {Mixed, 2},
1291              {Empty, 7}, {Mixed, 1}, {Empty, 22}, {Mixed, 1}, {Empty, 3},
1292              {Mixed, 2}, {Empty, 3}, {Mixed, 4}, {Empty, 118}, {Mixed, 1},
1293              {Empty, 8}, {Mixed, 6}, {Empty, 2}, {Mixed, 1}, {Empty, 2},
1294              {Mixed, 5}, {Empty, 4}, {Mixed, 1}, {Empty, 17}, {Mixed, 1},
1295              {Full, 1}, {Mixed, 1}, {Empty, 42}, {Mixed, 1}, {Empty, 2},
1296              {Mixed, 1}, {Empty, 2}, {Mixed, 1}, {Empty, 45}, {Mixed, 1},
1297              {Empty, 2}, {Mixed, 1}, {Empty, 8}, {Mixed, 1}, {Full, 1},
1298              {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 1}, {Full, 8},
1299              {Empty, 1592}, {Mixed, 3}, {Empty, 3}, {Mixed, 2}, {Full, 9},
1300              {Mixed, 2}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 6},
1301              {Empty, 3}, {Mixed, 1}, {Empty, 7}, {Mixed, 1}, {Empty, 1674},
1302              {Mixed, 2}, {Empty, 1}, {Mixed, 2}, {Empty, 249}, {Mixed, 5},
1303              {Empty, 3}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
1304              {Empty, 30829}},
1305             {0x71108100, 0x800c0000, 0x00000201, 0x00001ff0, 0x000e0000,
1306              0x3f000000, 0x00000010, 0x04000000, 0x00000030, 0x00000080,
1307              0x01e00000, 0xff000000, 0xb0000000, 0x00480000, 0x4e000000,
1308              0x30000000, 0x00080000, 0x00080000, 0x30000000, 0x10842008,
1309              0x03e80200, 0x20080002, 0x02001084, 0x04000000, 0xa0000000,
1310              0xe000e003, 0x60006000, 0x00800000, 0x50d80060, 0x00800380,
1311              0x00000100, 0x0040026b, 0x08000007, 0xffff0000, 0x0dee0dee,
1312              0x00000200, 0x0001b000, 0xfffffe00, 0x003fffff, 0x00001000,
1313              0x00700000, 0x10000000, 0x98000000, 0x80000000, 0x7fffffff,
1314              0xffff000f, 0x30000000, 0xfffe0000, 0x0000ffff, 0xa0f8007f,
1315              0x5f7ffc00, 0x0000ffdb, 0x20000000, 0x0ffffc00, 0x3fffffff,
1316              0xffff0000, 0xfffcffff, 0x000000ff, 0x1fff0000, 0x02000000,
1317              0x00010000, 0x00001e00, 0xffd70000, 0x1fe00000, 0x00000008,
1318              0xc0000000, 0x0000001f, 0xf8000000, 0x00000001, 0xffff07ff,
1319              0x000067ff, 0x0000fc00, 0x00000c00, 0x00010000, 0x00000003,
1320              0x000001ff}};
1321        static BinaryPropertyObject property_object{XO_NFKC, codepoint_set};
1322    }
1323    namespace XO_NFKD_ns {
1324        /** Code Point Ranges for XO_NFKD
1325        [00a8, 00a8], [00af, 00af], [00b4, 00b4], [00b8, 00b8],
1326        [00bc, 00be], [00c0, 00c5], [00c7, 00cf], [00d1, 00d6],
1327        [00d9, 00dd], [00e0, 00e5], [00e7, 00ef], [00f1, 00f6],
1328        [00f9, 00fd], [00ff, 010f], [0112, 0125], [0128, 0130],
1329        [0132, 0137], [0139, 0140], [0143, 0149], [014c, 0151],
1330        [0154, 0165], [0168, 017e], [01a0, 01a1], [01af, 01b0],
1331        [01c4, 01dc], [01de, 01e3], [01e6, 01f5], [01f8, 021b],
1332        [021e, 021f], [0226, 0233], [02d8, 02dd], [0344, 0344],
1333        [037a, 037a], [0384, 0386], [0388, 038a], [038c, 038c],
1334        [038e, 0390], [03aa, 03b0], [03ca, 03ce], [03d3, 03d4],
1335        [0400, 0401], [0403, 0403], [0407, 0407], [040c, 040e],
1336        [0419, 0419], [0439, 0439], [0450, 0451], [0453, 0453],
1337        [0457, 0457], [045c, 045e], [0476, 0477], [04c1, 04c2],
1338        [04d0, 04d3], [04d6, 04d7], [04da, 04df], [04e2, 04e7],
1339        [04ea, 04f5], [04f8, 04f9], [0587, 0587], [0622, 0626],
1340        [0675, 0678], [06c0, 06c0], [06c2, 06c2], [06d3, 06d3],
1341        [0929, 0929], [0931, 0931], [0934, 0934], [0958, 095f],
1342        [09cb, 09cc], [09dc, 09dd], [09df, 09df], [0a33, 0a33],
1343        [0a36, 0a36], [0a59, 0a5b], [0a5e, 0a5e], [0b48, 0b48],
1344        [0b4b, 0b4c], [0b5c, 0b5d], [0b94, 0b94], [0bca, 0bcc],
1345        [0c48, 0c48], [0cc0, 0cc0], [0cc7, 0cc8], [0cca, 0ccb],
1346        [0d4a, 0d4c], [0dda, 0dda], [0ddc, 0dde], [0e33, 0e33],
1347        [0eb3, 0eb3], [0edc, 0edd], [0f43, 0f43], [0f4d, 0f4d],
1348        [0f52, 0f52], [0f57, 0f57], [0f5c, 0f5c], [0f69, 0f69],
1349        [0f73, 0f73], [0f75, 0f79], [0f81, 0f81], [0f93, 0f93],
1350        [0f9d, 0f9d], [0fa2, 0fa2], [0fa7, 0fa7], [0fac, 0fac],
1351        [0fb9, 0fb9], [1026, 1026], [1b06, 1b06], [1b08, 1b08],
1352        [1b0a, 1b0a], [1b0c, 1b0c], [1b0e, 1b0e], [1b12, 1b12],
1353        [1b3b, 1b3b], [1b3d, 1b3d], [1b40, 1b41], [1b43, 1b43],
1354        [1e00, 1e9b], [1ea0, 1ef9], [1f00, 1f15], [1f18, 1f1d],
1355        [1f20, 1f45], [1f48, 1f4d], [1f50, 1f57], [1f59, 1f59],
1356        [1f5b, 1f5b], [1f5d, 1f5d], [1f5f, 1f7d], [1f80, 1fb4],
1357        [1fb6, 1fbd], [1fbf, 1fc4], [1fc6, 1fd3], [1fd6, 1fdb],
1358        [1fdd, 1fee], [1ff2, 1ff4], [1ff6, 1ffe], [2017, 2017],
1359        [2025, 2026], [2033, 2034], [2036, 2037], [203c, 203c],
1360        [203e, 203e], [2047, 2049], [2057, 2057], [20a8, 20a8],
1361        [2100, 2101], [2103, 2103], [2105, 2106], [2109, 2109],
1362        [2116, 2116], [2120, 2122], [212b, 212b], [213b, 213b],
1363        [2150, 215f], [2161, 2163], [2165, 2168], [216a, 216b],
1364        [2171, 2173], [2175, 2178], [217a, 217b], [2189, 2189],
1365        [219a, 219b], [21ae, 21ae], [21cd, 21cf], [2204, 2204],
1366        [2209, 2209], [220c, 220c], [2224, 2224], [2226, 2226],
1367        [222c, 222d], [222f, 2230], [2241, 2241], [2244, 2244],
1368        [2247, 2247], [2249, 2249], [2260, 2260], [2262, 2262],
1369        [226d, 2271], [2274, 2275], [2278, 2279], [2280, 2281],
1370        [2284, 2285], [2288, 2289], [22ac, 22af], [22e0, 22e3],
1371        [22ea, 22ed], [2469, 24b5], [2a0c, 2a0c], [2a74, 2a76],
1372        [2adc, 2adc], [304c, 304c], [304e, 304e], [3050, 3050],
1373        [3052, 3052], [3054, 3054], [3056, 3056], [3058, 3058],
1374        [305a, 305a], [305c, 305c], [305e, 305e], [3060, 3060],
1375        [3062, 3062], [3065, 3065], [3067, 3067], [3069, 3069],
1376        [3070, 3071], [3073, 3074], [3076, 3077], [3079, 307a],
1377        [307c, 307d], [3094, 3094], [309b, 309c], [309e, 309f],
1378        [30ac, 30ac], [30ae, 30ae], [30b0, 30b0], [30b2, 30b2],
1379        [30b4, 30b4], [30b6, 30b6], [30b8, 30b8], [30ba, 30ba],
1380        [30bc, 30bc], [30be, 30be], [30c0, 30c0], [30c2, 30c2],
1381        [30c5, 30c5], [30c7, 30c7], [30c9, 30c9], [30d0, 30d1],
1382        [30d3, 30d4], [30d6, 30d7], [30d9, 30da], [30dc, 30dd],
1383        [30f4, 30f4], [30f7, 30fa], [30fe, 30ff], [3200, 321e],
1384        [3220, 3243], [3250, 325f], [326e, 327e], [32b1, 32cf],
1385        [3300, 33ff], [ac00, d7a3], [fb00, fb06], [fb13, fb17],
1386        [fb1d, fb1d], [fb1f, fb1f], [fb2a, fb36], [fb38, fb3c],
1387        [fb3e, fb3e], [fb40, fb41], [fb43, fb44], [fb46, fb4f],
1388        [fba4, fba5], [fbb0, fbb1], [fbdd, fbdd], [fbea, fbfb],
1389        [fc00, fd3d], [fd50, fd8f], [fd92, fdc7], [fdf0, fdfc],
1390        [fe19, fe19], [fe30, fe30], [fe49, fe4c], [fe70, fe72],
1391        [fe74, fe74], [fe76, fe7f], [fe81, fe8c], [fef5, fefc],
1392        [ffe3, ffe3], [1109a, 1109a], [1109c, 1109c], [110ab, 110ab],
1393        [1112e, 1112f], [1134b, 1134c], [114bb, 114bc], [114be, 114be],
1394        [115ba, 115bb], [1d15e, 1d164], [1d1bb, 1d1c0], [1f100, 1f10a],
1395        [1f110, 1f12a], [1f12d, 1f12e], [1f14a, 1f14f], [1f16a, 1f16b],
1396        [1f190, 1f190], [1f200, 1f201], [1f213, 1f213], [1f240, 1f248]**/
1397        const UnicodeSet codepoint_set
1398            {{{Empty, 5}, {Mixed, 7}, {Empty, 1}, {Mixed, 5}, {Empty, 4},
1399              {Mixed, 1}, {Empty, 3}, {Mixed, 5}, {Empty, 1}, {Mixed, 4},
1400              {Empty, 2}, {Mixed, 2}, {Empty, 4}, {Mixed, 1}, {Empty, 4},
1401              {Mixed, 1}, {Empty, 1}, {Mixed, 1}, {Empty, 2}, {Mixed, 1},
1402              {Empty, 18}, {Mixed, 2}, {Empty, 3}, {Mixed, 1}, {Empty, 2},
1403              {Mixed, 2}, {Empty, 7}, {Mixed, 1}, {Empty, 1}, {Mixed, 1},
1404              {Empty, 1}, {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3},
1405              {Mixed, 1}, {Empty, 3}, {Mixed, 1}, {Empty, 3}, {Mixed, 1},
1406              {Empty, 2}, {Mixed, 1}, {Empty, 3}, {Mixed, 2}, {Empty, 3},
1407              {Mixed, 4}, {Empty, 3}, {Mixed, 1}, {Empty, 86}, {Mixed, 3},
1408              {Empty, 21}, {Full, 4}, {Mixed, 1}, {Full, 2}, {Mixed, 2},
1409              {Full, 1}, {Mixed, 2}, {Full, 1}, {Mixed, 6}, {Empty, 2},
1410              {Mixed, 1}, {Empty, 2}, {Mixed, 7}, {Empty, 1}, {Mixed, 6},
1411              {Empty, 1}, {Mixed, 1}, {Empty, 11}, {Mixed, 1}, {Full, 1},
1412              {Mixed, 1}, {Empty, 42}, {Mixed, 1}, {Empty, 2}, {Mixed, 1},
1413              {Empty, 2}, {Mixed, 1}, {Empty, 43}, {Mixed, 6}, {Empty, 8},
1414              {Mixed, 1}, {Full, 1}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
1415              {Empty, 1}, {Full, 8}, {Empty, 960}, {Full, 349}, {Mixed, 1},
1416              {Empty, 282}, {Mixed, 3}, {Empty, 2}, {Mixed, 3}, {Full, 9},
1417              {Mixed, 2}, {Full, 1}, {Mixed, 1}, {Full, 1}, {Mixed, 7},
1418              {Empty, 2}, {Mixed, 1}, {Empty, 7}, {Mixed, 1}, {Empty, 132},
1419              {Mixed, 2}, {Empty, 3}, {Mixed, 1}, {Empty, 16}, {Mixed, 1},
1420              {Empty, 10}, {Mixed, 1}, {Empty, 7}, {Mixed, 1},
1421              {Empty, 1500}, {Mixed, 2}, {Empty, 1}, {Mixed, 2},
1422              {Empty, 249}, {Mixed, 5}, {Empty, 3}, {Mixed, 1}, {Empty, 1},
1423              {Mixed, 1}, {Empty, 30829}},
1424             {0x71108100, 0x3e7effbf, 0xbe7effbf, 0xfffcffff, 0xfefdff3f,
1425              0xfff3f3f9, 0x7fffff3f, 0x00018003, 0xdffffff0, 0xff3fffcf,
1426              0xcfffffff, 0x000fffc0, 0x3f000000, 0x00000010, 0x04000000,
1427              0x0001d770, 0x0001fc00, 0x00187c00, 0x0200708b, 0x02000000,
1428              0x708b0000, 0x00c00000, 0xfccf0006, 0x033ffcfc, 0x00000080,
1429              0x0000007c, 0x01e00000, 0x00080005, 0x00120200, 0xff000000,
1430              0xb0001800, 0x00480000, 0x4e000000, 0x30001900, 0x00100000,
1431              0x00001c00, 0x00000100, 0x00000d81, 0x00001c00, 0x74000000,
1432              0x00080000, 0x00080000, 0x30000000, 0x10842008, 0x03e80200,
1433              0x20080002, 0x02001084, 0x00000040, 0x00045540, 0x28000000,
1434              0x0000000b, 0x0fffffff, 0x03ffffff, 0x3f3fffff, 0xaaff3f3f,
1435              0x3fffffff, 0xbfdfffff, 0xefcfffdf, 0x7fdc7fff, 0x00800000,
1436              0x50d80060, 0x00800380, 0x00000100, 0x0040026b, 0x08000807,
1437              0xffff0000, 0x0dee0dee, 0x0c000200, 0x00004000, 0x0000e000,
1438              0x00001210, 0x0001b050, 0x00000292, 0x0333e005, 0x00000333,
1439              0x0000f000, 0x00003c0f, 0xfffffe00, 0x003fffff, 0x00001000,
1440              0x00700000, 0x10000000, 0x55555000, 0x36db02a5, 0xd8100000,
1441              0x55555000, 0x36db02a5, 0xc7900000, 0x7fffffff, 0xffff000f,
1442              0x7fffc000, 0xfffe0000, 0x0000ffff, 0x0000000f, 0xa0f8007f,
1443              0x5f7ffc00, 0x0000ffdb, 0x00030030, 0x20000000, 0x0ffffc00,
1444              0x3fffffff, 0xffff0000, 0xfffcffff, 0x000000ff, 0x1fff0000,
1445              0x02000000, 0x00010000, 0x00001e00, 0xffd70000, 0x00001ffe,
1446              0x1fe00000, 0x00000008, 0x14000000, 0x00000800, 0x0000c000,
1447              0x00001800, 0x58000000, 0x0c000000, 0xc0000000, 0x0000001f,
1448              0xf8000000, 0x00000001, 0xffff07ff, 0x000067ff, 0x0000fc00,
1449              0x00000c00, 0x00010000, 0x00080003, 0x000001ff}};
1450        static BinaryPropertyObject property_object{XO_NFKD, codepoint_set};
1451    }
1452}
1453
1454
1455#endif
Note: See TracBrowser for help on using the repository browser.