1 /* This file was converted by gperf_fold_key_conv.py
2       from gperf output file. */
3 /* ANSI-C code produced by gperf version 3.1 */
4 /* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold1_key unicode_fold1_key.gperf  */
5 /* Computed positions: -k'1-3' */
6 
7 
8 
9 /* This gperf source file was generated by make_unicode_fold_data.py */
10 
11 /*-
12  * Copyright (c) 2017-2019  K.Kosako
13  * All rights reserved.
14  *
15  * Redistribution and use in source and binary forms, with or without
16  * modification, are permitted provided that the following conditions
17  * are met:
18  * 1. Redistributions of source code must retain the above copyright
19  *    notice, this list of conditions and the following disclaimer.
20  * 2. Redistributions in binary form must reproduce the above copyright
21  *    notice, this list of conditions and the following disclaimer in the
22  *    documentation and/or other materials provided with the distribution.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
25  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34  * SUCH DAMAGE.
35  */
36 #include <string.h>
37 #include "regenc.h"
38 
39 #define TOTAL_KEYWORDS 1353
40 #define MIN_WORD_LENGTH 3
41 #define MAX_WORD_LENGTH 3
42 #define MIN_HASH_VALUE 3
43 #define MAX_HASH_VALUE 1791
44 /* maximum key range = 1789, duplicates = 0 */
45 
46 #ifdef __GNUC__
47 __inline
48 #else
49 #ifdef __cplusplus
50 inline
51 #endif
52 #endif
53 /*ARGSUSED*/
54 static unsigned int
hash(OnigCodePoint codes[])55 hash(OnigCodePoint codes[])
56 {
57   static const unsigned short asso_values[] =
58     {
59          4,    2,  147,   16,    1,   13, 1228,  725, 1224,  638,
60       1204,   95,    9,   82, 1403,   80,    8,   68, 1391,    6,
61       1203,  602, 1200,  320,  151,   67, 1385,   61, 1384,  158,
62          0,   11, 1252,    3,  733,  278,   23,  425,  660,  424,
63        640,   20,  635,  105,    5,   29,  916,   34,  630,    0,
64        906, 1378,  899, 1377,  470, 1363,  623,  902,  610,  230,
65       1193, 1358, 1190,  779,  986, 1336,  890,  883,  456,  597,
66        285,  158,  590,  477,  583,   42,  576, 1447,  447, 1440,
67        440, 1353,  426, 1429,  400, 1417,  327, 1407,  567, 1389,
68        386, 1207,  458,  724,  854,  979, 1016,   66,  232,  413,
69        204, 1431,  226, 1317,  190, 1167,  379, 1319,  198, 1270,
70        175,  209,  561,  362,  528, 1323,  257, 1099,  240, 1309,
71        508, 1172,  484, 1306,  699,  865,  850,  488,  679,  755,
72        420,  639, 1149,  105,  691,  789, 1125,   46,  809,  652,
73       1293,    3, 1262,  166, 1426,    0, 1424, 1792, 1220,  460,
74        706,    1,  367, 1792, 1341, 1792, 1151,   56, 1235, 1792,
75        384,  345,  965,   40, 1168,   33,  218,  180, 1159,   20,
76       1296,  276, 1243,   14, 1401,  777, 1142,  682, 1284,  129,
77       1135,  610, 1181,  871, 1123,  858, 1042,  510,  842,  499,
78        999,  346,  830,    0,  823, 1288, 1115,  768,  732, 1272,
79       1101, 1098, 1082, 1270,  811,  177, 1078, 1074, 1061, 1058,
80       1050,  789,  353, 1018,  548, 1006,  517,  988,  334,  765,
81        166,  753,  138,  743,  100,  969,   87,  720,   49,  975,
82         75,  965,   62,  411,  126,  955,  113, 1262,  317,  943,
83        304,  679,  293, 1252,  714,  937,  275,  490,  263,  469,
84        395, 1345,  931,  208,  921,   80,  542,   11,  246
85     };
86   return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)];
87 }
88 
89 int
onigenc_unicode_fold1_key(OnigCodePoint codes[])90 onigenc_unicode_fold1_key(OnigCodePoint codes[])
91 {
92   static const short int wordlist[] =
93     {
94       -1, -1, -1,
95 
96       3429,
97 
98       1906,
99 
100       1867,
101 
102       210,
103 
104       171,
105 
106       3414,
107 
108       1927,
109 
110       1690,
111 
112       231,
113 
114       1885,
115 
116       1879,
117 
118       189,
119 
120       183,
121 
122       2240,
123 
124       1315,
125 
126       1276,
127 
128       165,
129 
130       792,
131 
132       2261,
133 
134       1336,
135 
136       1594,
137 
138       1630,
139 
140       1294,
141 
142       1288,
143 
144       1915,
145 
146       2243,
147 
148       219,
149 
150       1618,
151 
152       2237,
153 
154       3417,
155 
156       2981,
157 
158       2903,
159 
160       2297,
161 
162       2990,
163 
164       3423,
165 
166       2282,
167 
168       2948,
169 
170       1324,
171 
172       2939,
173 
174       2927,
175 
176       1606,
177 
178       2984,
179 
180       3507,
181 
182       2906,
183 
184       974,
185 
186       273,
187 
188       2900,
189 
190       1600,
191 
192       2648,
193 
194       3558,
195 
196       2189,
197 
198       1228,
199 
200       459,
201 
202       2999,
203 
204       80,
205 
206       2885,
207 
208       1795,
209 
210       3738,
211 
212       1513,
213 
214       378,
215 
216       1459,
217 
218       2438,
219 
220       3570,
221 
222       2195,
223 
224       1234,
225 
226       465,
227 
228       860,
229 
230       92,
231 
232       1041,
233 
234       1807,
235 
236       3750,
237 
238       1525,
239 
240       2714,
241 
242       2549,
243 
244       2441,
245 
246       3564,
247 
248       2192,
249 
250       1231,
251 
252       462,
253 
254       866,
255 
256       86,
257 
258       2888,
259 
260       1801,
261 
262       3744,
263 
264       1519,
265 
266       159,
267 
268       2561,
269 
270       3552,
271 
272       2186,
273 
274       1225,
275 
276       456,
277 
278       2972,
279 
280       863,
281 
282       2882,
283 
284       1789,
285 
286       3732,
287 
288       1507,
289 
290       2966,
291 
292       2942,
293 
294       2555,
295 
296       3546,
297 
298       2183,
299 
300       1222,
301 
302       453,
303 
304       857,
305 
306       3411,
307 
308       2879,
309 
310       1783,
311 
312       3726,
313 
314       1501,
315 
316       2936,
317 
318       2543,
319 
320       2930,
321 
322       3582,
323 
324       2201,
325 
326       1240,
327 
328       471,
329 
330       854,
331 
332       105,
333 
334       1447,
335 
336       1819,
337 
338       3762,
339 
340       1537,
341 
342       3354,
343 
344       2537,
345 
346       2924,
347 
348       3576,
349 
350       2198,
351 
352       1237,
353 
354       468,
355 
356       872,
357 
358       99,
359 
360       399,
361 
362       1813,
363 
364       3756,
365 
366       1531,
367 
368       1648,
369 
370       2573,
371 
372       3540,
373 
374       2180,
375 
376       1219,
377 
378       2423,
379       -1,
380 
381       869,
382 
383       2876,
384 
385       1777,
386 
387       3720,
388 
389       1495,
390 
391       541,
392 
393       502,
394 
395       2567,
396 
397       697,
398 
399       1897,
400 
401       559,
402 
403       201,
404 
405       851,
406 
407       520,
408 
409       514,
410 
411       3495,
412 
413       1864,
414 
415       962,
416 
417       267,
418 
419       2531,
420 
421       2276,
422 
423       2636,
424 
425       1306,
426 
427       3534,
428 
429       2177,
430 
431       1216,
432 
433       366,
434 
435       2339,
436       -1,
437 
438       2873,
439 
440       1771,
441 
442       3714,
443 
444       1489,
445 
446       2027,
447 
448       1063,
449 
450       324,
451 
452       1192,
453 
454       27,
455 
456       2963,
457 
458       3276,
459 
460       848,
461 
462       1726,
463 
464       3669,
465 
466       3141,
467 
468       1612,
469 
470       2978,
471 
472       1378,
473 
474       2525,
475 
476       2018,
477 
478       1054,
479 
480       315,
481 
482       830,
483 
484       12,
485 
486       2720,
487       -1, -1,
488 
489       2024,
490 
491       1060,
492 
493       321,
494 
495       2372,
496 
497       4086,
498 
499       1360,
500 
501       2011,
502 
503       1047,
504 
505       309,
506 
507       3633,
508 
509       0,
510 
511       2717,
512       -1,
513 
514       1372,
515 
516       153,
517 
518       31,
519 
520       2732,
521 
522       2360,
523 
524       1588,
525 
526       1348,
527 
528       2096,
529 
530       1135,
531 
532       387,
533       -1,
534 
535       1381,
536 
537       2792,
538 
539       1609,
540       -1,
541 
542       2015,
543 
544       1050,
545 
546       312,
547 
548       3459,
549 
550       6,
551 
552       922,
553 
554       2008,
555 
556       1044,
557 
558       306,
559 
560       2600,
561 
562       3885,
563 
564       2366,
565 
566       3342,
567 
568       1354,
569 
570       2039,
571 
572       1075,
573 
574       336,
575 
576       2456,
577 
578       52,
579 
580       2735,
581 
582       2234,
583 
584       1273,
585 
586       499,
587 
588       3879,
589 
590       168,
591 
592       2390,
593 
594       682,
595 
596       1402,
597 
598       1597,
599       -1,
600 
601       718,
602 
603       2036,
604 
605       1072,
606 
607       333,
608 
609       2450,
610 
611       46,
612 
613       3618,
614 
615       2219,
616 
617       1258,
618 
619       487,
620       -1,
621 
622       141,
623 
624       2384,
625 
626       1855,
627 
628       1396,
629 
630       1573,
631       -1,
632 
633       715,
634 
635       3612,
636 
637       2216,
638 
639       1255,
640 
641       483,
642 
643       393,
644 
645       135,
646 
647       2897,
648 
649       1849,
650 
651       1624,
652 
653       1567,
654 
655       3492,
656 
657       1966,
658 
659       959,
660 
661       3873,
662       -1,
663 
664       2279,
665 
666       2633,
667 
668       887,
669 
670       3600,
671 
672       2210,
673 
674       1249,
675 
676       480,
677 
678       2336,
679 
680       123,
681 
682       532,
683 
684       1837,
685 
686       3780,
687 
688       1555,
689       -1,
690 
691       3594,
692 
693       2207,
694 
695       1246,
696 
697       477,
698 
699       2996,
700 
701       117,
702 
703       881,
704 
705       1831,
706 
707       3774,
708 
709       1549,
710 
711       703,
712       -1,
713 
714       3867,
715 
716       3588,
717 
718       2204,
719 
720       1243,
721 
722       474,
723 
724       878,
725 
726       111,
727 
728       658,
729 
730       1825,
731 
732       3768,
733 
734       1543,
735 
736       3822,
737 
738       1990,
739 
740       1008,
741 
742       288,
743       -1,
744 
745       2273,
746 
747       2681,
748 
749       875,
750 
751       2174,
752 
753       1213,
754       -1,
755 
756       643,
757 
758       2348,
759 
760       2870,
761 
762       1765,
763 
764       3708,
765 
766       1483,
767       -1, -1,
768 
769       652,
770 
771       3267,
772 
773       381,
774 
775       3921,
776 
777       2960,
778 
779       845,
780 
781       637,
782 
783       1684,
784 
785       2165,
786 
787       1204,
788 
789       3237,
790 
791       661,
792 
793       2519,
794 
795       2861,
796 
797       1747,
798 
799       3690,
800 
801       1465,
802 
803       785,
804 
805       3903,
806 
807       2432,
808 
809       3339,
810 
811       37,
812 
813       2090,
814 
815       1114,
816 
817       372,
818 
819       3228,
820 
821       3915,
822 
823       2771,
824 
825       640,
826       -1,
827 
828       1387,
829 
830       2501,
831 
832       3891,
833 
834       3234,
835 
836       2021,
837 
838       1057,
839 
840       318,
841 
842       3924,
843 
844       18,
845 
846       3222,
847 
848       1126,
849 
850       1996,
851 
852       1020,
853 
854       294,
855 
856       2783,
857 
858       2378,
859 
860       2693,
861 
862       1366,
863 
864       3084,
865 
866       3624,
867 
868       2222,
869 
870       1261,
871 
872       2354,
873 
874       3297,
875 
876       3897,
877 
878       1987,
879 
880       1002,
881 
882       285,
883 
884       1579,
885 
886       667,
887 
888       2675,
889 
890       3225,
891 
892       3387,
893 
894       3075,
895 
896       4020,
897 
898       3573,
899 
900       2345,
901 
902       3219,
903 
904       3945,
905 
906       4005,
907 
908       96,
909 
910       3081,
911 
912       1810,
913 
914       3753,
915 
916       1528,
917 
918       2057,
919 
920       1093,
921 
922       3069,
923 
924       2492,
925 
926       2357,
927 
928       3528,
929 
930       1984,
931 
932       996,
933 
934       282,
935 
936       3996,
937 
938       3939,
939 
940       2669,
941       -1,
942 
943       1438,
944 
945       2564,
946 
947       2291,
948 
949       2285,
950       -1,
951 
952       4008,
953 
954       3522,
955 
956       1981,
957 
958       990,
959 
960       279,
961 
962       4014,
963 
964       3072,
965 
966       2663,
967 
968       3516,
969 
970       1978,
971 
972       984,
973 
974       276,
975 
976       3066,
977       -1,
978 
979       2657,
980 
981       3008,
982 
983       3002,
984 
985       3486,
986 
987       1963,
988 
989       950,
990 
991       1999,
992 
993       1026,
994 
995       297,
996 
997       2627,
998 
999       369,
1000 
1001       2699,
1002       -1,
1003 
1004       3177,
1005 
1006       3399,
1007 
1008       2330,
1009 
1010       3621,
1011 
1012       3444,
1013 
1014       1942,
1015 
1016       906,
1017 
1018       243,
1019 
1020       144,
1021 
1022       613,
1023 
1024       2585,
1025 
1026       3501,
1027 
1028       1576,
1029 
1030       968,
1031 
1032       270,
1033 
1034       3381,
1035 
1036       2312,
1037 
1038       2642,
1039 
1040       3861,
1041 
1042       2045,
1043 
1044       1081,
1045 
1046       342,
1047 
1048       2468,
1049 
1050       65,
1051 
1052       3615,
1053 
1054       348,
1055 
1056       2483,
1057 
1058       712,
1059       -1,
1060 
1061       138,
1062 
1063       2402,
1064 
1065       1852,
1066 
1067       1414,
1068 
1069       1570,
1070 
1071       2417,
1072 
1073       721,
1074 
1075       1429,
1076 
1077       3843,
1078 
1079       3023,
1080 
1081       727,
1082 
1083       1678,
1084 
1085       3375,
1086 
1087       3201,
1088 
1089       2042,
1090 
1091       1078,
1092 
1093       339,
1094 
1095       2462,
1096 
1097       59,
1098       -1,
1099 
1100       4002,
1101 
1102       778,
1103 
1104       1672,
1105 
1106       2171,
1107 
1108       1210,
1109 
1110       2396,
1111 
1112       3369,
1113 
1114       1408,
1115 
1116       2867,
1117 
1118       1759,
1119 
1120       3702,
1121 
1122       1477,
1123 
1124       768,
1125 
1126       3363,
1127 
1128       2033,
1129 
1130       1069,
1131 
1132       330,
1133 
1134       709,
1135 
1136       40,
1137 
1138       622,
1139       -1,
1140 
1141       3930,
1142 
1143       3333,
1144       -1,
1145 
1146       3405,
1147       -1,
1148 
1149       2513,
1150 
1151       1390,
1152 
1153       2231,
1154 
1155       1270,
1156 
1157       496,
1158 
1159       3048,
1160 
1161       162,
1162 
1163       607,
1164 
1165       2168,
1166 
1167       1207,
1168 
1169       1591,
1170       -1,
1171 
1172       3909,
1173 
1174       2864,
1175 
1176       1753,
1177 
1178       3696,
1179 
1180       1471,
1181 
1182       3348,
1183       -1,
1184 
1185       3231,
1186 
1187       634,
1188 
1189       2030,
1190 
1191       1066,
1192 
1193       327,
1194 
1195       3288,
1196 
1197       34,
1198 
1199       3207,
1200 
1201       1993,
1202 
1203       1014,
1204 
1205       291,
1206       -1,
1207 
1208       2507,
1209 
1210       2687,
1211 
1212       601,
1213 
1214       1384,
1215 
1216       3510,
1217 
1218       1975,
1219 
1220       977,
1221 
1222       2351,
1223       -1,
1224 
1225       3198,
1226 
1227       2651,
1228 
1229       3504,
1230 
1231       1972,
1232 
1233       971,
1234 
1235       3120,
1236 
1237       3888,
1238 
1239       598,
1240 
1241       2645,
1242 
1243       3498,
1244 
1245       1969,
1246 
1247       965,
1248       -1,
1249 
1250       3981,
1251 
1252       595,
1253 
1254       2639,
1255 
1256       3489,
1257 
1258       3078,
1259 
1260       954,
1261 
1262       264,
1263 
1264       3252,
1265 
1266       2342,
1267 
1268       2630,
1269 
1270       3330,
1271 
1272       3054,
1273 
1274       625,
1275 
1276       3195,
1277 
1278       706,
1279 
1280       2333,
1281 
1282       3456,
1283 
1284       1948,
1285 
1286       919,
1287 
1288       249,
1289 
1290       2267,
1291       -1,
1292 
1293       2597,
1294 
1295       1654,
1296 
1297       574,
1298 
1299       3045,
1300       -1,
1301 
1302       3192,
1303 
1304       2324,
1305 
1306       3450,
1307 
1308       1945,
1309 
1310       913,
1311 
1312       246,
1313 
1314       748,
1315 
1316       3189,
1317 
1318       2591,
1319 
1320       3426,
1321 
1322       1933,
1323 
1324       2954,
1325 
1326       237,
1327       -1,
1328 
1329       2318,
1330 
1331       1924,
1332 
1333       3174,
1334 
1335       228,
1336 
1337       3210,
1338 
1339       4050,
1340 
1341       1921,
1342 
1343       354,
1344 
1345       225,
1346 
1347       1342,
1348 
1349       3042,
1350       -1,
1351 
1352       2300,
1353 
1354       3393,
1355 
1356       1333,
1357 
1358       2255,
1359 
1360       3153,
1361 
1362       2294,
1363 
1364       1441,
1365 
1366       1330,
1367 
1368       363,
1369 
1370       673,
1371 
1372       3357,
1373 
1374       3957,
1375 
1376       3039,
1377 
1378       3017,
1379 
1380       1918,
1381 
1382       3972,
1383 
1384       222,
1385 
1386       3351,
1387 
1388       3014,
1389 
1390       3035,
1391 
1392       3855,
1393 
1394       2918,
1395 
1396       3249,
1397 
1398       3011,
1399 
1400       3345,
1401 
1402       2288,
1403       -1,
1404 
1405       1327,
1406 
1407       3020,
1408 
1409       664,
1410 
1411       3057,
1412 
1413       3336,
1414 
1415       3597,
1416 
1417       2054,
1418 
1419       1090,
1420 
1421       3951,
1422 
1423       2486,
1424 
1425       120,
1426 
1427       2894,
1428 
1429       1834,
1430 
1431       3777,
1432 
1433       1552,
1434 
1435       1642,
1436 
1437       3005,
1438 
1439       2420,
1440 
1441       2063,
1442 
1443       1432,
1444 
1445       357,
1446 
1447       4083,
1448 
1449       730,
1450 
1451       2744,
1452 
1453       3849,
1454 
1455       739,
1456 
1457       2048,
1458 
1459       1084,
1460 
1461       3933,
1462 
1463       2474,
1464 
1465       71,
1466 
1467       1450,
1468       -1,
1469 
1470       2087,
1471 
1472       1111,
1473 
1474       3243,
1475       -1,
1476 
1477       2408,
1478 
1479       2768,
1480 
1481       1420,
1482 
1483       3606,
1484 
1485       2213,
1486 
1487       1252,
1488       -1, -1,
1489 
1490       129,
1491 
1492       3555,
1493 
1494       1843,
1495 
1496       3786,
1497 
1498       1561,
1499 
1500       592,
1501 
1502       77,
1503 
1504       1029,
1505 
1506       1792,
1507 
1508       3735,
1509 
1510       1510,
1511 
1512       2702,
1513 
1514       589,
1515 
1516       2435,
1517 
1518       2144,
1519 
1520       1912,
1521 
1522       3927,
1523 
1524       216,
1525 
1526       2249,
1527 
1528       2840,
1529 
1530       1705,
1531 
1532       3648,
1533       -1,
1534 
1535       3240,
1536 
1537       3543,
1538 
1539       2546,
1540 
1541       586,
1542 
1543       450,
1544 
1545       1321,
1546 
1547       3204,
1548 
1549       806,
1550 
1551       1780,
1552 
1553       3723,
1554 
1555       1498,
1556 
1557       3537,
1558       -1,
1559 
1560       2912,
1561 
1562       447,
1563 
1564       3186,
1565 
1566       351,
1567 
1568       2489,
1569 
1570       1774,
1571 
1572       3717,
1573 
1574       1492,
1575 
1576       2993,
1577 
1578       3183,
1579 
1580       3531,
1581       -1,
1582 
1583       2534,
1584 
1585       444,
1586 
1587       1435,
1588 
1589       1180,
1590 
1591       3180,
1592 
1593       1768,
1594 
1595       3711,
1596 
1597       1486,
1598 
1599       1702,
1600 
1601       3645,
1602 
1603       2528,
1604 
1605       565,
1606 
1607       3471,
1608 
1609       3087,
1610 
1611       934,
1612 
1613       255,
1614 
1615       556,
1616 
1617       1636,
1618 
1619       2612,
1620 
1621       3051,
1622 
1623       679,
1624 
1625       553,
1626 
1627       2522,
1628       -1,
1629 
1630       3159,
1631 
1632       432,
1633 
1634       2495,
1635 
1636       733,
1637 
1638       3032,
1639 
1640       1744,
1641 
1642       3687,
1643 
1644       1462,
1645       -1,
1646 
1647       691,
1648 
1649       2429,
1650 
1651       3029,
1652 
1653       1453,
1654 
1655       3156,
1656 
1657       3408,
1658       -1, -1,
1659 
1660       550,
1661 
1662       3026,
1663 
1664       2069,
1665 
1666       3147,
1667 
1668       2153,
1669 
1670       2498,
1671 
1672       421,
1673 
1674       2750,
1675 
1676       3138,
1677 
1678       2849,
1679 
1680       1723,
1681 
1682       3666,
1683       -1,
1684 
1685       3135,
1686       -1, -1,
1687 
1688       2138,
1689 
1690       1177,
1691 
1692       414,
1693 
1694       676,
1695 
1696       826,
1697 
1698       2834,
1699 
1700       1693,
1701 
1702       2135,
1703 
1704       1174,
1705 
1706       411,
1707 
1708       3990,
1709 
1710       3984,
1711 
1712       2831,
1713 
1714       1687,
1715 
1716       1861,
1717 
1718       685,
1719 
1720       795,
1721 
1722       3132,
1723       -1,
1724 
1725       2129,
1726 
1727       1168,
1728 
1729       408,
1730       -1,
1731 
1732       789,
1733 
1734       2825,
1735 
1736       1675,
1737       -1,
1738 
1739       2051,
1740 
1741       1087,
1742 
1743       3975,
1744 
1745       2480,
1746 
1747       2002,
1748 
1749       1032,
1750 
1751       300,
1752 
1753       1858,
1754 
1755       773,
1756 
1757       2705,
1758 
1759       405,
1760 
1761       2414,
1762       -1,
1763 
1764       1426,
1765 
1766       1666,
1767 
1768       4077,
1769 
1770       724,
1771 
1772       345,
1773 
1774       2477,
1775 
1776       74,
1777       -1,
1778 
1779       3258,
1780 
1781       3963,
1782 
1783       402,
1784 
1785       762,
1786       -1,
1787 
1788       2411,
1789 
1790       1660,
1791 
1792       1423,
1793 
1794       4035,
1795 
1796       547,
1797 
1798       3801,
1799 
1800       3483,
1801       -1,
1802 
1803       947,
1804 
1805       261,
1806 
1807       3273,
1808 
1809       755,
1810 
1811       2624,
1812 
1813       3480,
1814 
1815       1960,
1816 
1817       944,
1818 
1819       3876,
1820       -1,
1821 
1822       2327,
1823 
1824       2621,
1825       -1, -1,
1826 
1827       3438,
1828 
1829       1939,
1830 
1831       899,
1832 
1833       3453,
1834 
1835       3870,
1836 
1837       916,
1838 
1839       2579,
1840 
1841       3432,
1842 
1843       1936,
1844 
1845       2594,
1846 
1847       240,
1848 
1849       3093,
1850 
1851       2306,
1852       -1,
1853 
1854       3327,
1855 
1856       2321,
1857 
1858       3864,
1859 
1860       3420,
1861 
1862       1930,
1863 
1864       3798,
1865 
1866       234,
1867 
1868       1345,
1869 
1870       3636,
1871 
1872       2228,
1873 
1874       1267,
1875 
1876       493,
1877 
1878       3117,
1879 
1880       156,
1881 
1882       577,
1883       -1,
1884 
1885       3978,
1886 
1887       1339,
1888 
1889       3630,
1890 
1891       2225,
1892 
1893       1264,
1894 
1895       490,
1896       -1,
1897 
1898       150,
1899 
1900       3609,
1901 
1902       893,
1903 
1904       3840,
1905 
1906       1585,
1907       -1,
1908 
1909       132,
1910 
1911       3591,
1912 
1913       1846,
1914 
1915       3789,
1916 
1917       1564,
1918       -1,
1919 
1920       114,
1921 
1922       2891,
1923 
1924       1828,
1925 
1926       3771,
1927 
1928       1546,
1929       -1,
1930 
1931       884,
1932 
1933       3579,
1934       -1,
1935 
1936       688,
1937       -1, -1,
1938 
1939       102,
1940 
1941       3819,
1942 
1943       1816,
1944 
1945       3759,
1946 
1947       1534,
1948 
1949       3567,
1950       -1,
1951 
1952       1129,
1953       -1,
1954 
1955       3549,
1956 
1957       89,
1958 
1959       2786,
1960 
1961       1804,
1962 
1963       3747,
1964 
1965       1522,
1966 
1967       3561,
1968 
1969       1786,
1970 
1971       3729,
1972 
1973       1504,
1974 
1975       2570,
1976 
1977       83,
1978 
1979       1035,
1980 
1981       1798,
1982 
1983       3741,
1984 
1985       1516,
1986 
1987       2708,
1988 
1989       3474,
1990 
1991       1957,
1992 
1993       937,
1994 
1995       2558,
1996 
1997       3264,
1998 
1999       441,
2000 
2001       2615,
2002 
2003       2540,
2004       -1,
2005 
2006       1762,
2007 
2008       3705,
2009 
2010       1480,
2011       -1,
2012 
2013       2552,
2014 
2015       2132,
2016 
2017       1171,
2018 
2019       628,
2020       -1,
2021 
2022       3324,
2023 
2024       2828,
2025 
2026       1681,
2027 
2028       4080,
2029       -1,
2030 
2031       438,
2032       -1,
2033 
2034       3321,
2035 
2036       2516,
2037 
2038       1756,
2039 
2040       3699,
2041 
2042       1474,
2043 
2044       782,
2045 
2046       2005,
2047 
2048       1038,
2049 
2050       303,
2051 
2052       4047,
2053 
2054       435,
2055 
2056       2711,
2057 
2058       3315,
2059 
2060       3969,
2061 
2062       1750,
2063 
2064       3693,
2065 
2066       1468,
2067 
2068       3099,
2069       -1,
2070 
2071       2510,
2072 
2073       583,
2074       -1,
2075 
2076       4041,
2077       -1,
2078 
2079       3213,
2080       -1, -1,
2081 
2082       580,
2083 
2084       3966,
2085 
2086       4017,
2087       -1,
2088 
2089       2504,
2090 
2091       2126,
2092 
2093       1165,
2094 
2095       3999,
2096 
2097       3246,
2098 
2099       571,
2100 
2101       2822,
2102 
2103       1669,
2104 
2105       3993,
2106 
2107       2162,
2108 
2109       1201,
2110       -1,
2111 
2112       568,
2113       -1,
2114 
2115       2858,
2116 
2117       1741,
2118 
2119       3684,
2120 
2121       765,
2122 
2123       1198,
2124 
2125       429,
2126 
2127       2159,
2128       -1,
2129 
2130       562,
2131 
2132       1738,
2133 
2134       3681,
2135 
2136       2855,
2137 
2138       1735,
2139 
2140       3678,
2141 
2142       3987,
2143 
2144       3171,
2145       -1,
2146 
2147       3060,
2148       -1,
2149 
2150       842,
2151 
2152       1195,
2153 
2154       425,
2155 
2156       839,
2157 
2158       2156,
2159       -1,
2160 
2161       1732,
2162 
2163       3675,
2164 
2165       2150,
2166 
2167       2852,
2168 
2169       1729,
2170 
2171       3672,
2172 
2173       3150,
2174 
2175       2846,
2176 
2177       1717,
2178 
2179       3660,
2180 
2181       836,
2182       -1, -1, -1,
2183 
2184       833,
2185       -1,
2186 
2187       3144,
2188       -1,
2189 
2190       820,
2191 
2192       1186,
2193 
2194       417,
2195 
2196       2147,
2197 
2198       2453,
2199 
2200       49,
2201 
2202       1714,
2203 
2204       3657,
2205 
2206       2843,
2207 
2208       1711,
2209 
2210       3654,
2211       -1,
2212 
2213       2387,
2214       -1,
2215 
2216       1399,
2217       -1,
2218 
2219       816,
2220 
2221       2141,
2222       -1,
2223 
2224       813,
2225 
2226       3882,
2227       -1,
2228 
2229       2837,
2230 
2231       1699,
2232 
2233       3642,
2234 
2235       2123,
2236 
2237       1162,
2238 
2239       2066,
2240 
2241       631,
2242 
2243       360,
2244 
2245       2819,
2246 
2247       1663,
2248 
2249       2747,
2250 
2251       802,
2252       -1, -1, -1,
2253 
2254       2117,
2255 
2256       1156,
2257 
2258       3858,
2259 
2260       1456,
2261 
2262       758,
2263 
2264       2813,
2265 
2266       1651,
2267 
2268       2111,
2269 
2270       1150,
2271 
2272       396,
2273 
2274       3291,
2275 
2276       2426,
2277 
2278       2807,
2279 
2280       1639,
2281 
2282       2060,
2283 
2284       1096,
2285 
2286       745,
2287 
2288       1120,
2289 
2290       375,
2291 
2292       2741,
2293 
2294       3852,
2295 
2296       2777,
2297       -1,
2298 
2299       736,
2300 
2301       2099,
2302 
2303       1138,
2304 
2305       390,
2306 
2307       1444,
2308       -1,
2309 
2310       2795,
2311 
2312       1615,
2313 
2314       3168,
2315 
2316       3846,
2317 
2318       2093,
2319 
2320       1132,
2321 
2322       384,
2323 
2324       15,
2325 
2326       2723,
2327 
2328       2789,
2329 
2330       1603,
2331 
2332       2465,
2333 
2334       62,
2335 
2336       2738,
2337 
2338       2375,
2339 
2340       3318,
2341 
2342       1363,
2343 
2344       2120,
2345 
2346       1159,
2347 
2348       2399,
2349       -1,
2350 
2351       1411,
2352 
2353       2816,
2354 
2355       1657,
2356 
2357       4062,
2358 
2359       3468,
2360 
2361       1954,
2362 
2363       931,
2364 
2365       3462,
2366 
2367       1951,
2368 
2369       925,
2370 
2371       2609,
2372 
2373       3216,
2374 
2375       752,
2376 
2377       2603,
2378 
2379       3837,
2380 
2381       1894,
2382       -1,
2383 
2384       198,
2385 
2386       1891,
2387 
2388       1876,
2389 
2390       195,
2391 
2392       180,
2393 
2394       3834,
2395 
2396       1023,
2397       -1,
2398 
2399       3831,
2400 
2401       2270,
2402 
2403       2696,
2404 
2405       1303,
2406 
2407       2264,
2408 
2409       2258,
2410 
2411       1300,
2412 
2413       1285,
2414       -1, -1,
2415 
2416       2084,
2417 
2418       1108,
2419 
2420       3312,
2421 
2422       3828,
2423 
2424       1873,
2425 
2426       2765,
2427 
2428       177,
2429 
2430       3825,
2431 
2432       1870,
2433 
2434       2957,
2435 
2436       174,
2437 
2438       3813,
2439 
2440       2951,
2441 
2442       2921,
2443 
2444       3063,
2445 
2446       2252,
2447 
2448       1123,
2449 
2450       1282,
2451       -1,
2452 
2453       2246,
2454 
2455       2780,
2456 
2457       1279,
2458       -1,
2459 
2460       2105,
2461 
2462       1144,
2463       -1,
2464 
2465       670,
2466 
2467       3810,
2468 
2469       2801,
2470 
2471       1627,
2472 
2473       3807,
2474 
2475       3603,
2476 
2477       1909,
2478 
2479       2915,
2480 
2481       213,
2482       -1,
2483 
2484       126,
2485 
2486       2909,
2487 
2488       1840,
2489 
2490       3783,
2491 
2492       1558,
2493 
2494       3585,
2495 
2496       2075,
2497 
2498       1099,
2499 
2500       3795,
2501 
2502       1318,
2503 
2504       108,
2505 
2506       2756,
2507 
2508       1822,
2509 
2510       3765,
2511 
2512       1540,
2513 
2514       1189,
2515 
2516       3942,
2517 
2518       1183,
2519 
2520       24,
2521 
2522       2729,
2523 
2524       1720,
2525 
2526       3663,
2527 
2528       1708,
2529 
2530       3651,
2531       -1,
2532 
2533       2987,
2534       -1,
2535 
2536       1375,
2537 
2538       2114,
2539 
2540       1153,
2541 
2542       823,
2543 
2544       3402,
2545 
2546       810,
2547 
2548       2810,
2549 
2550       1645,
2551       -1,
2552 
2553       4074,
2554 
2555       2072,
2556 
2557       1696,
2558 
2559       3639,
2560 
2561       2102,
2562 
2563       1141,
2564 
2565       2753,
2566 
2567       4071,
2568 
2569       742,
2570 
2571       2798,
2572 
2573       1621,
2574 
2575       3309,
2576 
2577       798,
2578 
2579       3261,
2580       -1, -1,
2581 
2582       4029,
2583 
2584       2471,
2585 
2586       68,
2587 
2588       4044,
2589 
2590       2459,
2591 
2592       56,
2593 
2594       646,
2595 
2596       4023,
2597       -1,
2598 
2599       2405,
2600       -1,
2601 
2602       1417,
2603 
2604       2393,
2605 
2606       9,
2607 
2608       1405,
2609 
2610       21,
2611 
2612       2726,
2613 
2614       4011,
2615 
2616       2447,
2617 
2618       43,
2619 
2620       2369,
2621 
2622       3255,
2623 
2624       1357,
2625 
2626       3282,
2627 
2628       1369,
2629       -1,
2630 
2631       2381,
2632 
2633       3477,
2634 
2635       1393,
2636 
2637       940,
2638 
2639       258,
2640 
2641       3300,
2642 
2643       3906,
2644 
2645       2618,
2646 
2647       1117,
2648 
2649       3096,
2650 
2651       3627,
2652 
2653       3954,
2654 
2655       2774,
2656 
2657       529,
2658 
2659       3294,
2660 
2661       147,
2662 
2663       526,
2664 
2665       511,
2666 
2667       3525,
2668 
2669       1582,
2670 
2671       993,
2672       -1,
2673 
2674       2444,
2675 
2676       3465,
2677 
2678       2666,
2679 
2680       928,
2681 
2682       252,
2683 
2684       890,
2685 
2686       3447,
2687 
2688       2606,
2689 
2690       909,
2691       -1, -1,
2692 
2693       3090,
2694 
2695       2588,
2696 
2697       3126,
2698 
2699       3165,
2700 
2701       508,
2702       -1,
2703 
2704       3162,
2705 
2706       2315,
2707 
2708       505,
2709 
2710       3441,
2711 
2712       3435,
2713 
2714       902,
2715 
2716       896,
2717       -1, -1,
2718 
2719       2582,
2720 
2721       2576,
2722 
2723       1903,
2724 
2725       1900,
2726 
2727       207,
2728 
2729       204,
2730 
2731       2309,
2732 
2733       2303,
2734 
2735       1017,
2736 
2737       1888,
2738       -1,
2739 
2740       192,
2741 
2742       2690,
2743 
2744       4065,
2745       -1,
2746 
2747       1312,
2748 
2749       1309,
2750 
2751       544,
2752 
2753       3270,
2754 
2755       2108,
2756 
2757       1147,
2758 
2759       1882,
2760 
2761       1297,
2762 
2763       186,
2764 
2765       2804,
2766 
2767       1633,
2768 
2769       1011,
2770 
2771       700,
2772       -1, -1,
2773 
2774       2684,
2775 
2776       2975,
2777 
2778       2969,
2779 
2780       3285,
2781 
2782       1291,
2783 
2784       655,
2785 
2786       1005,
2787 
2788       3816,
2789 
2790       2945,
2791 
2792       3804,
2793 
2794       2678,
2795 
2796       3306,
2797 
2798       2081,
2799 
2800       1105,
2801 
2802       2078,
2803 
2804       1102,
2805       -1,
2806 
2807       2762,
2808 
2809       999,
2810 
2811       2759,
2812 
2813       2933,
2814 
2815       3372,
2816 
2817       2672,
2818 
2819       3,
2820       -1,
2821 
2822       3792,
2823 
2824       3114,
2825 
2826       3519,
2827 
2828       694,
2829 
2830       987,
2831 
2832       2363,
2833 
2834       3918,
2835 
2836       1351,
2837 
2838       2660,
2839 
2840       3513,
2841       -1,
2842 
2843       980,
2844       -1, -1, -1,
2845 
2846       2654,
2847 
2848       3129,
2849       -1, -1, -1, -1, -1, -1,
2850       -1, -1, -1, -1, -1, -1,
2851 
2852       649,
2853       -1, -1,
2854 
2855       3396,
2856       -1, -1, -1, -1, -1, -1,
2857 
2858       3303,
2859       -1, -1,
2860 
2861       3960,
2862 
2863       3105,
2864       -1,
2865 
2866       3948,
2867       -1, -1, -1, -1,
2868 
2869       3390,
2870       -1, -1,
2871 
2872       3900,
2873       -1,
2874 
2875       3912,
2876       -1, -1, -1,
2877 
2878       3936,
2879 
2880       3384,
2881       -1, -1, -1, -1, -1, -1,
2882       -1, -1, -1, -1, -1,
2883 
2884       3378,
2885       -1,
2886 
2887       3102,
2888       -1, -1, -1, -1, -1, -1,
2889       -1, -1,
2890 
2891       3366,
2892 
2893       3279,
2894       -1, -1, -1, -1, -1,
2895 
2896       3360,
2897       -1, -1, -1,
2898 
2899       538,
2900 
2901       535,
2902       -1, -1, -1,
2903 
2904       619,
2905       -1,
2906 
2907       523,
2908       -1, -1, -1, -1, -1, -1,
2909       -1, -1, -1, -1, -1,
2910 
2911       517,
2912       -1, -1, -1,
2913 
2914       616,
2915       -1, -1, -1, -1,
2916 
2917       3123,
2918       -1, -1, -1, -1,
2919 
2920       610,
2921       -1, -1, -1, -1, -1, -1,
2922       -1, -1, -1, -1, -1,
2923 
2924       604,
2925       -1, -1, -1, -1, -1, -1,
2926       -1, -1, -1, -1, -1, -1,
2927       -1, -1, -1, -1, -1, -1,
2928       -1, -1, -1, -1,
2929 
2930       4059,
2931       -1, -1,
2932 
2933       4053,
2934       -1,
2935 
2936       3894,
2937       -1, -1, -1, -1, -1, -1,
2938       -1, -1, -1, -1, -1, -1,
2939       -1, -1, -1, -1, -1, -1,
2940       -1, -1, -1, -1, -1, -1,
2941       -1, -1, -1, -1, -1, -1,
2942       -1, -1, -1, -1, -1, -1,
2943       -1,
2944 
2945       3111,
2946       -1,
2947 
2948       3108,
2949       -1, -1, -1, -1, -1, -1,
2950       -1, -1, -1, -1, -1, -1,
2951       -1, -1, -1, -1, -1, -1,
2952       -1, -1, -1, -1, -1, -1,
2953       -1, -1, -1, -1, -1, -1,
2954       -1, -1, -1, -1, -1, -1,
2955       -1, -1, -1, -1, -1, -1,
2956       -1, -1, -1, -1, -1, -1,
2957       -1, -1, -1, -1, -1, -1,
2958       -1, -1, -1, -1, -1, -1,
2959       -1, -1, -1, -1, -1, -1,
2960       -1, -1, -1, -1, -1, -1,
2961       -1, -1, -1, -1, -1, -1,
2962       -1, -1, -1, -1, -1, -1,
2963       -1, -1, -1, -1, -1, -1,
2964       -1, -1, -1, -1, -1, -1,
2965       -1, -1, -1, -1,
2966 
2967       4068,
2968       -1, -1, -1, -1, -1, -1,
2969       -1, -1, -1, -1, -1, -1,
2970       -1, -1, -1, -1, -1, -1,
2971       -1, -1, -1,
2972 
2973       4056,
2974       -1, -1, -1, -1,
2975 
2976       4038,
2977       -1, -1, -1, -1, -1, -1,
2978       -1, -1, -1, -1, -1, -1,
2979       -1,
2980 
2981       4032,
2982 
2983       4026
2984     };
2985 
2986 
2987     {
2988       int key = hash(codes);
2989 
2990       if (key <= MAX_HASH_VALUE)
2991         {
2992           int index = wordlist[key];
2993 
2994           if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds1 + index, 1) == 0)
2995             return index;
2996         }
2997     }
2998   return -1;
2999 }
3000