Home | History | Annotate | Download | only in src
      1 
      2 #line 1 "hb-ot-shape-complex-indic-machine.rl"
      3 /*
      4  * Copyright  2011,2012  Google, Inc.
      5  *
      6  *  This is part of HarfBuzz, a text shaping library.
      7  *
      8  * Permission is hereby granted, without written agreement and without
      9  * license or royalty fees, to use, copy, modify, and distribute this
     10  * software and its documentation for any purpose, provided that the
     11  * above copyright notice and the following two paragraphs appear in
     12  * all copies of this software.
     13  *
     14  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
     15  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
     16  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
     17  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
     18  * DAMAGE.
     19  *
     20  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
     21  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
     22  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
     23  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
     24  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
     25  *
     26  * Google Author(s): Behdad Esfahbod
     27  */
     28 
     29 #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
     30 #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
     31 
     32 #include "hb-private.hh"
     33 
     34 
     35 #line 36 "hb-ot-shape-complex-indic-machine.hh.tmp"
     36 static const unsigned char _indic_syllable_machine_trans_keys[] = {
     37 	1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u,
     38 	5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u,
     39 	16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
     40 	6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
     41 	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u,
     42 	7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u,
     43 	5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u,
     44 	4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u,
     45 	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
     46 	1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u,
     47 	5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u,
     48 	16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
     49 	6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
     50 	4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u,
     51 	5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u,
     52 	7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
     53 	6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u,
     54 	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
     55 	4u, 14u, 5u, 7u, 5u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u,
     56 	7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 1u, 16u, 13u, 13u, 4u, 4u, 6u, 6u,
     57 	16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
     58 	6u, 6u, 16u, 16u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
     59 	3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
     60 	3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u,
     61 	5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u,
     62 	3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
     63 	4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u,
     64 	3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u,
     65 	3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u,
     66 	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
     67 	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u,
     68 	4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
     69 	4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
     70 	4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u,
     71 	8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
     72 	4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u,
     73 	3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
     74 	1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
     75 	3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u,
     76 	3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u,
     77 	3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
     78 	3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
     79 	3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u,
     80 	3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
     81 	3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
     82 	6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u,
     83 	1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
     84 	1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
     85 	3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u,
     86 	3u, 14u, 4u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
     87 	4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
     88 	4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u,
     89 	9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u,
     90 	3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
     91 	5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u,
     92 	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
     93 	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u,
     94 	1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u,
     95 	1u, 16u, 1u, 16u, 3u, 14u, 1u, 16u, 3u, 17u, 1u, 16u, 4u, 14u, 1u, 16u,
     96 	3u, 17u, 3u, 14u, 4u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 14u, 3u, 14u,
     97 	1u, 16u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
     98 	4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 8u, 14u, 3u, 17u, 3u, 9u, 8u, 9u,
     99 	3u, 9u, 3u, 13u, 1u, 16u, 0
    100 };
    101 
    102 static const char _indic_syllable_machine_key_spans[] = {
    103 	16, 1, 3, 3, 1, 3, 3, 1,
    104 	3, 3, 1, 3, 3, 1, 1, 1,
    105 	1, 4, 1, 1, 4, 1, 1, 4,
    106 	1, 1, 11, 11, 11, 11, 11, 11,
    107 	11, 11, 11, 11, 16, 1, 3, 3,
    108 	1, 3, 3, 1, 3, 3, 1, 3,
    109 	3, 1, 1, 1, 1, 4, 1, 1,
    110 	4, 1, 1, 4, 1, 1, 11, 11,
    111 	11, 11, 11, 11, 11, 11, 11, 11,
    112 	16, 1, 3, 3, 1, 3, 3, 1,
    113 	3, 3, 1, 3, 3, 1, 1, 1,
    114 	1, 4, 1, 1, 4, 1, 1, 4,
    115 	1, 1, 11, 11, 11, 11, 11, 11,
    116 	11, 11, 11, 16, 1, 3, 3, 1,
    117 	3, 3, 1, 3, 3, 1, 3, 3,
    118 	1, 1, 1, 1, 4, 1, 1, 4,
    119 	1, 1, 4, 1, 1, 11, 11, 11,
    120 	11, 11, 11, 11, 11, 11, 11, 11,
    121 	11, 3, 3, 3, 3, 1, 3, 3,
    122 	1, 3, 3, 1, 16, 1, 1, 1,
    123 	1, 4, 1, 1, 4, 1, 1, 4,
    124 	1, 1, 16, 15, 12, 11, 16, 15,
    125 	12, 11, 16, 15, 12, 11, 16, 15,
    126 	12, 11, 16, 15, 12, 11, 10, 7,
    127 	5, 1, 1, 15, 7, 2, 7, 11,
    128 	12, 12, 11, 10, 12, 11, 10, 12,
    129 	11, 10, 12, 11, 9, 12, 11, 16,
    130 	12, 12, 16, 16, 16, 16, 16, 12,
    131 	12, 16, 16, 16, 16, 16, 12, 12,
    132 	16, 16, 16, 16, 16, 12, 12, 16,
    133 	16, 16, 16, 16, 12, 12, 12, 12,
    134 	11, 16, 15, 12, 11, 16, 15, 12,
    135 	11, 16, 15, 12, 11, 16, 15, 12,
    136 	11, 10, 7, 5, 1, 1, 15, 7,
    137 	2, 7, 11, 12, 12, 11, 10, 12,
    138 	11, 10, 12, 11, 10, 12, 11, 9,
    139 	12, 16, 12, 12, 16, 16, 16, 16,
    140 	16, 12, 12, 16, 16, 16, 16, 16,
    141 	12, 12, 16, 16, 16, 16, 16, 12,
    142 	12, 16, 16, 16, 16, 11, 16, 12,
    143 	12, 11, 16, 15, 12, 11, 16, 15,
    144 	12, 11, 16, 15, 12, 11, 16, 15,
    145 	12, 11, 10, 7, 5, 1, 1, 15,
    146 	7, 2, 7, 11, 12, 12, 11, 10,
    147 	12, 11, 10, 12, 11, 10, 12, 11,
    148 	9, 12, 16, 12, 12, 16, 16, 16,
    149 	16, 16, 12, 12, 16, 16, 16, 16,
    150 	16, 12, 12, 16, 16, 16, 16, 16,
    151 	12, 12, 16, 16, 16, 16, 16, 11,
    152 	12, 11, 12, 12, 11, 16, 15, 12,
    153 	11, 16, 15, 12, 11, 16, 15, 12,
    154 	11, 16, 15, 12, 11, 10, 7, 5,
    155 	1, 1, 15, 7, 2, 7, 11, 12,
    156 	12, 11, 10, 12, 11, 10, 12, 11,
    157 	10, 12, 11, 9, 12, 16, 12, 12,
    158 	16, 16, 16, 16, 16, 12, 12, 16,
    159 	16, 16, 16, 16, 12, 12, 16, 16,
    160 	16, 16, 16, 12, 12, 16, 16, 16,
    161 	16, 16, 12, 16, 15, 16, 11, 16,
    162 	15, 12, 11, 5, 1, 1, 12, 12,
    163 	16, 12, 11, 10, 12, 11, 10, 12,
    164 	11, 10, 12, 11, 7, 15, 7, 2,
    165 	7, 11, 16
    166 };
    167 
    168 static const short _indic_syllable_machine_index_offsets[] = {
    169 	0, 17, 19, 23, 27, 29, 33, 37,
    170 	39, 43, 47, 49, 53, 57, 59, 61,
    171 	63, 65, 70, 72, 74, 79, 81, 83,
    172 	88, 90, 92, 104, 116, 128, 140, 152,
    173 	164, 176, 188, 200, 212, 229, 231, 235,
    174 	239, 241, 245, 249, 251, 255, 259, 261,
    175 	265, 269, 271, 273, 275, 277, 282, 284,
    176 	286, 291, 293, 295, 300, 302, 304, 316,
    177 	328, 340, 352, 364, 376, 388, 400, 412,
    178 	424, 441, 443, 447, 451, 453, 457, 461,
    179 	463, 467, 471, 473, 477, 481, 483, 485,
    180 	487, 489, 494, 496, 498, 503, 505, 507,
    181 	512, 514, 516, 528, 540, 552, 564, 576,
    182 	588, 600, 612, 624, 641, 643, 647, 651,
    183 	653, 657, 661, 663, 667, 671, 673, 677,
    184 	681, 683, 685, 687, 689, 694, 696, 698,
    185 	703, 705, 707, 712, 714, 716, 728, 740,
    186 	752, 764, 776, 788, 800, 812, 824, 836,
    187 	848, 860, 864, 868, 872, 876, 878, 882,
    188 	886, 888, 892, 896, 898, 915, 917, 919,
    189 	921, 923, 928, 930, 932, 937, 939, 941,
    190 	946, 948, 950, 967, 983, 996, 1008, 1025,
    191 	1041, 1054, 1066, 1083, 1099, 1112, 1124, 1141,
    192 	1157, 1170, 1182, 1199, 1215, 1228, 1240, 1251,
    193 	1259, 1265, 1267, 1269, 1285, 1293, 1296, 1304,
    194 	1316, 1329, 1342, 1354, 1365, 1378, 1390, 1401,
    195 	1414, 1426, 1437, 1450, 1462, 1472, 1485, 1497,
    196 	1514, 1527, 1540, 1557, 1574, 1591, 1608, 1625,
    197 	1638, 1651, 1668, 1685, 1702, 1719, 1736, 1749,
    198 	1762, 1779, 1796, 1813, 1830, 1847, 1860, 1873,
    199 	1890, 1907, 1924, 1941, 1958, 1971, 1984, 1997,
    200 	2010, 2022, 2039, 2055, 2068, 2080, 2097, 2113,
    201 	2126, 2138, 2155, 2171, 2184, 2196, 2213, 2229,
    202 	2242, 2254, 2265, 2273, 2279, 2281, 2283, 2299,
    203 	2307, 2310, 2318, 2330, 2343, 2356, 2368, 2379,
    204 	2392, 2404, 2415, 2428, 2440, 2451, 2464, 2476,
    205 	2486, 2499, 2516, 2529, 2542, 2559, 2576, 2593,
    206 	2610, 2627, 2640, 2653, 2670, 2687, 2704, 2721,
    207 	2738, 2751, 2764, 2781, 2798, 2815, 2832, 2849,
    208 	2862, 2875, 2892, 2909, 2926, 2943, 2955, 2972,
    209 	2985, 2998, 3010, 3027, 3043, 3056, 3068, 3085,
    210 	3101, 3114, 3126, 3143, 3159, 3172, 3184, 3201,
    211 	3217, 3230, 3242, 3253, 3261, 3267, 3269, 3271,
    212 	3287, 3295, 3298, 3306, 3318, 3331, 3344, 3356,
    213 	3367, 3380, 3392, 3403, 3416, 3428, 3439, 3452,
    214 	3464, 3474, 3487, 3504, 3517, 3530, 3547, 3564,
    215 	3581, 3598, 3615, 3628, 3641, 3658, 3675, 3692,
    216 	3709, 3726, 3739, 3752, 3769, 3786, 3803, 3820,
    217 	3837, 3850, 3863, 3880, 3897, 3914, 3931, 3948,
    218 	3960, 3973, 3985, 3998, 4011, 4023, 4040, 4056,
    219 	4069, 4081, 4098, 4114, 4127, 4139, 4156, 4172,
    220 	4185, 4197, 4214, 4230, 4243, 4255, 4266, 4274,
    221 	4280, 4282, 4284, 4300, 4308, 4311, 4319, 4331,
    222 	4344, 4357, 4369, 4380, 4393, 4405, 4416, 4429,
    223 	4441, 4452, 4465, 4477, 4487, 4500, 4517, 4530,
    224 	4543, 4560, 4577, 4594, 4611, 4628, 4641, 4654,
    225 	4671, 4688, 4705, 4722, 4739, 4752, 4765, 4782,
    226 	4799, 4816, 4833, 4850, 4863, 4876, 4893, 4910,
    227 	4927, 4944, 4961, 4974, 4991, 5007, 5024, 5036,
    228 	5053, 5069, 5082, 5094, 5100, 5102, 5104, 5117,
    229 	5130, 5147, 5160, 5172, 5183, 5196, 5208, 5219,
    230 	5232, 5244, 5255, 5268, 5280, 5288, 5304, 5312,
    231 	5315, 5323, 5335
    232 };
    233 
    234 static const short _indic_syllable_machine_indicies[] = {
    235 	1, 2, 0, 0, 0, 0, 0, 0,
    236 	0, 0, 0, 0, 0, 0, 0, 1,
    237 	0, 3, 0, 4, 4, 5, 0, 6,
    238 	6, 5, 0, 5, 0, 7, 7, 8,
    239 	0, 9, 9, 8, 0, 8, 0, 10,
    240 	10, 11, 0, 12, 12, 11, 0, 11,
    241 	0, 13, 13, 14, 0, 15, 15, 14,
    242 	0, 14, 0, 16, 0, 17, 0, 18,
    243 	0, 19, 13, 13, 14, 0, 20, 0,
    244 	21, 0, 22, 10, 10, 11, 0, 23,
    245 	0, 24, 0, 25, 7, 7, 8, 0,
    246 	26, 0, 27, 0, 28, 4, 4, 5,
    247 	0, 0, 0, 0, 0, 0, 28, 0,
    248 	28, 4, 4, 5, 0, 0, 0, 0,
    249 	0, 29, 28, 0, 30, 4, 4, 5,
    250 	0, 0, 0, 0, 0, 0, 30, 0,
    251 	30, 4, 4, 5, 0, 0, 0, 0,
    252 	0, 31, 30, 0, 32, 4, 4, 5,
    253 	0, 0, 0, 0, 0, 0, 32, 0,
    254 	32, 4, 4, 5, 0, 0, 0, 0,
    255 	0, 33, 32, 0, 34, 4, 4, 5,
    256 	0, 0, 0, 0, 0, 0, 34, 0,
    257 	34, 4, 4, 5, 0, 0, 0, 0,
    258 	0, 35, 34, 0, 36, 4, 4, 5,
    259 	0, 0, 0, 0, 0, 0, 36, 0,
    260 	36, 4, 4, 5, 0, 0, 0, 0,
    261 	0, 37, 36, 0, 39, 40, 38, 38,
    262 	38, 38, 38, 38, 38, 38, 38, 38,
    263 	38, 38, 38, 39, 38, 41, 38, 42,
    264 	42, 43, 38, 44, 44, 43, 38, 43,
    265 	38, 45, 45, 46, 38, 47, 47, 46,
    266 	38, 46, 38, 48, 48, 49, 38, 50,
    267 	50, 49, 38, 49, 38, 51, 51, 52,
    268 	38, 53, 53, 52, 38, 52, 38, 54,
    269 	38, 55, 38, 56, 38, 57, 51, 51,
    270 	52, 38, 58, 38, 59, 38, 60, 48,
    271 	48, 49, 38, 61, 38, 62, 38, 63,
    272 	45, 45, 46, 38, 64, 38, 65, 38,
    273 	66, 42, 42, 43, 38, 38, 38, 38,
    274 	38, 38, 66, 38, 66, 42, 42, 43,
    275 	38, 38, 38, 38, 38, 67, 66, 38,
    276 	68, 42, 42, 43, 38, 38, 38, 38,
    277 	38, 38, 68, 38, 68, 42, 42, 43,
    278 	38, 38, 38, 38, 38, 69, 68, 38,
    279 	70, 42, 42, 43, 38, 38, 38, 38,
    280 	38, 38, 70, 38, 70, 42, 42, 43,
    281 	38, 38, 38, 38, 38, 71, 70, 38,
    282 	72, 42, 42, 43, 38, 38, 38, 38,
    283 	38, 38, 72, 38, 72, 42, 42, 43,
    284 	38, 38, 38, 38, 38, 73, 72, 38,
    285 	74, 42, 42, 43, 38, 38, 38, 38,
    286 	38, 38, 74, 38, 74, 42, 42, 43,
    287 	38, 38, 38, 38, 38, 75, 74, 38,
    288 	77, 78, 76, 76, 76, 76, 76, 76,
    289 	76, 76, 76, 76, 76, 76, 76, 77,
    290 	76, 79, 76, 80, 80, 81, 76, 83,
    291 	83, 81, 82, 81, 82, 84, 84, 85,
    292 	76, 86, 86, 85, 76, 85, 76, 87,
    293 	87, 88, 76, 89, 89, 88, 76, 88,
    294 	76, 90, 90, 91, 76, 92, 92, 91,
    295 	76, 91, 76, 93, 76, 94, 76, 95,
    296 	76, 96, 90, 90, 91, 76, 97, 76,
    297 	98, 76, 99, 87, 87, 88, 76, 100,
    298 	76, 101, 76, 102, 84, 84, 85, 76,
    299 	103, 76, 104, 76, 105, 80, 80, 81,
    300 	76, 76, 76, 76, 76, 76, 105, 76,
    301 	105, 80, 80, 81, 76, 76, 76, 76,
    302 	76, 106, 105, 76, 107, 80, 80, 81,
    303 	76, 76, 76, 76, 76, 76, 107, 76,
    304 	107, 80, 80, 81, 76, 76, 76, 76,
    305 	76, 108, 107, 76, 109, 80, 80, 81,
    306 	76, 76, 76, 76, 76, 76, 109, 76,
    307 	109, 80, 80, 81, 76, 76, 76, 76,
    308 	76, 110, 109, 76, 111, 80, 80, 81,
    309 	82, 82, 82, 82, 82, 82, 111, 82,
    310 	111, 80, 80, 81, 76, 76, 76, 76,
    311 	76, 112, 111, 76, 113, 80, 80, 81,
    312 	76, 76, 76, 76, 76, 76, 113, 76,
    313 	115, 116, 114, 114, 114, 114, 114, 114,
    314 	114, 114, 114, 114, 114, 114, 114, 115,
    315 	114, 117, 114, 118, 118, 119, 114, 120,
    316 	120, 119, 114, 119, 114, 121, 121, 122,
    317 	114, 123, 123, 122, 114, 122, 114, 124,
    318 	124, 125, 114, 126, 126, 125, 114, 125,
    319 	114, 127, 127, 128, 114, 129, 129, 128,
    320 	114, 128, 114, 130, 114, 131, 114, 132,
    321 	114, 133, 127, 127, 128, 114, 134, 114,
    322 	135, 114, 136, 124, 124, 125, 114, 137,
    323 	114, 138, 114, 139, 121, 121, 122, 114,
    324 	140, 114, 141, 114, 142, 118, 118, 119,
    325 	114, 114, 114, 114, 114, 114, 142, 114,
    326 	142, 118, 118, 119, 114, 114, 114, 114,
    327 	114, 143, 142, 114, 144, 118, 118, 119,
    328 	114, 114, 114, 114, 114, 114, 144, 114,
    329 	144, 118, 118, 119, 114, 114, 114, 114,
    330 	114, 145, 144, 114, 146, 118, 118, 119,
    331 	114, 114, 114, 114, 114, 114, 146, 114,
    332 	146, 118, 118, 119, 114, 114, 114, 114,
    333 	114, 147, 146, 114, 148, 118, 118, 119,
    334 	114, 114, 114, 114, 114, 114, 148, 114,
    335 	148, 118, 118, 119, 114, 114, 114, 114,
    336 	114, 149, 148, 114, 150, 118, 118, 119,
    337 	114, 114, 114, 114, 114, 114, 150, 114,
    338 	150, 118, 118, 119, 114, 114, 114, 114,
    339 	114, 151, 150, 114, 113, 80, 80, 81,
    340 	76, 76, 76, 76, 76, 152, 113, 76,
    341 	111, 80, 80, 81, 0, 0, 0, 0,
    342 	0, 153, 111, 0, 154, 154, 155, 0,
    343 	6, 6, 155, 0, 156, 156, 157, 0,
    344 	158, 158, 157, 0, 157, 0, 159, 159,
    345 	160, 0, 161, 161, 160, 0, 160, 0,
    346 	162, 162, 163, 0, 164, 164, 163, 0,
    347 	163, 0, 165, 166, 0, 0, 0, 0,
    348 	0, 0, 0, 0, 0, 0, 0, 0,
    349 	0, 165, 0, 167, 0, 168, 0, 169,
    350 	0, 170, 0, 171, 162, 162, 163, 0,
    351 	172, 0, 173, 0, 174, 159, 159, 160,
    352 	0, 175, 0, 176, 0, 177, 156, 156,
    353 	157, 0, 178, 0, 179, 0, 181, 182,
    354 	183, 184, 185, 186, 81, 187, 188, 180,
    355 	189, 189, 152, 190, 191, 192, 180, 194,
    356 	195, 196, 197, 5, 198, 199, 200, 193,
    357 	193, 37, 201, 193, 193, 181, 193, 202,
    358 	195, 203, 203, 5, 198, 199, 200, 193,
    359 	193, 193, 201, 193, 195, 203, 203, 5,
    360 	198, 199, 200, 193, 193, 193, 201, 193,
    361 	204, 193, 193, 193, 18, 205, 193, 198,
    362 	199, 193, 193, 193, 193, 206, 193, 204,
    363 	193, 207, 208, 209, 210, 5, 198, 199,
    364 	200, 193, 193, 35, 211, 193, 193, 204,
    365 	193, 212, 208, 213, 213, 5, 198, 199,
    366 	200, 193, 193, 193, 211, 193, 208, 213,
    367 	213, 5, 198, 199, 200, 193, 193, 193,
    368 	211, 193, 214, 193, 193, 193, 18, 215,
    369 	193, 198, 199, 193, 193, 193, 193, 206,
    370 	193, 214, 193, 216, 217, 218, 219, 5,
    371 	198, 199, 200, 193, 193, 33, 220, 193,
    372 	193, 214, 193, 221, 217, 222, 222, 5,
    373 	198, 199, 200, 193, 193, 193, 220, 193,
    374 	217, 222, 222, 5, 198, 199, 200, 193,
    375 	193, 193, 220, 193, 223, 193, 193, 193,
    376 	18, 224, 193, 198, 199, 193, 193, 193,
    377 	193, 206, 193, 223, 193, 225, 226, 227,
    378 	228, 5, 198, 199, 200, 193, 193, 31,
    379 	229, 193, 193, 223, 193, 230, 226, 231,
    380 	231, 5, 198, 199, 200, 193, 193, 193,
    381 	229, 193, 226, 231, 231, 5, 198, 199,
    382 	200, 193, 193, 193, 229, 193, 232, 193,
    383 	193, 193, 18, 233, 193, 198, 199, 193,
    384 	193, 193, 193, 206, 193, 232, 193, 234,
    385 	235, 236, 237, 5, 198, 199, 200, 193,
    386 	193, 29, 238, 193, 193, 232, 193, 239,
    387 	235, 240, 240, 5, 198, 199, 200, 193,
    388 	193, 193, 238, 193, 235, 240, 240, 5,
    389 	198, 199, 200, 193, 193, 193, 238, 193,
    390 	18, 241, 193, 198, 199, 193, 193, 193,
    391 	193, 206, 193, 198, 199, 193, 193, 193,
    392 	193, 206, 193, 242, 193, 193, 193, 199,
    393 	193, 199, 193, 243, 193, 244, 193, 245,
    394 	246, 193, 198, 199, 193, 193, 193, 3,
    395 	193, 193, 193, 1, 193, 2, 193, 193,
    396 	193, 193, 198, 199, 193, 198, 199, 193,
    397 	244, 193, 193, 193, 193, 198, 199, 193,
    398 	244, 193, 245, 193, 193, 198, 199, 193,
    399 	193, 193, 3, 193, 18, 193, 247, 247,
    400 	5, 198, 199, 193, 193, 193, 193, 206,
    401 	193, 248, 27, 249, 250, 8, 198, 199,
    402 	193, 193, 193, 193, 206, 193, 27, 249,
    403 	250, 8, 198, 199, 193, 193, 193, 193,
    404 	206, 193, 249, 249, 8, 198, 199, 193,
    405 	193, 193, 193, 206, 193, 251, 24, 252,
    406 	253, 11, 198, 199, 193, 193, 193, 193,
    407 	206, 193, 24, 252, 253, 11, 198, 199,
    408 	193, 193, 193, 193, 206, 193, 252, 252,
    409 	11, 198, 199, 193, 193, 193, 193, 206,
    410 	193, 254, 21, 255, 256, 14, 198, 199,
    411 	193, 193, 193, 193, 206, 193, 21, 255,
    412 	256, 14, 198, 199, 193, 193, 193, 193,
    413 	206, 193, 255, 255, 14, 198, 199, 193,
    414 	193, 193, 193, 206, 193, 257, 18, 193,
    415 	258, 193, 198, 199, 193, 193, 193, 193,
    416 	206, 193, 18, 193, 258, 193, 198, 199,
    417 	193, 193, 193, 193, 206, 193, 259, 193,
    418 	198, 199, 193, 193, 193, 193, 206, 193,
    419 	18, 193, 193, 193, 193, 198, 199, 193,
    420 	193, 193, 193, 206, 193, 235, 240, 240,
    421 	5, 198, 199, 193, 193, 193, 193, 238,
    422 	193, 1, 2, 193, 193, 18, 241, 193,
    423 	198, 199, 193, 193, 193, 193, 206, 193,
    424 	1, 193, 234, 235, 240, 240, 5, 198,
    425 	199, 200, 193, 193, 193, 238, 193, 234,
    426 	235, 236, 240, 5, 198, 199, 200, 193,
    427 	193, 29, 238, 193, 232, 193, 260, 193,
    428 	247, 247, 5, 198, 199, 193, 193, 193,
    429 	193, 206, 193, 232, 193, 232, 193, 193,
    430 	193, 193, 193, 193, 198, 199, 193, 193,
    431 	193, 193, 206, 193, 232, 193, 232, 193,
    432 	193, 193, 193, 261, 193, 198, 199, 193,
    433 	193, 193, 193, 206, 193, 232, 193, 232,
    434 	193, 260, 193, 193, 193, 193, 198, 199,
    435 	193, 193, 193, 193, 206, 193, 232, 193,
    436 	232, 2, 193, 193, 18, 233, 193, 198,
    437 	199, 193, 193, 193, 193, 206, 193, 232,
    438 	193, 225, 226, 231, 231, 5, 198, 199,
    439 	200, 193, 193, 193, 229, 193, 225, 226,
    440 	227, 231, 5, 198, 199, 200, 193, 193,
    441 	31, 229, 193, 223, 193, 262, 193, 247,
    442 	247, 5, 198, 199, 193, 193, 193, 193,
    443 	206, 193, 223, 193, 223, 193, 193, 193,
    444 	193, 193, 193, 198, 199, 193, 193, 193,
    445 	193, 206, 193, 223, 193, 223, 193, 193,
    446 	193, 193, 263, 193, 198, 199, 193, 193,
    447 	193, 193, 206, 193, 223, 193, 223, 193,
    448 	262, 193, 193, 193, 193, 198, 199, 193,
    449 	193, 193, 193, 206, 193, 223, 193, 223,
    450 	2, 193, 193, 18, 224, 193, 198, 199,
    451 	193, 193, 193, 193, 206, 193, 223, 193,
    452 	216, 217, 222, 222, 5, 198, 199, 200,
    453 	193, 193, 193, 220, 193, 216, 217, 218,
    454 	222, 5, 198, 199, 200, 193, 193, 33,
    455 	220, 193, 214, 193, 264, 193, 247, 247,
    456 	5, 198, 199, 193, 193, 193, 193, 206,
    457 	193, 214, 193, 214, 193, 193, 193, 193,
    458 	193, 193, 198, 199, 193, 193, 193, 193,
    459 	206, 193, 214, 193, 214, 193, 193, 193,
    460 	193, 265, 193, 198, 199, 193, 193, 193,
    461 	193, 206, 193, 214, 193, 214, 193, 264,
    462 	193, 193, 193, 193, 198, 199, 193, 193,
    463 	193, 193, 206, 193, 214, 193, 214, 2,
    464 	193, 193, 18, 215, 193, 198, 199, 193,
    465 	193, 193, 193, 206, 193, 214, 193, 207,
    466 	208, 213, 213, 5, 198, 199, 200, 193,
    467 	193, 193, 211, 193, 207, 208, 209, 213,
    468 	5, 198, 199, 200, 193, 193, 35, 211,
    469 	193, 204, 193, 266, 193, 247, 247, 5,
    470 	198, 199, 193, 193, 193, 193, 206, 193,
    471 	204, 193, 204, 193, 193, 193, 193, 193,
    472 	193, 198, 199, 193, 193, 193, 193, 206,
    473 	193, 204, 193, 204, 193, 193, 193, 193,
    474 	267, 193, 198, 199, 193, 193, 193, 193,
    475 	206, 193, 204, 193, 204, 193, 266, 193,
    476 	193, 193, 193, 198, 199, 193, 193, 193,
    477 	193, 206, 193, 204, 193, 204, 2, 193,
    478 	193, 18, 205, 193, 198, 199, 193, 193,
    479 	193, 193, 206, 193, 204, 193, 194, 195,
    480 	203, 203, 5, 198, 199, 200, 193, 193,
    481 	193, 201, 193, 194, 195, 196, 203, 5,
    482 	198, 199, 200, 193, 193, 37, 201, 193,
    483 	269, 270, 271, 272, 43, 273, 274, 268,
    484 	268, 268, 75, 275, 268, 276, 270, 277,
    485 	272, 43, 273, 274, 268, 268, 268, 268,
    486 	275, 268, 270, 277, 272, 43, 273, 274,
    487 	268, 268, 268, 268, 275, 268, 278, 268,
    488 	268, 268, 56, 279, 268, 273, 274, 268,
    489 	268, 268, 268, 280, 268, 278, 268, 281,
    490 	282, 283, 284, 43, 273, 274, 268, 268,
    491 	268, 73, 285, 268, 268, 278, 268, 286,
    492 	282, 287, 287, 43, 273, 274, 268, 268,
    493 	268, 268, 285, 268, 282, 287, 287, 43,
    494 	273, 274, 268, 268, 268, 268, 285, 268,
    495 	288, 268, 268, 268, 56, 289, 268, 273,
    496 	274, 268, 268, 268, 268, 280, 268, 288,
    497 	268, 290, 291, 292, 293, 43, 273, 274,
    498 	268, 268, 268, 71, 294, 268, 268, 288,
    499 	268, 295, 291, 296, 296, 43, 273, 274,
    500 	268, 268, 268, 268, 294, 268, 291, 296,
    501 	296, 43, 273, 274, 268, 268, 268, 268,
    502 	294, 268, 297, 268, 268, 268, 56, 298,
    503 	268, 273, 274, 268, 268, 268, 268, 280,
    504 	268, 297, 268, 299, 300, 301, 302, 43,
    505 	273, 274, 268, 268, 268, 69, 303, 268,
    506 	268, 297, 268, 304, 300, 305, 305, 43,
    507 	273, 274, 268, 268, 268, 268, 303, 268,
    508 	300, 305, 305, 43, 273, 274, 268, 268,
    509 	268, 268, 303, 268, 306, 268, 268, 268,
    510 	56, 307, 268, 273, 274, 268, 268, 268,
    511 	268, 280, 268, 306, 268, 308, 309, 310,
    512 	311, 43, 273, 274, 268, 268, 268, 67,
    513 	312, 268, 268, 306, 268, 313, 309, 314,
    514 	314, 43, 273, 274, 268, 268, 268, 268,
    515 	312, 268, 309, 314, 314, 43, 273, 274,
    516 	268, 268, 268, 268, 312, 268, 56, 315,
    517 	268, 273, 274, 268, 268, 268, 268, 280,
    518 	268, 273, 274, 268, 268, 268, 268, 280,
    519 	268, 316, 268, 268, 268, 274, 268, 274,
    520 	268, 317, 268, 318, 268, 319, 320, 268,
    521 	273, 274, 268, 268, 268, 41, 268, 268,
    522 	268, 39, 268, 40, 268, 268, 268, 268,
    523 	273, 274, 268, 273, 274, 268, 318, 268,
    524 	268, 268, 268, 273, 274, 268, 318, 268,
    525 	319, 268, 268, 273, 274, 268, 268, 268,
    526 	41, 268, 56, 268, 321, 321, 43, 273,
    527 	274, 268, 268, 268, 268, 280, 268, 322,
    528 	65, 323, 324, 46, 273, 274, 268, 268,
    529 	268, 268, 280, 268, 65, 323, 324, 46,
    530 	273, 274, 268, 268, 268, 268, 280, 268,
    531 	323, 323, 46, 273, 274, 268, 268, 268,
    532 	268, 280, 268, 325, 62, 326, 327, 49,
    533 	273, 274, 268, 268, 268, 268, 280, 268,
    534 	62, 326, 327, 49, 273, 274, 268, 268,
    535 	268, 268, 280, 268, 326, 326, 49, 273,
    536 	274, 268, 268, 268, 268, 280, 268, 328,
    537 	59, 329, 330, 52, 273, 274, 268, 268,
    538 	268, 268, 280, 268, 59, 329, 330, 52,
    539 	273, 274, 268, 268, 268, 268, 280, 268,
    540 	329, 329, 52, 273, 274, 268, 268, 268,
    541 	268, 280, 268, 331, 56, 268, 332, 268,
    542 	273, 274, 268, 268, 268, 268, 280, 268,
    543 	56, 268, 332, 268, 273, 274, 268, 268,
    544 	268, 268, 280, 268, 333, 268, 273, 274,
    545 	268, 268, 268, 268, 280, 268, 56, 268,
    546 	268, 268, 268, 273, 274, 268, 268, 268,
    547 	268, 280, 268, 39, 40, 268, 268, 56,
    548 	315, 268, 273, 274, 268, 268, 268, 268,
    549 	280, 268, 39, 268, 308, 309, 314, 314,
    550 	43, 273, 274, 268, 268, 268, 268, 312,
    551 	268, 308, 309, 310, 314, 43, 273, 274,
    552 	268, 268, 268, 67, 312, 268, 306, 268,
    553 	334, 268, 321, 321, 43, 273, 274, 268,
    554 	268, 268, 268, 280, 268, 306, 268, 306,
    555 	268, 268, 268, 268, 268, 268, 273, 274,
    556 	268, 268, 268, 268, 280, 268, 306, 268,
    557 	306, 268, 268, 268, 268, 335, 268, 273,
    558 	274, 268, 268, 268, 268, 280, 268, 306,
    559 	268, 306, 268, 334, 268, 268, 268, 268,
    560 	273, 274, 268, 268, 268, 268, 280, 268,
    561 	306, 268, 306, 40, 268, 268, 56, 307,
    562 	268, 273, 274, 268, 268, 268, 268, 280,
    563 	268, 306, 268, 299, 300, 305, 305, 43,
    564 	273, 274, 268, 268, 268, 268, 303, 268,
    565 	299, 300, 301, 305, 43, 273, 274, 268,
    566 	268, 268, 69, 303, 268, 297, 268, 336,
    567 	268, 321, 321, 43, 273, 274, 268, 268,
    568 	268, 268, 280, 268, 297, 268, 297, 268,
    569 	268, 268, 268, 268, 268, 273, 274, 268,
    570 	268, 268, 268, 280, 268, 297, 268, 297,
    571 	268, 268, 268, 268, 337, 268, 273, 274,
    572 	268, 268, 268, 268, 280, 268, 297, 268,
    573 	297, 268, 336, 268, 268, 268, 268, 273,
    574 	274, 268, 268, 268, 268, 280, 268, 297,
    575 	268, 297, 40, 268, 268, 56, 298, 268,
    576 	273, 274, 268, 268, 268, 268, 280, 268,
    577 	297, 268, 290, 291, 296, 296, 43, 273,
    578 	274, 268, 268, 268, 268, 294, 268, 290,
    579 	291, 292, 296, 43, 273, 274, 268, 268,
    580 	268, 71, 294, 268, 288, 268, 338, 268,
    581 	321, 321, 43, 273, 274, 268, 268, 268,
    582 	268, 280, 268, 288, 268, 288, 268, 268,
    583 	268, 268, 268, 268, 273, 274, 268, 268,
    584 	268, 268, 280, 268, 288, 268, 288, 268,
    585 	268, 268, 268, 339, 268, 273, 274, 268,
    586 	268, 268, 268, 280, 268, 288, 268, 288,
    587 	268, 338, 268, 268, 268, 268, 273, 274,
    588 	268, 268, 268, 268, 280, 268, 288, 268,
    589 	288, 40, 268, 268, 56, 289, 268, 273,
    590 	274, 268, 268, 268, 268, 280, 268, 288,
    591 	268, 281, 282, 287, 287, 43, 273, 274,
    592 	268, 268, 268, 268, 285, 268, 281, 282,
    593 	283, 287, 43, 273, 274, 268, 268, 268,
    594 	73, 285, 268, 278, 268, 340, 268, 321,
    595 	321, 43, 273, 274, 268, 268, 268, 268,
    596 	280, 268, 278, 268, 278, 268, 268, 268,
    597 	268, 268, 268, 273, 274, 268, 268, 268,
    598 	268, 280, 268, 278, 268, 278, 268, 268,
    599 	268, 268, 341, 268, 273, 274, 268, 268,
    600 	268, 268, 280, 268, 278, 268, 278, 268,
    601 	340, 268, 268, 268, 268, 273, 274, 268,
    602 	268, 268, 268, 280, 268, 278, 268, 74,
    603 	42, 42, 43, 268, 268, 268, 268, 268,
    604 	268, 74, 268, 278, 40, 268, 268, 56,
    605 	279, 268, 273, 274, 268, 268, 268, 268,
    606 	280, 268, 278, 268, 269, 270, 277, 272,
    607 	43, 273, 274, 268, 268, 268, 268, 275,
    608 	268, 343, 184, 344, 344, 81, 187, 188,
    609 	342, 342, 342, 342, 190, 342, 184, 344,
    610 	344, 81, 187, 188, 342, 342, 342, 342,
    611 	190, 342, 345, 342, 342, 342, 95, 346,
    612 	342, 187, 188, 342, 342, 342, 342, 347,
    613 	342, 345, 342, 348, 349, 350, 351, 81,
    614 	187, 188, 342, 342, 342, 112, 352, 342,
    615 	342, 345, 342, 353, 349, 354, 354, 81,
    616 	187, 188, 342, 342, 342, 342, 352, 342,
    617 	349, 354, 354, 81, 187, 188, 342, 342,
    618 	342, 342, 352, 342, 355, 342, 342, 342,
    619 	95, 356, 342, 187, 188, 342, 342, 342,
    620 	342, 347, 342, 355, 342, 357, 358, 359,
    621 	360, 81, 187, 188, 342, 342, 342, 110,
    622 	361, 342, 342, 355, 342, 362, 358, 363,
    623 	363, 81, 187, 188, 342, 342, 342, 342,
    624 	361, 342, 358, 363, 363, 81, 187, 188,
    625 	342, 342, 342, 342, 361, 342, 364, 342,
    626 	342, 342, 95, 365, 342, 187, 188, 342,
    627 	342, 342, 342, 347, 342, 364, 342, 366,
    628 	367, 368, 369, 81, 187, 188, 342, 342,
    629 	342, 108, 370, 342, 342, 364, 342, 371,
    630 	367, 372, 372, 81, 187, 188, 342, 342,
    631 	342, 342, 370, 342, 367, 372, 372, 81,
    632 	187, 188, 342, 342, 342, 342, 370, 342,
    633 	373, 342, 342, 342, 95, 374, 342, 187,
    634 	188, 342, 342, 342, 342, 347, 342, 373,
    635 	342, 375, 376, 377, 378, 81, 187, 188,
    636 	342, 342, 342, 106, 379, 342, 342, 373,
    637 	342, 380, 376, 381, 381, 81, 187, 188,
    638 	342, 342, 342, 342, 379, 342, 376, 381,
    639 	381, 81, 187, 188, 342, 342, 342, 342,
    640 	379, 342, 95, 382, 342, 187, 188, 342,
    641 	342, 342, 342, 347, 342, 187, 188, 342,
    642 	342, 342, 342, 347, 342, 383, 342, 342,
    643 	342, 188, 342, 188, 342, 384, 342, 385,
    644 	342, 386, 387, 342, 187, 188, 342, 342,
    645 	342, 79, 342, 342, 342, 77, 342, 78,
    646 	342, 342, 342, 342, 187, 188, 342, 187,
    647 	188, 342, 385, 342, 342, 342, 342, 187,
    648 	188, 342, 385, 342, 386, 342, 342, 187,
    649 	188, 342, 342, 342, 79, 342, 95, 342,
    650 	388, 388, 81, 187, 188, 342, 342, 342,
    651 	342, 347, 342, 389, 104, 390, 391, 85,
    652 	187, 188, 342, 342, 342, 342, 347, 342,
    653 	104, 390, 391, 85, 187, 188, 342, 342,
    654 	342, 342, 347, 342, 390, 390, 85, 187,
    655 	188, 342, 342, 342, 342, 347, 342, 392,
    656 	101, 393, 394, 88, 187, 188, 342, 342,
    657 	342, 342, 347, 342, 101, 393, 394, 88,
    658 	187, 188, 342, 342, 342, 342, 347, 342,
    659 	393, 393, 88, 187, 188, 342, 342, 342,
    660 	342, 347, 342, 395, 98, 396, 397, 91,
    661 	187, 188, 342, 342, 342, 342, 347, 342,
    662 	98, 396, 397, 91, 187, 188, 342, 342,
    663 	342, 342, 347, 342, 396, 396, 91, 187,
    664 	188, 342, 342, 342, 342, 347, 342, 398,
    665 	95, 342, 399, 342, 187, 188, 342, 342,
    666 	342, 342, 347, 342, 95, 342, 399, 342,
    667 	187, 188, 342, 342, 342, 342, 347, 342,
    668 	400, 342, 187, 188, 342, 342, 342, 342,
    669 	347, 342, 95, 342, 342, 342, 342, 187,
    670 	188, 342, 342, 342, 342, 347, 342, 77,
    671 	78, 342, 342, 95, 382, 342, 187, 188,
    672 	342, 342, 342, 342, 347, 342, 77, 342,
    673 	375, 376, 381, 381, 81, 187, 188, 342,
    674 	342, 342, 342, 379, 342, 375, 376, 377,
    675 	381, 81, 187, 188, 342, 342, 342, 106,
    676 	379, 342, 373, 342, 401, 342, 388, 388,
    677 	81, 187, 188, 342, 342, 342, 342, 347,
    678 	342, 373, 342, 373, 342, 342, 342, 342,
    679 	342, 342, 187, 188, 342, 342, 342, 342,
    680 	347, 342, 373, 342, 373, 342, 342, 342,
    681 	342, 402, 342, 187, 188, 342, 342, 342,
    682 	342, 347, 342, 373, 342, 373, 342, 401,
    683 	342, 342, 342, 342, 187, 188, 342, 342,
    684 	342, 342, 347, 342, 373, 342, 373, 78,
    685 	342, 342, 95, 374, 342, 187, 188, 342,
    686 	342, 342, 342, 347, 342, 373, 342, 366,
    687 	367, 372, 372, 81, 187, 188, 342, 342,
    688 	342, 342, 370, 342, 366, 367, 368, 372,
    689 	81, 187, 188, 342, 342, 342, 108, 370,
    690 	342, 364, 342, 403, 342, 388, 388, 81,
    691 	187, 188, 342, 342, 342, 342, 347, 342,
    692 	364, 342, 364, 342, 342, 342, 342, 342,
    693 	342, 187, 188, 342, 342, 342, 342, 347,
    694 	342, 364, 342, 364, 342, 342, 342, 342,
    695 	404, 342, 187, 188, 342, 342, 342, 342,
    696 	347, 342, 364, 342, 364, 342, 403, 342,
    697 	342, 342, 342, 187, 188, 342, 342, 342,
    698 	342, 347, 342, 364, 342, 364, 78, 342,
    699 	342, 95, 365, 342, 187, 188, 342, 342,
    700 	342, 342, 347, 342, 364, 342, 357, 358,
    701 	363, 363, 81, 187, 188, 342, 342, 342,
    702 	342, 361, 342, 357, 358, 359, 363, 81,
    703 	187, 188, 342, 342, 342, 110, 361, 342,
    704 	355, 342, 405, 342, 388, 388, 81, 187,
    705 	188, 342, 342, 342, 342, 347, 342, 355,
    706 	342, 355, 342, 342, 342, 342, 342, 342,
    707 	187, 188, 342, 342, 342, 342, 347, 342,
    708 	355, 342, 355, 342, 342, 342, 342, 406,
    709 	342, 187, 188, 342, 342, 342, 342, 347,
    710 	342, 355, 342, 355, 342, 405, 342, 342,
    711 	342, 342, 187, 188, 342, 342, 342, 342,
    712 	347, 342, 355, 342, 355, 78, 342, 342,
    713 	95, 356, 342, 187, 188, 342, 342, 342,
    714 	342, 347, 342, 355, 342, 348, 349, 354,
    715 	354, 81, 187, 188, 342, 342, 342, 342,
    716 	352, 342, 348, 349, 350, 354, 81, 187,
    717 	188, 342, 342, 342, 112, 352, 342, 345,
    718 	342, 407, 342, 388, 388, 81, 187, 188,
    719 	342, 342, 342, 342, 347, 342, 345, 342,
    720 	345, 342, 342, 342, 342, 342, 342, 187,
    721 	188, 342, 342, 342, 342, 347, 342, 345,
    722 	342, 345, 342, 342, 342, 342, 408, 342,
    723 	187, 188, 342, 342, 342, 342, 347, 342,
    724 	345, 342, 345, 342, 407, 342, 342, 342,
    725 	342, 187, 188, 342, 342, 342, 342, 347,
    726 	342, 345, 342, 345, 78, 342, 342, 95,
    727 	346, 342, 187, 188, 342, 342, 342, 342,
    728 	347, 342, 345, 342, 113, 80, 80, 81,
    729 	409, 409, 409, 409, 409, 152, 113, 409,
    730 	183, 184, 344, 344, 81, 187, 188, 342,
    731 	342, 342, 342, 190, 342, 113, 80, 80,
    732 	81, 409, 409, 409, 409, 409, 409, 113,
    733 	409, 411, 412, 413, 414, 119, 415, 416,
    734 	410, 410, 410, 151, 417, 410, 418, 412,
    735 	414, 414, 119, 415, 416, 410, 410, 410,
    736 	410, 417, 410, 412, 414, 414, 119, 415,
    737 	416, 410, 410, 410, 410, 417, 410, 419,
    738 	410, 410, 410, 132, 420, 410, 415, 416,
    739 	410, 410, 410, 410, 421, 410, 419, 410,
    740 	422, 423, 424, 425, 119, 415, 416, 410,
    741 	410, 410, 149, 426, 410, 410, 419, 410,
    742 	427, 423, 428, 428, 119, 415, 416, 410,
    743 	410, 410, 410, 426, 410, 423, 428, 428,
    744 	119, 415, 416, 410, 410, 410, 410, 426,
    745 	410, 429, 410, 410, 410, 132, 430, 410,
    746 	415, 416, 410, 410, 410, 410, 421, 410,
    747 	429, 410, 431, 432, 433, 434, 119, 415,
    748 	416, 410, 410, 410, 147, 435, 410, 410,
    749 	429, 410, 436, 432, 437, 437, 119, 415,
    750 	416, 410, 410, 410, 410, 435, 410, 432,
    751 	437, 437, 119, 415, 416, 410, 410, 410,
    752 	410, 435, 410, 438, 410, 410, 410, 132,
    753 	439, 410, 415, 416, 410, 410, 410, 410,
    754 	421, 410, 438, 410, 440, 441, 442, 443,
    755 	119, 415, 416, 410, 410, 410, 145, 444,
    756 	410, 410, 438, 410, 445, 441, 446, 446,
    757 	119, 415, 416, 410, 410, 410, 410, 444,
    758 	410, 441, 446, 446, 119, 415, 416, 410,
    759 	410, 410, 410, 444, 410, 447, 410, 410,
    760 	410, 132, 448, 410, 415, 416, 410, 410,
    761 	410, 410, 421, 410, 447, 410, 449, 450,
    762 	451, 452, 119, 415, 416, 410, 410, 410,
    763 	143, 453, 410, 410, 447, 410, 454, 450,
    764 	455, 455, 119, 415, 416, 410, 410, 410,
    765 	410, 453, 410, 450, 455, 455, 119, 415,
    766 	416, 410, 410, 410, 410, 453, 410, 132,
    767 	456, 410, 415, 416, 410, 410, 410, 410,
    768 	421, 410, 415, 416, 410, 410, 410, 410,
    769 	421, 410, 457, 410, 410, 410, 416, 410,
    770 	416, 410, 458, 410, 459, 410, 460, 461,
    771 	410, 415, 416, 410, 410, 410, 117, 410,
    772 	410, 410, 115, 410, 116, 410, 410, 410,
    773 	410, 415, 416, 410, 415, 416, 410, 459,
    774 	410, 410, 410, 410, 415, 416, 410, 459,
    775 	410, 460, 410, 410, 415, 416, 410, 410,
    776 	410, 117, 410, 132, 410, 462, 462, 119,
    777 	415, 416, 410, 410, 410, 410, 421, 410,
    778 	463, 141, 464, 465, 122, 415, 416, 410,
    779 	410, 410, 410, 421, 410, 141, 464, 465,
    780 	122, 415, 416, 410, 410, 410, 410, 421,
    781 	410, 464, 464, 122, 415, 416, 410, 410,
    782 	410, 410, 421, 410, 466, 138, 467, 468,
    783 	125, 415, 416, 410, 410, 410, 410, 421,
    784 	410, 138, 467, 468, 125, 415, 416, 410,
    785 	410, 410, 410, 421, 410, 467, 467, 125,
    786 	415, 416, 410, 410, 410, 410, 421, 410,
    787 	469, 135, 470, 471, 128, 415, 416, 410,
    788 	410, 410, 410, 421, 410, 135, 470, 471,
    789 	128, 415, 416, 410, 410, 410, 410, 421,
    790 	410, 470, 470, 128, 415, 416, 410, 410,
    791 	410, 410, 421, 410, 472, 132, 410, 473,
    792 	410, 415, 416, 410, 410, 410, 410, 421,
    793 	410, 132, 410, 473, 410, 415, 416, 410,
    794 	410, 410, 410, 421, 410, 474, 410, 415,
    795 	416, 410, 410, 410, 410, 421, 410, 132,
    796 	410, 410, 410, 410, 415, 416, 410, 410,
    797 	410, 410, 421, 410, 115, 116, 410, 410,
    798 	132, 456, 410, 415, 416, 410, 410, 410,
    799 	410, 421, 410, 115, 410, 449, 450, 455,
    800 	455, 119, 415, 416, 410, 410, 410, 410,
    801 	453, 410, 449, 450, 451, 455, 119, 415,
    802 	416, 410, 410, 410, 143, 453, 410, 447,
    803 	410, 475, 410, 462, 462, 119, 415, 416,
    804 	410, 410, 410, 410, 421, 410, 447, 410,
    805 	447, 410, 410, 410, 410, 410, 410, 415,
    806 	416, 410, 410, 410, 410, 421, 410, 447,
    807 	410, 447, 410, 410, 410, 410, 476, 410,
    808 	415, 416, 410, 410, 410, 410, 421, 410,
    809 	447, 410, 447, 410, 475, 410, 410, 410,
    810 	410, 415, 416, 410, 410, 410, 410, 421,
    811 	410, 447, 410, 447, 116, 410, 410, 132,
    812 	448, 410, 415, 416, 410, 410, 410, 410,
    813 	421, 410, 447, 410, 440, 441, 446, 446,
    814 	119, 415, 416, 410, 410, 410, 410, 444,
    815 	410, 440, 441, 442, 446, 119, 415, 416,
    816 	410, 410, 410, 145, 444, 410, 438, 410,
    817 	477, 410, 462, 462, 119, 415, 416, 410,
    818 	410, 410, 410, 421, 410, 438, 410, 438,
    819 	410, 410, 410, 410, 410, 410, 415, 416,
    820 	410, 410, 410, 410, 421, 410, 438, 410,
    821 	438, 410, 410, 410, 410, 478, 410, 415,
    822 	416, 410, 410, 410, 410, 421, 410, 438,
    823 	410, 438, 410, 477, 410, 410, 410, 410,
    824 	415, 416, 410, 410, 410, 410, 421, 410,
    825 	438, 410, 438, 116, 410, 410, 132, 439,
    826 	410, 415, 416, 410, 410, 410, 410, 421,
    827 	410, 438, 410, 431, 432, 437, 437, 119,
    828 	415, 416, 410, 410, 410, 410, 435, 410,
    829 	431, 432, 433, 437, 119, 415, 416, 410,
    830 	410, 410, 147, 435, 410, 429, 410, 479,
    831 	410, 462, 462, 119, 415, 416, 410, 410,
    832 	410, 410, 421, 410, 429, 410, 429, 410,
    833 	410, 410, 410, 410, 410, 415, 416, 410,
    834 	410, 410, 410, 421, 410, 429, 410, 429,
    835 	410, 410, 410, 410, 480, 410, 415, 416,
    836 	410, 410, 410, 410, 421, 410, 429, 410,
    837 	429, 410, 479, 410, 410, 410, 410, 415,
    838 	416, 410, 410, 410, 410, 421, 410, 429,
    839 	410, 429, 116, 410, 410, 132, 430, 410,
    840 	415, 416, 410, 410, 410, 410, 421, 410,
    841 	429, 410, 422, 423, 428, 428, 119, 415,
    842 	416, 410, 410, 410, 410, 426, 410, 422,
    843 	423, 424, 428, 119, 415, 416, 410, 410,
    844 	410, 149, 426, 410, 419, 410, 481, 410,
    845 	462, 462, 119, 415, 416, 410, 410, 410,
    846 	410, 421, 410, 419, 410, 419, 410, 410,
    847 	410, 410, 410, 410, 415, 416, 410, 410,
    848 	410, 410, 421, 410, 419, 410, 419, 410,
    849 	410, 410, 410, 482, 410, 415, 416, 410,
    850 	410, 410, 410, 421, 410, 419, 410, 419,
    851 	410, 481, 410, 410, 410, 410, 415, 416,
    852 	410, 410, 410, 410, 421, 410, 419, 410,
    853 	419, 116, 410, 410, 132, 420, 410, 415,
    854 	416, 410, 410, 410, 410, 421, 410, 419,
    855 	410, 411, 412, 414, 414, 119, 415, 416,
    856 	410, 410, 410, 410, 417, 410, 181, 182,
    857 	183, 184, 483, 344, 81, 187, 188, 342,
    858 	189, 189, 152, 190, 342, 181, 342, 194,
    859 	484, 196, 197, 5, 198, 199, 200, 193,
    860 	193, 37, 201, 193, 193, 181, 193, 204,
    861 	182, 183, 184, 485, 486, 81, 487, 488,
    862 	193, 189, 189, 152, 489, 193, 204, 193,
    863 	113, 80, 80, 81, 198, 199, 193, 193,
    864 	193, 152, 490, 193, 491, 2, 342, 342,
    865 	342, 408, 342, 187, 188, 342, 342, 342,
    866 	342, 347, 342, 491, 342, 492, 349, 493,
    867 	494, 81, 487, 488, 193, 193, 193, 153,
    868 	352, 193, 193, 491, 193, 495, 349, 354,
    869 	354, 81, 487, 488, 193, 193, 193, 193,
    870 	352, 193, 349, 354, 354, 81, 487, 488,
    871 	193, 193, 193, 193, 352, 193, 496, 193,
    872 	193, 193, 488, 193, 488, 193, 243, 193,
    873 	492, 349, 354, 354, 81, 487, 488, 193,
    874 	193, 193, 193, 352, 193, 492, 349, 493,
    875 	354, 81, 487, 488, 193, 193, 193, 153,
    876 	352, 193, 204, 193, 266, 113, 497, 497,
    877 	155, 198, 199, 193, 193, 193, 193, 490,
    878 	193, 204, 193, 498, 179, 499, 500, 157,
    879 	487, 488, 193, 193, 193, 193, 501, 193,
    880 	179, 499, 500, 157, 487, 488, 193, 193,
    881 	193, 193, 501, 193, 499, 499, 157, 487,
    882 	488, 193, 193, 193, 193, 501, 193, 502,
    883 	176, 503, 504, 160, 487, 488, 193, 193,
    884 	193, 193, 501, 193, 176, 503, 504, 160,
    885 	487, 488, 193, 193, 193, 193, 501, 193,
    886 	503, 503, 160, 487, 488, 193, 193, 193,
    887 	193, 501, 193, 505, 173, 506, 507, 163,
    888 	487, 488, 193, 193, 193, 193, 501, 193,
    889 	173, 506, 507, 163, 487, 488, 193, 193,
    890 	193, 193, 501, 193, 506, 506, 163, 487,
    891 	488, 193, 193, 193, 193, 501, 193, 508,
    892 	170, 193, 509, 193, 487, 488, 193, 193,
    893 	193, 193, 501, 193, 170, 193, 509, 193,
    894 	487, 488, 193, 193, 193, 193, 501, 193,
    895 	487, 488, 193, 193, 193, 193, 501, 193,
    896 	510, 193, 511, 512, 193, 487, 488, 193,
    897 	193, 193, 167, 193, 193, 193, 165, 193,
    898 	166, 193, 193, 193, 193, 487, 488, 193,
    899 	487, 488, 193, 510, 193, 193, 193, 193,
    900 	487, 488, 193, 510, 193, 511, 193, 193,
    901 	487, 488, 193, 193, 193, 167, 193, 491,
    902 	166, 342, 342, 95, 346, 342, 187, 188,
    903 	342, 342, 342, 342, 347, 342, 491, 342,
    904 	0
    905 };
    906 
    907 static const short _indic_syllable_machine_trans_targs[] = {
    908 	170, 195, 197, 198, 3, 201, 4, 6,
    909 	204, 7, 9, 207, 10, 12, 210, 13,
    910 	15, 16, 191, 18, 19, 209, 21, 22,
    911 	206, 24, 25, 203, 212, 216, 220, 223,
    912 	227, 230, 234, 237, 241, 244, 170, 270,
    913 	272, 273, 39, 276, 40, 42, 279, 43,
    914 	45, 282, 46, 48, 285, 49, 51, 52,
    915 	266, 54, 55, 284, 57, 58, 281, 60,
    916 	61, 278, 287, 290, 294, 297, 301, 304,
    917 	308, 311, 315, 319, 170, 343, 345, 346,
    918 	75, 349, 170, 76, 78, 352, 79, 81,
    919 	355, 82, 84, 358, 85, 87, 88, 339,
    920 	90, 91, 357, 93, 94, 354, 96, 97,
    921 	351, 360, 363, 367, 370, 374, 377, 381,
    922 	384, 388, 170, 418, 420, 421, 110, 424,
    923 	111, 113, 427, 114, 116, 430, 117, 119,
    924 	433, 120, 122, 123, 414, 125, 126, 432,
    925 	128, 129, 429, 131, 132, 426, 435, 438,
    926 	442, 445, 449, 452, 456, 459, 463, 466,
    927 	392, 478, 146, 481, 148, 484, 149, 151,
    928 	487, 152, 154, 490, 155, 493, 495, 496,
    929 	159, 160, 492, 162, 163, 489, 165, 166,
    930 	486, 168, 169, 483, 170, 171, 246, 320,
    931 	322, 391, 393, 340, 342, 394, 390, 467,
    932 	468, 170, 172, 174, 35, 245, 192, 194,
    933 	214, 243, 173, 34, 175, 239, 0, 176,
    934 	178, 33, 238, 236, 177, 32, 179, 232,
    935 	180, 182, 31, 231, 229, 181, 30, 183,
    936 	225, 184, 186, 29, 224, 222, 185, 28,
    937 	187, 218, 188, 190, 27, 217, 215, 189,
    938 	26, 200, 193, 170, 196, 1, 199, 2,
    939 	202, 5, 23, 205, 8, 20, 208, 11,
    940 	17, 211, 14, 213, 219, 221, 226, 228,
    941 	233, 235, 240, 242, 170, 247, 249, 71,
    942 	317, 267, 269, 318, 248, 70, 250, 313,
    943 	36, 251, 253, 69, 312, 310, 252, 68,
    944 	254, 306, 255, 257, 67, 305, 303, 256,
    945 	66, 258, 299, 259, 261, 65, 298, 296,
    946 	260, 64, 262, 292, 263, 265, 63, 291,
    947 	289, 264, 62, 275, 268, 170, 271, 37,
    948 	274, 38, 277, 41, 59, 280, 44, 56,
    949 	283, 47, 53, 286, 50, 288, 293, 295,
    950 	300, 302, 307, 309, 314, 316, 170, 321,
    951 	106, 323, 386, 72, 324, 326, 105, 385,
    952 	383, 325, 104, 327, 379, 328, 330, 103,
    953 	378, 376, 329, 102, 331, 372, 332, 334,
    954 	101, 371, 369, 333, 100, 335, 365, 336,
    955 	338, 99, 364, 362, 337, 98, 348, 341,
    956 	170, 344, 73, 347, 74, 350, 77, 95,
    957 	353, 80, 92, 356, 83, 89, 359, 86,
    958 	361, 366, 368, 373, 375, 380, 382, 387,
    959 	389, 170, 170, 395, 397, 142, 141, 415,
    960 	417, 465, 396, 398, 461, 107, 399, 401,
    961 	140, 460, 458, 400, 139, 402, 454, 403,
    962 	405, 138, 453, 451, 404, 137, 406, 447,
    963 	407, 409, 136, 446, 444, 408, 135, 410,
    964 	440, 411, 413, 134, 439, 437, 412, 133,
    965 	423, 416, 170, 419, 108, 422, 109, 425,
    966 	112, 130, 428, 115, 127, 431, 118, 124,
    967 	434, 121, 436, 441, 443, 448, 450, 455,
    968 	457, 462, 464, 143, 469, 470, 480, 475,
    969 	477, 498, 471, 472, 473, 144, 479, 474,
    970 	476, 145, 482, 147, 167, 156, 485, 150,
    971 	164, 488, 153, 161, 491, 158, 494, 157,
    972 	497
    973 };
    974 
    975 static const char _indic_syllable_machine_trans_actions[] = {
    976 	1, 2, 0, 0, 0, 2, 0, 0,
    977 	2, 0, 0, 2, 0, 0, 2, 0,
    978 	0, 0, 2, 0, 0, 2, 0, 0,
    979 	2, 0, 0, 2, 2, 2, 2, 2,
    980 	2, 2, 2, 2, 2, 2, 3, 2,
    981 	0, 0, 0, 2, 0, 0, 2, 0,
    982 	0, 2, 0, 0, 2, 0, 0, 0,
    983 	2, 0, 0, 2, 0, 0, 2, 0,
    984 	0, 2, 2, 2, 2, 2, 2, 2,
    985 	2, 2, 2, 2, 4, 2, 0, 0,
    986 	0, 2, 5, 0, 0, 2, 0, 0,
    987 	2, 0, 0, 2, 0, 0, 0, 2,
    988 	0, 0, 2, 0, 0, 2, 0, 0,
    989 	2, 2, 6, 2, 6, 2, 6, 2,
    990 	6, 2, 7, 2, 0, 0, 0, 2,
    991 	0, 0, 2, 0, 0, 2, 0, 0,
    992 	2, 0, 0, 0, 2, 0, 0, 2,
    993 	0, 0, 2, 0, 0, 2, 2, 2,
    994 	2, 2, 2, 2, 2, 2, 2, 2,
    995 	6, 8, 0, 2, 0, 2, 0, 0,
    996 	2, 0, 0, 2, 0, 2, 0, 0,
    997 	0, 0, 2, 0, 0, 2, 0, 0,
    998 	2, 0, 0, 2, 11, 2, 2, 6,
    999 	2, 12, 12, 0, 0, 2, 2, 6,
   1000 	2, 13, 2, 2, 0, 2, 0, 0,
   1001 	2, 2, 2, 0, 2, 2, 0, 2,
   1002 	2, 0, 2, 2, 2, 0, 2, 2,
   1003 	2, 2, 0, 2, 2, 2, 0, 2,
   1004 	2, 2, 2, 0, 2, 2, 2, 0,
   1005 	2, 2, 2, 2, 0, 2, 2, 2,
   1006 	0, 2, 0, 14, 0, 0, 2, 0,
   1007 	2, 0, 0, 2, 0, 0, 2, 0,
   1008 	0, 2, 0, 2, 2, 2, 2, 2,
   1009 	2, 2, 2, 2, 15, 2, 2, 0,
   1010 	2, 0, 0, 2, 2, 0, 2, 2,
   1011 	0, 2, 2, 0, 2, 2, 2, 0,
   1012 	2, 2, 2, 2, 0, 2, 2, 2,
   1013 	0, 2, 2, 2, 2, 0, 2, 2,
   1014 	2, 0, 2, 2, 2, 2, 0, 2,
   1015 	2, 2, 0, 2, 0, 16, 0, 0,
   1016 	2, 0, 2, 0, 0, 2, 0, 0,
   1017 	2, 0, 0, 2, 0, 2, 2, 2,
   1018 	2, 2, 2, 2, 2, 2, 17, 6,
   1019 	0, 6, 6, 0, 6, 2, 0, 6,
   1020 	2, 6, 0, 6, 6, 6, 2, 0,
   1021 	6, 2, 6, 0, 6, 6, 6, 2,
   1022 	0, 6, 2, 6, 0, 6, 6, 6,
   1023 	2, 0, 6, 2, 6, 0, 6, 0,
   1024 	18, 0, 0, 2, 0, 2, 0, 0,
   1025 	2, 0, 0, 2, 0, 0, 2, 0,
   1026 	2, 2, 2, 2, 2, 2, 2, 2,
   1027 	2, 19, 20, 2, 2, 0, 0, 0,
   1028 	0, 2, 2, 2, 2, 0, 2, 2,
   1029 	0, 2, 2, 2, 0, 2, 2, 2,
   1030 	2, 0, 2, 2, 2, 0, 2, 2,
   1031 	2, 2, 0, 2, 2, 2, 0, 2,
   1032 	2, 2, 2, 0, 2, 2, 2, 0,
   1033 	2, 0, 21, 0, 0, 2, 0, 2,
   1034 	0, 0, 2, 0, 0, 2, 0, 0,
   1035 	2, 0, 2, 2, 2, 2, 2, 2,
   1036 	2, 2, 2, 0, 0, 8, 2, 0,
   1037 	0, 2, 2, 8, 8, 0, 8, 8,
   1038 	0, 0, 2, 0, 0, 0, 2, 0,
   1039 	0, 2, 0, 0, 2, 0, 0, 0,
   1040 	2
   1041 };
   1042 
   1043 static const char _indic_syllable_machine_to_state_actions[] = {
   1044 	0, 0, 0, 0, 0, 0, 0, 0,
   1045 	0, 0, 0, 0, 0, 0, 0, 0,
   1046 	0, 0, 0, 0, 0, 0, 0, 0,
   1047 	0, 0, 0, 0, 0, 0, 0, 0,
   1048 	0, 0, 0, 0, 0, 0, 0, 0,
   1049 	0, 0, 0, 0, 0, 0, 0, 0,
   1050 	0, 0, 0, 0, 0, 0, 0, 0,
   1051 	0, 0, 0, 0, 0, 0, 0, 0,
   1052 	0, 0, 0, 0, 0, 0, 0, 0,
   1053 	0, 0, 0, 0, 0, 0, 0, 0,
   1054 	0, 0, 0, 0, 0, 0, 0, 0,
   1055 	0, 0, 0, 0, 0, 0, 0, 0,
   1056 	0, 0, 0, 0, 0, 0, 0, 0,
   1057 	0, 0, 0, 0, 0, 0, 0, 0,
   1058 	0, 0, 0, 0, 0, 0, 0, 0,
   1059 	0, 0, 0, 0, 0, 0, 0, 0,
   1060 	0, 0, 0, 0, 0, 0, 0, 0,
   1061 	0, 0, 0, 0, 0, 0, 0, 0,
   1062 	0, 0, 0, 0, 0, 0, 0, 0,
   1063 	0, 0, 0, 0, 0, 0, 0, 0,
   1064 	0, 0, 0, 0, 0, 0, 0, 0,
   1065 	0, 0, 9, 0, 0, 0, 0, 0,
   1066 	0, 0, 0, 0, 0, 0, 0, 0,
   1067 	0, 0, 0, 0, 0, 0, 0, 0,
   1068 	0, 0, 0, 0, 0, 0, 0, 0,
   1069 	0, 0, 0, 0, 0, 0, 0, 0,
   1070 	0, 0, 0, 0, 0, 0, 0, 0,
   1071 	0, 0, 0, 0, 0, 0, 0, 0,
   1072 	0, 0, 0, 0, 0, 0, 0, 0,
   1073 	0, 0, 0, 0, 0, 0, 0, 0,
   1074 	0, 0, 0, 0, 0, 0, 0, 0,
   1075 	0, 0, 0, 0, 0, 0, 0, 0,
   1076 	0, 0, 0, 0, 0, 0, 0, 0,
   1077 	0, 0, 0, 0, 0, 0, 0, 0,
   1078 	0, 0, 0, 0, 0, 0, 0, 0,
   1079 	0, 0, 0, 0, 0, 0, 0, 0,
   1080 	0, 0, 0, 0, 0, 0, 0, 0,
   1081 	0, 0, 0, 0, 0, 0, 0, 0,
   1082 	0, 0, 0, 0, 0, 0, 0, 0,
   1083 	0, 0, 0, 0, 0, 0, 0, 0,
   1084 	0, 0, 0, 0, 0, 0, 0, 0,
   1085 	0, 0, 0, 0, 0, 0, 0, 0,
   1086 	0, 0, 0, 0, 0, 0, 0, 0,
   1087 	0, 0, 0, 0, 0, 0, 0, 0,
   1088 	0, 0, 0, 0, 0, 0, 0, 0,
   1089 	0, 0, 0, 0, 0, 0, 0, 0,
   1090 	0, 0, 0, 0, 0, 0, 0, 0,
   1091 	0, 0, 0, 0, 0, 0, 0, 0,
   1092 	0, 0, 0, 0, 0, 0, 0, 0,
   1093 	0, 0, 0, 0, 0, 0, 0, 0,
   1094 	0, 0, 0, 0, 0, 0, 0, 0,
   1095 	0, 0, 0, 0, 0, 0, 0, 0,
   1096 	0, 0, 0, 0, 0, 0, 0, 0,
   1097 	0, 0, 0, 0, 0, 0, 0, 0,
   1098 	0, 0, 0, 0, 0, 0, 0, 0,
   1099 	0, 0, 0, 0, 0, 0, 0, 0,
   1100 	0, 0, 0, 0, 0, 0, 0, 0,
   1101 	0, 0, 0, 0, 0, 0, 0, 0,
   1102 	0, 0, 0, 0, 0, 0, 0, 0,
   1103 	0, 0, 0, 0, 0, 0, 0, 0,
   1104 	0, 0, 0, 0, 0, 0, 0, 0,
   1105 	0, 0, 0, 0, 0, 0, 0, 0,
   1106 	0, 0, 0
   1107 };
   1108 
   1109 static const char _indic_syllable_machine_from_state_actions[] = {
   1110 	0, 0, 0, 0, 0, 0, 0, 0,
   1111 	0, 0, 0, 0, 0, 0, 0, 0,
   1112 	0, 0, 0, 0, 0, 0, 0, 0,
   1113 	0, 0, 0, 0, 0, 0, 0, 0,
   1114 	0, 0, 0, 0, 0, 0, 0, 0,
   1115 	0, 0, 0, 0, 0, 0, 0, 0,
   1116 	0, 0, 0, 0, 0, 0, 0, 0,
   1117 	0, 0, 0, 0, 0, 0, 0, 0,
   1118 	0, 0, 0, 0, 0, 0, 0, 0,
   1119 	0, 0, 0, 0, 0, 0, 0, 0,
   1120 	0, 0, 0, 0, 0, 0, 0, 0,
   1121 	0, 0, 0, 0, 0, 0, 0, 0,
   1122 	0, 0, 0, 0, 0, 0, 0, 0,
   1123 	0, 0, 0, 0, 0, 0, 0, 0,
   1124 	0, 0, 0, 0, 0, 0, 0, 0,
   1125 	0, 0, 0, 0, 0, 0, 0, 0,
   1126 	0, 0, 0, 0, 0, 0, 0, 0,
   1127 	0, 0, 0, 0, 0, 0, 0, 0,
   1128 	0, 0, 0, 0, 0, 0, 0, 0,
   1129 	0, 0, 0, 0, 0, 0, 0, 0,
   1130 	0, 0, 0, 0, 0, 0, 0, 0,
   1131 	0, 0, 10, 0, 0, 0, 0, 0,
   1132 	0, 0, 0, 0, 0, 0, 0, 0,
   1133 	0, 0, 0, 0, 0, 0, 0, 0,
   1134 	0, 0, 0, 0, 0, 0, 0, 0,
   1135 	0, 0, 0, 0, 0, 0, 0, 0,
   1136 	0, 0, 0, 0, 0, 0, 0, 0,
   1137 	0, 0, 0, 0, 0, 0, 0, 0,
   1138 	0, 0, 0, 0, 0, 0, 0, 0,
   1139 	0, 0, 0, 0, 0, 0, 0, 0,
   1140 	0, 0, 0, 0, 0, 0, 0, 0,
   1141 	0, 0, 0, 0, 0, 0, 0, 0,
   1142 	0, 0, 0, 0, 0, 0, 0, 0,
   1143 	0, 0, 0, 0, 0, 0, 0, 0,
   1144 	0, 0, 0, 0, 0, 0, 0, 0,
   1145 	0, 0, 0, 0, 0, 0, 0, 0,
   1146 	0, 0, 0, 0, 0, 0, 0, 0,
   1147 	0, 0, 0, 0, 0, 0, 0, 0,
   1148 	0, 0, 0, 0, 0, 0, 0, 0,
   1149 	0, 0, 0, 0, 0, 0, 0, 0,
   1150 	0, 0, 0, 0, 0, 0, 0, 0,
   1151 	0, 0, 0, 0, 0, 0, 0, 0,
   1152 	0, 0, 0, 0, 0, 0, 0, 0,
   1153 	0, 0, 0, 0, 0, 0, 0, 0,
   1154 	0, 0, 0, 0, 0, 0, 0, 0,
   1155 	0, 0, 0, 0, 0, 0, 0, 0,
   1156 	0, 0, 0, 0, 0, 0, 0, 0,
   1157 	0, 0, 0, 0, 0, 0, 0, 0,
   1158 	0, 0, 0, 0, 0, 0, 0, 0,
   1159 	0, 0, 0, 0, 0, 0, 0, 0,
   1160 	0, 0, 0, 0, 0, 0, 0, 0,
   1161 	0, 0, 0, 0, 0, 0, 0, 0,
   1162 	0, 0, 0, 0, 0, 0, 0, 0,
   1163 	0, 0, 0, 0, 0, 0, 0, 0,
   1164 	0, 0, 0, 0, 0, 0, 0, 0,
   1165 	0, 0, 0, 0, 0, 0, 0, 0,
   1166 	0, 0, 0, 0, 0, 0, 0, 0,
   1167 	0, 0, 0, 0, 0, 0, 0, 0,
   1168 	0, 0, 0, 0, 0, 0, 0, 0,
   1169 	0, 0, 0, 0, 0, 0, 0, 0,
   1170 	0, 0, 0, 0, 0, 0, 0, 0,
   1171 	0, 0, 0, 0, 0, 0, 0, 0,
   1172 	0, 0, 0
   1173 };
   1174 
   1175 static const short _indic_syllable_machine_eof_trans[] = {
   1176 	1, 1, 1, 1, 1, 1, 1, 1,
   1177 	1, 1, 1, 1, 1, 1, 1, 1,
   1178 	1, 1, 1, 1, 1, 1, 1, 1,
   1179 	1, 1, 1, 1, 1, 1, 1, 1,
   1180 	1, 1, 1, 1, 39, 39, 39, 39,
   1181 	39, 39, 39, 39, 39, 39, 39, 39,
   1182 	39, 39, 39, 39, 39, 39, 39, 39,
   1183 	39, 39, 39, 39, 39, 39, 39, 39,
   1184 	39, 39, 39, 39, 39, 39, 39, 39,
   1185 	77, 77, 77, 83, 83, 77, 77, 77,
   1186 	77, 77, 77, 77, 77, 77, 77, 77,
   1187 	77, 77, 77, 77, 77, 77, 77, 77,
   1188 	77, 77, 77, 77, 77, 77, 77, 77,
   1189 	83, 77, 77, 115, 115, 115, 115, 115,
   1190 	115, 115, 115, 115, 115, 115, 115, 115,
   1191 	115, 115, 115, 115, 115, 115, 115, 115,
   1192 	115, 115, 115, 115, 115, 115, 115, 115,
   1193 	115, 115, 115, 115, 115, 115, 115, 77,
   1194 	1, 1, 1, 1, 1, 1, 1, 1,
   1195 	1, 1, 1, 1, 1, 1, 1, 1,
   1196 	1, 1, 1, 1, 1, 1, 1, 1,
   1197 	1, 1, 0, 194, 194, 194, 194, 194,
   1198 	194, 194, 194, 194, 194, 194, 194, 194,
   1199 	194, 194, 194, 194, 194, 194, 194, 194,
   1200 	194, 194, 194, 194, 194, 194, 194, 194,
   1201 	194, 194, 194, 194, 194, 194, 194, 194,
   1202 	194, 194, 194, 194, 194, 194, 194, 194,
   1203 	194, 194, 194, 194, 194, 194, 194, 194,
   1204 	194, 194, 194, 194, 194, 194, 194, 194,
   1205 	194, 194, 194, 194, 194, 194, 194, 194,
   1206 	194, 194, 194, 194, 194, 194, 269, 269,
   1207 	269, 269, 269, 269, 269, 269, 269, 269,
   1208 	269, 269, 269, 269, 269, 269, 269, 269,
   1209 	269, 269, 269, 269, 269, 269, 269, 269,
   1210 	269, 269, 269, 269, 269, 269, 269, 269,
   1211 	269, 269, 269, 269, 269, 269, 269, 269,
   1212 	269, 269, 269, 269, 269, 269, 269, 269,
   1213 	269, 269, 269, 269, 269, 269, 269, 269,
   1214 	269, 269, 269, 269, 269, 269, 269, 269,
   1215 	269, 269, 269, 269, 269, 269, 269, 269,
   1216 	343, 343, 343, 343, 343, 343, 343, 343,
   1217 	343, 343, 343, 343, 343, 343, 343, 343,
   1218 	343, 343, 343, 343, 343, 343, 343, 343,
   1219 	343, 343, 343, 343, 343, 343, 343, 343,
   1220 	343, 343, 343, 343, 343, 343, 343, 343,
   1221 	343, 343, 343, 343, 343, 343, 343, 343,
   1222 	343, 343, 343, 343, 343, 343, 343, 343,
   1223 	343, 343, 343, 343, 343, 343, 343, 343,
   1224 	343, 343, 343, 343, 343, 343, 343, 410,
   1225 	343, 410, 411, 411, 411, 411, 411, 411,
   1226 	411, 411, 411, 411, 411, 411, 411, 411,
   1227 	411, 411, 411, 411, 411, 411, 411, 411,
   1228 	411, 411, 411, 411, 411, 411, 411, 411,
   1229 	411, 411, 411, 411, 411, 411, 411, 411,
   1230 	411, 411, 411, 411, 411, 411, 411, 411,
   1231 	411, 411, 411, 411, 411, 411, 411, 411,
   1232 	411, 411, 411, 411, 411, 411, 411, 411,
   1233 	411, 411, 411, 411, 411, 411, 411, 411,
   1234 	411, 411, 411, 343, 194, 194, 194, 343,
   1235 	194, 194, 194, 194, 194, 194, 194, 194,
   1236 	194, 194, 194, 194, 194, 194, 194, 194,
   1237 	194, 194, 194, 194, 194, 194, 194, 194,
   1238 	194, 194, 343
   1239 };
   1240 
   1241 static const int indic_syllable_machine_start = 170;
   1242 static const int indic_syllable_machine_first_final = 170;
   1243 static const int indic_syllable_machine_error = -1;
   1244 
   1245 static const int indic_syllable_machine_en_main = 170;
   1246 
   1247 
   1248 #line 36 "hb-ot-shape-complex-indic-machine.rl"
   1249 
   1250 
   1251 
   1252 #line 91 "hb-ot-shape-complex-indic-machine.rl"
   1253 
   1254 
   1255 #define found_syllable(syllable_type) \
   1256   HB_STMT_START { \
   1257     if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
   1258     for (unsigned int i = last; i < p+1; i++) \
   1259       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
   1260     last = p+1; \
   1261     syllable_serial++; \
   1262     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
   1263   } HB_STMT_END
   1264 
   1265 static void
   1266 find_syllables (hb_buffer_t *buffer)
   1267 {
   1268   unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
   1269   int cs;
   1270   hb_glyph_info_t *info = buffer->info;
   1271 
   1272 #line 1273 "hb-ot-shape-complex-indic-machine.hh.tmp"
   1273 	{
   1274 	cs = indic_syllable_machine_start;
   1275 	ts = 0;
   1276 	te = 0;
   1277 	act = 0;
   1278 	}
   1279 
   1280 #line 112 "hb-ot-shape-complex-indic-machine.rl"
   1281 
   1282 
   1283   p = 0;
   1284   pe = eof = buffer->len;
   1285 
   1286   unsigned int last = 0;
   1287   unsigned int syllable_serial = 1;
   1288 
   1289 #line 1290 "hb-ot-shape-complex-indic-machine.hh.tmp"
   1290 	{
   1291 	int _slen;
   1292 	int _trans;
   1293 	const unsigned char *_keys;
   1294 	const short *_inds;
   1295 	if ( p == pe )
   1296 		goto _test_eof;
   1297 _resume:
   1298 	switch ( _indic_syllable_machine_from_state_actions[cs] ) {
   1299 	case 10:
   1300 #line 1 "NONE"
   1301 	{ts = p;}
   1302 	break;
   1303 #line 1304 "hb-ot-shape-complex-indic-machine.hh.tmp"
   1304 	}
   1305 
   1306 	_keys = _indic_syllable_machine_trans_keys + (cs<<1);
   1307 	_inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
   1308 
   1309 	_slen = _indic_syllable_machine_key_spans[cs];
   1310 	_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
   1311 		( info[p].indic_category()) <= _keys[1] ?
   1312 		( info[p].indic_category()) - _keys[0] : _slen ];
   1313 
   1314 _eof_trans:
   1315 	cs = _indic_syllable_machine_trans_targs[_trans];
   1316 
   1317 	if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
   1318 		goto _again;
   1319 
   1320 	switch ( _indic_syllable_machine_trans_actions[_trans] ) {
   1321 	case 2:
   1322 #line 1 "NONE"
   1323 	{te = p+1;}
   1324 	break;
   1325 	case 14:
   1326 #line 83 "hb-ot-shape-complex-indic-machine.rl"
   1327 	{te = p+1;{ found_syllable (consonant_syllable); }}
   1328 	break;
   1329 	case 16:
   1330 #line 84 "hb-ot-shape-complex-indic-machine.rl"
   1331 	{te = p+1;{ found_syllable (vowel_syllable); }}
   1332 	break;
   1333 	case 21:
   1334 #line 85 "hb-ot-shape-complex-indic-machine.rl"
   1335 	{te = p+1;{ found_syllable (standalone_cluster); }}
   1336 	break;
   1337 	case 18:
   1338 #line 86 "hb-ot-shape-complex-indic-machine.rl"
   1339 	{te = p+1;{ found_syllable (broken_cluster); }}
   1340 	break;
   1341 	case 11:
   1342 #line 87 "hb-ot-shape-complex-indic-machine.rl"
   1343 	{te = p+1;{ found_syllable (non_indic_cluster); }}
   1344 	break;
   1345 	case 13:
   1346 #line 83 "hb-ot-shape-complex-indic-machine.rl"
   1347 	{te = p;p--;{ found_syllable (consonant_syllable); }}
   1348 	break;
   1349 	case 15:
   1350 #line 84 "hb-ot-shape-complex-indic-machine.rl"
   1351 	{te = p;p--;{ found_syllable (vowel_syllable); }}
   1352 	break;
   1353 	case 20:
   1354 #line 85 "hb-ot-shape-complex-indic-machine.rl"
   1355 	{te = p;p--;{ found_syllable (standalone_cluster); }}
   1356 	break;
   1357 	case 17:
   1358 #line 86 "hb-ot-shape-complex-indic-machine.rl"
   1359 	{te = p;p--;{ found_syllable (broken_cluster); }}
   1360 	break;
   1361 	case 19:
   1362 #line 87 "hb-ot-shape-complex-indic-machine.rl"
   1363 	{te = p;p--;{ found_syllable (non_indic_cluster); }}
   1364 	break;
   1365 	case 1:
   1366 #line 83 "hb-ot-shape-complex-indic-machine.rl"
   1367 	{{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
   1368 	break;
   1369 	case 3:
   1370 #line 84 "hb-ot-shape-complex-indic-machine.rl"
   1371 	{{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
   1372 	break;
   1373 	case 7:
   1374 #line 85 "hb-ot-shape-complex-indic-machine.rl"
   1375 	{{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
   1376 	break;
   1377 	case 4:
   1378 #line 86 "hb-ot-shape-complex-indic-machine.rl"
   1379 	{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
   1380 	break;
   1381 	case 5:
   1382 #line 1 "NONE"
   1383 	{	switch( act ) {
   1384 	case 1:
   1385 	{{p = ((te))-1;} found_syllable (consonant_syllable); }
   1386 	break;
   1387 	case 4:
   1388 	{{p = ((te))-1;} found_syllable (broken_cluster); }
   1389 	break;
   1390 	case 5:
   1391 	{{p = ((te))-1;} found_syllable (non_indic_cluster); }
   1392 	break;
   1393 	}
   1394 	}
   1395 	break;
   1396 	case 8:
   1397 #line 1 "NONE"
   1398 	{te = p+1;}
   1399 #line 83 "hb-ot-shape-complex-indic-machine.rl"
   1400 	{act = 1;}
   1401 	break;
   1402 	case 6:
   1403 #line 1 "NONE"
   1404 	{te = p+1;}
   1405 #line 86 "hb-ot-shape-complex-indic-machine.rl"
   1406 	{act = 4;}
   1407 	break;
   1408 	case 12:
   1409 #line 1 "NONE"
   1410 	{te = p+1;}
   1411 #line 87 "hb-ot-shape-complex-indic-machine.rl"
   1412 	{act = 5;}
   1413 	break;
   1414 #line 1415 "hb-ot-shape-complex-indic-machine.hh.tmp"
   1415 	}
   1416 
   1417 _again:
   1418 	switch ( _indic_syllable_machine_to_state_actions[cs] ) {
   1419 	case 9:
   1420 #line 1 "NONE"
   1421 	{ts = 0;}
   1422 	break;
   1423 #line 1424 "hb-ot-shape-complex-indic-machine.hh.tmp"
   1424 	}
   1425 
   1426 	if ( ++p != pe )
   1427 		goto _resume;
   1428 	_test_eof: {}
   1429 	if ( p == eof )
   1430 	{
   1431 	if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
   1432 		_trans = _indic_syllable_machine_eof_trans[cs] - 1;
   1433 		goto _eof_trans;
   1434 	}
   1435 	}
   1436 
   1437 	}
   1438 
   1439 #line 121 "hb-ot-shape-complex-indic-machine.rl"
   1440 
   1441 }
   1442 
   1443 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */
   1444