indickit 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +115 -21
- package/dist/deromanize.js +1 -1129
- package/dist/normalize.js +1 -204
- package/dist/phonetic-search.js +1 -1329
- package/dist/phonetic.js +1 -905
- package/dist/romanize.js +1 -743
- package/dist/segment.js +1 -175
- package/dist/stem.js +1 -48
- package/dist/types/js/stem.d.ts +1 -0
- package/dist/types/js/unidata.d.ts +36 -0
- package/dist/types/js/wellformed.d.ts +31 -0
- package/dist/wellformed.js +1 -0
- package/package.json +6 -2
package/dist/phonetic-search.js
CHANGED
|
@@ -1,1329 +1 @@
|
|
|
1
|
-
// phonetic/scorer/search.json
|
|
2
|
-
var search_default = {
|
|
3
|
-
version: "2026-10-08",
|
|
4
|
-
profiles: { names: { key: 2, cost: 1, vowel: 1, div: 4, stop_permille: 20, stop_min_names: 100, round: true }, text: { key: 1, cost: 2, vowel: 2, div: 5, stop_permille: null, stop_min_names: 0, round: false } },
|
|
5
|
-
posterior_temperature: 2,
|
|
6
|
-
deletion_min_classes: 3,
|
|
7
|
-
loose_joined_min_classes: 4,
|
|
8
|
-
fine_folds: ["nasal-all", "v-b", "retroflex", "s-c", "ng-k", "ur-w-u"],
|
|
9
|
-
thresholds: { names: 74, villages: 72, text_10: 80, text_20: 70 },
|
|
10
|
-
pow: [1e6, 993092, 986233, 979420, 972655, 965936, 959264, 952638, 946058, 939523, 933033, 926588, 920188, 913831, 907519, 901250, 895025, 888843, 882703, 876606, 870551, 864537, 858565, 852635, 846745, 840896, 835088, 829320, 823591, 817902, 812252, 806642, 801070, 795536, 790041, 784584, 779165, 773782, 768438, 763130, 757858, 752623, 747425, 742262, 737135, 732043, 726986, 721965, 716978, 712025, 707107, 702222, 697372, 692555, 687771, 683020, 678302, 673617, 668964, 664343, 659754, 655197, 650671, 646176, 641713, 637280, 632878, 628507, 624165, 619854, 615572, 611320, 607097, 602904, 598739, 594604, 590496, 586417, 582367, 578344, 574349, 570382, 566442, 562529, 558644, 554785, 550953, 547147, 543367, 539614, 535887, 532185, 528509, 524858, 521233, 517632, 514057, 510506, 506980, 503478, 500000, 496546, 493116, 489710, 486327, 482968, 479632, 476319, 473029, 469761, 466516, 463294, 460094, 456916, 453760, 450625, 447513, 444421, 441351, 438303, 435275, 432269, 429283, 426317, 423373, 420448, 417544, 414660, 411796, 408951, 406126, 403321, 400535, 397768, 395021, 392292, 389582, 386891, 384219, 381565, 378929, 376312, 373712, 371131, 368567, 366021, 363493, 360982, 358489, 356013, 353553, 351111, 348686, 346277, 343885, 341510, 339151, 336808, 334482, 332171, 329877, 327598, 325335, 323088, 320856, 318640, 316439, 314253, 312083, 309927, 307786, 305660, 303549, 301452, 299370, 297302, 295248, 293209, 291183, 289172, 287175, 285191, 283221, 281265, 279322, 277392, 275476, 273573, 271684, 269807, 267943, 266093, 264255, 262429, 260616, 258816, 257028, 255253, 253490, 251739, 250000, 248273, 246558, 244855, 243164, 241484, 239816, 238159, 236514, 234881, 233258, 231647, 230047, 228458, 226880, 225313, 223756, 222211, 220676, 219151, 217638, 216134, 214641, 213159, 211686, 210224, 208772, 207330, 205898, 204476, 203063, 201660, 200267, 198884, 197510, 196146, 194791, 193446, 192109, 190782, 189465, 188156, 186856, 185565, 184284, 183011, 181747, 180491, 179244, 178006, 176777, 175556, 174343, 173139, 171943, 170755, 169576, 168404, 167241, 166086, 164938, 163799, 162668, 161544, 160428, 159320, 158220, 157127, 156041, 154963, 153893, 152830, 151774, 150726, 149685, 148651, 147624, 146604, 145592, 144586, 143587, 142595, 141610, 140632, 139661, 138696, 137738, 136787, 135842, 134904, 133972, 133046, 132127, 131215, 130308, 129408, 128514, 127627, 126745, 125869, 125000, 124137, 123279, 122428, 121582, 120742, 119908, 119080, 118257, 117440, 116629, 115824, 115023, 114229, 113440, 112656, 111878, 111105, 110338, 109576, 108819, 108067, 107321, 106579, 105843, 105112, 104386, 103665, 102949, 102238, 101532, 100830, 100134, 99442, 98755, 98073, 97396, 96723, 96055, 95391, 94732, 94078, 93428, 92783, 92142, 91505, 90873, 90246, 89622, 89003, 88388, 87778, 87171, 86569, 85971, 85378, 84788, 84202, 83620, 83043, 82469, 81900, 81334, 80772, 80214, 79660, 79110, 78563, 78021, 77482, 76947, 76415, 75887, 75363, 74842, 74325, 73812, 73302, 72796, 72293, 71794, 71298, 70805, 70316, 69830, 69348, 68869, 68393, 67921, 67452, 66986, 66523, 66064, 65607, 65154, 64704, 64257, 63813, 63372, 62935, 62500, 62068, 61640, 61214, 60791, 60371, 59954, 59540, 59129, 58720, 58315, 57912, 57512, 57114, 56720, 56328, 55939, 55553, 55169, 54788, 54409, 54034, 53660, 53290, 52922, 52556, 52193, 51832, 51474, 51119, 50766, 50415, 50067, 49721, 49378, 49037, 48698, 48361, 48027, 47696, 47366, 47039, 46714, 46391, 46071, 45753, 45437, 45123, 44811, 44502, 44194, 43889, 43586, 43285, 42986, 42689, 42394, 42101, 41810, 41521, 41235, 40950, 40667, 40386, 40107, 39830, 39555, 39282, 39010, 38741, 38473, 38208, 37944, 37681, 37421, 37163, 36906, 36651, 36398, 36147, 35897, 35649, 35403, 35158, 34915, 34674, 34435, 34197, 33960, 33726, 33493, 33262, 33032, 32804, 32577, 32352, 32129, 31907, 31686, 31467, 31250, 31034, 30820, 30607, 30395, 30186, 29977, 29770, 29564, 29360, 29157, 28956, 28756, 28557, 28360, 28164, 27970, 27776, 27584, 27394, 27205, 27017, 26830, 26645, 26461, 26278, 26096, 25916, 25737, 25559, 25383, 25208, 25033, 24861, 24689, 24518, 24349, 24181, 24014, 23848, 23683, 23519, 23357, 23196, 23035, 22876, 22718, 22561, 22406, 22251, 22097, 21944, 21793, 21642, 21493, 21344, 21197, 21051, 20905, 20761, 20617, 20475, 20333, 20193, 20054, 19915, 19777, 19641, 19505, 19370, 19237, 19104, 18972, 18841, 18711, 18581, 18453, 18326, 18199, 18073, 17948, 17824, 17701, 17579, 17458, 17337, 17217, 17098, 16980, 16863, 16746, 16631, 16516, 16402, 16289, 16176, 16064, 15953, 15843, 15734, 15625, 15517, 15410, 15303, 15198, 15093, 14989, 14885, 14782, 14680, 14579, 14478, 14378, 14279, 14180, 14082, 13985, 13888, 13792, 13697, 13602, 13508, 13415, 13322, 13230, 13139, 13048, 12958, 12869, 12780, 12691, 12604, 12517, 12430, 12344, 12259, 12174, 12090, 12007, 11924, 11842, 11760, 11679, 11598, 11518, 11438, 11359, 11281, 11203, 11125, 11049, 10972, 10896, 10821, 10746, 10672, 10598, 10525, 10453, 10380, 10309, 10237, 10167, 10097, 10027, 9958, 9889, 9820, 9753, 9685, 9618, 9552, 9486, 9420, 9355, 9291, 9227, 9163, 9099, 9037, 8974, 8912, 8851, 8790, 8729, 8669, 8609, 8549, 8490, 8431, 8373, 8315, 8258, 8201, 8144, 8088, 8032, 7977, 7922, 7867, 7812, 7759, 7705, 7652, 7599, 7546, 7494, 7442, 7391, 7340, 7289, 7239, 7189, 7139, 7090, 7041, 6992, 6944, 6896, 6848, 6801, 6754, 6708, 6661, 6615, 6570, 6524, 6479, 6434, 6390, 6346, 6302, 6258, 6215, 6172, 6130, 6087, 6045, 6003, 5962, 5921, 5880, 5839, 5799, 5759, 5719, 5680, 5640, 5601, 5563, 5524, 5486, 5448, 5411, 5373, 5336, 5299, 5263, 5226, 5190, 5154, 5119, 5083, 5048, 5013, 4979, 4944, 4910, 4876, 4843, 4809, 4776, 4743, 4710, 4678, 4645, 4613, 4581, 4550, 4518, 4487, 4456, 4425, 4395, 4364, 4334, 4304, 4275, 4245, 4216, 4187, 4158, 4129, 4100, 4072, 4044, 4016, 3988, 3961, 3933, 3906, 3879, 3852, 3826, 3799, 3773, 3747, 3721, 3696, 3670, 3645, 3619, 3594, 3570, 3545, 3521, 3496, 3472, 3448, 3424, 3401, 3377, 3354, 3331, 3308, 3285, 3262, 3240, 3217, 3195, 3173, 3151, 3129, 3108, 3086, 3065, 3044, 3023, 3002, 2981, 2960, 2940, 2920, 2899, 2879, 2860, 2840, 2820, 2801, 2781, 2762, 2743, 2724, 2705, 2687, 2668, 2650, 2631, 2613, 2595, 2577, 2559, 2542, 2524, 2507, 2489, 2472, 2455, 2438, 2421, 2405, 2388, 2371, 2355, 2339, 2323, 2307, 2291, 2275, 2259, 2244, 2228, 2213, 2197, 2182, 2167, 2152, 2137, 2123, 2108, 2093, 2079, 2064, 2050, 2036, 2022, 2008, 1994, 1980, 1967, 1953, 1940, 1926, 1913, 1900, 1887, 1874, 1861, 1848, 1835, 1822, 1810, 1797, 1785, 1772, 1760, 1748, 1736, 1724, 1712, 1700, 1689, 1677, 1665, 1654, 1642, 1631, 1620, 1609, 1597, 1586, 1575, 1565, 1554, 1543, 1532, 1522, 1511, 1501, 1490, 1480, 1470, 1460, 1450, 1440, 1430, 1420, 1410, 1400, 1391, 1381, 1372, 1362, 1353, 1343, 1334, 1325, 1316, 1307, 1298, 1289, 1280, 1271, 1262, 1253, 1245, 1236, 1228, 1219, 1211, 1202, 1194, 1186, 1178, 1169, 1161, 1153, 1145, 1137, 1130, 1122, 1114, 1106, 1099, 1091, 1084, 1076, 1069, 1061, 1054, 1047, 1039, 1032, 1025, 1018, 1011, 1004, 997, 990, 983, 977, 970, 963, 956, 950, 943, 937, 930, 924, 918, 911, 905, 899, 892, 886, 880, 874, 868, 862, 856, 850, 844, 838, 833, 827, 821, 816, 810, 804, 799, 793, 788, 782, 777, 772, 766, 761, 756, 750, 745, 740, 735, 730, 725, 720, 715, 710, 705, 700, 695, 691, 686, 681, 676, 672, 667, 662, 658, 653, 649, 644, 640, 635, 631, 627, 622, 618, 614, 610, 605, 601, 597, 593, 589, 585, 581, 577, 573, 569, 565, 561, 557, 553, 549, 546, 542, 538, 534, 531, 527, 523, 520, 516, 513, 509, 506, 502, 499, 495, 492, 488, 485, 482, 478, 475, 472, 468, 465, 462, 459, 456, 452, 449, 446, 443, 440, 437, 434, 431, 428, 425, 422, 419, 416, 413, 411, 408, 405, 402, 399, 397, 394, 391, 388, 386, 383, 380, 378, 375, 373, 370, 367, 365, 362, 360, 357, 355, 353, 350, 348, 345, 343, 341, 338, 336, 334, 331, 329, 327, 324, 322, 320, 318, 316, 313, 311, 309, 307, 305, 303, 301, 298, 296, 294, 292, 290, 288, 286, 284, 282, 280, 279, 277, 275, 273, 271, 269, 267, 265, 263, 262, 260, 258, 256, 255, 253, 251, 249, 248, 246, 244, 242, 241, 239, 237, 236, 234, 233, 231, 229, 228, 226, 225, 223, 222, 220, 219, 217, 216, 214, 213, 211, 210, 208, 207, 205, 204, 202, 201, 200, 198, 197, 196, 194, 193, 192, 190, 189, 188, 186, 185, 184, 182, 181, 180, 179, 177, 176, 175, 174, 173, 171, 170, 169, 168, 167, 166, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 126, 125, 124, 123, 122, 121, 120, 120, 119, 118, 117, 116, 115, 115, 114, 113, 112, 112, 111, 110, 109, 109, 108, 107, 106, 106, 105, 104, 103, 103, 102, 101, 101, 100, 99, 98, 98, 97, 96, 96, 95, 94, 94, 93, 93, 92, 91, 91, 90, 89, 89, 88, 88, 87, 86, 86, 85, 85, 84, 83, 83, 82, 82, 81, 81, 80, 79, 79, 78, 78, 77, 77, 76, 76, 75, 75, 74, 74, 73, 73, 72, 72, 71, 71, 70, 70, 69, 69, 68, 68, 67, 67, 66, 66, 65, 65, 65, 64, 64, 63, 63, 62, 62, 61, 61, 61, 60, 60, 59, 59, 59, 58, 58, 57, 57, 57, 56, 56, 55, 55, 55, 54, 54, 54, 53, 53, 52, 52, 52, 51, 51, 51, 50, 50, 50, 49, 49, 49, 48, 48, 48, 47, 47, 47, 46, 46, 46, 45, 45, 45, 44, 44, 44, 43, 43, 43, 43, 42, 42, 42, 41, 41, 41, 41, 40, 40, 40, 39, 39, 39, 39, 38, 38, 38, 38, 37, 37, 37, 37, 36, 36, 36, 36, 35, 35, 35, 35, 34, 34, 34, 34, 33, 33, 33, 33, 32, 32, 32, 32, 32, 31, 31, 31, 31, 31, 30, 30, 30, 30, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 24, 24, 24, 24, 24, 24, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20, 19, 19, 19, 19, 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
11
|
-
exp2: [65536, 70240, 75281, 80684, 86475, 92682, 99334, 106464, 114105, 122295, 131072, 140479, 150562, 161369, 172951, 185364, 198668, 212927, 228210, 244589, 262144, 280959, 301124, 322737, 345901, 370728, 397336, 425854, 456419, 489178, 524288, 561918, 602249, 645474, 691802, 741455, 794672, 851708, 912838, 978356, 1048576, 1123836, 1204498, 1290948, 1383604, 1482910, 1589344, 1703417, 1825677, 1956712, 2097152, 2247672, 2408995, 2581897, 2767209, 2965821, 3178688, 3406833, 3651354, 3913424, 4194304, 4495344, 4817990, 5163794, 5534417, 5931642, 6357376, 6813667, 7302707, 7826848, 8388608, 8990687, 9635980, 10327588, 11068835, 11863283, 12714752, 13627334, 14605415, 15653696, 16777216, 17981375, 19271960, 20655176, 22137669, 23726566, 25429504, 27254668, 29210830, 31307392, 33554432, 35962750, 38543921, 41310351, 44275338, 47453133, 50859008, 54509336, 58421659, 62614784, 67108864, 71925500, 77087842, 82620703, 88550677, 94906266, 101718017, 109018671, 116843319, 125229568, 134217728, 143850999, 154175683, 165241406, 177101354, 189812531, 203436034, 218037342, 233686637, 250459137, 268435456, 287701998, 308351367, 330482812, 354202708, 379625062, 406872068, 436074685, 467373275, 500918273, 536870912, 575403996, 616702733, 660965624, 708405415, 759250125, 813744135, 872149370, 934746550, 1001836546, 1073741824, 1150807993, 1233405467, 1321931248, 1416810831, 1518500250, 1627488271, 1744298739, 1869493099, 2003673092, 2147483648, 2301615985, 2466810934, 2643862496, 2833621662, 3037000500, 3254976542, 3488597478, 3738986199, 4007346185, 4294967296, 4603231970, 4933621868, 5287724992, 5667243324, 6074001000, 6509953083, 6977194957, 7477972398, 8014692369, 8589934592, 9206463941, 9867243735, 10575449984, 11334486647, 12148002000, 13019906166, 13954389914, 14955944795, 16029384739, 17179869184, 18412927881, 19734487471, 21150899968, 22668973294, 24296004000, 26039812333, 27908779828, 29911889591, 32058769478, 34359738368, 36825855763, 39468974941, 42301799936, 45337946589, 48592008000, 52079624665, 55817559655, 59823779182, 64117538956, 68719476736, 73651711525, 78937949883, 84603599872, 90675893177, 97184015999, 104159249331, 111635119310, 119647558364, 128235077912, 137438953472, 147303423050, 157875899766, 169207199743, 181351786355, 194368031998, 208318498661, 223270238621, 239295116728, 256470155823, 274877906944, 294606846100, 315751799532, 338414399486, 362703572709, 388736063997, 416636997323, 446540477241, 478590233456, 512940311647, 549755813888, 589213692200, 631503599063, 676828798972, 725407145419, 777472127994, 833273994645, 893080954483, 957180466911, 1025880623293, 1099511627776, 1178427384400, 1263007198126, 1353657597944, 1450814290837, 1554944255988, 1666547989291, 1786161908965, 1914360933822, 2051761246587, 2199023255552, 2356854768801, 2526014396253, 2707315195888, 2901628581674, 3109888511975, 3333095978582, 3572323817930, 3828721867644, 4103522493173, 4398046511104, 4713709537602, 5052028792506, 5414630391777, 5803257163349, 6219777023951, 6666191957164, 7144647635861, 7657443735288, 8207044986347, 8796093022208, 9427419075203, 10104057585011, 10829260783554, 11606514326698, 12439554047902, 13332383914327, 14289295271722, 15314887470577, 16414089972694, 17592186044416, 18854838150406, 20208115170022, 21658521567107, 23213028653395, 24879108095804, 26664767828654, 28578590543443, 30629774941153, 32828179945387, 35184372088832, 37709676300813, 40416230340045, 43317043134214, 46426057306791, 49758216191608, 53329535657309, 57157181086886, 61259549882306, 65656359890774, 70368744177664, 75419352601626, 80832460680090, 86634086268429, 92852114613582, 99516432383215, 106659071314618, 114314362173773, 122519099764613, 131312719781548, 140737488355328, 150838705203251, 161664921360180, 173268172536857, 185704229227163, 199032864766430, 213318142629235, 228628724347546, 245038199529225, 262625439563096, 281474976710656, 301677410406503, 323329842720360, 346536345073714, 371408458454326, 398065729532861, 426636285258470, 457257448695093, 490076399058449, 525250879126193, 562949953421312, 603354820813005, 646659685440720, 693072690147428, 742816916908653, 796131459065722, 853272570516940, 914514897390186, 980152798116898, 1050501758252385, 1125899906842624]
|
|
12
|
-
};
|
|
13
|
-
// phonetic/scorer/fine.json
|
|
14
|
-
var fine_default = {
|
|
15
|
-
version: "2026-10-07",
|
|
16
|
-
folds: ["nasal-all", "ng-k", "retroflex", "s-c", "v-b"],
|
|
17
|
-
brahmic: { from: 2304, to: 3455, class_by_offset: { "2": "ṁ", "5": "a", "6": "a", "7": "i", "8": "i", "9": "u", "10": "u", "11": "r", "12": "l", "13": "e", "14": "e", "15": "e", "16": "e", "17": "o", "18": "o", "19": "o", "20": "o", "21": "k", "22": "k", "23": "k", "24": "k", "25": "ṅ", "26": "c", "27": "c", "28": "c", "29": "c", "30": "ñ", "31": "ṭ", "32": "ṭ", "33": "ṭ", "34": "ṭ", "35": "ṇ", "36": "t", "37": "t", "38": "t", "39": "t", "40": "n", "41": "n", "42": "p", "43": "p", "44": "p", "45": "p", "46": "m", "47": "y", "48": "r", "49": "r", "50": "l", "51": "l", "52": "l", "53": "v", "54": "s", "55": "s", "56": "s", "57": "h", "62": "a", "63": "i", "64": "i", "65": "u", "66": "u", "67": "r", "68": "r", "69": "e", "70": "e", "71": "e", "72": "e", "73": "o", "74": "o", "75": "o", "76": "o", "87": "o", "96": "r", "97": "l", "98": "l", "99": "l" }, virama_offset: 77, candrabindu_offset: 1, candrabindu_class: "ṁ", nukta_offset: 60, flap_offsets: [33, 34], flap_class: "ṛ" },
|
|
18
|
-
extra: { ৎ: "t", ৰ: "r", ৱ: "v", ୱ: "v", "ੰ": "ṁ", "ਂ": "ṁ", ൺ: "ṇ", ൻ: "n", ർ: "r", ൽ: "l", ൾ: "l", ൿ: "k", ൔ: "m", ൕ: "y", ൖ: "l", ड़: "ṛ", ढ़: "ṛ", ড়: "ṛ", ঢ়: "ṛ", ଡ଼: "ṛ", ଢ଼: "ṛ", ੜ: "ṛ" },
|
|
19
|
-
urdu: { from: 1536, to: 1791, letters: { ا: "a", آ: "a", أ: "a", ب: "p", پ: "p", ت: "t", ٹ: "ṭ", ث: "s", ج: "c", چ: "c", ح: "h", خ: "k", د: "t", ڈ: "ṭ", ذ: "c", ر: "r", ڑ: "ṛ", ز: "c", ژ: "c", س: "s", ش: "s", ص: "s", ض: "c", ط: "t", ظ: "c", غ: "k", ف: "p", ق: "k", ک: "k", ك: "k", گ: "k", ل: "l", م: "m", ن: "n", ں: "ṁ", و: "v", ؤ: "u", ہ: "h", ه: "h", ۃ: "a", ی: "y", ي: "y", ى: "y", ئ: "y", ے: "e", ۓ: "e", ٻ: "p", ڀ: "p", ٺ: "ṭ", ٽ: "ṭ", ٿ: "t", ڄ: "c", ڃ: "ñ", ڇ: "c", ڊ: "ṭ", ڌ: "t", ڍ: "ṭ", ڏ: "t", ڙ: "ṛ", ڦ: "p", ڪ: "k", ڱ: "ṅ", ڳ: "k", ڻ: "ṇ", ٲ: "a", ٳ: "a", ۆ: "o", ۄ: "o", ێ: "e", ؠ: "y" }, ain: "ع", waw: "و", waw_v_before: "اآ", final_he: "ہه", final_he_h_after: "اآو" },
|
|
20
|
-
meetei: { ranges: [[43744, 43775], [43968, 44031]], letters: { ꯀ: "k", ꯁ: "s", ꯂ: "l", ꯃ: "m", ꯄ: "p", ꯅ: "n", ꯆ: "c", ꯇ: "t", ꯈ: "k", ꯉ: "ṅ", ꯊ: "t", ꯋ: "v", ꯌ: "y", ꯍ: "h", ꯎ: "u", ꯏ: "i", ꯐ: "p", ꯑ: "a", ꯒ: "k", ꯓ: "c", ꯔ: "r", ꯕ: "p", ꯖ: "c", ꯗ: "t", ꯘ: "k", ꯙ: "t", ꯚ: "p", ꯛ: "k", ꯜ: "l", ꯝ: "m", ꯞ: "p", ꯟ: "n", ꯠ: "t", ꯡ: "ṅ", ꯢ: "i", "ꯣ": "o", "ꯤ": "i", "ꯥ": "a", "ꯦ": "e", "ꯧ": "o", "ꯨ": "u", "ꯩ": "e", "ꯪ": "ṁ", ꫠ: "e", ꫡ: "o", ꫢ: "c", ꫣ: "ñ", ꫤ: "ṭ", ꫥ: "ṭ", ꫦ: "ṭ", ꫧ: "ṭ", ꫨ: "ṇ", ꫩ: "s", ꫪ: "s", "ꫫ": "i", "ꫬ": "u", "ꫭ": "e", "ꫮ": "o", "ꫯ": "o" } },
|
|
21
|
-
ol_chiki: { from: 7248, to: 7295, letters: { ᱚ: "o", ᱛ: "t", ᱜ: "k", ᱝ: "ṅ", ᱞ: "l", ᱟ: "a", ᱠ: "k", ᱡ: "c", ᱢ: "m", ᱣ: "v", ᱤ: "i", ᱥ: "s", ᱦ: "h", ᱧ: "ñ", ᱨ: "r", ᱩ: "u", ᱪ: "c", ᱫ: "t", ᱬ: "ṇ", ᱭ: "y", ᱮ: "e", ᱯ: "p", ᱰ: "ṭ", ᱱ: "n", ᱲ: "ṛ", ᱳ: "o", ᱴ: "ṭ", ᱵ: "p", ᱶ: "v", ᱷ: "h", ᱸ: "ṁ" }, aspiration: "ᱷ" },
|
|
22
|
-
latin: { groups: [["ngh", "nĝ"], ["chh", "c"], ["ch", "c"], ["jh", "c"], ["kh", "k"], ["gh", "k"], ["th", "t"], ["dh", "t"], ["ph", "p"], ["bh", "p"], ["sh", "s"], ["ck", "k"], ["aa", "a"], ["ai", "e"], ["ei", "e"], ["au", "o"], ["ee", "i"], ["oo", "u"], ["x", "ks"]], letters: { a: "a", e: "e", i: "i", o: "o", u: "u", k: "k", g: "k", q: "k", j: "c", z: "c", t: "t", d: "t", n: "n", m: "m", p: "p", b: "p", f: "p", v: "v", w: "v", y: "y", r: "r", l: "l", s: "s", h: "h" }, w_ambiguous_unless_before: "aeiou" },
|
|
23
|
-
class_map: { m: "n", s: "c", v: "p", w: "p", ñ: "n", ĝ: "k", ṁ: "n", ṅ: "n", ṇ: "n", ṛ: "t", ṭ: "t" },
|
|
24
|
-
vowels: "aeiou",
|
|
25
|
-
steps: { "ng-k": true, "initial-vowels-alike": false, "drop-h": false, "drop-y": false, "drop-y-after-i": false, "drop-vowels": false, "drop-final-vowel": false },
|
|
26
|
-
branches: [],
|
|
27
|
-
joined: { min_classes: 8, when: "the strict keys find nobody" },
|
|
28
|
-
digit_zeros: [48, 1632, 1776, 2406, 2534, 2662, 2790, 2918, 3046, 3174, 3302, 3430, 7248, 44016],
|
|
29
|
-
max_keys: 16,
|
|
30
|
-
suffixes: []
|
|
31
|
-
};
|
|
32
|
-
// phonetic/scorer/fine2.json
|
|
33
|
-
var fine2_default = {
|
|
34
|
-
version: "2026-10-07",
|
|
35
|
-
folds: ["nasal-all", "ng-k", "retroflex", "s-c", "ur-w-u", "v-b"],
|
|
36
|
-
brahmic: { from: 2304, to: 3455, class_by_offset: { "2": "ṁ", "5": "a", "6": "a", "7": "i", "8": "i", "9": "u", "10": "u", "11": "r", "12": "l", "13": "e", "14": "e", "15": "e", "16": "e", "17": "o", "18": "o", "19": "o", "20": "o", "21": "k", "22": "k", "23": "k", "24": "k", "25": "ṅ", "26": "c", "27": "c", "28": "c", "29": "c", "30": "ñ", "31": "ṭ", "32": "ṭ", "33": "ṭ", "34": "ṭ", "35": "ṇ", "36": "t", "37": "t", "38": "t", "39": "t", "40": "n", "41": "n", "42": "p", "43": "p", "44": "p", "45": "p", "46": "m", "47": "y", "48": "r", "49": "r", "50": "l", "51": "l", "52": "l", "53": "v", "54": "s", "55": "s", "56": "s", "57": "h", "62": "a", "63": "i", "64": "i", "65": "u", "66": "u", "67": "r", "68": "r", "69": "e", "70": "e", "71": "e", "72": "e", "73": "o", "74": "o", "75": "o", "76": "o", "87": "o", "96": "r", "97": "l", "98": "l", "99": "l" }, virama_offset: 77, candrabindu_offset: 1, candrabindu_class: "ṁ", nukta_offset: 60, flap_offsets: [33, 34], flap_class: "ṛ" },
|
|
37
|
-
extra: { ৎ: "t", ৰ: "r", ৱ: "v", ୱ: "v", "ੰ": "ṁ", "ਂ": "ṁ", ൺ: "ṇ", ൻ: "n", ർ: "r", ൽ: "l", ൾ: "l", ൿ: "k", ൔ: "m", ൕ: "y", ൖ: "l", ड़: "ṛ", ढ़: "ṛ", ড়: "ṛ", ঢ়: "ṛ", ଡ଼: "ṛ", ଢ଼: "ṛ", ੜ: "ṛ" },
|
|
38
|
-
urdu: { from: 1536, to: 1791, letters: { ا: "a", آ: "a", أ: "a", ب: "p", پ: "p", ت: "t", ٹ: "ṭ", ث: "s", ج: "c", چ: "c", ح: "h", خ: "k", د: "t", ڈ: "ṭ", ذ: "c", ر: "r", ڑ: "ṛ", ز: "c", ژ: "c", س: "s", ش: "s", ص: "s", ض: "c", ط: "t", ظ: "c", غ: "k", ف: "p", ق: "k", ک: "k", ك: "k", گ: "k", ل: "l", م: "m", ن: "n", ں: "ṁ", و: "v", ؤ: "u", ہ: "h", ه: "h", ۃ: "a", ی: "y", ي: "y", ى: "y", ئ: "y", ے: "e", ۓ: "e", ٻ: "p", ڀ: "p", ٺ: "ṭ", ٽ: "ṭ", ٿ: "t", ڄ: "c", ڃ: "ñ", ڇ: "c", ڊ: "ṭ", ڌ: "t", ڍ: "ṭ", ڏ: "t", ڙ: "ṛ", ڦ: "p", ڪ: "k", ڱ: "ṅ", ڳ: "k", ڻ: "ṇ", ٲ: "a", ٳ: "a", ۆ: "o", ۄ: "o", ێ: "e", ؠ: "y" }, ain: "ع", waw: "و", waw_v_before: "اآ", final_he: "ہه", final_he_h_after: "اآو" },
|
|
39
|
-
meetei: { ranges: [[43744, 43775], [43968, 44031]], letters: { ꯀ: "k", ꯁ: "s", ꯂ: "l", ꯃ: "m", ꯄ: "p", ꯅ: "n", ꯆ: "c", ꯇ: "t", ꯈ: "k", ꯉ: "ṅ", ꯊ: "t", ꯋ: "v", ꯌ: "y", ꯍ: "h", ꯎ: "u", ꯏ: "i", ꯐ: "p", ꯑ: "a", ꯒ: "k", ꯓ: "c", ꯔ: "r", ꯕ: "p", ꯖ: "c", ꯗ: "t", ꯘ: "k", ꯙ: "t", ꯚ: "p", ꯛ: "k", ꯜ: "l", ꯝ: "m", ꯞ: "p", ꯟ: "n", ꯠ: "t", ꯡ: "ṅ", ꯢ: "i", "ꯣ": "o", "ꯤ": "i", "ꯥ": "a", "ꯦ": "e", "ꯧ": "o", "ꯨ": "u", "ꯩ": "e", "ꯪ": "ṁ", ꫠ: "e", ꫡ: "o", ꫢ: "c", ꫣ: "ñ", ꫤ: "ṭ", ꫥ: "ṭ", ꫦ: "ṭ", ꫧ: "ṭ", ꫨ: "ṇ", ꫩ: "s", ꫪ: "s", "ꫫ": "i", "ꫬ": "u", "ꫭ": "e", "ꫮ": "o", "ꫯ": "o" } },
|
|
40
|
-
ol_chiki: { from: 7248, to: 7295, letters: { ᱚ: "o", ᱛ: "t", ᱜ: "k", ᱝ: "ṅ", ᱞ: "l", ᱟ: "a", ᱠ: "k", ᱡ: "c", ᱢ: "m", ᱣ: "v", ᱤ: "i", ᱥ: "s", ᱦ: "h", ᱧ: "ñ", ᱨ: "r", ᱩ: "u", ᱪ: "c", ᱫ: "t", ᱬ: "ṇ", ᱭ: "y", ᱮ: "e", ᱯ: "p", ᱰ: "ṭ", ᱱ: "n", ᱲ: "ṛ", ᱳ: "o", ᱴ: "ṭ", ᱵ: "p", ᱶ: "v", ᱷ: "h", ᱸ: "ṁ" }, aspiration: "ᱷ" },
|
|
41
|
-
latin: { groups: [["ngh", "nĝ"], ["chh", "c"], ["ch", "c"], ["jh", "c"], ["kh", "k"], ["gh", "k"], ["th", "t"], ["dh", "t"], ["ph", "p"], ["bh", "p"], ["sh", "s"], ["ck", "k"], ["aa", "a"], ["ai", "e"], ["ei", "e"], ["au", "o"], ["ee", "i"], ["oo", "u"], ["x", "ks"]], letters: { a: "a", e: "e", i: "i", o: "o", u: "u", k: "k", g: "k", q: "k", j: "c", z: "c", t: "t", d: "t", n: "n", m: "m", p: "p", b: "p", f: "p", v: "v", w: "v", y: "y", r: "r", l: "l", s: "s", h: "h" }, w_ambiguous_unless_before: "aeiou" },
|
|
42
|
-
class_map: { m: "n", s: "c", v: "p", w: "p", ñ: "n", ĝ: "k", ṁ: "n", ṅ: "n", ṇ: "n", ṛ: "t", ṭ: "t" },
|
|
43
|
-
vowels: "aeiou",
|
|
44
|
-
steps: { "ng-k": true, "initial-vowels-alike": false, "drop-h": false, "drop-y": false, "drop-y-after-i": false, "drop-vowels": false, "drop-final-vowel": false },
|
|
45
|
-
branches: [{ from: 1536, to: 1791, class: "w", also: "u" }],
|
|
46
|
-
joined: { min_classes: 8, when: "the strict keys find nobody" },
|
|
47
|
-
digit_zeros: [48, 1632, 1776, 2406, 2534, 2662, 2790, 2918, 3046, 3174, 3302, 3430, 7248, 44016],
|
|
48
|
-
max_keys: 16,
|
|
49
|
-
suffixes: []
|
|
50
|
-
};
|
|
51
|
-
// package.json
|
|
52
|
-
var version = "0.8.0";
|
|
53
|
-
// phonetic/rules.json
|
|
54
|
-
var rules_default = {
|
|
55
|
-
version: "2026-10-07",
|
|
56
|
-
folds: [
|
|
57
|
-
"bn-case",
|
|
58
|
-
"brahmic-av-u",
|
|
59
|
-
"drop-vowels",
|
|
60
|
-
"drop-y",
|
|
61
|
-
"flap-r",
|
|
62
|
-
"gu-case",
|
|
63
|
-
"latin-ngh",
|
|
64
|
-
"latin-w-u",
|
|
65
|
-
"ml-case",
|
|
66
|
-
"nasal-all",
|
|
67
|
-
"ng-k",
|
|
68
|
-
"or-case",
|
|
69
|
-
"retroflex",
|
|
70
|
-
"s-c",
|
|
71
|
-
"ta-case",
|
|
72
|
-
"ta-k-h",
|
|
73
|
-
"te-case",
|
|
74
|
-
"ur-w-u",
|
|
75
|
-
"v-b"
|
|
76
|
-
],
|
|
77
|
-
brahmic: {
|
|
78
|
-
from: 2304,
|
|
79
|
-
to: 3455,
|
|
80
|
-
class_by_offset: {
|
|
81
|
-
"2": "ṁ",
|
|
82
|
-
"5": "a",
|
|
83
|
-
"6": "a",
|
|
84
|
-
"7": "i",
|
|
85
|
-
"8": "i",
|
|
86
|
-
"9": "u",
|
|
87
|
-
"10": "u",
|
|
88
|
-
"11": "r",
|
|
89
|
-
"12": "l",
|
|
90
|
-
"13": "e",
|
|
91
|
-
"14": "e",
|
|
92
|
-
"15": "e",
|
|
93
|
-
"16": "e",
|
|
94
|
-
"17": "o",
|
|
95
|
-
"18": "o",
|
|
96
|
-
"19": "o",
|
|
97
|
-
"20": "o",
|
|
98
|
-
"21": "k",
|
|
99
|
-
"22": "k",
|
|
100
|
-
"23": "k",
|
|
101
|
-
"24": "k",
|
|
102
|
-
"25": "ṅ",
|
|
103
|
-
"26": "c",
|
|
104
|
-
"27": "c",
|
|
105
|
-
"28": "c",
|
|
106
|
-
"29": "c",
|
|
107
|
-
"30": "ñ",
|
|
108
|
-
"31": "ṭ",
|
|
109
|
-
"32": "ṭ",
|
|
110
|
-
"33": "ṭ",
|
|
111
|
-
"34": "ṭ",
|
|
112
|
-
"35": "ṇ",
|
|
113
|
-
"36": "t",
|
|
114
|
-
"37": "t",
|
|
115
|
-
"38": "t",
|
|
116
|
-
"39": "t",
|
|
117
|
-
"40": "n",
|
|
118
|
-
"41": "n",
|
|
119
|
-
"42": "p",
|
|
120
|
-
"43": "p",
|
|
121
|
-
"44": "p",
|
|
122
|
-
"45": "p",
|
|
123
|
-
"46": "m",
|
|
124
|
-
"47": "y",
|
|
125
|
-
"48": "r",
|
|
126
|
-
"49": "r",
|
|
127
|
-
"50": "l",
|
|
128
|
-
"51": "l",
|
|
129
|
-
"52": "l",
|
|
130
|
-
"53": "v",
|
|
131
|
-
"54": "s",
|
|
132
|
-
"55": "s",
|
|
133
|
-
"56": "s",
|
|
134
|
-
"57": "h",
|
|
135
|
-
"62": "a",
|
|
136
|
-
"63": "i",
|
|
137
|
-
"64": "i",
|
|
138
|
-
"65": "u",
|
|
139
|
-
"66": "u",
|
|
140
|
-
"67": "r",
|
|
141
|
-
"68": "r",
|
|
142
|
-
"69": "e",
|
|
143
|
-
"70": "e",
|
|
144
|
-
"71": "e",
|
|
145
|
-
"72": "e",
|
|
146
|
-
"73": "o",
|
|
147
|
-
"74": "o",
|
|
148
|
-
"75": "o",
|
|
149
|
-
"76": "o",
|
|
150
|
-
"87": "o",
|
|
151
|
-
"96": "r",
|
|
152
|
-
"97": "l",
|
|
153
|
-
"98": "l",
|
|
154
|
-
"99": "l"
|
|
155
|
-
},
|
|
156
|
-
virama_offset: 77,
|
|
157
|
-
candrabindu_offset: 1,
|
|
158
|
-
candrabindu_class: "ṁ",
|
|
159
|
-
nukta_offset: 60,
|
|
160
|
-
flap_offsets: [
|
|
161
|
-
33,
|
|
162
|
-
34
|
|
163
|
-
],
|
|
164
|
-
flap_class: "ṛ"
|
|
165
|
-
},
|
|
166
|
-
extra: {
|
|
167
|
-
ৎ: "t",
|
|
168
|
-
ৰ: "r",
|
|
169
|
-
ৱ: "v",
|
|
170
|
-
ୱ: "v",
|
|
171
|
-
"ੰ": "ṁ",
|
|
172
|
-
"ਂ": "ṁ",
|
|
173
|
-
ൺ: "ṇ",
|
|
174
|
-
ൻ: "n",
|
|
175
|
-
ർ: "r",
|
|
176
|
-
ൽ: "l",
|
|
177
|
-
ൾ: "l",
|
|
178
|
-
ൿ: "k",
|
|
179
|
-
ൔ: "m",
|
|
180
|
-
ൕ: "y",
|
|
181
|
-
ൖ: "l",
|
|
182
|
-
ड़: "ṛ",
|
|
183
|
-
ढ़: "ṛ",
|
|
184
|
-
ড়: "ṛ",
|
|
185
|
-
ঢ়: "ṛ",
|
|
186
|
-
ଡ଼: "ṛ",
|
|
187
|
-
ଢ଼: "ṛ",
|
|
188
|
-
ੜ: "ṛ"
|
|
189
|
-
},
|
|
190
|
-
urdu: {
|
|
191
|
-
from: 1536,
|
|
192
|
-
to: 1791,
|
|
193
|
-
letters: {
|
|
194
|
-
ا: "a",
|
|
195
|
-
آ: "a",
|
|
196
|
-
أ: "a",
|
|
197
|
-
ب: "p",
|
|
198
|
-
پ: "p",
|
|
199
|
-
ت: "t",
|
|
200
|
-
ٹ: "ṭ",
|
|
201
|
-
ث: "s",
|
|
202
|
-
ج: "c",
|
|
203
|
-
چ: "c",
|
|
204
|
-
ح: "h",
|
|
205
|
-
خ: "k",
|
|
206
|
-
د: "t",
|
|
207
|
-
ڈ: "ṭ",
|
|
208
|
-
ذ: "c",
|
|
209
|
-
ر: "r",
|
|
210
|
-
ڑ: "ṛ",
|
|
211
|
-
ز: "c",
|
|
212
|
-
ژ: "c",
|
|
213
|
-
س: "s",
|
|
214
|
-
ش: "s",
|
|
215
|
-
ص: "s",
|
|
216
|
-
ض: "c",
|
|
217
|
-
ط: "t",
|
|
218
|
-
ظ: "c",
|
|
219
|
-
غ: "k",
|
|
220
|
-
ف: "p",
|
|
221
|
-
ق: "k",
|
|
222
|
-
ک: "k",
|
|
223
|
-
ك: "k",
|
|
224
|
-
گ: "k",
|
|
225
|
-
ل: "l",
|
|
226
|
-
م: "m",
|
|
227
|
-
ن: "n",
|
|
228
|
-
ں: "ṁ",
|
|
229
|
-
و: "v",
|
|
230
|
-
ؤ: "u",
|
|
231
|
-
ہ: "h",
|
|
232
|
-
ه: "h",
|
|
233
|
-
ۃ: "a",
|
|
234
|
-
ی: "y",
|
|
235
|
-
ي: "y",
|
|
236
|
-
ى: "y",
|
|
237
|
-
ئ: "y",
|
|
238
|
-
ے: "e",
|
|
239
|
-
ۓ: "e",
|
|
240
|
-
ٻ: "p",
|
|
241
|
-
ڀ: "p",
|
|
242
|
-
ٺ: "ṭ",
|
|
243
|
-
ٽ: "ṭ",
|
|
244
|
-
ٿ: "t",
|
|
245
|
-
ڄ: "c",
|
|
246
|
-
ڃ: "ñ",
|
|
247
|
-
ڇ: "c",
|
|
248
|
-
ڊ: "ṭ",
|
|
249
|
-
ڌ: "t",
|
|
250
|
-
ڍ: "ṭ",
|
|
251
|
-
ڏ: "t",
|
|
252
|
-
ڙ: "ṛ",
|
|
253
|
-
ڦ: "p",
|
|
254
|
-
ڪ: "k",
|
|
255
|
-
ڱ: "ṅ",
|
|
256
|
-
ڳ: "k",
|
|
257
|
-
ڻ: "ṇ",
|
|
258
|
-
ٲ: "a",
|
|
259
|
-
ٳ: "a",
|
|
260
|
-
ۆ: "o",
|
|
261
|
-
ۄ: "o",
|
|
262
|
-
ێ: "e",
|
|
263
|
-
ؠ: "y"
|
|
264
|
-
},
|
|
265
|
-
ain: "ع",
|
|
266
|
-
waw: "و",
|
|
267
|
-
waw_v_before: "اآ",
|
|
268
|
-
final_he: "ہه",
|
|
269
|
-
final_he_h_after: "اآو"
|
|
270
|
-
},
|
|
271
|
-
meetei: {
|
|
272
|
-
ranges: [
|
|
273
|
-
[
|
|
274
|
-
43744,
|
|
275
|
-
43775
|
|
276
|
-
],
|
|
277
|
-
[
|
|
278
|
-
43968,
|
|
279
|
-
44031
|
|
280
|
-
]
|
|
281
|
-
],
|
|
282
|
-
letters: {
|
|
283
|
-
ꯀ: "k",
|
|
284
|
-
ꯁ: "s",
|
|
285
|
-
ꯂ: "l",
|
|
286
|
-
ꯃ: "m",
|
|
287
|
-
ꯄ: "p",
|
|
288
|
-
ꯅ: "n",
|
|
289
|
-
ꯆ: "c",
|
|
290
|
-
ꯇ: "t",
|
|
291
|
-
ꯈ: "k",
|
|
292
|
-
ꯉ: "ṅ",
|
|
293
|
-
ꯊ: "t",
|
|
294
|
-
ꯋ: "v",
|
|
295
|
-
ꯌ: "y",
|
|
296
|
-
ꯍ: "h",
|
|
297
|
-
ꯎ: "u",
|
|
298
|
-
ꯏ: "i",
|
|
299
|
-
ꯐ: "p",
|
|
300
|
-
ꯑ: "a",
|
|
301
|
-
ꯒ: "k",
|
|
302
|
-
ꯓ: "c",
|
|
303
|
-
ꯔ: "r",
|
|
304
|
-
ꯕ: "p",
|
|
305
|
-
ꯖ: "c",
|
|
306
|
-
ꯗ: "t",
|
|
307
|
-
ꯘ: "k",
|
|
308
|
-
ꯙ: "t",
|
|
309
|
-
ꯚ: "p",
|
|
310
|
-
ꯛ: "k",
|
|
311
|
-
ꯜ: "l",
|
|
312
|
-
ꯝ: "m",
|
|
313
|
-
ꯞ: "p",
|
|
314
|
-
ꯟ: "n",
|
|
315
|
-
ꯠ: "t",
|
|
316
|
-
ꯡ: "ṅ",
|
|
317
|
-
ꯢ: "i",
|
|
318
|
-
"ꯣ": "o",
|
|
319
|
-
"ꯤ": "i",
|
|
320
|
-
"ꯥ": "a",
|
|
321
|
-
"ꯦ": "e",
|
|
322
|
-
"ꯧ": "o",
|
|
323
|
-
"ꯨ": "u",
|
|
324
|
-
"ꯩ": "e",
|
|
325
|
-
"ꯪ": "ṁ",
|
|
326
|
-
ꫠ: "e",
|
|
327
|
-
ꫡ: "o",
|
|
328
|
-
ꫢ: "c",
|
|
329
|
-
ꫣ: "ñ",
|
|
330
|
-
ꫤ: "ṭ",
|
|
331
|
-
ꫥ: "ṭ",
|
|
332
|
-
ꫦ: "ṭ",
|
|
333
|
-
ꫧ: "ṭ",
|
|
334
|
-
ꫨ: "ṇ",
|
|
335
|
-
ꫩ: "s",
|
|
336
|
-
ꫪ: "s",
|
|
337
|
-
"ꫫ": "i",
|
|
338
|
-
"ꫬ": "u",
|
|
339
|
-
"ꫭ": "e",
|
|
340
|
-
"ꫮ": "o",
|
|
341
|
-
"ꫯ": "o"
|
|
342
|
-
}
|
|
343
|
-
},
|
|
344
|
-
ol_chiki: {
|
|
345
|
-
from: 7248,
|
|
346
|
-
to: 7295,
|
|
347
|
-
letters: {
|
|
348
|
-
ᱚ: "o",
|
|
349
|
-
ᱛ: "t",
|
|
350
|
-
ᱜ: "k",
|
|
351
|
-
ᱝ: "ṅ",
|
|
352
|
-
ᱞ: "l",
|
|
353
|
-
ᱟ: "a",
|
|
354
|
-
ᱠ: "k",
|
|
355
|
-
ᱡ: "c",
|
|
356
|
-
ᱢ: "m",
|
|
357
|
-
ᱣ: "v",
|
|
358
|
-
ᱤ: "i",
|
|
359
|
-
ᱥ: "s",
|
|
360
|
-
ᱦ: "h",
|
|
361
|
-
ᱧ: "ñ",
|
|
362
|
-
ᱨ: "r",
|
|
363
|
-
ᱩ: "u",
|
|
364
|
-
ᱪ: "c",
|
|
365
|
-
ᱫ: "t",
|
|
366
|
-
ᱬ: "ṇ",
|
|
367
|
-
ᱭ: "y",
|
|
368
|
-
ᱮ: "e",
|
|
369
|
-
ᱯ: "p",
|
|
370
|
-
ᱰ: "ṭ",
|
|
371
|
-
ᱱ: "n",
|
|
372
|
-
ᱲ: "ṛ",
|
|
373
|
-
ᱳ: "o",
|
|
374
|
-
ᱴ: "ṭ",
|
|
375
|
-
ᱵ: "p",
|
|
376
|
-
ᱶ: "v",
|
|
377
|
-
ᱷ: "h",
|
|
378
|
-
ᱸ: "ṁ"
|
|
379
|
-
},
|
|
380
|
-
aspiration: "ᱷ"
|
|
381
|
-
},
|
|
382
|
-
latin: {
|
|
383
|
-
groups: [
|
|
384
|
-
[
|
|
385
|
-
"ngh",
|
|
386
|
-
"nĝ"
|
|
387
|
-
],
|
|
388
|
-
[
|
|
389
|
-
"chh",
|
|
390
|
-
"c"
|
|
391
|
-
],
|
|
392
|
-
[
|
|
393
|
-
"ch",
|
|
394
|
-
"c"
|
|
395
|
-
],
|
|
396
|
-
[
|
|
397
|
-
"jh",
|
|
398
|
-
"c"
|
|
399
|
-
],
|
|
400
|
-
[
|
|
401
|
-
"kh",
|
|
402
|
-
"k"
|
|
403
|
-
],
|
|
404
|
-
[
|
|
405
|
-
"gh",
|
|
406
|
-
"k"
|
|
407
|
-
],
|
|
408
|
-
[
|
|
409
|
-
"th",
|
|
410
|
-
"t"
|
|
411
|
-
],
|
|
412
|
-
[
|
|
413
|
-
"dh",
|
|
414
|
-
"t"
|
|
415
|
-
],
|
|
416
|
-
[
|
|
417
|
-
"ph",
|
|
418
|
-
"p"
|
|
419
|
-
],
|
|
420
|
-
[
|
|
421
|
-
"bh",
|
|
422
|
-
"p"
|
|
423
|
-
],
|
|
424
|
-
[
|
|
425
|
-
"sh",
|
|
426
|
-
"s"
|
|
427
|
-
],
|
|
428
|
-
[
|
|
429
|
-
"ck",
|
|
430
|
-
"k"
|
|
431
|
-
],
|
|
432
|
-
[
|
|
433
|
-
"aa",
|
|
434
|
-
"a"
|
|
435
|
-
],
|
|
436
|
-
[
|
|
437
|
-
"ai",
|
|
438
|
-
"e"
|
|
439
|
-
],
|
|
440
|
-
[
|
|
441
|
-
"ei",
|
|
442
|
-
"e"
|
|
443
|
-
],
|
|
444
|
-
[
|
|
445
|
-
"au",
|
|
446
|
-
"o"
|
|
447
|
-
],
|
|
448
|
-
[
|
|
449
|
-
"ee",
|
|
450
|
-
"i"
|
|
451
|
-
],
|
|
452
|
-
[
|
|
453
|
-
"oo",
|
|
454
|
-
"u"
|
|
455
|
-
],
|
|
456
|
-
[
|
|
457
|
-
"x",
|
|
458
|
-
"ks"
|
|
459
|
-
]
|
|
460
|
-
],
|
|
461
|
-
letters: {
|
|
462
|
-
a: "a",
|
|
463
|
-
e: "e",
|
|
464
|
-
i: "i",
|
|
465
|
-
o: "o",
|
|
466
|
-
u: "u",
|
|
467
|
-
k: "k",
|
|
468
|
-
g: "k",
|
|
469
|
-
q: "k",
|
|
470
|
-
j: "c",
|
|
471
|
-
z: "c",
|
|
472
|
-
t: "t",
|
|
473
|
-
d: "t",
|
|
474
|
-
n: "n",
|
|
475
|
-
m: "m",
|
|
476
|
-
p: "p",
|
|
477
|
-
b: "p",
|
|
478
|
-
f: "p",
|
|
479
|
-
v: "v",
|
|
480
|
-
w: "v",
|
|
481
|
-
y: "y",
|
|
482
|
-
r: "r",
|
|
483
|
-
l: "l",
|
|
484
|
-
s: "s",
|
|
485
|
-
h: "h"
|
|
486
|
-
},
|
|
487
|
-
w_ambiguous_unless_before: "aeiou"
|
|
488
|
-
},
|
|
489
|
-
class_map: {
|
|
490
|
-
m: "n",
|
|
491
|
-
s: "c",
|
|
492
|
-
v: "p",
|
|
493
|
-
w: "p",
|
|
494
|
-
ñ: "n",
|
|
495
|
-
ĝ: "k",
|
|
496
|
-
ṁ: "n",
|
|
497
|
-
ṅ: "n",
|
|
498
|
-
ṇ: "n",
|
|
499
|
-
ṛ: "t",
|
|
500
|
-
ṭ: "t"
|
|
501
|
-
},
|
|
502
|
-
vowels: "aeiou",
|
|
503
|
-
steps: {
|
|
504
|
-
"ng-k": true,
|
|
505
|
-
"initial-vowels-alike": false,
|
|
506
|
-
"drop-h": false,
|
|
507
|
-
"drop-y": true,
|
|
508
|
-
"drop-y-after-i": false,
|
|
509
|
-
"drop-vowels": true,
|
|
510
|
-
"drop-final-vowel": false
|
|
511
|
-
},
|
|
512
|
-
branches: [
|
|
513
|
-
{
|
|
514
|
-
from: 2304,
|
|
515
|
-
to: 3455,
|
|
516
|
-
class: "v",
|
|
517
|
-
also: "u",
|
|
518
|
-
after: "aṁ",
|
|
519
|
-
not_before: "aieo"
|
|
520
|
-
},
|
|
521
|
-
{
|
|
522
|
-
from: 1536,
|
|
523
|
-
to: 7295,
|
|
524
|
-
class: "ṛ",
|
|
525
|
-
also: "r"
|
|
526
|
-
},
|
|
527
|
-
{
|
|
528
|
-
from: 0,
|
|
529
|
-
to: 127,
|
|
530
|
-
class: "ĝ",
|
|
531
|
-
also: "h"
|
|
532
|
-
},
|
|
533
|
-
{
|
|
534
|
-
from: 0,
|
|
535
|
-
to: 127,
|
|
536
|
-
class: "w",
|
|
537
|
-
also: "u"
|
|
538
|
-
},
|
|
539
|
-
{
|
|
540
|
-
from: 2944,
|
|
541
|
-
to: 3071,
|
|
542
|
-
class: "k",
|
|
543
|
-
also: "h"
|
|
544
|
-
},
|
|
545
|
-
{
|
|
546
|
-
from: 1536,
|
|
547
|
-
to: 1791,
|
|
548
|
-
class: "w",
|
|
549
|
-
also: "u"
|
|
550
|
-
}
|
|
551
|
-
],
|
|
552
|
-
joined: {
|
|
553
|
-
min_classes: 8,
|
|
554
|
-
when: "the strict keys find nobody"
|
|
555
|
-
},
|
|
556
|
-
digit_zeros: [
|
|
557
|
-
48,
|
|
558
|
-
1632,
|
|
559
|
-
1776,
|
|
560
|
-
2406,
|
|
561
|
-
2534,
|
|
562
|
-
2662,
|
|
563
|
-
2790,
|
|
564
|
-
2918,
|
|
565
|
-
3046,
|
|
566
|
-
3174,
|
|
567
|
-
3302,
|
|
568
|
-
3430,
|
|
569
|
-
7248,
|
|
570
|
-
44016
|
|
571
|
-
],
|
|
572
|
-
max_keys: 16,
|
|
573
|
-
suffixes: [
|
|
574
|
-
{
|
|
575
|
-
from: 2432,
|
|
576
|
-
to: 2559,
|
|
577
|
-
endings: [
|
|
578
|
-
"য়ের",
|
|
579
|
-
"দের",
|
|
580
|
-
"এর",
|
|
581
|
-
"ের",
|
|
582
|
-
"কে",
|
|
583
|
-
"তে"
|
|
584
|
-
]
|
|
585
|
-
},
|
|
586
|
-
{
|
|
587
|
-
from: 2688,
|
|
588
|
-
to: 2815,
|
|
589
|
-
endings: [
|
|
590
|
-
"માં",
|
|
591
|
-
"નું",
|
|
592
|
-
"થી",
|
|
593
|
-
"ના",
|
|
594
|
-
"ની",
|
|
595
|
-
"ને"
|
|
596
|
-
]
|
|
597
|
-
},
|
|
598
|
-
{
|
|
599
|
-
from: 3328,
|
|
600
|
-
to: 3455,
|
|
601
|
-
endings: [
|
|
602
|
-
"യ്ക്ക്",
|
|
603
|
-
"ന്റെ",
|
|
604
|
-
"യുടെ",
|
|
605
|
-
"യിലെ",
|
|
606
|
-
"ക്ക്",
|
|
607
|
-
"ുടെ",
|
|
608
|
-
"യിൽ",
|
|
609
|
-
"ിലെ",
|
|
610
|
-
"ോട്",
|
|
611
|
-
"ിന്",
|
|
612
|
-
"ിൽ",
|
|
613
|
-
"നെ",
|
|
614
|
-
"യെ",
|
|
615
|
-
"ും"
|
|
616
|
-
]
|
|
617
|
-
},
|
|
618
|
-
{
|
|
619
|
-
from: 2816,
|
|
620
|
-
to: 2943,
|
|
621
|
-
endings: [
|
|
622
|
-
"ଙ୍କର",
|
|
623
|
-
"ଙ୍କୁ",
|
|
624
|
-
"ଙ୍କ",
|
|
625
|
-
"ରେ",
|
|
626
|
-
"ରୁ",
|
|
627
|
-
"କୁ"
|
|
628
|
-
]
|
|
629
|
-
},
|
|
630
|
-
{
|
|
631
|
-
from: 2944,
|
|
632
|
-
to: 3071,
|
|
633
|
-
endings: [
|
|
634
|
-
"ுக்கு",
|
|
635
|
-
"யின்",
|
|
636
|
-
"வின்",
|
|
637
|
-
"க்கு",
|
|
638
|
-
"யில்",
|
|
639
|
-
"ிடம்",
|
|
640
|
-
"ுடன்",
|
|
641
|
-
"ின்",
|
|
642
|
-
"ில்",
|
|
643
|
-
"ால்",
|
|
644
|
-
"ும்"
|
|
645
|
-
]
|
|
646
|
-
},
|
|
647
|
-
{
|
|
648
|
-
from: 3072,
|
|
649
|
-
to: 3199,
|
|
650
|
-
endings: [
|
|
651
|
-
"యొక్క",
|
|
652
|
-
"లోని",
|
|
653
|
-
"గారు",
|
|
654
|
-
"లో",
|
|
655
|
-
"కు",
|
|
656
|
-
"కి",
|
|
657
|
-
"ని",
|
|
658
|
-
"తో",
|
|
659
|
-
"ను"
|
|
660
|
-
]
|
|
661
|
-
}
|
|
662
|
-
]
|
|
663
|
-
};
|
|
664
|
-
|
|
665
|
-
// js/phonetic.ts
|
|
666
|
-
var DELETED = "\x00";
|
|
667
|
-
function compile(rules) {
|
|
668
|
-
const b = rules.brahmic;
|
|
669
|
-
const byOffset = new Array(128);
|
|
670
|
-
for (const [o, c] of Object.entries(b.class_by_offset))
|
|
671
|
-
byOffset[Number(o)] = c;
|
|
672
|
-
const extra = new Map(Object.entries(rules.extra));
|
|
673
|
-
const urdu = new Map(Object.entries(rules.urdu.letters));
|
|
674
|
-
const meetei = new Map(Object.entries(rules.meetei.letters));
|
|
675
|
-
const olChiki = new Map(Object.entries(rules.ol_chiki.letters));
|
|
676
|
-
const latin = new Array(128);
|
|
677
|
-
for (const [l, c] of Object.entries(rules.latin.letters))
|
|
678
|
-
latin[l.charCodeAt(0)] = c;
|
|
679
|
-
const groups = rules.latin.groups;
|
|
680
|
-
const wUnlessNext = rules.latin.w_ambiguous_unless_before;
|
|
681
|
-
const classMap = new Map(Object.entries(rules.class_map));
|
|
682
|
-
const vowels = new Set(rules.vowels);
|
|
683
|
-
const steps = rules.steps;
|
|
684
|
-
const u = rules.urdu;
|
|
685
|
-
function inMeetei(o) {
|
|
686
|
-
return rules.meetei.ranges.some(([lo, hi]) => o >= lo && o <= hi);
|
|
687
|
-
}
|
|
688
|
-
function readBrahmic(word) {
|
|
689
|
-
let out = "";
|
|
690
|
-
let last = -1;
|
|
691
|
-
for (let i = 0;i < word.length; i++) {
|
|
692
|
-
const ch = word[i];
|
|
693
|
-
const x = extra.get(ch);
|
|
694
|
-
if (x !== undefined) {
|
|
695
|
-
out += x;
|
|
696
|
-
last = -1;
|
|
697
|
-
continue;
|
|
698
|
-
}
|
|
699
|
-
const o = word.charCodeAt(i);
|
|
700
|
-
if (o < b.from || o > b.to)
|
|
701
|
-
continue;
|
|
702
|
-
const off = o & 127;
|
|
703
|
-
const c = byOffset[off];
|
|
704
|
-
if (off === b.nukta_offset && b.flap_offsets.includes(last) && out) {
|
|
705
|
-
out = out.slice(0, -1) + b.flap_class;
|
|
706
|
-
} else if (off === b.virama_offset) {} else if (off === b.candrabindu_offset) {
|
|
707
|
-
out += b.candrabindu_class;
|
|
708
|
-
} else if (c !== undefined) {
|
|
709
|
-
out += c;
|
|
710
|
-
}
|
|
711
|
-
if (c !== undefined)
|
|
712
|
-
last = off;
|
|
713
|
-
else if (off !== b.nukta_offset && off !== b.virama_offset)
|
|
714
|
-
last = -1;
|
|
715
|
-
}
|
|
716
|
-
return out;
|
|
717
|
-
}
|
|
718
|
-
function readLatin(word) {
|
|
719
|
-
let out = "";
|
|
720
|
-
let i = 0;
|
|
721
|
-
outer:
|
|
722
|
-
while (i < word.length) {
|
|
723
|
-
for (const [g, cls] of groups) {
|
|
724
|
-
if (word.startsWith(g, i)) {
|
|
725
|
-
out += cls;
|
|
726
|
-
i += g.length;
|
|
727
|
-
continue outer;
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
const ch = word.charCodeAt(i);
|
|
731
|
-
if (ch === 99) {
|
|
732
|
-
const next = word[i + 1];
|
|
733
|
-
out += next === "e" || next === "i" || next === "y" ? "s" : "k";
|
|
734
|
-
} else if (ch === 119 && i > 0 && !wUnlessNext.includes(word[i + 1] ?? " ")) {
|
|
735
|
-
out += "w";
|
|
736
|
-
} else {
|
|
737
|
-
out += latin[ch] ?? "";
|
|
738
|
-
}
|
|
739
|
-
i++;
|
|
740
|
-
}
|
|
741
|
-
return out;
|
|
742
|
-
}
|
|
743
|
-
function readUrdu(word) {
|
|
744
|
-
let out = word[0] === u.ain ? "a" : "";
|
|
745
|
-
for (let i = 0;i < word.length; i++) {
|
|
746
|
-
const ch = word[i];
|
|
747
|
-
if (ch === u.waw && i > 0 && !(i + 1 < word.length && u.waw_v_before.includes(word[i + 1])))
|
|
748
|
-
out += "w";
|
|
749
|
-
else
|
|
750
|
-
out += urdu.get(ch) ?? "";
|
|
751
|
-
}
|
|
752
|
-
const n = word.length;
|
|
753
|
-
if (n > 1 && u.final_he.includes(word[n - 1]) && !u.final_he_h_after.includes(word[n - 2])) {
|
|
754
|
-
out = out.slice(0, -1) + "a";
|
|
755
|
-
}
|
|
756
|
-
return out;
|
|
757
|
-
}
|
|
758
|
-
function readOlChiki(word) {
|
|
759
|
-
let out = "";
|
|
760
|
-
for (const ch of word) {
|
|
761
|
-
if (ch === rules.ol_chiki.aspiration && out && !vowels.has(out[out.length - 1]))
|
|
762
|
-
continue;
|
|
763
|
-
out += olChiki.get(ch) ?? "";
|
|
764
|
-
}
|
|
765
|
-
return out;
|
|
766
|
-
}
|
|
767
|
-
function readMeetei(word) {
|
|
768
|
-
let out = "";
|
|
769
|
-
for (const ch of word)
|
|
770
|
-
out += meetei.get(ch) ?? "";
|
|
771
|
-
return out;
|
|
772
|
-
}
|
|
773
|
-
function read(word) {
|
|
774
|
-
let ascii = true;
|
|
775
|
-
for (let i = 0;i < word.length; i++)
|
|
776
|
-
if (word.charCodeAt(i) > 127) {
|
|
777
|
-
ascii = false;
|
|
778
|
-
break;
|
|
779
|
-
}
|
|
780
|
-
if (ascii)
|
|
781
|
-
return readLatin(word);
|
|
782
|
-
let ol = false, me = false;
|
|
783
|
-
for (let i = 0;i < word.length; i++) {
|
|
784
|
-
const o = word.charCodeAt(i);
|
|
785
|
-
if (o >= u.from && o <= u.to)
|
|
786
|
-
return readUrdu(word);
|
|
787
|
-
if (o >= rules.ol_chiki.from && o <= rules.ol_chiki.to)
|
|
788
|
-
ol = true;
|
|
789
|
-
else if (inMeetei(o))
|
|
790
|
-
me = true;
|
|
791
|
-
}
|
|
792
|
-
if (ol)
|
|
793
|
-
return readOlChiki(word);
|
|
794
|
-
if (me)
|
|
795
|
-
return readMeetei(word);
|
|
796
|
-
return readBrahmic(word);
|
|
797
|
-
}
|
|
798
|
-
function fold(codes) {
|
|
799
|
-
if (steps["ng-k"]) {
|
|
800
|
-
let s = "";
|
|
801
|
-
for (let i = 0;i < codes.length; i++) {
|
|
802
|
-
s += codes[i];
|
|
803
|
-
if (codes[i] === "ṅ" && codes[i + 1] !== "k")
|
|
804
|
-
s += "k";
|
|
805
|
-
}
|
|
806
|
-
codes = s;
|
|
807
|
-
}
|
|
808
|
-
let mapped = "";
|
|
809
|
-
for (let i = 0;i < codes.length; i++)
|
|
810
|
-
mapped += classMap.get(codes[i]) ?? codes[i];
|
|
811
|
-
if (!mapped)
|
|
812
|
-
return mapped;
|
|
813
|
-
let head = mapped[0];
|
|
814
|
-
if (steps["initial-vowels-alike"] && vowels.has(head))
|
|
815
|
-
head = "a";
|
|
816
|
-
let out = head;
|
|
817
|
-
for (let i = 1;i < mapped.length; i++) {
|
|
818
|
-
const c = mapped[i];
|
|
819
|
-
if (steps["drop-h"] && c === "h")
|
|
820
|
-
continue;
|
|
821
|
-
if (steps["drop-y"] && c === "y")
|
|
822
|
-
continue;
|
|
823
|
-
if (steps["drop-vowels"] && vowels.has(c))
|
|
824
|
-
continue;
|
|
825
|
-
out += c;
|
|
826
|
-
}
|
|
827
|
-
if (steps["drop-final-vowel"] && out.length > 1 && vowels.has(out[out.length - 1]))
|
|
828
|
-
out = out.slice(0, -1);
|
|
829
|
-
let runs = out[0];
|
|
830
|
-
for (let i = 1;i < out.length; i++)
|
|
831
|
-
if (out[i] !== out[i - 1])
|
|
832
|
-
runs += out[i];
|
|
833
|
-
return runs;
|
|
834
|
-
}
|
|
835
|
-
function fits(classes, i, br) {
|
|
836
|
-
const prev = i > 0 ? classes[i - 1] : "^";
|
|
837
|
-
const next = i + 1 < classes.length ? classes[i + 1] : "$";
|
|
838
|
-
return (br.after === undefined || br.after.includes(prev)) && (br.before === undefined || br.before.includes(next)) && !(br.not_before ?? "").includes(next);
|
|
839
|
-
}
|
|
840
|
-
function variants(word) {
|
|
841
|
-
const classes = read(word);
|
|
842
|
-
let vs = [classes];
|
|
843
|
-
for (const br of rules.branches) {
|
|
844
|
-
if (!classes.includes(br.class))
|
|
845
|
-
continue;
|
|
846
|
-
let inScript = false;
|
|
847
|
-
for (let i = 0;i < word.length; i++) {
|
|
848
|
-
const o = word.charCodeAt(i);
|
|
849
|
-
if (o >= br.from && o <= br.to) {
|
|
850
|
-
inScript = true;
|
|
851
|
-
break;
|
|
852
|
-
}
|
|
853
|
-
}
|
|
854
|
-
if (!inScript)
|
|
855
|
-
continue;
|
|
856
|
-
for (let i = 0;i < classes.length; i++) {
|
|
857
|
-
if (classes[i] === br.class && vs.length * 2 <= rules.max_keys && fits(classes, i, br)) {
|
|
858
|
-
const also = br.also || DELETED;
|
|
859
|
-
vs = vs.concat(vs.map((v) => v.slice(0, i) + also + v.slice(i + 1)));
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
}
|
|
863
|
-
return vs.map((v) => v.replaceAll(DELETED, ""));
|
|
864
|
-
}
|
|
865
|
-
function number(word) {
|
|
866
|
-
let out = "";
|
|
867
|
-
for (let i = 0;i < word.length; i++) {
|
|
868
|
-
const o = word.charCodeAt(i);
|
|
869
|
-
const z = rules.digit_zeros.find((z2) => o >= z2 && o <= z2 + 9);
|
|
870
|
-
if (z === undefined)
|
|
871
|
-
return;
|
|
872
|
-
out += String.fromCharCode(48 + o - z);
|
|
873
|
-
}
|
|
874
|
-
return out || undefined;
|
|
875
|
-
}
|
|
876
|
-
return function keys(word) {
|
|
877
|
-
const n = number(word);
|
|
878
|
-
if (n !== undefined)
|
|
879
|
-
return [n];
|
|
880
|
-
const bases = [word];
|
|
881
|
-
const first = word.charCodeAt(0);
|
|
882
|
-
for (const sf of rules.suffixes) {
|
|
883
|
-
if (first < sf.from || first > sf.to)
|
|
884
|
-
continue;
|
|
885
|
-
for (const e of sf.endings) {
|
|
886
|
-
if (word.endsWith(e) && word.length - e.length >= 2) {
|
|
887
|
-
bases.push(word.slice(0, -e.length));
|
|
888
|
-
break;
|
|
889
|
-
}
|
|
890
|
-
}
|
|
891
|
-
}
|
|
892
|
-
const out = new Set;
|
|
893
|
-
for (const base of bases)
|
|
894
|
-
for (const v of variants(base))
|
|
895
|
-
out.add(fold(v));
|
|
896
|
-
out.delete("");
|
|
897
|
-
return [...out].sort();
|
|
898
|
-
};
|
|
899
|
-
}
|
|
900
|
-
var engine = compile(rules_default);
|
|
901
|
-
var _internal = { compile: (r) => compile(r), normalize: (w) => normalize(w), engine };
|
|
902
|
-
var RULES_VERSION = rules_default.version;
|
|
903
|
-
var MAX_NAME_KEYS = 256;
|
|
904
|
-
function normalize(word) {
|
|
905
|
-
const plain = word.normalize("NFD").replace(/\p{Mn}/gu, "");
|
|
906
|
-
return /^[\x00-\x7f]*$/.test(plain) ? plain.toLowerCase() : word.normalize("NFC");
|
|
907
|
-
}
|
|
908
|
-
function words(name) {
|
|
909
|
-
return name.replace(/\([^)]*\)/g, " ").split(/[^\S\ufeff]|[\x1c-\x1f\x85.\-,'’]/u).filter(Boolean);
|
|
910
|
-
}
|
|
911
|
-
var JOINED_MIN_CLASSES = rules_default.joined.min_classes;
|
|
912
|
-
|
|
913
|
-
// js/phonetic-search.ts
|
|
914
|
-
var R = search_default;
|
|
915
|
-
var SEARCH_VERSION = R.version;
|
|
916
|
-
var THRESHOLDS = R.thresholds;
|
|
917
|
-
var { compile: compile2, normalize: normalize2, engine: engine2 } = _internal;
|
|
918
|
-
var fineEngine = compile2(fine_default);
|
|
919
|
-
var fine2Engine = compile2(fine2_default);
|
|
920
|
-
var JOINED_MIN = JOINED_MIN_CLASSES;
|
|
921
|
-
var INF = 2 ** 30;
|
|
922
|
-
var floor = Math.floor;
|
|
923
|
-
function pow2neg(k) {
|
|
924
|
-
return k >= 0 && k < R.pow.length ? R.pow[k] : 0;
|
|
925
|
-
}
|
|
926
|
-
function log2x10(num, den) {
|
|
927
|
-
let q = 0;
|
|
928
|
-
while (q + 1 < R.exp2.length && den * R.exp2[q + 1] <= num * 65536)
|
|
929
|
-
q++;
|
|
930
|
-
return q;
|
|
931
|
-
}
|
|
932
|
-
function ratio(a, b) {
|
|
933
|
-
const n = a.length + b.length;
|
|
934
|
-
if (!n)
|
|
935
|
-
return 1e4;
|
|
936
|
-
let prev = new Array(b.length + 1).fill(0), cur = new Array(b.length + 1).fill(0);
|
|
937
|
-
for (const x of a) {
|
|
938
|
-
cur[0] = 0;
|
|
939
|
-
for (let j = 0;j < b.length; j++)
|
|
940
|
-
cur[j + 1] = x === b[j] ? prev[j] + 1 : Math.max(prev[j + 1], cur[j]);
|
|
941
|
-
[prev, cur] = [cur, prev];
|
|
942
|
-
}
|
|
943
|
-
return floor((40000 * prev[b.length] + n) / (2 * n));
|
|
944
|
-
}
|
|
945
|
-
var rounded = (num, den) => floor((2 * num + den) / (2 * den));
|
|
946
|
-
var isAscii = (s) => /^[\x00-\x7f]*$/.test(s);
|
|
947
|
-
var keysOf = (w) => engine2(w);
|
|
948
|
-
function searchWords(name) {
|
|
949
|
-
const out = [];
|
|
950
|
-
for (let w of words(name)) {
|
|
951
|
-
w = normalize2(w);
|
|
952
|
-
if (isAscii(w))
|
|
953
|
-
w = w.replace(/[^a-z0-9]/g, "");
|
|
954
|
-
if (w && keysOf(w).length)
|
|
955
|
-
out.push(w);
|
|
956
|
-
}
|
|
957
|
-
return out;
|
|
958
|
-
}
|
|
959
|
-
var latSyms = (w) => [...w.toLowerCase()].filter((c) => c >= "a" && c <= "z");
|
|
960
|
-
var natSyms = (w) => [...w.normalize("NFC")].filter((c) => c !== "" && c !== "" && !/^(?:[^\S]|[\x1c-\x1f\x85])$/u.test(c));
|
|
961
|
-
function deletions(k) {
|
|
962
|
-
const rs = [...k];
|
|
963
|
-
if (rs.length < R.deletion_min_classes)
|
|
964
|
-
return [];
|
|
965
|
-
return rs.map((_, i) => rs.slice(0, i).join("") + rs.slice(i + 1).join(""));
|
|
966
|
-
}
|
|
967
|
-
var fineKey = (w) => [...fineEngine(w)[0] ?? ""];
|
|
968
|
-
function fine2Keys(w) {
|
|
969
|
-
const arabic = [...w].some((c) => c >= "" && c <= "ۿ");
|
|
970
|
-
const seen = new Set, out = [];
|
|
971
|
-
for (const f of fine2Engine(w)) {
|
|
972
|
-
const rs = [...f];
|
|
973
|
-
const g = [rs[0], ...rs.slice(1).filter((c) => c !== "a").map((c) => c === "y" ? "i" : c)];
|
|
974
|
-
if (arabic && g.length > 1 && g[g.length - 1] === "h")
|
|
975
|
-
g.pop();
|
|
976
|
-
const key = g.join("");
|
|
977
|
-
if (!seen.has(key)) {
|
|
978
|
-
seen.add(key);
|
|
979
|
-
out.push(g);
|
|
980
|
-
}
|
|
981
|
-
}
|
|
982
|
-
return out;
|
|
983
|
-
}
|
|
984
|
-
function vowelRatio(a, b) {
|
|
985
|
-
let best = 0;
|
|
986
|
-
for (const x of fine2Keys(a))
|
|
987
|
-
for (const y of fine2Keys(b))
|
|
988
|
-
best = Math.max(best, ratio(x, y));
|
|
989
|
-
return best;
|
|
990
|
-
}
|
|
991
|
-
var BLOCKS = [
|
|
992
|
-
[1536, 1791, "arab"],
|
|
993
|
-
[1872, 1919, "arab"],
|
|
994
|
-
[2304, 2431, "deva"],
|
|
995
|
-
[2432, 2559, "beng"],
|
|
996
|
-
[2560, 2687, "guru"],
|
|
997
|
-
[2688, 2815, "gujr"],
|
|
998
|
-
[2816, 2943, "orya"],
|
|
999
|
-
[2944, 3071, "taml"],
|
|
1000
|
-
[3072, 3199, "telu"],
|
|
1001
|
-
[3200, 3327, "knda"],
|
|
1002
|
-
[3328, 3455, "mlym"],
|
|
1003
|
-
[7248, 7295, "olck"],
|
|
1004
|
-
[43968, 44031, "mtei"]
|
|
1005
|
-
];
|
|
1006
|
-
function scriptOf(w) {
|
|
1007
|
-
for (const c of w) {
|
|
1008
|
-
if (/\p{L}/u.test(c)) {
|
|
1009
|
-
const o = c.codePointAt(0);
|
|
1010
|
-
return BLOCKS.find(([lo, hi]) => o >= lo && o <= hi)?.[2] ?? "";
|
|
1011
|
-
}
|
|
1012
|
-
}
|
|
1013
|
-
return "";
|
|
1014
|
-
}
|
|
1015
|
-
|
|
1016
|
-
class CostTable {
|
|
1017
|
-
idx = new Map;
|
|
1018
|
-
v;
|
|
1019
|
-
c;
|
|
1020
|
-
units = new Map;
|
|
1021
|
-
constructor(raw) {
|
|
1022
|
-
const src = raw.latin ?? raw.x, dst = raw.native ?? raw.y;
|
|
1023
|
-
const alpha = [...src, ...dst];
|
|
1024
|
-
alpha.forEach((s, i) => this.idx.set(s, i + 1));
|
|
1025
|
-
this.v = alpha.length + 1;
|
|
1026
|
-
this.c = new Float64Array(this.v * this.v).fill(INF);
|
|
1027
|
-
raw.c.forEach(([d, ex], r) => {
|
|
1028
|
-
this.c.fill(d, r * this.v, (r + 1) * this.v);
|
|
1029
|
-
for (const [j, x] of ex)
|
|
1030
|
-
this.c[r * this.v + j] = x;
|
|
1031
|
-
});
|
|
1032
|
-
this.c[0] = 0;
|
|
1033
|
-
for (const [i, j, d, ex] of raw.units ?? []) {
|
|
1034
|
-
const row = new Float64Array(this.v).fill(INF);
|
|
1035
|
-
if (d >= 0)
|
|
1036
|
-
row.fill(d, src.length + 1);
|
|
1037
|
-
for (const [k, x] of ex)
|
|
1038
|
-
row[k] = x < 0 ? INF : x;
|
|
1039
|
-
this.units.set(i * this.v + j, row);
|
|
1040
|
-
}
|
|
1041
|
-
}
|
|
1042
|
-
ids(rs) {
|
|
1043
|
-
return rs.map((r) => this.idx.get(r) ?? 0);
|
|
1044
|
-
}
|
|
1045
|
-
align(a, b, withUnits) {
|
|
1046
|
-
const n = a.length, m = b.length, w = m + 1, v = this.v, c = this.c;
|
|
1047
|
-
const D = new Float64Array((n + 1) * w);
|
|
1048
|
-
for (let i = 1;i <= n; i++)
|
|
1049
|
-
D[i * w] = D[(i - 1) * w] + c[a[i - 1] * v];
|
|
1050
|
-
for (let j = 1;j <= m; j++)
|
|
1051
|
-
D[j] = D[j - 1] + c[b[j - 1]];
|
|
1052
|
-
for (let i = 1;i <= n; i++) {
|
|
1053
|
-
for (let j = 1;j <= m; j++) {
|
|
1054
|
-
let best = D[(i - 1) * w + j - 1] + c[a[i - 1] * v + b[j - 1]];
|
|
1055
|
-
best = Math.min(best, D[(i - 1) * w + j] + c[a[i - 1] * v]);
|
|
1056
|
-
best = Math.min(best, D[i * w + j - 1] + c[b[j - 1]]);
|
|
1057
|
-
if (withUnits && i >= 2) {
|
|
1058
|
-
const row = this.units.get(a[i - 2] * v + a[i - 1]);
|
|
1059
|
-
if (row)
|
|
1060
|
-
best = Math.min(best, D[(i - 2) * w + j - 1] + row[b[j - 1]]);
|
|
1061
|
-
}
|
|
1062
|
-
D[i * w + j] = best;
|
|
1063
|
-
}
|
|
1064
|
-
}
|
|
1065
|
-
return D[n * w + m];
|
|
1066
|
-
}
|
|
1067
|
-
}
|
|
1068
|
-
var CDN = `https://cdn.jsdelivr.net/gh/micahchoo/indickit@v${version}/phonetic/scorer/`;
|
|
1069
|
-
var LOCAL = new URL("../phonetic/scorer/", import.meta.url);
|
|
1070
|
-
async function fetchBytes(url) {
|
|
1071
|
-
const res = await fetch(url);
|
|
1072
|
-
if (!res.ok)
|
|
1073
|
-
throw new Error(`phonetic-search: ${url}: ${res.status}`);
|
|
1074
|
-
return res.arrayBuffer();
|
|
1075
|
-
}
|
|
1076
|
-
var defaultFetcher = async (url) => {
|
|
1077
|
-
try {
|
|
1078
|
-
return await fetchBytes(url);
|
|
1079
|
-
} catch {
|
|
1080
|
-
return fetchBytes(new URL(url.href.slice(LOCAL.href.length), CDN));
|
|
1081
|
-
}
|
|
1082
|
-
};
|
|
1083
|
-
async function loadTable(path, fetcher) {
|
|
1084
|
-
try {
|
|
1085
|
-
const bytes = await fetcher(new URL(path + ".json", LOCAL));
|
|
1086
|
-
return new CostTable(JSON.parse(new TextDecoder().decode(bytes)));
|
|
1087
|
-
} catch {
|
|
1088
|
-
return;
|
|
1089
|
-
}
|
|
1090
|
-
}
|
|
1091
|
-
|
|
1092
|
-
class Scorer {
|
|
1093
|
-
lang;
|
|
1094
|
-
latin;
|
|
1095
|
-
pairs;
|
|
1096
|
-
constructor(lang, latin, pairs) {
|
|
1097
|
-
this.lang = lang;
|
|
1098
|
-
this.latin = latin;
|
|
1099
|
-
this.pairs = pairs;
|
|
1100
|
-
}
|
|
1101
|
-
cost(a, b) {
|
|
1102
|
-
const aa = isAscii(a), ba = isAscii(b);
|
|
1103
|
-
let t, x, y, n, units = false;
|
|
1104
|
-
if (aa !== ba) {
|
|
1105
|
-
const [lat, nat] = aa ? [a, b] : [b, a];
|
|
1106
|
-
if (!(t = this.latin))
|
|
1107
|
-
return;
|
|
1108
|
-
x = latSyms(lat);
|
|
1109
|
-
y = natSyms(nat);
|
|
1110
|
-
units = true;
|
|
1111
|
-
n = Math.max(x.length, 1);
|
|
1112
|
-
} else if (!aa) {
|
|
1113
|
-
let sa = scriptOf(a), sb = scriptOf(b);
|
|
1114
|
-
if (!sa || !sb || sa === sb)
|
|
1115
|
-
return;
|
|
1116
|
-
if (sa > sb) {
|
|
1117
|
-
[a, b] = [b, a];
|
|
1118
|
-
[sa, sb] = [sb, sa];
|
|
1119
|
-
}
|
|
1120
|
-
if (!(t = this.pairs.get(`${sa}-${sb}`)))
|
|
1121
|
-
return;
|
|
1122
|
-
x = natSyms(a);
|
|
1123
|
-
y = natSyms(b);
|
|
1124
|
-
n = Math.max(x.length, y.length, 1);
|
|
1125
|
-
} else
|
|
1126
|
-
return;
|
|
1127
|
-
const total = t.align(t.ids(x), t.ids(y), units);
|
|
1128
|
-
return floor((20 * total + n) / (2 * n));
|
|
1129
|
-
}
|
|
1130
|
-
calibrations(a, cands) {
|
|
1131
|
-
const cs = new Map;
|
|
1132
|
-
for (const b of cands) {
|
|
1133
|
-
const c = this.cost(a, b);
|
|
1134
|
-
if (c !== undefined)
|
|
1135
|
-
cs.set(b, c);
|
|
1136
|
-
}
|
|
1137
|
-
const out = new Map;
|
|
1138
|
-
if (!cs.size)
|
|
1139
|
-
return out;
|
|
1140
|
-
const best = Math.min(...cs.values());
|
|
1141
|
-
const na = Math.max(isAscii(a) ? latSyms(a).length : natSyms(a).length, 1);
|
|
1142
|
-
const lo = Math.min(...[...cs.values()].map((c) => c * na));
|
|
1143
|
-
const w = new Map;
|
|
1144
|
-
let z = 0;
|
|
1145
|
-
for (const [b, c] of cs) {
|
|
1146
|
-
const x = pow2neg(floor((c * na - lo) / R.posterior_temperature));
|
|
1147
|
-
w.set(b, x);
|
|
1148
|
-
z += x;
|
|
1149
|
-
}
|
|
1150
|
-
for (const [b, c] of cs) {
|
|
1151
|
-
const rel = floor((100 * pow2neg(c - best) + 500000) / 1e6);
|
|
1152
|
-
const post = floor((100 * w.get(b) + floor(z / 2)) / z);
|
|
1153
|
-
out.set(b, rel + post);
|
|
1154
|
-
}
|
|
1155
|
-
return out;
|
|
1156
|
-
}
|
|
1157
|
-
wordSim(a, b, cal, p) {
|
|
1158
|
-
const kb = new Set(keysOf(b));
|
|
1159
|
-
const meet = keysOf(a).some((k) => kb.has(k)) ? 1 : 0;
|
|
1160
|
-
let c2, v;
|
|
1161
|
-
if (isAscii(a) && isAscii(b)) {
|
|
1162
|
-
v = ratio(latSyms(a), latSyms(b));
|
|
1163
|
-
c2 = 2 * v;
|
|
1164
|
-
} else if (cal?.has(b)) {
|
|
1165
|
-
c2 = 100 * cal.get(b);
|
|
1166
|
-
v = vowelRatio(a, b);
|
|
1167
|
-
} else if (this.cost(a, b) !== undefined) {
|
|
1168
|
-
c2 = 20000;
|
|
1169
|
-
v = vowelRatio(a, b);
|
|
1170
|
-
} else {
|
|
1171
|
-
v = ratio(fineKey(a), fineKey(b));
|
|
1172
|
-
c2 = 2 * v;
|
|
1173
|
-
}
|
|
1174
|
-
const num = 2 * p.key * 1e4 * meet + p.cost * c2 + 2 * p.vowel * v;
|
|
1175
|
-
return p.round ? rounded(num, 200 * p.div) : floor(num / (200 * p.div));
|
|
1176
|
-
}
|
|
1177
|
-
}
|
|
1178
|
-
function joinedOf(ws, min) {
|
|
1179
|
-
const j = ws.join("");
|
|
1180
|
-
return j ? keysOf(j).filter((k) => [...k].length >= min) : [];
|
|
1181
|
-
}
|
|
1182
|
-
function strictKeys(ws) {
|
|
1183
|
-
const all = ws.map(keysOf).filter((ks) => ks.length);
|
|
1184
|
-
if (!all.length)
|
|
1185
|
-
return [];
|
|
1186
|
-
let out = [""];
|
|
1187
|
-
all.forEach((ks, i) => {
|
|
1188
|
-
out = out.flatMap((p) => ks.map((k) => i ? p + "\x1F" + k : k));
|
|
1189
|
-
});
|
|
1190
|
-
return out.slice(0, MAX_NAME_KEYS);
|
|
1191
|
-
}
|
|
1192
|
-
|
|
1193
|
-
class Index {
|
|
1194
|
-
scorer;
|
|
1195
|
-
words;
|
|
1196
|
-
n;
|
|
1197
|
-
df = new Map;
|
|
1198
|
-
maps = { strict: new Map, joined: new Map, loose: new Map, near: new Map };
|
|
1199
|
-
p;
|
|
1200
|
-
constructor(scorer, names, profile) {
|
|
1201
|
-
this.scorer = scorer;
|
|
1202
|
-
this.p = R.profiles[profile];
|
|
1203
|
-
this.n = names.length;
|
|
1204
|
-
this.words = names.map(searchWords);
|
|
1205
|
-
for (const ws of this.words)
|
|
1206
|
-
for (const k of new Set(ws.flatMap(keysOf)))
|
|
1207
|
-
this.df.set(k, (this.df.get(k) ?? 0) + 1);
|
|
1208
|
-
const add = (m, k, i) => {
|
|
1209
|
-
const l = m.get(k);
|
|
1210
|
-
if (!l)
|
|
1211
|
-
m.set(k, [i]);
|
|
1212
|
-
else if (l[l.length - 1] !== i)
|
|
1213
|
-
l.push(i);
|
|
1214
|
-
};
|
|
1215
|
-
this.words.forEach((ws, i) => {
|
|
1216
|
-
for (const k of strictKeys(ws))
|
|
1217
|
-
add(this.maps.strict, k, i);
|
|
1218
|
-
for (const k of joinedOf(ws, JOINED_MIN))
|
|
1219
|
-
add(this.maps.joined, k, i);
|
|
1220
|
-
for (const k of joinedOf(ws, R.loose_joined_min_classes))
|
|
1221
|
-
add(this.maps.loose, k, i);
|
|
1222
|
-
for (const w of ws)
|
|
1223
|
-
for (const k of keysOf(w)) {
|
|
1224
|
-
if (this.common(k))
|
|
1225
|
-
continue;
|
|
1226
|
-
add(this.maps.near, k, i);
|
|
1227
|
-
for (const d of deletions(k))
|
|
1228
|
-
add(this.maps.near, d, i);
|
|
1229
|
-
}
|
|
1230
|
-
});
|
|
1231
|
-
}
|
|
1232
|
-
common(k) {
|
|
1233
|
-
const s = this.p.stop_permille;
|
|
1234
|
-
return s !== null && this.n >= this.p.stop_min_names && (this.df.get(k) ?? 0) * 1000 > this.n * s;
|
|
1235
|
-
}
|
|
1236
|
-
weight(w) {
|
|
1237
|
-
let best = 0;
|
|
1238
|
-
for (const k of keysOf(w))
|
|
1239
|
-
best = Math.max(best, log2x10(this.n, Math.max(this.df.get(k) ?? 0, 1)));
|
|
1240
|
-
return best;
|
|
1241
|
-
}
|
|
1242
|
-
candidates(qws) {
|
|
1243
|
-
const out = new Set;
|
|
1244
|
-
for (const k of strictKeys(qws))
|
|
1245
|
-
for (const i of this.maps.strict.get(k) ?? [])
|
|
1246
|
-
out.add(i);
|
|
1247
|
-
if (!out.size)
|
|
1248
|
-
for (const k of joinedOf(qws, JOINED_MIN))
|
|
1249
|
-
for (const i of this.maps.joined.get(k) ?? [])
|
|
1250
|
-
out.add(i);
|
|
1251
|
-
for (const k of joinedOf(qws, R.loose_joined_min_classes))
|
|
1252
|
-
for (const i of this.maps.loose.get(k) ?? [])
|
|
1253
|
-
out.add(i);
|
|
1254
|
-
for (const w of qws)
|
|
1255
|
-
for (const k of keysOf(w)) {
|
|
1256
|
-
if (this.common(k))
|
|
1257
|
-
continue;
|
|
1258
|
-
for (const d of [k, ...deletions(k)])
|
|
1259
|
-
for (const i of this.maps.near.get(d) ?? [])
|
|
1260
|
-
out.add(i);
|
|
1261
|
-
}
|
|
1262
|
-
return out;
|
|
1263
|
-
}
|
|
1264
|
-
nameScore(qws, dws, cal) {
|
|
1265
|
-
let num = 0, den = 0;
|
|
1266
|
-
for (const [a, b, q] of [[qws, dws, true], [dws, qws, false]]) {
|
|
1267
|
-
for (const w of a) {
|
|
1268
|
-
const x = this.weight(w);
|
|
1269
|
-
den += x;
|
|
1270
|
-
let best = 0;
|
|
1271
|
-
for (const o of b)
|
|
1272
|
-
best = Math.max(best, q ? this.scorer.wordSim(w, o, cal.get(w), this.p) : this.scorer.wordSim(o, w, cal.get(o), this.p));
|
|
1273
|
-
num += x * best;
|
|
1274
|
-
}
|
|
1275
|
-
}
|
|
1276
|
-
let soft = den ? floor((num + floor(den / 2)) / den) : 0;
|
|
1277
|
-
if (qws.length !== dws.length && qws.length && dws.length) {
|
|
1278
|
-
const jq = qws.join(""), jd = dws.join("");
|
|
1279
|
-
const lq = new Set(joinedOf([jq], R.loose_joined_min_classes));
|
|
1280
|
-
const meet = joinedOf([jd], R.loose_joined_min_classes).some((k) => lq.has(k)) ? 1 : 0;
|
|
1281
|
-
let c, v;
|
|
1282
|
-
if (this.scorer.cost(jq, jd) !== undefined) {
|
|
1283
|
-
c = 1e4;
|
|
1284
|
-
v = vowelRatio(jq, jd);
|
|
1285
|
-
} else {
|
|
1286
|
-
c = v = ratio(fineKey(jq), fineKey(jd));
|
|
1287
|
-
}
|
|
1288
|
-
const p = this.p, n = p.key * 1e4 * meet + p.cost * c + p.vowel * v;
|
|
1289
|
-
soft = Math.max(soft, p.round ? rounded(n, 100 * p.div) : floor(n / (100 * p.div)));
|
|
1290
|
-
}
|
|
1291
|
-
return soft;
|
|
1292
|
-
}
|
|
1293
|
-
scoreAll(query, which) {
|
|
1294
|
-
const qws = searchWords(query);
|
|
1295
|
-
const cw = [...new Set(which.flatMap((i) => this.words[i]))];
|
|
1296
|
-
const cal = new Map(qws.map((a) => [a, this.scorer.calibrations(a, cw)]));
|
|
1297
|
-
return which.map((i) => ({ name: i, score: this.nameScore(qws, this.words[i], cal) }));
|
|
1298
|
-
}
|
|
1299
|
-
search(query, threshold = 0) {
|
|
1300
|
-
const which = [...this.candidates(searchWords(query))].sort((a, b) => a - b);
|
|
1301
|
-
return this.scoreAll(query, which).filter((h) => h.score >= threshold).sort((a, b) => b.score - a.score);
|
|
1302
|
-
}
|
|
1303
|
-
}
|
|
1304
|
-
async function loadSearch(lang, options = {}) {
|
|
1305
|
-
const fetcher = options.fetcher ?? defaultFetcher;
|
|
1306
|
-
const scripts = [...new Set(options.scripts ?? [])].sort();
|
|
1307
|
-
const pairs = new Map;
|
|
1308
|
-
const [latin] = await Promise.all([
|
|
1309
|
-
loadTable(`latin/${lang}`, fetcher),
|
|
1310
|
-
...scripts.flatMap((a, i) => scripts.slice(i + 1).map(async (b) => {
|
|
1311
|
-
const t = await loadTable(`pairs/${a}-${b}`, fetcher);
|
|
1312
|
-
if (t)
|
|
1313
|
-
pairs.set(`${a}-${b}`, t);
|
|
1314
|
-
}))
|
|
1315
|
-
]);
|
|
1316
|
-
const scorer = new Scorer(lang, latin, pairs);
|
|
1317
|
-
return {
|
|
1318
|
-
lang,
|
|
1319
|
-
index: (names, profile = "names") => new Index(scorer, names, profile),
|
|
1320
|
-
score: (query, candidates, profile = "names") => new Index(scorer, candidates, profile).scoreAll(query, candidates.map((_, i) => i)).map((h) => h.score)
|
|
1321
|
-
};
|
|
1322
|
-
}
|
|
1323
|
-
export {
|
|
1324
|
-
loadSearch,
|
|
1325
|
-
THRESHOLDS,
|
|
1326
|
-
SEARCH_VERSION,
|
|
1327
|
-
Index,
|
|
1328
|
-
CDN
|
|
1329
|
-
};
|
|
1
|
+
var u={version:"2026-10-08",profiles:{names:{key:2,cost:1,vowel:1,div:4,stop_permille:20,stop_min_names:100,round:!0},text:{key:1,cost:2,vowel:2,div:5,stop_permille:null,stop_min_names:0,round:!1}},posterior_temperature:2,deletion_min_classes:3,loose_joined_min_classes:4,fine_folds:["nasal-all","v-b","retroflex","s-c","ng-k","ur-w-u"],thresholds:{names:74,villages:72,text_10:80,text_20:70},pow:[1e6,993092,986233,979420,972655,965936,959264,952638,946058,939523,933033,926588,920188,913831,907519,901250,895025,888843,882703,876606,870551,864537,858565,852635,846745,840896,835088,829320,823591,817902,812252,806642,801070,795536,790041,784584,779165,773782,768438,763130,757858,752623,747425,742262,737135,732043,726986,721965,716978,712025,707107,702222,697372,692555,687771,683020,678302,673617,668964,664343,659754,655197,650671,646176,641713,637280,632878,628507,624165,619854,615572,611320,607097,602904,598739,594604,590496,586417,582367,578344,574349,570382,566442,562529,558644,554785,550953,547147,543367,539614,535887,532185,528509,524858,521233,517632,514057,510506,506980,503478,500000,496546,493116,489710,486327,482968,479632,476319,473029,469761,466516,463294,460094,456916,453760,450625,447513,444421,441351,438303,435275,432269,429283,426317,423373,420448,417544,414660,411796,408951,406126,403321,400535,397768,395021,392292,389582,386891,384219,381565,378929,376312,373712,371131,368567,366021,363493,360982,358489,356013,353553,351111,348686,346277,343885,341510,339151,336808,334482,332171,329877,327598,325335,323088,320856,318640,316439,314253,312083,309927,307786,305660,303549,301452,299370,297302,295248,293209,291183,289172,287175,285191,283221,281265,279322,277392,275476,273573,271684,269807,267943,266093,264255,262429,260616,258816,257028,255253,253490,251739,250000,248273,246558,244855,243164,241484,239816,238159,236514,234881,233258,231647,230047,228458,226880,225313,223756,222211,220676,219151,217638,216134,214641,213159,211686,210224,208772,207330,205898,204476,203063,201660,200267,198884,197510,196146,194791,193446,192109,190782,189465,188156,186856,185565,184284,183011,181747,180491,179244,178006,176777,175556,174343,173139,171943,170755,169576,168404,167241,166086,164938,163799,162668,161544,160428,159320,158220,157127,156041,154963,153893,152830,151774,150726,149685,148651,147624,146604,145592,144586,143587,142595,141610,140632,139661,138696,137738,136787,135842,134904,133972,133046,132127,131215,130308,129408,128514,127627,126745,125869,125000,124137,123279,122428,121582,120742,119908,119080,118257,117440,116629,115824,115023,114229,113440,112656,111878,111105,110338,109576,108819,108067,107321,106579,105843,105112,104386,103665,102949,102238,101532,100830,100134,99442,98755,98073,97396,96723,96055,95391,94732,94078,93428,92783,92142,91505,90873,90246,89622,89003,88388,87778,87171,86569,85971,85378,84788,84202,83620,83043,82469,81900,81334,80772,80214,79660,79110,78563,78021,77482,76947,76415,75887,75363,74842,74325,73812,73302,72796,72293,71794,71298,70805,70316,69830,69348,68869,68393,67921,67452,66986,66523,66064,65607,65154,64704,64257,63813,63372,62935,62500,62068,61640,61214,60791,60371,59954,59540,59129,58720,58315,57912,57512,57114,56720,56328,55939,55553,55169,54788,54409,54034,53660,53290,52922,52556,52193,51832,51474,51119,50766,50415,50067,49721,49378,49037,48698,48361,48027,47696,47366,47039,46714,46391,46071,45753,45437,45123,44811,44502,44194,43889,43586,43285,42986,42689,42394,42101,41810,41521,41235,40950,40667,40386,40107,39830,39555,39282,39010,38741,38473,38208,37944,37681,37421,37163,36906,36651,36398,36147,35897,35649,35403,35158,34915,34674,34435,34197,33960,33726,33493,33262,33032,32804,32577,32352,32129,31907,31686,31467,31250,31034,30820,30607,30395,30186,29977,29770,29564,29360,29157,28956,28756,28557,28360,28164,27970,27776,27584,27394,27205,27017,26830,26645,26461,26278,26096,25916,25737,25559,25383,25208,25033,24861,24689,24518,24349,24181,24014,23848,23683,23519,23357,23196,23035,22876,22718,22561,22406,22251,22097,21944,21793,21642,21493,21344,21197,21051,20905,20761,20617,20475,20333,20193,20054,19915,19777,19641,19505,19370,19237,19104,18972,18841,18711,18581,18453,18326,18199,18073,17948,17824,17701,17579,17458,17337,17217,17098,16980,16863,16746,16631,16516,16402,16289,16176,16064,15953,15843,15734,15625,15517,15410,15303,15198,15093,14989,14885,14782,14680,14579,14478,14378,14279,14180,14082,13985,13888,13792,13697,13602,13508,13415,13322,13230,13139,13048,12958,12869,12780,12691,12604,12517,12430,12344,12259,12174,12090,12007,11924,11842,11760,11679,11598,11518,11438,11359,11281,11203,11125,11049,10972,10896,10821,10746,10672,10598,10525,10453,10380,10309,10237,10167,10097,10027,9958,9889,9820,9753,9685,9618,9552,9486,9420,9355,9291,9227,9163,9099,9037,8974,8912,8851,8790,8729,8669,8609,8549,8490,8431,8373,8315,8258,8201,8144,8088,8032,7977,7922,7867,7812,7759,7705,7652,7599,7546,7494,7442,7391,7340,7289,7239,7189,7139,7090,7041,6992,6944,6896,6848,6801,6754,6708,6661,6615,6570,6524,6479,6434,6390,6346,6302,6258,6215,6172,6130,6087,6045,6003,5962,5921,5880,5839,5799,5759,5719,5680,5640,5601,5563,5524,5486,5448,5411,5373,5336,5299,5263,5226,5190,5154,5119,5083,5048,5013,4979,4944,4910,4876,4843,4809,4776,4743,4710,4678,4645,4613,4581,4550,4518,4487,4456,4425,4395,4364,4334,4304,4275,4245,4216,4187,4158,4129,4100,4072,4044,4016,3988,3961,3933,3906,3879,3852,3826,3799,3773,3747,3721,3696,3670,3645,3619,3594,3570,3545,3521,3496,3472,3448,3424,3401,3377,3354,3331,3308,3285,3262,3240,3217,3195,3173,3151,3129,3108,3086,3065,3044,3023,3002,2981,2960,2940,2920,2899,2879,2860,2840,2820,2801,2781,2762,2743,2724,2705,2687,2668,2650,2631,2613,2595,2577,2559,2542,2524,2507,2489,2472,2455,2438,2421,2405,2388,2371,2355,2339,2323,2307,2291,2275,2259,2244,2228,2213,2197,2182,2167,2152,2137,2123,2108,2093,2079,2064,2050,2036,2022,2008,1994,1980,1967,1953,1940,1926,1913,1900,1887,1874,1861,1848,1835,1822,1810,1797,1785,1772,1760,1748,1736,1724,1712,1700,1689,1677,1665,1654,1642,1631,1620,1609,1597,1586,1575,1565,1554,1543,1532,1522,1511,1501,1490,1480,1470,1460,1450,1440,1430,1420,1410,1400,1391,1381,1372,1362,1353,1343,1334,1325,1316,1307,1298,1289,1280,1271,1262,1253,1245,1236,1228,1219,1211,1202,1194,1186,1178,1169,1161,1153,1145,1137,1130,1122,1114,1106,1099,1091,1084,1076,1069,1061,1054,1047,1039,1032,1025,1018,1011,1004,997,990,983,977,970,963,956,950,943,937,930,924,918,911,905,899,892,886,880,874,868,862,856,850,844,838,833,827,821,816,810,804,799,793,788,782,777,772,766,761,756,750,745,740,735,730,725,720,715,710,705,700,695,691,686,681,676,672,667,662,658,653,649,644,640,635,631,627,622,618,614,610,605,601,597,593,589,585,581,577,573,569,565,561,557,553,549,546,542,538,534,531,527,523,520,516,513,509,506,502,499,495,492,488,485,482,478,475,472,468,465,462,459,456,452,449,446,443,440,437,434,431,428,425,422,419,416,413,411,408,405,402,399,397,394,391,388,386,383,380,378,375,373,370,367,365,362,360,357,355,353,350,348,345,343,341,338,336,334,331,329,327,324,322,320,318,316,313,311,309,307,305,303,301,298,296,294,292,290,288,286,284,282,280,279,277,275,273,271,269,267,265,263,262,260,258,256,255,253,251,249,248,246,244,242,241,239,237,236,234,233,231,229,228,226,225,223,222,220,219,217,216,214,213,211,210,208,207,205,204,202,201,200,198,197,196,194,193,192,190,189,188,186,185,184,182,181,180,179,177,176,175,174,173,171,170,169,168,167,166,164,163,162,161,160,159,158,157,156,155,153,152,151,150,149,148,147,146,145,144,143,142,141,140,139,138,137,136,135,135,134,133,132,131,130,129,128,127,126,126,125,124,123,122,121,120,120,119,118,117,116,115,115,114,113,112,112,111,110,109,109,108,107,106,106,105,104,103,103,102,101,101,100,99,98,98,97,96,96,95,94,94,93,93,92,91,91,90,89,89,88,88,87,86,86,85,85,84,83,83,82,82,81,81,80,79,79,78,78,77,77,76,76,75,75,74,74,73,73,72,72,71,71,70,70,69,69,68,68,67,67,66,66,65,65,65,64,64,63,63,62,62,61,61,61,60,60,59,59,59,58,58,57,57,57,56,56,55,55,55,54,54,54,53,53,52,52,52,51,51,51,50,50,50,49,49,49,48,48,48,47,47,47,46,46,46,45,45,45,44,44,44,43,43,43,43,42,42,42,41,41,41,41,40,40,40,39,39,39,39,38,38,38,38,37,37,37,37,36,36,36,36,35,35,35,35,34,34,34,34,33,33,33,33,32,32,32,32,32,31,31,31,31,31,30,30,30,30,29,29,29,29,29,28,28,28,28,28,28,27,27,27,27,27,26,26,26,26,26,25,25,25,25,25,25,24,24,24,24,24,24,23,23,23,23,23,23,22,22,22,22,22,22,22,21,21,21,21,21,21,21,20,20,20,20,20,20,20,19,19,19,19,19,19,19,19,18,18,18,18,18,18,18,18,17,17,17,17,17,17,17,17,16,16,16,16,16,16,16,16,16,15,15,15,15,15,15,15,15,15,15,14,14,14,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],exp2:[65536,70240,75281,80684,86475,92682,99334,106464,114105,122295,131072,140479,150562,161369,172951,185364,198668,212927,228210,244589,262144,280959,301124,322737,345901,370728,397336,425854,456419,489178,524288,561918,602249,645474,691802,741455,794672,851708,912838,978356,1048576,1123836,1204498,1290948,1383604,1482910,1589344,1703417,1825677,1956712,2097152,2247672,2408995,2581897,2767209,2965821,3178688,3406833,3651354,3913424,4194304,4495344,4817990,5163794,5534417,5931642,6357376,6813667,7302707,7826848,8388608,8990687,9635980,10327588,11068835,11863283,12714752,13627334,14605415,15653696,16777216,17981375,19271960,20655176,22137669,23726566,25429504,27254668,29210830,31307392,33554432,35962750,38543921,41310351,44275338,47453133,50859008,54509336,58421659,62614784,67108864,71925500,77087842,82620703,88550677,94906266,101718017,109018671,116843319,125229568,134217728,143850999,154175683,165241406,177101354,189812531,203436034,218037342,233686637,250459137,268435456,287701998,308351367,330482812,354202708,379625062,406872068,436074685,467373275,500918273,536870912,575403996,616702733,660965624,708405415,759250125,813744135,872149370,934746550,1001836546,1073741824,1150807993,1233405467,1321931248,1416810831,1518500250,1627488271,1744298739,1869493099,2003673092,2147483648,2301615985,2466810934,2643862496,2833621662,3037000500,3254976542,3488597478,3738986199,4007346185,4294967296,4603231970,4933621868,5287724992,5667243324,6074001000,6509953083,6977194957,7477972398,8014692369,8589934592,9206463941,9867243735,10575449984,11334486647,12148002000,13019906166,13954389914,14955944795,16029384739,17179869184,18412927881,19734487471,21150899968,22668973294,24296004000,26039812333,27908779828,29911889591,32058769478,34359738368,36825855763,39468974941,42301799936,45337946589,48592008000,52079624665,55817559655,59823779182,64117538956,68719476736,73651711525,78937949883,84603599872,90675893177,97184015999,104159249331,111635119310,119647558364,128235077912,137438953472,147303423050,157875899766,169207199743,181351786355,194368031998,208318498661,223270238621,239295116728,256470155823,274877906944,294606846100,315751799532,338414399486,362703572709,388736063997,416636997323,446540477241,478590233456,512940311647,549755813888,589213692200,631503599063,676828798972,725407145419,777472127994,833273994645,893080954483,957180466911,1025880623293,1099511627776,1178427384400,1263007198126,1353657597944,1450814290837,1554944255988,1666547989291,1786161908965,1914360933822,2051761246587,2199023255552,2356854768801,2526014396253,2707315195888,2901628581674,3109888511975,3333095978582,3572323817930,3828721867644,4103522493173,4398046511104,4713709537602,5052028792506,5414630391777,5803257163349,6219777023951,6666191957164,7144647635861,7657443735288,8207044986347,8796093022208,9427419075203,10104057585011,10829260783554,11606514326698,12439554047902,13332383914327,14289295271722,15314887470577,16414089972694,17592186044416,18854838150406,20208115170022,21658521567107,23213028653395,24879108095804,26664767828654,28578590543443,30629774941153,32828179945387,35184372088832,37709676300813,40416230340045,43317043134214,46426057306791,49758216191608,53329535657309,57157181086886,61259549882306,65656359890774,70368744177664,75419352601626,80832460680090,86634086268429,92852114613582,99516432383215,106659071314618,114314362173773,122519099764613,131312719781548,140737488355328,150838705203251,161664921360180,173268172536857,185704229227163,199032864766430,213318142629235,228628724347546,245038199529225,262625439563096,281474976710656,301677410406503,323329842720360,346536345073714,371408458454326,398065729532861,426636285258470,457257448695093,490076399058449,525250879126193,562949953421312,603354820813005,646659685440720,693072690147428,742816916908653,796131459065722,853272570516940,914514897390186,980152798116898,1050501758252385,1125899906842624]};var o={version:"2026-10-07",folds:["nasal-all","ng-k","retroflex","s-c","v-b"],brahmic:{from:2304,to:3455,class_by_offset:{"2":"ṁ","5":"a","6":"a","7":"i","8":"i","9":"u","10":"u","11":"r","12":"l","13":"e","14":"e","15":"e","16":"e","17":"o","18":"o","19":"o","20":"o","21":"k","22":"k","23":"k","24":"k","25":"ṅ","26":"c","27":"c","28":"c","29":"c","30":"ñ","31":"ṭ","32":"ṭ","33":"ṭ","34":"ṭ","35":"ṇ","36":"t","37":"t","38":"t","39":"t","40":"n","41":"n","42":"p","43":"p","44":"p","45":"p","46":"m","47":"y","48":"r","49":"r","50":"l","51":"l","52":"l","53":"v","54":"s","55":"s","56":"s","57":"h","62":"a","63":"i","64":"i","65":"u","66":"u","67":"r","68":"r","69":"e","70":"e","71":"e","72":"e","73":"o","74":"o","75":"o","76":"o","87":"o","96":"r","97":"l","98":"l","99":"l"},virama_offset:77,candrabindu_offset:1,candrabindu_class:"ṁ",nukta_offset:60,flap_offsets:[33,34],flap_class:"ṛ"},extra:{ৎ:"t",ৰ:"r",ৱ:"v",ୱ:"v","ੰ":"ṁ","ਂ":"ṁ",ൺ:"ṇ",ൻ:"n",ർ:"r",ൽ:"l",ൾ:"l",ൿ:"k",ൔ:"m",ൕ:"y",ൖ:"l",ड़:"ṛ",ढ़:"ṛ",ড়:"ṛ",ঢ়:"ṛ",ଡ଼:"ṛ",ଢ଼:"ṛ",ੜ:"ṛ"},urdu:{from:1536,to:1791,letters:{ا:"a",آ:"a",أ:"a",ب:"p",پ:"p",ت:"t",ٹ:"ṭ",ث:"s",ج:"c",چ:"c",ح:"h",خ:"k",د:"t",ڈ:"ṭ",ذ:"c",ر:"r",ڑ:"ṛ",ز:"c",ژ:"c",س:"s",ش:"s",ص:"s",ض:"c",ط:"t",ظ:"c",غ:"k",ف:"p",ق:"k",ک:"k",ك:"k",گ:"k",ل:"l",م:"m",ن:"n",ں:"ṁ",و:"v",ؤ:"u",ہ:"h",ه:"h",ۃ:"a",ی:"y",ي:"y",ى:"y",ئ:"y",ے:"e",ۓ:"e",ٻ:"p",ڀ:"p",ٺ:"ṭ",ٽ:"ṭ",ٿ:"t",ڄ:"c",ڃ:"ñ",ڇ:"c",ڊ:"ṭ",ڌ:"t",ڍ:"ṭ",ڏ:"t",ڙ:"ṛ",ڦ:"p",ڪ:"k",ڱ:"ṅ",ڳ:"k",ڻ:"ṇ",ٲ:"a",ٳ:"a",ۆ:"o",ۄ:"o",ێ:"e",ؠ:"y"},ain:"ع",waw:"و",waw_v_before:"اآ",final_he:"ہه",final_he_h_after:"اآو"},meetei:{ranges:[[43744,43775],[43968,44031]],letters:{ꯀ:"k",ꯁ:"s",ꯂ:"l",ꯃ:"m",ꯄ:"p",ꯅ:"n",ꯆ:"c",ꯇ:"t",ꯈ:"k",ꯉ:"ṅ",ꯊ:"t",ꯋ:"v",ꯌ:"y",ꯍ:"h",ꯎ:"u",ꯏ:"i",ꯐ:"p",ꯑ:"a",ꯒ:"k",ꯓ:"c",ꯔ:"r",ꯕ:"p",ꯖ:"c",ꯗ:"t",ꯘ:"k",ꯙ:"t",ꯚ:"p",ꯛ:"k",ꯜ:"l",ꯝ:"m",ꯞ:"p",ꯟ:"n",ꯠ:"t",ꯡ:"ṅ",ꯢ:"i","ꯣ":"o","ꯤ":"i","ꯥ":"a","ꯦ":"e","ꯧ":"o","ꯨ":"u","ꯩ":"e","ꯪ":"ṁ",ꫠ:"e",ꫡ:"o",ꫢ:"c",ꫣ:"ñ",ꫤ:"ṭ",ꫥ:"ṭ",ꫦ:"ṭ",ꫧ:"ṭ",ꫨ:"ṇ",ꫩ:"s",ꫪ:"s","ꫫ":"i","ꫬ":"u","ꫭ":"e","ꫮ":"o","ꫯ":"o"}},ol_chiki:{from:7248,to:7295,letters:{ᱚ:"o",ᱛ:"t",ᱜ:"k",ᱝ:"ṅ",ᱞ:"l",ᱟ:"a",ᱠ:"k",ᱡ:"c",ᱢ:"m",ᱣ:"v",ᱤ:"i",ᱥ:"s",ᱦ:"h",ᱧ:"ñ",ᱨ:"r",ᱩ:"u",ᱪ:"c",ᱫ:"t",ᱬ:"ṇ",ᱭ:"y",ᱮ:"e",ᱯ:"p",ᱰ:"ṭ",ᱱ:"n",ᱲ:"ṛ",ᱳ:"o",ᱴ:"ṭ",ᱵ:"p",ᱶ:"v",ᱷ:"h",ᱸ:"ṁ"},aspiration:"ᱷ"},latin:{groups:[["ngh","nĝ"],["chh","c"],["ch","c"],["jh","c"],["kh","k"],["gh","k"],["th","t"],["dh","t"],["ph","p"],["bh","p"],["sh","s"],["ck","k"],["aa","a"],["ai","e"],["ei","e"],["au","o"],["ee","i"],["oo","u"],["x","ks"]],letters:{a:"a",e:"e",i:"i",o:"o",u:"u",k:"k",g:"k",q:"k",j:"c",z:"c",t:"t",d:"t",n:"n",m:"m",p:"p",b:"p",f:"p",v:"v",w:"v",y:"y",r:"r",l:"l",s:"s",h:"h"},w_ambiguous_unless_before:"aeiou"},class_map:{m:"n",s:"c",v:"p",w:"p",ñ:"n",ĝ:"k",ṁ:"n",ṅ:"n",ṇ:"n",ṛ:"t",ṭ:"t"},vowels:"aeiou",steps:{"ng-k":!0,"initial-vowels-alike":!1,"drop-h":!1,"drop-y":!1,"drop-y-after-i":!1,"drop-vowels":!1,"drop-final-vowel":!1},branches:[],joined:{min_classes:8,when:"the strict keys find nobody"},digit_zeros:[48,1632,1776,2406,2534,2662,2790,2918,3046,3174,3302,3430,7248,44016],max_keys:16,suffixes:[]};var d={version:"2026-10-07",folds:["nasal-all","ng-k","retroflex","s-c","ur-w-u","v-b"],brahmic:{from:2304,to:3455,class_by_offset:{"2":"ṁ","5":"a","6":"a","7":"i","8":"i","9":"u","10":"u","11":"r","12":"l","13":"e","14":"e","15":"e","16":"e","17":"o","18":"o","19":"o","20":"o","21":"k","22":"k","23":"k","24":"k","25":"ṅ","26":"c","27":"c","28":"c","29":"c","30":"ñ","31":"ṭ","32":"ṭ","33":"ṭ","34":"ṭ","35":"ṇ","36":"t","37":"t","38":"t","39":"t","40":"n","41":"n","42":"p","43":"p","44":"p","45":"p","46":"m","47":"y","48":"r","49":"r","50":"l","51":"l","52":"l","53":"v","54":"s","55":"s","56":"s","57":"h","62":"a","63":"i","64":"i","65":"u","66":"u","67":"r","68":"r","69":"e","70":"e","71":"e","72":"e","73":"o","74":"o","75":"o","76":"o","87":"o","96":"r","97":"l","98":"l","99":"l"},virama_offset:77,candrabindu_offset:1,candrabindu_class:"ṁ",nukta_offset:60,flap_offsets:[33,34],flap_class:"ṛ"},extra:{ৎ:"t",ৰ:"r",ৱ:"v",ୱ:"v","ੰ":"ṁ","ਂ":"ṁ",ൺ:"ṇ",ൻ:"n",ർ:"r",ൽ:"l",ൾ:"l",ൿ:"k",ൔ:"m",ൕ:"y",ൖ:"l",ड़:"ṛ",ढ़:"ṛ",ড়:"ṛ",ঢ়:"ṛ",ଡ଼:"ṛ",ଢ଼:"ṛ",ੜ:"ṛ"},urdu:{from:1536,to:1791,letters:{ا:"a",آ:"a",أ:"a",ب:"p",پ:"p",ت:"t",ٹ:"ṭ",ث:"s",ج:"c",چ:"c",ح:"h",خ:"k",د:"t",ڈ:"ṭ",ذ:"c",ر:"r",ڑ:"ṛ",ز:"c",ژ:"c",س:"s",ش:"s",ص:"s",ض:"c",ط:"t",ظ:"c",غ:"k",ف:"p",ق:"k",ک:"k",ك:"k",گ:"k",ل:"l",م:"m",ن:"n",ں:"ṁ",و:"v",ؤ:"u",ہ:"h",ه:"h",ۃ:"a",ی:"y",ي:"y",ى:"y",ئ:"y",ے:"e",ۓ:"e",ٻ:"p",ڀ:"p",ٺ:"ṭ",ٽ:"ṭ",ٿ:"t",ڄ:"c",ڃ:"ñ",ڇ:"c",ڊ:"ṭ",ڌ:"t",ڍ:"ṭ",ڏ:"t",ڙ:"ṛ",ڦ:"p",ڪ:"k",ڱ:"ṅ",ڳ:"k",ڻ:"ṇ",ٲ:"a",ٳ:"a",ۆ:"o",ۄ:"o",ێ:"e",ؠ:"y"},ain:"ع",waw:"و",waw_v_before:"اآ",final_he:"ہه",final_he_h_after:"اآو"},meetei:{ranges:[[43744,43775],[43968,44031]],letters:{ꯀ:"k",ꯁ:"s",ꯂ:"l",ꯃ:"m",ꯄ:"p",ꯅ:"n",ꯆ:"c",ꯇ:"t",ꯈ:"k",ꯉ:"ṅ",ꯊ:"t",ꯋ:"v",ꯌ:"y",ꯍ:"h",ꯎ:"u",ꯏ:"i",ꯐ:"p",ꯑ:"a",ꯒ:"k",ꯓ:"c",ꯔ:"r",ꯕ:"p",ꯖ:"c",ꯗ:"t",ꯘ:"k",ꯙ:"t",ꯚ:"p",ꯛ:"k",ꯜ:"l",ꯝ:"m",ꯞ:"p",ꯟ:"n",ꯠ:"t",ꯡ:"ṅ",ꯢ:"i","ꯣ":"o","ꯤ":"i","ꯥ":"a","ꯦ":"e","ꯧ":"o","ꯨ":"u","ꯩ":"e","ꯪ":"ṁ",ꫠ:"e",ꫡ:"o",ꫢ:"c",ꫣ:"ñ",ꫤ:"ṭ",ꫥ:"ṭ",ꫦ:"ṭ",ꫧ:"ṭ",ꫨ:"ṇ",ꫩ:"s",ꫪ:"s","ꫫ":"i","ꫬ":"u","ꫭ":"e","ꫮ":"o","ꫯ":"o"}},ol_chiki:{from:7248,to:7295,letters:{ᱚ:"o",ᱛ:"t",ᱜ:"k",ᱝ:"ṅ",ᱞ:"l",ᱟ:"a",ᱠ:"k",ᱡ:"c",ᱢ:"m",ᱣ:"v",ᱤ:"i",ᱥ:"s",ᱦ:"h",ᱧ:"ñ",ᱨ:"r",ᱩ:"u",ᱪ:"c",ᱫ:"t",ᱬ:"ṇ",ᱭ:"y",ᱮ:"e",ᱯ:"p",ᱰ:"ṭ",ᱱ:"n",ᱲ:"ṛ",ᱳ:"o",ᱴ:"ṭ",ᱵ:"p",ᱶ:"v",ᱷ:"h",ᱸ:"ṁ"},aspiration:"ᱷ"},latin:{groups:[["ngh","nĝ"],["chh","c"],["ch","c"],["jh","c"],["kh","k"],["gh","k"],["th","t"],["dh","t"],["ph","p"],["bh","p"],["sh","s"],["ck","k"],["aa","a"],["ai","e"],["ei","e"],["au","o"],["ee","i"],["oo","u"],["x","ks"]],letters:{a:"a",e:"e",i:"i",o:"o",u:"u",k:"k",g:"k",q:"k",j:"c",z:"c",t:"t",d:"t",n:"n",m:"m",p:"p",b:"p",f:"p",v:"v",w:"v",y:"y",r:"r",l:"l",s:"s",h:"h"},w_ambiguous_unless_before:"aeiou"},class_map:{m:"n",s:"c",v:"p",w:"p",ñ:"n",ĝ:"k",ṁ:"n",ṅ:"n",ṇ:"n",ṛ:"t",ṭ:"t"},vowels:"aeiou",steps:{"ng-k":!0,"initial-vowels-alike":!1,"drop-h":!1,"drop-y":!1,"drop-y-after-i":!1,"drop-vowels":!1,"drop-final-vowel":!1},branches:[{from:1536,to:1791,class:"w",also:"u"}],joined:{min_classes:8,when:"the strict keys find nobody"},digit_zeros:[48,1632,1776,2406,2534,2662,2790,2918,3046,3174,3302,3430,7248,44016],max_keys:16,suffixes:[]};var c="0.9.0";var J={version:"2026-10-07",folds:["bn-case","brahmic-av-u","drop-vowels","drop-y","flap-r","gu-case","latin-ngh","latin-w-u","ml-case","nasal-all","ng-k","or-case","retroflex","s-c","ta-case","ta-k-h","te-case","ur-w-u","v-b"],brahmic:{from:2304,to:3455,class_by_offset:{"2":"ṁ","5":"a","6":"a","7":"i","8":"i","9":"u","10":"u","11":"r","12":"l","13":"e","14":"e","15":"e","16":"e","17":"o","18":"o","19":"o","20":"o","21":"k","22":"k","23":"k","24":"k","25":"ṅ","26":"c","27":"c","28":"c","29":"c","30":"ñ","31":"ṭ","32":"ṭ","33":"ṭ","34":"ṭ","35":"ṇ","36":"t","37":"t","38":"t","39":"t","40":"n","41":"n","42":"p","43":"p","44":"p","45":"p","46":"m","47":"y","48":"r","49":"r","50":"l","51":"l","52":"l","53":"v","54":"s","55":"s","56":"s","57":"h","62":"a","63":"i","64":"i","65":"u","66":"u","67":"r","68":"r","69":"e","70":"e","71":"e","72":"e","73":"o","74":"o","75":"o","76":"o","87":"o","96":"r","97":"l","98":"l","99":"l"},virama_offset:77,candrabindu_offset:1,candrabindu_class:"ṁ",nukta_offset:60,flap_offsets:[33,34],flap_class:"ṛ"},extra:{ৎ:"t",ৰ:"r",ৱ:"v",ୱ:"v","ੰ":"ṁ","ਂ":"ṁ",ൺ:"ṇ",ൻ:"n",ർ:"r",ൽ:"l",ൾ:"l",ൿ:"k",ൔ:"m",ൕ:"y",ൖ:"l",ड़:"ṛ",ढ़:"ṛ",ড়:"ṛ",ঢ়:"ṛ",ଡ଼:"ṛ",ଢ଼:"ṛ",ੜ:"ṛ"},urdu:{from:1536,to:1791,letters:{ا:"a",آ:"a",أ:"a",ب:"p",پ:"p",ت:"t",ٹ:"ṭ",ث:"s",ج:"c",چ:"c",ح:"h",خ:"k",د:"t",ڈ:"ṭ",ذ:"c",ر:"r",ڑ:"ṛ",ز:"c",ژ:"c",س:"s",ش:"s",ص:"s",ض:"c",ط:"t",ظ:"c",غ:"k",ف:"p",ق:"k",ک:"k",ك:"k",گ:"k",ل:"l",م:"m",ن:"n",ں:"ṁ",و:"v",ؤ:"u",ہ:"h",ه:"h",ۃ:"a",ی:"y",ي:"y",ى:"y",ئ:"y",ے:"e",ۓ:"e",ٻ:"p",ڀ:"p",ٺ:"ṭ",ٽ:"ṭ",ٿ:"t",ڄ:"c",ڃ:"ñ",ڇ:"c",ڊ:"ṭ",ڌ:"t",ڍ:"ṭ",ڏ:"t",ڙ:"ṛ",ڦ:"p",ڪ:"k",ڱ:"ṅ",ڳ:"k",ڻ:"ṇ",ٲ:"a",ٳ:"a",ۆ:"o",ۄ:"o",ێ:"e",ؠ:"y"},ain:"ع",waw:"و",waw_v_before:"اآ",final_he:"ہه",final_he_h_after:"اآو"},meetei:{ranges:[[43744,43775],[43968,44031]],letters:{ꯀ:"k",ꯁ:"s",ꯂ:"l",ꯃ:"m",ꯄ:"p",ꯅ:"n",ꯆ:"c",ꯇ:"t",ꯈ:"k",ꯉ:"ṅ",ꯊ:"t",ꯋ:"v",ꯌ:"y",ꯍ:"h",ꯎ:"u",ꯏ:"i",ꯐ:"p",ꯑ:"a",ꯒ:"k",ꯓ:"c",ꯔ:"r",ꯕ:"p",ꯖ:"c",ꯗ:"t",ꯘ:"k",ꯙ:"t",ꯚ:"p",ꯛ:"k",ꯜ:"l",ꯝ:"m",ꯞ:"p",ꯟ:"n",ꯠ:"t",ꯡ:"ṅ",ꯢ:"i","ꯣ":"o","ꯤ":"i","ꯥ":"a","ꯦ":"e","ꯧ":"o","ꯨ":"u","ꯩ":"e","ꯪ":"ṁ",ꫠ:"e",ꫡ:"o",ꫢ:"c",ꫣ:"ñ",ꫤ:"ṭ",ꫥ:"ṭ",ꫦ:"ṭ",ꫧ:"ṭ",ꫨ:"ṇ",ꫩ:"s",ꫪ:"s","ꫫ":"i","ꫬ":"u","ꫭ":"e","ꫮ":"o","ꫯ":"o"}},ol_chiki:{from:7248,to:7295,letters:{ᱚ:"o",ᱛ:"t",ᱜ:"k",ᱝ:"ṅ",ᱞ:"l",ᱟ:"a",ᱠ:"k",ᱡ:"c",ᱢ:"m",ᱣ:"v",ᱤ:"i",ᱥ:"s",ᱦ:"h",ᱧ:"ñ",ᱨ:"r",ᱩ:"u",ᱪ:"c",ᱫ:"t",ᱬ:"ṇ",ᱭ:"y",ᱮ:"e",ᱯ:"p",ᱰ:"ṭ",ᱱ:"n",ᱲ:"ṛ",ᱳ:"o",ᱴ:"ṭ",ᱵ:"p",ᱶ:"v",ᱷ:"h",ᱸ:"ṁ"},aspiration:"ᱷ"},latin:{groups:[["ngh","nĝ"],["chh","c"],["ch","c"],["jh","c"],["kh","k"],["gh","k"],["th","t"],["dh","t"],["ph","p"],["bh","p"],["sh","s"],["ck","k"],["aa","a"],["ai","e"],["ei","e"],["au","o"],["ee","i"],["oo","u"],["x","ks"]],letters:{a:"a",e:"e",i:"i",o:"o",u:"u",k:"k",g:"k",q:"k",j:"c",z:"c",t:"t",d:"t",n:"n",m:"m",p:"p",b:"p",f:"p",v:"v",w:"v",y:"y",r:"r",l:"l",s:"s",h:"h"},w_ambiguous_unless_before:"aeiou"},class_map:{m:"n",s:"c",v:"p",w:"p",ñ:"n",ĝ:"k",ṁ:"n",ṅ:"n",ṇ:"n",ṛ:"t",ṭ:"t"},vowels:"aeiou",steps:{"ng-k":!0,"initial-vowels-alike":!1,"drop-h":!1,"drop-y":!0,"drop-y-after-i":!1,"drop-vowels":!0,"drop-final-vowel":!1},branches:[{from:2304,to:3455,class:"v",also:"u",after:"aṁ",not_before:"aieo"},{from:1536,to:7295,class:"ṛ",also:"r"},{from:0,to:127,class:"ĝ",also:"h"},{from:0,to:127,class:"w",also:"u"},{from:2944,to:3071,class:"k",also:"h"},{from:1536,to:1791,class:"w",also:"u"}],joined:{min_classes:8,when:"the strict keys find nobody"},digit_zeros:[48,1632,1776,2406,2534,2662,2790,2918,3046,3174,3302,3430,7248,44016],max_keys:16,suffixes:[{from:2432,to:2559,endings:["য়ের","দের","এর","ের","কে","তে"]},{from:2688,to:2815,endings:["માં","નું","થી","ના","ની","ને"]},{from:3328,to:3455,endings:["യ്ക്ക്","ന്റെ","യുടെ","യിലെ","ക്ക്","ുടെ","യിൽ","ിലെ","ോട്","ിന്","ിൽ","നെ","യെ","ും"]},{from:2816,to:2943,endings:["ଙ୍କର","ଙ୍କୁ","ଙ୍କ","ରେ","ରୁ","କୁ"]},{from:2944,to:3071,endings:["ுக்கு","யின்","வின்","க்கு","யில்","ிடம்","ுடன்","ின்","ில்","ால்","ும்"]},{from:3072,to:3199,endings:["యొక్క","లోని","గారు","లో","కు","కి","ని","తో","ను"]}]};var Y={unicode:"15.0.0",python:"3.12.13",ranges:[1536,1791,1872,1919,2304,3455,7248,7295,7376,7423,43232,43263,43744,44031,64336,65023,65136,65279,72448,72543],mn:[1552,1562,1611,1631,1648,1648,1750,1756,1759,1764,1767,1768,1770,1773,2304,2306,2362,2362,2364,2364,2369,2376,2381,2381,2385,2391,2402,2403,2433,2433,2492,2492,2497,2500,2509,2509,2530,2531,2558,2558,2561,2562,2620,2620,2625,2626,2631,2632,2635,2637,2641,2641,2672,2673,2677,2677,2689,2690,2748,2748,2753,2757,2759,2760,2765,2765,2786,2787,2810,2815,2817,2817,2876,2876,2879,2879,2881,2884,2893,2893,2901,2902,2914,2915,2946,2946,3008,3008,3021,3021,3072,3072,3076,3076,3132,3132,3134,3136,3142,3144,3146,3149,3157,3158,3170,3171,3201,3201,3260,3260,3263,3263,3270,3270,3276,3277,3298,3299,3328,3329,3387,3388,3393,3396,3405,3405,3426,3427,7376,7378,7380,7392,7394,7400,7405,7405,7412,7412,7416,7417,43232,43249,43263,43263,43756,43757,43766,43766,44005,44005,44008,44008,44013,44013],m:[1552,1562,1611,1631,1648,1648,1750,1756,1759,1764,1767,1768,1770,1773,2304,2307,2362,2364,2366,2383,2385,2391,2402,2403,2433,2435,2492,2492,2494,2500,2503,2504,2507,2509,2519,2519,2530,2531,2558,2558,2561,2563,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2672,2673,2677,2677,2689,2691,2748,2748,2750,2757,2759,2761,2763,2765,2786,2787,2810,2815,2817,2819,2876,2876,2878,2884,2887,2888,2891,2893,2901,2903,2914,2915,2946,2946,3006,3010,3014,3016,3018,3021,3031,3031,3072,3076,3132,3132,3134,3140,3142,3144,3146,3149,3157,3158,3170,3171,3201,3203,3260,3260,3262,3268,3270,3272,3274,3277,3285,3286,3298,3299,3315,3315,3328,3331,3387,3388,3390,3396,3398,3400,3402,3405,3415,3415,3426,3427,7376,7378,7380,7400,7405,7405,7412,7412,7415,7417,43232,43249,43263,43263,43755,43759,43765,43766,44003,44010,44012,44013],l:[1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1872,1919,2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,7258,7293,7401,7404,7406,7411,7413,7414,7418,7418,43250,43255,43259,43259,43261,43262,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44002,64336,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276],ccc:[1552,1559,230,1560,1560,30,1561,1561,31,1562,1562,32,1611,1611,27,1612,1612,28,1613,1613,29,1614,1614,30,1615,1615,31,1616,1616,32,1617,1617,33,1618,1618,34,1619,1620,230,1621,1622,220,1623,1627,230,1628,1628,220,1629,1630,230,1631,1631,220,1648,1648,35,1750,1756,230,1759,1762,230,1763,1763,220,1764,1764,230,1767,1768,230,1770,1770,220,1771,1772,230,1773,1773,220,2364,2364,7,2381,2381,9,2385,2385,230,2386,2386,220,2387,2388,230,2492,2492,7,2509,2509,9,2558,2558,230,2620,2620,7,2637,2637,9,2748,2748,7,2765,2765,9,2876,2876,7,2893,2893,9,3021,3021,9,3132,3132,7,3149,3149,9,3157,3157,84,3158,3158,91,3260,3260,7,3277,3277,9,3387,3388,9,3405,3405,9,7376,7378,230,7380,7380,1,7381,7385,220,7386,7387,230,7388,7391,220,7392,7392,230,7394,7400,1,7405,7405,220,7412,7412,230,7416,7417,230,43232,43249,230,43766,43766,9,44013,44013,9],decomp:{"1570":[1575,1619],"1571":[1575,1620],"1572":[1608,1620],"1573":[1575,1621],"1574":[1610,1620],"1728":[1749,1620],"1730":[1729,1620],"1747":[1746,1620],"2345":[2344,2364],"2353":[2352,2364],"2356":[2355,2364],"2392":[2325,2364],"2393":[2326,2364],"2394":[2327,2364],"2395":[2332,2364],"2396":[2337,2364],"2397":[2338,2364],"2398":[2347,2364],"2399":[2351,2364],"2507":[2503,2494],"2508":[2503,2519],"2524":[2465,2492],"2525":[2466,2492],"2527":[2479,2492],"2611":[2610,2620],"2614":[2616,2620],"2649":[2582,2620],"2650":[2583,2620],"2651":[2588,2620],"2654":[2603,2620],"2888":[2887,2902],"2891":[2887,2878],"2892":[2887,2903],"2908":[2849,2876],"2909":[2850,2876],"2964":[2962,3031],"3018":[3014,3006],"3019":[3015,3006],"3020":[3014,3031],"3144":[3142,3158],"3264":[3263,3285],"3271":[3270,3285],"3272":[3270,3286],"3274":[3270,3266],"3275":[3274,3285],"3402":[3398,3390],"3403":[3399,3390],"3404":[3398,3415]},excl:[2392,2393,2394,2395,2396,2397,2398,2399,2524,2525,2527,2611,2614,2649,2650,2651,2654,2908,2909]};var e2=Y.unicode,b=1,R1=2,r=4,E=8,s=new Map,K=new Map,w=new Map;for(let t=0;t<Y.ranges.length;t+=2)for(let m=Y.ranges[t];m<=Y.ranges[t+1];m++)s.set(m,0);var N=(t,m)=>{for(let _=0;_<t.length;_+=2)for(let f=t[_];f<=t[_+1];f++)s.set(f,s.get(f)|m)};N(Y.mn,b);N(Y.m,R1);N(Y.l,r);for(let t=0;t<Y.ccc.length;t+=3)for(let m=Y.ccc[t];m<=Y.ccc[t+1];m++)s.set(m,s.get(m)|Y.ccc[t+2]<<4);var j1=new Set(Y.excl);for(let[t,m]of Object.entries(Y.decomp)){let _=Number(t);if(K.set(_,m),m.length===2&&!j1.has(_))w.set(m[0]*1114112+m[1],_),s.set(m[1],s.get(m[1])|E)}var S=(t)=>String.fromCodePoint(t);function D(t,m,_){let f="";for(let e=m;e<_;e+=8192)f+=String.fromCodePoint(...t.slice(e,Math.min(_,e+8192)));return f}function t1(t){let m=s.get(t);return m===void 0?/\p{Mn}/u.test(S(t)):(m&b)!==0}function m1(t){let m=s.get(t);return m===void 0?/\p{L}/u.test(S(t)):(m&r)!==0}function I(t){if(!s.has(t))return Array.from(S(t).normalize("NFD"),(_)=>_.codePointAt(0));let m=K.get(t);return m?m.flatMap(I):[t]}var D1=(t,m)=>t>>4===0&&(t&E)===0&&!K.has(m);function C(t){let m=Array.from(t,(f)=>f.codePointAt(0)),_="";for(let f=0;f<m.length;){let e=f+1,k=s.has(m[f]);for(;e<m.length;e++){let h=s.get(m[e]);if(h===void 0)k=!1;else if(D1(h,m[e]))break}_+=k?E1(m,f,e):D(m,f,e).normalize("NFC"),f=e}return _}function E1(t,m,_){let f=0,e=!0;for(let l=m;l<_&&e;l++){let v=s.get(t[l]),$=v>>4;if(K.has(t[l])||(v&E)!==0||$!==0&&$<f)e=!1;f=$}if(e)return D(t,m,_);let k=[];for(let l=m;l<_;l++)k.push(...I(t[l]));let h=(l)=>s.get(l)>>4;for(let l=0;l<k.length;){if(h(k[l])===0){l++;continue}let v=l;while(v<k.length&&h(k[v])!==0)v++;let $=k.slice(l,v).sort((P,B)=>h(P)-h(B));for(let P=0;P<$.length;P++)k[l+P]=$[P];l=v}let y=[],z=-1;for(let l of k){let v=h(l);if(z>=0&&(y.length-1===z||h(y[y.length-1])<v)){let $=w.get(y[z]*1114112+l);if($!==void 0){y[z]=$;continue}}if(v===0)z=y.length;y.push(l)}return D(y,0,y.length)}var _1="\x00";function f1(t){let m=t.brahmic,_=Array(128);for(let[n,g]of Object.entries(m.class_by_offset))_[Number(n)]=g;let f=new Map(Object.entries(t.extra)),e=new Map(Object.entries(t.urdu.letters)),k=new Map(Object.entries(t.meetei.letters)),h=new Map(Object.entries(t.ol_chiki.letters)),y=Array(128);for(let[n,g]of Object.entries(t.latin.letters))y[n.charCodeAt(0)]=g;let z=t.latin.groups,l=t.latin.w_ambiguous_unless_before,v=new Map(Object.entries(t.class_map)),$=new Set(t.vowels),P=t.steps,B=t.urdu;function R(n){return t.meetei.ranges.some(([g,H])=>n>=g&&n<=H)}function Y1(n){let g="",H=-1;for(let Q=0;Q<n.length;Q++){let G=n[Q],Z=f.get(G);if(Z!==void 0){g+=Z,H=-1;continue}let V=n.charCodeAt(Q);if(V<m.from||V>m.to)continue;let X=V&127,j=_[X];if(X===m.nukta_offset&&m.flap_offsets.includes(H)&&g)g=g.slice(0,-1)+m.flap_class;else if(X===m.virama_offset);else if(X===m.candrabindu_offset)g+=m.candrabindu_class;else if(j!==void 0)g+=j;if(j!==void 0)H=X;else if(X!==m.nukta_offset&&X!==m.virama_offset)H=-1}return g}function s1(n){let g="",H=0;t:while(H<n.length){for(let[G,Z]of z)if(n.startsWith(G,H)){g+=Z,H+=G.length;continue t}let Q=n.charCodeAt(H);if(Q===99){let G=n[H+1];g+=G==="e"||G==="i"||G==="y"?"s":"k"}else if(Q===119&&H>0&&!l.includes(n[H+1]??" "))g+="w";else g+=y[Q]??"";H++}return g}function a1(n){let g=n[0]===B.ain?"a":"";for(let Q=0;Q<n.length;Q++){let G=n[Q];if(G===B.waw&&Q>0&&!(Q+1<n.length&&B.waw_v_before.includes(n[Q+1])))g+="w";else g+=e.get(G)??""}let H=n.length;if(H>1&&B.final_he.includes(n[H-1])&&!B.final_he_h_after.includes(n[H-2]))g=g.slice(0,-1)+"a";return g}function B1(n){let g="";for(let H of n){if(H===t.ol_chiki.aspiration&&g&&!$.has(g[g.length-1]))continue;g+=h.get(H)??""}return g}function F1(n){let g="";for(let H of n)g+=k.get(H)??"";return g}function U1(n){let g=!0;for(let G=0;G<n.length;G++)if(n.charCodeAt(G)>127){g=!1;break}if(g)return s1(n);let H=!1,Q=!1;for(let G=0;G<n.length;G++){let Z=n.charCodeAt(G);if(Z>=B.from&&Z<=B.to)return a1(n);if(Z>=t.ol_chiki.from&&Z<=t.ol_chiki.to)H=!0;else if(R(Z))Q=!0}if(H)return B1(n);if(Q)return F1(n);return Y1(n)}function W1(n){if(P["ng-k"]){let Z="";for(let V=0;V<n.length;V++)if(Z+=n[V],n[V]==="ṅ"&&n[V+1]!=="k")Z+="k";n=Z}let g="";for(let Z=0;Z<n.length;Z++)g+=v.get(n[Z])??n[Z];if(!g)return g;let H=g[0];if(P["initial-vowels-alike"]&&$.has(H))H="a";let Q=H;for(let Z=1;Z<g.length;Z++){let V=g[Z];if(P["drop-h"]&&V==="h")continue;if(P["drop-y"]&&V==="y")continue;if(P["drop-vowels"]&&$.has(V))continue;Q+=V}if(P["drop-final-vowel"]&&Q.length>1&&$.has(Q[Q.length-1]))Q=Q.slice(0,-1);let G=Q[0];for(let Z=1;Z<Q.length;Z++)if(Q[Z]!==Q[Z-1])G+=Q[Z];return G}function T1(n,g,H){let Q=g>0?n[g-1]:"^",G=g+1<n.length?n[g+1]:"$";return(H.after===void 0||H.after.includes(Q))&&(H.before===void 0||H.before.includes(G))&&!(H.not_before??"").includes(G)}function J1(n){let g=U1(n),H=[g];for(let Q of t.branches){if(!g.includes(Q.class))continue;let G=!1;for(let Z=0;Z<n.length;Z++){let V=n.charCodeAt(Z);if(V>=Q.from&&V<=Q.to){G=!0;break}}if(!G)continue;for(let Z=0;Z<g.length;Z++)if(g[Z]===Q.class&&H.length*2<=t.max_keys&&T1(g,Z,Q)){let V=Q.also||_1;H=H.concat(H.map((X)=>X.slice(0,Z)+V+X.slice(Z+1)))}}return H.map((Q)=>Q.replaceAll(_1,""))}function K1(n){let g="";for(let H=0;H<n.length;H++){let Q=n.charCodeAt(H),G=t.digit_zeros.find((Z)=>Q>=Z&&Q<=Z+9);if(G===void 0)return;g+=String.fromCharCode(48+Q-G)}return g||void 0}return function(g){let H=K1(g);if(H!==void 0)return[H];let Q=[g],G=g.charCodeAt(0);for(let V of t.suffixes){if(G<V.from||G>V.to)continue;for(let X of V.endings)if(g.endsWith(X)&&g.length-X.length>=2){Q.push(g.slice(0,-X.length));break}}let Z=new Set;for(let V of Q)for(let X of J1(V))Z.add(W1(X));return Z.delete(""),[...Z].sort()}}var N1=f1(J),e1={compile:(t)=>f1(t),normalize:(t)=>S1(t),engine:N1},g2=J.version,h1=256;function S1(t){let m="";for(let _ of t)for(let f of I(_.codePointAt(0))){if(t1(f))continue;if(f>=128)return C(t);m+=String.fromCodePoint(f)}return m.toLowerCase()}function l1(t){return t.replace(/\([^)]*\)/g," ").split(/[^\S\ufeff]|[\x1c-\x1f\x85.\-,'’]/u).filter(Boolean)}var k1=J.joined.min_classes;var a=u,$2=a.version,G2=a.thresholds,{compile:$1,normalize:p1,engine:i1}=e1,O1=$1(o),q1=$1(d),g1=k1,p=1073741824,F=Math.floor;function y1(t){return t>=0&&t<a.pow.length?a.pow[t]:0}function u1(t,m){let _=0;while(_+1<a.exp2.length&&m*a.exp2[_+1]<=t*65536)_++;return _}function x(t,m){let _=t.length+m.length;if(!_)return 1e4;let f=Array(m.length+1).fill(0),e=Array(m.length+1).fill(0);for(let k of t){e[0]=0;for(let h=0;h<m.length;h++)e[h+1]=k===m[h]?f[h]+1:Math.max(f[h+1],e[h]);[f,e]=[e,f]}return F((40000*f[m.length]+_)/(2*_))}var G1=(t,m)=>F((2*t+m)/(2*m)),T=(t)=>/^[\x00-\x7f]*$/.test(t),U=(t)=>i1(t);function i(t){let m=[];for(let _ of l1(t)){if(_=p1(_),T(_))_=_.replace(/[^a-z0-9]/g,"");if(_&&U(_).length)m.push(_)}return m}var M=(t)=>[...t.toLowerCase()].filter((m)=>m>="a"&&m<="z"),L=(t)=>[...C(t)].filter((m)=>m!==""&&m!==""&&!/^(?:[^\S]|[\x1c-\x1f\x85])$/u.test(m));function n1(t){let m=[...t];if(m.length<a.deletion_min_classes)return[];return m.map((_,f)=>m.slice(0,f).join("")+m.slice(f+1).join(""))}var A=(t)=>[...O1(t)[0]??""];function v1(t){let m=[...t].some((e)=>e>=""&&e<="ۿ"),_=new Set,f=[];for(let e of q1(t)){let k=[...e],h=[k[0],...k.slice(1).filter((z)=>z!=="a").map((z)=>z==="y"?"i":z)];if(m&&h.length>1&&h[h.length-1]==="h")h.pop();let y=h.join("");if(!_.has(y))_.add(y),f.push(h)}return f}function O(t,m){let _=0;for(let f of v1(t))for(let e of v1(m))_=Math.max(_,x(f,e));return _}var o1=[[1536,1791,"arab"],[1872,1919,"arab"],[2304,2431,"deva"],[2432,2559,"beng"],[2560,2687,"guru"],[2688,2815,"gujr"],[2816,2943,"orya"],[2944,3071,"taml"],[3072,3199,"telu"],[3200,3327,"knda"],[3328,3455,"mlym"],[7248,7295,"olck"],[43968,44031,"mtei"]];function z1(t){for(let m of t){let _=m.codePointAt(0);if(m1(_))return o1.find(([f,e])=>_>=f&&_<=e)?.[2]??""}return""}class P1{idx=new Map;v;c;units=new Map;constructor(t){let m=t.latin??t.x,_=t.native??t.y,f=[...m,..._];f.forEach((e,k)=>this.idx.set(e,k+1)),this.v=f.length+1,this.c=new Float64Array(this.v*this.v).fill(p),t.c.forEach(([e,k],h)=>{this.c.fill(e,h*this.v,(h+1)*this.v);for(let[y,z]of k)this.c[h*this.v+y]=z}),this.c[0]=0;for(let[e,k,h,y]of t.units??[]){let z=new Float64Array(this.v).fill(p);if(h>=0)z.fill(h,m.length+1);for(let[l,v]of y)z[l]=v<0?p:v;this.units.set(e*this.v+k,z)}}ids(t){return t.map((m)=>this.idx.get(m)??0)}align(t,m,_){let f=t.length,e=m.length,k=e+1,h=this.v,y=this.c,z=new Float64Array((f+1)*k);for(let l=1;l<=f;l++)z[l*k]=z[(l-1)*k]+y[t[l-1]*h];for(let l=1;l<=e;l++)z[l]=z[l-1]+y[m[l-1]];for(let l=1;l<=f;l++)for(let v=1;v<=e;v++){let $=z[(l-1)*k+v-1]+y[t[l-1]*h+m[v-1]];if($=Math.min($,z[(l-1)*k+v]+y[t[l-1]*h]),$=Math.min($,z[l*k+v-1]+y[m[v-1]]),_&&l>=2){let P=this.units.get(t[l-2]*h+t[l-1]);if(P)$=Math.min($,z[(l-2)*k+v-1]+P[m[v-1]])}z[l*k+v]=$}return z[f*k+e]}}var d1=`https://cdn.jsdelivr.net/gh/micahchoo/indickit@v${c}/phonetic/scorer/`,V1=new URL("../phonetic/scorer/",import.meta.url);async function H1(t){let m=await fetch(t);if(!m.ok)throw Error(`phonetic-search: ${t}: ${m.status}`);return m.arrayBuffer()}var c1=async(t)=>{try{return await H1(t)}catch{return H1(new URL(t.href.slice(V1.href.length),d1))}};async function Q1(t,m){try{let _=await m(new URL(t+".json",V1));return new P1(JSON.parse(new TextDecoder().decode(_)))}catch{return}}class X1{lang;latin;pairs;constructor(t,m,_){this.lang=t;this.latin=m;this.pairs=_}cost(t,m){let _=T(t),f=T(m),e,k,h,y,z=!1;if(_!==f){let[v,$]=_?[t,m]:[m,t];if(!(e=this.latin))return;k=M(v),h=L($),z=!0,y=Math.max(k.length,1)}else if(!_){let v=z1(t),$=z1(m);if(!v||!$||v===$)return;if(v>$)[t,m]=[m,t],[v,$]=[$,v];if(!(e=this.pairs.get(`${v}-${$}`)))return;k=L(t),h=L(m),y=Math.max(k.length,h.length,1)}else return;let l=e.align(e.ids(k),e.ids(h),z);return F((20*l+y)/(2*y))}calibrations(t,m){let _=new Map;for(let l of m){let v=this.cost(t,l);if(v!==void 0)_.set(l,v)}let f=new Map;if(!_.size)return f;let e=Math.max(T(t)?M(t).length:L(t).length,1),k=1/0,h=1/0;for(let l of _.values())k=Math.min(k,l),h=Math.min(h,l*e);let y=new Map,z=0;for(let[l,v]of _){let $=y1(F((v*e-h)/a.posterior_temperature));y.set(l,$),z+=$}for(let[l,v]of _){let $=F((100*y1(v-k)+500000)/1e6),P=F((100*y.get(l)+F(z/2))/z);f.set(l,$+P)}return f}wordSim(t,m,_,f){let e=new Set(U(m)),k=U(t).some((l)=>e.has(l))?1:0,h,y;if(T(t)&&T(m))y=x(M(t),M(m)),h=2*y;else if(_?.has(m))h=100*_.get(m),y=O(t,m);else if(this.cost(t,m)!==void 0)h=20000,y=O(t,m);else y=x(A(t),A(m)),h=2*y;let z=2*f.key*1e4*k+f.cost*h+2*f.vowel*y;return f.round?G1(z,200*f.div):F(z/(200*f.div))}}function W(t,m){let _=t.join("");return _?U(_).filter((f)=>[...f].length>=m):[]}function Z1(t){let m=t.map(U).filter((f)=>f.length);if(!m.length)return[];let _=[""];return m.forEach((f,e)=>{_=_.flatMap((k)=>f.map((h)=>e?k+"\x1F"+h:h))}),_.slice(0,h1)}class q{scorer;words;n;df=new Map;maps={strict:new Map,joined:new Map,loose:new Map,near:new Map};p;constructor(t,m,_){this.scorer=t;this.p=a.profiles[_],this.n=m.length,this.words=m.map(i);for(let e of this.words)for(let k of new Set(e.flatMap(U)))this.df.set(k,(this.df.get(k)??0)+1);let f=(e,k,h)=>{let y=e.get(k);if(!y)e.set(k,[h]);else if(y[y.length-1]!==h)y.push(h)};this.words.forEach((e,k)=>{for(let h of Z1(e))f(this.maps.strict,h,k);for(let h of W(e,g1))f(this.maps.joined,h,k);for(let h of W(e,a.loose_joined_min_classes))f(this.maps.loose,h,k);for(let h of e)for(let y of U(h)){if(this.common(y))continue;f(this.maps.near,y,k);for(let z of n1(y))f(this.maps.near,z,k)}})}common(t){let m=this.p.stop_permille;return m!==null&&this.n>=this.p.stop_min_names&&(this.df.get(t)??0)*1000>this.n*m}weight(t){let m=0;for(let _ of U(t))m=Math.max(m,u1(this.n,Math.max(this.df.get(_)??0,1)));return m}candidates(t){let m=new Set;for(let _ of Z1(t))for(let f of this.maps.strict.get(_)??[])m.add(f);if(!m.size)for(let _ of W(t,g1))for(let f of this.maps.joined.get(_)??[])m.add(f);for(let _ of W(t,a.loose_joined_min_classes))for(let f of this.maps.loose.get(_)??[])m.add(f);for(let _ of t)for(let f of U(_)){if(this.common(f))continue;for(let e of[f,...n1(f)])for(let k of this.maps.near.get(e)??[])m.add(k)}return m}nameScore(t,m,_){let f=0,e=0;for(let[h,y,z]of[[t,m,!0],[m,t,!1]])for(let l of h){let v=this.weight(l);e+=v;let $=0;for(let P of y)$=Math.max($,z?this.scorer.wordSim(l,P,_.get(l),this.p):this.scorer.wordSim(P,l,_.get(P),this.p));f+=v*$}let k=e?F((f+F(e/2))/e):0;if(t.length!==m.length&&t.length&&m.length){let h=t.join(""),y=m.join(""),z=new Set(W([h],a.loose_joined_min_classes)),l=W([y],a.loose_joined_min_classes).some((R)=>z.has(R))?1:0,v,$;if(this.scorer.cost(h,y)!==void 0)v=1e4,$=O(h,y);else v=$=x(A(h),A(y));let P=this.p,B=P.key*1e4*l+P.cost*v+P.vowel*$;k=Math.max(k,P.round?G1(B,100*P.div):F(B/(100*P.div)))}return k}scoreAll(t,m){let _=i(t),f=[...new Set(m.flatMap((k)=>this.words[k]))],e=new Map(_.map((k)=>[k,this.scorer.calibrations(k,f)]));return m.map((k)=>({name:k,score:this.nameScore(_,this.words[k],e)}))}search(t,m=0){let _=[...this.candidates(i(t))].sort((f,e)=>f-e);return this.scoreAll(t,_).filter((f)=>f.score>=m).sort((f,e)=>e.score-f.score)}}async function P2(t,m={}){let _=m.fetcher??c1,f=[...new Set(m.scripts??[])].sort(),e=new Map,[k]=await Promise.all([Q1(`latin/${t}`,_),...f.flatMap((y,z)=>f.slice(z+1).map(async(l)=>{let v=await Q1(`pairs/${y}-${l}`,_);if(v)e.set(`${y}-${l}`,v)}))]),h=new X1(t,k,e);return{lang:t,index:(y,z="names")=>new q(h,y,z),score:(y,z,l="names")=>new q(h,z,l).scoreAll(y,z.map((v,$)=>$)).map((v)=>v.score)}}export{P2 as loadSearch,G2 as THRESHOLDS,$2 as SEARCH_VERSION,q as Index,d1 as CDN};
|