From 78b68aa4a18ee2dd402edc6c8ae4942e368429a7 Mon Sep 17 00:00:00 2001 From: Slaven Rezic Date: Tue, 14 May 2019 23:24:41 +0200 Subject: [PATCH] fix for 5.29.x failures (PR #8) --- lib/Net/IDN/UTS46/_Mapping.pm | 776 ++++++++++++++++++++++-------------------- t/uts46_to_ascii-trans.t | 92 ++--- t/uts46_to_ascii.t | 92 ++--- t/uts46_to_unicode.t | 124 +++---- 4 files changed, 558 insertions(+), 526 deletions(-) diff --git a/lib/Net/IDN/UTS46/_Mapping.pm b/lib/Net/IDN/UTS46/_Mapping.pm index 71f6156..d31e65b 100644 --- a/lib/Net/IDN/UTS46/_Mapping.pm +++ b/lib/Net/IDN/UTS46/_Mapping.pm @@ -28,271 +28,291 @@ sub _mk_prop { 1; -our @DISALLOWED = ( - 0x0080, 0x009F, 0x0378, 0x0379, 0x0380, 0x0383, 0x038B, undef, 0x038D, undef, 0x03A2, undef, 0x04C0, undef, 0x0530, undef, - 0x0557, 0x0558, 0x0560, undef, 0x0588, undef, 0x058B, 0x058C, 0x0590, undef, 0x05C8, 0x05CF, 0x05EB, 0x05EF, 0x05F5, 0x0605, - 0x061C, 0x061D, 0x06DD, undef, 0x070E, 0x070F, 0x074B, 0x074C, 0x07B2, 0x07BF, 0x07FB, 0x07FF, 0x082E, 0x082F, 0x083F, undef, - 0x085C, 0x085D, 0x085F, undef, 0x086B, 0x089F, 0x08B5, undef, 0x08BE, 0x08D3, 0x08E2, undef, 0x0984, undef, 0x098D, 0x098E, - 0x0991, 0x0992, 0x09A9, undef, 0x09B1, undef, 0x09B3, 0x09B5, 0x09BA, 0x09BB, 0x09C5, 0x09C6, 0x09C9, 0x09CA, 0x09CF, 0x09D6, - 0x09D8, 0x09DB, 0x09DE, undef, 0x09E4, 0x09E5, 0x09FE, 0x0A00, 0x0A04, undef, 0x0A0B, 0x0A0E, 0x0A11, 0x0A12, 0x0A29, undef, - 0x0A31, undef, 0x0A34, undef, 0x0A37, undef, 0x0A3A, 0x0A3B, 0x0A3D, undef, 0x0A43, 0x0A46, 0x0A49, 0x0A4A, 0x0A4E, 0x0A50, - 0x0A52, 0x0A58, 0x0A5D, undef, 0x0A5F, 0x0A65, 0x0A76, 0x0A80, 0x0A84, undef, 0x0A8E, undef, 0x0A92, undef, 0x0AA9, undef, - 0x0AB1, undef, 0x0AB4, undef, 0x0ABA, 0x0ABB, 0x0AC6, undef, 0x0ACA, undef, 0x0ACE, 0x0ACF, 0x0AD1, 0x0ADF, 0x0AE4, 0x0AE5, - 0x0AF2, 0x0AF8, 0x0B00, undef, 0x0B04, undef, 0x0B0D, 0x0B0E, 0x0B11, 0x0B12, 0x0B29, undef, 0x0B31, undef, 0x0B34, undef, - 0x0B3A, 0x0B3B, 0x0B45, 0x0B46, 0x0B49, 0x0B4A, 0x0B4E, 0x0B55, 0x0B58, 0x0B5B, 0x0B5E, undef, 0x0B64, 0x0B65, 0x0B78, 0x0B81, - 0x0B84, undef, 0x0B8B, 0x0B8D, 0x0B91, undef, 0x0B96, 0x0B98, 0x0B9B, undef, 0x0B9D, undef, 0x0BA0, 0x0BA2, 0x0BA5, 0x0BA7, - 0x0BAB, 0x0BAD, 0x0BBA, 0x0BBD, 0x0BC3, 0x0BC5, 0x0BC9, undef, 0x0BCE, 0x0BCF, 0x0BD1, 0x0BD6, 0x0BD8, 0x0BE5, 0x0BFB, 0x0BFF, - 0x0C04, undef, 0x0C0D, undef, 0x0C11, undef, 0x0C29, undef, 0x0C3A, 0x0C3C, 0x0C45, undef, 0x0C49, undef, 0x0C4E, 0x0C54, - 0x0C57, undef, 0x0C5B, 0x0C5F, 0x0C64, 0x0C65, 0x0C70, 0x0C77, 0x0C84, undef, 0x0C8D, undef, 0x0C91, undef, 0x0CA9, undef, - 0x0CB4, undef, 0x0CBA, 0x0CBB, 0x0CC5, undef, 0x0CC9, undef, 0x0CCE, 0x0CD4, 0x0CD7, 0x0CDD, 0x0CDF, undef, 0x0CE4, 0x0CE5, - 0x0CF0, undef, 0x0CF3, 0x0CFF, 0x0D04, undef, 0x0D0D, undef, 0x0D11, undef, 0x0D45, undef, 0x0D49, undef, 0x0D50, 0x0D53, - 0x0D64, 0x0D65, 0x0D80, 0x0D81, 0x0D84, undef, 0x0D97, 0x0D99, 0x0DB2, undef, 0x0DBC, undef, 0x0DBE, 0x0DBF, 0x0DC7, 0x0DC9, - 0x0DCB, 0x0DCE, 0x0DD5, undef, 0x0DD7, undef, 0x0DE0, 0x0DE5, 0x0DF0, 0x0DF1, 0x0DF5, 0x0E00, 0x0E3B, 0x0E3E, 0x0E5C, 0x0E80, - 0x0E83, undef, 0x0E85, 0x0E86, 0x0E89, undef, 0x0E8B, 0x0E8C, 0x0E8E, 0x0E93, 0x0E98, undef, 0x0EA0, undef, 0x0EA4, undef, - 0x0EA6, undef, 0x0EA8, 0x0EA9, 0x0EAC, undef, 0x0EBA, undef, 0x0EBE, 0x0EBF, 0x0EC5, undef, 0x0EC7, undef, 0x0ECE, 0x0ECF, - 0x0EDA, 0x0EDB, 0x0EE0, 0x0EFF, 0x0F48, undef, 0x0F6D, 0x0F70, 0x0F98, undef, 0x0FBD, undef, 0x0FCD, undef, 0x0FDB, 0x0FFF, - 0x10A0, 0x10C6, 0x10C8, 0x10CC, 0x10CE, 0x10CF, 0x115F, 0x1160, 0x1249, undef, 0x124E, 0x124F, 0x1257, undef, 0x1259, undef, - 0x125E, 0x125F, 0x1289, undef, 0x128E, 0x128F, 0x12B1, undef, 0x12B6, 0x12B7, 0x12BF, undef, 0x12C1, undef, 0x12C6, 0x12C7, - 0x12D7, undef, 0x1311, undef, 0x1316, 0x1317, 0x135B, 0x135C, 0x137D, 0x137F, 0x139A, 0x139F, 0x13F6, 0x13F7, 0x13FE, 0x13FF, - 0x1680, undef, 0x169D, 0x169F, 0x16F9, 0x16FF, 0x170D, undef, 0x1715, 0x171F, 0x1737, 0x173F, 0x1754, 0x175F, 0x176D, undef, - 0x1771, undef, 0x1774, 0x177F, 0x17B4, 0x17B5, 0x17DE, 0x17DF, 0x17EA, 0x17EF, 0x17FA, 0x17FF, 0x1806, undef, 0x180E, 0x180F, - 0x181A, 0x181F, 0x1878, 0x187F, 0x18AB, 0x18AF, 0x18F6, 0x18FF, 0x191F, undef, 0x192C, 0x192F, 0x193C, 0x193F, 0x1941, 0x1943, - 0x196E, 0x196F, 0x1975, 0x197F, 0x19AC, 0x19AF, 0x19CA, 0x19CF, 0x19DB, 0x19DD, 0x1A1C, 0x1A1D, 0x1A5F, undef, 0x1A7D, 0x1A7E, - 0x1A8A, 0x1A8F, 0x1A9A, 0x1A9F, 0x1AAE, 0x1AAF, 0x1ABF, 0x1AFF, 0x1B4C, 0x1B4F, 0x1B7D, 0x1B7F, 0x1BF4, 0x1BFB, 0x1C38, 0x1C3A, - 0x1C4A, 0x1C4C, 0x1C89, 0x1CBF, 0x1CC8, 0x1CCF, 0x1CFA, 0x1CFF, 0x1DFA, undef, 0x1F16, 0x1F17, 0x1F1E, 0x1F1F, 0x1F46, 0x1F47, - 0x1F4E, 0x1F4F, 0x1F58, undef, 0x1F5A, undef, 0x1F5C, undef, 0x1F5E, undef, 0x1F7E, 0x1F7F, 0x1FB5, undef, 0x1FC5, undef, - 0x1FD4, 0x1FD5, 0x1FDC, undef, 0x1FF0, 0x1FF1, 0x1FF5, undef, 0x1FFF, undef, 0x200E, 0x200F, 0x2024, 0x2026, 0x2028, 0x202E, - 0x2061, 0x2063, 0x2065, 0x206F, 0x2072, 0x2073, 0x208F, undef, 0x209D, 0x209F, 0x20C0, 0x20CF, 0x20F1, 0x20FF, 0x2132, undef, - 0x2183, undef, 0x218C, 0x218F, 0x2427, 0x243F, 0x244B, 0x245F, 0x2488, 0x249B, 0x2B74, 0x2B75, 0x2B96, 0x2B97, 0x2BBA, 0x2BBC, - 0x2BC9, undef, 0x2BD3, 0x2BEB, 0x2BF0, 0x2BFF, 0x2C2F, undef, 0x2C5F, undef, 0x2CF4, 0x2CF8, 0x2D26, undef, 0x2D28, 0x2D2C, - 0x2D2E, 0x2D2F, 0x2D68, 0x2D6E, 0x2D71, 0x2D7E, 0x2D97, 0x2D9F, 0x2DA7, undef, 0x2DAF, undef, 0x2DB7, undef, 0x2DBF, undef, - 0x2DC7, undef, 0x2DCF, undef, 0x2DD7, undef, 0x2DDF, undef, 0x2E4A, 0x2E7F, 0x2E9A, undef, 0x2EF4, 0x2EFF, 0x2FD6, 0x2FFF, - 0x3040, undef, 0x3097, 0x3098, 0x3100, 0x3104, 0x312F, 0x3130, 0x3164, undef, 0x318F, undef, 0x31BB, 0x31BF, 0x31E4, 0x31EF, - 0x321F, undef, 0x32FF, undef, 0x33C2, undef, 0x33C7, undef, 0x33D8, undef, 0x4DB6, 0x4DBF, 0x9FEB, 0x9FFF, 0xA48D, 0xA48F, - 0xA4C7, 0xA4CF, 0xA62C, 0xA63F, 0xA6F8, 0xA6FF, 0xA7AF, undef, 0xA7B8, 0xA7F6, 0xA82C, 0xA82F, 0xA83A, 0xA83F, 0xA878, 0xA87F, - 0xA8C6, 0xA8CD, 0xA8DA, 0xA8DF, 0xA8FE, 0xA8FF, 0xA954, 0xA95E, 0xA97D, 0xA97F, 0xA9CE, undef, 0xA9DA, 0xA9DD, 0xA9FF, undef, - 0xAA37, 0xAA3F, 0xAA4E, 0xAA4F, 0xAA5A, 0xAA5B, 0xAAC3, 0xAADA, 0xAAF7, 0xAB00, 0xAB07, 0xAB08, 0xAB0F, 0xAB10, 0xAB17, 0xAB1F, - 0xAB27, undef, 0xAB2F, undef, 0xAB66, 0xAB6F, 0xABEE, 0xABEF, 0xABFA, 0xABFF, 0xD7A4, 0xD7AF, 0xD7C7, 0xD7CA, 0xD7FC, 0xF8FF, - 0xFA6E, 0xFA6F, 0xFADA, 0xFAFF, 0xFB07, 0xFB12, 0xFB18, 0xFB1C, 0xFB37, undef, 0xFB3D, undef, 0xFB3F, undef, 0xFB42, undef, - 0xFB45, undef, 0xFBC2, 0xFBD2, 0xFD40, 0xFD4F, 0xFD90, 0xFD91, 0xFDC8, 0xFDEF, 0xFDFE, 0xFDFF, 0xFE12, undef, 0xFE19, 0xFE1F, - 0xFE30, undef, 0xFE52, 0xFE53, 0xFE67, undef, 0xFE6C, 0xFE6F, 0xFE75, undef, 0xFEFD, 0xFEFE, 0xFF00, undef, 0xFFA0, undef, - 0xFFBF, 0xFFC1, 0xFFC8, 0xFFC9, 0xFFD0, 0xFFD1, 0xFFD8, 0xFFD9, 0xFFDD, 0xFFDF, 0xFFE7, undef, 0xFFEF, 0xFFFF, 0x1000C, undef, - 0x10027, undef, 0x1003B, undef, 0x1003E, undef, 0x1004E, 0x1004F, 0x1005E, 0x1007F, 0x100FB, 0x100FF, 0x10103, 0x10106, 0x10134, 0x10136, - 0x1018F, undef, 0x1019C, 0x1019F, 0x101A1, 0x101CF, 0x101FE, 0x1027F, 0x1029D, 0x1029F, 0x102D1, 0x102DF, 0x102FC, 0x102FF, 0x10324, 0x1032C, - 0x1034B, 0x1034F, 0x1037B, 0x1037F, 0x1039E, undef, 0x103C4, 0x103C7, 0x103D6, 0x103FF, 0x1049E, 0x1049F, 0x104AA, 0x104AF, 0x104D4, 0x104D7, - 0x104FC, 0x104FF, 0x10528, 0x1052F, 0x10564, 0x1056E, 0x10570, 0x105FF, 0x10737, 0x1073F, 0x10756, 0x1075F, 0x10768, 0x107FF, 0x10806, 0x10807, - 0x10809, undef, 0x10836, undef, 0x10839, 0x1083B, 0x1083D, 0x1083E, 0x10856, undef, 0x1089F, 0x108A6, 0x108B0, 0x108DF, 0x108F3, undef, - 0x108F6, 0x108FA, 0x1091C, 0x1091E, 0x1093A, 0x1093E, 0x10940, 0x1097F, 0x109B8, 0x109BB, 0x109D0, 0x109D1, 0x10A04, undef, 0x10A07, 0x10A0B, - 0x10A14, undef, 0x10A18, undef, 0x10A34, 0x10A37, 0x10A3B, 0x10A3E, 0x10A48, 0x10A4F, 0x10A59, 0x10A5F, 0x10AA0, 0x10ABF, 0x10AE7, 0x10AEA, - 0x10AF7, 0x10AFF, 0x10B36, 0x10B38, 0x10B56, 0x10B57, 0x10B73, 0x10B77, 0x10B92, 0x10B98, 0x10B9D, 0x10BA8, 0x10BB0, 0x10BFF, 0x10C49, 0x10C7F, - 0x10CB3, 0x10CBF, 0x10CF3, 0x10CF9, 0x10D00, 0x10E5F, 0x10E7F, 0x10FFF, 0x1104E, 0x11051, 0x11070, 0x1107E, 0x110BD, undef, 0x110C2, 0x110CF, - 0x110E9, 0x110EF, 0x110FA, 0x110FF, 0x11135, undef, 0x11144, 0x1114F, 0x11177, 0x1117F, 0x111CE, 0x111CF, 0x111E0, undef, 0x111F5, 0x111FF, - 0x11212, undef, 0x1123F, 0x1127F, 0x11287, undef, 0x11289, undef, 0x1128E, undef, 0x1129E, undef, 0x112AA, 0x112AF, 0x112EB, 0x112EF, - 0x112FA, 0x112FF, 0x11304, undef, 0x1130D, 0x1130E, 0x11311, 0x11312, 0x11329, undef, 0x11331, undef, 0x11334, undef, 0x1133A, 0x1133B, - 0x11345, 0x11346, 0x11349, 0x1134A, 0x1134E, 0x1134F, 0x11351, 0x11356, 0x11358, 0x1135C, 0x11364, 0x11365, 0x1136D, 0x1136F, 0x11375, 0x113FF, - 0x1145A, undef, 0x1145C, undef, 0x1145E, 0x1147F, 0x114C8, 0x114CF, 0x114DA, 0x1157F, 0x115B6, 0x115B7, 0x115DE, 0x115FF, 0x11645, 0x1164F, - 0x1165A, 0x1165F, 0x1166D, 0x1167F, 0x116B8, 0x116BF, 0x116CA, 0x116FF, 0x1171A, 0x1171C, 0x1172C, 0x1172F, 0x11740, 0x1189F, 0x118F3, 0x118FE, - 0x11900, 0x119FF, 0x11A48, 0x11A4F, 0x11A84, 0x11A85, 0x11A9D, undef, 0x11AA3, 0x11ABF, 0x11AF9, 0x11BFF, 0x11C09, undef, 0x11C37, undef, - 0x11C46, 0x11C4F, 0x11C6D, 0x11C6F, 0x11C90, 0x11C91, 0x11CA8, undef, 0x11CB7, 0x11CFF, 0x11D07, undef, 0x11D0A, undef, 0x11D37, 0x11D39, - 0x11D3B, undef, 0x11D3E, undef, 0x11D48, 0x11D4F, 0x11D5A, 0x11FFF, 0x1239A, 0x123FF, 0x1246F, undef, 0x12475, 0x1247F, 0x12544, 0x12FFF, - 0x1342F, 0x143FF, 0x14647, 0x167FF, 0x16A39, 0x16A3F, 0x16A5F, undef, 0x16A6A, 0x16A6D, 0x16A70, 0x16ACF, 0x16AEE, 0x16AEF, 0x16AF6, 0x16AFF, - 0x16B46, 0x16B4F, 0x16B5A, undef, 0x16B62, undef, 0x16B78, 0x16B7C, 0x16B90, 0x16EFF, 0x16F45, 0x16F4F, 0x16F7F, 0x16F8E, 0x16FA0, 0x16FDF, - 0x16FE2, 0x16FFF, 0x187ED, 0x187FF, 0x18AF3, 0x1AFFF, 0x1B11F, 0x1B16F, 0x1B2FC, 0x1BBFF, 0x1BC6B, 0x1BC6F, 0x1BC7D, 0x1BC7F, 0x1BC89, 0x1BC8F, - 0x1BC9A, 0x1BC9B, 0x1BCA4, 0x1CFFF, 0x1D0F6, 0x1D0FF, 0x1D127, 0x1D128, 0x1D173, 0x1D17A, 0x1D1E9, 0x1D1FF, 0x1D246, 0x1D2FF, 0x1D357, 0x1D35F, - 0x1D372, 0x1D3FF, 0x1D455, undef, 0x1D49D, undef, 0x1D4A0, 0x1D4A1, 0x1D4A3, 0x1D4A4, 0x1D4A7, 0x1D4A8, 0x1D4AD, undef, 0x1D4BA, undef, - 0x1D4BC, undef, 0x1D4C4, undef, 0x1D506, undef, 0x1D50B, 0x1D50C, 0x1D515, undef, 0x1D51D, undef, 0x1D53A, undef, 0x1D53F, undef, - 0x1D545, undef, 0x1D547, 0x1D549, 0x1D551, undef, 0x1D6A6, 0x1D6A7, 0x1D7CC, 0x1D7CD, 0x1DA8C, 0x1DA9A, 0x1DAA0, undef, 0x1DAB0, 0x1DFFF, - 0x1E007, undef, 0x1E019, 0x1E01A, 0x1E022, undef, 0x1E025, undef, 0x1E02B, 0x1E7FF, 0x1E8C5, 0x1E8C6, 0x1E8D7, 0x1E8FF, 0x1E94B, 0x1E94F, - 0x1E95A, 0x1E95D, 0x1E960, 0x1EDFF, 0x1EE04, undef, 0x1EE20, undef, 0x1EE23, undef, 0x1EE25, 0x1EE26, 0x1EE28, undef, 0x1EE33, undef, - 0x1EE38, undef, 0x1EE3A, undef, 0x1EE3C, 0x1EE41, 0x1EE43, 0x1EE46, 0x1EE48, undef, 0x1EE4A, undef, 0x1EE4C, undef, 0x1EE50, undef, - 0x1EE53, undef, 0x1EE55, 0x1EE56, 0x1EE58, undef, 0x1EE5A, undef, 0x1EE5C, undef, 0x1EE5E, undef, 0x1EE60, undef, 0x1EE63, undef, - 0x1EE65, 0x1EE66, 0x1EE6B, undef, 0x1EE73, undef, 0x1EE78, undef, 0x1EE7D, undef, 0x1EE7F, undef, 0x1EE8A, undef, 0x1EE9C, 0x1EEA0, - 0x1EEA4, undef, 0x1EEAA, undef, 0x1EEBC, 0x1EEEF, 0x1EEF2, 0x1EFFF, 0x1F02C, 0x1F02F, 0x1F094, 0x1F09F, 0x1F0AF, 0x1F0B0, 0x1F0C0, undef, - 0x1F0D0, undef, 0x1F0F6, 0x1F100, 0x1F10D, 0x1F10F, 0x1F12F, undef, 0x1F16C, 0x1F16F, 0x1F1AD, 0x1F1E5, 0x1F203, 0x1F20F, 0x1F23C, 0x1F23F, - 0x1F249, 0x1F24F, 0x1F252, 0x1F25F, 0x1F266, 0x1F2FF, 0x1F6D5, 0x1F6DF, 0x1F6ED, 0x1F6EF, 0x1F6F9, 0x1F6FF, 0x1F774, 0x1F77F, 0x1F7D5, 0x1F7FF, - 0x1F80C, 0x1F80F, 0x1F848, 0x1F84F, 0x1F85A, 0x1F85F, 0x1F888, 0x1F88F, 0x1F8AE, 0x1F8FF, 0x1F90C, 0x1F90F, 0x1F93F, undef, 0x1F94D, 0x1F94F, - 0x1F96C, 0x1F97F, 0x1F998, 0x1F9BF, 0x1F9C1, 0x1F9CF, 0x1F9E7, 0x1FFFF, 0x2A6D7, 0x2A6FF, 0x2B735, 0x2B73F, 0x2B81E, 0x2B81F, 0x2CEA2, 0x2CEAF, - 0x2EBE1, 0x2F7FF, 0x2F868, undef, 0x2F874, undef, 0x2F91F, undef, 0x2F95F, undef, 0x2F9BF, undef, 0x2FA1E, 0xE00FF, 0xE01F0, 0x10FFFF, -); +our @DISALLOWED; +BEGIN { + @DISALLOWED = ( + 0x0080, 0x009F, 0x0378, 0x0379, 0x0380, 0x0383, 0x038B, undef, 0x038D, undef, 0x03A2, undef, 0x04C0, undef, 0x0530, undef, + 0x0557, 0x0558, 0x0560, undef, 0x0588, undef, 0x058B, 0x058C, 0x0590, undef, 0x05C8, 0x05CF, 0x05EB, 0x05EF, 0x05F5, 0x0605, + 0x061C, 0x061D, 0x06DD, undef, 0x070E, 0x070F, 0x074B, 0x074C, 0x07B2, 0x07BF, 0x07FB, 0x07FF, 0x082E, 0x082F, 0x083F, undef, + 0x085C, 0x085D, 0x085F, undef, 0x086B, 0x089F, 0x08B5, undef, 0x08BE, 0x08D3, 0x08E2, undef, 0x0984, undef, 0x098D, 0x098E, + 0x0991, 0x0992, 0x09A9, undef, 0x09B1, undef, 0x09B3, 0x09B5, 0x09BA, 0x09BB, 0x09C5, 0x09C6, 0x09C9, 0x09CA, 0x09CF, 0x09D6, + 0x09D8, 0x09DB, 0x09DE, undef, 0x09E4, 0x09E5, 0x09FE, 0x0A00, 0x0A04, undef, 0x0A0B, 0x0A0E, 0x0A11, 0x0A12, 0x0A29, undef, + 0x0A31, undef, 0x0A34, undef, 0x0A37, undef, 0x0A3A, 0x0A3B, 0x0A3D, undef, 0x0A43, 0x0A46, 0x0A49, 0x0A4A, 0x0A4E, 0x0A50, + 0x0A52, 0x0A58, 0x0A5D, undef, 0x0A5F, 0x0A65, 0x0A76, 0x0A80, 0x0A84, undef, 0x0A8E, undef, 0x0A92, undef, 0x0AA9, undef, + 0x0AB1, undef, 0x0AB4, undef, 0x0ABA, 0x0ABB, 0x0AC6, undef, 0x0ACA, undef, 0x0ACE, 0x0ACF, 0x0AD1, 0x0ADF, 0x0AE4, 0x0AE5, + 0x0AF2, 0x0AF8, 0x0B00, undef, 0x0B04, undef, 0x0B0D, 0x0B0E, 0x0B11, 0x0B12, 0x0B29, undef, 0x0B31, undef, 0x0B34, undef, + 0x0B3A, 0x0B3B, 0x0B45, 0x0B46, 0x0B49, 0x0B4A, 0x0B4E, 0x0B55, 0x0B58, 0x0B5B, 0x0B5E, undef, 0x0B64, 0x0B65, 0x0B78, 0x0B81, + 0x0B84, undef, 0x0B8B, 0x0B8D, 0x0B91, undef, 0x0B96, 0x0B98, 0x0B9B, undef, 0x0B9D, undef, 0x0BA0, 0x0BA2, 0x0BA5, 0x0BA7, + 0x0BAB, 0x0BAD, 0x0BBA, 0x0BBD, 0x0BC3, 0x0BC5, 0x0BC9, undef, 0x0BCE, 0x0BCF, 0x0BD1, 0x0BD6, 0x0BD8, 0x0BE5, 0x0BFB, 0x0BFF, + 0x0C04, undef, 0x0C0D, undef, 0x0C11, undef, 0x0C29, undef, 0x0C3A, 0x0C3C, 0x0C45, undef, 0x0C49, undef, 0x0C4E, 0x0C54, + 0x0C57, undef, 0x0C5B, 0x0C5F, 0x0C64, 0x0C65, 0x0C70, 0x0C77, 0x0C84, undef, 0x0C8D, undef, 0x0C91, undef, 0x0CA9, undef, + 0x0CB4, undef, 0x0CBA, 0x0CBB, 0x0CC5, undef, 0x0CC9, undef, 0x0CCE, 0x0CD4, 0x0CD7, 0x0CDD, 0x0CDF, undef, 0x0CE4, 0x0CE5, + 0x0CF0, undef, 0x0CF3, 0x0CFF, 0x0D04, undef, 0x0D0D, undef, 0x0D11, undef, 0x0D45, undef, 0x0D49, undef, 0x0D50, 0x0D53, + 0x0D64, 0x0D65, 0x0D80, 0x0D81, 0x0D84, undef, 0x0D97, 0x0D99, 0x0DB2, undef, 0x0DBC, undef, 0x0DBE, 0x0DBF, 0x0DC7, 0x0DC9, + 0x0DCB, 0x0DCE, 0x0DD5, undef, 0x0DD7, undef, 0x0DE0, 0x0DE5, 0x0DF0, 0x0DF1, 0x0DF5, 0x0E00, 0x0E3B, 0x0E3E, 0x0E5C, 0x0E80, + 0x0E83, undef, 0x0E85, 0x0E86, 0x0E89, undef, 0x0E8B, 0x0E8C, 0x0E8E, 0x0E93, 0x0E98, undef, 0x0EA0, undef, 0x0EA4, undef, + 0x0EA6, undef, 0x0EA8, 0x0EA9, 0x0EAC, undef, 0x0EBA, undef, 0x0EBE, 0x0EBF, 0x0EC5, undef, 0x0EC7, undef, 0x0ECE, 0x0ECF, + 0x0EDA, 0x0EDB, 0x0EE0, 0x0EFF, 0x0F48, undef, 0x0F6D, 0x0F70, 0x0F98, undef, 0x0FBD, undef, 0x0FCD, undef, 0x0FDB, 0x0FFF, + 0x10A0, 0x10C6, 0x10C8, 0x10CC, 0x10CE, 0x10CF, 0x115F, 0x1160, 0x1249, undef, 0x124E, 0x124F, 0x1257, undef, 0x1259, undef, + 0x125E, 0x125F, 0x1289, undef, 0x128E, 0x128F, 0x12B1, undef, 0x12B6, 0x12B7, 0x12BF, undef, 0x12C1, undef, 0x12C6, 0x12C7, + 0x12D7, undef, 0x1311, undef, 0x1316, 0x1317, 0x135B, 0x135C, 0x137D, 0x137F, 0x139A, 0x139F, 0x13F6, 0x13F7, 0x13FE, 0x13FF, + 0x1680, undef, 0x169D, 0x169F, 0x16F9, 0x16FF, 0x170D, undef, 0x1715, 0x171F, 0x1737, 0x173F, 0x1754, 0x175F, 0x176D, undef, + 0x1771, undef, 0x1774, 0x177F, 0x17B4, 0x17B5, 0x17DE, 0x17DF, 0x17EA, 0x17EF, 0x17FA, 0x17FF, 0x1806, undef, 0x180E, 0x180F, + 0x181A, 0x181F, 0x1878, 0x187F, 0x18AB, 0x18AF, 0x18F6, 0x18FF, 0x191F, undef, 0x192C, 0x192F, 0x193C, 0x193F, 0x1941, 0x1943, + 0x196E, 0x196F, 0x1975, 0x197F, 0x19AC, 0x19AF, 0x19CA, 0x19CF, 0x19DB, 0x19DD, 0x1A1C, 0x1A1D, 0x1A5F, undef, 0x1A7D, 0x1A7E, + 0x1A8A, 0x1A8F, 0x1A9A, 0x1A9F, 0x1AAE, 0x1AAF, 0x1ABF, 0x1AFF, 0x1B4C, 0x1B4F, 0x1B7D, 0x1B7F, 0x1BF4, 0x1BFB, 0x1C38, 0x1C3A, + 0x1C4A, 0x1C4C, 0x1C89, 0x1CBF, 0x1CC8, 0x1CCF, 0x1CFA, 0x1CFF, 0x1DFA, undef, 0x1F16, 0x1F17, 0x1F1E, 0x1F1F, 0x1F46, 0x1F47, + 0x1F4E, 0x1F4F, 0x1F58, undef, 0x1F5A, undef, 0x1F5C, undef, 0x1F5E, undef, 0x1F7E, 0x1F7F, 0x1FB5, undef, 0x1FC5, undef, + 0x1FD4, 0x1FD5, 0x1FDC, undef, 0x1FF0, 0x1FF1, 0x1FF5, undef, 0x1FFF, undef, 0x200E, 0x200F, 0x2024, 0x2026, 0x2028, 0x202E, + 0x2061, 0x2063, 0x2065, 0x206F, 0x2072, 0x2073, 0x208F, undef, 0x209D, 0x209F, 0x20C0, 0x20CF, 0x20F1, 0x20FF, 0x2132, undef, + 0x2183, undef, 0x218C, 0x218F, 0x2427, 0x243F, 0x244B, 0x245F, 0x2488, 0x249B, 0x2B74, 0x2B75, 0x2B96, 0x2B97, 0x2BBA, 0x2BBC, + 0x2BC9, undef, 0x2BD3, 0x2BEB, 0x2BF0, 0x2BFF, 0x2C2F, undef, 0x2C5F, undef, 0x2CF4, 0x2CF8, 0x2D26, undef, 0x2D28, 0x2D2C, + 0x2D2E, 0x2D2F, 0x2D68, 0x2D6E, 0x2D71, 0x2D7E, 0x2D97, 0x2D9F, 0x2DA7, undef, 0x2DAF, undef, 0x2DB7, undef, 0x2DBF, undef, + 0x2DC7, undef, 0x2DCF, undef, 0x2DD7, undef, 0x2DDF, undef, 0x2E4A, 0x2E7F, 0x2E9A, undef, 0x2EF4, 0x2EFF, 0x2FD6, 0x2FFF, + 0x3040, undef, 0x3097, 0x3098, 0x3100, 0x3104, 0x312F, 0x3130, 0x3164, undef, 0x318F, undef, 0x31BB, 0x31BF, 0x31E4, 0x31EF, + 0x321F, undef, 0x32FF, undef, 0x33C2, undef, 0x33C7, undef, 0x33D8, undef, 0x4DB6, 0x4DBF, 0x9FEB, 0x9FFF, 0xA48D, 0xA48F, + 0xA4C7, 0xA4CF, 0xA62C, 0xA63F, 0xA6F8, 0xA6FF, 0xA7AF, undef, 0xA7B8, 0xA7F6, 0xA82C, 0xA82F, 0xA83A, 0xA83F, 0xA878, 0xA87F, + 0xA8C6, 0xA8CD, 0xA8DA, 0xA8DF, 0xA8FE, 0xA8FF, 0xA954, 0xA95E, 0xA97D, 0xA97F, 0xA9CE, undef, 0xA9DA, 0xA9DD, 0xA9FF, undef, + 0xAA37, 0xAA3F, 0xAA4E, 0xAA4F, 0xAA5A, 0xAA5B, 0xAAC3, 0xAADA, 0xAAF7, 0xAB00, 0xAB07, 0xAB08, 0xAB0F, 0xAB10, 0xAB17, 0xAB1F, + 0xAB27, undef, 0xAB2F, undef, 0xAB66, 0xAB6F, 0xABEE, 0xABEF, 0xABFA, 0xABFF, 0xD7A4, 0xD7AF, 0xD7C7, 0xD7CA, 0xD7FC, 0xF8FF, + 0xFA6E, 0xFA6F, 0xFADA, 0xFAFF, 0xFB07, 0xFB12, 0xFB18, 0xFB1C, 0xFB37, undef, 0xFB3D, undef, 0xFB3F, undef, 0xFB42, undef, + 0xFB45, undef, 0xFBC2, 0xFBD2, 0xFD40, 0xFD4F, 0xFD90, 0xFD91, 0xFDC8, 0xFDEF, 0xFDFE, 0xFDFF, 0xFE12, undef, 0xFE19, 0xFE1F, + 0xFE30, undef, 0xFE52, 0xFE53, 0xFE67, undef, 0xFE6C, 0xFE6F, 0xFE75, undef, 0xFEFD, 0xFEFE, 0xFF00, undef, 0xFFA0, undef, + 0xFFBF, 0xFFC1, 0xFFC8, 0xFFC9, 0xFFD0, 0xFFD1, 0xFFD8, 0xFFD9, 0xFFDD, 0xFFDF, 0xFFE7, undef, 0xFFEF, 0xFFFF, 0x1000C, undef, + 0x10027, undef, 0x1003B, undef, 0x1003E, undef, 0x1004E, 0x1004F, 0x1005E, 0x1007F, 0x100FB, 0x100FF, 0x10103, 0x10106, 0x10134, 0x10136, + 0x1018F, undef, 0x1019C, 0x1019F, 0x101A1, 0x101CF, 0x101FE, 0x1027F, 0x1029D, 0x1029F, 0x102D1, 0x102DF, 0x102FC, 0x102FF, 0x10324, 0x1032C, + 0x1034B, 0x1034F, 0x1037B, 0x1037F, 0x1039E, undef, 0x103C4, 0x103C7, 0x103D6, 0x103FF, 0x1049E, 0x1049F, 0x104AA, 0x104AF, 0x104D4, 0x104D7, + 0x104FC, 0x104FF, 0x10528, 0x1052F, 0x10564, 0x1056E, 0x10570, 0x105FF, 0x10737, 0x1073F, 0x10756, 0x1075F, 0x10768, 0x107FF, 0x10806, 0x10807, + 0x10809, undef, 0x10836, undef, 0x10839, 0x1083B, 0x1083D, 0x1083E, 0x10856, undef, 0x1089F, 0x108A6, 0x108B0, 0x108DF, 0x108F3, undef, + 0x108F6, 0x108FA, 0x1091C, 0x1091E, 0x1093A, 0x1093E, 0x10940, 0x1097F, 0x109B8, 0x109BB, 0x109D0, 0x109D1, 0x10A04, undef, 0x10A07, 0x10A0B, + 0x10A14, undef, 0x10A18, undef, 0x10A34, 0x10A37, 0x10A3B, 0x10A3E, 0x10A48, 0x10A4F, 0x10A59, 0x10A5F, 0x10AA0, 0x10ABF, 0x10AE7, 0x10AEA, + 0x10AF7, 0x10AFF, 0x10B36, 0x10B38, 0x10B56, 0x10B57, 0x10B73, 0x10B77, 0x10B92, 0x10B98, 0x10B9D, 0x10BA8, 0x10BB0, 0x10BFF, 0x10C49, 0x10C7F, + 0x10CB3, 0x10CBF, 0x10CF3, 0x10CF9, 0x10D00, 0x10E5F, 0x10E7F, 0x10FFF, 0x1104E, 0x11051, 0x11070, 0x1107E, 0x110BD, undef, 0x110C2, 0x110CF, + 0x110E9, 0x110EF, 0x110FA, 0x110FF, 0x11135, undef, 0x11144, 0x1114F, 0x11177, 0x1117F, 0x111CE, 0x111CF, 0x111E0, undef, 0x111F5, 0x111FF, + 0x11212, undef, 0x1123F, 0x1127F, 0x11287, undef, 0x11289, undef, 0x1128E, undef, 0x1129E, undef, 0x112AA, 0x112AF, 0x112EB, 0x112EF, + 0x112FA, 0x112FF, 0x11304, undef, 0x1130D, 0x1130E, 0x11311, 0x11312, 0x11329, undef, 0x11331, undef, 0x11334, undef, 0x1133A, 0x1133B, + 0x11345, 0x11346, 0x11349, 0x1134A, 0x1134E, 0x1134F, 0x11351, 0x11356, 0x11358, 0x1135C, 0x11364, 0x11365, 0x1136D, 0x1136F, 0x11375, 0x113FF, + 0x1145A, undef, 0x1145C, undef, 0x1145E, 0x1147F, 0x114C8, 0x114CF, 0x114DA, 0x1157F, 0x115B6, 0x115B7, 0x115DE, 0x115FF, 0x11645, 0x1164F, + 0x1165A, 0x1165F, 0x1166D, 0x1167F, 0x116B8, 0x116BF, 0x116CA, 0x116FF, 0x1171A, 0x1171C, 0x1172C, 0x1172F, 0x11740, 0x1189F, 0x118F3, 0x118FE, + 0x11900, 0x119FF, 0x11A48, 0x11A4F, 0x11A84, 0x11A85, 0x11A9D, undef, 0x11AA3, 0x11ABF, 0x11AF9, 0x11BFF, 0x11C09, undef, 0x11C37, undef, + 0x11C46, 0x11C4F, 0x11C6D, 0x11C6F, 0x11C90, 0x11C91, 0x11CA8, undef, 0x11CB7, 0x11CFF, 0x11D07, undef, 0x11D0A, undef, 0x11D37, 0x11D39, + 0x11D3B, undef, 0x11D3E, undef, 0x11D48, 0x11D4F, 0x11D5A, 0x11FFF, 0x1239A, 0x123FF, 0x1246F, undef, 0x12475, 0x1247F, 0x12544, 0x12FFF, + 0x1342F, 0x143FF, 0x14647, 0x167FF, 0x16A39, 0x16A3F, 0x16A5F, undef, 0x16A6A, 0x16A6D, 0x16A70, 0x16ACF, 0x16AEE, 0x16AEF, 0x16AF6, 0x16AFF, + 0x16B46, 0x16B4F, 0x16B5A, undef, 0x16B62, undef, 0x16B78, 0x16B7C, 0x16B90, 0x16EFF, 0x16F45, 0x16F4F, 0x16F7F, 0x16F8E, 0x16FA0, 0x16FDF, + 0x16FE2, 0x16FFF, 0x187ED, 0x187FF, 0x18AF3, 0x1AFFF, 0x1B11F, 0x1B16F, 0x1B2FC, 0x1BBFF, 0x1BC6B, 0x1BC6F, 0x1BC7D, 0x1BC7F, 0x1BC89, 0x1BC8F, + 0x1BC9A, 0x1BC9B, 0x1BCA4, 0x1CFFF, 0x1D0F6, 0x1D0FF, 0x1D127, 0x1D128, 0x1D173, 0x1D17A, 0x1D1E9, 0x1D1FF, 0x1D246, 0x1D2FF, 0x1D357, 0x1D35F, + 0x1D372, 0x1D3FF, 0x1D455, undef, 0x1D49D, undef, 0x1D4A0, 0x1D4A1, 0x1D4A3, 0x1D4A4, 0x1D4A7, 0x1D4A8, 0x1D4AD, undef, 0x1D4BA, undef, + 0x1D4BC, undef, 0x1D4C4, undef, 0x1D506, undef, 0x1D50B, 0x1D50C, 0x1D515, undef, 0x1D51D, undef, 0x1D53A, undef, 0x1D53F, undef, + 0x1D545, undef, 0x1D547, 0x1D549, 0x1D551, undef, 0x1D6A6, 0x1D6A7, 0x1D7CC, 0x1D7CD, 0x1DA8C, 0x1DA9A, 0x1DAA0, undef, 0x1DAB0, 0x1DFFF, + 0x1E007, undef, 0x1E019, 0x1E01A, 0x1E022, undef, 0x1E025, undef, 0x1E02B, 0x1E7FF, 0x1E8C5, 0x1E8C6, 0x1E8D7, 0x1E8FF, 0x1E94B, 0x1E94F, + 0x1E95A, 0x1E95D, 0x1E960, 0x1EDFF, 0x1EE04, undef, 0x1EE20, undef, 0x1EE23, undef, 0x1EE25, 0x1EE26, 0x1EE28, undef, 0x1EE33, undef, + 0x1EE38, undef, 0x1EE3A, undef, 0x1EE3C, 0x1EE41, 0x1EE43, 0x1EE46, 0x1EE48, undef, 0x1EE4A, undef, 0x1EE4C, undef, 0x1EE50, undef, + 0x1EE53, undef, 0x1EE55, 0x1EE56, 0x1EE58, undef, 0x1EE5A, undef, 0x1EE5C, undef, 0x1EE5E, undef, 0x1EE60, undef, 0x1EE63, undef, + 0x1EE65, 0x1EE66, 0x1EE6B, undef, 0x1EE73, undef, 0x1EE78, undef, 0x1EE7D, undef, 0x1EE7F, undef, 0x1EE8A, undef, 0x1EE9C, 0x1EEA0, + 0x1EEA4, undef, 0x1EEAA, undef, 0x1EEBC, 0x1EEEF, 0x1EEF2, 0x1EFFF, 0x1F02C, 0x1F02F, 0x1F094, 0x1F09F, 0x1F0AF, 0x1F0B0, 0x1F0C0, undef, + 0x1F0D0, undef, 0x1F0F6, 0x1F100, 0x1F10D, 0x1F10F, 0x1F12F, undef, 0x1F16C, 0x1F16F, 0x1F1AD, 0x1F1E5, 0x1F203, 0x1F20F, 0x1F23C, 0x1F23F, + 0x1F249, 0x1F24F, 0x1F252, 0x1F25F, 0x1F266, 0x1F2FF, 0x1F6D5, 0x1F6DF, 0x1F6ED, 0x1F6EF, 0x1F6F9, 0x1F6FF, 0x1F774, 0x1F77F, 0x1F7D5, 0x1F7FF, + 0x1F80C, 0x1F80F, 0x1F848, 0x1F84F, 0x1F85A, 0x1F85F, 0x1F888, 0x1F88F, 0x1F8AE, 0x1F8FF, 0x1F90C, 0x1F90F, 0x1F93F, undef, 0x1F94D, 0x1F94F, + 0x1F96C, 0x1F97F, 0x1F998, 0x1F9BF, 0x1F9C1, 0x1F9CF, 0x1F9E7, 0x1FFFF, 0x2A6D7, 0x2A6FF, 0x2B735, 0x2B73F, 0x2B81E, 0x2B81F, 0x2CEA2, 0x2CEAF, + 0x2EBE1, 0x2F7FF, 0x2F868, undef, 0x2F874, undef, 0x2F91F, undef, 0x2F95F, undef, 0x2F9BF, undef, 0x2FA1E, 0xE00FF, 0xE01F0, 0x10FFFF, + ); + +} sub IsDisallowed { return _mk_prop(@DISALLOWED); }; -our @DISALLOWEDSTD3VALID = ( - 0x0000, 0x002C, 0x002F, undef, 0x003A, 0x0040, 0x005B, 0x0060, 0x007B, 0x007F, 0x2260, undef, 0x226E, 0x226F, -); +our @DISALLOWEDSTD3VALID; +BEGIN { + @DISALLOWEDSTD3VALID = ( + 0x0000, 0x002C, 0x002F, undef, 0x003A, 0x0040, 0x005B, 0x0060, 0x007B, 0x007F, 0x2260, undef, 0x226E, 0x226F, + ); + +} sub IsDisallowedSTD3Valid { return _mk_prop(@DISALLOWEDSTD3VALID); }; -our @VALID = ( - 0x002D, 0x002E, 0x0030, 0x0039, 0x0061, 0x007A, 0x00A1, 0x00A7, 0x00A9, undef, 0x00AB, 0x00AC, 0x00AE, undef, 0x00B0, 0x00B1, - 0x00B6, 0x00B7, 0x00BB, undef, 0x00BF, undef, 0x00D7, undef, 0x00E0, 0x00FF, 0x0101, undef, 0x0103, undef, 0x0105, undef, - 0x0107, undef, 0x0109, undef, 0x010B, undef, 0x010D, undef, 0x010F, undef, 0x0111, undef, 0x0113, undef, 0x0115, undef, - 0x0117, undef, 0x0119, undef, 0x011B, undef, 0x011D, undef, 0x011F, undef, 0x0121, undef, 0x0123, undef, 0x0125, undef, - 0x0127, undef, 0x0129, undef, 0x012B, undef, 0x012D, undef, 0x012F, undef, 0x0131, undef, 0x0135, undef, 0x0137, 0x0138, - 0x013A, undef, 0x013C, undef, 0x013E, undef, 0x0142, undef, 0x0144, undef, 0x0146, undef, 0x0148, undef, 0x014B, undef, - 0x014D, undef, 0x014F, undef, 0x0151, undef, 0x0153, undef, 0x0155, undef, 0x0157, undef, 0x0159, undef, 0x015B, undef, - 0x015D, undef, 0x015F, undef, 0x0161, undef, 0x0163, undef, 0x0165, undef, 0x0167, undef, 0x0169, undef, 0x016B, undef, - 0x016D, undef, 0x016F, undef, 0x0171, undef, 0x0173, undef, 0x0175, undef, 0x0177, undef, 0x017A, undef, 0x017C, undef, - 0x017E, undef, 0x0180, undef, 0x0183, undef, 0x0185, undef, 0x0188, undef, 0x018C, 0x018D, 0x0192, undef, 0x0195, undef, - 0x0199, 0x019B, 0x019E, undef, 0x01A1, undef, 0x01A3, undef, 0x01A5, undef, 0x01A8, undef, 0x01AA, 0x01AB, 0x01AD, undef, - 0x01B0, undef, 0x01B4, undef, 0x01B6, undef, 0x01B9, 0x01BB, 0x01BD, 0x01C3, 0x01CE, undef, 0x01D0, undef, 0x01D2, undef, - 0x01D4, undef, 0x01D6, undef, 0x01D8, undef, 0x01DA, undef, 0x01DC, 0x01DD, 0x01DF, undef, 0x01E1, undef, 0x01E3, undef, - 0x01E5, undef, 0x01E7, undef, 0x01E9, undef, 0x01EB, undef, 0x01ED, undef, 0x01EF, 0x01F0, 0x01F5, undef, 0x01F9, undef, - 0x01FB, undef, 0x01FD, undef, 0x01FF, undef, 0x0201, undef, 0x0203, undef, 0x0205, undef, 0x0207, undef, 0x0209, undef, - 0x020B, undef, 0x020D, undef, 0x020F, undef, 0x0211, undef, 0x0213, undef, 0x0215, undef, 0x0217, undef, 0x0219, undef, - 0x021B, undef, 0x021D, undef, 0x021F, undef, 0x0221, undef, 0x0223, undef, 0x0225, undef, 0x0227, undef, 0x0229, undef, - 0x022B, undef, 0x022D, undef, 0x022F, undef, 0x0231, undef, 0x0233, 0x0239, 0x023C, undef, 0x023F, 0x0240, 0x0242, undef, - 0x0247, undef, 0x0249, undef, 0x024B, undef, 0x024D, undef, 0x024F, 0x02AF, 0x02B9, 0x02D7, 0x02DE, 0x02DF, 0x02E5, 0x033F, - 0x0342, undef, 0x0346, 0x034E, 0x0350, 0x036F, 0x0371, undef, 0x0373, undef, 0x0375, undef, 0x0377, undef, 0x037B, 0x037D, - 0x0390, undef, 0x03AC, 0x03C1, 0x03C3, 0x03CE, 0x03D7, undef, 0x03D9, undef, 0x03DB, undef, 0x03DD, undef, 0x03DF, undef, - 0x03E1, undef, 0x03E3, undef, 0x03E5, undef, 0x03E7, undef, 0x03E9, undef, 0x03EB, undef, 0x03ED, undef, 0x03EF, undef, - 0x03F3, undef, 0x03F6, undef, 0x03F8, undef, 0x03FB, 0x03FC, 0x0430, 0x045F, 0x0461, undef, 0x0463, undef, 0x0465, undef, - 0x0467, undef, 0x0469, undef, 0x046B, undef, 0x046D, undef, 0x046F, undef, 0x0471, undef, 0x0473, undef, 0x0475, undef, - 0x0477, undef, 0x0479, undef, 0x047B, undef, 0x047D, undef, 0x047F, undef, 0x0481, 0x0489, 0x048B, undef, 0x048D, undef, - 0x048F, undef, 0x0491, undef, 0x0493, undef, 0x0495, undef, 0x0497, undef, 0x0499, undef, 0x049B, undef, 0x049D, undef, - 0x049F, undef, 0x04A1, undef, 0x04A3, undef, 0x04A5, undef, 0x04A7, undef, 0x04A9, undef, 0x04AB, undef, 0x04AD, undef, - 0x04AF, undef, 0x04B1, undef, 0x04B3, undef, 0x04B5, undef, 0x04B7, undef, 0x04B9, undef, 0x04BB, undef, 0x04BD, undef, - 0x04BF, undef, 0x04C2, undef, 0x04C4, undef, 0x04C6, undef, 0x04C8, undef, 0x04CA, undef, 0x04CC, undef, 0x04CE, 0x04CF, - 0x04D1, undef, 0x04D3, undef, 0x04D5, undef, 0x04D7, undef, 0x04D9, undef, 0x04DB, undef, 0x04DD, undef, 0x04DF, undef, - 0x04E1, undef, 0x04E3, undef, 0x04E5, undef, 0x04E7, undef, 0x04E9, undef, 0x04EB, undef, 0x04ED, undef, 0x04EF, undef, - 0x04F1, undef, 0x04F3, undef, 0x04F5, undef, 0x04F7, undef, 0x04F9, undef, 0x04FB, undef, 0x04FD, undef, 0x04FF, undef, - 0x0501, undef, 0x0503, undef, 0x0505, undef, 0x0507, undef, 0x0509, undef, 0x050B, undef, 0x050D, undef, 0x050F, undef, - 0x0511, undef, 0x0513, undef, 0x0515, undef, 0x0517, undef, 0x0519, undef, 0x051B, undef, 0x051D, undef, 0x051F, undef, - 0x0521, undef, 0x0523, undef, 0x0525, undef, 0x0527, undef, 0x0529, undef, 0x052B, undef, 0x052D, undef, 0x052F, undef, - 0x0559, 0x055F, 0x0561, 0x0586, 0x0589, 0x058A, 0x058D, 0x058F, 0x0591, 0x05C7, 0x05D0, 0x05EA, 0x05F0, 0x05F4, 0x0606, 0x061B, - 0x061E, 0x0674, 0x0679, 0x06DC, 0x06DE, 0x070D, 0x0710, 0x074A, 0x074D, 0x07B1, 0x07C0, 0x07FA, 0x0800, 0x082D, 0x0830, 0x083E, - 0x0840, 0x085B, 0x085E, undef, 0x0860, 0x086A, 0x08A0, 0x08B4, 0x08B6, 0x08BD, 0x08D4, 0x08E1, 0x08E3, 0x0957, 0x0960, 0x0983, - 0x0985, 0x098C, 0x098F, 0x0990, 0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B2, undef, 0x09B6, 0x09B9, 0x09BC, 0x09C4, 0x09C7, 0x09C8, - 0x09CB, 0x09CE, 0x09D7, undef, 0x09E0, 0x09E3, 0x09E6, 0x09FD, 0x0A01, 0x0A03, 0x0A05, 0x0A0A, 0x0A0F, 0x0A10, 0x0A13, 0x0A28, - 0x0A2A, 0x0A30, 0x0A32, undef, 0x0A35, undef, 0x0A38, 0x0A39, 0x0A3C, undef, 0x0A3E, 0x0A42, 0x0A47, 0x0A48, 0x0A4B, 0x0A4D, - 0x0A51, undef, 0x0A5C, undef, 0x0A66, 0x0A75, 0x0A81, 0x0A83, 0x0A85, 0x0A8D, 0x0A8F, 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, - 0x0AB2, 0x0AB3, 0x0AB5, 0x0AB9, 0x0ABC, 0x0AC5, 0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0AD0, undef, 0x0AE0, 0x0AE3, 0x0AE6, 0x0AF1, - 0x0AF9, 0x0AFF, 0x0B01, 0x0B03, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28, 0x0B2A, 0x0B30, 0x0B32, 0x0B33, 0x0B35, 0x0B39, - 0x0B3C, 0x0B44, 0x0B47, 0x0B48, 0x0B4B, 0x0B4D, 0x0B56, 0x0B57, 0x0B5F, 0x0B63, 0x0B66, 0x0B77, 0x0B82, 0x0B83, 0x0B85, 0x0B8A, - 0x0B8E, 0x0B90, 0x0B92, 0x0B95, 0x0B99, 0x0B9A, 0x0B9C, undef, 0x0B9E, 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA, 0x0BAE, 0x0BB9, - 0x0BBE, 0x0BC2, 0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD, 0x0BD0, undef, 0x0BD7, undef, 0x0BE6, 0x0BFA, 0x0C00, 0x0C03, 0x0C05, 0x0C0C, - 0x0C0E, 0x0C10, 0x0C12, 0x0C28, 0x0C2A, 0x0C39, 0x0C3D, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4D, 0x0C55, 0x0C56, 0x0C58, 0x0C5A, - 0x0C60, 0x0C63, 0x0C66, 0x0C6F, 0x0C78, 0x0C83, 0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3, 0x0CB5, 0x0CB9, - 0x0CBC, 0x0CC4, 0x0CC6, 0x0CC8, 0x0CCA, 0x0CCD, 0x0CD5, 0x0CD6, 0x0CDE, undef, 0x0CE0, 0x0CE3, 0x0CE6, 0x0CEF, 0x0CF1, 0x0CF2, - 0x0D00, 0x0D03, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10, 0x0D12, 0x0D44, 0x0D46, 0x0D48, 0x0D4A, 0x0D4F, 0x0D54, 0x0D63, 0x0D66, 0x0D7F, - 0x0D82, 0x0D83, 0x0D85, 0x0D96, 0x0D9A, 0x0DB1, 0x0DB3, 0x0DBB, 0x0DBD, undef, 0x0DC0, 0x0DC6, 0x0DCA, undef, 0x0DCF, 0x0DD4, - 0x0DD6, undef, 0x0DD8, 0x0DDF, 0x0DE6, 0x0DEF, 0x0DF2, 0x0DF4, 0x0E01, 0x0E32, 0x0E34, 0x0E3A, 0x0E3F, 0x0E5B, 0x0E81, 0x0E82, - 0x0E84, undef, 0x0E87, 0x0E88, 0x0E8A, undef, 0x0E8D, undef, 0x0E94, 0x0E97, 0x0E99, 0x0E9F, 0x0EA1, 0x0EA3, 0x0EA5, undef, - 0x0EA7, undef, 0x0EAA, 0x0EAB, 0x0EAD, 0x0EB2, 0x0EB4, 0x0EB9, 0x0EBB, 0x0EBD, 0x0EC0, 0x0EC4, 0x0EC6, undef, 0x0EC8, 0x0ECD, - 0x0ED0, 0x0ED9, 0x0EDE, 0x0EDF, 0x0F00, 0x0F0B, 0x0F0D, 0x0F42, 0x0F44, 0x0F47, 0x0F49, 0x0F4C, 0x0F4E, 0x0F51, 0x0F53, 0x0F56, - 0x0F58, 0x0F5B, 0x0F5D, 0x0F68, 0x0F6A, 0x0F6C, 0x0F71, 0x0F72, 0x0F74, undef, 0x0F7A, 0x0F80, 0x0F82, 0x0F92, 0x0F94, 0x0F97, - 0x0F99, 0x0F9C, 0x0F9E, 0x0FA1, 0x0FA3, 0x0FA6, 0x0FA8, 0x0FAB, 0x0FAD, 0x0FB8, 0x0FBA, 0x0FBC, 0x0FBE, 0x0FCC, 0x0FCE, 0x0FDA, - 0x1000, 0x109F, 0x10D0, 0x10FB, 0x10FD, 0x115E, 0x1161, 0x1248, 0x124A, 0x124D, 0x1250, 0x1256, 0x1258, undef, 0x125A, 0x125D, - 0x1260, 0x1288, 0x128A, 0x128D, 0x1290, 0x12B0, 0x12B2, 0x12B5, 0x12B8, 0x12BE, 0x12C0, undef, 0x12C2, 0x12C5, 0x12C8, 0x12D6, - 0x12D8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135A, 0x135D, 0x137C, 0x1380, 0x1399, 0x13A0, 0x13F5, 0x1400, 0x167F, 0x1681, 0x169C, - 0x16A0, 0x16F8, 0x1700, 0x170C, 0x170E, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176C, 0x176E, 0x1770, 0x1772, 0x1773, - 0x1780, 0x17B3, 0x17B6, 0x17DD, 0x17E0, 0x17E9, 0x17F0, 0x17F9, 0x1800, 0x1805, 0x1807, 0x180A, 0x1810, 0x1819, 0x1820, 0x1877, - 0x1880, 0x18AA, 0x18B0, 0x18F5, 0x1900, 0x191E, 0x1920, 0x192B, 0x1930, 0x193B, 0x1940, undef, 0x1944, 0x196D, 0x1970, 0x1974, - 0x1980, 0x19AB, 0x19B0, 0x19C9, 0x19D0, 0x19DA, 0x19DE, 0x1A1B, 0x1A1E, 0x1A5E, 0x1A60, 0x1A7C, 0x1A7F, 0x1A89, 0x1A90, 0x1A99, - 0x1AA0, 0x1AAD, 0x1AB0, 0x1ABE, 0x1B00, 0x1B4B, 0x1B50, 0x1B7C, 0x1B80, 0x1BF3, 0x1BFC, 0x1C37, 0x1C3B, 0x1C49, 0x1C4D, 0x1C7F, - 0x1CC0, 0x1CC7, 0x1CD0, 0x1CF9, 0x1D00, 0x1D2B, 0x1D2F, undef, 0x1D3B, undef, 0x1D4E, undef, 0x1D6B, 0x1D77, 0x1D79, 0x1D9A, - 0x1DC0, 0x1DF9, 0x1DFB, 0x1DFF, 0x1E01, undef, 0x1E03, undef, 0x1E05, undef, 0x1E07, undef, 0x1E09, undef, 0x1E0B, undef, - 0x1E0D, undef, 0x1E0F, undef, 0x1E11, undef, 0x1E13, undef, 0x1E15, undef, 0x1E17, undef, 0x1E19, undef, 0x1E1B, undef, - 0x1E1D, undef, 0x1E1F, undef, 0x1E21, undef, 0x1E23, undef, 0x1E25, undef, 0x1E27, undef, 0x1E29, undef, 0x1E2B, undef, - 0x1E2D, undef, 0x1E2F, undef, 0x1E31, undef, 0x1E33, undef, 0x1E35, undef, 0x1E37, undef, 0x1E39, undef, 0x1E3B, undef, - 0x1E3D, undef, 0x1E3F, undef, 0x1E41, undef, 0x1E43, undef, 0x1E45, undef, 0x1E47, undef, 0x1E49, undef, 0x1E4B, undef, - 0x1E4D, undef, 0x1E4F, undef, 0x1E51, undef, 0x1E53, undef, 0x1E55, undef, 0x1E57, undef, 0x1E59, undef, 0x1E5B, undef, - 0x1E5D, undef, 0x1E5F, undef, 0x1E61, undef, 0x1E63, undef, 0x1E65, undef, 0x1E67, undef, 0x1E69, undef, 0x1E6B, undef, - 0x1E6D, undef, 0x1E6F, undef, 0x1E71, undef, 0x1E73, undef, 0x1E75, undef, 0x1E77, undef, 0x1E79, undef, 0x1E7B, undef, - 0x1E7D, undef, 0x1E7F, undef, 0x1E81, undef, 0x1E83, undef, 0x1E85, undef, 0x1E87, undef, 0x1E89, undef, 0x1E8B, undef, - 0x1E8D, undef, 0x1E8F, undef, 0x1E91, undef, 0x1E93, undef, 0x1E95, 0x1E99, 0x1E9C, 0x1E9D, 0x1E9F, undef, 0x1EA1, undef, - 0x1EA3, undef, 0x1EA5, undef, 0x1EA7, undef, 0x1EA9, undef, 0x1EAB, undef, 0x1EAD, undef, 0x1EAF, undef, 0x1EB1, undef, - 0x1EB3, undef, 0x1EB5, undef, 0x1EB7, undef, 0x1EB9, undef, 0x1EBB, undef, 0x1EBD, undef, 0x1EBF, undef, 0x1EC1, undef, - 0x1EC3, undef, 0x1EC5, undef, 0x1EC7, undef, 0x1EC9, undef, 0x1ECB, undef, 0x1ECD, undef, 0x1ECF, undef, 0x1ED1, undef, - 0x1ED3, undef, 0x1ED5, undef, 0x1ED7, undef, 0x1ED9, undef, 0x1EDB, undef, 0x1EDD, undef, 0x1EDF, undef, 0x1EE1, undef, - 0x1EE3, undef, 0x1EE5, undef, 0x1EE7, undef, 0x1EE9, undef, 0x1EEB, undef, 0x1EED, undef, 0x1EEF, undef, 0x1EF1, undef, - 0x1EF3, undef, 0x1EF5, undef, 0x1EF7, undef, 0x1EF9, undef, 0x1EFB, undef, 0x1EFD, undef, 0x1EFF, 0x1F07, 0x1F10, 0x1F15, - 0x1F20, 0x1F27, 0x1F30, 0x1F37, 0x1F40, 0x1F45, 0x1F50, 0x1F57, 0x1F60, 0x1F67, 0x1F70, undef, 0x1F72, undef, 0x1F74, undef, - 0x1F76, undef, 0x1F78, undef, 0x1F7A, undef, 0x1F7C, undef, 0x1FB0, 0x1FB1, 0x1FB6, undef, 0x1FC6, undef, 0x1FD0, 0x1FD2, - 0x1FD6, 0x1FD7, 0x1FE0, 0x1FE2, 0x1FE4, 0x1FE7, 0x1FF6, undef, 0x2010, undef, 0x2012, 0x2016, 0x2018, 0x2023, 0x2027, undef, - 0x2030, 0x2032, 0x2035, undef, 0x2038, 0x203B, 0x203D, undef, 0x203F, 0x2046, 0x204A, 0x2056, 0x2058, 0x205E, 0x20A0, 0x20A7, - 0x20A9, 0x20BF, 0x20D0, 0x20F0, 0x2104, undef, 0x2108, undef, 0x2114, undef, 0x2117, 0x2118, 0x211E, 0x211F, 0x2123, undef, - 0x2125, undef, 0x2127, undef, 0x2129, undef, 0x212E, undef, 0x213A, undef, 0x2141, 0x2144, 0x214A, 0x214F, 0x2180, 0x2182, - 0x2184, 0x2188, 0x218A, 0x218B, 0x2190, 0x222B, 0x222E, undef, 0x2231, 0x225F, 0x2261, 0x226D, 0x2270, 0x2328, 0x232B, 0x2426, - 0x2440, 0x244A, 0x24EB, 0x2A0B, 0x2A0D, 0x2A73, 0x2A77, 0x2ADB, 0x2ADD, 0x2B73, 0x2B76, 0x2B95, 0x2B98, 0x2BB9, 0x2BBD, 0x2BC8, - 0x2BCA, 0x2BD2, 0x2BEC, 0x2BEF, 0x2C30, 0x2C5E, 0x2C61, undef, 0x2C65, 0x2C66, 0x2C68, undef, 0x2C6A, undef, 0x2C6C, undef, - 0x2C71, undef, 0x2C73, 0x2C74, 0x2C76, 0x2C7B, 0x2C81, undef, 0x2C83, undef, 0x2C85, undef, 0x2C87, undef, 0x2C89, undef, - 0x2C8B, undef, 0x2C8D, undef, 0x2C8F, undef, 0x2C91, undef, 0x2C93, undef, 0x2C95, undef, 0x2C97, undef, 0x2C99, undef, - 0x2C9B, undef, 0x2C9D, undef, 0x2C9F, undef, 0x2CA1, undef, 0x2CA3, undef, 0x2CA5, undef, 0x2CA7, undef, 0x2CA9, undef, - 0x2CAB, undef, 0x2CAD, undef, 0x2CAF, undef, 0x2CB1, undef, 0x2CB3, undef, 0x2CB5, undef, 0x2CB7, undef, 0x2CB9, undef, - 0x2CBB, undef, 0x2CBD, undef, 0x2CBF, undef, 0x2CC1, undef, 0x2CC3, undef, 0x2CC5, undef, 0x2CC7, undef, 0x2CC9, undef, - 0x2CCB, undef, 0x2CCD, undef, 0x2CCF, undef, 0x2CD1, undef, 0x2CD3, undef, 0x2CD5, undef, 0x2CD7, undef, 0x2CD9, undef, - 0x2CDB, undef, 0x2CDD, undef, 0x2CDF, undef, 0x2CE1, undef, 0x2CE3, 0x2CEA, 0x2CEC, undef, 0x2CEE, 0x2CF1, 0x2CF3, undef, - 0x2CF9, 0x2D25, 0x2D27, undef, 0x2D2D, undef, 0x2D30, 0x2D67, 0x2D70, undef, 0x2D7F, 0x2D96, 0x2DA0, 0x2DA6, 0x2DA8, 0x2DAE, - 0x2DB0, 0x2DB6, 0x2DB8, 0x2DBE, 0x2DC0, 0x2DC6, 0x2DC8, 0x2DCE, 0x2DD0, 0x2DD6, 0x2DD8, 0x2DDE, 0x2DE0, 0x2E49, 0x2E80, 0x2E99, - 0x2E9B, 0x2E9E, 0x2EA0, 0x2EF2, 0x3001, undef, 0x3003, 0x3035, 0x3037, undef, 0x303B, 0x303F, 0x3041, 0x3096, 0x3099, 0x309A, - 0x309D, 0x309E, 0x30A0, 0x30FE, 0x3105, 0x312E, 0x3190, 0x3191, 0x31A0, 0x31BA, 0x31C0, 0x31E3, 0x31F0, 0x31FF, 0x3248, 0x324F, - 0x327F, undef, 0x3400, 0x4DB5, 0x4DC0, 0x9FEA, 0xA000, 0xA48C, 0xA490, 0xA4C6, 0xA4D0, 0xA62B, 0xA641, undef, 0xA643, undef, - 0xA645, undef, 0xA647, undef, 0xA649, undef, 0xA64B, undef, 0xA64D, undef, 0xA64F, undef, 0xA651, undef, 0xA653, undef, - 0xA655, undef, 0xA657, undef, 0xA659, undef, 0xA65B, undef, 0xA65D, undef, 0xA65F, undef, 0xA661, undef, 0xA663, undef, - 0xA665, undef, 0xA667, undef, 0xA669, undef, 0xA66B, undef, 0xA66D, 0xA67F, 0xA681, undef, 0xA683, undef, 0xA685, undef, - 0xA687, undef, 0xA689, undef, 0xA68B, undef, 0xA68D, undef, 0xA68F, undef, 0xA691, undef, 0xA693, undef, 0xA695, undef, - 0xA697, undef, 0xA699, undef, 0xA69B, undef, 0xA69E, 0xA6F7, 0xA700, 0xA721, 0xA723, undef, 0xA725, undef, 0xA727, undef, - 0xA729, undef, 0xA72B, undef, 0xA72D, undef, 0xA72F, 0xA731, 0xA733, undef, 0xA735, undef, 0xA737, undef, 0xA739, undef, - 0xA73B, undef, 0xA73D, undef, 0xA73F, undef, 0xA741, undef, 0xA743, undef, 0xA745, undef, 0xA747, undef, 0xA749, undef, - 0xA74B, undef, 0xA74D, undef, 0xA74F, undef, 0xA751, undef, 0xA753, undef, 0xA755, undef, 0xA757, undef, 0xA759, undef, - 0xA75B, undef, 0xA75D, undef, 0xA75F, undef, 0xA761, undef, 0xA763, undef, 0xA765, undef, 0xA767, undef, 0xA769, undef, - 0xA76B, undef, 0xA76D, undef, 0xA76F, undef, 0xA771, 0xA778, 0xA77A, undef, 0xA77C, undef, 0xA77F, undef, 0xA781, undef, - 0xA783, undef, 0xA785, undef, 0xA787, 0xA78A, 0xA78C, undef, 0xA78E, 0xA78F, 0xA791, undef, 0xA793, 0xA795, 0xA797, undef, - 0xA799, undef, 0xA79B, undef, 0xA79D, undef, 0xA79F, undef, 0xA7A1, undef, 0xA7A3, undef, 0xA7A5, undef, 0xA7A7, undef, - 0xA7A9, undef, 0xA7B5, undef, 0xA7B7, undef, 0xA7F7, undef, 0xA7FA, 0xA82B, 0xA830, 0xA839, 0xA840, 0xA877, 0xA880, 0xA8C5, - 0xA8CE, 0xA8D9, 0xA8E0, 0xA8FD, 0xA900, 0xA953, 0xA95F, 0xA97C, 0xA980, 0xA9CD, 0xA9CF, 0xA9D9, 0xA9DE, 0xA9FE, 0xAA00, 0xAA36, - 0xAA40, 0xAA4D, 0xAA50, 0xAA59, 0xAA5C, 0xAAC2, 0xAADB, 0xAAF6, 0xAB01, 0xAB06, 0xAB09, 0xAB0E, 0xAB11, 0xAB16, 0xAB20, 0xAB26, - 0xAB28, 0xAB2E, 0xAB30, 0xAB5B, 0xAB60, 0xAB65, 0xABC0, 0xABED, 0xABF0, 0xABF9, 0xAC00, 0xD7A3, 0xD7B0, 0xD7C6, 0xD7CB, 0xD7FB, - 0xFA0E, 0xFA0F, 0xFA11, undef, 0xFA13, 0xFA14, 0xFA1F, undef, 0xFA21, undef, 0xFA23, 0xFA24, 0xFA27, 0xFA29, 0xFB1E, undef, - 0xFBB2, 0xFBC1, 0xFD3E, 0xFD3F, 0xFDFD, undef, 0xFE20, 0xFE2F, 0xFE45, 0xFE46, 0xFE73, undef, 0x10000, 0x1000B, 0x1000D, 0x10026, - 0x10028, 0x1003A, 0x1003C, 0x1003D, 0x1003F, 0x1004D, 0x10050, 0x1005D, 0x10080, 0x100FA, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018E, - 0x10190, 0x1019B, 0x101A0, undef, 0x101D0, 0x101FD, 0x10280, 0x1029C, 0x102A0, 0x102D0, 0x102E0, 0x102FB, 0x10300, 0x10323, 0x1032D, 0x1034A, - 0x10350, 0x1037A, 0x10380, 0x1039D, 0x1039F, 0x103C3, 0x103C8, 0x103D5, 0x10428, 0x1049D, 0x104A0, 0x104A9, 0x104D8, 0x104FB, 0x10500, 0x10527, - 0x10530, 0x10563, 0x1056F, undef, 0x10600, 0x10736, 0x10740, 0x10755, 0x10760, 0x10767, 0x10800, 0x10805, 0x10808, undef, 0x1080A, 0x10835, - 0x10837, 0x10838, 0x1083C, undef, 0x1083F, 0x10855, 0x10857, 0x1089E, 0x108A7, 0x108AF, 0x108E0, 0x108F2, 0x108F4, 0x108F5, 0x108FB, 0x1091B, - 0x1091F, 0x10939, 0x1093F, undef, 0x10980, 0x109B7, 0x109BC, 0x109CF, 0x109D2, 0x10A03, 0x10A05, 0x10A06, 0x10A0C, 0x10A13, 0x10A15, 0x10A17, - 0x10A19, 0x10A33, 0x10A38, 0x10A3A, 0x10A3F, 0x10A47, 0x10A50, 0x10A58, 0x10A60, 0x10A9F, 0x10AC0, 0x10AE6, 0x10AEB, 0x10AF6, 0x10B00, 0x10B35, - 0x10B39, 0x10B55, 0x10B58, 0x10B72, 0x10B78, 0x10B91, 0x10B99, 0x10B9C, 0x10BA9, 0x10BAF, 0x10C00, 0x10C48, 0x10CC0, 0x10CF2, 0x10CFA, 0x10CFF, - 0x10E60, 0x10E7E, 0x11000, 0x1104D, 0x11052, 0x1106F, 0x1107F, 0x110BC, 0x110BE, 0x110C1, 0x110D0, 0x110E8, 0x110F0, 0x110F9, 0x11100, 0x11134, - 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111CD, 0x111D0, 0x111DF, 0x111E1, 0x111F4, 0x11200, 0x11211, 0x11213, 0x1123E, 0x11280, 0x11286, - 0x11288, undef, 0x1128A, 0x1128D, 0x1128F, 0x1129D, 0x1129F, 0x112A9, 0x112B0, 0x112EA, 0x112F0, 0x112F9, 0x11300, 0x11303, 0x11305, 0x1130C, - 0x1130F, 0x11310, 0x11313, 0x11328, 0x1132A, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133C, 0x11344, 0x11347, 0x11348, 0x1134B, 0x1134D, - 0x11350, undef, 0x11357, undef, 0x1135D, 0x11363, 0x11366, 0x1136C, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145B, undef, 0x1145D, undef, - 0x11480, 0x114C7, 0x114D0, 0x114D9, 0x11580, 0x115B5, 0x115B8, 0x115DD, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166C, 0x11680, 0x116B7, - 0x116C0, 0x116C9, 0x11700, 0x11719, 0x1171D, 0x1172B, 0x11730, 0x1173F, 0x118C0, 0x118F2, 0x118FF, undef, 0x11A00, 0x11A47, 0x11A50, 0x11A83, - 0x11A86, 0x11A9C, 0x11A9E, 0x11AA2, 0x11AC0, 0x11AF8, 0x11C00, 0x11C08, 0x11C0A, 0x11C36, 0x11C38, 0x11C45, 0x11C50, 0x11C6C, 0x11C70, 0x11C8F, - 0x11C92, 0x11CA7, 0x11CA9, 0x11CB6, 0x11D00, 0x11D06, 0x11D08, 0x11D09, 0x11D0B, 0x11D36, 0x11D3A, undef, 0x11D3C, 0x11D3D, 0x11D3F, 0x11D47, - 0x11D50, 0x11D59, 0x12000, 0x12399, 0x12400, 0x1246E, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342E, 0x14400, 0x14646, 0x16800, 0x16A38, - 0x16A40, 0x16A5E, 0x16A60, 0x16A69, 0x16A6E, 0x16A6F, 0x16AD0, 0x16AED, 0x16AF0, 0x16AF5, 0x16B00, 0x16B45, 0x16B50, 0x16B59, 0x16B5B, 0x16B61, - 0x16B63, 0x16B77, 0x16B7D, 0x16B8F, 0x16F00, 0x16F44, 0x16F50, 0x16F7E, 0x16F8F, 0x16F9F, 0x16FE0, 0x16FE1, 0x17000, 0x187EC, 0x18800, 0x18AF2, - 0x1B000, 0x1B11E, 0x1B170, 0x1B2FB, 0x1BC00, 0x1BC6A, 0x1BC70, 0x1BC7C, 0x1BC80, 0x1BC88, 0x1BC90, 0x1BC99, 0x1BC9C, 0x1BC9F, 0x1D000, 0x1D0F5, - 0x1D100, 0x1D126, 0x1D129, 0x1D15D, 0x1D165, 0x1D172, 0x1D17B, 0x1D1BA, 0x1D1C1, 0x1D1E8, 0x1D200, 0x1D245, 0x1D300, 0x1D356, 0x1D360, 0x1D371, - 0x1D800, 0x1DA8B, 0x1DA9B, 0x1DA9F, 0x1DAA1, 0x1DAAF, 0x1E000, 0x1E006, 0x1E008, 0x1E018, 0x1E01B, 0x1E021, 0x1E023, 0x1E024, 0x1E026, 0x1E02A, - 0x1E800, 0x1E8C4, 0x1E8C7, 0x1E8D6, 0x1E922, 0x1E94A, 0x1E950, 0x1E959, 0x1E95E, 0x1E95F, 0x1EEF0, 0x1EEF1, 0x1F000, 0x1F02B, 0x1F030, 0x1F093, - 0x1F0A0, 0x1F0AE, 0x1F0B1, 0x1F0BF, 0x1F0C1, 0x1F0CF, 0x1F0D1, 0x1F0F5, 0x1F10B, 0x1F10C, 0x1F150, 0x1F169, 0x1F170, 0x1F18F, 0x1F191, 0x1F1AC, - 0x1F1E6, 0x1F1FF, 0x1F260, 0x1F265, 0x1F300, 0x1F6D4, 0x1F6E0, 0x1F6EC, 0x1F6F0, 0x1F6F8, 0x1F700, 0x1F773, 0x1F780, 0x1F7D4, 0x1F800, 0x1F80B, - 0x1F810, 0x1F847, 0x1F850, 0x1F859, 0x1F860, 0x1F887, 0x1F890, 0x1F8AD, 0x1F900, 0x1F90B, 0x1F910, 0x1F93E, 0x1F940, 0x1F94C, 0x1F950, 0x1F96B, - 0x1F980, 0x1F997, 0x1F9C0, undef, 0x1F9D0, 0x1F9E6, 0x20000, 0x2A6D6, 0x2A700, 0x2B734, 0x2B740, 0x2B81D, 0x2B820, 0x2CEA1, 0x2CEB0, 0x2EBE0, -); +our @VALID; +BEGIN { + @VALID = ( + 0x002D, 0x002E, 0x0030, 0x0039, 0x0061, 0x007A, 0x00A1, 0x00A7, 0x00A9, undef, 0x00AB, 0x00AC, 0x00AE, undef, 0x00B0, 0x00B1, + 0x00B6, 0x00B7, 0x00BB, undef, 0x00BF, undef, 0x00D7, undef, 0x00E0, 0x00FF, 0x0101, undef, 0x0103, undef, 0x0105, undef, + 0x0107, undef, 0x0109, undef, 0x010B, undef, 0x010D, undef, 0x010F, undef, 0x0111, undef, 0x0113, undef, 0x0115, undef, + 0x0117, undef, 0x0119, undef, 0x011B, undef, 0x011D, undef, 0x011F, undef, 0x0121, undef, 0x0123, undef, 0x0125, undef, + 0x0127, undef, 0x0129, undef, 0x012B, undef, 0x012D, undef, 0x012F, undef, 0x0131, undef, 0x0135, undef, 0x0137, 0x0138, + 0x013A, undef, 0x013C, undef, 0x013E, undef, 0x0142, undef, 0x0144, undef, 0x0146, undef, 0x0148, undef, 0x014B, undef, + 0x014D, undef, 0x014F, undef, 0x0151, undef, 0x0153, undef, 0x0155, undef, 0x0157, undef, 0x0159, undef, 0x015B, undef, + 0x015D, undef, 0x015F, undef, 0x0161, undef, 0x0163, undef, 0x0165, undef, 0x0167, undef, 0x0169, undef, 0x016B, undef, + 0x016D, undef, 0x016F, undef, 0x0171, undef, 0x0173, undef, 0x0175, undef, 0x0177, undef, 0x017A, undef, 0x017C, undef, + 0x017E, undef, 0x0180, undef, 0x0183, undef, 0x0185, undef, 0x0188, undef, 0x018C, 0x018D, 0x0192, undef, 0x0195, undef, + 0x0199, 0x019B, 0x019E, undef, 0x01A1, undef, 0x01A3, undef, 0x01A5, undef, 0x01A8, undef, 0x01AA, 0x01AB, 0x01AD, undef, + 0x01B0, undef, 0x01B4, undef, 0x01B6, undef, 0x01B9, 0x01BB, 0x01BD, 0x01C3, 0x01CE, undef, 0x01D0, undef, 0x01D2, undef, + 0x01D4, undef, 0x01D6, undef, 0x01D8, undef, 0x01DA, undef, 0x01DC, 0x01DD, 0x01DF, undef, 0x01E1, undef, 0x01E3, undef, + 0x01E5, undef, 0x01E7, undef, 0x01E9, undef, 0x01EB, undef, 0x01ED, undef, 0x01EF, 0x01F0, 0x01F5, undef, 0x01F9, undef, + 0x01FB, undef, 0x01FD, undef, 0x01FF, undef, 0x0201, undef, 0x0203, undef, 0x0205, undef, 0x0207, undef, 0x0209, undef, + 0x020B, undef, 0x020D, undef, 0x020F, undef, 0x0211, undef, 0x0213, undef, 0x0215, undef, 0x0217, undef, 0x0219, undef, + 0x021B, undef, 0x021D, undef, 0x021F, undef, 0x0221, undef, 0x0223, undef, 0x0225, undef, 0x0227, undef, 0x0229, undef, + 0x022B, undef, 0x022D, undef, 0x022F, undef, 0x0231, undef, 0x0233, 0x0239, 0x023C, undef, 0x023F, 0x0240, 0x0242, undef, + 0x0247, undef, 0x0249, undef, 0x024B, undef, 0x024D, undef, 0x024F, 0x02AF, 0x02B9, 0x02D7, 0x02DE, 0x02DF, 0x02E5, 0x033F, + 0x0342, undef, 0x0346, 0x034E, 0x0350, 0x036F, 0x0371, undef, 0x0373, undef, 0x0375, undef, 0x0377, undef, 0x037B, 0x037D, + 0x0390, undef, 0x03AC, 0x03C1, 0x03C3, 0x03CE, 0x03D7, undef, 0x03D9, undef, 0x03DB, undef, 0x03DD, undef, 0x03DF, undef, + 0x03E1, undef, 0x03E3, undef, 0x03E5, undef, 0x03E7, undef, 0x03E9, undef, 0x03EB, undef, 0x03ED, undef, 0x03EF, undef, + 0x03F3, undef, 0x03F6, undef, 0x03F8, undef, 0x03FB, 0x03FC, 0x0430, 0x045F, 0x0461, undef, 0x0463, undef, 0x0465, undef, + 0x0467, undef, 0x0469, undef, 0x046B, undef, 0x046D, undef, 0x046F, undef, 0x0471, undef, 0x0473, undef, 0x0475, undef, + 0x0477, undef, 0x0479, undef, 0x047B, undef, 0x047D, undef, 0x047F, undef, 0x0481, 0x0489, 0x048B, undef, 0x048D, undef, + 0x048F, undef, 0x0491, undef, 0x0493, undef, 0x0495, undef, 0x0497, undef, 0x0499, undef, 0x049B, undef, 0x049D, undef, + 0x049F, undef, 0x04A1, undef, 0x04A3, undef, 0x04A5, undef, 0x04A7, undef, 0x04A9, undef, 0x04AB, undef, 0x04AD, undef, + 0x04AF, undef, 0x04B1, undef, 0x04B3, undef, 0x04B5, undef, 0x04B7, undef, 0x04B9, undef, 0x04BB, undef, 0x04BD, undef, + 0x04BF, undef, 0x04C2, undef, 0x04C4, undef, 0x04C6, undef, 0x04C8, undef, 0x04CA, undef, 0x04CC, undef, 0x04CE, 0x04CF, + 0x04D1, undef, 0x04D3, undef, 0x04D5, undef, 0x04D7, undef, 0x04D9, undef, 0x04DB, undef, 0x04DD, undef, 0x04DF, undef, + 0x04E1, undef, 0x04E3, undef, 0x04E5, undef, 0x04E7, undef, 0x04E9, undef, 0x04EB, undef, 0x04ED, undef, 0x04EF, undef, + 0x04F1, undef, 0x04F3, undef, 0x04F5, undef, 0x04F7, undef, 0x04F9, undef, 0x04FB, undef, 0x04FD, undef, 0x04FF, undef, + 0x0501, undef, 0x0503, undef, 0x0505, undef, 0x0507, undef, 0x0509, undef, 0x050B, undef, 0x050D, undef, 0x050F, undef, + 0x0511, undef, 0x0513, undef, 0x0515, undef, 0x0517, undef, 0x0519, undef, 0x051B, undef, 0x051D, undef, 0x051F, undef, + 0x0521, undef, 0x0523, undef, 0x0525, undef, 0x0527, undef, 0x0529, undef, 0x052B, undef, 0x052D, undef, 0x052F, undef, + 0x0559, 0x055F, 0x0561, 0x0586, 0x0589, 0x058A, 0x058D, 0x058F, 0x0591, 0x05C7, 0x05D0, 0x05EA, 0x05F0, 0x05F4, 0x0606, 0x061B, + 0x061E, 0x0674, 0x0679, 0x06DC, 0x06DE, 0x070D, 0x0710, 0x074A, 0x074D, 0x07B1, 0x07C0, 0x07FA, 0x0800, 0x082D, 0x0830, 0x083E, + 0x0840, 0x085B, 0x085E, undef, 0x0860, 0x086A, 0x08A0, 0x08B4, 0x08B6, 0x08BD, 0x08D4, 0x08E1, 0x08E3, 0x0957, 0x0960, 0x0983, + 0x0985, 0x098C, 0x098F, 0x0990, 0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B2, undef, 0x09B6, 0x09B9, 0x09BC, 0x09C4, 0x09C7, 0x09C8, + 0x09CB, 0x09CE, 0x09D7, undef, 0x09E0, 0x09E3, 0x09E6, 0x09FD, 0x0A01, 0x0A03, 0x0A05, 0x0A0A, 0x0A0F, 0x0A10, 0x0A13, 0x0A28, + 0x0A2A, 0x0A30, 0x0A32, undef, 0x0A35, undef, 0x0A38, 0x0A39, 0x0A3C, undef, 0x0A3E, 0x0A42, 0x0A47, 0x0A48, 0x0A4B, 0x0A4D, + 0x0A51, undef, 0x0A5C, undef, 0x0A66, 0x0A75, 0x0A81, 0x0A83, 0x0A85, 0x0A8D, 0x0A8F, 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, + 0x0AB2, 0x0AB3, 0x0AB5, 0x0AB9, 0x0ABC, 0x0AC5, 0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0AD0, undef, 0x0AE0, 0x0AE3, 0x0AE6, 0x0AF1, + 0x0AF9, 0x0AFF, 0x0B01, 0x0B03, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28, 0x0B2A, 0x0B30, 0x0B32, 0x0B33, 0x0B35, 0x0B39, + 0x0B3C, 0x0B44, 0x0B47, 0x0B48, 0x0B4B, 0x0B4D, 0x0B56, 0x0B57, 0x0B5F, 0x0B63, 0x0B66, 0x0B77, 0x0B82, 0x0B83, 0x0B85, 0x0B8A, + 0x0B8E, 0x0B90, 0x0B92, 0x0B95, 0x0B99, 0x0B9A, 0x0B9C, undef, 0x0B9E, 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA, 0x0BAE, 0x0BB9, + 0x0BBE, 0x0BC2, 0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD, 0x0BD0, undef, 0x0BD7, undef, 0x0BE6, 0x0BFA, 0x0C00, 0x0C03, 0x0C05, 0x0C0C, + 0x0C0E, 0x0C10, 0x0C12, 0x0C28, 0x0C2A, 0x0C39, 0x0C3D, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4D, 0x0C55, 0x0C56, 0x0C58, 0x0C5A, + 0x0C60, 0x0C63, 0x0C66, 0x0C6F, 0x0C78, 0x0C83, 0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3, 0x0CB5, 0x0CB9, + 0x0CBC, 0x0CC4, 0x0CC6, 0x0CC8, 0x0CCA, 0x0CCD, 0x0CD5, 0x0CD6, 0x0CDE, undef, 0x0CE0, 0x0CE3, 0x0CE6, 0x0CEF, 0x0CF1, 0x0CF2, + 0x0D00, 0x0D03, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10, 0x0D12, 0x0D44, 0x0D46, 0x0D48, 0x0D4A, 0x0D4F, 0x0D54, 0x0D63, 0x0D66, 0x0D7F, + 0x0D82, 0x0D83, 0x0D85, 0x0D96, 0x0D9A, 0x0DB1, 0x0DB3, 0x0DBB, 0x0DBD, undef, 0x0DC0, 0x0DC6, 0x0DCA, undef, 0x0DCF, 0x0DD4, + 0x0DD6, undef, 0x0DD8, 0x0DDF, 0x0DE6, 0x0DEF, 0x0DF2, 0x0DF4, 0x0E01, 0x0E32, 0x0E34, 0x0E3A, 0x0E3F, 0x0E5B, 0x0E81, 0x0E82, + 0x0E84, undef, 0x0E87, 0x0E88, 0x0E8A, undef, 0x0E8D, undef, 0x0E94, 0x0E97, 0x0E99, 0x0E9F, 0x0EA1, 0x0EA3, 0x0EA5, undef, + 0x0EA7, undef, 0x0EAA, 0x0EAB, 0x0EAD, 0x0EB2, 0x0EB4, 0x0EB9, 0x0EBB, 0x0EBD, 0x0EC0, 0x0EC4, 0x0EC6, undef, 0x0EC8, 0x0ECD, + 0x0ED0, 0x0ED9, 0x0EDE, 0x0EDF, 0x0F00, 0x0F0B, 0x0F0D, 0x0F42, 0x0F44, 0x0F47, 0x0F49, 0x0F4C, 0x0F4E, 0x0F51, 0x0F53, 0x0F56, + 0x0F58, 0x0F5B, 0x0F5D, 0x0F68, 0x0F6A, 0x0F6C, 0x0F71, 0x0F72, 0x0F74, undef, 0x0F7A, 0x0F80, 0x0F82, 0x0F92, 0x0F94, 0x0F97, + 0x0F99, 0x0F9C, 0x0F9E, 0x0FA1, 0x0FA3, 0x0FA6, 0x0FA8, 0x0FAB, 0x0FAD, 0x0FB8, 0x0FBA, 0x0FBC, 0x0FBE, 0x0FCC, 0x0FCE, 0x0FDA, + 0x1000, 0x109F, 0x10D0, 0x10FB, 0x10FD, 0x115E, 0x1161, 0x1248, 0x124A, 0x124D, 0x1250, 0x1256, 0x1258, undef, 0x125A, 0x125D, + 0x1260, 0x1288, 0x128A, 0x128D, 0x1290, 0x12B0, 0x12B2, 0x12B5, 0x12B8, 0x12BE, 0x12C0, undef, 0x12C2, 0x12C5, 0x12C8, 0x12D6, + 0x12D8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135A, 0x135D, 0x137C, 0x1380, 0x1399, 0x13A0, 0x13F5, 0x1400, 0x167F, 0x1681, 0x169C, + 0x16A0, 0x16F8, 0x1700, 0x170C, 0x170E, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176C, 0x176E, 0x1770, 0x1772, 0x1773, + 0x1780, 0x17B3, 0x17B6, 0x17DD, 0x17E0, 0x17E9, 0x17F0, 0x17F9, 0x1800, 0x1805, 0x1807, 0x180A, 0x1810, 0x1819, 0x1820, 0x1877, + 0x1880, 0x18AA, 0x18B0, 0x18F5, 0x1900, 0x191E, 0x1920, 0x192B, 0x1930, 0x193B, 0x1940, undef, 0x1944, 0x196D, 0x1970, 0x1974, + 0x1980, 0x19AB, 0x19B0, 0x19C9, 0x19D0, 0x19DA, 0x19DE, 0x1A1B, 0x1A1E, 0x1A5E, 0x1A60, 0x1A7C, 0x1A7F, 0x1A89, 0x1A90, 0x1A99, + 0x1AA0, 0x1AAD, 0x1AB0, 0x1ABE, 0x1B00, 0x1B4B, 0x1B50, 0x1B7C, 0x1B80, 0x1BF3, 0x1BFC, 0x1C37, 0x1C3B, 0x1C49, 0x1C4D, 0x1C7F, + 0x1CC0, 0x1CC7, 0x1CD0, 0x1CF9, 0x1D00, 0x1D2B, 0x1D2F, undef, 0x1D3B, undef, 0x1D4E, undef, 0x1D6B, 0x1D77, 0x1D79, 0x1D9A, + 0x1DC0, 0x1DF9, 0x1DFB, 0x1DFF, 0x1E01, undef, 0x1E03, undef, 0x1E05, undef, 0x1E07, undef, 0x1E09, undef, 0x1E0B, undef, + 0x1E0D, undef, 0x1E0F, undef, 0x1E11, undef, 0x1E13, undef, 0x1E15, undef, 0x1E17, undef, 0x1E19, undef, 0x1E1B, undef, + 0x1E1D, undef, 0x1E1F, undef, 0x1E21, undef, 0x1E23, undef, 0x1E25, undef, 0x1E27, undef, 0x1E29, undef, 0x1E2B, undef, + 0x1E2D, undef, 0x1E2F, undef, 0x1E31, undef, 0x1E33, undef, 0x1E35, undef, 0x1E37, undef, 0x1E39, undef, 0x1E3B, undef, + 0x1E3D, undef, 0x1E3F, undef, 0x1E41, undef, 0x1E43, undef, 0x1E45, undef, 0x1E47, undef, 0x1E49, undef, 0x1E4B, undef, + 0x1E4D, undef, 0x1E4F, undef, 0x1E51, undef, 0x1E53, undef, 0x1E55, undef, 0x1E57, undef, 0x1E59, undef, 0x1E5B, undef, + 0x1E5D, undef, 0x1E5F, undef, 0x1E61, undef, 0x1E63, undef, 0x1E65, undef, 0x1E67, undef, 0x1E69, undef, 0x1E6B, undef, + 0x1E6D, undef, 0x1E6F, undef, 0x1E71, undef, 0x1E73, undef, 0x1E75, undef, 0x1E77, undef, 0x1E79, undef, 0x1E7B, undef, + 0x1E7D, undef, 0x1E7F, undef, 0x1E81, undef, 0x1E83, undef, 0x1E85, undef, 0x1E87, undef, 0x1E89, undef, 0x1E8B, undef, + 0x1E8D, undef, 0x1E8F, undef, 0x1E91, undef, 0x1E93, undef, 0x1E95, 0x1E99, 0x1E9C, 0x1E9D, 0x1E9F, undef, 0x1EA1, undef, + 0x1EA3, undef, 0x1EA5, undef, 0x1EA7, undef, 0x1EA9, undef, 0x1EAB, undef, 0x1EAD, undef, 0x1EAF, undef, 0x1EB1, undef, + 0x1EB3, undef, 0x1EB5, undef, 0x1EB7, undef, 0x1EB9, undef, 0x1EBB, undef, 0x1EBD, undef, 0x1EBF, undef, 0x1EC1, undef, + 0x1EC3, undef, 0x1EC5, undef, 0x1EC7, undef, 0x1EC9, undef, 0x1ECB, undef, 0x1ECD, undef, 0x1ECF, undef, 0x1ED1, undef, + 0x1ED3, undef, 0x1ED5, undef, 0x1ED7, undef, 0x1ED9, undef, 0x1EDB, undef, 0x1EDD, undef, 0x1EDF, undef, 0x1EE1, undef, + 0x1EE3, undef, 0x1EE5, undef, 0x1EE7, undef, 0x1EE9, undef, 0x1EEB, undef, 0x1EED, undef, 0x1EEF, undef, 0x1EF1, undef, + 0x1EF3, undef, 0x1EF5, undef, 0x1EF7, undef, 0x1EF9, undef, 0x1EFB, undef, 0x1EFD, undef, 0x1EFF, 0x1F07, 0x1F10, 0x1F15, + 0x1F20, 0x1F27, 0x1F30, 0x1F37, 0x1F40, 0x1F45, 0x1F50, 0x1F57, 0x1F60, 0x1F67, 0x1F70, undef, 0x1F72, undef, 0x1F74, undef, + 0x1F76, undef, 0x1F78, undef, 0x1F7A, undef, 0x1F7C, undef, 0x1FB0, 0x1FB1, 0x1FB6, undef, 0x1FC6, undef, 0x1FD0, 0x1FD2, + 0x1FD6, 0x1FD7, 0x1FE0, 0x1FE2, 0x1FE4, 0x1FE7, 0x1FF6, undef, 0x2010, undef, 0x2012, 0x2016, 0x2018, 0x2023, 0x2027, undef, + 0x2030, 0x2032, 0x2035, undef, 0x2038, 0x203B, 0x203D, undef, 0x203F, 0x2046, 0x204A, 0x2056, 0x2058, 0x205E, 0x20A0, 0x20A7, + 0x20A9, 0x20BF, 0x20D0, 0x20F0, 0x2104, undef, 0x2108, undef, 0x2114, undef, 0x2117, 0x2118, 0x211E, 0x211F, 0x2123, undef, + 0x2125, undef, 0x2127, undef, 0x2129, undef, 0x212E, undef, 0x213A, undef, 0x2141, 0x2144, 0x214A, 0x214F, 0x2180, 0x2182, + 0x2184, 0x2188, 0x218A, 0x218B, 0x2190, 0x222B, 0x222E, undef, 0x2231, 0x225F, 0x2261, 0x226D, 0x2270, 0x2328, 0x232B, 0x2426, + 0x2440, 0x244A, 0x24EB, 0x2A0B, 0x2A0D, 0x2A73, 0x2A77, 0x2ADB, 0x2ADD, 0x2B73, 0x2B76, 0x2B95, 0x2B98, 0x2BB9, 0x2BBD, 0x2BC8, + 0x2BCA, 0x2BD2, 0x2BEC, 0x2BEF, 0x2C30, 0x2C5E, 0x2C61, undef, 0x2C65, 0x2C66, 0x2C68, undef, 0x2C6A, undef, 0x2C6C, undef, + 0x2C71, undef, 0x2C73, 0x2C74, 0x2C76, 0x2C7B, 0x2C81, undef, 0x2C83, undef, 0x2C85, undef, 0x2C87, undef, 0x2C89, undef, + 0x2C8B, undef, 0x2C8D, undef, 0x2C8F, undef, 0x2C91, undef, 0x2C93, undef, 0x2C95, undef, 0x2C97, undef, 0x2C99, undef, + 0x2C9B, undef, 0x2C9D, undef, 0x2C9F, undef, 0x2CA1, undef, 0x2CA3, undef, 0x2CA5, undef, 0x2CA7, undef, 0x2CA9, undef, + 0x2CAB, undef, 0x2CAD, undef, 0x2CAF, undef, 0x2CB1, undef, 0x2CB3, undef, 0x2CB5, undef, 0x2CB7, undef, 0x2CB9, undef, + 0x2CBB, undef, 0x2CBD, undef, 0x2CBF, undef, 0x2CC1, undef, 0x2CC3, undef, 0x2CC5, undef, 0x2CC7, undef, 0x2CC9, undef, + 0x2CCB, undef, 0x2CCD, undef, 0x2CCF, undef, 0x2CD1, undef, 0x2CD3, undef, 0x2CD5, undef, 0x2CD7, undef, 0x2CD9, undef, + 0x2CDB, undef, 0x2CDD, undef, 0x2CDF, undef, 0x2CE1, undef, 0x2CE3, 0x2CEA, 0x2CEC, undef, 0x2CEE, 0x2CF1, 0x2CF3, undef, + 0x2CF9, 0x2D25, 0x2D27, undef, 0x2D2D, undef, 0x2D30, 0x2D67, 0x2D70, undef, 0x2D7F, 0x2D96, 0x2DA0, 0x2DA6, 0x2DA8, 0x2DAE, + 0x2DB0, 0x2DB6, 0x2DB8, 0x2DBE, 0x2DC0, 0x2DC6, 0x2DC8, 0x2DCE, 0x2DD0, 0x2DD6, 0x2DD8, 0x2DDE, 0x2DE0, 0x2E49, 0x2E80, 0x2E99, + 0x2E9B, 0x2E9E, 0x2EA0, 0x2EF2, 0x3001, undef, 0x3003, 0x3035, 0x3037, undef, 0x303B, 0x303F, 0x3041, 0x3096, 0x3099, 0x309A, + 0x309D, 0x309E, 0x30A0, 0x30FE, 0x3105, 0x312E, 0x3190, 0x3191, 0x31A0, 0x31BA, 0x31C0, 0x31E3, 0x31F0, 0x31FF, 0x3248, 0x324F, + 0x327F, undef, 0x3400, 0x4DB5, 0x4DC0, 0x9FEA, 0xA000, 0xA48C, 0xA490, 0xA4C6, 0xA4D0, 0xA62B, 0xA641, undef, 0xA643, undef, + 0xA645, undef, 0xA647, undef, 0xA649, undef, 0xA64B, undef, 0xA64D, undef, 0xA64F, undef, 0xA651, undef, 0xA653, undef, + 0xA655, undef, 0xA657, undef, 0xA659, undef, 0xA65B, undef, 0xA65D, undef, 0xA65F, undef, 0xA661, undef, 0xA663, undef, + 0xA665, undef, 0xA667, undef, 0xA669, undef, 0xA66B, undef, 0xA66D, 0xA67F, 0xA681, undef, 0xA683, undef, 0xA685, undef, + 0xA687, undef, 0xA689, undef, 0xA68B, undef, 0xA68D, undef, 0xA68F, undef, 0xA691, undef, 0xA693, undef, 0xA695, undef, + 0xA697, undef, 0xA699, undef, 0xA69B, undef, 0xA69E, 0xA6F7, 0xA700, 0xA721, 0xA723, undef, 0xA725, undef, 0xA727, undef, + 0xA729, undef, 0xA72B, undef, 0xA72D, undef, 0xA72F, 0xA731, 0xA733, undef, 0xA735, undef, 0xA737, undef, 0xA739, undef, + 0xA73B, undef, 0xA73D, undef, 0xA73F, undef, 0xA741, undef, 0xA743, undef, 0xA745, undef, 0xA747, undef, 0xA749, undef, + 0xA74B, undef, 0xA74D, undef, 0xA74F, undef, 0xA751, undef, 0xA753, undef, 0xA755, undef, 0xA757, undef, 0xA759, undef, + 0xA75B, undef, 0xA75D, undef, 0xA75F, undef, 0xA761, undef, 0xA763, undef, 0xA765, undef, 0xA767, undef, 0xA769, undef, + 0xA76B, undef, 0xA76D, undef, 0xA76F, undef, 0xA771, 0xA778, 0xA77A, undef, 0xA77C, undef, 0xA77F, undef, 0xA781, undef, + 0xA783, undef, 0xA785, undef, 0xA787, 0xA78A, 0xA78C, undef, 0xA78E, 0xA78F, 0xA791, undef, 0xA793, 0xA795, 0xA797, undef, + 0xA799, undef, 0xA79B, undef, 0xA79D, undef, 0xA79F, undef, 0xA7A1, undef, 0xA7A3, undef, 0xA7A5, undef, 0xA7A7, undef, + 0xA7A9, undef, 0xA7B5, undef, 0xA7B7, undef, 0xA7F7, undef, 0xA7FA, 0xA82B, 0xA830, 0xA839, 0xA840, 0xA877, 0xA880, 0xA8C5, + 0xA8CE, 0xA8D9, 0xA8E0, 0xA8FD, 0xA900, 0xA953, 0xA95F, 0xA97C, 0xA980, 0xA9CD, 0xA9CF, 0xA9D9, 0xA9DE, 0xA9FE, 0xAA00, 0xAA36, + 0xAA40, 0xAA4D, 0xAA50, 0xAA59, 0xAA5C, 0xAAC2, 0xAADB, 0xAAF6, 0xAB01, 0xAB06, 0xAB09, 0xAB0E, 0xAB11, 0xAB16, 0xAB20, 0xAB26, + 0xAB28, 0xAB2E, 0xAB30, 0xAB5B, 0xAB60, 0xAB65, 0xABC0, 0xABED, 0xABF0, 0xABF9, 0xAC00, 0xD7A3, 0xD7B0, 0xD7C6, 0xD7CB, 0xD7FB, + 0xFA0E, 0xFA0F, 0xFA11, undef, 0xFA13, 0xFA14, 0xFA1F, undef, 0xFA21, undef, 0xFA23, 0xFA24, 0xFA27, 0xFA29, 0xFB1E, undef, + 0xFBB2, 0xFBC1, 0xFD3E, 0xFD3F, 0xFDFD, undef, 0xFE20, 0xFE2F, 0xFE45, 0xFE46, 0xFE73, undef, 0x10000, 0x1000B, 0x1000D, 0x10026, + 0x10028, 0x1003A, 0x1003C, 0x1003D, 0x1003F, 0x1004D, 0x10050, 0x1005D, 0x10080, 0x100FA, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018E, + 0x10190, 0x1019B, 0x101A0, undef, 0x101D0, 0x101FD, 0x10280, 0x1029C, 0x102A0, 0x102D0, 0x102E0, 0x102FB, 0x10300, 0x10323, 0x1032D, 0x1034A, + 0x10350, 0x1037A, 0x10380, 0x1039D, 0x1039F, 0x103C3, 0x103C8, 0x103D5, 0x10428, 0x1049D, 0x104A0, 0x104A9, 0x104D8, 0x104FB, 0x10500, 0x10527, + 0x10530, 0x10563, 0x1056F, undef, 0x10600, 0x10736, 0x10740, 0x10755, 0x10760, 0x10767, 0x10800, 0x10805, 0x10808, undef, 0x1080A, 0x10835, + 0x10837, 0x10838, 0x1083C, undef, 0x1083F, 0x10855, 0x10857, 0x1089E, 0x108A7, 0x108AF, 0x108E0, 0x108F2, 0x108F4, 0x108F5, 0x108FB, 0x1091B, + 0x1091F, 0x10939, 0x1093F, undef, 0x10980, 0x109B7, 0x109BC, 0x109CF, 0x109D2, 0x10A03, 0x10A05, 0x10A06, 0x10A0C, 0x10A13, 0x10A15, 0x10A17, + 0x10A19, 0x10A33, 0x10A38, 0x10A3A, 0x10A3F, 0x10A47, 0x10A50, 0x10A58, 0x10A60, 0x10A9F, 0x10AC0, 0x10AE6, 0x10AEB, 0x10AF6, 0x10B00, 0x10B35, + 0x10B39, 0x10B55, 0x10B58, 0x10B72, 0x10B78, 0x10B91, 0x10B99, 0x10B9C, 0x10BA9, 0x10BAF, 0x10C00, 0x10C48, 0x10CC0, 0x10CF2, 0x10CFA, 0x10CFF, + 0x10E60, 0x10E7E, 0x11000, 0x1104D, 0x11052, 0x1106F, 0x1107F, 0x110BC, 0x110BE, 0x110C1, 0x110D0, 0x110E8, 0x110F0, 0x110F9, 0x11100, 0x11134, + 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111CD, 0x111D0, 0x111DF, 0x111E1, 0x111F4, 0x11200, 0x11211, 0x11213, 0x1123E, 0x11280, 0x11286, + 0x11288, undef, 0x1128A, 0x1128D, 0x1128F, 0x1129D, 0x1129F, 0x112A9, 0x112B0, 0x112EA, 0x112F0, 0x112F9, 0x11300, 0x11303, 0x11305, 0x1130C, + 0x1130F, 0x11310, 0x11313, 0x11328, 0x1132A, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133C, 0x11344, 0x11347, 0x11348, 0x1134B, 0x1134D, + 0x11350, undef, 0x11357, undef, 0x1135D, 0x11363, 0x11366, 0x1136C, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145B, undef, 0x1145D, undef, + 0x11480, 0x114C7, 0x114D0, 0x114D9, 0x11580, 0x115B5, 0x115B8, 0x115DD, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166C, 0x11680, 0x116B7, + 0x116C0, 0x116C9, 0x11700, 0x11719, 0x1171D, 0x1172B, 0x11730, 0x1173F, 0x118C0, 0x118F2, 0x118FF, undef, 0x11A00, 0x11A47, 0x11A50, 0x11A83, + 0x11A86, 0x11A9C, 0x11A9E, 0x11AA2, 0x11AC0, 0x11AF8, 0x11C00, 0x11C08, 0x11C0A, 0x11C36, 0x11C38, 0x11C45, 0x11C50, 0x11C6C, 0x11C70, 0x11C8F, + 0x11C92, 0x11CA7, 0x11CA9, 0x11CB6, 0x11D00, 0x11D06, 0x11D08, 0x11D09, 0x11D0B, 0x11D36, 0x11D3A, undef, 0x11D3C, 0x11D3D, 0x11D3F, 0x11D47, + 0x11D50, 0x11D59, 0x12000, 0x12399, 0x12400, 0x1246E, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342E, 0x14400, 0x14646, 0x16800, 0x16A38, + 0x16A40, 0x16A5E, 0x16A60, 0x16A69, 0x16A6E, 0x16A6F, 0x16AD0, 0x16AED, 0x16AF0, 0x16AF5, 0x16B00, 0x16B45, 0x16B50, 0x16B59, 0x16B5B, 0x16B61, + 0x16B63, 0x16B77, 0x16B7D, 0x16B8F, 0x16F00, 0x16F44, 0x16F50, 0x16F7E, 0x16F8F, 0x16F9F, 0x16FE0, 0x16FE1, 0x17000, 0x187EC, 0x18800, 0x18AF2, + 0x1B000, 0x1B11E, 0x1B170, 0x1B2FB, 0x1BC00, 0x1BC6A, 0x1BC70, 0x1BC7C, 0x1BC80, 0x1BC88, 0x1BC90, 0x1BC99, 0x1BC9C, 0x1BC9F, 0x1D000, 0x1D0F5, + 0x1D100, 0x1D126, 0x1D129, 0x1D15D, 0x1D165, 0x1D172, 0x1D17B, 0x1D1BA, 0x1D1C1, 0x1D1E8, 0x1D200, 0x1D245, 0x1D300, 0x1D356, 0x1D360, 0x1D371, + 0x1D800, 0x1DA8B, 0x1DA9B, 0x1DA9F, 0x1DAA1, 0x1DAAF, 0x1E000, 0x1E006, 0x1E008, 0x1E018, 0x1E01B, 0x1E021, 0x1E023, 0x1E024, 0x1E026, 0x1E02A, + 0x1E800, 0x1E8C4, 0x1E8C7, 0x1E8D6, 0x1E922, 0x1E94A, 0x1E950, 0x1E959, 0x1E95E, 0x1E95F, 0x1EEF0, 0x1EEF1, 0x1F000, 0x1F02B, 0x1F030, 0x1F093, + 0x1F0A0, 0x1F0AE, 0x1F0B1, 0x1F0BF, 0x1F0C1, 0x1F0CF, 0x1F0D1, 0x1F0F5, 0x1F10B, 0x1F10C, 0x1F150, 0x1F169, 0x1F170, 0x1F18F, 0x1F191, 0x1F1AC, + 0x1F1E6, 0x1F1FF, 0x1F260, 0x1F265, 0x1F300, 0x1F6D4, 0x1F6E0, 0x1F6EC, 0x1F6F0, 0x1F6F8, 0x1F700, 0x1F773, 0x1F780, 0x1F7D4, 0x1F800, 0x1F80B, + 0x1F810, 0x1F847, 0x1F850, 0x1F859, 0x1F860, 0x1F887, 0x1F890, 0x1F8AD, 0x1F900, 0x1F90B, 0x1F910, 0x1F93E, 0x1F940, 0x1F94C, 0x1F950, 0x1F96B, + 0x1F980, 0x1F997, 0x1F9C0, undef, 0x1F9D0, 0x1F9E6, 0x20000, 0x2A6D6, 0x2A700, 0x2B734, 0x2B740, 0x2B81D, 0x2B820, 0x2CEA1, 0x2CEB0, 0x2EBE0, + ); + +} sub IsValid { return _mk_prop(@VALID); }; -our @_DISALLOWEDASSIGNED = ( - 0x0080, 0x009F, 0x04C0, undef, 0x0600, 0x0605, 0x061C, undef, 0x06DD, undef, 0x070F, undef, 0x08E2, undef, 0x10A0, 0x10C5, - 0x115F, 0x1160, 0x1680, undef, 0x17B4, 0x17B5, 0x1806, undef, 0x180E, undef, 0x200E, 0x200F, 0x2024, 0x2026, 0x2028, 0x202E, - 0x2061, 0x2063, 0x2066, 0x206F, 0x2132, undef, 0x2183, undef, 0x2488, 0x249B, 0x2FF0, 0x2FFB, 0x3164, undef, 0x33C2, undef, - 0x33C7, undef, 0x33D8, undef, 0xD800, 0xF8FF, 0xFDD0, 0xFDEF, 0xFE12, undef, 0xFE19, undef, 0xFE30, undef, 0xFE52, undef, - 0xFFA0, undef, 0xFFF9, 0xFFFF, 0x110BD, undef, 0x1D173, 0x1D17A, 0x1F100, undef, 0x1FFFE, 0x1FFFF, 0x2F868, undef, 0x2F874, undef, - 0x2F91F, undef, 0x2F95F, undef, 0x2F9BF, undef, 0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, 0x6FFFE, 0x6FFFF, - 0x7FFFE, 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, 0xDFFFF, 0xE0001, undef, - 0xE0020, 0xE007F, 0xEFFFE, 0x10FFFF, -); +our @_DISALLOWEDASSIGNED; +BEGIN { + @_DISALLOWEDASSIGNED = ( + 0x0080, 0x009F, 0x04C0, undef, 0x0600, 0x0605, 0x061C, undef, 0x06DD, undef, 0x070F, undef, 0x08E2, undef, 0x10A0, 0x10C5, + 0x115F, 0x1160, 0x1680, undef, 0x17B4, 0x17B5, 0x1806, undef, 0x180E, undef, 0x200E, 0x200F, 0x2024, 0x2026, 0x2028, 0x202E, + 0x2061, 0x2063, 0x2066, 0x206F, 0x2132, undef, 0x2183, undef, 0x2488, 0x249B, 0x2FF0, 0x2FFB, 0x3164, undef, 0x33C2, undef, + 0x33C7, undef, 0x33D8, undef, 0xD800, 0xF8FF, 0xFDD0, 0xFDEF, 0xFE12, undef, 0xFE19, undef, 0xFE30, undef, 0xFE52, undef, + 0xFFA0, undef, 0xFFF9, 0xFFFF, 0x110BD, undef, 0x1D173, 0x1D17A, 0x1F100, undef, 0x1FFFE, 0x1FFFF, 0x2F868, undef, 0x2F874, undef, + 0x2F91F, undef, 0x2F95F, undef, 0x2F9BF, undef, 0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, 0x6FFFE, 0x6FFFF, + 0x7FFFE, 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, 0xDFFFF, 0xE0001, undef, + 0xE0020, 0xE007F, 0xEFFFE, 0x10FFFF, + ); + +} sub Is_DisallowedAssigned { return _mk_prop(@_DISALLOWEDASSIGNED); }; our %DEVIATION = ( 0x00DF => "ss", 0x03C2 => "σ", 0x200C => "", 0x200D => "",); -our @DEVIATION = ( - 0x00DF, undef, 0x03C2, undef, 0x200C, 0x200D, -); +our @DEVIATION; +BEGIN { + @DEVIATION = ( + 0x00DF, undef, 0x03C2, undef, 0x200C, 0x200D, + ); + +} sub IsDeviation { return _mk_prop(@DEVIATION); }; sub MapDeviation { my $l = shift; $l =~ s/[\x{200C}\x{200D}]//g; @@ -341,16 +361,20 @@ our %DISALLOWEDSTD3MAPPED = ( 0x1F11A => "\(k\)", 0x1F11B => "\(l\)", 0x1F11C => "\(m\)", 0x1F11D => "\(n\)", 0x1F11E => "\(o\)", 0x1F11F => "\(p\)", 0x1F120 => "\(q\)", 0x1F121 => "\(r\)", 0x1F122 => "\(s\)", 0x1F123 => "\(t\)", 0x1F124 => "\(u\)", 0x1F125 => "\(v\)", 0x1F126 => "\(w\)", 0x1F127 => "\(x\)", 0x1F128 => "\(y\)", 0x1F129 => "\(z\)",); -our @DISALLOWEDSTD3MAPPED = ( - 0x00A0, undef, 0x00A8, undef, 0x00AF, undef, 0x00B4, undef, 0x00B8, undef, 0x02D8, 0x02DD, 0x037A, undef, 0x037E, undef, - 0x0384, 0x0385, 0x1FBD, undef, 0x1FBF, 0x1FC1, 0x1FCD, 0x1FCF, 0x1FDD, 0x1FDF, 0x1FED, 0x1FEF, 0x1FFD, 0x1FFE, 0x2000, 0x200A, - 0x2017, undef, 0x202F, undef, 0x203C, undef, 0x203E, undef, 0x2047, 0x2049, 0x205F, undef, 0x207A, undef, 0x207C, 0x207E, - 0x208A, undef, 0x208C, 0x208E, 0x2100, 0x2101, 0x2105, 0x2106, 0x2474, 0x2487, 0x249C, 0x24B5, 0x2A74, 0x2A76, 0x3000, undef, - 0x309B, 0x309C, 0x3200, 0x321E, 0x3220, 0x3243, 0xFB29, undef, 0xFC5E, 0xFC63, 0xFDFA, 0xFDFB, 0xFE10, undef, 0xFE13, 0xFE16, - 0xFE33, 0xFE38, 0xFE47, 0xFE50, 0xFE54, 0xFE57, 0xFE59, 0xFE5C, 0xFE5F, 0xFE62, 0xFE64, 0xFE66, 0xFE68, 0xFE6B, 0xFE70, undef, - 0xFE72, undef, 0xFE74, undef, 0xFE76, undef, 0xFE78, undef, 0xFE7A, undef, 0xFE7C, undef, 0xFE7E, undef, 0xFF01, 0xFF0C, - 0xFF0F, undef, 0xFF1A, 0xFF20, 0xFF3B, 0xFF40, 0xFF5B, 0xFF5E, 0xFFE3, undef, 0x1F101, 0x1F10A, 0x1F110, 0x1F129, -); +our @DISALLOWEDSTD3MAPPED; +BEGIN { + @DISALLOWEDSTD3MAPPED = ( + 0x00A0, undef, 0x00A8, undef, 0x00AF, undef, 0x00B4, undef, 0x00B8, undef, 0x02D8, 0x02DD, 0x037A, undef, 0x037E, undef, + 0x0384, 0x0385, 0x1FBD, undef, 0x1FBF, 0x1FC1, 0x1FCD, 0x1FCF, 0x1FDD, 0x1FDF, 0x1FED, 0x1FEF, 0x1FFD, 0x1FFE, 0x2000, 0x200A, + 0x2017, undef, 0x202F, undef, 0x203C, undef, 0x203E, undef, 0x2047, 0x2049, 0x205F, undef, 0x207A, undef, 0x207C, 0x207E, + 0x208A, undef, 0x208C, 0x208E, 0x2100, 0x2101, 0x2105, 0x2106, 0x2474, 0x2487, 0x249C, 0x24B5, 0x2A74, 0x2A76, 0x3000, undef, + 0x309B, 0x309C, 0x3200, 0x321E, 0x3220, 0x3243, 0xFB29, undef, 0xFC5E, 0xFC63, 0xFDFA, 0xFDFB, 0xFE10, undef, 0xFE13, 0xFE16, + 0xFE33, 0xFE38, 0xFE47, 0xFE50, 0xFE54, 0xFE57, 0xFE59, 0xFE5C, 0xFE5F, 0xFE62, 0xFE64, 0xFE66, 0xFE68, 0xFE6B, 0xFE70, undef, + 0xFE72, undef, 0xFE74, undef, 0xFE76, undef, 0xFE78, undef, 0xFE7A, undef, 0xFE7C, undef, 0xFE7E, undef, 0xFF01, 0xFF0C, + 0xFF0F, undef, 0xFF1A, 0xFF20, 0xFF3B, 0xFF40, 0xFF5B, 0xFF5E, 0xFFE3, undef, 0x1F101, 0x1F10A, 0x1F110, 0x1F129, + ); + +} sub IsDisallowedSTD3Mapped { return _mk_prop(@DISALLOWEDSTD3MAPPED); }; sub MapDisallowedSTD3Mapped { my $l = shift; $l =~ tr/\x{00A0}\x{037E}\x{1FEF}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}\x{2006}\x{2007}\x{2008}\x{2009}\x{200A}\x{202F}\x{205F}\x{207A}\x{207C}\x{207D}\x{207E}\x{208A}\x{208C}\x{208D}\x{208E}\x{3000}\x{FB29}\x{FE10}\x{FE13}\x{FE14}\x{FE15}\x{FE16}\x{FE33}\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE47}\x{FE48}\x{FE4D}\x{FE4E}\x{FE4F}\x{FE50}\x{FE54}\x{FE55}\x{FE56}\x{FE57}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5F}\x{FE60}\x{FE61}\x{FE62}\x{FE64}\x{FE65}\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FF01}\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0F}\x{FF1A}\x{FF1B}\x{FF1C}\x{FF1D}\x{FF1E}\x{FF1F}\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}/ \;\` \+\=\(\)\+\=\(\) \+\,\:\;\!\?__\(\)\{\}\[\]___\,\;\:\?\!\(\)\{\}\#\&\*\+\<\>\=\\\$\%\@\!\"\#\$\%\&\'\(\)\*\+\,\/\:\;\<\=\>\?\@\[\\\]\^_\`\{\|\}\~/; @@ -394,10 +418,14 @@ our %IGNORED = ( 0xE01E3 => "", 0xE01E4 => "", 0xE01E5 => "", 0xE01E6 => "", 0xE01E7 => "", 0xE01E8 => "", 0xE01E9 => "", 0xE01EA => "", 0xE01EB => "", 0xE01EC => "", 0xE01ED => "", 0xE01EE => "", 0xE01EF => "",); -our @IGNORED = ( - 0x00AD, undef, 0x034F, undef, 0x180B, 0x180D, 0x200B, undef, 0x2060, undef, 0x2064, undef, 0xFE00, 0xFE0F, 0xFEFF, undef, - 0x1BCA0, 0x1BCA3, 0xE0100, 0xE01EF, -); +our @IGNORED; +BEGIN { + @IGNORED = ( + 0x00AD, undef, 0x034F, undef, 0x180B, 0x180D, 0x200B, undef, 0x2060, undef, 0x2064, undef, 0xFE00, 0xFE0F, 0xFEFF, undef, + 0x1BCA0, 0x1BCA3, 0xE0100, 0xE01EF, + ); + +} sub IsIgnored { return _mk_prop(@IGNORED); }; sub MapIgnored { my $l = shift; $l =~ s/\p{IsIgnored}//g; @@ -1115,110 +1143,114 @@ our %MAPPED = ( 0x2FA0E => "䳭", 0x2FA0F => "鵧", 0x2FA10 => "𪃎", 0x2FA11 => "䳸", 0x2FA12 => "𪄅", 0x2FA13 => "𪈎", 0x2FA14 => "𪊑", 0x2FA15 => "麻", 0x2FA16 => "䵖", 0x2FA17 => "黹", 0x2FA18 => "黾", 0x2FA19 => "鼅", 0x2FA1A => "鼏", 0x2FA1B => "鼖", 0x2FA1C => "鼻", 0x2FA1D => "𪘀",); -our @MAPPED = ( - 0x0041, 0x005A, 0x00AA, undef, 0x00B2, 0x00B3, 0x00B5, undef, 0x00B9, 0x00BA, 0x00BC, 0x00BE, 0x00C0, 0x00D6, 0x00D8, 0x00DE, - 0x0100, undef, 0x0102, undef, 0x0104, undef, 0x0106, undef, 0x0108, undef, 0x010A, undef, 0x010C, undef, 0x010E, undef, - 0x0110, undef, 0x0112, undef, 0x0114, undef, 0x0116, undef, 0x0118, undef, 0x011A, undef, 0x011C, undef, 0x011E, undef, - 0x0120, undef, 0x0122, undef, 0x0124, undef, 0x0126, undef, 0x0128, undef, 0x012A, undef, 0x012C, undef, 0x012E, undef, - 0x0130, undef, 0x0132, 0x0134, 0x0136, undef, 0x0139, undef, 0x013B, undef, 0x013D, undef, 0x013F, 0x0141, 0x0143, undef, - 0x0145, undef, 0x0147, undef, 0x0149, 0x014A, 0x014C, undef, 0x014E, undef, 0x0150, undef, 0x0152, undef, 0x0154, undef, - 0x0156, undef, 0x0158, undef, 0x015A, undef, 0x015C, undef, 0x015E, undef, 0x0160, undef, 0x0162, undef, 0x0164, undef, - 0x0166, undef, 0x0168, undef, 0x016A, undef, 0x016C, undef, 0x016E, undef, 0x0170, undef, 0x0172, undef, 0x0174, undef, - 0x0176, undef, 0x0178, 0x0179, 0x017B, undef, 0x017D, undef, 0x017F, undef, 0x0181, 0x0182, 0x0184, undef, 0x0186, 0x0187, - 0x0189, 0x018B, 0x018E, 0x0191, 0x0193, 0x0194, 0x0196, 0x0198, 0x019C, 0x019D, 0x019F, 0x01A0, 0x01A2, undef, 0x01A4, undef, - 0x01A6, 0x01A7, 0x01A9, undef, 0x01AC, undef, 0x01AE, 0x01AF, 0x01B1, 0x01B3, 0x01B5, undef, 0x01B7, 0x01B8, 0x01BC, undef, - 0x01C4, 0x01CD, 0x01CF, undef, 0x01D1, undef, 0x01D3, undef, 0x01D5, undef, 0x01D7, undef, 0x01D9, undef, 0x01DB, undef, - 0x01DE, undef, 0x01E0, undef, 0x01E2, undef, 0x01E4, undef, 0x01E6, undef, 0x01E8, undef, 0x01EA, undef, 0x01EC, undef, - 0x01EE, undef, 0x01F1, 0x01F4, 0x01F6, 0x01F8, 0x01FA, undef, 0x01FC, undef, 0x01FE, undef, 0x0200, undef, 0x0202, undef, - 0x0204, undef, 0x0206, undef, 0x0208, undef, 0x020A, undef, 0x020C, undef, 0x020E, undef, 0x0210, undef, 0x0212, undef, - 0x0214, undef, 0x0216, undef, 0x0218, undef, 0x021A, undef, 0x021C, undef, 0x021E, undef, 0x0220, undef, 0x0222, undef, - 0x0224, undef, 0x0226, undef, 0x0228, undef, 0x022A, undef, 0x022C, undef, 0x022E, undef, 0x0230, undef, 0x0232, undef, - 0x023A, 0x023B, 0x023D, 0x023E, 0x0241, undef, 0x0243, 0x0246, 0x0248, undef, 0x024A, undef, 0x024C, undef, 0x024E, undef, - 0x02B0, 0x02B8, 0x02E0, 0x02E4, 0x0340, 0x0341, 0x0343, 0x0345, 0x0370, undef, 0x0372, undef, 0x0374, undef, 0x0376, undef, - 0x037F, undef, 0x0386, 0x038A, 0x038C, undef, 0x038E, 0x038F, 0x0391, 0x03A1, 0x03A3, 0x03AB, 0x03CF, 0x03D6, 0x03D8, undef, - 0x03DA, undef, 0x03DC, undef, 0x03DE, undef, 0x03E0, undef, 0x03E2, undef, 0x03E4, undef, 0x03E6, undef, 0x03E8, undef, - 0x03EA, undef, 0x03EC, undef, 0x03EE, undef, 0x03F0, 0x03F2, 0x03F4, 0x03F5, 0x03F7, undef, 0x03F9, 0x03FA, 0x03FD, 0x042F, - 0x0460, undef, 0x0462, undef, 0x0464, undef, 0x0466, undef, 0x0468, undef, 0x046A, undef, 0x046C, undef, 0x046E, undef, - 0x0470, undef, 0x0472, undef, 0x0474, undef, 0x0476, undef, 0x0478, undef, 0x047A, undef, 0x047C, undef, 0x047E, undef, - 0x0480, undef, 0x048A, undef, 0x048C, undef, 0x048E, undef, 0x0490, undef, 0x0492, undef, 0x0494, undef, 0x0496, undef, - 0x0498, undef, 0x049A, undef, 0x049C, undef, 0x049E, undef, 0x04A0, undef, 0x04A2, undef, 0x04A4, undef, 0x04A6, undef, - 0x04A8, undef, 0x04AA, undef, 0x04AC, undef, 0x04AE, undef, 0x04B0, undef, 0x04B2, undef, 0x04B4, undef, 0x04B6, undef, - 0x04B8, undef, 0x04BA, undef, 0x04BC, undef, 0x04BE, undef, 0x04C1, undef, 0x04C3, undef, 0x04C5, undef, 0x04C7, undef, - 0x04C9, undef, 0x04CB, undef, 0x04CD, undef, 0x04D0, undef, 0x04D2, undef, 0x04D4, undef, 0x04D6, undef, 0x04D8, undef, - 0x04DA, undef, 0x04DC, undef, 0x04DE, undef, 0x04E0, undef, 0x04E2, undef, 0x04E4, undef, 0x04E6, undef, 0x04E8, undef, - 0x04EA, undef, 0x04EC, undef, 0x04EE, undef, 0x04F0, undef, 0x04F2, undef, 0x04F4, undef, 0x04F6, undef, 0x04F8, undef, - 0x04FA, undef, 0x04FC, undef, 0x04FE, undef, 0x0500, undef, 0x0502, undef, 0x0504, undef, 0x0506, undef, 0x0508, undef, - 0x050A, undef, 0x050C, undef, 0x050E, undef, 0x0510, undef, 0x0512, undef, 0x0514, undef, 0x0516, undef, 0x0518, undef, - 0x051A, undef, 0x051C, undef, 0x051E, undef, 0x0520, undef, 0x0522, undef, 0x0524, undef, 0x0526, undef, 0x0528, undef, - 0x052A, undef, 0x052C, undef, 0x052E, undef, 0x0531, 0x0556, 0x0587, undef, 0x0675, 0x0678, 0x0958, 0x095F, 0x09DC, 0x09DD, - 0x09DF, undef, 0x0A33, undef, 0x0A36, undef, 0x0A59, 0x0A5B, 0x0A5E, undef, 0x0B5C, 0x0B5D, 0x0E33, undef, 0x0EB3, undef, - 0x0EDC, 0x0EDD, 0x0F0C, undef, 0x0F43, undef, 0x0F4D, undef, 0x0F52, undef, 0x0F57, undef, 0x0F5C, undef, 0x0F69, undef, - 0x0F73, undef, 0x0F75, 0x0F79, 0x0F81, undef, 0x0F93, undef, 0x0F9D, undef, 0x0FA2, undef, 0x0FA7, undef, 0x0FAC, undef, - 0x0FB9, undef, 0x10C7, undef, 0x10CD, undef, 0x10FC, undef, 0x13F8, 0x13FD, 0x1C80, 0x1C88, 0x1D2C, 0x1D2E, 0x1D30, 0x1D3A, - 0x1D3C, 0x1D4D, 0x1D4F, 0x1D6A, 0x1D78, undef, 0x1D9B, 0x1DBF, 0x1E00, undef, 0x1E02, undef, 0x1E04, undef, 0x1E06, undef, - 0x1E08, undef, 0x1E0A, undef, 0x1E0C, undef, 0x1E0E, undef, 0x1E10, undef, 0x1E12, undef, 0x1E14, undef, 0x1E16, undef, - 0x1E18, undef, 0x1E1A, undef, 0x1E1C, undef, 0x1E1E, undef, 0x1E20, undef, 0x1E22, undef, 0x1E24, undef, 0x1E26, undef, - 0x1E28, undef, 0x1E2A, undef, 0x1E2C, undef, 0x1E2E, undef, 0x1E30, undef, 0x1E32, undef, 0x1E34, undef, 0x1E36, undef, - 0x1E38, undef, 0x1E3A, undef, 0x1E3C, undef, 0x1E3E, undef, 0x1E40, undef, 0x1E42, undef, 0x1E44, undef, 0x1E46, undef, - 0x1E48, undef, 0x1E4A, undef, 0x1E4C, undef, 0x1E4E, undef, 0x1E50, undef, 0x1E52, undef, 0x1E54, undef, 0x1E56, undef, - 0x1E58, undef, 0x1E5A, undef, 0x1E5C, undef, 0x1E5E, undef, 0x1E60, undef, 0x1E62, undef, 0x1E64, undef, 0x1E66, undef, - 0x1E68, undef, 0x1E6A, undef, 0x1E6C, undef, 0x1E6E, undef, 0x1E70, undef, 0x1E72, undef, 0x1E74, undef, 0x1E76, undef, - 0x1E78, undef, 0x1E7A, undef, 0x1E7C, undef, 0x1E7E, undef, 0x1E80, undef, 0x1E82, undef, 0x1E84, undef, 0x1E86, undef, - 0x1E88, undef, 0x1E8A, undef, 0x1E8C, undef, 0x1E8E, undef, 0x1E90, undef, 0x1E92, undef, 0x1E94, undef, 0x1E9A, 0x1E9B, - 0x1E9E, undef, 0x1EA0, undef, 0x1EA2, undef, 0x1EA4, undef, 0x1EA6, undef, 0x1EA8, undef, 0x1EAA, undef, 0x1EAC, undef, - 0x1EAE, undef, 0x1EB0, undef, 0x1EB2, undef, 0x1EB4, undef, 0x1EB6, undef, 0x1EB8, undef, 0x1EBA, undef, 0x1EBC, undef, - 0x1EBE, undef, 0x1EC0, undef, 0x1EC2, undef, 0x1EC4, undef, 0x1EC6, undef, 0x1EC8, undef, 0x1ECA, undef, 0x1ECC, undef, - 0x1ECE, undef, 0x1ED0, undef, 0x1ED2, undef, 0x1ED4, undef, 0x1ED6, undef, 0x1ED8, undef, 0x1EDA, undef, 0x1EDC, undef, - 0x1EDE, undef, 0x1EE0, undef, 0x1EE2, undef, 0x1EE4, undef, 0x1EE6, undef, 0x1EE8, undef, 0x1EEA, undef, 0x1EEC, undef, - 0x1EEE, undef, 0x1EF0, undef, 0x1EF2, undef, 0x1EF4, undef, 0x1EF6, undef, 0x1EF8, undef, 0x1EFA, undef, 0x1EFC, undef, - 0x1EFE, undef, 0x1F08, 0x1F0F, 0x1F18, 0x1F1D, 0x1F28, 0x1F2F, 0x1F38, 0x1F3F, 0x1F48, 0x1F4D, 0x1F59, undef, 0x1F5B, undef, - 0x1F5D, undef, 0x1F5F, undef, 0x1F68, 0x1F6F, 0x1F71, undef, 0x1F73, undef, 0x1F75, undef, 0x1F77, undef, 0x1F79, undef, - 0x1F7B, undef, 0x1F7D, undef, 0x1F80, 0x1FAF, 0x1FB2, 0x1FB4, 0x1FB7, 0x1FBC, 0x1FBE, undef, 0x1FC2, 0x1FC4, 0x1FC7, 0x1FCC, - 0x1FD3, undef, 0x1FD8, 0x1FDB, 0x1FE3, undef, 0x1FE8, 0x1FEC, 0x1FF2, 0x1FF4, 0x1FF7, 0x1FFC, 0x2011, undef, 0x2033, 0x2034, - 0x2036, 0x2037, 0x2057, undef, 0x2070, 0x2071, 0x2074, 0x2079, 0x207B, undef, 0x207F, 0x2089, 0x208B, undef, 0x2090, 0x209C, - 0x20A8, undef, 0x2102, 0x2103, 0x2107, undef, 0x2109, 0x2113, 0x2115, 0x2116, 0x2119, 0x211D, 0x2120, 0x2122, 0x2124, undef, - 0x2126, undef, 0x2128, undef, 0x212A, 0x212D, 0x212F, 0x2131, 0x2133, 0x2139, 0x213B, 0x2140, 0x2145, 0x2149, 0x2150, 0x217F, - 0x2189, undef, 0x222C, 0x222D, 0x222F, 0x2230, 0x2329, 0x232A, 0x2460, 0x2473, 0x24B6, 0x24EA, 0x2A0C, undef, 0x2ADC, undef, - 0x2C00, 0x2C2E, 0x2C60, undef, 0x2C62, 0x2C64, 0x2C67, undef, 0x2C69, undef, 0x2C6B, undef, 0x2C6D, 0x2C70, 0x2C72, undef, - 0x2C75, undef, 0x2C7C, 0x2C80, 0x2C82, undef, 0x2C84, undef, 0x2C86, undef, 0x2C88, undef, 0x2C8A, undef, 0x2C8C, undef, - 0x2C8E, undef, 0x2C90, undef, 0x2C92, undef, 0x2C94, undef, 0x2C96, undef, 0x2C98, undef, 0x2C9A, undef, 0x2C9C, undef, - 0x2C9E, undef, 0x2CA0, undef, 0x2CA2, undef, 0x2CA4, undef, 0x2CA6, undef, 0x2CA8, undef, 0x2CAA, undef, 0x2CAC, undef, - 0x2CAE, undef, 0x2CB0, undef, 0x2CB2, undef, 0x2CB4, undef, 0x2CB6, undef, 0x2CB8, undef, 0x2CBA, undef, 0x2CBC, undef, - 0x2CBE, undef, 0x2CC0, undef, 0x2CC2, undef, 0x2CC4, undef, 0x2CC6, undef, 0x2CC8, undef, 0x2CCA, undef, 0x2CCC, undef, - 0x2CCE, undef, 0x2CD0, undef, 0x2CD2, undef, 0x2CD4, undef, 0x2CD6, undef, 0x2CD8, undef, 0x2CDA, undef, 0x2CDC, undef, - 0x2CDE, undef, 0x2CE0, undef, 0x2CE2, undef, 0x2CEB, undef, 0x2CED, undef, 0x2CF2, undef, 0x2D6F, undef, 0x2E9F, undef, - 0x2EF3, undef, 0x2F00, 0x2FD5, 0x3002, undef, 0x3036, undef, 0x3038, 0x303A, 0x309F, undef, 0x30FF, undef, 0x3131, 0x3163, - 0x3165, 0x318E, 0x3192, 0x319F, 0x3244, 0x3247, 0x3250, 0x327E, 0x3280, 0x32FE, 0x3300, 0x33C1, 0x33C3, 0x33C6, 0x33C8, 0x33D7, - 0x33D9, 0x33FF, 0xA640, undef, 0xA642, undef, 0xA644, undef, 0xA646, undef, 0xA648, undef, 0xA64A, undef, 0xA64C, undef, - 0xA64E, undef, 0xA650, undef, 0xA652, undef, 0xA654, undef, 0xA656, undef, 0xA658, undef, 0xA65A, undef, 0xA65C, undef, - 0xA65E, undef, 0xA660, undef, 0xA662, undef, 0xA664, undef, 0xA666, undef, 0xA668, undef, 0xA66A, undef, 0xA66C, undef, - 0xA680, undef, 0xA682, undef, 0xA684, undef, 0xA686, undef, 0xA688, undef, 0xA68A, undef, 0xA68C, undef, 0xA68E, undef, - 0xA690, undef, 0xA692, undef, 0xA694, undef, 0xA696, undef, 0xA698, undef, 0xA69A, undef, 0xA69C, 0xA69D, 0xA722, undef, - 0xA724, undef, 0xA726, undef, 0xA728, undef, 0xA72A, undef, 0xA72C, undef, 0xA72E, undef, 0xA732, undef, 0xA734, undef, - 0xA736, undef, 0xA738, undef, 0xA73A, undef, 0xA73C, undef, 0xA73E, undef, 0xA740, undef, 0xA742, undef, 0xA744, undef, - 0xA746, undef, 0xA748, undef, 0xA74A, undef, 0xA74C, undef, 0xA74E, undef, 0xA750, undef, 0xA752, undef, 0xA754, undef, - 0xA756, undef, 0xA758, undef, 0xA75A, undef, 0xA75C, undef, 0xA75E, undef, 0xA760, undef, 0xA762, undef, 0xA764, undef, - 0xA766, undef, 0xA768, undef, 0xA76A, undef, 0xA76C, undef, 0xA76E, undef, 0xA770, undef, 0xA779, undef, 0xA77B, undef, - 0xA77D, 0xA77E, 0xA780, undef, 0xA782, undef, 0xA784, undef, 0xA786, undef, 0xA78B, undef, 0xA78D, undef, 0xA790, undef, - 0xA792, undef, 0xA796, undef, 0xA798, undef, 0xA79A, undef, 0xA79C, undef, 0xA79E, undef, 0xA7A0, undef, 0xA7A2, undef, - 0xA7A4, undef, 0xA7A6, undef, 0xA7A8, undef, 0xA7AA, 0xA7AE, 0xA7B0, 0xA7B4, 0xA7B6, undef, 0xA7F8, 0xA7F9, 0xAB5C, 0xAB5F, - 0xAB70, 0xABBF, 0xF900, 0xFA0D, 0xFA10, undef, 0xFA12, undef, 0xFA15, 0xFA1E, 0xFA20, undef, 0xFA22, undef, 0xFA25, 0xFA26, - 0xFA2A, 0xFA6D, 0xFA70, 0xFAD9, 0xFB00, 0xFB06, 0xFB13, 0xFB17, 0xFB1D, undef, 0xFB1F, 0xFB28, 0xFB2A, 0xFB36, 0xFB38, 0xFB3C, - 0xFB3E, undef, 0xFB40, 0xFB41, 0xFB43, 0xFB44, 0xFB46, 0xFBB1, 0xFBD3, 0xFC5D, 0xFC64, 0xFD3D, 0xFD50, 0xFD8F, 0xFD92, 0xFDC7, - 0xFDF0, 0xFDF9, 0xFDFC, undef, 0xFE11, undef, 0xFE17, 0xFE18, 0xFE31, 0xFE32, 0xFE39, 0xFE44, 0xFE51, undef, 0xFE58, undef, - 0xFE5D, 0xFE5E, 0xFE63, undef, 0xFE71, undef, 0xFE77, undef, 0xFE79, undef, 0xFE7B, undef, 0xFE7D, undef, 0xFE7F, 0xFEFC, - 0xFF0D, 0xFF0E, 0xFF10, 0xFF19, 0xFF21, 0xFF3A, 0xFF41, 0xFF5A, 0xFF5F, 0xFF9F, 0xFFA1, 0xFFBE, 0xFFC2, 0xFFC7, 0xFFCA, 0xFFCF, - 0xFFD2, 0xFFD7, 0xFFDA, 0xFFDC, 0xFFE0, 0xFFE2, 0xFFE4, 0xFFE6, 0xFFE8, 0xFFEE, 0x10400, 0x10427, 0x104B0, 0x104D3, 0x10C80, 0x10CB2, - 0x118A0, 0x118BF, 0x1D15E, 0x1D164, 0x1D1BB, 0x1D1C0, 0x1D400, 0x1D454, 0x1D456, 0x1D49C, 0x1D49E, 0x1D49F, 0x1D4A2, undef, 0x1D4A5, 0x1D4A6, - 0x1D4A9, 0x1D4AC, 0x1D4AE, 0x1D4B9, 0x1D4BB, undef, 0x1D4BD, 0x1D4C3, 0x1D4C5, 0x1D505, 0x1D507, 0x1D50A, 0x1D50D, 0x1D514, 0x1D516, 0x1D51C, - 0x1D51E, 0x1D539, 0x1D53B, 0x1D53E, 0x1D540, 0x1D544, 0x1D546, undef, 0x1D54A, 0x1D550, 0x1D552, 0x1D6A5, 0x1D6A8, 0x1D7CB, 0x1D7CE, 0x1D7FF, - 0x1E900, 0x1E921, 0x1EE00, 0x1EE03, 0x1EE05, 0x1EE1F, 0x1EE21, 0x1EE22, 0x1EE24, undef, 0x1EE27, undef, 0x1EE29, 0x1EE32, 0x1EE34, 0x1EE37, - 0x1EE39, undef, 0x1EE3B, undef, 0x1EE42, undef, 0x1EE47, undef, 0x1EE49, undef, 0x1EE4B, undef, 0x1EE4D, 0x1EE4F, 0x1EE51, 0x1EE52, - 0x1EE54, undef, 0x1EE57, undef, 0x1EE59, undef, 0x1EE5B, undef, 0x1EE5D, undef, 0x1EE5F, undef, 0x1EE61, 0x1EE62, 0x1EE64, undef, - 0x1EE67, 0x1EE6A, 0x1EE6C, 0x1EE72, 0x1EE74, 0x1EE77, 0x1EE79, 0x1EE7C, 0x1EE7E, undef, 0x1EE80, 0x1EE89, 0x1EE8B, 0x1EE9B, 0x1EEA1, 0x1EEA3, - 0x1EEA5, 0x1EEA9, 0x1EEAB, 0x1EEBB, 0x1F12A, 0x1F12E, 0x1F130, 0x1F14F, 0x1F16A, 0x1F16B, 0x1F190, undef, 0x1F200, 0x1F202, 0x1F210, 0x1F23B, - 0x1F240, 0x1F248, 0x1F250, 0x1F251, 0x2F800, 0x2F867, 0x2F869, 0x2F873, 0x2F875, 0x2F91E, 0x2F920, 0x2F95E, 0x2F960, 0x2F9BE, 0x2F9C0, 0x2FA1D, -); +our @MAPPED; +BEGIN { + @MAPPED = ( + 0x0041, 0x005A, 0x00AA, undef, 0x00B2, 0x00B3, 0x00B5, undef, 0x00B9, 0x00BA, 0x00BC, 0x00BE, 0x00C0, 0x00D6, 0x00D8, 0x00DE, + 0x0100, undef, 0x0102, undef, 0x0104, undef, 0x0106, undef, 0x0108, undef, 0x010A, undef, 0x010C, undef, 0x010E, undef, + 0x0110, undef, 0x0112, undef, 0x0114, undef, 0x0116, undef, 0x0118, undef, 0x011A, undef, 0x011C, undef, 0x011E, undef, + 0x0120, undef, 0x0122, undef, 0x0124, undef, 0x0126, undef, 0x0128, undef, 0x012A, undef, 0x012C, undef, 0x012E, undef, + 0x0130, undef, 0x0132, 0x0134, 0x0136, undef, 0x0139, undef, 0x013B, undef, 0x013D, undef, 0x013F, 0x0141, 0x0143, undef, + 0x0145, undef, 0x0147, undef, 0x0149, 0x014A, 0x014C, undef, 0x014E, undef, 0x0150, undef, 0x0152, undef, 0x0154, undef, + 0x0156, undef, 0x0158, undef, 0x015A, undef, 0x015C, undef, 0x015E, undef, 0x0160, undef, 0x0162, undef, 0x0164, undef, + 0x0166, undef, 0x0168, undef, 0x016A, undef, 0x016C, undef, 0x016E, undef, 0x0170, undef, 0x0172, undef, 0x0174, undef, + 0x0176, undef, 0x0178, 0x0179, 0x017B, undef, 0x017D, undef, 0x017F, undef, 0x0181, 0x0182, 0x0184, undef, 0x0186, 0x0187, + 0x0189, 0x018B, 0x018E, 0x0191, 0x0193, 0x0194, 0x0196, 0x0198, 0x019C, 0x019D, 0x019F, 0x01A0, 0x01A2, undef, 0x01A4, undef, + 0x01A6, 0x01A7, 0x01A9, undef, 0x01AC, undef, 0x01AE, 0x01AF, 0x01B1, 0x01B3, 0x01B5, undef, 0x01B7, 0x01B8, 0x01BC, undef, + 0x01C4, 0x01CD, 0x01CF, undef, 0x01D1, undef, 0x01D3, undef, 0x01D5, undef, 0x01D7, undef, 0x01D9, undef, 0x01DB, undef, + 0x01DE, undef, 0x01E0, undef, 0x01E2, undef, 0x01E4, undef, 0x01E6, undef, 0x01E8, undef, 0x01EA, undef, 0x01EC, undef, + 0x01EE, undef, 0x01F1, 0x01F4, 0x01F6, 0x01F8, 0x01FA, undef, 0x01FC, undef, 0x01FE, undef, 0x0200, undef, 0x0202, undef, + 0x0204, undef, 0x0206, undef, 0x0208, undef, 0x020A, undef, 0x020C, undef, 0x020E, undef, 0x0210, undef, 0x0212, undef, + 0x0214, undef, 0x0216, undef, 0x0218, undef, 0x021A, undef, 0x021C, undef, 0x021E, undef, 0x0220, undef, 0x0222, undef, + 0x0224, undef, 0x0226, undef, 0x0228, undef, 0x022A, undef, 0x022C, undef, 0x022E, undef, 0x0230, undef, 0x0232, undef, + 0x023A, 0x023B, 0x023D, 0x023E, 0x0241, undef, 0x0243, 0x0246, 0x0248, undef, 0x024A, undef, 0x024C, undef, 0x024E, undef, + 0x02B0, 0x02B8, 0x02E0, 0x02E4, 0x0340, 0x0341, 0x0343, 0x0345, 0x0370, undef, 0x0372, undef, 0x0374, undef, 0x0376, undef, + 0x037F, undef, 0x0386, 0x038A, 0x038C, undef, 0x038E, 0x038F, 0x0391, 0x03A1, 0x03A3, 0x03AB, 0x03CF, 0x03D6, 0x03D8, undef, + 0x03DA, undef, 0x03DC, undef, 0x03DE, undef, 0x03E0, undef, 0x03E2, undef, 0x03E4, undef, 0x03E6, undef, 0x03E8, undef, + 0x03EA, undef, 0x03EC, undef, 0x03EE, undef, 0x03F0, 0x03F2, 0x03F4, 0x03F5, 0x03F7, undef, 0x03F9, 0x03FA, 0x03FD, 0x042F, + 0x0460, undef, 0x0462, undef, 0x0464, undef, 0x0466, undef, 0x0468, undef, 0x046A, undef, 0x046C, undef, 0x046E, undef, + 0x0470, undef, 0x0472, undef, 0x0474, undef, 0x0476, undef, 0x0478, undef, 0x047A, undef, 0x047C, undef, 0x047E, undef, + 0x0480, undef, 0x048A, undef, 0x048C, undef, 0x048E, undef, 0x0490, undef, 0x0492, undef, 0x0494, undef, 0x0496, undef, + 0x0498, undef, 0x049A, undef, 0x049C, undef, 0x049E, undef, 0x04A0, undef, 0x04A2, undef, 0x04A4, undef, 0x04A6, undef, + 0x04A8, undef, 0x04AA, undef, 0x04AC, undef, 0x04AE, undef, 0x04B0, undef, 0x04B2, undef, 0x04B4, undef, 0x04B6, undef, + 0x04B8, undef, 0x04BA, undef, 0x04BC, undef, 0x04BE, undef, 0x04C1, undef, 0x04C3, undef, 0x04C5, undef, 0x04C7, undef, + 0x04C9, undef, 0x04CB, undef, 0x04CD, undef, 0x04D0, undef, 0x04D2, undef, 0x04D4, undef, 0x04D6, undef, 0x04D8, undef, + 0x04DA, undef, 0x04DC, undef, 0x04DE, undef, 0x04E0, undef, 0x04E2, undef, 0x04E4, undef, 0x04E6, undef, 0x04E8, undef, + 0x04EA, undef, 0x04EC, undef, 0x04EE, undef, 0x04F0, undef, 0x04F2, undef, 0x04F4, undef, 0x04F6, undef, 0x04F8, undef, + 0x04FA, undef, 0x04FC, undef, 0x04FE, undef, 0x0500, undef, 0x0502, undef, 0x0504, undef, 0x0506, undef, 0x0508, undef, + 0x050A, undef, 0x050C, undef, 0x050E, undef, 0x0510, undef, 0x0512, undef, 0x0514, undef, 0x0516, undef, 0x0518, undef, + 0x051A, undef, 0x051C, undef, 0x051E, undef, 0x0520, undef, 0x0522, undef, 0x0524, undef, 0x0526, undef, 0x0528, undef, + 0x052A, undef, 0x052C, undef, 0x052E, undef, 0x0531, 0x0556, 0x0587, undef, 0x0675, 0x0678, 0x0958, 0x095F, 0x09DC, 0x09DD, + 0x09DF, undef, 0x0A33, undef, 0x0A36, undef, 0x0A59, 0x0A5B, 0x0A5E, undef, 0x0B5C, 0x0B5D, 0x0E33, undef, 0x0EB3, undef, + 0x0EDC, 0x0EDD, 0x0F0C, undef, 0x0F43, undef, 0x0F4D, undef, 0x0F52, undef, 0x0F57, undef, 0x0F5C, undef, 0x0F69, undef, + 0x0F73, undef, 0x0F75, 0x0F79, 0x0F81, undef, 0x0F93, undef, 0x0F9D, undef, 0x0FA2, undef, 0x0FA7, undef, 0x0FAC, undef, + 0x0FB9, undef, 0x10C7, undef, 0x10CD, undef, 0x10FC, undef, 0x13F8, 0x13FD, 0x1C80, 0x1C88, 0x1D2C, 0x1D2E, 0x1D30, 0x1D3A, + 0x1D3C, 0x1D4D, 0x1D4F, 0x1D6A, 0x1D78, undef, 0x1D9B, 0x1DBF, 0x1E00, undef, 0x1E02, undef, 0x1E04, undef, 0x1E06, undef, + 0x1E08, undef, 0x1E0A, undef, 0x1E0C, undef, 0x1E0E, undef, 0x1E10, undef, 0x1E12, undef, 0x1E14, undef, 0x1E16, undef, + 0x1E18, undef, 0x1E1A, undef, 0x1E1C, undef, 0x1E1E, undef, 0x1E20, undef, 0x1E22, undef, 0x1E24, undef, 0x1E26, undef, + 0x1E28, undef, 0x1E2A, undef, 0x1E2C, undef, 0x1E2E, undef, 0x1E30, undef, 0x1E32, undef, 0x1E34, undef, 0x1E36, undef, + 0x1E38, undef, 0x1E3A, undef, 0x1E3C, undef, 0x1E3E, undef, 0x1E40, undef, 0x1E42, undef, 0x1E44, undef, 0x1E46, undef, + 0x1E48, undef, 0x1E4A, undef, 0x1E4C, undef, 0x1E4E, undef, 0x1E50, undef, 0x1E52, undef, 0x1E54, undef, 0x1E56, undef, + 0x1E58, undef, 0x1E5A, undef, 0x1E5C, undef, 0x1E5E, undef, 0x1E60, undef, 0x1E62, undef, 0x1E64, undef, 0x1E66, undef, + 0x1E68, undef, 0x1E6A, undef, 0x1E6C, undef, 0x1E6E, undef, 0x1E70, undef, 0x1E72, undef, 0x1E74, undef, 0x1E76, undef, + 0x1E78, undef, 0x1E7A, undef, 0x1E7C, undef, 0x1E7E, undef, 0x1E80, undef, 0x1E82, undef, 0x1E84, undef, 0x1E86, undef, + 0x1E88, undef, 0x1E8A, undef, 0x1E8C, undef, 0x1E8E, undef, 0x1E90, undef, 0x1E92, undef, 0x1E94, undef, 0x1E9A, 0x1E9B, + 0x1E9E, undef, 0x1EA0, undef, 0x1EA2, undef, 0x1EA4, undef, 0x1EA6, undef, 0x1EA8, undef, 0x1EAA, undef, 0x1EAC, undef, + 0x1EAE, undef, 0x1EB0, undef, 0x1EB2, undef, 0x1EB4, undef, 0x1EB6, undef, 0x1EB8, undef, 0x1EBA, undef, 0x1EBC, undef, + 0x1EBE, undef, 0x1EC0, undef, 0x1EC2, undef, 0x1EC4, undef, 0x1EC6, undef, 0x1EC8, undef, 0x1ECA, undef, 0x1ECC, undef, + 0x1ECE, undef, 0x1ED0, undef, 0x1ED2, undef, 0x1ED4, undef, 0x1ED6, undef, 0x1ED8, undef, 0x1EDA, undef, 0x1EDC, undef, + 0x1EDE, undef, 0x1EE0, undef, 0x1EE2, undef, 0x1EE4, undef, 0x1EE6, undef, 0x1EE8, undef, 0x1EEA, undef, 0x1EEC, undef, + 0x1EEE, undef, 0x1EF0, undef, 0x1EF2, undef, 0x1EF4, undef, 0x1EF6, undef, 0x1EF8, undef, 0x1EFA, undef, 0x1EFC, undef, + 0x1EFE, undef, 0x1F08, 0x1F0F, 0x1F18, 0x1F1D, 0x1F28, 0x1F2F, 0x1F38, 0x1F3F, 0x1F48, 0x1F4D, 0x1F59, undef, 0x1F5B, undef, + 0x1F5D, undef, 0x1F5F, undef, 0x1F68, 0x1F6F, 0x1F71, undef, 0x1F73, undef, 0x1F75, undef, 0x1F77, undef, 0x1F79, undef, + 0x1F7B, undef, 0x1F7D, undef, 0x1F80, 0x1FAF, 0x1FB2, 0x1FB4, 0x1FB7, 0x1FBC, 0x1FBE, undef, 0x1FC2, 0x1FC4, 0x1FC7, 0x1FCC, + 0x1FD3, undef, 0x1FD8, 0x1FDB, 0x1FE3, undef, 0x1FE8, 0x1FEC, 0x1FF2, 0x1FF4, 0x1FF7, 0x1FFC, 0x2011, undef, 0x2033, 0x2034, + 0x2036, 0x2037, 0x2057, undef, 0x2070, 0x2071, 0x2074, 0x2079, 0x207B, undef, 0x207F, 0x2089, 0x208B, undef, 0x2090, 0x209C, + 0x20A8, undef, 0x2102, 0x2103, 0x2107, undef, 0x2109, 0x2113, 0x2115, 0x2116, 0x2119, 0x211D, 0x2120, 0x2122, 0x2124, undef, + 0x2126, undef, 0x2128, undef, 0x212A, 0x212D, 0x212F, 0x2131, 0x2133, 0x2139, 0x213B, 0x2140, 0x2145, 0x2149, 0x2150, 0x217F, + 0x2189, undef, 0x222C, 0x222D, 0x222F, 0x2230, 0x2329, 0x232A, 0x2460, 0x2473, 0x24B6, 0x24EA, 0x2A0C, undef, 0x2ADC, undef, + 0x2C00, 0x2C2E, 0x2C60, undef, 0x2C62, 0x2C64, 0x2C67, undef, 0x2C69, undef, 0x2C6B, undef, 0x2C6D, 0x2C70, 0x2C72, undef, + 0x2C75, undef, 0x2C7C, 0x2C80, 0x2C82, undef, 0x2C84, undef, 0x2C86, undef, 0x2C88, undef, 0x2C8A, undef, 0x2C8C, undef, + 0x2C8E, undef, 0x2C90, undef, 0x2C92, undef, 0x2C94, undef, 0x2C96, undef, 0x2C98, undef, 0x2C9A, undef, 0x2C9C, undef, + 0x2C9E, undef, 0x2CA0, undef, 0x2CA2, undef, 0x2CA4, undef, 0x2CA6, undef, 0x2CA8, undef, 0x2CAA, undef, 0x2CAC, undef, + 0x2CAE, undef, 0x2CB0, undef, 0x2CB2, undef, 0x2CB4, undef, 0x2CB6, undef, 0x2CB8, undef, 0x2CBA, undef, 0x2CBC, undef, + 0x2CBE, undef, 0x2CC0, undef, 0x2CC2, undef, 0x2CC4, undef, 0x2CC6, undef, 0x2CC8, undef, 0x2CCA, undef, 0x2CCC, undef, + 0x2CCE, undef, 0x2CD0, undef, 0x2CD2, undef, 0x2CD4, undef, 0x2CD6, undef, 0x2CD8, undef, 0x2CDA, undef, 0x2CDC, undef, + 0x2CDE, undef, 0x2CE0, undef, 0x2CE2, undef, 0x2CEB, undef, 0x2CED, undef, 0x2CF2, undef, 0x2D6F, undef, 0x2E9F, undef, + 0x2EF3, undef, 0x2F00, 0x2FD5, 0x3002, undef, 0x3036, undef, 0x3038, 0x303A, 0x309F, undef, 0x30FF, undef, 0x3131, 0x3163, + 0x3165, 0x318E, 0x3192, 0x319F, 0x3244, 0x3247, 0x3250, 0x327E, 0x3280, 0x32FE, 0x3300, 0x33C1, 0x33C3, 0x33C6, 0x33C8, 0x33D7, + 0x33D9, 0x33FF, 0xA640, undef, 0xA642, undef, 0xA644, undef, 0xA646, undef, 0xA648, undef, 0xA64A, undef, 0xA64C, undef, + 0xA64E, undef, 0xA650, undef, 0xA652, undef, 0xA654, undef, 0xA656, undef, 0xA658, undef, 0xA65A, undef, 0xA65C, undef, + 0xA65E, undef, 0xA660, undef, 0xA662, undef, 0xA664, undef, 0xA666, undef, 0xA668, undef, 0xA66A, undef, 0xA66C, undef, + 0xA680, undef, 0xA682, undef, 0xA684, undef, 0xA686, undef, 0xA688, undef, 0xA68A, undef, 0xA68C, undef, 0xA68E, undef, + 0xA690, undef, 0xA692, undef, 0xA694, undef, 0xA696, undef, 0xA698, undef, 0xA69A, undef, 0xA69C, 0xA69D, 0xA722, undef, + 0xA724, undef, 0xA726, undef, 0xA728, undef, 0xA72A, undef, 0xA72C, undef, 0xA72E, undef, 0xA732, undef, 0xA734, undef, + 0xA736, undef, 0xA738, undef, 0xA73A, undef, 0xA73C, undef, 0xA73E, undef, 0xA740, undef, 0xA742, undef, 0xA744, undef, + 0xA746, undef, 0xA748, undef, 0xA74A, undef, 0xA74C, undef, 0xA74E, undef, 0xA750, undef, 0xA752, undef, 0xA754, undef, + 0xA756, undef, 0xA758, undef, 0xA75A, undef, 0xA75C, undef, 0xA75E, undef, 0xA760, undef, 0xA762, undef, 0xA764, undef, + 0xA766, undef, 0xA768, undef, 0xA76A, undef, 0xA76C, undef, 0xA76E, undef, 0xA770, undef, 0xA779, undef, 0xA77B, undef, + 0xA77D, 0xA77E, 0xA780, undef, 0xA782, undef, 0xA784, undef, 0xA786, undef, 0xA78B, undef, 0xA78D, undef, 0xA790, undef, + 0xA792, undef, 0xA796, undef, 0xA798, undef, 0xA79A, undef, 0xA79C, undef, 0xA79E, undef, 0xA7A0, undef, 0xA7A2, undef, + 0xA7A4, undef, 0xA7A6, undef, 0xA7A8, undef, 0xA7AA, 0xA7AE, 0xA7B0, 0xA7B4, 0xA7B6, undef, 0xA7F8, 0xA7F9, 0xAB5C, 0xAB5F, + 0xAB70, 0xABBF, 0xF900, 0xFA0D, 0xFA10, undef, 0xFA12, undef, 0xFA15, 0xFA1E, 0xFA20, undef, 0xFA22, undef, 0xFA25, 0xFA26, + 0xFA2A, 0xFA6D, 0xFA70, 0xFAD9, 0xFB00, 0xFB06, 0xFB13, 0xFB17, 0xFB1D, undef, 0xFB1F, 0xFB28, 0xFB2A, 0xFB36, 0xFB38, 0xFB3C, + 0xFB3E, undef, 0xFB40, 0xFB41, 0xFB43, 0xFB44, 0xFB46, 0xFBB1, 0xFBD3, 0xFC5D, 0xFC64, 0xFD3D, 0xFD50, 0xFD8F, 0xFD92, 0xFDC7, + 0xFDF0, 0xFDF9, 0xFDFC, undef, 0xFE11, undef, 0xFE17, 0xFE18, 0xFE31, 0xFE32, 0xFE39, 0xFE44, 0xFE51, undef, 0xFE58, undef, + 0xFE5D, 0xFE5E, 0xFE63, undef, 0xFE71, undef, 0xFE77, undef, 0xFE79, undef, 0xFE7B, undef, 0xFE7D, undef, 0xFE7F, 0xFEFC, + 0xFF0D, 0xFF0E, 0xFF10, 0xFF19, 0xFF21, 0xFF3A, 0xFF41, 0xFF5A, 0xFF5F, 0xFF9F, 0xFFA1, 0xFFBE, 0xFFC2, 0xFFC7, 0xFFCA, 0xFFCF, + 0xFFD2, 0xFFD7, 0xFFDA, 0xFFDC, 0xFFE0, 0xFFE2, 0xFFE4, 0xFFE6, 0xFFE8, 0xFFEE, 0x10400, 0x10427, 0x104B0, 0x104D3, 0x10C80, 0x10CB2, + 0x118A0, 0x118BF, 0x1D15E, 0x1D164, 0x1D1BB, 0x1D1C0, 0x1D400, 0x1D454, 0x1D456, 0x1D49C, 0x1D49E, 0x1D49F, 0x1D4A2, undef, 0x1D4A5, 0x1D4A6, + 0x1D4A9, 0x1D4AC, 0x1D4AE, 0x1D4B9, 0x1D4BB, undef, 0x1D4BD, 0x1D4C3, 0x1D4C5, 0x1D505, 0x1D507, 0x1D50A, 0x1D50D, 0x1D514, 0x1D516, 0x1D51C, + 0x1D51E, 0x1D539, 0x1D53B, 0x1D53E, 0x1D540, 0x1D544, 0x1D546, undef, 0x1D54A, 0x1D550, 0x1D552, 0x1D6A5, 0x1D6A8, 0x1D7CB, 0x1D7CE, 0x1D7FF, + 0x1E900, 0x1E921, 0x1EE00, 0x1EE03, 0x1EE05, 0x1EE1F, 0x1EE21, 0x1EE22, 0x1EE24, undef, 0x1EE27, undef, 0x1EE29, 0x1EE32, 0x1EE34, 0x1EE37, + 0x1EE39, undef, 0x1EE3B, undef, 0x1EE42, undef, 0x1EE47, undef, 0x1EE49, undef, 0x1EE4B, undef, 0x1EE4D, 0x1EE4F, 0x1EE51, 0x1EE52, + 0x1EE54, undef, 0x1EE57, undef, 0x1EE59, undef, 0x1EE5B, undef, 0x1EE5D, undef, 0x1EE5F, undef, 0x1EE61, 0x1EE62, 0x1EE64, undef, + 0x1EE67, 0x1EE6A, 0x1EE6C, 0x1EE72, 0x1EE74, 0x1EE77, 0x1EE79, 0x1EE7C, 0x1EE7E, undef, 0x1EE80, 0x1EE89, 0x1EE8B, 0x1EE9B, 0x1EEA1, 0x1EEA3, + 0x1EEA5, 0x1EEA9, 0x1EEAB, 0x1EEBB, 0x1F12A, 0x1F12E, 0x1F130, 0x1F14F, 0x1F16A, 0x1F16B, 0x1F190, undef, 0x1F200, 0x1F202, 0x1F210, 0x1F23B, + 0x1F240, 0x1F248, 0x1F250, 0x1F251, 0x2F800, 0x2F867, 0x2F869, 0x2F873, 0x2F875, 0x2F91E, 0x2F920, 0x2F95E, 0x2F960, 0x2F9BE, 0x2F9C0, 0x2FA1D, + ); + +} sub IsMapped { return _mk_prop(@MAPPED); }; sub MapMapped { my $l = shift; $l =~ tr/ABCDEFGHIJKLMNOPQRSTUVWXYZª\x{00B2}\x{00B3}µ\x{00B9}ºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮĴĶĹĻĽŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽſƁƂƄƆƇƉƊƋƎƏƐƑƓƔƖƗƘƜƝƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁɃɄɅɆɈɊɌɎʰʱʲʳʴʵʶʷʸˠˡˢˣˤ\x{0340}\x{0341}\x{0343}ͅͰͲʹͶͿΆ\x{0387}ΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫϏϐϑϒϓϔϕϖϘϚϜϞϠϢϤϦϨϪϬϮϰϱϲϴϵϷϹϺϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦԨԪԬԮԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖ\x{0F0C}ჇჍჼᏸᏹᏺᏻᏼᏽᲀᲁᲂᲃᲄᲅᲆᲇᲈᴬᴭᴮᴰᴱᴲᴳᴴᴵᴶᴷᴸᴹᴺᴼᴽᴾᴿᵀᵁᵂᵃᵄᵅᵆᵇᵈᵉᵊᵋᵌᵍᵏᵐᵑᵒᵓᵔᵕᵖᵗᵘᵙᵚᵛᵜᵝᵞᵟᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᵸᶛᶜᶝᶞᶟᶠᶡᶢᶣᶤᶥᶦᶧᶨᶩᶪᶫᶬᶭᶮᶯᶰᶱᶲᶳᶴᶵᶶᶷᶸᶹᶺᶻᶼᶽᶾᶿḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẛẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈἉἊἋἌἍἎἏἘἙἚἛἜἝἨἩἪἫἬἭἮἯἸἹἺἻἼἽἾἿὈὉὊὋὌὍὙὛὝὟὨὩὪὫὬὭὮὯάέήίόύώᾸᾹᾺΆιῈΈῊΉΐῘῙῚΊΰῨῩῪΎῬῸΌῺΏ\x{2011}\x{2070}ⁱ\x{2074}\x{2075}\x{2076}\x{2077}\x{2078}\x{2079}\x{207B}ⁿ\x{2080}\x{2081}\x{2082}\x{2083}\x{2084}\x{2085}\x{2086}\x{2087}\x{2088}\x{2089}\x{208B}ₐₑₒₓₔₕₖₗₘₙₚₛₜℂℇℊℋℌℍℎℏℐℑℒℓℕℙℚℛℜℝℤΩℨKÅℬℭℯℰℱℳℴℵℶℷℸℹℼℽℾℿ\x{2140}ⅅⅆⅇⅈⅉⅠⅤⅩⅬⅭⅮⅯⅰⅴⅹⅼⅽⅾⅿ\x{2329}\x{232A}\x{2460}\x{2461}\x{2462}\x{2463}\x{2464}\x{2465}\x{2466}\x{2467}\x{2468}ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ\x{24EA}ⰀⰁⰂⰃⰄⰅⰆⰇⰈⰉⰊⰋⰌⰍⰎⰏⰐⰑⰒⰓⰔⰕⰖⰗⰘⰙⰚⰛⰜⰝⰞⰟⰠⰡⰢⰣⰤⰥⰦⰧⰨⰩⰪⰫⰬⰭⰮⱠⱢⱣⱤⱧⱩⱫⱭⱮⱯⱰⱲⱵⱼⱽⱾⱿⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲⵯ\x{2E9F}\x{2EF3}\x{2F00}\x{2F01}\x{2F02}\x{2F03}\x{2F04}\x{2F05}\x{2F06}\x{2F07}\x{2F08}\x{2F09}\x{2F0A}\x{2F0B}\x{2F0C}\x{2F0D}\x{2F0E}\x{2F0F}\x{2F10}\x{2F11}\x{2F12}\x{2F13}\x{2F14}\x{2F15}\x{2F16}\x{2F17}\x{2F18}\x{2F19}\x{2F1A}\x{2F1B}\x{2F1C}\x{2F1D}\x{2F1E}\x{2F1F}\x{2F20}\x{2F21}\x{2F22}\x{2F23}\x{2F24}\x{2F25}\x{2F26}\x{2F27}\x{2F28}\x{2F29}\x{2F2A}\x{2F2B}\x{2F2C}\x{2F2D}\x{2F2E}\x{2F2F}\x{2F30}\x{2F31}\x{2F32}\x{2F33}\x{2F34}\x{2F35}\x{2F36}\x{2F37}\x{2F38}\x{2F39}\x{2F3A}\x{2F3B}\x{2F3C}\x{2F3D}\x{2F3E}\x{2F3F}\x{2F40}\x{2F41}\x{2F42}\x{2F43}\x{2F44}\x{2F45}\x{2F46}\x{2F47}\x{2F48}\x{2F49}\x{2F4A}\x{2F4B}\x{2F4C}\x{2F4D}\x{2F4E}\x{2F4F}\x{2F50}\x{2F51}\x{2F52}\x{2F53}\x{2F54}\x{2F55}\x{2F56}\x{2F57}\x{2F58}\x{2F59}\x{2F5A}\x{2F5B}\x{2F5C}\x{2F5D}\x{2F5E}\x{2F5F}\x{2F60}\x{2F61}\x{2F62}\x{2F63}\x{2F64}\x{2F65}\x{2F66}\x{2F67}\x{2F68}\x{2F69}\x{2F6A}\x{2F6B}\x{2F6C}\x{2F6D}\x{2F6E}\x{2F6F}\x{2F70}\x{2F71}\x{2F72}\x{2F73}\x{2F74}\x{2F75}\x{2F76}\x{2F77}\x{2F78}\x{2F79}\x{2F7A}\x{2F7B}\x{2F7C}\x{2F7D}\x{2F7E}\x{2F7F}\x{2F80}\x{2F81}\x{2F82}\x{2F83}\x{2F84}\x{2F85}\x{2F86}\x{2F87}\x{2F88}\x{2F89}\x{2F8A}\x{2F8B}\x{2F8C}\x{2F8D}\x{2F8E}\x{2F8F}\x{2F90}\x{2F91}\x{2F92}\x{2F93}\x{2F94}\x{2F95}\x{2F96}\x{2F97}\x{2F98}\x{2F99}\x{2F9A}\x{2F9B}\x{2F9C}\x{2F9D}\x{2F9E}\x{2F9F}\x{2FA0}\x{2FA1}\x{2FA2}\x{2FA3}\x{2FA4}\x{2FA5}\x{2FA6}\x{2FA7}\x{2FA8}\x{2FA9}\x{2FAA}\x{2FAB}\x{2FAC}\x{2FAD}\x{2FAE}\x{2FAF}\x{2FB0}\x{2FB1}\x{2FB2}\x{2FB3}\x{2FB4}\x{2FB5}\x{2FB6}\x{2FB7}\x{2FB8}\x{2FB9}\x{2FBA}\x{2FBB}\x{2FBC}\x{2FBD}\x{2FBE}\x{2FBF}\x{2FC0}\x{2FC1}\x{2FC2}\x{2FC3}\x{2FC4}\x{2FC5}\x{2FC6}\x{2FC7}\x{2FC8}\x{2FC9}\x{2FCA}\x{2FCB}\x{2FCC}\x{2FCD}\x{2FCE}\x{2FCF}\x{2FD0}\x{2FD1}\x{2FD2}\x{2FD3}\x{2FD4}\x{2FD5}\x{3002}\x{3036}〸〹〺ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ\x{3192}\x{3193}\x{3194}\x{3195}\x{3196}\x{3197}\x{3198}\x{3199}\x{319A}\x{319B}\x{319C}\x{319D}\x{319E}\x{319F}\x{3244}\x{3245}\x{3246}\x{3247}\x{3260}\x{3261}\x{3262}\x{3263}\x{3264}\x{3265}\x{3266}\x{3267}\x{3268}\x{3269}\x{326A}\x{326B}\x{326C}\x{326D}\x{326E}\x{326F}\x{3270}\x{3271}\x{3272}\x{3273}\x{3274}\x{3275}\x{3276}\x{3277}\x{3278}\x{3279}\x{327A}\x{327B}\x{327E}\x{3280}\x{3281}\x{3282}\x{3283}\x{3284}\x{3285}\x{3286}\x{3287}\x{3288}\x{3289}\x{328A}\x{328B}\x{328C}\x{328D}\x{328E}\x{328F}\x{3290}\x{3291}\x{3292}\x{3293}\x{3294}\x{3295}\x{3296}\x{3297}\x{3298}\x{3299}\x{329A}\x{329B}\x{329C}\x{329D}\x{329E}\x{329F}\x{32A0}\x{32A1}\x{32A2}\x{32A3}\x{32A4}\x{32A5}\x{32A6}\x{32A7}\x{32A8}\x{32A9}\x{32AA}\x{32AB}\x{32AC}\x{32AD}\x{32AE}\x{32AF}\x{32B0}\x{32D0}\x{32D1}\x{32D2}\x{32D3}\x{32D4}\x{32D5}\x{32D6}\x{32D7}\x{32D8}\x{32D9}\x{32DA}\x{32DB}\x{32DC}\x{32DD}\x{32DE}\x{32DF}\x{32E0}\x{32E1}\x{32E2}\x{32E3}\x{32E4}\x{32E5}\x{32E6}\x{32E7}\x{32E8}\x{32E9}\x{32EA}\x{32EB}\x{32EC}\x{32ED}\x{32EE}\x{32EF}\x{32F0}\x{32F1}\x{32F2}\x{32F3}\x{32F4}\x{32F5}\x{32F6}\x{32F7}\x{32F8}\x{32F9}\x{32FA}\x{32FB}\x{32FC}\x{32FD}\x{32FE}ꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꚘꚚꚜꚝꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝰꝹꝻꝽꝾꞀꞂꞄꞆꞋꞍꞐꞒꞖꞘꞚꞜꞞꞠꞢꞤꞦꞨꞪꞫꞬꞭꞮꞰꞱꞲꞳꞴꞶꟸꟹꭜꭝꭞꭟꭰꭱꭲꭳꭴꭵꭶꭷꭸꭹꭺꭻꭼꭽꭾꭿꮀꮁꮂꮃꮄꮅꮆꮇꮈꮉꮊꮋꮌꮍꮎꮏꮐꮑꮒꮓꮔꮕꮖꮗꮘꮙꮚꮛꮜꮝꮞꮟꮠꮡꮢꮣꮤꮥꮦꮧꮨꮩꮪꮫꮬꮭꮮꮯꮰꮱꮲꮳꮴꮵꮶꮷꮸꮹꮺꮻꮼꮽꮾꮿ豈更車賈滑串句龜龜契金喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧老蘆虜路露魯鷺碌祿綠菉錄鹿論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏樂諾丹寧怒率異北磻便復不泌數索參塞省葉說殺辰沈拾若掠略亮兩凉梁糧良諒量勵呂女廬旅濾礪閭驪麗黎力曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈裂說廉念捻殮簾獵令囹寧嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料樂燎療蓼遼龍暈阮劉杻柳流溜琉留硫紐類六戮陸倫崙淪輪律慄栗率隆利吏履易李梨泥理痢罹裏裡里離匿溺吝燐璘藺隣鱗麟林淋臨立笠粒狀炙識什茶刺切度拓糖宅洞暴輻行降見廓兀嗀塚晴凞猪益礼神祥福靖精羽蘒諸逸都飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層屮悔慨憎懲敏既暑梅海渚漢煮爫琢碑社祉祈祐祖祝禍禎穀突節練縉繁署者臭艹艹著褐視謁謹賓贈辶逸難響頻恵𤋮舘並况全侀充冀勇勺喝啕喙嗢塚墳奄奔婢嬨廒廙彩徭惘慎愈憎慠懲戴揄搜摒敖晴朗望杖歹殺流滛滋漢瀞煮瞧爵犯猪瑱甆画瘝瘟益盛直睊着磌窱節类絛練缾者荒華蝹襁覆視調諸請謁諾諭謹變贈輸遲醙鉶陼難靖韛響頋頻鬒龜𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎ﬠﬡﬢﬣﬤﬥﬦﬧﬨﭐﭑﭒﭓﭔﭕﭖﭗﭘﭙﭚﭛﭜﭝﭞﭟﭠﭡﭢﭣﭤﭥﭦﭧﭨﭩﭪﭫﭬﭭﭮﭯﭰﭱﭲﭳﭴﭵﭶﭷﭸﭹﭺﭻﭼﭽﭾﭿﮀﮁﮂﮃﮄﮅﮆﮇﮈﮉﮊﮋﮌﮍﮎﮏﮐﮑﮒﮓﮔﮕﮖﮗﮘﮙﮚﮛﮜﮝﮞﮟﮠﮡﮢﮣﮤﮥﮦﮧﮨﮩﮪﮫﮬﮭﮮﮯﮰﮱﯓﯔﯕﯖﯗﯘﯙﯚﯛﯜﯞﯟﯠﯡﯢﯣﯤﯥﯦﯧﯨﯩﯼﯽﯾﯿ\x{FE11}\x{FE17}\x{FE18}\x{FE31}\x{FE32}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE51}\x{FE58}\x{FE5D}\x{FE5E}\x{FE63}ﺀﺁﺂﺃﺄﺅﺆﺇﺈﺉﺊﺋﺌﺍﺎﺏﺐﺑﺒﺓﺔﺕﺖﺗﺘﺙﺚﺛﺜﺝﺞﺟﺠﺡﺢﺣﺤﺥﺦﺧﺨﺩﺪﺫﺬﺭﺮﺯﺰﺱﺲﺳﺴﺵﺶﺷﺸﺹﺺﺻﺼﺽﺾﺿﻀﻁﻂﻃﻄﻅﻆﻇﻈﻉﻊﻋﻌﻍﻎﻏﻐﻑﻒﻓﻔﻕﻖﻗﻘﻙﻚﻛﻜﻝﻞﻟﻠﻡﻢﻣﻤﻥﻦﻧﻨﻩﻪﻫﻬﻭﻮﻯﻰﻱﻲﻳﻴ\x{FF0D}\x{FF0E}0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}\x{FF65}ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ\x{FFE0}\x{FFE1}\x{FFE2}\x{FFE4}\x{FFE5}\x{FFE6}\x{FFE8}\x{FFE9}\x{FFEA}\x{FFEB}\x{FFEC}\x{FFED}\x{FFEE}𐐀𐐁𐐂𐐃𐐄𐐅𐐆𐐇𐐈𐐉𐐊𐐋𐐌𐐍𐐎𐐏𐐐𐐑𐐒𐐓𐐔𐐕𐐖𐐗𐐘𐐙𐐚𐐛𐐜𐐝𐐞𐐟𐐠𐐡𐐢𐐣𐐤𐐥𐐦𐐧𐒰𐒱𐒲𐒳𐒴𐒵𐒶𐒷𐒸𐒹𐒺𐒻𐒼𐒽𐒾𐒿𐓀𐓁𐓂𐓃𐓄𐓅𐓆𐓇𐓈𐓉𐓊𐓋𐓌𐓍𐓎𐓏𐓐𐓑𐓒𐓓𐲀𐲁𐲂𐲃𐲄𐲅𐲆𐲇𐲈𐲉𐲊𐲋𐲌𐲍𐲎𐲏𐲐𐲑𐲒𐲓𐲔𐲕𐲖𐲗𐲘𐲙𐲚𐲛𐲜𐲝𐲞𐲟𐲠𐲡𐲢𐲣𐲤𐲥𐲦𐲧𐲨𐲩𐲪𐲫𐲬𐲭𐲮𐲯𐲰𐲱𐲲𑢠𑢡𑢢𑢣𑢤𑢥𑢦𑢧𑢨𑢩𑢪𑢫𑢬𑢭𑢮𑢯𑢰𑢱𑢲𑢳𑢴𑢵𑢶𑢷𑢸𑢹𑢺𑢻𑢼𑢽𑢾𑢿𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙𝐚𝐛𝐜𝐝𝐞𝐟𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍𝑎𝑏𝑐𝑑𝑒𝑓𝑔𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀𝒁𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛𝒜𝒞𝒟𝒢𝒥𝒦𝒩𝒪𝒫𝒬𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵𝒶𝒷𝒸𝒹𝒻𝒽𝒾𝒿𝓀𝓁𝓂𝓃𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃𝔄𝔅𝔇𝔈𝔉𝔊𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔𝔖𝔗𝔘𝔙𝔚𝔛𝔜𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷𝔸𝔹𝔻𝔼𝔽𝔾𝕀𝕁𝕂𝕃𝕄𝕆𝕊𝕋𝕌𝕍𝕎𝕏𝕐𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣𝚤𝚥𝚨𝚩𝚪𝚫𝚬𝚭𝚮𝚯𝚰𝚱𝚲𝚳𝚴𝚵𝚶𝚷𝚸𝚹𝚺𝚻𝚼𝚽𝚾𝚿𝛀\x{1D6C1}𝛂𝛃𝛄𝛅𝛆𝛇𝛈𝛉𝛊𝛋𝛌𝛍𝛎𝛏𝛐𝛑𝛒𝛓𝛔𝛕𝛖𝛗𝛘𝛙𝛚\x{1D6DB}𝛜𝛝𝛞𝛟𝛠𝛡𝛢𝛣𝛤𝛥𝛦𝛧𝛨𝛩𝛪𝛫𝛬𝛭𝛮𝛯𝛰𝛱𝛲𝛳𝛴𝛵𝛶𝛷𝛸𝛹𝛺\x{1D6FB}𝛼𝛽𝛾𝛿𝜀𝜁𝜂𝜃𝜄𝜅𝜆𝜇𝜈𝜉𝜊𝜋𝜌𝜍𝜎𝜏𝜐𝜑𝜒𝜓𝜔\x{1D715}𝜖𝜗𝜘𝜙𝜚𝜛𝜜𝜝𝜞𝜟𝜠𝜡𝜢𝜣𝜤𝜥𝜦𝜧𝜨𝜩𝜪𝜫𝜬𝜭𝜮𝜯𝜰𝜱𝜲𝜳𝜴\x{1D735}𝜶𝜷𝜸𝜹𝜺𝜻𝜼𝜽𝜾𝜿𝝀𝝁𝝂𝝃𝝄𝝅𝝆𝝇𝝈𝝉𝝊𝝋𝝌𝝍𝝎\x{1D74F}𝝐𝝑𝝒𝝓𝝔𝝕𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮\x{1D76F}𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹𝝺𝝻𝝼𝝽𝝾𝝿𝞀𝞁𝞂𝞃𝞄𝞅𝞆𝞇𝞈\x{1D789}𝞊𝞋𝞌𝞍𝞎𝞏𝞐𝞑𝞒𝞓𝞔𝞕𝞖𝞗𝞘𝞙𝞚𝞛𝞜𝞝𝞞𝞟𝞠𝞡𝞢𝞣𝞤𝞥𝞦𝞧𝞨\x{1D7A9}𝞪𝞫𝞬𝞭𝞮𝞯𝞰𝞱𝞲𝞳𝞴𝞵𝞶𝞷𝞸𝞹𝞺𝞻𝞼𝞽𝞾𝞿𝟀𝟁𝟂\x{1D7C3}𝟄𝟅𝟆𝟇𝟈𝟉𝟊𝟋𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿𞤀𞤁𞤂𞤃𞤄𞤅𞤆𞤇𞤈𞤉𞤊𞤋𞤌𞤍𞤎𞤏𞤐𞤑𞤒𞤓𞤔𞤕𞤖𞤗𞤘𞤙𞤚𞤛𞤜𞤝𞤞𞤟𞤠𞤡𞸀𞸁𞸂𞸃𞸅𞸆𞸇𞸈𞸉𞸊𞸋𞸌𞸍𞸎𞸏𞸐𞸑𞸒𞸓𞸔𞸕𞸖𞸗𞸘𞸙𞸚𞸛𞸜𞸝𞸞𞸟𞸡𞸢𞸤𞸧𞸩𞸪𞸫𞸬𞸭𞸮𞸯𞸰𞸱𞸲𞸴𞸵𞸶𞸷𞸹𞸻𞹂𞹇𞹉𞹋𞹍𞹎𞹏𞹑𞹒𞹔𞹗𞹙𞹛𞹝𞹟𞹡𞹢𞹤𞹧𞹨𞹩𞹪𞹬𞹭𞹮𞹯𞹰𞹱𞹲𞹴𞹵𞹶𞹷𞹹𞹺𞹻𞹼𞹾𞺀𞺁𞺂𞺃𞺄𞺅𞺆𞺇𞺈𞺉𞺋𞺌𞺍𞺎𞺏𞺐𞺑𞺒𞺓𞺔𞺕𞺖𞺗𞺘𞺙𞺚𞺛𞺡𞺢𞺣𞺥𞺦𞺧𞺨𞺩𞺫𞺬𞺭𞺮𞺯𞺰𞺱𞺲𞺳𞺴𞺵𞺶𞺷𞺸𞺹𞺺𞺻\x{1F12B}\x{1F12C}🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅🅆🅇🅈🅉\x{1F202}\x{1F210}\x{1F211}\x{1F212}\x{1F213}\x{1F214}\x{1F215}\x{1F216}\x{1F217}\x{1F218}\x{1F219}\x{1F21A}\x{1F21B}\x{1F21C}\x{1F21D}\x{1F21E}\x{1F21F}\x{1F220}\x{1F221}\x{1F222}\x{1F223}\x{1F224}\x{1F225}\x{1F226}\x{1F227}\x{1F228}\x{1F229}\x{1F22A}\x{1F22B}\x{1F22C}\x{1F22D}\x{1F22E}\x{1F22F}\x{1F230}\x{1F231}\x{1F232}\x{1F233}\x{1F234}\x{1F235}\x{1F236}\x{1F237}\x{1F238}\x{1F239}\x{1F23A}\x{1F23B}\x{1F250}\x{1F251}丽丸乁𠄢你侮侻倂偺備僧像㒞𠘺免兔兤具𠔜㒹內再𠕋冗冤仌冬况𩇟凵刃㓟刻剆割剷㔕勇勉勤勺包匆北卉卑博即卽卿卿卿𠨬灰及叟𠭣叫叱吆咞吸呈周咢哶唐啓啣善善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬𡓤売壷夆多夢奢𡚨𡛪姬娛娧姘婦㛮嬈嬾嬾𡧈寃寘寧寳𡬘寿将尢㞁屠屮峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶廊𪎒廾𢌱𢌱舁弢弢㣇𣊸𦇚形彫㣣徚忍志忹悁㤺㤜悔𢛔惇慈慌慎慌慺憎憲憤憯懞懲懶成戛扝抱拔捐𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敏敬𣀊旣書晉㬙暑㬈㫤冒冕最暜肭䏙朗望朡杞杓𣏃㭉柺枅桒梅𣑭梎栟椔㮝楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殺殻𣪍𡴋𣫺汎𣲼沿泍汧洖派海流浩浸涅𣴞洴港湮㴳滋滇𣻑淹潮𣽞𣾎濆瀹瀞瀛㶖灊災灷炭𠔥煅𤉣熜爨爵牐𤘈犀犕𤜵𤠔獺王㺬玥㺸㺸瑇瑜瑱璅瓊㼛甤𤰶甾𤲒異𢆟瘐𤾡𤾸𥁄㿼䀈直𥃳𥃲𥄙𥄳眞真真睊䀹瞋䁆䂖𥐝硎碌磌䃣𥘦祖𥚚𥛅福秫䄯穀穊穏𥥼𥪧𥪧䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾羕翺者𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舁舄辞䑫芑芋芝劳花芳芽苦𦬼若茝荣莭茣莽菧著荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠諭變豕𧲨貫賁贛起𧼯𠠄跋趼跰𠣞軔輸𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚䩮䩶韠𩐊䪲𩒖頋頋頩𩖶飢䬳餩馧駂駾䯎𩬰鬒鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑麻䵖黹黾鼅鼏鼖鼻𪘀/abcdefghijklmnopqrstuvwxyza23μ1oàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįĵķĺļľłńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷÿźżžsɓƃƅɔƈɖɗƌǝəɛƒɠɣɩɨƙɯɲɵơƣƥʀƨʃƭʈưʊʋƴƶʒƹƽǎǐǒǔǖǘǚǜǟǡǣǥǧǩǫǭǯǵƕƿǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟƞȣȥȧȩȫȭȯȱȳⱥȼƚⱦɂƀʉʌɇɉɋɍɏhɦjrɹɻʁwyɣlsxʕ\x{0300}\x{0301}\x{0313}ιͱͳʹͷϳά\x{00B7}έήίόύώαβγδεζηθικλμνξοπρστυφχψωϊϋϗβθυύϋφπϙϛϝϟϡϣϥϧϩϫϭϯκρσθεϸσϻͻͼͽѐёђѓєѕіїјљњћќѝўџабвгдежзийклмнопрстуфхцчшщъыьэюяѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧԩԫԭԯաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆ\x{0F0B}ⴧⴭნᏰᏱᏲᏳᏴᏵвдосттъѣꙋaæbdeǝghijklmnoȣprtuwaɐɑᴂbdeəɛɜgkmŋoɔᴖᴗptuᴝɯvᴥβγδφχiruvβγρφχнɒcɕðɜfɟɡɥɨɩɪᵻʝɭᶅʟɱɰɲɳɴɵɸʂʃƫʉʊᴜʋʌzʐʑʒθḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕṡạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿἀἁἂἃἄἅἆἇἐἑἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀὁὂὃὄὅὑὓὕὗὠὡὢὣὤὥὦὧάέήίόύώᾰᾱὰάιὲέὴήΐῐῑὶίΰῠῡὺύῥὸόὼώ\x{2010}0i456789\x{2212}n0123456789\x{2212}aeoxəhklmnpstcɛghhhhħiillnpqrrrzωzkåbceefmoאבגדiπγγπ\x{2211}ddeijivxlcdmivxlcdm\x{3008}\x{3009}123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0ⰰⰱⰲⰳⰴⰵⰶⰷⰸⰹⰺⰻⰼⰽⰾⰿⱀⱁⱂⱃⱄⱅⱆⱇⱈⱉⱊⱋⱌⱍⱎⱏⱐⱑⱒⱓⱔⱕⱖⱗⱘⱙⱚⱛⱜⱝⱞⱡɫᵽɽⱨⱪⱬɑɱɐɒⱳⱶjvȿɀⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳬⳮⳳⵡ母龟一丨丶丿乙亅二亠人儿入八冂冖冫几凵刀力勹匕匚匸十卜卩厂厶又口囗土士夂夊夕大女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戶手支攴文斗斤方无日曰月木欠止歹殳毋比毛氏气水火爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣自至臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里金長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黑黹黽鼎鼓鼠鼻齊齒龍龜龠\.\x{3012}十卄卅ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜᇝᇟᄝᄞᄠᄢᄣᄧᄩᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᇱᇲᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ一二三四上中下甲乙丙丁天地人問幼文箏ᄀᄂᄃᄅᄆᄇᄉᄋᄌᄎᄏᄐᄑᄒ가나다라마바사아자차카타파하우一二三四五六七八九十月火水木金土日株有社名特財祝労秘男女適優印注項休写正上中下左右医宗学監企資協夜アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲꙁꙃꙅꙇꙉꙋꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꚙꚛъьꜣꜥꜧꜩꜫꜭꜯꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝯꝺꝼᵹꝿꞁꞃꞅꞇꞌɥꞑꞓꞗꞙꞛꞝꞟꞡꞣꞥꞧꞩɦɜɡɬɪʞʇʝꭓꞵꞷħœꜧꬷɫꭒᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯ豈更車賈滑串句龜龜契金喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧老蘆虜路露魯鷺碌祿綠菉錄鹿論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏樂諾丹寧怒率異北磻便復不泌數索參塞省葉說殺辰沈拾若掠略亮兩凉梁糧良諒量勵呂女廬旅濾礪閭驪麗黎力曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈裂說廉念捻殮簾獵令囹寧嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料樂燎療蓼遼龍暈阮劉杻柳流溜琉留硫紐類六戮陸倫崙淪輪律慄栗率隆利吏履易李梨泥理痢罹裏裡里離匿溺吝燐璘藺隣鱗麟林淋臨立笠粒狀炙識什茶刺切度拓糖宅洞暴輻行降見廓兀嗀塚晴凞猪益礼神祥福靖精羽蘒諸逸都飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層屮悔慨憎懲敏既暑梅海渚漢煮爫琢碑社祉祈祐祖祝禍禎穀突節練縉繁署者臭艹艹著褐視謁謹賓贈辶逸難響頻恵𤋮舘並况全侀充冀勇勺喝啕喙嗢塚墳奄奔婢嬨廒廙彩徭惘慎愈憎慠懲戴揄搜摒敖晴朗望杖歹殺流滛滋漢瀞煮瞧爵犯猪瑱甆画瘝瘟益盛直睊着磌窱節类絛練缾者荒華蝹襁覆視調諸請謁諾諭謹變贈輸遲醙鉶陼難靖韛響頋頻鬒龜𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎עאדהכלםרתٱٱٻٻٻٻپپپپڀڀڀڀٺٺٺٺٿٿٿٿٹٹٹٹڤڤڤڤڦڦڦڦڄڄڄڄڃڃڃڃچچچچڇڇڇڇڍڍڌڌڎڎڈڈژژڑڑککککگگگگڳڳڳڳڱڱڱڱںںڻڻڻڻۀۀہہہہھھھھےےۓۓڭڭڭڭۇۇۆۆۈۈۋۋۅۅۉۉېېېېىىیییی\x{3001}\x{3016}\x{3017}\x{2014}\x{2013}\x{3014}\x{3015}\x{3010}\x{3011}\x{300A}\x{300B}\x{3008}\x{3009}\x{300C}\x{300D}\x{300E}\x{300F}\x{3001}\x{2014}\x{3014}\x{3015}\-ءآآأأؤؤإإئئئئااببببةةتتتتثثثثججججححححخخخخددذذررززسسسسششششصصصصضضضضططططظظظظععععغغغغففففققققككككللللممممننننههههووىىيييي\-\.0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\x{2985}\x{2986}\.\x{300C}\x{300D}\x{3001}\x{30FB}ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン\x{3099}\x{309A}ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ\x{00A2}\x{00A3}\x{00AC}\x{00A6}\x{00A5}\x{20A9}\x{2502}\x{2190}\x{2191}\x{2192}\x{2193}\x{25A0}\x{25CB}𐐨𐐩𐐪𐐫𐐬𐐭𐐮𐐯𐐰𐐱𐐲𐐳𐐴𐐵𐐶𐐷𐐸𐐹𐐺𐐻𐐼𐐽𐐾𐐿𐑀𐑁𐑂𐑃𐑄𐑅𐑆𐑇𐑈𐑉𐑊𐑋𐑌𐑍𐑎𐑏𐓘𐓙𐓚𐓛𐓜𐓝𐓞𐓟𐓠𐓡𐓢𐓣𐓤𐓥𐓦𐓧𐓨𐓩𐓪𐓫𐓬𐓭𐓮𐓯𐓰𐓱𐓲𐓳𐓴𐓵𐓶𐓷𐓸𐓹𐓺𐓻𐳀𐳁𐳂𐳃𐳄𐳅𐳆𐳇𐳈𐳉𐳊𐳋𐳌𐳍𐳎𐳏𐳐𐳑𐳒𐳓𐳔𐳕𐳖𐳗𐳘𐳙𐳚𐳛𐳜𐳝𐳞𐳟𐳠𐳡𐳢𐳣𐳤𐳥𐳦𐳧𐳨𐳩𐳪𐳫𐳬𐳭𐳮𐳯𐳰𐳱𐳲𑣀𑣁𑣂𑣃𑣄𑣅𑣆𑣇𑣈𑣉𑣊𑣋𑣌𑣍𑣎𑣏𑣐𑣑𑣒𑣓𑣔𑣕𑣖𑣗𑣘𑣙𑣚𑣛𑣜𑣝𑣞𑣟abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefgijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzacdgjknopqstuvwxyzabcdfhijklmnpqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabdefgjklmnopqstuvwxyabcdefghijklmnopqrstuvwxyzabdefgijklmostuvwxyabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzıȷαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπαβγδεζηθικλμνξοπρθστυφχψω\x{2207}αβγδεζηθικλμνξοπρσστυφχψω\x{2202}εθκφρπϝϝ01234567890123456789012345678901234567890123456789𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿𞥀𞥁𞥂𞥃ابجدوزحطيكلمنسعفصقرشتثخذضظغٮںڡٯبجهحيكلمنسعفصقشتثخضغجحيلنسعصقشخضغںٯبجهحطيكمنسعفصقشتثخضظغٮڡابجدهوزحطيلمنسعفصقرشتثخذضظغبجدوزحطيلمنسعفصقرشتثخذضظغcrabcdefghijklmnopqrstuvwxyzサ手字双デ二多解天交映無料前後再新初終生販声吹演投捕一三遊左中右指走打禁空合満有月申割営配得可丽丸乁𠄢你侮侻倂偺備僧像㒞𠘺免兔兤具𠔜㒹內再𠕋冗冤仌冬况𩇟凵刃㓟刻剆割剷㔕勇勉勤勺包匆北卉卑博即卽卿卿卿𠨬灰及叟𠭣叫叱吆咞吸呈周咢哶唐啓啣善善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬𡓤売壷夆多夢奢𡚨𡛪姬娛娧姘婦㛮嬈嬾嬾𡧈寃寘寧寳𡬘寿将尢㞁屠屮峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶廊𪎒廾𢌱𢌱舁弢弢㣇𣊸𦇚形彫㣣徚忍志忹悁㤺㤜悔𢛔惇慈慌慎慌慺憎憲憤憯懞懲懶成戛扝抱拔捐𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敏敬𣀊旣書晉㬙暑㬈㫤冒冕最暜肭䏙朗望朡杞杓𣏃㭉柺枅桒梅𣑭梎栟椔㮝楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殺殻𣪍𡴋𣫺汎𣲼沿泍汧洖派海流浩浸涅𣴞洴港湮㴳滋滇𣻑淹潮𣽞𣾎濆瀹瀞瀛㶖灊災灷炭𠔥煅𤉣熜爨爵牐𤘈犀犕𤜵𤠔獺王㺬玥㺸㺸瑇瑜瑱璅瓊㼛甤𤰶甾𤲒異𢆟瘐𤾡𤾸𥁄㿼䀈直𥃳𥃲𥄙𥄳眞真真睊䀹瞋䁆䂖𥐝硎碌磌䃣𥘦祖𥚚𥛅福秫䄯穀穊穏𥥼𥪧𥪧䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾羕翺者𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舁舄辞䑫芑芋芝劳花芳芽苦𦬼若茝荣莭茣莽菧著荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠諭變豕𧲨貫賁贛起𧼯𠠄跋趼跰𠣞軔輸𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚䩮䩶韠𩐊䪲𩒖頋頋頩𩖶飢䬳餩馧駂駾䯎𩬰鬒鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑麻䵖黹黾鼅鼏鼖鼻𪘀/; diff --git a/t/uts46_to_ascii-trans.t b/t/uts46_to_ascii-trans.t index dfd20eb..d76da1c 100644 --- a/t/uts46_to_ascii-trans.t +++ b/t/uts46_to_ascii-trans.t @@ -918,10 +918,10 @@ is(eval{uts46_to_ascii("xn--osd925cvyn.xn--73g3065g", %p)}, undef, "to_ascii\(\' is(eval{uts46_to_ascii("xn--pnd26a55x.xn--f3g7465g", %p)}, undef, "to_ascii\(\'xn\-\-pnd26a55x\.xn\-\-f3g7465g\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1157\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{1BF3}ⴑ\x{115F}.𑄴ⅎ", %p)}, undef, "to_ascii\(\'\\u1BF3ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1158\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{1BF3}Ⴑ\x{115F}.𑄴ⅎ", %p)}, undef, "to_ascii\(\'\\u1BF3Ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1159\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--187g.xn--ukjy205b8rscdeb", %p)}, undef, "to_ascii\(\'xn\-\-187g\.xn\-\-ukjy205b8rscdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1164\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--187g.xn--bnd4785f8r8bdeb", %p)}, undef, "to_ascii\(\'xn\-\-187g\.xn\-\-bnd4785f8r8bdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1165\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𐫀。⳻󠙾󠄷\x{3164}", %p)}, undef, "to_ascii\(\'𐫀。⳻\?\󠄷\\u3164\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1166\]") or ($@ and diag($@)); @@ -1088,12 +1088,12 @@ is(eval{uts46_to_ascii("xn--tlvq3513e.xn--hib9228d", %p)}, undef, "to_ascii\(\'x is(eval{uts46_to_ascii("󠄚≯ꡢ。\x{0891}\x{1DFF}", %p)}, undef, "to_ascii\(\'\󠄚\≯ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1381\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("󠄚>\x{0338}ꡢ。\x{0891}\x{1DFF}", %p)}, undef, "to_ascii\(\'\󠄚\>\\u0338ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1382\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--hdh7783c.xn--9xb680i", %p)}, undef, "to_ascii\(\'xn\-\-hdh7783c\.xn\-\-9xb680i\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1383\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_ascii\(\'\\uFDC3\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_ascii\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_ascii\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_ascii\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_ascii\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_ascii\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fhbea662czx68a2tju.xn--fljz2846h", %p)}, undef, "to_ascii\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-fljz2846h\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1387\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fhbea662czx68a2tju.xn--vnd55511o", %p)}, undef, "to_ascii\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-vnd55511o\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1388\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_ascii\(\'\\uFDC3\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_ascii\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𞀨。\x{1B44}򡛨𞎇", %p)}, undef, "to_ascii\(\'𞀨。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1390\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𞀨。\x{1B44}򡛨𞎇", %p)}, undef, "to_ascii\(\'𞀨\。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1391\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--mi4h.xn--1uf6843smg20c", %p)}, undef, "to_ascii\(\'xn\-\-mi4h\.xn\-\-1uf6843smg20c\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1392\]") or ($@ and diag($@)); @@ -1218,8 +1218,8 @@ is(eval{uts46_to_ascii("xn--f-tgn9761i.xn--7656e.xn--fqb4175k", %p)}, undef, "to is(eval{uts46_to_ascii("\x{200D}f𑓂。󠺨︒\x{077E}𐹢", %p)}, undef, "to_ascii\(\'\\u200Df𑓂\。\?︒\\u077E𐹢\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1538\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--f-kq9i.xn--fqb1637j8hky9452a", %p)}, undef, "to_ascii\(\'xn\-\-f\-kq9i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1540\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--f-tgn9761i.xn--fqb1637j8hky9452a", %p)}, undef, "to_ascii\(\'xn\-\-f\-tgn9761i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ C2\ V6\ \[data\/IdnaTest\.txt\:1541\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{0845}🄇𐼗︒。𐹻𑜫", %p)}, undef, "to_ascii\(\'\\u0845🄇\?︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{0845}6,𐼗。。𐹻𑜫", %p)}, undef, "to_ascii\(\'\\u08456\,\?\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{0845}🄇𐼗︒。𐹻𑜫", %p)}, undef, "to_ascii\(\'\\u0845🄇𐼗︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{0845}6,𐼗。。𐹻𑜫", %p)}, undef, "to_ascii\(\'\\u08456\,𐼗\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--6,-r4e4420y..xn--zo0di2m", %p)}, undef, "to_ascii\(\'xn\-\-6\,\-r4e4420y\.\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1544\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--3vb4696jpxkjh7s.xn--zo0di2m", %p)}, undef, "to_ascii\(\'xn\-\-3vb4696jpxkjh7s\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ B3\ V6\ \[data\/IdnaTest\.txt\:1545\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𐹈.\x{1DC0}𑈱𐦭", %p)}, undef, "to_ascii\(\'\?\.\\u1DC0𑈱𐦭\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1546\]") or ($@ and diag($@)); @@ -1312,8 +1312,8 @@ is(eval{uts46_to_ascii("𵋅。Ss𬵩\x{200D}", %p)}, undef, "to_ascii\(\'\?\。 is(eval{uts46_to_ascii("xn--ey1p.xn--ss-eq36b", %p)}, undef, "to_ascii\(\'xn\-\-ey1p\.xn\-\-ss\-eq36b\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:1663\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--ey1p.xn--ss-n1tx0508a", %p)}, undef, "to_ascii\(\'xn\-\-ey1p\.xn\-\-ss\-n1tx0508a\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1664\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--ey1p.xn--zca870nz438b", %p)}, undef, "to_ascii\(\'xn\-\-ey1p\.xn\-\-zca870nz438b\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1665\]") or ($@ and diag($@)); -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)}, undef, "to_ascii\(\'\\u200C\?\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1666\]") or ($@ and diag($@)); } -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)}, undef, "to_ascii\(\'\\u200C\?\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1668\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)}, undef, "to_ascii\(\'\\u200C𭉝\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1666\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)}, undef, "to_ascii\(\'\\u200C𭉝\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1668\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--634m.xn--lsa46nuub", %p)}, undef, "to_ascii\(\'xn\-\-634m\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1670\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--0ugy003y.xn--lsa46nuub", %p)}, undef, "to_ascii\(\'xn\-\-0ugy003y\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1671\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𞼌\x{200C}𑈶。𐹡", %p)}, undef, "to_ascii\(\'\?\\u200C𑈶\。𐹡\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1672\]") or ($@ and diag($@)); @@ -1585,20 +1585,20 @@ is(eval{uts46_to_ascii("𐶭⾆。\x{200C}𑚶򟱃𞰘", %p)}, undef, "to_ascii\ is(eval{uts46_to_ascii("𐶭舌。\x{200C}𑚶򟱃𞰘", %p)}, undef, "to_ascii\(\'\?舌\。\\u200C𑚶\?\?\'\)\ throws\ error\ B2\ B3\ B5\ B6\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1996\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--tc1ao37z.xn--6e2dw557azds2d", %p)}, undef, "to_ascii\(\'xn\-\-tc1ao37z\.xn\-\-6e2dw557azds2d\'\)\ throws\ error\ B2\ B3\ B5\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:1998\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--tc1ao37z.xn--0ugx728gi1nfwqz2e", %p)}, undef, "to_ascii\(\'xn\-\-tc1ao37z\.xn\-\-0ugx728gi1nfwqz2e\'\)\ throws\ error\ B1\ B2\ B3\ C1\ V6\ \[data\/IdnaTest\.txt\:1999\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2000\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.1ς\?ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2002\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}ⴠ-.1ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.1ς\?ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2004\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.1Σ\?Σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2006\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}ⴠ-.1σ𞴺σ", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.1σ\?σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2008\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2000\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2002\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}ⴠ-.1ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2004\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.1Σ𞴺Σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2006\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}ⴠ-.1σ𞴺σ", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.1σ𞴺σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2008\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----2ws.xn--1-0mba52321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-2ws\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2010\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----rgn530d.xn--1-0mba52321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2011\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----z1g.xn--1-0mba52321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-z1g\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2012\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----z1g168i.xn--1-0mba52321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2013\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----rgn530d.xn--1-ymba92321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2014\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----z1g168i.xn--1-ymba92321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2015\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2016\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.𝟷Σ\?Σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2018\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.𝟷σ\?σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2020\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2016\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.𝟷Σ𞴺Σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2018\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.𝟷σ𞴺σ\'\)\ throws\ error\ B1\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2020\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𑲘󠄒𓑡。𝟪Ⴜ", %p)}, undef, "to_ascii\(\'𑲘\󠄒\?。𝟪Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2022\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𑲘󠄒𓑡。8Ⴜ", %p)}, undef, "to_ascii\(\'𑲘\󠄒\?\。8Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2023\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𑲘󠄒𓑡。8ⴜ", %p)}, undef, "to_ascii\(\'𑲘\󠄒\?\。8ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2024\]") or ($@ and diag($@)); @@ -1952,10 +1952,10 @@ is(eval{uts46_to_ascii("𐹰.\x{0600}", %p)}, undef, "to_ascii\(\'𐹰\.\\u0600\ is(eval{uts46_to_ascii("xn--oo0d.xn--ifb", %p)}, undef, "to_ascii\(\'xn\-\-oo0d\.xn\-\-ifb\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2464\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("-\x{08A8}.𱠖", %p)}, undef, "to_ascii\(\'\-\\u08A8\.\?\'\)\ throws\ error\ B1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2465\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----mod.xn--5o9n", %p)}, undef, "to_ascii\(\'xn\-\-\-\-mod\.xn\-\-5o9n\'\)\ throws\ error\ B1\ V3\ V6\ \[data\/IdnaTest\.txt\:2466\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("≯𞱸󠇀。誆⒈", %p)}, undef, "to_ascii\(\'\≯\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆⒈", %p)}, undef, "to_ascii\(\'\>\\u0338\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("≯𞱸󠇀。誆1.", %p)}, undef, "to_ascii\(\'\≯\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆1.", %p)}, undef, "to_ascii\(\'\>\\u0338\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("≯𞱸󠇀。誆⒈", %p)}, undef, "to_ascii\(\'\≯𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆⒈", %p)}, undef, "to_ascii\(\'\>\\u0338𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("≯𞱸󠇀。誆1.", %p)}, undef, "to_ascii\(\'\≯𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆1.", %p)}, undef, "to_ascii\(\'\>\\u0338𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--hdh7151p.xn--1-dy1d.", %p)}, undef, "to_ascii\(\'xn\-\-hdh7151p\.xn\-\-1\-dy1d\.\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2471\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--hdh7151p.xn--tsh1248a", %p)}, undef, "to_ascii\(\'xn\-\-hdh7151p\.xn\-\-tsh1248a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2472\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{0616}𞥙䐊\x{0650}.︒\x{0645}↺\x{069C}", %p)}, undef, "to_ascii\(\'\\u0616𞥙䐊\\u0650.︒\\u0645\↺\\u069C\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2473\]") or ($@ and diag($@)); @@ -2038,8 +2038,8 @@ is(eval{uts46_to_ascii("xn--1t56e.xn--2nd141ghl2a", %p)}, undef, "to_ascii\(\'xn is(eval{uts46_to_ascii("xn--1t56e.xn--2nd159e9vb743e", %p)}, undef, "to_ascii\(\'xn\-\-1t56e\.xn\-\-2nd159e9vb743e\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:2567\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("󠳛.\x{200D}䤫=\x{0338}ⴞ", %p)}, undef, "to_ascii\(\'\?.\\u200D䤫\=\\u0338ⴞ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2568\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("󠳛.\x{200D}䤫≠ⴞ", %p)}, undef, "to_ascii\(\'\?.\\u200D䤫\≠ⴞ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2570\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)}, undef, "to_ascii\(\'\?𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)}, undef, "to_ascii\(\'\?𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)}, undef, "to_ascii\(\'𐽘𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)}, undef, "to_ascii\(\'𐽘𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--bv0d02c.xn--bo0dq650b", %p)}, undef, "to_ascii\(\'xn\-\-bv0d02c\.xn\-\-bo0dq650b\'\)\ throws\ error\ B1\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:2574\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("⒊⒈𑁄。9", %p)}, undef, "to_ascii\(\'⒊⒈𑁄\。9\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2575\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v6.0 (perl v5.13.7) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v6.0; is(eval{uts46_to_ascii("3.1.𑁄。9", %p)}, undef, "to_ascii\(\'3\.1\.𑁄\。9\'\)\ throws\ error\ V5\ \[data\/IdnaTest\.txt\:2576\]") or ($@ and diag($@)); } @@ -2108,10 +2108,10 @@ SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%v SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("𐋵。\x{0643}\x{0645}", %p)}, undef, "to_ascii\(\'𐋵\。\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2655\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--p97c.xn--fhbe", %p)}, undef, "to_ascii\(\'xn\-\-p97c\.xn\-\-fhbe\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2656\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("𐋵.\x{0643}\x{0645}", %p)}, undef, "to_ascii\(\'𐋵\.\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2657\]") or ($@ and diag($@)); } -is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\≮\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\<\\u0338\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\≮\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\<\\u0338\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\≮\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\<\\u0338\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\≮\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\<\\u0338\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--gdh0880o.xn--4tjx101bsg00ds9pyc", %p)}, undef, "to_ascii\(\'xn\-\-gdh0880o\.xn\-\-4tjx101bsg00ds9pyc\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2662\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)}, undef, "to_ascii\(\'\\u2DF0\\u0358ᢕ.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2663\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)}, undef, "to_ascii\(\'\\u2DF0\\u0358ᢕ\.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2664\]") or ($@ and diag($@)); @@ -2221,8 +2221,8 @@ is(eval{uts46_to_ascii("ᡙ\x{200C}。≯𐋲≠", %p)}, undef, "to_ascii\(\'ᡙ is(eval{uts46_to_ascii("ᡙ\x{200C}。>\x{0338}𐋲=\x{0338}", %p)}, undef, "to_ascii\(\'ᡙ\\u200C\。\>\\u0338𐋲\=\\u0338\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2802\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--p8e.xn--1ch3a7084l", %p)}, undef, "to_ascii\(\'xn\-\-p8e\.xn\-\-1ch3a7084l\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2804\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--p8e650b.xn--1ch3a7084l", %p)}, undef, "to_ascii\(\'xn\-\-p8e650b\.xn\-\-1ch3a7084l\'\)\ throws\ error\ C1\ V6\ \[data\/IdnaTest\.txt\:2805\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)}, undef, "to_ascii\(\'𐹧\?\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)}, undef, "to_ascii\(\'𐹧\?\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)}, undef, "to_ascii\(\'𐹧𞲄\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)}, undef, "to_ascii\(\'𐹧𞲄\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fo0dw409aq58qrn69d.xn--0-bgb.", %p)}, undef, "to_ascii\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-0\-bgb\.\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2808\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fo0dw409aq58qrn69d.xn--sua6883w", %p)}, undef, "to_ascii\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-sua6883w\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2809\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("Ⴄ.\x{200D}\x{0721}󻣋ς", %p)}, undef, "to_ascii\(\'Ⴄ.\\u200D\\u0721\?ς\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2810\]") or ($@ and diag($@)); @@ -3042,8 +3042,8 @@ is(eval{uts46_to_ascii("ቬ򔠼񁗶。𐨬8", %p)}, undef, "to_ascii\(\'ቬ\?\?\ is(eval{uts46_to_ascii("xn--d0d41273c887z.xn--8-ob5i", %p)}, undef, "to_ascii\(\'xn\-\-d0d41273c887z\.xn\-\-8\-ob5i\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:3833\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𐱲。蔫\x{0766}", %p)}, undef, "to_ascii\(\'\?\。蔫\\u0766\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3834\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--389c.xn--qpb7055d", %p)}, undef, "to_ascii\(\'xn\-\-389c\.xn\-\-qpb7055d\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3835\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_ascii\(\'\?₃。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_ascii\(\'\?3\。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_ascii\(\'\?₃。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_ascii\(\'\?3\。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--3-ep59g.xn--jhb5904fcp0h", %p)}, undef, "to_ascii\(\'xn\-\-3\-ep59g\.xn\-\-jhb5904fcp0h\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3838\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("蓸\x{0642}≠.ß", %p)}, undef, "to_ascii\(\'蓸\\u0642\≠\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3839\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("蓸\x{0642}=\x{0338}.ß", %p)}, undef, "to_ascii\(\'蓸\\u0642\=\\u0338\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3841\]") or ($@ and diag($@)); @@ -4114,8 +4114,8 @@ is(eval{uts46_to_ascii("xn--xx5gy2741c.xn--re6hw266j", %p)}, undef, "to_ascii\(\ is(eval{uts46_to_ascii("𛜯󠊛.𞤑񏥾", %p)}, undef, "to_ascii\(\'\?\?.𞤑\?\'\)\ throws\ error\ B2\ B3\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:5175\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("\x{071C}𐫒\x{062E}.𐋲", %p)}, undef, "to_ascii\(\'\\u071C𐫒\\u062E\.𐋲\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5176\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--tgb98b8643d.xn--m97c", %p)}, undef, "to_ascii\(\'xn\-\-tgb98b8643d\.xn\-\-m97c\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5177\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_ascii\(\'\?𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_ascii\(\'\?𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_ascii\(\'𐼑𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_ascii\(\'𐼑𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--2gb08k9w69agm0g.\x{DF56}", %p)}, undef, "to_ascii\(\'xn\-\-2gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5180\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("XN--2GB08K9W69AGM0G.\x{DF56}", %p)}, undef, "to_ascii\(\'XN\-\-2GB08K9W69AGM0G\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5181\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("Xn--2Gb08k9w69agm0g.\x{DF56}", %p)}, undef, "to_ascii\(\'Xn\-\-2Gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5182\]") or ($@ and diag($@)); @@ -4473,7 +4473,7 @@ is(eval{uts46_to_ascii("xn--lgb32f2753cosb.xn--jkb91hlz1a", %p)}, undef, "to_asc is(eval{uts46_to_ascii("xn--lgb32f2753cosb.xn--jkb91hlz1azih", %p)}, undef, "to_ascii\(\'xn\-\-lgb32f2753cosb\.xn\-\-jkb91hlz1azih\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:5642\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{0816}.𐨕𚚕", %p)}, undef, "to_ascii\(\'\\u0816\.𐨕\?\'\)\ throws\ error\ B1\ B2\ B3\ B6\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:5643\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--rub.xn--tr9c248x", %p)}, undef, "to_ascii\(\'xn\-\-rub\.xn\-\-tr9c248x\'\)\ throws\ error\ B1\ B2\ B3\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:5644\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("--。𽊆\x{0767}𐽋𞠬", %p)}, undef, "to_ascii\(\'\-\-\。\?\\u0767\?𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("--。𽊆\x{0767}𐽋𞠬", %p)}, undef, "to_ascii\(\'\-\-\。\?\\u0767𐽋𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("--.xn--rpb6226k77pfh58p", %p)}, undef, "to_ascii\(\'\-\-\.xn\-\-rpb6226k77pfh58p\'\)\ throws\ error\ B1\ B5\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:5646\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("򛭦𐋥𹸐.≯\x{08B0}\x{08A6}󔛣", %p)}, undef, "to_ascii\(\'\?𐋥\?\.\≯\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5647\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("򛭦𐋥𹸐.>\x{0338}\x{08B0}\x{08A6}󔛣", %p)}, undef, "to_ascii\(\'\?𐋥\?\.\>\\u0338\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5648\]") or ($@ and diag($@)); @@ -5565,14 +5565,14 @@ is(eval{uts46_to_ascii("񗑿\x{A806}₄򩞆。𲩧󠒹Σ", %p)}, undef, "to_asci is(eval{uts46_to_ascii("񗑿\x{A806}₄򩞆。𲩧󠒹σ", %p)}, undef, "to_ascii\(\'\?\\uA806₄\?。\?\?σ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:7003\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("󠆀\x{0723}。\x{1DF4}\x{0775}", %p)}, undef, "to_ascii\(\'\󠆀\\u0723\。\\u1DF4\\u0775\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7004\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--tnb.xn--5pb136i", %p)}, undef, "to_ascii\(\'xn\-\-tnb\.xn\-\-5pb136i\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7005\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:7006\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨\。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:7008\]") or ($@ and diag($@)); -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨\。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7010\]") or ($@ and diag($@)); } +is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:7006\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨\。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:7008\]") or ($@ and diag($@)); +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨\。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7010\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--8kjz186s", %p)}, undef, "to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-8kjz186s\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7012\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--1ug742c5714c", %p)}, undef, "to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-1ug742c5714c\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7013\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--pnd93707a", %p)}, undef, "to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd93707a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:7014\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--pnd879eqy33c", %p)}, undef, "to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd879eqy33c\'\)\ throws\ error\ B1\ B6\ C2\ V6\ \[data\/IdnaTest\.txt\:7015\]") or ($@ and diag($@)); -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7016\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7016\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)}, undef, "to_ascii\(\'\\u1714𐭪\?\\u200D。\-𐹴\'\)\ throws\ error\ B1\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7018\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)}, undef, "to_ascii\(\'\\u1714𐭪\?\\u200D\。\-𐹴\'\)\ throws\ error\ B1\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7020\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fze4126jujt0g.xn----c36i", %p)}, undef, "to_ascii\(\'xn\-\-fze4126jujt0g\.xn\-\-\-\-c36i\'\)\ throws\ error\ B1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7022\]") or ($@ and diag($@)); @@ -6070,11 +6070,11 @@ is(eval{uts46_to_ascii("xn--ie8c.xn--2g51a", %p)}, undef, "to_ascii\(\'xn\-\-ie8 is(eval{uts46_to_ascii("xn--ie8c.xn--0ug03366c", %p)}, undef, "to_ascii\(\'xn\-\-ie8c\.xn\-\-0ug03366c\'\)\ throws\ error\ C1\ V5\ V6\ \[data\/IdnaTest\.txt\:7658\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v5.1 (perl v5.10.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v5.1; is(eval{uts46_to_ascii("\x{063D}\x{06E3}.𐨎", %p)}, undef, "to_ascii\(\'\\u063D\\u06E3\.𐨎\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7659\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--8gb64a.xn--mr9c", %p)}, undef, "to_ascii\(\'xn\-\-8gb64a\.xn\-\-mr9c\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7660\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦Ⴙς.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦Ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7661\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦ⴙς.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7663\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦ႹΣ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ႹΣ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦ⴙσ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦Ⴙσ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦Ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦Ⴙς.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦Ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7661\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦ⴙς.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7663\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦ႹΣ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ႹΣ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦ⴙσ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦Ⴙσ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦Ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--4xa947d717e.xn--9d0d3162t", %p)}, undef, "to_ascii\(\'xn\-\-4xa947d717e\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7668\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--4xa772sl47b.xn--9d0d3162t", %p)}, undef, "to_ascii\(\'xn\-\-4xa772sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7669\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--3xa972sl47b.xn--9d0d3162t", %p)}, undef, "to_ascii\(\'xn\-\-3xa972sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7670\]") or ($@ and diag($@)); diff --git a/t/uts46_to_ascii.t b/t/uts46_to_ascii.t index d60fd2a..798fa69 100644 --- a/t/uts46_to_ascii.t +++ b/t/uts46_to_ascii.t @@ -918,10 +918,10 @@ is(eval{uts46_to_ascii("xn--osd925cvyn.xn--73g3065g", %p)}, undef, "to_ascii\(\' is(eval{uts46_to_ascii("xn--pnd26a55x.xn--f3g7465g", %p)}, undef, "to_ascii\(\'xn\-\-pnd26a55x\.xn\-\-f3g7465g\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1157\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{1BF3}ⴑ\x{115F}.𑄴ⅎ", %p)}, undef, "to_ascii\(\'\\u1BF3ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1158\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{1BF3}Ⴑ\x{115F}.𑄴ⅎ", %p)}, undef, "to_ascii\(\'\\u1BF3Ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1159\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_ascii\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--187g.xn--ukjy205b8rscdeb", %p)}, undef, "to_ascii\(\'xn\-\-187g\.xn\-\-ukjy205b8rscdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1164\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--187g.xn--bnd4785f8r8bdeb", %p)}, undef, "to_ascii\(\'xn\-\-187g\.xn\-\-bnd4785f8r8bdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1165\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𐫀。⳻󠙾󠄷\x{3164}", %p)}, undef, "to_ascii\(\'𐫀。⳻\?\󠄷\\u3164\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1166\]") or ($@ and diag($@)); @@ -1088,12 +1088,12 @@ is(eval{uts46_to_ascii("xn--tlvq3513e.xn--hib9228d", %p)}, undef, "to_ascii\(\'x is(eval{uts46_to_ascii("󠄚≯ꡢ。\x{0891}\x{1DFF}", %p)}, undef, "to_ascii\(\'\󠄚\≯ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1381\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("󠄚>\x{0338}ꡢ。\x{0891}\x{1DFF}", %p)}, undef, "to_ascii\(\'\󠄚\>\\u0338ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1382\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--hdh7783c.xn--9xb680i", %p)}, undef, "to_ascii\(\'xn\-\-hdh7783c\.xn\-\-9xb680i\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1383\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_ascii\(\'\\uFDC3\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_ascii\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_ascii\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_ascii\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_ascii\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_ascii\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fhbea662czx68a2tju.xn--fljz2846h", %p)}, undef, "to_ascii\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-fljz2846h\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1387\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fhbea662czx68a2tju.xn--vnd55511o", %p)}, undef, "to_ascii\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-vnd55511o\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1388\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_ascii\(\'\\uFDC3\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_ascii\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𞀨。\x{1B44}򡛨𞎇", %p)}, undef, "to_ascii\(\'𞀨。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1390\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𞀨。\x{1B44}򡛨𞎇", %p)}, undef, "to_ascii\(\'𞀨\。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1391\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--mi4h.xn--1uf6843smg20c", %p)}, undef, "to_ascii\(\'xn\-\-mi4h\.xn\-\-1uf6843smg20c\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1392\]") or ($@ and diag($@)); @@ -1218,8 +1218,8 @@ is(eval{uts46_to_ascii("xn--f-tgn9761i.xn--7656e.xn--fqb4175k", %p)}, undef, "to is(eval{uts46_to_ascii("\x{200D}f𑓂。󠺨︒\x{077E}𐹢", %p)}, undef, "to_ascii\(\'\\u200Df𑓂\。\?︒\\u077E𐹢\'\)\ throws\ error\ B1\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:1539\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--f-kq9i.xn--fqb1637j8hky9452a", %p)}, undef, "to_ascii\(\'xn\-\-f\-kq9i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1540\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--f-tgn9761i.xn--fqb1637j8hky9452a", %p)}, undef, "to_ascii\(\'xn\-\-f\-tgn9761i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ C2\ V6\ \[data\/IdnaTest\.txt\:1541\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{0845}🄇𐼗︒。𐹻𑜫", %p)}, undef, "to_ascii\(\'\\u0845🄇\?︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{0845}6,𐼗。。𐹻𑜫", %p)}, undef, "to_ascii\(\'\\u08456\,\?\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{0845}🄇𐼗︒。𐹻𑜫", %p)}, undef, "to_ascii\(\'\\u0845🄇𐼗︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{0845}6,𐼗。。𐹻𑜫", %p)}, undef, "to_ascii\(\'\\u08456\,𐼗\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--6,-r4e4420y..xn--zo0di2m", %p)}, undef, "to_ascii\(\'xn\-\-6\,\-r4e4420y\.\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1544\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--3vb4696jpxkjh7s.xn--zo0di2m", %p)}, undef, "to_ascii\(\'xn\-\-3vb4696jpxkjh7s\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ B3\ V6\ \[data\/IdnaTest\.txt\:1545\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𐹈.\x{1DC0}𑈱𐦭", %p)}, undef, "to_ascii\(\'\?\.\\u1DC0𑈱𐦭\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1546\]") or ($@ and diag($@)); @@ -1312,8 +1312,8 @@ is(eval{uts46_to_ascii("𵋅。Ss𬵩\x{200D}", %p)}, undef, "to_ascii\(\'\?\。 is(eval{uts46_to_ascii("xn--ey1p.xn--ss-eq36b", %p)}, undef, "to_ascii\(\'xn\-\-ey1p\.xn\-\-ss\-eq36b\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:1663\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--ey1p.xn--ss-n1tx0508a", %p)}, undef, "to_ascii\(\'xn\-\-ey1p\.xn\-\-ss\-n1tx0508a\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1664\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--ey1p.xn--zca870nz438b", %p)}, undef, "to_ascii\(\'xn\-\-ey1p\.xn\-\-zca870nz438b\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1665\]") or ($@ and diag($@)); -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)}, undef, "to_ascii\(\'\\u200C\?\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1667\]") or ($@ and diag($@)); } -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)}, undef, "to_ascii\(\'\\u200C\?\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1669\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)}, undef, "to_ascii\(\'\\u200C𭉝\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1667\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)}, undef, "to_ascii\(\'\\u200C𭉝\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1669\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--634m.xn--lsa46nuub", %p)}, undef, "to_ascii\(\'xn\-\-634m\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1670\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--0ugy003y.xn--lsa46nuub", %p)}, undef, "to_ascii\(\'xn\-\-0ugy003y\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1671\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𞼌\x{200C}𑈶。𐹡", %p)}, undef, "to_ascii\(\'\?\\u200C𑈶\。𐹡\'\)\ throws\ error\ B1\ B3\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:1673\]") or ($@ and diag($@)); @@ -1585,20 +1585,20 @@ is(eval{uts46_to_ascii("𐶭⾆。\x{200C}𑚶򟱃𞰘", %p)}, undef, "to_ascii\ is(eval{uts46_to_ascii("𐶭舌。\x{200C}𑚶򟱃𞰘", %p)}, undef, "to_ascii\(\'\?舌\。\\u200C𑚶\?\?\'\)\ throws\ error\ B1\ B2\ B3\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:1997\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--tc1ao37z.xn--6e2dw557azds2d", %p)}, undef, "to_ascii\(\'xn\-\-tc1ao37z\.xn\-\-6e2dw557azds2d\'\)\ throws\ error\ B2\ B3\ B5\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:1998\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--tc1ao37z.xn--0ugx728gi1nfwqz2e", %p)}, undef, "to_ascii\(\'xn\-\-tc1ao37z\.xn\-\-0ugx728gi1nfwqz2e\'\)\ throws\ error\ B1\ B2\ B3\ C1\ V6\ \[data\/IdnaTest\.txt\:1999\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2001\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2003\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}ⴠ-.1ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2005\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.1Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2007\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}ⴠ-.1σ𞴺σ", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.1σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2009\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2001\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2003\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}ⴠ-.1ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2005\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.1Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2007\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}ⴠ-.1σ𞴺σ", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.1σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2009\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----2ws.xn--1-0mba52321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-2ws\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2010\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----rgn530d.xn--1-0mba52321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2011\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----z1g.xn--1-0mba52321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-z1g\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2012\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----z1g168i.xn--1-0mba52321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2013\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----rgn530d.xn--1-ymba92321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2014\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----z1g168i.xn--1-ymba92321c", %p)}, undef, "to_ascii\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2015\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2017\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.𝟷Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2019\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.𝟷σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2021\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2017\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)}, undef, "to_ascii\(\'\\u200CჀ\-\.𝟷Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2019\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)}, undef, "to_ascii\(\'\\u200Cⴠ\-\.𝟷σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2021\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𑲘󠄒𓑡。𝟪Ⴜ", %p)}, undef, "to_ascii\(\'𑲘\󠄒\?。𝟪Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2022\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𑲘󠄒𓑡。8Ⴜ", %p)}, undef, "to_ascii\(\'𑲘\󠄒\?\。8Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2023\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𑲘󠄒𓑡。8ⴜ", %p)}, undef, "to_ascii\(\'𑲘\󠄒\?\。8ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2024\]") or ($@ and diag($@)); @@ -1952,10 +1952,10 @@ is(eval{uts46_to_ascii("𐹰.\x{0600}", %p)}, undef, "to_ascii\(\'𐹰\.\\u0600\ is(eval{uts46_to_ascii("xn--oo0d.xn--ifb", %p)}, undef, "to_ascii\(\'xn\-\-oo0d\.xn\-\-ifb\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2464\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("-\x{08A8}.𱠖", %p)}, undef, "to_ascii\(\'\-\\u08A8\.\?\'\)\ throws\ error\ B1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2465\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn----mod.xn--5o9n", %p)}, undef, "to_ascii\(\'xn\-\-\-\-mod\.xn\-\-5o9n\'\)\ throws\ error\ B1\ V3\ V6\ \[data\/IdnaTest\.txt\:2466\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("≯𞱸󠇀。誆⒈", %p)}, undef, "to_ascii\(\'\≯\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆⒈", %p)}, undef, "to_ascii\(\'\>\\u0338\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("≯𞱸󠇀。誆1.", %p)}, undef, "to_ascii\(\'\≯\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆1.", %p)}, undef, "to_ascii\(\'\>\\u0338\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("≯𞱸󠇀。誆⒈", %p)}, undef, "to_ascii\(\'\≯𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆⒈", %p)}, undef, "to_ascii\(\'\>\\u0338𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("≯𞱸󠇀。誆1.", %p)}, undef, "to_ascii\(\'\≯𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii(">\x{0338}𞱸󠇀。誆1.", %p)}, undef, "to_ascii\(\'\>\\u0338𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--hdh7151p.xn--1-dy1d.", %p)}, undef, "to_ascii\(\'xn\-\-hdh7151p\.xn\-\-1\-dy1d\.\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2471\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--hdh7151p.xn--tsh1248a", %p)}, undef, "to_ascii\(\'xn\-\-hdh7151p\.xn\-\-tsh1248a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2472\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{0616}𞥙䐊\x{0650}.︒\x{0645}↺\x{069C}", %p)}, undef, "to_ascii\(\'\\u0616𞥙䐊\\u0650.︒\\u0645\↺\\u069C\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2473\]") or ($@ and diag($@)); @@ -2038,8 +2038,8 @@ is(eval{uts46_to_ascii("xn--1t56e.xn--2nd141ghl2a", %p)}, undef, "to_ascii\(\'xn is(eval{uts46_to_ascii("xn--1t56e.xn--2nd159e9vb743e", %p)}, undef, "to_ascii\(\'xn\-\-1t56e\.xn\-\-2nd159e9vb743e\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:2567\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("󠳛.\x{200D}䤫=\x{0338}ⴞ", %p)}, undef, "to_ascii\(\'\?.\\u200D䤫\=\\u0338ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2569\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("󠳛.\x{200D}䤫≠ⴞ", %p)}, undef, "to_ascii\(\'\?.\\u200D䤫\≠ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2571\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)}, undef, "to_ascii\(\'\?𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)}, undef, "to_ascii\(\'\?𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)}, undef, "to_ascii\(\'𐽘𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐽘𑈵.𐹣🕥", %p)}, undef, "to_ascii\(\'𐽘𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--bv0d02c.xn--bo0dq650b", %p)}, undef, "to_ascii\(\'xn\-\-bv0d02c\.xn\-\-bo0dq650b\'\)\ throws\ error\ B1\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:2574\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("⒊⒈𑁄。9", %p)}, undef, "to_ascii\(\'⒊⒈𑁄\。9\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2575\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v6.0 (perl v5.13.7) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v6.0; is(eval{uts46_to_ascii("3.1.𑁄。9", %p)}, undef, "to_ascii\(\'3\.1\.𑁄\。9\'\)\ throws\ error\ V5\ \[data\/IdnaTest\.txt\:2576\]") or ($@ and diag($@)); } @@ -2108,10 +2108,10 @@ SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%v SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("𐋵。\x{0643}\x{0645}", %p)}, undef, "to_ascii\(\'𐋵\。\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2655\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--p97c.xn--fhbe", %p)}, undef, "to_ascii\(\'xn\-\-p97c\.xn\-\-fhbe\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2656\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("𐋵.\x{0643}\x{0645}", %p)}, undef, "to_ascii\(\'𐋵\.\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2657\]") or ($@ and diag($@)); } -is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\≮\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\<\\u0338\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\≮\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\<\\u0338\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\≮\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\<\\u0338\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\≮\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_ascii\(\'\<\\u0338\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--gdh0880o.xn--4tjx101bsg00ds9pyc", %p)}, undef, "to_ascii\(\'xn\-\-gdh0880o\.xn\-\-4tjx101bsg00ds9pyc\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2662\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)}, undef, "to_ascii\(\'\\u2DF0\\u0358ᢕ.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2663\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)}, undef, "to_ascii\(\'\\u2DF0\\u0358ᢕ\.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2664\]") or ($@ and diag($@)); @@ -2221,8 +2221,8 @@ is(eval{uts46_to_ascii("ᡙ\x{200C}。≯𐋲≠", %p)}, undef, "to_ascii\(\'ᡙ is(eval{uts46_to_ascii("ᡙ\x{200C}。>\x{0338}𐋲=\x{0338}", %p)}, undef, "to_ascii\(\'ᡙ\\u200C\。\>\\u0338𐋲\=\\u0338\'\)\ throws\ error\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:2803\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--p8e.xn--1ch3a7084l", %p)}, undef, "to_ascii\(\'xn\-\-p8e\.xn\-\-1ch3a7084l\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2804\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--p8e650b.xn--1ch3a7084l", %p)}, undef, "to_ascii\(\'xn\-\-p8e650b\.xn\-\-1ch3a7084l\'\)\ throws\ error\ C1\ V6\ \[data\/IdnaTest\.txt\:2805\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)}, undef, "to_ascii\(\'𐹧\?\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)}, undef, "to_ascii\(\'𐹧\?\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)}, undef, "to_ascii\(\'𐹧𞲄\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)}, undef, "to_ascii\(\'𐹧𞲄\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fo0dw409aq58qrn69d.xn--0-bgb.", %p)}, undef, "to_ascii\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-0\-bgb\.\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2808\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fo0dw409aq58qrn69d.xn--sua6883w", %p)}, undef, "to_ascii\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-sua6883w\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2809\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("Ⴄ.\x{200D}\x{0721}󻣋ς", %p)}, undef, "to_ascii\(\'Ⴄ.\\u200D\\u0721\?ς\'\)\ throws\ error\ B1\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2811\]") or ($@ and diag($@)); @@ -3042,8 +3042,8 @@ is(eval{uts46_to_ascii("ቬ򔠼񁗶。𐨬8", %p)}, undef, "to_ascii\(\'ቬ\?\?\ is(eval{uts46_to_ascii("xn--d0d41273c887z.xn--8-ob5i", %p)}, undef, "to_ascii\(\'xn\-\-d0d41273c887z\.xn\-\-8\-ob5i\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:3833\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("𐱲。蔫\x{0766}", %p)}, undef, "to_ascii\(\'\?\。蔫\\u0766\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3834\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--389c.xn--qpb7055d", %p)}, undef, "to_ascii\(\'xn\-\-389c\.xn\-\-qpb7055d\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3835\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_ascii\(\'\?₃。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_ascii\(\'\?3\。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_ascii\(\'\?₃。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_ascii\(\'\?3\。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--3-ep59g.xn--jhb5904fcp0h", %p)}, undef, "to_ascii\(\'xn\-\-3\-ep59g\.xn\-\-jhb5904fcp0h\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3838\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("蓸\x{0642}≠.ß", %p)}, undef, "to_ascii\(\'蓸\\u0642\≠\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3840\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("蓸\x{0642}=\x{0338}.ß", %p)}, undef, "to_ascii\(\'蓸\\u0642\=\\u0338\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3842\]") or ($@ and diag($@)); @@ -4114,8 +4114,8 @@ is(eval{uts46_to_ascii("xn--xx5gy2741c.xn--re6hw266j", %p)}, undef, "to_ascii\(\ is(eval{uts46_to_ascii("𛜯󠊛.𞤑񏥾", %p)}, undef, "to_ascii\(\'\?\?.𞤑\?\'\)\ throws\ error\ B2\ B3\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:5175\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("\x{071C}𐫒\x{062E}.𐋲", %p)}, undef, "to_ascii\(\'\\u071C𐫒\\u062E\.𐋲\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5176\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--tgb98b8643d.xn--m97c", %p)}, undef, "to_ascii\(\'xn\-\-tgb98b8643d\.xn\-\-m97c\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5177\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_ascii\(\'\?𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_ascii\(\'\?𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_ascii\(\'𐼑𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_ascii\(\'𐼑𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--2gb08k9w69agm0g.\x{DF56}", %p)}, undef, "to_ascii\(\'xn\-\-2gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5180\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("XN--2GB08K9W69AGM0G.\x{DF56}", %p)}, undef, "to_ascii\(\'XN\-\-2GB08K9W69AGM0G\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5181\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("Xn--2Gb08k9w69agm0g.\x{DF56}", %p)}, undef, "to_ascii\(\'Xn\-\-2Gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ A3\ \[data\/IdnaTest\.txt\:5182\]") or ($@ and diag($@)); @@ -4473,7 +4473,7 @@ is(eval{uts46_to_ascii("xn--lgb32f2753cosb.xn--jkb91hlz1a", %p)}, undef, "to_asc is(eval{uts46_to_ascii("xn--lgb32f2753cosb.xn--jkb91hlz1azih", %p)}, undef, "to_ascii\(\'xn\-\-lgb32f2753cosb\.xn\-\-jkb91hlz1azih\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:5642\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{0816}.𐨕𚚕", %p)}, undef, "to_ascii\(\'\\u0816\.𐨕\?\'\)\ throws\ error\ B1\ B2\ B3\ B6\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:5643\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--rub.xn--tr9c248x", %p)}, undef, "to_ascii\(\'xn\-\-rub\.xn\-\-tr9c248x\'\)\ throws\ error\ B1\ B2\ B3\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:5644\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("--。𽊆\x{0767}𐽋𞠬", %p)}, undef, "to_ascii\(\'\-\-\。\?\\u0767\?𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("--。𽊆\x{0767}𐽋𞠬", %p)}, undef, "to_ascii\(\'\-\-\。\?\\u0767𐽋𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("--.xn--rpb6226k77pfh58p", %p)}, undef, "to_ascii\(\'\-\-\.xn\-\-rpb6226k77pfh58p\'\)\ throws\ error\ B1\ B5\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:5646\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("򛭦𐋥𹸐.≯\x{08B0}\x{08A6}󔛣", %p)}, undef, "to_ascii\(\'\?𐋥\?\.\≯\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5647\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("򛭦𐋥𹸐.>\x{0338}\x{08B0}\x{08A6}󔛣", %p)}, undef, "to_ascii\(\'\?𐋥\?\.\>\\u0338\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5648\]") or ($@ and diag($@)); @@ -5565,14 +5565,14 @@ is(eval{uts46_to_ascii("񗑿\x{A806}₄򩞆。𲩧󠒹Σ", %p)}, undef, "to_asci is(eval{uts46_to_ascii("񗑿\x{A806}₄򩞆。𲩧󠒹σ", %p)}, undef, "to_ascii\(\'\?\\uA806₄\?。\?\?σ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:7003\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_ascii("󠆀\x{0723}。\x{1DF4}\x{0775}", %p)}, undef, "to_ascii\(\'\󠆀\\u0723\。\\u1DF4\\u0775\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7004\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--tnb.xn--5pb136i", %p)}, undef, "to_ascii\(\'xn\-\-tnb\.xn\-\-5pb136i\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7005\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7007\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨\。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7009\]") or ($@ and diag($@)); -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨\。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7011\]") or ($@ and diag($@)); } +is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7007\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨\。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7009\]") or ($@ and diag($@)); +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨\。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7011\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--8kjz186s", %p)}, undef, "to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-8kjz186s\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7012\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--1ug742c5714c", %p)}, undef, "to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-1ug742c5714c\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7013\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--pnd93707a", %p)}, undef, "to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd93707a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:7014\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--0vb1535kdb6e.xn--pnd879eqy33c", %p)}, undef, "to_ascii\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd879eqy33c\'\)\ throws\ error\ B1\ B6\ C2\ V6\ \[data\/IdnaTest\.txt\:7015\]") or ($@ and diag($@)); -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7017\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_ascii("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_ascii\(\'𐹱\\u0842𝪨。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7017\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)}, undef, "to_ascii\(\'\\u1714𐭪\?\\u200D。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7019\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)}, undef, "to_ascii\(\'\\u1714𐭪\?\\u200D\。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7021\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--fze4126jujt0g.xn----c36i", %p)}, undef, "to_ascii\(\'xn\-\-fze4126jujt0g\.xn\-\-\-\-c36i\'\)\ throws\ error\ B1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7022\]") or ($@ and diag($@)); @@ -6070,11 +6070,11 @@ is(eval{uts46_to_ascii("xn--ie8c.xn--2g51a", %p)}, undef, "to_ascii\(\'xn\-\-ie8 is(eval{uts46_to_ascii("xn--ie8c.xn--0ug03366c", %p)}, undef, "to_ascii\(\'xn\-\-ie8c\.xn\-\-0ug03366c\'\)\ throws\ error\ C1\ V5\ V6\ \[data\/IdnaTest\.txt\:7658\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v5.1 (perl v5.10.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v5.1; is(eval{uts46_to_ascii("\x{063D}\x{06E3}.𐨎", %p)}, undef, "to_ascii\(\'\\u063D\\u06E3\.𐨎\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7659\]") or ($@ and diag($@)); } is(eval{uts46_to_ascii("xn--8gb64a.xn--mr9c", %p)}, undef, "to_ascii\(\'xn\-\-8gb64a\.xn\-\-mr9c\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7660\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦Ⴙς.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦Ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7662\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦ⴙς.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7664\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦ႹΣ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ႹΣ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦ⴙσ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@)); -is(eval{uts46_to_ascii("漦Ⴙσ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦Ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦Ⴙς.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦Ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7662\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦ⴙς.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7664\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦ႹΣ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ႹΣ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦ⴙσ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@)); +is(eval{uts46_to_ascii("漦Ⴙσ.񡻀𐴄", %p)}, undef, "to_ascii\(\'漦Ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--4xa947d717e.xn--9d0d3162t", %p)}, undef, "to_ascii\(\'xn\-\-4xa947d717e\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7668\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--4xa772sl47b.xn--9d0d3162t", %p)}, undef, "to_ascii\(\'xn\-\-4xa772sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7669\]") or ($@ and diag($@)); is(eval{uts46_to_ascii("xn--3xa972sl47b.xn--9d0d3162t", %p)}, undef, "to_ascii\(\'xn\-\-3xa972sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7670\]") or ($@ and diag($@)); diff --git a/t/uts46_to_unicode.t b/t/uts46_to_unicode.t index c3d505b..3842e97 100644 --- a/t/uts46_to_unicode.t +++ b/t/uts46_to_unicode.t @@ -1093,10 +1093,10 @@ is(eval{uts46_to_unicode("xn--osd925cvyn.xn--73g3065g", %p)}, undef, "to_unicode is(eval{uts46_to_unicode("xn--pnd26a55x.xn--f3g7465g", %p)}, undef, "to_unicode\(\'xn\-\-pnd26a55x\.xn\-\-f3g7465g\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1157\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("\x{1BF3}ⴑ\x{115F}.𑄴ⅎ", %p)}, undef, "to_unicode\(\'\\u1BF3ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1158\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("\x{1BF3}Ⴑ\x{115F}.𑄴ⅎ", %p)}, undef, "to_unicode\(\'\\u1BF3Ⴑ\\u115F.𑄴ⅎ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1159\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_unicode\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_unicode\(\'\?\。Ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_unicode\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_unicode\(\'\?\。ⴃ\?𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_unicode\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1160\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𜉆。Ⴃ𐴣𐹹똯", %p)}, undef, "to_unicode\(\'\?\。Ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1161\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_unicode\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1162\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𜉆。ⴃ𐴣𐹹똯", %p)}, undef, "to_unicode\(\'\?\。ⴃ𐴣𐹹똯\'\)\ throws\ error\ B5\ P1\ V6\ \[data\/IdnaTest\.txt\:1163\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--187g.xn--ukjy205b8rscdeb", %p)}, undef, "to_unicode\(\'xn\-\-187g\.xn\-\-ukjy205b8rscdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1164\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--187g.xn--bnd4785f8r8bdeb", %p)}, undef, "to_unicode\(\'xn\-\-187g\.xn\-\-bnd4785f8r8bdeb\'\)\ throws\ error\ B5\ V6\ \[data\/IdnaTest\.txt\:1165\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("𐫀。⳻󠙾󠄷\x{3164}", %p)}, undef, "to_unicode\(\'𐫀。⳻\?\󠄷\\u3164\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1166\]") or ($@ and diag($@)); @@ -1317,12 +1317,12 @@ is(eval{uts46_to_unicode("xn--tlvq3513e.xn--hib9228d", %p)}, undef, "to_unicode\ is(eval{uts46_to_unicode("󠄚≯ꡢ。\x{0891}\x{1DFF}", %p)}, undef, "to_unicode\(\'\󠄚\≯ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1381\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("󠄚>\x{0338}ꡢ。\x{0891}\x{1DFF}", %p)}, undef, "to_unicode\(\'\󠄚\>\\u0338ꡢ\。\\u0891\\u1DFF\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:1382\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--hdh7783c.xn--9xb680i", %p)}, undef, "to_unicode\(\'xn\-\-hdh7783c\.xn\-\-9xb680i\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1383\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_unicode\(\'\\uFDC3\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_unicode\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_unicode\(\'\\u0643\\u0645\\u0645\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_unicode\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1384\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤Ⴗ", %p)}, undef, "to_unicode\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?Ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1385\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{0643}\x{0645}\x{0645}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_unicode\(\'\\u0643\\u0645\\u0645𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1386\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--fhbea662czx68a2tju.xn--fljz2846h", %p)}, undef, "to_unicode\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-fljz2846h\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1387\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--fhbea662czx68a2tju.xn--vnd55511o", %p)}, undef, "to_unicode\(\'xn\-\-fhbea662czx68a2tju\.xn\-\-vnd55511o\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:1388\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_unicode\(\'\\uFDC3\?\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{FDC3}𮁱\x{0B4D}𐨿.󐧤ⴗ", %p)}, undef, "to_unicode\(\'\\uFDC3𮁱\\u0B4D𐨿\.\?ⴗ\'\)\ throws\ error\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1389\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("𞀨。\x{1B44}򡛨𞎇", %p)}, undef, "to_unicode\(\'𞀨。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1390\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("𞀨。\x{1B44}򡛨𞎇", %p)}, undef, "to_unicode\(\'𞀨\。\\u1B44\?\?\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1391\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--mi4h.xn--1uf6843smg20c", %p)}, undef, "to_unicode\(\'xn\-\-mi4h\.xn\-\-1uf6843smg20c\'\)\ throws\ error\ V5\ V6\ \[data\/IdnaTest\.txt\:1392\]") or ($@ and diag($@)); @@ -1475,8 +1475,8 @@ is(eval{uts46_to_unicode("\x{200D}f𑓂。󠺨︒\x{077E}𐹢", %p)}, undef, "to is(eval{uts46_to_unicode("\x{200D}f𑓂。󠺨︒\x{077E}𐹢", %p)}, undef, "to_unicode\(\'\\u200Df𑓂\。\?︒\\u077E𐹢\'\)\ throws\ error\ B1\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:1539\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--f-kq9i.xn--fqb1637j8hky9452a", %p)}, undef, "to_unicode\(\'xn\-\-f\-kq9i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:1540\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--f-tgn9761i.xn--fqb1637j8hky9452a", %p)}, undef, "to_unicode\(\'xn\-\-f\-tgn9761i\.xn\-\-fqb1637j8hky9452a\'\)\ throws\ error\ B1\ C2\ V6\ \[data\/IdnaTest\.txt\:1541\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{0845}🄇𐼗︒。𐹻𑜫", %p)}, undef, "to_unicode\(\'\\u0845🄇\?︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{0845}6,𐼗。。𐹻𑜫", %p)}, undef, "to_unicode\(\'\\u08456\,\?\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{0845}🄇𐼗︒。𐹻𑜫", %p)}, undef, "to_unicode\(\'\\u0845🄇𐼗︒。𐹻𑜫\'\)\ throws\ error\ B1\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:1542\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{0845}6,𐼗。。𐹻𑜫", %p)}, undef, "to_unicode\(\'\\u08456\,𐼗\。\。𐹻𑜫\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1543\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--6,-r4e4420y..xn--zo0di2m", %p)}, undef, "to_unicode\(\'xn\-\-6\,\-r4e4420y\.\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ P1\ V6\ A4_2\ \[data\/IdnaTest\.txt\:1544\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--3vb4696jpxkjh7s.xn--zo0di2m", %p)}, undef, "to_unicode\(\'xn\-\-3vb4696jpxkjh7s\.xn\-\-zo0di2m\'\)\ throws\ error\ B1\ B3\ V6\ \[data\/IdnaTest\.txt\:1545\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("𐹈.\x{1DC0}𑈱𐦭", %p)}, undef, "to_unicode\(\'\?\.\\u1DC0𑈱𐦭\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:1546\]") or ($@ and diag($@)); @@ -1599,10 +1599,10 @@ is(eval{uts46_to_unicode("𵋅。Ss𬵩\x{200D}", %p)}, undef, "to_unicode\(\'\? is(eval{uts46_to_unicode("xn--ey1p.xn--ss-eq36b", %p)}, undef, "to_unicode\(\'xn\-\-ey1p\.xn\-\-ss\-eq36b\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:1663\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--ey1p.xn--ss-n1tx0508a", %p)}, undef, "to_unicode\(\'xn\-\-ey1p\.xn\-\-ss\-n1tx0508a\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1664\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--ey1p.xn--zca870nz438b", %p)}, undef, "to_unicode\(\'xn\-\-ey1p\.xn\-\-zca870nz438b\'\)\ throws\ error\ C2\ V6\ \[data\/IdnaTest\.txt\:1665\]") or ($@ and diag($@)); -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)}, undef, "to_unicode\(\'\\u200C\?\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1666\]") or ($@ and diag($@)); } -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)}, undef, "to_unicode\(\'\\u200C\?\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1667\]") or ($@ and diag($@)); } -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)}, undef, "to_unicode\(\'\\u200C\?\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1668\]") or ($@ and diag($@)); } -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)}, undef, "to_unicode\(\'\\u200C\?\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1669\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)}, undef, "to_unicode\(\'\\u200C𭉝\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1666\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}𞹻", %p)}, undef, "to_unicode\(\'\\u200C𭉝\。\\u07F1\\u0301𞹻\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1667\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)}, undef, "to_unicode\(\'\\u200C𭉝\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1668\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("\x{200C}𭉝。\x{07F1}\x{0301}\x{063A}", %p)}, undef, "to_unicode\(\'\\u200C𭉝\。\\u07F1\\u0301\\u063A\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1669\]") or ($@ and diag($@)); } is(eval{uts46_to_unicode("xn--634m.xn--lsa46nuub", %p)}, undef, "to_unicode\(\'xn\-\-634m\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:1670\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--0ugy003y.xn--lsa46nuub", %p)}, undef, "to_unicode\(\'xn\-\-0ugy003y\.xn\-\-lsa46nuub\'\)\ throws\ error\ B1\ C1\ V5\ \[data\/IdnaTest\.txt\:1671\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("𞼌\x{200C}𑈶。𐹡", %p)}, undef, "to_unicode\(\'\?\\u200C𑈶\。𐹡\'\)\ throws\ error\ B1\ B3\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:1672\]") or ($@ and diag($@)); @@ -1933,28 +1933,28 @@ is(eval{uts46_to_unicode("𐶭舌。\x{200C}𑚶򟱃𞰘", %p)}, undef, "to_unic is(eval{uts46_to_unicode("𐶭舌。\x{200C}𑚶򟱃𞰘", %p)}, undef, "to_unicode\(\'\?舌\。\\u200C𑚶\?\?\'\)\ throws\ error\ B1\ B2\ B3\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:1997\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--tc1ao37z.xn--6e2dw557azds2d", %p)}, undef, "to_unicode\(\'xn\-\-tc1ao37z\.xn\-\-6e2dw557azds2d\'\)\ throws\ error\ B2\ B3\ B5\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:1998\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--tc1ao37z.xn--0ugx728gi1nfwqz2e", %p)}, undef, "to_unicode\(\'xn\-\-tc1ao37z\.xn\-\-0ugx728gi1nfwqz2e\'\)\ throws\ error\ B1\ B2\ B3\ C1\ V6\ \[data\/IdnaTest\.txt\:1999\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2000\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2001\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2002\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2003\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}ⴠ-.1ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2004\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}ⴠ-.1ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.1ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2005\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.1Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2006\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.1Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2007\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}ⴠ-.1σ𞴺σ", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.1σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2008\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}ⴠ-.1σ𞴺σ", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.1σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2009\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2000\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2001\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2002\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2003\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}ⴠ-.1ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2004\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}ⴠ-.1ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.1ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2005\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.1Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2006\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}Ⴠ-.1Σ𞴺Σ", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.1Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2007\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}ⴠ-.1σ𞴺σ", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.1σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2008\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}ⴠ-.1σ𞴺σ", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.1σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2009\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn----2ws.xn--1-0mba52321c", %p)}, undef, "to_unicode\(\'xn\-\-\-\-2ws\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2010\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn----rgn530d.xn--1-0mba52321c", %p)}, undef, "to_unicode\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2011\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn----z1g.xn--1-0mba52321c", %p)}, undef, "to_unicode\(\'xn\-\-\-\-z1g\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:2012\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn----z1g168i.xn--1-0mba52321c", %p)}, undef, "to_unicode\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-0mba52321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2013\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn----rgn530d.xn--1-ymba92321c", %p)}, undef, "to_unicode\(\'xn\-\-\-\-rgn530d\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2014\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn----z1g168i.xn--1-ymba92321c", %p)}, undef, "to_unicode\(\'xn\-\-\-\-z1g168i\.xn\-\-1\-ymba92321c\'\)\ throws\ error\ B1\ C1\ V3\ V6\ \[data\/IdnaTest\.txt\:2015\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2016\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.𝟷ς\?ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2017\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.𝟷Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2018\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.𝟷Σ\?Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2019\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.𝟷σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2020\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.𝟷σ\?σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2021\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2016\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷ς𞴺ς", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.𝟷ς𞴺ς\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2017\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.𝟷Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2018\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}Ⴠ-.𝟷Σ𞴺Σ", %p)}, undef, "to_unicode\(\'\\u200CჀ\-\.𝟷Σ𞴺Σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2019\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.𝟷σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2020\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("\x{200C}ⴠ-.𝟷σ𞴺σ", %p)}, undef, "to_unicode\(\'\\u200Cⴠ\-\.𝟷σ𞴺σ\'\)\ throws\ error\ B1\ C1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2021\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("𑲘󠄒𓑡。𝟪Ⴜ", %p)}, undef, "to_unicode\(\'𑲘\󠄒\?。𝟪Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2022\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("𑲘󠄒𓑡。8Ⴜ", %p)}, undef, "to_unicode\(\'𑲘\󠄒\?\。8Ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2023\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("𑲘󠄒𓑡。8ⴜ", %p)}, undef, "to_unicode\(\'𑲘\󠄒\?\。8ⴜ\'\)\ throws\ error\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2024\]") or ($@ and diag($@)); @@ -2400,10 +2400,10 @@ is(eval{uts46_to_unicode("𐹰.\x{0600}", %p)}, undef, "to_unicode\(\'𐹰\.\\u0 is(eval{uts46_to_unicode("xn--oo0d.xn--ifb", %p)}, undef, "to_unicode\(\'xn\-\-oo0d\.xn\-\-ifb\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2464\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("-\x{08A8}.𱠖", %p)}, undef, "to_unicode\(\'\-\\u08A8\.\?\'\)\ throws\ error\ B1\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:2465\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn----mod.xn--5o9n", %p)}, undef, "to_unicode\(\'xn\-\-\-\-mod\.xn\-\-5o9n\'\)\ throws\ error\ B1\ V3\ V6\ \[data\/IdnaTest\.txt\:2466\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("≯𞱸󠇀。誆⒈", %p)}, undef, "to_unicode\(\'\≯\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode(">\x{0338}𞱸󠇀。誆⒈", %p)}, undef, "to_unicode\(\'\>\\u0338\?\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("≯𞱸󠇀。誆1.", %p)}, undef, "to_unicode\(\'\≯\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode(">\x{0338}𞱸󠇀。誆1.", %p)}, undef, "to_unicode\(\'\>\\u0338\?\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("≯𞱸󠇀。誆⒈", %p)}, undef, "to_unicode\(\'\≯𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2467\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode(">\x{0338}𞱸󠇀。誆⒈", %p)}, undef, "to_unicode\(\'\>\\u0338𞱸\󠇀\。誆⒈\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2468\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("≯𞱸󠇀。誆1.", %p)}, undef, "to_unicode\(\'\≯𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2469\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode(">\x{0338}𞱸󠇀。誆1.", %p)}, undef, "to_unicode\(\'\>\\u0338𞱸\󠇀\。誆1\.\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:2470\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--hdh7151p.xn--1-dy1d.", %p)}, undef, "to_unicode\(\'xn\-\-hdh7151p\.xn\-\-1\-dy1d\.\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2471\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--hdh7151p.xn--tsh1248a", %p)}, undef, "to_unicode\(\'xn\-\-hdh7151p\.xn\-\-tsh1248a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:2472\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("\x{0616}𞥙䐊\x{0650}.︒\x{0645}↺\x{069C}", %p)}, undef, "to_unicode\(\'\\u0616𞥙䐊\\u0650.︒\\u0645\↺\\u069C\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2473\]") or ($@ and diag($@)); @@ -2505,8 +2505,8 @@ is(eval{uts46_to_unicode("󠳛.\x{200D}䤫=\x{0338}ⴞ", %p)}, undef, "to_unic is(eval{uts46_to_unicode("󠳛.\x{200D}䤫=\x{0338}ⴞ", %p)}, undef, "to_unicode\(\'\?.\\u200D䤫\=\\u0338ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2569\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("󠳛.\x{200D}䤫≠ⴞ", %p)}, undef, "to_unicode\(\'\?.\\u200D䤫\≠ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2570\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("󠳛.\x{200D}䤫≠ⴞ", %p)}, undef, "to_unicode\(\'\?.\\u200D䤫\≠ⴞ\'\)\ throws\ error\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2571\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐽘𑈵.𐹣🕥", %p)}, undef, "to_unicode\(\'\?𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐽘𑈵.𐹣🕥", %p)}, undef, "to_unicode\(\'\?𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𐽘𑈵.𐹣🕥", %p)}, undef, "to_unicode\(\'𐽘𑈵.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2572\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𐽘𑈵.𐹣🕥", %p)}, undef, "to_unicode\(\'𐽘𑈵\.𐹣🕥\'\)\ throws\ error\ B1\ B2\ B3\ P1\ V6\ \[data\/IdnaTest\.txt\:2573\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--bv0d02c.xn--bo0dq650b", %p)}, undef, "to_unicode\(\'xn\-\-bv0d02c\.xn\-\-bo0dq650b\'\)\ throws\ error\ B1\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:2574\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("⒊⒈𑁄。9", %p)}, undef, "to_unicode\(\'⒊⒈𑁄\。9\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2575\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v6.0 (perl v5.13.7) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v6.0; is(eval{uts46_to_unicode("3.1.𑁄。9", %p)}, undef, "to_unicode\(\'3\.1\.𑁄\。9\'\)\ throws\ error\ V5\ \[data\/IdnaTest\.txt\:2576\]") or ($@ and diag($@)); } @@ -2591,10 +2591,10 @@ SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%v SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_unicode("𐋵。\x{0643}\x{0645}", %p)}, undef, "to_unicode\(\'𐋵\。\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2655\]") or ($@ and diag($@)); } is(eval{uts46_to_unicode("xn--p97c.xn--fhbe", %p)}, undef, "to_unicode\(\'xn\-\-p97c\.xn\-\-fhbe\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2656\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_unicode("𐋵.\x{0643}\x{0645}", %p)}, undef, "to_unicode\(\'𐋵\.\\u0643\\u0645\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:2657\]") or ($@ and diag($@)); } -is(eval{uts46_to_unicode("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_unicode\(\'\≮\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_unicode\(\'\<\\u0338\?.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_unicode\(\'\≮\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_unicode\(\'\<\\u0338\?\.\?\\uAAEC\?\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_unicode\(\'\≮\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2658\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_unicode\(\'\<\\u0338\?.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2659\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("≮𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_unicode\(\'\≮\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2660\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("<\x{0338}𝅶.񱲁\x{AAEC}⹈󰥭", %p)}, undef, "to_unicode\(\'\<\\u0338\?\.\?\\uAAEC\⹈\?\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:2661\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--gdh0880o.xn--4tjx101bsg00ds9pyc", %p)}, undef, "to_unicode\(\'xn\-\-gdh0880o\.xn\-\-4tjx101bsg00ds9pyc\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2662\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)}, undef, "to_unicode\(\'\\u2DF0\\u0358ᢕ.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2663\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("\x{2DF0}\x{0358}ᢕ.\x{0361}𐹷󠴍", %p)}, undef, "to_unicode\(\'\\u2DF0\\u0358ᢕ\.\\u0361𐹷\?\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2664\]") or ($@ and diag($@)); @@ -2739,8 +2739,8 @@ is(eval{uts46_to_unicode("ᡙ\x{200C}。>\x{0338}𐋲=\x{0338}", %p)}, undef, "t is(eval{uts46_to_unicode("ᡙ\x{200C}。>\x{0338}𐋲=\x{0338}", %p)}, undef, "to_unicode\(\'ᡙ\\u200C\。\>\\u0338𐋲\=\\u0338\'\)\ throws\ error\ C1\ P1\ V6\ \[data\/IdnaTest\.txt\:2803\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--p8e.xn--1ch3a7084l", %p)}, undef, "to_unicode\(\'xn\-\-p8e\.xn\-\-1ch3a7084l\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:2804\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--p8e650b.xn--1ch3a7084l", %p)}, undef, "to_unicode\(\'xn\-\-p8e650b\.xn\-\-1ch3a7084l\'\)\ throws\ error\ C1\ V6\ \[data\/IdnaTest\.txt\:2805\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)}, undef, "to_unicode\(\'𐹧\?\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)}, undef, "to_unicode\(\'𐹧\?\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𐹧𞲄󠁭񆼩。\x{034E}🄀", %p)}, undef, "to_unicode\(\'𐹧𞲄\?\?\。\\u034E🄀\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2806\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𐹧𞲄󠁭񆼩。\x{034E}0.", %p)}, undef, "to_unicode\(\'𐹧𞲄\?\?\。\\u034E0\.\'\)\ throws\ error\ B1\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:2807\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--fo0dw409aq58qrn69d.xn--0-bgb.", %p)}, undef, "to_unicode\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-0\-bgb\.\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2808\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--fo0dw409aq58qrn69d.xn--sua6883w", %p)}, undef, "to_unicode\(\'xn\-\-fo0dw409aq58qrn69d\.xn\-\-sua6883w\'\)\ throws\ error\ B1\ V5\ V6\ \[data\/IdnaTest\.txt\:2809\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("Ⴄ.\x{200D}\x{0721}󻣋ς", %p)}, undef, "to_unicode\(\'Ⴄ.\\u200D\\u0721\?ς\'\)\ throws\ error\ B1\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:2810\]") or ($@ and diag($@)); @@ -3769,8 +3769,8 @@ is(eval{uts46_to_unicode("ቬ򔠼񁗶。𐨬8", %p)}, undef, "to_unicode\(\'ቬ\ is(eval{uts46_to_unicode("xn--d0d41273c887z.xn--8-ob5i", %p)}, undef, "to_unicode\(\'xn\-\-d0d41273c887z\.xn\-\-8\-ob5i\'\)\ throws\ error\ V6\ \[data\/IdnaTest\.txt\:3833\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("𐱲。蔫\x{0766}", %p)}, undef, "to_unicode\(\'\?\。蔫\\u0766\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3834\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--389c.xn--qpb7055d", %p)}, undef, "to_unicode\(\'xn\-\-389c\.xn\-\-qpb7055d\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3835\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_unicode\(\'\?₃。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_unicode\(\'\?3\。ꡚ\?\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("򒲧₃。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_unicode\(\'\?₃。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3836\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("򒲧3。ꡚ𛇑󠄳\x{0647}", %p)}, undef, "to_unicode\(\'\?3\。ꡚ𛇑\󠄳\\u0647\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3837\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--3-ep59g.xn--jhb5904fcp0h", %p)}, undef, "to_unicode\(\'xn\-\-3\-ep59g\.xn\-\-jhb5904fcp0h\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:3838\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("蓸\x{0642}≠.ß", %p)}, undef, "to_unicode\(\'蓸\\u0642\≠\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3839\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("蓸\x{0642}≠.ß", %p)}, undef, "to_unicode\(\'蓸\\u0642\≠\.ß\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:3840\]") or ($@ and diag($@)); @@ -5111,8 +5111,8 @@ is(eval{uts46_to_unicode("xn--xx5gy2741c.xn--re6hw266j", %p)}, undef, "to_unicod is(eval{uts46_to_unicode("𛜯󠊛.𞤑񏥾", %p)}, undef, "to_unicode\(\'\?\?.𞤑\?\'\)\ throws\ error\ B2\ B3\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:5175\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_unicode("\x{071C}𐫒\x{062E}.𐋲", %p)}, undef, "to_unicode\(\'\\u071C𐫒\\u062E\.𐋲\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5176\]") or ($@ and diag($@)); } is(eval{uts46_to_unicode("xn--tgb98b8643d.xn--m97c", %p)}, undef, "to_unicode\(\'xn\-\-tgb98b8643d\.xn\-\-m97c\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:5177\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_unicode\(\'\?𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_unicode\(\'\?𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𐼑𞤓\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_unicode\(\'𐼑𞤓\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5178\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𐼑𞤵\x{0637}\x{08E2}.\x{DF56}", %p)}, undef, "to_unicode\(\'𐼑𞤵\\u0637\\u08E2\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5179\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--2gb08k9w69agm0g.\x{DF56}", %p)}, undef, "to_unicode\(\'xn\-\-2gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5180\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("XN--2GB08K9W69AGM0G.\x{DF56}", %p)}, undef, "to_unicode\(\'XN\-\-2GB08K9W69AGM0G\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5181\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("Xn--2Gb08k9w69agm0g.\x{DF56}", %p)}, undef, "to_unicode\(\'Xn\-\-2Gb08k9w69agm0g\.\\uDF56\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:5182\]") or ($@ and diag($@)); @@ -5578,7 +5578,7 @@ is(eval{uts46_to_unicode("xn--lgb32f2753cosb.xn--jkb91hlz1a", %p)}, undef, "to_u is(eval{uts46_to_unicode("xn--lgb32f2753cosb.xn--jkb91hlz1azih", %p)}, undef, "to_unicode\(\'xn\-\-lgb32f2753cosb\.xn\-\-jkb91hlz1azih\'\)\ throws\ error\ B2\ B3\ V6\ \[data\/IdnaTest\.txt\:5642\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("\x{0816}.𐨕𚚕", %p)}, undef, "to_unicode\(\'\\u0816\.𐨕\?\'\)\ throws\ error\ B1\ B2\ B3\ B6\ P1\ V5\ V6\ \[data\/IdnaTest\.txt\:5643\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--rub.xn--tr9c248x", %p)}, undef, "to_unicode\(\'xn\-\-rub\.xn\-\-tr9c248x\'\)\ throws\ error\ B1\ B2\ B3\ B6\ V5\ V6\ \[data\/IdnaTest\.txt\:5644\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("--。𽊆\x{0767}𐽋𞠬", %p)}, undef, "to_unicode\(\'\-\-\。\?\\u0767\?𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("--。𽊆\x{0767}𐽋𞠬", %p)}, undef, "to_unicode\(\'\-\-\。\?\\u0767𐽋𞠬\'\)\ throws\ error\ B1\ B5\ B6\ P1\ V3\ V6\ \[data\/IdnaTest\.txt\:5645\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("--.xn--rpb6226k77pfh58p", %p)}, undef, "to_unicode\(\'\-\-\.xn\-\-rpb6226k77pfh58p\'\)\ throws\ error\ B1\ B5\ B6\ V3\ V6\ \[data\/IdnaTest\.txt\:5646\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("򛭦𐋥𹸐.≯\x{08B0}\x{08A6}󔛣", %p)}, undef, "to_unicode\(\'\?𐋥\?\.\≯\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5647\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("򛭦𐋥𹸐.>\x{0338}\x{08B0}\x{08A6}󔛣", %p)}, undef, "to_unicode\(\'\?𐋥\?\.\>\\u0338\\u08B0\\u08A6\?\'\)\ throws\ error\ B1\ P1\ V6\ \[data\/IdnaTest\.txt\:5648\]") or ($@ and diag($@)); @@ -6939,18 +6939,18 @@ is(eval{uts46_to_unicode("񗑿\x{A806}₄򩞆。𲩧󠒹Σ", %p)}, undef, "to_un is(eval{uts46_to_unicode("񗑿\x{A806}₄򩞆。𲩧󠒹σ", %p)}, undef, "to_unicode\(\'\?\\uA806₄\?。\?\?σ\'\)\ throws\ error\ P1\ V6\ \[data\/IdnaTest\.txt\:7003\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v7.0 (perl v5.21.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v7.0; is(eval{uts46_to_unicode("󠆀\x{0723}。\x{1DF4}\x{0775}", %p)}, undef, "to_unicode\(\'\󠆀\\u0723\。\\u1DF4\\u0775\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7004\]") or ($@ and diag($@)); } is(eval{uts46_to_unicode("xn--tnb.xn--5pb136i", %p)}, undef, "to_unicode\(\'xn\-\-tnb\.xn\-\-5pb136i\'\)\ throws\ error\ B1\ V5\ \[data\/IdnaTest\.txt\:7005\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7006\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7007\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨\。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7008\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨\。\?Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7009\]") or ($@ and diag($@)); -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨\。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7010\]") or ($@ and diag($@)); } -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨\。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7011\]") or ($@ and diag($@)); } +is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7006\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7007\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨\。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7008\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖Ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨\。𬼖Ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ P1\ V6\ \[data\/IdnaTest\.txt\:7009\]") or ($@ and diag($@)); +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨\。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7010\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨\。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7011\]") or ($@ and diag($@)); } is(eval{uts46_to_unicode("xn--0vb1535kdb6e.xn--8kjz186s", %p)}, undef, "to_unicode\(\'xn\-\-0vb1535kdb6e\.xn\-\-8kjz186s\'\)\ throws\ error\ B1\ \[data\/IdnaTest\.txt\:7012\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--0vb1535kdb6e.xn--1ug742c5714c", %p)}, undef, "to_unicode\(\'xn\-\-0vb1535kdb6e\.xn\-\-1ug742c5714c\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7013\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--0vb1535kdb6e.xn--pnd93707a", %p)}, undef, "to_unicode\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd93707a\'\)\ throws\ error\ B1\ V6\ \[data\/IdnaTest\.txt\:7014\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--0vb1535kdb6e.xn--pnd879eqy33c", %p)}, undef, "to_unicode\(\'xn\-\-0vb1535kdb6e\.xn\-\-pnd879eqy33c\'\)\ throws\ error\ B1\ B6\ C2\ V6\ \[data\/IdnaTest\.txt\:7015\]") or ($@ and diag($@)); -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7016\]") or ($@ and diag($@)); } -SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨。\?ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7017\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7016\]") or ($@ and diag($@)); } +SKIP: { skip sprintf("requires Unicode® v10.0 (perl v5.28.0) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v10.0; is(eval{uts46_to_unicode("𐹱\x{0842}𝪨。𬼖ⴑ\x{200D}", %p)}, undef, "to_unicode\(\'𐹱\\u0842𝪨。𬼖ⴑ\\u200D\'\)\ throws\ error\ B1\ B6\ C2\ \[data\/IdnaTest\.txt\:7017\]") or ($@ and diag($@)); } is(eval{uts46_to_unicode("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)}, undef, "to_unicode\(\'\\u1714𐭪\?\\u200D。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7018\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)}, undef, "to_unicode\(\'\\u1714𐭪\?\\u200D。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7019\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("\x{1714}𐭪󠙘\x{200D}。-𐹴", %p)}, undef, "to_unicode\(\'\\u1714𐭪\?\\u200D\。\-𐹴\'\)\ throws\ error\ B1\ C2\ P1\ V3\ V5\ V6\ \[data\/IdnaTest\.txt\:7020\]") or ($@ and diag($@)); @@ -7594,13 +7594,13 @@ is(eval{uts46_to_unicode("xn--ie8c.xn--2g51a", %p)}, undef, "to_unicode\(\'xn\-\ is(eval{uts46_to_unicode("xn--ie8c.xn--0ug03366c", %p)}, undef, "to_unicode\(\'xn\-\-ie8c\.xn\-\-0ug03366c\'\)\ throws\ error\ C1\ V5\ V6\ \[data\/IdnaTest\.txt\:7658\]") or ($@ and diag($@)); SKIP: { skip sprintf("requires Unicode® v5.1 (perl v5.10.1) or higher, only v%vd is supported (perl v%vd)", $UCD_VERSION, $^V), 1 if $UCD_VERSION lt v5.1; is(eval{uts46_to_unicode("\x{063D}\x{06E3}.𐨎", %p)}, undef, "to_unicode\(\'\\u063D\\u06E3\.𐨎\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7659\]") or ($@ and diag($@)); } is(eval{uts46_to_unicode("xn--8gb64a.xn--mr9c", %p)}, undef, "to_unicode\(\'xn\-\-8gb64a\.xn\-\-mr9c\'\)\ throws\ error\ B1\ B3\ B6\ V5\ \[data\/IdnaTest\.txt\:7660\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("漦Ⴙς.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦Ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7661\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("漦Ⴙς.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦Ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7662\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("漦ⴙς.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7663\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("漦ⴙς.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦ⴙς\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7664\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("漦ႹΣ.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦ႹΣ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("漦ⴙσ.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@)); -is(eval{uts46_to_unicode("漦Ⴙσ.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦Ⴙσ\.\?\?\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("漦Ⴙς.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦Ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7661\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("漦Ⴙς.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦Ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7662\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("漦ⴙς.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7663\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("漦ⴙς.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦ⴙς\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7664\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("漦ႹΣ.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦ႹΣ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7665\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("漦ⴙσ.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7666\]") or ($@ and diag($@)); +is(eval{uts46_to_unicode("漦Ⴙσ.񡻀𐴄", %p)}, undef, "to_unicode\(\'漦Ⴙσ\.\?𐴄\'\)\ throws\ error\ B5\ B6\ P1\ V6\ \[data\/IdnaTest\.txt\:7667\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--4xa947d717e.xn--9d0d3162t", %p)}, undef, "to_unicode\(\'xn\-\-4xa947d717e\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7668\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--4xa772sl47b.xn--9d0d3162t", %p)}, undef, "to_unicode\(\'xn\-\-4xa772sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7669\]") or ($@ and diag($@)); is(eval{uts46_to_unicode("xn--3xa972sl47b.xn--9d0d3162t", %p)}, undef, "to_unicode\(\'xn\-\-3xa972sl47b\.xn\-\-9d0d3162t\'\)\ throws\ error\ B5\ B6\ V6\ \[data\/IdnaTest\.txt\:7670\]") or ($@ and diag($@)); -- 2.1.4