"control", "format", "surrogate", "private-use", "unassigned"
local Zs, Zl, Zp =
	"space-separator", "line-separator", "paragraph-separator"

local data = {
	singles = {
		[0x000020] = Zs,
		[0x0000A0] = Zs,
		[0x0000AD] = Cf,
		[0x00038B] = Cn,
		[0x00038D] = Cn,
		[0x0003A2] = Cn,
		[0x000530] = Cn,
		[0x000590] = Cn,
		[0x00061C] = Cf,
		[0x00061D] = Cn,
		[0x0006DD] = Cf,
		[0x00070E] = Cn,
		[0x00070F] = Cf,
		[0x00083F] = Cn,
		[0x00085F] = Cn,
		[0x0008B5] = Cn,
		[0x0008E2] = Cf,
		[0x000984] = Cn,
		[0x0009A9] = Cn,
		[0x0009B1] = Cn,
		[0x0009DE] = Cn,
		[0x000A04] = Cn,
		[0x000A29] = Cn,
		[0x000A31] = Cn,
		[0x000A34] = Cn,
		[0x000A37] = Cn,
		[0x000A3D] = Cn,
		[0x000A5D] = Cn,
		[0x000A84] = Cn,
		[0x000A8E] = Cn,
		[0x000A92] = Cn,
		[0x000AA9] = Cn,
		[0x000AB1] = Cn,
		[0x000AB4] = Cn,
		[0x000AC6] = Cn,
		[0x000ACA] = Cn,
		[0x000B00] = Cn,
		[0x000B04] = Cn,
		[0x000B29] = Cn,
		[0x000B31] = Cn,
		[0x000B34] = Cn,
		[0x000B5E] = Cn,
		[0x000B84] = Cn,
		[0x000B91] = Cn,
		[0x000B9B] = Cn,
		[0x000B9D] = Cn,
		[0x000BC9] = Cn,
		[0x000C0D] = Cn,
		[0x000C11] = Cn,
		[0x000C29] = Cn,
		[0x000C45] = Cn,
		[0x000C49] = Cn,
		[0x000C57] = Cn,
		[0x000C8D] = Cn,
		[0x000C91] = Cn,
		[0x000CA9] = Cn,
		[0x000CB4] = Cn,
		[0x000CC5] = Cn,
		[0x000CC9] = Cn,
		[0x000CDF] = Cn,
		[0x000CF0] = Cn,
		[0x000D0D] = Cn,
		[0x000D11] = Cn,
		[0x000D45] = Cn,
		[0x000D49] = Cn,
		[0x000D80] = Cn,
		[0x000D84] = Cn,
		[0x000DB2] = Cn,
		[0x000DBC] = Cn,
		[0x000DD5] = Cn,
		[0x000DD7] = Cn,
		[0x000E83] = Cn,
		[0x000E85] = Cn,
		[0x000E8B] = Cn,
		[0x000EA4] = Cn,
		[0x000EA6] = Cn,
		[0x000EC5] = Cn,
		[0x000EC7] = Cn,
		[0x000F48] = Cn,
		[0x000F98] = Cn,
		[0x000FBD] = Cn,
		[0x000FCD] = Cn,
		[0x0010C6] = Cn,
		[0x001249] = Cn,
		[0x001257] = Cn,
		[0x001259] = Cn,
		[0x001289] = Cn,
		[0x0012B1] = Cn,
		[0x0012BF] = Cn,
		[0x0012C1] = Cn,
		[0x0012D7] = Cn,
		[0x001311] = Cn,
		[0x001680] = Zs,
		[0x00170D] = Cn,
		[0x00176D] = Cn,
		[0x001771] = Cn,
		[0x00180E] = Cf,
		[0x00180F] = Cn,
		[0x00191F] = Cn,
		[0x001A5F] = Cn,
		[0x001DFA] = Cn,
		[0x001F58] = Cn,
		[0x001F5A] = Cn,
		[0x001F5C] = Cn,
		[0x001F5E] = Cn,
		[0x001FB5] = Cn,
		[0x001FC5] = Cn,
		[0x001FDC] = Cn,
		[0x001FF5] = Cn,
		[0x001FFF] = Cn,
		[0x002028] = Zl,
		[0x002029] = Zp,
		[0x00202F] = Zs,
		[0x00205F] = Zs,
		[0x002065] = Cn,
		[0x00208F] = Cn,
		[0x002B96] = Cn,
		[0x002C2F] = Cn,
		[0x002C5F] = Cn,
		[0x002D26] = Cn,
		[0x002DA7] = Cn,
		[0x002DAF] = Cn,
		[0x002DB7] = Cn,
		[0x002DBF] = Cn,
		[0x002DC7] = Cn,
		[0x002DCF] = Cn,
		[0x002DD7] = Cn,
		[0x002DDF] = Cn,
		[0x002E9A] = Cn,
		[0x003000] = Zs,
		[0x003040] = Cn,
		[0x003130] = Cn,
		[0x00318F] = Cn,
		[0x00321F] = Cn,
		[0x00A9CE] = Cn,
		[0x00A9FF] = Cn,
		[0x00AB27] = Cn,
		[0x00AB2F] = Cn,
		[0x00FB37] = Cn,
		[0x00FB3D] = Cn,
		[0x00FB3F] = Cn,
		[0x00FB42] = Cn,
		[0x00FB45] = Cn,
		[0x00FE53] = Cn,
		[0x00FE67] = Cn,
		[0x00FE75] = Cn,
		[0x00FEFF] = Cf,
		[0x00FF00] = Cn,
		[0x00FFE7] = Cn,
		[0x01000C] = Cn,
		[0x010027] = Cn,
		[0x01003B] = Cn,
		[0x01003E] = Cn,
		[0x01018F] = Cn,
		[0x01039E] = Cn,
		[0x010809] = Cn,
		[0x010836] = Cn,
		[0x010856] = Cn,
		[0x0108F3] = Cn,
		[0x010A04] = Cn,
		[0x010A14] = Cn,
		[0x010A18] = Cn,
		[0x010E7F] = Cn,
		[0x010EAA] = Cn,
		[0x0110BD] = Cf,
		[0x0110CD] = Cf,
		[0x011135] = Cn,
		[0x0111E0] = Cn,
		[0x011212] = Cn,
		[0x011287] = Cn,
		[0x011289] = Cn,
		[0x01128E] = Cn,
		[0x01129E] = Cn,
		[0x011304] = Cn,
		[0x011329] = Cn,
		[0x011331] = Cn,
		[0x011334] = Cn,
		[0x01133A] = Cn,
		[0x01145C] = Cn,
		[0x011914] = Cn,
		[0x011917] = Cn,
		[0x011936] = Cn,
		[0x011C09] = Cn,
		[0x011C37] = Cn,
		[0x011CA8] = Cn,
		[0x011D07] = Cn,
		[0x011D0A] = Cn,
		[0x011D3B] = Cn,
		[0x011D3E] = Cn,
		[0x011D66] = Cn,
		[0x011D69] = Cn,
		[0x011D8F] = Cn,
		[0x011D92] = Cn,
		[0x01246F] = Cn,
		[0x01342F] = Cn,
		[0x016A5F] = Cn,
		[0x016B5A] = Cn,
		[0x016B62] = Cn,
		[0x01D455] = Cn,
		[0x01D49D] = Cn,
		[0x01D4AD] = Cn,
		[0x01D4BA] = Cn,
		[0x01D4BC] = Cn,
		[0x01D4C4] = Cn,
		[0x01D506] = Cn,
		[0x01D515] = Cn,
		[0x01D51D] = Cn,
		[0x01D53A] = Cn,
		[0x01D53F] = Cn,
		[0x01D545] = Cn,
		[0x01D551] = Cn,
		[0x01DAA0] = Cn,
		[0x01E007] = Cn,
		[0x01E022] = Cn,
		[0x01E025] = Cn,
		[0x01EE04] = Cn,
		[0x01EE20] = Cn,
		[0x01EE23] = Cn,
		[0x01EE28] = Cn,
		[0x01EE33] = Cn,
		[0x01EE38] = Cn,
		[0x01EE3A] = Cn,
		[0x01EE48] = Cn,
		[0x01EE4A] = Cn,
		[0x01EE4C] = Cn,
		[0x01EE50] = Cn,
		[0x01EE53] = Cn,
		[0x01EE58] = Cn,
		[0x01EE5A] = Cn,
		[0x01EE5C] = Cn,
		[0x01EE5E] = Cn,
		[0x01EE60] = Cn,
		[0x01EE63] = Cn,
		[0x01EE6B] = Cn,
		[0x01EE73] = Cn,
		[0x01EE78] = Cn,
		[0x01EE7D] = Cn,
		[0x01EE7F] = Cn,
		[0x01EE8A] = Cn,
		[0x01EEA4] = Cn,
		[0x01EEAA] = Cn,
		[0x01F0C0] = Cn,
		[0x01F0D0] = Cn,
		[0x01F979] = Cn,
		[0x01F9CC] = Cn,
		[0x01FB93] = Cn,
		[0x0E0001] = Cf,
	ranges = {

-- Needed for binary search.
data.ranges.length = #data.ranges