Imported Upstream version 1.8.1
[platform/upstream/harfbuzz.git] / src / hb-ot-shape-complex-indic-machine.hh
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, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 
38         5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 
39         4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 
40         16u, 16u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 
41         4u, 13u, 4u, 8u, 4u, 13u, 8u, 8u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 
42         5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 
43         4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 
44         16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 
45         4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 8u, 8u, 5u, 8u, 
46         5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 
47         5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 
48         16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 
49         4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 
50         8u, 8u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 
51         5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 
52         4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 
53         16u, 16u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 
54         4u, 13u, 4u, 8u, 4u, 13u, 4u, 13u, 5u, 8u, 5u, 8u, 5u, 7u, 5u, 8u, 
55         5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 
56         8u, 8u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 
57         6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 8u, 8u, 1u, 19u, 3u, 17u, 
58         3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 
59         3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 
60         3u, 17u, 4u, 17u, 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 
61         5u, 10u, 3u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 
62         3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 
63         3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 
64         1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 
65         1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 
66         3u, 17u, 3u, 17u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 
67         4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 
68         4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 10u, 5u, 10u, 5u, 10u, 
69         10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 
70         3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 
71         5u, 10u, 3u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 
72         1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 
73         3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 
74         1u, 16u, 1u, 16u, 1u, 16u, 4u, 8u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 
75         3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 
76         3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 10u, 
77         5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 3u, 10u, 
78         4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 
79         3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 
80         1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 
81         1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 
82         3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 13u, 3u, 17u, 4u, 8u, 
83         3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 
84         3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 
85         3u, 17u, 3u, 17u, 4u, 17u, 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 
86         10u, 10u, 5u, 10u, 3u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 
87         5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 
88         4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 
89         3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 
90         1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 
91         1u, 16u, 3u, 17u, 1u, 17u, 3u, 17u, 1u, 17u, 4u, 13u, 5u, 10u, 10u, 10u, 
92         10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 
93         4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 
94         3u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 
95         0
96 };
97
98 static const char _indic_syllable_machine_key_spans[] = {
99         1, 4, 3, 1, 4, 3, 1, 4, 
100         3, 1, 4, 3, 1, 5, 1, 1, 
101         5, 1, 1, 5, 1, 1, 5, 1, 
102         1, 5, 10, 5, 10, 5, 10, 5, 
103         10, 5, 10, 1, 4, 3, 1, 4, 
104         3, 1, 4, 3, 1, 4, 3, 1, 
105         5, 1, 1, 5, 1, 1, 5, 1, 
106         1, 5, 1, 1, 5, 10, 5, 10, 
107         5, 10, 5, 10, 5, 10, 1, 4, 
108         3, 1, 4, 3, 1, 4, 3, 1, 
109         4, 3, 1, 5, 1, 1, 5, 1, 
110         1, 5, 1, 1, 5, 1, 1, 5, 
111         10, 5, 10, 5, 10, 5, 10, 5, 
112         1, 4, 3, 1, 4, 3, 1, 4, 
113         3, 1, 4, 3, 1, 5, 1, 1, 
114         5, 1, 1, 5, 1, 1, 5, 1, 
115         1, 5, 10, 5, 10, 5, 10, 5, 
116         10, 5, 10, 10, 4, 4, 3, 4, 
117         3, 1, 4, 3, 1, 4, 3, 1, 
118         1, 5, 1, 1, 5, 1, 1, 5, 
119         1, 1, 5, 1, 1, 1, 19, 15, 
120         15, 14, 16, 15, 15, 14, 16, 15, 
121         15, 14, 16, 15, 15, 14, 16, 15, 
122         15, 14, 6, 6, 6, 1, 1, 1, 
123         6, 8, 8, 7, 6, 8, 7, 6, 
124         8, 7, 6, 8, 7, 6, 8, 7, 
125         15, 15, 16, 16, 16, 16, 15, 15, 
126         16, 16, 16, 16, 15, 15, 16, 16, 
127         16, 16, 15, 15, 16, 16, 16, 16, 
128         15, 15, 15, 15, 14, 16, 15, 15, 
129         14, 16, 15, 15, 14, 16, 15, 15, 
130         14, 16, 15, 15, 14, 6, 6, 6, 
131         1, 1, 1, 6, 8, 8, 7, 6, 
132         8, 7, 6, 8, 7, 6, 8, 7, 
133         6, 8, 7, 15, 15, 16, 16, 16, 
134         16, 15, 15, 16, 16, 16, 16, 15, 
135         15, 16, 16, 16, 16, 15, 15, 16, 
136         16, 16, 16, 5, 15, 15, 14, 16, 
137         15, 15, 14, 16, 15, 15, 14, 16, 
138         15, 15, 14, 16, 15, 15, 14, 6, 
139         6, 6, 1, 1, 1, 6, 8, 8, 
140         7, 6, 8, 7, 6, 8, 7, 6, 
141         8, 7, 6, 8, 7, 15, 15, 16, 
142         16, 16, 16, 15, 15, 16, 16, 16, 
143         16, 15, 15, 16, 16, 16, 16, 15, 
144         15, 16, 16, 16, 16, 10, 15, 5, 
145         15, 15, 14, 16, 15, 15, 14, 16, 
146         15, 15, 14, 16, 15, 15, 14, 16, 
147         15, 15, 14, 6, 6, 6, 1, 1, 
148         1, 6, 8, 8, 7, 6, 8, 7, 
149         6, 8, 7, 6, 8, 7, 6, 8, 
150         7, 15, 15, 16, 16, 16, 16, 15, 
151         15, 16, 16, 16, 16, 15, 15, 16, 
152         16, 16, 16, 15, 15, 16, 16, 16, 
153         16, 15, 17, 15, 17, 10, 6, 1, 
154         1, 1, 6, 16, 8, 7, 6, 8, 
155         7, 6, 8, 7, 6, 8, 7, 6, 
156         8, 6, 6, 1, 1, 1, 6, 16
157 };
158
159 static const short _indic_syllable_machine_index_offsets[] = {
160         0, 2, 7, 11, 13, 18, 22, 24, 
161         29, 33, 35, 40, 44, 46, 52, 54, 
162         56, 62, 64, 66, 72, 74, 76, 82, 
163         84, 86, 92, 103, 109, 120, 126, 137, 
164         143, 154, 160, 171, 173, 178, 182, 184, 
165         189, 193, 195, 200, 204, 206, 211, 215, 
166         217, 223, 225, 227, 233, 235, 237, 243, 
167         245, 247, 253, 255, 257, 263, 274, 280, 
168         291, 297, 308, 314, 325, 331, 342, 344, 
169         349, 353, 355, 360, 364, 366, 371, 375, 
170         377, 382, 386, 388, 394, 396, 398, 404, 
171         406, 408, 414, 416, 418, 424, 426, 428, 
172         434, 445, 451, 462, 468, 479, 485, 496, 
173         502, 504, 509, 513, 515, 520, 524, 526, 
174         531, 535, 537, 542, 546, 548, 554, 556, 
175         558, 564, 566, 568, 574, 576, 578, 584, 
176         586, 588, 594, 605, 611, 622, 628, 639, 
177         645, 656, 662, 673, 684, 689, 694, 698, 
178         703, 707, 709, 714, 718, 720, 725, 729, 
179         731, 733, 739, 741, 743, 749, 751, 753, 
180         759, 761, 763, 769, 771, 773, 775, 795, 
181         811, 827, 842, 859, 875, 891, 906, 923, 
182         939, 955, 970, 987, 1003, 1019, 1034, 1051, 
183         1067, 1083, 1098, 1105, 1112, 1119, 1121, 1123, 
184         1125, 1132, 1141, 1150, 1158, 1165, 1174, 1182, 
185         1189, 1198, 1206, 1213, 1222, 1230, 1237, 1246, 
186         1254, 1270, 1286, 1303, 1320, 1337, 1354, 1370, 
187         1386, 1403, 1420, 1437, 1454, 1470, 1486, 1503, 
188         1520, 1537, 1554, 1570, 1586, 1603, 1620, 1637, 
189         1654, 1670, 1686, 1702, 1718, 1733, 1750, 1766, 
190         1782, 1797, 1814, 1830, 1846, 1861, 1878, 1894, 
191         1910, 1925, 1942, 1958, 1974, 1989, 1996, 2003, 
192         2010, 2012, 2014, 2016, 2023, 2032, 2041, 2049, 
193         2056, 2065, 2073, 2080, 2089, 2097, 2104, 2113, 
194         2121, 2128, 2137, 2145, 2161, 2177, 2194, 2211, 
195         2228, 2245, 2261, 2277, 2294, 2311, 2328, 2345, 
196         2361, 2377, 2394, 2411, 2428, 2445, 2461, 2477, 
197         2494, 2511, 2528, 2545, 2551, 2567, 2583, 2598, 
198         2615, 2631, 2647, 2662, 2679, 2695, 2711, 2726, 
199         2743, 2759, 2775, 2790, 2807, 2823, 2839, 2854, 
200         2861, 2868, 2875, 2877, 2879, 2881, 2888, 2897, 
201         2906, 2914, 2921, 2930, 2938, 2945, 2954, 2962, 
202         2969, 2978, 2986, 2993, 3002, 3010, 3026, 3042, 
203         3059, 3076, 3093, 3110, 3126, 3142, 3159, 3176, 
204         3193, 3210, 3226, 3242, 3259, 3276, 3293, 3310, 
205         3326, 3342, 3359, 3376, 3393, 3410, 3421, 3437, 
206         3443, 3459, 3475, 3490, 3507, 3523, 3539, 3554, 
207         3571, 3587, 3603, 3618, 3635, 3651, 3667, 3682, 
208         3699, 3715, 3731, 3746, 3753, 3760, 3767, 3769, 
209         3771, 3773, 3780, 3789, 3798, 3806, 3813, 3822, 
210         3830, 3837, 3846, 3854, 3861, 3870, 3878, 3885, 
211         3894, 3902, 3918, 3934, 3951, 3968, 3985, 4002, 
212         4018, 4034, 4051, 4068, 4085, 4102, 4118, 4134, 
213         4151, 4168, 4185, 4202, 4218, 4234, 4251, 4268, 
214         4285, 4302, 4318, 4336, 4352, 4370, 4381, 4388, 
215         4390, 4392, 4394, 4401, 4418, 4427, 4435, 4442, 
216         4451, 4459, 4466, 4475, 4483, 4490, 4499, 4507, 
217         4514, 4523, 4530, 4537, 4539, 4541, 4543, 4550
218 };
219
220 static const short _indic_syllable_machine_indicies[] = {
221         1, 0, 2, 2, 3, 1, 0, 4, 
222         4, 3, 0, 3, 0, 5, 5, 6, 
223         1, 0, 7, 7, 6, 0, 6, 0, 
224         8, 8, 9, 1, 0, 10, 10, 9, 
225         0, 9, 0, 11, 11, 12, 1, 0, 
226         13, 13, 12, 0, 12, 0, 14, 0, 
227         0, 0, 1, 0, 15, 0, 16, 0, 
228         17, 11, 11, 12, 1, 0, 18, 0, 
229         19, 0, 20, 8, 8, 9, 1, 0, 
230         21, 0, 22, 0, 23, 5, 5, 6, 
231         1, 0, 24, 0, 25, 0, 26, 2, 
232         2, 3, 1, 0, 26, 2, 2, 3, 
233         1, 0, 0, 0, 0, 27, 0, 28, 
234         2, 2, 3, 1, 0, 28, 2, 2, 
235         3, 1, 0, 0, 0, 0, 29, 0, 
236         30, 2, 2, 3, 1, 0, 30, 2, 
237         2, 3, 1, 0, 0, 0, 0, 31, 
238         0, 32, 2, 2, 3, 1, 0, 32, 
239         2, 2, 3, 1, 0, 0, 0, 0, 
240         33, 0, 34, 2, 2, 3, 1, 0, 
241         34, 2, 2, 3, 1, 0, 0, 0, 
242         0, 35, 0, 37, 36, 38, 38, 39, 
243         37, 36, 40, 40, 39, 36, 39, 36, 
244         41, 41, 42, 37, 36, 43, 43, 42, 
245         36, 42, 36, 44, 44, 45, 37, 36, 
246         46, 46, 45, 36, 45, 36, 47, 47, 
247         48, 37, 36, 49, 49, 48, 36, 48, 
248         36, 50, 36, 36, 36, 37, 36, 51, 
249         36, 52, 36, 53, 47, 47, 48, 37, 
250         36, 54, 36, 55, 36, 56, 44, 44, 
251         45, 37, 36, 57, 36, 58, 36, 59, 
252         41, 41, 42, 37, 36, 60, 36, 61, 
253         36, 62, 38, 38, 39, 37, 36, 62, 
254         38, 38, 39, 37, 36, 36, 36, 36, 
255         63, 36, 64, 38, 38, 39, 37, 36, 
256         64, 38, 38, 39, 37, 36, 36, 36, 
257         36, 65, 36, 66, 38, 38, 39, 37, 
258         36, 66, 38, 38, 39, 37, 36, 36, 
259         36, 36, 67, 36, 68, 38, 38, 39, 
260         37, 36, 68, 38, 38, 39, 37, 36, 
261         36, 36, 36, 69, 36, 70, 38, 38, 
262         39, 37, 36, 70, 38, 38, 39, 37, 
263         36, 36, 36, 36, 71, 36, 73, 72, 
264         74, 74, 75, 73, 72, 77, 77, 75, 
265         76, 75, 76, 78, 78, 79, 73, 72, 
266         80, 80, 79, 72, 79, 72, 81, 81, 
267         82, 73, 72, 83, 83, 82, 72, 82, 
268         72, 84, 84, 85, 73, 72, 86, 86, 
269         85, 72, 85, 72, 87, 72, 72, 72, 
270         73, 72, 88, 72, 89, 72, 90, 84, 
271         84, 85, 73, 72, 91, 72, 92, 72, 
272         93, 81, 81, 82, 73, 72, 94, 72, 
273         95, 72, 96, 78, 78, 79, 73, 72, 
274         97, 72, 98, 72, 99, 74, 74, 75, 
275         73, 72, 99, 74, 74, 75, 73, 72, 
276         72, 72, 72, 100, 72, 101, 74, 74, 
277         75, 73, 72, 101, 74, 74, 75, 73, 
278         72, 72, 72, 72, 102, 72, 103, 74, 
279         74, 75, 73, 72, 103, 74, 74, 75, 
280         73, 72, 72, 72, 72, 104, 72, 105, 
281         74, 74, 75, 73, 72, 105, 74, 74, 
282         75, 73, 72, 72, 72, 72, 106, 72, 
283         107, 74, 74, 75, 73, 72, 109, 108, 
284         110, 110, 111, 109, 108, 112, 112, 111, 
285         108, 111, 108, 113, 113, 114, 109, 108, 
286         115, 115, 114, 108, 114, 108, 116, 116, 
287         117, 109, 108, 118, 118, 117, 108, 117, 
288         108, 119, 119, 120, 109, 108, 121, 121, 
289         120, 108, 120, 108, 122, 108, 108, 108, 
290         109, 108, 123, 108, 124, 108, 125, 119, 
291         119, 120, 109, 108, 126, 108, 127, 108, 
292         128, 116, 116, 117, 109, 108, 129, 108, 
293         130, 108, 131, 113, 113, 114, 109, 108, 
294         132, 108, 133, 108, 134, 110, 110, 111, 
295         109, 108, 134, 110, 110, 111, 109, 108, 
296         108, 108, 108, 135, 108, 136, 110, 110, 
297         111, 109, 108, 136, 110, 110, 111, 109, 
298         108, 108, 108, 108, 137, 108, 138, 110, 
299         110, 111, 109, 108, 138, 110, 110, 111, 
300         109, 108, 108, 108, 108, 139, 108, 140, 
301         110, 110, 111, 109, 108, 140, 110, 110, 
302         111, 109, 108, 108, 108, 108, 141, 108, 
303         142, 110, 110, 111, 109, 108, 142, 110, 
304         110, 111, 109, 108, 108, 108, 108, 143, 
305         108, 107, 74, 74, 75, 73, 72, 72, 
306         72, 72, 144, 72, 77, 77, 75, 1, 
307         0, 145, 145, 146, 1, 0, 4, 4, 
308         146, 0, 147, 147, 148, 149, 0, 150, 
309         150, 148, 0, 148, 0, 151, 151, 152, 
310         149, 0, 153, 153, 152, 0, 152, 0, 
311         154, 154, 155, 149, 0, 156, 156, 155, 
312         0, 155, 0, 149, 0, 157, 0, 0, 
313         0, 149, 0, 158, 0, 159, 0, 160, 
314         154, 154, 155, 149, 0, 161, 0, 162, 
315         0, 163, 151, 151, 152, 149, 0, 164, 
316         0, 165, 0, 166, 147, 147, 148, 149, 
317         0, 167, 0, 168, 0, 170, 169, 172, 
318         173, 174, 175, 176, 177, 75, 73, 171, 
319         178, 179, 179, 144, 171, 180, 181, 182, 
320         183, 184, 171, 186, 187, 188, 189, 3, 
321         1, 185, 190, 185, 185, 35, 185, 185, 
322         185, 191, 185, 192, 187, 193, 193, 3, 
323         1, 185, 190, 185, 185, 185, 185, 185, 
324         185, 191, 185, 187, 193, 193, 3, 1, 
325         185, 190, 185, 185, 185, 185, 185, 185, 
326         191, 185, 194, 185, 185, 185, 16, 195, 
327         185, 1, 185, 190, 185, 185, 185, 185, 
328         185, 194, 185, 196, 197, 198, 199, 3, 
329         1, 185, 190, 185, 185, 33, 185, 185, 
330         185, 191, 185, 200, 197, 201, 201, 3, 
331         1, 185, 190, 185, 185, 185, 185, 185, 
332         185, 191, 185, 197, 201, 201, 3, 1, 
333         185, 190, 185, 185, 185, 185, 185, 185, 
334         191, 185, 202, 185, 185, 185, 16, 203, 
335         185, 1, 185, 190, 185, 185, 185, 185, 
336         185, 202, 185, 204, 205, 206, 207, 3, 
337         1, 185, 190, 185, 185, 31, 185, 185, 
338         185, 191, 185, 208, 205, 209, 209, 3, 
339         1, 185, 190, 185, 185, 185, 185, 185, 
340         185, 191, 185, 205, 209, 209, 3, 1, 
341         185, 190, 185, 185, 185, 185, 185, 185, 
342         191, 185, 210, 185, 185, 185, 16, 211, 
343         185, 1, 185, 190, 185, 185, 185, 185, 
344         185, 210, 185, 212, 213, 214, 215, 3, 
345         1, 185, 190, 185, 185, 29, 185, 185, 
346         185, 191, 185, 216, 213, 217, 217, 3, 
347         1, 185, 190, 185, 185, 185, 185, 185, 
348         185, 191, 185, 213, 217, 217, 3, 1, 
349         185, 190, 185, 185, 185, 185, 185, 185, 
350         191, 185, 218, 185, 185, 185, 16, 219, 
351         185, 1, 185, 190, 185, 185, 185, 185, 
352         185, 218, 185, 220, 221, 222, 223, 3, 
353         1, 185, 190, 185, 185, 27, 185, 185, 
354         185, 191, 185, 224, 221, 225, 225, 3, 
355         1, 185, 190, 185, 185, 185, 185, 185, 
356         185, 191, 185, 221, 225, 225, 3, 1, 
357         185, 190, 185, 185, 185, 185, 185, 185, 
358         191, 185, 16, 226, 185, 1, 185, 190, 
359         185, 227, 227, 185, 1, 185, 190, 185, 
360         228, 185, 185, 229, 185, 190, 185, 190, 
361         185, 230, 185, 231, 185, 228, 185, 185, 
362         185, 185, 190, 185, 16, 185, 232, 232, 
363         3, 1, 185, 190, 185, 233, 25, 234, 
364         235, 6, 1, 185, 190, 185, 25, 234, 
365         235, 6, 1, 185, 190, 185, 234, 234, 
366         6, 1, 185, 190, 185, 236, 22, 237, 
367         238, 9, 1, 185, 190, 185, 22, 237, 
368         238, 9, 1, 185, 190, 185, 237, 237, 
369         9, 1, 185, 190, 185, 239, 19, 240, 
370         241, 12, 1, 185, 190, 185, 19, 240, 
371         241, 12, 1, 185, 190, 185, 240, 240, 
372         12, 1, 185, 190, 185, 242, 16, 227, 
373         243, 185, 1, 185, 190, 185, 16, 227, 
374         243, 185, 1, 185, 190, 185, 227, 244, 
375         185, 1, 185, 190, 185, 16, 185, 227, 
376         227, 185, 1, 185, 190, 185, 221, 225, 
377         225, 3, 1, 185, 190, 185, 220, 221, 
378         225, 225, 3, 1, 185, 190, 185, 185, 
379         185, 185, 185, 185, 191, 185, 220, 221, 
380         222, 225, 3, 1, 185, 190, 185, 185, 
381         27, 185, 185, 185, 191, 185, 218, 185, 
382         245, 185, 232, 232, 3, 1, 185, 190, 
383         185, 185, 185, 185, 185, 218, 185, 218, 
384         185, 185, 185, 227, 227, 185, 1, 185, 
385         190, 185, 185, 185, 185, 185, 218, 185, 
386         218, 185, 185, 185, 227, 246, 185, 1, 
387         185, 190, 185, 185, 185, 185, 185, 218, 
388         185, 218, 185, 245, 185, 227, 227, 185, 
389         1, 185, 190, 185, 185, 185, 185, 185, 
390         218, 185, 212, 213, 217, 217, 3, 1, 
391         185, 190, 185, 185, 185, 185, 185, 185, 
392         191, 185, 212, 213, 214, 217, 3, 1, 
393         185, 190, 185, 185, 29, 185, 185, 185, 
394         191, 185, 210, 185, 247, 185, 232, 232, 
395         3, 1, 185, 190, 185, 185, 185, 185, 
396         185, 210, 185, 210, 185, 185, 185, 227, 
397         227, 185, 1, 185, 190, 185, 185, 185, 
398         185, 185, 210, 185, 210, 185, 185, 185, 
399         227, 248, 185, 1, 185, 190, 185, 185, 
400         185, 185, 185, 210, 185, 210, 185, 247, 
401         185, 227, 227, 185, 1, 185, 190, 185, 
402         185, 185, 185, 185, 210, 185, 204, 205, 
403         209, 209, 3, 1, 185, 190, 185, 185, 
404         185, 185, 185, 185, 191, 185, 204, 205, 
405         206, 209, 3, 1, 185, 190, 185, 185, 
406         31, 185, 185, 185, 191, 185, 202, 185, 
407         249, 185, 232, 232, 3, 1, 185, 190, 
408         185, 185, 185, 185, 185, 202, 185, 202, 
409         185, 185, 185, 227, 227, 185, 1, 185, 
410         190, 185, 185, 185, 185, 185, 202, 185, 
411         202, 185, 185, 185, 227, 250, 185, 1, 
412         185, 190, 185, 185, 185, 185, 185, 202, 
413         185, 202, 185, 249, 185, 227, 227, 185, 
414         1, 185, 190, 185, 185, 185, 185, 185, 
415         202, 185, 196, 197, 201, 201, 3, 1, 
416         185, 190, 185, 185, 185, 185, 185, 185, 
417         191, 185, 196, 197, 198, 201, 3, 1, 
418         185, 190, 185, 185, 33, 185, 185, 185, 
419         191, 185, 194, 185, 251, 185, 232, 232, 
420         3, 1, 185, 190, 185, 185, 185, 185, 
421         185, 194, 185, 194, 185, 185, 185, 227, 
422         227, 185, 1, 185, 190, 185, 185, 185, 
423         185, 185, 194, 185, 194, 185, 185, 185, 
424         227, 252, 185, 1, 185, 190, 185, 185, 
425         185, 185, 185, 194, 185, 194, 185, 251, 
426         185, 227, 227, 185, 1, 185, 190, 185, 
427         185, 185, 185, 185, 194, 185, 186, 187, 
428         193, 193, 3, 1, 185, 190, 185, 185, 
429         185, 185, 185, 185, 191, 185, 186, 187, 
430         188, 193, 3, 1, 185, 190, 185, 185, 
431         35, 185, 185, 185, 191, 185, 254, 255, 
432         256, 257, 39, 37, 253, 258, 253, 253, 
433         71, 253, 253, 253, 259, 253, 260, 255, 
434         261, 257, 39, 37, 253, 258, 253, 253, 
435         253, 253, 253, 253, 259, 253, 255, 261, 
436         257, 39, 37, 253, 258, 253, 253, 253, 
437         253, 253, 253, 259, 253, 262, 253, 253, 
438         253, 52, 263, 253, 37, 253, 258, 253, 
439         253, 253, 253, 253, 262, 253, 264, 265, 
440         266, 267, 39, 37, 253, 258, 253, 253, 
441         69, 253, 253, 253, 259, 253, 268, 265, 
442         269, 269, 39, 37, 253, 258, 253, 253, 
443         253, 253, 253, 253, 259, 253, 265, 269, 
444         269, 39, 37, 253, 258, 253, 253, 253, 
445         253, 253, 253, 259, 253, 270, 253, 253, 
446         253, 52, 271, 253, 37, 253, 258, 253, 
447         253, 253, 253, 253, 270, 253, 272, 273, 
448         274, 275, 39, 37, 253, 258, 253, 253, 
449         67, 253, 253, 253, 259, 253, 276, 273, 
450         277, 277, 39, 37, 253, 258, 253, 253, 
451         253, 253, 253, 253, 259, 253, 273, 277, 
452         277, 39, 37, 253, 258, 253, 253, 253, 
453         253, 253, 253, 259, 253, 278, 253, 253, 
454         253, 52, 279, 253, 37, 253, 258, 253, 
455         253, 253, 253, 253, 278, 253, 280, 281, 
456         282, 283, 39, 37, 253, 258, 253, 253, 
457         65, 253, 253, 253, 259, 253, 284, 281, 
458         285, 285, 39, 37, 253, 258, 253, 253, 
459         253, 253, 253, 253, 259, 253, 281, 285, 
460         285, 39, 37, 253, 258, 253, 253, 253, 
461         253, 253, 253, 259, 253, 286, 253, 253, 
462         253, 52, 287, 253, 37, 253, 258, 253, 
463         253, 253, 253, 253, 286, 253, 288, 289, 
464         290, 291, 39, 37, 253, 258, 253, 253, 
465         63, 253, 253, 253, 259, 253, 292, 289, 
466         293, 293, 39, 37, 253, 258, 253, 253, 
467         253, 253, 253, 253, 259, 253, 289, 293, 
468         293, 39, 37, 253, 258, 253, 253, 253, 
469         253, 253, 253, 259, 253, 52, 294, 253, 
470         37, 253, 258, 253, 295, 295, 253, 37, 
471         253, 258, 253, 296, 253, 253, 297, 253, 
472         258, 253, 258, 253, 298, 253, 299, 253, 
473         296, 253, 253, 253, 253, 258, 253, 52, 
474         253, 300, 300, 39, 37, 253, 258, 253, 
475         301, 61, 302, 303, 42, 37, 253, 258, 
476         253, 61, 302, 303, 42, 37, 253, 258, 
477         253, 302, 302, 42, 37, 253, 258, 253, 
478         304, 58, 305, 306, 45, 37, 253, 258, 
479         253, 58, 305, 306, 45, 37, 253, 258, 
480         253, 305, 305, 45, 37, 253, 258, 253, 
481         307, 55, 308, 309, 48, 37, 253, 258, 
482         253, 55, 308, 309, 48, 37, 253, 258, 
483         253, 308, 308, 48, 37, 253, 258, 253, 
484         310, 52, 295, 311, 253, 37, 253, 258, 
485         253, 52, 295, 311, 253, 37, 253, 258, 
486         253, 295, 312, 253, 37, 253, 258, 253, 
487         52, 253, 295, 295, 253, 37, 253, 258, 
488         253, 289, 293, 293, 39, 37, 253, 258, 
489         253, 288, 289, 293, 293, 39, 37, 253, 
490         258, 253, 253, 253, 253, 253, 253, 259, 
491         253, 288, 289, 290, 293, 39, 37, 253, 
492         258, 253, 253, 63, 253, 253, 253, 259, 
493         253, 286, 253, 313, 253, 300, 300, 39, 
494         37, 253, 258, 253, 253, 253, 253, 253, 
495         286, 253, 286, 253, 253, 253, 295, 295, 
496         253, 37, 253, 258, 253, 253, 253, 253, 
497         253, 286, 253, 286, 253, 253, 253, 295, 
498         314, 253, 37, 253, 258, 253, 253, 253, 
499         253, 253, 286, 253, 286, 253, 313, 253, 
500         295, 295, 253, 37, 253, 258, 253, 253, 
501         253, 253, 253, 286, 253, 280, 281, 285, 
502         285, 39, 37, 253, 258, 253, 253, 253, 
503         253, 253, 253, 259, 253, 280, 281, 282, 
504         285, 39, 37, 253, 258, 253, 253, 65, 
505         253, 253, 253, 259, 253, 278, 253, 315, 
506         253, 300, 300, 39, 37, 253, 258, 253, 
507         253, 253, 253, 253, 278, 253, 278, 253, 
508         253, 253, 295, 295, 253, 37, 253, 258, 
509         253, 253, 253, 253, 253, 278, 253, 278, 
510         253, 253, 253, 295, 316, 253, 37, 253, 
511         258, 253, 253, 253, 253, 253, 278, 253, 
512         278, 253, 315, 253, 295, 295, 253, 37, 
513         253, 258, 253, 253, 253, 253, 253, 278, 
514         253, 272, 273, 277, 277, 39, 37, 253, 
515         258, 253, 253, 253, 253, 253, 253, 259, 
516         253, 272, 273, 274, 277, 39, 37, 253, 
517         258, 253, 253, 67, 253, 253, 253, 259, 
518         253, 270, 253, 317, 253, 300, 300, 39, 
519         37, 253, 258, 253, 253, 253, 253, 253, 
520         270, 253, 270, 253, 253, 253, 295, 295, 
521         253, 37, 253, 258, 253, 253, 253, 253, 
522         253, 270, 253, 270, 253, 253, 253, 295, 
523         318, 253, 37, 253, 258, 253, 253, 253, 
524         253, 253, 270, 253, 270, 253, 317, 253, 
525         295, 295, 253, 37, 253, 258, 253, 253, 
526         253, 253, 253, 270, 253, 264, 265, 269, 
527         269, 39, 37, 253, 258, 253, 253, 253, 
528         253, 253, 253, 259, 253, 264, 265, 266, 
529         269, 39, 37, 253, 258, 253, 253, 69, 
530         253, 253, 253, 259, 253, 262, 253, 319, 
531         253, 300, 300, 39, 37, 253, 258, 253, 
532         253, 253, 253, 253, 262, 253, 262, 253, 
533         253, 253, 295, 295, 253, 37, 253, 258, 
534         253, 253, 253, 253, 253, 262, 253, 262, 
535         253, 253, 253, 295, 320, 253, 37, 253, 
536         258, 253, 253, 253, 253, 253, 262, 253, 
537         262, 253, 319, 253, 295, 295, 253, 37, 
538         253, 258, 253, 253, 253, 253, 253, 262, 
539         253, 70, 38, 38, 39, 37, 253, 254, 
540         255, 261, 257, 39, 37, 253, 258, 253, 
541         253, 253, 253, 253, 253, 259, 253, 322, 
542         175, 323, 323, 75, 73, 321, 178, 321, 
543         321, 321, 321, 321, 321, 182, 321, 175, 
544         323, 323, 75, 73, 321, 178, 321, 321, 
545         321, 321, 321, 321, 182, 321, 324, 321, 
546         321, 321, 89, 325, 321, 73, 321, 178, 
547         321, 321, 321, 321, 321, 324, 321, 326, 
548         327, 328, 329, 75, 73, 321, 178, 321, 
549         321, 106, 321, 321, 321, 182, 321, 330, 
550         327, 331, 331, 75, 73, 321, 178, 321, 
551         321, 321, 321, 321, 321, 182, 321, 327, 
552         331, 331, 75, 73, 321, 178, 321, 321, 
553         321, 321, 321, 321, 182, 321, 332, 321, 
554         321, 321, 89, 333, 321, 73, 321, 178, 
555         321, 321, 321, 321, 321, 332, 321, 334, 
556         335, 336, 337, 75, 73, 321, 178, 321, 
557         321, 104, 321, 321, 321, 182, 321, 338, 
558         335, 339, 339, 75, 73, 321, 178, 321, 
559         321, 321, 321, 321, 321, 182, 321, 335, 
560         339, 339, 75, 73, 321, 178, 321, 321, 
561         321, 321, 321, 321, 182, 321, 340, 321, 
562         321, 321, 89, 341, 321, 73, 321, 178, 
563         321, 321, 321, 321, 321, 340, 321, 342, 
564         343, 344, 345, 75, 73, 321, 178, 321, 
565         321, 102, 321, 321, 321, 182, 321, 346, 
566         343, 347, 347, 75, 73, 321, 178, 321, 
567         321, 321, 321, 321, 321, 182, 321, 343, 
568         347, 347, 75, 73, 321, 178, 321, 321, 
569         321, 321, 321, 321, 182, 321, 348, 321, 
570         321, 321, 89, 349, 321, 73, 321, 178, 
571         321, 321, 321, 321, 321, 348, 321, 350, 
572         351, 352, 353, 75, 73, 321, 178, 321, 
573         321, 100, 321, 321, 321, 182, 321, 354, 
574         351, 355, 355, 75, 73, 321, 178, 321, 
575         321, 321, 321, 321, 321, 182, 321, 351, 
576         355, 355, 75, 73, 321, 178, 321, 321, 
577         321, 321, 321, 321, 182, 321, 89, 356, 
578         321, 73, 321, 178, 321, 357, 357, 321, 
579         73, 321, 178, 321, 358, 321, 321, 359, 
580         321, 178, 321, 178, 321, 360, 321, 361, 
581         321, 358, 321, 321, 321, 321, 178, 321, 
582         89, 321, 362, 362, 75, 73, 321, 178, 
583         321, 363, 98, 364, 365, 79, 73, 321, 
584         178, 321, 98, 364, 365, 79, 73, 321, 
585         178, 321, 364, 364, 79, 73, 321, 178, 
586         321, 366, 95, 367, 368, 82, 73, 321, 
587         178, 321, 95, 367, 368, 82, 73, 321, 
588         178, 321, 367, 367, 82, 73, 321, 178, 
589         321, 369, 92, 370, 371, 85, 73, 321, 
590         178, 321, 92, 370, 371, 85, 73, 321, 
591         178, 321, 370, 370, 85, 73, 321, 178, 
592         321, 372, 89, 357, 373, 321, 73, 321, 
593         178, 321, 89, 357, 373, 321, 73, 321, 
594         178, 321, 357, 374, 321, 73, 321, 178, 
595         321, 89, 321, 357, 357, 321, 73, 321, 
596         178, 321, 351, 355, 355, 75, 73, 321, 
597         178, 321, 350, 351, 355, 355, 75, 73, 
598         321, 178, 321, 321, 321, 321, 321, 321, 
599         182, 321, 350, 351, 352, 355, 75, 73, 
600         321, 178, 321, 321, 100, 321, 321, 321, 
601         182, 321, 348, 321, 375, 321, 362, 362, 
602         75, 73, 321, 178, 321, 321, 321, 321, 
603         321, 348, 321, 348, 321, 321, 321, 357, 
604         357, 321, 73, 321, 178, 321, 321, 321, 
605         321, 321, 348, 321, 348, 321, 321, 321, 
606         357, 376, 321, 73, 321, 178, 321, 321, 
607         321, 321, 321, 348, 321, 348, 321, 375, 
608         321, 357, 357, 321, 73, 321, 178, 321, 
609         321, 321, 321, 321, 348, 321, 342, 343, 
610         347, 347, 75, 73, 321, 178, 321, 321, 
611         321, 321, 321, 321, 182, 321, 342, 343, 
612         344, 347, 75, 73, 321, 178, 321, 321, 
613         102, 321, 321, 321, 182, 321, 340, 321, 
614         377, 321, 362, 362, 75, 73, 321, 178, 
615         321, 321, 321, 321, 321, 340, 321, 340, 
616         321, 321, 321, 357, 357, 321, 73, 321, 
617         178, 321, 321, 321, 321, 321, 340, 321, 
618         340, 321, 321, 321, 357, 378, 321, 73, 
619         321, 178, 321, 321, 321, 321, 321, 340, 
620         321, 340, 321, 377, 321, 357, 357, 321, 
621         73, 321, 178, 321, 321, 321, 321, 321, 
622         340, 321, 334, 335, 339, 339, 75, 73, 
623         321, 178, 321, 321, 321, 321, 321, 321, 
624         182, 321, 334, 335, 336, 339, 75, 73, 
625         321, 178, 321, 321, 104, 321, 321, 321, 
626         182, 321, 332, 321, 379, 321, 362, 362, 
627         75, 73, 321, 178, 321, 321, 321, 321, 
628         321, 332, 321, 332, 321, 321, 321, 357, 
629         357, 321, 73, 321, 178, 321, 321, 321, 
630         321, 321, 332, 321, 332, 321, 321, 321, 
631         357, 380, 321, 73, 321, 178, 321, 321, 
632         321, 321, 321, 332, 321, 332, 321, 379, 
633         321, 357, 357, 321, 73, 321, 178, 321, 
634         321, 321, 321, 321, 332, 321, 326, 327, 
635         331, 331, 75, 73, 321, 178, 321, 321, 
636         321, 321, 321, 321, 182, 321, 326, 327, 
637         328, 331, 75, 73, 321, 178, 321, 321, 
638         106, 321, 321, 321, 182, 321, 324, 321, 
639         381, 321, 362, 362, 75, 73, 321, 178, 
640         321, 321, 321, 321, 321, 324, 321, 324, 
641         321, 321, 321, 357, 357, 321, 73, 321, 
642         178, 321, 321, 321, 321, 321, 324, 321, 
643         324, 321, 321, 321, 357, 382, 321, 73, 
644         321, 178, 321, 321, 321, 321, 321, 324, 
645         321, 324, 321, 381, 321, 357, 357, 321, 
646         73, 321, 178, 321, 321, 321, 321, 321, 
647         324, 321, 107, 74, 74, 75, 73, 383, 
648         383, 383, 383, 144, 383, 174, 175, 323, 
649         323, 75, 73, 321, 178, 321, 321, 321, 
650         321, 321, 321, 182, 321, 107, 74, 74, 
651         75, 73, 383, 385, 386, 387, 388, 111, 
652         109, 384, 389, 384, 384, 143, 384, 384, 
653         384, 390, 384, 391, 386, 388, 388, 111, 
654         109, 384, 389, 384, 384, 384, 384, 384, 
655         384, 390, 384, 386, 388, 388, 111, 109, 
656         384, 389, 384, 384, 384, 384, 384, 384, 
657         390, 384, 392, 384, 384, 384, 124, 393, 
658         384, 109, 384, 389, 384, 384, 384, 384, 
659         384, 392, 384, 394, 395, 396, 397, 111, 
660         109, 384, 389, 384, 384, 141, 384, 384, 
661         384, 390, 384, 398, 395, 399, 399, 111, 
662         109, 384, 389, 384, 384, 384, 384, 384, 
663         384, 390, 384, 395, 399, 399, 111, 109, 
664         384, 389, 384, 384, 384, 384, 384, 384, 
665         390, 384, 400, 384, 384, 384, 124, 401, 
666         384, 109, 384, 389, 384, 384, 384, 384, 
667         384, 400, 384, 402, 403, 404, 405, 111, 
668         109, 384, 389, 384, 384, 139, 384, 384, 
669         384, 390, 384, 406, 403, 407, 407, 111, 
670         109, 384, 389, 384, 384, 384, 384, 384, 
671         384, 390, 384, 403, 407, 407, 111, 109, 
672         384, 389, 384, 384, 384, 384, 384, 384, 
673         390, 384, 408, 384, 384, 384, 124, 409, 
674         384, 109, 384, 389, 384, 384, 384, 384, 
675         384, 408, 384, 410, 411, 412, 413, 111, 
676         109, 384, 389, 384, 384, 137, 384, 384, 
677         384, 390, 384, 414, 411, 415, 415, 111, 
678         109, 384, 389, 384, 384, 384, 384, 384, 
679         384, 390, 384, 411, 415, 415, 111, 109, 
680         384, 389, 384, 384, 384, 384, 384, 384, 
681         390, 384, 416, 384, 384, 384, 124, 417, 
682         384, 109, 384, 389, 384, 384, 384, 384, 
683         384, 416, 384, 418, 419, 420, 421, 111, 
684         109, 384, 389, 384, 384, 135, 384, 384, 
685         384, 390, 384, 422, 419, 423, 423, 111, 
686         109, 384, 389, 384, 384, 384, 384, 384, 
687         384, 390, 384, 419, 423, 423, 111, 109, 
688         384, 389, 384, 384, 384, 384, 384, 384, 
689         390, 384, 124, 424, 384, 109, 384, 389, 
690         384, 425, 425, 384, 109, 384, 389, 384, 
691         426, 384, 384, 427, 384, 389, 384, 389, 
692         384, 428, 384, 429, 384, 426, 384, 384, 
693         384, 384, 389, 384, 124, 384, 430, 430, 
694         111, 109, 384, 389, 384, 431, 133, 432, 
695         433, 114, 109, 384, 389, 384, 133, 432, 
696         433, 114, 109, 384, 389, 384, 432, 432, 
697         114, 109, 384, 389, 384, 434, 130, 435, 
698         436, 117, 109, 384, 389, 384, 130, 435, 
699         436, 117, 109, 384, 389, 384, 435, 435, 
700         117, 109, 384, 389, 384, 437, 127, 438, 
701         439, 120, 109, 384, 389, 384, 127, 438, 
702         439, 120, 109, 384, 389, 384, 438, 438, 
703         120, 109, 384, 389, 384, 440, 124, 425, 
704         441, 384, 109, 384, 389, 384, 124, 425, 
705         441, 384, 109, 384, 389, 384, 425, 442, 
706         384, 109, 384, 389, 384, 124, 384, 425, 
707         425, 384, 109, 384, 389, 384, 419, 423, 
708         423, 111, 109, 384, 389, 384, 418, 419, 
709         423, 423, 111, 109, 384, 389, 384, 384, 
710         384, 384, 384, 384, 390, 384, 418, 419, 
711         420, 423, 111, 109, 384, 389, 384, 384, 
712         135, 384, 384, 384, 390, 384, 416, 384, 
713         443, 384, 430, 430, 111, 109, 384, 389, 
714         384, 384, 384, 384, 384, 416, 384, 416, 
715         384, 384, 384, 425, 425, 384, 109, 384, 
716         389, 384, 384, 384, 384, 384, 416, 384, 
717         416, 384, 384, 384, 425, 444, 384, 109, 
718         384, 389, 384, 384, 384, 384, 384, 416, 
719         384, 416, 384, 443, 384, 425, 425, 384, 
720         109, 384, 389, 384, 384, 384, 384, 384, 
721         416, 384, 410, 411, 415, 415, 111, 109, 
722         384, 389, 384, 384, 384, 384, 384, 384, 
723         390, 384, 410, 411, 412, 415, 111, 109, 
724         384, 389, 384, 384, 137, 384, 384, 384, 
725         390, 384, 408, 384, 445, 384, 430, 430, 
726         111, 109, 384, 389, 384, 384, 384, 384, 
727         384, 408, 384, 408, 384, 384, 384, 425, 
728         425, 384, 109, 384, 389, 384, 384, 384, 
729         384, 384, 408, 384, 408, 384, 384, 384, 
730         425, 446, 384, 109, 384, 389, 384, 384, 
731         384, 384, 384, 408, 384, 408, 384, 445, 
732         384, 425, 425, 384, 109, 384, 389, 384, 
733         384, 384, 384, 384, 408, 384, 402, 403, 
734         407, 407, 111, 109, 384, 389, 384, 384, 
735         384, 384, 384, 384, 390, 384, 402, 403, 
736         404, 407, 111, 109, 384, 389, 384, 384, 
737         139, 384, 384, 384, 390, 384, 400, 384, 
738         447, 384, 430, 430, 111, 109, 384, 389, 
739         384, 384, 384, 384, 384, 400, 384, 400, 
740         384, 384, 384, 425, 425, 384, 109, 384, 
741         389, 384, 384, 384, 384, 384, 400, 384, 
742         400, 384, 384, 384, 425, 448, 384, 109, 
743         384, 389, 384, 384, 384, 384, 384, 400, 
744         384, 400, 384, 447, 384, 425, 425, 384, 
745         109, 384, 389, 384, 384, 384, 384, 384, 
746         400, 384, 394, 395, 399, 399, 111, 109, 
747         384, 389, 384, 384, 384, 384, 384, 384, 
748         390, 384, 394, 395, 396, 399, 111, 109, 
749         384, 389, 384, 384, 141, 384, 384, 384, 
750         390, 384, 392, 384, 449, 384, 430, 430, 
751         111, 109, 384, 389, 384, 384, 384, 384, 
752         384, 392, 384, 392, 384, 384, 384, 425, 
753         425, 384, 109, 384, 389, 384, 384, 384, 
754         384, 384, 392, 384, 392, 384, 384, 384, 
755         425, 450, 384, 109, 384, 389, 384, 384, 
756         384, 384, 384, 392, 384, 392, 384, 449, 
757         384, 425, 425, 384, 109, 384, 389, 384, 
758         384, 384, 384, 384, 392, 384, 385, 386, 
759         388, 388, 111, 109, 384, 389, 384, 384, 
760         384, 384, 384, 384, 390, 384, 172, 173, 
761         174, 175, 451, 323, 75, 73, 321, 178, 
762         179, 179, 144, 321, 321, 172, 182, 321, 
763         186, 452, 188, 189, 3, 1, 185, 190, 
764         185, 185, 35, 185, 185, 185, 191, 185, 
765         194, 173, 174, 175, 453, 454, 75, 149, 
766         185, 455, 185, 179, 144, 185, 185, 194, 
767         182, 185, 107, 456, 456, 75, 149, 185, 
768         190, 185, 185, 144, 185, 457, 185, 185, 
769         458, 185, 455, 185, 455, 185, 459, 185, 
770         231, 185, 457, 185, 185, 185, 185, 455, 
771         185, 194, 185, 251, 107, 460, 460, 146, 
772         149, 185, 190, 185, 185, 185, 185, 185, 
773         194, 185, 461, 168, 462, 463, 148, 149, 
774         185, 455, 185, 168, 462, 463, 148, 149, 
775         185, 455, 185, 462, 462, 148, 149, 185, 
776         455, 185, 464, 165, 465, 466, 152, 149, 
777         185, 455, 185, 165, 465, 466, 152, 149, 
778         185, 455, 185, 465, 465, 152, 149, 185, 
779         455, 185, 467, 162, 468, 469, 155, 149, 
780         185, 455, 185, 162, 468, 469, 155, 149, 
781         185, 455, 185, 468, 468, 155, 149, 185, 
782         455, 185, 470, 159, 471, 472, 185, 149, 
783         185, 455, 185, 159, 471, 472, 185, 149, 
784         185, 455, 185, 471, 471, 185, 149, 185, 
785         455, 185, 474, 473, 475, 475, 473, 170, 
786         473, 476, 473, 475, 475, 473, 170, 473, 
787         476, 473, 477, 473, 473, 478, 473, 476, 
788         473, 476, 473, 479, 473, 480, 473, 477, 
789         473, 473, 473, 473, 476, 473, 172, 383, 
790         383, 383, 383, 383, 383, 383, 383, 383, 
791         179, 383, 383, 383, 383, 172, 383, 0
792 };
793
794 static const short _indic_syllable_machine_trans_targs[] = {
795         166, 188, 2, 194, 3, 5, 197, 6, 
796         8, 200, 9, 11, 203, 12, 14, 15, 
797         187, 17, 18, 202, 20, 21, 199, 23, 
798         24, 196, 205, 208, 212, 214, 218, 220, 
799         224, 226, 230, 232, 166, 255, 37, 261, 
800         38, 40, 264, 41, 43, 267, 44, 46, 
801         270, 47, 49, 50, 254, 52, 53, 269, 
802         55, 56, 266, 58, 59, 263, 272, 275, 
803         279, 281, 285, 287, 291, 293, 297, 300, 
804         166, 321, 72, 327, 166, 73, 75, 330, 
805         76, 78, 333, 79, 81, 336, 82, 84, 
806         85, 320, 87, 88, 335, 90, 91, 332, 
807         93, 94, 329, 338, 341, 345, 347, 351, 
808         353, 357, 359, 363, 166, 389, 106, 395, 
809         107, 109, 398, 110, 112, 401, 113, 115, 
810         404, 116, 118, 119, 388, 121, 122, 403, 
811         124, 125, 400, 127, 128, 397, 406, 409, 
812         413, 415, 419, 421, 425, 427, 431, 433, 
813         366, 142, 444, 144, 447, 438, 145, 147, 
814         450, 148, 150, 453, 151, 154, 155, 455, 
815         157, 158, 452, 160, 161, 449, 163, 164, 
816         446, 166, 458, 166, 167, 234, 301, 303, 
817         365, 367, 323, 368, 434, 435, 340, 456, 
818         463, 166, 168, 170, 34, 233, 190, 207, 
819         169, 33, 171, 228, 172, 174, 32, 227, 
820         173, 31, 175, 222, 176, 178, 30, 221, 
821         177, 29, 179, 216, 180, 182, 28, 215, 
822         181, 27, 183, 210, 184, 186, 26, 209, 
823         185, 25, 193, 0, 189, 192, 191, 166, 
824         1, 195, 4, 22, 198, 7, 19, 201, 
825         10, 16, 204, 13, 206, 211, 213, 217, 
826         219, 223, 225, 229, 231, 166, 235, 237, 
827         69, 299, 257, 274, 236, 68, 238, 295, 
828         239, 241, 67, 294, 240, 66, 242, 289, 
829         243, 245, 65, 288, 244, 64, 246, 283, 
830         247, 249, 63, 282, 248, 62, 250, 277, 
831         251, 253, 61, 276, 252, 60, 260, 35, 
832         256, 259, 258, 166, 36, 262, 39, 57, 
833         265, 42, 54, 268, 45, 51, 271, 48, 
834         273, 278, 280, 284, 286, 290, 292, 296, 
835         298, 166, 302, 103, 304, 361, 305, 307, 
836         102, 360, 306, 101, 308, 355, 309, 311, 
837         100, 354, 310, 99, 312, 349, 313, 315, 
838         98, 348, 314, 97, 316, 343, 317, 319, 
839         96, 342, 318, 95, 326, 70, 322, 325, 
840         324, 166, 71, 328, 74, 92, 331, 77, 
841         89, 334, 80, 86, 337, 83, 339, 344, 
842         346, 350, 352, 356, 358, 362, 364, 166, 
843         166, 369, 371, 138, 137, 391, 408, 370, 
844         372, 429, 373, 375, 136, 428, 374, 135, 
845         376, 423, 377, 379, 134, 422, 378, 133, 
846         380, 417, 381, 383, 132, 416, 382, 131, 
847         384, 411, 385, 387, 130, 410, 386, 129, 
848         394, 104, 390, 393, 392, 166, 105, 396, 
849         108, 126, 399, 111, 123, 402, 114, 120, 
850         405, 117, 407, 412, 414, 418, 420, 424, 
851         426, 430, 432, 139, 436, 437, 443, 440, 
852         140, 439, 442, 441, 141, 445, 143, 162, 
853         448, 146, 159, 451, 149, 156, 454, 152, 
854         153, 166, 457, 165, 460, 459, 462, 461, 
855         166
856 };
857
858 static const char _indic_syllable_machine_trans_actions[] = {
859         1, 0, 0, 2, 0, 0, 2, 0, 
860         0, 2, 0, 0, 2, 0, 0, 0, 
861         2, 0, 0, 2, 0, 0, 2, 0, 
862         0, 2, 2, 2, 2, 2, 2, 2, 
863         2, 2, 2, 2, 3, 0, 0, 2, 
864         0, 0, 2, 0, 0, 2, 0, 0, 
865         2, 0, 0, 0, 2, 0, 0, 2, 
866         0, 0, 2, 0, 0, 2, 2, 2, 
867         2, 2, 2, 2, 2, 2, 2, 2, 
868         4, 0, 0, 2, 5, 0, 0, 2, 
869         0, 0, 2, 0, 0, 2, 0, 0, 
870         0, 2, 0, 0, 2, 0, 0, 2, 
871         0, 0, 2, 2, 6, 2, 6, 2, 
872         6, 2, 6, 2, 7, 0, 0, 2, 
873         0, 0, 2, 0, 0, 2, 0, 0, 
874         2, 0, 0, 0, 2, 0, 0, 2, 
875         0, 0, 2, 0, 0, 2, 2, 2, 
876         2, 2, 2, 2, 2, 2, 2, 2, 
877         6, 0, 2, 0, 2, 0, 0, 0, 
878         2, 0, 0, 2, 0, 0, 0, 2, 
879         0, 0, 2, 0, 0, 2, 0, 0, 
880         2, 8, 0, 11, 2, 2, 6, 0, 
881         12, 12, 0, 2, 6, 2, 6, 2, 
882         0, 13, 2, 0, 0, 2, 0, 2, 
883         2, 0, 2, 2, 2, 0, 0, 2, 
884         2, 0, 2, 2, 2, 0, 0, 2, 
885         2, 0, 2, 2, 2, 0, 0, 2, 
886         2, 0, 2, 2, 2, 0, 0, 2, 
887         2, 0, 2, 0, 0, 0, 0, 14, 
888         0, 2, 0, 0, 2, 0, 0, 2, 
889         0, 0, 2, 0, 2, 2, 2, 2, 
890         2, 2, 2, 2, 2, 15, 2, 0, 
891         0, 2, 0, 2, 2, 0, 2, 2, 
892         2, 0, 0, 2, 2, 0, 2, 2, 
893         2, 0, 0, 2, 2, 0, 2, 2, 
894         2, 0, 0, 2, 2, 0, 2, 2, 
895         2, 0, 0, 2, 2, 0, 2, 0, 
896         0, 0, 0, 16, 0, 2, 0, 0, 
897         2, 0, 0, 2, 0, 0, 2, 0, 
898         2, 2, 2, 2, 2, 2, 2, 2, 
899         2, 17, 6, 0, 6, 6, 6, 0, 
900         0, 6, 6, 0, 6, 6, 6, 0, 
901         0, 6, 6, 0, 6, 6, 6, 0, 
902         0, 6, 6, 0, 6, 6, 6, 0, 
903         0, 6, 6, 0, 6, 0, 0, 0, 
904         0, 18, 0, 2, 0, 0, 2, 0, 
905         0, 2, 0, 0, 2, 0, 2, 2, 
906         2, 2, 2, 2, 2, 2, 2, 19, 
907         20, 2, 0, 0, 0, 0, 2, 2, 
908         2, 2, 2, 0, 0, 2, 2, 0, 
909         2, 2, 2, 0, 0, 2, 2, 0, 
910         2, 2, 2, 0, 0, 2, 2, 0, 
911         2, 2, 2, 0, 0, 2, 2, 0, 
912         2, 0, 0, 0, 0, 21, 0, 2, 
913         0, 0, 2, 0, 0, 2, 0, 0, 
914         2, 0, 2, 2, 2, 2, 2, 2, 
915         2, 2, 2, 0, 0, 22, 2, 0, 
916         0, 0, 0, 0, 0, 2, 0, 0, 
917         2, 0, 0, 2, 0, 0, 2, 0, 
918         0, 23, 2, 0, 0, 0, 0, 0, 
919         24
920 };
921
922 static const char _indic_syllable_machine_to_state_actions[] = {
923         0, 0, 0, 0, 0, 0, 0, 0, 
924         0, 0, 0, 0, 0, 0, 0, 0, 
925         0, 0, 0, 0, 0, 0, 0, 0, 
926         0, 0, 0, 0, 0, 0, 0, 0, 
927         0, 0, 0, 0, 0, 0, 0, 0, 
928         0, 0, 0, 0, 0, 0, 0, 0, 
929         0, 0, 0, 0, 0, 0, 0, 0, 
930         0, 0, 0, 0, 0, 0, 0, 0, 
931         0, 0, 0, 0, 0, 0, 0, 0, 
932         0, 0, 0, 0, 0, 0, 0, 0, 
933         0, 0, 0, 0, 0, 0, 0, 0, 
934         0, 0, 0, 0, 0, 0, 0, 0, 
935         0, 0, 0, 0, 0, 0, 0, 0, 
936         0, 0, 0, 0, 0, 0, 0, 0, 
937         0, 0, 0, 0, 0, 0, 0, 0, 
938         0, 0, 0, 0, 0, 0, 0, 0, 
939         0, 0, 0, 0, 0, 0, 0, 0, 
940         0, 0, 0, 0, 0, 0, 0, 0, 
941         0, 0, 0, 0, 0, 0, 0, 0, 
942         0, 0, 0, 0, 0, 0, 0, 0, 
943         0, 0, 0, 0, 0, 0, 9, 0, 
944         0, 0, 0, 0, 0, 0, 0, 0, 
945         0, 0, 0, 0, 0, 0, 0, 0, 
946         0, 0, 0, 0, 0, 0, 0, 0, 
947         0, 0, 0, 0, 0, 0, 0, 0, 
948         0, 0, 0, 0, 0, 0, 0, 0, 
949         0, 0, 0, 0, 0, 0, 0, 0, 
950         0, 0, 0, 0, 0, 0, 0, 0, 
951         0, 0, 0, 0, 0, 0, 0, 0, 
952         0, 0, 0, 0, 0, 0, 0, 0, 
953         0, 0, 0, 0, 0, 0, 0, 0, 
954         0, 0, 0, 0, 0, 0, 0, 0, 
955         0, 0, 0, 0, 0, 0, 0, 0, 
956         0, 0, 0, 0, 0, 0, 0, 0, 
957         0, 0, 0, 0, 0, 0, 0, 0, 
958         0, 0, 0, 0, 0, 0, 0, 0, 
959         0, 0, 0, 0, 0, 0, 0, 0, 
960         0, 0, 0, 0, 0, 0, 0, 0, 
961         0, 0, 0, 0, 0, 0, 0, 0, 
962         0, 0, 0, 0, 0, 0, 0, 0, 
963         0, 0, 0, 0, 0, 0, 0, 0, 
964         0, 0, 0, 0, 0, 0, 0, 0, 
965         0, 0, 0, 0, 0, 0, 0, 0, 
966         0, 0, 0, 0, 0, 0, 0, 0, 
967         0, 0, 0, 0, 0, 0, 0, 0, 
968         0, 0, 0, 0, 0, 0, 0, 0, 
969         0, 0, 0, 0, 0, 0, 0, 0, 
970         0, 0, 0, 0, 0, 0, 0, 0, 
971         0, 0, 0, 0, 0, 0, 0, 0, 
972         0, 0, 0, 0, 0, 0, 0, 0, 
973         0, 0, 0, 0, 0, 0, 0, 0, 
974         0, 0, 0, 0, 0, 0, 0, 0, 
975         0, 0, 0, 0, 0, 0, 0, 0, 
976         0, 0, 0, 0, 0, 0, 0, 0, 
977         0, 0, 0, 0, 0, 0, 0, 0, 
978         0, 0, 0, 0, 0, 0, 0, 0, 
979         0, 0, 0, 0, 0, 0, 0, 0, 
980         0, 0, 0, 0, 0, 0, 0, 0
981 };
982
983 static const char _indic_syllable_machine_from_state_actions[] = {
984         0, 0, 0, 0, 0, 0, 0, 0, 
985         0, 0, 0, 0, 0, 0, 0, 0, 
986         0, 0, 0, 0, 0, 0, 0, 0, 
987         0, 0, 0, 0, 0, 0, 0, 0, 
988         0, 0, 0, 0, 0, 0, 0, 0, 
989         0, 0, 0, 0, 0, 0, 0, 0, 
990         0, 0, 0, 0, 0, 0, 0, 0, 
991         0, 0, 0, 0, 0, 0, 0, 0, 
992         0, 0, 0, 0, 0, 0, 0, 0, 
993         0, 0, 0, 0, 0, 0, 0, 0, 
994         0, 0, 0, 0, 0, 0, 0, 0, 
995         0, 0, 0, 0, 0, 0, 0, 0, 
996         0, 0, 0, 0, 0, 0, 0, 0, 
997         0, 0, 0, 0, 0, 0, 0, 0, 
998         0, 0, 0, 0, 0, 0, 0, 0, 
999         0, 0, 0, 0, 0, 0, 0, 0, 
1000         0, 0, 0, 0, 0, 0, 0, 0, 
1001         0, 0, 0, 0, 0, 0, 0, 0, 
1002         0, 0, 0, 0, 0, 0, 0, 0, 
1003         0, 0, 0, 0, 0, 0, 0, 0, 
1004         0, 0, 0, 0, 0, 0, 10, 0, 
1005         0, 0, 0, 0, 0, 0, 0, 0, 
1006         0, 0, 0, 0, 0, 0, 0, 0, 
1007         0, 0, 0, 0, 0, 0, 0, 0, 
1008         0, 0, 0, 0, 0, 0, 0, 0, 
1009         0, 0, 0, 0, 0, 0, 0, 0, 
1010         0, 0, 0, 0, 0, 0, 0, 0, 
1011         0, 0, 0, 0, 0, 0, 0, 0, 
1012         0, 0, 0, 0, 0, 0, 0, 0, 
1013         0, 0, 0, 0, 0, 0, 0, 0, 
1014         0, 0, 0, 0, 0, 0, 0, 0, 
1015         0, 0, 0, 0, 0, 0, 0, 0, 
1016         0, 0, 0, 0, 0, 0, 0, 0, 
1017         0, 0, 0, 0, 0, 0, 0, 0, 
1018         0, 0, 0, 0, 0, 0, 0, 0, 
1019         0, 0, 0, 0, 0, 0, 0, 0, 
1020         0, 0, 0, 0, 0, 0, 0, 0, 
1021         0, 0, 0, 0, 0, 0, 0, 0, 
1022         0, 0, 0, 0, 0, 0, 0, 0, 
1023         0, 0, 0, 0, 0, 0, 0, 0, 
1024         0, 0, 0, 0, 0, 0, 0, 0, 
1025         0, 0, 0, 0, 0, 0, 0, 0, 
1026         0, 0, 0, 0, 0, 0, 0, 0, 
1027         0, 0, 0, 0, 0, 0, 0, 0, 
1028         0, 0, 0, 0, 0, 0, 0, 0, 
1029         0, 0, 0, 0, 0, 0, 0, 0, 
1030         0, 0, 0, 0, 0, 0, 0, 0, 
1031         0, 0, 0, 0, 0, 0, 0, 0, 
1032         0, 0, 0, 0, 0, 0, 0, 0, 
1033         0, 0, 0, 0, 0, 0, 0, 0, 
1034         0, 0, 0, 0, 0, 0, 0, 0, 
1035         0, 0, 0, 0, 0, 0, 0, 0, 
1036         0, 0, 0, 0, 0, 0, 0, 0, 
1037         0, 0, 0, 0, 0, 0, 0, 0, 
1038         0, 0, 0, 0, 0, 0, 0, 0, 
1039         0, 0, 0, 0, 0, 0, 0, 0, 
1040         0, 0, 0, 0, 0, 0, 0, 0, 
1041         0, 0, 0, 0, 0, 0, 0, 0
1042 };
1043
1044 static const short _indic_syllable_machine_eof_trans[] = {
1045         1, 1, 1, 1, 1, 1, 1, 1, 
1046         1, 1, 1, 1, 1, 1, 1, 1, 
1047         1, 1, 1, 1, 1, 1, 1, 1, 
1048         1, 1, 1, 1, 1, 1, 1, 1, 
1049         1, 1, 1, 37, 37, 37, 37, 37, 
1050         37, 37, 37, 37, 37, 37, 37, 37, 
1051         37, 37, 37, 37, 37, 37, 37, 37, 
1052         37, 37, 37, 37, 37, 37, 37, 37, 
1053         37, 37, 37, 37, 37, 37, 73, 73, 
1054         77, 77, 73, 73, 73, 73, 73, 73, 
1055         73, 73, 73, 73, 73, 73, 73, 73, 
1056         73, 73, 73, 73, 73, 73, 73, 73, 
1057         73, 73, 73, 73, 73, 73, 73, 73, 
1058         109, 109, 109, 109, 109, 109, 109, 109, 
1059         109, 109, 109, 109, 109, 109, 109, 109, 
1060         109, 109, 109, 109, 109, 109, 109, 109, 
1061         109, 109, 109, 109, 109, 109, 109, 109, 
1062         109, 109, 109, 73, 1, 1, 1, 1, 
1063         1, 1, 1, 1, 1, 1, 1, 1, 
1064         1, 1, 1, 1, 1, 1, 1, 1, 
1065         1, 1, 1, 1, 1, 170, 0, 186, 
1066         186, 186, 186, 186, 186, 186, 186, 186, 
1067         186, 186, 186, 186, 186, 186, 186, 186, 
1068         186, 186, 186, 186, 186, 186, 186, 186, 
1069         186, 186, 186, 186, 186, 186, 186, 186, 
1070         186, 186, 186, 186, 186, 186, 186, 186, 
1071         186, 186, 186, 186, 186, 186, 186, 186, 
1072         186, 186, 186, 186, 186, 186, 186, 186, 
1073         186, 186, 186, 186, 186, 186, 186, 186, 
1074         186, 186, 254, 254, 254, 254, 254, 254, 
1075         254, 254, 254, 254, 254, 254, 254, 254, 
1076         254, 254, 254, 254, 254, 254, 254, 254, 
1077         254, 254, 254, 254, 254, 254, 254, 254, 
1078         254, 254, 254, 254, 254, 254, 254, 254, 
1079         254, 254, 254, 254, 254, 254, 254, 254, 
1080         254, 254, 254, 254, 254, 254, 254, 254, 
1081         254, 254, 254, 254, 254, 254, 254, 254, 
1082         254, 254, 254, 254, 254, 322, 322, 322, 
1083         322, 322, 322, 322, 322, 322, 322, 322, 
1084         322, 322, 322, 322, 322, 322, 322, 322, 
1085         322, 322, 322, 322, 322, 322, 322, 322, 
1086         322, 322, 322, 322, 322, 322, 322, 322, 
1087         322, 322, 322, 322, 322, 322, 322, 322, 
1088         322, 322, 322, 322, 322, 322, 322, 322, 
1089         322, 322, 322, 322, 322, 322, 322, 322, 
1090         322, 322, 322, 322, 322, 384, 322, 384, 
1091         385, 385, 385, 385, 385, 385, 385, 385, 
1092         385, 385, 385, 385, 385, 385, 385, 385, 
1093         385, 385, 385, 385, 385, 385, 385, 385, 
1094         385, 385, 385, 385, 385, 385, 385, 385, 
1095         385, 385, 385, 385, 385, 385, 385, 385, 
1096         385, 385, 385, 385, 385, 385, 385, 385, 
1097         385, 385, 385, 385, 385, 385, 385, 385, 
1098         385, 385, 385, 385, 385, 385, 385, 385, 
1099         385, 385, 322, 186, 186, 186, 186, 186, 
1100         186, 186, 186, 186, 186, 186, 186, 186, 
1101         186, 186, 186, 186, 186, 186, 186, 186, 
1102         474, 474, 474, 474, 474, 474, 474, 384
1103 };
1104
1105 static const int indic_syllable_machine_start = 166;
1106 static const int indic_syllable_machine_first_final = 166;
1107 static const int indic_syllable_machine_error = -1;
1108
1109 static const int indic_syllable_machine_en_main = 166;
1110
1111
1112 #line 36 "hb-ot-shape-complex-indic-machine.rl"
1113
1114
1115
1116 #line 92 "hb-ot-shape-complex-indic-machine.rl"
1117
1118
1119 #define found_syllable(syllable_type) \
1120   HB_STMT_START { \
1121     if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
1122     for (unsigned int i = last; i < p+1; i++) \
1123       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
1124     last = p+1; \
1125     syllable_serial++; \
1126     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
1127   } HB_STMT_END
1128
1129 static void
1130 find_syllables (hb_buffer_t *buffer)
1131 {
1132   unsigned int p, pe, eof, ts HB_UNUSED, te, act;
1133   int cs;
1134   hb_glyph_info_t *info = buffer->info;
1135   
1136 #line 1137 "hb-ot-shape-complex-indic-machine.hh"
1137         {
1138         cs = indic_syllable_machine_start;
1139         ts = 0;
1140         te = 0;
1141         act = 0;
1142         }
1143
1144 #line 113 "hb-ot-shape-complex-indic-machine.rl"
1145
1146
1147   p = 0;
1148   pe = eof = buffer->len;
1149
1150   unsigned int last = 0;
1151   unsigned int syllable_serial = 1;
1152   
1153 #line 1154 "hb-ot-shape-complex-indic-machine.hh"
1154         {
1155         int _slen;
1156         int _trans;
1157         const unsigned char *_keys;
1158         const short *_inds;
1159         if ( p == pe )
1160                 goto _test_eof;
1161 _resume:
1162         switch ( _indic_syllable_machine_from_state_actions[cs] ) {
1163         case 10:
1164 #line 1 "NONE"
1165         {ts = p;}
1166         break;
1167 #line 1168 "hb-ot-shape-complex-indic-machine.hh"
1168         }
1169
1170         _keys = _indic_syllable_machine_trans_keys + (cs<<1);
1171         _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
1172
1173         _slen = _indic_syllable_machine_key_spans[cs];
1174         _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
1175                 ( info[p].indic_category()) <= _keys[1] ?
1176                 ( info[p].indic_category()) - _keys[0] : _slen ];
1177
1178 _eof_trans:
1179         cs = _indic_syllable_machine_trans_targs[_trans];
1180
1181         if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
1182                 goto _again;
1183
1184         switch ( _indic_syllable_machine_trans_actions[_trans] ) {
1185         case 2:
1186 #line 1 "NONE"
1187         {te = p+1;}
1188         break;
1189         case 14:
1190 #line 83 "hb-ot-shape-complex-indic-machine.rl"
1191         {te = p+1;{ found_syllable (consonant_syllable); }}
1192         break;
1193         case 16:
1194 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1195         {te = p+1;{ found_syllable (vowel_syllable); }}
1196         break;
1197         case 21:
1198 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1199         {te = p+1;{ found_syllable (standalone_cluster); }}
1200         break;
1201         case 24:
1202 #line 86 "hb-ot-shape-complex-indic-machine.rl"
1203         {te = p+1;{ found_syllable (symbol_cluster); }}
1204         break;
1205         case 18:
1206 #line 87 "hb-ot-shape-complex-indic-machine.rl"
1207         {te = p+1;{ found_syllable (broken_cluster); }}
1208         break;
1209         case 11:
1210 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1211         {te = p+1;{ found_syllable (non_indic_cluster); }}
1212         break;
1213         case 13:
1214 #line 83 "hb-ot-shape-complex-indic-machine.rl"
1215         {te = p;p--;{ found_syllable (consonant_syllable); }}
1216         break;
1217         case 15:
1218 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1219         {te = p;p--;{ found_syllable (vowel_syllable); }}
1220         break;
1221         case 20:
1222 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1223         {te = p;p--;{ found_syllable (standalone_cluster); }}
1224         break;
1225         case 23:
1226 #line 86 "hb-ot-shape-complex-indic-machine.rl"
1227         {te = p;p--;{ found_syllable (symbol_cluster); }}
1228         break;
1229         case 17:
1230 #line 87 "hb-ot-shape-complex-indic-machine.rl"
1231         {te = p;p--;{ found_syllable (broken_cluster); }}
1232         break;
1233         case 19:
1234 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1235         {te = p;p--;{ found_syllable (non_indic_cluster); }}
1236         break;
1237         case 1:
1238 #line 83 "hb-ot-shape-complex-indic-machine.rl"
1239         {{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
1240         break;
1241         case 3:
1242 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1243         {{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
1244         break;
1245         case 7:
1246 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1247         {{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
1248         break;
1249         case 8:
1250 #line 86 "hb-ot-shape-complex-indic-machine.rl"
1251         {{p = ((te))-1;}{ found_syllable (symbol_cluster); }}
1252         break;
1253         case 4:
1254 #line 87 "hb-ot-shape-complex-indic-machine.rl"
1255         {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
1256         break;
1257         case 5:
1258 #line 1 "NONE"
1259         {       switch( act ) {
1260         case 1:
1261         {{p = ((te))-1;} found_syllable (consonant_syllable); }
1262         break;
1263         case 5:
1264         {{p = ((te))-1;} found_syllable (broken_cluster); }
1265         break;
1266         case 6:
1267         {{p = ((te))-1;} found_syllable (non_indic_cluster); }
1268         break;
1269         }
1270         }
1271         break;
1272         case 22:
1273 #line 1 "NONE"
1274         {te = p+1;}
1275 #line 83 "hb-ot-shape-complex-indic-machine.rl"
1276         {act = 1;}
1277         break;
1278         case 6:
1279 #line 1 "NONE"
1280         {te = p+1;}
1281 #line 87 "hb-ot-shape-complex-indic-machine.rl"
1282         {act = 5;}
1283         break;
1284         case 12:
1285 #line 1 "NONE"
1286         {te = p+1;}
1287 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1288         {act = 6;}
1289         break;
1290 #line 1291 "hb-ot-shape-complex-indic-machine.hh"
1291         }
1292
1293 _again:
1294         switch ( _indic_syllable_machine_to_state_actions[cs] ) {
1295         case 9:
1296 #line 1 "NONE"
1297         {ts = 0;}
1298         break;
1299 #line 1300 "hb-ot-shape-complex-indic-machine.hh"
1300         }
1301
1302         if ( ++p != pe )
1303                 goto _resume;
1304         _test_eof: {}
1305         if ( p == eof )
1306         {
1307         if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
1308                 _trans = _indic_syllable_machine_eof_trans[cs] - 1;
1309                 goto _eof_trans;
1310         }
1311         }
1312
1313         }
1314
1315 #line 122 "hb-ot-shape-complex-indic-machine.rl"
1316
1317 }
1318
1319 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */