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"
  36 static const unsigned char _indic_syllable_machine_trans_keys[] = {
  37         8u, 8u, 1u, 16u, 8u, 13u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
  38         7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u,
  39         6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u,
  40         4u, 8u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
  41         4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 8u, 8u, 1u, 16u, 8u, 13u,
  42         5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
  43         7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u,
  44         6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u,
  45         4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
  46         4u, 14u, 4u, 14u, 8u, 8u, 1u, 16u, 8u, 13u, 5u, 8u, 5u, 7u, 7u, 7u,
  47         5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
  48         7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u,
  49         6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u,
  50         4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 8u, 8u, 1u, 16u,
  51         8u, 13u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u,
  52         5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u,
  53         4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u,
  54         16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
  55         4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 5u, 8u, 4u, 14u, 4u, 14u, 5u, 8u,
  56         5u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u,
  57         5u, 7u, 7u, 7u, 8u, 8u, 1u, 16u, 8u, 13u, 4u, 8u, 6u, 6u, 16u, 16u,
  58         4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u,
  59         16u, 16u, 8u, 8u, 1u, 19u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u,
  60         3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u,
  61         3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u,
  62         5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u,
  63         3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
  64         3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
  65         5u, 14u, 3u, 14u, 1u, 16u, 4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u,
  66         1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u,
  67         1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
  68         1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
  69         3u, 17u, 3u, 17u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u,
  70         4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u,
  71         4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u, 5u, 10u,
  72         9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u,
  73         5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
  74         4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
  75         3u, 14u, 1u, 16u, 4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u,
  76         1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
  77         1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
  78         3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u,
  79         3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
  80         3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
  81         3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u, 5u, 10u, 9u, 10u, 9u, 9u,
  82         9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u,
  83         3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
  84         3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 1u, 16u,
  85         4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
  86         3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u,
  87         3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u,
  88         1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 3u, 17u, 4u, 14u,
  89         3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
  90         3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
  91         3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u, 5u, 10u, 9u, 10u, 9u, 9u,
  92         9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u,
  93         3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
  94         3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 1u, 16u,
  95         4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
  96         3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u,
  97         3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u,
  98         1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 1u, 17u, 3u, 17u,
  99         1u, 17u, 4u, 14u, 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u,
 100         5u, 10u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 3u, 17u, 3u, 17u, 1u, 16u,
 101         3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
 102         5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u,
 103         3u, 13u, 1u, 16u, 3u, 10u, 5u, 10u, 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u,
 104         9u, 10u, 9u, 9u, 5u, 10u, 1u, 16u, 0
 105 };
 106 
 107 static const char _indic_syllable_machine_key_spans[] = {
 108         1, 16, 6, 4, 3, 1, 4, 3,
 109         1, 4, 3, 1, 4, 3, 1, 5,
 110         1, 1, 5, 1, 1, 5, 1, 1,
 111         5, 1, 1, 11, 11, 11, 11, 11,
 112         11, 11, 11, 11, 11, 1, 16, 6,
 113         4, 3, 1, 4, 3, 1, 4, 3,
 114         1, 4, 3, 1, 5, 1, 1, 5,
 115         1, 1, 5, 1, 1, 5, 1, 1,
 116         11, 11, 11, 11, 11, 11, 11, 11,
 117         11, 11, 1, 16, 6, 4, 3, 1,
 118         4, 3, 1, 4, 3, 1, 4, 3,
 119         1, 5, 1, 1, 5, 1, 1, 5,
 120         1, 1, 5, 1, 1, 11, 11, 11,
 121         11, 11, 11, 11, 11, 11, 1, 16,
 122         6, 4, 3, 1, 4, 3, 1, 4,
 123         3, 1, 4, 3, 1, 5, 1, 1,
 124         5, 1, 1, 5, 1, 1, 5, 1,
 125         1, 11, 11, 11, 11, 11, 11, 11,
 126         11, 11, 11, 11, 4, 11, 11, 4,
 127         3, 4, 3, 1, 4, 3, 1, 4,
 128         3, 1, 1, 16, 6, 5, 1, 1,
 129         5, 1, 1, 5, 1, 1, 5, 1,
 130         1, 1, 19, 15, 15, 14, 16, 15,
 131         15, 14, 16, 15, 15, 14, 16, 15,
 132         15, 14, 16, 15, 15, 14, 10, 10,
 133         6, 2, 1, 2, 2, 1, 6, 11,
 134         8, 6, 8, 11, 12, 12, 11, 10,
 135         12, 11, 10, 12, 11, 10, 12, 11,
 136         10, 12, 16, 11, 15, 15, 16, 16,
 137         16, 16, 16, 15, 15, 16, 16, 16,
 138         16, 16, 15, 15, 16, 16, 16, 16,
 139         16, 15, 15, 16, 16, 16, 16, 16,
 140         15, 15, 15, 15, 14, 16, 15, 15,
 141         14, 16, 15, 15, 14, 16, 15, 15,
 142         14, 16, 15, 15, 14, 10, 10, 6,
 143         2, 1, 2, 2, 1, 6, 11, 8,
 144         6, 8, 11, 12, 12, 11, 10, 12,
 145         11, 10, 12, 11, 10, 12, 11, 10,
 146         12, 16, 11, 15, 15, 16, 16, 16,
 147         16, 16, 15, 15, 16, 16, 16, 16,
 148         16, 15, 15, 16, 16, 16, 16, 16,
 149         15, 15, 16, 16, 16, 16, 11, 16,
 150         15, 15, 14, 16, 15, 15, 14, 16,
 151         15, 15, 14, 16, 15, 15, 14, 16,
 152         15, 15, 14, 10, 10, 6, 2, 1,
 153         2, 2, 1, 6, 11, 8, 6, 8,
 154         11, 12, 12, 11, 10, 12, 11, 10,
 155         12, 11, 10, 12, 11, 10, 12, 16,
 156         11, 15, 15, 16, 16, 16, 16, 16,
 157         15, 15, 16, 16, 16, 16, 16, 15,
 158         15, 16, 16, 16, 16, 16, 15, 15,
 159         16, 16, 16, 16, 16, 11, 15, 11,
 160         15, 15, 14, 16, 15, 15, 14, 16,
 161         15, 15, 14, 16, 15, 15, 14, 16,
 162         15, 15, 14, 10, 10, 6, 2, 1,
 163         2, 2, 1, 6, 11, 8, 6, 8,
 164         11, 12, 12, 11, 10, 12, 11, 10,
 165         12, 11, 10, 12, 11, 10, 12, 16,
 166         11, 15, 15, 16, 16, 16, 16, 16,
 167         15, 15, 16, 16, 16, 16, 16, 15,
 168         15, 16, 16, 16, 16, 16, 15, 15,
 169         16, 16, 16, 16, 16, 15, 17, 15,
 170         17, 11, 6, 2, 1, 2, 2, 1,
 171         6, 16, 15, 15, 14, 15, 15, 16,
 172         12, 11, 10, 12, 11, 10, 12, 11,
 173         10, 12, 11, 10, 11, 8, 6, 8,
 174         11, 16, 8, 6, 6, 2, 1, 2,
 175         2, 1, 6, 16
 176 };
 177 
 178 static const short _indic_syllable_machine_index_offsets[] = {
 179         0, 2, 19, 26, 31, 35, 37, 42,
 180         46, 48, 53, 57, 59, 64, 68, 70,
 181         76, 78, 80, 86, 88, 90, 96, 98,
 182         100, 106, 108, 110, 122, 134, 146, 158,
 183         170, 182, 194, 206, 218, 230, 232, 249,
 184         256, 261, 265, 267, 272, 276, 278, 283,
 185         287, 289, 294, 298, 300, 306, 308, 310,
 186         316, 318, 320, 326, 328, 330, 336, 338,
 187         340, 352, 364, 376, 388, 400, 412, 424,
 188         436, 448, 460, 462, 479, 486, 491, 495,
 189         497, 502, 506, 508, 513, 517, 519, 524,
 190         528, 530, 536, 538, 540, 546, 548, 550,
 191         556, 558, 560, 566, 568, 570, 582, 594,
 192         606, 618, 630, 642, 654, 666, 678, 680,
 193         697, 704, 709, 713, 715, 720, 724, 726,
 194         731, 735, 737, 742, 746, 748, 754, 756,
 195         758, 764, 766, 768, 774, 776, 778, 784,
 196         786, 788, 800, 812, 824, 836, 848, 860,
 197         872, 884, 896, 908, 920, 925, 937, 949,
 198         954, 958, 963, 967, 969, 974, 978, 980,
 199         985, 989, 991, 993, 1010, 1017, 1023, 1025,
 200         1027, 1033, 1035, 1037, 1043, 1045, 1047, 1053,
 201         1055, 1057, 1059, 1079, 1095, 1111, 1126, 1143,
 202         1159, 1175, 1190, 1207, 1223, 1239, 1254, 1271,
 203         1287, 1303, 1318, 1335, 1351, 1367, 1382, 1393,
 204         1404, 1411, 1414, 1416, 1419, 1422, 1424, 1431,
 205         1443, 1452, 1459, 1468, 1480, 1493, 1506, 1518,
 206         1529, 1542, 1554, 1565, 1578, 1590, 1601, 1614,
 207         1626, 1637, 1650, 1667, 1679, 1695, 1711, 1728,
 208         1745, 1762, 1779, 1796, 1812, 1828, 1845, 1862,
 209         1879, 1896, 1913, 1929, 1945, 1962, 1979, 1996,
 210         2013, 2030, 2046, 2062, 2079, 2096, 2113, 2130,
 211         2147, 2163, 2179, 2195, 2211, 2226, 2243, 2259,
 212         2275, 2290, 2307, 2323, 2339, 2354, 2371, 2387,
 213         2403, 2418, 2435, 2451, 2467, 2482, 2493, 2504,
 214         2511, 2514, 2516, 2519, 2522, 2524, 2531, 2543,
 215         2552, 2559, 2568, 2580, 2593, 2606, 2618, 2629,
 216         2642, 2654, 2665, 2678, 2690, 2701, 2714, 2726,
 217         2737, 2750, 2767, 2779, 2795, 2811, 2828, 2845,
 218         2862, 2879, 2896, 2912, 2928, 2945, 2962, 2979,
 219         2996, 3013, 3029, 3045, 3062, 3079, 3096, 3113,
 220         3130, 3146, 3162, 3179, 3196, 3213, 3230, 3242,
 221         3259, 3275, 3291, 3306, 3323, 3339, 3355, 3370,
 222         3387, 3403, 3419, 3434, 3451, 3467, 3483, 3498,
 223         3515, 3531, 3547, 3562, 3573, 3584, 3591, 3594,
 224         3596, 3599, 3602, 3604, 3611, 3623, 3632, 3639,
 225         3648, 3660, 3673, 3686, 3698, 3709, 3722, 3734,
 226         3745, 3758, 3770, 3781, 3794, 3806, 3817, 3830,
 227         3847, 3859, 3875, 3891, 3908, 3925, 3942, 3959,
 228         3976, 3992, 4008, 4025, 4042, 4059, 4076, 4093,
 229         4109, 4125, 4142, 4159, 4176, 4193, 4210, 4226,
 230         4242, 4259, 4276, 4293, 4310, 4327, 4339, 4355,
 231         4367, 4383, 4399, 4414, 4431, 4447, 4463, 4478,
 232         4495, 4511, 4527, 4542, 4559, 4575, 4591, 4606,
 233         4623, 4639, 4655, 4670, 4681, 4692, 4699, 4702,
 234         4704, 4707, 4710, 4712, 4719, 4731, 4740, 4747,
 235         4756, 4768, 4781, 4794, 4806, 4817, 4830, 4842,
 236         4853, 4866, 4878, 4889, 4902, 4914, 4925, 4938,
 237         4955, 4967, 4983, 4999, 5016, 5033, 5050, 5067,
 238         5084, 5100, 5116, 5133, 5150, 5167, 5184, 5201,
 239         5217, 5233, 5250, 5267, 5284, 5301, 5318, 5334,
 240         5350, 5367, 5384, 5401, 5418, 5435, 5451, 5469,
 241         5485, 5503, 5515, 5522, 5525, 5527, 5530, 5533,
 242         5535, 5542, 5559, 5575, 5591, 5606, 5622, 5638,
 243         5655, 5668, 5680, 5691, 5704, 5716, 5727, 5740,
 244         5752, 5763, 5776, 5788, 5799, 5811, 5820, 5827,
 245         5836, 5848, 5865, 5874, 5881, 5888, 5891, 5893,
 246         5896, 5899, 5901, 5908
 247 };
 248 
 249 static const short _indic_syllable_machine_indicies[] = {
 250         1, 0, 2, 3, 0, 0, 0, 0,
 251         0, 0, 0, 0, 0, 0, 0, 0,
 252         0, 2, 0, 1, 0, 0, 0, 0,
 253         4, 0, 5, 5, 6, 1, 0, 7,
 254         7, 6, 0, 6, 0, 8, 8, 9,
 255         1, 0, 10, 10, 9, 0, 9, 0,
 256         11, 11, 12, 1, 0, 13, 13, 12,
 257         0, 12, 0, 14, 14, 15, 1, 0,
 258         16, 16, 15, 0, 15, 0, 17, 0,
 259         0, 0, 1, 0, 18, 0, 19, 0,
 260         20, 14, 14, 15, 1, 0, 21, 0,
 261         22, 0, 23, 11, 11, 12, 1, 0,
 262         24, 0, 25, 0, 26, 8, 8, 9,
 263         1, 0, 27, 0, 28, 0, 29, 5,
 264         5, 6, 1, 0, 0, 0, 0, 0,
 265         29, 0, 29, 5, 5, 6, 1, 0,
 266         0, 0, 0, 30, 29, 0, 31, 5,
 267         5, 6, 1, 0, 0, 0, 0, 0,
 268         31, 0, 31, 5, 5, 6, 1, 0,
 269         0, 0, 0, 32, 31, 0, 33, 5,
 270         5, 6, 1, 0, 0, 0, 0, 0,
 271         33, 0, 33, 5, 5, 6, 1, 0,
 272         0, 0, 0, 34, 33, 0, 35, 5,
 273         5, 6, 1, 0, 0, 0, 0, 0,
 274         35, 0, 35, 5, 5, 6, 1, 0,
 275         0, 0, 0, 36, 35, 0, 37, 5,
 276         5, 6, 1, 0, 0, 0, 0, 0,
 277         37, 0, 37, 5, 5, 6, 1, 0,
 278         0, 0, 0, 38, 37, 0, 40, 39,
 279         41, 42, 39, 39, 39, 39, 39, 39,
 280         39, 39, 39, 39, 39, 39, 39, 41,
 281         39, 40, 39, 39, 39, 39, 43, 39,
 282         44, 44, 45, 40, 39, 46, 46, 45,
 283         39, 45, 39, 47, 47, 48, 40, 39,
 284         49, 49, 48, 39, 48, 39, 50, 50,
 285         51, 40, 39, 52, 52, 51, 39, 51,
 286         39, 53, 53, 54, 40, 39, 55, 55,
 287         54, 39, 54, 39, 56, 39, 39, 39,
 288         40, 39, 57, 39, 58, 39, 59, 53,
 289         53, 54, 40, 39, 60, 39, 61, 39,
 290         62, 50, 50, 51, 40, 39, 63, 39,
 291         64, 39, 65, 47, 47, 48, 40, 39,
 292         66, 39, 67, 39, 68, 44, 44, 45,
 293         40, 39, 39, 39, 39, 39, 68, 39,
 294         68, 44, 44, 45, 40, 39, 39, 39,
 295         39, 69, 68, 39, 70, 44, 44, 45,
 296         40, 39, 39, 39, 39, 39, 70, 39,
 297         70, 44, 44, 45, 40, 39, 39, 39,
 298         39, 71, 70, 39, 72, 44, 44, 45,
 299         40, 39, 39, 39, 39, 39, 72, 39,
 300         72, 44, 44, 45, 40, 39, 39, 39,
 301         39, 73, 72, 39, 74, 44, 44, 45,
 302         40, 39, 39, 39, 39, 39, 74, 39,
 303         74, 44, 44, 45, 40, 39, 39, 39,
 304         39, 75, 74, 39, 76, 44, 44, 45,
 305         40, 39, 39, 39, 39, 39, 76, 39,
 306         76, 44, 44, 45, 40, 39, 39, 39,
 307         39, 77, 76, 39, 79, 78, 80, 81,
 308         78, 78, 78, 78, 78, 78, 78, 78,
 309         78, 78, 78, 78, 78, 80, 78, 79,
 310         78, 78, 78, 78, 82, 78, 83, 83,
 311         84, 79, 78, 86, 86, 84, 85, 84,
 312         85, 87, 87, 88, 79, 78, 89, 89,
 313         88, 78, 88, 78, 90, 90, 91, 79,
 314         78, 92, 92, 91, 78, 91, 78, 93,
 315         93, 94, 79, 78, 95, 95, 94, 78,
 316         94, 78, 96, 78, 78, 78, 79, 78,
 317         97, 78, 98, 78, 99, 93, 93, 94,
 318         79, 78, 100, 78, 101, 78, 102, 90,
 319         90, 91, 79, 78, 103, 78, 104, 78,
 320         105, 87, 87, 88, 79, 78, 106, 78,
 321         107, 78, 108, 83, 83, 84, 79, 78,
 322         78, 78, 78, 78, 108, 78, 108, 83,
 323         83, 84, 79, 78, 78, 78, 78, 109,
 324         108, 78, 110, 83, 83, 84, 79, 78,
 325         78, 78, 78, 78, 110, 78, 110, 83,
 326         83, 84, 79, 78, 78, 78, 78, 111,
 327         110, 78, 112, 83, 83, 84, 79, 78,
 328         78, 78, 78, 78, 112, 78, 112, 83,
 329         83, 84, 79, 78, 78, 78, 78, 113,
 330         112, 78, 114, 83, 83, 84, 79, 78,
 331         78, 78, 78, 78, 114, 78, 114, 83,
 332         83, 84, 79, 78, 78, 78, 78, 115,
 333         114, 78, 116, 83, 83, 84, 79, 78,
 334         78, 78, 78, 78, 116, 78, 118, 117,
 335         119, 120, 117, 117, 117, 117, 117, 117,
 336         117, 117, 117, 117, 117, 117, 117, 119,
 337         117, 118, 117, 117, 117, 117, 121, 117,
 338         122, 122, 123, 118, 117, 124, 124, 123,
 339         117, 123, 117, 125, 125, 126, 118, 117,
 340         127, 127, 126, 117, 126, 117, 128, 128,
 341         129, 118, 117, 130, 130, 129, 117, 129,
 342         117, 131, 131, 132, 118, 117, 133, 133,
 343         132, 117, 132, 117, 134, 117, 117, 117,
 344         118, 117, 135, 117, 136, 117, 137, 131,
 345         131, 132, 118, 117, 138, 117, 139, 117,
 346         140, 128, 128, 129, 118, 117, 141, 117,
 347         142, 117, 143, 125, 125, 126, 118, 117,
 348         144, 117, 145, 117, 146, 122, 122, 123,
 349         118, 117, 117, 117, 117, 117, 146, 117,
 350         146, 122, 122, 123, 118, 117, 117, 117,
 351         117, 147, 146, 117, 148, 122, 122, 123,
 352         118, 117, 117, 117, 117, 117, 148, 117,
 353         148, 122, 122, 123, 118, 117, 117, 117,
 354         117, 149, 148, 117, 150, 122, 122, 123,
 355         118, 117, 117, 117, 117, 117, 150, 117,
 356         150, 122, 122, 123, 118, 117, 117, 117,
 357         117, 151, 150, 117, 152, 122, 122, 123,
 358         118, 117, 117, 117, 117, 117, 152, 117,
 359         152, 122, 122, 123, 118, 117, 117, 117,
 360         117, 153, 152, 117, 154, 122, 122, 123,
 361         118, 117, 117, 117, 117, 117, 154, 117,
 362         154, 122, 122, 123, 118, 117, 117, 117,
 363         117, 155, 154, 117, 116, 83, 83, 84,
 364         79, 78, 78, 78, 78, 156, 116, 78,
 365         86, 86, 84, 1, 0, 114, 83, 83,
 366         84, 157, 0, 0, 0, 0, 0, 114,
 367         0, 114, 83, 83, 84, 157, 0, 0,
 368         0, 0, 158, 114, 0, 159, 159, 160,
 369         1, 0, 7, 7, 160, 0, 161, 161,
 370         162, 157, 0, 163, 163, 162, 0, 162,
 371         0, 164, 164, 165, 157, 0, 166, 166,
 372         165, 0, 165, 0, 167, 167, 168, 157,
 373         0, 169, 169, 168, 0, 168, 0, 157,
 374         0, 170, 171, 0, 0, 0, 0, 0,
 375         0, 0, 0, 0, 0, 0, 0, 0,
 376         170, 0, 157, 0, 0, 0, 0, 172,
 377         0, 173, 0, 0, 0, 157, 0, 174,
 378         0, 175, 0, 176, 167, 167, 168, 157,
 379         0, 177, 0, 178, 0, 179, 164, 164,
 380         165, 157, 0, 180, 0, 181, 0, 182,
 381         161, 161, 162, 157, 0, 183, 0, 184,
 382         0, 186, 185, 188, 189, 190, 191, 192,
 383         193, 84, 79, 194, 195, 196, 196, 156,
 384         197, 198, 199, 200, 201, 202, 187, 204,
 385         205, 206, 207, 6, 1, 208, 209, 203,
 386         203, 38, 210, 203, 203, 211, 203, 212,
 387         205, 213, 213, 6, 1, 208, 209, 203,
 388         203, 203, 210, 203, 203, 211, 203, 205,
 389         213, 213, 6, 1, 208, 209, 203, 203,
 390         203, 210, 203, 203, 211, 203, 214, 203,
 391         203, 203, 19, 215, 203, 1, 208, 209,
 392         203, 203, 203, 216, 203, 214, 203, 217,
 393         218, 219, 220, 6, 1, 208, 209, 203,
 394         203, 36, 221, 203, 203, 211, 203, 222,
 395         218, 223, 223, 6, 1, 208, 209, 203,
 396         203, 203, 221, 203, 203, 211, 203, 218,
 397         223, 223, 6, 1, 208, 209, 203, 203,
 398         203, 221, 203, 203, 211, 203, 224, 203,
 399         203, 203, 19, 225, 203, 1, 208, 209,
 400         203, 203, 203, 216, 203, 224, 203, 226,
 401         227, 228, 229, 6, 1, 208, 209, 203,
 402         203, 34, 230, 203, 203, 211, 203, 231,
 403         227, 232, 232, 6, 1, 208, 209, 203,
 404         203, 203, 230, 203, 203, 211, 203, 227,
 405         232, 232, 6, 1, 208, 209, 203, 203,
 406         203, 230, 203, 203, 211, 203, 233, 203,
 407         203, 203, 19, 234, 203, 1, 208, 209,
 408         203, 203, 203, 216, 203, 233, 203, 235,
 409         236, 237, 238, 6, 1, 208, 209, 203,
 410         203, 32, 239, 203, 203, 211, 203, 240,
 411         236, 241, 241, 6, 1, 208, 209, 203,
 412         203, 203, 239, 203, 203, 211, 203, 236,
 413         241, 241, 6, 1, 208, 209, 203, 203,
 414         203, 239, 203, 203, 211, 203, 242, 203,
 415         203, 203, 19, 243, 203, 1, 208, 209,
 416         203, 203, 203, 216, 203, 242, 203, 244,
 417         245, 246, 247, 6, 1, 208, 209, 203,
 418         203, 30, 248, 203, 203, 211, 203, 249,
 419         245, 250, 250, 6, 1, 208, 209, 203,
 420         203, 203, 248, 203, 203, 211, 203, 245,
 421         250, 250, 6, 1, 208, 209, 203, 203,
 422         203, 248, 203, 203, 211, 203, 19, 251,
 423         203, 1, 208, 209, 203, 203, 203, 216,
 424         203, 252, 252, 203, 1, 208, 209, 203,
 425         203, 203, 216, 203, 253, 203, 203, 254,
 426         208, 209, 203, 208, 209, 203, 255, 203,
 427         208, 256, 203, 208, 257, 203, 208, 203,
 428         253, 203, 203, 203, 208, 209, 203, 258,
 429         203, 259, 260, 203, 1, 208, 209, 203,
 430         203, 4, 203, 3, 203, 252, 252, 203,
 431         1, 208, 209, 203, 252, 252, 203, 1,
 432         208, 209, 203, 258, 203, 252, 252, 203,
 433         1, 208, 209, 203, 258, 203, 259, 252,
 434         203, 1, 208, 209, 203, 203, 4, 203,
 435         19, 203, 261, 261, 6, 1, 208, 209,
 436         203, 203, 203, 216, 203, 262, 28, 263,
 437         264, 9, 1, 208, 209, 203, 203, 203,
 438         216, 203, 28, 263, 264, 9, 1, 208,
 439         209, 203, 203, 203, 216, 203, 263, 263,
 440         9, 1, 208, 209, 203, 203, 203, 216,
 441         203, 265, 25, 266, 267, 12, 1, 208,
 442         209, 203, 203, 203, 216, 203, 25, 266,
 443         267, 12, 1, 208, 209, 203, 203, 203,
 444         216, 203, 266, 266, 12, 1, 208, 209,
 445         203, 203, 203, 216, 203, 268, 22, 269,
 446         270, 15, 1, 208, 209, 203, 203, 203,
 447         216, 203, 22, 269, 270, 15, 1, 208,
 448         209, 203, 203, 203, 216, 203, 269, 269,
 449         15, 1, 208, 209, 203, 203, 203, 216,
 450         203, 271, 19, 252, 272, 203, 1, 208,
 451         209, 203, 203, 203, 216, 203, 19, 252,
 452         272, 203, 1, 208, 209, 203, 203, 203,
 453         216, 203, 252, 273, 203, 1, 208, 209,
 454         203, 203, 203, 216, 203, 19, 203, 252,
 455         252, 203, 1, 208, 209, 203, 203, 203,
 456         216, 203, 2, 3, 203, 203, 19, 251,
 457         203, 1, 208, 209, 203, 203, 203, 216,
 458         203, 2, 203, 245, 250, 250, 6, 1,
 459         208, 209, 203, 203, 203, 248, 203, 244,
 460         245, 250, 250, 6, 1, 208, 209, 203,
 461         203, 203, 248, 203, 203, 211, 203, 244,
 462         245, 246, 250, 6, 1, 208, 209, 203,
 463         203, 30, 248, 203, 203, 211, 203, 242,
 464         203, 274, 203, 261, 261, 6, 1, 208,
 465         209, 203, 203, 203, 216, 203, 242, 203,
 466         242, 203, 203, 203, 252, 252, 203, 1,
 467         208, 209, 203, 203, 203, 216, 203, 242,
 468         203, 242, 203, 203, 203, 252, 275, 203,
 469         1, 208, 209, 203, 203, 203, 216, 203,
 470         242, 203, 242, 203, 274, 203, 252, 252,
 471         203, 1, 208, 209, 203, 203, 203, 216,
 472         203, 242, 203, 242, 3, 203, 203, 19,
 473         243, 203, 1, 208, 209, 203, 203, 203,
 474         216, 203, 242, 203, 235, 236, 241, 241,
 475         6, 1, 208, 209, 203, 203, 203, 239,
 476         203, 203, 211, 203, 235, 236, 237, 241,
 477         6, 1, 208, 209, 203, 203, 32, 239,
 478         203, 203, 211, 203, 233, 203, 276, 203,
 479         261, 261, 6, 1, 208, 209, 203, 203,
 480         203, 216, 203, 233, 203, 233, 203, 203,
 481         203, 252, 252, 203, 1, 208, 209, 203,
 482         203, 203, 216, 203, 233, 203, 233, 203,
 483         203, 203, 252, 277, 203, 1, 208, 209,
 484         203, 203, 203, 216, 203, 233, 203, 233,
 485         203, 276, 203, 252, 252, 203, 1, 208,
 486         209, 203, 203, 203, 216, 203, 233, 203,
 487         233, 3, 203, 203, 19, 234, 203, 1,
 488         208, 209, 203, 203, 203, 216, 203, 233,
 489         203, 226, 227, 232, 232, 6, 1, 208,
 490         209, 203, 203, 203, 230, 203, 203, 211,
 491         203, 226, 227, 228, 232, 6, 1, 208,
 492         209, 203, 203, 34, 230, 203, 203, 211,
 493         203, 224, 203, 278, 203, 261, 261, 6,
 494         1, 208, 209, 203, 203, 203, 216, 203,
 495         224, 203, 224, 203, 203, 203, 252, 252,
 496         203, 1, 208, 209, 203, 203, 203, 216,
 497         203, 224, 203, 224, 203, 203, 203, 252,
 498         279, 203, 1, 208, 209, 203, 203, 203,
 499         216, 203, 224, 203, 224, 203, 278, 203,
 500         252, 252, 203, 1, 208, 209, 203, 203,
 501         203, 216, 203, 224, 203, 224, 3, 203,
 502         203, 19, 225, 203, 1, 208, 209, 203,
 503         203, 203, 216, 203, 224, 203, 217, 218,
 504         223, 223, 6, 1, 208, 209, 203, 203,
 505         203, 221, 203, 203, 211, 203, 217, 218,
 506         219, 223, 6, 1, 208, 209, 203, 203,
 507         36, 221, 203, 203, 211, 203, 214, 203,
 508         280, 203, 261, 261, 6, 1, 208, 209,
 509         203, 203, 203, 216, 203, 214, 203, 214,
 510         203, 203, 203, 252, 252, 203, 1, 208,
 511         209, 203, 203, 203, 216, 203, 214, 203,
 512         214, 203, 203, 203, 252, 281, 203, 1,
 513         208, 209, 203, 203, 203, 216, 203, 214,
 514         203, 214, 203, 280, 203, 252, 252, 203,
 515         1, 208, 209, 203, 203, 203, 216, 203,
 516         214, 203, 214, 3, 203, 203, 19, 215,
 517         203, 1, 208, 209, 203, 203, 203, 216,
 518         203, 214, 203, 204, 205, 213, 213, 6,
 519         1, 208, 209, 203, 203, 203, 210, 203,
 520         203, 211, 203, 204, 205, 206, 213, 6,
 521         1, 208, 209, 203, 203, 38, 210, 203,
 522         203, 211, 203, 283, 284, 285, 286, 45,
 523         40, 287, 288, 282, 282, 77, 289, 282,
 524         282, 290, 282, 291, 284, 292, 286, 45,
 525         40, 287, 288, 282, 282, 282, 289, 282,
 526         282, 290, 282, 284, 292, 286, 45, 40,
 527         287, 288, 282, 282, 282, 289, 282, 282,
 528         290, 282, 293, 282, 282, 282, 58, 294,
 529         282, 40, 287, 288, 282, 282, 282, 295,
 530         282, 293, 282, 296, 297, 298, 299, 45,
 531         40, 287, 288, 282, 282, 75, 300, 282,
 532         282, 290, 282, 301, 297, 302, 302, 45,
 533         40, 287, 288, 282, 282, 282, 300, 282,
 534         282, 290, 282, 297, 302, 302, 45, 40,
 535         287, 288, 282, 282, 282, 300, 282, 282,
 536         290, 282, 303, 282, 282, 282, 58, 304,
 537         282, 40, 287, 288, 282, 282, 282, 295,
 538         282, 303, 282, 305, 306, 307, 308, 45,
 539         40, 287, 288, 282, 282, 73, 309, 282,
 540         282, 290, 282, 310, 306, 311, 311, 45,
 541         40, 287, 288, 282, 282, 282, 309, 282,
 542         282, 290, 282, 306, 311, 311, 45, 40,
 543         287, 288, 282, 282, 282, 309, 282, 282,
 544         290, 282, 312, 282, 282, 282, 58, 313,
 545         282, 40, 287, 288, 282, 282, 282, 295,
 546         282, 312, 282, 314, 315, 316, 317, 45,
 547         40, 287, 288, 282, 282, 71, 318, 282,
 548         282, 290, 282, 319, 315, 320, 320, 45,
 549         40, 287, 288, 282, 282, 282, 318, 282,
 550         282, 290, 282, 315, 320, 320, 45, 40,
 551         287, 288, 282, 282, 282, 318, 282, 282,
 552         290, 282, 321, 282, 282, 282, 58, 322,
 553         282, 40, 287, 288, 282, 282, 282, 295,
 554         282, 321, 282, 323, 324, 325, 326, 45,
 555         40, 287, 288, 282, 282, 69, 327, 282,
 556         282, 290, 282, 328, 324, 329, 329, 45,
 557         40, 287, 288, 282, 282, 282, 327, 282,
 558         282, 290, 282, 324, 329, 329, 45, 40,
 559         287, 288, 282, 282, 282, 327, 282, 282,
 560         290, 282, 58, 330, 282, 40, 287, 288,
 561         282, 282, 282, 295, 282, 331, 331, 282,
 562         40, 287, 288, 282, 282, 282, 295, 282,
 563         332, 282, 282, 333, 287, 288, 282, 287,
 564         288, 282, 334, 282, 287, 335, 282, 287,
 565         336, 282, 287, 282, 332, 282, 282, 282,
 566         287, 288, 282, 337, 282, 338, 339, 282,
 567         40, 287, 288, 282, 282, 43, 282, 42,
 568         282, 331, 331, 282, 40, 287, 288, 282,
 569         331, 331, 282, 40, 287, 288, 282, 337,
 570         282, 331, 331, 282, 40, 287, 288, 282,
 571         337, 282, 338, 331, 282, 40, 287, 288,
 572         282, 282, 43, 282, 58, 282, 340, 340,
 573         45, 40, 287, 288, 282, 282, 282, 295,
 574         282, 341, 67, 342, 343, 48, 40, 287,
 575         288, 282, 282, 282, 295, 282, 67, 342,
 576         343, 48, 40, 287, 288, 282, 282, 282,
 577         295, 282, 342, 342, 48, 40, 287, 288,
 578         282, 282, 282, 295, 282, 344, 64, 345,
 579         346, 51, 40, 287, 288, 282, 282, 282,
 580         295, 282, 64, 345, 346, 51, 40, 287,
 581         288, 282, 282, 282, 295, 282, 345, 345,
 582         51, 40, 287, 288, 282, 282, 282, 295,
 583         282, 347, 61, 348, 349, 54, 40, 287,
 584         288, 282, 282, 282, 295, 282, 61, 348,
 585         349, 54, 40, 287, 288, 282, 282, 282,
 586         295, 282, 348, 348, 54, 40, 287, 288,
 587         282, 282, 282, 295, 282, 350, 58, 331,
 588         351, 282, 40, 287, 288, 282, 282, 282,
 589         295, 282, 58, 331, 351, 282, 40, 287,
 590         288, 282, 282, 282, 295, 282, 331, 352,
 591         282, 40, 287, 288, 282, 282, 282, 295,
 592         282, 58, 282, 331, 331, 282, 40, 287,
 593         288, 282, 282, 282, 295, 282, 41, 42,
 594         282, 282, 58, 330, 282, 40, 287, 288,
 595         282, 282, 282, 295, 282, 41, 282, 324,
 596         329, 329, 45, 40, 287, 288, 282, 282,
 597         282, 327, 282, 323, 324, 329, 329, 45,
 598         40, 287, 288, 282, 282, 282, 327, 282,
 599         282, 290, 282, 323, 324, 325, 329, 45,
 600         40, 287, 288, 282, 282, 69, 327, 282,
 601         282, 290, 282, 321, 282, 353, 282, 340,
 602         340, 45, 40, 287, 288, 282, 282, 282,
 603         295, 282, 321, 282, 321, 282, 282, 282,
 604         331, 331, 282, 40, 287, 288, 282, 282,
 605         282, 295, 282, 321, 282, 321, 282, 282,
 606         282, 331, 354, 282, 40, 287, 288, 282,
 607         282, 282, 295, 282, 321, 282, 321, 282,
 608         353, 282, 331, 331, 282, 40, 287, 288,
 609         282, 282, 282, 295, 282, 321, 282, 321,
 610         42, 282, 282, 58, 322, 282, 40, 287,
 611         288, 282, 282, 282, 295, 282, 321, 282,
 612         314, 315, 320, 320, 45, 40, 287, 288,
 613         282, 282, 282, 318, 282, 282, 290, 282,
 614         314, 315, 316, 320, 45, 40, 287, 288,
 615         282, 282, 71, 318, 282, 282, 290, 282,
 616         312, 282, 355, 282, 340, 340, 45, 40,
 617         287, 288, 282, 282, 282, 295, 282, 312,
 618         282, 312, 282, 282, 282, 331, 331, 282,
 619         40, 287, 288, 282, 282, 282, 295, 282,
 620         312, 282, 312, 282, 282, 282, 331, 356,
 621         282, 40, 287, 288, 282, 282, 282, 295,
 622         282, 312, 282, 312, 282, 355, 282, 331,
 623         331, 282, 40, 287, 288, 282, 282, 282,
 624         295, 282, 312, 282, 312, 42, 282, 282,
 625         58, 313, 282, 40, 287, 288, 282, 282,
 626         282, 295, 282, 312, 282, 305, 306, 311,
 627         311, 45, 40, 287, 288, 282, 282, 282,
 628         309, 282, 282, 290, 282, 305, 306, 307,
 629         311, 45, 40, 287, 288, 282, 282, 73,
 630         309, 282, 282, 290, 282, 303, 282, 357,
 631         282, 340, 340, 45, 40, 287, 288, 282,
 632         282, 282, 295, 282, 303, 282, 303, 282,
 633         282, 282, 331, 331, 282, 40, 287, 288,
 634         282, 282, 282, 295, 282, 303, 282, 303,
 635         282, 282, 282, 331, 358, 282, 40, 287,
 636         288, 282, 282, 282, 295, 282, 303, 282,
 637         303, 282, 357, 282, 331, 331, 282, 40,
 638         287, 288, 282, 282, 282, 295, 282, 303,
 639         282, 303, 42, 282, 282, 58, 304, 282,
 640         40, 287, 288, 282, 282, 282, 295, 282,
 641         303, 282, 296, 297, 302, 302, 45, 40,
 642         287, 288, 282, 282, 282, 300, 282, 282,
 643         290, 282, 296, 297, 298, 302, 45, 40,
 644         287, 288, 282, 282, 75, 300, 282, 282,
 645         290, 282, 293, 282, 359, 282, 340, 340,
 646         45, 40, 287, 288, 282, 282, 282, 295,
 647         282, 293, 282, 293, 282, 282, 282, 331,
 648         331, 282, 40, 287, 288, 282, 282, 282,
 649         295, 282, 293, 282, 293, 282, 282, 282,
 650         331, 360, 282, 40, 287, 288, 282, 282,
 651         282, 295, 282, 293, 282, 293, 282, 359,
 652         282, 331, 331, 282, 40, 287, 288, 282,
 653         282, 282, 295, 282, 293, 282, 76, 44,
 654         44, 45, 40, 282, 282, 282, 282, 282,
 655         76, 282, 293, 42, 282, 282, 58, 294,
 656         282, 40, 287, 288, 282, 282, 282, 295,
 657         282, 293, 282, 283, 284, 292, 286, 45,
 658         40, 287, 288, 282, 282, 282, 289, 282,
 659         282, 290, 282, 362, 191, 363, 363, 84,
 660         79, 194, 195, 361, 361, 361, 197, 361,
 661         361, 200, 361, 191, 363, 363, 84, 79,
 662         194, 195, 361, 361, 361, 197, 361, 361,
 663         200, 361, 364, 361, 361, 361, 98, 365,
 664         361, 79, 194, 195, 361, 361, 361, 366,
 665         361, 364, 361, 367, 368, 369, 370, 84,
 666         79, 194, 195, 361, 361, 115, 371, 361,
 667         361, 200, 361, 372, 368, 373, 373, 84,
 668         79, 194, 195, 361, 361, 361, 371, 361,
 669         361, 200, 361, 368, 373, 373, 84, 79,
 670         194, 195, 361, 361, 361, 371, 361, 361,
 671         200, 361, 374, 361, 361, 361, 98, 375,
 672         361, 79, 194, 195, 361, 361, 361, 366,
 673         361, 374, 361, 376, 377, 378, 379, 84,
 674         79, 194, 195, 361, 361, 113, 380, 361,
 675         361, 200, 361, 381, 377, 382, 382, 84,
 676         79, 194, 195, 361, 361, 361, 380, 361,
 677         361, 200, 361, 377, 382, 382, 84, 79,
 678         194, 195, 361, 361, 361, 380, 361, 361,
 679         200, 361, 383, 361, 361, 361, 98, 384,
 680         361, 79, 194, 195, 361, 361, 361, 366,
 681         361, 383, 361, 385, 386, 387, 388, 84,
 682         79, 194, 195, 361, 361, 111, 389, 361,
 683         361, 200, 361, 390, 386, 391, 391, 84,
 684         79, 194, 195, 361, 361, 361, 389, 361,
 685         361, 200, 361, 386, 391, 391, 84, 79,
 686         194, 195, 361, 361, 361, 389, 361, 361,
 687         200, 361, 392, 361, 361, 361, 98, 393,
 688         361, 79, 194, 195, 361, 361, 361, 366,
 689         361, 392, 361, 394, 395, 396, 397, 84,
 690         79, 194, 195, 361, 361, 109, 398, 361,
 691         361, 200, 361, 399, 395, 400, 400, 84,
 692         79, 194, 195, 361, 361, 361, 398, 361,
 693         361, 200, 361, 395, 400, 400, 84, 79,
 694         194, 195, 361, 361, 361, 398, 361, 361,
 695         200, 361, 98, 401, 361, 79, 194, 195,
 696         361, 361, 361, 366, 361, 402, 402, 361,
 697         79, 194, 195, 361, 361, 361, 366, 361,
 698         403, 361, 361, 404, 194, 195, 361, 194,
 699         195, 361, 405, 361, 194, 406, 361, 194,
 700         407, 361, 194, 361, 403, 361, 361, 361,
 701         194, 195, 361, 408, 361, 409, 410, 361,
 702         79, 194, 195, 361, 361, 82, 361, 81,
 703         361, 402, 402, 361, 79, 194, 195, 361,
 704         402, 402, 361, 79, 194, 195, 361, 408,
 705         361, 402, 402, 361, 79, 194, 195, 361,
 706         408, 361, 409, 402, 361, 79, 194, 195,
 707         361, 361, 82, 361, 98, 361, 411, 411,
 708         84, 79, 194, 195, 361, 361, 361, 366,
 709         361, 412, 107, 413, 414, 88, 79, 194,
 710         195, 361, 361, 361, 366, 361, 107, 413,
 711         414, 88, 79, 194, 195, 361, 361, 361,
 712         366, 361, 413, 413, 88, 79, 194, 195,
 713         361, 361, 361, 366, 361, 415, 104, 416,
 714         417, 91, 79, 194, 195, 361, 361, 361,
 715         366, 361, 104, 416, 417, 91, 79, 194,
 716         195, 361, 361, 361, 366, 361, 416, 416,
 717         91, 79, 194, 195, 361, 361, 361, 366,
 718         361, 418, 101, 419, 420, 94, 79, 194,
 719         195, 361, 361, 361, 366, 361, 101, 419,
 720         420, 94, 79, 194, 195, 361, 361, 361,
 721         366, 361, 419, 419, 94, 79, 194, 195,
 722         361, 361, 361, 366, 361, 421, 98, 402,
 723         422, 361, 79, 194, 195, 361, 361, 361,
 724         366, 361, 98, 402, 422, 361, 79, 194,
 725         195, 361, 361, 361, 366, 361, 402, 423,
 726         361, 79, 194, 195, 361, 361, 361, 366,
 727         361, 98, 361, 402, 402, 361, 79, 194,
 728         195, 361, 361, 361, 366, 361, 80, 81,
 729         361, 361, 98, 401, 361, 79, 194, 195,
 730         361, 361, 361, 366, 361, 80, 361, 395,
 731         400, 400, 84, 79, 194, 195, 361, 361,
 732         361, 398, 361, 394, 395, 400, 400, 84,
 733         79, 194, 195, 361, 361, 361, 398, 361,
 734         361, 200, 361, 394, 395, 396, 400, 84,
 735         79, 194, 195, 361, 361, 109, 398, 361,
 736         361, 200, 361, 392, 361, 424, 361, 411,
 737         411, 84, 79, 194, 195, 361, 361, 361,
 738         366, 361, 392, 361, 392, 361, 361, 361,
 739         402, 402, 361, 79, 194, 195, 361, 361,
 740         361, 366, 361, 392, 361, 392, 361, 361,
 741         361, 402, 425, 361, 79, 194, 195, 361,
 742         361, 361, 366, 361, 392, 361, 392, 361,
 743         424, 361, 402, 402, 361, 79, 194, 195,
 744         361, 361, 361, 366, 361, 392, 361, 392,
 745         81, 361, 361, 98, 393, 361, 79, 194,
 746         195, 361, 361, 361, 366, 361, 392, 361,
 747         385, 386, 391, 391, 84, 79, 194, 195,
 748         361, 361, 361, 389, 361, 361, 200, 361,
 749         385, 386, 387, 391, 84, 79, 194, 195,
 750         361, 361, 111, 389, 361, 361, 200, 361,
 751         383, 361, 426, 361, 411, 411, 84, 79,
 752         194, 195, 361, 361, 361, 366, 361, 383,
 753         361, 383, 361, 361, 361, 402, 402, 361,
 754         79, 194, 195, 361, 361, 361, 366, 361,
 755         383, 361, 383, 361, 361, 361, 402, 427,
 756         361, 79, 194, 195, 361, 361, 361, 366,
 757         361, 383, 361, 383, 361, 426, 361, 402,
 758         402, 361, 79, 194, 195, 361, 361, 361,
 759         366, 361, 383, 361, 383, 81, 361, 361,
 760         98, 384, 361, 79, 194, 195, 361, 361,
 761         361, 366, 361, 383, 361, 376, 377, 382,
 762         382, 84, 79, 194, 195, 361, 361, 361,
 763         380, 361, 361, 200, 361, 376, 377, 378,
 764         382, 84, 79, 194, 195, 361, 361, 113,
 765         380, 361, 361, 200, 361, 374, 361, 428,
 766         361, 411, 411, 84, 79, 194, 195, 361,
 767         361, 361, 366, 361, 374, 361, 374, 361,
 768         361, 361, 402, 402, 361, 79, 194, 195,
 769         361, 361, 361, 366, 361, 374, 361, 374,
 770         361, 361, 361, 402, 429, 361, 79, 194,
 771         195, 361, 361, 361, 366, 361, 374, 361,
 772         374, 361, 428, 361, 402, 402, 361, 79,
 773         194, 195, 361, 361, 361, 366, 361, 374,
 774         361, 374, 81, 361, 361, 98, 375, 361,
 775         79, 194, 195, 361, 361, 361, 366, 361,
 776         374, 361, 367, 368, 373, 373, 84, 79,
 777         194, 195, 361, 361, 361, 371, 361, 361,
 778         200, 361, 367, 368, 369, 373, 84, 79,
 779         194, 195, 361, 361, 115, 371, 361, 361,
 780         200, 361, 364, 361, 430, 361, 411, 411,
 781         84, 79, 194, 195, 361, 361, 361, 366,
 782         361, 364, 361, 364, 361, 361, 361, 402,
 783         402, 361, 79, 194, 195, 361, 361, 361,
 784         366, 361, 364, 361, 364, 361, 361, 361,
 785         402, 431, 361, 79, 194, 195, 361, 361,
 786         361, 366, 361, 364, 361, 364, 361, 430,
 787         361, 402, 402, 361, 79, 194, 195, 361,
 788         361, 361, 366, 361, 364, 361, 364, 81,
 789         361, 361, 98, 365, 361, 79, 194, 195,
 790         361, 361, 361, 366, 361, 364, 361, 116,
 791         83, 83, 84, 79, 432, 432, 432, 432,
 792         156, 116, 432, 190, 191, 363, 363, 84,
 793         79, 194, 195, 361, 361, 361, 197, 361,
 794         361, 200, 361, 116, 83, 83, 84, 79,
 795         432, 432, 432, 432, 432, 116, 432, 434,
 796         435, 436, 437, 123, 118, 438, 439, 433,
 797         433, 155, 440, 433, 433, 441, 433, 442,
 798         435, 437, 437, 123, 118, 438, 439, 433,
 799         433, 433, 440, 433, 433, 441, 433, 435,
 800         437, 437, 123, 118, 438, 439, 433, 433,
 801         433, 440, 433, 433, 441, 433, 443, 433,
 802         433, 433, 136, 444, 433, 118, 438, 439,
 803         433, 433, 433, 445, 433, 443, 433, 446,
 804         447, 448, 449, 123, 118, 438, 439, 433,
 805         433, 153, 450, 433, 433, 441, 433, 451,
 806         447, 452, 452, 123, 118, 438, 439, 433,
 807         433, 433, 450, 433, 433, 441, 433, 447,
 808         452, 452, 123, 118, 438, 439, 433, 433,
 809         433, 450, 433, 433, 441, 433, 453, 433,
 810         433, 433, 136, 454, 433, 118, 438, 439,
 811         433, 433, 433, 445, 433, 453, 433, 455,
 812         456, 457, 458, 123, 118, 438, 439, 433,
 813         433, 151, 459, 433, 433, 441, 433, 460,
 814         456, 461, 461, 123, 118, 438, 439, 433,
 815         433, 433, 459, 433, 433, 441, 433, 456,
 816         461, 461, 123, 118, 438, 439, 433, 433,
 817         433, 459, 433, 433, 441, 433, 462, 433,
 818         433, 433, 136, 463, 433, 118, 438, 439,
 819         433, 433, 433, 445, 433, 462, 433, 464,
 820         465, 466, 467, 123, 118, 438, 439, 433,
 821         433, 149, 468, 433, 433, 441, 433, 469,
 822         465, 470, 470, 123, 118, 438, 439, 433,
 823         433, 433, 468, 433, 433, 441, 433, 465,
 824         470, 470, 123, 118, 438, 439, 433, 433,
 825         433, 468, 433, 433, 441, 433, 471, 433,
 826         433, 433, 136, 472, 433, 118, 438, 439,
 827         433, 433, 433, 445, 433, 471, 433, 473,
 828         474, 475, 476, 123, 118, 438, 439, 433,
 829         433, 147, 477, 433, 433, 441, 433, 478,
 830         474, 479, 479, 123, 118, 438, 439, 433,
 831         433, 433, 477, 433, 433, 441, 433, 474,
 832         479, 479, 123, 118, 438, 439, 433, 433,
 833         433, 477, 433, 433, 441, 433, 136, 480,
 834         433, 118, 438, 439, 433, 433, 433, 445,
 835         433, 481, 481, 433, 118, 438, 439, 433,
 836         433, 433, 445, 433, 482, 433, 433, 483,
 837         438, 439, 433, 438, 439, 433, 484, 433,
 838         438, 485, 433, 438, 486, 433, 438, 433,
 839         482, 433, 433, 433, 438, 439, 433, 487,
 840         433, 488, 489, 433, 118, 438, 439, 433,
 841         433, 121, 433, 120, 433, 481, 481, 433,
 842         118, 438, 439, 433, 481, 481, 433, 118,
 843         438, 439, 433, 487, 433, 481, 481, 433,
 844         118, 438, 439, 433, 487, 433, 488, 481,
 845         433, 118, 438, 439, 433, 433, 121, 433,
 846         136, 433, 490, 490, 123, 118, 438, 439,
 847         433, 433, 433, 445, 433, 491, 145, 492,
 848         493, 126, 118, 438, 439, 433, 433, 433,
 849         445, 433, 145, 492, 493, 126, 118, 438,
 850         439, 433, 433, 433, 445, 433, 492, 492,
 851         126, 118, 438, 439, 433, 433, 433, 445,
 852         433, 494, 142, 495, 496, 129, 118, 438,
 853         439, 433, 433, 433, 445, 433, 142, 495,
 854         496, 129, 118, 438, 439, 433, 433, 433,
 855         445, 433, 495, 495, 129, 118, 438, 439,
 856         433, 433, 433, 445, 433, 497, 139, 498,
 857         499, 132, 118, 438, 439, 433, 433, 433,
 858         445, 433, 139, 498, 499, 132, 118, 438,
 859         439, 433, 433, 433, 445, 433, 498, 498,
 860         132, 118, 438, 439, 433, 433, 433, 445,
 861         433, 500, 136, 481, 501, 433, 118, 438,
 862         439, 433, 433, 433, 445, 433, 136, 481,
 863         501, 433, 118, 438, 439, 433, 433, 433,
 864         445, 433, 481, 502, 433, 118, 438, 439,
 865         433, 433, 433, 445, 433, 136, 433, 481,
 866         481, 433, 118, 438, 439, 433, 433, 433,
 867         445, 433, 119, 120, 433, 433, 136, 480,
 868         433, 118, 438, 439, 433, 433, 433, 445,
 869         433, 119, 433, 474, 479, 479, 123, 118,
 870         438, 439, 433, 433, 433, 477, 433, 473,
 871         474, 479, 479, 123, 118, 438, 439, 433,
 872         433, 433, 477, 433, 433, 441, 433, 473,
 873         474, 475, 479, 123, 118, 438, 439, 433,
 874         433, 147, 477, 433, 433, 441, 433, 471,
 875         433, 503, 433, 490, 490, 123, 118, 438,
 876         439, 433, 433, 433, 445, 433, 471, 433,
 877         471, 433, 433, 433, 481, 481, 433, 118,
 878         438, 439, 433, 433, 433, 445, 433, 471,
 879         433, 471, 433, 433, 433, 481, 504, 433,
 880         118, 438, 439, 433, 433, 433, 445, 433,
 881         471, 433, 471, 433, 503, 433, 481, 481,
 882         433, 118, 438, 439, 433, 433, 433, 445,
 883         433, 471, 433, 471, 120, 433, 433, 136,
 884         472, 433, 118, 438, 439, 433, 433, 433,
 885         445, 433, 471, 433, 464, 465, 470, 470,
 886         123, 118, 438, 439, 433, 433, 433, 468,
 887         433, 433, 441, 433, 464, 465, 466, 470,
 888         123, 118, 438, 439, 433, 433, 149, 468,
 889         433, 433, 441, 433, 462, 433, 505, 433,
 890         490, 490, 123, 118, 438, 439, 433, 433,
 891         433, 445, 433, 462, 433, 462, 433, 433,
 892         433, 481, 481, 433, 118, 438, 439, 433,
 893         433, 433, 445, 433, 462, 433, 462, 433,
 894         433, 433, 481, 506, 433, 118, 438, 439,
 895         433, 433, 433, 445, 433, 462, 433, 462,
 896         433, 505, 433, 481, 481, 433, 118, 438,
 897         439, 433, 433, 433, 445, 433, 462, 433,
 898         462, 120, 433, 433, 136, 463, 433, 118,
 899         438, 439, 433, 433, 433, 445, 433, 462,
 900         433, 455, 456, 461, 461, 123, 118, 438,
 901         439, 433, 433, 433, 459, 433, 433, 441,
 902         433, 455, 456, 457, 461, 123, 118, 438,
 903         439, 433, 433, 151, 459, 433, 433, 441,
 904         433, 453, 433, 507, 433, 490, 490, 123,
 905         118, 438, 439, 433, 433, 433, 445, 433,
 906         453, 433, 453, 433, 433, 433, 481, 481,
 907         433, 118, 438, 439, 433, 433, 433, 445,
 908         433, 453, 433, 453, 433, 433, 433, 481,
 909         508, 433, 118, 438, 439, 433, 433, 433,
 910         445, 433, 453, 433, 453, 433, 507, 433,
 911         481, 481, 433, 118, 438, 439, 433, 433,
 912         433, 445, 433, 453, 433, 453, 120, 433,
 913         433, 136, 454, 433, 118, 438, 439, 433,
 914         433, 433, 445, 433, 453, 433, 446, 447,
 915         452, 452, 123, 118, 438, 439, 433, 433,
 916         433, 450, 433, 433, 441, 433, 446, 447,
 917         448, 452, 123, 118, 438, 439, 433, 433,
 918         153, 450, 433, 433, 441, 433, 443, 433,
 919         509, 433, 490, 490, 123, 118, 438, 439,
 920         433, 433, 433, 445, 433, 443, 433, 443,
 921         433, 433, 433, 481, 481, 433, 118, 438,
 922         439, 433, 433, 433, 445, 433, 443, 433,
 923         443, 433, 433, 433, 481, 510, 433, 118,
 924         438, 439, 433, 433, 433, 445, 433, 443,
 925         433, 443, 433, 509, 433, 481, 481, 433,
 926         118, 438, 439, 433, 433, 433, 445, 433,
 927         443, 433, 443, 120, 433, 433, 136, 444,
 928         433, 118, 438, 439, 433, 433, 433, 445,
 929         433, 443, 433, 434, 435, 437, 437, 123,
 930         118, 438, 439, 433, 433, 433, 440, 433,
 931         433, 441, 433, 188, 189, 190, 191, 511,
 932         363, 84, 79, 194, 195, 196, 196, 156,
 933         197, 361, 188, 200, 361, 204, 512, 206,
 934         207, 6, 1, 208, 209, 203, 203, 38,
 935         210, 203, 203, 211, 203, 214, 189, 190,
 936         191, 513, 514, 84, 157, 515, 516, 203,
 937         196, 156, 517, 203, 214, 200, 203, 116,
 938         518, 518, 84, 157, 208, 209, 203, 203,
 939         156, 519, 203, 520, 203, 203, 521, 515,
 940         516, 203, 515, 516, 203, 255, 203, 515,
 941         522, 203, 515, 523, 203, 515, 203, 520,
 942         203, 203, 203, 515, 516, 203, 524, 3,
 943         361, 361, 402, 431, 361, 79, 194, 195,
 944         361, 361, 361, 366, 361, 524, 361, 525,
 945         368, 526, 527, 84, 157, 515, 516, 203,
 946         203, 158, 371, 203, 203, 200, 203, 528,
 947         368, 529, 529, 84, 157, 515, 516, 203,
 948         203, 203, 371, 203, 203, 200, 203, 368,
 949         529, 529, 84, 157, 515, 516, 203, 203,
 950         203, 371, 203, 203, 200, 203, 525, 368,
 951         529, 529, 84, 157, 515, 516, 203, 203,
 952         203, 371, 203, 203, 200, 203, 525, 368,
 953         526, 529, 84, 157, 515, 516, 203, 203,
 954         158, 371, 203, 203, 200, 203, 214, 203,
 955         280, 116, 530, 530, 160, 157, 208, 209,
 956         203, 203, 203, 519, 203, 214, 203, 531,
 957         184, 532, 533, 162, 157, 515, 516, 203,
 958         203, 203, 534, 203, 184, 532, 533, 162,
 959         157, 515, 516, 203, 203, 203, 534, 203,
 960         532, 532, 162, 157, 515, 516, 203, 203,
 961         203, 534, 203, 535, 181, 536, 537, 165,
 962         157, 515, 516, 203, 203, 203, 534, 203,
 963         181, 536, 537, 165, 157, 515, 516, 203,
 964         203, 203, 534, 203, 536, 536, 165, 157,
 965         515, 516, 203, 203, 203, 534, 203, 538,
 966         178, 539, 540, 168, 157, 515, 516, 203,
 967         203, 203, 534, 203, 178, 539, 540, 168,
 968         157, 515, 516, 203, 203, 203, 534, 203,
 969         539, 539, 168, 157, 515, 516, 203, 203,
 970         203, 534, 203, 541, 175, 542, 543, 203,
 971         157, 515, 516, 203, 203, 203, 534, 203,
 972         175, 542, 543, 203, 157, 515, 516, 203,
 973         203, 203, 534, 203, 542, 542, 203, 157,
 974         515, 516, 203, 203, 203, 534, 203, 544,
 975         203, 545, 546, 203, 157, 515, 516, 203,
 976         203, 172, 203, 171, 203, 542, 542, 203,
 977         157, 515, 516, 203, 542, 542, 203, 157,
 978         515, 516, 203, 544, 203, 542, 542, 203,
 979         157, 515, 516, 203, 544, 203, 545, 542,
 980         203, 157, 515, 516, 203, 203, 172, 203,
 981         524, 171, 361, 361, 98, 365, 361, 79,
 982         194, 195, 361, 361, 361, 366, 361, 524,
 983         361, 548, 547, 549, 549, 547, 186, 550,
 984         551, 547, 549, 549, 547, 186, 550, 551,
 985         547, 552, 547, 547, 553, 550, 551, 547,
 986         550, 551, 547, 554, 547, 550, 555, 547,
 987         550, 556, 547, 550, 547, 552, 547, 547,
 988         547, 550, 551, 547, 188, 432, 432, 432,
 989         432, 432, 432, 432, 432, 432, 196, 432,
 990         432, 432, 432, 188, 432, 0
 991 };
 992 
 993 static const short _indic_syllable_machine_trans_targs[] = {
 994         178, 200, 207, 209, 210, 4, 213, 5,
 995         7, 216, 8, 10, 219, 11, 13, 222,
 996         14, 16, 17, 199, 19, 20, 221, 22,
 997         23, 218, 25, 26, 215, 224, 228, 232,
 998         235, 239, 242, 246, 249, 253, 256, 178,
 999         279, 286, 288, 289, 41, 292, 42, 44,
1000         295, 45, 47, 298, 48, 50, 301, 51,
1001         53, 54, 278, 56, 57, 300, 59, 60,
1002         297, 62, 63, 294, 303, 307, 311, 314,
1003         318, 321, 325, 328, 332, 336, 178, 357,
1004         364, 366, 367, 78, 370, 178, 79, 81,
1005         373, 82, 84, 376, 85, 87, 379, 88,
1006         90, 91, 356, 93, 94, 378, 96, 97,
1007         375, 99, 100, 372, 381, 385, 389, 392,
1008         396, 399, 403, 406, 410, 178, 437, 444,
1009         446, 447, 114, 450, 115, 117, 453, 118,
1010         120, 456, 121, 123, 459, 124, 126, 127,
1011         436, 129, 130, 458, 132, 133, 455, 135,
1012         136, 452, 461, 465, 469, 472, 476, 479,
1013         483, 486, 490, 493, 414, 498, 509, 152,
1014         512, 154, 515, 155, 157, 518, 158, 160,
1015         521, 161, 524, 526, 527, 166, 167, 523,
1016         169, 170, 520, 172, 173, 517, 175, 176,
1017         514, 178, 532, 178, 179, 258, 337, 339,
1018         413, 415, 359, 360, 416, 412, 494, 495,
1019         384, 530, 539, 178, 180, 182, 36, 257,
1020         202, 203, 255, 227, 181, 35, 183, 251,
1021         1, 184, 186, 34, 250, 248, 185, 33,
1022         187, 244, 188, 190, 32, 243, 241, 189,
1023         31, 191, 237, 192, 194, 30, 236, 234,
1024         193, 29, 195, 230, 196, 198, 28, 229,
1025         226, 197, 27, 212, 0, 201, 206, 178,
1026         204, 205, 208, 2, 211, 3, 214, 6,
1027         24, 217, 9, 21, 220, 12, 18, 223,
1028         15, 225, 231, 233, 238, 240, 245, 247,
1029         252, 254, 178, 259, 261, 73, 334, 281,
1030         282, 335, 306, 260, 72, 262, 330, 38,
1031         263, 265, 71, 329, 327, 264, 70, 266,
1032         323, 267, 269, 69, 322, 320, 268, 68,
1033         270, 316, 271, 273, 67, 315, 313, 272,
1034         66, 274, 309, 275, 277, 65, 308, 305,
1035         276, 64, 291, 37, 280, 285, 178, 283,
1036         284, 287, 39, 290, 40, 293, 43, 61,
1037         296, 46, 58, 299, 49, 55, 302, 52,
1038         304, 310, 312, 317, 319, 324, 326, 331,
1039         333, 178, 338, 109, 340, 408, 75, 341,
1040         343, 108, 407, 405, 342, 107, 344, 401,
1041         345, 347, 106, 400, 398, 346, 105, 348,
1042         394, 349, 351, 104, 393, 391, 350, 103,
1043         352, 387, 353, 355, 102, 386, 383, 354,
1044         101, 369, 74, 358, 363, 178, 361, 362,
1045         365, 76, 368, 77, 371, 80, 98, 374,
1046         83, 95, 377, 86, 92, 380, 89, 382,
1047         388, 390, 395, 397, 402, 404, 409, 411,
1048         178, 178, 417, 419, 146, 145, 439, 440,
1049         492, 464, 418, 420, 488, 111, 421, 423,
1050         144, 487, 485, 422, 143, 424, 481, 425,
1051         427, 142, 480, 478, 426, 141, 428, 474,
1052         429, 431, 140, 473, 471, 430, 139, 432,
1053         467, 433, 435, 138, 466, 463, 434, 137,
1054         449, 110, 438, 443, 178, 441, 442, 445,
1055         112, 448, 113, 451, 116, 134, 454, 119,
1056         131, 457, 122, 128, 460, 125, 462, 468,
1057         470, 475, 477, 482, 484, 489, 491, 147,
1058         496, 497, 511, 500, 501, 529, 148, 505,
1059         499, 504, 502, 503, 506, 507, 150, 510,
1060         508, 149, 151, 513, 153, 174, 163, 516,
1061         156, 171, 519, 159, 168, 522, 162, 165,
1062         525, 164, 528, 178, 531, 177, 534, 535,
1063         533, 538, 178, 536, 537
1064 };
1065 
1066 static const char _indic_syllable_machine_trans_actions[] = {
1067         1, 0, 2, 2, 2, 0, 2, 0,
1068         0, 2, 0, 0, 2, 0, 0, 2,
1069         0, 0, 0, 2, 0, 0, 2, 0,
1070         0, 2, 0, 0, 2, 2, 2, 2,
1071         2, 2, 2, 2, 2, 2, 2, 3,
1072         0, 2, 2, 2, 0, 2, 0, 0,
1073         2, 0, 0, 2, 0, 0, 2, 0,
1074         0, 0, 2, 0, 0, 2, 0, 0,
1075         2, 0, 0, 2, 2, 2, 2, 2,
1076         2, 2, 2, 2, 2, 2, 4, 0,
1077         2, 2, 2, 0, 2, 5, 0, 0,
1078         2, 0, 0, 2, 0, 0, 2, 0,
1079         0, 0, 2, 0, 0, 2, 0, 0,
1080         2, 0, 0, 2, 2, 6, 2, 6,
1081         2, 6, 2, 6, 2, 7, 0, 2,
1082         2, 2, 0, 2, 0, 0, 2, 0,
1083         0, 2, 0, 0, 2, 0, 0, 0,
1084         2, 0, 0, 2, 0, 0, 2, 0,
1085         0, 2, 2, 2, 2, 2, 2, 2,
1086         2, 2, 2, 2, 6, 0, 8, 0,
1087         2, 0, 2, 0, 0, 2, 0, 0,
1088         2, 0, 2, 2, 2, 0, 0, 2,
1089         0, 0, 2, 0, 0, 2, 0, 0,
1090         2, 9, 0, 12, 2, 2, 6, 2,
1091         13, 13, 0, 0, 2, 2, 6, 2,
1092         6, 2, 0, 14, 2, 2, 0, 2,
1093         0, 0, 2, 2, 2, 0, 2, 2,
1094         0, 2, 2, 0, 2, 2, 2, 0,
1095         2, 2, 2, 2, 0, 2, 2, 2,
1096         0, 2, 2, 2, 2, 0, 2, 2,
1097         2, 0, 2, 2, 2, 2, 0, 2,
1098         2, 2, 0, 2, 0, 0, 0, 15,
1099         0, 0, 2, 0, 2, 0, 2, 0,
1100         0, 2, 0, 0, 2, 0, 0, 2,
1101         0, 2, 2, 2, 2, 2, 2, 2,
1102         2, 2, 16, 2, 2, 0, 2, 0,
1103         0, 2, 2, 2, 0, 2, 2, 0,
1104         2, 2, 0, 2, 2, 2, 0, 2,
1105         2, 2, 2, 0, 2, 2, 2, 0,
1106         2, 2, 2, 2, 0, 2, 2, 2,
1107         0, 2, 2, 2, 2, 0, 2, 2,
1108         2, 0, 2, 0, 0, 0, 17, 0,
1109         0, 2, 0, 2, 0, 2, 0, 0,
1110         2, 0, 0, 2, 0, 0, 2, 0,
1111         2, 2, 2, 2, 2, 2, 2, 2,
1112         2, 18, 6, 0, 6, 6, 0, 6,
1113         2, 0, 6, 2, 6, 0, 6, 6,
1114         6, 2, 0, 6, 2, 6, 0, 6,
1115         6, 6, 2, 0, 6, 2, 6, 0,
1116         6, 6, 6, 2, 0, 6, 2, 6,
1117         0, 6, 0, 0, 0, 19, 0, 0,
1118         2, 0, 2, 0, 2, 0, 0, 2,
1119         0, 0, 2, 0, 0, 2, 0, 2,
1120         2, 2, 2, 2, 2, 2, 2, 2,
1121         20, 21, 2, 2, 0, 0, 0, 0,
1122         2, 2, 2, 2, 2, 0, 2, 2,
1123         0, 2, 2, 2, 0, 2, 2, 2,
1124         2, 0, 2, 2, 2, 0, 2, 2,
1125         2, 2, 0, 2, 2, 2, 0, 2,
1126         2, 2, 2, 0, 2, 2, 2, 0,
1127         2, 0, 0, 0, 22, 0, 0, 2,
1128         0, 2, 0, 2, 0, 0, 2, 0,
1129         0, 2, 0, 0, 2, 0, 2, 2,
1130         2, 2, 2, 2, 2, 2, 2, 0,
1131         0, 8, 2, 0, 0, 2, 0, 2,
1132         0, 0, 0, 0, 8, 8, 0, 8,
1133         8, 0, 0, 2, 0, 0, 0, 2,
1134         0, 0, 2, 0, 0, 2, 0, 0,
1135         2, 0, 2, 23, 2, 0, 0, 0,
1136         0, 0, 24, 0, 0
1137 };
1138 
1139 static const char _indic_syllable_machine_to_state_actions[] = {
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, 10, 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, 0, 0, 0, 0, 0,
1173         0, 0, 0, 0, 0, 0, 0, 0,
1174         0, 0, 0, 0, 0, 0, 0, 0,
1175         0, 0, 0, 0, 0, 0, 0, 0,
1176         0, 0, 0, 0, 0, 0, 0, 0,
1177         0, 0, 0, 0, 0, 0, 0, 0,
1178         0, 0, 0, 0, 0, 0, 0, 0,
1179         0, 0, 0, 0, 0, 0, 0, 0,
1180         0, 0, 0, 0, 0, 0, 0, 0,
1181         0, 0, 0, 0, 0, 0, 0, 0,
1182         0, 0, 0, 0, 0, 0, 0, 0,
1183         0, 0, 0, 0, 0, 0, 0, 0,
1184         0, 0, 0, 0, 0, 0, 0, 0,
1185         0, 0, 0, 0, 0, 0, 0, 0,
1186         0, 0, 0, 0, 0, 0, 0, 0,
1187         0, 0, 0, 0, 0, 0, 0, 0,
1188         0, 0, 0, 0, 0, 0, 0, 0,
1189         0, 0, 0, 0, 0, 0, 0, 0,
1190         0, 0, 0, 0, 0, 0, 0, 0,
1191         0, 0, 0, 0, 0, 0, 0, 0,
1192         0, 0, 0, 0, 0, 0, 0, 0,
1193         0, 0, 0, 0, 0, 0, 0, 0,
1194         0, 0, 0, 0, 0, 0, 0, 0,
1195         0, 0, 0, 0, 0, 0, 0, 0,
1196         0, 0, 0, 0, 0, 0, 0, 0,
1197         0, 0, 0, 0, 0, 0, 0, 0,
1198         0, 0, 0, 0, 0, 0, 0, 0,
1199         0, 0, 0, 0, 0, 0, 0, 0,
1200         0, 0, 0, 0, 0, 0, 0, 0,
1201         0, 0, 0, 0, 0, 0, 0, 0,
1202         0, 0, 0, 0, 0, 0, 0, 0,
1203         0, 0, 0, 0, 0, 0, 0, 0,
1204         0, 0, 0, 0, 0, 0, 0, 0,
1205         0, 0, 0, 0, 0, 0, 0, 0,
1206         0, 0, 0, 0, 0, 0, 0, 0,
1207         0, 0, 0, 0
1208 };
1209 
1210 static const char _indic_syllable_machine_from_state_actions[] = {
1211         0, 0, 0, 0, 0, 0, 0, 0,
1212         0, 0, 0, 0, 0, 0, 0, 0,
1213         0, 0, 0, 0, 0, 0, 0, 0,
1214         0, 0, 0, 0, 0, 0, 0, 0,
1215         0, 0, 0, 0, 0, 0, 0, 0,
1216         0, 0, 0, 0, 0, 0, 0, 0,
1217         0, 0, 0, 0, 0, 0, 0, 0,
1218         0, 0, 0, 0, 0, 0, 0, 0,
1219         0, 0, 0, 0, 0, 0, 0, 0,
1220         0, 0, 0, 0, 0, 0, 0, 0,
1221         0, 0, 0, 0, 0, 0, 0, 0,
1222         0, 0, 0, 0, 0, 0, 0, 0,
1223         0, 0, 0, 0, 0, 0, 0, 0,
1224         0, 0, 0, 0, 0, 0, 0, 0,
1225         0, 0, 0, 0, 0, 0, 0, 0,
1226         0, 0, 0, 0, 0, 0, 0, 0,
1227         0, 0, 0, 0, 0, 0, 0, 0,
1228         0, 0, 0, 0, 0, 0, 0, 0,
1229         0, 0, 0, 0, 0, 0, 0, 0,
1230         0, 0, 0, 0, 0, 0, 0, 0,
1231         0, 0, 0, 0, 0, 0, 0, 0,
1232         0, 0, 0, 0, 0, 0, 0, 0,
1233         0, 0, 11, 0, 0, 0, 0, 0,
1234         0, 0, 0, 0, 0, 0, 0, 0,
1235         0, 0, 0, 0, 0, 0, 0, 0,
1236         0, 0, 0, 0, 0, 0, 0, 0,
1237         0, 0, 0, 0, 0, 0, 0, 0,
1238         0, 0, 0, 0, 0, 0, 0, 0,
1239         0, 0, 0, 0, 0, 0, 0, 0,
1240         0, 0, 0, 0, 0, 0, 0, 0,
1241         0, 0, 0, 0, 0, 0, 0, 0,
1242         0, 0, 0, 0, 0, 0, 0, 0,
1243         0, 0, 0, 0, 0, 0, 0, 0,
1244         0, 0, 0, 0, 0, 0, 0, 0,
1245         0, 0, 0, 0, 0, 0, 0, 0,
1246         0, 0, 0, 0, 0, 0, 0, 0,
1247         0, 0, 0, 0, 0, 0, 0, 0,
1248         0, 0, 0, 0, 0, 0, 0, 0,
1249         0, 0, 0, 0, 0, 0, 0, 0,
1250         0, 0, 0, 0, 0, 0, 0, 0,
1251         0, 0, 0, 0, 0, 0, 0, 0,
1252         0, 0, 0, 0, 0, 0, 0, 0,
1253         0, 0, 0, 0, 0, 0, 0, 0,
1254         0, 0, 0, 0, 0, 0, 0, 0,
1255         0, 0, 0, 0, 0, 0, 0, 0,
1256         0, 0, 0, 0, 0, 0, 0, 0,
1257         0, 0, 0, 0, 0, 0, 0, 0,
1258         0, 0, 0, 0, 0, 0, 0, 0,
1259         0, 0, 0, 0, 0, 0, 0, 0,
1260         0, 0, 0, 0, 0, 0, 0, 0,
1261         0, 0, 0, 0, 0, 0, 0, 0,
1262         0, 0, 0, 0, 0, 0, 0, 0,
1263         0, 0, 0, 0, 0, 0, 0, 0,
1264         0, 0, 0, 0, 0, 0, 0, 0,
1265         0, 0, 0, 0, 0, 0, 0, 0,
1266         0, 0, 0, 0, 0, 0, 0, 0,
1267         0, 0, 0, 0, 0, 0, 0, 0,
1268         0, 0, 0, 0, 0, 0, 0, 0,
1269         0, 0, 0, 0, 0, 0, 0, 0,
1270         0, 0, 0, 0, 0, 0, 0, 0,
1271         0, 0, 0, 0, 0, 0, 0, 0,
1272         0, 0, 0, 0, 0, 0, 0, 0,
1273         0, 0, 0, 0, 0, 0, 0, 0,
1274         0, 0, 0, 0, 0, 0, 0, 0,
1275         0, 0, 0, 0, 0, 0, 0, 0,
1276         0, 0, 0, 0, 0, 0, 0, 0,
1277         0, 0, 0, 0, 0, 0, 0, 0,
1278         0, 0, 0, 0
1279 };
1280 
1281 static const short _indic_syllable_machine_eof_trans[] = {
1282         1, 1, 1, 1, 1, 1, 1, 1,
1283         1, 1, 1, 1, 1, 1, 1, 1,
1284         1, 1, 1, 1, 1, 1, 1, 1,
1285         1, 1, 1, 1, 1, 1, 1, 1,
1286         1, 1, 1, 1, 1, 40, 40, 40,
1287         40, 40, 40, 40, 40, 40, 40, 40,
1288         40, 40, 40, 40, 40, 40, 40, 40,
1289         40, 40, 40, 40, 40, 40, 40, 40,
1290         40, 40, 40, 40, 40, 40, 40, 40,
1291         40, 40, 79, 79, 79, 79, 86, 86,
1292         79, 79, 79, 79, 79, 79, 79, 79,
1293         79, 79, 79, 79, 79, 79, 79, 79,
1294         79, 79, 79, 79, 79, 79, 79, 79,
1295         79, 79, 79, 79, 79, 79, 118, 118,
1296         118, 118, 118, 118, 118, 118, 118, 118,
1297         118, 118, 118, 118, 118, 118, 118, 118,
1298         118, 118, 118, 118, 118, 118, 118, 118,
1299         118, 118, 118, 118, 118, 118, 118, 118,
1300         118, 118, 118, 79, 1, 1, 1, 1,
1301         1, 1, 1, 1, 1, 1, 1, 1,
1302         1, 1, 1, 1, 1, 1, 1, 1,
1303         1, 1, 1, 1, 1, 1, 1, 1,
1304         1, 186, 0, 204, 204, 204, 204, 204,
1305         204, 204, 204, 204, 204, 204, 204, 204,
1306         204, 204, 204, 204, 204, 204, 204, 204,
1307         204, 204, 204, 204, 204, 204, 204, 204,
1308         204, 204, 204, 204, 204, 204, 204, 204,
1309         204, 204, 204, 204, 204, 204, 204, 204,
1310         204, 204, 204, 204, 204, 204, 204, 204,
1311         204, 204, 204, 204, 204, 204, 204, 204,
1312         204, 204, 204, 204, 204, 204, 204, 204,
1313         204, 204, 204, 204, 204, 204, 204, 204,
1314         204, 204, 283, 283, 283, 283, 283, 283,
1315         283, 283, 283, 283, 283, 283, 283, 283,
1316         283, 283, 283, 283, 283, 283, 283, 283,
1317         283, 283, 283, 283, 283, 283, 283, 283,
1318         283, 283, 283, 283, 283, 283, 283, 283,
1319         283, 283, 283, 283, 283, 283, 283, 283,
1320         283, 283, 283, 283, 283, 283, 283, 283,
1321         283, 283, 283, 283, 283, 283, 283, 283,
1322         283, 283, 283, 283, 283, 283, 283, 283,
1323         283, 283, 283, 283, 283, 283, 283, 283,
1324         283, 362, 362, 362, 362, 362, 362, 362,
1325         362, 362, 362, 362, 362, 362, 362, 362,
1326         362, 362, 362, 362, 362, 362, 362, 362,
1327         362, 362, 362, 362, 362, 362, 362, 362,
1328         362, 362, 362, 362, 362, 362, 362, 362,
1329         362, 362, 362, 362, 362, 362, 362, 362,
1330         362, 362, 362, 362, 362, 362, 362, 362,
1331         362, 362, 362, 362, 362, 362, 362, 362,
1332         362, 362, 362, 362, 362, 362, 362, 362,
1333         362, 362, 362, 362, 362, 433, 362, 433,
1334         434, 434, 434, 434, 434, 434, 434, 434,
1335         434, 434, 434, 434, 434, 434, 434, 434,
1336         434, 434, 434, 434, 434, 434, 434, 434,
1337         434, 434, 434, 434, 434, 434, 434, 434,
1338         434, 434, 434, 434, 434, 434, 434, 434,
1339         434, 434, 434, 434, 434, 434, 434, 434,
1340         434, 434, 434, 434, 434, 434, 434, 434,
1341         434, 434, 434, 434, 434, 434, 434, 434,
1342         434, 434, 434, 434, 434, 434, 434, 434,
1343         434, 434, 434, 434, 434, 434, 362, 204,
1344         204, 204, 204, 204, 204, 204, 204, 204,
1345         204, 362, 204, 204, 204, 204, 204, 204,
1346         204, 204, 204, 204, 204, 204, 204, 204,
1347         204, 204, 204, 204, 204, 204, 204, 204,
1348         204, 362, 548, 548, 548, 548, 548, 548,
1349         548, 548, 548, 433
1350 };
1351 
1352 static const int indic_syllable_machine_start = 178;
1353 static const int indic_syllable_machine_first_final = 178;
1354 static const int indic_syllable_machine_error = -1;
1355 
1356 static const int indic_syllable_machine_en_main = 178;
1357 
1358 
1359 #line 36 "hb-ot-shape-complex-indic-machine.rl"
1360 
1361 
1362 
1363 #line 97 "hb-ot-shape-complex-indic-machine.rl"
1364 
1365 
1366 #define found_syllable(syllable_type) \
1367   HB_STMT_START { \
1368     if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
1369     for (unsigned int i = last; i < p+1; i++) \
1370       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
1371     last = p+1; \
1372     syllable_serial++; \
1373     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
1374   } HB_STMT_END
1375 
1376 static void
1377 find_syllables (hb_buffer_t *buffer)
1378 {
1379   unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
1380   int cs;
1381   hb_glyph_info_t *info = buffer->info;
1382 
1383 #line 1384 "hb-ot-shape-complex-indic-machine.hh"
1384         {
1385         cs = indic_syllable_machine_start;
1386         ts = 0;
1387         te = 0;
1388         act = 0;
1389         }
1390 
1391 #line 118 "hb-ot-shape-complex-indic-machine.rl"
1392 
1393 
1394   p = 0;
1395   pe = eof = buffer->len;
1396 
1397   unsigned int last = 0;
1398   unsigned int syllable_serial = 1;
1399 
1400 #line 1401 "hb-ot-shape-complex-indic-machine.hh"
1401         {
1402         int _slen;
1403         int _trans;
1404         const unsigned char *_keys;
1405         const short *_inds;
1406         if ( p == pe )
1407                 goto _test_eof;
1408 _resume:
1409         switch ( _indic_syllable_machine_from_state_actions[cs] ) {
1410         case 11:
1411 #line 1 "NONE"
1412         {ts = p;}
1413         break;
1414 #line 1415 "hb-ot-shape-complex-indic-machine.hh"
1415         }
1416 
1417         _keys = _indic_syllable_machine_trans_keys + (cs<<1);
1418         _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
1419 
1420         _slen = _indic_syllable_machine_key_spans[cs];
1421         _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
1422                 ( info[p].indic_category()) <= _keys[1] ?
1423                 ( info[p].indic_category()) - _keys[0] : _slen ];
1424 
1425 _eof_trans:
1426         cs = _indic_syllable_machine_trans_targs[_trans];
1427 
1428         if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
1429                 goto _again;
1430 
1431         switch ( _indic_syllable_machine_trans_actions[_trans] ) {
1432         case 2:
1433 #line 1 "NONE"
1434         {te = p+1;}
1435         break;
1436         case 15:
1437 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1438         {te = p+1;{ found_syllable (consonant_syllable); }}
1439         break;
1440         case 17:
1441 #line 89 "hb-ot-shape-complex-indic-machine.rl"
1442         {te = p+1;{ found_syllable (vowel_syllable); }}
1443         break;
1444         case 22:
1445 #line 90 "hb-ot-shape-complex-indic-machine.rl"
1446         {te = p+1;{ found_syllable (standalone_cluster); }}
1447         break;
1448         case 24:
1449 #line 91 "hb-ot-shape-complex-indic-machine.rl"
1450         {te = p+1;{ found_syllable (symbol_cluster); }}
1451         break;
1452         case 19:
1453 #line 92 "hb-ot-shape-complex-indic-machine.rl"
1454         {te = p+1;{ found_syllable (broken_cluster); }}
1455         break;
1456         case 12:
1457 #line 93 "hb-ot-shape-complex-indic-machine.rl"
1458         {te = p+1;{ found_syllable (non_indic_cluster); }}
1459         break;
1460         case 14:
1461 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1462         {te = p;p--;{ found_syllable (consonant_syllable); }}
1463         break;
1464         case 16:
1465 #line 89 "hb-ot-shape-complex-indic-machine.rl"
1466         {te = p;p--;{ found_syllable (vowel_syllable); }}
1467         break;
1468         case 21:
1469 #line 90 "hb-ot-shape-complex-indic-machine.rl"
1470         {te = p;p--;{ found_syllable (standalone_cluster); }}
1471         break;
1472         case 23:
1473 #line 91 "hb-ot-shape-complex-indic-machine.rl"
1474         {te = p;p--;{ found_syllable (symbol_cluster); }}
1475         break;
1476         case 18:
1477 #line 92 "hb-ot-shape-complex-indic-machine.rl"
1478         {te = p;p--;{ found_syllable (broken_cluster); }}
1479         break;
1480         case 20:
1481 #line 93 "hb-ot-shape-complex-indic-machine.rl"
1482         {te = p;p--;{ found_syllable (non_indic_cluster); }}
1483         break;
1484         case 1:
1485 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1486         {{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
1487         break;
1488         case 3:
1489 #line 89 "hb-ot-shape-complex-indic-machine.rl"
1490         {{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
1491         break;
1492         case 7:
1493 #line 90 "hb-ot-shape-complex-indic-machine.rl"
1494         {{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
1495         break;
1496         case 9:
1497 #line 91 "hb-ot-shape-complex-indic-machine.rl"
1498         {{p = ((te))-1;}{ found_syllable (symbol_cluster); }}
1499         break;
1500         case 4:
1501 #line 92 "hb-ot-shape-complex-indic-machine.rl"
1502         {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
1503         break;
1504         case 5:
1505 #line 1 "NONE"
1506         {       switch( act ) {
1507         case 1:
1508         {{p = ((te))-1;} found_syllable (consonant_syllable); }
1509         break;
1510         case 5:
1511         {{p = ((te))-1;} found_syllable (broken_cluster); }
1512         break;
1513         case 6:
1514         {{p = ((te))-1;} found_syllable (non_indic_cluster); }
1515         break;
1516         }
1517         }
1518         break;
1519         case 8:
1520 #line 1 "NONE"
1521         {te = p+1;}
1522 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1523         {act = 1;}
1524         break;
1525         case 6:
1526 #line 1 "NONE"
1527         {te = p+1;}
1528 #line 92 "hb-ot-shape-complex-indic-machine.rl"
1529         {act = 5;}
1530         break;
1531         case 13:
1532 #line 1 "NONE"
1533         {te = p+1;}
1534 #line 93 "hb-ot-shape-complex-indic-machine.rl"
1535         {act = 6;}
1536         break;
1537 #line 1538 "hb-ot-shape-complex-indic-machine.hh"
1538         }
1539 
1540 _again:
1541         switch ( _indic_syllable_machine_to_state_actions[cs] ) {
1542         case 10:
1543 #line 1 "NONE"
1544         {ts = 0;}
1545         break;
1546 #line 1547 "hb-ot-shape-complex-indic-machine.hh"
1547         }
1548 
1549         if ( ++p != pe )
1550                 goto _resume;
1551         _test_eof: {}
1552         if ( p == eof )
1553         {
1554         if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
1555                 _trans = _indic_syllable_machine_eof_trans[cs] - 1;
1556                 goto _eof_trans;
1557         }
1558         }
1559 
1560         }
1561 
1562 #line 127 "hb-ot-shape-complex-indic-machine.rl"
1563 
1564 }
1565 
1566 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */