diff --git a/Cargo.lock b/Cargo.lock index c9df30ad26..bc32dffa04 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1402,6 +1402,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" dependencies = [ + "phf_macros", "phf_shared", ] @@ -1425,6 +1426,19 @@ dependencies = [ "rand", ] +[[package]] +name = "phf_macros" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92aacdc5f16768709a569e913f7451034034178b05bdc8acda226659a3dccc66" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "phf_shared" version = "0.11.1" @@ -1752,6 +1766,7 @@ dependencies = [ "path-absolutize", "pathdiff", "pep440_rs", + "phf", "pretty_assertions", "pyproject-toml", "quick-junit", diff --git a/crates/ruff/Cargo.toml b/crates/ruff/Cargo.toml index 77cfba42c2..022691acdd 100644 --- a/crates/ruff/Cargo.toml +++ b/crates/ruff/Cargo.toml @@ -52,6 +52,7 @@ path-absolutize = { workspace = true, features = [ ] } pathdiff = { version = "0.2.1" } pep440_rs = { version = "0.3.1", features = ["serde"] } +phf = { version = "0.11", features = ["macros"] } pyproject-toml = { version = "0.6.0" } quick-junit = { version = "0.3.2" } regex = { workspace = true } diff --git a/crates/ruff/src/rules/ruff/rules/confusables.rs b/crates/ruff/src/rules/ruff/rules/confusables.rs index e3ff076259..c007fdc327 100644 --- a/crates/ruff/src/rules/ruff/rules/confusables.rs +++ b/crates/ruff/src/rules/ruff/rules/confusables.rs @@ -1,2120 +1,1590 @@ /// This file is auto-generated by `scripts/update_ambiguous_characters.py`. -use once_cell::sync::Lazy; -use rustc_hash::FxHashMap; +use phf::phf_map; /// Via: /// See: -pub(crate) static CONFUSABLES: Lazy> = Lazy::new(|| { - #[allow(clippy::unreadable_literal)] - FxHashMap::from_iter([ - (8232, 32), - (8233, 32), - (5760, 32), - (8192, 32), - (8193, 32), - (8194, 32), - (8195, 32), - (8196, 32), - (8197, 32), - (8198, 32), - (8200, 32), - (8201, 32), - (8202, 32), - (8287, 32), - (8199, 32), - (8239, 32), - (2042, 95), - (65101, 95), - (65102, 95), - (65103, 95), - (8208, 45), - (8209, 45), - (8210, 45), - (65112, 45), - (1748, 45), - (8259, 45), - (727, 45), - (8722, 45), - (10134, 45), - (11450, 45), - (1549, 44), - (1643, 44), - (8218, 44), - (184, 44), - (42233, 44), - (894, 59), - (2307, 58), - (2691, 58), - (1417, 58), - (1795, 58), - (1796, 58), - (5868, 58), - (65072, 58), - (6147, 58), - (6153, 58), - (8282, 58), - (1475, 58), - (760, 58), - (42889, 58), - (8758, 58), - (720, 58), - (42237, 58), - (451, 33), - (11601, 33), - (660, 63), - (577, 63), - (2429, 63), - (5038, 63), - (42731, 63), - (119149, 46), - (8228, 46), - (1793, 46), - (1794, 46), - (42510, 46), - (68176, 46), - (1632, 46), - (1776, 46), - (42232, 46), - (1373, 96), - (65287, 96), - (8219, 96), - (8242, 96), - (1370, 96), - (1523, 96), - (8175, 96), - (65344, 96), - (900, 96), - (8189, 96), - (8125, 96), - (8127, 96), - (8190, 96), - (697, 96), - (884, 96), - (712, 96), - (714, 96), - (715, 96), - (756, 96), - (699, 96), - (701, 96), - (700, 96), - (702, 96), - (42892, 96), - (1497, 96), - (2036, 96), - (2037, 96), - (5194, 96), - (5836, 96), - (94033, 96), - (94034, 96), - (65339, 91), - (10088, 40), - (10098, 40), - (12308, 40), - (64830, 40), - (65341, 93), - (10089, 41), - (10099, 41), - (12309, 41), - (64831, 41), - (10100, 123), - (119060, 123), - (10101, 125), - (65342, 94), - (8270, 42), - (1645, 42), - (8727, 42), - (66335, 42), - (5941, 47), - (8257, 47), - (8725, 47), - (8260, 47), - (9585, 47), - (10187, 47), - (10744, 47), - (119354, 47), - (12755, 47), - (12339, 47), - (11462, 47), - (20031, 47), - (12035, 47), - (65340, 92), - (65128, 92), - (8726, 92), - (10189, 92), - (10741, 92), - (10745, 92), - (119311, 92), - (119355, 92), - (12756, 92), - (20022, 92), - (12034, 92), - (42872, 38), - (708, 94), - (710, 94), - (5869, 43), - (10133, 43), - (66203, 43), - (8249, 60), - (10094, 60), - (706, 60), - (119350, 60), - (5176, 60), - (5810, 60), - (5120, 61), - (11840, 61), - (12448, 61), - (42239, 61), - (8250, 62), - (10095, 62), - (707, 62), - (119351, 62), - (5171, 62), - (94015, 62), - (8275, 126), - (732, 126), - (8128, 126), - (8764, 126), - (65372, 124), - (65293, 45), - (120784, 50), - (120794, 50), - (120804, 50), - (120814, 50), - (120824, 50), - (130034, 50), - (42842, 50), - (423, 50), - (1000, 50), - (42564, 50), - (5311, 50), - (42735, 50), - (119302, 51), - (120785, 51), - (120795, 51), - (120805, 51), - (120815, 51), - (120825, 51), - (130035, 51), - (42923, 51), - (540, 51), - (439, 51), - (42858, 51), - (11468, 51), - (1248, 51), - (94011, 51), - (71882, 51), - (120786, 52), - (120796, 52), - (120806, 52), - (120816, 52), - (120826, 52), - (130036, 52), - (5070, 52), - (71855, 52), - (120787, 53), - (120797, 53), - (120807, 53), - (120817, 53), - (120827, 53), - (130037, 53), - (444, 53), - (71867, 53), - (120788, 54), - (120798, 54), - (120808, 54), - (120818, 54), - (120828, 54), - (130038, 54), - (11474, 54), - (5102, 54), - (71893, 54), - (119314, 55), - (120789, 55), - (120799, 55), - (120809, 55), - (120819, 55), - (120829, 55), - (130039, 55), - (66770, 55), - (71878, 55), - (2819, 56), - (2538, 56), - (2666, 56), - (125131, 56), - (120790, 56), - (120800, 56), - (120810, 56), - (120820, 56), - (120830, 56), - (130040, 56), - (547, 56), - (546, 56), - (66330, 56), - (2663, 57), - (2920, 57), - (2541, 57), - (3437, 57), - (120791, 57), - (120801, 57), - (120811, 57), - (120821, 57), - (120831, 57), - (130041, 57), - (42862, 57), - (11466, 57), - (71884, 57), - (71852, 57), - (71894, 57), - (9082, 97), - (65345, 97), - (119834, 97), - (119886, 97), - (119938, 97), - (119990, 97), - (120042, 97), - (120094, 97), - (120146, 97), - (120198, 97), - (120250, 97), - (120302, 97), - (120354, 97), - (120406, 97), - (120458, 97), - (593, 97), - (945, 97), - (120514, 97), - (120572, 97), - (120630, 97), - (120688, 97), - (120746, 97), - (65313, 65), - (119808, 65), - (119860, 65), - (119912, 65), - (119964, 65), - (120016, 65), - (120068, 65), - (120120, 65), - (120172, 65), - (120224, 65), - (120276, 65), - (120328, 65), - (120380, 65), - (120432, 65), - (913, 65), - (120488, 65), - (120546, 65), - (120604, 65), - (120662, 65), - (120720, 65), - (5034, 65), - (5573, 65), - (42222, 65), - (94016, 65), - (66208, 65), - (119835, 98), - (119887, 98), - (119939, 98), - (119991, 98), - (120043, 98), - (120095, 98), - (120147, 98), - (120199, 98), - (120251, 98), - (120303, 98), - (120355, 98), - (120407, 98), - (120459, 98), - (388, 98), - (5071, 98), - (5234, 98), - (5551, 98), - (65314, 66), - (8492, 66), - (119809, 66), - (119861, 66), - (119913, 66), - (120017, 66), - (120069, 66), - (120121, 66), - (120173, 66), - (120225, 66), - (120277, 66), - (120329, 66), - (120381, 66), - (120433, 66), - (42932, 66), - (914, 66), - (120489, 66), - (120547, 66), - (120605, 66), - (120663, 66), - (120721, 66), - (5108, 66), - (5623, 66), - (42192, 66), - (66178, 66), - (66209, 66), - (66305, 66), - (65347, 99), - (8573, 99), - (119836, 99), - (119888, 99), - (119940, 99), - (119992, 99), - (120044, 99), - (120096, 99), - (120148, 99), - (120200, 99), - (120252, 99), - (120304, 99), - (120356, 99), - (120408, 99), - (120460, 99), - (7428, 99), - (1010, 99), - (11429, 99), - (43951, 99), - (66621, 99), - (128844, 67), - (71922, 67), - (71913, 67), - (65315, 67), - (8557, 67), - (8450, 67), - (8493, 67), - (119810, 67), - (119862, 67), - (119914, 67), - (119966, 67), - (120018, 67), - (120174, 67), - (120226, 67), - (120278, 67), - (120330, 67), - (120382, 67), - (120434, 67), - (1017, 67), - (11428, 67), - (5087, 67), - (42202, 67), - (66210, 67), - (66306, 67), - (66581, 67), - (66844, 67), - (8574, 100), - (8518, 100), - (119837, 100), - (119889, 100), - (119941, 100), - (119993, 100), - (120045, 100), - (120097, 100), - (120149, 100), - (120201, 100), - (120253, 100), - (120305, 100), - (120357, 100), - (120409, 100), - (120461, 100), - (1281, 100), - (5095, 100), - (5231, 100), - (42194, 100), - (8558, 68), - (8517, 68), - (119811, 68), - (119863, 68), - (119915, 68), - (119967, 68), - (120019, 68), - (120071, 68), - (120123, 68), - (120175, 68), - (120227, 68), - (120279, 68), - (120331, 68), - (120383, 68), - (120435, 68), - (5024, 68), - (5598, 68), - (5610, 68), - (42195, 68), - (8494, 101), - (65349, 101), - (8495, 101), - (8519, 101), - (119838, 101), - (119890, 101), - (119942, 101), - (120046, 101), - (120098, 101), - (120150, 101), - (120202, 101), - (120254, 101), - (120306, 101), - (120358, 101), - (120410, 101), - (120462, 101), - (43826, 101), - (1213, 101), - (8959, 69), - (65317, 69), - (8496, 69), - (119812, 69), - (119864, 69), - (119916, 69), - (120020, 69), - (120072, 69), - (120124, 69), - (120176, 69), - (120228, 69), - (120280, 69), - (120332, 69), - (120384, 69), - (120436, 69), - (917, 69), - (120492, 69), - (120550, 69), - (120608, 69), - (120666, 69), - (120724, 69), - (11577, 69), - (5036, 69), - (42224, 69), - (71846, 69), - (71854, 69), - (66182, 69), - (119839, 102), - (119891, 102), - (119943, 102), - (119995, 102), - (120047, 102), - (120099, 102), - (120151, 102), - (120203, 102), - (120255, 102), - (120307, 102), - (120359, 102), - (120411, 102), - (120463, 102), - (43829, 102), - (42905, 102), - (383, 102), - (7837, 102), - (1412, 102), - (119315, 70), - (8497, 70), - (119813, 70), - (119865, 70), - (119917, 70), - (120021, 70), - (120073, 70), - (120125, 70), - (120177, 70), - (120229, 70), - (120281, 70), - (120333, 70), - (120385, 70), - (120437, 70), - (42904, 70), - (988, 70), - (120778, 70), - (5556, 70), - (42205, 70), - (71874, 70), - (71842, 70), - (66183, 70), - (66213, 70), - (66853, 70), - (65351, 103), - (8458, 103), - (119840, 103), - (119892, 103), - (119944, 103), - (120048, 103), - (120100, 103), - (120152, 103), - (120204, 103), - (120256, 103), - (120308, 103), - (120360, 103), - (120412, 103), - (120464, 103), - (609, 103), - (7555, 103), - (397, 103), - (1409, 103), - (119814, 71), - (119866, 71), - (119918, 71), - (119970, 71), - (120022, 71), - (120074, 71), - (120126, 71), - (120178, 71), - (120230, 71), - (120282, 71), - (120334, 71), - (120386, 71), - (120438, 71), - (1292, 71), - (5056, 71), - (5107, 71), - (42198, 71), - (65352, 104), - (8462, 104), - (119841, 104), - (119945, 104), - (119997, 104), - (120049, 104), - (120101, 104), - (120153, 104), - (120205, 104), - (120257, 104), - (120309, 104), - (120361, 104), - (120413, 104), - (120465, 104), - (1211, 104), - (1392, 104), - (5058, 104), - (65320, 72), - (8459, 72), - (8460, 72), - (8461, 72), - (119815, 72), - (119867, 72), - (119919, 72), - (120023, 72), - (120179, 72), - (120231, 72), - (120283, 72), - (120335, 72), - (120387, 72), - (120439, 72), - (919, 72), - (120494, 72), - (120552, 72), - (120610, 72), - (120668, 72), - (120726, 72), - (11406, 72), - (5051, 72), - (5500, 72), - (42215, 72), - (66255, 72), - (731, 105), - (9075, 105), - (65353, 105), - (8560, 105), - (8505, 105), - (8520, 105), - (119842, 105), - (119894, 105), - (119946, 105), - (119998, 105), - (120050, 105), - (120102, 105), - (120154, 105), - (120206, 105), - (120258, 105), - (120310, 105), - (120362, 105), - (120414, 105), - (120466, 105), - (120484, 105), - (618, 105), - (617, 105), - (953, 105), - (8126, 105), - (890, 105), - (120522, 105), - (120580, 105), - (120638, 105), - (120696, 105), - (120754, 105), - (1110, 105), - (42567, 105), - (1231, 105), - (43893, 105), - (5029, 105), - (71875, 105), - (65354, 106), - (8521, 106), - (119843, 106), - (119895, 106), - (119947, 106), - (119999, 106), - (120051, 106), - (120103, 106), - (120155, 106), - (120207, 106), - (120259, 106), - (120311, 106), - (120363, 106), - (120415, 106), - (120467, 106), - (1011, 106), - (1112, 106), - (65322, 74), - (119817, 74), - (119869, 74), - (119921, 74), - (119973, 74), - (120025, 74), - (120077, 74), - (120129, 74), - (120181, 74), - (120233, 74), - (120285, 74), - (120337, 74), - (120389, 74), - (120441, 74), - (42930, 74), - (895, 74), - (1032, 74), - (5035, 74), - (5261, 74), - (42201, 74), - (119844, 107), - (119896, 107), - (119948, 107), - (120000, 107), - (120052, 107), - (120104, 107), - (120156, 107), - (120208, 107), - (120260, 107), - (120312, 107), - (120364, 107), - (120416, 107), - (120468, 107), - (8490, 75), - (65323, 75), - (119818, 75), - (119870, 75), - (119922, 75), - (119974, 75), - (120026, 75), - (120078, 75), - (120130, 75), - (120182, 75), - (120234, 75), - (120286, 75), - (120338, 75), - (120390, 75), - (120442, 75), - (922, 75), - (120497, 75), - (120555, 75), - (120613, 75), - (120671, 75), - (120729, 75), - (11412, 75), - (5094, 75), - (5845, 75), - (42199, 75), - (66840, 75), - (1472, 108), - (8739, 73), - (9213, 73), - (65512, 73), - (1633, 108), - (1777, 73), - (66336, 108), - (125127, 108), - (120783, 73), - (120793, 73), - (120803, 73), - (120813, 73), - (120823, 73), - (130033, 73), - (65321, 73), - (8544, 73), - (8464, 73), - (8465, 73), - (119816, 73), - (119868, 73), - (119920, 73), - (120024, 73), - (120128, 73), - (120180, 73), - (120232, 73), - (120284, 73), - (120336, 73), - (120388, 73), - (120440, 73), - (65356, 108), - (8572, 73), - (8467, 108), - (119845, 108), - (119897, 108), - (119949, 108), - (120001, 108), - (120053, 108), - (120105, 73), - (120157, 73), - (120209, 73), - (120261, 73), - (120313, 73), - (120365, 73), - (120417, 73), - (120469, 73), - (448, 73), - (120496, 73), - (120554, 73), - (120612, 73), - (120670, 73), - (120728, 73), - (11410, 73), - (1030, 73), - (1216, 73), - (1493, 108), - (1503, 108), - (1575, 108), - (126464, 108), - (126592, 108), - (65166, 108), - (65165, 108), - (1994, 108), - (11599, 73), - (5825, 73), - (42226, 73), - (93992, 73), - (66186, 124), - (66313, 124), - (119338, 76), - (8556, 76), - (8466, 76), - (119819, 76), - (119871, 76), - (119923, 76), - (120027, 76), - (120079, 76), - (120131, 76), - (120183, 76), - (120235, 76), - (120287, 76), - (120339, 76), - (120391, 76), - (120443, 76), - (11472, 76), - (5086, 76), - (5290, 76), - (42209, 76), - (93974, 76), - (71843, 76), - (71858, 76), - (66587, 76), - (66854, 76), - (65325, 77), - (8559, 77), - (8499, 77), - (119820, 77), - (119872, 77), - (119924, 77), - (120028, 77), - (120080, 77), - (120132, 77), - (120184, 77), - (120236, 77), - (120288, 77), - (120340, 77), - (120392, 77), - (120444, 77), - (924, 77), - (120499, 77), - (120557, 77), - (120615, 77), - (120673, 77), - (120731, 77), - (1018, 77), - (11416, 77), - (5047, 77), - (5616, 77), - (5846, 77), - (42207, 77), - (66224, 77), - (66321, 77), - (119847, 110), - (119899, 110), - (119951, 110), - (120003, 110), - (120055, 110), - (120107, 110), - (120159, 110), - (120211, 110), - (120263, 110), - (120315, 110), - (120367, 110), - (120419, 110), - (120471, 110), - (1400, 110), - (1404, 110), - (65326, 78), - (8469, 78), - (119821, 78), - (119873, 78), - (119925, 78), - (119977, 78), - (120029, 78), - (120081, 78), - (120185, 78), - (120237, 78), - (120289, 78), - (120341, 78), - (120393, 78), - (120445, 78), - (925, 78), - (120500, 78), - (120558, 78), - (120616, 78), - (120674, 78), - (120732, 78), - (11418, 78), - (42208, 78), - (66835, 78), - (3074, 111), - (3202, 111), - (3330, 111), - (3458, 111), - (2406, 111), - (2662, 111), - (2790, 111), - (3046, 111), - (3174, 111), - (3302, 111), - (3430, 111), - (3664, 111), - (3792, 111), - (4160, 111), - (1637, 111), - (1781, 111), - (65359, 111), - (8500, 111), - (119848, 111), - (119900, 111), - (119952, 111), - (120056, 111), - (120108, 111), - (120160, 111), - (120212, 111), - (120264, 111), - (120316, 111), - (120368, 111), - (120420, 111), - (120472, 111), - (7439, 111), - (7441, 111), - (43837, 111), - (959, 111), - (120528, 111), - (120586, 111), - (120644, 111), - (120702, 111), - (120760, 111), - (963, 111), - (120532, 111), - (120590, 111), - (120648, 111), - (120706, 111), - (120764, 111), - (11423, 111), - (4351, 111), - (1413, 111), - (1505, 111), - (1607, 111), - (126500, 111), - (126564, 111), - (126596, 111), - (65259, 111), - (65260, 111), - (65258, 111), - (65257, 111), - (1726, 111), - (64428, 111), - (64429, 111), - (64427, 111), - (64426, 111), - (1729, 111), - (64424, 111), - (64425, 111), - (64423, 111), - (64422, 111), - (1749, 111), - (3360, 111), - (4125, 111), - (66794, 111), - (71880, 111), - (71895, 111), - (66604, 111), - (1984, 79), - (2534, 79), - (2918, 79), - (12295, 79), - (70864, 79), - (71904, 79), - (120782, 79), - (120792, 79), - (120802, 79), - (120812, 79), - (120822, 79), - (130032, 79), - (65327, 79), - (119822, 79), - (119874, 79), - (119926, 79), - (119978, 79), - (120030, 79), - (120082, 79), - (120134, 79), - (120186, 79), - (120238, 79), - (120290, 79), - (120342, 79), - (120394, 79), - (120446, 79), - (927, 79), - (120502, 79), - (120560, 79), - (120618, 79), - (120676, 79), - (120734, 79), - (11422, 79), - (1365, 79), - (11604, 79), - (4816, 79), - (2848, 79), - (66754, 79), - (42227, 79), - (71861, 79), - (66194, 79), - (66219, 79), - (66564, 79), - (66838, 79), - (9076, 112), - (65360, 112), - (119849, 112), - (119901, 112), - (119953, 112), - (120005, 112), - (120057, 112), - (120109, 112), - (120161, 112), - (120213, 112), - (120265, 112), - (120317, 112), - (120369, 112), - (120421, 112), - (120473, 112), - (961, 112), - (120530, 112), - (120544, 112), - (120588, 112), - (120602, 112), - (120646, 112), - (120660, 112), - (120704, 112), - (120718, 112), - (120762, 112), - (120776, 112), - (11427, 112), - (65328, 80), - (8473, 80), - (119823, 80), - (119875, 80), - (119927, 80), - (119979, 80), - (120031, 80), - (120083, 80), - (120187, 80), - (120239, 80), - (120291, 80), - (120343, 80), - (120395, 80), - (120447, 80), - (929, 80), - (120504, 80), - (120562, 80), - (120620, 80), - (120678, 80), - (120736, 80), - (11426, 80), - (5090, 80), - (5229, 80), - (42193, 80), - (66197, 80), - (119850, 113), - (119902, 113), - (119954, 113), - (120006, 113), - (120058, 113), - (120110, 113), - (120162, 113), - (120214, 113), - (120266, 113), - (120318, 113), - (120370, 113), - (120422, 113), - (120474, 113), - (1307, 113), - (1379, 113), - (1382, 113), - (8474, 81), - (119824, 81), - (119876, 81), - (119928, 81), - (119980, 81), - (120032, 81), - (120084, 81), - (120188, 81), - (120240, 81), - (120292, 81), - (120344, 81), - (120396, 81), - (120448, 81), - (11605, 81), - (119851, 114), - (119903, 114), - (119955, 114), - (120007, 114), - (120059, 114), - (120111, 114), - (120163, 114), - (120215, 114), - (120267, 114), - (120319, 114), - (120371, 114), - (120423, 114), - (120475, 114), - (43847, 114), - (43848, 114), - (7462, 114), - (11397, 114), - (43905, 114), - (119318, 82), - (8475, 82), - (8476, 82), - (8477, 82), - (119825, 82), - (119877, 82), - (119929, 82), - (120033, 82), - (120189, 82), - (120241, 82), - (120293, 82), - (120345, 82), - (120397, 82), - (120449, 82), - (422, 82), - (5025, 82), - (5074, 82), - (66740, 82), - (5511, 82), - (42211, 82), - (94005, 82), - (65363, 115), - (119852, 115), - (119904, 115), - (119956, 115), - (120008, 115), - (120060, 115), - (120112, 115), - (120164, 115), - (120216, 115), - (120268, 115), - (120320, 115), - (120372, 115), - (120424, 115), - (120476, 115), - (42801, 115), - (445, 115), - (1109, 115), - (43946, 115), - (71873, 115), - (66632, 115), - (65331, 83), - (119826, 83), - (119878, 83), - (119930, 83), - (119982, 83), - (120034, 83), - (120086, 83), - (120138, 83), - (120190, 83), - (120242, 83), - (120294, 83), - (120346, 83), - (120398, 83), - (120450, 83), - (1029, 83), - (1359, 83), - (5077, 83), - (5082, 83), - (42210, 83), - (94010, 83), - (66198, 83), - (66592, 83), - (119853, 116), - (119905, 116), - (119957, 116), - (120009, 116), - (120061, 116), - (120113, 116), - (120165, 116), - (120217, 116), - (120269, 116), - (120321, 116), - (120373, 116), - (120425, 116), - (120477, 116), - (8868, 84), - (10201, 84), - (128872, 84), - (65332, 84), - (119827, 84), - (119879, 84), - (119931, 84), - (119983, 84), - (120035, 84), - (120087, 84), - (120139, 84), - (120191, 84), - (120243, 84), - (120295, 84), - (120347, 84), - (120399, 84), - (120451, 84), - (932, 84), - (120507, 84), - (120565, 84), - (120623, 84), - (120681, 84), - (120739, 84), - (11430, 84), - (5026, 84), - (42196, 84), - (93962, 84), - (71868, 84), - (66199, 84), - (66225, 84), - (66325, 84), - (119854, 117), - (119906, 117), - (119958, 117), - (120010, 117), - (120062, 117), - (120114, 117), - (120166, 117), - (120218, 117), - (120270, 117), - (120322, 117), - (120374, 117), - (120426, 117), - (120478, 117), - (42911, 117), - (7452, 117), - (43854, 117), - (43858, 117), - (651, 117), - (965, 117), - (120534, 117), - (120592, 117), - (120650, 117), - (120708, 117), - (120766, 117), - (1405, 117), - (66806, 117), - (71896, 117), - (8746, 85), - (8899, 85), - (119828, 85), - (119880, 85), - (119932, 85), - (119984, 85), - (120036, 85), - (120088, 85), - (120140, 85), - (120192, 85), - (120244, 85), - (120296, 85), - (120348, 85), - (120400, 85), - (120452, 85), - (1357, 85), - (4608, 85), - (66766, 85), - (5196, 85), - (42228, 85), - (94018, 85), - (71864, 85), - (8744, 118), - (8897, 118), - (65366, 118), - (8564, 118), - (119855, 118), - (119907, 118), - (119959, 118), - (120011, 118), - (120063, 118), - (120115, 118), - (120167, 118), - (120219, 118), - (120271, 118), - (120323, 118), - (120375, 118), - (120427, 118), - (120479, 118), - (7456, 118), - (957, 118), - (120526, 118), - (120584, 118), - (120642, 118), - (120700, 118), - (120758, 118), - (1141, 118), - (1496, 118), - (71430, 118), - (43945, 118), - (71872, 118), - (119309, 86), - (1639, 86), - (1783, 86), - (8548, 86), - (119829, 86), - (119881, 86), - (119933, 86), - (119985, 86), - (120037, 86), - (120089, 86), - (120141, 86), - (120193, 86), - (120245, 86), - (120297, 86), - (120349, 86), - (120401, 86), - (120453, 86), - (1140, 86), - (11576, 86), - (5081, 86), - (5167, 86), - (42719, 86), - (42214, 86), - (93960, 86), - (71840, 86), - (66845, 86), - (623, 119), - (119856, 119), - (119908, 119), - (119960, 119), - (120012, 119), - (120064, 119), - (120116, 119), - (120168, 119), - (120220, 119), - (120272, 119), - (120324, 119), - (120376, 119), - (120428, 119), - (120480, 119), - (7457, 119), - (1121, 119), - (1309, 119), - (1377, 119), - (71434, 119), - (71438, 119), - (71439, 119), - (43907, 119), - (71919, 87), - (71910, 87), - (119830, 87), - (119882, 87), - (119934, 87), - (119986, 87), - (120038, 87), - (120090, 87), - (120142, 87), - (120194, 87), - (120246, 87), - (120298, 87), - (120350, 87), - (120402, 87), - (120454, 87), - (1308, 87), - (5043, 87), - (5076, 87), - (42218, 87), - (5742, 120), - (10539, 120), - (10540, 120), - (10799, 120), - (65368, 120), - (8569, 120), - (119857, 120), - (119909, 120), - (119961, 120), - (120013, 120), - (120065, 120), - (120117, 120), - (120169, 120), - (120221, 120), - (120273, 120), - (120325, 120), - (120377, 120), - (120429, 120), - (120481, 120), - (5441, 120), - (5501, 120), - (5741, 88), - (9587, 88), - (66338, 88), - (71916, 88), - (65336, 88), - (8553, 88), - (119831, 88), - (119883, 88), - (119935, 88), - (119987, 88), - (120039, 88), - (120091, 88), - (120143, 88), - (120195, 88), - (120247, 88), - (120299, 88), - (120351, 88), - (120403, 88), - (120455, 88), - (42931, 88), - (935, 88), - (120510, 88), - (120568, 88), - (120626, 88), - (120684, 88), - (120742, 88), - (11436, 88), - (11613, 88), - (5815, 88), - (42219, 88), - (66192, 88), - (66228, 88), - (66327, 88), - (66855, 88), - (611, 121), - (7564, 121), - (65369, 121), - (119858, 121), - (119910, 121), - (119962, 121), - (120014, 121), - (120066, 121), - (120118, 121), - (120170, 121), - (120222, 121), - (120274, 121), - (120326, 121), - (120378, 121), - (120430, 121), - (120482, 121), - (655, 121), - (7935, 121), - (43866, 121), - (947, 121), - (8509, 121), - (120516, 121), - (120574, 121), - (120632, 121), - (120690, 121), - (120748, 121), - (1199, 121), - (4327, 121), - (71900, 121), - (65337, 89), - (119832, 89), - (119884, 89), - (119936, 89), - (119988, 89), - (120040, 89), - (120092, 89), - (120144, 89), - (120196, 89), - (120248, 89), - (120300, 89), - (120352, 89), - (120404, 89), - (120456, 89), - (933, 89), - (978, 89), - (120508, 89), - (120566, 89), - (120624, 89), - (120682, 89), - (120740, 89), - (11432, 89), - (1198, 89), - (5033, 89), - (5053, 89), - (42220, 89), - (94019, 89), - (71844, 89), - (66226, 89), - (119859, 122), - (119911, 122), - (119963, 122), - (120015, 122), - (120067, 122), - (120119, 122), - (120171, 122), - (120223, 122), - (120275, 122), - (120327, 122), - (120379, 122), - (120431, 122), - (120483, 122), - (7458, 122), - (43923, 122), - (71876, 122), - (66293, 90), - (71909, 90), - (65338, 90), - (8484, 90), - (8488, 90), - (119833, 90), - (119885, 90), - (119937, 90), - (119989, 90), - (120041, 90), - (120197, 90), - (120249, 90), - (120301, 90), - (120353, 90), - (120405, 90), - (120457, 90), - (918, 90), - (120493, 90), - (120551, 90), - (120609, 90), - (120667, 90), - (120725, 90), - (5059, 90), - (42204, 90), - (71849, 90), - (65282, 34), - (65284, 36), - (65285, 37), - (65286, 38), - (65290, 42), - (65291, 43), - (65294, 46), - (65295, 47), - (65296, 48), - (65297, 49), - (65298, 50), - (65299, 51), - (65300, 52), - (65301, 53), - (65302, 54), - (65303, 55), - (65304, 56), - (65305, 57), - (65308, 60), - (65309, 61), - (65310, 62), - (65312, 64), - (65316, 68), - (65318, 70), - (65319, 71), - (65324, 76), - (65329, 81), - (65330, 82), - (65333, 85), - (65334, 86), - (65335, 87), - (65343, 95), - (65346, 98), - (65348, 100), - (65350, 102), - (65355, 107), - (65357, 109), - (65358, 110), - (65361, 113), - (65362, 114), - (65364, 116), - (65365, 117), - (65367, 119), - (65370, 122), - (65371, 123), - (65373, 125), - (119846, 109), - (160, 32), - (8211, 45), - (65374, 126), - (65306, 58), - (65281, 33), - (8216, 96), - (8217, 96), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (65374, 126), - (65306, 58), - (65281, 33), - (8216, 96), - (8217, 96), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (65374, 126), - (65306, 58), - (65281, 33), - (8216, 96), - (8217, 96), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (8211, 45), - (65374, 126), - (65306, 58), - (65281, 33), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (65374, 126), - (65306, 58), - (65281, 33), - (8216, 96), - (8245, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (160, 32), - (8211, 45), - (65374, 126), - (65306, 58), - (65281, 33), - (8216, 96), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (8211, 45), - (65306, 58), - (65281, 33), - (8216, 96), - (8217, 96), - (8245, 96), - (180, 96), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65292, 44), - (65307, 59), - (8211, 45), - (65374, 126), - (65306, 58), - (65281, 33), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (65374, 126), - (65306, 58), - (65281, 33), - (8216, 96), - (8217, 96), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (65374, 126), - (65306, 58), - (65281, 33), - (8216, 96), - (8217, 96), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (160, 32), - (8211, 45), - (65374, 126), - (65306, 58), - (65281, 33), - (8216, 96), - (8217, 96), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (65374, 126), - (65306, 58), - (65281, 33), - (8216, 96), - (8217, 96), - (8245, 96), - (180, 96), - (12494, 47), - (305, 105), - (921, 73), - (1009, 112), - (215, 120), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (160, 32), - (8211, 45), - (65374, 126), - (65306, 58), - (65281, 33), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65288, 40), - (65289, 41), - (65292, 44), - (65307, 59), - (65311, 63), - (65374, 126), - (65306, 58), - (65281, 33), - (8245, 96), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65288, 40), - (65289, 41), - (8211, 45), - (65374, 126), - (180, 96), - (12494, 47), - (1047, 51), - (1073, 54), - (1072, 97), - (1040, 65), - (1068, 98), - (1042, 66), - (1089, 99), - (1057, 67), - (1077, 101), - (1045, 69), - (1053, 72), - (305, 105), - (1050, 75), - (921, 73), - (1052, 77), - (1086, 111), - (1054, 79), - (1009, 112), - (1088, 112), - (1056, 80), - (1075, 114), - (1058, 84), - (215, 120), - (1093, 120), - (1061, 88), - (1091, 121), - (1059, 89), - (65283, 35), - (65307, 59), - ]) -}); +#[allow(clippy::unreadable_literal)] +pub(crate) static CONFUSABLES: phf::Map = phf_map! { + 160u32 => 32, + 180u32 => 96, + 184u32 => 44, + 215u32 => 120, + 305u32 => 105, + 383u32 => 102, + 388u32 => 98, + 397u32 => 103, + 422u32 => 82, + 423u32 => 50, + 439u32 => 51, + 444u32 => 53, + 445u32 => 115, + 448u32 => 73, + 451u32 => 33, + 540u32 => 51, + 546u32 => 56, + 547u32 => 56, + 577u32 => 63, + 593u32 => 97, + 609u32 => 103, + 611u32 => 121, + 617u32 => 105, + 618u32 => 105, + 623u32 => 119, + 651u32 => 117, + 655u32 => 121, + 660u32 => 63, + 697u32 => 96, + 699u32 => 96, + 700u32 => 96, + 701u32 => 96, + 702u32 => 96, + 706u32 => 60, + 707u32 => 62, + 708u32 => 94, + 710u32 => 94, + 712u32 => 96, + 714u32 => 96, + 715u32 => 96, + 720u32 => 58, + 727u32 => 45, + 731u32 => 105, + 732u32 => 126, + 756u32 => 96, + 760u32 => 58, + 884u32 => 96, + 890u32 => 105, + 894u32 => 59, + 895u32 => 74, + 900u32 => 96, + 913u32 => 65, + 914u32 => 66, + 917u32 => 69, + 918u32 => 90, + 919u32 => 72, + 921u32 => 73, + 922u32 => 75, + 924u32 => 77, + 925u32 => 78, + 927u32 => 79, + 929u32 => 80, + 932u32 => 84, + 933u32 => 89, + 935u32 => 88, + 945u32 => 97, + 947u32 => 121, + 953u32 => 105, + 957u32 => 118, + 959u32 => 111, + 961u32 => 112, + 963u32 => 111, + 965u32 => 117, + 978u32 => 89, + 988u32 => 70, + 1000u32 => 50, + 1009u32 => 112, + 1010u32 => 99, + 1011u32 => 106, + 1017u32 => 67, + 1018u32 => 77, + 1029u32 => 83, + 1030u32 => 73, + 1032u32 => 74, + 1040u32 => 65, + 1042u32 => 66, + 1045u32 => 69, + 1047u32 => 51, + 1050u32 => 75, + 1052u32 => 77, + 1053u32 => 72, + 1054u32 => 79, + 1056u32 => 80, + 1057u32 => 67, + 1058u32 => 84, + 1059u32 => 89, + 1061u32 => 88, + 1068u32 => 98, + 1072u32 => 97, + 1073u32 => 54, + 1075u32 => 114, + 1077u32 => 101, + 1086u32 => 111, + 1088u32 => 112, + 1089u32 => 99, + 1091u32 => 121, + 1093u32 => 120, + 1109u32 => 115, + 1110u32 => 105, + 1112u32 => 106, + 1121u32 => 119, + 1140u32 => 86, + 1141u32 => 118, + 1198u32 => 89, + 1199u32 => 121, + 1211u32 => 104, + 1213u32 => 101, + 1216u32 => 73, + 1231u32 => 105, + 1248u32 => 51, + 1281u32 => 100, + 1292u32 => 71, + 1307u32 => 113, + 1308u32 => 87, + 1309u32 => 119, + 1357u32 => 85, + 1359u32 => 83, + 1365u32 => 79, + 1370u32 => 96, + 1373u32 => 96, + 1377u32 => 119, + 1379u32 => 113, + 1382u32 => 113, + 1392u32 => 104, + 1400u32 => 110, + 1404u32 => 110, + 1405u32 => 117, + 1409u32 => 103, + 1412u32 => 102, + 1413u32 => 111, + 1417u32 => 58, + 1472u32 => 108, + 1475u32 => 58, + 1493u32 => 108, + 1496u32 => 118, + 1497u32 => 96, + 1503u32 => 108, + 1505u32 => 111, + 1523u32 => 96, + 1549u32 => 44, + 1575u32 => 108, + 1607u32 => 111, + 1632u32 => 46, + 1633u32 => 108, + 1637u32 => 111, + 1639u32 => 86, + 1643u32 => 44, + 1645u32 => 42, + 1726u32 => 111, + 1729u32 => 111, + 1748u32 => 45, + 1749u32 => 111, + 1776u32 => 46, + 1777u32 => 73, + 1781u32 => 111, + 1783u32 => 86, + 1793u32 => 46, + 1794u32 => 46, + 1795u32 => 58, + 1796u32 => 58, + 1984u32 => 79, + 1994u32 => 108, + 2036u32 => 96, + 2037u32 => 96, + 2042u32 => 95, + 2307u32 => 58, + 2406u32 => 111, + 2429u32 => 63, + 2534u32 => 79, + 2538u32 => 56, + 2541u32 => 57, + 2662u32 => 111, + 2663u32 => 57, + 2666u32 => 56, + 2691u32 => 58, + 2790u32 => 111, + 2819u32 => 56, + 2848u32 => 79, + 2918u32 => 79, + 2920u32 => 57, + 3046u32 => 111, + 3074u32 => 111, + 3174u32 => 111, + 3202u32 => 111, + 3302u32 => 111, + 3330u32 => 111, + 3360u32 => 111, + 3430u32 => 111, + 3437u32 => 57, + 3458u32 => 111, + 3664u32 => 111, + 3792u32 => 111, + 4125u32 => 111, + 4160u32 => 111, + 4327u32 => 121, + 4351u32 => 111, + 4608u32 => 85, + 4816u32 => 79, + 5024u32 => 68, + 5025u32 => 82, + 5026u32 => 84, + 5029u32 => 105, + 5033u32 => 89, + 5034u32 => 65, + 5035u32 => 74, + 5036u32 => 69, + 5038u32 => 63, + 5043u32 => 87, + 5047u32 => 77, + 5051u32 => 72, + 5053u32 => 89, + 5056u32 => 71, + 5058u32 => 104, + 5059u32 => 90, + 5070u32 => 52, + 5071u32 => 98, + 5074u32 => 82, + 5076u32 => 87, + 5077u32 => 83, + 5081u32 => 86, + 5082u32 => 83, + 5086u32 => 76, + 5087u32 => 67, + 5090u32 => 80, + 5094u32 => 75, + 5095u32 => 100, + 5102u32 => 54, + 5107u32 => 71, + 5108u32 => 66, + 5120u32 => 61, + 5167u32 => 86, + 5171u32 => 62, + 5176u32 => 60, + 5194u32 => 96, + 5196u32 => 85, + 5229u32 => 80, + 5231u32 => 100, + 5234u32 => 98, + 5261u32 => 74, + 5290u32 => 76, + 5311u32 => 50, + 5441u32 => 120, + 5500u32 => 72, + 5501u32 => 120, + 5511u32 => 82, + 5551u32 => 98, + 5556u32 => 70, + 5573u32 => 65, + 5598u32 => 68, + 5610u32 => 68, + 5616u32 => 77, + 5623u32 => 66, + 5741u32 => 88, + 5742u32 => 120, + 5760u32 => 32, + 5810u32 => 60, + 5815u32 => 88, + 5825u32 => 73, + 5836u32 => 96, + 5845u32 => 75, + 5846u32 => 77, + 5868u32 => 58, + 5869u32 => 43, + 5941u32 => 47, + 6147u32 => 58, + 6153u32 => 58, + 7428u32 => 99, + 7439u32 => 111, + 7441u32 => 111, + 7452u32 => 117, + 7456u32 => 118, + 7457u32 => 119, + 7458u32 => 122, + 7462u32 => 114, + 7555u32 => 103, + 7564u32 => 121, + 7837u32 => 102, + 7935u32 => 121, + 8125u32 => 96, + 8126u32 => 105, + 8127u32 => 96, + 8128u32 => 126, + 8175u32 => 96, + 8189u32 => 96, + 8190u32 => 96, + 8192u32 => 32, + 8193u32 => 32, + 8194u32 => 32, + 8195u32 => 32, + 8196u32 => 32, + 8197u32 => 32, + 8198u32 => 32, + 8199u32 => 32, + 8200u32 => 32, + 8201u32 => 32, + 8202u32 => 32, + 8208u32 => 45, + 8209u32 => 45, + 8210u32 => 45, + 8211u32 => 45, + 8216u32 => 96, + 8217u32 => 96, + 8218u32 => 44, + 8219u32 => 96, + 8228u32 => 46, + 8232u32 => 32, + 8233u32 => 32, + 8239u32 => 32, + 8242u32 => 96, + 8245u32 => 96, + 8249u32 => 60, + 8250u32 => 62, + 8257u32 => 47, + 8259u32 => 45, + 8260u32 => 47, + 8270u32 => 42, + 8275u32 => 126, + 8282u32 => 58, + 8287u32 => 32, + 8450u32 => 67, + 8458u32 => 103, + 8459u32 => 72, + 8460u32 => 72, + 8461u32 => 72, + 8462u32 => 104, + 8464u32 => 73, + 8465u32 => 73, + 8466u32 => 76, + 8467u32 => 108, + 8469u32 => 78, + 8473u32 => 80, + 8474u32 => 81, + 8475u32 => 82, + 8476u32 => 82, + 8477u32 => 82, + 8484u32 => 90, + 8488u32 => 90, + 8490u32 => 75, + 8492u32 => 66, + 8493u32 => 67, + 8494u32 => 101, + 8495u32 => 101, + 8496u32 => 69, + 8497u32 => 70, + 8499u32 => 77, + 8500u32 => 111, + 8505u32 => 105, + 8509u32 => 121, + 8517u32 => 68, + 8518u32 => 100, + 8519u32 => 101, + 8520u32 => 105, + 8521u32 => 106, + 8544u32 => 73, + 8548u32 => 86, + 8553u32 => 88, + 8556u32 => 76, + 8557u32 => 67, + 8558u32 => 68, + 8559u32 => 77, + 8560u32 => 105, + 8564u32 => 118, + 8569u32 => 120, + 8572u32 => 73, + 8573u32 => 99, + 8574u32 => 100, + 8722u32 => 45, + 8725u32 => 47, + 8726u32 => 92, + 8727u32 => 42, + 8739u32 => 73, + 8744u32 => 118, + 8746u32 => 85, + 8758u32 => 58, + 8764u32 => 126, + 8868u32 => 84, + 8897u32 => 118, + 8899u32 => 85, + 8959u32 => 69, + 9075u32 => 105, + 9076u32 => 112, + 9082u32 => 97, + 9213u32 => 73, + 9585u32 => 47, + 9587u32 => 88, + 10088u32 => 40, + 10089u32 => 41, + 10094u32 => 60, + 10095u32 => 62, + 10098u32 => 40, + 10099u32 => 41, + 10100u32 => 123, + 10101u32 => 125, + 10133u32 => 43, + 10134u32 => 45, + 10187u32 => 47, + 10189u32 => 92, + 10201u32 => 84, + 10539u32 => 120, + 10540u32 => 120, + 10741u32 => 92, + 10744u32 => 47, + 10745u32 => 92, + 10799u32 => 120, + 11397u32 => 114, + 11406u32 => 72, + 11410u32 => 73, + 11412u32 => 75, + 11416u32 => 77, + 11418u32 => 78, + 11422u32 => 79, + 11423u32 => 111, + 11426u32 => 80, + 11427u32 => 112, + 11428u32 => 67, + 11429u32 => 99, + 11430u32 => 84, + 11432u32 => 89, + 11436u32 => 88, + 11450u32 => 45, + 11462u32 => 47, + 11466u32 => 57, + 11468u32 => 51, + 11472u32 => 76, + 11474u32 => 54, + 11576u32 => 86, + 11577u32 => 69, + 11599u32 => 73, + 11601u32 => 33, + 11604u32 => 79, + 11605u32 => 81, + 11613u32 => 88, + 11840u32 => 61, + 12034u32 => 92, + 12035u32 => 47, + 12295u32 => 79, + 12308u32 => 40, + 12309u32 => 41, + 12339u32 => 47, + 12448u32 => 61, + 12494u32 => 47, + 12755u32 => 47, + 12756u32 => 92, + 20022u32 => 92, + 20031u32 => 47, + 42192u32 => 66, + 42193u32 => 80, + 42194u32 => 100, + 42195u32 => 68, + 42196u32 => 84, + 42198u32 => 71, + 42199u32 => 75, + 42201u32 => 74, + 42202u32 => 67, + 42204u32 => 90, + 42205u32 => 70, + 42207u32 => 77, + 42208u32 => 78, + 42209u32 => 76, + 42210u32 => 83, + 42211u32 => 82, + 42214u32 => 86, + 42215u32 => 72, + 42218u32 => 87, + 42219u32 => 88, + 42220u32 => 89, + 42222u32 => 65, + 42224u32 => 69, + 42226u32 => 73, + 42227u32 => 79, + 42228u32 => 85, + 42232u32 => 46, + 42233u32 => 44, + 42237u32 => 58, + 42239u32 => 61, + 42510u32 => 46, + 42564u32 => 50, + 42567u32 => 105, + 42719u32 => 86, + 42731u32 => 63, + 42735u32 => 50, + 42801u32 => 115, + 42842u32 => 50, + 42858u32 => 51, + 42862u32 => 57, + 42872u32 => 38, + 42889u32 => 58, + 42892u32 => 96, + 42904u32 => 70, + 42905u32 => 102, + 42911u32 => 117, + 42923u32 => 51, + 42930u32 => 74, + 42931u32 => 88, + 42932u32 => 66, + 43826u32 => 101, + 43829u32 => 102, + 43837u32 => 111, + 43847u32 => 114, + 43848u32 => 114, + 43854u32 => 117, + 43858u32 => 117, + 43866u32 => 121, + 43893u32 => 105, + 43905u32 => 114, + 43907u32 => 119, + 43923u32 => 122, + 43945u32 => 118, + 43946u32 => 115, + 43951u32 => 99, + 64422u32 => 111, + 64423u32 => 111, + 64424u32 => 111, + 64425u32 => 111, + 64426u32 => 111, + 64427u32 => 111, + 64428u32 => 111, + 64429u32 => 111, + 64830u32 => 40, + 64831u32 => 41, + 65072u32 => 58, + 65101u32 => 95, + 65102u32 => 95, + 65103u32 => 95, + 65112u32 => 45, + 65128u32 => 92, + 65165u32 => 108, + 65166u32 => 108, + 65257u32 => 111, + 65258u32 => 111, + 65259u32 => 111, + 65260u32 => 111, + 65281u32 => 33, + 65282u32 => 34, + 65283u32 => 35, + 65284u32 => 36, + 65285u32 => 37, + 65286u32 => 38, + 65287u32 => 96, + 65288u32 => 40, + 65289u32 => 41, + 65290u32 => 42, + 65291u32 => 43, + 65292u32 => 44, + 65293u32 => 45, + 65294u32 => 46, + 65295u32 => 47, + 65296u32 => 48, + 65297u32 => 49, + 65298u32 => 50, + 65299u32 => 51, + 65300u32 => 52, + 65301u32 => 53, + 65302u32 => 54, + 65303u32 => 55, + 65304u32 => 56, + 65305u32 => 57, + 65306u32 => 58, + 65307u32 => 59, + 65308u32 => 60, + 65309u32 => 61, + 65310u32 => 62, + 65311u32 => 63, + 65312u32 => 64, + 65313u32 => 65, + 65314u32 => 66, + 65315u32 => 67, + 65316u32 => 68, + 65317u32 => 69, + 65318u32 => 70, + 65319u32 => 71, + 65320u32 => 72, + 65321u32 => 73, + 65322u32 => 74, + 65323u32 => 75, + 65324u32 => 76, + 65325u32 => 77, + 65326u32 => 78, + 65327u32 => 79, + 65328u32 => 80, + 65329u32 => 81, + 65330u32 => 82, + 65331u32 => 83, + 65332u32 => 84, + 65333u32 => 85, + 65334u32 => 86, + 65335u32 => 87, + 65336u32 => 88, + 65337u32 => 89, + 65338u32 => 90, + 65339u32 => 91, + 65340u32 => 92, + 65341u32 => 93, + 65342u32 => 94, + 65343u32 => 95, + 65344u32 => 96, + 65345u32 => 97, + 65346u32 => 98, + 65347u32 => 99, + 65348u32 => 100, + 65349u32 => 101, + 65350u32 => 102, + 65351u32 => 103, + 65352u32 => 104, + 65353u32 => 105, + 65354u32 => 106, + 65355u32 => 107, + 65356u32 => 108, + 65357u32 => 109, + 65358u32 => 110, + 65359u32 => 111, + 65360u32 => 112, + 65361u32 => 113, + 65362u32 => 114, + 65363u32 => 115, + 65364u32 => 116, + 65365u32 => 117, + 65366u32 => 118, + 65367u32 => 119, + 65368u32 => 120, + 65369u32 => 121, + 65370u32 => 122, + 65371u32 => 123, + 65372u32 => 124, + 65373u32 => 125, + 65374u32 => 126, + 65512u32 => 73, + 66178u32 => 66, + 66182u32 => 69, + 66183u32 => 70, + 66186u32 => 124, + 66192u32 => 88, + 66194u32 => 79, + 66197u32 => 80, + 66198u32 => 83, + 66199u32 => 84, + 66203u32 => 43, + 66208u32 => 65, + 66209u32 => 66, + 66210u32 => 67, + 66213u32 => 70, + 66219u32 => 79, + 66224u32 => 77, + 66225u32 => 84, + 66226u32 => 89, + 66228u32 => 88, + 66255u32 => 72, + 66293u32 => 90, + 66305u32 => 66, + 66306u32 => 67, + 66313u32 => 124, + 66321u32 => 77, + 66325u32 => 84, + 66327u32 => 88, + 66330u32 => 56, + 66335u32 => 42, + 66336u32 => 108, + 66338u32 => 88, + 66564u32 => 79, + 66581u32 => 67, + 66587u32 => 76, + 66592u32 => 83, + 66604u32 => 111, + 66621u32 => 99, + 66632u32 => 115, + 66740u32 => 82, + 66754u32 => 79, + 66766u32 => 85, + 66770u32 => 55, + 66794u32 => 111, + 66806u32 => 117, + 66835u32 => 78, + 66838u32 => 79, + 66840u32 => 75, + 66844u32 => 67, + 66845u32 => 86, + 66853u32 => 70, + 66854u32 => 76, + 66855u32 => 88, + 68176u32 => 46, + 70864u32 => 79, + 71430u32 => 118, + 71434u32 => 119, + 71438u32 => 119, + 71439u32 => 119, + 71840u32 => 86, + 71842u32 => 70, + 71843u32 => 76, + 71844u32 => 89, + 71846u32 => 69, + 71849u32 => 90, + 71852u32 => 57, + 71854u32 => 69, + 71855u32 => 52, + 71858u32 => 76, + 71861u32 => 79, + 71864u32 => 85, + 71867u32 => 53, + 71868u32 => 84, + 71872u32 => 118, + 71873u32 => 115, + 71874u32 => 70, + 71875u32 => 105, + 71876u32 => 122, + 71878u32 => 55, + 71880u32 => 111, + 71882u32 => 51, + 71884u32 => 57, + 71893u32 => 54, + 71894u32 => 57, + 71895u32 => 111, + 71896u32 => 117, + 71900u32 => 121, + 71904u32 => 79, + 71909u32 => 90, + 71910u32 => 87, + 71913u32 => 67, + 71916u32 => 88, + 71919u32 => 87, + 71922u32 => 67, + 93960u32 => 86, + 93962u32 => 84, + 93974u32 => 76, + 93992u32 => 73, + 94005u32 => 82, + 94010u32 => 83, + 94011u32 => 51, + 94015u32 => 62, + 94016u32 => 65, + 94018u32 => 85, + 94019u32 => 89, + 94033u32 => 96, + 94034u32 => 96, + 119060u32 => 123, + 119149u32 => 46, + 119302u32 => 51, + 119309u32 => 86, + 119311u32 => 92, + 119314u32 => 55, + 119315u32 => 70, + 119318u32 => 82, + 119338u32 => 76, + 119350u32 => 60, + 119351u32 => 62, + 119354u32 => 47, + 119355u32 => 92, + 119808u32 => 65, + 119809u32 => 66, + 119810u32 => 67, + 119811u32 => 68, + 119812u32 => 69, + 119813u32 => 70, + 119814u32 => 71, + 119815u32 => 72, + 119816u32 => 73, + 119817u32 => 74, + 119818u32 => 75, + 119819u32 => 76, + 119820u32 => 77, + 119821u32 => 78, + 119822u32 => 79, + 119823u32 => 80, + 119824u32 => 81, + 119825u32 => 82, + 119826u32 => 83, + 119827u32 => 84, + 119828u32 => 85, + 119829u32 => 86, + 119830u32 => 87, + 119831u32 => 88, + 119832u32 => 89, + 119833u32 => 90, + 119834u32 => 97, + 119835u32 => 98, + 119836u32 => 99, + 119837u32 => 100, + 119838u32 => 101, + 119839u32 => 102, + 119840u32 => 103, + 119841u32 => 104, + 119842u32 => 105, + 119843u32 => 106, + 119844u32 => 107, + 119845u32 => 108, + 119846u32 => 109, + 119847u32 => 110, + 119848u32 => 111, + 119849u32 => 112, + 119850u32 => 113, + 119851u32 => 114, + 119852u32 => 115, + 119853u32 => 116, + 119854u32 => 117, + 119855u32 => 118, + 119856u32 => 119, + 119857u32 => 120, + 119858u32 => 121, + 119859u32 => 122, + 119860u32 => 65, + 119861u32 => 66, + 119862u32 => 67, + 119863u32 => 68, + 119864u32 => 69, + 119865u32 => 70, + 119866u32 => 71, + 119867u32 => 72, + 119868u32 => 73, + 119869u32 => 74, + 119870u32 => 75, + 119871u32 => 76, + 119872u32 => 77, + 119873u32 => 78, + 119874u32 => 79, + 119875u32 => 80, + 119876u32 => 81, + 119877u32 => 82, + 119878u32 => 83, + 119879u32 => 84, + 119880u32 => 85, + 119881u32 => 86, + 119882u32 => 87, + 119883u32 => 88, + 119884u32 => 89, + 119885u32 => 90, + 119886u32 => 97, + 119887u32 => 98, + 119888u32 => 99, + 119889u32 => 100, + 119890u32 => 101, + 119891u32 => 102, + 119892u32 => 103, + 119894u32 => 105, + 119895u32 => 106, + 119896u32 => 107, + 119897u32 => 108, + 119899u32 => 110, + 119900u32 => 111, + 119901u32 => 112, + 119902u32 => 113, + 119903u32 => 114, + 119904u32 => 115, + 119905u32 => 116, + 119906u32 => 117, + 119907u32 => 118, + 119908u32 => 119, + 119909u32 => 120, + 119910u32 => 121, + 119911u32 => 122, + 119912u32 => 65, + 119913u32 => 66, + 119914u32 => 67, + 119915u32 => 68, + 119916u32 => 69, + 119917u32 => 70, + 119918u32 => 71, + 119919u32 => 72, + 119920u32 => 73, + 119921u32 => 74, + 119922u32 => 75, + 119923u32 => 76, + 119924u32 => 77, + 119925u32 => 78, + 119926u32 => 79, + 119927u32 => 80, + 119928u32 => 81, + 119929u32 => 82, + 119930u32 => 83, + 119931u32 => 84, + 119932u32 => 85, + 119933u32 => 86, + 119934u32 => 87, + 119935u32 => 88, + 119936u32 => 89, + 119937u32 => 90, + 119938u32 => 97, + 119939u32 => 98, + 119940u32 => 99, + 119941u32 => 100, + 119942u32 => 101, + 119943u32 => 102, + 119944u32 => 103, + 119945u32 => 104, + 119946u32 => 105, + 119947u32 => 106, + 119948u32 => 107, + 119949u32 => 108, + 119951u32 => 110, + 119952u32 => 111, + 119953u32 => 112, + 119954u32 => 113, + 119955u32 => 114, + 119956u32 => 115, + 119957u32 => 116, + 119958u32 => 117, + 119959u32 => 118, + 119960u32 => 119, + 119961u32 => 120, + 119962u32 => 121, + 119963u32 => 122, + 119964u32 => 65, + 119966u32 => 67, + 119967u32 => 68, + 119970u32 => 71, + 119973u32 => 74, + 119974u32 => 75, + 119977u32 => 78, + 119978u32 => 79, + 119979u32 => 80, + 119980u32 => 81, + 119982u32 => 83, + 119983u32 => 84, + 119984u32 => 85, + 119985u32 => 86, + 119986u32 => 87, + 119987u32 => 88, + 119988u32 => 89, + 119989u32 => 90, + 119990u32 => 97, + 119991u32 => 98, + 119992u32 => 99, + 119993u32 => 100, + 119995u32 => 102, + 119997u32 => 104, + 119998u32 => 105, + 119999u32 => 106, + 120000u32 => 107, + 120001u32 => 108, + 120003u32 => 110, + 120005u32 => 112, + 120006u32 => 113, + 120007u32 => 114, + 120008u32 => 115, + 120009u32 => 116, + 120010u32 => 117, + 120011u32 => 118, + 120012u32 => 119, + 120013u32 => 120, + 120014u32 => 121, + 120015u32 => 122, + 120016u32 => 65, + 120017u32 => 66, + 120018u32 => 67, + 120019u32 => 68, + 120020u32 => 69, + 120021u32 => 70, + 120022u32 => 71, + 120023u32 => 72, + 120024u32 => 73, + 120025u32 => 74, + 120026u32 => 75, + 120027u32 => 76, + 120028u32 => 77, + 120029u32 => 78, + 120030u32 => 79, + 120031u32 => 80, + 120032u32 => 81, + 120033u32 => 82, + 120034u32 => 83, + 120035u32 => 84, + 120036u32 => 85, + 120037u32 => 86, + 120038u32 => 87, + 120039u32 => 88, + 120040u32 => 89, + 120041u32 => 90, + 120042u32 => 97, + 120043u32 => 98, + 120044u32 => 99, + 120045u32 => 100, + 120046u32 => 101, + 120047u32 => 102, + 120048u32 => 103, + 120049u32 => 104, + 120050u32 => 105, + 120051u32 => 106, + 120052u32 => 107, + 120053u32 => 108, + 120055u32 => 110, + 120056u32 => 111, + 120057u32 => 112, + 120058u32 => 113, + 120059u32 => 114, + 120060u32 => 115, + 120061u32 => 116, + 120062u32 => 117, + 120063u32 => 118, + 120064u32 => 119, + 120065u32 => 120, + 120066u32 => 121, + 120067u32 => 122, + 120068u32 => 65, + 120069u32 => 66, + 120071u32 => 68, + 120072u32 => 69, + 120073u32 => 70, + 120074u32 => 71, + 120077u32 => 74, + 120078u32 => 75, + 120079u32 => 76, + 120080u32 => 77, + 120081u32 => 78, + 120082u32 => 79, + 120083u32 => 80, + 120084u32 => 81, + 120086u32 => 83, + 120087u32 => 84, + 120088u32 => 85, + 120089u32 => 86, + 120090u32 => 87, + 120091u32 => 88, + 120092u32 => 89, + 120094u32 => 97, + 120095u32 => 98, + 120096u32 => 99, + 120097u32 => 100, + 120098u32 => 101, + 120099u32 => 102, + 120100u32 => 103, + 120101u32 => 104, + 120102u32 => 105, + 120103u32 => 106, + 120104u32 => 107, + 120105u32 => 73, + 120107u32 => 110, + 120108u32 => 111, + 120109u32 => 112, + 120110u32 => 113, + 120111u32 => 114, + 120112u32 => 115, + 120113u32 => 116, + 120114u32 => 117, + 120115u32 => 118, + 120116u32 => 119, + 120117u32 => 120, + 120118u32 => 121, + 120119u32 => 122, + 120120u32 => 65, + 120121u32 => 66, + 120123u32 => 68, + 120124u32 => 69, + 120125u32 => 70, + 120126u32 => 71, + 120128u32 => 73, + 120129u32 => 74, + 120130u32 => 75, + 120131u32 => 76, + 120132u32 => 77, + 120134u32 => 79, + 120138u32 => 83, + 120139u32 => 84, + 120140u32 => 85, + 120141u32 => 86, + 120142u32 => 87, + 120143u32 => 88, + 120144u32 => 89, + 120146u32 => 97, + 120147u32 => 98, + 120148u32 => 99, + 120149u32 => 100, + 120150u32 => 101, + 120151u32 => 102, + 120152u32 => 103, + 120153u32 => 104, + 120154u32 => 105, + 120155u32 => 106, + 120156u32 => 107, + 120157u32 => 73, + 120159u32 => 110, + 120160u32 => 111, + 120161u32 => 112, + 120162u32 => 113, + 120163u32 => 114, + 120164u32 => 115, + 120165u32 => 116, + 120166u32 => 117, + 120167u32 => 118, + 120168u32 => 119, + 120169u32 => 120, + 120170u32 => 121, + 120171u32 => 122, + 120172u32 => 65, + 120173u32 => 66, + 120174u32 => 67, + 120175u32 => 68, + 120176u32 => 69, + 120177u32 => 70, + 120178u32 => 71, + 120179u32 => 72, + 120180u32 => 73, + 120181u32 => 74, + 120182u32 => 75, + 120183u32 => 76, + 120184u32 => 77, + 120185u32 => 78, + 120186u32 => 79, + 120187u32 => 80, + 120188u32 => 81, + 120189u32 => 82, + 120190u32 => 83, + 120191u32 => 84, + 120192u32 => 85, + 120193u32 => 86, + 120194u32 => 87, + 120195u32 => 88, + 120196u32 => 89, + 120197u32 => 90, + 120198u32 => 97, + 120199u32 => 98, + 120200u32 => 99, + 120201u32 => 100, + 120202u32 => 101, + 120203u32 => 102, + 120204u32 => 103, + 120205u32 => 104, + 120206u32 => 105, + 120207u32 => 106, + 120208u32 => 107, + 120209u32 => 73, + 120211u32 => 110, + 120212u32 => 111, + 120213u32 => 112, + 120214u32 => 113, + 120215u32 => 114, + 120216u32 => 115, + 120217u32 => 116, + 120218u32 => 117, + 120219u32 => 118, + 120220u32 => 119, + 120221u32 => 120, + 120222u32 => 121, + 120223u32 => 122, + 120224u32 => 65, + 120225u32 => 66, + 120226u32 => 67, + 120227u32 => 68, + 120228u32 => 69, + 120229u32 => 70, + 120230u32 => 71, + 120231u32 => 72, + 120232u32 => 73, + 120233u32 => 74, + 120234u32 => 75, + 120235u32 => 76, + 120236u32 => 77, + 120237u32 => 78, + 120238u32 => 79, + 120239u32 => 80, + 120240u32 => 81, + 120241u32 => 82, + 120242u32 => 83, + 120243u32 => 84, + 120244u32 => 85, + 120245u32 => 86, + 120246u32 => 87, + 120247u32 => 88, + 120248u32 => 89, + 120249u32 => 90, + 120250u32 => 97, + 120251u32 => 98, + 120252u32 => 99, + 120253u32 => 100, + 120254u32 => 101, + 120255u32 => 102, + 120256u32 => 103, + 120257u32 => 104, + 120258u32 => 105, + 120259u32 => 106, + 120260u32 => 107, + 120261u32 => 73, + 120263u32 => 110, + 120264u32 => 111, + 120265u32 => 112, + 120266u32 => 113, + 120267u32 => 114, + 120268u32 => 115, + 120269u32 => 116, + 120270u32 => 117, + 120271u32 => 118, + 120272u32 => 119, + 120273u32 => 120, + 120274u32 => 121, + 120275u32 => 122, + 120276u32 => 65, + 120277u32 => 66, + 120278u32 => 67, + 120279u32 => 68, + 120280u32 => 69, + 120281u32 => 70, + 120282u32 => 71, + 120283u32 => 72, + 120284u32 => 73, + 120285u32 => 74, + 120286u32 => 75, + 120287u32 => 76, + 120288u32 => 77, + 120289u32 => 78, + 120290u32 => 79, + 120291u32 => 80, + 120292u32 => 81, + 120293u32 => 82, + 120294u32 => 83, + 120295u32 => 84, + 120296u32 => 85, + 120297u32 => 86, + 120298u32 => 87, + 120299u32 => 88, + 120300u32 => 89, + 120301u32 => 90, + 120302u32 => 97, + 120303u32 => 98, + 120304u32 => 99, + 120305u32 => 100, + 120306u32 => 101, + 120307u32 => 102, + 120308u32 => 103, + 120309u32 => 104, + 120310u32 => 105, + 120311u32 => 106, + 120312u32 => 107, + 120313u32 => 73, + 120315u32 => 110, + 120316u32 => 111, + 120317u32 => 112, + 120318u32 => 113, + 120319u32 => 114, + 120320u32 => 115, + 120321u32 => 116, + 120322u32 => 117, + 120323u32 => 118, + 120324u32 => 119, + 120325u32 => 120, + 120326u32 => 121, + 120327u32 => 122, + 120328u32 => 65, + 120329u32 => 66, + 120330u32 => 67, + 120331u32 => 68, + 120332u32 => 69, + 120333u32 => 70, + 120334u32 => 71, + 120335u32 => 72, + 120336u32 => 73, + 120337u32 => 74, + 120338u32 => 75, + 120339u32 => 76, + 120340u32 => 77, + 120341u32 => 78, + 120342u32 => 79, + 120343u32 => 80, + 120344u32 => 81, + 120345u32 => 82, + 120346u32 => 83, + 120347u32 => 84, + 120348u32 => 85, + 120349u32 => 86, + 120350u32 => 87, + 120351u32 => 88, + 120352u32 => 89, + 120353u32 => 90, + 120354u32 => 97, + 120355u32 => 98, + 120356u32 => 99, + 120357u32 => 100, + 120358u32 => 101, + 120359u32 => 102, + 120360u32 => 103, + 120361u32 => 104, + 120362u32 => 105, + 120363u32 => 106, + 120364u32 => 107, + 120365u32 => 73, + 120367u32 => 110, + 120368u32 => 111, + 120369u32 => 112, + 120370u32 => 113, + 120371u32 => 114, + 120372u32 => 115, + 120373u32 => 116, + 120374u32 => 117, + 120375u32 => 118, + 120376u32 => 119, + 120377u32 => 120, + 120378u32 => 121, + 120379u32 => 122, + 120380u32 => 65, + 120381u32 => 66, + 120382u32 => 67, + 120383u32 => 68, + 120384u32 => 69, + 120385u32 => 70, + 120386u32 => 71, + 120387u32 => 72, + 120388u32 => 73, + 120389u32 => 74, + 120390u32 => 75, + 120391u32 => 76, + 120392u32 => 77, + 120393u32 => 78, + 120394u32 => 79, + 120395u32 => 80, + 120396u32 => 81, + 120397u32 => 82, + 120398u32 => 83, + 120399u32 => 84, + 120400u32 => 85, + 120401u32 => 86, + 120402u32 => 87, + 120403u32 => 88, + 120404u32 => 89, + 120405u32 => 90, + 120406u32 => 97, + 120407u32 => 98, + 120408u32 => 99, + 120409u32 => 100, + 120410u32 => 101, + 120411u32 => 102, + 120412u32 => 103, + 120413u32 => 104, + 120414u32 => 105, + 120415u32 => 106, + 120416u32 => 107, + 120417u32 => 73, + 120419u32 => 110, + 120420u32 => 111, + 120421u32 => 112, + 120422u32 => 113, + 120423u32 => 114, + 120424u32 => 115, + 120425u32 => 116, + 120426u32 => 117, + 120427u32 => 118, + 120428u32 => 119, + 120429u32 => 120, + 120430u32 => 121, + 120431u32 => 122, + 120432u32 => 65, + 120433u32 => 66, + 120434u32 => 67, + 120435u32 => 68, + 120436u32 => 69, + 120437u32 => 70, + 120438u32 => 71, + 120439u32 => 72, + 120440u32 => 73, + 120441u32 => 74, + 120442u32 => 75, + 120443u32 => 76, + 120444u32 => 77, + 120445u32 => 78, + 120446u32 => 79, + 120447u32 => 80, + 120448u32 => 81, + 120449u32 => 82, + 120450u32 => 83, + 120451u32 => 84, + 120452u32 => 85, + 120453u32 => 86, + 120454u32 => 87, + 120455u32 => 88, + 120456u32 => 89, + 120457u32 => 90, + 120458u32 => 97, + 120459u32 => 98, + 120460u32 => 99, + 120461u32 => 100, + 120462u32 => 101, + 120463u32 => 102, + 120464u32 => 103, + 120465u32 => 104, + 120466u32 => 105, + 120467u32 => 106, + 120468u32 => 107, + 120469u32 => 73, + 120471u32 => 110, + 120472u32 => 111, + 120473u32 => 112, + 120474u32 => 113, + 120475u32 => 114, + 120476u32 => 115, + 120477u32 => 116, + 120478u32 => 117, + 120479u32 => 118, + 120480u32 => 119, + 120481u32 => 120, + 120482u32 => 121, + 120483u32 => 122, + 120484u32 => 105, + 120488u32 => 65, + 120489u32 => 66, + 120492u32 => 69, + 120493u32 => 90, + 120494u32 => 72, + 120496u32 => 73, + 120497u32 => 75, + 120499u32 => 77, + 120500u32 => 78, + 120502u32 => 79, + 120504u32 => 80, + 120507u32 => 84, + 120508u32 => 89, + 120510u32 => 88, + 120514u32 => 97, + 120516u32 => 121, + 120522u32 => 105, + 120526u32 => 118, + 120528u32 => 111, + 120530u32 => 112, + 120532u32 => 111, + 120534u32 => 117, + 120544u32 => 112, + 120546u32 => 65, + 120547u32 => 66, + 120550u32 => 69, + 120551u32 => 90, + 120552u32 => 72, + 120554u32 => 73, + 120555u32 => 75, + 120557u32 => 77, + 120558u32 => 78, + 120560u32 => 79, + 120562u32 => 80, + 120565u32 => 84, + 120566u32 => 89, + 120568u32 => 88, + 120572u32 => 97, + 120574u32 => 121, + 120580u32 => 105, + 120584u32 => 118, + 120586u32 => 111, + 120588u32 => 112, + 120590u32 => 111, + 120592u32 => 117, + 120602u32 => 112, + 120604u32 => 65, + 120605u32 => 66, + 120608u32 => 69, + 120609u32 => 90, + 120610u32 => 72, + 120612u32 => 73, + 120613u32 => 75, + 120615u32 => 77, + 120616u32 => 78, + 120618u32 => 79, + 120620u32 => 80, + 120623u32 => 84, + 120624u32 => 89, + 120626u32 => 88, + 120630u32 => 97, + 120632u32 => 121, + 120638u32 => 105, + 120642u32 => 118, + 120644u32 => 111, + 120646u32 => 112, + 120648u32 => 111, + 120650u32 => 117, + 120660u32 => 112, + 120662u32 => 65, + 120663u32 => 66, + 120666u32 => 69, + 120667u32 => 90, + 120668u32 => 72, + 120670u32 => 73, + 120671u32 => 75, + 120673u32 => 77, + 120674u32 => 78, + 120676u32 => 79, + 120678u32 => 80, + 120681u32 => 84, + 120682u32 => 89, + 120684u32 => 88, + 120688u32 => 97, + 120690u32 => 121, + 120696u32 => 105, + 120700u32 => 118, + 120702u32 => 111, + 120704u32 => 112, + 120706u32 => 111, + 120708u32 => 117, + 120718u32 => 112, + 120720u32 => 65, + 120721u32 => 66, + 120724u32 => 69, + 120725u32 => 90, + 120726u32 => 72, + 120728u32 => 73, + 120729u32 => 75, + 120731u32 => 77, + 120732u32 => 78, + 120734u32 => 79, + 120736u32 => 80, + 120739u32 => 84, + 120740u32 => 89, + 120742u32 => 88, + 120746u32 => 97, + 120748u32 => 121, + 120754u32 => 105, + 120758u32 => 118, + 120760u32 => 111, + 120762u32 => 112, + 120764u32 => 111, + 120766u32 => 117, + 120776u32 => 112, + 120778u32 => 70, + 120782u32 => 79, + 120783u32 => 73, + 120784u32 => 50, + 120785u32 => 51, + 120786u32 => 52, + 120787u32 => 53, + 120788u32 => 54, + 120789u32 => 55, + 120790u32 => 56, + 120791u32 => 57, + 120792u32 => 79, + 120793u32 => 73, + 120794u32 => 50, + 120795u32 => 51, + 120796u32 => 52, + 120797u32 => 53, + 120798u32 => 54, + 120799u32 => 55, + 120800u32 => 56, + 120801u32 => 57, + 120802u32 => 79, + 120803u32 => 73, + 120804u32 => 50, + 120805u32 => 51, + 120806u32 => 52, + 120807u32 => 53, + 120808u32 => 54, + 120809u32 => 55, + 120810u32 => 56, + 120811u32 => 57, + 120812u32 => 79, + 120813u32 => 73, + 120814u32 => 50, + 120815u32 => 51, + 120816u32 => 52, + 120817u32 => 53, + 120818u32 => 54, + 120819u32 => 55, + 120820u32 => 56, + 120821u32 => 57, + 120822u32 => 79, + 120823u32 => 73, + 120824u32 => 50, + 120825u32 => 51, + 120826u32 => 52, + 120827u32 => 53, + 120828u32 => 54, + 120829u32 => 55, + 120830u32 => 56, + 120831u32 => 57, + 125127u32 => 108, + 125131u32 => 56, + 126464u32 => 108, + 126500u32 => 111, + 126564u32 => 111, + 126592u32 => 108, + 126596u32 => 111, + 128844u32 => 67, + 128872u32 => 84, + 130032u32 => 79, + 130033u32 => 73, + 130034u32 => 50, + 130035u32 => 51, + 130036u32 => 52, + 130037u32 => 53, + 130038u32 => 54, + 130039u32 => 55, + 130040u32 => 56, + 130041u32 => 57, +}; diff --git a/scripts/update_ambiguous_characters.py b/scripts/update_ambiguous_characters.py index 8413c5bcfb..4243313e6e 100644 --- a/scripts/update_ambiguous_characters.py +++ b/scripts/update_ambiguous_characters.py @@ -6,6 +6,18 @@ from pathlib import Path CONFUSABLES_RS_PATH = "crates/ruff/src/rules/ruff/rules/confusables.rs" AMBIGUOUS_JSON_URL = "https://raw.githubusercontent.com/hediet/vscode-unicode-data/main/out/ambiguous.json" +prelude = """ +/// This file is auto-generated by `scripts/update_ambiguous_characters.py`. +use phf::phf_map; + +/// Via: +/// See: +#[allow(clippy::unreadable_literal)] +pub(crate) static CONFUSABLES: phf::Map = phf_map! { +""".lstrip() + +postlude = """};""" + def get_mapping_data() -> dict: """ @@ -22,29 +34,22 @@ def get_mapping_data() -> dict: return json.loads(json.loads(content)) -def format_confusables_rs(raw_data: dict) -> str: +def format_confusables_rs(raw_data: dict[str, list[int]]) -> str: """Format the downloaded data into a Rust source file.""" - prelude = """ -/// This file is auto-generated by scripts/update_ambiguous_characters.py. - -use once_cell::sync::Lazy; -use rustc_hash::FxHashMap; - -/// Via: -/// See: -pub(crate) static CONFUSABLES: Lazy> = Lazy::new(|| { - #[allow(clippy::unreadable_literal)] - FxHashMap::from_iter([ -""".lstrip() - tuples = [] + # The input data contains duplicate entries + flattened_items: set[tuple[int, int]] = set() for _category, items in raw_data.items(): + assert len(items) % 2 == 0, "Expected pairs of items" for i in range(0, len(items), 2): - tuples.append(f"({items[i]}, {items[i + 1]}),") - postlude = """])});""" + flattened_items.add((items[i], items[i + 1])) + + tuples = [] + for left, right in sorted(flattened_items): + tuples.append(f" {left}u32 => {right},\n") print(f"{len(tuples)} confusable tuples.") - return prelude + "\n".join(tuples) + postlude + return prelude + "".join(tuples) + postlude def main() -> None: