#
# Definitions are taken from the genunicodedata.h
#

# unknown
_define ChuUnknown [\x0237-\x024f\x0358-\x035c\x0370-\x0373\x0376-\x0379\x037b-\x037d\x037f-\x0383\x038b\x038d\x03a2\x03cf\x03fc-\x03ff\x0487\x04cf\x04f6-\x04f7\x04fa-\x04ff\x0510-\x0530\x0557-\x0558\x0560\x0588\x058b-\x0590\x05a2\x05ba\x05c5-\x05cf\x05eb-\x05ef\x05f5-\x05ff\x0604-\x060b\x0616-\x061a\x061c-\x061e\x0620\x063b-\x063f\x0659-\x065f\x070e\x074b-\x074c\x0750-\x077f\x07b2-\x0900\x093a-\x093b\x094e-\x094f\x0955-\x0957\x0971-\x0980\x0984\x098d-\x098e\x0991-\x0992\x09a9\x09b1\x09b3-\x09b5\x09ba-\x09bb\x09c5-\x09c6\x09c9-\x09ca\x09ce-\x09d6\x09d8-\x09db\x09de\x09e4-\x09e5\x09fb-\x0a00\x0a04\x0a0b-\x0a0e\x0a11-\x0a12\x0a29\x0a31\x0a34\x0a37\x0a3a-\x0a3b\x0a3d\x0a43-\x0a46\x0a49-\x0a4a\x0a4e-\x0a58\x0a5d\x0a5f-\x0a65\x0a75-\x0a80\x0a84\x0a8e\x0a92\x0aa9\x0ab1\x0ab4\x0aba-\x0abb\x0ac6\x0aca\x0ace-\x0acf\x0ad1-\x0adf\x0ae4-\x0ae5\x0af0\x0af2-\x0b00\x0b04\x0b0d-\x0b0e\x0b11-\x0b12\x0b29\x0b31\x0b34\x0b3a-\x0b3b\x0b44-\x0b46\x0b49-\x0b4a\x0b4e-\x0b55\x0b58-\x0b5b\x0b5e\x0b62-\x0b65\x0b72-\x0b81\x0b84\x0b8b-\x0b8d\x0b91\x0b96-\x0b98\x0b9b\x0b9d\x0ba0-\x0ba2\x0ba5-\x0ba7\x0bab-\x0bad\x0bb6\x0bba-\x0bbd\x0bc3-\x0bc5\x0bc9\x0bce-\x0bd6\x0bd8-\x0be6\x0bfb-\x0c00\x0c04\x0c0d\x0c11\x0c29\x0c34\x0c3a-\x0c3d\x0c45\x0c49\x0c4e-\x0c54\x0c57-\x0c5f\x0c62-\x0c65\x0c70-\x0c81\x0c84\x0c8d\x0c91\x0ca9\x0cb4\x0cba-\x0cbb\x0cc5\x0cc9\x0cce-\x0cd4\x0cd7-\x0cdd\x0cdf\x0ce2-\x0ce5\x0cf0-\x0d01\x0d04\x0d0d\x0d11\x0d29\x0d3a-\x0d3d\x0d44-\x0d45\x0d49\x0d4e-\x0d56\x0d58-\x0d5f\x0d62-\x0d65\x0d70-\x0d81\x0d84\x0d97-\x0d99\x0db2\x0dbc\x0dbe-\x0dbf\x0dc7-\x0dc9\x0dcb-\x0dce\x0dd5\x0dd7\x0de0-\x0df1\x0df5-\x0e00\x0e3b-\x0e3e\x0e5c-\x0e80\x0e83\x0e85-\x0e86\x0e89\x0e8b-\x0e8c\x0e8e-\x0e93\x0e98\x0ea0\x0ea4\x0ea6\x0ea8-\x0ea9\x0eac\x0eba\x0ebe-\x0ebf\x0ec5\x0ec7\x0ece-\x0ecf\x0eda-\x0edb\x0ede-\x0eff\x0f48\x0f6b-\x0f70\x0f8c-\x0f8f\x0f98\x0fbd\x0fcd-\x0fce\x0fd0-\x0fff\x1022\x1028\x102b\x1033-\x1035\x103a-\x103f\x105a-\x109f\x10c6-\x10cf\x10f9-\x10fa\x10fc-\x10ff\x115a-\x115e\x11a3-\x11a7\x11fa-\x11ff\x1207\x1247\x1249\x124e-\x124f\x1257\x1259\x125e-\x125f\x1287\x1289\x128e-\x128f\x12af\x12b1\x12b6-\x12b7\x12bf\x12c1\x12c6-\x12c7\x12cf\x12d7\x12ef\x130f\x1311\x1316-\x1317\x131f\x1347\x135b-\x1360\x137d-\x139f\x13f5-\x1400\x1677-\x167f\x169d-\x169f\x16f1-\x16ff\x170d\x1715-\x171f\x1737-\x173f\x1754-\x175f\x176d\x1771\x1774-\x177f\x17de-\x17df\x17ea-\x17ef\x17fa-\x17ff\x180f\x181a-\x181f\x1878-\x187f\x18aa-\x18ff\x191d-\x191f\x192c-\x192f\x193c-\x193f\x1941-\x1943\x196e-\x196f\x1975-\x19df\x1a00-\x1cff\x1d6c-\x1dff\x1e9c-\x1e9f\x1efa-\x1eff\x1f16-\x1f17\x1f1e-\x1f1f\x1f46-\x1f47\x1f4e-\x1f4f\x1f58\x1f5a\x1f5c\x1f5e\x1f7e-\x1f7f\x1fb5\x1fc5\x1fd4-\x1fd5\x1fdc\x1ff0-\x1ff1\x1ff5\x1fff\x2055-\x2056\x2058-\x205e\x2064-\x2069\x2072-\x2073\x208f-\x209f\x20b2-\x20cf\x20eb-\x20ff\x213c\x214c-\x2152\x2184-\x218f\x23d1-\x23ff\x2427-\x243f\x244b-\x245f\x2618\x267e-\x267f\x2692-\x269f\x26a2-\x2700\x2705\x270a-\x270b\x2728\x274c\x274e\x2753-\x2755\x2757\x275f-\x2760\x2795-\x2797\x27b0\x27bf-\x27cf\x27ec-\x27ef\x2b0e-\x2e7f\x2e9a\x2ef4-\x2eff\x2fd6-\x2fef\x2ffc-\x2fff\x3040\x3097-\x3098\x3100-\x3104\x312d-\x3130\x318f\x31b8-\x31ef\x321f\x3244-\x324f\x327e\x32ff\x4db6-\x4dbf\x9fa6-\x9fff\xa48d-\xa48f\xa4c7-\xabff\xd7a4-\xd7ff\xd801-\xdb7e\xdb81-\xdbfe\xdc01-\xdffe\xe001-\xf8fe\xfa2e-\xfa2f\xfa6b-\xfaff\xfb07-\xfb12\xfb18-\xfb1c\xfb37\xfb3d\xfb3f\xfb42\xfb45\xfbb2-\xfbd2\xfd40-\xfd4f\xfd90-\xfd91\xfdc8-\xfdef\xfdfe-\xfdff\xfe10-\xfe1f\xfe24-\xfe2f\xfe53\xfe67\xfe6c-\xfe6f\xfe75\xfefd-\xfefe\xff00\xffbf-\xffc1\xffc8-\xffc9\xffd0-\xffd1\xffd8-\xffd9\xffdd-\xffdf\xffe7\xffef-\xfff8\xfffe-\xffff]

# Letter, Uppercase 
_define ChuLu [\x0041-\x005a\x00d0\x00dd-\x00de\x0100\x0102\x0104\x0106\x0108\x010a\x010c\x010e\x0110\x0112\x0114\x0116\x0118\x011a\x011c\x011e\x0120\x0122\x0124\x0126\x0128\x012a\x012c\x012e\x0130\x0132\x0134\x0136\x0139\x013b\x013d\x013f\x0141\x0143\x0145\x0147\x014a\x014c\x014e\x0150\x0154\x0156\x0158\x015a\x015c\x015e\x0160\x0162\x0164\x0166\x0168\x016a\x016c\x016e\x0170\x0172\x0174\x0176\x0178-\x0179\x017b\x017d\x0181-\x0182\x0184\x0186-\x0187\x0189-\x018b\x018e-\x0191\x0193-\x0194\x0196-\x0198\x019c-\x019d\x019f-\x01a0\x01a2\x01a4\x01a6-\x01a7\x01a9\x01ac\x01ae-\x01af\x01b1-\x01b3\x01b5\x01b7-\x01b8\x01bc\x01c4\x01c7\x01ca\x01cd\x01cf\x01d1\x01d3\x01d5\x01d7\x01d9\x01db\x01de\x01e0\x01e2\x01e4\x01e6\x01e8\x01ea\x01ec\x01ee\x01f1\x01f4\x01f6-\x01f8\x01fa\x01fc\x01fe\x0200\x0202\x0204\x0206\x0208\x020a\x020c\x020e\x0210\x0212\x0214\x0216\x0218\x021a\x021c\x021e\x0220\x0222\x0224\x0226\x0228\x022a\x022c\x022e\x0230\x0232\x0386\x0388-\x038a\x038c\x038e-\x038f\x0391-\x03a1\x03a3-\x03ab\x03d2-\x03d4\x03d8\x03da\x03dc\x03de\x03e0\x03e2\x03e4\x03e6\x03e8\x03ea\x03ec\x03ee\x03f4\x03f7\x03f9-\x03fa\x0400-\x042f\x0460\x0462\x0464\x0466\x0468\x046a\x046c\x046e\x0470\x0472\x0474\x0476\x0478\x047a\x047c\x047e\x0480\x048a\x048c\x048e\x0490\x0492\x0494\x0496\x0498\x049a\x049c\x049e\x04a0\x04a2\x04a4\x04a6\x04a8\x04aa\x04ac\x04ae\x04b0\x04b2\x04b4\x04b6\x04b8\x04ba\x04bc\x04be\x04c0-\x04c1\x04c3\x04c5\x04c7\x04c9\x04cb\x04cd\x04d0\x04d2\x04d4\x04d6\x04d8\x04da\x04dc\x04de\x04e0\x04e2\x04e4\x04e6\x04e8\x04ea\x04ec\x04ee\x04f0\x04f2\x04f4\x04f8\x0500\x0502\x0504\x0506\x0508\x050a\x050c\x050e\x0531-\x0556\x10a0-\x10c5\x1e00\x1e02\x1e04\x1e06\x1e08\x1e0a\x1e0c\x1e0e\x1e10\x1e12\x1e14\x1e16\x1e18\x1e1a\x1e1c\x1e1e\x1e20\x1e22\x1e24\x1e26\x1e28\x1e2a\x1e2c\x1e2e\x1e30\x1e32\x1e34\x1e36\x1e38\x1e3a\x1e3c\x1e3e\x1e40\x1e42\x1e44\x1e46\x1e48\x1e4a\x1e4c\x1e4e\x1e50\x1e52\x1e54\x1e56\x1e58\x1e5a\x1e5c\x1e5e\x1e60\x1e62\x1e64\x1e66\x1e68\x1e6a\x1e6c\x1e6e\x1e70\x1e72\x1e74\x1e76\x1e78\x1e7a\x1e7c\x1e7e\x1e80\x1e82\x1e84\x1e86\x1e88\x1e8a\x1e8c\x1e8e\x1e90\x1e92\x1e94\x1ea0\x1ea2\x1ea4\x1ea6\x1ea8\x1eaa\x1eac\x1eae\x1eb0\x1eb2\x1eb4\x1eb6\x1eb8\x1eba\x1ebc\x1ebe\x1ec0\x1ec2\x1ec4\x1ec6\x1ec8\x1eca\x1ecc\x1ece\x1ed0\x1ed2\x1ed4\x1ed6\x1ed8\x1eda\x1edc\x1ede\x1ee0\x1ee2\x1ee4\x1ee6\x1ee8\x1eea\x1eec\x1eee\x1ef0\x1ef2\x1ef4\x1ef6\x1ef8\x1f08-\x1f0f\x1f18-\x1f1d\x1f28-\x1f2f\x1f38-\x1f3f\x1f48-\x1f4d\x1f59\x1f5b\x1f5d\x1f5f\x1f68-\x1f6f\x1fb8-\x1fbb\x1fc8-\x1fcb\x1fd8-\x1fdb\x1fe8-\x1fec\x1ff8-\x1ffb\x2102\x2107\x210b-\x210d\x2110-\x2112\x2115\x2119-\x211d\x2124\x2126\x2128\x212a-\x212d\x2130-\x2131\x2133\x213e-\x213f\x2145\xff21-\xff3a]

# Letter, Lowercase 
_define ChuLl [\x0061-\x007a\x00aa\x00b5\x00ba\x00c0-\x00c3\x00c5\x00c7-\x00cf\x00d1-\x00d5\x00d9-\x00db\x00e0-\x00e3\x00e5\x00e7-\x00f5\x00f9-\x00fb\x00fd-\x00ff\x0101\x0103\x0105\x0107\x0109\x010b\x010d\x010f\x0111\x0113\x0115\x0117\x0119\x011b\x011d\x011f\x0121\x0123\x0125\x0127\x0129\x012b\x012d\x012f\x0131\x0133\x0135\x0137-\x0138\x013a\x013c\x013e\x0140\x0142\x0144\x0146\x0148-\x0149\x014b\x014d\x014f\x0151\x0155\x0157\x0159\x015b\x015d\x015f\x0161\x0163\x0165\x0167\x0169\x016b\x016d\x016f\x0171\x0173\x0175\x0177\x017a\x017c\x017e-\x0180\x0183\x0185\x0188\x018c-\x018d\x0192\x0195\x0199-\x019b\x019e\x01a1\x01a3\x01a5\x01a8\x01aa-\x01ab\x01ad\x01b0\x01b4\x01b6\x01b9-\x01ba\x01bd-\x01bf\x01c6\x01c9\x01cc\x01ce\x01d0\x01d2\x01d4\x01d6\x01d8\x01da\x01dc-\x01dd\x01df\x01e1\x01e3\x01e5\x01e7\x01e9\x01eb\x01ed\x01ef-\x01f0\x01f3\x01f5\x01f9\x01fb\x01fd\x01ff\x0201\x0203\x0205\x0207\x0209\x020b\x020d\x020f\x0211\x0213\x0215\x0217\x0219\x021b\x021d\x021f\x0221\x0223\x0225\x0227\x0229\x022b\x022d\x022f\x0231\x0233-\x0236\x0250-\x02af\x0390\x03ac-\x03ce\x03d0-\x03d1\x03d5-\x03d7\x03d9\x03db\x03dd\x03df\x03e1\x03e3\x03e5\x03e7\x03e9\x03eb\x03ed\x03ef-\x03f3\x03f5\x03f8\x03fb\x0430-\x045f\x0461\x0463\x0465\x0467\x0469\x046b\x046d\x046f\x0471\x0473\x0475\x0477\x0479\x047b\x047d\x047f\x0481\x048b\x048d\x048f\x0491\x0493\x0495\x0497\x0499\x049b\x049d\x049f\x04a1\x04a3\x04a5\x04a7\x04a9\x04ab\x04ad\x04af\x04b1\x04b3\x04b5\x04b7\x04b9\x04bb\x04bd\x04bf\x04c2\x04c4\x04c6\x04c8\x04ca\x04cc\x04ce\x04d1\x04d3\x04d5\x04d7\x04d9\x04db\x04dd\x04df\x04e1\x04e3\x04e5\x04e7\x04e9\x04eb\x04ed\x04ef\x04f1\x04f3\x04f5\x04f9\x0501\x0503\x0505\x0507\x0509\x050b\x050d\x050f\x0561-\x0587\x1d00-\x1d2b\x1d62-\x1d6b\x1e01\x1e03\x1e05\x1e07\x1e09\x1e0b\x1e0d\x1e0f\x1e11\x1e13\x1e15\x1e17\x1e19\x1e1b\x1e1d\x1e1f\x1e21\x1e23\x1e25\x1e27\x1e29\x1e2b\x1e2d\x1e2f\x1e31\x1e33\x1e35\x1e37\x1e39\x1e3b\x1e3d\x1e3f\x1e41\x1e43\x1e45\x1e47\x1e49\x1e4b\x1e4d\x1e4f\x1e51\x1e53\x1e55\x1e57\x1e59\x1e5b\x1e5d\x1e5f\x1e61\x1e63\x1e65\x1e67\x1e69\x1e6b\x1e6d\x1e6f\x1e71\x1e73\x1e75\x1e77\x1e79\x1e7b\x1e7d\x1e7f\x1e81\x1e83\x1e85\x1e87\x1e89\x1e8b\x1e8d\x1e8f\x1e91\x1e93\x1e95-\x1e9b\x1ea1\x1ea3\x1ea5\x1ea7\x1ea9\x1eab\x1ead\x1eaf\x1eb1\x1eb3\x1eb5\x1eb7\x1eb9\x1ebb\x1ebd\x1ebf\x1ec1\x1ec3\x1ec5\x1ec7\x1ec9\x1ecb\x1ecd\x1ecf\x1ed1\x1ed3\x1ed5\x1ed7\x1ed9\x1edb\x1edd\x1edf\x1ee1\x1ee3\x1ee5\x1ee7\x1ee9\x1eeb\x1eed\x1eef\x1ef1\x1ef3\x1ef5\x1ef7\x1ef9\x1f00-\x1f07\x1f10-\x1f15\x1f20-\x1f27\x1f30-\x1f37\x1f40-\x1f45\x1f50-\x1f57\x1f60-\x1f67\x1f70-\x1f7d\x1f80-\x1f87\x1f90-\x1f97\x1fa0-\x1fa7\x1fb0-\x1fb4\x1fb6-\x1fb7\x1fbe\x1fc2-\x1fc4\x1fc6-\x1fc7\x1fd0-\x1fd3\x1fd6-\x1fd7\x1fe0-\x1fe7\x1ff2-\x1ff4\x1ff6-\x1ff7\x2071\x207f\x210a\x210e-\x210f\x2113\x212f\x2134\x2139\x213d\x2146-\x2149\xfb00-\xfb06\xfb13-\xfb17\xff41-\xff5a]

# Letter, Titlecase 
_define ChuLt [\x01c5\x01c8\x01cb\x01f2\x1f88-\x1f8f\x1f98-\x1f9f\x1fa8-\x1faf\x1fbc\x1fcc\x1ffc]

# Letter, Modifier 
_define ChuLm [\x02b0-\x02c1\x02c6-\x02d1\x02e0-\x02e4\x02ee\x037a\x0559\x0640\x06e5-\x06e6\x0e46\x0ec6\x17d7\x1843\x1d2c-\x1d61\x3005\x3031-\x3035\x303b\x309d-\x309e\x30fc-\x30fe]

# Letter, Other 
_define ChuLo [\x01bb\x01c0-\x01c3\x05d0-\x05ea\x05f0-\x05f2\x0621-\x063a\x0641-\x064a\x066e-\x066f\x0671-\x06d3\x06d5\x06ee-\x06ef\x06fa-\x06fc\x06ff\x0710\x0712-\x072f\x074d-\x074f\x0780-\x07a5\x07b1\x0904-\x0939\x093d\x0950\x0958-\x0961\x0985-\x098c\x098f-\x0990\x0993-\x09a8\x09aa-\x09b0\x09b2\x09b6-\x09b9\x09bd\x09dc-\x09dd\x09df-\x09e1\x09f0-\x09f1\x0a05-\x0a0a\x0a0f-\x0a10\x0a13-\x0a28\x0a2a-\x0a30\x0a32-\x0a33\x0a35-\x0a36\x0a38-\x0a39\x0a59-\x0a5c\x0a5e\x0a72-\x0a74\x0a85-\x0a8d\x0a8f-\x0a91\x0a93-\x0aa8\x0aaa-\x0ab0\x0ab2-\x0ab3\x0ab5-\x0ab9\x0abd\x0ad0\x0ae0-\x0ae1\x0b05-\x0b0c\x0b0f-\x0b10\x0b13-\x0b28\x0b2a-\x0b30\x0b32-\x0b33\x0b35-\x0b39\x0b3d\x0b5c-\x0b5d\x0b5f-\x0b61\x0b71\x0b83\x0b85-\x0b8a\x0b8e-\x0b90\x0b92-\x0b95\x0b99-\x0b9a\x0b9c\x0b9e-\x0b9f\x0ba3-\x0ba4\x0ba8-\x0baa\x0bae-\x0bb5\x0bb7-\x0bb9\x0c05-\x0c0c\x0c0e-\x0c10\x0c12-\x0c28\x0c2a-\x0c33\x0c35-\x0c39\x0c60-\x0c61\x0c85-\x0c8c\x0c8e-\x0c90\x0c92-\x0ca8\x0caa-\x0cb3\x0cb5-\x0cb9\x0cbd\x0cde\x0ce0-\x0ce1\x0d05-\x0d0c\x0d0e-\x0d10\x0d12-\x0d28\x0d2a-\x0d39\x0d60-\x0d61\x0d85-\x0d96\x0d9a-\x0db1\x0db3-\x0dbb\x0dbd\x0dc0-\x0dc6\x0e01-\x0e30\x0e32-\x0e33\x0e40-\x0e45\x0e81-\x0e82\x0e84\x0e87-\x0e88\x0e8a\x0e8d\x0e94-\x0e97\x0e99-\x0e9f\x0ea1-\x0ea3\x0ea5\x0ea7\x0eaa-\x0eab\x0ead-\x0eb0\x0eb2-\x0eb3\x0ebd\x0ec0-\x0ec4\x0edc-\x0edd\x0f00\x0f40-\x0f47\x0f49-\x0f6a\x0f88-\x0f8b\x1000-\x1021\x1023-\x1027\x1029-\x102a\x1050-\x1055\x10d0-\x10f8\x1100-\x1159\x115f-\x11a2\x11a8-\x11f9\x1200-\x1206\x1208-\x1246\x1248\x124a-\x124d\x1250-\x1256\x1258\x125a-\x125d\x1260-\x1286\x1288\x128a-\x128d\x1290-\x12ae\x12b0\x12b2-\x12b5\x12b8-\x12be\x12c0\x12c2-\x12c5\x12c8-\x12ce\x12d0-\x12d6\x12d8-\x12ee\x12f0-\x130e\x1310\x1312-\x1315\x1318-\x131e\x1320-\x1346\x1348-\x135a\x13a0-\x13f4\x1401-\x166c\x166f-\x1676\x1681-\x169a\x16a0-\x16ea\x1700-\x170c\x170e-\x1711\x1720-\x1731\x1740-\x1751\x1760-\x176c\x176e-\x1770\x1780-\x17b3\x17dc\x1820-\x1842\x1844-\x1877\x1880-\x18a8\x1900-\x191c\x1950-\x196d\x1970-\x1974\x2135-\x2138\x3006\x303c\x3041-\x3096\x309f\x30a1-\x30fa\x30ff\x3105-\x312c\x3131-\x318e\x31a0-\x31b7\x31f0-\x31ff\x3400\x4db5\x4e00\x9fa5\xa000-\xa48c\xac00\xd7a3\xf900-\xfa2d\xfa30-\xfa6a\xfb1d\xfb1f-\xfb28\xfb2a-\xfb36\xfb38-\xfb3c\xfb3e\xfb40-\xfb41\xfb43-\xfb44\xfb46-\xfbb1\xfbd3-\xfd3d\xfd50-\xfd8f\xfd92-\xfdc7\xfdf0-\xfdfb\xfe70-\xfe74\xfe76-\xfefc\xff66-\xffbe\xffc2-\xffc7\xffca-\xffcf\xffd2-\xffd7\xffda-\xffdc]

# Accented letter that normalizes to multiple characters (not in Unicode table) 
_define ChuLa [\x00c4\x00c6\x00d6\x00d8\x00dc\x00df\x00e4\x00e6\x00f6\x00f8\x00fc\x0152-\x0153]

# Mark, Non-Spacing 
_define ChuMn [\x0300-\x0357\x035d-\x036f\x0483-\x0486\x0591-\x05a1\x05a3-\x05b9\x05bb-\x05bd\x05bf\x05c1-\x05c2\x05c4\x0610-\x0615\x064b-\x0658\x0670\x06d6-\x06dc\x06df-\x06e4\x06e7-\x06e8\x06ea-\x06ed\x0711\x0730-\x074a\x07a6-\x07b0\x0901-\x0902\x093c\x0941-\x0948\x094d\x0951-\x0954\x0962-\x0963\x0981\x09bc\x09c1-\x09c4\x09cd\x09e2-\x09e3\x0a01-\x0a02\x0a3c\x0a41-\x0a42\x0a47-\x0a48\x0a4b-\x0a4d\x0a70-\x0a71\x0a81-\x0a82\x0abc\x0ac1-\x0ac5\x0ac7-\x0ac8\x0acd\x0ae2-\x0ae3\x0b01\x0b3c\x0b3f\x0b41-\x0b43\x0b4d\x0b56\x0b82\x0bc0\x0bcd\x0c3e-\x0c40\x0c46-\x0c48\x0c4a-\x0c4d\x0c55-\x0c56\x0cbc\x0cbf\x0cc6\x0ccc-\x0ccd\x0d41-\x0d43\x0d4d\x0dca\x0dd2-\x0dd4\x0dd6\x0e31\x0e34-\x0e3a\x0e47-\x0e4e\x0eb1\x0eb4-\x0eb9\x0ebb-\x0ebc\x0ec8-\x0ecd\x0f18-\x0f19\x0f35\x0f37\x0f39\x0f71-\x0f7e\x0f80-\x0f84\x0f86-\x0f87\x0f90-\x0f97\x0f99-\x0fbc\x0fc6\x102d-\x1030\x1032\x1036-\x1037\x1039\x1058-\x1059\x1712-\x1714\x1732-\x1734\x1752-\x1753\x1772-\x1773\x17b7-\x17bd\x17c6\x17c9-\x17d3\x17dd\x180b-\x180d\x18a9\x1920-\x1922\x1927-\x1928\x1932\x1939-\x193b\x20d0-\x20dc\x20e1\x20e5-\x20ea\x302a-\x302f\x3099-\x309a\xfb1e\xfe00-\xfe0f\xfe20-\xfe23]

# Mark, Spacing Combining 
_define ChuMc [\x0903\x093e-\x0940\x0949-\x094c\x0982-\x0983\x09be-\x09c0\x09c7-\x09c8\x09cb-\x09cc\x09d7\x0a03\x0a3e-\x0a40\x0a83\x0abe-\x0ac0\x0ac9\x0acb-\x0acc\x0b02-\x0b03\x0b3e\x0b40\x0b47-\x0b48\x0b4b-\x0b4c\x0b57\x0bbe-\x0bbf\x0bc1-\x0bc2\x0bc6-\x0bc8\x0bca-\x0bcc\x0bd7\x0c01-\x0c03\x0c41-\x0c44\x0c82-\x0c83\x0cbe\x0cc0-\x0cc4\x0cc7-\x0cc8\x0cca-\x0ccb\x0cd5-\x0cd6\x0d02-\x0d03\x0d3e-\x0d40\x0d46-\x0d48\x0d4a-\x0d4c\x0d57\x0d82-\x0d83\x0dcf-\x0dd1\x0dd8-\x0ddf\x0df2-\x0df3\x0f3e-\x0f3f\x0f7f\x102c\x1031\x1038\x1056-\x1057\x17b6\x17be-\x17c5\x17c7-\x17c8\x1923-\x1926\x1929-\x192b\x1930-\x1931\x1933-\x1938]

# Mark, Enclosing 
_define ChuMe [\x0488-\x0489\x06de\x20dd-\x20e0\x20e2-\x20e4]

# Number, Decimal Digit 
_define ChuNd [\x0030-\x0039\x0660-\x0669\x06f0-\x06f9\x0966-\x096f\x09e6-\x09ef\x0a66-\x0a6f\x0ae6-\x0aef\x0b66-\x0b6f\x0be7-\x0bef\x0c66-\x0c6f\x0ce6-\x0cef\x0d66-\x0d6f\x0e50-\x0e59\x0ed0-\x0ed9\x0f20-\x0f29\x1040-\x1049\x1369-\x1371\x17e0-\x17e9\x1810-\x1819\x1946-\x194f\xff10-\xff19]

# Number, Letter 
_define ChuNl [\x16ee-\x16f0\x2160-\x2183\x3007\x3021-\x3029\x3038-\x303a]

# Number, Other
_define ChuNo [\x00b2-\x00b3\x00b9\x00bc-\x00be\x09f4-\x09f9\x0bf0-\x0bf2\x0f2a-\x0f33\x1372-\x137c\x17f0-\x17f9\x2070\x2074-\x2079\x2080-\x2089\x2153-\x215f\x2460-\x249b\x24ea-\x24ff\x2776-\x2793\x3192-\x3195\x3220-\x3229\x3251-\x325f\x3280-\x3289\x32b1-\x32bf]

# Separator, Space 
_define ChuZs [\x0020\x00a0\x1680\x180e\x2000-\x200b\x202f\x205f\x3000]

# Separator, Line 
_define ChuZl [\x2028]

# Separator, Paragraph 
_define ChuZp [\x2029]

# Other, Control 
### _define ChuCc [\x0000-\x001F\x007f-\x009f] (sergeio: 0-3 have special meaning)
_define ChuCc [\x0004-\x001F\x007f-\x009f]

# Other, Format 
_define ChuCf [\x00ad\x0600-\x0603\x06dd\x070f\x17b4-\x17b5\x200c-\x200f\x202a-\x202e\x2060-\x2063\x206a-\x206f\xfeff\xfff9-\xfffb]

# Other, Surrogate 
_define ChuCs [\xd800\xdb7f-\xdb80\xdbff-\xdc00\xdfff]

# Other, Private Use 
_define ChuCo [\xe000\xf8ff]

# Punctuation, Connector 
_define ChuPc [\x005f\x203f-\x2040\x2054\x30fb\xfe33-\xfe34\xfe4d-\xfe4f\xff3f\xff65]

# Punctuation, Dash 
_define ChuPd [\x002d\x058a\x1806\x2010-\x2015\x301c\x3030\x30a0\xfe31-\xfe32\xfe58\xfe63\xff0d]

# Punctuation, Open 
_define ChuPs [\x0028\x005b\x007b\x0f3a\x0f3c\x169b\x201a\x201e\x2045\x207d\x208d\x2329\x23b4\x2768\x276a\x276c\x276e\x2770\x2772\x2774\x27e6\x27e8\x27ea\x2983\x2985\x2987\x2989\x298b\x298d\x298f\x2991\x2993\x2995\x2997\x29d8\x29da\x29fc\x3008\x300a\x300c\x300e\x3010\x3014\x3016\x3018\x301a\x301d\xfd3e\xfe35\xfe37\xfe39\xfe3b\xfe3d\xfe3f\xfe41\xfe43\xfe47\xfe59\xfe5b\xfe5d\xff08\xff3b\xff5b\xff5f\xff62]

# Punctuation, Close
_define ChuPe [\x0029\x005d\x007d\x0f3b\x0f3d\x169c\x2046\x207e\x208e\x232a\x23b5\x2769\x276b\x276d\x276f\x2771\x2773\x2775\x27e7\x27e9\x27eb\x2984\x2986\x2988\x298a\x298c\x298e\x2990\x2992\x2994\x2996\x2998\x29d9\x29db\x29fd\x3009\x300b\x300d\x300f\x3011\x3015\x3017\x3019\x301b\x301e-\x301f\xfd3f\xfe36\xfe38\xfe3a\xfe3c\xfe3e\xfe40\xfe42\xfe44\xfe48\xfe5a\xfe5c\xfe5e\xff09\xff3d\xff5d\xff60\xff63]

# Punctuation, Initial quote (may behave like Ps or Pe depending on usage) 
_define ChuPi [\x00ab\x2018\x201b-\x201c\x201f\x2039]

# Punctuation, Final quote (may behave like Ps or Pe depending on usage) 
_define ChuPf [\x00bb\x2019\x201d\x203a]

# Punctuation, Other 
_define ChuPo [\x0021-\x0023\x0025-\x0027\x002a\x002c\x002e-\x002f\x003a-\x003b\x003f-\x0040\x005c\x00a1\x00b7\x00bf\x037e\x0387\x055a-\x055f\x0589\x05be\x05c0\x05c3\x05f3-\x05f4\x060c-\x060d\x061b\x061f\x066a-\x066d\x06d4\x0700-\x070d\x0964-\x0965\x0970\x0df4\x0e4f\x0e5a-\x0e5b\x0f04-\x0f12\x0f85\x104a-\x104f\x10fb\x1361-\x1368\x166d-\x166e\x16eb-\x16ed\x1735-\x1736\x17d4-\x17d6\x17d8-\x17da\x1800-\x1805\x1807-\x180a\x1944-\x1945\x2016-\x2017\x2020-\x2027\x2030-\x2038\x203b-\x203e\x2041-\x2043\x2047-\x2051\x2053\x2057\x23b6\x3001-\x3003\x303d\xfe30\xfe45-\xfe46\xfe49-\xfe4c\xfe50-\xfe52\xfe54-\xfe57\xfe5f-\xfe61\xfe68\xfe6a-\xfe6b\xff01-\xff03\xff05-\xff07\xff0a\xff0c\xff0e-\xff0f\xff1a-\xff1b\xff1f-\xff20\xff3c\xff61\xff64]

# Symbol, Math 
_define ChuSm [\x002b\x003c-\x003e\x007c\x007e\x00ac\x00b1\x00d7\x00f7\x03f6\x2044\x2052\x207a-\x207c\x208a-\x208c\x2140-\x2144\x214b\x2190-\x2194\x219a-\x219b\x21a0\x21a3\x21a6\x21ae\x21ce-\x21cf\x21d2\x21d4\x21f4-\x22ff\x2308-\x230b\x2320-\x2321\x237c\x239b-\x23b3\x25b7\x25c1\x25f8-\x25ff\x266f\x27d0-\x27e5\x27f0-\x27ff\x2900-\x2982\x2999-\x29d7\x29dc-\x29fb\x29fe-\x2aff\xfb29\xfe62\xfe64-\xfe66\xff0b\xff1c-\xff1e\xff5c\xff5e\xffe2\xffe9-\xffec]

# Symbol, Currency 
_define ChuSc [\x0024\x00a2-\x00a5\x09f2-\x09f3\x0af1\x0bf9\x0e3f\x17db\x20a0-\x20b1\xfdfc\xfe69\xff04\xffe0-\xffe1\xffe5-\xffe6]

# Symbol, Modifier 
_define ChuSk [\x005e\x0060\x00a8\x00af\x00b4\x00b8\x02c2-\x02c5\x02d2-\x02df\x02e5-\x02ed\x02ef-\x02ff\x0374-\x0375\x0384-\x0385\x1fbd\x1fbf-\x1fc1\x1fcd-\x1fcf\x1fdd-\x1fdf\x1fed-\x1fef\x1ffd-\x1ffe\x309b-\x309c\xff3e\xff40\xffe3]

# Symbol, Other 
_define ChuSo [\x00a6-\x00a7\x00a9\x00ae\x00b0\x00b6\x0482\x060e-\x060f\x06e9\x06fd-\x06fe\x09fa\x0b70\x0bf3-\x0bf8\x0bfa\x0f01-\x0f03\x0f13-\x0f17\x0f1a-\x0f1f\x0f34\x0f36\x0f38\x0fbe-\x0fc5\x0fc7-\x0fcc\x0fcf\x1940\x19e0-\x19ff\x2100-\x2101\x2103-\x2106\x2108-\x2109\x2114\x2116-\x2118\x211e-\x2123\x2125\x2127\x2129\x212e\x2132\x213a-\x213b\x214a\x2195-\x2199\x219c-\x219f\x21a1-\x21a2\x21a4-\x21a5\x21a7-\x21ad\x21af-\x21cd\x21d0-\x21d1\x21d3\x21d5-\x21f3\x2300-\x2307\x230c-\x231f\x2322-\x2328\x232b-\x237b\x237d-\x239a\x23b7-\x23d0\x2400-\x2426\x2440-\x244a\x249c-\x24e9\x2500-\x25b6\x25b8-\x25c0\x25c2-\x25f7\x2600-\x2617\x2619-\x266e\x2670-\x267d\x2680-\x2691\x26a0-\x26a1\x2701-\x2704\x2706-\x2709\x270c-\x2727\x2729-\x274b\x274d\x274f-\x2752\x2756\x2758-\x275e\x2761-\x2767\x2794\x2798-\x27af\x27b1-\x27be\x2800-\x28ff\x2b00-\x2b0d\x2e80-\x2e99\x2e9b-\x2ef3\x2f00-\x2fd5\x2ff0-\x2ffb\x3004\x3012-\x3013\x3020\x3036-\x3037\x303e-\x303f\x3190-\x3191\x3196-\x319f\x3200-\x321e\x322a-\x3243\x3250\x3260-\x327d\x327f\x328a-\x32b0\x32c0-\x32fe\x3300-\x33ff\x4dc0-\x4dff\xa490-\xa4c6\xfdfd\xffe4\xffe8\xffed-\xffee\xfffc-\xfffd]



# all letters with tag UCT_L*
_define ChuLX [\x0041-\x005a\x0061-\x007a\x00aa\x00b5\x00ba\x00c0-\x00d6\x00d8-\x00f6\x00f8-\x0236\x0250-\x02c1\x02c6-\x02d1\x02e0-\x02e4\x02ee\x037a\x0386\x0388-\x038a\x038c\x038e-\x03a1\x03a3-\x03ce\x03d0-\x03f5\x03f7-\x03fb\x0400-\x0481\x048a-\x04ce\x04d0-\x04f5\x04f8-\x04f9\x0500-\x050f\x0531-\x0556\x0559\x0561-\x0587\x05d0-\x05ea\x05f0-\x05f2\x0621-\x063a\x0640-\x064a\x066e-\x066f\x0671-\x06d3\x06d5\x06e5-\x06e6\x06ee-\x06ef\x06fa-\x06fc\x06ff\x0710\x0712-\x072f\x074d-\x074f\x0780-\x07a5\x07b1\x0904-\x0939\x093d\x0950\x0958-\x0961\x0985-\x098c\x098f-\x0990\x0993-\x09a8\x09aa-\x09b0\x09b2\x09b6-\x09b9\x09bd\x09dc-\x09dd\x09df-\x09e1\x09f0-\x09f1\x0a05-\x0a0a\x0a0f-\x0a10\x0a13-\x0a28\x0a2a-\x0a30\x0a32-\x0a33\x0a35-\x0a36\x0a38-\x0a39\x0a59-\x0a5c\x0a5e\x0a72-\x0a74\x0a85-\x0a8d\x0a8f-\x0a91\x0a93-\x0aa8\x0aaa-\x0ab0\x0ab2-\x0ab3\x0ab5-\x0ab9\x0abd\x0ad0\x0ae0-\x0ae1\x0b05-\x0b0c\x0b0f-\x0b10\x0b13-\x0b28\x0b2a-\x0b30\x0b32-\x0b33\x0b35-\x0b39\x0b3d\x0b5c-\x0b5d\x0b5f-\x0b61\x0b71\x0b83\x0b85-\x0b8a\x0b8e-\x0b90\x0b92-\x0b95\x0b99-\x0b9a\x0b9c\x0b9e-\x0b9f\x0ba3-\x0ba4\x0ba8-\x0baa\x0bae-\x0bb5\x0bb7-\x0bb9\x0c05-\x0c0c\x0c0e-\x0c10\x0c12-\x0c28\x0c2a-\x0c33\x0c35-\x0c39\x0c60-\x0c61\x0c85-\x0c8c\x0c8e-\x0c90\x0c92-\x0ca8\x0caa-\x0cb3\x0cb5-\x0cb9\x0cbd\x0cde\x0ce0-\x0ce1\x0d05-\x0d0c\x0d0e-\x0d10\x0d12-\x0d28\x0d2a-\x0d39\x0d60-\x0d61\x0d85-\x0d96\x0d9a-\x0db1\x0db3-\x0dbb\x0dbd\x0dc0-\x0dc6\x0e01-\x0e30\x0e32-\x0e33\x0e40-\x0e46\x0e81-\x0e82\x0e84\x0e87-\x0e88\x0e8a\x0e8d\x0e94-\x0e97\x0e99-\x0e9f\x0ea1-\x0ea3\x0ea5\x0ea7\x0eaa-\x0eab\x0ead-\x0eb0\x0eb2-\x0eb3\x0ebd\x0ec0-\x0ec4\x0ec6\x0edc-\x0edd\x0f00\x0f40-\x0f47\x0f49-\x0f6a\x0f88-\x0f8b\x1000-\x1021\x1023-\x1027\x1029-\x102a\x1050-\x1055\x10a0-\x10c5\x10d0-\x10f8\x1100-\x1159\x115f-\x11a2\x11a8-\x11f9\x1200-\x1206\x1208-\x1246\x1248\x124a-\x124d\x1250-\x1256\x1258\x125a-\x125d\x1260-\x1286\x1288\x128a-\x128d\x1290-\x12ae\x12b0\x12b2-\x12b5\x12b8-\x12be\x12c0\x12c2-\x12c5\x12c8-\x12ce\x12d0-\x12d6\x12d8-\x12ee\x12f0-\x130e\x1310\x1312-\x1315\x1318-\x131e\x1320-\x1346\x1348-\x135a\x13a0-\x13f4\x1401-\x166c\x166f-\x1676\x1681-\x169a\x16a0-\x16ea\x1700-\x170c\x170e-\x1711\x1720-\x1731\x1740-\x1751\x1760-\x176c\x176e-\x1770\x1780-\x17b3\x17d7\x17dc\x1820-\x1877\x1880-\x18a8\x1900-\x191c\x1950-\x196d\x1970-\x1974\x1d00-\x1d6b\x1e00-\x1e9b\x1ea0-\x1ef9\x1f00-\x1f15\x1f18-\x1f1d\x1f20-\x1f45\x1f48-\x1f4d\x1f50-\x1f57\x1f59\x1f5b\x1f5d\x1f5f-\x1f7d\x1f80-\x1fb4\x1fb6-\x1fbc\x1fbe\x1fc2-\x1fc4\x1fc6-\x1fcc\x1fd0-\x1fd3\x1fd6-\x1fdb\x1fe0-\x1fec\x1ff2-\x1ff4\x1ff6-\x1ffc\x2071\x207f\x2102\x2107\x210a-\x2113\x2115\x2119-\x211d\x2124\x2126\x2128\x212a-\x212d\x212f-\x2131\x2133-\x2139\x213d-\x213f\x2145-\x2149\x3005-\x3006\x3031-\x3035\x303b-\x303c\x3041-\x3096\x309d-\x309f\x30a1-\x30fa\x30fc-\x30ff\x3105-\x312c\x3131-\x318e\x31a0-\x31b7\x31f0-\x31ff\x3400-\x4db5\x4e00-\x9fa5\xa000-\xa48c\xac00-\xd7a3\xf900-\xfa2d\xfa30-\xfa6a\xfb00-\xfb06\xfb13-\xfb17\xfb1d\xfb1f-\xfb28\xfb2a-\xfb36\xfb38-\xfb3c\xfb3e\xfb40-\xfb41\xfb43-\xfb44\xfb46-\xfbb1\xfbd3-\xfd3d\xfd50-\xfd8f\xfd92-\xfdc7\xfdf0-\xfdfb\xfe70-\xfe74\xfe76-\xfefc\xff21-\xff3a\xff41-\xff5a\xff66-\xffbe\xffc2-\xffc7\xffca-\xffcf\xffd2-\xffd7\xffda-\xffdc]

# all letters with tag UCT_P*
_define ChuPX [\x0021-\x0023\x0025-\x002a\x002c-\x002f\x003a-\x003b\x003f-\x0040\x005b-\x005d\x005f\x007b\x007d\x00a1\x00ab\x00b7\x00bb\x00bf\x037e\x0387\x055a-\x055f\x0589-\x058a\x05be\x05c0\x05c3\x05f3-\x05f4\x060c-\x060d\x061b\x061f\x066a-\x066d\x06d4\x0700-\x070d\x0964-\x0965\x0970\x0df4\x0e4f\x0e5a-\x0e5b\x0f04-\x0f12\x0f3a-\x0f3d\x0f85\x104a-\x104f\x10fb\x1361-\x1368\x166d-\x166e\x169b-\x169c\x16eb-\x16ed\x1735-\x1736\x17d4-\x17d6\x17d8-\x17da\x1800-\x180a\x1944-\x1945\x2010-\x2027\x2030-\x2043\x2045-\x2051\x2053-\x2054\x2057\x207d-\x207e\x208d-\x208e\x2329-\x232a\x23b4-\x23b6\x2768-\x2775\x27e6-\x27eb\x2983-\x2998\x29d8-\x29db\x29fc-\x29fd\x3001-\x3003\x3008-\x3011\x3014-\x301f\x3030\x303d\x30a0\x30fb\xfd3e-\xfd3f\xfe30-\xfe52\xfe54-\xfe61\xfe63\xfe68\xfe6a-\xfe6b\xff01-\xff03\xff05-\xff0a\xff0c-\xff0f\xff1a-\xff1b\xff1f-\xff20\xff3b-\xff3d\xff3f\xff5b\xff5d\xff5f-\xff65]

# all letters with tag UCT_N*
_define ChuNX [\x0030-\x0039\x00b2-\x00b3\x00b9\x00bc-\x00be\x0660-\x0669\x06f0-\x06f9\x0966-\x096f\x09e6-\x09ef\x09f4-\x09f9\x0a66-\x0a6f\x0ae6-\x0aef\x0b66-\x0b6f\x0be7-\x0bf2\x0c66-\x0c6f\x0ce6-\x0cef\x0d66-\x0d6f\x0e50-\x0e59\x0ed0-\x0ed9\x0f20-\x0f33\x1040-\x1049\x1369-\x137c\x16ee-\x16f0\x17e0-\x17e9\x17f0-\x17f9\x1810-\x1819\x1946-\x194f\x2070\x2074-\x2079\x2080-\x2089\x2153-\x2183\x2460-\x249b\x24ea-\x24ff\x2776-\x2793\x3007\x3021-\x3029\x3038-\x303a\x3192-\x3195\x3220-\x3229\x3251-\x325f\x3280-\x3289\x32b1-\x32bf\xff10-\xff19]



 # for all letters (UCT_L*|UCT_Mc|UCT_Mn|UCT_Me) their "to capital" part from the genunicodedata.h map and it is not equal to the "to lower" part
_define ChuOnlyCapital [\x41-\x5A\xC4\xC6\xD0\xD6\xD8\xDC-\xDE\x100\x102\x104\x106\x108\x10A\x10C\x10E\x110\x112\x114\x116\x118\x11A\x11C\x11E\x120\x122\x124\x126\x128\x12A\x12C\x12E\x130\x132\x134\x136\x139\x13B\x13D\x13F\x141\x143\x145\x147\x14A\x14C\x14E\x150\x152\x154\x156\x158\x15A\x15C\x15E\x160\x162\x164\x166\x168\x16A\x16C\x16E\x170\x172\x174\x176\x178-\x179\x17B\x17D\x181-\x182\x184\x186-\x187\x189-\x18B\x18E-\x191\x193-\x194\x196-\x198\x19C-\x19D\x19F-\x1A0\x1A2\x1A4\x1A6-\x1A7\x1A9\x1AC\x1AE-\x1AF\x1B1-\x1B3\x1B5\x1B7-\x1B8\x1BC\x1C4\x1C7\x1CA\x1CD\x1CF\x1D1\x1D3\x1D5\x1D7\x1D9\x1DB\x1DE\x1E0\x1E2\x1E4\x1E6\x1E8\x1EA\x1EC\x1EE\x1F1\x1F4\x1F6-\x1F8\x1FA\x1FC\x1FE\x200\x202\x204\x206\x208\x20A\x20C\x20E\x210\x212\x214\x216\x218\x21A\x21C\x21E\x220\x222\x224\x226\x228\x22A\x22C\x22E\x230\x232\x386\x388-\x38A\x38C\x38E-\x38F\x391-\x3A1\x3A3-\x3AB\x3D8\x3DA\x3DC\x3DE\x3E0\x3E2\x3E4\x3E6\x3E8\x3EA\x3EC\x3EE\x3F4\x3F7\x3F9-\x3FA\x400-\x42F\x460\x462\x464\x466\x468\x46A\x46C\x46E\x470\x472\x474\x476\x478\x47A\x47C\x47E\x480\x48A\x48C\x48E\x490\x492\x494\x496\x498\x49A\x49C\x49E\x4A0\x4A2\x4A4\x4A6\x4A8\x4AA\x4AC\x4AE\x4B0\x4B2\x4B4\x4B6\x4B8\x4BA\x4BC\x4BE\x4C1\x4C3\x4C5\x4C7\x4C9\x4CB\x4CD\x4D0\x4D2\x4D4\x4D6\x4D8\x4DA\x4DC\x4DE\x4E0\x4E2\x4E4\x4E6\x4E8\x4EA\x4EC\x4EE\x4F0\x4F2\x4F4\x4F8\x500\x502\x504\x506\x508\x50A\x50C\x50E\x531-\x556\x1E00\x1E02\x1E04\x1E06\x1E08\x1E0A\x1E0C\x1E0E\x1E10\x1E12\x1E14\x1E16\x1E18\x1E1A\x1E1C\x1E1E\x1E20\x1E22\x1E24\x1E26\x1E28\x1E2A\x1E2C\x1E2E\x1E30\x1E32\x1E34\x1E36\x1E38\x1E3A\x1E3C\x1E3E\x1E40\x1E42\x1E44\x1E46\x1E48\x1E4A\x1E4C\x1E4E\x1E50\x1E52\x1E54\x1E56\x1E58\x1E5A\x1E5C\x1E5E\x1E60\x1E62\x1E64\x1E66\x1E68\x1E6A\x1E6C\x1E6E\x1E70\x1E72\x1E74\x1E76\x1E78\x1E7A\x1E7C\x1E7E\x1E80\x1E82\x1E84\x1E86\x1E88\x1E8A\x1E8C\x1E8E\x1E90\x1E92\x1E94\x1EA0\x1EA2\x1EA4\x1EA6\x1EA8\x1EAA\x1EAC\x1EAE\x1EB0\x1EB2\x1EB4\x1EB6\x1EB8\x1EBA\x1EBC\x1EBE\x1EC0\x1EC2\x1EC4\x1EC6\x1EC8\x1ECA\x1ECC\x1ECE\x1ED0\x1ED2\x1ED4\x1ED6\x1ED8\x1EDA\x1EDC\x1EDE\x1EE0\x1EE2\x1EE4\x1EE6\x1EE8\x1EEA\x1EEC\x1EEE\x1EF0\x1EF2\x1EF4\x1EF6\x1EF8\x1F08-\x1F0F\x1F18-\x1F1D\x1F28-\x1F2F\x1F38-\x1F3F\x1F48-\x1F4D\x1F59\x1F5B\x1F5D\x1F5F\x1F68-\x1F6F\x1F88-\x1F8F\x1F98-\x1F9F\x1FA8-\x1FAF\x1FB8-\x1FBC\x1FC8-\x1FCC\x1FD8-\x1FDB\x1FE8-\x1FEC\x1FF8-\x1FFC\x2126\x212A-\x212B]

 # for all letters (UCT_L*|UCT_Mc|UCT_Mn|UCT_Me) their "to lower" part from the genunicodedata.h map
_define ChuOnlyLower [\x61-\x7A\xB5\xE4-\xE6\xF0\xF6\xF8\xFC-\xFF\x101\x103\x105\x107\x109\x10B\x10D\x10F\x111\x113\x115\x117\x119\x11B\x11D\x11F\x121\x123\x125\x127\x129\x12B\x12D\x12F\x131\x133\x135\x137\x13A\x13C\x13E\x140\x142\x144\x146\x148\x14B\x14D\x14F\x151\x153\x155\x157\x159\x15B\x15D\x15F\x161\x163\x165\x167\x169\x16B\x16D\x16F\x171\x173\x175\x177\x17A\x17C\x17E-\x17F\x183\x185\x188\x18C\x192\x195\x199\x19E\x1A1\x1A3\x1A5\x1A8\x1AD\x1B0\x1B4\x1B6\x1B9\x1BD\x1BF\x1C6\x1C9\x1CC\x1CE\x1D0\x1D2\x1D4\x1D6\x1D8\x1DA\x1DC-\x1DD\x1DF\x1E1\x1E3\x1E5\x1E7\x1E9\x1EB\x1ED\x1EF\x1F3\x1F5\x1F9\x1FB\x1FD\x1FF\x201\x203\x205\x207\x209\x20B\x20D\x20F\x211\x213\x215\x217\x219\x21B\x21D\x21F\x223\x225\x227\x229\x22B\x22D\x22F\x231\x233\x253-\x254\x256-\x257\x259\x25B\x260\x263\x268-\x269\x26F\x272\x275\x280\x283\x288\x28A-\x28B\x292\x345\x3AC-\x3AF\x3B1-\x3CE\x3D0-\x3D1\x3D5-\x3D6\x3D9\x3DB\x3DD\x3DF\x3E1\x3E3\x3E5\x3E7\x3E9\x3EB\x3ED\x3EF-\x3F2\x3F5\x3F8\x3FB\x430-\x45F\x461\x463\x465\x467\x469\x46B\x46D\x46F\x471\x473\x475\x477\x479\x47B\x47D\x47F\x481\x48B\x48D\x48F\x491\x493\x495\x497\x499\x49B\x49D\x49F\x4A1\x4A3\x4A5\x4A7\x4A9\x4AB\x4AD\x4AF\x4B1\x4B3\x4B5\x4B7\x4B9\x4BB\x4BD\x4BF\x4C2\x4C4\x4C6\x4C8\x4CA\x4CC\x4CE\x4D1\x4D3\x4D5\x4D7\x4D9\x4DB\x4DD\x4DF\x4E1\x4E3\x4E5\x4E7\x4E9\x4EB\x4ED\x4EF\x4F1\x4F3\x4F5\x4F9\x501\x503\x505\x507\x509\x50B\x50D\x50F\x561-\x586\x1E01\x1E03\x1E05\x1E07\x1E09\x1E0B\x1E0D\x1E0F\x1E11\x1E13\x1E15\x1E17\x1E19\x1E1B\x1E1D\x1E1F\x1E21\x1E23\x1E25\x1E27\x1E29\x1E2B\x1E2D\x1E2F\x1E31\x1E33\x1E35\x1E37\x1E39\x1E3B\x1E3D\x1E3F\x1E41\x1E43\x1E45\x1E47\x1E49\x1E4B\x1E4D\x1E4F\x1E51\x1E53\x1E55\x1E57\x1E59\x1E5B\x1E5D\x1E5F\x1E61\x1E63\x1E65\x1E67\x1E69\x1E6B\x1E6D\x1E6F\x1E71\x1E73\x1E75\x1E77\x1E79\x1E7B\x1E7D\x1E7F\x1E81\x1E83\x1E85\x1E87\x1E89\x1E8B\x1E8D\x1E8F\x1E91\x1E93\x1E95\x1E9B\x1EA1\x1EA3\x1EA5\x1EA7\x1EA9\x1EAB\x1EAD\x1EAF\x1EB1\x1EB3\x1EB5\x1EB7\x1EB9\x1EBB\x1EBD\x1EBF\x1EC1\x1EC3\x1EC5\x1EC7\x1EC9\x1ECB\x1ECD\x1ECF\x1ED1\x1ED3\x1ED5\x1ED7\x1ED9\x1EDB\x1EDD\x1EDF\x1EE1\x1EE3\x1EE5\x1EE7\x1EE9\x1EEB\x1EED\x1EEF\x1EF1\x1EF3\x1EF5\x1EF7\x1EF9\x1F00-\x1F07\x1F10-\x1F15\x1F20-\x1F27\x1F30-\x1F37\x1F40-\x1F45\x1F51\x1F53\x1F55\x1F57\x1F60-\x1F67\x1F70-\x1F7D\x1F80-\x1F87\x1F90-\x1F97\x1FA0-\x1FA7\x1FB0-\x1FB1\x1FB3\x1FBE\x1FC3\x1FD0-\x1FD1\x1FE0-\x1FE1\x1FE5\x1FF3]

 # all letters (UCT_L*|UCT_Mc|UCT_Mn|UCT_Me) from the genunicodedata.h map, where their "to lower" and "to upper" parts are equal
_define ChuCaseAgnostic [\xAA\xBA\xDF\x138\x149\x180\x18D\x19A-\x19B\x1AA-\x1AB\x1BA-\x1BB\x1BE\x1C0-\x1C3\x1F0\x221\x234-\x236\x250-\x252\x255\x258\x25A\x25C-\x25F\x261-\x262\x264-\x267\x26A-\x26E\x270-\x271\x273-\x274\x276-\x27F\x281-\x282\x284-\x287\x289\x28C-\x291\x293-\x2C1\x2C6-\x2D1\x2E0-\x2E4\x2EE\x300-\x344\x346-\x357\x35D-\x36F\x37A\x390\x3B0\x3D2-\x3D4\x3D7\x3F3\x483-\x486\x488-\x489\x4C0\x559\x587\x591-\x5A1\x5A3-\x5B9\x5BB-\x5BD\x5BF\x5C1-\x5C2\x5C4\x5D0-\x5EA\x5F0-\x5F2\x610-\x615\x621-\x63A\x640-\x658\x66E-\x6D3\x6D5-\x6DC\x6DE-\x6E8\x6EA-\x6EF\x6FA-\x6FC\x6FF\x710-\x74A\x74D-\x74F\x780-\x7B1\x901-\x939\x93C-\x94D\x950-\x954\x958-\x963\x981-\x983\x985-\x98C\x98F-\x990\x993-\x9A8\x9AA-\x9B0\x9B2\x9B6-\x9B9\x9BC-\x9C4\x9C7-\x9C8\x9CB-\x9CD\x9D7\x9DC-\x9DD\x9DF-\x9E3\x9F0-\x9F1\xA01-\xA03\xA05-\xA0A\xA0F-\xA10\xA13-\xA28\xA2A-\xA30\xA32-\xA33\xA35-\xA36\xA38-\xA39\xA3C\xA3E-\xA42\xA47-\xA48\xA4B-\xA4D\xA59-\xA5C\xA5E\xA70-\xA74\xA81-\xA83\xA85-\xA8D\xA8F-\xA91\xA93-\xAA8\xAAA-\xAB0\xAB2-\xAB3\xAB5-\xAB9\xABC-\xAC5\xAC7-\xAC9\xACB-\xACD\xAD0\xAE0-\xAE3\xB01-\xB03\xB05-\xB0C\xB0F-\xB10\xB13-\xB28\xB2A-\xB30\xB32-\xB33\xB35-\xB39\xB3C-\xB43\xB47-\xB48\xB4B-\xB4D\xB56-\xB57\xB5C-\xB5D\xB5F-\xB61\xB71\xB82-\xB83\xB85-\xB8A\xB8E-\xB90\xB92-\xB95\xB99-\xB9A\xB9C\xB9E-\xB9F\xBA3-\xBA4\xBA8-\xBAA\xBAE-\xBB5\xBB7-\xBB9\xBBE-\xBC2\xBC6-\xBC8\xBCA-\xBCD\xBD7\xC01-\xC03\xC05-\xC0C\xC0E-\xC10\xC12-\xC28\xC2A-\xC33\xC35-\xC39\xC3E-\xC44\xC46-\xC48\xC4A-\xC4D\xC55-\xC56\xC60-\xC61\xC82-\xC83\xC85-\xC8C\xC8E-\xC90\xC92-\xCA8\xCAA-\xCB3\xCB5-\xCB9\xCBC-\xCC4\xCC6-\xCC8\xCCA-\xCCD\xCD5-\xCD6\xCDE\xCE0-\xCE1\xD02-\xD03\xD05-\xD0C\xD0E-\xD10\xD12-\xD28\xD2A-\xD39\xD3E-\xD43\xD46-\xD48\xD4A-\xD4D\xD57\xD60-\xD61\xD82-\xD83\xD85-\xD96\xD9A-\xDB1\xDB3-\xDBB\xDBD\xDC0-\xDC6\xDCA\xDCF-\xDD4\xDD6\xDD8-\xDDF\xDF2-\xDF3\xE01-\xE3A\xE40-\xE4E\xE81-\xE82\xE84\xE87-\xE88\xE8A\xE8D\xE94-\xE97\xE99-\xE9F\xEA1-\xEA3\xEA5\xEA7\xEAA-\xEAB\xEAD-\xEB9\xEBB-\xEBD\xEC0-\xEC4\xEC6\xEC8-\xECD\xEDC-\xEDD\xF00\xF18-\xF19\xF35\xF37\xF39\xF3E-\xF47\xF49-\xF6A\xF71-\xF84\xF86-\xF8B\xF90-\xF97\xF99-\xFBC\xFC6\x1000-\x1021\x1023-\x1027\x1029-\x102A\x102C-\x1032\x1036-\x1039\x1050-\x1059\x10A0-\x10C5\x10D0-\x10F8\x1100-\x1159\x115F-\x11A2\x11A8-\x11F9\x1200-\x1206\x1208-\x1246\x1248\x124A-\x124D\x1250-\x1256\x1258\x125A-\x125D\x1260-\x1286\x1288\x128A-\x128D\x1290-\x12AE\x12B0\x12B2-\x12B5\x12B8-\x12BE\x12C0\x12C2-\x12C5\x12C8-\x12CE\x12D0-\x12D6\x12D8-\x12EE\x12F0-\x130E\x1310\x1312-\x1315\x1318-\x131E\x1320-\x1346\x1348-\x135A\x13A0-\x13F4\x1401-\x166C\x166F-\x1676\x1681-\x169A\x16A0-\x16EA\x1700-\x170C\x170E-\x1714\x1720-\x1734\x1740-\x1753\x1760-\x176C\x176E-\x1770\x1772-\x1773\x1780-\x17B3\x17B6-\x17D3\x17D7\x17DC-\x17DD\x180B-\x180D\x1820-\x1877\x1880-\x18A9\x1900-\x191C\x1920-\x192B\x1930-\x193B\x1950-\x196D\x1970-\x1974\x1D00-\x1D6B\x1E96-\x1E9A\x1F50\x1F52\x1F54\x1F56\x1FB2\x1FB4\x1FB6-\x1FB7\x1FC2\x1FC4\x1FC6-\x1FC7\x1FD2-\x1FD3\x1FD6-\x1FD7\x1FE2-\x1FE4\x1FE6-\x1FE7\x1FF2\x1FF4\x1FF6-\x1FF7\x2071\x207F\x20D0-\x20EA\x2102\x2107\x210A-\x2113\x2115\x2119-\x211D\x2124\x2128\x212C-\x212D\x212F-\x2131\x2133-\x2139\x213D-\x213F\x2145-\x2149\x3005-\x3006\x302A-\x302F\x3031-\x3035\x303B-\x303C\x3041-\x3096\x3099-\x309A\x309D-\x309F\x30A1-\x30FA\x30FC-\x30FF\x3105-\x312C\x3131-\x318E\x31A0-\x31B7\x31F0-\x31FF\x3400-\x4DB5\x4E00-\x9FA5\xA000-\xA48C\xAC00-\xD7A3\xF900-\xFA2D\xFA30-\xFA6A\xFB00-\xFB06\xFB13-\xFB17\xFB1D-\xFB28\xFB2A-\xFB36\xFB38-\xFB3C\xFB3E\xFB40-\xFB41\xFB43-\xFB44\xFB46-\xFBB1\xFBD3-\xFD3D\xFD50-\xFD8F\xFD92-\xFDC7\xFDF0-\xFDFB\xFE00-\xFE0F\xFE20-\xFE23\xFE70-\xFE74\xFE76-\xFEFC\xFFA0-\xFFBE\xFFC2-\xFFC7\xFFCA-\xFFCF\xFFD2-\xFFD7\xFFDA-\xFFDC]

