// File generated with precis-tools version 0.1.9

static EXCEPTIONS: [(Codepoints, DerivedPropertyValue); 41] = [
	(Codepoints::Single(0x00B7), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x00DF), DerivedPropertyValue::PValid),
	(Codepoints::Single(0x0375), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x03C2), DerivedPropertyValue::PValid),
	(Codepoints::Single(0x05F3), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x05F4), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0640), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x0660), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0661), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0662), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0663), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0664), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0665), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0666), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0667), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0668), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x0669), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F0), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F1), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F2), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F3), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F4), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F5), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F6), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F7), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F8), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06F9), DerivedPropertyValue::ContextO),
	(Codepoints::Single(0x06FD), DerivedPropertyValue::PValid),
	(Codepoints::Single(0x06FE), DerivedPropertyValue::PValid),
	(Codepoints::Single(0x07FA), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x0F0B), DerivedPropertyValue::PValid),
	(Codepoints::Single(0x3007), DerivedPropertyValue::PValid),
	(Codepoints::Single(0x302E), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x302F), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x3031), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x3032), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x3033), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x3034), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x3035), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x303B), DerivedPropertyValue::Disallowed),
	(Codepoints::Single(0x30FB), DerivedPropertyValue::ContextO),
];

static BACKWARD_COMPATIBLE: [(Codepoints, DerivedPropertyValue); 0] = [
];

static ASCII7: [Codepoints; 1] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x0021, 0x007e)),
];

static LOWERCASE_LETTER: [Codepoints; 611] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x0061, 0x007a)),
	Codepoints::Single(0x00b5),
	Codepoints::Range(std::ops::RangeInclusive::new(0x00df, 0x00f6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x00f8, 0x00ff)),
	Codepoints::Single(0x0101),
	Codepoints::Single(0x0103),
	Codepoints::Single(0x0105),
	Codepoints::Single(0x0107),
	Codepoints::Single(0x0109),
	Codepoints::Single(0x010b),
	Codepoints::Single(0x010d),
	Codepoints::Single(0x010f),
	Codepoints::Single(0x0111),
	Codepoints::Single(0x0113),
	Codepoints::Single(0x0115),
	Codepoints::Single(0x0117),
	Codepoints::Single(0x0119),
	Codepoints::Single(0x011b),
	Codepoints::Single(0x011d),
	Codepoints::Single(0x011f),
	Codepoints::Single(0x0121),
	Codepoints::Single(0x0123),
	Codepoints::Single(0x0125),
	Codepoints::Single(0x0127),
	Codepoints::Single(0x0129),
	Codepoints::Single(0x012b),
	Codepoints::Single(0x012d),
	Codepoints::Single(0x012f),
	Codepoints::Single(0x0131),
	Codepoints::Single(0x0133),
	Codepoints::Single(0x0135),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0137, 0x0138)),
	Codepoints::Single(0x013a),
	Codepoints::Single(0x013c),
	Codepoints::Single(0x013e),
	Codepoints::Single(0x0140),
	Codepoints::Single(0x0142),
	Codepoints::Single(0x0144),
	Codepoints::Single(0x0146),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0148, 0x0149)),
	Codepoints::Single(0x014b),
	Codepoints::Single(0x014d),
	Codepoints::Single(0x014f),
	Codepoints::Single(0x0151),
	Codepoints::Single(0x0153),
	Codepoints::Single(0x0155),
	Codepoints::Single(0x0157),
	Codepoints::Single(0x0159),
	Codepoints::Single(0x015b),
	Codepoints::Single(0x015d),
	Codepoints::Single(0x015f),
	Codepoints::Single(0x0161),
	Codepoints::Single(0x0163),
	Codepoints::Single(0x0165),
	Codepoints::Single(0x0167),
	Codepoints::Single(0x0169),
	Codepoints::Single(0x016b),
	Codepoints::Single(0x016d),
	Codepoints::Single(0x016f),
	Codepoints::Single(0x0171),
	Codepoints::Single(0x0173),
	Codepoints::Single(0x0175),
	Codepoints::Single(0x0177),
	Codepoints::Single(0x017a),
	Codepoints::Single(0x017c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x017e, 0x0180)),
	Codepoints::Single(0x0183),
	Codepoints::Single(0x0185),
	Codepoints::Single(0x0188),
	Codepoints::Range(std::ops::RangeInclusive::new(0x018c, 0x018d)),
	Codepoints::Single(0x0192),
	Codepoints::Single(0x0195),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0199, 0x019b)),
	Codepoints::Single(0x019e),
	Codepoints::Single(0x01a1),
	Codepoints::Single(0x01a3),
	Codepoints::Single(0x01a5),
	Codepoints::Single(0x01a8),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01aa, 0x01ab)),
	Codepoints::Single(0x01ad),
	Codepoints::Single(0x01b0),
	Codepoints::Single(0x01b4),
	Codepoints::Single(0x01b6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01b9, 0x01ba)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01bd, 0x01bf)),
	Codepoints::Single(0x01c6),
	Codepoints::Single(0x01c9),
	Codepoints::Single(0x01cc),
	Codepoints::Single(0x01ce),
	Codepoints::Single(0x01d0),
	Codepoints::Single(0x01d2),
	Codepoints::Single(0x01d4),
	Codepoints::Single(0x01d6),
	Codepoints::Single(0x01d8),
	Codepoints::Single(0x01da),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01dc, 0x01dd)),
	Codepoints::Single(0x01df),
	Codepoints::Single(0x01e1),
	Codepoints::Single(0x01e3),
	Codepoints::Single(0x01e5),
	Codepoints::Single(0x01e7),
	Codepoints::Single(0x01e9),
	Codepoints::Single(0x01eb),
	Codepoints::Single(0x01ed),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01ef, 0x01f0)),
	Codepoints::Single(0x01f3),
	Codepoints::Single(0x01f5),
	Codepoints::Single(0x01f9),
	Codepoints::Single(0x01fb),
	Codepoints::Single(0x01fd),
	Codepoints::Single(0x01ff),
	Codepoints::Single(0x0201),
	Codepoints::Single(0x0203),
	Codepoints::Single(0x0205),
	Codepoints::Single(0x0207),
	Codepoints::Single(0x0209),
	Codepoints::Single(0x020b),
	Codepoints::Single(0x020d),
	Codepoints::Single(0x020f),
	Codepoints::Single(0x0211),
	Codepoints::Single(0x0213),
	Codepoints::Single(0x0215),
	Codepoints::Single(0x0217),
	Codepoints::Single(0x0219),
	Codepoints::Single(0x021b),
	Codepoints::Single(0x021d),
	Codepoints::Single(0x021f),
	Codepoints::Single(0x0221),
	Codepoints::Single(0x0223),
	Codepoints::Single(0x0225),
	Codepoints::Single(0x0227),
	Codepoints::Single(0x0229),
	Codepoints::Single(0x022b),
	Codepoints::Single(0x022d),
	Codepoints::Single(0x022f),
	Codepoints::Single(0x0231),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0233, 0x0239)),
	Codepoints::Single(0x023c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x023f, 0x0240)),
	Codepoints::Single(0x0242),
	Codepoints::Single(0x0247),
	Codepoints::Single(0x0249),
	Codepoints::Single(0x024b),
	Codepoints::Single(0x024d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x024f, 0x0293)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0295, 0x02af)),
	Codepoints::Single(0x0371),
	Codepoints::Single(0x0373),
	Codepoints::Single(0x0377),
	Codepoints::Range(std::ops::RangeInclusive::new(0x037b, 0x037d)),
	Codepoints::Single(0x0390),
	Codepoints::Range(std::ops::RangeInclusive::new(0x03ac, 0x03ce)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x03d0, 0x03d1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x03d5, 0x03d7)),
	Codepoints::Single(0x03d9),
	Codepoints::Single(0x03db),
	Codepoints::Single(0x03dd),
	Codepoints::Single(0x03df),
	Codepoints::Single(0x03e1),
	Codepoints::Single(0x03e3),
	Codepoints::Single(0x03e5),
	Codepoints::Single(0x03e7),
	Codepoints::Single(0x03e9),
	Codepoints::Single(0x03eb),
	Codepoints::Single(0x03ed),
	Codepoints::Range(std::ops::RangeInclusive::new(0x03ef, 0x03f3)),
	Codepoints::Single(0x03f5),
	Codepoints::Single(0x03f8),
	Codepoints::Range(std::ops::RangeInclusive::new(0x03fb, 0x03fc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0430, 0x045f)),
	Codepoints::Single(0x0461),
	Codepoints::Single(0x0463),
	Codepoints::Single(0x0465),
	Codepoints::Single(0x0467),
	Codepoints::Single(0x0469),
	Codepoints::Single(0x046b),
	Codepoints::Single(0x046d),
	Codepoints::Single(0x046f),
	Codepoints::Single(0x0471),
	Codepoints::Single(0x0473),
	Codepoints::Single(0x0475),
	Codepoints::Single(0x0477),
	Codepoints::Single(0x0479),
	Codepoints::Single(0x047b),
	Codepoints::Single(0x047d),
	Codepoints::Single(0x047f),
	Codepoints::Single(0x0481),
	Codepoints::Single(0x048b),
	Codepoints::Single(0x048d),
	Codepoints::Single(0x048f),
	Codepoints::Single(0x0491),
	Codepoints::Single(0x0493),
	Codepoints::Single(0x0495),
	Codepoints::Single(0x0497),
	Codepoints::Single(0x0499),
	Codepoints::Single(0x049b),
	Codepoints::Single(0x049d),
	Codepoints::Single(0x049f),
	Codepoints::Single(0x04a1),
	Codepoints::Single(0x04a3),
	Codepoints::Single(0x04a5),
	Codepoints::Single(0x04a7),
	Codepoints::Single(0x04a9),
	Codepoints::Single(0x04ab),
	Codepoints::Single(0x04ad),
	Codepoints::Single(0x04af),
	Codepoints::Single(0x04b1),
	Codepoints::Single(0x04b3),
	Codepoints::Single(0x04b5),
	Codepoints::Single(0x04b7),
	Codepoints::Single(0x04b9),
	Codepoints::Single(0x04bb),
	Codepoints::Single(0x04bd),
	Codepoints::Single(0x04bf),
	Codepoints::Single(0x04c2),
	Codepoints::Single(0x04c4),
	Codepoints::Single(0x04c6),
	Codepoints::Single(0x04c8),
	Codepoints::Single(0x04ca),
	Codepoints::Single(0x04cc),
	Codepoints::Range(std::ops::RangeInclusive::new(0x04ce, 0x04cf)),
	Codepoints::Single(0x04d1),
	Codepoints::Single(0x04d3),
	Codepoints::Single(0x04d5),
	Codepoints::Single(0x04d7),
	Codepoints::Single(0x04d9),
	Codepoints::Single(0x04db),
	Codepoints::Single(0x04dd),
	Codepoints::Single(0x04df),
	Codepoints::Single(0x04e1),
	Codepoints::Single(0x04e3),
	Codepoints::Single(0x04e5),
	Codepoints::Single(0x04e7),
	Codepoints::Single(0x04e9),
	Codepoints::Single(0x04eb),
	Codepoints::Single(0x04ed),
	Codepoints::Single(0x04ef),
	Codepoints::Single(0x04f1),
	Codepoints::Single(0x04f3),
	Codepoints::Single(0x04f5),
	Codepoints::Single(0x04f7),
	Codepoints::Single(0x04f9),
	Codepoints::Single(0x04fb),
	Codepoints::Single(0x04fd),
	Codepoints::Single(0x04ff),
	Codepoints::Single(0x0501),
	Codepoints::Single(0x0503),
	Codepoints::Single(0x0505),
	Codepoints::Single(0x0507),
	Codepoints::Single(0x0509),
	Codepoints::Single(0x050b),
	Codepoints::Single(0x050d),
	Codepoints::Single(0x050f),
	Codepoints::Single(0x0511),
	Codepoints::Single(0x0513),
	Codepoints::Single(0x0515),
	Codepoints::Single(0x0517),
	Codepoints::Single(0x0519),
	Codepoints::Single(0x051b),
	Codepoints::Single(0x051d),
	Codepoints::Single(0x051f),
	Codepoints::Single(0x0521),
	Codepoints::Single(0x0523),
	Codepoints::Single(0x0525),
	Codepoints::Single(0x0527),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0561, 0x0587)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d00, 0x1d2b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d6b, 0x1d77)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d79, 0x1d9a)),
	Codepoints::Single(0x1e01),
	Codepoints::Single(0x1e03),
	Codepoints::Single(0x1e05),
	Codepoints::Single(0x1e07),
	Codepoints::Single(0x1e09),
	Codepoints::Single(0x1e0b),
	Codepoints::Single(0x1e0d),
	Codepoints::Single(0x1e0f),
	Codepoints::Single(0x1e11),
	Codepoints::Single(0x1e13),
	Codepoints::Single(0x1e15),
	Codepoints::Single(0x1e17),
	Codepoints::Single(0x1e19),
	Codepoints::Single(0x1e1b),
	Codepoints::Single(0x1e1d),
	Codepoints::Single(0x1e1f),
	Codepoints::Single(0x1e21),
	Codepoints::Single(0x1e23),
	Codepoints::Single(0x1e25),
	Codepoints::Single(0x1e27),
	Codepoints::Single(0x1e29),
	Codepoints::Single(0x1e2b),
	Codepoints::Single(0x1e2d),
	Codepoints::Single(0x1e2f),
	Codepoints::Single(0x1e31),
	Codepoints::Single(0x1e33),
	Codepoints::Single(0x1e35),
	Codepoints::Single(0x1e37),
	Codepoints::Single(0x1e39),
	Codepoints::Single(0x1e3b),
	Codepoints::Single(0x1e3d),
	Codepoints::Single(0x1e3f),
	Codepoints::Single(0x1e41),
	Codepoints::Single(0x1e43),
	Codepoints::Single(0x1e45),
	Codepoints::Single(0x1e47),
	Codepoints::Single(0x1e49),
	Codepoints::Single(0x1e4b),
	Codepoints::Single(0x1e4d),
	Codepoints::Single(0x1e4f),
	Codepoints::Single(0x1e51),
	Codepoints::Single(0x1e53),
	Codepoints::Single(0x1e55),
	Codepoints::Single(0x1e57),
	Codepoints::Single(0x1e59),
	Codepoints::Single(0x1e5b),
	Codepoints::Single(0x1e5d),
	Codepoints::Single(0x1e5f),
	Codepoints::Single(0x1e61),
	Codepoints::Single(0x1e63),
	Codepoints::Single(0x1e65),
	Codepoints::Single(0x1e67),
	Codepoints::Single(0x1e69),
	Codepoints::Single(0x1e6b),
	Codepoints::Single(0x1e6d),
	Codepoints::Single(0x1e6f),
	Codepoints::Single(0x1e71),
	Codepoints::Single(0x1e73),
	Codepoints::Single(0x1e75),
	Codepoints::Single(0x1e77),
	Codepoints::Single(0x1e79),
	Codepoints::Single(0x1e7b),
	Codepoints::Single(0x1e7d),
	Codepoints::Single(0x1e7f),
	Codepoints::Single(0x1e81),
	Codepoints::Single(0x1e83),
	Codepoints::Single(0x1e85),
	Codepoints::Single(0x1e87),
	Codepoints::Single(0x1e89),
	Codepoints::Single(0x1e8b),
	Codepoints::Single(0x1e8d),
	Codepoints::Single(0x1e8f),
	Codepoints::Single(0x1e91),
	Codepoints::Single(0x1e93),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1e95, 0x1e9d)),
	Codepoints::Single(0x1e9f),
	Codepoints::Single(0x1ea1),
	Codepoints::Single(0x1ea3),
	Codepoints::Single(0x1ea5),
	Codepoints::Single(0x1ea7),
	Codepoints::Single(0x1ea9),
	Codepoints::Single(0x1eab),
	Codepoints::Single(0x1ead),
	Codepoints::Single(0x1eaf),
	Codepoints::Single(0x1eb1),
	Codepoints::Single(0x1eb3),
	Codepoints::Single(0x1eb5),
	Codepoints::Single(0x1eb7),
	Codepoints::Single(0x1eb9),
	Codepoints::Single(0x1ebb),
	Codepoints::Single(0x1ebd),
	Codepoints::Single(0x1ebf),
	Codepoints::Single(0x1ec1),
	Codepoints::Single(0x1ec3),
	Codepoints::Single(0x1ec5),
	Codepoints::Single(0x1ec7),
	Codepoints::Single(0x1ec9),
	Codepoints::Single(0x1ecb),
	Codepoints::Single(0x1ecd),
	Codepoints::Single(0x1ecf),
	Codepoints::Single(0x1ed1),
	Codepoints::Single(0x1ed3),
	Codepoints::Single(0x1ed5),
	Codepoints::Single(0x1ed7),
	Codepoints::Single(0x1ed9),
	Codepoints::Single(0x1edb),
	Codepoints::Single(0x1edd),
	Codepoints::Single(0x1edf),
	Codepoints::Single(0x1ee1),
	Codepoints::Single(0x1ee3),
	Codepoints::Single(0x1ee5),
	Codepoints::Single(0x1ee7),
	Codepoints::Single(0x1ee9),
	Codepoints::Single(0x1eeb),
	Codepoints::Single(0x1eed),
	Codepoints::Single(0x1eef),
	Codepoints::Single(0x1ef1),
	Codepoints::Single(0x1ef3),
	Codepoints::Single(0x1ef5),
	Codepoints::Single(0x1ef7),
	Codepoints::Single(0x1ef9),
	Codepoints::Single(0x1efb),
	Codepoints::Single(0x1efd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1eff, 0x1f07)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f10, 0x1f15)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f20, 0x1f27)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f30, 0x1f37)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f40, 0x1f45)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f50, 0x1f57)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f60, 0x1f67)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f70, 0x1f7d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f80, 0x1f87)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f90, 0x1f97)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fa0, 0x1fa7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fb0, 0x1fb4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fb6, 0x1fb7)),
	Codepoints::Single(0x1fbe),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fc2, 0x1fc4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fc6, 0x1fc7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fd0, 0x1fd3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fd6, 0x1fd7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fe0, 0x1fe7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ff2, 0x1ff4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ff6, 0x1ff7)),
	Codepoints::Single(0x210a),
	Codepoints::Range(std::ops::RangeInclusive::new(0x210e, 0x210f)),
	Codepoints::Single(0x2113),
	Codepoints::Single(0x212f),
	Codepoints::Single(0x2134),
	Codepoints::Single(0x2139),
	Codepoints::Range(std::ops::RangeInclusive::new(0x213c, 0x213d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2146, 0x2149)),
	Codepoints::Single(0x214e),
	Codepoints::Single(0x2184),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2c30, 0x2c5e)),
	Codepoints::Single(0x2c61),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2c65, 0x2c66)),
	Codepoints::Single(0x2c68),
	Codepoints::Single(0x2c6a),
	Codepoints::Single(0x2c6c),
	Codepoints::Single(0x2c71),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2c73, 0x2c74)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2c76, 0x2c7b)),
	Codepoints::Single(0x2c81),
	Codepoints::Single(0x2c83),
	Codepoints::Single(0x2c85),
	Codepoints::Single(0x2c87),
	Codepoints::Single(0x2c89),
	Codepoints::Single(0x2c8b),
	Codepoints::Single(0x2c8d),
	Codepoints::Single(0x2c8f),
	Codepoints::Single(0x2c91),
	Codepoints::Single(0x2c93),
	Codepoints::Single(0x2c95),
	Codepoints::Single(0x2c97),
	Codepoints::Single(0x2c99),
	Codepoints::Single(0x2c9b),
	Codepoints::Single(0x2c9d),
	Codepoints::Single(0x2c9f),
	Codepoints::Single(0x2ca1),
	Codepoints::Single(0x2ca3),
	Codepoints::Single(0x2ca5),
	Codepoints::Single(0x2ca7),
	Codepoints::Single(0x2ca9),
	Codepoints::Single(0x2cab),
	Codepoints::Single(0x2cad),
	Codepoints::Single(0x2caf),
	Codepoints::Single(0x2cb1),
	Codepoints::Single(0x2cb3),
	Codepoints::Single(0x2cb5),
	Codepoints::Single(0x2cb7),
	Codepoints::Single(0x2cb9),
	Codepoints::Single(0x2cbb),
	Codepoints::Single(0x2cbd),
	Codepoints::Single(0x2cbf),
	Codepoints::Single(0x2cc1),
	Codepoints::Single(0x2cc3),
	Codepoints::Single(0x2cc5),
	Codepoints::Single(0x2cc7),
	Codepoints::Single(0x2cc9),
	Codepoints::Single(0x2ccb),
	Codepoints::Single(0x2ccd),
	Codepoints::Single(0x2ccf),
	Codepoints::Single(0x2cd1),
	Codepoints::Single(0x2cd3),
	Codepoints::Single(0x2cd5),
	Codepoints::Single(0x2cd7),
	Codepoints::Single(0x2cd9),
	Codepoints::Single(0x2cdb),
	Codepoints::Single(0x2cdd),
	Codepoints::Single(0x2cdf),
	Codepoints::Single(0x2ce1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2ce3, 0x2ce4)),
	Codepoints::Single(0x2cec),
	Codepoints::Single(0x2cee),
	Codepoints::Single(0x2cf3),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2d00, 0x2d25)),
	Codepoints::Single(0x2d27),
	Codepoints::Single(0x2d2d),
	Codepoints::Single(0xa641),
	Codepoints::Single(0xa643),
	Codepoints::Single(0xa645),
	Codepoints::Single(0xa647),
	Codepoints::Single(0xa649),
	Codepoints::Single(0xa64b),
	Codepoints::Single(0xa64d),
	Codepoints::Single(0xa64f),
	Codepoints::Single(0xa651),
	Codepoints::Single(0xa653),
	Codepoints::Single(0xa655),
	Codepoints::Single(0xa657),
	Codepoints::Single(0xa659),
	Codepoints::Single(0xa65b),
	Codepoints::Single(0xa65d),
	Codepoints::Single(0xa65f),
	Codepoints::Single(0xa661),
	Codepoints::Single(0xa663),
	Codepoints::Single(0xa665),
	Codepoints::Single(0xa667),
	Codepoints::Single(0xa669),
	Codepoints::Single(0xa66b),
	Codepoints::Single(0xa66d),
	Codepoints::Single(0xa681),
	Codepoints::Single(0xa683),
	Codepoints::Single(0xa685),
	Codepoints::Single(0xa687),
	Codepoints::Single(0xa689),
	Codepoints::Single(0xa68b),
	Codepoints::Single(0xa68d),
	Codepoints::Single(0xa68f),
	Codepoints::Single(0xa691),
	Codepoints::Single(0xa693),
	Codepoints::Single(0xa695),
	Codepoints::Single(0xa697),
	Codepoints::Single(0xa723),
	Codepoints::Single(0xa725),
	Codepoints::Single(0xa727),
	Codepoints::Single(0xa729),
	Codepoints::Single(0xa72b),
	Codepoints::Single(0xa72d),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa72f, 0xa731)),
	Codepoints::Single(0xa733),
	Codepoints::Single(0xa735),
	Codepoints::Single(0xa737),
	Codepoints::Single(0xa739),
	Codepoints::Single(0xa73b),
	Codepoints::Single(0xa73d),
	Codepoints::Single(0xa73f),
	Codepoints::Single(0xa741),
	Codepoints::Single(0xa743),
	Codepoints::Single(0xa745),
	Codepoints::Single(0xa747),
	Codepoints::Single(0xa749),
	Codepoints::Single(0xa74b),
	Codepoints::Single(0xa74d),
	Codepoints::Single(0xa74f),
	Codepoints::Single(0xa751),
	Codepoints::Single(0xa753),
	Codepoints::Single(0xa755),
	Codepoints::Single(0xa757),
	Codepoints::Single(0xa759),
	Codepoints::Single(0xa75b),
	Codepoints::Single(0xa75d),
	Codepoints::Single(0xa75f),
	Codepoints::Single(0xa761),
	Codepoints::Single(0xa763),
	Codepoints::Single(0xa765),
	Codepoints::Single(0xa767),
	Codepoints::Single(0xa769),
	Codepoints::Single(0xa76b),
	Codepoints::Single(0xa76d),
	Codepoints::Single(0xa76f),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa771, 0xa778)),
	Codepoints::Single(0xa77a),
	Codepoints::Single(0xa77c),
	Codepoints::Single(0xa77f),
	Codepoints::Single(0xa781),
	Codepoints::Single(0xa783),
	Codepoints::Single(0xa785),
	Codepoints::Single(0xa787),
	Codepoints::Single(0xa78c),
	Codepoints::Single(0xa78e),
	Codepoints::Single(0xa791),
	Codepoints::Single(0xa793),
	Codepoints::Single(0xa7a1),
	Codepoints::Single(0xa7a3),
	Codepoints::Single(0xa7a5),
	Codepoints::Single(0xa7a7),
	Codepoints::Single(0xa7a9),
	Codepoints::Single(0xa7fa),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb00, 0xfb06)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb13, 0xfb17)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff41, 0xff5a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10428, 0x1044f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d41a, 0x1d433)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d44e, 0x1d454)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d456, 0x1d467)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d482, 0x1d49b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4b6, 0x1d4b9)),
	Codepoints::Single(0x1d4bb),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4bd, 0x1d4c3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4c5, 0x1d4cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4ea, 0x1d503)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d51e, 0x1d537)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d552, 0x1d56b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d586, 0x1d59f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d5ba, 0x1d5d3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d5ee, 0x1d607)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d622, 0x1d63b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d656, 0x1d66f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d68a, 0x1d6a5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d6c2, 0x1d6da)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d6dc, 0x1d6e1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d6fc, 0x1d714)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d716, 0x1d71b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d736, 0x1d74e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d750, 0x1d755)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d770, 0x1d788)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d78a, 0x1d78f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d7aa, 0x1d7c2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d7c4, 0x1d7c9)),
	Codepoints::Single(0x1d7cb),
];

static UPPERCASE_LETTER: [Codepoints; 608] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x0041, 0x005a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x00c0, 0x00d6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x00d8, 0x00de)),
	Codepoints::Single(0x0100),
	Codepoints::Single(0x0102),
	Codepoints::Single(0x0104),
	Codepoints::Single(0x0106),
	Codepoints::Single(0x0108),
	Codepoints::Single(0x010a),
	Codepoints::Single(0x010c),
	Codepoints::Single(0x010e),
	Codepoints::Single(0x0110),
	Codepoints::Single(0x0112),
	Codepoints::Single(0x0114),
	Codepoints::Single(0x0116),
	Codepoints::Single(0x0118),
	Codepoints::Single(0x011a),
	Codepoints::Single(0x011c),
	Codepoints::Single(0x011e),
	Codepoints::Single(0x0120),
	Codepoints::Single(0x0122),
	Codepoints::Single(0x0124),
	Codepoints::Single(0x0126),
	Codepoints::Single(0x0128),
	Codepoints::Single(0x012a),
	Codepoints::Single(0x012c),
	Codepoints::Single(0x012e),
	Codepoints::Single(0x0130),
	Codepoints::Single(0x0132),
	Codepoints::Single(0x0134),
	Codepoints::Single(0x0136),
	Codepoints::Single(0x0139),
	Codepoints::Single(0x013b),
	Codepoints::Single(0x013d),
	Codepoints::Single(0x013f),
	Codepoints::Single(0x0141),
	Codepoints::Single(0x0143),
	Codepoints::Single(0x0145),
	Codepoints::Single(0x0147),
	Codepoints::Single(0x014a),
	Codepoints::Single(0x014c),
	Codepoints::Single(0x014e),
	Codepoints::Single(0x0150),
	Codepoints::Single(0x0152),
	Codepoints::Single(0x0154),
	Codepoints::Single(0x0156),
	Codepoints::Single(0x0158),
	Codepoints::Single(0x015a),
	Codepoints::Single(0x015c),
	Codepoints::Single(0x015e),
	Codepoints::Single(0x0160),
	Codepoints::Single(0x0162),
	Codepoints::Single(0x0164),
	Codepoints::Single(0x0166),
	Codepoints::Single(0x0168),
	Codepoints::Single(0x016a),
	Codepoints::Single(0x016c),
	Codepoints::Single(0x016e),
	Codepoints::Single(0x0170),
	Codepoints::Single(0x0172),
	Codepoints::Single(0x0174),
	Codepoints::Single(0x0176),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0178, 0x0179)),
	Codepoints::Single(0x017b),
	Codepoints::Single(0x017d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0181, 0x0182)),
	Codepoints::Single(0x0184),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0186, 0x0187)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0189, 0x018b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x018e, 0x0191)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0193, 0x0194)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0196, 0x0198)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x019c, 0x019d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x019f, 0x01a0)),
	Codepoints::Single(0x01a2),
	Codepoints::Single(0x01a4),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01a6, 0x01a7)),
	Codepoints::Single(0x01a9),
	Codepoints::Single(0x01ac),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01ae, 0x01af)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01b1, 0x01b3)),
	Codepoints::Single(0x01b5),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01b7, 0x01b8)),
	Codepoints::Single(0x01bc),
	Codepoints::Single(0x01c4),
	Codepoints::Single(0x01c7),
	Codepoints::Single(0x01ca),
	Codepoints::Single(0x01cd),
	Codepoints::Single(0x01cf),
	Codepoints::Single(0x01d1),
	Codepoints::Single(0x01d3),
	Codepoints::Single(0x01d5),
	Codepoints::Single(0x01d7),
	Codepoints::Single(0x01d9),
	Codepoints::Single(0x01db),
	Codepoints::Single(0x01de),
	Codepoints::Single(0x01e0),
	Codepoints::Single(0x01e2),
	Codepoints::Single(0x01e4),
	Codepoints::Single(0x01e6),
	Codepoints::Single(0x01e8),
	Codepoints::Single(0x01ea),
	Codepoints::Single(0x01ec),
	Codepoints::Single(0x01ee),
	Codepoints::Single(0x01f1),
	Codepoints::Single(0x01f4),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01f6, 0x01f8)),
	Codepoints::Single(0x01fa),
	Codepoints::Single(0x01fc),
	Codepoints::Single(0x01fe),
	Codepoints::Single(0x0200),
	Codepoints::Single(0x0202),
	Codepoints::Single(0x0204),
	Codepoints::Single(0x0206),
	Codepoints::Single(0x0208),
	Codepoints::Single(0x020a),
	Codepoints::Single(0x020c),
	Codepoints::Single(0x020e),
	Codepoints::Single(0x0210),
	Codepoints::Single(0x0212),
	Codepoints::Single(0x0214),
	Codepoints::Single(0x0216),
	Codepoints::Single(0x0218),
	Codepoints::Single(0x021a),
	Codepoints::Single(0x021c),
	Codepoints::Single(0x021e),
	Codepoints::Single(0x0220),
	Codepoints::Single(0x0222),
	Codepoints::Single(0x0224),
	Codepoints::Single(0x0226),
	Codepoints::Single(0x0228),
	Codepoints::Single(0x022a),
	Codepoints::Single(0x022c),
	Codepoints::Single(0x022e),
	Codepoints::Single(0x0230),
	Codepoints::Single(0x0232),
	Codepoints::Range(std::ops::RangeInclusive::new(0x023a, 0x023b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x023d, 0x023e)),
	Codepoints::Single(0x0241),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0243, 0x0246)),
	Codepoints::Single(0x0248),
	Codepoints::Single(0x024a),
	Codepoints::Single(0x024c),
	Codepoints::Single(0x024e),
	Codepoints::Single(0x0370),
	Codepoints::Single(0x0372),
	Codepoints::Single(0x0376),
	Codepoints::Single(0x0386),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0388, 0x038a)),
	Codepoints::Single(0x038c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x038e, 0x038f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0391, 0x03a1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x03a3, 0x03ab)),
	Codepoints::Single(0x03cf),
	Codepoints::Range(std::ops::RangeInclusive::new(0x03d2, 0x03d4)),
	Codepoints::Single(0x03d8),
	Codepoints::Single(0x03da),
	Codepoints::Single(0x03dc),
	Codepoints::Single(0x03de),
	Codepoints::Single(0x03e0),
	Codepoints::Single(0x03e2),
	Codepoints::Single(0x03e4),
	Codepoints::Single(0x03e6),
	Codepoints::Single(0x03e8),
	Codepoints::Single(0x03ea),
	Codepoints::Single(0x03ec),
	Codepoints::Single(0x03ee),
	Codepoints::Single(0x03f4),
	Codepoints::Single(0x03f7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x03f9, 0x03fa)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x03fd, 0x042f)),
	Codepoints::Single(0x0460),
	Codepoints::Single(0x0462),
	Codepoints::Single(0x0464),
	Codepoints::Single(0x0466),
	Codepoints::Single(0x0468),
	Codepoints::Single(0x046a),
	Codepoints::Single(0x046c),
	Codepoints::Single(0x046e),
	Codepoints::Single(0x0470),
	Codepoints::Single(0x0472),
	Codepoints::Single(0x0474),
	Codepoints::Single(0x0476),
	Codepoints::Single(0x0478),
	Codepoints::Single(0x047a),
	Codepoints::Single(0x047c),
	Codepoints::Single(0x047e),
	Codepoints::Single(0x0480),
	Codepoints::Single(0x048a),
	Codepoints::Single(0x048c),
	Codepoints::Single(0x048e),
	Codepoints::Single(0x0490),
	Codepoints::Single(0x0492),
	Codepoints::Single(0x0494),
	Codepoints::Single(0x0496),
	Codepoints::Single(0x0498),
	Codepoints::Single(0x049a),
	Codepoints::Single(0x049c),
	Codepoints::Single(0x049e),
	Codepoints::Single(0x04a0),
	Codepoints::Single(0x04a2),
	Codepoints::Single(0x04a4),
	Codepoints::Single(0x04a6),
	Codepoints::Single(0x04a8),
	Codepoints::Single(0x04aa),
	Codepoints::Single(0x04ac),
	Codepoints::Single(0x04ae),
	Codepoints::Single(0x04b0),
	Codepoints::Single(0x04b2),
	Codepoints::Single(0x04b4),
	Codepoints::Single(0x04b6),
	Codepoints::Single(0x04b8),
	Codepoints::Single(0x04ba),
	Codepoints::Single(0x04bc),
	Codepoints::Single(0x04be),
	Codepoints::Range(std::ops::RangeInclusive::new(0x04c0, 0x04c1)),
	Codepoints::Single(0x04c3),
	Codepoints::Single(0x04c5),
	Codepoints::Single(0x04c7),
	Codepoints::Single(0x04c9),
	Codepoints::Single(0x04cb),
	Codepoints::Single(0x04cd),
	Codepoints::Single(0x04d0),
	Codepoints::Single(0x04d2),
	Codepoints::Single(0x04d4),
	Codepoints::Single(0x04d6),
	Codepoints::Single(0x04d8),
	Codepoints::Single(0x04da),
	Codepoints::Single(0x04dc),
	Codepoints::Single(0x04de),
	Codepoints::Single(0x04e0),
	Codepoints::Single(0x04e2),
	Codepoints::Single(0x04e4),
	Codepoints::Single(0x04e6),
	Codepoints::Single(0x04e8),
	Codepoints::Single(0x04ea),
	Codepoints::Single(0x04ec),
	Codepoints::Single(0x04ee),
	Codepoints::Single(0x04f0),
	Codepoints::Single(0x04f2),
	Codepoints::Single(0x04f4),
	Codepoints::Single(0x04f6),
	Codepoints::Single(0x04f8),
	Codepoints::Single(0x04fa),
	Codepoints::Single(0x04fc),
	Codepoints::Single(0x04fe),
	Codepoints::Single(0x0500),
	Codepoints::Single(0x0502),
	Codepoints::Single(0x0504),
	Codepoints::Single(0x0506),
	Codepoints::Single(0x0508),
	Codepoints::Single(0x050a),
	Codepoints::Single(0x050c),
	Codepoints::Single(0x050e),
	Codepoints::Single(0x0510),
	Codepoints::Single(0x0512),
	Codepoints::Single(0x0514),
	Codepoints::Single(0x0516),
	Codepoints::Single(0x0518),
	Codepoints::Single(0x051a),
	Codepoints::Single(0x051c),
	Codepoints::Single(0x051e),
	Codepoints::Single(0x0520),
	Codepoints::Single(0x0522),
	Codepoints::Single(0x0524),
	Codepoints::Single(0x0526),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0531, 0x0556)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a0, 0x10c5)),
	Codepoints::Single(0x10c7),
	Codepoints::Single(0x10cd),
	Codepoints::Single(0x1e00),
	Codepoints::Single(0x1e02),
	Codepoints::Single(0x1e04),
	Codepoints::Single(0x1e06),
	Codepoints::Single(0x1e08),
	Codepoints::Single(0x1e0a),
	Codepoints::Single(0x1e0c),
	Codepoints::Single(0x1e0e),
	Codepoints::Single(0x1e10),
	Codepoints::Single(0x1e12),
	Codepoints::Single(0x1e14),
	Codepoints::Single(0x1e16),
	Codepoints::Single(0x1e18),
	Codepoints::Single(0x1e1a),
	Codepoints::Single(0x1e1c),
	Codepoints::Single(0x1e1e),
	Codepoints::Single(0x1e20),
	Codepoints::Single(0x1e22),
	Codepoints::Single(0x1e24),
	Codepoints::Single(0x1e26),
	Codepoints::Single(0x1e28),
	Codepoints::Single(0x1e2a),
	Codepoints::Single(0x1e2c),
	Codepoints::Single(0x1e2e),
	Codepoints::Single(0x1e30),
	Codepoints::Single(0x1e32),
	Codepoints::Single(0x1e34),
	Codepoints::Single(0x1e36),
	Codepoints::Single(0x1e38),
	Codepoints::Single(0x1e3a),
	Codepoints::Single(0x1e3c),
	Codepoints::Single(0x1e3e),
	Codepoints::Single(0x1e40),
	Codepoints::Single(0x1e42),
	Codepoints::Single(0x1e44),
	Codepoints::Single(0x1e46),
	Codepoints::Single(0x1e48),
	Codepoints::Single(0x1e4a),
	Codepoints::Single(0x1e4c),
	Codepoints::Single(0x1e4e),
	Codepoints::Single(0x1e50),
	Codepoints::Single(0x1e52),
	Codepoints::Single(0x1e54),
	Codepoints::Single(0x1e56),
	Codepoints::Single(0x1e58),
	Codepoints::Single(0x1e5a),
	Codepoints::Single(0x1e5c),
	Codepoints::Single(0x1e5e),
	Codepoints::Single(0x1e60),
	Codepoints::Single(0x1e62),
	Codepoints::Single(0x1e64),
	Codepoints::Single(0x1e66),
	Codepoints::Single(0x1e68),
	Codepoints::Single(0x1e6a),
	Codepoints::Single(0x1e6c),
	Codepoints::Single(0x1e6e),
	Codepoints::Single(0x1e70),
	Codepoints::Single(0x1e72),
	Codepoints::Single(0x1e74),
	Codepoints::Single(0x1e76),
	Codepoints::Single(0x1e78),
	Codepoints::Single(0x1e7a),
	Codepoints::Single(0x1e7c),
	Codepoints::Single(0x1e7e),
	Codepoints::Single(0x1e80),
	Codepoints::Single(0x1e82),
	Codepoints::Single(0x1e84),
	Codepoints::Single(0x1e86),
	Codepoints::Single(0x1e88),
	Codepoints::Single(0x1e8a),
	Codepoints::Single(0x1e8c),
	Codepoints::Single(0x1e8e),
	Codepoints::Single(0x1e90),
	Codepoints::Single(0x1e92),
	Codepoints::Single(0x1e94),
	Codepoints::Single(0x1e9e),
	Codepoints::Single(0x1ea0),
	Codepoints::Single(0x1ea2),
	Codepoints::Single(0x1ea4),
	Codepoints::Single(0x1ea6),
	Codepoints::Single(0x1ea8),
	Codepoints::Single(0x1eaa),
	Codepoints::Single(0x1eac),
	Codepoints::Single(0x1eae),
	Codepoints::Single(0x1eb0),
	Codepoints::Single(0x1eb2),
	Codepoints::Single(0x1eb4),
	Codepoints::Single(0x1eb6),
	Codepoints::Single(0x1eb8),
	Codepoints::Single(0x1eba),
	Codepoints::Single(0x1ebc),
	Codepoints::Single(0x1ebe),
	Codepoints::Single(0x1ec0),
	Codepoints::Single(0x1ec2),
	Codepoints::Single(0x1ec4),
	Codepoints::Single(0x1ec6),
	Codepoints::Single(0x1ec8),
	Codepoints::Single(0x1eca),
	Codepoints::Single(0x1ecc),
	Codepoints::Single(0x1ece),
	Codepoints::Single(0x1ed0),
	Codepoints::Single(0x1ed2),
	Codepoints::Single(0x1ed4),
	Codepoints::Single(0x1ed6),
	Codepoints::Single(0x1ed8),
	Codepoints::Single(0x1eda),
	Codepoints::Single(0x1edc),
	Codepoints::Single(0x1ede),
	Codepoints::Single(0x1ee0),
	Codepoints::Single(0x1ee2),
	Codepoints::Single(0x1ee4),
	Codepoints::Single(0x1ee6),
	Codepoints::Single(0x1ee8),
	Codepoints::Single(0x1eea),
	Codepoints::Single(0x1eec),
	Codepoints::Single(0x1eee),
	Codepoints::Single(0x1ef0),
	Codepoints::Single(0x1ef2),
	Codepoints::Single(0x1ef4),
	Codepoints::Single(0x1ef6),
	Codepoints::Single(0x1ef8),
	Codepoints::Single(0x1efa),
	Codepoints::Single(0x1efc),
	Codepoints::Single(0x1efe),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f08, 0x1f0f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f18, 0x1f1d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f28, 0x1f2f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f38, 0x1f3f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f48, 0x1f4d)),
	Codepoints::Single(0x1f59),
	Codepoints::Single(0x1f5b),
	Codepoints::Single(0x1f5d),
	Codepoints::Single(0x1f5f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f68, 0x1f6f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fb8, 0x1fbb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fc8, 0x1fcb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fd8, 0x1fdb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fe8, 0x1fec)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ff8, 0x1ffb)),
	Codepoints::Single(0x2102),
	Codepoints::Single(0x2107),
	Codepoints::Range(std::ops::RangeInclusive::new(0x210b, 0x210d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2110, 0x2112)),
	Codepoints::Single(0x2115),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2119, 0x211d)),
	Codepoints::Single(0x2124),
	Codepoints::Single(0x2126),
	Codepoints::Single(0x2128),
	Codepoints::Range(std::ops::RangeInclusive::new(0x212a, 0x212d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2130, 0x2133)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x213e, 0x213f)),
	Codepoints::Single(0x2145),
	Codepoints::Single(0x2183),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2c00, 0x2c2e)),
	Codepoints::Single(0x2c60),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2c62, 0x2c64)),
	Codepoints::Single(0x2c67),
	Codepoints::Single(0x2c69),
	Codepoints::Single(0x2c6b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2c6d, 0x2c70)),
	Codepoints::Single(0x2c72),
	Codepoints::Single(0x2c75),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2c7e, 0x2c80)),
	Codepoints::Single(0x2c82),
	Codepoints::Single(0x2c84),
	Codepoints::Single(0x2c86),
	Codepoints::Single(0x2c88),
	Codepoints::Single(0x2c8a),
	Codepoints::Single(0x2c8c),
	Codepoints::Single(0x2c8e),
	Codepoints::Single(0x2c90),
	Codepoints::Single(0x2c92),
	Codepoints::Single(0x2c94),
	Codepoints::Single(0x2c96),
	Codepoints::Single(0x2c98),
	Codepoints::Single(0x2c9a),
	Codepoints::Single(0x2c9c),
	Codepoints::Single(0x2c9e),
	Codepoints::Single(0x2ca0),
	Codepoints::Single(0x2ca2),
	Codepoints::Single(0x2ca4),
	Codepoints::Single(0x2ca6),
	Codepoints::Single(0x2ca8),
	Codepoints::Single(0x2caa),
	Codepoints::Single(0x2cac),
	Codepoints::Single(0x2cae),
	Codepoints::Single(0x2cb0),
	Codepoints::Single(0x2cb2),
	Codepoints::Single(0x2cb4),
	Codepoints::Single(0x2cb6),
	Codepoints::Single(0x2cb8),
	Codepoints::Single(0x2cba),
	Codepoints::Single(0x2cbc),
	Codepoints::Single(0x2cbe),
	Codepoints::Single(0x2cc0),
	Codepoints::Single(0x2cc2),
	Codepoints::Single(0x2cc4),
	Codepoints::Single(0x2cc6),
	Codepoints::Single(0x2cc8),
	Codepoints::Single(0x2cca),
	Codepoints::Single(0x2ccc),
	Codepoints::Single(0x2cce),
	Codepoints::Single(0x2cd0),
	Codepoints::Single(0x2cd2),
	Codepoints::Single(0x2cd4),
	Codepoints::Single(0x2cd6),
	Codepoints::Single(0x2cd8),
	Codepoints::Single(0x2cda),
	Codepoints::Single(0x2cdc),
	Codepoints::Single(0x2cde),
	Codepoints::Single(0x2ce0),
	Codepoints::Single(0x2ce2),
	Codepoints::Single(0x2ceb),
	Codepoints::Single(0x2ced),
	Codepoints::Single(0x2cf2),
	Codepoints::Single(0xa640),
	Codepoints::Single(0xa642),
	Codepoints::Single(0xa644),
	Codepoints::Single(0xa646),
	Codepoints::Single(0xa648),
	Codepoints::Single(0xa64a),
	Codepoints::Single(0xa64c),
	Codepoints::Single(0xa64e),
	Codepoints::Single(0xa650),
	Codepoints::Single(0xa652),
	Codepoints::Single(0xa654),
	Codepoints::Single(0xa656),
	Codepoints::Single(0xa658),
	Codepoints::Single(0xa65a),
	Codepoints::Single(0xa65c),
	Codepoints::Single(0xa65e),
	Codepoints::Single(0xa660),
	Codepoints::Single(0xa662),
	Codepoints::Single(0xa664),
	Codepoints::Single(0xa666),
	Codepoints::Single(0xa668),
	Codepoints::Single(0xa66a),
	Codepoints::Single(0xa66c),
	Codepoints::Single(0xa680),
	Codepoints::Single(0xa682),
	Codepoints::Single(0xa684),
	Codepoints::Single(0xa686),
	Codepoints::Single(0xa688),
	Codepoints::Single(0xa68a),
	Codepoints::Single(0xa68c),
	Codepoints::Single(0xa68e),
	Codepoints::Single(0xa690),
	Codepoints::Single(0xa692),
	Codepoints::Single(0xa694),
	Codepoints::Single(0xa696),
	Codepoints::Single(0xa722),
	Codepoints::Single(0xa724),
	Codepoints::Single(0xa726),
	Codepoints::Single(0xa728),
	Codepoints::Single(0xa72a),
	Codepoints::Single(0xa72c),
	Codepoints::Single(0xa72e),
	Codepoints::Single(0xa732),
	Codepoints::Single(0xa734),
	Codepoints::Single(0xa736),
	Codepoints::Single(0xa738),
	Codepoints::Single(0xa73a),
	Codepoints::Single(0xa73c),
	Codepoints::Single(0xa73e),
	Codepoints::Single(0xa740),
	Codepoints::Single(0xa742),
	Codepoints::Single(0xa744),
	Codepoints::Single(0xa746),
	Codepoints::Single(0xa748),
	Codepoints::Single(0xa74a),
	Codepoints::Single(0xa74c),
	Codepoints::Single(0xa74e),
	Codepoints::Single(0xa750),
	Codepoints::Single(0xa752),
	Codepoints::Single(0xa754),
	Codepoints::Single(0xa756),
	Codepoints::Single(0xa758),
	Codepoints::Single(0xa75a),
	Codepoints::Single(0xa75c),
	Codepoints::Single(0xa75e),
	Codepoints::Single(0xa760),
	Codepoints::Single(0xa762),
	Codepoints::Single(0xa764),
	Codepoints::Single(0xa766),
	Codepoints::Single(0xa768),
	Codepoints::Single(0xa76a),
	Codepoints::Single(0xa76c),
	Codepoints::Single(0xa76e),
	Codepoints::Single(0xa779),
	Codepoints::Single(0xa77b),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa77d, 0xa77e)),
	Codepoints::Single(0xa780),
	Codepoints::Single(0xa782),
	Codepoints::Single(0xa784),
	Codepoints::Single(0xa786),
	Codepoints::Single(0xa78b),
	Codepoints::Single(0xa78d),
	Codepoints::Single(0xa790),
	Codepoints::Single(0xa792),
	Codepoints::Single(0xa7a0),
	Codepoints::Single(0xa7a2),
	Codepoints::Single(0xa7a4),
	Codepoints::Single(0xa7a6),
	Codepoints::Single(0xa7a8),
	Codepoints::Single(0xa7aa),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff21, 0xff3a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10400, 0x10427)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d400, 0x1d419)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d434, 0x1d44d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d468, 0x1d481)),
	Codepoints::Single(0x1d49c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d49e, 0x1d49f)),
	Codepoints::Single(0x1d4a2),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4a5, 0x1d4a6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4a9, 0x1d4ac)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4ae, 0x1d4b5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4d0, 0x1d4e9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d504, 0x1d505)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d507, 0x1d50a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d50d, 0x1d514)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d516, 0x1d51c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d538, 0x1d539)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d53b, 0x1d53e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d540, 0x1d544)),
	Codepoints::Single(0x1d546),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d54a, 0x1d550)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d56c, 0x1d585)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d5a0, 0x1d5b9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d5d4, 0x1d5ed)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d608, 0x1d621)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d63c, 0x1d655)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d670, 0x1d689)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d6a8, 0x1d6c0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d6e2, 0x1d6fa)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d71c, 0x1d734)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d756, 0x1d76e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d790, 0x1d7a8)),
	Codepoints::Single(0x1d7ca),
];

static OTHER_LETTER: [Codepoints; 371] = [
	Codepoints::Single(0x00aa),
	Codepoints::Single(0x00ba),
	Codepoints::Single(0x01bb),
	Codepoints::Range(std::ops::RangeInclusive::new(0x01c0, 0x01c3)),
	Codepoints::Single(0x0294),
	Codepoints::Range(std::ops::RangeInclusive::new(0x05d0, 0x05ea)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x05f0, 0x05f2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0620, 0x063f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0641, 0x064a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x066e, 0x066f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0671, 0x06d3)),
	Codepoints::Single(0x06d5),
	Codepoints::Range(std::ops::RangeInclusive::new(0x06ee, 0x06ef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x06fa, 0x06fc)),
	Codepoints::Single(0x06ff),
	Codepoints::Single(0x0710),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0712, 0x072f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x074d, 0x07a5)),
	Codepoints::Single(0x07b1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x07ca, 0x07ea)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0800, 0x0815)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0840, 0x0858)),
	Codepoints::Single(0x08a0),
	Codepoints::Range(std::ops::RangeInclusive::new(0x08a2, 0x08ac)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0904, 0x0939)),
	Codepoints::Single(0x093d),
	Codepoints::Single(0x0950),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0958, 0x0961)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0972, 0x0977)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0979, 0x097f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0985, 0x098c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x098f, 0x0990)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0993, 0x09a8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09aa, 0x09b0)),
	Codepoints::Single(0x09b2),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09b6, 0x09b9)),
	Codepoints::Single(0x09bd),
	Codepoints::Single(0x09ce),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09dc, 0x09dd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09df, 0x09e1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09f0, 0x09f1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a05, 0x0a0a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a0f, 0x0a10)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a13, 0x0a28)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a2a, 0x0a30)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a32, 0x0a33)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a35, 0x0a36)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a38, 0x0a39)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a59, 0x0a5c)),
	Codepoints::Single(0x0a5e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a72, 0x0a74)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a85, 0x0a8d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a8f, 0x0a91)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a93, 0x0aa8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0aaa, 0x0ab0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ab2, 0x0ab3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ab5, 0x0ab9)),
	Codepoints::Single(0x0abd),
	Codepoints::Single(0x0ad0),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ae0, 0x0ae1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b05, 0x0b0c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b0f, 0x0b10)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b13, 0x0b28)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b2a, 0x0b30)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b32, 0x0b33)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b35, 0x0b39)),
	Codepoints::Single(0x0b3d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b5c, 0x0b5d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b5f, 0x0b61)),
	Codepoints::Single(0x0b71),
	Codepoints::Single(0x0b83),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b85, 0x0b8a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b8e, 0x0b90)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b92, 0x0b95)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b99, 0x0b9a)),
	Codepoints::Single(0x0b9c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b9e, 0x0b9f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ba3, 0x0ba4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ba8, 0x0baa)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bae, 0x0bb9)),
	Codepoints::Single(0x0bd0),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c05, 0x0c0c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c0e, 0x0c10)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c12, 0x0c28)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c2a, 0x0c33)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c35, 0x0c39)),
	Codepoints::Single(0x0c3d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c58, 0x0c59)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c60, 0x0c61)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c85, 0x0c8c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c8e, 0x0c90)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c92, 0x0ca8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0caa, 0x0cb3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cb5, 0x0cb9)),
	Codepoints::Single(0x0cbd),
	Codepoints::Single(0x0cde),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ce0, 0x0ce1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cf1, 0x0cf2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d05, 0x0d0c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d0e, 0x0d10)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d12, 0x0d3a)),
	Codepoints::Single(0x0d3d),
	Codepoints::Single(0x0d4e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d60, 0x0d61)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d7a, 0x0d7f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d85, 0x0d96)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d9a, 0x0db1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0db3, 0x0dbb)),
	Codepoints::Single(0x0dbd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0dc0, 0x0dc6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e01, 0x0e30)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e32, 0x0e33)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e40, 0x0e45)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e81, 0x0e82)),
	Codepoints::Single(0x0e84),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e87, 0x0e88)),
	Codepoints::Single(0x0e8a),
	Codepoints::Single(0x0e8d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e94, 0x0e97)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e99, 0x0e9f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ea1, 0x0ea3)),
	Codepoints::Single(0x0ea5),
	Codepoints::Single(0x0ea7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0eaa, 0x0eab)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ead, 0x0eb0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0eb2, 0x0eb3)),
	Codepoints::Single(0x0ebd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ec0, 0x0ec4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0edc, 0x0edf)),
	Codepoints::Single(0x0f00),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f40, 0x0f47)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f49, 0x0f6c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f88, 0x0f8c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1000, 0x102a)),
	Codepoints::Single(0x103f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1050, 0x1055)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x105a, 0x105d)),
	Codepoints::Single(0x1061),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1065, 0x1066)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x106e, 0x1070)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1075, 0x1081)),
	Codepoints::Single(0x108e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10d0, 0x10fa)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10fd, 0x1248)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x124a, 0x124d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1250, 0x1256)),
	Codepoints::Single(0x1258),
	Codepoints::Range(std::ops::RangeInclusive::new(0x125a, 0x125d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1260, 0x1288)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x128a, 0x128d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1290, 0x12b0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12b2, 0x12b5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12b8, 0x12be)),
	Codepoints::Single(0x12c0),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12c2, 0x12c5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12c8, 0x12d6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12d8, 0x1310)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1312, 0x1315)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1318, 0x135a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1380, 0x138f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x13a0, 0x13f4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1401, 0x166c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x166f, 0x167f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1681, 0x169a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16a0, 0x16ea)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1700, 0x170c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x170e, 0x1711)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1720, 0x1731)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1740, 0x1751)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1760, 0x176c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x176e, 0x1770)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1780, 0x17b3)),
	Codepoints::Single(0x17dc),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1820, 0x1842)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1844, 0x1877)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1880, 0x18a8)),
	Codepoints::Single(0x18aa),
	Codepoints::Range(std::ops::RangeInclusive::new(0x18b0, 0x18f5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1900, 0x191c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1950, 0x196d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1970, 0x1974)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1980, 0x19ab)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x19c1, 0x19c7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a00, 0x1a16)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a20, 0x1a54)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b05, 0x1b33)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b45, 0x1b4b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b83, 0x1ba0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1bae, 0x1baf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1bba, 0x1be5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c00, 0x1c23)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c4d, 0x1c4f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c5a, 0x1c77)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ce9, 0x1cec)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1cee, 0x1cf1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1cf5, 0x1cf6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2135, 0x2138)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2d30, 0x2d67)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2d80, 0x2d96)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2da0, 0x2da6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2da8, 0x2dae)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2db0, 0x2db6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2db8, 0x2dbe)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2dc0, 0x2dc6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2dc8, 0x2dce)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2dd0, 0x2dd6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2dd8, 0x2dde)),
	Codepoints::Single(0x3006),
	Codepoints::Single(0x303c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3041, 0x3096)),
	Codepoints::Single(0x309f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x30a1, 0x30fa)),
	Codepoints::Single(0x30ff),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3105, 0x312d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3131, 0x318e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x31a0, 0x31ba)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x31f0, 0x31ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3400, 0x4db5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x4e00, 0x9fcc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa000, 0xa014)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa016, 0xa48c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa4d0, 0xa4f7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa500, 0xa60b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa610, 0xa61f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa62a, 0xa62b)),
	Codepoints::Single(0xa66e),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa6a0, 0xa6e5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa7fb, 0xa801)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa803, 0xa805)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa807, 0xa80a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa80c, 0xa822)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa840, 0xa873)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa882, 0xa8b3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa8f2, 0xa8f7)),
	Codepoints::Single(0xa8fb),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa90a, 0xa925)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa930, 0xa946)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa960, 0xa97c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa984, 0xa9b2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa00, 0xaa28)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa40, 0xaa42)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa44, 0xaa4b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa60, 0xaa6f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa71, 0xaa76)),
	Codepoints::Single(0xaa7a),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa80, 0xaaaf)),
	Codepoints::Single(0xaab1),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaab5, 0xaab6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaab9, 0xaabd)),
	Codepoints::Single(0xaac0),
	Codepoints::Single(0xaac2),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaadb, 0xaadc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaae0, 0xaaea)),
	Codepoints::Single(0xaaf2),
	Codepoints::Range(std::ops::RangeInclusive::new(0xab01, 0xab06)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xab09, 0xab0e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xab11, 0xab16)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xab20, 0xab26)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xab28, 0xab2e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xabc0, 0xabe2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xac00, 0xd7a3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xd7b0, 0xd7c6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xd7cb, 0xd7fb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xf900, 0xfa6d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfa70, 0xfad9)),
	Codepoints::Single(0xfb1d),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb1f, 0xfb28)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb2a, 0xfb36)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb38, 0xfb3c)),
	Codepoints::Single(0xfb3e),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb40, 0xfb41)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb43, 0xfb44)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb46, 0xfbb1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfbd3, 0xfd3d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfd50, 0xfd8f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfd92, 0xfdc7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfdf0, 0xfdfb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe70, 0xfe74)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe76, 0xfefc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff66, 0xff6f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff71, 0xff9d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffa0, 0xffbe)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffc2, 0xffc7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffca, 0xffcf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffd2, 0xffd7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffda, 0xffdc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10000, 0x1000b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1000d, 0x10026)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10028, 0x1003a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1003c, 0x1003d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1003f, 0x1004d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10050, 0x1005d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10080, 0x100fa)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10280, 0x1029c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x102a0, 0x102d0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10300, 0x1031e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10330, 0x10340)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10342, 0x10349)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10380, 0x1039d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x103a0, 0x103c3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x103c8, 0x103cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10450, 0x1049d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10800, 0x10805)),
	Codepoints::Single(0x10808),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1080a, 0x10835)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10837, 0x10838)),
	Codepoints::Single(0x1083c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1083f, 0x10855)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10900, 0x10915)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10920, 0x10939)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10980, 0x109b7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x109be, 0x109bf)),
	Codepoints::Single(0x10a00),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a10, 0x10a13)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a15, 0x10a17)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a19, 0x10a33)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a60, 0x10a7c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b00, 0x10b35)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b40, 0x10b55)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b60, 0x10b72)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10c00, 0x10c48)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11003, 0x11037)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11083, 0x110af)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110d0, 0x110e8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11103, 0x11126)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11183, 0x111b2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x111c1, 0x111c4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11680, 0x116aa)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12000, 0x1236e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x13000, 0x1342e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16800, 0x16a38)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16f00, 0x16f44)),
	Codepoints::Single(0x16f50),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b000, 0x1b001)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee00, 0x1ee03)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee05, 0x1ee1f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee21, 0x1ee22)),
	Codepoints::Single(0x1ee24),
	Codepoints::Single(0x1ee27),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee29, 0x1ee32)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee34, 0x1ee37)),
	Codepoints::Single(0x1ee39),
	Codepoints::Single(0x1ee3b),
	Codepoints::Single(0x1ee42),
	Codepoints::Single(0x1ee47),
	Codepoints::Single(0x1ee49),
	Codepoints::Single(0x1ee4b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee4d, 0x1ee4f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee51, 0x1ee52)),
	Codepoints::Single(0x1ee54),
	Codepoints::Single(0x1ee57),
	Codepoints::Single(0x1ee59),
	Codepoints::Single(0x1ee5b),
	Codepoints::Single(0x1ee5d),
	Codepoints::Single(0x1ee5f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee61, 0x1ee62)),
	Codepoints::Single(0x1ee64),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee67, 0x1ee6a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee6c, 0x1ee72)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee74, 0x1ee77)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee79, 0x1ee7c)),
	Codepoints::Single(0x1ee7e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee80, 0x1ee89)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee8b, 0x1ee9b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1eea1, 0x1eea3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1eea5, 0x1eea9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1eeab, 0x1eebb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x20000, 0x2a6d6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2a700, 0x2b734)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b740, 0x2b81d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2f800, 0x2fa1d)),
];

static DECIMAL_NUMBER: [Codepoints; 42] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x0030, 0x0039)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0660, 0x0669)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x06f0, 0x06f9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x07c0, 0x07c9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0966, 0x096f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09e6, 0x09ef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a66, 0x0a6f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ae6, 0x0aef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b66, 0x0b6f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0be6, 0x0bef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c66, 0x0c6f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ce6, 0x0cef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d66, 0x0d6f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e50, 0x0e59)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ed0, 0x0ed9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f20, 0x0f29)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1040, 0x1049)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1090, 0x1099)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17e0, 0x17e9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1810, 0x1819)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1946, 0x194f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x19d0, 0x19d9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a80, 0x1a89)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a90, 0x1a99)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b50, 0x1b59)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1bb0, 0x1bb9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c40, 0x1c49)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c50, 0x1c59)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa620, 0xa629)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa8d0, 0xa8d9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa900, 0xa909)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa9d0, 0xa9d9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa50, 0xaa59)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xabf0, 0xabf9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff10, 0xff19)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x104a0, 0x104a9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11066, 0x1106f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110f0, 0x110f9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11136, 0x1113f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x111d0, 0x111d9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x116c0, 0x116c9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d7ce, 0x1d7ff)),
];

static MODIFIER_LETTER: [Codepoints; 52] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x02b0, 0x02c1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x02c6, 0x02d1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x02e0, 0x02e4)),
	Codepoints::Single(0x02ec),
	Codepoints::Single(0x02ee),
	Codepoints::Single(0x0374),
	Codepoints::Single(0x037a),
	Codepoints::Single(0x0559),
	Codepoints::Single(0x0640),
	Codepoints::Range(std::ops::RangeInclusive::new(0x06e5, 0x06e6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x07f4, 0x07f5)),
	Codepoints::Single(0x07fa),
	Codepoints::Single(0x081a),
	Codepoints::Single(0x0824),
	Codepoints::Single(0x0828),
	Codepoints::Single(0x0971),
	Codepoints::Single(0x0e46),
	Codepoints::Single(0x0ec6),
	Codepoints::Single(0x10fc),
	Codepoints::Single(0x17d7),
	Codepoints::Single(0x1843),
	Codepoints::Single(0x1aa7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c78, 0x1c7d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d2c, 0x1d6a)),
	Codepoints::Single(0x1d78),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d9b, 0x1dbf)),
	Codepoints::Single(0x2071),
	Codepoints::Single(0x207f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2090, 0x209c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2c7c, 0x2c7d)),
	Codepoints::Single(0x2d6f),
	Codepoints::Single(0x2e2f),
	Codepoints::Single(0x3005),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3031, 0x3035)),
	Codepoints::Single(0x303b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x309d, 0x309e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x30fc, 0x30fe)),
	Codepoints::Single(0xa015),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa4f8, 0xa4fd)),
	Codepoints::Single(0xa60c),
	Codepoints::Single(0xa67f),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa717, 0xa71f)),
	Codepoints::Single(0xa770),
	Codepoints::Single(0xa788),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa7f8, 0xa7f9)),
	Codepoints::Single(0xa9cf),
	Codepoints::Single(0xaa70),
	Codepoints::Single(0xaadd),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaaf3, 0xaaf4)),
	Codepoints::Single(0xff70),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff9e, 0xff9f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16f93, 0x16f9f)),
];

static NONSPACING_MARK: [Codepoints; 221] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x0300, 0x036f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0483, 0x0487)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0591, 0x05bd)),
	Codepoints::Single(0x05bf),
	Codepoints::Range(std::ops::RangeInclusive::new(0x05c1, 0x05c2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x05c4, 0x05c5)),
	Codepoints::Single(0x05c7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0610, 0x061a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x064b, 0x065f)),
	Codepoints::Single(0x0670),
	Codepoints::Range(std::ops::RangeInclusive::new(0x06d6, 0x06dc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x06df, 0x06e4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x06e7, 0x06e8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x06ea, 0x06ed)),
	Codepoints::Single(0x0711),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0730, 0x074a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x07a6, 0x07b0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x07eb, 0x07f3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0816, 0x0819)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x081b, 0x0823)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0825, 0x0827)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0829, 0x082d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0859, 0x085b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x08e4, 0x08fe)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0900, 0x0902)),
	Codepoints::Single(0x093a),
	Codepoints::Single(0x093c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0941, 0x0948)),
	Codepoints::Single(0x094d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0951, 0x0957)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0962, 0x0963)),
	Codepoints::Single(0x0981),
	Codepoints::Single(0x09bc),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09c1, 0x09c4)),
	Codepoints::Single(0x09cd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09e2, 0x09e3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a01, 0x0a02)),
	Codepoints::Single(0x0a3c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a41, 0x0a42)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a47, 0x0a48)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a4b, 0x0a4d)),
	Codepoints::Single(0x0a51),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a70, 0x0a71)),
	Codepoints::Single(0x0a75),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a81, 0x0a82)),
	Codepoints::Single(0x0abc),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ac1, 0x0ac5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ac7, 0x0ac8)),
	Codepoints::Single(0x0acd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ae2, 0x0ae3)),
	Codepoints::Single(0x0b01),
	Codepoints::Single(0x0b3c),
	Codepoints::Single(0x0b3f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b41, 0x0b44)),
	Codepoints::Single(0x0b4d),
	Codepoints::Single(0x0b56),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b62, 0x0b63)),
	Codepoints::Single(0x0b82),
	Codepoints::Single(0x0bc0),
	Codepoints::Single(0x0bcd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c3e, 0x0c40)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c46, 0x0c48)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c4a, 0x0c4d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c55, 0x0c56)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c62, 0x0c63)),
	Codepoints::Single(0x0cbc),
	Codepoints::Single(0x0cbf),
	Codepoints::Single(0x0cc6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ccc, 0x0ccd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ce2, 0x0ce3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d41, 0x0d44)),
	Codepoints::Single(0x0d4d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d62, 0x0d63)),
	Codepoints::Single(0x0dca),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0dd2, 0x0dd4)),
	Codepoints::Single(0x0dd6),
	Codepoints::Single(0x0e31),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e34, 0x0e3a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e47, 0x0e4e)),
	Codepoints::Single(0x0eb1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0eb4, 0x0eb9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ebb, 0x0ebc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ec8, 0x0ecd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f18, 0x0f19)),
	Codepoints::Single(0x0f35),
	Codepoints::Single(0x0f37),
	Codepoints::Single(0x0f39),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f71, 0x0f7e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f80, 0x0f84)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f86, 0x0f87)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f8d, 0x0f97)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f99, 0x0fbc)),
	Codepoints::Single(0x0fc6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x102d, 0x1030)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1032, 0x1037)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1039, 0x103a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x103d, 0x103e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1058, 0x1059)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x105e, 0x1060)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1071, 0x1074)),
	Codepoints::Single(0x1082),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1085, 0x1086)),
	Codepoints::Single(0x108d),
	Codepoints::Single(0x109d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x135d, 0x135f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1712, 0x1714)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1732, 0x1734)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1752, 0x1753)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1772, 0x1773)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17b4, 0x17b5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17b7, 0x17bd)),
	Codepoints::Single(0x17c6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17c9, 0x17d3)),
	Codepoints::Single(0x17dd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x180b, 0x180d)),
	Codepoints::Single(0x18a9),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1920, 0x1922)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1927, 0x1928)),
	Codepoints::Single(0x1932),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1939, 0x193b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a17, 0x1a18)),
	Codepoints::Single(0x1a1b),
	Codepoints::Single(0x1a56),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a58, 0x1a5e)),
	Codepoints::Single(0x1a60),
	Codepoints::Single(0x1a62),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a65, 0x1a6c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a73, 0x1a7c)),
	Codepoints::Single(0x1a7f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b00, 0x1b03)),
	Codepoints::Single(0x1b34),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b36, 0x1b3a)),
	Codepoints::Single(0x1b3c),
	Codepoints::Single(0x1b42),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b6b, 0x1b73)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b80, 0x1b81)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ba2, 0x1ba5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ba8, 0x1ba9)),
	Codepoints::Single(0x1bab),
	Codepoints::Single(0x1be6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1be8, 0x1be9)),
	Codepoints::Single(0x1bed),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1bef, 0x1bf1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c2c, 0x1c33)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c36, 0x1c37)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1cd0, 0x1cd2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1cd4, 0x1ce0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ce2, 0x1ce8)),
	Codepoints::Single(0x1ced),
	Codepoints::Single(0x1cf4),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1dc0, 0x1de6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1dfc, 0x1dff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x20d0, 0x20dc)),
	Codepoints::Single(0x20e1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x20e5, 0x20f0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2cef, 0x2cf1)),
	Codepoints::Single(0x2d7f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2de0, 0x2dff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x302a, 0x302d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3099, 0x309a)),
	Codepoints::Single(0xa66f),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa674, 0xa67d)),
	Codepoints::Single(0xa69f),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa6f0, 0xa6f1)),
	Codepoints::Single(0xa802),
	Codepoints::Single(0xa806),
	Codepoints::Single(0xa80b),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa825, 0xa826)),
	Codepoints::Single(0xa8c4),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa8e0, 0xa8f1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa926, 0xa92d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa947, 0xa951)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa980, 0xa982)),
	Codepoints::Single(0xa9b3),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa9b6, 0xa9b9)),
	Codepoints::Single(0xa9bc),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa29, 0xaa2e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa31, 0xaa32)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa35, 0xaa36)),
	Codepoints::Single(0xaa43),
	Codepoints::Single(0xaa4c),
	Codepoints::Single(0xaab0),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaab2, 0xaab4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaab7, 0xaab8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaabe, 0xaabf)),
	Codepoints::Single(0xaac1),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaaec, 0xaaed)),
	Codepoints::Single(0xaaf6),
	Codepoints::Single(0xabe5),
	Codepoints::Single(0xabe8),
	Codepoints::Single(0xabed),
	Codepoints::Single(0xfb1e),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe00, 0xfe0f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe20, 0xfe26)),
	Codepoints::Single(0x101fd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a01, 0x10a03)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a05, 0x10a06)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a0c, 0x10a0f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a38, 0x10a3a)),
	Codepoints::Single(0x10a3f),
	Codepoints::Single(0x11001),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11038, 0x11046)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11080, 0x11081)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110b3, 0x110b6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110b9, 0x110ba)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11100, 0x11102)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11127, 0x1112b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1112d, 0x11134)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11180, 0x11181)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x111b6, 0x111be)),
	Codepoints::Single(0x116ab),
	Codepoints::Single(0x116ad),
	Codepoints::Range(std::ops::RangeInclusive::new(0x116b0, 0x116b5)),
	Codepoints::Single(0x116b7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16f8f, 0x16f92)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d167, 0x1d169)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d17b, 0x1d182)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d185, 0x1d18b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d1aa, 0x1d1ad)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d242, 0x1d244)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xe0100, 0xe01ef)),
];

static SPACING_MARK: [Codepoints; 126] = [
	Codepoints::Single(0x0903),
	Codepoints::Single(0x093b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x093e, 0x0940)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0949, 0x094c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x094e, 0x094f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0982, 0x0983)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09be, 0x09c0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09c7, 0x09c8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09cb, 0x09cc)),
	Codepoints::Single(0x09d7),
	Codepoints::Single(0x0a03),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a3e, 0x0a40)),
	Codepoints::Single(0x0a83),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0abe, 0x0ac0)),
	Codepoints::Single(0x0ac9),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0acb, 0x0acc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b02, 0x0b03)),
	Codepoints::Single(0x0b3e),
	Codepoints::Single(0x0b40),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b47, 0x0b48)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b4b, 0x0b4c)),
	Codepoints::Single(0x0b57),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bbe, 0x0bbf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bc1, 0x0bc2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bc6, 0x0bc8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bca, 0x0bcc)),
	Codepoints::Single(0x0bd7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c01, 0x0c03)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c41, 0x0c44)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c82, 0x0c83)),
	Codepoints::Single(0x0cbe),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cc0, 0x0cc4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cc7, 0x0cc8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cca, 0x0ccb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cd5, 0x0cd6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d02, 0x0d03)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d3e, 0x0d40)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d46, 0x0d48)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d4a, 0x0d4c)),
	Codepoints::Single(0x0d57),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d82, 0x0d83)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0dcf, 0x0dd1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0dd8, 0x0ddf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0df2, 0x0df3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f3e, 0x0f3f)),
	Codepoints::Single(0x0f7f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x102b, 0x102c)),
	Codepoints::Single(0x1031),
	Codepoints::Single(0x1038),
	Codepoints::Range(std::ops::RangeInclusive::new(0x103b, 0x103c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1056, 0x1057)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1062, 0x1064)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1067, 0x106d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1083, 0x1084)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1087, 0x108c)),
	Codepoints::Single(0x108f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x109a, 0x109c)),
	Codepoints::Single(0x17b6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17be, 0x17c5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17c7, 0x17c8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1923, 0x1926)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1929, 0x192b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1930, 0x1931)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1933, 0x1938)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x19b0, 0x19c0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x19c8, 0x19c9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a19, 0x1a1a)),
	Codepoints::Single(0x1a55),
	Codepoints::Single(0x1a57),
	Codepoints::Single(0x1a61),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a63, 0x1a64)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a6d, 0x1a72)),
	Codepoints::Single(0x1b04),
	Codepoints::Single(0x1b35),
	Codepoints::Single(0x1b3b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b3d, 0x1b41)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b43, 0x1b44)),
	Codepoints::Single(0x1b82),
	Codepoints::Single(0x1ba1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ba6, 0x1ba7)),
	Codepoints::Single(0x1baa),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1bac, 0x1bad)),
	Codepoints::Single(0x1be7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1bea, 0x1bec)),
	Codepoints::Single(0x1bee),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1bf2, 0x1bf3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c24, 0x1c2b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c34, 0x1c35)),
	Codepoints::Single(0x1ce1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1cf2, 0x1cf3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x302e, 0x302f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa823, 0xa824)),
	Codepoints::Single(0xa827),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa880, 0xa881)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa8b4, 0xa8c3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa952, 0xa953)),
	Codepoints::Single(0xa983),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa9b4, 0xa9b5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa9ba, 0xa9bb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa9bd, 0xa9c0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa2f, 0xaa30)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa33, 0xaa34)),
	Codepoints::Single(0xaa4d),
	Codepoints::Single(0xaa7b),
	Codepoints::Single(0xaaeb),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaaee, 0xaaef)),
	Codepoints::Single(0xaaf5),
	Codepoints::Range(std::ops::RangeInclusive::new(0xabe3, 0xabe4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xabe6, 0xabe7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xabe9, 0xabea)),
	Codepoints::Single(0xabec),
	Codepoints::Single(0x11000),
	Codepoints::Single(0x11002),
	Codepoints::Single(0x11082),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110b0, 0x110b2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110b7, 0x110b8)),
	Codepoints::Single(0x1112c),
	Codepoints::Single(0x11182),
	Codepoints::Range(std::ops::RangeInclusive::new(0x111b3, 0x111b5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x111bf, 0x111c0)),
	Codepoints::Single(0x116ac),
	Codepoints::Range(std::ops::RangeInclusive::new(0x116ae, 0x116af)),
	Codepoints::Single(0x116b6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16f51, 0x16f7e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d165, 0x1d166)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d16d, 0x1d172)),
];

static UNASSIGNED: [Codepoints; 542] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x0378, 0x0379)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x037f, 0x0383)),
	Codepoints::Single(0x038b),
	Codepoints::Single(0x038d),
	Codepoints::Single(0x03a2),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0528, 0x0530)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0557, 0x0558)),
	Codepoints::Single(0x0560),
	Codepoints::Single(0x0588),
	Codepoints::Range(std::ops::RangeInclusive::new(0x058b, 0x058e)),
	Codepoints::Single(0x0590),
	Codepoints::Range(std::ops::RangeInclusive::new(0x05c8, 0x05cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x05eb, 0x05ef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x05f5, 0x05ff)),
	Codepoints::Single(0x0605),
	Codepoints::Single(0x061d),
	Codepoints::Single(0x070e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x074b, 0x074c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x07b2, 0x07bf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x07fb, 0x07ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x082e, 0x082f)),
	Codepoints::Single(0x083f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x085c, 0x085d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x085f, 0x089f)),
	Codepoints::Single(0x08a1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x08ad, 0x08e3)),
	Codepoints::Single(0x08ff),
	Codepoints::Single(0x0978),
	Codepoints::Single(0x0980),
	Codepoints::Single(0x0984),
	Codepoints::Range(std::ops::RangeInclusive::new(0x098d, 0x098e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0991, 0x0992)),
	Codepoints::Single(0x09a9),
	Codepoints::Single(0x09b1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09b3, 0x09b5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09ba, 0x09bb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09c5, 0x09c6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09c9, 0x09ca)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09cf, 0x09d6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09d8, 0x09db)),
	Codepoints::Single(0x09de),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09e4, 0x09e5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09fc, 0x0a00)),
	Codepoints::Single(0x0a04),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a0b, 0x0a0e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a11, 0x0a12)),
	Codepoints::Single(0x0a29),
	Codepoints::Single(0x0a31),
	Codepoints::Single(0x0a34),
	Codepoints::Single(0x0a37),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a3a, 0x0a3b)),
	Codepoints::Single(0x0a3d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a43, 0x0a46)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a49, 0x0a4a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a4e, 0x0a50)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a52, 0x0a58)),
	Codepoints::Single(0x0a5d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a5f, 0x0a65)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0a76, 0x0a80)),
	Codepoints::Single(0x0a84),
	Codepoints::Single(0x0a8e),
	Codepoints::Single(0x0a92),
	Codepoints::Single(0x0aa9),
	Codepoints::Single(0x0ab1),
	Codepoints::Single(0x0ab4),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0aba, 0x0abb)),
	Codepoints::Single(0x0ac6),
	Codepoints::Single(0x0aca),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ace, 0x0acf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ad1, 0x0adf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ae4, 0x0ae5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0af2, 0x0b00)),
	Codepoints::Single(0x0b04),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b0d, 0x0b0e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b11, 0x0b12)),
	Codepoints::Single(0x0b29),
	Codepoints::Single(0x0b31),
	Codepoints::Single(0x0b34),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b3a, 0x0b3b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b45, 0x0b46)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b49, 0x0b4a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b4e, 0x0b55)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b58, 0x0b5b)),
	Codepoints::Single(0x0b5e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b64, 0x0b65)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b78, 0x0b81)),
	Codepoints::Single(0x0b84),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b8b, 0x0b8d)),
	Codepoints::Single(0x0b91),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b96, 0x0b98)),
	Codepoints::Single(0x0b9b),
	Codepoints::Single(0x0b9d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ba0, 0x0ba2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ba5, 0x0ba7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bab, 0x0bad)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bba, 0x0bbd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bc3, 0x0bc5)),
	Codepoints::Single(0x0bc9),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bce, 0x0bcf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bd1, 0x0bd6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bd8, 0x0be5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bfb, 0x0c00)),
	Codepoints::Single(0x0c04),
	Codepoints::Single(0x0c0d),
	Codepoints::Single(0x0c11),
	Codepoints::Single(0x0c29),
	Codepoints::Single(0x0c34),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c3a, 0x0c3c)),
	Codepoints::Single(0x0c45),
	Codepoints::Single(0x0c49),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c4e, 0x0c54)),
	Codepoints::Single(0x0c57),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c5a, 0x0c5f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c64, 0x0c65)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c70, 0x0c77)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c80, 0x0c81)),
	Codepoints::Single(0x0c84),
	Codepoints::Single(0x0c8d),
	Codepoints::Single(0x0c91),
	Codepoints::Single(0x0ca9),
	Codepoints::Single(0x0cb4),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cba, 0x0cbb)),
	Codepoints::Single(0x0cc5),
	Codepoints::Single(0x0cc9),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cce, 0x0cd4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cd7, 0x0cdd)),
	Codepoints::Single(0x0cdf),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ce4, 0x0ce5)),
	Codepoints::Single(0x0cf0),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0cf3, 0x0d01)),
	Codepoints::Single(0x0d04),
	Codepoints::Single(0x0d0d),
	Codepoints::Single(0x0d11),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d3b, 0x0d3c)),
	Codepoints::Single(0x0d45),
	Codepoints::Single(0x0d49),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d4f, 0x0d56)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d58, 0x0d5f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d64, 0x0d65)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d76, 0x0d78)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d80, 0x0d81)),
	Codepoints::Single(0x0d84),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d97, 0x0d99)),
	Codepoints::Single(0x0db2),
	Codepoints::Single(0x0dbc),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0dbe, 0x0dbf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0dc7, 0x0dc9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0dcb, 0x0dce)),
	Codepoints::Single(0x0dd5),
	Codepoints::Single(0x0dd7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0de0, 0x0df1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0df5, 0x0e00)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e3b, 0x0e3e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e5c, 0x0e80)),
	Codepoints::Single(0x0e83),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e85, 0x0e86)),
	Codepoints::Single(0x0e89),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e8b, 0x0e8c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e8e, 0x0e93)),
	Codepoints::Single(0x0e98),
	Codepoints::Single(0x0ea0),
	Codepoints::Single(0x0ea4),
	Codepoints::Single(0x0ea6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ea8, 0x0ea9)),
	Codepoints::Single(0x0eac),
	Codepoints::Single(0x0eba),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ebe, 0x0ebf)),
	Codepoints::Single(0x0ec5),
	Codepoints::Single(0x0ec7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ece, 0x0ecf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0eda, 0x0edb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0ee0, 0x0eff)),
	Codepoints::Single(0x0f48),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f6d, 0x0f70)),
	Codepoints::Single(0x0f98),
	Codepoints::Single(0x0fbd),
	Codepoints::Single(0x0fcd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0fdb, 0x0fff)),
	Codepoints::Single(0x10c6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10c8, 0x10cc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10ce, 0x10cf)),
	Codepoints::Single(0x1249),
	Codepoints::Range(std::ops::RangeInclusive::new(0x124e, 0x124f)),
	Codepoints::Single(0x1257),
	Codepoints::Single(0x1259),
	Codepoints::Range(std::ops::RangeInclusive::new(0x125e, 0x125f)),
	Codepoints::Single(0x1289),
	Codepoints::Range(std::ops::RangeInclusive::new(0x128e, 0x128f)),
	Codepoints::Single(0x12b1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12b6, 0x12b7)),
	Codepoints::Single(0x12bf),
	Codepoints::Single(0x12c1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12c6, 0x12c7)),
	Codepoints::Single(0x12d7),
	Codepoints::Single(0x1311),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1316, 0x1317)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x135b, 0x135c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x137d, 0x137f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x139a, 0x139f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x13f5, 0x13ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x169d, 0x169f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16f1, 0x16ff)),
	Codepoints::Single(0x170d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1715, 0x171f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1737, 0x173f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1754, 0x175f)),
	Codepoints::Single(0x176d),
	Codepoints::Single(0x1771),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1774, 0x177f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17de, 0x17df)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17ea, 0x17ef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17fa, 0x17ff)),
	Codepoints::Single(0x180f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x181a, 0x181f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1878, 0x187f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x18ab, 0x18af)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x18f6, 0x18ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x191d, 0x191f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x192c, 0x192f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x193c, 0x193f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1941, 0x1943)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x196e, 0x196f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1975, 0x197f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x19ac, 0x19af)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x19ca, 0x19cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x19db, 0x19dd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a1c, 0x1a1d)),
	Codepoints::Single(0x1a5f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a7d, 0x1a7e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a8a, 0x1a8f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a9a, 0x1a9f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1aae, 0x1aff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b4c, 0x1b4f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b7d, 0x1b7f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1bf4, 0x1bfb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c38, 0x1c3a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c4a, 0x1c4c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c80, 0x1cbf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1cc8, 0x1ccf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1cf7, 0x1cff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1de7, 0x1dfb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f16, 0x1f17)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f1e, 0x1f1f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f46, 0x1f47)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f4e, 0x1f4f)),
	Codepoints::Single(0x1f58),
	Codepoints::Single(0x1f5a),
	Codepoints::Single(0x1f5c),
	Codepoints::Single(0x1f5e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f7e, 0x1f7f)),
	Codepoints::Single(0x1fb5),
	Codepoints::Single(0x1fc5),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fd4, 0x1fd5)),
	Codepoints::Single(0x1fdc),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ff0, 0x1ff1)),
	Codepoints::Single(0x1ff5),
	Codepoints::Single(0x1fff),
	Codepoints::Single(0x2065),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2072, 0x2073)),
	Codepoints::Single(0x208f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x209d, 0x209f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x20bb, 0x20cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x20f1, 0x20ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x218a, 0x218f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x23f4, 0x23ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2427, 0x243f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x244b, 0x245f)),
	Codepoints::Single(0x2700),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b4d, 0x2b4f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b5a, 0x2bff)),
	Codepoints::Single(0x2c2f),
	Codepoints::Single(0x2c5f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2cf4, 0x2cf8)),
	Codepoints::Single(0x2d26),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2d28, 0x2d2c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2d2e, 0x2d2f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2d68, 0x2d6e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2d71, 0x2d7e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2d97, 0x2d9f)),
	Codepoints::Single(0x2da7),
	Codepoints::Single(0x2daf),
	Codepoints::Single(0x2db7),
	Codepoints::Single(0x2dbf),
	Codepoints::Single(0x2dc7),
	Codepoints::Single(0x2dcf),
	Codepoints::Single(0x2dd7),
	Codepoints::Single(0x2ddf),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e3c, 0x2e7f)),
	Codepoints::Single(0x2e9a),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2ef4, 0x2eff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2fd6, 0x2fef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2ffc, 0x2fff)),
	Codepoints::Single(0x3040),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3097, 0x3098)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3100, 0x3104)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x312e, 0x3130)),
	Codepoints::Single(0x318f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x31bb, 0x31bf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x31e4, 0x31ef)),
	Codepoints::Single(0x321f),
	Codepoints::Single(0x32ff),
	Codepoints::Range(std::ops::RangeInclusive::new(0x4db6, 0x4dbf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x9fcd, 0x9fff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa48d, 0xa48f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa4c7, 0xa4cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa62c, 0xa63f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa698, 0xa69e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa6f8, 0xa6ff)),
	Codepoints::Single(0xa78f),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa794, 0xa79f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa7ab, 0xa7f7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa82c, 0xa82f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa83a, 0xa83f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa878, 0xa87f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa8c5, 0xa8cd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa8da, 0xa8df)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa8fc, 0xa8ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa954, 0xa95e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa97d, 0xa97f)),
	Codepoints::Single(0xa9ce),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa9da, 0xa9dd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa9e0, 0xa9ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa37, 0xaa3f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa4e, 0xaa4f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa5a, 0xaa5b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa7c, 0xaa7f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaac3, 0xaada)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaaf7, 0xab00)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xab07, 0xab08)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xab0f, 0xab10)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xab17, 0xab1f)),
	Codepoints::Single(0xab27),
	Codepoints::Range(std::ops::RangeInclusive::new(0xab2f, 0xabbf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xabee, 0xabef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xabfa, 0xabff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xd7a4, 0xd7af)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xd7c7, 0xd7ca)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xd7fc, 0xd7ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xdb80, 0xdb7f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xdc00, 0xdbff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xe000, 0xdfff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xf900, 0xf8ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfa6e, 0xfa6f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfada, 0xfaff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb07, 0xfb12)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfb18, 0xfb1c)),
	Codepoints::Single(0xfb37),
	Codepoints::Single(0xfb3d),
	Codepoints::Single(0xfb3f),
	Codepoints::Single(0xfb42),
	Codepoints::Single(0xfb45),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfbc2, 0xfbd2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfd40, 0xfd4f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfd90, 0xfd91)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfdc8, 0xfdef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfdfe, 0xfdff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe1a, 0xfe1f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe27, 0xfe2f)),
	Codepoints::Single(0xfe53),
	Codepoints::Single(0xfe67),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe6c, 0xfe6f)),
	Codepoints::Single(0xfe75),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfefd, 0xfefe)),
	Codepoints::Single(0xff00),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffbf, 0xffc1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffc8, 0xffc9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffd0, 0xffd1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffd8, 0xffd9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffdd, 0xffdf)),
	Codepoints::Single(0xffe7),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffef, 0xfff8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfffe, 0xffff)),
	Codepoints::Single(0x1000c),
	Codepoints::Single(0x10027),
	Codepoints::Single(0x1003b),
	Codepoints::Single(0x1003e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1004e, 0x1004f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1005e, 0x1007f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x100fb, 0x100ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10103, 0x10106)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10134, 0x10136)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1018b, 0x1018f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1019c, 0x101cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x101fe, 0x1027f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1029d, 0x1029f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x102d1, 0x102ff)),
	Codepoints::Single(0x1031f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10324, 0x1032f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1034b, 0x1037f)),
	Codepoints::Single(0x1039e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x103c4, 0x103c7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x103d6, 0x103ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1049e, 0x1049f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x104aa, 0x107ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10806, 0x10807)),
	Codepoints::Single(0x10809),
	Codepoints::Single(0x10836),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10839, 0x1083b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1083d, 0x1083e)),
	Codepoints::Single(0x10856),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10860, 0x108ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1091c, 0x1091e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1093a, 0x1093e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10940, 0x1097f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x109b8, 0x109bd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x109c0, 0x109ff)),
	Codepoints::Single(0x10a04),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a07, 0x10a0b)),
	Codepoints::Single(0x10a14),
	Codepoints::Single(0x10a18),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a34, 0x10a37)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a3b, 0x10a3e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a48, 0x10a4f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a59, 0x10a5f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a80, 0x10aff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b36, 0x10b38)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b56, 0x10b57)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b73, 0x10b77)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b80, 0x10bff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10c49, 0x10e5f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10e7f, 0x10fff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1104e, 0x11051)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11070, 0x1107f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110c2, 0x110cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110e9, 0x110ef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110fa, 0x110ff)),
	Codepoints::Single(0x11135),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11144, 0x1117f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x111c9, 0x111cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x111da, 0x1167f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x116b8, 0x116bf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x116ca, 0x11fff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1236f, 0x123ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12463, 0x1246f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12474, 0x12fff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1342f, 0x167ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16a39, 0x16eff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16f45, 0x16f4f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16f7f, 0x16f8e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16fa0, 0x1afff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b002, 0x1cfff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d0f6, 0x1d0ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d127, 0x1d128)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d1de, 0x1d1ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d246, 0x1d2ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d357, 0x1d35f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d372, 0x1d3ff)),
	Codepoints::Single(0x1d455),
	Codepoints::Single(0x1d49d),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4a0, 0x1d4a1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4a3, 0x1d4a4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d4a7, 0x1d4a8)),
	Codepoints::Single(0x1d4ad),
	Codepoints::Single(0x1d4ba),
	Codepoints::Single(0x1d4bc),
	Codepoints::Single(0x1d4c4),
	Codepoints::Single(0x1d506),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d50b, 0x1d50c)),
	Codepoints::Single(0x1d515),
	Codepoints::Single(0x1d51d),
	Codepoints::Single(0x1d53a),
	Codepoints::Single(0x1d53f),
	Codepoints::Single(0x1d545),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d547, 0x1d549)),
	Codepoints::Single(0x1d551),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d6a6, 0x1d6a7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d7cc, 0x1d7cd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d800, 0x1edff)),
	Codepoints::Single(0x1ee04),
	Codepoints::Single(0x1ee20),
	Codepoints::Single(0x1ee23),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee25, 0x1ee26)),
	Codepoints::Single(0x1ee28),
	Codepoints::Single(0x1ee33),
	Codepoints::Single(0x1ee38),
	Codepoints::Single(0x1ee3a),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee3c, 0x1ee41)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee43, 0x1ee46)),
	Codepoints::Single(0x1ee48),
	Codepoints::Single(0x1ee4a),
	Codepoints::Single(0x1ee4c),
	Codepoints::Single(0x1ee50),
	Codepoints::Single(0x1ee53),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee55, 0x1ee56)),
	Codepoints::Single(0x1ee58),
	Codepoints::Single(0x1ee5a),
	Codepoints::Single(0x1ee5c),
	Codepoints::Single(0x1ee5e),
	Codepoints::Single(0x1ee60),
	Codepoints::Single(0x1ee63),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee65, 0x1ee66)),
	Codepoints::Single(0x1ee6b),
	Codepoints::Single(0x1ee73),
	Codepoints::Single(0x1ee78),
	Codepoints::Single(0x1ee7d),
	Codepoints::Single(0x1ee7f),
	Codepoints::Single(0x1ee8a),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ee9c, 0x1eea0)),
	Codepoints::Single(0x1eea4),
	Codepoints::Single(0x1eeaa),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1eebc, 0x1eeef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1eef2, 0x1efff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f02c, 0x1f02f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f094, 0x1f09f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f0af, 0x1f0b0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f0bf, 0x1f0c0)),
	Codepoints::Single(0x1f0d0),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f0e0, 0x1f0ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f10b, 0x1f10f)),
	Codepoints::Single(0x1f12f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f16c, 0x1f16f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f19b, 0x1f1e5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f203, 0x1f20f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f23b, 0x1f23f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f249, 0x1f24f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f252, 0x1f2ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f321, 0x1f32f)),
	Codepoints::Single(0x1f336),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f37d, 0x1f37f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f394, 0x1f39f)),
	Codepoints::Single(0x1f3c5),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f3cb, 0x1f3df)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f3f1, 0x1f3ff)),
	Codepoints::Single(0x1f43f),
	Codepoints::Single(0x1f441),
	Codepoints::Single(0x1f4f8),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f4fd, 0x1f4ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f53e, 0x1f53f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f544, 0x1f54f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f568, 0x1f5fa)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f641, 0x1f644)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f650, 0x1f67f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f6c6, 0x1f6ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f774, 0x1ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2a6d7, 0x2a6ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b735, 0x2b73f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b81e, 0x2f7ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2fa1e, 0xe0000)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xe0002, 0xe001f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xe0080, 0xe00ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xe01f0, 0xeffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffffe, 0xfffff)),
];

static CONTROL: [Codepoints; 2] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x0000, 0x001f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x007f, 0x009f)),
];

static SPACE_SEPARATOR: [Codepoints; 7] = [
	Codepoints::Single(0x0020),
	Codepoints::Single(0x00a0),
	Codepoints::Single(0x1680),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2000, 0x200a)),
	Codepoints::Single(0x202f),
	Codepoints::Single(0x205f),
	Codepoints::Single(0x3000),
];

static MATH_SYMBOL: [Codepoints; 64] = [
	Codepoints::Single(0x002b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x003c, 0x003e)),
	Codepoints::Single(0x007c),
	Codepoints::Single(0x007e),
	Codepoints::Single(0x00ac),
	Codepoints::Single(0x00b1),
	Codepoints::Single(0x00d7),
	Codepoints::Single(0x00f7),
	Codepoints::Single(0x03f6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0606, 0x0608)),
	Codepoints::Single(0x2044),
	Codepoints::Single(0x2052),
	Codepoints::Range(std::ops::RangeInclusive::new(0x207a, 0x207c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x208a, 0x208c)),
	Codepoints::Single(0x2118),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2140, 0x2144)),
	Codepoints::Single(0x214b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2190, 0x2194)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x219a, 0x219b)),
	Codepoints::Single(0x21a0),
	Codepoints::Single(0x21a3),
	Codepoints::Single(0x21a6),
	Codepoints::Single(0x21ae),
	Codepoints::Range(std::ops::RangeInclusive::new(0x21ce, 0x21cf)),
	Codepoints::Single(0x21d2),
	Codepoints::Single(0x21d4),
	Codepoints::Range(std::ops::RangeInclusive::new(0x21f4, 0x22ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2320, 0x2321)),
	Codepoints::Single(0x237c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x239b, 0x23b3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x23dc, 0x23e1)),
	Codepoints::Single(0x25b7),
	Codepoints::Single(0x25c1),
	Codepoints::Range(std::ops::RangeInclusive::new(0x25f8, 0x25ff)),
	Codepoints::Single(0x266f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x27c0, 0x27c4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x27c7, 0x27e5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x27f0, 0x27ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2900, 0x2982)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2999, 0x29d7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x29dc, 0x29fb)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x29fe, 0x2aff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b30, 0x2b44)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b47, 0x2b4c)),
	Codepoints::Single(0xfb29),
	Codepoints::Single(0xfe62),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe64, 0xfe66)),
	Codepoints::Single(0xff0b),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff1c, 0xff1e)),
	Codepoints::Single(0xff5c),
	Codepoints::Single(0xff5e),
	Codepoints::Single(0xffe2),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffe9, 0xffec)),
	Codepoints::Single(0x1d6c1),
	Codepoints::Single(0x1d6db),
	Codepoints::Single(0x1d6fb),
	Codepoints::Single(0x1d715),
	Codepoints::Single(0x1d735),
	Codepoints::Single(0x1d74f),
	Codepoints::Single(0x1d76f),
	Codepoints::Single(0x1d789),
	Codepoints::Single(0x1d7a9),
	Codepoints::Single(0x1d7c3),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1eef0, 0x1eef1)),
];

static CURRENCY_SYMBOL: [Codepoints; 17] = [
	Codepoints::Single(0x0024),
	Codepoints::Range(std::ops::RangeInclusive::new(0x00a2, 0x00a5)),
	Codepoints::Single(0x058f),
	Codepoints::Single(0x060b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09f2, 0x09f3)),
	Codepoints::Single(0x09fb),
	Codepoints::Single(0x0af1),
	Codepoints::Single(0x0bf9),
	Codepoints::Single(0x0e3f),
	Codepoints::Single(0x17db),
	Codepoints::Range(std::ops::RangeInclusive::new(0x20a0, 0x20ba)),
	Codepoints::Single(0xa838),
	Codepoints::Single(0xfdfc),
	Codepoints::Single(0xfe69),
	Codepoints::Single(0xff04),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffe0, 0xffe1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffe5, 0xffe6)),
];

static MODIFIER_SYMBOL: [Codepoints; 27] = [
	Codepoints::Single(0x005e),
	Codepoints::Single(0x0060),
	Codepoints::Single(0x00a8),
	Codepoints::Single(0x00af),
	Codepoints::Single(0x00b4),
	Codepoints::Single(0x00b8),
	Codepoints::Range(std::ops::RangeInclusive::new(0x02c2, 0x02c5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x02d2, 0x02df)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x02e5, 0x02eb)),
	Codepoints::Single(0x02ed),
	Codepoints::Range(std::ops::RangeInclusive::new(0x02ef, 0x02ff)),
	Codepoints::Single(0x0375),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0384, 0x0385)),
	Codepoints::Single(0x1fbd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fbf, 0x1fc1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fcd, 0x1fcf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fdd, 0x1fdf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fed, 0x1fef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1ffd, 0x1ffe)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x309b, 0x309c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa700, 0xa716)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa720, 0xa721)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa789, 0xa78a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfbb2, 0xfbc1)),
	Codepoints::Single(0xff3e),
	Codepoints::Single(0xff40),
	Codepoints::Single(0xffe3),
];

static OTHER_SYMBOL: [Codepoints; 153] = [
	Codepoints::Single(0x00a6),
	Codepoints::Single(0x00a9),
	Codepoints::Single(0x00ae),
	Codepoints::Single(0x00b0),
	Codepoints::Single(0x0482),
	Codepoints::Range(std::ops::RangeInclusive::new(0x060e, 0x060f)),
	Codepoints::Single(0x06de),
	Codepoints::Single(0x06e9),
	Codepoints::Range(std::ops::RangeInclusive::new(0x06fd, 0x06fe)),
	Codepoints::Single(0x07f6),
	Codepoints::Single(0x09fa),
	Codepoints::Single(0x0b70),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bf3, 0x0bf8)),
	Codepoints::Single(0x0bfa),
	Codepoints::Single(0x0c7f),
	Codepoints::Single(0x0d79),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f01, 0x0f03)),
	Codepoints::Single(0x0f13),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f15, 0x0f17)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f1a, 0x0f1f)),
	Codepoints::Single(0x0f34),
	Codepoints::Single(0x0f36),
	Codepoints::Single(0x0f38),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0fbe, 0x0fc5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0fc7, 0x0fcc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0fce, 0x0fcf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0fd5, 0x0fd8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x109e, 0x109f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1390, 0x1399)),
	Codepoints::Single(0x1940),
	Codepoints::Range(std::ops::RangeInclusive::new(0x19de, 0x19ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b61, 0x1b6a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b74, 0x1b7c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2100, 0x2101)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2103, 0x2106)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2108, 0x2109)),
	Codepoints::Single(0x2114),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2116, 0x2117)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x211e, 0x2123)),
	Codepoints::Single(0x2125),
	Codepoints::Single(0x2127),
	Codepoints::Single(0x2129),
	Codepoints::Single(0x212e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x213a, 0x213b)),
	Codepoints::Single(0x214a),
	Codepoints::Range(std::ops::RangeInclusive::new(0x214c, 0x214d)),
	Codepoints::Single(0x214f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2195, 0x2199)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x219c, 0x219f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x21a1, 0x21a2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x21a4, 0x21a5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x21a7, 0x21ad)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x21af, 0x21cd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x21d0, 0x21d1)),
	Codepoints::Single(0x21d3),
	Codepoints::Range(std::ops::RangeInclusive::new(0x21d5, 0x21f3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2300, 0x2307)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x230c, 0x231f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2322, 0x2328)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x232b, 0x237b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x237d, 0x239a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x23b4, 0x23db)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x23e2, 0x23f3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2400, 0x2426)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2440, 0x244a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x249c, 0x24e9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2500, 0x25b6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x25b8, 0x25c0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x25c2, 0x25f7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2600, 0x266e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2670, 0x26ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2701, 0x2767)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2794, 0x27bf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2800, 0x28ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b00, 0x2b2f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b45, 0x2b46)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2b50, 0x2b59)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2ce5, 0x2cea)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e80, 0x2e99)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e9b, 0x2ef3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2f00, 0x2fd5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2ff0, 0x2ffb)),
	Codepoints::Single(0x3004),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3012, 0x3013)),
	Codepoints::Single(0x3020),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3036, 0x3037)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x303e, 0x303f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3190, 0x3191)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3196, 0x319f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x31c0, 0x31e3)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3200, 0x321e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x322a, 0x3247)),
	Codepoints::Single(0x3250),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3260, 0x327f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x328a, 0x32b0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x32c0, 0x32fe)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3300, 0x33ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x4dc0, 0x4dff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa490, 0xa4c6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa828, 0xa82b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa836, 0xa837)),
	Codepoints::Single(0xa839),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa77, 0xaa79)),
	Codepoints::Single(0xfdfd),
	Codepoints::Single(0xffe4),
	Codepoints::Single(0xffe8),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffed, 0xffee)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfffc, 0xfffd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10137, 0x1013f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10179, 0x10189)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10190, 0x1019b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x101d0, 0x101fc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d000, 0x1d0f5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d100, 0x1d126)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d129, 0x1d164)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d16a, 0x1d16c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d183, 0x1d184)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d18c, 0x1d1a9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d1ae, 0x1d1dd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d200, 0x1d241)),
	Codepoints::Single(0x1d245),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d300, 0x1d356)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f000, 0x1f02b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f030, 0x1f093)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f0a0, 0x1f0ae)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f0b1, 0x1f0be)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f0c1, 0x1f0cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f0d1, 0x1f0df)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f110, 0x1f12e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f130, 0x1f16b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f170, 0x1f19a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f1e6, 0x1f202)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f210, 0x1f23a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f240, 0x1f248)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f250, 0x1f251)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f300, 0x1f320)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f330, 0x1f335)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f337, 0x1f37c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f380, 0x1f393)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f3a0, 0x1f3c4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f3c6, 0x1f3ca)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f3e0, 0x1f3f0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f400, 0x1f43e)),
	Codepoints::Single(0x1f440),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f442, 0x1f4f7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f4f9, 0x1f4fc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f500, 0x1f53d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f540, 0x1f543)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f550, 0x1f567)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f5fb, 0x1f640)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f645, 0x1f64f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f680, 0x1f6c5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f700, 0x1f773)),
];

static CONNECTOR_PUNCTUATION: [Codepoints; 6] = [
	Codepoints::Single(0x005f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x203f, 0x2040)),
	Codepoints::Single(0x2054),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe33, 0xfe34)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe4d, 0xfe4f)),
	Codepoints::Single(0xff3f),
];

static DASH_PUNCTUATION: [Codepoints; 16] = [
	Codepoints::Single(0x002d),
	Codepoints::Single(0x058a),
	Codepoints::Single(0x05be),
	Codepoints::Single(0x1400),
	Codepoints::Single(0x1806),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2010, 0x2015)),
	Codepoints::Single(0x2e17),
	Codepoints::Single(0x2e1a),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e3a, 0x2e3b)),
	Codepoints::Single(0x301c),
	Codepoints::Single(0x3030),
	Codepoints::Single(0x30a0),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe31, 0xfe32)),
	Codepoints::Single(0xfe58),
	Codepoints::Single(0xfe63),
	Codepoints::Single(0xff0d),
];

static OPEN_PUNCTUATION: [Codepoints; 74] = [
	Codepoints::Single(0x0028),
	Codepoints::Single(0x005b),
	Codepoints::Single(0x007b),
	Codepoints::Single(0x0f3a),
	Codepoints::Single(0x0f3c),
	Codepoints::Single(0x169b),
	Codepoints::Single(0x201a),
	Codepoints::Single(0x201e),
	Codepoints::Single(0x2045),
	Codepoints::Single(0x207d),
	Codepoints::Single(0x208d),
	Codepoints::Single(0x2308),
	Codepoints::Single(0x230a),
	Codepoints::Single(0x2329),
	Codepoints::Single(0x2768),
	Codepoints::Single(0x276a),
	Codepoints::Single(0x276c),
	Codepoints::Single(0x276e),
	Codepoints::Single(0x2770),
	Codepoints::Single(0x2772),
	Codepoints::Single(0x2774),
	Codepoints::Single(0x27c5),
	Codepoints::Single(0x27e6),
	Codepoints::Single(0x27e8),
	Codepoints::Single(0x27ea),
	Codepoints::Single(0x27ec),
	Codepoints::Single(0x27ee),
	Codepoints::Single(0x2983),
	Codepoints::Single(0x2985),
	Codepoints::Single(0x2987),
	Codepoints::Single(0x2989),
	Codepoints::Single(0x298b),
	Codepoints::Single(0x298d),
	Codepoints::Single(0x298f),
	Codepoints::Single(0x2991),
	Codepoints::Single(0x2993),
	Codepoints::Single(0x2995),
	Codepoints::Single(0x2997),
	Codepoints::Single(0x29d8),
	Codepoints::Single(0x29da),
	Codepoints::Single(0x29fc),
	Codepoints::Single(0x2e22),
	Codepoints::Single(0x2e24),
	Codepoints::Single(0x2e26),
	Codepoints::Single(0x2e28),
	Codepoints::Single(0x3008),
	Codepoints::Single(0x300a),
	Codepoints::Single(0x300c),
	Codepoints::Single(0x300e),
	Codepoints::Single(0x3010),
	Codepoints::Single(0x3014),
	Codepoints::Single(0x3016),
	Codepoints::Single(0x3018),
	Codepoints::Single(0x301a),
	Codepoints::Single(0x301d),
	Codepoints::Single(0xfd3e),
	Codepoints::Single(0xfe17),
	Codepoints::Single(0xfe35),
	Codepoints::Single(0xfe37),
	Codepoints::Single(0xfe39),
	Codepoints::Single(0xfe3b),
	Codepoints::Single(0xfe3d),
	Codepoints::Single(0xfe3f),
	Codepoints::Single(0xfe41),
	Codepoints::Single(0xfe43),
	Codepoints::Single(0xfe47),
	Codepoints::Single(0xfe59),
	Codepoints::Single(0xfe5b),
	Codepoints::Single(0xfe5d),
	Codepoints::Single(0xff08),
	Codepoints::Single(0xff3b),
	Codepoints::Single(0xff5b),
	Codepoints::Single(0xff5f),
	Codepoints::Single(0xff62),
];

static CLOSE_PUNCTUATION: [Codepoints; 72] = [
	Codepoints::Single(0x0029),
	Codepoints::Single(0x005d),
	Codepoints::Single(0x007d),
	Codepoints::Single(0x0f3b),
	Codepoints::Single(0x0f3d),
	Codepoints::Single(0x169c),
	Codepoints::Single(0x2046),
	Codepoints::Single(0x207e),
	Codepoints::Single(0x208e),
	Codepoints::Single(0x2309),
	Codepoints::Single(0x230b),
	Codepoints::Single(0x232a),
	Codepoints::Single(0x2769),
	Codepoints::Single(0x276b),
	Codepoints::Single(0x276d),
	Codepoints::Single(0x276f),
	Codepoints::Single(0x2771),
	Codepoints::Single(0x2773),
	Codepoints::Single(0x2775),
	Codepoints::Single(0x27c6),
	Codepoints::Single(0x27e7),
	Codepoints::Single(0x27e9),
	Codepoints::Single(0x27eb),
	Codepoints::Single(0x27ed),
	Codepoints::Single(0x27ef),
	Codepoints::Single(0x2984),
	Codepoints::Single(0x2986),
	Codepoints::Single(0x2988),
	Codepoints::Single(0x298a),
	Codepoints::Single(0x298c),
	Codepoints::Single(0x298e),
	Codepoints::Single(0x2990),
	Codepoints::Single(0x2992),
	Codepoints::Single(0x2994),
	Codepoints::Single(0x2996),
	Codepoints::Single(0x2998),
	Codepoints::Single(0x29d9),
	Codepoints::Single(0x29db),
	Codepoints::Single(0x29fd),
	Codepoints::Single(0x2e23),
	Codepoints::Single(0x2e25),
	Codepoints::Single(0x2e27),
	Codepoints::Single(0x2e29),
	Codepoints::Single(0x3009),
	Codepoints::Single(0x300b),
	Codepoints::Single(0x300d),
	Codepoints::Single(0x300f),
	Codepoints::Single(0x3011),
	Codepoints::Single(0x3015),
	Codepoints::Single(0x3017),
	Codepoints::Single(0x3019),
	Codepoints::Single(0x301b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x301e, 0x301f)),
	Codepoints::Single(0xfd3f),
	Codepoints::Single(0xfe18),
	Codepoints::Single(0xfe36),
	Codepoints::Single(0xfe38),
	Codepoints::Single(0xfe3a),
	Codepoints::Single(0xfe3c),
	Codepoints::Single(0xfe3e),
	Codepoints::Single(0xfe40),
	Codepoints::Single(0xfe42),
	Codepoints::Single(0xfe44),
	Codepoints::Single(0xfe48),
	Codepoints::Single(0xfe5a),
	Codepoints::Single(0xfe5c),
	Codepoints::Single(0xfe5e),
	Codepoints::Single(0xff09),
	Codepoints::Single(0xff3d),
	Codepoints::Single(0xff5d),
	Codepoints::Single(0xff60),
	Codepoints::Single(0xff63),
];

static INITIAL_PUNCTUATION: [Codepoints; 11] = [
	Codepoints::Single(0x00ab),
	Codepoints::Single(0x2018),
	Codepoints::Range(std::ops::RangeInclusive::new(0x201b, 0x201c)),
	Codepoints::Single(0x201f),
	Codepoints::Single(0x2039),
	Codepoints::Single(0x2e02),
	Codepoints::Single(0x2e04),
	Codepoints::Single(0x2e09),
	Codepoints::Single(0x2e0c),
	Codepoints::Single(0x2e1c),
	Codepoints::Single(0x2e20),
];

static FINAL_PUNCTUATION: [Codepoints; 10] = [
	Codepoints::Single(0x00bb),
	Codepoints::Single(0x2019),
	Codepoints::Single(0x201d),
	Codepoints::Single(0x203a),
	Codepoints::Single(0x2e03),
	Codepoints::Single(0x2e05),
	Codepoints::Single(0x2e0a),
	Codepoints::Single(0x2e0d),
	Codepoints::Single(0x2e1d),
	Codepoints::Single(0x2e21),
];

static OTHER_PUNCTUATION: [Codepoints; 135] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x0021, 0x0023)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0025, 0x0027)),
	Codepoints::Single(0x002a),
	Codepoints::Single(0x002c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x002e, 0x002f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x003a, 0x003b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x003f, 0x0040)),
	Codepoints::Single(0x005c),
	Codepoints::Single(0x00a1),
	Codepoints::Single(0x00a7),
	Codepoints::Range(std::ops::RangeInclusive::new(0x00b6, 0x00b7)),
	Codepoints::Single(0x00bf),
	Codepoints::Single(0x037e),
	Codepoints::Single(0x0387),
	Codepoints::Range(std::ops::RangeInclusive::new(0x055a, 0x055f)),
	Codepoints::Single(0x0589),
	Codepoints::Single(0x05c0),
	Codepoints::Single(0x05c3),
	Codepoints::Single(0x05c6),
	Codepoints::Range(std::ops::RangeInclusive::new(0x05f3, 0x05f4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0609, 0x060a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x060c, 0x060d)),
	Codepoints::Single(0x061b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x061e, 0x061f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x066a, 0x066d)),
	Codepoints::Single(0x06d4),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0700, 0x070d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x07f7, 0x07f9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0830, 0x083e)),
	Codepoints::Single(0x085e),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0964, 0x0965)),
	Codepoints::Single(0x0970),
	Codepoints::Single(0x0af0),
	Codepoints::Single(0x0df4),
	Codepoints::Single(0x0e4f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0e5a, 0x0e5b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f04, 0x0f12)),
	Codepoints::Single(0x0f14),
	Codepoints::Single(0x0f85),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0fd0, 0x0fd4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0fd9, 0x0fda)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x104a, 0x104f)),
	Codepoints::Single(0x10fb),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1360, 0x1368)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x166d, 0x166e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x16eb, 0x16ed)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1735, 0x1736)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17d4, 0x17d6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17d8, 0x17da)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1800, 0x1805)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1807, 0x180a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1944, 0x1945)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1a1e, 0x1a1f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1aa0, 0x1aa6)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1aa8, 0x1aad)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1b5a, 0x1b60)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1bfc, 0x1bff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c3b, 0x1c3f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1c7e, 0x1c7f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1cc0, 0x1cc7)),
	Codepoints::Single(0x1cd3),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2016, 0x2017)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2020, 0x2027)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2030, 0x2038)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x203b, 0x203e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2041, 0x2043)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2047, 0x2051)),
	Codepoints::Single(0x2053),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2055, 0x205e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2cf9, 0x2cfc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2cfe, 0x2cff)),
	Codepoints::Single(0x2d70),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e00, 0x2e01)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e06, 0x2e08)),
	Codepoints::Single(0x2e0b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e0e, 0x2e16)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e18, 0x2e19)),
	Codepoints::Single(0x2e1b),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e1e, 0x2e1f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e2a, 0x2e2e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2e30, 0x2e39)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3001, 0x3003)),
	Codepoints::Single(0x303d),
	Codepoints::Single(0x30fb),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa4fe, 0xa4ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa60d, 0xa60f)),
	Codepoints::Single(0xa673),
	Codepoints::Single(0xa67e),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa6f2, 0xa6f7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa874, 0xa877)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa8ce, 0xa8cf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa8f8, 0xa8fa)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa92e, 0xa92f)),
	Codepoints::Single(0xa95f),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa9c1, 0xa9cd)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa9de, 0xa9df)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaa5c, 0xaa5f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaade, 0xaadf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xaaf0, 0xaaf1)),
	Codepoints::Single(0xabeb),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe10, 0xfe16)),
	Codepoints::Single(0xfe19),
	Codepoints::Single(0xfe30),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe45, 0xfe46)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe49, 0xfe4c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe50, 0xfe52)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe54, 0xfe57)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe5f, 0xfe61)),
	Codepoints::Single(0xfe68),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe6a, 0xfe6b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff01, 0xff03)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff05, 0xff07)),
	Codepoints::Single(0xff0a),
	Codepoints::Single(0xff0c),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff0e, 0xff0f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff1a, 0xff1b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff1f, 0xff20)),
	Codepoints::Single(0xff3c),
	Codepoints::Single(0xff61),
	Codepoints::Range(std::ops::RangeInclusive::new(0xff64, 0xff65)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10100, 0x10102)),
	Codepoints::Single(0x1039f),
	Codepoints::Single(0x103d0),
	Codepoints::Single(0x10857),
	Codepoints::Single(0x1091f),
	Codepoints::Single(0x1093f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a50, 0x10a58)),
	Codepoints::Single(0x10a7f),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b39, 0x10b3f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11047, 0x1104d)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110bb, 0x110bc)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x110be, 0x110c1)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11140, 0x11143)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x111c5, 0x111c8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12470, 0x12473)),
];

static TITLECASE_LETTER: [Codepoints; 10] = [
	Codepoints::Single(0x01c5),
	Codepoints::Single(0x01c8),
	Codepoints::Single(0x01cb),
	Codepoints::Single(0x01f2),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f88, 0x1f8f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f98, 0x1f9f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fa8, 0x1faf)),
	Codepoints::Single(0x1fbc),
	Codepoints::Single(0x1fcc),
	Codepoints::Single(0x1ffc),
];

static LETTER_NUMBER: [Codepoints; 12] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x16ee, 0x16f0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2160, 0x2182)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2185, 0x2188)),
	Codepoints::Single(0x3007),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3021, 0x3029)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3038, 0x303a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa6e6, 0xa6ef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10140, 0x10174)),
	Codepoints::Single(0x10341),
	Codepoints::Single(0x1034a),
	Codepoints::Range(std::ops::RangeInclusive::new(0x103d1, 0x103d5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x12400, 0x12462)),
];

static OTHER_NUMBER: [Codepoints; 42] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x00b2, 0x00b3)),
	Codepoints::Single(0x00b9),
	Codepoints::Range(std::ops::RangeInclusive::new(0x00bc, 0x00be)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x09f4, 0x09f9)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0b72, 0x0b77)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0bf0, 0x0bf2)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0c78, 0x0c7e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0d70, 0x0d75)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x0f2a, 0x0f33)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1369, 0x137c)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17f0, 0x17f9)),
	Codepoints::Single(0x19da),
	Codepoints::Single(0x2070),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2074, 0x2079)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2080, 0x2089)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2150, 0x215f)),
	Codepoints::Single(0x2189),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2460, 0x249b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x24ea, 0x24ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2776, 0x2793)),
	Codepoints::Single(0x2cfd),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3192, 0x3195)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3220, 0x3229)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3248, 0x324f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3251, 0x325f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3280, 0x3289)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x32b1, 0x32bf)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa830, 0xa835)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10107, 0x10133)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10175, 0x10178)),
	Codepoints::Single(0x1018a),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10320, 0x10323)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10858, 0x1085f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10916, 0x1091b)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a40, 0x10a47)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10a7d, 0x10a7e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b58, 0x10b5f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10b78, 0x10b7f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10e60, 0x10e7e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x11052, 0x11065)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d360, 0x1d371)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1f100, 0x1f10a)),
];

static ENCLOSING_MARK: [Codepoints; 4] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x0488, 0x0489)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x20dd, 0x20e0)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x20e2, 0x20e4)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa670, 0xa672)),
];

static LEADING_JAMO: [Codepoints; 2] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x1100, 0x115f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xa960, 0xa97c)),
];

static VOWEL_JAMO: [Codepoints; 2] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x1160, 0x11a7)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xd7b0, 0xd7c6)),
];

static TRAILING_JAMO: [Codepoints; 2] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x11a8, 0x11ff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xd7cb, 0xd7fb)),
];

static JOIN_CONTROL: [Codepoints; 1] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0x200c, 0x200d)),
];

static NONCHARACTER_CODE_POINT: [Codepoints; 18] = [
	Codepoints::Range(std::ops::RangeInclusive::new(0xfdd0, 0xfdef)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfffe, 0xffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1fffe, 0x1ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2fffe, 0x2ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x3fffe, 0x3ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x4fffe, 0x4ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x5fffe, 0x5ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x6fffe, 0x6ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x7fffe, 0x7ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x8fffe, 0x8ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x9fffe, 0x9ffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xafffe, 0xaffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xbfffe, 0xbffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xcfffe, 0xcffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xdfffe, 0xdffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xefffe, 0xeffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xffffe, 0xfffff)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x10fffe, 0x10ffff)),
];

static DEFAULT_IGNORABLE_CODE_POINT: [Codepoints; 16] = [
	Codepoints::Single(0x00ad),
	Codepoints::Single(0x034f),
	Codepoints::Single(0x061c),
	Codepoints::Range(std::ops::RangeInclusive::new(0x115f, 0x1160)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x17b4, 0x17b5)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x180b, 0x180e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x200b, 0x200f)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x202a, 0x202e)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x2060, 0x206f)),
	Codepoints::Single(0x3164),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfe00, 0xfe0f)),
	Codepoints::Single(0xfeff),
	Codepoints::Single(0xffa0),
	Codepoints::Range(std::ops::RangeInclusive::new(0xfff0, 0xfff8)),
	Codepoints::Range(std::ops::RangeInclusive::new(0x1d173, 0x1d17a)),
	Codepoints::Range(std::ops::RangeInclusive::new(0xe0000, 0xe0fff)),
];

