1 | // Scintilla source code edit control |
2 | /** @file CharacterCategoryMap.cxx |
3 | ** Returns the Unicode general category of a character. |
4 | ** Table automatically regenerated by scripts/GenerateCharacterCategory.py |
5 | ** Should only be rarely regenerated for new versions of Unicode. |
6 | ** Similar code to Lexilla's lexilla/lexlib/CharacterCategory.cxx but renamed |
7 | ** to avoid problems with builds that statically include both Scintilla and Lexilla. |
8 | **/ |
9 | // Copyright 2013 by Neil Hodgson <neilh@scintilla.org> |
10 | // The License.txt file describes the conditions under which this software may be distributed. |
11 | |
12 | #include <vector> |
13 | #include <algorithm> |
14 | #include <iterator> |
15 | |
16 | #include "CharacterCategoryMap.h" |
17 | |
18 | namespace Scintilla::Internal { |
19 | |
20 | namespace { |
21 | // Use an unnamed namespace to protect the declarations from name conflicts |
22 | |
23 | const int catRanges[] = { |
24 | //++Autogenerated -- start of section automatically generated |
25 | // Created with Python 3.9.4, Unicode 13.0.0 |
26 | 25, |
27 | 1046, |
28 | 1073, |
29 | 1171, |
30 | 1201, |
31 | 1293, |
32 | 1326, |
33 | 1361, |
34 | 1394, |
35 | 1425, |
36 | 1452, |
37 | 1489, |
38 | 1544, |
39 | 1873, |
40 | 1938, |
41 | 2033, |
42 | 2080, |
43 | 2925, |
44 | 2961, |
45 | 2990, |
46 | 3028, |
47 | 3051, |
48 | 3092, |
49 | 3105, |
50 | 3949, |
51 | 3986, |
52 | 4014, |
53 | 4050, |
54 | 4089, |
55 | 5142, |
56 | 5169, |
57 | 5203, |
58 | 5333, |
59 | 5361, |
60 | 5396, |
61 | 5429, |
62 | 5444, |
63 | 5487, |
64 | 5522, |
65 | 5562, |
66 | 5589, |
67 | 5620, |
68 | 5653, |
69 | 5682, |
70 | 5706, |
71 | 5780, |
72 | 5793, |
73 | 5841, |
74 | 5908, |
75 | 5930, |
76 | 5956, |
77 | 6000, |
78 | 6026, |
79 | 6129, |
80 | 6144, |
81 | 6898, |
82 | 6912, |
83 | 7137, |
84 | 7922, |
85 | 7937, |
86 | 8192, |
87 | 8225, |
88 | 8256, |
89 | 8289, |
90 | 8320, |
91 | 8353, |
92 | 8384, |
93 | 8417, |
94 | 8448, |
95 | 8481, |
96 | 8512, |
97 | 8545, |
98 | 8576, |
99 | 8609, |
100 | 8640, |
101 | 8673, |
102 | 8704, |
103 | 8737, |
104 | 8768, |
105 | 8801, |
106 | 8832, |
107 | 8865, |
108 | 8896, |
109 | 8929, |
110 | 8960, |
111 | 8993, |
112 | 9024, |
113 | 9057, |
114 | 9088, |
115 | 9121, |
116 | 9152, |
117 | 9185, |
118 | 9216, |
119 | 9249, |
120 | 9280, |
121 | 9313, |
122 | 9344, |
123 | 9377, |
124 | 9408, |
125 | 9441, |
126 | 9472, |
127 | 9505, |
128 | 9536, |
129 | 9569, |
130 | 9600, |
131 | 9633, |
132 | 9664, |
133 | 9697, |
134 | 9728, |
135 | 9761, |
136 | 9792, |
137 | 9825, |
138 | 9856, |
139 | 9889, |
140 | 9920, |
141 | 9953, |
142 | 10016, |
143 | 10049, |
144 | 10080, |
145 | 10113, |
146 | 10144, |
147 | 10177, |
148 | 10208, |
149 | 10241, |
150 | 10272, |
151 | 10305, |
152 | 10336, |
153 | 10369, |
154 | 10400, |
155 | 10433, |
156 | 10464, |
157 | 10497, |
158 | 10560, |
159 | 10593, |
160 | 10624, |
161 | 10657, |
162 | 10688, |
163 | 10721, |
164 | 10752, |
165 | 10785, |
166 | 10816, |
167 | 10849, |
168 | 10880, |
169 | 10913, |
170 | 10944, |
171 | 10977, |
172 | 11008, |
173 | 11041, |
174 | 11072, |
175 | 11105, |
176 | 11136, |
177 | 11169, |
178 | 11200, |
179 | 11233, |
180 | 11264, |
181 | 11297, |
182 | 11328, |
183 | 11361, |
184 | 11392, |
185 | 11425, |
186 | 11456, |
187 | 11489, |
188 | 11520, |
189 | 11553, |
190 | 11584, |
191 | 11617, |
192 | 11648, |
193 | 11681, |
194 | 11712, |
195 | 11745, |
196 | 11776, |
197 | 11809, |
198 | 11840, |
199 | 11873, |
200 | 11904, |
201 | 11937, |
202 | 11968, |
203 | 12001, |
204 | 12032, |
205 | 12097, |
206 | 12128, |
207 | 12161, |
208 | 12192, |
209 | 12225, |
210 | 12320, |
211 | 12385, |
212 | 12416, |
213 | 12449, |
214 | 12480, |
215 | 12545, |
216 | 12576, |
217 | 12673, |
218 | 12736, |
219 | 12865, |
220 | 12896, |
221 | 12961, |
222 | 12992, |
223 | 13089, |
224 | 13184, |
225 | 13249, |
226 | 13280, |
227 | 13345, |
228 | 13376, |
229 | 13409, |
230 | 13440, |
231 | 13473, |
232 | 13504, |
233 | 13569, |
234 | 13600, |
235 | 13633, |
236 | 13696, |
237 | 13729, |
238 | 13760, |
239 | 13825, |
240 | 13856, |
241 | 13953, |
242 | 13984, |
243 | 14017, |
244 | 14048, |
245 | 14113, |
246 | 14180, |
247 | 14208, |
248 | 14241, |
249 | 14340, |
250 | 14464, |
251 | 14498, |
252 | 14529, |
253 | 14560, |
254 | 14594, |
255 | 14625, |
256 | 14656, |
257 | 14690, |
258 | 14721, |
259 | 14752, |
260 | 14785, |
261 | 14816, |
262 | 14849, |
263 | 14880, |
264 | 14913, |
265 | 14944, |
266 | 14977, |
267 | 15008, |
268 | 15041, |
269 | 15072, |
270 | 15105, |
271 | 15136, |
272 | 15169, |
273 | 15200, |
274 | 15233, |
275 | 15296, |
276 | 15329, |
277 | 15360, |
278 | 15393, |
279 | 15424, |
280 | 15457, |
281 | 15488, |
282 | 15521, |
283 | 15552, |
284 | 15585, |
285 | 15616, |
286 | 15649, |
287 | 15680, |
288 | 15713, |
289 | 15744, |
290 | 15777, |
291 | 15808, |
292 | 15841, |
293 | 15904, |
294 | 15938, |
295 | 15969, |
296 | 16000, |
297 | 16033, |
298 | 16064, |
299 | 16161, |
300 | 16192, |
301 | 16225, |
302 | 16256, |
303 | 16289, |
304 | 16320, |
305 | 16353, |
306 | 16384, |
307 | 16417, |
308 | 16448, |
309 | 16481, |
310 | 16512, |
311 | 16545, |
312 | 16576, |
313 | 16609, |
314 | 16640, |
315 | 16673, |
316 | 16704, |
317 | 16737, |
318 | 16768, |
319 | 16801, |
320 | 16832, |
321 | 16865, |
322 | 16896, |
323 | 16929, |
324 | 16960, |
325 | 16993, |
326 | 17024, |
327 | 17057, |
328 | 17088, |
329 | 17121, |
330 | 17152, |
331 | 17185, |
332 | 17216, |
333 | 17249, |
334 | 17280, |
335 | 17313, |
336 | 17344, |
337 | 17377, |
338 | 17408, |
339 | 17441, |
340 | 17472, |
341 | 17505, |
342 | 17536, |
343 | 17569, |
344 | 17600, |
345 | 17633, |
346 | 17664, |
347 | 17697, |
348 | 17728, |
349 | 17761, |
350 | 17792, |
351 | 17825, |
352 | 17856, |
353 | 17889, |
354 | 17920, |
355 | 17953, |
356 | 17984, |
357 | 18017, |
358 | 18240, |
359 | 18305, |
360 | 18336, |
361 | 18401, |
362 | 18464, |
363 | 18497, |
364 | 18528, |
365 | 18657, |
366 | 18688, |
367 | 18721, |
368 | 18752, |
369 | 18785, |
370 | 18816, |
371 | 18849, |
372 | 18880, |
373 | 18913, |
374 | 21124, |
375 | 21153, |
376 | 22019, |
377 | 22612, |
378 | 22723, |
379 | 23124, |
380 | 23555, |
381 | 23732, |
382 | 23939, |
383 | 23988, |
384 | 24003, |
385 | 24052, |
386 | 24581, |
387 | 28160, |
388 | 28193, |
389 | 28224, |
390 | 28257, |
391 | 28291, |
392 | 28340, |
393 | 28352, |
394 | 28385, |
395 | 28445, |
396 | 28483, |
397 | 28513, |
398 | 28625, |
399 | 28640, |
400 | 28701, |
401 | 28820, |
402 | 28864, |
403 | 28913, |
404 | 28928, |
405 | 29053, |
406 | 29056, |
407 | 29117, |
408 | 29120, |
409 | 29185, |
410 | 29216, |
411 | 29789, |
412 | 29792, |
413 | 30081, |
414 | 31200, |
415 | 31233, |
416 | 31296, |
417 | 31393, |
418 | 31488, |
419 | 31521, |
420 | 31552, |
421 | 31585, |
422 | 31616, |
423 | 31649, |
424 | 31680, |
425 | 31713, |
426 | 31744, |
427 | 31777, |
428 | 31808, |
429 | 31841, |
430 | 31872, |
431 | 31905, |
432 | 31936, |
433 | 31969, |
434 | 32000, |
435 | 32033, |
436 | 32064, |
437 | 32097, |
438 | 32128, |
439 | 32161, |
440 | 32192, |
441 | 32225, |
442 | 32384, |
443 | 32417, |
444 | 32466, |
445 | 32480, |
446 | 32513, |
447 | 32544, |
448 | 32609, |
449 | 32672, |
450 | 34305, |
451 | 35840, |
452 | 35873, |
453 | 35904, |
454 | 35937, |
455 | 35968, |
456 | 36001, |
457 | 36032, |
458 | 36065, |
459 | 36096, |
460 | 36129, |
461 | 36160, |
462 | 36193, |
463 | 36224, |
464 | 36257, |
465 | 36288, |
466 | 36321, |
467 | 36352, |
468 | 36385, |
469 | 36416, |
470 | 36449, |
471 | 36480, |
472 | 36513, |
473 | 36544, |
474 | 36577, |
475 | 36608, |
476 | 36641, |
477 | 36672, |
478 | 36705, |
479 | 36736, |
480 | 36769, |
481 | 36800, |
482 | 36833, |
483 | 36864, |
484 | 36897, |
485 | 36949, |
486 | 36965, |
487 | 37127, |
488 | 37184, |
489 | 37217, |
490 | 37248, |
491 | 37281, |
492 | 37312, |
493 | 37345, |
494 | 37376, |
495 | 37409, |
496 | 37440, |
497 | 37473, |
498 | 37504, |
499 | 37537, |
500 | 37568, |
501 | 37601, |
502 | 37632, |
503 | 37665, |
504 | 37696, |
505 | 37729, |
506 | 37760, |
507 | 37793, |
508 | 37824, |
509 | 37857, |
510 | 37888, |
511 | 37921, |
512 | 37952, |
513 | 37985, |
514 | 38016, |
515 | 38049, |
516 | 38080, |
517 | 38113, |
518 | 38144, |
519 | 38177, |
520 | 38208, |
521 | 38241, |
522 | 38272, |
523 | 38305, |
524 | 38336, |
525 | 38369, |
526 | 38400, |
527 | 38433, |
528 | 38464, |
529 | 38497, |
530 | 38528, |
531 | 38561, |
532 | 38592, |
533 | 38625, |
534 | 38656, |
535 | 38689, |
536 | 38720, |
537 | 38753, |
538 | 38784, |
539 | 38817, |
540 | 38848, |
541 | 38881, |
542 | 38912, |
543 | 38977, |
544 | 39008, |
545 | 39041, |
546 | 39072, |
547 | 39105, |
548 | 39136, |
549 | 39169, |
550 | 39200, |
551 | 39233, |
552 | 39264, |
553 | 39297, |
554 | 39328, |
555 | 39361, |
556 | 39424, |
557 | 39457, |
558 | 39488, |
559 | 39521, |
560 | 39552, |
561 | 39585, |
562 | 39616, |
563 | 39649, |
564 | 39680, |
565 | 39713, |
566 | 39744, |
567 | 39777, |
568 | 39808, |
569 | 39841, |
570 | 39872, |
571 | 39905, |
572 | 39936, |
573 | 39969, |
574 | 40000, |
575 | 40033, |
576 | 40064, |
577 | 40097, |
578 | 40128, |
579 | 40161, |
580 | 40192, |
581 | 40225, |
582 | 40256, |
583 | 40289, |
584 | 40320, |
585 | 40353, |
586 | 40384, |
587 | 40417, |
588 | 40448, |
589 | 40481, |
590 | 40512, |
591 | 40545, |
592 | 40576, |
593 | 40609, |
594 | 40640, |
595 | 40673, |
596 | 40704, |
597 | 40737, |
598 | 40768, |
599 | 40801, |
600 | 40832, |
601 | 40865, |
602 | 40896, |
603 | 40929, |
604 | 40960, |
605 | 40993, |
606 | 41024, |
607 | 41057, |
608 | 41088, |
609 | 41121, |
610 | 41152, |
611 | 41185, |
612 | 41216, |
613 | 41249, |
614 | 41280, |
615 | 41313, |
616 | 41344, |
617 | 41377, |
618 | 41408, |
619 | 41441, |
620 | 41472, |
621 | 41505, |
622 | 41536, |
623 | 41569, |
624 | 41600, |
625 | 41633, |
626 | 41664, |
627 | 41697, |
628 | 41728, |
629 | 41761, |
630 | 41792, |
631 | 41825, |
632 | 41856, |
633 | 41889, |
634 | 41920, |
635 | 41953, |
636 | 41984, |
637 | 42017, |
638 | 42048, |
639 | 42081, |
640 | 42112, |
641 | 42145, |
642 | 42176, |
643 | 42209, |
644 | 42240, |
645 | 42273, |
646 | 42304, |
647 | 42337, |
648 | 42368, |
649 | 42401, |
650 | 42432, |
651 | 42465, |
652 | 42525, |
653 | 42528, |
654 | 43773, |
655 | 43811, |
656 | 43857, |
657 | 44033, |
658 | 45361, |
659 | 45388, |
660 | 45437, |
661 | 45493, |
662 | 45555, |
663 | 45597, |
664 | 45605, |
665 | 47052, |
666 | 47077, |
667 | 47121, |
668 | 47141, |
669 | 47217, |
670 | 47237, |
671 | 47313, |
672 | 47333, |
673 | 47389, |
674 | 47620, |
675 | 48509, |
676 | 48612, |
677 | 48753, |
678 | 48829, |
679 | 49178, |
680 | 49362, |
681 | 49457, |
682 | 49523, |
683 | 49553, |
684 | 49621, |
685 | 49669, |
686 | 50033, |
687 | 50074, |
688 | 50109, |
689 | 50129, |
690 | 50180, |
691 | 51203, |
692 | 51236, |
693 | 51557, |
694 | 52232, |
695 | 52561, |
696 | 52676, |
697 | 52741, |
698 | 52772, |
699 | 55953, |
700 | 55972, |
701 | 56005, |
702 | 56250, |
703 | 56277, |
704 | 56293, |
705 | 56483, |
706 | 56549, |
707 | 56629, |
708 | 56645, |
709 | 56772, |
710 | 56840, |
711 | 57156, |
712 | 57269, |
713 | 57316, |
714 | 57361, |
715 | 57821, |
716 | 57850, |
717 | 57860, |
718 | 57893, |
719 | 57924, |
720 | 58885, |
721 | 59773, |
722 | 59812, |
723 | 62661, |
724 | 63012, |
725 | 63069, |
726 | 63496, |
727 | 63812, |
728 | 64869, |
729 | 65155, |
730 | 65237, |
731 | 65265, |
732 | 65347, |
733 | 65405, |
734 | 65445, |
735 | 65491, |
736 | 65540, |
737 | 66245, |
738 | 66371, |
739 | 66405, |
740 | 66691, |
741 | 66725, |
742 | 66819, |
743 | 66853, |
744 | 67037, |
745 | 67089, |
746 | 67581, |
747 | 67588, |
748 | 68389, |
749 | 68509, |
750 | 68561, |
751 | 68605, |
752 | 68612, |
753 | 68989, |
754 | 70660, |
755 | 71357, |
756 | 71364, |
757 | 71965, |
758 | 72293, |
759 | 72794, |
760 | 72805, |
761 | 73830, |
762 | 73860, |
763 | 75589, |
764 | 75622, |
765 | 75653, |
766 | 75684, |
767 | 75718, |
768 | 75813, |
769 | 76070, |
770 | 76197, |
771 | 76230, |
772 | 76292, |
773 | 76325, |
774 | 76548, |
775 | 76869, |
776 | 76945, |
777 | 77000, |
778 | 77329, |
779 | 77347, |
780 | 77380, |
781 | 77861, |
782 | 77894, |
783 | 77981, |
784 | 77988, |
785 | 78269, |
786 | 78308, |
787 | 78397, |
788 | 78436, |
789 | 79165, |
790 | 79172, |
791 | 79421, |
792 | 79428, |
793 | 79485, |
794 | 79556, |
795 | 79709, |
796 | 79749, |
797 | 79780, |
798 | 79814, |
799 | 79909, |
800 | 80061, |
801 | 80102, |
802 | 80189, |
803 | 80230, |
804 | 80293, |
805 | 80324, |
806 | 80381, |
807 | 80614, |
808 | 80669, |
809 | 80772, |
810 | 80861, |
811 | 80868, |
812 | 80965, |
813 | 81053, |
814 | 81096, |
815 | 81412, |
816 | 81491, |
817 | 81546, |
818 | 81749, |
819 | 81779, |
820 | 81796, |
821 | 81841, |
822 | 81861, |
823 | 81917, |
824 | 81957, |
825 | 82022, |
826 | 82077, |
827 | 82084, |
828 | 82301, |
829 | 82404, |
830 | 82493, |
831 | 82532, |
832 | 83261, |
833 | 83268, |
834 | 83517, |
835 | 83524, |
836 | 83613, |
837 | 83620, |
838 | 83709, |
839 | 83716, |
840 | 83805, |
841 | 83845, |
842 | 83901, |
843 | 83910, |
844 | 84005, |
845 | 84093, |
846 | 84197, |
847 | 84285, |
848 | 84325, |
849 | 84445, |
850 | 84517, |
851 | 84573, |
852 | 84772, |
853 | 84925, |
854 | 84932, |
855 | 84989, |
856 | 85192, |
857 | 85509, |
858 | 85572, |
859 | 85669, |
860 | 85713, |
861 | 85757, |
862 | 86053, |
863 | 86118, |
864 | 86173, |
865 | 86180, |
866 | 86493, |
867 | 86500, |
868 | 86621, |
869 | 86628, |
870 | 87357, |
871 | 87364, |
872 | 87613, |
873 | 87620, |
874 | 87709, |
875 | 87716, |
876 | 87901, |
877 | 87941, |
878 | 87972, |
879 | 88006, |
880 | 88101, |
881 | 88285, |
882 | 88293, |
883 | 88358, |
884 | 88413, |
885 | 88422, |
886 | 88485, |
887 | 88541, |
888 | 88580, |
889 | 88637, |
890 | 89092, |
891 | 89157, |
892 | 89245, |
893 | 89288, |
894 | 89617, |
895 | 89651, |
896 | 89693, |
897 | 89892, |
898 | 89925, |
899 | 90141, |
900 | 90149, |
901 | 90182, |
902 | 90269, |
903 | 90276, |
904 | 90557, |
905 | 90596, |
906 | 90685, |
907 | 90724, |
908 | 91453, |
909 | 91460, |
910 | 91709, |
911 | 91716, |
912 | 91805, |
913 | 91812, |
914 | 91997, |
915 | 92037, |
916 | 92068, |
917 | 92102, |
918 | 92133, |
919 | 92166, |
920 | 92197, |
921 | 92349, |
922 | 92390, |
923 | 92477, |
924 | 92518, |
925 | 92581, |
926 | 92637, |
927 | 92837, |
928 | 92902, |
929 | 92957, |
930 | 93060, |
931 | 93149, |
932 | 93156, |
933 | 93253, |
934 | 93341, |
935 | 93384, |
936 | 93717, |
937 | 93732, |
938 | 93770, |
939 | 93981, |
940 | 94277, |
941 | 94308, |
942 | 94365, |
943 | 94372, |
944 | 94589, |
945 | 94660, |
946 | 94781, |
947 | 94788, |
948 | 94941, |
949 | 95012, |
950 | 95101, |
951 | 95108, |
952 | 95165, |
953 | 95172, |
954 | 95261, |
955 | 95332, |
956 | 95421, |
957 | 95492, |
958 | 95613, |
959 | 95684, |
960 | 96093, |
961 | 96198, |
962 | 96261, |
963 | 96294, |
964 | 96381, |
965 | 96454, |
966 | 96573, |
967 | 96582, |
968 | 96677, |
969 | 96733, |
970 | 96772, |
971 | 96829, |
972 | 96998, |
973 | 97053, |
974 | 97480, |
975 | 97802, |
976 | 97909, |
977 | 98099, |
978 | 98133, |
979 | 98173, |
980 | 98309, |
981 | 98342, |
982 | 98437, |
983 | 98468, |
984 | 98749, |
985 | 98756, |
986 | 98877, |
987 | 98884, |
988 | 99645, |
989 | 99652, |
990 | 100189, |
991 | 100260, |
992 | 100293, |
993 | 100390, |
994 | 100541, |
995 | 100549, |
996 | 100669, |
997 | 100677, |
998 | 100829, |
999 | 101029, |
1000 | 101117, |
1001 | 101124, |
1002 | 101245, |
1003 | 101380, |
1004 | 101445, |
1005 | 101533, |
1006 | 101576, |
1007 | 101917, |
1008 | 102129, |
1009 | 102154, |
1010 | 102389, |
1011 | 102404, |
1012 | 102437, |
1013 | 102470, |
1014 | 102545, |
1015 | 102564, |
1016 | 102845, |
1017 | 102852, |
1018 | 102973, |
1019 | 102980, |
1020 | 103741, |
1021 | 103748, |
1022 | 104093, |
1023 | 104100, |
1024 | 104285, |
1025 | 104325, |
1026 | 104356, |
1027 | 104390, |
1028 | 104421, |
1029 | 104454, |
1030 | 104637, |
1031 | 104645, |
1032 | 104678, |
1033 | 104765, |
1034 | 104774, |
1035 | 104837, |
1036 | 104925, |
1037 | 105126, |
1038 | 105213, |
1039 | 105412, |
1040 | 105469, |
1041 | 105476, |
1042 | 105541, |
1043 | 105629, |
1044 | 105672, |
1045 | 106013, |
1046 | 106020, |
1047 | 106109, |
1048 | 106501, |
1049 | 106566, |
1050 | 106628, |
1051 | 106941, |
1052 | 106948, |
1053 | 107069, |
1054 | 107076, |
1055 | 108389, |
1056 | 108452, |
1057 | 108486, |
1058 | 108581, |
1059 | 108733, |
1060 | 108742, |
1061 | 108861, |
1062 | 108870, |
1063 | 108965, |
1064 | 108996, |
1065 | 109045, |
1066 | 109085, |
1067 | 109188, |
1068 | 109286, |
1069 | 109322, |
1070 | 109540, |
1071 | 109637, |
1072 | 109725, |
1073 | 109768, |
1074 | 110090, |
1075 | 110389, |
1076 | 110404, |
1077 | 110621, |
1078 | 110629, |
1079 | 110662, |
1080 | 110749, |
1081 | 110756, |
1082 | 111357, |
1083 | 111428, |
1084 | 112221, |
1085 | 112228, |
1086 | 112541, |
1087 | 112548, |
1088 | 112605, |
1089 | 112644, |
1090 | 112893, |
1091 | 112965, |
1092 | 113021, |
1093 | 113126, |
1094 | 113221, |
1095 | 113341, |
1096 | 113349, |
1097 | 113405, |
1098 | 113414, |
1099 | 113693, |
1100 | 113864, |
1101 | 114205, |
1102 | 114246, |
1103 | 114321, |
1104 | 114365, |
1105 | 114724, |
1106 | 116261, |
1107 | 116292, |
1108 | 116357, |
1109 | 116605, |
1110 | 116723, |
1111 | 116740, |
1112 | 116931, |
1113 | 116965, |
1114 | 117233, |
1115 | 117256, |
1116 | 117585, |
1117 | 117661, |
1118 | 118820, |
1119 | 118909, |
1120 | 118916, |
1121 | 118973, |
1122 | 118980, |
1123 | 119165, |
1124 | 119172, |
1125 | 119965, |
1126 | 119972, |
1127 | 120029, |
1128 | 120036, |
1129 | 120357, |
1130 | 120388, |
1131 | 120453, |
1132 | 120740, |
1133 | 120797, |
1134 | 120836, |
1135 | 121021, |
1136 | 121027, |
1137 | 121085, |
1138 | 121093, |
1139 | 121309, |
1140 | 121352, |
1141 | 121693, |
1142 | 121732, |
1143 | 121885, |
1144 | 122884, |
1145 | 122933, |
1146 | 123025, |
1147 | 123509, |
1148 | 123537, |
1149 | 123573, |
1150 | 123653, |
1151 | 123733, |
1152 | 123912, |
1153 | 124234, |
1154 | 124565, |
1155 | 124581, |
1156 | 124629, |
1157 | 124645, |
1158 | 124693, |
1159 | 124709, |
1160 | 124749, |
1161 | 124782, |
1162 | 124813, |
1163 | 124846, |
1164 | 124870, |
1165 | 124932, |
1166 | 125213, |
1167 | 125220, |
1168 | 126397, |
1169 | 126501, |
1170 | 126950, |
1171 | 126981, |
1172 | 127153, |
1173 | 127173, |
1174 | 127236, |
1175 | 127397, |
1176 | 127773, |
1177 | 127781, |
1178 | 128957, |
1179 | 128981, |
1180 | 129221, |
1181 | 129269, |
1182 | 129469, |
1183 | 129493, |
1184 | 129553, |
1185 | 129717, |
1186 | 129841, |
1187 | 129917, |
1188 | 131076, |
1189 | 132454, |
1190 | 132517, |
1191 | 132646, |
1192 | 132677, |
1193 | 132870, |
1194 | 132901, |
1195 | 132966, |
1196 | 133029, |
1197 | 133092, |
1198 | 133128, |
1199 | 133457, |
1200 | 133636, |
1201 | 133830, |
1202 | 133893, |
1203 | 133956, |
1204 | 134085, |
1205 | 134180, |
1206 | 134214, |
1207 | 134308, |
1208 | 134374, |
1209 | 134596, |
1210 | 134693, |
1211 | 134820, |
1212 | 135237, |
1213 | 135270, |
1214 | 135333, |
1215 | 135398, |
1216 | 135589, |
1217 | 135620, |
1218 | 135654, |
1219 | 135688, |
1220 | 136006, |
1221 | 136101, |
1222 | 136149, |
1223 | 136192, |
1224 | 137437, |
1225 | 137440, |
1226 | 137501, |
1227 | 137632, |
1228 | 137693, |
1229 | 137729, |
1230 | 139121, |
1231 | 139139, |
1232 | 139169, |
1233 | 139268, |
1234 | 149821, |
1235 | 149828, |
1236 | 149981, |
1237 | 150020, |
1238 | 150269, |
1239 | 150276, |
1240 | 150333, |
1241 | 150340, |
1242 | 150493, |
1243 | 150532, |
1244 | 151869, |
1245 | 151876, |
1246 | 152029, |
1247 | 152068, |
1248 | 153149, |
1249 | 153156, |
1250 | 153309, |
1251 | 153348, |
1252 | 153597, |
1253 | 153604, |
1254 | 153661, |
1255 | 153668, |
1256 | 153821, |
1257 | 153860, |
1258 | 154365, |
1259 | 154372, |
1260 | 156221, |
1261 | 156228, |
1262 | 156381, |
1263 | 156420, |
1264 | 158589, |
1265 | 158629, |
1266 | 158737, |
1267 | 159018, |
1268 | 159677, |
1269 | 159748, |
1270 | 160277, |
1271 | 160605, |
1272 | 160768, |
1273 | 163549, |
1274 | 163585, |
1275 | 163805, |
1276 | 163852, |
1277 | 163876, |
1278 | 183733, |
1279 | 183761, |
1280 | 183780, |
1281 | 184342, |
1282 | 184356, |
1283 | 185197, |
1284 | 185230, |
1285 | 185277, |
1286 | 185348, |
1287 | 187761, |
1288 | 187849, |
1289 | 187940, |
1290 | 188221, |
1291 | 188420, |
1292 | 188861, |
1293 | 188868, |
1294 | 188997, |
1295 | 189117, |
1296 | 189444, |
1297 | 190021, |
1298 | 190129, |
1299 | 190205, |
1300 | 190468, |
1301 | 191045, |
1302 | 191133, |
1303 | 191492, |
1304 | 191933, |
1305 | 191940, |
1306 | 192061, |
1307 | 192069, |
1308 | 192157, |
1309 | 192516, |
1310 | 194181, |
1311 | 194246, |
1312 | 194277, |
1313 | 194502, |
1314 | 194757, |
1315 | 194790, |
1316 | 194853, |
1317 | 195217, |
1318 | 195299, |
1319 | 195345, |
1320 | 195443, |
1321 | 195460, |
1322 | 195493, |
1323 | 195549, |
1324 | 195592, |
1325 | 195933, |
1326 | 196106, |
1327 | 196445, |
1328 | 196625, |
1329 | 196812, |
1330 | 196849, |
1331 | 196965, |
1332 | 197082, |
1333 | 197117, |
1334 | 197128, |
1335 | 197469, |
1336 | 197636, |
1337 | 198755, |
1338 | 198788, |
1339 | 200509, |
1340 | 200708, |
1341 | 200869, |
1342 | 200932, |
1343 | 202021, |
1344 | 202052, |
1345 | 202109, |
1346 | 202244, |
1347 | 204509, |
1348 | 204804, |
1349 | 205821, |
1350 | 205829, |
1351 | 205926, |
1352 | 206053, |
1353 | 206118, |
1354 | 206237, |
1355 | 206342, |
1356 | 206405, |
1357 | 206438, |
1358 | 206629, |
1359 | 206749, |
1360 | 206869, |
1361 | 206909, |
1362 | 206993, |
1363 | 207048, |
1364 | 207364, |
1365 | 208349, |
1366 | 208388, |
1367 | 208573, |
1368 | 208900, |
1369 | 210333, |
1370 | 210436, |
1371 | 211293, |
1372 | 211464, |
1373 | 211786, |
1374 | 211837, |
1375 | 211925, |
1376 | 212996, |
1377 | 213733, |
1378 | 213798, |
1379 | 213861, |
1380 | 213917, |
1381 | 213969, |
1382 | 214020, |
1383 | 215718, |
1384 | 215749, |
1385 | 215782, |
1386 | 215813, |
1387 | 216061, |
1388 | 216069, |
1389 | 216102, |
1390 | 216133, |
1391 | 216166, |
1392 | 216229, |
1393 | 216486, |
1394 | 216677, |
1395 | 217021, |
1396 | 217061, |
1397 | 217096, |
1398 | 217437, |
1399 | 217608, |
1400 | 217949, |
1401 | 218129, |
1402 | 218339, |
1403 | 218385, |
1404 | 218589, |
1405 | 218629, |
1406 | 219079, |
1407 | 219109, |
1408 | 219197, |
1409 | 221189, |
1410 | 221318, |
1411 | 221348, |
1412 | 222853, |
1413 | 222886, |
1414 | 222917, |
1415 | 223078, |
1416 | 223109, |
1417 | 223142, |
1418 | 223301, |
1419 | 223334, |
1420 | 223396, |
1421 | 223645, |
1422 | 223752, |
1423 | 224081, |
1424 | 224309, |
1425 | 224613, |
1426 | 224917, |
1427 | 225213, |
1428 | 225285, |
1429 | 225350, |
1430 | 225380, |
1431 | 226342, |
1432 | 226373, |
1433 | 226502, |
1434 | 226565, |
1435 | 226630, |
1436 | 226661, |
1437 | 226756, |
1438 | 226824, |
1439 | 227140, |
1440 | 228549, |
1441 | 228582, |
1442 | 228613, |
1443 | 228678, |
1444 | 228773, |
1445 | 228806, |
1446 | 228837, |
1447 | 228934, |
1448 | 229021, |
1449 | 229265, |
1450 | 229380, |
1451 | 230534, |
1452 | 230789, |
1453 | 231046, |
1454 | 231109, |
1455 | 231197, |
1456 | 231281, |
1457 | 231432, |
1458 | 231773, |
1459 | 231844, |
1460 | 231944, |
1461 | 232260, |
1462 | 233219, |
1463 | 233425, |
1464 | 233473, |
1465 | 233789, |
1466 | 233984, |
1467 | 235389, |
1468 | 235424, |
1469 | 235537, |
1470 | 235805, |
1471 | 236037, |
1472 | 236145, |
1473 | 236165, |
1474 | 236582, |
1475 | 236613, |
1476 | 236836, |
1477 | 236965, |
1478 | 236996, |
1479 | 237189, |
1480 | 237220, |
1481 | 237286, |
1482 | 237317, |
1483 | 237380, |
1484 | 237437, |
1485 | 237569, |
1486 | 238979, |
1487 | 240993, |
1488 | 241411, |
1489 | 241441, |
1490 | 242531, |
1491 | 243717, |
1492 | 245597, |
1493 | 245605, |
1494 | 245760, |
1495 | 245793, |
1496 | 245824, |
1497 | 245857, |
1498 | 245888, |
1499 | 245921, |
1500 | 245952, |
1501 | 245985, |
1502 | 246016, |
1503 | 246049, |
1504 | 246080, |
1505 | 246113, |
1506 | 246144, |
1507 | 246177, |
1508 | 246208, |
1509 | 246241, |
1510 | 246272, |
1511 | 246305, |
1512 | 246336, |
1513 | 246369, |
1514 | 246400, |
1515 | 246433, |
1516 | 246464, |
1517 | 246497, |
1518 | 246528, |
1519 | 246561, |
1520 | 246592, |
1521 | 246625, |
1522 | 246656, |
1523 | 246689, |
1524 | 246720, |
1525 | 246753, |
1526 | 246784, |
1527 | 246817, |
1528 | 246848, |
1529 | 246881, |
1530 | 246912, |
1531 | 246945, |
1532 | 246976, |
1533 | 247009, |
1534 | 247040, |
1535 | 247073, |
1536 | 247104, |
1537 | 247137, |
1538 | 247168, |
1539 | 247201, |
1540 | 247232, |
1541 | 247265, |
1542 | 247296, |
1543 | 247329, |
1544 | 247360, |
1545 | 247393, |
1546 | 247424, |
1547 | 247457, |
1548 | 247488, |
1549 | 247521, |
1550 | 247552, |
1551 | 247585, |
1552 | 247616, |
1553 | 247649, |
1554 | 247680, |
1555 | 247713, |
1556 | 247744, |
1557 | 247777, |
1558 | 247808, |
1559 | 247841, |
1560 | 247872, |
1561 | 247905, |
1562 | 247936, |
1563 | 247969, |
1564 | 248000, |
1565 | 248033, |
1566 | 248064, |
1567 | 248097, |
1568 | 248128, |
1569 | 248161, |
1570 | 248192, |
1571 | 248225, |
1572 | 248256, |
1573 | 248289, |
1574 | 248320, |
1575 | 248353, |
1576 | 248384, |
1577 | 248417, |
1578 | 248448, |
1579 | 248481, |
1580 | 248512, |
1581 | 248545, |
1582 | 248576, |
1583 | 248609, |
1584 | 248640, |
1585 | 248673, |
1586 | 248704, |
1587 | 248737, |
1588 | 248768, |
1589 | 248801, |
1590 | 248832, |
1591 | 248865, |
1592 | 248896, |
1593 | 248929, |
1594 | 248960, |
1595 | 248993, |
1596 | 249024, |
1597 | 249057, |
1598 | 249088, |
1599 | 249121, |
1600 | 249152, |
1601 | 249185, |
1602 | 249216, |
1603 | 249249, |
1604 | 249280, |
1605 | 249313, |
1606 | 249344, |
1607 | 249377, |
1608 | 249408, |
1609 | 249441, |
1610 | 249472, |
1611 | 249505, |
1612 | 249536, |
1613 | 249569, |
1614 | 249600, |
1615 | 249633, |
1616 | 249664, |
1617 | 249697, |
1618 | 249728, |
1619 | 249761, |
1620 | 249792, |
1621 | 249825, |
1622 | 249856, |
1623 | 249889, |
1624 | 249920, |
1625 | 249953, |
1626 | 249984, |
1627 | 250017, |
1628 | 250048, |
1629 | 250081, |
1630 | 250112, |
1631 | 250145, |
1632 | 250176, |
1633 | 250209, |
1634 | 250240, |
1635 | 250273, |
1636 | 250304, |
1637 | 250337, |
1638 | 250368, |
1639 | 250401, |
1640 | 250432, |
1641 | 250465, |
1642 | 250496, |
1643 | 250529, |
1644 | 250816, |
1645 | 250849, |
1646 | 250880, |
1647 | 250913, |
1648 | 250944, |
1649 | 250977, |
1650 | 251008, |
1651 | 251041, |
1652 | 251072, |
1653 | 251105, |
1654 | 251136, |
1655 | 251169, |
1656 | 251200, |
1657 | 251233, |
1658 | 251264, |
1659 | 251297, |
1660 | 251328, |
1661 | 251361, |
1662 | 251392, |
1663 | 251425, |
1664 | 251456, |
1665 | 251489, |
1666 | 251520, |
1667 | 251553, |
1668 | 251584, |
1669 | 251617, |
1670 | 251648, |
1671 | 251681, |
1672 | 251712, |
1673 | 251745, |
1674 | 251776, |
1675 | 251809, |
1676 | 251840, |
1677 | 251873, |
1678 | 251904, |
1679 | 251937, |
1680 | 251968, |
1681 | 252001, |
1682 | 252032, |
1683 | 252065, |
1684 | 252096, |
1685 | 252129, |
1686 | 252160, |
1687 | 252193, |
1688 | 252224, |
1689 | 252257, |
1690 | 252288, |
1691 | 252321, |
1692 | 252352, |
1693 | 252385, |
1694 | 252416, |
1695 | 252449, |
1696 | 252480, |
1697 | 252513, |
1698 | 252544, |
1699 | 252577, |
1700 | 252608, |
1701 | 252641, |
1702 | 252672, |
1703 | 252705, |
1704 | 252736, |
1705 | 252769, |
1706 | 252800, |
1707 | 252833, |
1708 | 252864, |
1709 | 252897, |
1710 | 252928, |
1711 | 252961, |
1712 | 252992, |
1713 | 253025, |
1714 | 253056, |
1715 | 253089, |
1716 | 253120, |
1717 | 253153, |
1718 | 253184, |
1719 | 253217, |
1720 | 253248, |
1721 | 253281, |
1722 | 253312, |
1723 | 253345, |
1724 | 253376, |
1725 | 253409, |
1726 | 253440, |
1727 | 253473, |
1728 | 253504, |
1729 | 253537, |
1730 | 253568, |
1731 | 253601, |
1732 | 253632, |
1733 | 253665, |
1734 | 253696, |
1735 | 253729, |
1736 | 253760, |
1737 | 253793, |
1738 | 253824, |
1739 | 253857, |
1740 | 253888, |
1741 | 253921, |
1742 | 254208, |
1743 | 254465, |
1744 | 254685, |
1745 | 254720, |
1746 | 254941, |
1747 | 254977, |
1748 | 255232, |
1749 | 255489, |
1750 | 255744, |
1751 | 256001, |
1752 | 256221, |
1753 | 256256, |
1754 | 256477, |
1755 | 256513, |
1756 | 256797, |
1757 | 256800, |
1758 | 256861, |
1759 | 256864, |
1760 | 256925, |
1761 | 256928, |
1762 | 256989, |
1763 | 256992, |
1764 | 257025, |
1765 | 257280, |
1766 | 257537, |
1767 | 258013, |
1768 | 258049, |
1769 | 258306, |
1770 | 258561, |
1771 | 258818, |
1772 | 259073, |
1773 | 259330, |
1774 | 259585, |
1775 | 259773, |
1776 | 259777, |
1777 | 259840, |
1778 | 259970, |
1779 | 260020, |
1780 | 260033, |
1781 | 260084, |
1782 | 260161, |
1783 | 260285, |
1784 | 260289, |
1785 | 260352, |
1786 | 260482, |
1787 | 260532, |
1788 | 260609, |
1789 | 260765, |
1790 | 260801, |
1791 | 260864, |
1792 | 261021, |
1793 | 261044, |
1794 | 261121, |
1795 | 261376, |
1796 | 261556, |
1797 | 261661, |
1798 | 261697, |
1799 | 261821, |
1800 | 261825, |
1801 | 261888, |
1802 | 262018, |
1803 | 262068, |
1804 | 262141, |
1805 | 262166, |
1806 | 262522, |
1807 | 262668, |
1808 | 262865, |
1809 | 262927, |
1810 | 262960, |
1811 | 262989, |
1812 | 263023, |
1813 | 263088, |
1814 | 263117, |
1815 | 263151, |
1816 | 263185, |
1817 | 263447, |
1818 | 263480, |
1819 | 263514, |
1820 | 263670, |
1821 | 263697, |
1822 | 263983, |
1823 | 264016, |
1824 | 264049, |
1825 | 264171, |
1826 | 264241, |
1827 | 264338, |
1828 | 264365, |
1829 | 264398, |
1830 | 264433, |
1831 | 264786, |
1832 | 264817, |
1833 | 264843, |
1834 | 264881, |
1835 | 265206, |
1836 | 265242, |
1837 | 265405, |
1838 | 265434, |
1839 | 265738, |
1840 | 265763, |
1841 | 265821, |
1842 | 265866, |
1843 | 266066, |
1844 | 266157, |
1845 | 266190, |
1846 | 266211, |
1847 | 266250, |
1848 | 266578, |
1849 | 266669, |
1850 | 266702, |
1851 | 266749, |
1852 | 266755, |
1853 | 267197, |
1854 | 267283, |
1855 | 268317, |
1856 | 268805, |
1857 | 269223, |
1858 | 269349, |
1859 | 269383, |
1860 | 269477, |
1861 | 269885, |
1862 | 270357, |
1863 | 270400, |
1864 | 270453, |
1865 | 270560, |
1866 | 270613, |
1867 | 270657, |
1868 | 270688, |
1869 | 270785, |
1870 | 270848, |
1871 | 270945, |
1872 | 270997, |
1873 | 271008, |
1874 | 271061, |
1875 | 271122, |
1876 | 271136, |
1877 | 271317, |
1878 | 271488, |
1879 | 271541, |
1880 | 271552, |
1881 | 271605, |
1882 | 271616, |
1883 | 271669, |
1884 | 271680, |
1885 | 271829, |
1886 | 271841, |
1887 | 271872, |
1888 | 272001, |
1889 | 272036, |
1890 | 272161, |
1891 | 272213, |
1892 | 272257, |
1893 | 272320, |
1894 | 272402, |
1895 | 272544, |
1896 | 272577, |
1897 | 272725, |
1898 | 272754, |
1899 | 272789, |
1900 | 272833, |
1901 | 272885, |
1902 | 272906, |
1903 | 273417, |
1904 | 274528, |
1905 | 274561, |
1906 | 274601, |
1907 | 274730, |
1908 | 274773, |
1909 | 274845, |
1910 | 274962, |
1911 | 275125, |
1912 | 275282, |
1913 | 275349, |
1914 | 275474, |
1915 | 275509, |
1916 | 275570, |
1917 | 275605, |
1918 | 275666, |
1919 | 275701, |
1920 | 275922, |
1921 | 275957, |
1922 | 276946, |
1923 | 277013, |
1924 | 277074, |
1925 | 277109, |
1926 | 277138, |
1927 | 277173, |
1928 | 278162, |
1929 | 286741, |
1930 | 286989, |
1931 | 287022, |
1932 | 287053, |
1933 | 287086, |
1934 | 287125, |
1935 | 287762, |
1936 | 287829, |
1937 | 288045, |
1938 | 288078, |
1939 | 288117, |
1940 | 290706, |
1941 | 290741, |
1942 | 291698, |
1943 | 292501, |
1944 | 293778, |
1945 | 293973, |
1946 | 296189, |
1947 | 296981, |
1948 | 297341, |
1949 | 297994, |
1950 | 299925, |
1951 | 302410, |
1952 | 303125, |
1953 | 308978, |
1954 | 309013, |
1955 | 309298, |
1956 | 309333, |
1957 | 311058, |
1958 | 311317, |
1959 | 314866, |
1960 | 314901, |
1961 | 322829, |
1962 | 322862, |
1963 | 322893, |
1964 | 322926, |
1965 | 322957, |
1966 | 322990, |
1967 | 323021, |
1968 | 323054, |
1969 | 323085, |
1970 | 323118, |
1971 | 323149, |
1972 | 323182, |
1973 | 323213, |
1974 | 323246, |
1975 | 323274, |
1976 | 324245, |
1977 | 325650, |
1978 | 325805, |
1979 | 325838, |
1980 | 325874, |
1981 | 326861, |
1982 | 326894, |
1983 | 326925, |
1984 | 326958, |
1985 | 326989, |
1986 | 327022, |
1987 | 327053, |
1988 | 327086, |
1989 | 327117, |
1990 | 327150, |
1991 | 327186, |
1992 | 327701, |
1993 | 335890, |
1994 | 340077, |
1995 | 340110, |
1996 | 340141, |
1997 | 340174, |
1998 | 340205, |
1999 | 340238, |
2000 | 340269, |
2001 | 340302, |
2002 | 340333, |
2003 | 340366, |
2004 | 340397, |
2005 | 340430, |
2006 | 340461, |
2007 | 340494, |
2008 | 340525, |
2009 | 340558, |
2010 | 340589, |
2011 | 340622, |
2012 | 340653, |
2013 | 340686, |
2014 | 340717, |
2015 | 340750, |
2016 | 340786, |
2017 | 342797, |
2018 | 342830, |
2019 | 342861, |
2020 | 342894, |
2021 | 342930, |
2022 | 343949, |
2023 | 343982, |
2024 | 344018, |
2025 | 352277, |
2026 | 353810, |
2027 | 354485, |
2028 | 354546, |
2029 | 354741, |
2030 | 355997, |
2031 | 356053, |
2032 | 357085, |
2033 | 357109, |
2034 | 360448, |
2035 | 361981, |
2036 | 361985, |
2037 | 363517, |
2038 | 363520, |
2039 | 363553, |
2040 | 363584, |
2041 | 363681, |
2042 | 363744, |
2043 | 363777, |
2044 | 363808, |
2045 | 363841, |
2046 | 363872, |
2047 | 363905, |
2048 | 363936, |
2049 | 364065, |
2050 | 364096, |
2051 | 364129, |
2052 | 364192, |
2053 | 364225, |
2054 | 364419, |
2055 | 364480, |
2056 | 364577, |
2057 | 364608, |
2058 | 364641, |
2059 | 364672, |
2060 | 364705, |
2061 | 364736, |
2062 | 364769, |
2063 | 364800, |
2064 | 364833, |
2065 | 364864, |
2066 | 364897, |
2067 | 364928, |
2068 | 364961, |
2069 | 364992, |
2070 | 365025, |
2071 | 365056, |
2072 | 365089, |
2073 | 365120, |
2074 | 365153, |
2075 | 365184, |
2076 | 365217, |
2077 | 365248, |
2078 | 365281, |
2079 | 365312, |
2080 | 365345, |
2081 | 365376, |
2082 | 365409, |
2083 | 365440, |
2084 | 365473, |
2085 | 365504, |
2086 | 365537, |
2087 | 365568, |
2088 | 365601, |
2089 | 365632, |
2090 | 365665, |
2091 | 365696, |
2092 | 365729, |
2093 | 365760, |
2094 | 365793, |
2095 | 365824, |
2096 | 365857, |
2097 | 365888, |
2098 | 365921, |
2099 | 365952, |
2100 | 365985, |
2101 | 366016, |
2102 | 366049, |
2103 | 366080, |
2104 | 366113, |
2105 | 366144, |
2106 | 366177, |
2107 | 366208, |
2108 | 366241, |
2109 | 366272, |
2110 | 366305, |
2111 | 366336, |
2112 | 366369, |
2113 | 366400, |
2114 | 366433, |
2115 | 366464, |
2116 | 366497, |
2117 | 366528, |
2118 | 366561, |
2119 | 366592, |
2120 | 366625, |
2121 | 366656, |
2122 | 366689, |
2123 | 366720, |
2124 | 366753, |
2125 | 366784, |
2126 | 366817, |
2127 | 366848, |
2128 | 366881, |
2129 | 366912, |
2130 | 366945, |
2131 | 366976, |
2132 | 367009, |
2133 | 367040, |
2134 | 367073, |
2135 | 367104, |
2136 | 367137, |
2137 | 367168, |
2138 | 367201, |
2139 | 367232, |
2140 | 367265, |
2141 | 367296, |
2142 | 367329, |
2143 | 367360, |
2144 | 367393, |
2145 | 367424, |
2146 | 367457, |
2147 | 367488, |
2148 | 367521, |
2149 | 367552, |
2150 | 367585, |
2151 | 367616, |
2152 | 367649, |
2153 | 367680, |
2154 | 367713, |
2155 | 367797, |
2156 | 367968, |
2157 | 368001, |
2158 | 368032, |
2159 | 368065, |
2160 | 368101, |
2161 | 368192, |
2162 | 368225, |
2163 | 368285, |
2164 | 368433, |
2165 | 368554, |
2166 | 368593, |
2167 | 368641, |
2168 | 369885, |
2169 | 369889, |
2170 | 369949, |
2171 | 370081, |
2172 | 370141, |
2173 | 370180, |
2174 | 371997, |
2175 | 372195, |
2176 | 372241, |
2177 | 372285, |
2178 | 372709, |
2179 | 372740, |
2180 | 373501, |
2181 | 373764, |
2182 | 374013, |
2183 | 374020, |
2184 | 374269, |
2185 | 374276, |
2186 | 374525, |
2187 | 374532, |
2188 | 374781, |
2189 | 374788, |
2190 | 375037, |
2191 | 375044, |
2192 | 375293, |
2193 | 375300, |
2194 | 375549, |
2195 | 375556, |
2196 | 375805, |
2197 | 375813, |
2198 | 376849, |
2199 | 376911, |
2200 | 376944, |
2201 | 376975, |
2202 | 377008, |
2203 | 377041, |
2204 | 377135, |
2205 | 377168, |
2206 | 377201, |
2207 | 377231, |
2208 | 377264, |
2209 | 377297, |
2210 | 377580, |
2211 | 377617, |
2212 | 377676, |
2213 | 377713, |
2214 | 377743, |
2215 | 377776, |
2216 | 377809, |
2217 | 377871, |
2218 | 377904, |
2219 | 377933, |
2220 | 377966, |
2221 | 377997, |
2222 | 378030, |
2223 | 378061, |
2224 | 378094, |
2225 | 378125, |
2226 | 378158, |
2227 | 378193, |
2228 | 378339, |
2229 | 378385, |
2230 | 378700, |
2231 | 378769, |
2232 | 378892, |
2233 | 378929, |
2234 | 378957, |
2235 | 378993, |
2236 | 379413, |
2237 | 379473, |
2238 | 379517, |
2239 | 380949, |
2240 | 381789, |
2241 | 381813, |
2242 | 384669, |
2243 | 385045, |
2244 | 391901, |
2245 | 392725, |
2246 | 393117, |
2247 | 393238, |
2248 | 393265, |
2249 | 393365, |
2250 | 393379, |
2251 | 393412, |
2252 | 393449, |
2253 | 393485, |
2254 | 393518, |
2255 | 393549, |
2256 | 393582, |
2257 | 393613, |
2258 | 393646, |
2259 | 393677, |
2260 | 393710, |
2261 | 393741, |
2262 | 393774, |
2263 | 393813, |
2264 | 393869, |
2265 | 393902, |
2266 | 393933, |
2267 | 393966, |
2268 | 393997, |
2269 | 394030, |
2270 | 394061, |
2271 | 394094, |
2272 | 394124, |
2273 | 394157, |
2274 | 394190, |
2275 | 394261, |
2276 | 394281, |
2277 | 394565, |
2278 | 394694, |
2279 | 394764, |
2280 | 394787, |
2281 | 394965, |
2282 | 395017, |
2283 | 395107, |
2284 | 395140, |
2285 | 395185, |
2286 | 395221, |
2287 | 395293, |
2288 | 395300, |
2289 | 398077, |
2290 | 398117, |
2291 | 398196, |
2292 | 398243, |
2293 | 398308, |
2294 | 398348, |
2295 | 398372, |
2296 | 401265, |
2297 | 401283, |
2298 | 401380, |
2299 | 401437, |
2300 | 401572, |
2301 | 402973, |
2302 | 402980, |
2303 | 406013, |
2304 | 406037, |
2305 | 406090, |
2306 | 406229, |
2307 | 406532, |
2308 | 407573, |
2309 | 408733, |
2310 | 409092, |
2311 | 409621, |
2312 | 410621, |
2313 | 410634, |
2314 | 410965, |
2315 | 411914, |
2316 | 412181, |
2317 | 412202, |
2318 | 412693, |
2319 | 413706, |
2320 | 414037, |
2321 | 415274, |
2322 | 415765, |
2323 | 425988, |
2324 | 636949, |
2325 | 638980, |
2326 | 1310653, |
2327 | 1310724, |
2328 | 1311395, |
2329 | 1311428, |
2330 | 1348029, |
2331 | 1348117, |
2332 | 1349885, |
2333 | 1350148, |
2334 | 1351427, |
2335 | 1351633, |
2336 | 1351684, |
2337 | 1360259, |
2338 | 1360305, |
2339 | 1360388, |
2340 | 1360904, |
2341 | 1361220, |
2342 | 1361309, |
2343 | 1361920, |
2344 | 1361953, |
2345 | 1361984, |
2346 | 1362017, |
2347 | 1362048, |
2348 | 1362081, |
2349 | 1362112, |
2350 | 1362145, |
2351 | 1362176, |
2352 | 1362209, |
2353 | 1362240, |
2354 | 1362273, |
2355 | 1362304, |
2356 | 1362337, |
2357 | 1362368, |
2358 | 1362401, |
2359 | 1362432, |
2360 | 1362465, |
2361 | 1362496, |
2362 | 1362529, |
2363 | 1362560, |
2364 | 1362593, |
2365 | 1362624, |
2366 | 1362657, |
2367 | 1362688, |
2368 | 1362721, |
2369 | 1362752, |
2370 | 1362785, |
2371 | 1362816, |
2372 | 1362849, |
2373 | 1362880, |
2374 | 1362913, |
2375 | 1362944, |
2376 | 1362977, |
2377 | 1363008, |
2378 | 1363041, |
2379 | 1363072, |
2380 | 1363105, |
2381 | 1363136, |
2382 | 1363169, |
2383 | 1363200, |
2384 | 1363233, |
2385 | 1363264, |
2386 | 1363297, |
2387 | 1363328, |
2388 | 1363361, |
2389 | 1363396, |
2390 | 1363429, |
2391 | 1363463, |
2392 | 1363569, |
2393 | 1363589, |
2394 | 1363921, |
2395 | 1363939, |
2396 | 1363968, |
2397 | 1364001, |
2398 | 1364032, |
2399 | 1364065, |
2400 | 1364096, |
2401 | 1364129, |
2402 | 1364160, |
2403 | 1364193, |
2404 | 1364224, |
2405 | 1364257, |
2406 | 1364288, |
2407 | 1364321, |
2408 | 1364352, |
2409 | 1364385, |
2410 | 1364416, |
2411 | 1364449, |
2412 | 1364480, |
2413 | 1364513, |
2414 | 1364544, |
2415 | 1364577, |
2416 | 1364608, |
2417 | 1364641, |
2418 | 1364672, |
2419 | 1364705, |
2420 | 1364736, |
2421 | 1364769, |
2422 | 1364800, |
2423 | 1364833, |
2424 | 1364867, |
2425 | 1364933, |
2426 | 1364996, |
2427 | 1367241, |
2428 | 1367557, |
2429 | 1367633, |
2430 | 1367837, |
2431 | 1368084, |
2432 | 1368803, |
2433 | 1369108, |
2434 | 1369152, |
2435 | 1369185, |
2436 | 1369216, |
2437 | 1369249, |
2438 | 1369280, |
2439 | 1369313, |
2440 | 1369344, |
2441 | 1369377, |
2442 | 1369408, |
2443 | 1369441, |
2444 | 1369472, |
2445 | 1369505, |
2446 | 1369536, |
2447 | 1369569, |
2448 | 1369664, |
2449 | 1369697, |
2450 | 1369728, |
2451 | 1369761, |
2452 | 1369792, |
2453 | 1369825, |
2454 | 1369856, |
2455 | 1369889, |
2456 | 1369920, |
2457 | 1369953, |
2458 | 1369984, |
2459 | 1370017, |
2460 | 1370048, |
2461 | 1370081, |
2462 | 1370112, |
2463 | 1370145, |
2464 | 1370176, |
2465 | 1370209, |
2466 | 1370240, |
2467 | 1370273, |
2468 | 1370304, |
2469 | 1370337, |
2470 | 1370368, |
2471 | 1370401, |
2472 | 1370432, |
2473 | 1370465, |
2474 | 1370496, |
2475 | 1370529, |
2476 | 1370560, |
2477 | 1370593, |
2478 | 1370624, |
2479 | 1370657, |
2480 | 1370688, |
2481 | 1370721, |
2482 | 1370752, |
2483 | 1370785, |
2484 | 1370816, |
2485 | 1370849, |
2486 | 1370880, |
2487 | 1370913, |
2488 | 1370944, |
2489 | 1370977, |
2490 | 1371008, |
2491 | 1371041, |
2492 | 1371072, |
2493 | 1371105, |
2494 | 1371136, |
2495 | 1371169, |
2496 | 1371200, |
2497 | 1371233, |
2498 | 1371264, |
2499 | 1371297, |
2500 | 1371328, |
2501 | 1371361, |
2502 | 1371392, |
2503 | 1371425, |
2504 | 1371456, |
2505 | 1371489, |
2506 | 1371520, |
2507 | 1371553, |
2508 | 1371584, |
2509 | 1371617, |
2510 | 1371651, |
2511 | 1371681, |
2512 | 1371936, |
2513 | 1371969, |
2514 | 1372000, |
2515 | 1372033, |
2516 | 1372064, |
2517 | 1372129, |
2518 | 1372160, |
2519 | 1372193, |
2520 | 1372224, |
2521 | 1372257, |
2522 | 1372288, |
2523 | 1372321, |
2524 | 1372352, |
2525 | 1372385, |
2526 | 1372419, |
2527 | 1372468, |
2528 | 1372512, |
2529 | 1372545, |
2530 | 1372576, |
2531 | 1372609, |
2532 | 1372644, |
2533 | 1372672, |
2534 | 1372705, |
2535 | 1372736, |
2536 | 1372769, |
2537 | 1372864, |
2538 | 1372897, |
2539 | 1372928, |
2540 | 1372961, |
2541 | 1372992, |
2542 | 1373025, |
2543 | 1373056, |
2544 | 1373089, |
2545 | 1373120, |
2546 | 1373153, |
2547 | 1373184, |
2548 | 1373217, |
2549 | 1373248, |
2550 | 1373281, |
2551 | 1373312, |
2552 | 1373345, |
2553 | 1373376, |
2554 | 1373409, |
2555 | 1373440, |
2556 | 1373473, |
2557 | 1373504, |
2558 | 1373665, |
2559 | 1373696, |
2560 | 1373857, |
2561 | 1373888, |
2562 | 1373921, |
2563 | 1373952, |
2564 | 1373985, |
2565 | 1374016, |
2566 | 1374049, |
2567 | 1374080, |
2568 | 1374113, |
2569 | 1374144, |
2570 | 1374177, |
2571 | 1374237, |
2572 | 1374272, |
2573 | 1374305, |
2574 | 1374336, |
2575 | 1374465, |
2576 | 1374496, |
2577 | 1374529, |
2578 | 1374589, |
2579 | 1375904, |
2580 | 1375937, |
2581 | 1375972, |
2582 | 1376003, |
2583 | 1376065, |
2584 | 1376100, |
2585 | 1376325, |
2586 | 1376356, |
2587 | 1376453, |
2588 | 1376484, |
2589 | 1376613, |
2590 | 1376644, |
2591 | 1377382, |
2592 | 1377445, |
2593 | 1377510, |
2594 | 1377557, |
2595 | 1377669, |
2596 | 1377725, |
2597 | 1377802, |
2598 | 1378005, |
2599 | 1378067, |
2600 | 1378101, |
2601 | 1378141, |
2602 | 1378308, |
2603 | 1379985, |
2604 | 1380125, |
2605 | 1380358, |
2606 | 1380420, |
2607 | 1382022, |
2608 | 1382533, |
2609 | 1382621, |
2610 | 1382865, |
2611 | 1382920, |
2612 | 1383261, |
2613 | 1383429, |
2614 | 1384004, |
2615 | 1384209, |
2616 | 1384292, |
2617 | 1384337, |
2618 | 1384356, |
2619 | 1384421, |
2620 | 1384456, |
2621 | 1384772, |
2622 | 1385669, |
2623 | 1385937, |
2624 | 1385988, |
2625 | 1386725, |
2626 | 1387078, |
2627 | 1387165, |
2628 | 1387505, |
2629 | 1387524, |
2630 | 1388477, |
2631 | 1388549, |
2632 | 1388646, |
2633 | 1388676, |
2634 | 1390181, |
2635 | 1390214, |
2636 | 1390277, |
2637 | 1390406, |
2638 | 1390469, |
2639 | 1390534, |
2640 | 1390641, |
2641 | 1391069, |
2642 | 1391075, |
2643 | 1391112, |
2644 | 1391453, |
2645 | 1391569, |
2646 | 1391620, |
2647 | 1391781, |
2648 | 1391811, |
2649 | 1391844, |
2650 | 1392136, |
2651 | 1392452, |
2652 | 1392637, |
2653 | 1392644, |
2654 | 1393957, |
2655 | 1394150, |
2656 | 1394213, |
2657 | 1394278, |
2658 | 1394341, |
2659 | 1394429, |
2660 | 1394692, |
2661 | 1394789, |
2662 | 1394820, |
2663 | 1395077, |
2664 | 1395110, |
2665 | 1395165, |
2666 | 1395208, |
2667 | 1395549, |
2668 | 1395601, |
2669 | 1395716, |
2670 | 1396227, |
2671 | 1396260, |
2672 | 1396469, |
2673 | 1396548, |
2674 | 1396582, |
2675 | 1396613, |
2676 | 1396646, |
2677 | 1396676, |
2678 | 1398277, |
2679 | 1398308, |
2680 | 1398341, |
2681 | 1398436, |
2682 | 1398501, |
2683 | 1398564, |
2684 | 1398725, |
2685 | 1398788, |
2686 | 1398821, |
2687 | 1398852, |
2688 | 1398909, |
2689 | 1399652, |
2690 | 1399715, |
2691 | 1399761, |
2692 | 1399812, |
2693 | 1400166, |
2694 | 1400197, |
2695 | 1400262, |
2696 | 1400337, |
2697 | 1400388, |
2698 | 1400419, |
2699 | 1400486, |
2700 | 1400517, |
2701 | 1400573, |
2702 | 1400868, |
2703 | 1401085, |
2704 | 1401124, |
2705 | 1401341, |
2706 | 1401380, |
2707 | 1401597, |
2708 | 1401860, |
2709 | 1402109, |
2710 | 1402116, |
2711 | 1402365, |
2712 | 1402369, |
2713 | 1403764, |
2714 | 1403779, |
2715 | 1403905, |
2716 | 1404195, |
2717 | 1404244, |
2718 | 1404317, |
2719 | 1404417, |
2720 | 1406980, |
2721 | 1408102, |
2722 | 1408165, |
2723 | 1408198, |
2724 | 1408261, |
2725 | 1408294, |
2726 | 1408369, |
2727 | 1408390, |
2728 | 1408421, |
2729 | 1408477, |
2730 | 1408520, |
2731 | 1408861, |
2732 | 1409028, |
2733 | 1766557, |
2734 | 1766916, |
2735 | 1767677, |
2736 | 1767780, |
2737 | 1769373, |
2738 | 1769499, |
2739 | 1835036, |
2740 | 2039812, |
2741 | 2051549, |
2742 | 2051588, |
2743 | 2055005, |
2744 | 2056193, |
2745 | 2056445, |
2746 | 2056801, |
2747 | 2056989, |
2748 | 2057124, |
2749 | 2057157, |
2750 | 2057188, |
2751 | 2057522, |
2752 | 2057540, |
2753 | 2057981, |
2754 | 2057988, |
2755 | 2058173, |
2756 | 2058180, |
2757 | 2058237, |
2758 | 2058244, |
2759 | 2058333, |
2760 | 2058340, |
2761 | 2058429, |
2762 | 2058436, |
2763 | 2061908, |
2764 | 2062429, |
2765 | 2062948, |
2766 | 2074574, |
2767 | 2074605, |
2768 | 2074653, |
2769 | 2075140, |
2770 | 2077213, |
2771 | 2077252, |
2772 | 2079005, |
2773 | 2080260, |
2774 | 2080659, |
2775 | 2080693, |
2776 | 2080733, |
2777 | 2080773, |
2778 | 2081297, |
2779 | 2081517, |
2780 | 2081550, |
2781 | 2081585, |
2782 | 2081629, |
2783 | 2081797, |
2784 | 2082321, |
2785 | 2082348, |
2786 | 2082411, |
2787 | 2082477, |
2788 | 2082510, |
2789 | 2082541, |
2790 | 2082574, |
2791 | 2082605, |
2792 | 2082638, |
2793 | 2082669, |
2794 | 2082702, |
2795 | 2082733, |
2796 | 2082766, |
2797 | 2082797, |
2798 | 2082830, |
2799 | 2082861, |
2800 | 2082894, |
2801 | 2082925, |
2802 | 2082958, |
2803 | 2082993, |
2804 | 2083053, |
2805 | 2083086, |
2806 | 2083121, |
2807 | 2083243, |
2808 | 2083345, |
2809 | 2083453, |
2810 | 2083473, |
2811 | 2083596, |
2812 | 2083629, |
2813 | 2083662, |
2814 | 2083693, |
2815 | 2083726, |
2816 | 2083757, |
2817 | 2083790, |
2818 | 2083825, |
2819 | 2083922, |
2820 | 2083948, |
2821 | 2083986, |
2822 | 2084093, |
2823 | 2084113, |
2824 | 2084147, |
2825 | 2084177, |
2826 | 2084253, |
2827 | 2084356, |
2828 | 2084541, |
2829 | 2084548, |
2830 | 2088893, |
2831 | 2088954, |
2832 | 2088989, |
2833 | 2089009, |
2834 | 2089107, |
2835 | 2089137, |
2836 | 2089229, |
2837 | 2089262, |
2838 | 2089297, |
2839 | 2089330, |
2840 | 2089361, |
2841 | 2089388, |
2842 | 2089425, |
2843 | 2089480, |
2844 | 2089809, |
2845 | 2089874, |
2846 | 2089969, |
2847 | 2090016, |
2848 | 2090861, |
2849 | 2090897, |
2850 | 2090926, |
2851 | 2090964, |
2852 | 2090987, |
2853 | 2091028, |
2854 | 2091041, |
2855 | 2091885, |
2856 | 2091922, |
2857 | 2091950, |
2858 | 2091986, |
2859 | 2092013, |
2860 | 2092046, |
2861 | 2092081, |
2862 | 2092109, |
2863 | 2092142, |
2864 | 2092177, |
2865 | 2092228, |
2866 | 2092547, |
2867 | 2092580, |
2868 | 2094019, |
2869 | 2094084, |
2870 | 2095101, |
2871 | 2095172, |
2872 | 2095389, |
2873 | 2095428, |
2874 | 2095645, |
2875 | 2095684, |
2876 | 2095901, |
2877 | 2095940, |
2878 | 2096061, |
2879 | 2096147, |
2880 | 2096210, |
2881 | 2096244, |
2882 | 2096277, |
2883 | 2096307, |
2884 | 2096381, |
2885 | 2096405, |
2886 | 2096434, |
2887 | 2096565, |
2888 | 2096637, |
2889 | 2096954, |
2890 | 2097045, |
2891 | 2097117, |
2892 | 2097156, |
2893 | 2097565, |
2894 | 2097572, |
2895 | 2098429, |
2896 | 2098436, |
2897 | 2099069, |
2898 | 2099076, |
2899 | 2099165, |
2900 | 2099172, |
2901 | 2099677, |
2902 | 2099716, |
2903 | 2100189, |
2904 | 2101252, |
2905 | 2105213, |
2906 | 2105361, |
2907 | 2105469, |
2908 | 2105578, |
2909 | 2107037, |
2910 | 2107125, |
2911 | 2107401, |
2912 | 2109098, |
2913 | 2109237, |
2914 | 2109770, |
2915 | 2109845, |
2916 | 2109949, |
2917 | 2109973, |
2918 | 2110397, |
2919 | 2110485, |
2920 | 2110525, |
2921 | 2112021, |
2922 | 2113445, |
2923 | 2113501, |
2924 | 2117636, |
2925 | 2118589, |
2926 | 2118660, |
2927 | 2120253, |
2928 | 2120709, |
2929 | 2120746, |
2930 | 2121629, |
2931 | 2121732, |
2932 | 2122762, |
2933 | 2122909, |
2934 | 2123172, |
2935 | 2123817, |
2936 | 2123844, |
2937 | 2124105, |
2938 | 2124157, |
2939 | 2124292, |
2940 | 2125509, |
2941 | 2125693, |
2942 | 2125828, |
2943 | 2126813, |
2944 | 2126833, |
2945 | 2126852, |
2946 | 2128029, |
2947 | 2128132, |
2948 | 2128401, |
2949 | 2128425, |
2950 | 2128605, |
2951 | 2129920, |
2952 | 2131201, |
2953 | 2132484, |
2954 | 2135005, |
2955 | 2135048, |
2956 | 2135389, |
2957 | 2135552, |
2958 | 2136733, |
2959 | 2136833, |
2960 | 2138013, |
2961 | 2138116, |
2962 | 2139421, |
2963 | 2139652, |
2964 | 2141341, |
2965 | 2141681, |
2966 | 2141725, |
2967 | 2146308, |
2968 | 2156285, |
2969 | 2156548, |
2970 | 2157277, |
2971 | 2157572, |
2972 | 2157853, |
2973 | 2162692, |
2974 | 2162909, |
2975 | 2162948, |
2976 | 2163005, |
2977 | 2163012, |
2978 | 2164445, |
2979 | 2164452, |
2980 | 2164541, |
2981 | 2164612, |
2982 | 2164669, |
2983 | 2164708, |
2984 | 2165469, |
2985 | 2165489, |
2986 | 2165514, |
2987 | 2165764, |
2988 | 2166517, |
2989 | 2166570, |
2990 | 2166788, |
2991 | 2167805, |
2992 | 2168042, |
2993 | 2168349, |
2994 | 2169860, |
2995 | 2170493, |
2996 | 2170500, |
2997 | 2170589, |
2998 | 2170730, |
2999 | 2170884, |
3000 | 2171594, |
3001 | 2171805, |
3002 | 2171889, |
3003 | 2171908, |
3004 | 2172765, |
3005 | 2172913, |
3006 | 2172957, |
3007 | 2174980, |
3008 | 2176797, |
3009 | 2176906, |
3010 | 2176964, |
3011 | 2177034, |
3012 | 2177565, |
3013 | 2177610, |
3014 | 2179076, |
3015 | 2179109, |
3016 | 2179229, |
3017 | 2179237, |
3018 | 2179325, |
3019 | 2179461, |
3020 | 2179588, |
3021 | 2179741, |
3022 | 2179748, |
3023 | 2179869, |
3024 | 2179876, |
3025 | 2180829, |
3026 | 2180869, |
3027 | 2180989, |
3028 | 2181093, |
3029 | 2181130, |
3030 | 2181437, |
3031 | 2181649, |
3032 | 2181949, |
3033 | 2182148, |
3034 | 2183082, |
3035 | 2183153, |
3036 | 2183172, |
3037 | 2184106, |
3038 | 2184221, |
3039 | 2185220, |
3040 | 2185493, |
3041 | 2185508, |
3042 | 2186405, |
3043 | 2186493, |
3044 | 2186602, |
3045 | 2186769, |
3046 | 2187005, |
3047 | 2187268, |
3048 | 2189021, |
3049 | 2189105, |
3050 | 2189316, |
3051 | 2190045, |
3052 | 2190090, |
3053 | 2190340, |
3054 | 2190973, |
3055 | 2191114, |
3056 | 2191364, |
3057 | 2191965, |
3058 | 2192177, |
3059 | 2192317, |
3060 | 2192682, |
3061 | 2192925, |
3062 | 2195460, |
3063 | 2197821, |
3064 | 2199552, |
3065 | 2201213, |
3066 | 2201601, |
3067 | 2203261, |
3068 | 2203466, |
3069 | 2203652, |
3070 | 2204805, |
3071 | 2204957, |
3072 | 2205192, |
3073 | 2205533, |
3074 | 2214922, |
3075 | 2215933, |
3076 | 2215940, |
3077 | 2217309, |
3078 | 2217317, |
3079 | 2217388, |
3080 | 2217437, |
3081 | 2217476, |
3082 | 2217565, |
3083 | 2220036, |
3084 | 2220970, |
3085 | 2221284, |
3086 | 2221341, |
3087 | 2221572, |
3088 | 2222277, |
3089 | 2222634, |
3090 | 2222769, |
3091 | 2222941, |
3092 | 2225668, |
3093 | 2226346, |
3094 | 2226589, |
3095 | 2227204, |
3096 | 2227965, |
3097 | 2228230, |
3098 | 2228261, |
3099 | 2228294, |
3100 | 2228324, |
3101 | 2230021, |
3102 | 2230513, |
3103 | 2230749, |
3104 | 2230858, |
3105 | 2231496, |
3106 | 2231837, |
3107 | 2232293, |
3108 | 2232390, |
3109 | 2232420, |
3110 | 2233862, |
3111 | 2233957, |
3112 | 2234086, |
3113 | 2234149, |
3114 | 2234225, |
3115 | 2234298, |
3116 | 2234321, |
3117 | 2234461, |
3118 | 2234810, |
3119 | 2234845, |
3120 | 2234884, |
3121 | 2235709, |
3122 | 2235912, |
3123 | 2236253, |
3124 | 2236421, |
3125 | 2236516, |
3126 | 2237669, |
3127 | 2237830, |
3128 | 2237861, |
3129 | 2238141, |
3130 | 2238152, |
3131 | 2238481, |
3132 | 2238596, |
3133 | 2238630, |
3134 | 2238692, |
3135 | 2238749, |
3136 | 2238980, |
3137 | 2240101, |
3138 | 2240145, |
3139 | 2240196, |
3140 | 2240253, |
3141 | 2240517, |
3142 | 2240582, |
3143 | 2240612, |
3144 | 2242150, |
3145 | 2242245, |
3146 | 2242534, |
3147 | 2242596, |
3148 | 2242737, |
3149 | 2242853, |
3150 | 2242993, |
3151 | 2243014, |
3152 | 2243045, |
3153 | 2243080, |
3154 | 2243396, |
3155 | 2243441, |
3156 | 2243460, |
3157 | 2243505, |
3158 | 2243613, |
3159 | 2243626, |
3160 | 2244285, |
3161 | 2244612, |
3162 | 2245213, |
3163 | 2245220, |
3164 | 2246022, |
3165 | 2246117, |
3166 | 2246214, |
3167 | 2246277, |
3168 | 2246310, |
3169 | 2246341, |
3170 | 2246417, |
3171 | 2246597, |
3172 | 2246653, |
3173 | 2248708, |
3174 | 2248957, |
3175 | 2248964, |
3176 | 2249021, |
3177 | 2249028, |
3178 | 2249181, |
3179 | 2249188, |
3180 | 2249693, |
3181 | 2249700, |
3182 | 2250033, |
3183 | 2250077, |
3184 | 2250244, |
3185 | 2251749, |
3186 | 2251782, |
3187 | 2251877, |
3188 | 2252157, |
3189 | 2252296, |
3190 | 2252637, |
3191 | 2252805, |
3192 | 2252870, |
3193 | 2252957, |
3194 | 2252964, |
3195 | 2253245, |
3196 | 2253284, |
3197 | 2253373, |
3198 | 2253412, |
3199 | 2254141, |
3200 | 2254148, |
3201 | 2254397, |
3202 | 2254404, |
3203 | 2254493, |
3204 | 2254500, |
3205 | 2254685, |
3206 | 2254693, |
3207 | 2254756, |
3208 | 2254790, |
3209 | 2254853, |
3210 | 2254886, |
3211 | 2255037, |
3212 | 2255078, |
3213 | 2255165, |
3214 | 2255206, |
3215 | 2255325, |
3216 | 2255364, |
3217 | 2255421, |
3218 | 2255590, |
3219 | 2255645, |
3220 | 2255780, |
3221 | 2255942, |
3222 | 2256029, |
3223 | 2256069, |
3224 | 2256317, |
3225 | 2256389, |
3226 | 2256573, |
3227 | 2260996, |
3228 | 2262694, |
3229 | 2262789, |
3230 | 2263046, |
3231 | 2263109, |
3232 | 2263206, |
3233 | 2263237, |
3234 | 2263268, |
3235 | 2263409, |
3236 | 2263560, |
3237 | 2263889, |
3238 | 2263965, |
3239 | 2263985, |
3240 | 2264005, |
3241 | 2264036, |
3242 | 2264157, |
3243 | 2265092, |
3244 | 2266630, |
3245 | 2266725, |
3246 | 2266918, |
3247 | 2266949, |
3248 | 2266982, |
3249 | 2267109, |
3250 | 2267174, |
3251 | 2267205, |
3252 | 2267268, |
3253 | 2267345, |
3254 | 2267364, |
3255 | 2267421, |
3256 | 2267656, |
3257 | 2267997, |
3258 | 2273284, |
3259 | 2274790, |
3260 | 2274885, |
3261 | 2275037, |
3262 | 2275078, |
3263 | 2275205, |
3264 | 2275270, |
3265 | 2275301, |
3266 | 2275377, |
3267 | 2276100, |
3268 | 2276229, |
3269 | 2276317, |
3270 | 2277380, |
3271 | 2278918, |
3272 | 2279013, |
3273 | 2279270, |
3274 | 2279333, |
3275 | 2279366, |
3276 | 2279397, |
3277 | 2279473, |
3278 | 2279556, |
3279 | 2279613, |
3280 | 2279944, |
3281 | 2280285, |
3282 | 2280465, |
3283 | 2280893, |
3284 | 2281476, |
3285 | 2282853, |
3286 | 2282886, |
3287 | 2282917, |
3288 | 2282950, |
3289 | 2283013, |
3290 | 2283206, |
3291 | 2283237, |
3292 | 2283268, |
3293 | 2283325, |
3294 | 2283528, |
3295 | 2283869, |
3296 | 2285572, |
3297 | 2286461, |
3298 | 2286501, |
3299 | 2286598, |
3300 | 2286661, |
3301 | 2286790, |
3302 | 2286821, |
3303 | 2287005, |
3304 | 2287112, |
3305 | 2287434, |
3306 | 2287505, |
3307 | 2287605, |
3308 | 2287645, |
3309 | 2293764, |
3310 | 2295174, |
3311 | 2295269, |
3312 | 2295558, |
3313 | 2295589, |
3314 | 2295665, |
3315 | 2295709, |
3316 | 2298880, |
3317 | 2299905, |
3318 | 2300936, |
3319 | 2301258, |
3320 | 2301565, |
3321 | 2301924, |
3322 | 2302205, |
3323 | 2302244, |
3324 | 2302301, |
3325 | 2302340, |
3326 | 2302621, |
3327 | 2302628, |
3328 | 2302717, |
3329 | 2302724, |
3330 | 2303494, |
3331 | 2303709, |
3332 | 2303718, |
3333 | 2303805, |
3334 | 2303845, |
3335 | 2303910, |
3336 | 2303941, |
3337 | 2303972, |
3338 | 2304006, |
3339 | 2304036, |
3340 | 2304070, |
3341 | 2304101, |
3342 | 2304145, |
3343 | 2304253, |
3344 | 2304520, |
3345 | 2304861, |
3346 | 2307076, |
3347 | 2307357, |
3348 | 2307396, |
3349 | 2308646, |
3350 | 2308741, |
3351 | 2308893, |
3352 | 2308933, |
3353 | 2308998, |
3354 | 2309125, |
3355 | 2309156, |
3356 | 2309201, |
3357 | 2309220, |
3358 | 2309254, |
3359 | 2309309, |
3360 | 2310148, |
3361 | 2310181, |
3362 | 2310500, |
3363 | 2311781, |
3364 | 2311974, |
3365 | 2312004, |
3366 | 2312037, |
3367 | 2312177, |
3368 | 2312421, |
3369 | 2312477, |
3370 | 2312708, |
3371 | 2312741, |
3372 | 2312934, |
3373 | 2312997, |
3374 | 2313092, |
3375 | 2314565, |
3376 | 2314982, |
3377 | 2315013, |
3378 | 2315089, |
3379 | 2315172, |
3380 | 2315217, |
3381 | 2315389, |
3382 | 2316292, |
3383 | 2318141, |
3384 | 2326532, |
3385 | 2326845, |
3386 | 2326852, |
3387 | 2328038, |
3388 | 2328069, |
3389 | 2328317, |
3390 | 2328325, |
3391 | 2328518, |
3392 | 2328549, |
3393 | 2328580, |
3394 | 2328625, |
3395 | 2328797, |
3396 | 2329096, |
3397 | 2329418, |
3398 | 2330045, |
3399 | 2330129, |
3400 | 2330180, |
3401 | 2331165, |
3402 | 2331205, |
3403 | 2331933, |
3404 | 2331942, |
3405 | 2331973, |
3406 | 2332198, |
3407 | 2332229, |
3408 | 2332294, |
3409 | 2332325, |
3410 | 2332413, |
3411 | 2334724, |
3412 | 2334973, |
3413 | 2334980, |
3414 | 2335069, |
3415 | 2335076, |
3416 | 2336293, |
3417 | 2336509, |
3418 | 2336581, |
3419 | 2336637, |
3420 | 2336645, |
3421 | 2336733, |
3422 | 2336741, |
3423 | 2336964, |
3424 | 2336997, |
3425 | 2337053, |
3426 | 2337288, |
3427 | 2337629, |
3428 | 2337796, |
3429 | 2338013, |
3430 | 2338020, |
3431 | 2338109, |
3432 | 2338116, |
3433 | 2339142, |
3434 | 2339325, |
3435 | 2339333, |
3436 | 2339421, |
3437 | 2339430, |
3438 | 2339493, |
3439 | 2339526, |
3440 | 2339557, |
3441 | 2339588, |
3442 | 2339645, |
3443 | 2339848, |
3444 | 2340189, |
3445 | 2350084, |
3446 | 2350693, |
3447 | 2350758, |
3448 | 2350833, |
3449 | 2350909, |
3450 | 2356740, |
3451 | 2356797, |
3452 | 2357258, |
3453 | 2357941, |
3454 | 2358195, |
3455 | 2358325, |
3456 | 2358877, |
3457 | 2359281, |
3458 | 2359300, |
3459 | 2388829, |
3460 | 2392073, |
3461 | 2395645, |
3462 | 2395665, |
3463 | 2395837, |
3464 | 2396164, |
3465 | 2402461, |
3466 | 2490372, |
3467 | 2524669, |
3468 | 2524698, |
3469 | 2524989, |
3470 | 2654212, |
3471 | 2672893, |
3472 | 2949124, |
3473 | 2967357, |
3474 | 2967556, |
3475 | 2968573, |
3476 | 2968584, |
3477 | 2968925, |
3478 | 2969041, |
3479 | 2969117, |
3480 | 2972164, |
3481 | 2973149, |
3482 | 2973189, |
3483 | 2973361, |
3484 | 2973405, |
3485 | 2973700, |
3486 | 2975237, |
3487 | 2975473, |
3488 | 2975637, |
3489 | 2975747, |
3490 | 2975889, |
3491 | 2975925, |
3492 | 2975965, |
3493 | 2976264, |
3494 | 2976605, |
3495 | 2976618, |
3496 | 2976861, |
3497 | 2976868, |
3498 | 2977565, |
3499 | 2977700, |
3500 | 2978333, |
3501 | 3000320, |
3502 | 3001345, |
3503 | 3002378, |
3504 | 3003121, |
3505 | 3003261, |
3506 | 3006468, |
3507 | 3008893, |
3508 | 3008997, |
3509 | 3009028, |
3510 | 3009062, |
3511 | 3010845, |
3512 | 3011045, |
3513 | 3011171, |
3514 | 3011613, |
3515 | 3013635, |
3516 | 3013713, |
3517 | 3013731, |
3518 | 3013765, |
3519 | 3013821, |
3520 | 3014150, |
3521 | 3014237, |
3522 | 3014660, |
3523 | 3211037, |
3524 | 3211268, |
3525 | 3250909, |
3526 | 3252228, |
3527 | 3252541, |
3528 | 3538948, |
3529 | 3548157, |
3530 | 3549700, |
3531 | 3549821, |
3532 | 3550340, |
3533 | 3550493, |
3534 | 3550724, |
3535 | 3563421, |
3536 | 3637252, |
3537 | 3640701, |
3538 | 3640836, |
3539 | 3641277, |
3540 | 3641348, |
3541 | 3641661, |
3542 | 3641860, |
3543 | 3642205, |
3544 | 3642261, |
3545 | 3642277, |
3546 | 3642353, |
3547 | 3642394, |
3548 | 3642525, |
3549 | 3801109, |
3550 | 3808989, |
3551 | 3809301, |
3552 | 3810557, |
3553 | 3810613, |
3554 | 3812518, |
3555 | 3812581, |
3556 | 3812693, |
3557 | 3812774, |
3558 | 3812986, |
3559 | 3813221, |
3560 | 3813493, |
3561 | 3813541, |
3562 | 3813781, |
3563 | 3814725, |
3564 | 3814869, |
3565 | 3816765, |
3566 | 3817493, |
3567 | 3819589, |
3568 | 3819701, |
3569 | 3819741, |
3570 | 3824650, |
3571 | 3825309, |
3572 | 3825685, |
3573 | 3828477, |
3574 | 3828746, |
3575 | 3829565, |
3576 | 3833856, |
3577 | 3834689, |
3578 | 3835520, |
3579 | 3836353, |
3580 | 3836605, |
3581 | 3836609, |
3582 | 3837184, |
3583 | 3838017, |
3584 | 3838848, |
3585 | 3838909, |
3586 | 3838912, |
3587 | 3839005, |
3588 | 3839040, |
3589 | 3839101, |
3590 | 3839136, |
3591 | 3839229, |
3592 | 3839264, |
3593 | 3839421, |
3594 | 3839424, |
3595 | 3839681, |
3596 | 3839837, |
3597 | 3839841, |
3598 | 3839901, |
3599 | 3839905, |
3600 | 3840157, |
3601 | 3840161, |
3602 | 3840512, |
3603 | 3841345, |
3604 | 3842176, |
3605 | 3842269, |
3606 | 3842272, |
3607 | 3842429, |
3608 | 3842464, |
3609 | 3842749, |
3610 | 3842752, |
3611 | 3843005, |
3612 | 3843009, |
3613 | 3843840, |
3614 | 3843933, |
3615 | 3843936, |
3616 | 3844093, |
3617 | 3844096, |
3618 | 3844285, |
3619 | 3844288, |
3620 | 3844349, |
3621 | 3844416, |
3622 | 3844669, |
3623 | 3844673, |
3624 | 3845504, |
3625 | 3846337, |
3626 | 3847168, |
3627 | 3848001, |
3628 | 3848832, |
3629 | 3849665, |
3630 | 3850496, |
3631 | 3851329, |
3632 | 3852160, |
3633 | 3852993, |
3634 | 3853824, |
3635 | 3854657, |
3636 | 3855581, |
3637 | 3855616, |
3638 | 3856434, |
3639 | 3856449, |
3640 | 3857266, |
3641 | 3857281, |
3642 | 3857472, |
3643 | 3858290, |
3644 | 3858305, |
3645 | 3859122, |
3646 | 3859137, |
3647 | 3859328, |
3648 | 3860146, |
3649 | 3860161, |
3650 | 3860978, |
3651 | 3860993, |
3652 | 3861184, |
3653 | 3862002, |
3654 | 3862017, |
3655 | 3862834, |
3656 | 3862849, |
3657 | 3863040, |
3658 | 3863858, |
3659 | 3863873, |
3660 | 3864690, |
3661 | 3864705, |
3662 | 3864896, |
3663 | 3864929, |
3664 | 3864989, |
3665 | 3865032, |
3666 | 3866645, |
3667 | 3883013, |
3668 | 3884789, |
3669 | 3884901, |
3670 | 3886517, |
3671 | 3886757, |
3672 | 3886805, |
3673 | 3887237, |
3674 | 3887285, |
3675 | 3887345, |
3676 | 3887517, |
3677 | 3887973, |
3678 | 3888157, |
3679 | 3888165, |
3680 | 3888669, |
3681 | 3932165, |
3682 | 3932413, |
3683 | 3932421, |
3684 | 3932989, |
3685 | 3933029, |
3686 | 3933277, |
3687 | 3933285, |
3688 | 3933373, |
3689 | 3933381, |
3690 | 3933565, |
3691 | 3940356, |
3692 | 3941821, |
3693 | 3941893, |
3694 | 3942115, |
3695 | 3942365, |
3696 | 3942408, |
3697 | 3942749, |
3698 | 3942852, |
3699 | 3942901, |
3700 | 3942941, |
3701 | 3954692, |
3702 | 3956101, |
3703 | 3956232, |
3704 | 3956573, |
3705 | 3956723, |
3706 | 3956765, |
3707 | 3997700, |
3708 | 4004029, |
3709 | 4004074, |
3710 | 4004357, |
3711 | 4004605, |
3712 | 4005888, |
3713 | 4006977, |
3714 | 4008069, |
3715 | 4008291, |
3716 | 4008349, |
3717 | 4008456, |
3718 | 4008797, |
3719 | 4008913, |
3720 | 4008989, |
3721 | 4034090, |
3722 | 4035989, |
3723 | 4036010, |
3724 | 4036115, |
3725 | 4036138, |
3726 | 4036285, |
3727 | 4038698, |
3728 | 4040149, |
3729 | 4040170, |
3730 | 4040669, |
3731 | 4046852, |
3732 | 4047005, |
3733 | 4047012, |
3734 | 4047901, |
3735 | 4047908, |
3736 | 4047997, |
3737 | 4048004, |
3738 | 4048061, |
3739 | 4048100, |
3740 | 4048157, |
3741 | 4048164, |
3742 | 4048509, |
3743 | 4048516, |
3744 | 4048669, |
3745 | 4048676, |
3746 | 4048733, |
3747 | 4048740, |
3748 | 4048797, |
3749 | 4048964, |
3750 | 4049021, |
3751 | 4049124, |
3752 | 4049181, |
3753 | 4049188, |
3754 | 4049245, |
3755 | 4049252, |
3756 | 4049309, |
3757 | 4049316, |
3758 | 4049437, |
3759 | 4049444, |
3760 | 4049533, |
3761 | 4049540, |
3762 | 4049597, |
3763 | 4049636, |
3764 | 4049693, |
3765 | 4049700, |
3766 | 4049757, |
3767 | 4049764, |
3768 | 4049821, |
3769 | 4049828, |
3770 | 4049885, |
3771 | 4049892, |
3772 | 4049949, |
3773 | 4049956, |
3774 | 4050045, |
3775 | 4050052, |
3776 | 4050109, |
3777 | 4050148, |
3778 | 4050301, |
3779 | 4050308, |
3780 | 4050557, |
3781 | 4050564, |
3782 | 4050717, |
3783 | 4050724, |
3784 | 4050877, |
3785 | 4050884, |
3786 | 4050941, |
3787 | 4050948, |
3788 | 4051293, |
3789 | 4051300, |
3790 | 4051869, |
3791 | 4052004, |
3792 | 4052125, |
3793 | 4052132, |
3794 | 4052317, |
3795 | 4052324, |
3796 | 4052893, |
3797 | 4054546, |
3798 | 4054621, |
3799 | 4063253, |
3800 | 4064669, |
3801 | 4064789, |
3802 | 4067997, |
3803 | 4068373, |
3804 | 4068861, |
3805 | 4068917, |
3806 | 4069405, |
3807 | 4069429, |
3808 | 4069917, |
3809 | 4069941, |
3810 | 4071133, |
3811 | 4071434, |
3812 | 4071861, |
3813 | 4077021, |
3814 | 4078805, |
3815 | 4079741, |
3816 | 4080149, |
3817 | 4081565, |
3818 | 4081685, |
3819 | 4081981, |
3820 | 4082197, |
3821 | 4082269, |
3822 | 4082709, |
3823 | 4082909, |
3824 | 4087829, |
3825 | 4095860, |
3826 | 4096021, |
3827 | 4119325, |
3828 | 4119573, |
3829 | 4119997, |
3830 | 4120085, |
3831 | 4120509, |
3832 | 4120597, |
3833 | 4124317, |
3834 | 4124693, |
3835 | 4127549, |
3836 | 4127765, |
3837 | 4128157, |
3838 | 4128789, |
3839 | 4129181, |
3840 | 4129301, |
3841 | 4131101, |
3842 | 4131349, |
3843 | 4131677, |
3844 | 4131861, |
3845 | 4133149, |
3846 | 4133397, |
3847 | 4134365, |
3848 | 4134421, |
3849 | 4134493, |
3850 | 4136981, |
3851 | 4140861, |
3852 | 4140885, |
3853 | 4143517, |
3854 | 4143541, |
3855 | 4147869, |
3856 | 4148245, |
3857 | 4148701, |
3858 | 4148757, |
3859 | 4148925, |
3860 | 4149013, |
3861 | 4149117, |
3862 | 4149269, |
3863 | 4149501, |
3864 | 4149781, |
3865 | 4150589, |
3866 | 4150805, |
3867 | 4151037, |
3868 | 4151317, |
3869 | 4151421, |
3870 | 4151829, |
3871 | 4152061, |
3872 | 4153365, |
3873 | 4158077, |
3874 | 4158101, |
3875 | 4159869, |
3876 | 4161032, |
3877 | 4161373, |
3878 | 4194308, |
3879 | 5561309, |
3880 | 5562372, |
3881 | 5695165, |
3882 | 5695492, |
3883 | 5702621, |
3884 | 5702660, |
3885 | 5887069, |
3886 | 5887492, |
3887 | 6126653, |
3888 | 6225924, |
3889 | 6243293, |
3890 | 6291460, |
3891 | 6449533, |
3892 | 29360186, |
3893 | 29360221, |
3894 | 29361178, |
3895 | 29364253, |
3896 | 29368325, |
3897 | 29376029, |
3898 | 31457308, |
3899 | 33554397, |
3900 | 33554460, |
3901 | 35651549, |
3902 | 35651613, |
3903 | //--Autogenerated -- end of section automatically generated |
3904 | }; |
3905 | |
3906 | constexpr int maxUnicode = 0x10ffff; |
3907 | constexpr int maskCategory = 0x1F; |
3908 | |
3909 | } |
3910 | |
3911 | // Each element in catRanges is the start of a range of Unicode characters in |
3912 | // one general category. |
3913 | // The value is comprised of a 21-bit character value shifted 5 bits and a 5 bit |
3914 | // category matching the CharacterCategory enumeration. |
3915 | // Initial version has 3249 entries and adds about 13K to the executable. |
3916 | // The array is in ascending order so can be searched using binary search. |
3917 | // Therefore the average call takes log2(3249) = 12 comparisons. |
3918 | // For speed, it may be useful to make a linear table for the common values, |
3919 | // possibly for 0..0xff for most Western European text or 0..0xfff for most |
3920 | // alphabetic languages. |
3921 | |
3922 | CharacterCategory CategoriseCharacter(int character) { |
3923 | if (character < 0 || character > maxUnicode) |
3924 | return ccCn; |
3925 | const int baseValue = character * (maskCategory+1) + maskCategory; |
3926 | const int *placeAfter = std::lower_bound(catRanges, std::end(catRanges), baseValue); |
3927 | return static_cast<CharacterCategory>(*(placeAfter-1) & maskCategory); |
3928 | } |
3929 | |
3930 | // Implementation of character sets recommended for identifiers in Unicode Standard Annex #31. |
3931 | // http://unicode.org/reports/tr31/ |
3932 | |
3933 | namespace { |
3934 | |
3935 | enum class OtherID { oidNone, oidStart, oidContinue }; |
3936 | |
3937 | // Some characters are treated as valid for identifiers even |
3938 | // though most characters from their category are not. |
3939 | // Values copied from http://www.unicode.org/Public/9.0.0/ucd/PropList.txt |
3940 | OtherID OtherIDOfCharacter(int character) noexcept { |
3941 | if ( |
3942 | (character == 0x1885) || // MONGOLIAN LETTER ALI GALI BALUDA |
3943 | (character == 0x1886) || // MONGOLIAN LETTER ALI GALI THREE BALUDA |
3944 | (character == 0x2118) || // SCRIPT CAPITAL P |
3945 | (character == 0x212E) || // ESTIMATED SYMBOL |
3946 | (character == 0x309B) || // KATAKANA-HIRAGANA VOICED SOUND MARK |
3947 | (character == 0x309C)) { // KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK |
3948 | return OtherID::oidStart; |
3949 | } else if ( |
3950 | (character == 0x00B7) || // MIDDLE DOT |
3951 | (character == 0x0387) || // GREEK ANO TELEIA |
3952 | ((character >= 0x1369) && (character <= 0x1371)) || // ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE |
3953 | (character == 0x19DA)) { // NEW TAI LUE THAM DIGIT ONE |
3954 | return OtherID::oidContinue; |
3955 | } else { |
3956 | return OtherID::oidNone; |
3957 | } |
3958 | } |
3959 | |
3960 | // Determine if a character is in Ll|Lu|Lt|Lm|Lo|Nl|Mn|Mc|Nd|Pc and has |
3961 | // Pattern_Syntax|Pattern_White_Space. |
3962 | // As of Unicode 9, only VERTICAL TILDE which is in Lm and has Pattern_Syntax matches. |
3963 | // Should really generate from PropList.txt a list of Pattern_Syntax and Pattern_White_Space. |
3964 | constexpr bool IsIdPattern(int character) noexcept { |
3965 | return character == 0x2E2F; |
3966 | } |
3967 | |
3968 | bool OmitXidStart(int character) noexcept { |
3969 | switch (character) { |
3970 | case 0x037A: // GREEK YPOGEGRAMMENI |
3971 | case 0x0E33: // THAI CHARACTER SARA AM |
3972 | case 0x0EB3: // LAO VOWEL SIGN AM |
3973 | case 0x309B: // KATAKANA-HIRAGANA VOICED SOUND MARK |
3974 | case 0x309C: // KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK |
3975 | case 0xFC5E: // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM |
3976 | case 0xFC5F: // ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM |
3977 | case 0xFC60: // ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM |
3978 | case 0xFC61: // ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM |
3979 | case 0xFC62: // ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM |
3980 | case 0xFC63: // ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM |
3981 | case 0xFDFA: // ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM |
3982 | case 0xFDFB: // ARABIC LIGATURE JALLAJALALOUHOU |
3983 | case 0xFE70: // ARABIC FATHATAN ISOLATED FORM |
3984 | case 0xFE72: // ARABIC DAMMATAN ISOLATED FORM |
3985 | case 0xFE74: // ARABIC KASRATAN ISOLATED FORM |
3986 | case 0xFE76: // ARABIC FATHA ISOLATED FORM |
3987 | case 0xFE78: // ARABIC DAMMA ISOLATED FORM |
3988 | case 0xFE7A: // ARABIC KASRA ISOLATED FORM |
3989 | case 0xFE7C: // ARABIC SHADDA ISOLATED FORM |
3990 | case 0xFE7E: // ARABIC SUKUN ISOLATED FORM |
3991 | case 0xFF9E: // HALFWIDTH KATAKANA VOICED SOUND MARK |
3992 | case 0xFF9F: // HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK |
3993 | return true; |
3994 | default: |
3995 | return false; |
3996 | } |
3997 | } |
3998 | |
3999 | bool OmitXidContinue(int character) noexcept { |
4000 | switch (character) { |
4001 | case 0x037A: // GREEK YPOGEGRAMMENI |
4002 | case 0x309B: // KATAKANA-HIRAGANA VOICED SOUND MARK |
4003 | case 0x309C: // KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK |
4004 | case 0xFC5E: // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM |
4005 | case 0xFC5F: // ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM |
4006 | case 0xFC60: // ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM |
4007 | case 0xFC61: // ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM |
4008 | case 0xFC62: // ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM |
4009 | case 0xFC63: // ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM |
4010 | case 0xFDFA: // ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM |
4011 | case 0xFDFB: // ARABIC LIGATURE JALLAJALALOUHOU |
4012 | case 0xFE70: // ARABIC FATHATAN ISOLATED FORM |
4013 | case 0xFE72: // ARABIC DAMMATAN ISOLATED FORM |
4014 | case 0xFE74: // ARABIC KASRATAN ISOLATED FORM |
4015 | case 0xFE76: // ARABIC FATHA ISOLATED FORM |
4016 | case 0xFE78: // ARABIC DAMMA ISOLATED FORM |
4017 | case 0xFE7A: // ARABIC KASRA ISOLATED FORM |
4018 | case 0xFE7C: // ARABIC SHADDA ISOLATED FORM |
4019 | case 0xFE7E: // ARABIC SUKUN ISOLATED FORM |
4020 | return true; |
4021 | default: |
4022 | return false; |
4023 | } |
4024 | } |
4025 | |
4026 | } |
4027 | |
4028 | // UAX #31 defines ID_Start as |
4029 | // [[:L:][:Nl:][:Other_ID_Start:]--[:Pattern_Syntax:]--[:Pattern_White_Space:]] |
4030 | bool IsIdStart(int character) { |
4031 | if (IsIdPattern(character)) { |
4032 | return false; |
4033 | } |
4034 | const OtherID oid = OtherIDOfCharacter(character); |
4035 | if (oid == OtherID::oidStart) { |
4036 | return true; |
4037 | } |
4038 | const CharacterCategory c = CategoriseCharacter(character); |
4039 | return (c == ccLl || c == ccLu || c == ccLt || c == ccLm || c == ccLo |
4040 | || c == ccNl); |
4041 | } |
4042 | |
4043 | // UAX #31 defines ID_Continue as |
4044 | // [[:ID_Start:][:Mn:][:Mc:][:Nd:][:Pc:][:Other_ID_Continue:]--[:Pattern_Syntax:]--[:Pattern_White_Space:]] |
4045 | bool IsIdContinue(int character) { |
4046 | if (IsIdPattern(character)) { |
4047 | return false; |
4048 | } |
4049 | const OtherID oid = OtherIDOfCharacter(character); |
4050 | if (oid != OtherID::oidNone) { |
4051 | return true; |
4052 | } |
4053 | const CharacterCategory c = CategoriseCharacter(character); |
4054 | return (c == ccLl || c == ccLu || c == ccLt || c == ccLm || c == ccLo |
4055 | || c == ccNl || c == ccMn || c == ccMc || c == ccNd || c == ccPc); |
4056 | } |
4057 | |
4058 | // XID_Start is ID_Start modified for Normalization Form KC in UAX #31 |
4059 | bool IsXidStart(int character) { |
4060 | if (OmitXidStart(character)) { |
4061 | return false; |
4062 | } else { |
4063 | return IsIdStart(character); |
4064 | } |
4065 | } |
4066 | |
4067 | // XID_Continue is ID_Continue modified for Normalization Form KC in UAX #31 |
4068 | bool IsXidContinue(int character) { |
4069 | if (OmitXidContinue(character)) { |
4070 | return false; |
4071 | } else { |
4072 | return IsIdContinue(character); |
4073 | } |
4074 | } |
4075 | |
4076 | CharacterCategoryMap::CharacterCategoryMap() { |
4077 | Optimize(256); |
4078 | } |
4079 | |
4080 | int CharacterCategoryMap::Size() const noexcept { |
4081 | return static_cast<int>(dense.size()); |
4082 | } |
4083 | |
4084 | void CharacterCategoryMap::Optimize(int countCharacters) { |
4085 | const int characters = std::clamp(countCharacters, 256, maxUnicode + 1); |
4086 | dense.resize(characters); |
4087 | |
4088 | int end = 0; |
4089 | int index = 0; |
4090 | int current = catRanges[index]; |
4091 | ++index; |
4092 | do { |
4093 | const int next = catRanges[index]; |
4094 | const unsigned char category = current & maskCategory; |
4095 | current >>= 5; |
4096 | end = std::min(characters, next >> 5); |
4097 | while (current < end) { |
4098 | dense[current++] = category; |
4099 | } |
4100 | current = next; |
4101 | ++index; |
4102 | } while (characters > end); |
4103 | } |
4104 | |
4105 | } |
4106 | |