Coverage Report

Created: 2023-09-25 06:24

/src/harfbuzz/src/hb-ot-shaper-use-machine.hh
Line
Count
Source (jump to first uncovered line)
1
2
#line 1 "hb-ot-shaper-use-machine.rl"
3
/*
4
 * Copyright © 2015  Mozilla Foundation.
5
 * Copyright © 2015  Google, Inc.
6
 *
7
 *  This is part of HarfBuzz, a text shaping library.
8
 *
9
 * Permission is hereby granted, without written agreement and without
10
 * license or royalty fees, to use, copy, modify, and distribute this
11
 * software and its documentation for any purpose, provided that the
12
 * above copyright notice and the following two paragraphs appear in
13
 * all copies of this software.
14
 *
15
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
16
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
17
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
18
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
19
 * DAMAGE.
20
 *
21
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
22
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
23
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
24
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
25
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
26
 *
27
 * Mozilla Author(s): Jonathan Kew
28
 * Google Author(s): Behdad Esfahbod
29
 */
30
31
#ifndef HB_OT_SHAPER_USE_MACHINE_HH
32
#define HB_OT_SHAPER_USE_MACHINE_HH
33
34
#include "hb.hh"
35
36
#include "hb-ot-shaper-syllabic.hh"
37
38
/* buffer var allocations */
39
0
#define use_category() ot_shaper_var_u8_category()
40
41
0
#define USE(Cat) use_syllable_machine_ex_##Cat
42
43
enum use_syllable_type_t {
44
  use_virama_terminated_cluster,
45
  use_sakot_terminated_cluster,
46
  use_standard_cluster,
47
  use_number_joiner_terminated_cluster,
48
  use_numeral_cluster,
49
  use_symbol_cluster,
50
  use_hieroglyph_cluster,
51
  use_broken_cluster,
52
  use_non_cluster,
53
};
54
55
56
#line 57 "hb-ot-shaper-use-machine.hh"
57
0
#define use_syllable_machine_ex_B 1u
58
0
#define use_syllable_machine_ex_CGJ 6u
59
#define use_syllable_machine_ex_CMAbv 31u
60
#define use_syllable_machine_ex_CMBlw 32u
61
#define use_syllable_machine_ex_CS 43u
62
#define use_syllable_machine_ex_FAbv 24u
63
#define use_syllable_machine_ex_FBlw 25u
64
#define use_syllable_machine_ex_FMAbv 45u
65
#define use_syllable_machine_ex_FMBlw 46u
66
#define use_syllable_machine_ex_FMPst 47u
67
#define use_syllable_machine_ex_FPst 26u
68
#define use_syllable_machine_ex_G 49u
69
#define use_syllable_machine_ex_GB 5u
70
0
#define use_syllable_machine_ex_H 12u
71
#define use_syllable_machine_ex_HM 54u
72
#define use_syllable_machine_ex_HN 13u
73
#define use_syllable_machine_ex_HR 55u
74
0
#define use_syllable_machine_ex_HVM 53u
75
0
#define use_syllable_machine_ex_IS 44u
76
#define use_syllable_machine_ex_J 50u
77
#define use_syllable_machine_ex_MAbv 27u
78
#define use_syllable_machine_ex_MBlw 28u
79
#define use_syllable_machine_ex_MPre 30u
80
#define use_syllable_machine_ex_MPst 29u
81
#define use_syllable_machine_ex_N 4u
82
0
#define use_syllable_machine_ex_O 0u
83
0
#define use_syllable_machine_ex_R 18u
84
#define use_syllable_machine_ex_SB 51u
85
#define use_syllable_machine_ex_SE 52u
86
#define use_syllable_machine_ex_SMAbv 41u
87
#define use_syllable_machine_ex_SMBlw 42u
88
#define use_syllable_machine_ex_SUB 11u
89
#define use_syllable_machine_ex_Sk 48u
90
#define use_syllable_machine_ex_VAbv 33u
91
#define use_syllable_machine_ex_VBlw 34u
92
#define use_syllable_machine_ex_VMAbv 37u
93
#define use_syllable_machine_ex_VMBlw 38u
94
#define use_syllable_machine_ex_VMPre 23u
95
#define use_syllable_machine_ex_VMPst 39u
96
0
#define use_syllable_machine_ex_VPre 22u
97
#define use_syllable_machine_ex_VPst 35u
98
#define use_syllable_machine_ex_WJ 16u
99
0
#define use_syllable_machine_ex_ZWNJ 14u
100
101
102
#line 103 "hb-ot-shaper-use-machine.hh"
103
static const unsigned char _use_syllable_machine_trans_keys[] = {
104
  49u, 51u, 0u, 53u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 
105
  14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 
106
  14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 
107
  12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 53u, 
108
  1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 
109
  14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 
110
  14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 
111
  1u, 14u, 1u, 48u, 13u, 14u, 4u, 14u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u, 
112
  14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 
113
  14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 
114
  14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 14u, 1u, 48u, 
115
  11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 
116
  14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 
117
  14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 
118
  1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 53u, 14u, 42u, 14u, 42u, 1u, 5u, 
119
  14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 53u, 0
120
};
121
122
static const char _use_syllable_machine_key_spans[] = {
123
  3, 54, 43, 43, 53, 35, 34, 34, 
124
  34, 33, 33, 1, 35, 35, 35, 14, 
125
  35, 40, 40, 40, 40, 42, 40, 42, 
126
  42, 42, 43, 14, 48, 29, 29, 43, 
127
  53, 35, 34, 34, 34, 33, 33, 1, 
128
  35, 35, 35, 14, 35, 40, 40, 40, 
129
  40, 42, 40, 42, 42, 42, 43, 14, 
130
  14, 48, 2, 11, 43, 43, 53, 35, 
131
  34, 34, 34, 33, 33, 1, 35, 35, 
132
  35, 14, 35, 40, 40, 40, 40, 42, 
133
  40, 42, 42, 42, 43, 14, 14, 48, 
134
  43, 53, 35, 34, 34, 34, 33, 33, 
135
  1, 35, 35, 35, 14, 35, 40, 40, 
136
  40, 40, 42, 40, 42, 42, 42, 43, 
137
  14, 48, 11, 2, 53, 29, 29, 5, 
138
  42, 38, 39, 41, 43
139
};
140
141
static const short _use_syllable_machine_index_offsets[] = {
142
  0, 4, 59, 103, 147, 201, 237, 272, 
143
  307, 342, 376, 410, 412, 448, 484, 520, 
144
  535, 571, 612, 653, 694, 735, 778, 819, 
145
  862, 905, 948, 992, 1007, 1056, 1086, 1116, 
146
  1160, 1214, 1250, 1285, 1320, 1355, 1389, 1423, 
147
  1425, 1461, 1497, 1533, 1548, 1584, 1625, 1666, 
148
  1707, 1748, 1791, 1832, 1875, 1918, 1961, 2005, 
149
  2020, 2035, 2084, 2087, 2099, 2143, 2187, 2241, 
150
  2277, 2312, 2347, 2382, 2416, 2450, 2452, 2488, 
151
  2524, 2560, 2575, 2611, 2652, 2693, 2734, 2775, 
152
  2818, 2859, 2902, 2945, 2988, 3032, 3047, 3062, 
153
  3111, 3155, 3209, 3245, 3280, 3315, 3350, 3384, 
154
  3418, 3420, 3456, 3492, 3528, 3543, 3579, 3620, 
155
  3661, 3702, 3743, 3786, 3827, 3870, 3913, 3956, 
156
  4000, 4015, 4064, 4076, 4079, 4133, 4163, 4193, 
157
  4199, 4242, 4281, 4321, 4363
158
};
159
160
static const unsigned char _use_syllable_machine_indicies[] = {
161
  1, 0, 2, 0, 3, 4, 5, 5, 
162
  6, 7, 5, 5, 5, 5, 5, 8, 
163
  9, 10, 11, 5, 5, 5, 12, 5, 
164
  5, 5, 13, 14, 15, 16, 17, 18, 
165
  19, 20, 21, 8, 22, 23, 24, 25, 
166
  5, 26, 27, 28, 5, 29, 30, 31, 
167
  32, 33, 34, 35, 32, 1, 5, 36, 
168
  5, 37, 5, 39, 40, 38, 41, 38, 
169
  38, 38, 38, 38, 38, 38, 42, 43, 
170
  44, 45, 46, 47, 48, 49, 50, 39, 
171
  51, 52, 53, 54, 38, 55, 56, 57, 
172
  38, 58, 59, 38, 60, 61, 62, 63, 
173
  60, 38, 38, 38, 38, 64, 38, 39, 
174
  40, 38, 41, 38, 38, 38, 38, 38, 
175
  38, 38, 42, 43, 44, 45, 46, 47, 
176
  48, 49, 50, 39, 51, 52, 53, 54, 
177
  38, 55, 56, 57, 38, 38, 38, 38, 
178
  60, 61, 62, 63, 60, 38, 38, 38, 
179
  38, 64, 38, 39, 38, 38, 38, 38, 
180
  38, 38, 38, 38, 38, 38, 38, 38, 
181
  41, 38, 38, 38, 38, 38, 38, 38, 
182
  38, 43, 44, 45, 46, 38, 38, 38, 
183
  38, 38, 38, 38, 38, 38, 38, 55, 
184
  56, 57, 38, 38, 38, 38, 38, 61, 
185
  62, 63, 65, 38, 38, 38, 38, 43, 
186
  38, 41, 38, 38, 38, 38, 38, 38, 
187
  38, 38, 43, 44, 45, 46, 38, 38, 
188
  38, 38, 38, 38, 38, 38, 38, 38, 
189
  55, 56, 57, 38, 38, 38, 38, 38, 
190
  61, 62, 63, 65, 38, 41, 38, 38, 
191
  38, 38, 38, 38, 38, 38, 38, 44, 
192
  45, 46, 38, 38, 38, 38, 38, 38, 
193
  38, 38, 38, 38, 38, 38, 38, 38, 
194
  38, 38, 38, 38, 61, 62, 63, 38, 
195
  41, 38, 38, 38, 38, 38, 38, 38, 
196
  38, 38, 38, 45, 46, 38, 38, 38, 
197
  38, 38, 38, 38, 38, 38, 38, 38, 
198
  38, 38, 38, 38, 38, 38, 38, 61, 
199
  62, 63, 38, 41, 38, 38, 38, 38, 
200
  38, 38, 38, 38, 38, 38, 38, 46, 
201
  38, 38, 38, 38, 38, 38, 38, 38, 
202
  38, 38, 38, 38, 38, 38, 38, 38, 
203
  38, 38, 61, 62, 63, 38, 41, 38, 
204
  38, 38, 38, 38, 38, 38, 38, 38, 
205
  38, 38, 38, 38, 38, 38, 38, 38, 
206
  38, 38, 38, 38, 38, 38, 38, 38, 
207
  38, 38, 38, 38, 38, 61, 62, 38, 
208
  41, 38, 38, 38, 38, 38, 38, 38, 
209
  38, 38, 38, 38, 38, 38, 38, 38, 
210
  38, 38, 38, 38, 38, 38, 38, 38, 
211
  38, 38, 38, 38, 38, 38, 38, 38, 
212
  62, 38, 41, 38, 41, 38, 38, 38, 
213
  38, 38, 38, 38, 38, 38, 44, 45, 
214
  46, 38, 38, 38, 38, 38, 38, 38, 
215
  38, 38, 38, 55, 56, 57, 38, 38, 
216
  38, 38, 38, 61, 62, 63, 65, 38, 
217
  41, 38, 38, 38, 38, 38, 38, 38, 
218
  38, 38, 44, 45, 46, 38, 38, 38, 
219
  38, 38, 38, 38, 38, 38, 38, 38, 
220
  56, 57, 38, 38, 38, 38, 38, 61, 
221
  62, 63, 65, 38, 41, 38, 38, 38, 
222
  38, 38, 38, 38, 38, 38, 44, 45, 
223
  46, 38, 38, 38, 38, 38, 38, 38, 
224
  38, 38, 38, 38, 38, 57, 38, 38, 
225
  38, 38, 38, 61, 62, 63, 65, 38, 
226
  66, 38, 38, 38, 38, 38, 38, 38, 
227
  38, 38, 38, 38, 38, 41, 38, 41, 
228
  38, 38, 38, 38, 38, 38, 38, 38, 
229
  38, 44, 45, 46, 38, 38, 38, 38, 
230
  38, 38, 38, 38, 38, 38, 38, 38, 
231
  38, 38, 38, 38, 38, 38, 61, 62, 
232
  63, 65, 38, 41, 38, 38, 38, 38, 
233
  38, 38, 38, 42, 43, 44, 45, 46, 
234
  38, 38, 38, 38, 38, 38, 52, 53, 
235
  54, 38, 55, 56, 57, 38, 38, 38, 
236
  38, 38, 61, 62, 63, 65, 38, 38, 
237
  38, 38, 43, 38, 41, 38, 38, 38, 
238
  38, 38, 38, 38, 38, 43, 44, 45, 
239
  46, 38, 38, 38, 38, 38, 38, 52, 
240
  53, 54, 38, 55, 56, 57, 38, 38, 
241
  38, 38, 38, 61, 62, 63, 65, 38, 
242
  38, 38, 38, 43, 38, 41, 38, 38, 
243
  38, 38, 38, 38, 38, 38, 43, 44, 
244
  45, 46, 38, 38, 38, 38, 38, 38, 
245
  38, 53, 54, 38, 55, 56, 57, 38, 
246
  38, 38, 38, 38, 61, 62, 63, 65, 
247
  38, 38, 38, 38, 43, 38, 41, 38, 
248
  38, 38, 38, 38, 38, 38, 38, 43, 
249
  44, 45, 46, 38, 38, 38, 38, 38, 
250
  38, 38, 38, 54, 38, 55, 56, 57, 
251
  38, 38, 38, 38, 38, 61, 62, 63, 
252
  65, 38, 38, 38, 38, 43, 38, 67, 
253
  38, 41, 38, 38, 38, 38, 38, 38, 
254
  38, 42, 43, 44, 45, 46, 38, 48, 
255
  49, 38, 38, 38, 52, 53, 54, 38, 
256
  55, 56, 57, 38, 38, 38, 38, 38, 
257
  61, 62, 63, 65, 38, 38, 38, 38, 
258
  43, 38, 41, 38, 38, 38, 38, 38, 
259
  38, 38, 38, 43, 44, 45, 46, 38, 
260
  38, 38, 38, 38, 38, 38, 38, 38, 
261
  38, 55, 56, 57, 38, 38, 38, 38, 
262
  38, 61, 62, 63, 65, 38, 38, 38, 
263
  38, 43, 38, 67, 38, 41, 38, 38, 
264
  38, 38, 38, 38, 38, 42, 43, 44, 
265
  45, 46, 38, 38, 49, 38, 38, 38, 
266
  52, 53, 54, 38, 55, 56, 57, 38, 
267
  38, 38, 38, 38, 61, 62, 63, 65, 
268
  38, 38, 38, 38, 43, 38, 67, 38, 
269
  41, 38, 38, 38, 38, 38, 38, 38, 
270
  42, 43, 44, 45, 46, 38, 38, 38, 
271
  38, 38, 38, 52, 53, 54, 38, 55, 
272
  56, 57, 38, 38, 38, 38, 38, 61, 
273
  62, 63, 65, 38, 38, 38, 38, 43, 
274
  38, 67, 38, 41, 38, 38, 38, 38, 
275
  38, 38, 38, 42, 43, 44, 45, 46, 
276
  47, 48, 49, 38, 38, 38, 52, 53, 
277
  54, 38, 55, 56, 57, 38, 38, 38, 
278
  38, 38, 61, 62, 63, 65, 38, 38, 
279
  38, 38, 43, 38, 39, 40, 38, 41, 
280
  38, 38, 38, 38, 38, 38, 38, 42, 
281
  43, 44, 45, 46, 47, 48, 49, 50, 
282
  38, 51, 52, 53, 54, 38, 55, 56, 
283
  57, 38, 38, 38, 38, 60, 61, 62, 
284
  63, 60, 38, 38, 38, 38, 64, 38, 
285
  39, 38, 38, 38, 38, 38, 38, 38, 
286
  38, 38, 38, 38, 38, 41, 38, 39, 
287
  38, 38, 38, 38, 38, 38, 38, 38, 
288
  38, 38, 38, 38, 41, 38, 38, 38, 
289
  38, 38, 38, 38, 38, 43, 44, 45, 
290
  46, 38, 38, 38, 38, 38, 38, 38, 
291
  38, 38, 38, 55, 56, 57, 38, 38, 
292
  38, 38, 38, 61, 62, 63, 65, 38, 
293
  41, 38, 38, 38, 38, 38, 38, 38, 
294
  38, 38, 38, 38, 38, 38, 38, 38, 
295
  38, 38, 38, 38, 38, 38, 38, 38, 
296
  38, 38, 38, 58, 59, 38, 41, 38, 
297
  38, 38, 38, 38, 38, 38, 38, 38, 
298
  38, 38, 38, 38, 38, 38, 38, 38, 
299
  38, 38, 38, 38, 38, 38, 38, 38, 
300
  38, 38, 59, 38, 4, 69, 68, 70, 
301
  68, 68, 68, 68, 68, 68, 68, 71, 
302
  72, 73, 74, 75, 76, 77, 78, 79, 
303
  4, 80, 81, 82, 83, 68, 84, 85, 
304
  86, 68, 68, 68, 68, 87, 88, 89, 
305
  90, 91, 68, 68, 68, 68, 92, 68, 
306
  4, 68, 68, 68, 68, 68, 68, 68, 
307
  68, 68, 68, 68, 68, 70, 68, 68, 
308
  68, 68, 68, 68, 68, 68, 72, 73, 
309
  74, 75, 68, 68, 68, 68, 68, 68, 
310
  68, 68, 68, 68, 84, 85, 86, 68, 
311
  68, 68, 68, 68, 88, 89, 90, 93, 
312
  68, 68, 68, 68, 72, 68, 70, 68, 
313
  68, 68, 68, 68, 68, 68, 68, 72, 
314
  73, 74, 75, 68, 68, 68, 68, 68, 
315
  68, 68, 68, 68, 68, 84, 85, 86, 
316
  68, 68, 68, 68, 68, 88, 89, 90, 
317
  93, 68, 70, 68, 68, 68, 68, 68, 
318
  68, 68, 68, 68, 73, 74, 75, 68, 
319
  68, 68, 68, 68, 68, 68, 68, 68, 
320
  68, 68, 68, 68, 68, 68, 68, 68, 
321
  68, 88, 89, 90, 68, 70, 68, 68, 
322
  68, 68, 68, 68, 68, 68, 68, 68, 
323
  74, 75, 68, 68, 68, 68, 68, 68, 
324
  68, 68, 68, 68, 68, 68, 68, 68, 
325
  68, 68, 68, 68, 88, 89, 90, 68, 
326
  70, 68, 68, 68, 68, 68, 68, 68, 
327
  68, 68, 68, 68, 75, 68, 68, 68, 
328
  68, 68, 68, 68, 68, 68, 68, 68, 
329
  68, 68, 68, 68, 68, 68, 68, 88, 
330
  89, 90, 68, 70, 68, 68, 68, 68, 
331
  68, 68, 68, 68, 68, 68, 68, 68, 
332
  68, 68, 68, 68, 68, 68, 68, 68, 
333
  68, 68, 68, 68, 68, 68, 68, 68, 
334
  68, 68, 88, 89, 68, 70, 68, 68, 
335
  68, 68, 68, 68, 68, 68, 68, 68, 
336
  68, 68, 68, 68, 68, 68, 68, 68, 
337
  68, 68, 68, 68, 68, 68, 68, 68, 
338
  68, 68, 68, 68, 68, 89, 68, 70, 
339
  68, 70, 68, 68, 68, 68, 68, 68, 
340
  68, 68, 68, 73, 74, 75, 68, 68, 
341
  68, 68, 68, 68, 68, 68, 68, 68, 
342
  84, 85, 86, 68, 68, 68, 68, 68, 
343
  88, 89, 90, 93, 68, 70, 68, 68, 
344
  68, 68, 68, 68, 68, 68, 68, 73, 
345
  74, 75, 68, 68, 68, 68, 68, 68, 
346
  68, 68, 68, 68, 68, 85, 86, 68, 
347
  68, 68, 68, 68, 88, 89, 90, 93, 
348
  68, 70, 68, 68, 68, 68, 68, 68, 
349
  68, 68, 68, 73, 74, 75, 68, 68, 
350
  68, 68, 68, 68, 68, 68, 68, 68, 
351
  68, 68, 86, 68, 68, 68, 68, 68, 
352
  88, 89, 90, 93, 68, 95, 94, 94, 
353
  94, 94, 94, 94, 94, 94, 94, 94, 
354
  94, 94, 96, 94, 70, 68, 68, 68, 
355
  68, 68, 68, 68, 68, 68, 73, 74, 
356
  75, 68, 68, 68, 68, 68, 68, 68, 
357
  68, 68, 68, 68, 68, 68, 68, 68, 
358
  68, 68, 68, 88, 89, 90, 93, 68, 
359
  70, 68, 68, 68, 68, 68, 68, 68, 
360
  71, 72, 73, 74, 75, 68, 68, 68, 
361
  68, 68, 68, 81, 82, 83, 68, 84, 
362
  85, 86, 68, 68, 68, 68, 68, 88, 
363
  89, 90, 93, 68, 68, 68, 68, 72, 
364
  68, 70, 68, 68, 68, 68, 68, 68, 
365
  68, 68, 72, 73, 74, 75, 68, 68, 
366
  68, 68, 68, 68, 81, 82, 83, 68, 
367
  84, 85, 86, 68, 68, 68, 68, 68, 
368
  88, 89, 90, 93, 68, 68, 68, 68, 
369
  72, 68, 70, 68, 68, 68, 68, 68, 
370
  68, 68, 68, 72, 73, 74, 75, 68, 
371
  68, 68, 68, 68, 68, 68, 82, 83, 
372
  68, 84, 85, 86, 68, 68, 68, 68, 
373
  68, 88, 89, 90, 93, 68, 68, 68, 
374
  68, 72, 68, 70, 68, 68, 68, 68, 
375
  68, 68, 68, 68, 72, 73, 74, 75, 
376
  68, 68, 68, 68, 68, 68, 68, 68, 
377
  83, 68, 84, 85, 86, 68, 68, 68, 
378
  68, 68, 88, 89, 90, 93, 68, 68, 
379
  68, 68, 72, 68, 97, 68, 70, 68, 
380
  68, 68, 68, 68, 68, 68, 71, 72, 
381
  73, 74, 75, 68, 77, 78, 68, 68, 
382
  68, 81, 82, 83, 68, 84, 85, 86, 
383
  68, 68, 68, 68, 68, 88, 89, 90, 
384
  93, 68, 68, 68, 68, 72, 68, 70, 
385
  68, 68, 68, 68, 68, 68, 68, 68, 
386
  72, 73, 74, 75, 68, 68, 68, 68, 
387
  68, 68, 68, 68, 68, 68, 84, 85, 
388
  86, 68, 68, 68, 68, 68, 88, 89, 
389
  90, 93, 68, 68, 68, 68, 72, 68, 
390
  97, 68, 70, 68, 68, 68, 68, 68, 
391
  68, 68, 71, 72, 73, 74, 75, 68, 
392
  68, 78, 68, 68, 68, 81, 82, 83, 
393
  68, 84, 85, 86, 68, 68, 68, 68, 
394
  68, 88, 89, 90, 93, 68, 68, 68, 
395
  68, 72, 68, 97, 68, 70, 68, 68, 
396
  68, 68, 68, 68, 68, 71, 72, 73, 
397
  74, 75, 68, 68, 68, 68, 68, 68, 
398
  81, 82, 83, 68, 84, 85, 86, 68, 
399
  68, 68, 68, 68, 88, 89, 90, 93, 
400
  68, 68, 68, 68, 72, 68, 97, 68, 
401
  70, 68, 68, 68, 68, 68, 68, 68, 
402
  71, 72, 73, 74, 75, 76, 77, 78, 
403
  68, 68, 68, 81, 82, 83, 68, 84, 
404
  85, 86, 68, 68, 68, 68, 68, 88, 
405
  89, 90, 93, 68, 68, 68, 68, 72, 
406
  68, 4, 69, 68, 70, 68, 68, 68, 
407
  68, 68, 68, 68, 71, 72, 73, 74, 
408
  75, 76, 77, 78, 79, 68, 80, 81, 
409
  82, 83, 68, 84, 85, 86, 68, 68, 
410
  68, 68, 87, 88, 89, 90, 91, 68, 
411
  68, 68, 68, 92, 68, 4, 98, 98, 
412
  98, 98, 98, 98, 98, 98, 98, 98, 
413
  98, 98, 99, 98, 4, 94, 94, 94, 
414
  94, 94, 94, 94, 94, 94, 94, 94, 
415
  94, 96, 94, 4, 68, 68, 68, 68, 
416
  68, 68, 68, 68, 68, 68, 68, 68, 
417
  70, 68, 68, 68, 68, 68, 68, 68, 
418
  68, 72, 73, 74, 75, 68, 68, 68, 
419
  68, 68, 68, 68, 68, 68, 68, 84, 
420
  85, 86, 68, 68, 68, 68, 68, 88, 
421
  89, 90, 93, 68, 101, 102, 100, 6, 
422
  103, 103, 103, 103, 103, 103, 103, 103, 
423
  103, 104, 103, 105, 106, 68, 70, 68, 
424
  68, 68, 68, 68, 68, 68, 107, 108, 
425
  109, 110, 111, 112, 113, 114, 115, 105, 
426
  116, 117, 118, 119, 68, 120, 121, 122, 
427
  68, 58, 59, 68, 123, 124, 125, 126, 
428
  127, 68, 68, 68, 68, 128, 68, 105, 
429
  106, 68, 70, 68, 68, 68, 68, 68, 
430
  68, 68, 107, 108, 109, 110, 111, 112, 
431
  113, 114, 115, 105, 116, 117, 118, 119, 
432
  68, 120, 121, 122, 68, 68, 68, 68, 
433
  123, 124, 125, 126, 127, 68, 68, 68, 
434
  68, 128, 68, 105, 68, 68, 68, 68, 
435
  68, 68, 68, 68, 68, 68, 68, 68, 
436
  70, 68, 68, 68, 68, 68, 68, 68, 
437
  68, 108, 109, 110, 111, 68, 68, 68, 
438
  68, 68, 68, 68, 68, 68, 68, 120, 
439
  121, 122, 68, 68, 68, 68, 68, 124, 
440
  125, 126, 129, 68, 68, 68, 68, 108, 
441
  68, 70, 68, 68, 68, 68, 68, 68, 
442
  68, 68, 108, 109, 110, 111, 68, 68, 
443
  68, 68, 68, 68, 68, 68, 68, 68, 
444
  120, 121, 122, 68, 68, 68, 68, 68, 
445
  124, 125, 126, 129, 68, 70, 68, 68, 
446
  68, 68, 68, 68, 68, 68, 68, 109, 
447
  110, 111, 68, 68, 68, 68, 68, 68, 
448
  68, 68, 68, 68, 68, 68, 68, 68, 
449
  68, 68, 68, 68, 124, 125, 126, 68, 
450
  70, 68, 68, 68, 68, 68, 68, 68, 
451
  68, 68, 68, 110, 111, 68, 68, 68, 
452
  68, 68, 68, 68, 68, 68, 68, 68, 
453
  68, 68, 68, 68, 68, 68, 68, 124, 
454
  125, 126, 68, 70, 68, 68, 68, 68, 
455
  68, 68, 68, 68, 68, 68, 68, 111, 
456
  68, 68, 68, 68, 68, 68, 68, 68, 
457
  68, 68, 68, 68, 68, 68, 68, 68, 
458
  68, 68, 124, 125, 126, 68, 70, 68, 
459
  68, 68, 68, 68, 68, 68, 68, 68, 
460
  68, 68, 68, 68, 68, 68, 68, 68, 
461
  68, 68, 68, 68, 68, 68, 68, 68, 
462
  68, 68, 68, 68, 68, 124, 125, 68, 
463
  70, 68, 68, 68, 68, 68, 68, 68, 
464
  68, 68, 68, 68, 68, 68, 68, 68, 
465
  68, 68, 68, 68, 68, 68, 68, 68, 
466
  68, 68, 68, 68, 68, 68, 68, 68, 
467
  125, 68, 70, 68, 70, 68, 68, 68, 
468
  68, 68, 68, 68, 68, 68, 109, 110, 
469
  111, 68, 68, 68, 68, 68, 68, 68, 
470
  68, 68, 68, 120, 121, 122, 68, 68, 
471
  68, 68, 68, 124, 125, 126, 129, 68, 
472
  70, 68, 68, 68, 68, 68, 68, 68, 
473
  68, 68, 109, 110, 111, 68, 68, 68, 
474
  68, 68, 68, 68, 68, 68, 68, 68, 
475
  121, 122, 68, 68, 68, 68, 68, 124, 
476
  125, 126, 129, 68, 70, 68, 68, 68, 
477
  68, 68, 68, 68, 68, 68, 109, 110, 
478
  111, 68, 68, 68, 68, 68, 68, 68, 
479
  68, 68, 68, 68, 68, 122, 68, 68, 
480
  68, 68, 68, 124, 125, 126, 129, 68, 
481
  130, 94, 94, 94, 94, 94, 94, 94, 
482
  94, 94, 94, 94, 94, 96, 94, 70, 
483
  68, 68, 68, 68, 68, 68, 68, 68, 
484
  68, 109, 110, 111, 68, 68, 68, 68, 
485
  68, 68, 68, 68, 68, 68, 68, 68, 
486
  68, 68, 68, 68, 68, 68, 124, 125, 
487
  126, 129, 68, 70, 68, 68, 68, 68, 
488
  68, 68, 68, 107, 108, 109, 110, 111, 
489
  68, 68, 68, 68, 68, 68, 117, 118, 
490
  119, 68, 120, 121, 122, 68, 68, 68, 
491
  68, 68, 124, 125, 126, 129, 68, 68, 
492
  68, 68, 108, 68, 70, 68, 68, 68, 
493
  68, 68, 68, 68, 68, 108, 109, 110, 
494
  111, 68, 68, 68, 68, 68, 68, 117, 
495
  118, 119, 68, 120, 121, 122, 68, 68, 
496
  68, 68, 68, 124, 125, 126, 129, 68, 
497
  68, 68, 68, 108, 68, 70, 68, 68, 
498
  68, 68, 68, 68, 68, 68, 108, 109, 
499
  110, 111, 68, 68, 68, 68, 68, 68, 
500
  68, 118, 119, 68, 120, 121, 122, 68, 
501
  68, 68, 68, 68, 124, 125, 126, 129, 
502
  68, 68, 68, 68, 108, 68, 70, 68, 
503
  68, 68, 68, 68, 68, 68, 68, 108, 
504
  109, 110, 111, 68, 68, 68, 68, 68, 
505
  68, 68, 68, 119, 68, 120, 121, 122, 
506
  68, 68, 68, 68, 68, 124, 125, 126, 
507
  129, 68, 68, 68, 68, 108, 68, 131, 
508
  68, 70, 68, 68, 68, 68, 68, 68, 
509
  68, 107, 108, 109, 110, 111, 68, 113, 
510
  114, 68, 68, 68, 117, 118, 119, 68, 
511
  120, 121, 122, 68, 68, 68, 68, 68, 
512
  124, 125, 126, 129, 68, 68, 68, 68, 
513
  108, 68, 70, 68, 68, 68, 68, 68, 
514
  68, 68, 68, 108, 109, 110, 111, 68, 
515
  68, 68, 68, 68, 68, 68, 68, 68, 
516
  68, 120, 121, 122, 68, 68, 68, 68, 
517
  68, 124, 125, 126, 129, 68, 68, 68, 
518
  68, 108, 68, 131, 68, 70, 68, 68, 
519
  68, 68, 68, 68, 68, 107, 108, 109, 
520
  110, 111, 68, 68, 114, 68, 68, 68, 
521
  117, 118, 119, 68, 120, 121, 122, 68, 
522
  68, 68, 68, 68, 124, 125, 126, 129, 
523
  68, 68, 68, 68, 108, 68, 131, 68, 
524
  70, 68, 68, 68, 68, 68, 68, 68, 
525
  107, 108, 109, 110, 111, 68, 68, 68, 
526
  68, 68, 68, 117, 118, 119, 68, 120, 
527
  121, 122, 68, 68, 68, 68, 68, 124, 
528
  125, 126, 129, 68, 68, 68, 68, 108, 
529
  68, 131, 68, 70, 68, 68, 68, 68, 
530
  68, 68, 68, 107, 108, 109, 110, 111, 
531
  112, 113, 114, 68, 68, 68, 117, 118, 
532
  119, 68, 120, 121, 122, 68, 68, 68, 
533
  68, 68, 124, 125, 126, 129, 68, 68, 
534
  68, 68, 108, 68, 105, 106, 68, 70, 
535
  68, 68, 68, 68, 68, 68, 68, 107, 
536
  108, 109, 110, 111, 112, 113, 114, 115, 
537
  68, 116, 117, 118, 119, 68, 120, 121, 
538
  122, 68, 68, 68, 68, 123, 124, 125, 
539
  126, 127, 68, 68, 68, 68, 128, 68, 
540
  105, 98, 98, 98, 98, 98, 98, 98, 
541
  98, 98, 98, 98, 98, 99, 98, 105, 
542
  94, 94, 94, 94, 94, 94, 94, 94, 
543
  94, 94, 94, 94, 96, 94, 105, 68, 
544
  68, 68, 68, 68, 68, 68, 68, 68, 
545
  68, 68, 68, 70, 68, 68, 68, 68, 
546
  68, 68, 68, 68, 108, 109, 110, 111, 
547
  68, 68, 68, 68, 68, 68, 68, 68, 
548
  68, 68, 120, 121, 122, 68, 68, 68, 
549
  68, 68, 124, 125, 126, 129, 68, 8, 
550
  9, 132, 11, 132, 132, 132, 132, 132, 
551
  132, 132, 13, 14, 15, 16, 17, 18, 
552
  19, 20, 21, 8, 22, 23, 24, 25, 
553
  132, 26, 27, 28, 132, 132, 132, 132, 
554
  32, 33, 34, 35, 32, 132, 132, 132, 
555
  132, 37, 132, 8, 132, 132, 132, 132, 
556
  132, 132, 132, 132, 132, 132, 132, 132, 
557
  11, 132, 132, 132, 132, 132, 132, 132, 
558
  132, 14, 15, 16, 17, 132, 132, 132, 
559
  132, 132, 132, 132, 132, 132, 132, 26, 
560
  27, 28, 132, 132, 132, 132, 132, 33, 
561
  34, 35, 133, 132, 132, 132, 132, 14, 
562
  132, 11, 132, 132, 132, 132, 132, 132, 
563
  132, 132, 14, 15, 16, 17, 132, 132, 
564
  132, 132, 132, 132, 132, 132, 132, 132, 
565
  26, 27, 28, 132, 132, 132, 132, 132, 
566
  33, 34, 35, 133, 132, 11, 132, 132, 
567
  132, 132, 132, 132, 132, 132, 132, 15, 
568
  16, 17, 132, 132, 132, 132, 132, 132, 
569
  132, 132, 132, 132, 132, 132, 132, 132, 
570
  132, 132, 132, 132, 33, 34, 35, 132, 
571
  11, 132, 132, 132, 132, 132, 132, 132, 
572
  132, 132, 132, 16, 17, 132, 132, 132, 
573
  132, 132, 132, 132, 132, 132, 132, 132, 
574
  132, 132, 132, 132, 132, 132, 132, 33, 
575
  34, 35, 132, 11, 132, 132, 132, 132, 
576
  132, 132, 132, 132, 132, 132, 132, 17, 
577
  132, 132, 132, 132, 132, 132, 132, 132, 
578
  132, 132, 132, 132, 132, 132, 132, 132, 
579
  132, 132, 33, 34, 35, 132, 11, 132, 
580
  132, 132, 132, 132, 132, 132, 132, 132, 
581
  132, 132, 132, 132, 132, 132, 132, 132, 
582
  132, 132, 132, 132, 132, 132, 132, 132, 
583
  132, 132, 132, 132, 132, 33, 34, 132, 
584
  11, 132, 132, 132, 132, 132, 132, 132, 
585
  132, 132, 132, 132, 132, 132, 132, 132, 
586
  132, 132, 132, 132, 132, 132, 132, 132, 
587
  132, 132, 132, 132, 132, 132, 132, 132, 
588
  34, 132, 11, 132, 11, 132, 132, 132, 
589
  132, 132, 132, 132, 132, 132, 15, 16, 
590
  17, 132, 132, 132, 132, 132, 132, 132, 
591
  132, 132, 132, 26, 27, 28, 132, 132, 
592
  132, 132, 132, 33, 34, 35, 133, 132, 
593
  11, 132, 132, 132, 132, 132, 132, 132, 
594
  132, 132, 15, 16, 17, 132, 132, 132, 
595
  132, 132, 132, 132, 132, 132, 132, 132, 
596
  27, 28, 132, 132, 132, 132, 132, 33, 
597
  34, 35, 133, 132, 11, 132, 132, 132, 
598
  132, 132, 132, 132, 132, 132, 15, 16, 
599
  17, 132, 132, 132, 132, 132, 132, 132, 
600
  132, 132, 132, 132, 132, 28, 132, 132, 
601
  132, 132, 132, 33, 34, 35, 133, 132, 
602
  134, 132, 132, 132, 132, 132, 132, 132, 
603
  132, 132, 132, 132, 132, 11, 132, 11, 
604
  132, 132, 132, 132, 132, 132, 132, 132, 
605
  132, 15, 16, 17, 132, 132, 132, 132, 
606
  132, 132, 132, 132, 132, 132, 132, 132, 
607
  132, 132, 132, 132, 132, 132, 33, 34, 
608
  35, 133, 132, 11, 132, 132, 132, 132, 
609
  132, 132, 132, 13, 14, 15, 16, 17, 
610
  132, 132, 132, 132, 132, 132, 23, 24, 
611
  25, 132, 26, 27, 28, 132, 132, 132, 
612
  132, 132, 33, 34, 35, 133, 132, 132, 
613
  132, 132, 14, 132, 11, 132, 132, 132, 
614
  132, 132, 132, 132, 132, 14, 15, 16, 
615
  17, 132, 132, 132, 132, 132, 132, 23, 
616
  24, 25, 132, 26, 27, 28, 132, 132, 
617
  132, 132, 132, 33, 34, 35, 133, 132, 
618
  132, 132, 132, 14, 132, 11, 132, 132, 
619
  132, 132, 132, 132, 132, 132, 14, 15, 
620
  16, 17, 132, 132, 132, 132, 132, 132, 
621
  132, 24, 25, 132, 26, 27, 28, 132, 
622
  132, 132, 132, 132, 33, 34, 35, 133, 
623
  132, 132, 132, 132, 14, 132, 11, 132, 
624
  132, 132, 132, 132, 132, 132, 132, 14, 
625
  15, 16, 17, 132, 132, 132, 132, 132, 
626
  132, 132, 132, 25, 132, 26, 27, 28, 
627
  132, 132, 132, 132, 132, 33, 34, 35, 
628
  133, 132, 132, 132, 132, 14, 132, 135, 
629
  132, 11, 132, 132, 132, 132, 132, 132, 
630
  132, 13, 14, 15, 16, 17, 132, 19, 
631
  20, 132, 132, 132, 23, 24, 25, 132, 
632
  26, 27, 28, 132, 132, 132, 132, 132, 
633
  33, 34, 35, 133, 132, 132, 132, 132, 
634
  14, 132, 11, 132, 132, 132, 132, 132, 
635
  132, 132, 132, 14, 15, 16, 17, 132, 
636
  132, 132, 132, 132, 132, 132, 132, 132, 
637
  132, 26, 27, 28, 132, 132, 132, 132, 
638
  132, 33, 34, 35, 133, 132, 132, 132, 
639
  132, 14, 132, 135, 132, 11, 132, 132, 
640
  132, 132, 132, 132, 132, 13, 14, 15, 
641
  16, 17, 132, 132, 20, 132, 132, 132, 
642
  23, 24, 25, 132, 26, 27, 28, 132, 
643
  132, 132, 132, 132, 33, 34, 35, 133, 
644
  132, 132, 132, 132, 14, 132, 135, 132, 
645
  11, 132, 132, 132, 132, 132, 132, 132, 
646
  13, 14, 15, 16, 17, 132, 132, 132, 
647
  132, 132, 132, 23, 24, 25, 132, 26, 
648
  27, 28, 132, 132, 132, 132, 132, 33, 
649
  34, 35, 133, 132, 132, 132, 132, 14, 
650
  132, 135, 132, 11, 132, 132, 132, 132, 
651
  132, 132, 132, 13, 14, 15, 16, 17, 
652
  18, 19, 20, 132, 132, 132, 23, 24, 
653
  25, 132, 26, 27, 28, 132, 132, 132, 
654
  132, 132, 33, 34, 35, 133, 132, 132, 
655
  132, 132, 14, 132, 8, 9, 132, 11, 
656
  132, 132, 132, 132, 132, 132, 132, 13, 
657
  14, 15, 16, 17, 18, 19, 20, 21, 
658
  132, 22, 23, 24, 25, 132, 26, 27, 
659
  28, 132, 132, 132, 132, 32, 33, 34, 
660
  35, 32, 132, 132, 132, 132, 37, 132, 
661
  8, 132, 132, 132, 132, 132, 132, 132, 
662
  132, 132, 132, 132, 132, 11, 132, 8, 
663
  132, 132, 132, 132, 132, 132, 132, 132, 
664
  132, 132, 132, 132, 11, 132, 132, 132, 
665
  132, 132, 132, 132, 132, 14, 15, 16, 
666
  17, 132, 132, 132, 132, 132, 132, 132, 
667
  132, 132, 132, 26, 27, 28, 132, 132, 
668
  132, 132, 132, 33, 34, 35, 133, 132, 
669
  136, 132, 132, 132, 132, 132, 132, 132, 
670
  132, 132, 11, 132, 10, 11, 132, 4, 
671
  132, 132, 132, 4, 132, 132, 132, 132, 
672
  132, 8, 9, 10, 11, 132, 132, 132, 
673
  132, 132, 132, 132, 13, 14, 15, 16, 
674
  17, 18, 19, 20, 21, 8, 22, 23, 
675
  24, 25, 132, 26, 27, 28, 132, 29, 
676
  30, 132, 32, 33, 34, 35, 32, 132, 
677
  132, 132, 132, 37, 132, 11, 132, 132, 
678
  132, 132, 132, 132, 132, 132, 132, 132, 
679
  132, 132, 132, 132, 132, 132, 132, 132, 
680
  132, 132, 132, 132, 132, 132, 132, 132, 
681
  29, 30, 132, 11, 132, 132, 132, 132, 
682
  132, 132, 132, 132, 132, 132, 132, 132, 
683
  132, 132, 132, 132, 132, 132, 132, 132, 
684
  132, 132, 132, 132, 132, 132, 132, 30, 
685
  132, 4, 137, 137, 137, 4, 137, 139, 
686
  138, 138, 138, 138, 138, 138, 138, 138, 
687
  138, 138, 138, 138, 138, 138, 138, 138, 
688
  138, 138, 138, 138, 138, 138, 138, 138, 
689
  138, 138, 138, 138, 138, 138, 138, 138, 
690
  138, 138, 138, 140, 138, 141, 138, 141, 
691
  142, 138, 139, 138, 138, 138, 138, 138, 
692
  138, 138, 138, 138, 138, 138, 138, 138, 
693
  138, 138, 138, 138, 138, 138, 138, 138, 
694
  138, 138, 138, 138, 138, 138, 138, 138, 
695
  138, 138, 138, 138, 138, 1, 140, 140, 
696
  138, 139, 138, 138, 138, 138, 138, 138, 
697
  138, 138, 138, 138, 138, 138, 138, 138, 
698
  138, 138, 138, 138, 138, 138, 138, 138, 
699
  138, 138, 138, 138, 138, 138, 138, 138, 
700
  138, 138, 138, 138, 138, 140, 138, 141, 
701
  138, 139, 138, 138, 138, 138, 138, 138, 
702
  138, 138, 138, 138, 138, 138, 138, 138, 
703
  138, 138, 138, 138, 138, 138, 138, 138, 
704
  138, 138, 138, 138, 138, 138, 138, 138, 
705
  138, 138, 138, 138, 138, 140, 138, 141, 
706
  138, 141, 138, 39, 40, 38, 41, 38, 
707
  38, 38, 38, 38, 38, 38, 42, 43, 
708
  44, 45, 46, 47, 48, 49, 50, 39, 
709
  51, 52, 53, 54, 38, 55, 56, 57, 
710
  38, 58, 59, 38, 60, 61, 62, 63, 
711
  60, 1, 38, 2, 38, 64, 38, 0
712
};
713
714
static const char _use_syllable_machine_trans_targs[] = {
715
  1, 120, 0, 2, 31, 1, 58, 60, 
716
  88, 89, 114, 1, 116, 102, 90, 91, 
717
  92, 93, 106, 108, 109, 110, 111, 103, 
718
  104, 105, 97, 98, 99, 117, 118, 119, 
719
  112, 94, 95, 96, 124, 113, 1, 3, 
720
  4, 1, 17, 5, 6, 7, 8, 21, 
721
  23, 24, 25, 26, 18, 19, 20, 12, 
722
  13, 14, 29, 30, 27, 9, 10, 11, 
723
  28, 15, 16, 22, 1, 32, 1, 45, 
724
  33, 34, 35, 36, 49, 51, 52, 53, 
725
  54, 46, 47, 48, 40, 41, 42, 55, 
726
  37, 38, 39, 56, 57, 43, 1, 44, 
727
  1, 50, 1, 1, 1, 59, 1, 1, 
728
  1, 61, 62, 75, 63, 64, 65, 66, 
729
  79, 81, 82, 83, 84, 76, 77, 78, 
730
  70, 71, 72, 85, 67, 68, 69, 86, 
731
  87, 73, 74, 80, 1, 100, 101, 107, 
732
  115, 1, 1, 1, 121, 122, 123
733
};
734
735
static const char _use_syllable_machine_trans_actions[] = {
736
  1, 0, 0, 0, 0, 4, 0, 0, 
737
  0, 0, 0, 5, 0, 0, 0, 0, 
738
  0, 0, 0, 0, 0, 0, 0, 0, 
739
  0, 0, 0, 0, 0, 0, 0, 0, 
740
  0, 0, 0, 0, 6, 0, 7, 0, 
741
  0, 8, 0, 0, 0, 0, 0, 0, 
742
  0, 0, 0, 0, 0, 0, 0, 0, 
743
  0, 0, 0, 0, 0, 0, 0, 0, 
744
  0, 0, 0, 0, 9, 0, 10, 0, 
745
  0, 0, 0, 0, 0, 0, 0, 0, 
746
  0, 0, 0, 0, 0, 0, 0, 0, 
747
  0, 0, 0, 0, 0, 0, 11, 0, 
748
  12, 0, 13, 14, 15, 0, 16, 17, 
749
  18, 0, 0, 0, 0, 0, 0, 0, 
750
  0, 0, 0, 0, 0, 0, 0, 0, 
751
  0, 0, 0, 0, 0, 0, 0, 0, 
752
  0, 0, 0, 0, 19, 0, 0, 0, 
753
  0, 20, 21, 22, 0, 0, 0
754
};
755
756
static const char _use_syllable_machine_to_state_actions[] = {
757
  0, 2, 0, 0, 0, 0, 0, 0, 
758
  0, 0, 0, 0, 0, 0, 0, 0, 
759
  0, 0, 0, 0, 0, 0, 0, 0, 
760
  0, 0, 0, 0, 0, 0, 0, 0, 
761
  0, 0, 0, 0, 0, 0, 0, 0, 
762
  0, 0, 0, 0, 0, 0, 0, 0, 
763
  0, 0, 0, 0, 0, 0, 0, 0, 
764
  0, 0, 0, 0, 0, 0, 0, 0, 
765
  0, 0, 0, 0, 0, 0, 0, 0, 
766
  0, 0, 0, 0, 0, 0, 0, 0, 
767
  0, 0, 0, 0, 0, 0, 0, 0, 
768
  0, 0, 0, 0, 0, 0, 0, 0, 
769
  0, 0, 0, 0, 0, 0, 0, 0, 
770
  0, 0, 0, 0, 0, 0, 0, 0, 
771
  0, 0, 0, 0, 0, 0, 0, 0, 
772
  0, 0, 0, 0, 0
773
};
774
775
static const char _use_syllable_machine_from_state_actions[] = {
776
  0, 3, 0, 0, 0, 0, 0, 0, 
777
  0, 0, 0, 0, 0, 0, 0, 0, 
778
  0, 0, 0, 0, 0, 0, 0, 0, 
779
  0, 0, 0, 0, 0, 0, 0, 0, 
780
  0, 0, 0, 0, 0, 0, 0, 0, 
781
  0, 0, 0, 0, 0, 0, 0, 0, 
782
  0, 0, 0, 0, 0, 0, 0, 0, 
783
  0, 0, 0, 0, 0, 0, 0, 0, 
784
  0, 0, 0, 0, 0, 0, 0, 0, 
785
  0, 0, 0, 0, 0, 0, 0, 0, 
786
  0, 0, 0, 0, 0, 0, 0, 0, 
787
  0, 0, 0, 0, 0, 0, 0, 0, 
788
  0, 0, 0, 0, 0, 0, 0, 0, 
789
  0, 0, 0, 0, 0, 0, 0, 0, 
790
  0, 0, 0, 0, 0, 0, 0, 0, 
791
  0, 0, 0, 0, 0
792
};
793
794
static const short _use_syllable_machine_eof_trans[] = {
795
  1, 0, 39, 39, 39, 39, 39, 39, 
796
  39, 39, 39, 39, 39, 39, 39, 39, 
797
  39, 39, 39, 39, 39, 39, 39, 39, 
798
  39, 39, 39, 39, 39, 39, 39, 69, 
799
  69, 69, 69, 69, 69, 69, 69, 69, 
800
  69, 69, 69, 95, 69, 69, 69, 69, 
801
  69, 69, 69, 69, 69, 69, 69, 99, 
802
  95, 69, 101, 104, 69, 69, 69, 69, 
803
  69, 69, 69, 69, 69, 69, 69, 69, 
804
  69, 95, 69, 69, 69, 69, 69, 69, 
805
  69, 69, 69, 69, 69, 99, 95, 69, 
806
  133, 133, 133, 133, 133, 133, 133, 133, 
807
  133, 133, 133, 133, 133, 133, 133, 133, 
808
  133, 133, 133, 133, 133, 133, 133, 133, 
809
  133, 133, 133, 133, 133, 133, 133, 138, 
810
  139, 139, 139, 139, 39
811
};
812
813
static const int use_syllable_machine_start = 1;
814
static const int use_syllable_machine_first_final = 1;
815
static const int use_syllable_machine_error = -1;
816
817
static const int use_syllable_machine_en_main = 1;
818
819
820
#line 58 "hb-ot-shaper-use-machine.rl"
821
822
823
824
#line 184 "hb-ot-shaper-use-machine.rl"
825
826
827
#define found_syllable(syllable_type) \
828
0
  HB_STMT_START { \
829
0
    if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
830
0
    for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
831
0
      info[i].syllable() = (syllable_serial << 4) | syllable_type; \
832
0
    syllable_serial++; \
833
0
    if (syllable_serial == 16) syllable_serial = 1; \
834
0
  } HB_STMT_END
835
836
837
template <typename Iter>
838
struct machine_index_t :
839
  hb_iter_with_fallback_t<machine_index_t<Iter>,
840
        typename Iter::item_t>
841
{
842
0
  machine_index_t (const Iter& it) : it (it) {}
843
  machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
844
                       typename Iter::item_t> (),
845
0
                 it (o.it), is_null (o.is_null) {}
846
847
  static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
848
  static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
849
850
0
  typename Iter::item_t __item__ () const { return *it; }
851
  typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
852
0
  unsigned __len__ () const { return it.len (); }
853
0
  void __next__ () { ++it; }
854
0
  void __forward__ (unsigned n) { it += n; }
855
0
  void __prev__ () { --it; }
856
0
  void __rewind__ (unsigned n) { it -= n; }
857
858
  void operator = (unsigned n)
859
0
  {
860
0
    assert (n == 0);
861
0
    is_null = true;
862
0
  }
863
  explicit operator bool () { return !is_null; }
864
865
  void operator = (const machine_index_t& o)
866
0
  {
867
0
    is_null = o.is_null;
868
0
    unsigned index = (*it).first;
869
0
    unsigned n = (*o.it).first;
870
0
    if (index < n) it += n - index; else if (index > n) it -= index - n;
871
0
  }
872
  bool operator == (const machine_index_t& o) const
873
0
  { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
874
0
  bool operator != (const machine_index_t& o) const { return !(*this == o); }
875
876
  private:
877
  Iter it;
878
  bool is_null = false;
879
};
880
struct
881
{
882
  template <typename Iter,
883
      hb_requires (hb_is_iterable (Iter))>
884
  machine_index_t<hb_iter_type<Iter>>
885
  operator () (Iter&& it) const
886
0
  { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
887
}
888
HB_FUNCOBJ (machine_index);
889
890
891
892
static bool
893
not_ccs_default_ignorable (const hb_glyph_info_t &i)
894
0
{ return i.use_category() != USE(CGJ); }
895
896
static inline void
897
find_syllables_use (hb_buffer_t *buffer)
898
0
{
899
0
  hb_glyph_info_t *info = buffer->info;
900
0
  auto p =
901
0
    + hb_iter (info, buffer->len)
902
0
    | hb_enumerate
903
0
    | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
904
0
     hb_second)
905
0
    | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
906
0
     {
907
0
       if (p.second.use_category() == USE(ZWNJ))
908
0
         for (unsigned i = p.first + 1; i < buffer->len; ++i)
909
0
           if (not_ccs_default_ignorable (info[i]))
910
0
       return !_hb_glyph_info_is_unicode_mark (&info[i]);
911
0
       return true;
912
0
     })
913
0
    | hb_enumerate
914
0
    | machine_index
915
0
    ;
916
0
  auto pe = p + p.len ();
917
0
  auto eof = +pe;
918
0
  auto ts = +p;
919
0
  auto te = +p;
920
0
  unsigned int act HB_UNUSED;
921
0
  int cs;
922
  
923
0
#line 924 "hb-ot-shaper-use-machine.hh"
924
0
  {
925
0
  cs = use_syllable_machine_start;
926
0
  ts = 0;
927
0
  te = 0;
928
0
  act = 0;
929
0
  }
930
931
0
#line 284 "hb-ot-shaper-use-machine.rl"
932
933
934
0
  unsigned int syllable_serial = 1;
935
  
936
0
#line 937 "hb-ot-shaper-use-machine.hh"
937
0
  {
938
0
  int _slen;
939
0
  int _trans;
940
0
  const unsigned char *_keys;
941
0
  const unsigned char *_inds;
942
0
  if ( p == pe )
943
0
    goto _test_eof;
944
0
_resume:
945
0
  switch ( _use_syllable_machine_from_state_actions[cs] ) {
946
0
  case 3:
947
0
#line 1 "NONE"
948
0
  {ts = p;}
949
0
  break;
950
0
#line 951 "hb-ot-shaper-use-machine.hh"
951
0
  }
952
953
0
  _keys = _use_syllable_machine_trans_keys + (cs<<1);
954
0
  _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
955
956
0
  _slen = _use_syllable_machine_key_spans[cs];
957
0
  _trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
958
0
    ( (*p).second.second.use_category()) <= _keys[1] ?
959
0
    ( (*p).second.second.use_category()) - _keys[0] : _slen ];
960
961
0
_eof_trans:
962
0
  cs = _use_syllable_machine_trans_targs[_trans];
963
964
0
  if ( _use_syllable_machine_trans_actions[_trans] == 0 )
965
0
    goto _again;
966
967
0
  switch ( _use_syllable_machine_trans_actions[_trans] ) {
968
0
  case 6:
969
0
#line 1 "NONE"
970
0
  {te = p+1;}
971
0
  break;
972
0
  case 14:
973
0
#line 172 "hb-ot-shaper-use-machine.rl"
974
0
  {te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
975
0
  break;
976
0
  case 12:
977
0
#line 173 "hb-ot-shaper-use-machine.rl"
978
0
  {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
979
0
  break;
980
0
  case 10:
981
0
#line 174 "hb-ot-shaper-use-machine.rl"
982
0
  {te = p+1;{ found_syllable (use_standard_cluster); }}
983
0
  break;
984
0
  case 18:
985
0
#line 175 "hb-ot-shaper-use-machine.rl"
986
0
  {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
987
0
  break;
988
0
  case 16:
989
0
#line 176 "hb-ot-shaper-use-machine.rl"
990
0
  {te = p+1;{ found_syllable (use_numeral_cluster); }}
991
0
  break;
992
0
  case 8:
993
0
#line 177 "hb-ot-shaper-use-machine.rl"
994
0
  {te = p+1;{ found_syllable (use_symbol_cluster); }}
995
0
  break;
996
0
  case 22:
997
0
#line 178 "hb-ot-shaper-use-machine.rl"
998
0
  {te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
999
0
  break;
1000
0
  case 5:
1001
0
#line 179 "hb-ot-shaper-use-machine.rl"
1002
0
  {te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1003
0
  break;
1004
0
  case 4:
1005
0
#line 180 "hb-ot-shaper-use-machine.rl"
1006
0
  {te = p+1;{ found_syllable (use_non_cluster); }}
1007
0
  break;
1008
0
  case 13:
1009
0
#line 172 "hb-ot-shaper-use-machine.rl"
1010
0
  {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1011
0
  break;
1012
0
  case 11:
1013
0
#line 173 "hb-ot-shaper-use-machine.rl"
1014
0
  {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1015
0
  break;
1016
0
  case 9:
1017
0
#line 174 "hb-ot-shaper-use-machine.rl"
1018
0
  {te = p;p--;{ found_syllable (use_standard_cluster); }}
1019
0
  break;
1020
0
  case 17:
1021
0
#line 175 "hb-ot-shaper-use-machine.rl"
1022
0
  {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1023
0
  break;
1024
0
  case 15:
1025
0
#line 176 "hb-ot-shaper-use-machine.rl"
1026
0
  {te = p;p--;{ found_syllable (use_numeral_cluster); }}
1027
0
  break;
1028
0
  case 7:
1029
0
#line 177 "hb-ot-shaper-use-machine.rl"
1030
0
  {te = p;p--;{ found_syllable (use_symbol_cluster); }}
1031
0
  break;
1032
0
  case 21:
1033
0
#line 178 "hb-ot-shaper-use-machine.rl"
1034
0
  {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1035
0
  break;
1036
0
  case 19:
1037
0
#line 179 "hb-ot-shaper-use-machine.rl"
1038
0
  {te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1039
0
  break;
1040
0
  case 20:
1041
0
#line 180 "hb-ot-shaper-use-machine.rl"
1042
0
  {te = p;p--;{ found_syllable (use_non_cluster); }}
1043
0
  break;
1044
0
  case 1:
1045
0
#line 177 "hb-ot-shaper-use-machine.rl"
1046
0
  {{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
1047
0
  break;
1048
0
#line 1049 "hb-ot-shaper-use-machine.hh"
1049
0
  }
1050
1051
0
_again:
1052
0
  switch ( _use_syllable_machine_to_state_actions[cs] ) {
1053
0
  case 2:
1054
0
#line 1 "NONE"
1055
0
  {ts = 0;}
1056
0
  break;
1057
0
#line 1058 "hb-ot-shaper-use-machine.hh"
1058
0
  }
1059
1060
0
  if ( ++p != pe )
1061
0
    goto _resume;
1062
0
  _test_eof: {}
1063
0
  if ( p == eof )
1064
0
  {
1065
0
  if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1066
0
    _trans = _use_syllable_machine_eof_trans[cs] - 1;
1067
0
    goto _eof_trans;
1068
0
  }
1069
0
  }
1070
1071
0
  }
1072
1073
0
#line 289 "hb-ot-shaper-use-machine.rl"
1074
1075
0
}
1076
1077
#undef found_syllable
1078
1079
#endif /* HB_OT_SHAPER_USE_MACHINE_HH */