/src/sudo/plugins/sudoers/toke.c
Line  | Count  | Source  | 
1  |  | #include <config.h>  | 
2  |  |  | 
3  |  | #line 3 "toke.c"  | 
4  |  |  | 
5  |  | #define  YY_INT_ALIGNED short int  | 
6  |  |  | 
7  |  | /* A lexical scanner generated by flex */  | 
8  |  |  | 
9  | 1  | #define yy_create_buffer sudoers_create_buffer  | 
10  | 0  | #define yy_delete_buffer sudoers_delete_buffer  | 
11  | 0  | #define yy_scan_buffer sudoers_scan_buffer  | 
12  |  | #define yy_scan_string sudoers_scan_string  | 
13  | 0  | #define yy_scan_bytes sudoers_scan_bytes  | 
14  | 11  | #define yy_init_buffer sudoers_init_buffer  | 
15  | 11  | #define yy_flush_buffer sudoers_flush_buffer  | 
16  | 21  | #define yy_load_buffer_state sudoers_load_buffer_state  | 
17  | 0  | #define yy_switch_to_buffer sudoers_switch_to_buffer  | 
18  |  | #define yypush_buffer_state sudoerspush_buffer_state  | 
19  | 0  | #define yypop_buffer_state sudoerspop_buffer_state  | 
20  | 1  | #define yyensure_buffer_stack sudoersensure_buffer_stack  | 
21  | 0  | #define yy_flex_debug sudoers_flex_debug  | 
22  | 33  | #define yyin sudoersin  | 
23  | 741k  | #define yyleng sudoersleng  | 
24  |  | #define yylex sudoerslex  | 
25  | 0  | #define yylineno sudoerslineno  | 
26  | 2  | #define yyout sudoersout  | 
27  | 5  | #define yyrestart sudoersrestart  | 
28  | 496k  | #define yytext sudoerstext  | 
29  | 5  | #define yywrap sudoerswrap  | 
30  | 3  | #define yyalloc sudoersalloc  | 
31  | 3  | #define yyrealloc sudoersrealloc  | 
32  | 0  | #define yyfree sudoersfree  | 
33  |  |  | 
34  |  | #define FLEX_SCANNER  | 
35  |  | #define YY_FLEX_MAJOR_VERSION 2  | 
36  |  | #define YY_FLEX_MINOR_VERSION 6  | 
37  |  | #define YY_FLEX_SUBMINOR_VERSION 4  | 
38  |  | #if YY_FLEX_SUBMINOR_VERSION > 0  | 
39  |  | #define FLEX_BETA  | 
40  |  | #endif  | 
41  |  |  | 
42  |  | #ifdef yy_create_buffer  | 
43  |  | #define sudoers_create_buffer_ALREADY_DEFINED  | 
44  |  | #else  | 
45  |  | #define yy_create_buffer sudoers_create_buffer  | 
46  |  | #endif  | 
47  |  |  | 
48  |  | #ifdef yy_delete_buffer  | 
49  |  | #define sudoers_delete_buffer_ALREADY_DEFINED  | 
50  |  | #else  | 
51  |  | #define yy_delete_buffer sudoers_delete_buffer  | 
52  |  | #endif  | 
53  |  |  | 
54  |  | #ifdef yy_scan_buffer  | 
55  |  | #define sudoers_scan_buffer_ALREADY_DEFINED  | 
56  |  | #else  | 
57  |  | #define yy_scan_buffer sudoers_scan_buffer  | 
58  |  | #endif  | 
59  |  |  | 
60  |  | #ifdef yy_scan_string  | 
61  |  | #define sudoers_scan_string_ALREADY_DEFINED  | 
62  |  | #else  | 
63  |  | #define yy_scan_string sudoers_scan_string  | 
64  |  | #endif  | 
65  |  |  | 
66  |  | #ifdef yy_scan_bytes  | 
67  |  | #define sudoers_scan_bytes_ALREADY_DEFINED  | 
68  |  | #else  | 
69  |  | #define yy_scan_bytes sudoers_scan_bytes  | 
70  |  | #endif  | 
71  |  |  | 
72  |  | #ifdef yy_init_buffer  | 
73  |  | #define sudoers_init_buffer_ALREADY_DEFINED  | 
74  |  | #else  | 
75  |  | #define yy_init_buffer sudoers_init_buffer  | 
76  |  | #endif  | 
77  |  |  | 
78  |  | #ifdef yy_flush_buffer  | 
79  |  | #define sudoers_flush_buffer_ALREADY_DEFINED  | 
80  |  | #else  | 
81  |  | #define yy_flush_buffer sudoers_flush_buffer  | 
82  |  | #endif  | 
83  |  |  | 
84  |  | #ifdef yy_load_buffer_state  | 
85  |  | #define sudoers_load_buffer_state_ALREADY_DEFINED  | 
86  |  | #else  | 
87  |  | #define yy_load_buffer_state sudoers_load_buffer_state  | 
88  |  | #endif  | 
89  |  |  | 
90  |  | #ifdef yy_switch_to_buffer  | 
91  |  | #define sudoers_switch_to_buffer_ALREADY_DEFINED  | 
92  |  | #else  | 
93  |  | #define yy_switch_to_buffer sudoers_switch_to_buffer  | 
94  |  | #endif  | 
95  |  |  | 
96  |  | #ifdef yypush_buffer_state  | 
97  |  | #define sudoerspush_buffer_state_ALREADY_DEFINED  | 
98  |  | #else  | 
99  |  | #define yypush_buffer_state sudoerspush_buffer_state  | 
100  |  | #endif  | 
101  |  |  | 
102  |  | #ifdef yypop_buffer_state  | 
103  |  | #define sudoerspop_buffer_state_ALREADY_DEFINED  | 
104  |  | #else  | 
105  |  | #define yypop_buffer_state sudoerspop_buffer_state  | 
106  |  | #endif  | 
107  |  |  | 
108  |  | #ifdef yyensure_buffer_stack  | 
109  |  | #define sudoersensure_buffer_stack_ALREADY_DEFINED  | 
110  |  | #else  | 
111  |  | #define yyensure_buffer_stack sudoersensure_buffer_stack  | 
112  |  | #endif  | 
113  |  |  | 
114  |  | #ifdef yylex  | 
115  |  | #define sudoerslex_ALREADY_DEFINED  | 
116  |  | #else  | 
117  |  | #define yylex sudoerslex  | 
118  |  | #endif  | 
119  |  |  | 
120  |  | #ifdef yyrestart  | 
121  |  | #define sudoersrestart_ALREADY_DEFINED  | 
122  |  | #else  | 
123  |  | #define yyrestart sudoersrestart  | 
124  |  | #endif  | 
125  |  |  | 
126  |  | #ifdef yylex_init  | 
127  |  | #define sudoerslex_init_ALREADY_DEFINED  | 
128  |  | #else  | 
129  |  | #define yylex_init sudoerslex_init  | 
130  |  | #endif  | 
131  |  |  | 
132  |  | #ifdef yylex_init_extra  | 
133  |  | #define sudoerslex_init_extra_ALREADY_DEFINED  | 
134  |  | #else  | 
135  |  | #define yylex_init_extra sudoerslex_init_extra  | 
136  |  | #endif  | 
137  |  |  | 
138  |  | #ifdef yylex_destroy  | 
139  |  | #define sudoerslex_destroy_ALREADY_DEFINED  | 
140  |  | #else  | 
141  |  | #define yylex_destroy sudoerslex_destroy  | 
142  |  | #endif  | 
143  |  |  | 
144  |  | #ifdef yyget_debug  | 
145  |  | #define sudoersget_debug_ALREADY_DEFINED  | 
146  |  | #else  | 
147  |  | #define yyget_debug sudoersget_debug  | 
148  |  | #endif  | 
149  |  |  | 
150  |  | #ifdef yyset_debug  | 
151  |  | #define sudoersset_debug_ALREADY_DEFINED  | 
152  |  | #else  | 
153  |  | #define yyset_debug sudoersset_debug  | 
154  |  | #endif  | 
155  |  |  | 
156  |  | #ifdef yyget_extra  | 
157  |  | #define sudoersget_extra_ALREADY_DEFINED  | 
158  |  | #else  | 
159  |  | #define yyget_extra sudoersget_extra  | 
160  |  | #endif  | 
161  |  |  | 
162  |  | #ifdef yyset_extra  | 
163  |  | #define sudoersset_extra_ALREADY_DEFINED  | 
164  |  | #else  | 
165  |  | #define yyset_extra sudoersset_extra  | 
166  |  | #endif  | 
167  |  |  | 
168  |  | #ifdef yyget_in  | 
169  |  | #define sudoersget_in_ALREADY_DEFINED  | 
170  |  | #else  | 
171  |  | #define yyget_in sudoersget_in  | 
172  |  | #endif  | 
173  |  |  | 
174  |  | #ifdef yyset_in  | 
175  |  | #define sudoersset_in_ALREADY_DEFINED  | 
176  |  | #else  | 
177  |  | #define yyset_in sudoersset_in  | 
178  |  | #endif  | 
179  |  |  | 
180  |  | #ifdef yyget_out  | 
181  |  | #define sudoersget_out_ALREADY_DEFINED  | 
182  |  | #else  | 
183  |  | #define yyget_out sudoersget_out  | 
184  |  | #endif  | 
185  |  |  | 
186  |  | #ifdef yyset_out  | 
187  |  | #define sudoersset_out_ALREADY_DEFINED  | 
188  |  | #else  | 
189  |  | #define yyset_out sudoersset_out  | 
190  |  | #endif  | 
191  |  |  | 
192  |  | #ifdef yyget_leng  | 
193  |  | #define sudoersget_leng_ALREADY_DEFINED  | 
194  |  | #else  | 
195  |  | #define yyget_leng sudoersget_leng  | 
196  |  | #endif  | 
197  |  |  | 
198  |  | #ifdef yyget_text  | 
199  |  | #define sudoersget_text_ALREADY_DEFINED  | 
200  |  | #else  | 
201  |  | #define yyget_text sudoersget_text  | 
202  |  | #endif  | 
203  |  |  | 
204  |  | #ifdef yyget_lineno  | 
205  |  | #define sudoersget_lineno_ALREADY_DEFINED  | 
206  |  | #else  | 
207  |  | #define yyget_lineno sudoersget_lineno  | 
208  |  | #endif  | 
209  |  |  | 
210  |  | #ifdef yyset_lineno  | 
211  |  | #define sudoersset_lineno_ALREADY_DEFINED  | 
212  |  | #else  | 
213  |  | #define yyset_lineno sudoersset_lineno  | 
214  |  | #endif  | 
215  |  |  | 
216  |  | #ifdef yywrap  | 
217  |  | #define sudoerswrap_ALREADY_DEFINED  | 
218  |  | #else  | 
219  |  | #define yywrap sudoerswrap  | 
220  |  | #endif  | 
221  |  |  | 
222  |  | #ifdef yyalloc  | 
223  |  | #define sudoersalloc_ALREADY_DEFINED  | 
224  |  | #else  | 
225  |  | #define yyalloc sudoersalloc  | 
226  |  | #endif  | 
227  |  |  | 
228  |  | #ifdef yyrealloc  | 
229  |  | #define sudoersrealloc_ALREADY_DEFINED  | 
230  |  | #else  | 
231  |  | #define yyrealloc sudoersrealloc  | 
232  |  | #endif  | 
233  |  |  | 
234  |  | #ifdef yyfree  | 
235  |  | #define sudoersfree_ALREADY_DEFINED  | 
236  |  | #else  | 
237  |  | #define yyfree sudoersfree  | 
238  |  | #endif  | 
239  |  |  | 
240  |  | #ifdef yytext  | 
241  |  | #define sudoerstext_ALREADY_DEFINED  | 
242  |  | #else  | 
243  |  | #define yytext sudoerstext  | 
244  |  | #endif  | 
245  |  |  | 
246  |  | #ifdef yyleng  | 
247  |  | #define sudoersleng_ALREADY_DEFINED  | 
248  |  | #else  | 
249  |  | #define yyleng sudoersleng  | 
250  |  | #endif  | 
251  |  |  | 
252  |  | #ifdef yyin  | 
253  |  | #define sudoersin_ALREADY_DEFINED  | 
254  |  | #else  | 
255  |  | #define yyin sudoersin  | 
256  |  | #endif  | 
257  |  |  | 
258  |  | #ifdef yyout  | 
259  |  | #define sudoersout_ALREADY_DEFINED  | 
260  |  | #else  | 
261  |  | #define yyout sudoersout  | 
262  |  | #endif  | 
263  |  |  | 
264  |  | #ifdef yy_flex_debug  | 
265  |  | #define sudoers_flex_debug_ALREADY_DEFINED  | 
266  |  | #else  | 
267  |  | #define yy_flex_debug sudoers_flex_debug  | 
268  |  | #endif  | 
269  |  |  | 
270  |  | #ifdef yylineno  | 
271  |  | #define sudoerslineno_ALREADY_DEFINED  | 
272  |  | #else  | 
273  |  | #define yylineno sudoerslineno  | 
274  |  | #endif  | 
275  |  |  | 
276  |  | /* First, we deal with  platform-specific or compiler-specific issues. */  | 
277  |  |  | 
278  |  | /* begin standard C headers. */  | 
279  |  | #include <stdio.h>  | 
280  |  | #include <string.h>  | 
281  |  | #include <errno.h>  | 
282  |  | #include <stdlib.h>  | 
283  |  |  | 
284  |  | /* end standard C headers. */  | 
285  |  |  | 
286  |  | /* flex integer type definitions */  | 
287  |  |  | 
288  |  | #ifndef FLEXINT_H  | 
289  |  | #define FLEXINT_H  | 
290  |  |  | 
291  |  | /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */  | 
292  |  |  | 
293  |  | #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L  | 
294  |  |  | 
295  |  | /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,  | 
296  |  |  * if you want the limit (max/min) macros for int types.   | 
297  |  |  */  | 
298  |  | #ifndef __STDC_LIMIT_MACROS  | 
299  |  | #define __STDC_LIMIT_MACROS 1  | 
300  |  | #endif  | 
301  |  |  | 
302  |  | #include <inttypes.h>  | 
303  |  | typedef int8_t flex_int8_t;  | 
304  |  | typedef uint8_t flex_uint8_t;  | 
305  |  | typedef int16_t flex_int16_t;  | 
306  |  | typedef uint16_t flex_uint16_t;  | 
307  |  | typedef int32_t flex_int32_t;  | 
308  |  | typedef uint32_t flex_uint32_t;  | 
309  |  | #else  | 
310  |  | typedef signed char flex_int8_t;  | 
311  |  | typedef short int flex_int16_t;  | 
312  |  | typedef int flex_int32_t;  | 
313  |  | typedef unsigned char flex_uint8_t;   | 
314  |  | typedef unsigned short int flex_uint16_t;  | 
315  |  | typedef unsigned int flex_uint32_t;  | 
316  |  |  | 
317  |  | /* Limits of integral types. */  | 
318  |  | #ifndef INT8_MIN  | 
319  |  | #define INT8_MIN               (-128)  | 
320  |  | #endif  | 
321  |  | #ifndef INT16_MIN  | 
322  |  | #define INT16_MIN              (-32767-1)  | 
323  |  | #endif  | 
324  |  | #ifndef INT32_MIN  | 
325  |  | #define INT32_MIN              (-2147483647-1)  | 
326  |  | #endif  | 
327  |  | #ifndef INT8_MAX  | 
328  |  | #define INT8_MAX               (127)  | 
329  |  | #endif  | 
330  |  | #ifndef INT16_MAX  | 
331  |  | #define INT16_MAX              (32767)  | 
332  |  | #endif  | 
333  |  | #ifndef INT32_MAX  | 
334  |  | #define INT32_MAX              (2147483647)  | 
335  |  | #endif  | 
336  |  | #ifndef UINT8_MAX  | 
337  |  | #define UINT8_MAX              (255U)  | 
338  |  | #endif  | 
339  |  | #ifndef UINT16_MAX  | 
340  |  | #define UINT16_MAX             (65535U)  | 
341  |  | #endif  | 
342  |  | #ifndef UINT32_MAX  | 
343  |  | #define UINT32_MAX             (4294967295U)  | 
344  |  | #endif  | 
345  |  |  | 
346  |  | #ifndef SIZE_MAX  | 
347  |  | #define SIZE_MAX               (~(size_t)0)  | 
348  |  | #endif  | 
349  |  |  | 
350  |  | #endif /* ! C99 */  | 
351  |  |  | 
352  |  | #endif /* ! FLEXINT_H */  | 
353  |  |  | 
354  |  | /* begin standard C++ headers. */  | 
355  |  |  | 
356  |  | /* TODO: this is always defined, so inline it */  | 
357  |  | #define yyconst const  | 
358  |  |  | 
359  |  | #if defined(__GNUC__) && __GNUC__ >= 3  | 
360  |  | #define yynoreturn __attribute__((__noreturn__))  | 
361  |  | #else  | 
362  |  | #define yynoreturn  | 
363  |  | #endif  | 
364  |  |  | 
365  |  | /* Returned upon end-of-file. */  | 
366  | 5  | #define YY_NULL 0  | 
367  |  |  | 
368  |  | /* Promotes a possibly negative, possibly signed char to an  | 
369  |  |  *   integer in range [0..255] for use as an array index.  | 
370  |  |  */  | 
371  | 6.10M  | #define YY_SC_TO_UI(c) ((YY_CHAR) (c))  | 
372  |  |  | 
373  |  | /* Enter a start condition.  This macro really ought to take a parameter,  | 
374  |  |  * but we do it the disgusting crufty way forced on us by the ()-less  | 
375  |  |  * definition of BEGIN.  | 
376  |  |  */  | 
377  | 45.9k  | #define BEGIN (yy_start) = 1 + 2 *  | 
378  |  | /* Translate the current start state into a value that can be later handed  | 
379  |  |  * to BEGIN to return to the state.  The YYSTATE alias is for lex  | 
380  |  |  * compatibility.  | 
381  |  |  */  | 
382  | 33  | #define YY_START (((yy_start) - 1) / 2)  | 
383  |  | #define YYSTATE YY_START  | 
384  |  | /* Action number for EOF rule of a given start state. */  | 
385  | 55  | #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)  | 
386  |  | /* Special action meaning "start processing a new file". */  | 
387  | 0  | #define YY_NEW_FILE yyrestart( yyin  )  | 
388  | 610  | #define YY_END_OF_BUFFER_CHAR 0  | 
389  |  |  | 
390  |  | /* Size of default input buffer. */  | 
391  |  | #ifndef YY_BUF_SIZE  | 
392  |  | #ifdef __ia64__  | 
393  |  | /* On IA-64, the buffer size is 16k, not 8k.  | 
394  |  |  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.  | 
395  |  |  * Ditto for the __ia64__ case accordingly.  | 
396  |  |  */  | 
397  |  | #define YY_BUF_SIZE 32768  | 
398  |  | #else  | 
399  | 1  | #define YY_BUF_SIZE 16384  | 
400  |  | #endif /* __ia64__ */  | 
401  |  | #endif  | 
402  |  |  | 
403  |  | /* The state buf must be large enough to hold one state per character in the main buffer.  | 
404  |  |  */  | 
405  |  | #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))  | 
406  |  |  | 
407  |  | #ifndef YY_TYPEDEF_YY_BUFFER_STATE  | 
408  |  | #define YY_TYPEDEF_YY_BUFFER_STATE  | 
409  |  | typedef struct yy_buffer_state *YY_BUFFER_STATE;  | 
410  |  | #endif  | 
411  |  |  | 
412  |  | #ifndef YY_TYPEDEF_YY_SIZE_T  | 
413  |  | #define YY_TYPEDEF_YY_SIZE_T  | 
414  |  | typedef size_t yy_size_t;  | 
415  |  | #endif  | 
416  |  |  | 
417  |  | extern int yyleng;  | 
418  |  |  | 
419  |  | extern FILE *yyin, *yyout;  | 
420  |  |  | 
421  | 578  | #define EOB_ACT_CONTINUE_SCAN 0  | 
422  | 10  | #define EOB_ACT_END_OF_FILE 1  | 
423  | 0  | #define EOB_ACT_LAST_MATCH 2  | 
424  |  |       | 
425  |  |     #define YY_LESS_LINENO(n)  | 
426  |  |     #define YY_LINENO_REWIND_TO(ptr)  | 
427  |  |       | 
428  |  | /* Return all but the first "n" matched characters back to the input stream. */  | 
429  |  | #define yyless(n) \  | 
430  | 2  |   do \  | 
431  | 2  |     { \ | 
432  | 2  |     /* Undo effects of setting up yytext. */ \  | 
433  | 2  |         int yyless_macro_arg = (n); \  | 
434  | 2  |         YY_LESS_LINENO(yyless_macro_arg);\  | 
435  | 2  |     *yy_cp = (yy_hold_char); \  | 
436  | 2  |     YY_RESTORE_YY_MORE_OFFSET \  | 
437  | 2  |     (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \  | 
438  | 2  |     YY_DO_BEFORE_ACTION; /* set up yytext again */ \  | 
439  | 2  |     } \  | 
440  | 2  |   while ( 0 )  | 
441  |  | #define unput(c) yyunput( c, (yytext_ptr)  )  | 
442  |  |  | 
443  |  | #ifndef YY_STRUCT_YY_BUFFER_STATE  | 
444  |  | #define YY_STRUCT_YY_BUFFER_STATE  | 
445  |  | struct yy_buffer_state  | 
446  |  |   { | 
447  |  |   FILE *yy_input_file;  | 
448  |  |  | 
449  |  |   char *yy_ch_buf;    /* input buffer */  | 
450  |  |   char *yy_buf_pos;   /* current position in input buffer */  | 
451  |  |  | 
452  |  |   /* Size of input buffer in bytes, not including room for EOB  | 
453  |  |    * characters.  | 
454  |  |    */  | 
455  |  |   int yy_buf_size;  | 
456  |  |  | 
457  |  |   /* Number of characters read into yy_ch_buf, not including EOB  | 
458  |  |    * characters.  | 
459  |  |    */  | 
460  |  |   int yy_n_chars;  | 
461  |  |  | 
462  |  |   /* Whether we "own" the buffer - i.e., we know we created it,  | 
463  |  |    * and can realloc() it to grow it, and should free() it to  | 
464  |  |    * delete it.  | 
465  |  |    */  | 
466  |  |   int yy_is_our_buffer;  | 
467  |  |  | 
468  |  |   /* Whether this is an "interactive" input source; if so, and  | 
469  |  |    * if we're using stdio for input, then we want to use getc()  | 
470  |  |    * instead of fread(), to make sure we stop fetching input after  | 
471  |  |    * each newline.  | 
472  |  |    */  | 
473  |  |   int yy_is_interactive;  | 
474  |  |  | 
475  |  |   /* Whether we're considered to be at the beginning of a line.  | 
476  |  |    * If so, '^' rules will be active on the next match, otherwise  | 
477  |  |    * not.  | 
478  |  |    */  | 
479  |  |   int yy_at_bol;  | 
480  |  |  | 
481  |  |     int yy_bs_lineno; /**< The line count. */  | 
482  |  |     int yy_bs_column; /**< The column count. */  | 
483  |  |  | 
484  |  |   /* Whether to try to fill the input buffer when we reach the  | 
485  |  |    * end of it.  | 
486  |  |    */  | 
487  |  |   int yy_fill_buffer;  | 
488  |  |  | 
489  |  |   int yy_buffer_status;  | 
490  |  |  | 
491  | 305  | #define YY_BUFFER_NEW 0  | 
492  | 5  | #define YY_BUFFER_NORMAL 1  | 
493  |  |   /* When an EOF's been seen but there's still some text to process  | 
494  |  |    * then we mark the buffer as YY_EOF_PENDING, to indicate that we  | 
495  |  |    * shouldn't try reading from the input source any more.  We might  | 
496  |  |    * still have a bunch of tokens to match, though, because of  | 
497  |  |    * possible backing-up.  | 
498  |  |    *  | 
499  |  |    * When we actually see the EOF, we change the status to "new"  | 
500  |  |    * (via yyrestart()), so that the user can continue scanning by  | 
501  |  |    * just pointing yyin at a new input file.  | 
502  |  |    */  | 
503  | 294  | #define YY_BUFFER_EOF_PENDING 2  | 
504  |  |  | 
505  |  |   };  | 
506  |  | #endif /* !YY_STRUCT_YY_BUFFER_STATE */  | 
507  |  |  | 
508  |  | /* Stack of input buffers. */  | 
509  |  | static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */  | 
510  |  | static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */  | 
511  |  | static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */  | 
512  |  |  | 
513  |  | /* We provide macros for accessing buffer states in case in the  | 
514  |  |  * future we want to put the buffer states in a more general  | 
515  |  |  * "scanner state".  | 
516  |  |  *  | 
517  |  |  * Returns the top of the stack, or NULL.  | 
518  |  |  */  | 
519  | 45  | #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \  | 
520  | 45  |                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \  | 
521  | 45  |                           : NULL)  | 
522  |  | /* Same as previous macro, but useful when we know that the buffer stack is not  | 
523  |  |  * NULL or when we need an lvalue. For internal use only.  | 
524  |  |  */  | 
525  | 498k  | #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]  | 
526  |  |  | 
527  |  | /* yy_hold_char holds the character lost when yytext is formed. */  | 
528  |  | static char yy_hold_char;  | 
529  |  | static int yy_n_chars;    /* number of characters read into yy_ch_buf */  | 
530  |  | int yyleng;  | 
531  |  |  | 
532  |  | /* Points to current character in buffer. */  | 
533  |  | static char *yy_c_buf_p = NULL;  | 
534  |  | static int yy_init = 0;   /* whether we need to initialize */  | 
535  |  | static int yy_start = 0;  /* start state number */  | 
536  |  |  | 
537  |  | /* Flag which is used to allow yywrap()'s to do buffer switches  | 
538  |  |  * instead of setting up a fresh yyin.  A bit of a hack ...  | 
539  |  |  */  | 
540  |  | static int yy_did_buffer_switch_on_eof;  | 
541  |  |  | 
542  |  | void yyrestart ( FILE *input_file  );  | 
543  |  | void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );  | 
544  |  | YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );  | 
545  |  | void yy_delete_buffer ( YY_BUFFER_STATE b  );  | 
546  |  | void yy_flush_buffer ( YY_BUFFER_STATE b  );  | 
547  |  | void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );  | 
548  |  | void yypop_buffer_state ( void );  | 
549  |  |  | 
550  |  | static void yyensure_buffer_stack ( void );  | 
551  |  | static void yy_load_buffer_state ( void );  | 
552  |  | static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );  | 
553  |  | #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )  | 
554  |  |  | 
555  |  | YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );  | 
556  |  | YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );  | 
557  |  | YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );  | 
558  |  |  | 
559  |  | void *yyalloc ( yy_size_t  );  | 
560  |  | void *yyrealloc ( void *, yy_size_t  );  | 
561  |  | void yyfree ( void *  );  | 
562  |  |  | 
563  |  | #define yy_new_buffer yy_create_buffer  | 
564  |  | #define yy_set_interactive(is_interactive) \  | 
565  |  |   { \ | 
566  |  |   if ( ! YY_CURRENT_BUFFER ){ \ | 
567  |  |         yyensure_buffer_stack (); \  | 
568  |  |     YY_CURRENT_BUFFER_LVALUE =    \  | 
569  |  |             yy_create_buffer( yyin, YY_BUF_SIZE ); \  | 
570  |  |   } \  | 
571  |  |   YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \  | 
572  |  |   }  | 
573  |  | #define yy_set_bol(at_bol) \  | 
574  | 2  |   { \ | 
575  | 2  |   if ( ! YY_CURRENT_BUFFER ){\ | 
576  | 0  |         yyensure_buffer_stack (); \  | 
577  | 0  |     YY_CURRENT_BUFFER_LVALUE =    \  | 
578  | 0  |             yy_create_buffer( yyin, YY_BUF_SIZE ); \  | 
579  | 0  |   } \  | 
580  | 2  |   YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \  | 
581  | 2  |   }  | 
582  | 247k  | #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)  | 
583  |  |  | 
584  |  | /* Begin user sect3 */  | 
585  |  |  | 
586  | 5  | #define sudoerswrap() (/*CONSTCOND*/1)  | 
587  |  | #define YY_SKIP_YYWRAP  | 
588  |  | typedef flex_uint8_t YY_CHAR;  | 
589  |  |  | 
590  |  | FILE *yyin = NULL, *yyout = NULL;  | 
591  |  |  | 
592  |  | typedef int yy_state_type;  | 
593  |  |  | 
594  |  | extern int yylineno;  | 
595  |  | int yylineno = 1;  | 
596  |  |  | 
597  |  | extern char *yytext;  | 
598  |  | #ifdef yytext_ptr  | 
599  |  | #undef yytext_ptr  | 
600  |  | #endif  | 
601  | 249k  | #define yytext_ptr yytext  | 
602  |  |  | 
603  |  | static yy_state_type yy_get_previous_state ( void );  | 
604  |  | static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );  | 
605  |  | static int yy_get_next_buffer ( void );  | 
606  |  | static void yynoreturn yy_fatal_error ( const char* msg  );  | 
607  |  |  | 
608  |  | /* Done after the current pattern has been matched and before the  | 
609  |  |  * corresponding action - sets up yytext.  | 
610  |  |  */  | 
611  |  | #define YY_DO_BEFORE_ACTION \  | 
612  | 247k  |   (yytext_ptr) = yy_bp; \  | 
613  | 247k  |   yyleng = (int) (yy_cp - yy_bp); \  | 
614  | 247k  |   (yy_hold_char) = *yy_cp; \  | 
615  | 247k  |   *yy_cp = '\0'; \  | 
616  | 247k  |   (yy_c_buf_p) = yy_cp;  | 
617  |  | #define YY_NUM_RULES 89  | 
618  | 349  | #define YY_END_OF_BUFFER 90  | 
619  |  | /* This struct is not used in this scanner,  | 
620  |  |    but its presence is necessary. */  | 
621  |  | struct yy_trans_info  | 
622  |  |   { | 
623  |  |   flex_int32_t yy_verify;  | 
624  |  |   flex_int32_t yy_nxt;  | 
625  |  |   };  | 
626  |  | static const flex_int16_t yy_accept[1242] =  | 
627  |  |     {   0, | 
628  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  | 
629  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  | 
630  |  |        90,   75,   85,   84,   88,   83,   74,   87,   46,   78,  | 
631  |  |        79,   46,   80,   75,   75,   75,   75,   82,   81,   88,  | 
632  |  |        75,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
633  |  |        64,   64,   64,   64,   64,   88,   75,   75,   75,   85,  | 
634  |  |        87,   64,   64,   64,   64,   64,    2,   88,    1,   75,  | 
635  |  |        64,   64,   64,   64,   75,   75,   17,   16,   16,   17,  | 
636  |  |        16,   16,   88,   21,   21,   19,   19,   21,   19,   20,  | 
637  |  |        88,   87,   88,    3,    9,    8,    9,    4,    9,    5,  | 
638  |  |  | 
639  |  |        88,   13,   13,   13,   11,   12,   88,   23,   23,   22,  | 
640  |  |        22,   22,   23,   22,   22,   22,   22,   23,   23,   23,  | 
641  |  |        23,   23,   23,   23,   88,   22,   23,   23,   76,   76,  | 
642  |  |        77,   76,   71,   71,   71,   71,   71,   71,   71,   64,  | 
643  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
644  |  |        88,   71,   71,   71,   75,    0,   85,   84,   83,   87,  | 
645  |  |        87,    0,    0,   75,   48,    0,   46,    0,   47,    0,  | 
646  |  |        72,   72,    0,   75,   75,    0,   75,   75,   75,   75,  | 
647  |  |         0,   51,   75,   64,   64,   64,   64,   64,   64,   64,  | 
648  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
649  |  |  | 
650  |  |        64,   64,    0,   86,   75,   75,   75,    0,   73,    0,  | 
651  |  |        75,   75,   85,    0,    0,    0,    0,    0,   87,   75,  | 
652  |  |        75,   75,   75,   75,    2,    1,    0,    1,   65,   65,  | 
653  |  |         0,   64,   75,    0,   65,    0,   75,   17,   17,   15,  | 
654  |  |         0,   14,   15,   21,   21,   21,   18,   18,    0,    3,  | 
655  |  |         9,    0,    6,    7,    9,    9,   13,    0,   13,   13,  | 
656  |  |         0,   10,    0,   48,    0,    0,   47,   23,   23,    0,  | 
657  |  |        23,    0,    0,   22,   22,   22,   22,   22,   22,   23,  | 
658  |  |        23,   64,   23,   23,   23,   23,   23,   23,   23,   23,  | 
659  |  |        73,    0,   23,   23,   76,   76,   76,   71,    0,   48,  | 
660  |  |  | 
661  |  |         0,   47,    0,   71,   71,    0,   71,   71,   71,   71,  | 
662  |  |        71,   71,   64,   64,   64,   64,   64,   64,   64,   64,  | 
663  |  |        64,   64,   64,   71,   71,   71,   71,    0,   71,   71,  | 
664  |  |        87,   87,   87,    0,   48,   75,   75,   75,   75,   75,  | 
665  |  |         0,    0,   51,   51,   75,   64,   53,   64,   64,   57,  | 
666  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
667  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
668  |  |        73,   75,   75,   75,    0,    0,    0,    0,    0,   87,  | 
669  |  |        75,   75,   75,   75,   75,   75,    0,   65,    0,   65,  | 
670  |  |        75,   75,   10,    0,    0,    0,   22,   22,   22,   23,  | 
671  |  |  | 
672  |  |        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,  | 
673  |  |        23,   23,   23,   23,   73,   23,   23,    0,   71,   71,  | 
674  |  |        71,   71,   71,   64,   53,   64,   64,   64,   64,   64,  | 
675  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   71,  | 
676  |  |        71,   71,   71,   87,   87,   87,   75,   75,   75,   75,  | 
677  |  |        75,   75,    0,   52,   52,   52,    0,    0,   51,   51,  | 
678  |  |        51,   51,   51,   51,   51,   75,   64,   64,   64,   64,  | 
679  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
680  |  |        64,   64,   64,   64,   64,   64,   59,   64,   64,   60,  | 
681  |  |        75,   75,   75,   75,    0,    0,    0,    0,    0,    0,  | 
682  |  |  | 
683  |  |        87,   75,   75,   75,   65,   75,    0,    0,    0,    0,  | 
684  |  |         0,   22,   22,   23,   23,   23,   64,   23,   23,   23,  | 
685  |  |        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,  | 
686  |  |        23,   71,   71,   71,   71,   71,   71,   64,   64,   64,  | 
687  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
688  |  |        64,   64,   71,   71,   71,   71,   75,   75,   75,    0,  | 
689  |  |         0,   52,   52,   52,    0,   51,   51,    0,   51,   51,  | 
690  |  |        51,   51,   51,   51,   51,   51,   51,   51,   51,   75,  | 
691  |  |        64,   64,    0,   33,   64,   64,   64,   64,   64,    0,  | 
692  |  |        42,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
693  |  |  | 
694  |  |        64,   62,   64,   64,   75,   75,   75,   75,   75,    0,  | 
695  |  |         0,    0,   87,   75,   75,   75,    0,    0,    0,   22,  | 
696  |  |        22,   23,   23,   64,   64,   23,   23,   23,   23,   23,  | 
697  |  |        23,   23,   23,   23,   23,   23,   23,   23,   23,   71,  | 
698  |  |        71,   71,   64,   64,   64,   64,   64,   64,   64,   64,  | 
699  |  |        64,   64,   64,   64,   64,   71,   71,   71,   71,   71,  | 
700  |  |        75,   75,   75,   75,   75,    0,   52,    0,   51,   51,  | 
701  |  |        51,    0,    0,    0,   51,   51,   51,   51,   51,   51,  | 
702  |  |        51,   51,   51,   51,   51,   51,   51,   75,   64,   58,  | 
703  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
704  |  |  | 
705  |  |        64,   64,   64,   64,   64,   64,   64,   66,   67,   68,  | 
706  |  |        69,   75,    0,    0,   87,   75,   75,   75,    0,    0,  | 
707  |  |         0,    0,    0,   23,   23,   64,   64,   23,   23,   23,  | 
708  |  |        64,   23,   23,   23,   23,   23,   23,   23,   23,   23,  | 
709  |  |        23,   71,   71,   71,   71,   71,   64,   64,   64,   64,  | 
710  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   66,  | 
711  |  |        67,   68,   69,   71,   49,   49,   49,    0,    0,   51,  | 
712  |  |        51,   51,   51,   51,   51,   51,    0,    0,    0,    0,  | 
713  |  |         0,   51,   51,   51,   51,   51,   51,   51,   51,   51,  | 
714  |  |        51,   51,   51,   51,   51,   75,   64,    0,   44,   64,  | 
715  |  |  | 
716  |  |        64,   64,   64,    0,   32,   64,   64,   64,   64,    0,  | 
717  |  |        43,   64,   64,   64,   64,    0,   31,    0,   36,   54,  | 
718  |  |        75,    0,    0,   87,   75,   75,   75,   49,   49,   49,  | 
719  |  |        23,   64,   64,   23,   23,   64,   64,   23,   23,   23,  | 
720  |  |        49,   49,   49,   64,   64,   64,   64,   64,   64,   64,  | 
721  |  |        64,   64,   71,   75,   49,   49,   49,   49,    0,   51,  | 
722  |  |         0,   51,   51,   51,   51,   51,   51,   51,   51,   51,  | 
723  |  |        51,   51,    0,    0,    0,   51,   51,   51,   51,   51,  | 
724  |  |        51,   51,   51,   51,   51,   51,   51,   51,   24,   64,  | 
725  |  |        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,  | 
726  |  |  | 
727  |  |        56,   64,   70,    0,    0,   87,   75,   28,   65,    0,  | 
728  |  |        49,   49,   49,   49,   23,   64,   64,   23,   23,   64,  | 
729  |  |        64,   23,   23,   23,   71,   49,   49,   49,   49,   64,  | 
730  |  |        64,   64,   64,   64,   64,   64,   64,   64,   70,   50,  | 
731  |  |        50,   50,   50,   51,    0,    0,    0,   51,   51,   51,  | 
732  |  |        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,  | 
733  |  |         0,    0,    0,    0,    0,   51,   51,   51,   51,   51,  | 
734  |  |        51,   51,   51,   75,   64,   64,   64,   64,   64,    0,  | 
735  |  |        45,   64,   64,   64,    0,   30,    0,   37,   55,    0,  | 
736  |  |        28,   26,   87,   29,    0,   75,   50,   50,   50,   50,  | 
737  |  |  | 
738  |  |        23,   64,   64,   23,   64,   64,   50,   50,   50,   50,  | 
739  |  |        64,   64,   64,   64,   64,   64,   75,   75,   50,   50,  | 
740  |  |        50,   50,    0,    0,    0,    0,    0,   51,   51,   51,  | 
741  |  |        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,  | 
742  |  |        51,   51,   51,   51,   51,   51,   51,   75,   64,    0,  | 
743  |  |        34,   63,    0,   40,   64,   64,   64,   64,   29,   26,  | 
744  |  |        26,   26,   26,   87,   28,    0,    0,    0,    0,    0,  | 
745  |  |        28,    0,    0,    0,   50,   50,   50,   50,   64,   23,  | 
746  |  |        64,   64,   71,   71,   50,   50,   50,   50,   64,   64,  | 
747  |  |        64,   64,   75,   75,   75,    0,    0,    0,   51,   51,  | 
748  |  |  | 
749  |  |        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,  | 
750  |  |        51,   51,   51,   51,   51,   51,   25,   64,    0,   38,  | 
751  |  |        64,   64,   64,   26,   87,    0,   28,    0,    0,    0,  | 
752  |  |        23,   64,   64,   71,   71,   71,   64,   64,   64,   75,  | 
753  |  |        75,   75,   75,   75,    0,    0,    0,    0,    0,   51,  | 
754  |  |        51,   51,   51,   51,   51,   51,   51,   64,    0,   35,  | 
755  |  |         0,   41,   64,   27,    0,    0,    0,    0,    0,   64,  | 
756  |  |        71,   71,   71,   71,   71,   64,   75,   75,   75,   51,  | 
757  |  |        51,   51,   51,   51,   51,   64,    0,   39,   27,   27,  | 
758  |  |        27,   27,    0,    0,    0,   71,   71,   71,   75,   75,  | 
759  |  |  | 
760  |  |        75,   75,   75,   51,   51,   51,   51,   51,   64,   27,  | 
761  |  |         0,    0,    0,    0,    0,   71,   71,   71,   71,   71,  | 
762  |  |        49,   49,   49,   64,   49,   49,   49,   49,   49,   49,  | 
763  |  |        49,   49,   49,   61,   49,   49,   49,   49,   49,   49,  | 
764  |  |         0  | 
765  |  |     } ;  | 
766  |  |  | 
767  |  | static const YY_CHAR yy_ec[256] =  | 
768  |  |     {   0, | 
769  |  |         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,  | 
770  |  |         4,    4,    5,    1,    1,    1,    1,    1,    1,    1,  | 
771  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
772  |  |         1,    6,    7,    8,    9,   10,   11,    1,    1,   12,  | 
773  |  |        13,   14,   15,   16,   17,   18,   19,   20,   21,   22,  | 
774  |  |        23,   24,   25,   26,   27,   28,   29,   30,    1,    1,  | 
775  |  |        31,   32,   14,   33,   34,   35,   36,   37,   38,   39,  | 
776  |  |        40,   41,   42,   43,   43,   44,   45,   46,   47,   48,  | 
777  |  |        43,   49,   50,   51,   52,   53,   54,   55,   56,   43,  | 
778  |  |        14,   57,   14,   58,   59,    1,   60,   61,   62,   63,  | 
779  |  |  | 
780  |  |        64,   65,   66,   67,   68,   66,   66,   69,   70,   71,  | 
781  |  |        72,   66,   66,   73,   74,   75,   76,   66,   66,   66,  | 
782  |  |        66,   66,    1,    1,    1,    1,    1,    1,    1,    1,  | 
783  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
784  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
785  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
786  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
787  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
788  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
789  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
790  |  |  | 
791  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
792  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
793  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
794  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
795  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
796  |  |         1,    1,    1,    1,    1  | 
797  |  |     } ;  | 
798  |  |  | 
799  |  | static const YY_CHAR yy_meta[77] =  | 
800  |  |     {   0, | 
801  |  |         1,    2,    3,    4,    3,    2,    5,    6,    7,    8,  | 
802  |  |         1,    9,    9,    1,   10,   11,    1,   12,   13,   14,  | 
803  |  |        14,   14,   14,   14,   14,   14,   14,   14,   14,   15,  | 
804  |  |        16,    9,    1,   14,   14,   14,   14,   14,   14,   17,  | 
805  |  |        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,  | 
806  |  |        17,   17,   17,   17,   17,   17,   18,    1,   19,   20,  | 
807  |  |        20,   20,   20,   20,   20,   21,   21,   21,   21,   21,  | 
808  |  |        21,   21,   21,   21,   21,   21  | 
809  |  |     } ;  | 
810  |  |  | 
811  |  | static const flex_int16_t yy_base[1366] =  | 
812  |  |     {   0, | 
813  |  |         0,   75,  126,  199,   83,   91,   99,  180,  272,  347,  | 
814  |  |       422,  478,  131,  147,  535,    0,  189,  219,  611,    0,  | 
815  |  |      6517, 6458,   76, 9534, 6501, 6471, 9534,  685,  101, 9534,  | 
816  |  |      9534, 6409, 9534,  199,  697,  238,  143, 6428, 9534, 9534,  | 
817  |  |        23,  762,   35,  103,   71,  132,  819, 6411,   76, 6422,  | 
818  |  |      6385,  112, 6373, 6374,   61,  883,  914,  262,  152,  266,  | 
819  |  |       969,  251,  166, 6339,  122, 6336,  197,  338,  123,  369,  | 
820  |  |      6350, 6335, 6334, 6344, 1036,  177,    0, 9534, 6364, 6335,  | 
821  |  |      9534,    0, 1092,    0,  214, 9534, 6338, 6331, 9534, 9534,  | 
822  |  |       236, 1148,  249,    0, 6280, 9534,  239, 9534,  240, 9534,  | 
823  |  |  | 
824  |  |       306, 6245,  311,  262, 9534,  320,  172, 1177, 1236, 1281,  | 
825  |  |       363,  349, 1340, 1391, 6257,   86,  254, 1448, 6231, 6215,  | 
826  |  |      6227, 6200, 6212, 6207,  294,  422,    0,  173, 6187,  323,  | 
827  |  |      9534,  397, 6180,  348, 6168,  450, 1496,  444,  373, 1561,  | 
828  |  |      6135,  272,  388, 1618, 6117, 6113, 6125, 6109, 6121, 6114,  | 
829  |  |      1682, 1713,  490,  421, 6089,  737,  304, 9534, 6138,  168,  | 
830  |  |      9534, 6141,  500,  671, 6086,  848,  446,  926, 6085,  971,  | 
831  |  |       893, 6064, 1769,  984, 1784, 6077, 6088,  939,  994,  887,  | 
832  |  |      6075,  422,  243, 1849, 1906, 6050, 6034, 6002, 6013, 5988,  | 
833  |  |      5981, 5972, 5966, 5970, 5967, 1012, 5912, 5905, 5900, 5892,  | 
834  |  |  | 
835  |  |      5894, 5885,  496, 9534,  376, 1022, 1970,  449, 5868, 1024,  | 
836  |  |       417,  433, 1033, 5854, 5859, 5849, 5841, 5839,  847,  684,  | 
837  |  |       683,  418,  434,  673,  935,  318, 1089,  454, 1064, 5850,  | 
838  |  |      2026, 1086, 2057,  694, 5842, 1078,  707,    0, 5891,  528,  | 
839  |  |      5894, 9534, 9534,    0,  498, 5862, 9534, 1135, 1134,    0,  | 
840  |  |      5801, 1184, 9534, 9534, 5792, 1140, 5772, 5820,  860,  682,  | 
841  |  |      1177,  750, 5822,  943, 1075, 1250, 5767, 2114,    0, 1377,  | 
842  |  |      2173, 1196, 1196, 2215, 5793, 1250, 1263, 1208, 2266, 2323,  | 
843  |  |      5759,    0, 5764, 5757, 5732, 5726, 5715, 1451, 5705, 5692,  | 
844  |  |      9534, 1021, 5670, 5664, 5669,  891,  721, 5667, 1536, 5655,  | 
845  |  |  | 
846  |  |      1725, 5654, 1756, 1660, 5646, 2387, 1679, 2402, 5670, 1769,  | 
847  |  |      1804, 1374, 2467, 2524, 5629, 5634, 5619, 5555, 5550, 5541,  | 
848  |  |      1621, 5532, 5528,  737, 1746, 2588, 5516, 1194,  714,  841,  | 
849  |  |       431,  856,  944, 1926, 1936, 2628, 2668, 2708, 2746, 5552,  | 
850  |  |      5529, 2792,  910, 2839,  866, 2904, 2961, 5517, 5503,    0,  | 
851  |  |      5511, 5489, 5494, 5489, 5436, 5450, 5438, 5445, 5424, 5392,  | 
852  |  |      5404, 5380, 5375,  259, 5361, 5346, 5360, 5359, 5290, 5288,  | 
853  |  |      3025, 3081, 1184,  830,   24, 5240, 5230, 5232, 5238, 1042,  | 
854  |  |       896,  912, 5235,  718,  925,  821, 1979, 9534, 1043, 3137,  | 
855  |  |      3193,  983,  858, 1993, 2023, 2054, 3231, 5269, 3282, 3339,  | 
856  |  |  | 
857  |  |      5250, 5241, 5246, 5181, 5195, 5183, 5165, 5154, 5145, 5157,  | 
858  |  |      5156, 5126, 5102, 5106, 1063, 1036, 5071, 2089, 3387, 3427,  | 
859  |  |      3467, 3507, 5079, 3553,    0, 5048, 5027, 5031, 5008, 4998,  | 
860  |  |      4976, 4970, 4935, 4932, 4930, 4929, 4911, 4897, 4883, 3617,  | 
861  |  |      3673, 1480, 1018, 9534, 1086, 1124, 2113,  160, 3713, 3753,  | 
862  |  |      1969,  708, 4889, 4884, 2128, 1239, 4880, 4869,  924,  951,  | 
863  |  |      3793, 2139, 1814, 3840, 2174, 1050, 3905, 1103,  889, 1183,  | 
864  |  |      1056, 1117, 1308, 1508, 1498, 1342, 1208, 1341, 1062, 1449,  | 
865  |  |      1114, 1464, 1109, 1343, 1394, 1215, 4857, 1234, 1137, 4849,  | 
866  |  |      1366, 1008, 1506, 1424, 4818, 4813, 4815, 4786, 4792, 4778,  | 
867  |  |  | 
868  |  |      1671,   86, 1516, 1240, 1330, 1472, 2187, 4814, 2199, 2237,  | 
869  |  |      2079, 3962, 4013, 4088, 2006, 2060, 1522, 1716, 2367, 2368,  | 
870  |  |      1973, 2361, 2374, 2404, 2405, 2444, 2562, 1189, 4798, 4793,  | 
871  |  |      4742, 2549, 1536, 4136, 4176, 2603, 1450, 4775, 1850, 4757,  | 
872  |  |      4708, 1628, 2268, 4698, 4691, 4682, 4687, 4676, 4660, 4658,  | 
873  |  |      4654, 4647, 1636, 1682, 1629, 1483, 4216, 4256, 4296, 4625,  | 
874  |  |      4624, 2609, 4605, 4584, 4583, 4575,  969, 2641, 1824, 2651,  | 
875  |  |      2066, 4336,    0, 2592, 4384, 2678, 2688, 4431, 2720, 1494,  | 
876  |  |      1268, 1728, 2442, 9534, 1681, 1717, 1679, 1720, 1810, 2443,  | 
877  |  |      9534, 1724, 1698, 1468, 1966, 1729, 1647, 1686, 1954, 1967,  | 
878  |  |  | 
879  |  |      1821, 4534, 1977, 2041, 1759, 1758, 1980, 1517, 1798, 4489,  | 
880  |  |      4446, 4424, 2103, 2053, 2054, 1966, 2732, 2768, 2814, 4460,  | 
881  |  |      4459, 2445, 2877, 4442, 4430, 2880, 2999, 2842, 3000, 3006,  | 
882  |  |      3012, 2879, 3009, 2882, 4448, 4445, 4440, 4441, 4399, 4479,  | 
883  |  |      4519, 4559, 4389, 4389, 4371, 4364, 4333, 4324, 4329, 4287,  | 
884  |  |      4300, 4265, 4274, 4274, 4257, 2037, 2029, 2089, 1916, 1997,  | 
885  |  |      2694, 2050, 4599, 4639, 3043, 4257, 4242, 4240, 4217, 4677,  | 
886  |  |      2097, 2869, 3051, 3081, 2159, 2253, 2336, 3094, 2360, 4725,  | 
887  |  |         0, 3106, 4773, 3134, 3150, 4820, 3158, 2112, 2082, 4202,  | 
888  |  |      2577, 1827, 2199, 2096, 2216, 3014, 2146, 2326, 2226, 3135,  | 
889  |  |  | 
890  |  |      1944, 2188, 2334, 2252, 3186, 3187, 2351, 4173, 4135, 4111,  | 
891  |  |      4098, 2314, 4078, 4077, 2577, 2385, 2358, 2401, 3206, 4111,  | 
892  |  |      3218, 3253, 3190, 3284, 3387, 4073, 4055, 3388, 3389, 3390,  | 
893  |  |      2366, 3427, 3428, 3429, 3435, 3436,    0,    0,    0,    0,  | 
894  |  |      4003, 3480, 2125, 4868, 4908, 3456, 3467, 4008, 3997, 3979,  | 
895  |  |      3508, 3973, 3869, 2367, 3509, 3863, 3868, 3510, 3517, 3856,  | 
896  |  |      3854, 3838, 3835, 2498, 4947, 4986, 5025, 3861, 3843, 3821,  | 
897  |  |      3359, 5065, 3528, 3538, 5111, 3575, 3614, 3808, 3632, 3644,  | 
898  |  |      3587, 2537, 2572, 2974, 3030, 3670, 3066, 5159,    0, 3688,  | 
899  |  |      5207, 3699, 3723, 5254, 3731, 2419, 5319, 3759, 9534, 2275,  | 
900  |  |  | 
901  |  |      2756, 1190, 2412, 3760, 9534, 2403,  667, 2319, 2592, 3761,  | 
902  |  |      9534, 2406, 2068, 3776, 3758, 3762, 9534, 3794, 9534, 3745,  | 
903  |  |      2524, 3725, 3675, 2759, 2624, 2585, 2776, 3814, 3861, 3983,  | 
904  |  |      5381, 3680, 3668, 2549, 2557, 3669, 3649, 2610, 2634, 3625,  | 
905  |  |      5439, 5478, 5517, 5574, 2752, 3598, 2955, 2691, 1603, 2797,  | 
906  |  |      2980, 2858, 2977, 4075, 2073, 5632, 5671, 4114, 3614, 3601,  | 
907  |  |      4152, 2769, 4162, 2989, 5711,    0, 4188, 5724, 4199, 3763,  | 
908  |  |      5770, 4228, 4240, 4268, 4280, 3021, 3028, 3116, 3269, 4306,  | 
909  |  |      3442, 5818,    0, 4318, 5866, 4356, 3781, 4406, 3029, 5931,  | 
910  |  |      2506, 3089, 2994, 3081, 4479, 2787, 3022, 3139, 4519, 4559,  | 
911  |  |  | 
912  |  |      3563, 2812, 3529, 3525, 3492, 3844, 3147, 3864, 3508, 4366,  | 
913  |  |      3502, 4491, 4531, 3994, 5993, 3466, 3416, 3842, 1729, 3415,  | 
914  |  |      3395, 4560, 4561,    0, 4572, 2744, 6051, 6090, 4417, 6147,  | 
915  |  |      3371, 2428, 4600, 3113, 2962, 3347, 4601, 4602, 3314, 6206,  | 
916  |  |      6246, 6286, 6326, 3218, 4506, 4615, 4651, 3192, 3189, 3219,  | 
917  |  |      4661, 3254, 6366,    0, 4699, 6379, 4745, 4120, 6425, 4795,  | 
918  |  |      4755, 3114, 4842, 4880, 4455, 3147, 3270, 3602, 2759, 3178,  | 
919  |  |      6473,    0, 4550, 3364, 3535, 4918, 3347, 4921, 3411, 3906,  | 
920  |  |      9534, 3628, 3412, 3629, 4229, 9534, 4269, 9534, 2995, 2920,  | 
921  |  |      3765, 3421, 3215, 2813, 4936, 4976, 4932, 4974, 4998, 5037,  | 
922  |  |  | 
923  |  |      4823, 4726, 2796, 3047, 2772, 2754, 6485, 6525, 6565, 6605,  | 
924  |  |      4911, 5026, 2728, 3392, 3211, 3435, 5085, 3134, 6645, 6685,  | 
925  |  |      5016, 3410, 5095, 2706, 5133, 5181, 5145, 2653, 2613, 3633,  | 
926  |  |      3684, 5227, 3699, 6725,    0, 5276, 6738, 5237, 4625, 6784,  | 
927  |  |      5451, 5462, 5489, 5500, 3880, 2590, 3321, 2863, 3750, 4728,  | 
928  |  |      9534, 2411, 4909, 9534, 5528, 3467, 3970, 3793, 9534, 1934,  | 
929  |  |      4164, 9534, 3367, 4342, 5547, 5660, 5668, 5699, 5540, 5319,  | 
930  |  |      5707, 5906, 5658, 2403, 5747, 5792, 5193, 2359, 4910, 2196,  | 
931  |  |      2137, 1988, 5839, 3588, 6832, 6872, 5852, 3751, 5820, 1948,  | 
932  |  |      1830, 3447, 6912, 6952, 6992, 6063, 6075, 6102, 1787, 1666,  | 
933  |  |  | 
934  |  |      4075, 4089, 6112, 4177, 7032,    0, 6218, 7045, 6229, 4966,  | 
935  |  |      6258, 1645, 6269, 6297, 5288, 1558, 1440, 4170, 4916, 9534,  | 
936  |  |      5546, 5904, 4069, 9534, 4481, 6307, 6336, 6348, 6401, 6447,  | 
937  |  |      5910, 5066, 1398, 7093, 7133, 7173, 6514, 6525, 1288, 6512,  | 
938  |  |      3880, 7213, 7253, 6501, 6575, 1183, 6587, 6617, 6413, 1096,  | 
939  |  |      1034, 4640, 1014,  885, 6629,    0, 4323, 3525, 5068, 9534,  | 
940  |  |      5821, 9534, 6618, 4689, 6658,  833, 6670, 6697, 6459, 6147,  | 
941  |  |      6712, 4013, 7293, 7333, 6760, 6784, 7373, 7413, 7453, 6804,  | 
942  |  |      6842, 6852,  699,    0,  514, 3256, 6148, 9534, 3517, 4825,  | 
943  |  |      9534, 3623, 6884, 6896, 6924, 7493, 7533, 7573, 6934, 4073,  | 
944  |  |  | 
945  |  |      7613, 7653, 6965, 9534, 6972, 7003, 5698, 9534, 2225, 9534,  | 
946  |  |      7013,  471, 7067, 7105, 6539, 7115, 4074, 7693, 7733, 7146,  | 
947  |  |      7153, 7191, 7229, 3226, 7239, 7267, 7277, 7306, 7316, 7354,  | 
948  |  |       404, 7392, 7164,  316, 9534, 7430, 5757,  179, 7440, 7346,  | 
949  |  |      9534, 7790, 7811, 7832, 7853, 7874, 7895, 7916, 7937, 7958,  | 
950  |  |      7979, 8000, 4595, 8021, 8042, 8063, 8084, 8105, 8126, 3974,  | 
951  |  |      8147, 8168, 8189, 8210, 8231, 8252, 8273, 8294, 8315, 8336,  | 
952  |  |      8357, 8378, 8399, 8420, 8441, 8462, 8483, 8504, 8525, 8546,  | 
953  |  |      4711, 4858, 8555, 8575, 8596, 8617, 8638, 8659, 8680, 8701,  | 
954  |  |      8722, 4195, 8743, 8764, 8785, 8806, 8818, 8839, 5061, 8860,  | 
955  |  |  | 
956  |  |      8881, 8902, 8923, 8944, 8965, 8986, 9007, 9028, 9049, 5015,  | 
957  |  |      9058, 9078, 9099, 9120, 9141, 5557, 5566, 5900, 9150, 9158,  | 
958  |  |      9178, 9199, 5062, 6245, 6285, 6325, 9208, 9217, 6365, 6552,  | 
959  |  |      6559, 9225, 9234, 6773, 6777, 9242, 9251, 9271, 5308, 9283,  | 
960  |  |      9304, 6822, 9314, 9322, 9331, 9351, 6561, 9363, 9384, 6868,  | 
961  |  |      9394, 9402, 9411, 9431, 9452, 9473, 6871, 9483, 5651, 6951,  | 
962  |  |      9492, 6988, 5690, 9512, 3664  | 
963  |  |     } ;  | 
964  |  |  | 
965  |  | static const flex_int16_t yy_def[1366] =  | 
966  |  |     {   0, | 
967  |  |      1241,    1,    1,    1, 1242, 1242, 1243, 1243, 1244, 1244,  | 
968  |  |      1245, 1245, 1246, 1246, 1241,   15, 1247, 1247, 1241,   19,  | 
969  |  |      1241, 1248, 1241, 1241, 1241, 1241, 1241, 1249, 1250, 1241,  | 
970  |  |      1241, 1251, 1241, 1252, 1248,   35,   35, 1253, 1241, 1241,  | 
971  |  |      1248, 1241,   42,   42,   42,   42,   42,   47,   47,   47,  | 
972  |  |        47,   47,   47,   47,   47, 1248, 1254,   35, 1248, 1241,  | 
973  |  |      1249,   42,   42,   47,   47,   47, 1241, 1241, 1241, 1255,  | 
974  |  |        42,   47,   47,   47, 1256, 1248, 1257, 1241, 1241, 1257,  | 
975  |  |      1241, 1257, 1241, 1258, 1258, 1241, 1241, 1258, 1241, 1241,  | 
976  |  |      1259, 1249, 1241, 1260, 1261, 1241, 1261, 1241, 1261, 1241,  | 
977  |  |  | 
978  |  |      1262, 1263, 1263, 1263, 1241, 1241, 1264, 1265, 1266, 1241,  | 
979  |  |       110,  110,  110, 1241,  114,  114,  114,  114,  118,  118,  | 
980  |  |       118,  118,  118,  118, 1267,  110,  113,  113, 1268, 1268,  | 
981  |  |      1241, 1268, 1269, 1270, 1271, 1272, 1269,  137,  137, 1241,  | 
982  |  |       140,  140,  140,  140,  144,  144,  144,  144,  144,  144,  | 
983  |  |      1269, 1273,  137, 1269, 1274, 1274, 1241, 1241, 1241, 1275,  | 
984  |  |      1241, 1241, 1276, 1241, 1277, 1241, 1264, 1277, 1278, 1278,  | 
985  |  |      1279, 1280, 1274, 1274, 1274, 1281,  175,  175,  175,  175,  | 
986  |  |      1282, 1283, 1274, 1241,  184,  185,  185,  185,  185,  185,  | 
987  |  |       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,  | 
988  |  |  | 
989  |  |       185,  185, 1241, 1241, 1274, 1274, 1284, 1285, 1274, 1284,  | 
990  |  |      1274, 1274, 1241, 1241, 1241, 1241, 1241, 1241, 1275, 1274,  | 
991  |  |       175, 1274, 1274, 1274, 1241, 1241, 1241, 1241, 1286, 1287,  | 
992  |  |      1274,  185, 1288, 1289, 1274, 1288, 1274, 1290, 1290, 1241,  | 
993  |  |      1241, 1241, 1241, 1291, 1291, 1291, 1241, 1241, 1276, 1292,  | 
994  |  |      1293, 1293, 1241, 1241, 1293, 1293, 1294, 1241, 1294, 1294,  | 
995  |  |      1241, 1241, 1241, 1264, 1264, 1264, 1295, 1296, 1297, 1295,  | 
996  |  |      1298, 1241, 1241, 1297,  274,  274,  274,  274, 1241,  279,  | 
997  |  |       280, 1299,  280,  280,  280,  280,  280,  280,  280,  280,  | 
998  |  |      1241, 1285, 1297, 1297, 1300, 1300, 1300, 1301, 1301, 1302,  | 
999  |  |  | 
1000  |  |      1302, 1303, 1303, 1304, 1305, 1301, 1301, 1301,  308,  308,  | 
1001  |  |       308,  308, 1241,  313,  314,  314,  314,  314,  314,  314,  | 
1002  |  |       314,  314,  314, 1301, 1301, 1306, 1301, 1306, 1301, 1301,  | 
1003  |  |      1307, 1307, 1308, 1241, 1241, 1309, 1309, 1309, 1309,  339,  | 
1004  |  |      1310, 1241, 1311, 1241, 1309, 1241,  346,  347,  347,  347,  | 
1005  |  |       347,  347,  347,  347,  347,  347,  347,  347,  347,  347,  | 
1006  |  |       347,  347,  347,  347,  347,  347,  347,  347,  347,  347,  | 
1007  |  |      1312, 1312, 1309, 1309, 1241, 1241, 1241, 1241, 1241, 1307,  | 
1008  |  |      1309, 1309,  339, 1309, 1309, 1309, 1241, 1241, 1313, 1314,  | 
1009  |  |      1314, 1309, 1241, 1241, 1241, 1241, 1297,  397, 1241,  399,  | 
1010  |  |  | 
1011  |  |       400,  400,  400,  400,  400,  400,  400,  400,  400,  400,  | 
1012  |  |       400,  400,  400,  400, 1315, 1297, 1297, 1241, 1301, 1301,  | 
1013  |  |      1301,  308,  422,  313,  314,  314,  314,  314,  314,  314,  | 
1014  |  |       314,  314,  314,  314,  314,  314,  314,  314,  314, 1306,  | 
1015  |  |      1306, 1301, 1301, 1241, 1308, 1308, 1309, 1309, 1309, 1309,  | 
1016  |  |      1309, 1309, 1316, 1317, 1317,  455, 1318, 1317, 1319, 1320,  | 
1017  |  |      1241,  461,  461, 1241,  461, 1309, 1241,  467,  467,  467,  | 
1018  |  |       467,  467,  467,  467,  467,  467,  467,  467,  467,  467,  | 
1019  |  |       467,  467,  467,  467,  467,  467,  467,  467,  467,  467,  | 
1020  |  |      1309, 1309, 1309, 1309, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1021  |  |  | 
1022  |  |      1321, 1309, 1309, 1309, 1322, 1309, 1241, 1241, 1241, 1241,  | 
1023  |  |      1241, 1297, 1241,  513,  514,  514, 1323,  514,  514,  514,  | 
1024  |  |       514,  514,  514,  514,  514,  514,  514, 1297, 1297, 1297,  | 
1025  |  |      1297, 1301, 1301, 1301, 1301, 1301, 1301,  314,  314,  314,  | 
1026  |  |       314,  314,  314,  314,  314,  314,  314,  314,  314,  314,  | 
1027  |  |       314,  314, 1301, 1301, 1301, 1301, 1309, 1309, 1309, 1241,  | 
1028  |  |      1324, 1324,  562, 1324, 1325, 1326, 1327, 1241, 1328,  464,  | 
1029  |  |      1328, 1241,  572, 1328, 1241,  575,  575, 1241,  575, 1309,  | 
1030  |  |       467,  467, 1241, 1241,  467,  467,  467,  467,  467, 1241,  | 
1031  |  |      1241,  467,  467,  467,  467,  467,  467,  467,  467,  467,  | 
1032  |  |  | 
1033  |  |       467,  467,  467,  467, 1309, 1309, 1309, 1309, 1309, 1241,  | 
1034  |  |      1241, 1241, 1321, 1309, 1309, 1309, 1241, 1241, 1241,  512,  | 
1035  |  |       513,  514,  514, 1323, 1323,  514,  514,  514,  514,  514,  | 
1036  |  |       514,  514,  514,  514, 1297, 1297, 1297, 1297, 1297, 1301,  | 
1037  |  |      1301, 1301,  314,  314,  314,  314,  314,  314,  314,  314,  | 
1038  |  |       314,  314,  314,  314,  314, 1301, 1301, 1301, 1301, 1301,  | 
1039  |  |      1309, 1309, 1309, 1309, 1309, 1329, 1329, 1330, 1331, 1241,  | 
1040  |  |      1241, 1241, 1241, 1241, 1332, 1332, 1333,  578, 1333, 1241,  | 
1041  |  |       680, 1333, 1241,  683,  683, 1241,  683, 1309,  467,  467,  | 
1042  |  |       467,  467,  467,  467,  467,  467,  467,  467,  467,  467,  | 
1043  |  |  | 
1044  |  |       467,  467,  467,  467,  467,  467,  467, 1309, 1309, 1309,  | 
1045  |  |      1309, 1309, 1241, 1241, 1321, 1309, 1309, 1309, 1241, 1241,  | 
1046  |  |      1241, 1241, 1241,  514,  514, 1323, 1323,  514,  514,  514,  | 
1047  |  |      1323,  514,  514,  514,  514,  514, 1297, 1297, 1297, 1297,  | 
1048  |  |      1297, 1301, 1301, 1301, 1301, 1301,  314,  314,  314,  314,  | 
1049  |  |       314,  314,  314,  314,  314,  314,  314,  314,  314, 1301,  | 
1050  |  |      1301, 1301, 1301, 1301, 1309, 1309, 1309, 1241, 1334, 1335,  | 
1051  |  |       670, 1241,  772,  772, 1241,  772, 1241, 1241, 1241, 1241,  | 
1052  |  |      1241, 1241, 1336, 1336, 1337,  686, 1337, 1241,  788, 1337,  | 
1053  |  |      1241,  791,  791, 1241,  791, 1309, 1241, 1241, 1241,  797,  | 
1054  |  |  | 
1055  |  |       797,  797,  797, 1241, 1241,  797,  797,  797,  797, 1241,  | 
1056  |  |      1241,  797,  797,  797,  797, 1241, 1241, 1241, 1241,  797,  | 
1057  |  |      1309, 1241, 1241, 1338, 1309, 1309, 1309, 1241, 1241, 1241,  | 
1058  |  |      1241, 1339, 1339,  831,  831, 1339, 1339,  831,  831, 1340,  | 
1059  |  |      1341, 1341, 1341, 1241,  844,  844,  844,  844,  844,  844,  | 
1060  |  |       844,  844, 1341, 1309, 1309, 1309, 1309, 1309, 1241, 1342,  | 
1061  |  |      1241, 1343,  775, 1343, 1343,  865, 1343, 1241,  868,  868,  | 
1062  |  |      1241,  868, 1241, 1241, 1241, 1241, 1344, 1344, 1345,  794,  | 
1063  |  |      1345, 1241,  882, 1345, 1241,  885,  885,  885, 1309, 1241,  | 
1064  |  |       890,  890,  890,  890,  890,  890,  890,  890,  890,  890,  | 
1065  |  |  | 
1066  |  |       890,  890, 1309, 1241, 1241, 1346, 1309, 1309, 1309, 1241,  | 
1067  |  |      1241, 1241, 1241, 1241, 1241, 1347, 1347,  915,  915, 1347,  | 
1068  |  |      1347,  915,  915, 1348, 1349, 1349, 1349, 1349, 1349, 1241,  | 
1069  |  |       930,  930,  930,  930,  930,  930,  930,  930, 1349, 1309,  | 
1070  |  |      1309, 1309, 1309, 1241, 1241, 1241, 1241, 1350, 1350, 1351,  | 
1071  |  |       871, 1351, 1351,  953, 1351, 1241,  956,  956, 1241,  956,  | 
1072  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1352, 1352, 1353, 1353,  | 
1073  |  |      1353,  971, 1353, 1309,  890,  890,  890,  890,  890, 1241,  | 
1074  |  |      1241,  890,  890,  890, 1241, 1241, 1241, 1241,  890, 1241,  | 
1075  |  |      1241, 1354, 1346, 1309, 1355, 1356, 1241, 1241, 1241, 1241,  | 
1076  |  |  | 
1077  |  |       915, 1347, 1347,  915, 1347, 1347, 1349, 1349, 1349, 1349,  | 
1078  |  |       930,  930,  930,  930,  930,  930, 1309, 1309, 1309, 1309,  | 
1079  |  |      1309, 1309, 1241, 1241, 1241, 1241, 1241, 1241, 1357, 1357,  | 
1080  |  |      1358,  959, 1358, 1358, 1034, 1358, 1241, 1037, 1037, 1241,  | 
1081  |  |      1037, 1241, 1241, 1241, 1241, 1359, 1359, 1309,  890, 1241,  | 
1082  |  |      1241,  890, 1241, 1241,  890,  890,  890,  890, 1241, 1354,  | 
1083  |  |      1354, 1241, 1354, 1346, 1355, 1355, 1355, 1355, 1241, 1355,  | 
1084  |  |      1356, 1356, 1241, 1241, 1241, 1241, 1241, 1241, 1347,  915,  | 
1085  |  |      1347, 1347, 1349, 1349, 1349, 1349, 1349, 1349,  930,  930,  | 
1086  |  |       930,  930, 1309, 1309, 1309, 1241, 1241, 1241, 1241, 1360,  | 
1087  |  |  | 
1088  |  |      1360, 1361, 1040, 1361, 1361, 1105, 1361, 1241, 1108, 1108,  | 
1089  |  |      1108, 1241, 1241, 1241, 1241, 1241, 1309,  890, 1241, 1241,  | 
1090  |  |       890,  890,  890, 1241, 1346, 1241, 1241, 1241, 1241, 1241,  | 
1091  |  |       915, 1347, 1347, 1349, 1349, 1349,  930,  930,  930, 1309,  | 
1092  |  |      1309, 1309, 1309, 1309, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1093  |  |      1362, 1362, 1363, 1363, 1363, 1155, 1155,  890, 1241, 1241,  | 
1094  |  |      1241, 1241,  890, 1364, 1241, 1241, 1241, 1241, 1241, 1347,  | 
1095  |  |      1349, 1349, 1349, 1349, 1349,  930, 1309, 1309, 1309, 1241,  | 
1096  |  |      1241, 1241, 1241, 1365, 1365,  890, 1241, 1241, 1364, 1364,  | 
1097  |  |      1241, 1364, 1241, 1241, 1241, 1349, 1349, 1349, 1309, 1309,  | 
1098  |  |  | 
1099  |  |      1309, 1309, 1309, 1241, 1241, 1241, 1241, 1241,  890, 1241,  | 
1100  |  |      1241, 1241, 1241, 1241, 1241, 1349, 1349, 1349, 1349, 1349,  | 
1101  |  |      1309, 1309, 1309,  890, 1241, 1241, 1241, 1349, 1349, 1349,  | 
1102  |  |      1309, 1309, 1309,  890, 1241, 1241, 1241, 1349, 1349, 1349,  | 
1103  |  |         0, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1104  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1105  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1106  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1107  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1108  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1109  |  |  | 
1110  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1111  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1112  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1113  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1114  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1115  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1116  |  |      1241, 1241, 1241, 1241, 1241  | 
1117  |  |     } ;  | 
1118  |  |  | 
1119  |  | static const flex_int16_t yy_nxt[9611] =  | 
1120  |  |     {   0, | 
1121  |  |        22,   23,   24,   22,   25,   23,   26,   27,   28,   22,  | 
1122  |  |        29,   30,   31,   22,   32,   33,   22,   22,   34,   35,  | 
1123  |  |        36,   37,   35,   35,   35,   35,   35,   35,   35,   38,  | 
1124  |  |        39,   40,   41,   42,   43,   44,   43,   45,   46,   47,  | 
1125  |  |        47,   48,   47,   49,   50,   51,   47,   52,   53,   54,  | 
1126  |  |        55,   47,   47,   47,   47,   47,   56,   57,   22,   58,  | 
1127  |  |        58,   58,   58,   58,   58,   22,   22,   22,   22,   22,  | 
1128  |  |        22,   22,   22,   59,   22,   22,   60,  157,  185,  156,  | 
1129  |  |        60,  157,  185,   61,   23,   78,  495,   79,   23,   80,  | 
1130  |  |       183,   81,   23,   78,  496,   79,   23,   80,   81,   81,  | 
1131  |  |  | 
1132  |  |        85,   86,  201,   87,   85,   88,   81,   89,   90,  166,  | 
1133  |  |        62,   63,   81,   82,  185,   64,  202,  193,  185,  614,  | 
1134  |  |        81,   82,  194,   65,  228,  190,   66,   67,  228,  280,  | 
1135  |  |       167,   67,  103,   24,   68,   25,  103,  104,  105,   83,  | 
1136  |  |       283,   69,  156,  188,   70,  197,  185,   83,  103,   24,  | 
1137  |  |       185,   25,  103,  104,  105,   91,  189,  168,   22,   71,  | 
1138  |  |       198,   43,  179,  179,  179,  179,  179,  180,  199,   72,  | 
1139  |  |       161,   73,  332,   74,   47,  185,   47,  447,  191,  185,  | 
1140  |  |       166,   85,   86,   75,   87,   85,   88,  106,   89,   90,  | 
1141  |  |        23,   24,   40,   25,   23,  130,  131,  223,  225,   76,  | 
1142  |  |  | 
1143  |  |        67,  265,  225,  106,   67,  172,  172,   68,  156,  185,  | 
1144  |  |       172,  172,  226,  185,   69,  245,  156,   70,  211,  245,  | 
1145  |  |        23,   24,   40,   25,   23,  130,  131,  212,  266,  221,  | 
1146  |  |       172,   22,   71,  156,   43,  299,   91,  248,  204,  293,  | 
1147  |  |       241,  248,   72,  211,   73,  132,   74,   47,  294,   47,  | 
1148  |  |       203,  204,  237,  241,  203,  173,   75,  178,  178,  178,  | 
1149  |  |       178,  178,  178,  178,  178,  178,  178,  213,  260,  253,  | 
1150  |  |       254,  213,   76,   23,   24,  132,   25,   23,   26,  155,  | 
1151  |  |        92,  177,  177,  177,  177,  177,  177,  177,  177,  177,  | 
1152  |  |       177,  188,  483,  484,  185,  252,  252,  280,  185,  156,  | 
1153  |  |  | 
1154  |  |       284,  214,  215,  291,  189,  157,  216,  256,  204,  157,  | 
1155  |  |       241,  256,  259,  345,  217,  314,  259,  218,  258,  228,  | 
1156  |  |       220,  261,  262,  228,  263,  261,  316,  257,   93,  297,  | 
1157  |  |        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,  | 
1158  |  |        94,   94,   94,   94,   94,   94,   94,   94,   23,   24,  | 
1159  |  |       292,   25,   23,   26,  227,   92,  166,  164,  164,  164,  | 
1160  |  |       164,  164,  164,  164,  164,  164,  164,  258,  277,  277,  | 
1161  |  |       277,  277,  277,  278,  185,  230,  230,  265,  204,  296,  | 
1162  |  |       230,  230,  276,  276,  276,  276,  276,  276,  276,  276,  | 
1163  |  |       276,  276,  311,  311,  311,  311,  311,  312,  203,  204,  | 
1164  |  |  | 
1165  |  |       230,  241,  203,   93,  301,   94,   94,   94,   94,   94,  | 
1166  |  |        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,  | 
1167  |  |        94,   94,   94,   23,   24,  231,   25,   23,   26,   96,  | 
1168  |  |        92,  314,  156,  161,  317,  332,   97,   98,   99, 1241,  | 
1169  |  |       342,  275,  275,  275,  275,  275,  275,  275,  275,  275,  | 
1170  |  |       275,  344,  100,  296,  166,  228,  305,  305,  291,  228,  | 
1171  |  |       156,  305,  305,  310,  310,  310,  310,  310,  310,  310,  | 
1172  |  |       310,  310,  310,  156,  156, 1241,  373,  299,  101,   23,  | 
1173  |  |        24,  305,   25,   23,   26,   96,   92,  329, 1211,  156,  | 
1174  |  |       156,  384,   97,   98,   99,  374,  330,  203,  204,  245,  | 
1175  |  |  | 
1176  |  |       241,  203,  266,  245,  385,  292,  306,  298,  100,  309,  | 
1177  |  |       309,  309,  309,  309,  309,  309,  309,  309,  309,  164,  | 
1178  |  |       164,  164,  164,  164,  164,  164,  164,  164,  164,  203,  | 
1179  |  |       204,  861,  241,  203,  101,   40,   23,   24,   40,   25,  | 
1180  |  |        23,   26,   40,   40,   40,  107,   30,   31,   40,  108,  | 
1181  |  |        33,   40,   40,  109,  110,  111,  112,  110,  110,  110,  | 
1182  |  |       110,  110,  110,  110,   38,  113,   40,   40,  114,  115,  | 
1183  |  |       115,  115,  116,  117,  118,  118,  119,  118,  120,  121,  | 
1184  |  |       122,  118,  123,  118,  124,  118,  118,  118,  118,  118,  | 
1185  |  |       118,   93,  125,   40,  126,  126,  126,  126,  126,  126,  | 
1186  |  |  | 
1187  |  |       127,  127,  127,  127,  127,  127,  127,  127,  128,  127,  | 
1188  |  |       127,  133,   23,   24,  133,   25,   23,   26,   27,   40,  | 
1189  |  |       133,  134,   30,   31,  133,  135,   33,  133,  133,  136,  | 
1190  |  |       137,  138,  139,  137,  137,  137,  137,  137,  137,  137,  | 
1191  |  |        38,   39,   40,  133,  140,  141,  141,  141,  142,  143,  | 
1192  |  |       144,  144,  145,  144,  146,  147,  148,  144,  149,  144,  | 
1193  |  |       150,  144,  144,  144,  144,  144,  144,  151,  152,  133,  | 
1194  |  |       153,  153,  153,  153,  153,  153,  133,  133,  133,  133,  | 
1195  |  |       133,  133,  133,  133,  154,  133,  133,  161,  260,  162,  | 
1196  |  |       164,  164,  164,  164,  164,  164,  164,  164,  164,  164,  | 
1197  |  |  | 
1198  |  |       155,  163,  896,  388,  164,  164,  164,  164,  164,  164,  | 
1199  |  |       164,  164,  164,  164,  174,  185,  175,  175,  175,  175,  | 
1200  |  |       175,  175,  175,  175,  175,  175,  176,  297, 1103,  156,  | 
1201  |  |       177,  177,  177,  177,  177,  177,  386,  176,  258,  204,  | 
1202  |  |       156,  155,  155,  155,  155,  155,  381,  383,  155,  155,  | 
1203  |  |       389,  393,  155,  156,  382,  393,  177,  177,  177,  177,  | 
1204  |  |       177,  177,  155,  156,  156,  155,  155,  155,  155,  392,  | 
1205  |  |       299,  155,  155,  442,  156,  155,  155,  296,  155,  155,  | 
1206  |  |       155,  184,  184,  184,  184,  184,  184,  184,  184,  184,  | 
1207  |  |       184,  176,  381,  299,  155,  184,  184,  184,  184,  184,  | 
1208  |  |  | 
1209  |  |       184,  185,  185,  185,  185,  186,  185,  185,  185,  187,  | 
1210  |  |       185,  185,  185,  185,  185,  185,  185,  185,  156,  155,  | 
1211  |  |       185,  177,  177,  177,  177,  177,  177,  155,  155,  155,  | 
1212  |  |       155,  155,  155,  155,  155,  155,  155,  155,  185,  185,  | 
1213  |  |       185,  185,  185,  185,  185,  185,  185,  185, 1241,  161,  | 
1214  |  |      1165,  332,  185,  185,  185,  185,  185,  185,  444,  393,  | 
1215  |  |       332,  259,  185,  393,  334,  259,  185,  335,  335,  335,  | 
1216  |  |       335,  335,  335,  335,  335,  335,  335,  156,  155,  155,  | 
1217  |  |       155,  155,  155,  155,  203,  204,  156,  205,  206,  155,  | 
1218  |  |       155,  155,  295,  381,  155,  155,  295,  299,  155,  172,  | 
1219  |  |  | 
1220  |  |       172,  494, 1241,  443,  172,  172,  340,  340,  340,  340,  | 
1221  |  |       340,  340,  155,  155,  155,  208,  258,  380, 1241,  208,  | 
1222  |  |       208,  208,  156,  209,  172,  208,  208,  466,  342,  208,  | 
1223  |  |       165,  165,  165,  165,  165,  582,  225,  165,  165,  460,  | 
1224  |  |       225,  165,  342,  208,  208,  208,  161,  296,  446,  173,  | 
1225  |  |       226, 1241,  156,  460,  502,  165,  165,  165,  340,  340,  | 
1226  |  |       340,  340,  340,  340,  340,  340,  340,  340,  156,  342,  | 
1227  |  |       210,  161, 1241,  162,  381,  169,  169,  169,  169,  169,  | 
1228  |  |       464,  156,  169,  169,  504,  163,  169,  342,  164,  164,  | 
1229  |  |       164,  164,  164,  164,  164,  164,  164,  164,  460,  266,  | 
1230  |  |  | 
1231  |  |       169,  169,  169,  336,  337,  338,  336,  336,  336,  336,  | 
1232  |  |       336,  336,  336,  340,  340,  340,  340,  340,  340,  340,  | 
1233  |  |       340,  340,  340,  203,  204,  208,  241,  203,  155,  208,  | 
1234  |  |       415,  861,  207,  371,  213,  607,  219,  234,  213,  156,  | 
1235  |  |       156,  234,  234,  234,  161,  235,  332,  234,  234,  357,  | 
1236  |  |       358,  234,  505,  359,  506,  360,  361,  528,  529,  362,  | 
1237  |  |       530,  363,  364, 1103,  156,  234,  234,  234,  214,  215,  | 
1238  |  |       230,  230,  291,  216,  299,  230,  230,  292,  156,  234,  | 
1239  |  |       372,  217,  155,  166,  218, 1241,  233,  390,  161,  556,  | 
1240  |  |       446, 1241,  236,  240,  204,  230,  241,  240,  242,  389,  | 
1241  |  |  | 
1242  |  |       243,  595,  585,  501, 1241,  242,  156,  243,  164,  164,  | 
1243  |  |       164,  164,  164,  164,  164,  164,  164,  164,  580,  292,  | 
1244  |  |       231,  243,  243,  357,  358, 1032,  444,  359,  446,  360,  | 
1245  |  |       361,  266, 1241,  362,  391,  363,  203,  204, 1241,  241,  | 
1246  |  |       203,  203,  204, 1241,  241,  203, 1241,  599,  243,  242,  | 
1247  |  |       161,  581,  162, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1248  |  |      1241, 1241, 1241,  597,  249,  586, 1241, 1241, 1241, 1241,  | 
1249  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241,  267,  261,  262,  | 
1250  |  |       267,  263,  261,  604,  583,  251,  267,  267,  583,  251,  | 
1251  |  |       267,  251,  251,  267,  267,  208,  252,  172,  298,  251,  | 
1252  |  |  | 
1253  |  |      1145,  172,  326,  440,  172,  491,  492,  269,  493,  267,  | 
1254  |  |       635,  172,  584,  636,  251,  394,  395,  396,  394,  394,  | 
1255  |  |       394,  394,  394,  394,  394,  172,  172,  398,  398,  398,  | 
1256  |  |       398,  398,  398,  270,  267,  267,  172, 1241,  185,  172,  | 
1257  |  |       156,  893,  172,  172, 1241,  172,  172,  172,  172,  172,  | 
1258  |  |       441,  593,  172,  172,  264,  264,  264,  264,  564,  564,  | 
1259  |  |       564,  264,  264, 1241,  602,  264,  269,  172,  172,  398,  | 
1260  |  |       398,  398,  398,  398,  398,  398,  398,  398,  398,  603,  | 
1261  |  |       264,  264,  398,  398,  398,  398,  398,  398,  398,  398,  | 
1262  |  |       398,  398,  272,  172,  172,  269,  156, 1241,  273,  269,  | 
1263  |  |  | 
1264  |  |       274,  274,  274,  274,  274,  274,  274,  274,  274,  274,  | 
1265  |  |       176,  269,  689,  381,  275,  275,  275,  275,  275,  275,  | 
1266  |  |       269,  269,  269,  269,  269,  269,  269,  269,  269,  269,  | 
1267  |  |       269,  269,  269,  269,  269,  269,  269, 1241, 1176,  388,  | 
1268  |  |       275,  275,  275,  275,  275,  275,  269,  269,  269,  269,  | 
1269  |  |       269,  269,  269,  269,  269,  269,  269, 1241,  587,  269,  | 
1270  |  |       269,  269,  269,  269,  269,  269,  269,  269,  269, 1241,  | 
1271  |  |      1241, 1241, 1241,  269,  269,  269,  269,  269,  269,  592,  | 
1272  |  |       600,  267,  267,  267,  267,  267,  389,  605,  267,  267,  | 
1273  |  |       606,  594,  267,  423,  423,  423,  423,  423,  423,  269,  | 
1274  |  |  | 
1275  |  |       269,  269,  269,  269,  269,  269,  267,  267,  267,  269,  | 
1276  |  |       279,  279,  279,  279,  279,  279,  279,  279,  279,  279,  | 
1277  |  |       176,  269,  156, 1241,  279,  279,  279,  279,  279,  279,  | 
1278  |  |       280,  280,  280,  280,  281,  280,  280,  280,  280,  280,  | 
1279  |  |       280,  280,  280,  280,  280,  280,  280,  601, 1170,  282,  | 
1280  |  |       275,  275,  275,  275,  275,  275,  269,  269,  269,  269,  | 
1281  |  |       269,  269,  269,  269,  269,  269,  269,  280,  280,  280,  | 
1282  |  |       280,  280,  280,  280,  280,  280,  280, 1241, 1241,  176,  | 
1283  |  |       156,  280,  280,  280,  280,  280,  280,  609,  406,  407,  | 
1284  |  |       596,  280,  408, 1241,  409,  410,  156, 1241,  411,  590,  | 
1285  |  |  | 
1286  |  |       412,  553,  554,  590,  555,  698,  299,  269,  269,  269,  | 
1287  |  |       269,  269,  269,  307,  598,  308,  308,  308,  308,  308,  | 
1288  |  |       308,  308,  308,  308,  308,  176,  608,  591,  156,  309,  | 
1289  |  |       309,  309,  309,  309,  309,  616,  299, 1241,  711,  299,  | 
1290  |  |       298,  298,  298,  298,  298,  176,  660,  298,  298,  588,  | 
1291  |  |       156,  298,  299,  532,  589,  309,  309,  309,  309,  309,  | 
1292  |  |       309,  298,  156,  624,  298,  298,  298,  298,  625,  688,  | 
1293  |  |       298,  298,  156,  156,  298,  298,  342,  298,  298,  298,  | 
1294  |  |       313,  313,  313,  313,  313,  313,  313,  313,  313,  313,  | 
1295  |  |       176,  615,  299,  298,  313,  313,  313,  313,  313,  313,  | 
1296  |  |  | 
1297  |  |       314,  314,  314,  314,  315,  314,  314,  314,  314,  314,  | 
1298  |  |       314,  314,  314,  314,  314,  314,  314,  299,  298,  314,  | 
1299  |  |       309,  309,  309,  309,  309,  309,  298,  298,  298,  298,  | 
1300  |  |       298,  298,  298,  298,  298,  298,  298,  314,  314,  314,  | 
1301  |  |       314,  314,  314,  314,  314,  314,  314, 1241,  935,  659,  | 
1302  |  |       314,  314,  314,  314,  314,  314,  314,  656,  431,  432,  | 
1303  |  |       657,  314,  433,  342,  434,  435,  305,  305,  436,  645,  | 
1304  |  |       437,  305,  305,  161,  646,  332, 1241,  298,  298,  298,  | 
1305  |  |       298,  298,  298,  203,  204,  299,  324,  325,  298,  298,  | 
1306  |  |       298,  305,  299,  298,  298, 1032,  701,  298,  419,  420,  | 
1307  |  |  | 
1308  |  |       421,  419,  419,  419,  419,  419,  419,  419, 1241,  658,  | 
1309  |  |      1241,  298,  298,  298,  208, 1241,  306,  590,  208,  208,  | 
1310  |  |       208,  590,  327,  702,  208,  208,  693, 1241,  208,  300,  | 
1311  |  |       300,  300,  300,  300,  691,  299,  300,  300,  299,  613,  | 
1312  |  |       300,  697,  208,  208,  208,  591, 1241,  203,  204, 1241,  | 
1313  |  |       241,  203,  692, 1241,  300,  300,  300, 1241, 1241,  696,  | 
1314  |  |       302,  302,  302,  302,  302,  694, 1004,  302,  302,  328,  | 
1315  |  |       172,  302,  700,  155,  171,  155,  155,  171,  690,  280,  | 
1316  |  |       155,  155,  708,  709,  171,  302,  302,  302,  423,  423,  | 
1317  |  |       423,  423,  423,  423,  423,  423,  423,  423,  171,  171,  | 
1318  |  |  | 
1319  |  |       155,  174,  299,  339,  339,  339,  339,  339,  339,  339,  | 
1320  |  |       339,  339,  339,  176,  156,  156,  951,  339,  339,  339,  | 
1321  |  |       339,  339,  339,  423,  423,  423,  423,  423,  423,  423,  | 
1322  |  |       423,  423,  423,  573,  573,  573,  573,  573,  574, 1241,  | 
1323  |  |       156,  568,  342,  339,  339,  339,  339,  339,  339,  155,  | 
1324  |  |      1241,  583,  155,  570,  156,  583, 1241,  705,  155,  155,  | 
1325  |  |       712,  695,  155,  155,  800,  155,  155,  155,  346,  346,  | 
1326  |  |       346,  346,  346,  346,  346,  346,  346,  346,  176,  584,  | 
1327  |  |      1138,  155,  346,  346,  346,  346,  346,  346,  185,  185,  | 
1328  |  |       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,  | 
1329  |  |  | 
1330  |  |       185,  185,  185,  185,  185,  156,  155,  185,  339,  339,  | 
1331  |  |       339,  339,  339,  339,  155,  155,  155,  155,  155,  155,  | 
1332  |  |       155,  155,  155,  155,  155,  185,  185,  185,  185,  185,  | 
1333  |  |       185,  185,  185,  185,  185, 1241, 1062,  763, 1063,  185,  | 
1334  |  |       185,  185,  185,  185,  185,  335,  335,  335,  335,  335,  | 
1335  |  |       335,  335,  335,  335,  335,  335,  335,  335,  335,  335,  | 
1336  |  |       335,  335,  335,  335,  335,  155,  155,  155,  155,  155,  | 
1337  |  |       155,  208,  299, 1241, 1241,  208,  208,  208, 1241,  209,  | 
1338  |  |       230,  208,  208, 1241,  230,  208,  447,  230,  448,  448,  | 
1339  |  |       448,  448,  448,  448,  230, 1241, 1241,  812, 1137,  208,  | 
1340  |  |  | 
1341  |  |       208,  208, 1241,  710,  703,  704, 1241, 1241,  230,  230,  | 
1342  |  |       507, 1241,  508,  508,  508,  508,  508,  508,  508,  508,  | 
1343  |  |       508,  508,  156,  628,  699,  156,  210,  230,  718,  706,  | 
1344  |  |       155,  229,  155,  155,  229, 1241,  156,  155,  155, 1133,  | 
1345  |  |       507,  229,  509,  509,  509,  509,  509,  509,  509,  509,  | 
1346  |  |       509,  509,  622,  299,  761,  229,  229,  155,  234,  764,  | 
1347  |  |       760, 1241,  234,  234,  234, 1241,  235,  661,  234,  234,  | 
1348  |  |      1241,  507,  234,  510,  510,  510,  510,  510,  511,  508,  | 
1349  |  |       508,  508,  508, 1241,  342,  299,  234,  234,  234, 1241,  | 
1350  |  |       305,  854,  707,  299,  305,  570,  507,  305,  508,  508,  | 
1351  |  |  | 
1352  |  |       508,  508,  508,  508,  305,  161,  156,  332,  623,  156,  | 
1353  |  |       156, 1241,  762,  236,  267,  342,  185,  267,  305,  305,  | 
1354  |  |       900,  716,  717,  267,  267, 1241,  460,  267,  797,  156,  | 
1355  |  |       267,  267,  557,  558,  559,  557,  557,  557,  557,  557,  | 
1356  |  |       557,  557,  742,  802,  269,  299,  267,  562,  562,  563,  | 
1357  |  |       564,  564,  564,  564,  564,  564,  564,  457,  572,  572,  | 
1358  |  |       572,  572,  572,  572,  572,  572,  572,  572,  156,  156,  | 
1359  |  |       270,  267,  267,  172,  796, 1241,  172,  342,  715,  172,  | 
1360  |  |       172,  299,  172,  172,  172,  172,  172, 1132,  570,  172,  | 
1361  |  |       172, 1241,  806,  571,  571,  571,  571,  571,  571,  571,  | 
1362  |  |  | 
1363  |  |       571,  571,  571,  269,  172,  172,  617,  618,  619,  617,  | 
1364  |  |       617,  617,  617,  617,  617,  617,  507, 1241,  508,  508,  | 
1365  |  |       508,  508,  508,  508,  508,  508,  508,  508, 1241,  272,  | 
1366  |  |       172,  172,  273,  813,  397,  397,  397,  397,  397,  397,  | 
1367  |  |       397,  397,  397,  397,  176, 1241, 1131,  801,  397,  397,  | 
1368  |  |       397,  397,  397,  397,  507, 1241,  508,  508,  508,  508,  | 
1369  |  |       508,  508,  508,  508,  508,  508,  803,  808, 1224,  590,  | 
1370  |  |       568,  342,  809,  590,  397,  397,  397,  397,  397,  397,  | 
1371  |  |       269, 1241,  570,  185,  269,  399,  399,  399,  399,  399,  | 
1372  |  |       399,  399,  399,  399,  399,  176,  269,  591,  815,  399,  | 
1373  |  |  | 
1374  |  |       399,  399,  399,  399,  399,  280,  280,  280,  280,  280,  | 
1375  |  |       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,  | 
1376  |  |       280,  280,  891,  185,  282,  397,  397,  397,  397,  397,  | 
1377  |  |       397,  269,  269,  269,  269,  269,  269,  269,  269,  269,  | 
1378  |  |       269,  269,  280,  280,  280,  280,  280,  280,  280,  280,  | 
1379  |  |       280,  280, 1241,  568,  342, 1241,  280,  280,  280,  280,  | 
1380  |  |       280,  280, 1241, 1241,  897,  678, 1241,  185, 1241, 1241,  | 
1381  |  |       156,  814, 1241, 1241,  807, 1241, 1073, 1241,  342, 1241,  | 
1382  |  |      1241,  821,  269,  269,  269,  269,  269,  269,  305,  678,  | 
1383  |  |      1241,  298,  304,  298,  298,  304, 1241, 1241,  298,  298,  | 
1384  |  |  | 
1385  |  |       629,  820,  304, 1241,  626, 1241, 1241,  836,  849, 1241,  | 
1386  |  |      1241,  627,  837,  850,  156,  630,  304,  304,  298,  307,  | 
1387  |  |      1073,  422,  422,  422,  422,  422,  422,  422,  422,  422,  | 
1388  |  |       422,  176,  826, 1241, 1241,  422,  422,  422,  422,  422,  | 
1389  |  |       422,  156,  899,  583,  590, 1241, 1241,  583,  590, 1241,  | 
1390  |  |      1241,  185,  825,  631,  185,  632,  895,  156,  299,  894,  | 
1391  |  |       185,  422,  422,  422,  422,  422,  422,  298,  827,  185,  | 
1392  |  |       298,  584,  591, 1241, 1241,  156,  298,  298,  314, 1013,  | 
1393  |  |       298,  298,  889,  298,  298,  298,  424,  424,  424,  424,  | 
1394  |  |       424,  424,  424,  424,  424,  424,  176,  633,  724,  298,  | 
1395  |  |  | 
1396  |  |       424,  424,  424,  424,  424,  424,  314,  314,  314,  314,  | 
1397  |  |       314,  314,  314,  314,  314,  314,  314,  314,  314,  314,  | 
1398  |  |       314,  314,  314,  299,  298,  314,  422,  422,  422,  422,  | 
1399  |  |       422,  422,  298,  298,  298,  298,  298,  298,  298,  298,  | 
1400  |  |       298,  298,  298,  314,  314,  314,  314,  314,  314,  314,  | 
1401  |  |       314,  314,  314, 1241,  299,  342,  976,  314,  314,  314,  | 
1402  |  |       314,  314,  314, 1241,  185,  853,  570, 1241,  640,  641,  | 
1403  |  |       642,  640,  640,  640,  640,  640,  640,  640,  798,  161,  | 
1404  |  |       156,  332,  798,  298,  298,  298,  298,  298,  298,  208,  | 
1405  |  |       342, 1241,  919,  208,  208,  208,  280,  327,  903,  208,  | 
1406  |  |  | 
1407  |  |       208,  678,  918,  208,  280,  299,  799,  634,  342,  568,  | 
1408  |  |       342,  676,  676,  676,  676,  676,  676,  208,  208,  208,  | 
1409  |  |       532,  570,  533,  533,  533,  533,  533,  533,  667,  667,  | 
1410  |  |       667,  667,  667,  667,  667,  667,  667,  667,  457,  824,  | 
1411  |  |       185,  156,  951,  898,  328,  447,  922,  448,  448,  448,  | 
1412  |  |       448,  448,  448,  448,  448,  448,  448,  280,  908,  299,  | 
1413  |  |       672,  673,  674,  672,  672,  672,  672,  672,  672,  672,  | 
1414  |  |       579,  579,  579,  579,  579,  579,  579,  579,  579,  579,  | 
1415  |  |       156,  280,  863,  907,  156,  447,  923,  449,  449,  449,  | 
1416  |  |       449,  449,  449,  449,  449,  449,  449,  680,  680,  680,  | 
1417  |  |  | 
1418  |  |       680,  680,  680,  680,  680,  680,  680,  681,  681,  681,  | 
1419  |  |       681,  681,  682,  765,  766,  767,  765,  765,  765,  765,  | 
1420  |  |       765,  765,  765, 1023,  156,  447,  934,  450,  450,  450,  | 
1421  |  |       450,  450,  451,  448,  448,  448,  448, 1241,  314,  679,  | 
1422  |  |       679,  679,  679,  679,  679,  679,  679,  679,  679,  719,  | 
1423  |  |       156,  720,  720,  720,  720,  720,  720,  720,  720,  720,  | 
1424  |  |       720,  161,  925,  332,  156,  452,  452,  452,  452,  452,  | 
1425  |  |       452,  452,  452,  452,  452,  176,  568,  342, 1089,  452,  | 
1426  |  |       452,  452,  452,  452,  452,  719,  861,  721,  721,  721,  | 
1427  |  |       721,  721,  721,  721,  721,  721,  721,  892,  863,  314,  | 
1428  |  |  | 
1429  |  |       299, 1082,  156,  931,  185,  452,  452,  452,  452,  452,  | 
1430  |  |       452,  454,  455,  456,  456,  456,  456,  456,  456,  456,  | 
1431  |  |       456,  457,  906, 1081,  982,  458,  458,  458,  458,  458,  | 
1432  |  |       458,  719,  156,  722,  722,  722,  722,  722,  723,  720,  | 
1433  |  |       720,  720,  720, 1241,  314,  185, 1079, 1241,  936,  989,  | 
1434  |  |       909,  458,  458,  458,  458,  458,  458,  342,  461,  462,  | 
1435  |  |       463,  461,  461,  461,  461,  461,  461,  461,  464,  156,  | 
1436  |  |       185, 1241,  465,  465,  465,  465,  465,  465, 1241,  730,  | 
1437  |  |      1241, 1241, 1241, 1241, 1241, 1241,  777, 1241,  778,  778,  | 
1438  |  |       778,  778,  778,  778,  778,  778,  778,  778,  465,  465,  | 
1439  |  |  | 
1440  |  |       465,  465,  465,  465,  155,  314, 1241,  155, 1241, 1241,  | 
1441  |  |       938, 1241,  725,  155,  155,  728,  734,  155,  155,  156,  | 
1442  |  |       155,  155,  155,  467,  467,  467,  467,  467,  467,  467,  | 
1443  |  |       467,  467,  467,  176,  736, 1117,  155,  467,  467,  467,  | 
1444  |  |       467,  467,  467,  185,  185,  185,  185,  185,  185,  185,  | 
1445  |  |       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,  | 
1446  |  |       156,  155,  185,  452,  452,  452,  452,  452,  452,  155,  | 
1447  |  |       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,  | 
1448  |  |       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,  | 
1449  |  |      1241,  568,  342, 1059,  185,  185,  185,  185,  185,  185,  | 
1450  |  |  | 
1451  |  |      1241, 1241,  314,  678, 1241, 1241, 1241, 1241,  933, 1015,  | 
1452  |  |      1241, 1241,  314, 1241, 1241,  804,  937, 1241,  863,  804,  | 
1453  |  |       155,  155,  155,  155,  155,  155,  208,  314, 1241, 1241,  | 
1454  |  |       208,  208,  208,  299,  209, 1241,  208,  208, 1241,  342,  | 
1455  |  |       208, 1241,  729,  805,  978,  735,  342,  568,  342,  732,  | 
1456  |  |       678,  939,  185,  185,  208,  208,  208,  786,  731,  786,  | 
1457  |  |       661,  733,  662,  662,  662,  662,  662,  662,  777,  983,  | 
1458  |  |       779,  779,  779,  779,  779,  779,  779,  779,  779,  779,  | 
1459  |  |       185,  210,  208, 1241,  342,  156,  208,  208,  208,  208,  | 
1460  |  |       371,  974,  208,  208, 1080,  786,  208,  280,  777,  156,  | 
1461  |  |  | 
1462  |  |       780,  780,  780,  780,  780,  781,  778,  778,  778,  778,  | 
1463  |  |       208,  208,  208,  687,  687,  687,  687,  687,  687,  687,  | 
1464  |  |       687,  687,  687,  568,  342,  784,  784,  784,  784,  784,  | 
1465  |  |       784,  961,  979,  568,  342,  678,  810,  210,  234,  185,  | 
1466  |  |       810,  977,  234,  234,  234,  786,  235,  185,  234,  234,  | 
1467  |  |      1014, 1017,  234,  788,  788,  788,  788,  788,  788,  788,  | 
1468  |  |       788,  788,  788,  314,  811,  342,  234,  234,  234,  789,  | 
1469  |  |       789,  789,  789,  789,  790, 1241,  786,  787,  787,  787,  | 
1470  |  |       787,  787,  787,  787,  787,  787,  787,  816,  818,  984,  | 
1471  |  |       156,  816,  818,  236,  234, 1241,  342,  185,  234,  234,  | 
1472  |  |  | 
1473  |  |       234,  234,  390,  156,  234,  234,  861,  719,  234,  720,  | 
1474  |  |       720,  720,  720,  720,  720,  817,  819,  161,  863,  332,  | 
1475  |  |       994,  863,  234,  234,  234,  828,  829,  830,  828,  828,  | 
1476  |  |       828,  828,  828,  828,  828,  719,  861,  720,  720,  720,  | 
1477  |  |       720,  720,  720,  720,  720,  720,  720,  771,  951,  236,  | 
1478  |  |       512,  512,  512,  512,  512,  512,  512,  512,  512,  512,  | 
1479  |  |       176,  314, 1091, 1234,  512,  512,  512,  512,  512,  512,  | 
1480  |  |       719, 1241,  720,  720,  720,  720,  720,  720,  720,  720,  | 
1481  |  |       720,  720, 1064,  951,  185,  798,  568,  342,  342,  798,  | 
1482  |  |       512,  512,  512,  512,  512,  512,  269, 1209,  880,  880,  | 
1483  |  |  | 
1484  |  |       269,  513,  513,  513,  513,  513,  513,  513,  513,  513,  | 
1485  |  |       513,  176,  269,  799,  185,  513,  513,  513,  513,  513,  | 
1486  |  |       513,  280,  280,  280,  280,  280,  280,  280,  280,  280,  | 
1487  |  |       280,  280,  280,  280,  280,  280,  280,  280,  568,  342,  | 
1488  |  |       282,  512,  512,  512,  512,  512,  512,  269,  269,  269,  | 
1489  |  |       269,  269,  269,  269,  269,  269,  269,  269,  280,  280,  | 
1490  |  |       280,  280,  280,  280,  280,  280,  280,  280, 1241, 1124,  | 
1491  |  |       299, 1063,  280,  280,  280,  280,  280,  280,  776,  776,  | 
1492  |  |       776,  776,  776,  776,  776,  776,  776,  776, 1241,  804,  | 
1493  |  |      1241, 1241, 1241,  804, 1241, 1241, 1052, 1016,  269,  269,  | 
1494  |  |  | 
1495  |  |       269,  269,  269,  269,  532,  185,  533,  533,  533,  533,  | 
1496  |  |       533,  533,  533,  533,  533,  533, 1241,  805, 1241, 1241,  | 
1497  |  |       156, 1012, 1061, 1062,  831, 1063, 1061, 1017,  810, 1241,  | 
1498  |  |      1241, 1048,  810, 1241, 1241,  834,  816,  818,  835, 1090,  | 
1499  |  |       816,  818,  314,  299,  532, 1006,  534,  534,  534,  534,  | 
1500  |  |       534,  534,  534,  534,  534,  534,  811, 1241, 1241, 1241,  | 
1501  |  |       342, 1055, 1005, 1057,  817,  819,  156, 1003,  798,  185,  | 
1502  |  |       185,  880,  798,  742,  839,  743,  743,  743,  743,  743,  | 
1503  |  |       743,  838, 1092,  299,  532,  314,  535,  535,  535,  535,  | 
1504  |  |       535,  536,  533,  533,  533,  533,  799,  314, 1139,  841,  | 
1505  |  |  | 
1506  |  |       842,  843,  841,  841,  841,  841,  841,  841,  841,  804,  | 
1507  |  |       810,  816,  299,  804,  810,  816, 1002, 1121,  818, 1191,  | 
1508  |  |       910, 1192,  818,  299,  298,  185,  537,  537,  537,  537,  | 
1509  |  |       537,  537,  537,  537,  537,  537,  299,  805,  811,  817,  | 
1510  |  |       537,  537,  537,  537,  537,  537,  819,  865,  865,  865,  | 
1511  |  |       865,  865,  865,  865,  865,  865,  865,  866,  866,  866,  | 
1512  |  |       866,  866,  867, 1186,  156,  991,  537,  537,  537,  537,  | 
1513  |  |       537,  537,  538,  538,  538,  538,  538,  538,  538,  538,  | 
1514  |  |       538,  538, 1049,  185,  990,  156,  538,  538,  538,  538,  | 
1515  |  |       538,  538, 1241,  185,  864,  864,  864,  864,  864,  864,  | 
1516  |  |  | 
1517  |  |       864,  864,  864,  864,  777, 1083,  778,  778,  778,  778,  | 
1518  |  |       778,  778,  537,  537,  537,  537,  537,  537,  208,  568,  | 
1519  |  |       342,  185,  208,  208,  208, 1210,  327, 1192,  208,  208,  | 
1520  |  |       771,  880,  208,  873,  874,  875,  873,  873,  873,  873,  | 
1521  |  |       873,  873,  873,  566,  299,  932,  208,  208,  208,  777,  | 
1522  |  |       861,  778,  778,  778,  778,  778,  778,  778,  778,  778,  | 
1523  |  |       778,  777,  951,  778,  778,  778,  778,  778,  778,  778,  | 
1524  |  |       778,  778,  778,  328,  208, 1056, 1058, 1208,  208,  208,  | 
1525  |  |       208,  208,  440, 1208,  208,  208,  185,  185,  208,  795,  | 
1526  |  |       795,  795,  795,  795,  795,  795,  795,  795,  795,  924,  | 
1527  |  |  | 
1528  |  |       921,  861,  208,  208,  208,  568,  342,  878,  878,  878,  | 
1529  |  |       878,  878,  878, 1032,  920,  917, 1241,  786,  882,  882,  | 
1530  |  |       882,  882,  882,  882,  882,  882,  882,  882, 1032,  328,  | 
1531  |  |       447,  916,  448,  448,  448,  448,  448,  448,  448,  448,  | 
1532  |  |       448,  448,  883,  883,  883,  883,  883,  884, 1241,  905,  | 
1533  |  |       881,  881,  881,  881,  881,  881,  881,  881,  881,  881,  | 
1534  |  |       798,  804,  810,  816,  798,  804,  810,  816, 1083,  156,  | 
1535  |  |       447,  995,  448,  448,  448,  448,  448,  448,  448,  448,  | 
1536  |  |       448,  448,  954,  954,  954,  954,  954,  955,  799,  805,  | 
1537  |  |       811,  817,  904,  185,  995,  818,  995,  995, 1118,  818,  | 
1538  |  |  | 
1539  |  |       972,  972,  972,  972,  972,  973,  902,  299,  185,  156,  | 
1540  |  |       568,  342,  569,  569,  569,  569,  569,  569,  569,  569,  | 
1541  |  |       569,  569,  570,  819,  901,  777,  571,  571,  571,  571,  | 
1542  |  |       571,  571,  910,  911,  911,  911,  911,  911,  911,  911,  | 
1543  |  |       911,  911,  911,  980, 1123,  992,  161,  980,  332,  992,  | 
1544  |  |       771,  185,  571,  571,  571,  571,  571,  571,  342,  575,  | 
1545  |  |       576,  577,  575,  575,  575,  575,  575,  575,  575,  578,  | 
1546  |  |       995,  981,  566,  579,  579,  579,  579,  579,  579,  910,  | 
1547  |  |       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,  | 
1548  |  |       457,  299,  280,  995,  299,  995,  996, 1140,  342,  579,  | 
1549  |  |  | 
1550  |  |       579,  579,  579,  579,  579,  155,  993,  980,  155,  880,  | 
1551  |  |       299,  980,  299,  852,  155,  155,  851,  848,  155,  155,  | 
1552  |  |       156,  155,  155,  155,  185,  185,  185,  185,  185,  185,  | 
1553  |  |       185,  185,  185,  185,  176,  981,  156,  155,  185,  185,  | 
1554  |  |       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,  | 
1555  |  |       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,  | 
1556  |  |       185,  156,  155,  185,  155,  155,  155,  155,  155,  155,  | 
1557  |  |       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,  | 
1558  |  |       155,  620,  620,  620,  620,  620,  620,  620,  620,  620,  | 
1559  |  |       620,  176,  250,  250,  250,  620,  620,  620,  620,  620,  | 
1560  |  |  | 
1561  |  |       620,  910,  913,  913,  913,  913,  913,  914,  911,  911,  | 
1562  |  |       911,  911,  910,  911,  911,  911,  911,  911,  911,  847,  | 
1563  |  |      1122,  620,  620,  620,  620,  620,  620,  269,  185,  846,  | 
1564  |  |      1171,  269,  621,  621,  621,  621,  621,  621,  621,  621,  | 
1565  |  |       621,  621,  176,  269,  845,  844,  621,  621,  621,  621,  | 
1566  |  |       621,  621,  280,  280,  280,  280,  280,  280,  280,  280,  | 
1567  |  |       280,  280,  280,  280,  280,  280,  280,  280,  280,  299,  | 
1568  |  |       840,  282,  620,  620,  620,  620,  620,  620,  269,  269,  | 
1569  |  |       269,  269,  269,  269,  269,  269,  269,  269,  269,  583,  | 
1570  |  |      1199, 1216,  861,  583,  940,  941,  942,  943,  940,  940,  | 
1571  |  |  | 
1572  |  |       940,  940,  940,  940, 1032,  833,  861,  280,  280,  280,  | 
1573  |  |       280,  280,  280,  280,  280,  280,  280,  584, 1103, 1163,  | 
1574  |  |       832,  280,  280,  280,  280,  280,  280,  185,  719,  156,  | 
1575  |  |       299,  156,  854,  855,  855,  855,  855,  855,  855, 1035,  | 
1576  |  |      1035, 1035, 1035, 1035, 1036,  823,  822,  269,  269,  269,  | 
1577  |  |       269,  269,  269,  532,  156,  533,  533,  533,  533,  533,  | 
1578  |  |       533,  533,  533,  533,  533, 1061, 1062,  156, 1063, 1061,  | 
1579  |  |       156,  945,  946,  947,  945,  945,  945,  945,  945,  945,  | 
1580  |  |       945,  872,  872,  872,  872,  872,  872,  872,  872,  872,  | 
1581  |  |       872,  156,  299,  532, 1241,  533,  533,  533,  533,  533,  | 
1582  |  |  | 
1583  |  |       533,  533,  533,  533,  533,  861, 1103,  949,  949,  949,  | 
1584  |  |       949,  949,  949,  250,  250,  250, 1158,  863,  953,  953,  | 
1585  |  |       953,  953,  953,  953,  953,  953,  953,  953,  185,  156,  | 
1586  |  |       985, 1241,  299,  661,  985,  662,  662,  662,  662,  662,  | 
1587  |  |       662,  662,  662,  662,  662, 1241,  771,  952,  952,  952,  | 
1588  |  |       952,  952,  952,  952,  952,  952,  952,  961,  986,  962,  | 
1589  |  |       962,  962,  962,  962,  962,  962,  962,  962,  962,  566,  | 
1590  |  |       987,  457,  156,  661,  987,  663,  663,  663,  663,  663,  | 
1591  |  |       663,  663,  663,  663,  663,  961,  457,  963,  963,  963,  | 
1592  |  |       963,  963,  963,  963,  963,  963,  963,  961,  988,  964,  | 
1593  |  |  | 
1594  |  |       964,  964,  964,  964,  965,  962,  962,  962,  962,  759,  | 
1595  |  |       758,  757,  156,  661,  756,  664,  664,  664,  664,  664,  | 
1596  |  |       665,  662,  662,  662,  662,  888,  888,  888,  888,  888,  | 
1597  |  |       888,  888,  888,  888,  888,  568,  342,  968,  968,  968,  | 
1598  |  |       968,  968,  968,  755,  161,  754,  332,  880, 1184, 1184,  | 
1599  |  |      1184, 1184,  156,  568,  342,  676,  676,  676,  676,  676,  | 
1600  |  |       676,  676,  676,  676,  676,  570,  753,  752,  751,  675,  | 
1601  |  |       675,  675,  675,  675,  675,  971,  971,  971,  971,  971,  | 
1602  |  |       971,  971,  971,  971,  971,  997,  998,  999, 1000,  997,  | 
1603  |  |       997,  997,  997,  997,  997,  675,  675,  675,  675,  675,  | 
1604  |  |  | 
1605  |  |       675,  568,  342,  677,  677,  677,  677,  677,  677,  677,  | 
1606  |  |       677,  677,  677,  678, 1125,  750,  749,  679,  679,  679,  | 
1607  |  |       679,  679,  679, 1241,  748,  970,  970,  970,  970,  970,  | 
1608  |  |       970,  970,  970,  970,  970,  925,  926,  926,  926,  926,  | 
1609  |  |       926,  926,  747,  679,  679,  679,  679,  679,  679,  342,  | 
1610  |  |       683,  684,  685,  683,  683,  683,  683,  683,  683,  683,  | 
1611  |  |       686,  741,  740,  739,  687,  687,  687,  687,  687,  687,  | 
1612  |  |       738,  737,  961,  299,  962,  962,  962,  962,  962,  962,  | 
1613  |  |       980,  727, 1164,  161,  980,  332, 1164,  726, 1241, 1241,  | 
1614  |  |       687,  687,  687,  687,  687,  687,  742,  495,  743,  743,  | 
1615  |  |  | 
1616  |  |       743,  743,  743,  743,  743,  743,  743,  743,  981,  910,  | 
1617  |  |       911,  911,  911,  911,  911,  911,  911,  911,  911,  911,  | 
1618  |  |       985,  714,  713, 1023,  985, 1024, 1024, 1024, 1024, 1024,  | 
1619  |  |      1024, 1024, 1024, 1024, 1024,  299,  742,  185,  744,  744,  | 
1620  |  |       744,  744,  744,  744,  744,  744,  744,  744,  986,  910,  | 
1621  |  |       911,  911,  911,  911,  911,  911,  911,  911,  911,  911,  | 
1622  |  |       987,  985,  987, 1241,  987,  985,  987,  568,  342, 1047,  | 
1623  |  |      1047, 1047, 1047, 1047, 1047,  299,  742,  185,  745,  745,  | 
1624  |  |       745,  745,  745,  746,  743,  743,  743,  743,  988,  986,  | 
1625  |  |       988, 1007, 1008, 1009, 1010, 1007, 1007, 1007, 1007, 1007,  | 
1626  |  |  | 
1627  |  |      1007,  980,  985,  987,  670,  980,  985,  987,  181,  181,  | 
1628  |  |       280,  280,  566,  457,  181,  299,  661,  185,  662,  662,  | 
1629  |  |       662,  662,  662,  662,  662,  662,  662,  662,  299,  981,  | 
1630  |  |       986,  988, 1023,  666, 1025, 1025, 1025, 1025, 1025, 1025,  | 
1631  |  |      1025, 1025, 1025, 1025, 1106, 1106, 1106, 1106, 1106, 1107,  | 
1632  |  |       314,  314,  314,  457,  182,  156,  661,  861,  662,  662,  | 
1633  |  |       662,  662,  662,  662,  662,  662,  662,  662, 1023, 1103,  | 
1634  |  |      1026, 1026, 1026, 1026, 1026, 1027, 1024, 1024, 1024, 1024,  | 
1635  |  |       960,  960,  960,  960,  960,  960,  960,  960,  960,  960,  | 
1636  |  |      1190, 1191,  655, 1192, 1190,  156,  772,  773,  774,  772,  | 
1637  |  |  | 
1638  |  |       772,  772,  772,  772,  772,  772,  775,  654,  653,  652,  | 
1639  |  |       776,  776,  776,  776,  776,  776,  861,  651, 1030, 1030,  | 
1640  |  |      1030, 1030, 1030, 1030,  181,  181,  650, 1053,  951, 1050,  | 
1641  |  |       181, 1053,  649, 1050,  648,  647,  776,  776,  776,  776,  | 
1642  |  |       776,  776,  568,  342,  784,  784,  784,  784,  784,  784,  | 
1643  |  |       784,  784,  784,  784,  678, 1054,  644, 1051,  783,  783,  | 
1644  |  |       783,  783,  783,  783, 1034, 1034, 1034, 1034, 1034, 1034,  | 
1645  |  |      1034, 1034, 1034, 1034, 1042, 1043, 1044, 1042, 1042, 1042,  | 
1646  |  |      1042, 1042, 1042, 1042,  783,  783,  783,  783,  783,  783,  | 
1647  |  |       568,  342,  785,  785,  785,  785,  785,  785,  785,  785,  | 
1648  |  |  | 
1649  |  |       785,  785,  786,  643,  176,  639,  787,  787,  787,  787,  | 
1650  |  |       787,  787, 1241,  638, 1033, 1033, 1033, 1033, 1033, 1033,  | 
1651  |  |      1033, 1033, 1033, 1033, 1050,  637, 1190, 1191, 1050, 1192,  | 
1652  |  |      1190,  507,  787,  787,  787,  787,  787,  787,  342,  791,  | 
1653  |  |       792,  793,  791,  791,  791,  791,  791,  791,  791,  794,  | 
1654  |  |       495,  612, 1051,  795,  795,  795,  795,  795,  795,  961,  | 
1655  |  |       495,  962,  962,  962,  962,  962,  962,  962,  962,  962,  | 
1656  |  |       962,  341,  341,  280,  611,  495,  610,  341, 1241,  795,  | 
1657  |  |       795,  795,  795,  795,  795,  742, 1241,  743,  743,  743,  | 
1658  |  |       743,  743,  743,  743,  743,  743,  743,  961,  457,  962,  | 
1659  |  |  | 
1660  |  |       962,  962,  962,  962,  962,  962,  962,  962,  962,  566,  | 
1661  |  |      1053, 1119, 1050,  457, 1053, 1119, 1050, 1119,  182, 1050,  | 
1662  |  |       552, 1119, 1053, 1050,  299,  742, 1053,  743,  743,  743,  | 
1663  |  |       743,  743,  743,  743,  743,  743,  743, 1066, 1054, 1120,  | 
1664  |  |      1051, 1066, 1067, 1068, 1069, 1120,  551, 1051,  550, 1073,  | 
1665  |  |      1054, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,  | 
1666  |  |      1074,  314,  549,  548,  299,  854,  855,  855,  855,  855,  | 
1667  |  |       855,  855,  855,  855,  855,  855,  185, 1066,  547,  185,  | 
1668  |  |       546, 1066, 1067, 1068, 1069, 1156, 1156, 1156, 1156, 1156,  | 
1669  |  |      1157, 1073, 1070, 1075, 1075, 1075, 1075, 1075, 1075, 1075,  | 
1670  |  |  | 
1671  |  |      1075, 1075, 1075,  156,  854,  856,  856,  856,  856,  856,  | 
1672  |  |       856,  856,  856,  856,  856, 1073,  545, 1076, 1076, 1076,  | 
1673  |  |      1076, 1076, 1077, 1078, 1078, 1078, 1078, 1053,  453,  453,  | 
1674  |  |       544, 1053, 1072, 1017,  453, 1018, 1018, 1018, 1018, 1018,  | 
1675  |  |      1018,  543,  156,  854,  857,  857,  857,  857,  857,  858,  | 
1676  |  |       855,  855,  855,  855, 1073, 1054, 1078, 1078, 1078, 1074,  | 
1677  |  |      1074, 1074, 1074, 1074, 1074, 1074,  542, 1161,  541, 1159,  | 
1678  |  |       540, 1161,  156, 1159,  282,  282,  314,  282,  282,  282,  | 
1679  |  |       282,  156,  861,  539,  862,  862,  862,  862,  862,  862,  | 
1680  |  |       862,  862,  862,  862,  863, 1162,  307, 1160,  864,  864,  | 
1681  |  |  | 
1682  |  |       864,  864,  864,  864, 1093, 1094, 1095, 1093, 1093, 1093,  | 
1683  |  |      1093, 1093, 1093, 1093, 1096, 1097, 1098, 1096, 1096, 1096,  | 
1684  |  |      1096, 1096, 1096, 1096,  864,  864,  864,  864,  864,  864,  | 
1685  |  |       868,  869,  870,  868,  868,  868,  868,  868,  868,  868,  | 
1686  |  |       871,  156,  531,  527,  872,  872,  872,  872,  872,  872,  | 
1687  |  |      1023,  526, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,  | 
1688  |  |      1024, 1024, 1023,  525, 1024, 1024, 1024, 1024, 1024, 1024,  | 
1689  |  |       872,  872,  872,  872,  872,  872,  568,  342,  878,  878,  | 
1690  |  |       878,  878,  878,  878,  878,  878,  878,  878,  786,  524,  | 
1691  |  |       523,  522,  877,  877,  877,  877,  877,  877, 1023,  521,  | 
1692  |  |  | 
1693  |  |      1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,  | 
1694  |  |      1073,  520, 1074, 1074, 1074, 1074, 1074, 1074,  877,  877,  | 
1695  |  |       877,  877,  877,  877,  568,  342,  879,  879,  879,  879,  | 
1696  |  |       879,  879,  879,  879,  879,  879,  880,  519,  518,  517,  | 
1697  |  |       881,  881,  881,  881,  881,  881, 1041, 1041, 1041, 1041,  | 
1698  |  |      1041, 1041, 1041, 1041, 1041, 1041, 1105, 1105, 1105, 1105,  | 
1699  |  |      1105, 1105, 1105, 1105, 1105, 1105,  881,  881,  881,  881,  | 
1700  |  |       881,  881,  342,  885,  886,  887,  885,  885,  885,  885,  | 
1701  |  |       885,  885,  885,  516,  515,  514,  273,  888,  888,  888,  | 
1702  |  |       888,  888,  888,  861,  503, 1101, 1101, 1101, 1101, 1101,  | 
1703  |  |  | 
1704  |  |      1101,  500,  499,  498,  497, 1032,  342, 1112, 1112, 1112,  | 
1705  |  |      1112, 1112, 1112,  888,  888,  888,  888,  888,  888,  155,  | 
1706  |  |      1241,  282,  155, 1065,  282,  490,  282,  489,  155,  155,  | 
1707  |  |      1065, 1065,  155,  155, 1065,  155,  155,  155,  185,  185,  | 
1708  |  |       185,  185,  185,  185,  185,  185,  185,  185, 1065, 1065,  | 
1709  |  |      1065,  155,  185,  185,  185,  185,  185,  185,  185,  185,  | 
1710  |  |       185,  185,  185,  185,  185,  185,  185,  890,  185,  185,  | 
1711  |  |       185,  185,  185,  185,  185,  156,  155,  185,  155,  155,  | 
1712  |  |       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,  | 
1713  |  |       155,  155,  155,  155,  155,  269,  488,  487,  486,  269,  | 
1714  |  |  | 
1715  |  |       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,  | 
1716  |  |       485,  269,  482,  481,  280,  280,  280,  280,  280,  280,  | 
1717  |  |       280,  280,  280,  280,  280,  280,  280,  280,  915,  280,  | 
1718  |  |       280,  280,  280,  280,  280,  280,  280,  480,  479,  282,  | 
1719  |  |       269,  269,  269,  269,  269,  269,  269,  269,  269,  269,  | 
1720  |  |       269,  269,  269,  269,  269,  269,  269,  925,  926,  926,  | 
1721  |  |       926,  926,  926,  926,  926,  926,  926,  926, 1241,  478,  | 
1722  |  |      1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,  | 
1723  |  |       342, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,  | 
1724  |  |      1112,  477,  476,  475,  474,  299,  925,  927,  927,  927,  | 
1725  |  |  | 
1726  |  |       927,  927,  927,  927,  927,  927,  927,  342, 1113, 1113,  | 
1727  |  |      1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,  342, 1114,  | 
1728  |  |      1114, 1114, 1114, 1114, 1115, 1112, 1112, 1112, 1112, 1119,  | 
1729  |  |       473,  472,  471, 1119,  299,  925,  928,  928,  928,  928,  | 
1730  |  |       928,  929,  926,  926,  926,  926,  470, 1159, 1241,  469,  | 
1731  |  |       468, 1159, 1241, 1241, 1241, 1241, 1126, 1120,  182, 1127,  | 
1732  |  |      1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,  174,  | 
1733  |  |       560,  560,  299,  299,  298, 1160,  560,  298,  439,  561,  | 
1734  |  |       561,  438,  430,  298,  298,  561,  185,  298,  298,  429,  | 
1735  |  |       298,  298,  298,  314,  314,  314,  314,  314,  314,  314,  | 
1736  |  |  | 
1737  |  |       314,  314,  314, 1070,  185,  428,  298,  314,  314,  314,  | 
1738  |  |       314,  314,  314,  314,  314,  314,  314,  314,  314,  314,  | 
1739  |  |       314,  930,  314,  314,  314,  314,  314,  314,  314,  314,  | 
1740  |  |       299,  298,  314,  298,  298,  298,  298,  298,  298,  298,  | 
1741  |  |       298,  298,  298,  298,  298,  298,  298,  298,  298,  298,  | 
1742  |  |       854,  855,  855,  855,  855,  855,  855,  855,  855,  855,  | 
1743  |  |       855, 1066,  427, 1116, 1116, 1066, 1067, 1068, 1069, 1241,  | 
1744  |  |      1116,  426,  425, 1241, 1067, 1068, 1069, 1128, 1129, 1130,  | 
1745  |  |      1128, 1128, 1128, 1128, 1128, 1128, 1128,  298,  156,  854,  | 
1746  |  |       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,  | 
1747  |  |  | 
1748  |  |      1241, 1184,  418, 1184, 1241, 1241, 1241, 1069, 1241, 1184,  | 
1749  |  |       303,  301, 1241, 1241, 1241, 1241, 1070, 1204, 1204, 1204,  | 
1750  |  |      1204, 1204, 1204,  299, 1070,  296,  417,  156,  861,  416,  | 
1751  |  |       949,  949,  949,  949,  949,  949,  949,  949,  949,  949,  | 
1752  |  |       863,  861,  414,  950,  950,  950,  950,  950,  950,  950,  | 
1753  |  |       950,  950,  950,  951,  413, 1070,  405,  952,  952,  952,  | 
1754  |  |       952,  952,  952, 1072, 1073,  404, 1074, 1074, 1074, 1074,  | 
1755  |  |      1074, 1074, 1074, 1074, 1074, 1074, 1235, 1235, 1235, 1235,  | 
1756  |  |      1235, 1235,  403,  952,  952,  952,  952,  952,  952,  956,  | 
1757  |  |       957,  958,  956,  956,  956,  956,  956,  956,  956,  959,  | 
1758  |  |  | 
1759  |  |       402,  401,  400,  960,  960,  960,  960,  960,  960, 1073,  | 
1760  |  |      1241, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,  | 
1761  |  |      1074, 1119, 1161,  270,  262, 1119, 1161,  257,  258,  960,  | 
1762  |  |       960,  960,  960,  960,  960,  568,  342,  968,  968,  968,  | 
1763  |  |       968,  968,  968,  968,  968,  968,  968,  880,  252, 1120,  | 
1764  |  |      1162,  967,  967,  967,  967,  967,  967,  252, 1134, 1135,  | 
1765  |  |      1136, 1134, 1134, 1134, 1134, 1134, 1134, 1134,  246, 1083,  | 
1766  |  |       314, 1084, 1084, 1084, 1084, 1084, 1084,  967,  967,  967,  | 
1767  |  |       967,  967,  967,  568,  342,  969,  969,  969,  969,  969,  | 
1768  |  |       969,  969,  969,  969,  969,  299,  204,  239,  156,  970,  | 
1769  |  |  | 
1770  |  |       970,  970,  970,  970,  970, 1161,  387, 1241,  299, 1161,  | 
1771  |  |      1071, 1159,  379,  565,  565, 1159,  378, 1071, 1071,  565,  | 
1772  |  |       377, 1071,  376,  375,  156,  970,  970,  970,  970,  970,  | 
1773  |  |       970,  155,  370, 1162,  155, 1071, 1071, 1071,  369, 1160,  | 
1774  |  |       155,  155,  368,  367,  155,  155,  366,  155,  155,  155,  | 
1775  |  |       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,  | 
1776  |  |       280,  365,  185,  155,  185,  185,  185,  185,  185,  185,  | 
1777  |  |       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,  | 
1778  |  |       185,  185,  185,  185,  185,  185,  185,  156,  155,  975,  | 
1779  |  |       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,  | 
1780  |  |  | 
1781  |  |       155,  155,  155,  155,  155,  155,  155,  269,  356,  355,  | 
1782  |  |       354,  269,  280,  280,  280,  280,  280,  280,  280,  280,  | 
1783  |  |       280,  280,  353,  269,  352,  351,  280,  280,  280,  280,  | 
1784  |  |       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,  | 
1785  |  |       280,  280,  280, 1001,  280,  280,  280,  280,  280,  350,  | 
1786  |  |       349,  282,  269,  269,  269,  269,  269,  269,  269,  269,  | 
1787  |  |       269,  269,  269,  269,  269,  269,  269,  269,  269,  925,  | 
1788  |  |       926,  926,  926,  926,  926,  926,  926,  926,  926,  926,  | 
1789  |  |      1145,  348, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,  | 
1790  |  |      1146, 1146, 1145,  347, 1147, 1147, 1147, 1147, 1147, 1147,  | 
1791  |  |  | 
1792  |  |      1147, 1147, 1147, 1147,  182,  155,  182,  299,  925,  926,  | 
1793  |  |       926,  926,  926,  926,  926,  926,  926,  926,  926, 1145,  | 
1794  |  |       272, 1148, 1148, 1148, 1148, 1148, 1149, 1146, 1146, 1146,  | 
1795  |  |      1146, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,  | 
1796  |  |      1111,  170,  168,  161,  159,  156,  299,  298, 1187, 1187,  | 
1797  |  |       298,  323, 1187, 1187,  322,  321,  298,  298,  320,  319,  | 
1798  |  |       298,  298,  318,  298,  298,  298,  314,  314,  314,  314,  | 
1799  |  |       314,  314,  314,  314,  314,  314, 1188, 1188,  314,  298,  | 
1800  |  |       314,  314,  314,  314,  314,  314,  314,  314,  314,  314,  | 
1801  |  |       314,  314,  314,  314,  314,  314,  314, 1011,  314,  314,  | 
1802  |  |  | 
1803  |  |       314,  314,  314,  299,  298,  314,  298,  298,  298,  298,  | 
1804  |  |       298,  298,  298,  298,  298,  298,  298,  298,  298,  298,  | 
1805  |  |       298,  298,  298, 1017,  303, 1018, 1018, 1018, 1018, 1018,  | 
1806  |  |      1018, 1018, 1018, 1018, 1018,  861,  299, 1152, 1152, 1152,  | 
1807  |  |      1152, 1152, 1152,  296,  290,  289,  288, 1103, 1155, 1155,  | 
1808  |  |      1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,  666,  666,  | 
1809  |  |       287,  286,  156, 1017,  666, 1019, 1019, 1019, 1019, 1019,  | 
1810  |  |      1019, 1019, 1019, 1019, 1019, 1241,  285, 1154, 1154, 1154,  | 
1811  |  |      1154, 1154, 1154, 1154, 1154, 1154, 1154,  342, 1112, 1112,  | 
1812  |  |      1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,  668,  668,  | 
1813  |  |  | 
1814  |  |       280,  258,  156, 1017,  668, 1020, 1020, 1020, 1020, 1020,  | 
1815  |  |      1021, 1022, 1022, 1022, 1022,  342, 1112, 1112, 1112, 1112,  | 
1816  |  |      1112, 1112, 1112, 1112, 1112, 1112, 1127, 1127, 1127, 1127,  | 
1817  |  |      1127, 1127, 1127, 1127, 1127, 1127,  252,  246,  669,  669,  | 
1818  |  |       158,  239,  156, 1017,  669, 1022, 1022, 1022, 1018, 1018,  | 
1819  |  |      1018, 1018, 1018, 1018, 1018, 1127, 1127, 1127, 1127, 1127,  | 
1820  |  |      1127, 1127, 1127, 1127, 1127, 1165,  158, 1166, 1166, 1166,  | 
1821  |  |      1166, 1166, 1166, 1166, 1166, 1166, 1166,  197,  768,  768,  | 
1822  |  |       232,  194,  156,  861,  768, 1030, 1030, 1030, 1030, 1030,  | 
1823  |  |      1030, 1030, 1030, 1030, 1030,  951,  861,  185, 1031, 1031,  | 
1824  |  |  | 
1825  |  |      1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1032,  224,  | 
1826  |  |       222,  200, 1033, 1033, 1033, 1033, 1033, 1033, 1165,  199,  | 
1827  |  |      1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,  | 
1828  |  |      1145,  196, 1146, 1146, 1146, 1146, 1146, 1146, 1033, 1033,  | 
1829  |  |      1033, 1033, 1033, 1033, 1037, 1038, 1039, 1037, 1037, 1037,  | 
1830  |  |      1037, 1037, 1037, 1037, 1040,  195,  192,  182, 1041, 1041,  | 
1831  |  |      1041, 1041, 1041, 1041, 1165,  170, 1168, 1168, 1168, 1168,  | 
1832  |  |      1168, 1169, 1166, 1166, 1166, 1166, 1165,  159, 1166, 1166,  | 
1833  |  |      1166, 1166, 1166, 1166, 1041, 1041, 1041, 1041, 1041, 1041,  | 
1834  |  |       568,  342, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  | 
1835  |  |  | 
1836  |  |      1047, 1047, 1083,  158, 1084, 1084, 1084, 1084, 1084, 1084,  | 
1837  |  |      1084, 1084, 1084, 1084,  156, 1159, 1241, 1241, 1140, 1159,  | 
1838  |  |      1141, 1141, 1141, 1141, 1141, 1141, 1161, 1241, 1241, 1241,  | 
1839  |  |      1161, 1177, 1178, 1179, 1177, 1177, 1177, 1177, 1177, 1177,  | 
1840  |  |      1177,  299, 1083, 1160, 1085, 1085, 1085, 1085, 1085, 1085,  | 
1841  |  |      1085, 1085, 1085, 1085, 1162, 1241, 1211,  156, 1212, 1212,  | 
1842  |  |      1212, 1212, 1212, 1212,  314,  769,  769, 1241,  156, 1241,  | 
1843  |  |      1241,  769,  770,  770,  282,  314, 1241,  282,  770,  282,  | 
1844  |  |      1241,  299, 1083, 1241, 1086, 1086, 1086, 1086, 1086, 1087,  | 
1845  |  |      1088, 1088, 1088, 1088, 1180, 1181, 1182, 1180, 1180, 1180,  | 
1846  |  |  | 
1847  |  |      1180, 1180, 1180, 1180, 1145, 1241, 1146, 1146, 1146, 1146,  | 
1848  |  |      1146, 1146, 1146, 1146, 1146, 1146, 1241, 1241, 1241, 1187,  | 
1849  |  |      1241,  299, 1083, 1187, 1088, 1088, 1088, 1084, 1084, 1084,  | 
1850  |  |      1084, 1084, 1084, 1084, 1145, 1241, 1146, 1146, 1146, 1146,  | 
1851  |  |      1146, 1146, 1146, 1146, 1146, 1146,  861, 1188, 1185, 1185,  | 
1852  |  |      1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1241, 1241,  | 
1853  |  |      1241,  299, 1017, 1241, 1018, 1018, 1018, 1018, 1018, 1018,  | 
1854  |  |      1018, 1018, 1018, 1018, 1241, 1241,  185, 1193, 1194, 1195,  | 
1855  |  |      1193, 1193, 1193, 1193, 1193, 1193, 1193, 1165, 1241, 1166,  | 
1856  |  |      1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1241,  | 
1857  |  |  | 
1858  |  |      1241,  156, 1017, 1241, 1018, 1018, 1018, 1018, 1018, 1018,  | 
1859  |  |      1018, 1018, 1018, 1018, 1165, 1241, 1166, 1166, 1166, 1166,  | 
1860  |  |      1166, 1166, 1166, 1166, 1166, 1166, 1241, 1241, 1241, 1241,  | 
1861  |  |      1241, 1196, 1197, 1198, 1196, 1196, 1196, 1196, 1196, 1196,  | 
1862  |  |      1196,  156,  861, 1241, 1101, 1101, 1101, 1101, 1101, 1101,  | 
1863  |  |      1101, 1101, 1101, 1101, 1032,  861, 1241, 1102, 1102, 1102,  | 
1864  |  |      1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,  299, 1241,  | 
1865  |  |      1241, 1104, 1104, 1104, 1104, 1104, 1104, 1171, 1241, 1172,  | 
1866  |  |      1172, 1172, 1172, 1172, 1172, 1187,  859,  859, 1241, 1187,  | 
1867  |  |       860,  860,  859, 1241, 1241, 1241,  860, 1104, 1104, 1104,  | 
1868  |  |  | 
1869  |  |      1104, 1104, 1104, 1108, 1109, 1110, 1108, 1108, 1108, 1108,  | 
1870  |  |      1108, 1108, 1108, 1188, 1241, 1241,  299, 1111, 1111, 1111,  | 
1871  |  |      1111, 1111, 1111, 1204, 1204, 1204, 1204, 1204, 1204, 1204,  | 
1872  |  |      1204, 1204, 1204, 1241,  314,  944,  944, 1241, 1241, 1241,  | 
1873  |  |      1241,  944, 1241, 1111, 1111, 1111, 1111, 1111, 1111, 1083,  | 
1874  |  |      1241, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084,  | 
1875  |  |      1084, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,  | 
1876  |  |      1205, 1206, 1206, 1206, 1206, 1206, 1207, 1204, 1204, 1204,  | 
1877  |  |      1204, 1028, 1028, 1241, 1099, 1099, 1241, 1028,  299, 1083,  | 
1878  |  |      1099, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084,  | 
1879  |  |  | 
1880  |  |      1084, 1211, 1241, 1212, 1212, 1212, 1212, 1212, 1212, 1212,  | 
1881  |  |      1212, 1212, 1212, 1211, 1241, 1213, 1213, 1213, 1213, 1213,  | 
1882  |  |      1213, 1213, 1213, 1213, 1213, 1241, 1241, 1241,  299, 1140,  | 
1883  |  |      1241, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,  | 
1884  |  |      1141, 1211, 1241, 1214, 1214, 1214, 1214, 1214, 1215, 1212,  | 
1885  |  |      1212, 1212, 1212, 1221, 1222, 1223, 1221, 1221, 1221, 1221,  | 
1886  |  |      1221, 1221, 1221, 1241, 1150, 1150, 1241, 1241,  156, 1140,  | 
1887  |  |      1150, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,  | 
1888  |  |      1142, 1241, 1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200,  | 
1889  |  |       156, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,  | 
1890  |  |  | 
1891  |  |      1204, 1183, 1183, 1241, 1241, 1241, 1241, 1183,  156, 1140,  | 
1892  |  |      1241, 1143, 1143, 1143, 1143, 1143, 1144, 1141, 1141, 1141,  | 
1893  |  |      1141,  156, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,  | 
1894  |  |      1204, 1204, 1225, 1226, 1227, 1225, 1225, 1225, 1225, 1225,  | 
1895  |  |      1225, 1225, 1241, 1241, 1241, 1241, 1241, 1241,  156,  861,  | 
1896  |  |      1241, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  | 
1897  |  |      1152, 1103,  861, 1241, 1153, 1153, 1153, 1153, 1153, 1153,  | 
1898  |  |      1153, 1153, 1153, 1153, 1241, 1241, 1241, 1241, 1154, 1154,  | 
1899  |  |      1154, 1154, 1154, 1154, 1211, 1241, 1212, 1212, 1212, 1212,  | 
1900  |  |      1212, 1212, 1212, 1212, 1212, 1212, 1241, 1241, 1241, 1241,  | 
1901  |  |  | 
1902  |  |      1241, 1241, 1241, 1241, 1154, 1154, 1154, 1154, 1154, 1154,  | 
1903  |  |      1171, 1241, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,  | 
1904  |  |      1172, 1172, 1211, 1241, 1212, 1212, 1212, 1212, 1212, 1212,  | 
1905  |  |      1212, 1212, 1212, 1212, 1228, 1229, 1230, 1228, 1228, 1228,  | 
1906  |  |      1228, 1228, 1228, 1228, 1241, 1241, 1241, 1241, 1241,  299,  | 
1907  |  |      1171, 1241, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,  | 
1908  |  |      1173, 1173, 1241, 1216, 1241, 1217, 1217, 1217, 1217, 1217,  | 
1909  |  |      1217,  299, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,  | 
1910  |  |      1231, 1231, 1241, 1231, 1231, 1231, 1231, 1231, 1231,  299,  | 
1911  |  |      1171, 1241, 1174, 1174, 1174, 1174, 1174, 1175, 1172, 1172,  | 
1912  |  |  | 
1913  |  |      1172, 1172,  299, 1241, 1241, 1241, 1241, 1241, 1241,  156,  | 
1914  |  |      1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,  | 
1915  |  |       156, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,  | 
1916  |  |      1140, 1241, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,  | 
1917  |  |      1141, 1141, 1241, 1241, 1241, 1241, 1241,  156, 1232, 1232,  | 
1918  |  |      1232, 1232, 1232, 1233, 1231, 1231, 1231, 1231, 1235, 1235,  | 
1919  |  |      1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1241,  156,  | 
1920  |  |      1140, 1241, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,  | 
1921  |  |      1141, 1141, 1241, 1241, 1241,  156, 1225, 1225, 1225, 1225,  | 
1922  |  |      1225, 1225, 1225, 1225, 1225, 1225, 1236, 1236, 1236, 1236,  | 
1923  |  |  | 
1924  |  |      1236, 1237, 1235, 1235, 1235, 1235, 1241, 1241, 1241,  156,  | 
1925  |  |      1171, 1241, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,  | 
1926  |  |      1172, 1172, 1241, 1241, 1241, 1238, 1238, 1238, 1238, 1238,  | 
1927  |  |      1238, 1238, 1238, 1238, 1238, 1228, 1228, 1228, 1228, 1228,  | 
1928  |  |      1228, 1228, 1228, 1228, 1228, 1241, 1241, 1241, 1241,  299,  | 
1929  |  |      1171, 1241, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,  | 
1930  |  |      1172, 1172,  299, 1241, 1241, 1238, 1238, 1238, 1238, 1238,  | 
1931  |  |      1238, 1241,  299, 1239, 1239, 1239, 1239, 1239, 1240, 1238,  | 
1932  |  |      1238, 1238, 1238, 1241, 1241, 1241, 1241, 1241, 1241,  299,  | 
1933  |  |      1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,  | 
1934  |  |  | 
1935  |  |      1200, 1200,  299, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1936  |  |       299, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,  | 
1937  |  |      1231, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,  | 
1938  |  |      1199, 1241, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,  | 
1939  |  |      1201, 1201, 1241, 1241, 1241, 1241, 1241, 1241,  156, 1235,  | 
1940  |  |      1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1238,  | 
1941  |  |      1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,  156,  | 
1942  |  |      1199, 1241, 1202, 1202, 1202, 1202, 1202, 1203, 1200, 1200,  | 
1943  |  |      1200, 1200, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1944  |  |      1241, 1241, 1241, 1241, 1241, 1241,  299, 1241, 1241, 1241,  | 
1945  |  |  | 
1946  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,  | 
1947  |  |      1216, 1241, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,  | 
1948  |  |      1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1949  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1950  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,  | 
1951  |  |      1216, 1241, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,  | 
1952  |  |      1218, 1218, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1953  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1954  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,  | 
1955  |  |      1216, 1241, 1219, 1219, 1219, 1219, 1219, 1220, 1217, 1217,  | 
1956  |  |  | 
1957  |  |      1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1958  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1959  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,  | 
1960  |  |      1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,  | 
1961  |  |      1200, 1200, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1962  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1963  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,  | 
1964  |  |      1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,  | 
1965  |  |      1200, 1200, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1966  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1967  |  |  | 
1968  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,  | 
1969  |  |      1216, 1241, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,  | 
1970  |  |      1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1971  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1972  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,  | 
1973  |  |      1216, 1241, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,  | 
1974  |  |      1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1975  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
1976  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,  | 
1977  |  |        77,   77,   77,   77,   77,   77,   77,   77,   77,   77,  | 
1978  |  |  | 
1979  |  |        77,   77,   77,   77,   77,   77,   77,   77,   77,   77,  | 
1980  |  |        77,   84,   84,   84,   84,   84,   84,   84,   84,   84,  | 
1981  |  |        84,   84,   84,   84,   84,   84,   84,   84,   84,   84,  | 
1982  |  |        84,   84,   40,   40,   40,   40,   40,   40,   40,   40,  | 
1983  |  |        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,  | 
1984  |  |        40,   40,   40,   95,   95,   95,   95,   95,   95,   95,  | 
1985  |  |        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,  | 
1986  |  |        95,   95,   95,   95,  102,  102,  102,  102,  102,  102,  | 
1987  |  |       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,  | 
1988  |  |       102,  102,  102,  102,  102,  129,  129,  129,  129,  129,  | 
1989  |  |  | 
1990  |  |       129,  129,  129,  129,  129,  129,  129,  129,  129,  129,  | 
1991  |  |       129,  129,  129,  129,  129,  129,  155, 1241, 1241,  155,  | 
1992  |  |      1241, 1241, 1241,  155, 1241,  155, 1241,  155,  155,  155,  | 
1993  |  |      1241, 1241,  155,  155,  155,  155,  155,  160,  160,  160,  | 
1994  |  |       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,  | 
1995  |  |       160,  160,  160,  160,  160,  160,  160,  160,  165, 1241,  | 
1996  |  |      1241,  165, 1241, 1241,  165,  165, 1241,  165, 1241,  165,  | 
1997  |  |       165,  165,  165, 1241,  165,  165,  165,  165,  165,  169,  | 
1998  |  |      1241, 1241,  169, 1241, 1241, 1241,  169, 1241,  169, 1241,  | 
1999  |  |       169,  169,  169, 1241, 1241,  169,  169,  169,  169,  169,  | 
2000  |  |  | 
2001  |  |       171, 1241, 1241,  171,  171,  171, 1241,  171,  171,  171,  | 
2002  |  |      1241,  171,  171,  171, 1241, 1241,  171,  171,  171,  171,  | 
2003  |  |       171,  207,  207, 1241,  207,  207,  207, 1241,  207,  207,  | 
2004  |  |       207,  207,  207,  207,  207,  207,  207,  207,  207,  207,  | 
2005  |  |       207,  207,  229, 1241, 1241,  229,  229,  229, 1241,  229,  | 
2006  |  |       229,  229, 1241,  229,  229,  229, 1241, 1241,  229,  229,  | 
2007  |  |       229,  229,  229,  233,  233, 1241,  233,  233,  233, 1241,  | 
2008  |  |       233,  233,  233,  233,  233,  233,  233,  233,  233,  233,  | 
2009  |  |       233,  233,  233,  233,  238, 1241, 1241,  238,  238,  238,  | 
2010  |  |      1241,  238,  238,  238, 1241,  238,  238,  238, 1241,  238,  | 
2011  |  |  | 
2012  |  |       238, 1241,  238,  238,  238,  244,  244, 1241,  244,  244,  | 
2013  |  |       244, 1241, 1241,  244,  244,  244,  244,  244,  244,  244,  | 
2014  |  |       244,  244, 1241,  244,  244,  244,  247,  247,  247,  247,  | 
2015  |  |       247,  247,  247,  247,  247,  247,  247,  247,  247,  247,  | 
2016  |  |       247,  247,  247,  247,  247,  247,  247,  251, 1241, 1241,  | 
2017  |  |       251,  251, 1241, 1241,  251,  251,  251, 1241,  251,  251,  | 
2018  |  |       251,  251, 1241,  251,  251,  251,  251,  251,  255,  255,  | 
2019  |  |       255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  | 
2020  |  |       255,  255,  255,  255,  255,  255,  255,  255,  255,  257,  | 
2021  |  |       257, 1241,  257,  257, 1241,  257,  257,  257,  257,  257,  | 
2022  |  |  | 
2023  |  |       257,  257,  257,  257,  257,  257,  257,  257,  257,  257,  | 
2024  |  |       264, 1241, 1241,  264, 1241, 1241,  264,  264, 1241,  264,  | 
2025  |  |      1241,  264,  264,  264,  264, 1241,  264,  264,  264,  264,  | 
2026  |  |       264,  268, 1241, 1241,  268, 1241, 1241, 1241,  268, 1241,  | 
2027  |  |       268, 1241,  268,  268,  268, 1241,  268,  268,  268,  268,  | 
2028  |  |       268,  268,  271, 1241, 1241,  271,  271,  271, 1241,  271,  | 
2029  |  |       271,  271, 1241,  271,  271,  271, 1241,  271,  271,  271,  | 
2030  |  |       271,  271,  271,  208,  208, 1241,  208,  208,  208, 1241,  | 
2031  |  |       208,  208,  208,  208,  208,  208,  208,  208,  208,  208,  | 
2032  |  |       208,  208,  208,  208,  295, 1241, 1241, 1241,  295,  295,  | 
2033  |  |  | 
2034  |  |       295,  295,  295,  295,  295,  295,  295,  295,  295,  295,  | 
2035  |  |       295,  295,  295,  295,  295,  298, 1241, 1241,  298, 1241,  | 
2036  |  |      1241, 1241,  298, 1241,  298, 1241,  298,  298,  298, 1241,  | 
2037  |  |      1241,  298,  298,  298,  298,  298,  300, 1241, 1241,  300,  | 
2038  |  |      1241, 1241,  300,  300, 1241,  300, 1241,  300,  300,  300,  | 
2039  |  |       300, 1241,  300,  300,  300,  300,  300,  302, 1241, 1241,  | 
2040  |  |       302, 1241, 1241, 1241,  302, 1241,  302, 1241,  302,  302,  | 
2041  |  |       302, 1241, 1241,  302,  302,  302,  302,  302,  304, 1241,  | 
2042  |  |      1241,  304,  304,  304, 1241,  304,  304,  304, 1241,  304,  | 
2043  |  |       304,  304, 1241, 1241,  304,  304,  304,  304,  304,  326,  | 
2044  |  |  | 
2045  |  |       326, 1241,  326,  326,  326, 1241,  326,  326,  326,  326,  | 
2046  |  |       326,  326,  326,  326,  326,  326,  326,  326,  326,  326,  | 
2047  |  |       155, 1241, 1241,  155, 1241, 1241, 1241,  155, 1241,  155,  | 
2048  |  |      1241,  155,  155,  155, 1241, 1241,  155,  155,  155,  155,  | 
2049  |  |       155,  331,  331,  331,  331,  331,  331,  331,  331,  331,  | 
2050  |  |       331,  331,  331,  331,  331,  331,  331,  331,  331,  331,  | 
2051  |  |       331,  331,  333,  333, 1241,  333,  333,  333,  333,  333,  | 
2052  |  |       333,  333,  333,  333,  333,  333,  333,  333,  333,  333,  | 
2053  |  |       333,  333,  333,  165, 1241, 1241,  165, 1241, 1241, 1241,  | 
2054  |  |       165, 1241,  165, 1241,  165,  165,  165, 1241, 1241,  165,  | 
2055  |  |  | 
2056  |  |       165,  165,  165,  165,  169, 1241, 1241,  169, 1241, 1241,  | 
2057  |  |      1241,  169, 1241,  169, 1241,  169,  169,  169, 1241, 1241,  | 
2058  |  |       169,  169,  169,  169,  169,  171, 1241, 1241,  171,  171,  | 
2059  |  |       171, 1241,  171,  171,  171, 1241,  171,  171,  171, 1241,  | 
2060  |  |      1241,  171,  171,  171,  171,  171,  172, 1241, 1241,  172,  | 
2061  |  |       172,  172, 1241,  172,  172,  172, 1241,  172,  172,  172,  | 
2062  |  |      1241, 1241,  172,  172,  172,  172,  172,  343,  343,  343,  | 
2063  |  |      1241, 1241, 1241, 1241,  343,  207,  207, 1241,  207,  207,  | 
2064  |  |       207, 1241,  207,  207,  207,  207,  207,  207,  207,  207,  | 
2065  |  |       207,  207,  207,  207,  207,  207,  208,  208, 1241,  208,  | 
2066  |  |  | 
2067  |  |       208,  208, 1241,  208,  208,  208,  208,  208,  208,  208,  | 
2068  |  |       208,  208,  208,  208,  208,  208,  208,  229, 1241, 1241,  | 
2069  |  |       229,  229,  229, 1241,  229,  229,  229, 1241,  229,  229,  | 
2070  |  |       229, 1241, 1241,  229,  229,  229,  229,  229,  230, 1241,  | 
2071  |  |      1241,  230,  230,  230, 1241,  230,  230,  230, 1241,  230,  | 
2072  |  |       230,  230, 1241, 1241,  230,  230,  230,  230,  230,  233,  | 
2073  |  |       233, 1241,  233,  233,  233, 1241,  233,  233,  233,  233,  | 
2074  |  |       233,  233,  233,  233,  233,  233,  233,  233,  233,  233,  | 
2075  |  |       234,  234, 1241,  234,  234,  234, 1241,  234,  234,  234,  | 
2076  |  |       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,  | 
2077  |  |  | 
2078  |  |       234,  238, 1241, 1241,  238,  238,  238, 1241,  238,  238,  | 
2079  |  |       238, 1241,  238,  238,  238, 1241,  238,  238, 1241,  238,  | 
2080  |  |       238,  238,  244,  244, 1241,  244,  244,  244, 1241, 1241,  | 
2081  |  |       244,  244,  244,  244,  244,  244,  244,  244,  244, 1241,  | 
2082  |  |       244,  244,  244,  251, 1241, 1241,  251,  251, 1241, 1241,  | 
2083  |  |       251,  251,  251, 1241,  251,  251,  251,  251, 1241,  251,  | 
2084  |  |       251,  251,  251,  251,  257,  257, 1241,  257,  257, 1241,  | 
2085  |  |       257,  257,  257,  257,  257,  257,  257,  257,  257,  257,  | 
2086  |  |       257,  257,  257,  257,  257,  267, 1241, 1241,  267, 1241,  | 
2087  |  |      1241, 1241,  267, 1241,  267, 1241,  267,  267,  267, 1241,  | 
2088  |  |  | 
2089  |  |      1241,  267,  267,  267,  267,  267,  268, 1241, 1241,  268,  | 
2090  |  |      1241, 1241, 1241,  268, 1241,  268, 1241,  268,  268,  268,  | 
2091  |  |      1241,  268,  268,  268,  268,  268,  268,  269, 1241, 1241,  | 
2092  |  |       269,  269, 1241,  269,  269, 1241, 1241,  269,  269,  271,  | 
2093  |  |      1241, 1241,  271,  271,  271, 1241,  271,  271,  271, 1241,  | 
2094  |  |       271,  271,  271, 1241,  271,  271,  271,  271,  271,  271,  | 
2095  |  |       295, 1241, 1241, 1241,  295,  295,  295,  295,  295,  295,  | 
2096  |  |       295,  295,  295,  295,  295,  295,  295,  295,  295,  295,  | 
2097  |  |       295,  298, 1241, 1241,  298, 1241, 1241, 1241,  298, 1241,  | 
2098  |  |       298, 1241,  298,  298,  298, 1241, 1241,  298,  298,  298,  | 
2099  |  |  | 
2100  |  |       298,  298,  300, 1241, 1241,  300, 1241, 1241, 1241,  300,  | 
2101  |  |      1241,  300, 1241,  300,  300,  300, 1241, 1241,  300,  300,  | 
2102  |  |       300,  300,  300,  302, 1241, 1241,  302, 1241, 1241, 1241,  | 
2103  |  |       302, 1241,  302, 1241,  302,  302,  302, 1241, 1241,  302,  | 
2104  |  |       302,  302,  302,  302,  304, 1241, 1241,  304,  304,  304,  | 
2105  |  |      1241,  304,  304,  304, 1241,  304,  304,  304, 1241, 1241,  | 
2106  |  |       304,  304,  304,  304,  304,  305, 1241, 1241,  305,  305,  | 
2107  |  |       305, 1241,  305,  305,  305, 1241,  305,  305,  305, 1241,  | 
2108  |  |      1241,  305,  305,  305,  305,  305,  326,  326, 1241,  326,  | 
2109  |  |       326,  326, 1241,  326,  326,  326,  326,  326,  326,  326,  | 
2110  |  |  | 
2111  |  |       326,  326,  326,  326,  326,  326,  326,  331,  331,  331,  | 
2112  |  |       331,  331,  331,  331,  331,  331,  331,  331,  331,  331,  | 
2113  |  |       331,  331,  331,  331,  331,  331,  331,  331,  445,  445,  | 
2114  |  |       445,  445,  445,  445,  445,  445,  445,  445,  445,  445,  | 
2115  |  |       445,  445,  445,  445,  445,  445,  445,  445,  445,  155,  | 
2116  |  |      1241, 1241,  155, 1241, 1241, 1241,  155, 1241,  155, 1241,  | 
2117  |  |       155,  155,  155, 1241, 1241,  155,  155,  155,  155,  155,  | 
2118  |  |       459,  459,  459, 1241, 1241, 1241, 1241,  459,  207,  207,  | 
2119  |  |      1241,  207,  207,  207, 1241,  207,  207,  207,  207,  207,  | 
2120  |  |       207,  207,  207,  207,  207,  207,  207,  207,  207,  234,  | 
2121  |  |  | 
2122  |  |       234, 1241,  234,  234,  234,  234,  234,  234,  234,  234,  | 
2123  |  |       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,  | 
2124  |  |       233,  233, 1241,  233,  233,  233, 1241,  233,  233,  233,  | 
2125  |  |       233,  233,  233,  233,  233,  233,  233,  233,  233,  233,  | 
2126  |  |       233,  208,  208, 1241,  208,  208,  208, 1241,  208,  208,  | 
2127  |  |       208,  208,  208,  208,  208,  208,  208,  208,  208,  208,  | 
2128  |  |       208,  208,  567,  567,  567, 1241, 1241, 1241, 1241,  567,  | 
2129  |  |       465,  465,  465, 1241, 1241, 1241, 1241,  465,  331,  331,  | 
2130  |  |       331,  331,  331,  331,  331,  331,  331,  331,  331,  331,  | 
2131  |  |       331,  331,  331,  331,  331,  331,  331,  331,  331,  234,  | 
2132  |  |  | 
2133  |  |       234, 1241,  234,  234,  234, 1241,  234,  234,  234,  234,  | 
2134  |  |       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,  | 
2135  |  |       671,  671,  671, 1241, 1241, 1241, 1241,  671,  675,  675,  | 
2136  |  |       675,  675, 1241, 1241, 1241, 1241,  675,  782,  782,  782,  | 
2137  |  |      1241, 1241, 1241, 1241,  782,  783,  783,  783,  783, 1241,  | 
2138  |  |      1241, 1241, 1241,  783,  876,  876,  876, 1241, 1241, 1241,  | 
2139  |  |      1241,  876,  877,  877,  877,  877, 1241, 1241, 1241, 1241,  | 
2140  |  |       877,  331,  331,  331,  331,  331,  331,  331,  331,  331,  | 
2141  |  |       331,  331,  331,  331,  331,  331,  331,  331,  331,  331,  | 
2142  |  |       331,  331,  269, 1241, 1241,  269,  269, 1241,  269,  269,  | 
2143  |  |  | 
2144  |  |      1241, 1241,  269,  269,  298, 1241, 1241,  298, 1241, 1241,  | 
2145  |  |      1241,  298, 1241,  298, 1241,  298,  298,  298, 1241, 1241,  | 
2146  |  |       298,  298,  298,  298,  298,  948, 1241,  948,  948, 1241,  | 
2147  |  |      1241, 1241, 1241,  948,  966,  966,  966, 1241, 1241, 1241,  | 
2148  |  |      1241,  966,  967,  967,  967,  967, 1241, 1241, 1241, 1241,  | 
2149  |  |       967,  331,  331,  331,  331,  331,  331,  331,  331,  331,  | 
2150  |  |       331,  331,  331,  331,  331,  331,  331,  331,  331,  331,  | 
2151  |  |       331,  331,  269, 1241, 1241,  269,  269, 1241,  269,  269,  | 
2152  |  |      1241, 1241,  269,  269,  298, 1241, 1241,  298, 1241, 1241,  | 
2153  |  |      1241,  298, 1241,  298, 1241,  298,  298,  298, 1241, 1241,  | 
2154  |  |  | 
2155  |  |       298,  298,  298,  298,  298, 1029, 1241, 1029, 1029, 1241,  | 
2156  |  |      1241, 1241, 1241, 1029, 1045, 1045, 1045, 1241, 1241, 1241,  | 
2157  |  |      1241, 1045, 1046, 1046, 1046, 1241, 1241, 1241, 1241, 1241,  | 
2158  |  |      1046, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,  | 
2159  |  |      1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,  | 
2160  |  |      1060, 1060, 1065, 1065, 1241, 1065, 1065, 1065, 1065, 1065,  | 
2161  |  |      1241, 1065, 1241, 1065, 1065, 1065, 1241, 1241, 1065, 1065,  | 
2162  |  |      1065, 1065, 1065, 1071, 1071, 1241, 1071, 1071, 1071, 1071,  | 
2163  |  |      1071, 1241, 1071, 1241, 1071, 1071, 1071, 1241, 1241, 1071,  | 
2164  |  |      1071, 1071, 1071, 1071, 1100, 1241, 1100, 1100, 1241, 1241,  | 
2165  |  |  | 
2166  |  |      1241, 1241, 1100, 1151, 1241, 1151, 1151, 1241, 1241, 1241,  | 
2167  |  |      1241, 1151, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,  | 
2168  |  |      1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,  | 
2169  |  |      1189, 1189, 1189,   21, 1241, 1241, 1241, 1241, 1241, 1241,  | 
2170  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
2171  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
2172  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
2173  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
2174  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
2175  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
2176  |  |  | 
2177  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241  | 
2178  |  |     } ;  | 
2179  |  |  | 
2180  |  | static const flex_int16_t yy_chk[9611] =  | 
2181  |  |     {   0, | 
2182  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
2183  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
2184  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
2185  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
2186  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
2187  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
2188  |  |         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  | 
2189  |  |         1,    1,    1,    1,    1,    1,    2,   23,   43,   41,  | 
2190  |  |         2,   23,   43,    2,    5,    5,  375,    5,    5,    5,  | 
2191  |  |        41,    5,    6,    6,  375,    6,    6,    6,    5,    6,  | 
2192  |  |  | 
2193  |  |         7,    7,   55,    7,    7,    7,    6,    7,    7,   29,  | 
2194  |  |         2,    2,    5,    5,   45,    2,   55,   49,   45,  502,  | 
2195  |  |         6,    6,   49,    2,   69,   45,    2,    3,   69,  116,  | 
2196  |  |        29,    3,   13,   13,    3,   13,   13,   13,   13,    5,  | 
2197  |  |       116,    3,  502,   44,    3,   52,   44,    6,   14,   14,  | 
2198  |  |        44,   14,   14,   14,   14,    7,   44,   29,    3,    3,  | 
2199  |  |        52,    3,   37,   37,   37,   37,   37,   37,   65,    3,  | 
2200  |  |       160,    3,  160,    3,    3,   46,    3,  448,   46,   46,  | 
2201  |  |       107,    8,    8,    3,    8,    8,    8,   13,    8,    8,  | 
2202  |  |        17,   17,   17,   17,   17,   17,   17,   65,   67,    3,  | 
2203  |  |  | 
2204  |  |         4,  107,   67,   14,    4,   34,   34,    4,   59,   63,  | 
2205  |  |        34,   34,   67,   63,    4,   85,  448,    4,   59,   85,  | 
2206  |  |        18,   18,   18,   18,   18,   18,   18,   59,  107,   63,  | 
2207  |  |        34,    4,    4,   76,    4, 1238,    8,   91,   91,  128,  | 
2208  |  |        91,   91,    4,   76,    4,   17,    4,    4,  128,    4,  | 
2209  |  |        93,   93,   76,   93,   93,   34,    4,   36,   36,   36,  | 
2210  |  |        36,   36,   36,   36,   36,   36,   36,   60,  104,   97,  | 
2211  |  |        99,   60,    4,    9,    9,   18,    9,    9,    9,   58,  | 
2212  |  |         9,   58,   58,   58,   58,   58,   58,   58,   58,   58,  | 
2213  |  |        58,   62,  364,  364,   62,   97,   99,  117,   62,  183,  | 
2214  |  |  | 
2215  |  |       117,   60,   60,  125,   62,  157,   60,  101,  101,  157,  | 
2216  |  |       101,  101,  103,  183,   60,  142,  103,   60,  104,  226,  | 
2217  |  |        62,  106,  106,  226,  106,  106,  142,  106,    9,  130,  | 
2218  |  |         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,  | 
2219  |  |         9,    9,    9,    9,    9,    9,    9,    9,   10,   10,  | 
2220  |  |       125,   10,   10,   10,   68,   10,  134,   68,   68,   68,  | 
2221  |  |        68,   68,   68,   68,   68,   68,   68,  103,  112,  112,  | 
2222  |  |       112,  112,  112,  112, 1234,   70,   70,  134,  205,  130,  | 
2223  |  |        70,   70,  111,  111,  111,  111,  111,  111,  111,  111,  | 
2224  |  |       111,  111,  139,  139,  139,  139,  139,  139,  132,  132,  | 
2225  |  |  | 
2226  |  |        70,  132,  132,   10,  134,   10,   10,   10,   10,   10,  | 
2227  |  |        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,  | 
2228  |  |        10,   10,   10,   11,   11,   70,   11,   11,   11,   11,  | 
2229  |  |        11,  143,  205,  331,  143,  331,   11,   11,   11,  126,  | 
2230  |  |       182,  126,  126,  126,  126,  126,  126,  126,  126,  126,  | 
2231  |  |       126,  182,   11,  132,  167,  228,  136,  136,  208,  228,  | 
2232  |  |      1231,  136,  136,  138,  138,  138,  138,  138,  138,  138,  | 
2233  |  |       138,  138,  138,  211,  222,  167,  211,  154,   11,   12,  | 
2234  |  |        12,  136,   12,   12,   12,   12,   12,  154, 1212,  212,  | 
2235  |  |       223,  222,   12,   12,   12,  212,  154,  203,  203,  245,  | 
2236  |  |  | 
2237  |  |       203,  203,  167,  245,  223,  208,  136,  153,   12,  153,  | 
2238  |  |       153,  153,  153,  153,  153,  153,  153,  153,  153,  163,  | 
2239  |  |       163,  163,  163,  163,  163,  163,  163,  163,  163,  240,  | 
2240  |  |       240, 1185,  240,  240,   12,   15,   15,   15,   15,   15,  | 
2241  |  |        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,  | 
2242  |  |        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,  | 
2243  |  |        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,  | 
2244  |  |        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,  | 
2245  |  |        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,  | 
2246  |  |        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,  | 
2247  |  |  | 
2248  |  |        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,  | 
2249  |  |        15,   19,   19,   19,   19,   19,   19,   19,   19,   19,  | 
2250  |  |        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,  | 
2251  |  |        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,  | 
2252  |  |        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,  | 
2253  |  |        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,  | 
2254  |  |        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,  | 
2255  |  |        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,  | 
2256  |  |        19,   19,   19,   19,   19,   19,   19,   28,  260,   28,  | 
2257  |  |       164,  164,  164,  164,  164,  164,  164,  164,  164,  164,  | 
2258  |  |  | 
2259  |  |       221,   28,  807,  234,   28,   28,   28,   28,   28,   28,  | 
2260  |  |        28,   28,   28,   28,   35,  807,   35,   35,   35,   35,  | 
2261  |  |        35,   35,   35,   35,   35,   35,   35,  297, 1183,  224,  | 
2262  |  |        35,   35,   35,   35,   35,   35,  224,  452,  260,  324,  | 
2263  |  |       220,  156,  156,  156,  156,  156,  220,  221,  156,  156,  | 
2264  |  |       234,  262,  156,   35,  220,  262,   35,   35,   35,   35,  | 
2265  |  |        35,   35,   42,  237,  452,   42,  156,  156,  156,  237,  | 
2266  |  |       329,   42,   42,  329,  384,   42,   42,  297,   42,   42,  | 
2267  |  |        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,  | 
2268  |  |        42,   42,  384,  324,   42,   42,   42,   42,   42,   42,  | 
2269  |  |  | 
2270  |  |        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,  | 
2271  |  |        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,  | 
2272  |  |        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,  | 
2273  |  |        42,   42,   42,   42,   42,   42,   42,   42,   47,   47,  | 
2274  |  |        47,   47,   47,   47,   47,   47,   47,   47,   47,  219,  | 
2275  |  |      1166,  219,   47,   47,   47,   47,   47,   47,  332,  393,  | 
2276  |  |       332,  259,   47,  393,  166,  259,   47,  166,  166,  166,  | 
2277  |  |       166,  166,  166,  166,  166,  166,  166,  386,   47,   47,  | 
2278  |  |        47,   47,   47,   47,   56,   56,  374,   56,   56,   56,  | 
2279  |  |        56,   56,  296,  386,   56,   56,  296,  330,   56,  171,  | 
2280  |  |  | 
2281  |  |       171,  374, 1154,  330,  171,  171,  180,  180,  180,  180,  | 
2282  |  |       180,  180,   56,   56,   56,   57,  259,  219,  469,   57,  | 
2283  |  |        57,   57,  345,   57,  171,   57,   57,  345,  343,   57,  | 
2284  |  |       168,  168,  168,  168,  168,  469,  225,  168,  168,  343,  | 
2285  |  |       225,  168,  459,   57,   57,   57,  333,  296,  333,  171,  | 
2286  |  |       225,  264,  381,  459,  381,  168,  168,  168,  178,  178,  | 
2287  |  |       178,  178,  178,  178,  178,  178,  178,  178,  382,  460,  | 
2288  |  |        57,   61,  264,   61,  382,  170,  170,  170,  170,  170,  | 
2289  |  |       460,  385,  170,  170,  385,   61,  170,  567,   61,   61,  | 
2290  |  |        61,   61,   61,   61,   61,   61,   61,   61,  567,  264,  | 
2291  |  |  | 
2292  |  |       170,  170,  170,  174,  174,  174,  174,  174,  174,  174,  | 
2293  |  |       174,  174,  174,  179,  179,  179,  179,  179,  179,  179,  | 
2294  |  |       179,  179,  179,  206,  206,  210,  206,  206,  210,  292,  | 
2295  |  |       292, 1153,  210,  210,  213,  492,   61,   75,  213,  392,  | 
2296  |  |       174,   75,   75,   75,  380,   75,  380,   75,   75,  196,  | 
2297  |  |       196,   75,  389,  196,  392,  196,  196,  416,  416,  196,  | 
2298  |  |       416,  196,  196, 1151,  492,   75,   75,   75,  213,  213,  | 
2299  |  |       229,  229,  415,  213,  443,  229,  229,  292,  206,  236,  | 
2300  |  |       210,  213,  236,  265,  213,  471,  236,  236,  445,  443,  | 
2301  |  |       445,  479,   75,   83,   83,  229,   83,   83,   83,  389,  | 
2302  |  |  | 
2303  |  |        83,  479,  471,  380,  265,   83,  466,   83,  227,  227,  | 
2304  |  |       227,  227,  227,  227,  227,  227,  227,  227,  466,  415,  | 
2305  |  |       229,   83,   83,  232,  232, 1150,  446,  232,  446,  232,  | 
2306  |  |       232,  265,  468,  232,  236,  232,  248,  248,  483,  248,  | 
2307  |  |       248,  256,  256,  481,  256,  256,  472,  483,   83,   83,  | 
2308  |  |        92,  468,   92,  249,  249,  249,  249,  249,  249,  249,  | 
2309  |  |       249,  249,  249,  481,   92,  472,  489,   92,   92,   92,  | 
2310  |  |        92,   92,   92,   92,   92,   92,   92,  108,  261,  261,  | 
2311  |  |       108,  261,  261,  489,  470,  252,  108,  108,  470,  252,  | 
2312  |  |       108,  252,  252,  108,  108,  328,  256,  272,  328,  252,  | 
2313  |  |  | 
2314  |  |      1146,  272,  328,  328,  272,  373,  373,  108,  373,  108,  | 
2315  |  |       528,  272,  470,  528,  252,  273,  273,  273,  273,  273,  | 
2316  |  |       273,  273,  273,  273,  273,  272,  272,  278,  278,  278,  | 
2317  |  |       278,  278,  278,  108,  108,  108,  109,  477,  802,  109,  | 
2318  |  |       373,  802,  109,  109,  486,  109,  109,  109,  109,  109,  | 
2319  |  |       328,  477,  109,  109,  266,  266,  266,  266,  456,  456,  | 
2320  |  |       456,  266,  266,  488,  486,  266,  109,  109,  109,  276,  | 
2321  |  |       276,  276,  276,  276,  276,  276,  276,  276,  276,  488,  | 
2322  |  |       266,  266,  277,  277,  277,  277,  277,  277,  277,  277,  | 
2323  |  |       277,  277,  109,  109,  109,  110,  504,  581,  110,  110,  | 
2324  |  |  | 
2325  |  |       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,  | 
2326  |  |       110,  110,  581,  504,  110,  110,  110,  110,  110,  110,  | 
2327  |  |       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,  | 
2328  |  |       110,  110,  110,  110,  110,  110,  110,  473, 1139,  505,  | 
2329  |  |       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,  | 
2330  |  |       110,  110,  110,  110,  110,  110,  110,  113,  473,  113,  | 
2331  |  |       113,  113,  113,  113,  113,  113,  113,  113,  113,  113,  | 
2332  |  |       478,  476,  484,  113,  113,  113,  113,  113,  113,  476,  | 
2333  |  |       484,  270,  270,  270,  270,  270,  505,  491,  270,  270,  | 
2334  |  |       491,  478,  270,  312,  312,  312,  312,  312,  312,  113,  | 
2335  |  |  | 
2336  |  |       113,  113,  113,  113,  113,  114,  270,  270,  270,  114,  | 
2337  |  |       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,  | 
2338  |  |       114,  114,  491,  485,  114,  114,  114,  114,  114,  114,  | 
2339  |  |       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,  | 
2340  |  |       114,  114,  114,  114,  114,  114,  114,  485, 1133,  114,  | 
2341  |  |       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,  | 
2342  |  |       114,  114,  114,  114,  114,  114,  114,  118,  118,  118,  | 
2343  |  |       118,  118,  118,  118,  118,  118,  118,  118,  480,  537,  | 
2344  |  |       494,  118,  118,  118,  118,  118,  118,  494,  288,  288,  | 
2345  |  |       480,  118,  288,  482,  288,  288, 1117,  594,  288,  475,  | 
2346  |  |  | 
2347  |  |       288,  442,  442,  475,  442,  594,  537,  118,  118,  118,  | 
2348  |  |       118,  118,  118,  137,  482,  137,  137,  137,  137,  137,  | 
2349  |  |       137,  137,  137,  137,  137,  137,  493,  475,  506,  137,  | 
2350  |  |       137,  137,  137,  137,  137,  506,  442,  474,  608,  556,  | 
2351  |  |       299,  299,  299,  299,  299,  503,  556,  299,  299,  474,  | 
2352  |  |       580,  299,  137,  533,  474,  137,  137,  137,  137,  137,  | 
2353  |  |       137,  140,  493,  517,  140,  299,  299,  299,  517,  580,  | 
2354  |  |       140,  140,  503,  608,  140,  140, 1116,  140,  140,  140,  | 
2355  |  |       140,  140,  140,  140,  140,  140,  140,  140,  140,  140,  | 
2356  |  |       140,  503,  533,  140,  140,  140,  140,  140,  140,  140,  | 
2357  |  |  | 
2358  |  |       140,  140,  140,  140,  140,  140,  140,  140,  140,  140,  | 
2359  |  |       140,  140,  140,  140,  140,  140,  140,  140,  140,  140,  | 
2360  |  |       140,  140,  140,  140,  140,  140,  140,  140,  140,  140,  | 
2361  |  |       140,  140,  140,  140,  140,  140,  140,  144,  144,  144,  | 
2362  |  |       144,  144,  144,  144,  144,  144,  144,  144,  849,  555,  | 
2363  |  |       849,  144,  144,  144,  144,  144,  144,  553,  321,  321,  | 
2364  |  |       553,  144,  321, 1112,  321,  321,  304,  304,  321,  542,  | 
2365  |  |       321,  304,  304,  501,  542,  501,  597,  144,  144,  144,  | 
2366  |  |       144,  144,  144,  151,  151,  555,  151,  151,  151,  151,  | 
2367  |  |       151,  304,  553,  151,  151, 1100,  597,  151,  307,  307,  | 
2368  |  |  | 
2369  |  |       307,  307,  307,  307,  307,  307,  307,  307,  587,  554,  | 
2370  |  |       585,  151,  151,  151,  152,  598,  304,  518,  152,  152,  | 
2371  |  |       152,  518,  152,  598,  152,  152,  587,  593,  152,  301,  | 
2372  |  |       301,  301,  301,  301,  585,  307,  301,  301,  554,  501,  | 
2373  |  |       301,  593,  152,  152,  152,  518,  586,  325,  325,  588,  | 
2374  |  |       325,  325,  586,  592,  301,  301,  301,  582,  596,  592,  | 
2375  |  |       303,  303,  303,  303,  303,  588,  919,  303,  303,  152,  | 
2376  |  |       173,  303,  596,  173,  173,  173,  173,  173,  582,  919,  | 
2377  |  |       173,  173,  605,  606,  173,  303,  303,  303,  310,  310,  | 
2378  |  |       310,  310,  310,  310,  310,  310,  310,  310,  173,  173,  | 
2379  |  |  | 
2380  |  |       173,  175,  325,  175,  175,  175,  175,  175,  175,  175,  | 
2381  |  |       175,  175,  175,  175,  606,  605, 1099,  175,  175,  175,  | 
2382  |  |       175,  175,  175,  311,  311,  311,  311,  311,  311,  311,  | 
2383  |  |       311,  311,  311,  463,  463,  463,  463,  463,  463,  589,  | 
2384  |  |       175,  569,  569,  175,  175,  175,  175,  175,  175,  184,  | 
2385  |  |       601,  539,  184,  569,  609,  539,  692,  601,  184,  184,  | 
2386  |  |       609,  589,  184,  184,  692,  184,  184,  184,  184,  184,  | 
2387  |  |       184,  184,  184,  184,  184,  184,  184,  184,  184,  539,  | 
2388  |  |      1091,  184,  184,  184,  184,  184,  184,  184,  184,  184,  | 
2389  |  |       184,  184,  184,  184,  184,  184,  184,  184,  184,  184,  | 
2390  |  |  | 
2391  |  |       184,  184,  184,  184,  184,  184,  184,  184,  184,  184,  | 
2392  |  |       184,  184,  184,  184,  184,  184,  184,  184,  184,  184,  | 
2393  |  |       184,  184,  184,  184,  184,  185,  185,  185,  185,  185,  | 
2394  |  |       185,  185,  185,  185,  185,  185, 1060,  659, 1060,  185,  | 
2395  |  |       185,  185,  185,  185,  185,  334,  334,  334,  334,  334,  | 
2396  |  |       334,  334,  334,  334,  334,  335,  335,  335,  335,  335,  | 
2397  |  |       335,  335,  335,  335,  335,  185,  185,  185,  185,  185,  | 
2398  |  |       185,  207,  659,  701,  521,  207,  207,  207,  521,  207,  | 
2399  |  |       387,  207,  207,  599,  387,  207,  451,  387,  451,  451,  | 
2400  |  |       451,  451,  451,  451,  387,  595,  600,  701, 1090,  207,  | 
2401  |  |  | 
2402  |  |       207,  207,  521,  607,  599,  600,  603,  515,  387,  387,  | 
2403  |  |       394,  515,  394,  394,  394,  394,  394,  394,  394,  394,  | 
2404  |  |       394,  394,  616,  521,  595,  451,  207,  231,  616,  603,  | 
2405  |  |       231,  231,  231,  231,  231,  515,  607,  231,  231, 1082,  | 
2406  |  |       395,  231,  395,  395,  395,  395,  395,  395,  395,  395,  | 
2407  |  |       395,  395,  515,  660,  657,  231,  231,  231,  233,  660,  | 
2408  |  |       656,  516,  233,  233,  233,  516,  233,  662,  233,  233,  | 
2409  |  |       604,  396,  233,  396,  396,  396,  396,  396,  396,  396,  | 
2410  |  |       396,  396,  396,  571,  571,  657,  233,  233,  233,  516,  | 
2411  |  |       418,  855,  604,  656,  418,  571,  511,  418,  511,  511,  | 
2412  |  |  | 
2413  |  |       511,  511,  511,  511,  418,  613,  662,  613,  516,  614,  | 
2414  |  |       615,  689,  658,  233,  268,  671,  813,  268,  418,  418,  | 
2415  |  |       813,  614,  615,  268,  268,  694,  671,  268,  689,  855,  | 
2416  |  |       268,  268,  447,  447,  447,  447,  447,  447,  447,  447,  | 
2417  |  |       447,  447,  743,  694,  268,  658,  268,  455,  455,  455,  | 
2418  |  |       455,  455,  455,  455,  455,  455,  455,  455,  462,  462,  | 
2419  |  |       462,  462,  462,  462,  462,  462,  462,  462,  688,  447,  | 
2420  |  |       268,  268,  268,  271,  688,  697,  271,  675,  613,  271,  | 
2421  |  |       271,  743,  271,  271,  271,  271,  271, 1081,  675,  271,  | 
2422  |  |       271,  465,  697,  465,  465,  465,  465,  465,  465,  465,  | 
2423  |  |  | 
2424  |  |       465,  465,  465,  271,  271,  271,  507,  507,  507,  507,  | 
2425  |  |       507,  507,  507,  507,  507,  507,  509,  702,  509,  509,  | 
2426  |  |       509,  509,  509,  509,  509,  509,  509,  509,  693,  271,  | 
2427  |  |       271,  271,  274,  702,  274,  274,  274,  274,  274,  274,  | 
2428  |  |       274,  274,  274,  274,  274,  695, 1080,  693,  274,  274,  | 
2429  |  |       274,  274,  274,  274,  510,  699,  510,  510,  510,  510,  | 
2430  |  |       510,  510,  510,  510,  510,  510,  695,  699, 1209,  543,  | 
2431  |  |       676,  676,  699,  543,  274,  274,  274,  274,  274,  274,  | 
2432  |  |       279,  704,  676, 1209,  279,  279,  279,  279,  279,  279,  | 
2433  |  |       279,  279,  279,  279,  279,  279,  279,  543,  704,  279,  | 
2434  |  |  | 
2435  |  |       279,  279,  279,  279,  279,  279,  279,  279,  279,  279,  | 
2436  |  |       279,  279,  279,  279,  279,  279,  279,  279,  279,  279,  | 
2437  |  |       279,  279,  800,  800,  279,  279,  279,  279,  279,  279,  | 
2438  |  |       279,  279,  279,  279,  279,  279,  279,  279,  279,  279,  | 
2439  |  |       279,  279,  280,  280,  280,  280,  280,  280,  280,  280,  | 
2440  |  |       280,  280,  280,  677,  677,  698,  280,  280,  280,  280,  | 
2441  |  |       280,  280,  522,  703,  808,  677,  522,  808,  519,  520,  | 
2442  |  |       712,  703,  519,  520,  698,  523, 1078,  679,  679,  523,  | 
2443  |  |       707,  712,  280,  280,  280,  280,  280,  280,  306,  679,  | 
2444  |  |       522,  306,  306,  306,  306,  306,  519,  520,  306,  306,  | 
2445  |  |  | 
2446  |  |       522,  707,  306,  523,  519,  524,  525,  731,  754,  524,  | 
2447  |  |       525,  520,  731,  754,  717,  523,  306,  306,  306,  308,  | 
2448  |  |      1074,  308,  308,  308,  308,  308,  308,  308,  308,  308,  | 
2449  |  |       308,  308,  717,  524,  525,  308,  308,  308,  308,  308,  | 
2450  |  |       308,  716,  812,  583,  590,  526,  622,  583,  590,  526,  | 
2451  |  |       622,  806,  716,  524,  812,  525,  806,  718,  308,  803,  | 
2452  |  |       803,  308,  308,  308,  308,  308,  308,  313,  718, 1052,  | 
2453  |  |       313,  583,  590,  526,  622,  796,  313,  313,  932,  932,  | 
2454  |  |       313,  313,  796,  313,  313,  313,  313,  313,  313,  313,  | 
2455  |  |       313,  313,  313,  313,  313,  313,  313,  526,  622,  313,  | 
2456  |  |  | 
2457  |  |       313,  313,  313,  313,  313,  313,  313,  313,  313,  313,  | 
2458  |  |       313,  313,  313,  313,  313,  313,  313,  313,  313,  313,  | 
2459  |  |       313,  313,  313,  313,  313,  313,  313,  313,  313,  313,  | 
2460  |  |       313,  313,  313,  313,  313,  313,  313,  313,  313,  313,  | 
2461  |  |       313,  313,  313,  314,  314,  314,  314,  314,  314,  314,  | 
2462  |  |       314,  314,  314,  314,  764,  782,  891,  314,  314,  314,  | 
2463  |  |       314,  314,  314,  527,  891,  764,  782,  527,  532,  532,  | 
2464  |  |       532,  532,  532,  532,  532,  532,  532,  532,  691,  715,  | 
2465  |  |       821,  715,  691,  314,  314,  314,  314,  314,  314,  326,  | 
2466  |  |       783,  527,  835,  326,  326,  326,  834,  326,  821,  326,  | 
2467  |  |  | 
2468  |  |       326,  783,  834,  326,  835,  532,  691,  527, 1046,  574,  | 
2469  |  |       574,  574,  574,  574,  574,  574,  574,  326,  326,  326,  | 
2470  |  |       536,  574,  536,  536,  536,  536,  536,  536,  562,  562,  | 
2471  |  |       562,  562,  562,  562,  562,  562,  562,  562,  562,  715,  | 
2472  |  |       809,  826, 1029,  809,  326,  336,  838,  336,  336,  336,  | 
2473  |  |       336,  336,  336,  336,  336,  336,  336,  838,  826,  536,  | 
2474  |  |       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,  | 
2475  |  |       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,  | 
2476  |  |       825,  839, 1028,  825,  336,  337,  839,  337,  337,  337,  | 
2477  |  |       337,  337,  337,  337,  337,  337,  337,  576,  576,  576,  | 
2478  |  |  | 
2479  |  |       576,  576,  576,  576,  576,  576,  576,  577,  577,  577,  | 
2480  |  |       577,  577,  577,  661,  661,  661,  661,  661,  661,  661,  | 
2481  |  |       661,  661,  661, 1024,  337,  338,  848,  338,  338,  338,  | 
2482  |  |       338,  338,  338,  338,  338,  338,  338,  579,  848,  579,  | 
2483  |  |       579,  579,  579,  579,  579,  579,  579,  579,  579,  617,  | 
2484  |  |       661,  617,  617,  617,  617,  617,  617,  617,  617,  617,  | 
2485  |  |       617,  824,  926,  824,  338,  339,  339,  339,  339,  339,  | 
2486  |  |       339,  339,  339,  339,  339,  339,  969,  969, 1013,  339,  | 
2487  |  |       339,  339,  339,  339,  339,  618,  862,  618,  618,  618,  | 
2488  |  |       618,  618,  618,  618,  618,  618,  618,  801,  862,  845,  | 
2489  |  |  | 
2490  |  |       926, 1006,  339,  845,  801,  339,  339,  339,  339,  339,  | 
2491  |  |       339,  342,  342,  342,  342,  342,  342,  342,  342,  342,  | 
2492  |  |       342,  342,  824, 1005,  896,  342,  342,  342,  342,  342,  | 
2493  |  |       342,  619,  827,  619,  619,  619,  619,  619,  619,  619,  | 
2494  |  |       619,  619,  619,  628,  850,  896, 1003,  628,  850,  902,  | 
2495  |  |       827,  342,  342,  342,  342,  342,  342,  344,  344,  344,  | 
2496  |  |       344,  344,  344,  344,  344,  344,  344,  344,  344,  994,  | 
2497  |  |       902,  628,  344,  344,  344,  344,  344,  344,  623,  628,  | 
2498  |  |       632,  626,  623,  634,  632,  626,  672,  634,  672,  672,  | 
2499  |  |       672,  672,  672,  672,  672,  672,  672,  672,  344,  344,  | 
2500  |  |  | 
2501  |  |       344,  344,  344,  344,  346,  852,  623,  346,  632,  626,  | 
2502  |  |       852,  634,  623,  346,  346,  626,  632,  346,  346, 1048,  | 
2503  |  |       346,  346,  346,  346,  346,  346,  346,  346,  346,  346,  | 
2504  |  |       346,  346,  346,  346,  634, 1048,  346,  346,  346,  346,  | 
2505  |  |       346,  346,  346,  346,  346,  346,  346,  346,  346,  346,  | 
2506  |  |       346,  346,  346,  346,  346,  346,  346,  346,  346,  346,  | 
2507  |  |       346,  346,  346,  346,  346,  346,  346,  346,  346,  346,  | 
2508  |  |       346,  346,  346,  346,  346,  346,  346,  346,  346,  346,  | 
2509  |  |       347,  347,  347,  347,  347,  347,  347,  347,  347,  347,  | 
2510  |  |       347,  784,  784,  990,  347,  347,  347,  347,  347,  347,  | 
2511  |  |  | 
2512  |  |       627,  629,  847,  784,  627,  629,  864,  630,  847,  935,  | 
2513  |  |       633,  630,  935,  631,  633,  696,  851,  631,  864,  696,  | 
2514  |  |       347,  347,  347,  347,  347,  347,  371,  851,  627,  629,  | 
2515  |  |       371,  371,  371,  853,  371,  630,  371,  371,  633,  876,  | 
2516  |  |       371,  631,  627,  696,  893,  633,  877,  785,  785,  630,  | 
2517  |  |       876,  853,  893,  989,  371,  371,  371,  877,  629,  785,  | 
2518  |  |       665,  631,  665,  665,  665,  665,  665,  665,  673,  897,  | 
2519  |  |       673,  673,  673,  673,  673,  673,  673,  673,  673,  673,  | 
2520  |  |       897,  371,  372,  787,  787,  889,  372,  372,  372,  372,  | 
2521  |  |       372,  889,  372,  372, 1004,  787,  372, 1004,  674,  665,  | 
2522  |  |  | 
2523  |  |       674,  674,  674,  674,  674,  674,  674,  674,  674,  674,  | 
2524  |  |       372,  372,  372,  678,  678,  678,  678,  678,  678,  678,  | 
2525  |  |       678,  678,  678,  682,  682,  682,  682,  682,  682,  682,  | 
2526  |  |       682,  962,  894,  878,  878,  682,  700,  372,  390,  894,  | 
2527  |  |       700,  892,  390,  390,  390,  878,  390,  892,  390,  390,  | 
2528  |  |       934, 1018,  390,  684,  684,  684,  684,  684,  684,  684,  | 
2529  |  |       684,  684,  684,  934,  700,  966,  390,  390,  390,  685,  | 
2530  |  |       685,  685,  685,  685,  685,  687,  966,  687,  687,  687,  | 
2531  |  |       687,  687,  687,  687,  687,  687,  687,  705,  706,  898,  | 
2532  |  |      1018,  705,  706,  390,  391,  970,  970,  898,  391,  391,  | 
2533  |  |  | 
2534  |  |       391,  391,  391,  907,  391,  391,  949,  723,  391,  723,  | 
2535  |  |       723,  723,  723,  723,  723,  705,  706,  993,  949,  993,  | 
2536  |  |       907,  948,  391,  391,  391,  719,  719,  719,  719,  719,  | 
2537  |  |       719,  719,  719,  719,  719,  721,  950,  721,  721,  721,  | 
2538  |  |       721,  721,  721,  721,  721,  721,  721,  944,  950,  391,  | 
2539  |  |       397,  397,  397,  397,  397,  397,  397,  397,  397,  397,  | 
2540  |  |       397, 1015, 1015, 1224,  397,  397,  397,  397,  397,  397,  | 
2541  |  |       722,  952,  722,  722,  722,  722,  722,  722,  722,  722,  | 
2542  |  |       722,  722,  993,  952, 1224,  724,  879,  879,  967,  724,  | 
2543  |  |       397,  397,  397,  397,  397,  397,  399, 1186,  879,  967,  | 
2544  |  |  | 
2545  |  |       399,  399,  399,  399,  399,  399,  399,  399,  399,  399,  | 
2546  |  |       399,  399,  399,  724, 1186,  399,  399,  399,  399,  399,  | 
2547  |  |       399,  399,  399,  399,  399,  399,  399,  399,  399,  399,  | 
2548  |  |       399,  399,  399,  399,  399,  399,  399,  399, 1047, 1047,  | 
2549  |  |       399,  399,  399,  399,  399,  399,  399,  399,  399,  399,  | 
2550  |  |       399,  399,  399,  399,  399,  399,  399,  399,  400,  400,  | 
2551  |  |       400,  400,  400,  400,  400,  400,  400,  400,  400, 1063,  | 
2552  |  |       939, 1063,  400,  400,  400,  400,  400,  400,  771,  771,  | 
2553  |  |       771,  771,  771,  771,  771,  771,  771,  771,  725,  728,  | 
2554  |  |       729,  730,  725,  728,  729,  730,  977,  936,  400,  400,  | 
2555  |  |  | 
2556  |  |       400,  400,  400,  400,  419,  977,  419,  419,  419,  419,  | 
2557  |  |       419,  419,  419,  419,  419,  419,  725,  728,  729,  730,  | 
2558  |  |       974,  931,  992,  992,  725,  992,  992, 1022,  732,  733,  | 
2559  |  |       734,  974,  732,  733,  734,  729,  735,  736,  730, 1014,  | 
2560  |  |       735,  736, 1014,  419,  420,  921,  420,  420,  420,  420,  | 
2561  |  |       420,  420,  420,  420,  420,  420,  732,  733,  734,  881,  | 
2562  |  |       881,  979,  920,  983,  735,  736, 1022,  917,  747,  979,  | 
2563  |  |       983,  881,  747,  746,  734,  746,  746,  746,  746,  746,  | 
2564  |  |       746,  733, 1016,  420,  421, 1016,  421,  421,  421,  421,  | 
2565  |  |       421,  421,  421,  421,  421,  421,  747, 1092, 1092,  742,  | 
2566  |  |  | 
2567  |  |       742,  742,  742,  742,  742,  742,  742,  742,  742,  751,  | 
2568  |  |       755,  758,  746,  751,  755,  758,  916, 1056,  759, 1189,  | 
2569  |  |       911, 1189,  759,  421,  422, 1056,  422,  422,  422,  422,  | 
2570  |  |       422,  422,  422,  422,  422,  422,  742,  751,  755,  758,  | 
2571  |  |       422,  422,  422,  422,  422,  422,  759,  773,  773,  773,  | 
2572  |  |       773,  773,  773,  773,  773,  773,  773,  774,  774,  774,  | 
2573  |  |       774,  774,  774, 1158,  909,  905,  422,  422,  422,  422,  | 
2574  |  |       422,  422,  424,  424,  424,  424,  424,  424,  424,  424,  | 
2575  |  |       424,  424,  975, 1158,  904,  903,  424,  424,  424,  424,  | 
2576  |  |       424,  424,  776,  975,  776,  776,  776,  776,  776,  776,  | 
2577  |  |  | 
2578  |  |       776,  776,  776,  776,  781, 1084,  781,  781,  781,  781,  | 
2579  |  |       781,  781,  424,  424,  424,  424,  424,  424,  440,  968,  | 
2580  |  |       968,  901,  440,  440,  440, 1192,  440, 1192,  440,  440,  | 
2581  |  |       860,  968,  440,  777,  777,  777,  777,  777,  777,  777,  | 
2582  |  |       777,  777,  777,  859, 1084,  846,  440,  440,  440,  779,  | 
2583  |  |      1030,  779,  779,  779,  779,  779,  779,  779,  779,  779,  | 
2584  |  |       779,  780, 1030,  780,  780,  780,  780,  780,  780,  780,  | 
2585  |  |       780,  780,  780,  440,  441,  982,  984, 1365,  441,  441,  | 
2586  |  |       441,  441,  441, 1365,  441,  441,  982,  984,  441,  786,  | 
2587  |  |       786,  786,  786,  786,  786,  786,  786,  786,  786,  840,  | 
2588  |  |  | 
2589  |  |       837, 1031,  441,  441,  441,  790,  790,  790,  790,  790,  | 
2590  |  |       790,  790,  790, 1031,  836,  833, 1033,  790,  792,  792,  | 
2591  |  |       792,  792,  792,  792,  792,  792,  792,  792, 1033,  441,  | 
2592  |  |       449,  832,  449,  449,  449,  449,  449,  449,  449,  449,  | 
2593  |  |       449,  449,  793,  793,  793,  793,  793,  793,  795,  823,  | 
2594  |  |       795,  795,  795,  795,  795,  795,  795,  795,  795,  795,  | 
2595  |  |       798,  804,  810,  816,  798,  804,  810,  816, 1088,  449,  | 
2596  |  |       450,  991,  450,  450,  450,  450,  450,  450,  450,  450,  | 
2597  |  |       450,  450,  870,  870,  870,  870,  870,  870,  798,  804,  | 
2598  |  |       810,  816,  822,  820,  991,  818,  991,  991, 1049,  818,  | 
2599  |  |  | 
2600  |  |       887,  887,  887,  887,  887,  887,  815, 1088, 1049,  450,  | 
2601  |  |       461,  461,  461,  461,  461,  461,  461,  461,  461,  461,  | 
2602  |  |       461,  461,  461,  818,  814,  778,  461,  461,  461,  461,  | 
2603  |  |       461,  461,  828,  828,  828,  828,  828,  828,  828,  828,  | 
2604  |  |       828,  828,  828,  918, 1058,  906,  906,  918,  906,  906,  | 
2605  |  |       770, 1058,  461,  461,  461,  461,  461,  461,  464,  464,  | 
2606  |  |       464,  464,  464,  464,  464,  464,  464,  464,  464,  464,  | 
2607  |  |       908,  918,  769,  464,  464,  464,  464,  464,  464,  829,  | 
2608  |  |       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,  | 
2609  |  |       768,  763,  918,  908,  762,  908,  908, 1141, 1045,  464,  | 
2610  |  |  | 
2611  |  |       464,  464,  464,  464,  464,  467,  906,  980,  467, 1045,  | 
2612  |  |       761,  980,  760,  757,  467,  467,  756,  753,  467,  467,  | 
2613  |  |       908,  467,  467,  467,  467,  467,  467,  467,  467,  467,  | 
2614  |  |       467,  467,  467,  467,  467,  980, 1141,  467,  467,  467,  | 
2615  |  |       467,  467,  467,  467,  467,  467,  467,  467,  467,  467,  | 
2616  |  |       467,  467,  467,  467,  467,  467,  467,  467,  467,  467,  | 
2617  |  |       467,  467,  467,  467,  467,  467,  467,  467,  467,  467,  | 
2618  |  |       467,  467,  467,  467,  467,  467,  467,  467,  467,  467,  | 
2619  |  |       467,  512,  512,  512,  512,  512,  512,  512,  512,  512,  | 
2620  |  |       512,  512, 1260, 1260, 1260,  512,  512,  512,  512,  512,  | 
2621  |  |  | 
2622  |  |       512,  830,  830,  830,  830,  830,  830,  830,  830,  830,  | 
2623  |  |       830,  830,  914,  914,  914,  914,  914,  914,  914,  752,  | 
2624  |  |      1057,  512,  512,  512,  512,  512,  512,  513, 1057,  750,  | 
2625  |  |      1172,  513,  513,  513,  513,  513,  513,  513,  513,  513,  | 
2626  |  |       513,  513,  513,  513,  749,  748,  513,  513,  513,  513,  | 
2627  |  |       513,  513,  513,  513,  513,  513,  513,  513,  513,  513,  | 
2628  |  |       513,  513,  513,  513,  513,  513,  513,  513,  513, 1172,  | 
2629  |  |       741,  513,  513,  513,  513,  513,  513,  513,  513,  513,  | 
2630  |  |       513,  513,  513,  513,  513,  513,  513,  513,  513,  514,  | 
2631  |  |      1200, 1217, 1101,  514,  854,  854,  854,  854,  854,  854,  | 
2632  |  |  | 
2633  |  |       854,  854,  854,  854, 1101,  727, 1102,  514,  514,  514,  | 
2634  |  |       514,  514,  514,  514,  514,  514,  514,  514, 1102, 1123,  | 
2635  |  |       726,  514,  514,  514,  514,  514,  514, 1123,  720, 1200,  | 
2636  |  |      1217,  854,  858,  858,  858,  858,  858,  858,  858,  958,  | 
2637  |  |       958,  958,  958,  958,  958,  714,  713,  514,  514,  514,  | 
2638  |  |       514,  514,  514,  534,  711,  534,  534,  534,  534,  534,  | 
2639  |  |       534,  534,  534,  534,  534, 1061, 1061,  710, 1061, 1061,  | 
2640  |  |       858,  861,  861,  861,  861,  861,  861,  861,  861,  861,  | 
2641  |  |       861,  863,  863,  863,  863,  863,  863,  863,  863,  863,  | 
2642  |  |       863,  709,  534,  535, 1104,  535,  535,  535,  535,  535,  | 
2643  |  |  | 
2644  |  |       535,  535,  535,  535,  535,  867, 1104,  867,  867,  867,  | 
2645  |  |       867,  867,  867, 1292, 1292, 1292, 1118,  867,  869,  869,  | 
2646  |  |       869,  869,  869,  869,  869,  869,  869,  869, 1118,  708,  | 
2647  |  |       985,  690,  535,  557,  985,  557,  557,  557,  557,  557,  | 
2648  |  |       557,  557,  557,  557,  557,  872,  669,  872,  872,  872,  | 
2649  |  |       872,  872,  872,  872,  872,  872,  872,  873,  985,  873,  | 
2650  |  |       873,  873,  873,  873,  873,  873,  873,  873,  873,  668,  | 
2651  |  |       987,  667,  557,  558,  987,  558,  558,  558,  558,  558,  | 
2652  |  |       558,  558,  558,  558,  558,  874,  666,  874,  874,  874,  | 
2653  |  |       874,  874,  874,  874,  874,  874,  874,  875,  987,  875,  | 
2654  |  |  | 
2655  |  |       875,  875,  875,  875,  875,  875,  875,  875,  875,  655,  | 
2656  |  |       654,  653,  558,  559,  652,  559,  559,  559,  559,  559,  | 
2657  |  |       559,  559,  559,  559,  559,  880,  880,  880,  880,  880,  | 
2658  |  |       880,  880,  880,  880,  880,  884,  884,  884,  884,  884,  | 
2659  |  |       884,  884,  884,  651, 1064,  650, 1064,  884, 1157, 1157,  | 
2660  |  |      1157, 1157,  559,  572,  572,  572,  572,  572,  572,  572,  | 
2661  |  |       572,  572,  572,  572,  572,  572,  649,  648,  647,  572,  | 
2662  |  |       572,  572,  572,  572,  572,  886,  886,  886,  886,  886,  | 
2663  |  |       886,  886,  886,  886,  886,  910,  910,  910,  910,  910,  | 
2664  |  |       910,  910,  910,  910,  910,  572,  572,  572,  572,  572,  | 
2665  |  |  | 
2666  |  |       572,  575,  575,  575,  575,  575,  575,  575,  575,  575,  | 
2667  |  |       575,  575,  575,  575, 1064,  646,  645,  575,  575,  575,  | 
2668  |  |       575,  575,  575,  888,  644,  888,  888,  888,  888,  888,  | 
2669  |  |       888,  888,  888,  888,  888,  929,  929,  929,  929,  929,  | 
2670  |  |       929,  929,  643,  575,  575,  575,  575,  575,  575,  578,  | 
2671  |  |       578,  578,  578,  578,  578,  578,  578,  578,  578,  578,  | 
2672  |  |       578,  639,  638,  637,  578,  578,  578,  578,  578,  578,  | 
2673  |  |       636,  635,  965,  929,  965,  965,  965,  965,  965,  965,  | 
2674  |  |       895,  625, 1125, 1125,  895, 1125, 1125,  624,  621,  620,  | 
2675  |  |       578,  578,  578,  578,  578,  578,  640,  612,  640,  640,  | 
2676  |  |  | 
2677  |  |       640,  640,  640,  640,  640,  640,  640,  640,  895,  912,  | 
2678  |  |       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,  | 
2679  |  |       899,  611,  610,  945,  899,  945,  945,  945,  945,  945,  | 
2680  |  |       945,  945,  945,  945,  945,  640,  641,  895,  641,  641,  | 
2681  |  |       641,  641,  641,  641,  641,  641,  641,  641,  899,  913,  | 
2682  |  |       913,  913,  913,  913,  913,  913,  913,  913,  913,  913,  | 
2683  |  |       900,  922,  923,  602,  900,  922,  923,  973,  973,  973,  | 
2684  |  |       973,  973,  973,  973,  973,  641,  642,  899,  642,  642,  | 
2685  |  |       642,  642,  642,  642,  642,  642,  642,  642,  900,  922,  | 
2686  |  |       923,  925,  925,  925,  925,  925,  925,  925,  925,  925,  | 
2687  |  |  | 
2688  |  |       925,  933,  937,  938,  566,  933,  937,  938, 1253, 1253,  | 
2689  |  |       922,  923,  565,  564, 1253,  642,  663,  900,  663,  663,  | 
2690  |  |       663,  663,  663,  663,  663,  663,  663,  663,  925,  933,  | 
2691  |  |       937,  938,  946,  563,  946,  946,  946,  946,  946,  946,  | 
2692  |  |       946,  946,  946,  946, 1039, 1039, 1039, 1039, 1039, 1039,  | 
2693  |  |       933,  937,  938,  561,  560,  663,  664, 1152,  664,  664,  | 
2694  |  |       664,  664,  664,  664,  664,  664,  664,  664,  947, 1152,  | 
2695  |  |       947,  947,  947,  947,  947,  947,  947,  947,  947,  947,  | 
2696  |  |       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,  | 
2697  |  |      1164, 1164,  552, 1164, 1164,  664,  670,  670,  670,  670,  | 
2698  |  |  | 
2699  |  |       670,  670,  670,  670,  670,  670,  670,  551,  550,  549,  | 
2700  |  |       670,  670,  670,  670,  670,  670,  955,  548,  955,  955,  | 
2701  |  |       955,  955,  955,  955, 1281, 1281,  547, 1002,  955, 1050,  | 
2702  |  |      1281, 1002,  546, 1050,  545,  544,  670,  670,  670,  670,  | 
2703  |  |       670,  670,  680,  680,  680,  680,  680,  680,  680,  680,  | 
2704  |  |       680,  680,  680,  680,  680, 1002,  541, 1050,  680,  680,  | 
2705  |  |       680,  680,  680,  680,  957,  957,  957,  957,  957,  957,  | 
2706  |  |       957,  957,  957,  957,  961,  961,  961,  961,  961,  961,  | 
2707  |  |       961,  961,  961,  961,  680,  680,  680,  680,  680,  680,  | 
2708  |  |       683,  683,  683,  683,  683,  683,  683,  683,  683,  683,  | 
2709  |  |  | 
2710  |  |       683,  683,  683,  540,  538,  531,  683,  683,  683,  683,  | 
2711  |  |       683,  683,  960,  530,  960,  960,  960,  960,  960,  960,  | 
2712  |  |       960,  960,  960,  960, 1001,  529, 1190, 1190, 1001, 1190,  | 
2713  |  |      1190,  508,  683,  683,  683,  683,  683,  683,  686,  686,  | 
2714  |  |       686,  686,  686,  686,  686,  686,  686,  686,  686,  686,  | 
2715  |  |       500,  499, 1001,  686,  686,  686,  686,  686,  686,  963,  | 
2716  |  |       498,  963,  963,  963,  963,  963,  963,  963,  963,  963,  | 
2717  |  |       963, 1282, 1282, 1001,  497,  496,  495, 1282,  490,  686,  | 
2718  |  |       686,  686,  686,  686,  686,  744,  487,  744,  744,  744,  | 
2719  |  |       744,  744,  744,  744,  744,  744,  744,  964,  458,  964,  | 
2720  |  |  | 
2721  |  |       964,  964,  964,  964,  964,  964,  964,  964,  964,  457,  | 
2722  |  |      1053, 1079, 1011,  454, 1053, 1079, 1011, 1119,  453,  976,  | 
2723  |  |       439, 1119,  978,  976,  744,  745,  978,  745,  745,  745,  | 
2724  |  |       745,  745,  745,  745,  745,  745,  745,  995, 1053, 1079,  | 
2725  |  |      1011,  995,  995,  995,  995, 1119,  438,  976,  437,  997,  | 
2726  |  |       978,  997,  997,  997,  997,  997,  997,  997,  997,  997,  | 
2727  |  |       997, 1011,  436,  435,  745,  765,  765,  765,  765,  765,  | 
2728  |  |       765,  765,  765,  765,  765,  765,  976,  996,  434,  978,  | 
2729  |  |       433,  996,  996,  996,  996, 1110, 1110, 1110, 1110, 1110,  | 
2730  |  |      1110,  998,  995,  998,  998,  998,  998,  998,  998,  998,  | 
2731  |  |  | 
2732  |  |       998,  998,  998,  765,  766,  766,  766,  766,  766,  766,  | 
2733  |  |       766,  766,  766,  766,  766,  999,  432,  999,  999,  999,  | 
2734  |  |       999,  999,  999,  999,  999,  999,  999, 1012, 1310, 1310,  | 
2735  |  |       431, 1012,  996, 1021, 1310, 1021, 1021, 1021, 1021, 1021,  | 
2736  |  |      1021,  430,  766,  767,  767,  767,  767,  767,  767,  767,  | 
2737  |  |       767,  767,  767,  767, 1000, 1012, 1000, 1000, 1000, 1000,  | 
2738  |  |      1000, 1000, 1000, 1000, 1000, 1000,  429, 1132,  428, 1159,  | 
2739  |  |       427, 1132, 1021, 1159, 1299, 1323, 1012, 1299, 1323, 1299,  | 
2740  |  |      1323,  767,  772,  426,  772,  772,  772,  772,  772,  772,  | 
2741  |  |       772,  772,  772,  772,  772, 1132,  423, 1159,  772,  772,  | 
2742  |  |  | 
2743  |  |       772,  772,  772,  772, 1017, 1017, 1017, 1017, 1017, 1017,  | 
2744  |  |      1017, 1017, 1017, 1017, 1023, 1023, 1023, 1023, 1023, 1023,  | 
2745  |  |      1023, 1023, 1023, 1023,  772,  772,  772,  772,  772,  772,  | 
2746  |  |       775,  775,  775,  775,  775,  775,  775,  775,  775,  775,  | 
2747  |  |       775, 1017,  417,  414,  775,  775,  775,  775,  775,  775,  | 
2748  |  |      1025,  413, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,  | 
2749  |  |      1025, 1025, 1027,  412, 1027, 1027, 1027, 1027, 1027, 1027,  | 
2750  |  |       775,  775,  775,  775,  775,  775,  788,  788,  788,  788,  | 
2751  |  |       788,  788,  788,  788,  788,  788,  788,  788,  788,  411,  | 
2752  |  |       410,  409,  788,  788,  788,  788,  788,  788, 1026,  408,  | 
2753  |  |  | 
2754  |  |      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,  | 
2755  |  |      1077,  407, 1077, 1077, 1077, 1077, 1077, 1077,  788,  788,  | 
2756  |  |       788,  788,  788,  788,  791,  791,  791,  791,  791,  791,  | 
2757  |  |       791,  791,  791,  791,  791,  791,  791,  406,  405,  404,  | 
2758  |  |       791,  791,  791,  791,  791,  791, 1032, 1032, 1032, 1032,  | 
2759  |  |      1032, 1032, 1032, 1032, 1032, 1032, 1038, 1038, 1038, 1038,  | 
2760  |  |      1038, 1038, 1038, 1038, 1038, 1038,  791,  791,  791,  791,  | 
2761  |  |       791,  791,  794,  794,  794,  794,  794,  794,  794,  794,  | 
2762  |  |       794,  794,  794,  403,  402,  401,  398,  794,  794,  794,  | 
2763  |  |       794,  794,  794, 1036,  383, 1036, 1036, 1036, 1036, 1036,  | 
2764  |  |  | 
2765  |  |      1036,  379,  378,  377,  376, 1036, 1115, 1115, 1115, 1115,  | 
2766  |  |      1115, 1115, 1115,  794,  794,  794,  794,  794,  794,  797,  | 
2767  |  |      1070, 1339,  797, 1070, 1339,  370, 1339,  369,  797,  797,  | 
2768  |  |      1070, 1070,  797,  797, 1070,  797,  797,  797,  797,  797,  | 
2769  |  |       797,  797,  797,  797,  797,  797,  797,  797, 1070, 1070,  | 
2770  |  |      1070,  797,  797,  797,  797,  797,  797,  797,  797,  797,  | 
2771  |  |       797,  797,  797,  797,  797,  797,  797,  797,  797,  797,  | 
2772  |  |       797,  797,  797,  797,  797,  797,  797,  797,  797,  797,  | 
2773  |  |       797,  797,  797,  797,  797,  797,  797,  797,  797,  797,  | 
2774  |  |       797,  797,  797,  797,  797,  831,  368,  367,  366,  831,  | 
2775  |  |  | 
2776  |  |       831,  831,  831,  831,  831,  831,  831,  831,  831,  831,  | 
2777  |  |       365,  831,  363,  362,  831,  831,  831,  831,  831,  831,  | 
2778  |  |       831,  831,  831,  831,  831,  831,  831,  831,  831,  831,  | 
2779  |  |       831,  831,  831,  831,  831,  831,  831,  361,  360,  831,  | 
2780  |  |       831,  831,  831,  831,  831,  831,  831,  831,  831,  831,  | 
2781  |  |       831,  831,  831,  831,  831,  831,  831,  841,  841,  841,  | 
2782  |  |       841,  841,  841,  841,  841,  841,  841,  841, 1041,  359,  | 
2783  |  |      1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,  | 
2784  |  |      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,  | 
2785  |  |      1042,  358,  357,  356,  355,  841,  842,  842,  842,  842,  | 
2786  |  |  | 
2787  |  |       842,  842,  842,  842,  842,  842,  842, 1043, 1043, 1043,  | 
2788  |  |      1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1044,  | 
2789  |  |      1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1055,  | 
2790  |  |       354,  353,  352, 1055,  842,  843,  843,  843,  843,  843,  | 
2791  |  |       843,  843,  843,  843,  843,  843,  351, 1121, 1065,  349,  | 
2792  |  |       348, 1121, 1065, 1065, 1065, 1065, 1069, 1055,  341, 1069,  | 
2793  |  |      1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,  340,  | 
2794  |  |      1316, 1316,  327,  843,  844, 1121, 1316,  844,  323, 1317,  | 
2795  |  |      1317,  322,  320,  844,  844, 1317, 1055,  844,  844,  319,  | 
2796  |  |       844,  844,  844,  844,  844,  844,  844,  844,  844,  844,  | 
2797  |  |  | 
2798  |  |       844,  844,  844, 1065, 1121,  318,  844,  844,  844,  844,  | 
2799  |  |       844,  844,  844,  844,  844,  844,  844,  844,  844,  844,  | 
2800  |  |       844,  844,  844,  844,  844,  844,  844,  844,  844,  844,  | 
2801  |  |       844,  844,  844,  844,  844,  844,  844,  844,  844,  844,  | 
2802  |  |       844,  844,  844,  844,  844,  844,  844,  844,  844,  844,  | 
2803  |  |       856,  856,  856,  856,  856,  856,  856,  856,  856,  856,  | 
2804  |  |       856, 1066,  317, 1359, 1359, 1066, 1066, 1066, 1066, 1067,  | 
2805  |  |      1359,  316,  315, 1067, 1067, 1067, 1067, 1073, 1073, 1073,  | 
2806  |  |      1073, 1073, 1073, 1073, 1073, 1073, 1073,  309,  856,  857,  | 
2807  |  |       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,  | 
2808  |  |  | 
2809  |  |      1068, 1363,  305, 1363, 1068, 1068, 1068, 1068, 1071, 1363,  | 
2810  |  |       302,  300, 1071, 1071, 1071, 1071, 1066, 1207, 1207, 1207,  | 
2811  |  |      1207, 1207, 1207,  298, 1067,  295,  294,  857,  865,  293,  | 
2812  |  |       865,  865,  865,  865,  865,  865,  865,  865,  865,  865,  | 
2813  |  |       865,  868,  290,  868,  868,  868,  868,  868,  868,  868,  | 
2814  |  |       868,  868,  868,  868,  289, 1068,  287,  868,  868,  868,  | 
2815  |  |       868,  868,  868, 1071, 1075,  286, 1075, 1075, 1075, 1075,  | 
2816  |  |      1075, 1075, 1075, 1075, 1075, 1075, 1237, 1237, 1237, 1237,  | 
2817  |  |      1237, 1237,  285,  868,  868,  868,  868,  868,  868,  871,  | 
2818  |  |       871,  871,  871,  871,  871,  871,  871,  871,  871,  871,  | 
2819  |  |  | 
2820  |  |       284,  283,  281,  871,  871,  871,  871,  871,  871, 1076,  | 
2821  |  |       275, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,  | 
2822  |  |      1076, 1089, 1161,  267,  263, 1089, 1161,  258,  257,  871,  | 
2823  |  |       871,  871,  871,  871,  871,  882,  882,  882,  882,  882,  | 
2824  |  |       882,  882,  882,  882,  882,  882,  882,  882,  255, 1089,  | 
2825  |  |      1161,  882,  882,  882,  882,  882,  882,  251, 1083, 1083,  | 
2826  |  |      1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,  246, 1087,  | 
2827  |  |      1089, 1087, 1087, 1087, 1087, 1087, 1087,  882,  882,  882,  | 
2828  |  |       882,  882,  882,  885,  885,  885,  885,  885,  885,  885,  | 
2829  |  |       885,  885,  885,  885,  885, 1083,  241,  239,  235,  885,  | 
2830  |  |  | 
2831  |  |       885,  885,  885,  885,  885, 1122,  230, 1072, 1087, 1122,  | 
2832  |  |      1072, 1131,  218, 1318, 1318, 1131,  217, 1072, 1072, 1318,  | 
2833  |  |       216, 1072,  215,  214,  209,  885,  885,  885,  885,  885,  | 
2834  |  |       885,  890,  202, 1122,  890, 1072, 1072, 1072,  201, 1131,  | 
2835  |  |       890,  890,  200,  199,  890,  890,  198,  890,  890,  890,  | 
2836  |  |       890,  890,  890,  890,  890,  890,  890,  890,  890,  890,  | 
2837  |  |      1131,  197, 1122,  890,  890,  890,  890,  890,  890,  890,  | 
2838  |  |       890,  890,  890,  890,  890,  890,  890,  890,  890,  890,  | 
2839  |  |       890,  890,  890,  890,  890,  890,  890,  890,  890,  890,  | 
2840  |  |       890,  890,  890,  890,  890,  890,  890,  890,  890,  890,  | 
2841  |  |  | 
2842  |  |       890,  890,  890,  890,  890,  890,  890,  915,  195,  194,  | 
2843  |  |       193,  915,  915,  915,  915,  915,  915,  915,  915,  915,  | 
2844  |  |       915,  915,  192,  915,  191,  190,  915,  915,  915,  915,  | 
2845  |  |       915,  915,  915,  915,  915,  915,  915,  915,  915,  915,  | 
2846  |  |       915,  915,  915,  915,  915,  915,  915,  915,  915,  189,  | 
2847  |  |       188,  915,  915,  915,  915,  915,  915,  915,  915,  915,  | 
2848  |  |       915,  915,  915,  915,  915,  915,  915,  915,  915,  927,  | 
2849  |  |       927,  927,  927,  927,  927,  927,  927,  927,  927,  927,  | 
2850  |  |      1096,  187, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096,  | 
2851  |  |      1096, 1096, 1097,  186, 1097, 1097, 1097, 1097, 1097, 1097,  | 
2852  |  |  | 
2853  |  |      1097, 1097, 1097, 1097,  181,  177,  176,  927,  928,  928,  | 
2854  |  |       928,  928,  928,  928,  928,  928,  928,  928,  928, 1098,  | 
2855  |  |       172, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,  | 
2856  |  |      1098, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,  | 
2857  |  |      1103,  169,  165,  162,  159,  155,  928,  930, 1170, 1187,  | 
2858  |  |       930,  150, 1170, 1187,  149,  148,  930,  930,  147,  146,  | 
2859  |  |       930,  930,  145,  930,  930,  930,  930,  930,  930,  930,  | 
2860  |  |       930,  930,  930,  930,  930,  930, 1170, 1187,  141,  930,  | 
2861  |  |       930,  930,  930,  930,  930,  930,  930,  930,  930,  930,  | 
2862  |  |       930,  930,  930,  930,  930,  930,  930,  930,  930,  930,  | 
2863  |  |  | 
2864  |  |       930,  930,  930,  930,  930,  930,  930,  930,  930,  930,  | 
2865  |  |       930,  930,  930,  930,  930,  930,  930,  930,  930,  930,  | 
2866  |  |       930,  930,  930,  940,  135,  940,  940,  940,  940,  940,  | 
2867  |  |       940,  940,  940,  940,  940, 1107,  133, 1107, 1107, 1107,  | 
2868  |  |      1107, 1107, 1107,  129,  124,  123,  122, 1107, 1109, 1109,  | 
2869  |  |      1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1324, 1324,  | 
2870  |  |       121,  120,  940,  941, 1324,  941,  941,  941,  941,  941,  | 
2871  |  |       941,  941,  941,  941,  941, 1111,  119, 1111, 1111, 1111,  | 
2872  |  |      1111, 1111, 1111, 1111, 1111, 1111, 1111, 1113, 1113, 1113,  | 
2873  |  |      1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1325, 1325,  | 
2874  |  |  | 
2875  |  |       115,  102,  941,  942, 1325,  942,  942,  942,  942,  942,  | 
2876  |  |       942,  942,  942,  942,  942, 1114, 1114, 1114, 1114, 1114,  | 
2877  |  |      1114, 1114, 1114, 1114, 1114, 1114, 1126, 1126, 1126, 1126,  | 
2878  |  |      1126, 1126, 1126, 1126, 1126, 1126,   95,   88, 1326, 1326,  | 
2879  |  |        87,   80,  942,  943, 1326,  943,  943,  943,  943,  943,  | 
2880  |  |       943,  943,  943,  943,  943, 1127, 1127, 1127, 1127, 1127,  | 
2881  |  |      1127, 1127, 1127, 1127, 1127, 1128,   79, 1128, 1128, 1128,  | 
2882  |  |      1128, 1128, 1128, 1128, 1128, 1128, 1128,   74, 1329, 1329,  | 
2883  |  |        73,   72,  943,  953, 1329,  953,  953,  953,  953,  953,  | 
2884  |  |       953,  953,  953,  953,  953,  953,  956,   71,  956,  956,  | 
2885  |  |  | 
2886  |  |       956,  956,  956,  956,  956,  956,  956,  956,  956,   66,  | 
2887  |  |        64,   54,  956,  956,  956,  956,  956,  956, 1129,   53,  | 
2888  |  |      1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129,  | 
2889  |  |      1149,   51, 1149, 1149, 1149, 1149, 1149, 1149,  956,  956,  | 
2890  |  |       956,  956,  956,  956,  959,  959,  959,  959,  959,  959,  | 
2891  |  |       959,  959,  959,  959,  959,   50,   48,   38,  959,  959,  | 
2892  |  |       959,  959,  959,  959, 1130,   32, 1130, 1130, 1130, 1130,  | 
2893  |  |      1130, 1130, 1130, 1130, 1130, 1130, 1169,   26, 1169, 1169,  | 
2894  |  |      1169, 1169, 1169, 1169,  959,  959,  959,  959,  959,  959,  | 
2895  |  |       971,  971,  971,  971,  971,  971,  971,  971,  971,  971,  | 
2896  |  |  | 
2897  |  |       971,  971, 1007,   25, 1007, 1007, 1007, 1007, 1007, 1007,  | 
2898  |  |      1007, 1007, 1007, 1007,   22, 1137,   21,    0, 1144, 1137,  | 
2899  |  |      1144, 1144, 1144, 1144, 1144, 1144, 1138,    0,    0,    0,  | 
2900  |  |      1138, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,  | 
2901  |  |      1140, 1007, 1008, 1137, 1008, 1008, 1008, 1008, 1008, 1008,  | 
2902  |  |      1008, 1008, 1008, 1008, 1138,    0, 1215, 1144, 1215, 1215,  | 
2903  |  |      1215, 1215, 1215, 1215, 1137, 1330, 1330,    0, 1140,    0,  | 
2904  |  |         0, 1330, 1331, 1331, 1347, 1138,    0, 1347, 1331, 1347,  | 
2905  |  |         0, 1008, 1009,    0, 1009, 1009, 1009, 1009, 1009, 1009,  | 
2906  |  |      1009, 1009, 1009, 1009, 1145, 1145, 1145, 1145, 1145, 1145,  | 
2907  |  |  | 
2908  |  |      1145, 1145, 1145, 1145, 1147,    0, 1147, 1147, 1147, 1147,  | 
2909  |  |      1147, 1147, 1147, 1147, 1147, 1147,    0,    0,    0, 1163,  | 
2910  |  |         0, 1009, 1010, 1163, 1010, 1010, 1010, 1010, 1010, 1010,  | 
2911  |  |      1010, 1010, 1010, 1010, 1148,    0, 1148, 1148, 1148, 1148,  | 
2912  |  |      1148, 1148, 1148, 1148, 1148, 1148, 1155, 1163, 1155, 1155,  | 
2913  |  |      1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,    0,    0,  | 
2914  |  |         0, 1010, 1019,    0, 1019, 1019, 1019, 1019, 1019, 1019,  | 
2915  |  |      1019, 1019, 1019, 1019,    0,    0, 1163, 1165, 1165, 1165,  | 
2916  |  |      1165, 1165, 1165, 1165, 1165, 1165, 1165, 1167,    0, 1167,  | 
2917  |  |      1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,    0,  | 
2918  |  |  | 
2919  |  |         0, 1019, 1020,    0, 1020, 1020, 1020, 1020, 1020, 1020,  | 
2920  |  |      1020, 1020, 1020, 1020, 1168,    0, 1168, 1168, 1168, 1168,  | 
2921  |  |      1168, 1168, 1168, 1168, 1168, 1168,    0,    0,    0,    0,  | 
2922  |  |         0, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,  | 
2923  |  |      1171, 1020, 1034,    0, 1034, 1034, 1034, 1034, 1034, 1034,  | 
2924  |  |      1034, 1034, 1034, 1034, 1034, 1037,    0, 1037, 1037, 1037,  | 
2925  |  |      1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1171,    0,  | 
2926  |  |         0, 1037, 1037, 1037, 1037, 1037, 1037, 1175,    0, 1175,  | 
2927  |  |      1175, 1175, 1175, 1175, 1175, 1176, 1334, 1334,    0, 1176,  | 
2928  |  |      1335, 1335, 1334,    0,    0,    0, 1335, 1037, 1037, 1037,  | 
2929  |  |  | 
2930  |  |      1037, 1037, 1037, 1040, 1040, 1040, 1040, 1040, 1040, 1040,  | 
2931  |  |      1040, 1040, 1040, 1176,    0,    0, 1175, 1040, 1040, 1040,  | 
2932  |  |      1040, 1040, 1040, 1180, 1180, 1180, 1180, 1180, 1180, 1180,  | 
2933  |  |      1180, 1180, 1180,    0, 1176, 1342, 1342,    0,    0,    0,  | 
2934  |  |         0, 1342,    0, 1040, 1040, 1040, 1040, 1040, 1040, 1085,  | 
2935  |  |         0, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,  | 
2936  |  |      1085, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,  | 
2937  |  |      1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,  | 
2938  |  |      1182, 1350, 1350,    0, 1357, 1357,    0, 1350, 1085, 1086,  | 
2939  |  |      1357, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,  | 
2940  |  |  | 
2941  |  |      1086, 1193,    0, 1193, 1193, 1193, 1193, 1193, 1193, 1193,  | 
2942  |  |      1193, 1193, 1193, 1194,    0, 1194, 1194, 1194, 1194, 1194,  | 
2943  |  |      1194, 1194, 1194, 1194, 1194,    0,    0,    0, 1086, 1093,  | 
2944  |  |         0, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,  | 
2945  |  |      1093, 1195,    0, 1195, 1195, 1195, 1195, 1195, 1195, 1195,  | 
2946  |  |      1195, 1195, 1195, 1199, 1199, 1199, 1199, 1199, 1199, 1199,  | 
2947  |  |      1199, 1199, 1199,    0, 1360, 1360,    0,    0, 1093, 1094,  | 
2948  |  |      1360, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,  | 
2949  |  |      1094,    0, 1203,    0, 1203, 1203, 1203, 1203, 1203, 1203,  | 
2950  |  |      1199, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,  | 
2951  |  |  | 
2952  |  |      1205, 1362, 1362,    0,    0,    0,    0, 1362, 1094, 1095,  | 
2953  |  |         0, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,  | 
2954  |  |      1095, 1203, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,  | 
2955  |  |      1206, 1206, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,  | 
2956  |  |      1211, 1211,    0,    0,    0,    0,    0,    0, 1095, 1105,  | 
2957  |  |         0, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,  | 
2958  |  |      1105, 1105, 1108,    0, 1108, 1108, 1108, 1108, 1108, 1108,  | 
2959  |  |      1108, 1108, 1108, 1108,    0,    0,    0,    0, 1108, 1108,  | 
2960  |  |      1108, 1108, 1108, 1108, 1213,    0, 1213, 1213, 1213, 1213,  | 
2961  |  |      1213, 1213, 1213, 1213, 1213, 1213,    0,    0,    0,    0,  | 
2962  |  |  | 
2963  |  |         0,    0,    0,    0, 1108, 1108, 1108, 1108, 1108, 1108,  | 
2964  |  |      1134,    0, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,  | 
2965  |  |      1134, 1134, 1214,    0, 1214, 1214, 1214, 1214, 1214, 1214,  | 
2966  |  |      1214, 1214, 1214, 1214, 1216, 1216, 1216, 1216, 1216, 1216,  | 
2967  |  |      1216, 1216, 1216, 1216,    0,    0,    0,    0,    0, 1134,  | 
2968  |  |      1135,    0, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135,  | 
2969  |  |      1135, 1135,    0, 1220,    0, 1220, 1220, 1220, 1220, 1220,  | 
2970  |  |      1220, 1216, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,  | 
2971  |  |      1221, 1221,    0, 1233, 1233, 1233, 1233, 1233, 1233, 1135,  | 
2972  |  |      1136,    0, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,  | 
2973  |  |  | 
2974  |  |      1136, 1136, 1220,    0,    0,    0,    0,    0,    0, 1221,  | 
2975  |  |      1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,  | 
2976  |  |      1233,    0,    0,    0,    0,    0,    0,    0,    0, 1136,  | 
2977  |  |      1142,    0, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,  | 
2978  |  |      1142, 1142,    0,    0,    0,    0,    0, 1222, 1223, 1223,  | 
2979  |  |      1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1225,  | 
2980  |  |      1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,    0, 1142,  | 
2981  |  |      1143,    0, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,  | 
2982  |  |      1143, 1143,    0,    0,    0, 1223, 1226, 1226, 1226, 1226,  | 
2983  |  |      1226, 1226, 1226, 1226, 1226, 1226, 1227, 1227, 1227, 1227,  | 
2984  |  |  | 
2985  |  |      1227, 1227, 1227, 1227, 1227, 1227,    0,    0,    0, 1143,  | 
2986  |  |      1173,    0, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,  | 
2987  |  |      1173, 1173,    0,    0,    0, 1228, 1228, 1228, 1228, 1228,  | 
2988  |  |      1228, 1228, 1228, 1228, 1228, 1229, 1229, 1229, 1229, 1229,  | 
2989  |  |      1229, 1229, 1229, 1229, 1229,    0,    0,    0,    0, 1173,  | 
2990  |  |      1174,    0, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,  | 
2991  |  |      1174, 1174, 1228,    0,    0, 1240, 1240, 1240, 1240, 1240,  | 
2992  |  |      1240,    0, 1229, 1230, 1230, 1230, 1230, 1230, 1230, 1230,  | 
2993  |  |      1230, 1230, 1230,    0,    0,    0,    0,    0,    0, 1174,  | 
2994  |  |      1177,    0, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,  | 
2995  |  |  | 
2996  |  |      1177, 1177, 1240,    0,    0,    0,    0,    0,    0,    0,  | 
2997  |  |      1230, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,  | 
2998  |  |      1232,    0,    0,    0,    0,    0,    0,    0,    0, 1177,  | 
2999  |  |      1178,    0, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,  | 
3000  |  |      1178, 1178,    0,    0,    0,    0,    0,    0, 1232, 1236,  | 
3001  |  |      1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1239,  | 
3002  |  |      1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1178,  | 
3003  |  |      1179,    0, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,  | 
3004  |  |      1179, 1179,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3005  |  |         0,    0,    0,    0,    0,    0, 1239,    0,    0,    0,  | 
3006  |  |  | 
3007  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0, 1179,  | 
3008  |  |      1196,    0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,  | 
3009  |  |      1196, 1196,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3010  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3011  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0, 1196,  | 
3012  |  |      1197,    0, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,  | 
3013  |  |      1197, 1197,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3014  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3015  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0, 1197,  | 
3016  |  |      1198,    0, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,  | 
3017  |  |  | 
3018  |  |      1198, 1198,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3019  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3020  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0, 1198,  | 
3021  |  |      1201,    0, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,  | 
3022  |  |      1201, 1201,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3023  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3024  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0, 1201,  | 
3025  |  |      1202,    0, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,  | 
3026  |  |      1202, 1202,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3027  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3028  |  |  | 
3029  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0, 1202,  | 
3030  |  |      1218,    0, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,  | 
3031  |  |      1218, 1218,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3032  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3033  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0, 1218,  | 
3034  |  |      1219,    0, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,  | 
3035  |  |      1219, 1219,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3036  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  | 
3037  |  |         0,    0,    0,    0,    0,    0,    0,    0,    0, 1219,  | 
3038  |  |      1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,  | 
3039  |  |  | 
3040  |  |      1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,  | 
3041  |  |      1242, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,  | 
3042  |  |      1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,  | 
3043  |  |      1243, 1243, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,  | 
3044  |  |      1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,  | 
3045  |  |      1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, 1245,  | 
3046  |  |      1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,  | 
3047  |  |      1245, 1245, 1245, 1245, 1246, 1246, 1246, 1246, 1246, 1246,  | 
3048  |  |      1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246,  | 
3049  |  |      1246, 1246, 1246, 1246, 1246, 1247, 1247, 1247, 1247, 1247,  | 
3050  |  |  | 
3051  |  |      1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247,  | 
3052  |  |      1247, 1247, 1247, 1247, 1247, 1247, 1248,    0,    0, 1248,  | 
3053  |  |         0,    0,    0, 1248,    0, 1248,    0, 1248, 1248, 1248,  | 
3054  |  |         0,    0, 1248, 1248, 1248, 1248, 1248, 1249, 1249, 1249,  | 
3055  |  |      1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249,  | 
3056  |  |      1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1250,    0,  | 
3057  |  |         0, 1250,    0,    0, 1250, 1250,    0, 1250,    0, 1250,  | 
3058  |  |      1250, 1250, 1250,    0, 1250, 1250, 1250, 1250, 1250, 1251,  | 
3059  |  |         0,    0, 1251,    0,    0,    0, 1251,    0, 1251,    0,  | 
3060  |  |      1251, 1251, 1251,    0,    0, 1251, 1251, 1251, 1251, 1251,  | 
3061  |  |  | 
3062  |  |      1252,    0,    0, 1252, 1252, 1252,    0, 1252, 1252, 1252,  | 
3063  |  |         0, 1252, 1252, 1252,    0,    0, 1252, 1252, 1252, 1252,  | 
3064  |  |      1252, 1254, 1254,    0, 1254, 1254, 1254,    0, 1254, 1254,  | 
3065  |  |      1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,  | 
3066  |  |      1254, 1254, 1255,    0,    0, 1255, 1255, 1255,    0, 1255,  | 
3067  |  |      1255, 1255,    0, 1255, 1255, 1255,    0,    0, 1255, 1255,  | 
3068  |  |      1255, 1255, 1255, 1256, 1256,    0, 1256, 1256, 1256,    0,  | 
3069  |  |      1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256,  | 
3070  |  |      1256, 1256, 1256, 1256, 1257,    0,    0, 1257, 1257, 1257,  | 
3071  |  |         0, 1257, 1257, 1257,    0, 1257, 1257, 1257,    0, 1257,  | 
3072  |  |  | 
3073  |  |      1257,    0, 1257, 1257, 1257, 1258, 1258,    0, 1258, 1258,  | 
3074  |  |      1258,    0,    0, 1258, 1258, 1258, 1258, 1258, 1258, 1258,  | 
3075  |  |      1258, 1258,    0, 1258, 1258, 1258, 1259, 1259, 1259, 1259,  | 
3076  |  |      1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,  | 
3077  |  |      1259, 1259, 1259, 1259, 1259, 1259, 1259, 1261,    0,    0,  | 
3078  |  |      1261, 1261,    0,    0, 1261, 1261, 1261,    0, 1261, 1261,  | 
3079  |  |      1261, 1261,    0, 1261, 1261, 1261, 1261, 1261, 1262, 1262,  | 
3080  |  |      1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262,  | 
3081  |  |      1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1263,  | 
3082  |  |      1263,    0, 1263, 1263,    0, 1263, 1263, 1263, 1263, 1263,  | 
3083  |  |  | 
3084  |  |      1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,  | 
3085  |  |      1264,    0,    0, 1264,    0,    0, 1264, 1264,    0, 1264,  | 
3086  |  |         0, 1264, 1264, 1264, 1264,    0, 1264, 1264, 1264, 1264,  | 
3087  |  |      1264, 1265,    0,    0, 1265,    0,    0,    0, 1265,    0,  | 
3088  |  |      1265,    0, 1265, 1265, 1265,    0, 1265, 1265, 1265, 1265,  | 
3089  |  |      1265, 1265, 1266,    0,    0, 1266, 1266, 1266,    0, 1266,  | 
3090  |  |      1266, 1266,    0, 1266, 1266, 1266,    0, 1266, 1266, 1266,  | 
3091  |  |      1266, 1266, 1266, 1267, 1267,    0, 1267, 1267, 1267,    0,  | 
3092  |  |      1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,  | 
3093  |  |      1267, 1267, 1267, 1267, 1268,    0,    0,    0, 1268, 1268,  | 
3094  |  |  | 
3095  |  |      1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,  | 
3096  |  |      1268, 1268, 1268, 1268, 1268, 1269,    0,    0, 1269,    0,  | 
3097  |  |         0,    0, 1269,    0, 1269,    0, 1269, 1269, 1269,    0,  | 
3098  |  |         0, 1269, 1269, 1269, 1269, 1269, 1270,    0,    0, 1270,  | 
3099  |  |         0,    0, 1270, 1270,    0, 1270,    0, 1270, 1270, 1270,  | 
3100  |  |      1270,    0, 1270, 1270, 1270, 1270, 1270, 1271,    0,    0,  | 
3101  |  |      1271,    0,    0,    0, 1271,    0, 1271,    0, 1271, 1271,  | 
3102  |  |      1271,    0,    0, 1271, 1271, 1271, 1271, 1271, 1272,    0,  | 
3103  |  |         0, 1272, 1272, 1272,    0, 1272, 1272, 1272,    0, 1272,  | 
3104  |  |      1272, 1272,    0,    0, 1272, 1272, 1272, 1272, 1272, 1273,  | 
3105  |  |  | 
3106  |  |      1273,    0, 1273, 1273, 1273,    0, 1273, 1273, 1273, 1273,  | 
3107  |  |      1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,  | 
3108  |  |      1274,    0,    0, 1274,    0,    0,    0, 1274,    0, 1274,  | 
3109  |  |         0, 1274, 1274, 1274,    0,    0, 1274, 1274, 1274, 1274,  | 
3110  |  |      1274, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,  | 
3111  |  |      1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,  | 
3112  |  |      1275, 1275, 1276, 1276,    0, 1276, 1276, 1276, 1276, 1276,  | 
3113  |  |      1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276,  | 
3114  |  |      1276, 1276, 1276, 1277,    0,    0, 1277,    0,    0,    0,  | 
3115  |  |      1277,    0, 1277,    0, 1277, 1277, 1277,    0,    0, 1277,  | 
3116  |  |  | 
3117  |  |      1277, 1277, 1277, 1277, 1278,    0,    0, 1278,    0,    0,  | 
3118  |  |         0, 1278,    0, 1278,    0, 1278, 1278, 1278,    0,    0,  | 
3119  |  |      1278, 1278, 1278, 1278, 1278, 1279,    0,    0, 1279, 1279,  | 
3120  |  |      1279,    0, 1279, 1279, 1279,    0, 1279, 1279, 1279,    0,  | 
3121  |  |         0, 1279, 1279, 1279, 1279, 1279, 1280,    0,    0, 1280,  | 
3122  |  |      1280, 1280,    0, 1280, 1280, 1280,    0, 1280, 1280, 1280,  | 
3123  |  |         0,    0, 1280, 1280, 1280, 1280, 1280, 1283, 1283, 1283,  | 
3124  |  |         0,    0,    0,    0, 1283, 1284, 1284,    0, 1284, 1284,  | 
3125  |  |      1284,    0, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,  | 
3126  |  |      1284, 1284, 1284, 1284, 1284, 1284, 1285, 1285,    0, 1285,  | 
3127  |  |  | 
3128  |  |      1285, 1285,    0, 1285, 1285, 1285, 1285, 1285, 1285, 1285,  | 
3129  |  |      1285, 1285, 1285, 1285, 1285, 1285, 1285, 1286,    0,    0,  | 
3130  |  |      1286, 1286, 1286,    0, 1286, 1286, 1286,    0, 1286, 1286,  | 
3131  |  |      1286,    0,    0, 1286, 1286, 1286, 1286, 1286, 1287,    0,  | 
3132  |  |         0, 1287, 1287, 1287,    0, 1287, 1287, 1287,    0, 1287,  | 
3133  |  |      1287, 1287,    0,    0, 1287, 1287, 1287, 1287, 1287, 1288,  | 
3134  |  |      1288,    0, 1288, 1288, 1288,    0, 1288, 1288, 1288, 1288,  | 
3135  |  |      1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288,  | 
3136  |  |      1289, 1289,    0, 1289, 1289, 1289,    0, 1289, 1289, 1289,  | 
3137  |  |      1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289,  | 
3138  |  |  | 
3139  |  |      1289, 1290,    0,    0, 1290, 1290, 1290,    0, 1290, 1290,  | 
3140  |  |      1290,    0, 1290, 1290, 1290,    0, 1290, 1290,    0, 1290,  | 
3141  |  |      1290, 1290, 1291, 1291,    0, 1291, 1291, 1291,    0,    0,  | 
3142  |  |      1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,    0,  | 
3143  |  |      1291, 1291, 1291, 1293,    0,    0, 1293, 1293,    0,    0,  | 
3144  |  |      1293, 1293, 1293,    0, 1293, 1293, 1293, 1293,    0, 1293,  | 
3145  |  |      1293, 1293, 1293, 1293, 1294, 1294,    0, 1294, 1294,    0,  | 
3146  |  |      1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,  | 
3147  |  |      1294, 1294, 1294, 1294, 1294, 1295,    0,    0, 1295,    0,  | 
3148  |  |         0,    0, 1295,    0, 1295,    0, 1295, 1295, 1295,    0,  | 
3149  |  |  | 
3150  |  |         0, 1295, 1295, 1295, 1295, 1295, 1296,    0,    0, 1296,  | 
3151  |  |         0,    0,    0, 1296,    0, 1296,    0, 1296, 1296, 1296,  | 
3152  |  |         0, 1296, 1296, 1296, 1296, 1296, 1296, 1297,    0,    0,  | 
3153  |  |      1297, 1297,    0, 1297, 1297,    0,    0, 1297, 1297, 1298,  | 
3154  |  |         0,    0, 1298, 1298, 1298,    0, 1298, 1298, 1298,    0,  | 
3155  |  |      1298, 1298, 1298,    0, 1298, 1298, 1298, 1298, 1298, 1298,  | 
3156  |  |      1300,    0,    0,    0, 1300, 1300, 1300, 1300, 1300, 1300,  | 
3157  |  |      1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,  | 
3158  |  |      1300, 1301,    0,    0, 1301,    0,    0,    0, 1301,    0,  | 
3159  |  |      1301,    0, 1301, 1301, 1301,    0,    0, 1301, 1301, 1301,  | 
3160  |  |  | 
3161  |  |      1301, 1301, 1302,    0,    0, 1302,    0,    0,    0, 1302,  | 
3162  |  |         0, 1302,    0, 1302, 1302, 1302,    0,    0, 1302, 1302,  | 
3163  |  |      1302, 1302, 1302, 1303,    0,    0, 1303,    0,    0,    0,  | 
3164  |  |      1303,    0, 1303,    0, 1303, 1303, 1303,    0,    0, 1303,  | 
3165  |  |      1303, 1303, 1303, 1303, 1304,    0,    0, 1304, 1304, 1304,  | 
3166  |  |         0, 1304, 1304, 1304,    0, 1304, 1304, 1304,    0,    0,  | 
3167  |  |      1304, 1304, 1304, 1304, 1304, 1305,    0,    0, 1305, 1305,  | 
3168  |  |      1305,    0, 1305, 1305, 1305,    0, 1305, 1305, 1305,    0,  | 
3169  |  |         0, 1305, 1305, 1305, 1305, 1305, 1306, 1306,    0, 1306,  | 
3170  |  |      1306, 1306,    0, 1306, 1306, 1306, 1306, 1306, 1306, 1306,  | 
3171  |  |  | 
3172  |  |      1306, 1306, 1306, 1306, 1306, 1306, 1306, 1307, 1307, 1307,  | 
3173  |  |      1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,  | 
3174  |  |      1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308,  | 
3175  |  |      1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,  | 
3176  |  |      1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1309,  | 
3177  |  |         0,    0, 1309,    0,    0,    0, 1309,    0, 1309,    0,  | 
3178  |  |      1309, 1309, 1309,    0,    0, 1309, 1309, 1309, 1309, 1309,  | 
3179  |  |      1311, 1311, 1311,    0,    0,    0,    0, 1311, 1312, 1312,  | 
3180  |  |         0, 1312, 1312, 1312,    0, 1312, 1312, 1312, 1312, 1312,  | 
3181  |  |      1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313,  | 
3182  |  |  | 
3183  |  |      1313,    0, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313,  | 
3184  |  |      1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313,  | 
3185  |  |      1314, 1314,    0, 1314, 1314, 1314,    0, 1314, 1314, 1314,  | 
3186  |  |      1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,  | 
3187  |  |      1314, 1315, 1315,    0, 1315, 1315, 1315,    0, 1315, 1315,  | 
3188  |  |      1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,  | 
3189  |  |      1315, 1315, 1319, 1319, 1319,    0,    0,    0,    0, 1319,  | 
3190  |  |      1320, 1320, 1320,    0,    0,    0,    0, 1320, 1321, 1321,  | 
3191  |  |      1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321,  | 
3192  |  |      1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1322,  | 
3193  |  |  | 
3194  |  |      1322,    0, 1322, 1322, 1322,    0, 1322, 1322, 1322, 1322,  | 
3195  |  |      1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,  | 
3196  |  |      1327, 1327, 1327,    0,    0,    0,    0, 1327, 1328, 1328,  | 
3197  |  |      1328, 1328,    0,    0,    0,    0, 1328, 1332, 1332, 1332,  | 
3198  |  |         0,    0,    0,    0, 1332, 1333, 1333, 1333, 1333,    0,  | 
3199  |  |         0,    0,    0, 1333, 1336, 1336, 1336,    0,    0,    0,  | 
3200  |  |         0, 1336, 1337, 1337, 1337, 1337,    0,    0,    0,    0,  | 
3201  |  |      1337, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338,  | 
3202  |  |      1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338,  | 
3203  |  |      1338, 1338, 1340,    0,    0, 1340, 1340,    0, 1340, 1340,  | 
3204  |  |  | 
3205  |  |         0,    0, 1340, 1340, 1341,    0,    0, 1341,    0,    0,  | 
3206  |  |         0, 1341,    0, 1341,    0, 1341, 1341, 1341,    0,    0,  | 
3207  |  |      1341, 1341, 1341, 1341, 1341, 1343,    0, 1343, 1343,    0,  | 
3208  |  |         0,    0,    0, 1343, 1344, 1344, 1344,    0,    0,    0,  | 
3209  |  |         0, 1344, 1345, 1345, 1345, 1345,    0,    0,    0,    0,  | 
3210  |  |      1345, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,  | 
3211  |  |      1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,  | 
3212  |  |      1346, 1346, 1348,    0,    0, 1348, 1348,    0, 1348, 1348,  | 
3213  |  |         0,    0, 1348, 1348, 1349,    0,    0, 1349,    0,    0,  | 
3214  |  |         0, 1349,    0, 1349,    0, 1349, 1349, 1349,    0,    0,  | 
3215  |  |  | 
3216  |  |      1349, 1349, 1349, 1349, 1349, 1351,    0, 1351, 1351,    0,  | 
3217  |  |         0,    0,    0, 1351, 1352, 1352, 1352,    0,    0,    0,  | 
3218  |  |         0, 1352, 1353, 1353, 1353,    0,    0,    0,    0,    0,  | 
3219  |  |      1353, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354,  | 
3220  |  |      1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354,  | 
3221  |  |      1354, 1354, 1355, 1355,    0, 1355, 1355, 1355, 1355, 1355,  | 
3222  |  |         0, 1355,    0, 1355, 1355, 1355,    0,    0, 1355, 1355,  | 
3223  |  |      1355, 1355, 1355, 1356, 1356,    0, 1356, 1356, 1356, 1356,  | 
3224  |  |      1356,    0, 1356,    0, 1356, 1356, 1356,    0,    0, 1356,  | 
3225  |  |      1356, 1356, 1356, 1356, 1358,    0, 1358, 1358,    0,    0,  | 
3226  |  |  | 
3227  |  |         0,    0, 1358, 1361,    0, 1361, 1361,    0,    0,    0,  | 
3228  |  |         0, 1361, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364,  | 
3229  |  |      1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364,  | 
3230  |  |      1364, 1364, 1364, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
3231  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
3232  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
3233  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
3234  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
3235  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
3236  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  | 
3237  |  |  | 
3238  |  |      1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241  | 
3239  |  |     } ;  | 
3240  |  |  | 
3241  |  | static yy_state_type yy_last_accepting_state;  | 
3242  |  | static char *yy_last_accepting_cpos;  | 
3243  |  |  | 
3244  |  | extern int yy_flex_debug;  | 
3245  |  | int yy_flex_debug = 0;  | 
3246  |  |  | 
3247  |  | /* The intent behind this definition is that it'll catch  | 
3248  |  |  * any uses of REJECT which flex missed.  | 
3249  |  |  */  | 
3250  |  | #define REJECT reject_used_but_not_detected  | 
3251  |  | #define yymore() yymore_used_but_not_detected  | 
3252  | 590  | #define YY_MORE_ADJ 0  | 
3253  |  | #define YY_RESTORE_YY_MORE_OFFSET  | 
3254  |  | char *yytext;  | 
3255  |  | #line 1 "toke.l"  | 
3256  |  | #line 2 "toke.l"  | 
3257  |  | /*  | 
3258  |  |  * SPDX-License-Identifier: ISC  | 
3259  |  |  *  | 
3260  |  |  * Copyright (c) 1996, 1998-2005, 2007-2025  | 
3261  |  |  *  Todd C. Miller <Todd.Miller@sudo.ws>  | 
3262  |  |  *  | 
3263  |  |  * Permission to use, copy, modify, and distribute this software for any  | 
3264  |  |  * purpose with or without fee is hereby granted, provided that the above  | 
3265  |  |  * copyright notice and this permission notice appear in all copies.  | 
3266  |  |  *  | 
3267  |  |  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES  | 
3268  |  |  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF  | 
3269  |  |  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR  | 
3270  |  |  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES  | 
3271  |  |  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN  | 
3272  |  |  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF  | 
3273  |  |  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  | 
3274  |  |  *  | 
3275  |  |  * Sponsored in part by the Defense Advanced Research Projects  | 
3276  |  |  * Agency (DARPA) and Air Force Research Laboratory, Air Force  | 
3277  |  |  * Materiel Command, USAF, under agreement number F39502-99-1-0512.  | 
3278  |  |  */  | 
3279  |  |  | 
3280  |  | #include <config.h>  | 
3281  |  |  | 
3282  |  | #include <sys/types.h>  | 
3283  |  | #include <sys/stat.h>  | 
3284  |  | #include <stdio.h>  | 
3285  |  | #include <stdlib.h>  | 
3286  |  | #include <string.h>  | 
3287  |  | #if defined(HAVE_STDINT_H)  | 
3288  |  | # include <stdint.h>  | 
3289  |  | #elif defined(HAVE_INTTYPES_H)  | 
3290  |  | # include <inttypes.h>  | 
3291  |  | #endif  | 
3292  |  | #include <unistd.h>  | 
3293  |  | #include <dirent.h>  | 
3294  |  | #include <errno.h>  | 
3295  |  | #include <ctype.h>  | 
3296  |  | #include <sudoers.h>  | 
3297  |  | #include <toke.h>  | 
3298  |  | #include <gram.h>  | 
3299  |  | #include <sudo_digest.h>  | 
3300  |  | #include <sudo_lbuf.h>  | 
3301  |  |  | 
3302  |  | #if defined(HAVE_STRUCT_DIRENT_D_NAMLEN) && HAVE_STRUCT_DIRENT_D_NAMLEN  | 
3303  |  | # define NAMLEN(dirent) (dirent)->d_namlen  | 
3304  |  | #else  | 
3305  | 0  | # define NAMLEN(dirent) strlen((dirent)->d_name)  | 
3306  |  | #endif  | 
3307  |  |  | 
3308  |  | // PVS Studio suppression  | 
3309  |  | // -V::519, 547, 1004, 1037, 1048  | 
3310  |  |  | 
3311  |  | int sudolineno;     /* current sudoers line number. */  | 
3312  |  | char *sudoers;      /* sudoers file being parsed. */  | 
3313  |  | char *sudoers_search_path;  /* colon-separated path of sudoers files. */  | 
3314  |  | const char *sudoers_errstr; /* description of last error from lexer. */  | 
3315  |  | struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */  | 
3316  |  |  | 
3317  |  | static bool continued, sawspace;  | 
3318  |  | static int prev_state;  | 
3319  |  | static unsigned int digest_type = SUDO_DIGEST_INVALID;  | 
3320  |  |  | 
3321  |  | static bool pop_include(void);  | 
3322  |  | static int sudoers_input(char *buf, yy_size_t max_size);  | 
3323  |  |  | 
3324  |  | #ifndef TRACELEXER  | 
3325  |  | static struct sudo_lbuf trace_lbuf;  | 
3326  |  | #endif  | 
3327  |  |  | 
3328  |  | int (*trace_print)(const char *msg) = sudoers_trace_print;  | 
3329  |  |  | 
3330  | 0  | #define ECHO  ignore_result(fwrite(sudoerstext, (size_t)sudoersleng, 1, sudoersout))  | 
3331  |  |  | 
3332  | 294  | #define YY_INPUT(buf, result, max_size) (result) = sudoers_input(buf, (yy_size_t)(max_size))  | 
3333  |  |  | 
3334  | 247k  | #define YY_USER_ACTION do {         \ | 
3335  | 247k  |   sudolinebuf.toke_start = sudolinebuf.toke_end;    \  | 
3336  | 247k  |   sudolinebuf.toke_end += (size_t)sudoersleng;    \  | 
3337  | 247k  | } while (0);  | 
3338  |  |  | 
3339  | 2  | #define sudoersless(n) do {         \ | 
3340  | 2  |   sudolinebuf.toke_end = sudolinebuf.toke_start + (size_t)(n);  \  | 
3341  | 2  |   yyless((int)n);           \  | 
3342  | 2  | } while (0);  | 
3343  |  |  | 
3344  |  | #line 3344 "toke.c"  | 
3345  |  | #define YY_NO_INPUT 1  | 
3346  |  |  | 
3347  |  | #line 3347 "toke.c"  | 
3348  |  |  | 
3349  | 91.8k  | #define INITIAL 0  | 
3350  | 0  | #define GOTDEFS 1  | 
3351  | 1  | #define GOTCMND 2  | 
3352  | 1  | #define GOTREGEX 3  | 
3353  | 0  | #define STARTDEFS 4  | 
3354  | 0  | #define INDEFS 5  | 
3355  | 33  | #define INSTR 6  | 
3356  | 0  | #define WANTDIGEST 7  | 
3357  | 0  | #define GOTINC 8  | 
3358  | 0  | #define EXPECTPATH 9  | 
3359  |  |  | 
3360  |  | #ifndef YY_NO_UNISTD_H  | 
3361  |  | /* Special case for "unistd.h", since it is non-ANSI. We include it way  | 
3362  |  |  * down here because we want the user's section 1 to have been scanned first.  | 
3363  |  |  * The user has a chance to override it with an option.  | 
3364  |  |  */  | 
3365  |  | #include <unistd.h>  | 
3366  |  | #endif  | 
3367  |  |  | 
3368  |  | #ifndef YY_EXTRA_TYPE  | 
3369  |  | #define YY_EXTRA_TYPE void *  | 
3370  |  | #endif  | 
3371  |  |  | 
3372  |  | static int yy_init_globals ( void );  | 
3373  |  |  | 
3374  |  | /* Accessor methods to globals.  | 
3375  |  |    These are made visible to non-reentrant scanners for convenience. */  | 
3376  |  |  | 
3377  |  | int yylex_destroy ( void );  | 
3378  |  |  | 
3379  |  | int yyget_debug ( void );  | 
3380  |  |  | 
3381  |  | void yyset_debug ( int debug_flag  );  | 
3382  |  |  | 
3383  |  | YY_EXTRA_TYPE yyget_extra ( void );  | 
3384  |  |  | 
3385  |  | void yyset_extra ( YY_EXTRA_TYPE user_defined  );  | 
3386  |  |  | 
3387  |  | FILE *yyget_in ( void );  | 
3388  |  |  | 
3389  |  | void yyset_in  ( FILE * _in_str  );  | 
3390  |  |  | 
3391  |  | FILE *yyget_out ( void );  | 
3392  |  |  | 
3393  |  | void yyset_out  ( FILE * _out_str  );  | 
3394  |  |  | 
3395  |  |       int yyget_leng ( void );  | 
3396  |  |  | 
3397  |  | char *yyget_text ( void );  | 
3398  |  |  | 
3399  |  | int yyget_lineno ( void );  | 
3400  |  |  | 
3401  |  | void yyset_lineno ( int _line_number  );  | 
3402  |  |  | 
3403  |  | /* Macros after this point can all be overridden by user definitions in  | 
3404  |  |  * section 1.  | 
3405  |  |  */  | 
3406  |  |  | 
3407  |  | #ifndef YY_SKIP_YYWRAP  | 
3408  |  | #ifdef __cplusplus  | 
3409  |  | extern "C" int yywrap ( void );  | 
3410  |  | #else  | 
3411  |  | extern int yywrap ( void );  | 
3412  |  | #endif  | 
3413  |  | #endif  | 
3414  |  |  | 
3415  |  | #ifndef YY_NO_UNPUT  | 
3416  |  |       | 
3417  |  | #endif  | 
3418  |  |  | 
3419  |  | #ifndef yytext_ptr  | 
3420  |  | static void yy_flex_strncpy ( char *, const char *, int );  | 
3421  |  | #endif  | 
3422  |  |  | 
3423  |  | #ifdef YY_NEED_STRLEN  | 
3424  |  | static int yy_flex_strlen ( const char * );  | 
3425  |  | #endif  | 
3426  |  |  | 
3427  |  | #ifndef YY_NO_INPUT  | 
3428  |  | #ifdef __cplusplus  | 
3429  |  | static int yyinput ( void );  | 
3430  |  | #else  | 
3431  |  | static int input ( void );  | 
3432  |  | #endif  | 
3433  |  |  | 
3434  |  | #endif  | 
3435  |  |  | 
3436  |  | /* Amount of stuff to slurp up with each read. */  | 
3437  |  | #ifndef YY_READ_BUF_SIZE  | 
3438  |  | #ifdef __ia64__  | 
3439  |  | /* On IA-64, the buffer size is 16k, not 8k */  | 
3440  |  | #define YY_READ_BUF_SIZE 16384  | 
3441  |  | #else  | 
3442  | 585  | #define YY_READ_BUF_SIZE 8192  | 
3443  |  | #endif /* __ia64__ */  | 
3444  |  | #endif  | 
3445  |  |  | 
3446  |  | /* Copy whatever the last rule matched to the standard output. */  | 
3447  |  | #ifndef ECHO  | 
3448  |  | /* This used to be an fputs(), but since the string might contain NUL's,  | 
3449  |  |  * we now use fwrite().  | 
3450  |  |  */  | 
3451  |  | #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) | 
3452  |  | #endif  | 
3453  |  |  | 
3454  |  | /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,  | 
3455  |  |  * is returned in "result".  | 
3456  |  |  */  | 
3457  |  | #ifndef YY_INPUT  | 
3458  |  | #define YY_INPUT(buf,result,max_size) \  | 
3459  |  |   if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \  | 
3460  |  |     { \ | 
3461  |  |     int c = '*'; \  | 
3462  |  |     int n; \  | 
3463  |  |     for ( n = 0; n < max_size && \  | 
3464  |  |            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \  | 
3465  |  |       buf[n] = (char) c; \  | 
3466  |  |     if ( c == '\n' ) \  | 
3467  |  |       buf[n++] = (char) c; \  | 
3468  |  |     if ( c == EOF && ferror( yyin ) ) \  | 
3469  |  |       YY_FATAL_ERROR( "input in flex scanner failed" ); \  | 
3470  |  |     result = n; \  | 
3471  |  |     } \  | 
3472  |  |   else \  | 
3473  |  |     { \ | 
3474  |  |     errno=0; \  | 
3475  |  |     while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \  | 
3476  |  |       { \ | 
3477  |  |       if( errno != EINTR) \  | 
3478  |  |         { \ | 
3479  |  |         YY_FATAL_ERROR( "input in flex scanner failed" ); \  | 
3480  |  |         break; \  | 
3481  |  |         } \  | 
3482  |  |       errno=0; \  | 
3483  |  |       clearerr(yyin); \  | 
3484  |  |       } \  | 
3485  |  |     }\  | 
3486  |  | \  | 
3487  |  |  | 
3488  |  | #endif  | 
3489  |  |  | 
3490  |  | /* No semi-colon after return; correct usage is to write "yyterminate();" -  | 
3491  |  |  * we don't want an extra ';' after the "return" because that will cause  | 
3492  |  |  * some compilers to complain about unreachable statements.  | 
3493  |  |  */  | 
3494  |  | #ifndef yyterminate  | 
3495  | 5  | #define yyterminate() return YY_NULL  | 
3496  |  | #endif  | 
3497  |  |  | 
3498  |  | /* Number of entries by which start-condition stack grows. */  | 
3499  |  | #ifndef YY_START_STACK_INCR  | 
3500  |  | #define YY_START_STACK_INCR 25  | 
3501  |  | #endif  | 
3502  |  |  | 
3503  |  | /* Report a fatal error. */  | 
3504  |  | #ifndef YY_FATAL_ERROR  | 
3505  | 0  | #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )  | 
3506  |  | #endif  | 
3507  |  |  | 
3508  |  | /* end tables serialization structures and prototypes */  | 
3509  |  |  | 
3510  |  | /* Default declaration of generated scanner - a define so the user can  | 
3511  |  |  * easily add parameters.  | 
3512  |  |  */  | 
3513  |  | #ifndef YY_DECL  | 
3514  |  | #define YY_DECL_IS_OURS 1  | 
3515  |  |  | 
3516  |  | extern int yylex (void);  | 
3517  |  |  | 
3518  |  | #define YY_DECL int yylex (void)  | 
3519  |  | #endif /* !YY_DECL */  | 
3520  |  |  | 
3521  |  | /* Code executed at the beginning of each rule, after yytext and yyleng  | 
3522  |  |  * have been set up.  | 
3523  |  |  */  | 
3524  |  | #ifndef YY_USER_ACTION  | 
3525  |  | #define YY_USER_ACTION  | 
3526  |  | #endif  | 
3527  |  |  | 
3528  |  | /* Code executed at the end of each rule. */  | 
3529  |  | #ifndef YY_BREAK  | 
3530  | 74.1k  | #define YY_BREAK /*LINTED*/break;  | 
3531  |  | #endif  | 
3532  |  |  | 
3533  |  | #define YY_RULE_SETUP \  | 
3534  | 247k  |   if ( yyleng > 0 ) \  | 
3535  | 247k  |     YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \  | 
3536  | 247k  |         (yytext[yyleng - 1] == '\n'); \  | 
3537  | 247k  |   YY_USER_ACTION  | 
3538  |  |  | 
3539  |  | /** The main scanner function which does all the work.  | 
3540  |  |  */  | 
3541  |  | YY_DECL  | 
3542  | 172k  | { | 
3543  | 172k  |   yy_state_type yy_current_state;  | 
3544  | 172k  |   char *yy_cp, *yy_bp;  | 
3545  | 172k  |   int yy_act;  | 
3546  |  |       | 
3547  | 172k  |   if ( !(yy_init) )  | 
3548  | 1  |     { | 
3549  | 1  |     (yy_init) = 1;  | 
3550  |  |  | 
3551  |  | #ifdef YY_USER_INIT  | 
3552  |  |     YY_USER_INIT;  | 
3553  |  | #endif  | 
3554  |  |  | 
3555  | 1  |     if ( ! (yy_start) )  | 
3556  | 0  |       (yy_start) = 1; /* first start state */  | 
3557  |  |  | 
3558  | 1  |     if ( ! yyin )  | 
3559  | 0  |       yyin = stdin;  | 
3560  |  |  | 
3561  | 1  |     if ( ! yyout )  | 
3562  | 1  |       yyout = stdout;  | 
3563  |  |  | 
3564  | 1  |     if ( ! YY_CURRENT_BUFFER ) { | 
3565  | 0  |       yyensure_buffer_stack ();  | 
3566  | 0  |       YY_CURRENT_BUFFER_LVALUE =  | 
3567  | 0  |         yy_create_buffer( yyin, YY_BUF_SIZE );  | 
3568  | 0  |     }  | 
3569  |  |  | 
3570  | 1  |     yy_load_buffer_state(  );  | 
3571  | 1  |     }  | 
3572  |  |  | 
3573  | 172k  |   { | 
3574  | 172k  | #line 119 "toke.l"  | 
3575  |  |  | 
3576  | 172k  | #line 3576 "toke.c"  | 
3577  |  |  | 
3578  | 247k  |   while ( /*CONSTCOND*/1 )    /* loops until end-of-file is reached */  | 
3579  | 247k  |     { | 
3580  | 247k  |     yy_cp = (yy_c_buf_p);  | 
3581  |  |  | 
3582  |  |     /* Support of yytext. */  | 
3583  | 247k  |     *yy_cp = (yy_hold_char);  | 
3584  |  |  | 
3585  |  |     /* yy_bp points to the position in yy_ch_buf of the start of  | 
3586  |  |      * the current run.  | 
3587  |  |      */  | 
3588  | 247k  |     yy_bp = yy_cp;  | 
3589  |  |  | 
3590  | 247k  |     yy_current_state = (yy_start);  | 
3591  | 247k  |     yy_current_state += YY_AT_BOL();  | 
3592  | 247k  | yy_match:  | 
3593  | 247k  |     do  | 
3594  | 2.23M  |       { | 
3595  | 2.23M  |       YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;  | 
3596  | 2.23M  |       if ( yy_accept[yy_current_state] )  | 
3597  | 1.97M  |         { | 
3598  | 1.97M  |         (yy_last_accepting_state) = yy_current_state;  | 
3599  | 1.97M  |         (yy_last_accepting_cpos) = yy_cp;  | 
3600  | 1.97M  |         }  | 
3601  | 4.24M  |       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )  | 
3602  | 2.00M  |         { | 
3603  | 2.00M  |         yy_current_state = (int) yy_def[yy_current_state];  | 
3604  | 2.00M  |         if ( yy_current_state >= 1242 )  | 
3605  | 1.81M  |           yy_c = yy_meta[yy_c];  | 
3606  | 2.00M  |         }  | 
3607  | 2.23M  |       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];  | 
3608  | 2.23M  |       ++yy_cp;  | 
3609  | 2.23M  |       }  | 
3610  | 2.23M  |     while ( yy_base[yy_current_state] != 9534 );  | 
3611  |  |  | 
3612  | 247k  | yy_find_action:  | 
3613  | 247k  |     yy_act = yy_accept[yy_current_state];  | 
3614  | 247k  |     if ( yy_act == 0 )  | 
3615  | 122k  |       { /* have to back up */ | 
3616  | 122k  |       yy_cp = (yy_last_accepting_cpos);  | 
3617  | 122k  |       yy_current_state = (yy_last_accepting_state);  | 
3618  | 122k  |       yy_act = yy_accept[yy_current_state];  | 
3619  | 122k  |       }  | 
3620  |  |  | 
3621  | 247k  |     YY_DO_BEFORE_ACTION;  | 
3622  |  |  | 
3623  | 247k  | do_action:  /* This label is used only to access EOF actions. */  | 
3624  |  |  | 
3625  | 247k  |     switch ( yy_act )  | 
3626  | 247k  |   { /* beginning of action switch */ | 
3627  | 0  |       case 0: /* must back up */  | 
3628  |  |       /* undo the effects of YY_DO_BEFORE_ACTION */  | 
3629  | 0  |       *yy_cp = (yy_hold_char);  | 
3630  | 0  |       yy_cp = (yy_last_accepting_cpos);  | 
3631  | 0  |       yy_current_state = (yy_last_accepting_state);  | 
3632  | 0  |       goto yy_find_action;  | 
3633  |  |  | 
3634  | 0  | case 1:  | 
3635  | 0  | YY_RULE_SETUP  | 
3636  | 0  | #line 120 "toke.l"  | 
3637  | 0  | { | 
3638  | 0  |           LEXTRACE(", "); | 
3639  | 0  |           return ',';  | 
3640  | 0  |       }     /* return ',' */  | 
3641  | 0  |   YY_BREAK  | 
3642  | 0  | case 2:  | 
3643  | 0  | YY_RULE_SETUP  | 
3644  | 0  | #line 125 "toke.l"  | 
3645  | 0  | BEGIN STARTDEFS;  | 
3646  | 0  |   YY_BREAK  | 
3647  | 0  | case 3:  | 
3648  | 0  | YY_RULE_SETUP  | 
3649  | 0  | #line 127 "toke.l"  | 
3650  | 0  | { | 
3651  | 0  |           BEGIN INDEFS;  | 
3652  | 0  |           LEXTRACE("DEFVAR "); | 
3653  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
3654  | 0  |         yyterminate();  | 
3655  | 0  |           return DEFVAR;  | 
3656  | 0  |       }  | 
3657  | 0  |   YY_BREAK  | 
3658  |  |  | 
3659  | 0  | case 4:  | 
3660  | 0  | YY_RULE_SETUP  | 
3661  | 0  | #line 136 "toke.l"  | 
3662  | 0  | { | 
3663  | 0  |           BEGIN STARTDEFS;  | 
3664  | 0  |           LEXTRACE(", "); | 
3665  | 0  |           return ',';  | 
3666  | 0  |       }     /* return ',' */  | 
3667  | 0  |   YY_BREAK  | 
3668  | 0  | case 5:  | 
3669  | 0  | YY_RULE_SETUP  | 
3670  | 0  | #line 142 "toke.l"  | 
3671  | 0  | { | 
3672  | 0  |           LEXTRACE("= "); | 
3673  | 0  |           return '=';  | 
3674  | 0  |       }     /* return '=' */  | 
3675  | 0  |   YY_BREAK  | 
3676  | 0  | case 6:  | 
3677  | 0  | YY_RULE_SETUP  | 
3678  | 0  | #line 147 "toke.l"  | 
3679  | 0  | { | 
3680  | 0  |           LEXTRACE("+= "); | 
3681  | 0  |           return '+';  | 
3682  | 0  |       }     /* return '+' */  | 
3683  | 0  |   YY_BREAK  | 
3684  | 0  | case 7:  | 
3685  | 0  | YY_RULE_SETUP  | 
3686  | 0  | #line 152 "toke.l"  | 
3687  | 0  | { | 
3688  | 0  |           LEXTRACE("-= "); | 
3689  | 0  |           return '-';  | 
3690  | 0  |       }     /* return '-' */  | 
3691  | 0  |   YY_BREAK  | 
3692  | 0  | case 8:  | 
3693  | 0  | YY_RULE_SETUP  | 
3694  | 0  | #line 157 "toke.l"  | 
3695  | 0  | { | 
3696  | 0  |           LEXTRACE("BEGINSTR "); | 
3697  | 0  |           sudoerslval.string = NULL;  | 
3698  | 0  |           prev_state = YY_START;  | 
3699  | 0  |           BEGIN INSTR;  | 
3700  | 0  |       }  | 
3701  | 0  |   YY_BREAK  | 
3702  | 0  | case 9:  | 
3703  | 0  | YY_RULE_SETUP  | 
3704  | 0  | #line 164 "toke.l"  | 
3705  | 0  | { | 
3706  | 0  |           LEXTRACE("WORD(2) "); | 
3707  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
3708  | 0  |         yyterminate();  | 
3709  | 0  |           return WORD;  | 
3710  | 0  |       }  | 
3711  | 0  |   YY_BREAK  | 
3712  |  |  | 
3713  |  |  | 
3714  | 0  | case 10:  | 
3715  |  | /* rule 10 can match eol */  | 
3716  | 0  | YY_RULE_SETUP  | 
3717  | 0  | #line 173 "toke.l"  | 
3718  | 0  | { | 
3719  |  |           /* Line continuation char followed by newline. */  | 
3720  | 0  |           sudolineno++;  | 
3721  | 0  |           continued = true;  | 
3722  | 0  |       }  | 
3723  | 0  |   YY_BREAK  | 
3724  | 0  | case 11:  | 
3725  | 0  | YY_RULE_SETUP  | 
3726  | 0  | #line 179 "toke.l"  | 
3727  | 0  | { | 
3728  | 0  |           LEXTRACE("ENDSTR "); | 
3729  | 0  |           BEGIN prev_state;  | 
3730  |  | 
  | 
3731  | 0  |           if (sudoerslval.string == NULL) { | 
3732  | 0  |         sudoers_errstr = N_("empty string"); | 
3733  | 0  |         LEXTRACE("ERROR "); | 
3734  | 0  |         return ERROR;  | 
3735  | 0  |           }  | 
3736  | 0  |           if (prev_state == INITIAL || prev_state == GOTDEFS) { | 
3737  | 0  |         switch (sudoerslval.string[0]) { | 
3738  | 0  |         case '%':  | 
3739  | 0  |             if (sudoerslval.string[1] == '\0' ||  | 
3740  | 0  |           (sudoerslval.string[1] == ':' &&  | 
3741  | 0  |           sudoerslval.string[2] == '\0')) { | 
3742  | 0  |           parser_leak_remove(LEAK_PTR, sudoerslval.string);  | 
3743  | 0  |           free(sudoerslval.string);  | 
3744  | 0  |           sudoers_errstr = N_("empty group"); | 
3745  | 0  |           LEXTRACE("ERROR "); | 
3746  | 0  |           return ERROR;  | 
3747  | 0  |             }  | 
3748  | 0  |             LEXTRACE("USERGROUP "); | 
3749  | 0  |             return USERGROUP;  | 
3750  | 0  |         case '+':  | 
3751  | 0  |             if (sudoerslval.string[1] == '\0') { | 
3752  | 0  |           parser_leak_remove(LEAK_PTR, sudoerslval.string);  | 
3753  | 0  |           free(sudoerslval.string);  | 
3754  | 0  |           sudoers_errstr = N_("empty netgroup"); | 
3755  | 0  |           LEXTRACE("ERROR "); | 
3756  | 0  |           return ERROR;  | 
3757  | 0  |             }  | 
3758  | 0  |             LEXTRACE("NETGROUP "); | 
3759  | 0  |             return NETGROUP;  | 
3760  | 0  |         }  | 
3761  | 0  |           }  | 
3762  | 0  |           LEXTRACE("WORD(4) "); | 
3763  | 0  |           return WORD;  | 
3764  | 0  |       }  | 
3765  | 0  |   YY_BREAK  | 
3766  | 0  | case 12:  | 
3767  | 0  | YY_RULE_SETUP  | 
3768  | 0  | #line 218 "toke.l"  | 
3769  | 0  | { | 
3770  | 0  |           LEXTRACE("BACKSLASH "); | 
3771  | 0  |           if (!append(sudoerstext, sudoersleng))  | 
3772  | 0  |         yyterminate();  | 
3773  | 0  |       }  | 
3774  | 0  |   YY_BREAK  | 
3775  | 0  | case 13:  | 
3776  | 0  | YY_RULE_SETUP  | 
3777  | 0  | #line 224 "toke.l"  | 
3778  | 0  | { | 
3779  | 0  |           LEXTRACE("STRBODY "); | 
3780  | 0  |           if (!append(sudoerstext, sudoersleng))  | 
3781  | 0  |         yyterminate();  | 
3782  | 0  |       }  | 
3783  | 0  |   YY_BREAK  | 
3784  |  |  | 
3785  |  |  | 
3786  | 0  | case 14:  | 
3787  | 0  | YY_RULE_SETUP  | 
3788  | 0  | #line 232 "toke.l"  | 
3789  | 0  | { | 
3790  |  |           /* quoted fnmatch glob char, pass verbatim */  | 
3791  | 0  |           LEXTRACE("QUOTEDCHAR "); | 
3792  | 0  |           if (!fill_args(sudoerstext, 2, sawspace))  | 
3793  | 0  |         yyterminate();  | 
3794  | 0  |           sawspace = false;  | 
3795  | 0  |       }  | 
3796  | 0  |   YY_BREAK  | 
3797  | 0  | case 15:  | 
3798  | 0  | YY_RULE_SETUP  | 
3799  | 0  | #line 240 "toke.l"  | 
3800  | 0  | { | 
3801  |  |           /* quoted sudoers special char, strip backslash */  | 
3802  | 0  |           LEXTRACE("QUOTEDCHAR "); | 
3803  | 0  |           if (!fill_args(sudoerstext + 1, 1, sawspace))  | 
3804  | 0  |         yyterminate();  | 
3805  | 0  |           sawspace = false;  | 
3806  | 0  |       }  | 
3807  | 0  |   YY_BREAK  | 
3808  | 0  | case 16:  | 
3809  |  | /* rule 16 can match eol */  | 
3810  | 0  | YY_RULE_SETUP  | 
3811  | 0  | #line 248 "toke.l"  | 
3812  | 0  | { | 
3813  | 0  |           BEGIN INITIAL;  | 
3814  | 0  |           sudoersless(0);  | 
3815  | 0  |           yy_set_bol(0);  | 
3816  | 0  |           return COMMAND;  | 
3817  | 0  |       }     /* end of command line args */  | 
3818  | 0  |   YY_BREAK  | 
3819  | 1  | case 17:  | 
3820  | 1  | YY_RULE_SETUP  | 
3821  | 1  | #line 255 "toke.l"  | 
3822  | 1  | { | 
3823  | 1  |           if (sudoerslval.command.args == NULL && sudoerstext[0] == '^') { | 
3824  | 1  |         LEXTRACE("ARG REGEX "); | 
3825  | 1  |         BEGIN GOTREGEX;  | 
3826  | 1  |         sudoersless(0);  | 
3827  | 1  |         yy_set_bol(0);  | 
3828  | 1  |           } else { | 
3829  | 0  |         LEXTRACE("ARG "); | 
3830  | 0  |         if (!fill_args(sudoerstext, sudoersleng, sawspace))  | 
3831  | 0  |             yyterminate();  | 
3832  | 0  |         sawspace = false;  | 
3833  | 0  |           }  | 
3834  | 1  |       }     /* a command line arg */  | 
3835  | 1  |   YY_BREAK  | 
3836  |  |  | 
3837  |  |  | 
3838  | 43.0k  | case 18:  | 
3839  | 43.0k  | YY_RULE_SETUP  | 
3840  | 43.0k  | #line 271 "toke.l"  | 
3841  | 43.0k  | { | 
3842  |  |           /* quoted character, pass verbatim */  | 
3843  | 43.0k  |           LEXTRACE("QUOTEDCHAR "); | 
3844  | 43.0k  |           if (!fill_args(sudoerstext, 2, false))  | 
3845  | 0  |         yyterminate();  | 
3846  | 43.0k  |       }  | 
3847  | 43.0k  |   YY_BREAK  | 
3848  | 43.0k  | case 19:  | 
3849  |  | /* rule 19 can match eol */  | 
3850  | 1  | YY_RULE_SETUP  | 
3851  | 1  | #line 278 "toke.l"  | 
3852  | 1  | { | 
3853  |  |           /* Let the parser attempt to recover. */  | 
3854  | 1  |           sudoersless(0);  | 
3855  | 1  |           yy_set_bol(0);  | 
3856  | 1  |           BEGIN INITIAL;  | 
3857  |  |  | 
3858  | 1  |           sudoers_errstr = N_("unterminated regular expression"); | 
3859  | 1  |           LEXTRACE("ERROR "); | 
3860  | 1  |           return ERROR;  | 
3861  | 43.0k  |       }      /* illegal inside regex */  | 
3862  | 0  |   YY_BREAK  | 
3863  | 0  | case 20:  | 
3864  | 0  | YY_RULE_SETUP  | 
3865  | 0  | #line 289 "toke.l"  | 
3866  | 0  | { | 
3867  | 0  |           if (!fill_args("$", 1, false)) | 
3868  | 0  |         yyterminate();  | 
3869  | 0  |           BEGIN INITIAL;  | 
3870  | 0  |           continued = false;  | 
3871  | 0  |           if (sudoers_strict()) { | 
3872  | 0  |         if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) { | 
3873  | 0  |             LEXTRACE("ERROR "); | 
3874  | 0  |             return ERROR;  | 
3875  | 0  |         }  | 
3876  | 0  |           }  | 
3877  | 0  |           return COMMAND;  | 
3878  | 0  |       }  | 
3879  | 0  |   YY_BREAK  | 
3880  | 31.0k  | case 21:  | 
3881  | 31.0k  | YY_RULE_SETUP  | 
3882  | 31.0k  | #line 303 "toke.l"  | 
3883  | 31.0k  | { | 
3884  | 31.0k  |           if (continued) { | 
3885  |  |         /* remove whitespace after line continuation */  | 
3886  | 0  |         while (isblank((unsigned char)*sudoerstext)) { | 
3887  | 0  |             sudoerstext++;  | 
3888  | 0  |             sudoersleng--;  | 
3889  | 0  |         }  | 
3890  | 0  |         continued = false;  | 
3891  | 0  |           }  | 
3892  | 31.0k  |           if (sudoersleng != 0) { | 
3893  | 31.0k  |         if (!fill_args(sudoerstext, sudoersleng, false))  | 
3894  | 0  |             yyterminate();  | 
3895  | 31.0k  |           }  | 
3896  | 31.0k  |       }  | 
3897  | 31.0k  |   YY_BREAK  | 
3898  |  |  | 
3899  | 31.0k  | case 22:  | 
3900  | 0  | YY_RULE_SETUP  | 
3901  | 0  | #line 319 "toke.l"  | 
3902  | 0  | { | 
3903  |  |           /* Only return DIGEST if the length is correct. */  | 
3904  | 0  |           size_t digest_len =  | 
3905  | 0  |         sudo_digest_getlen(digest_type);  | 
3906  | 0  |           if ((size_t)sudoersleng == digest_len * 2) { | 
3907  | 0  |         if (!fill(sudoerstext, sudoersleng))  | 
3908  | 0  |             yyterminate();  | 
3909  | 0  |         BEGIN INITIAL;  | 
3910  | 0  |         LEXTRACE("DIGEST "); | 
3911  | 0  |         return DIGEST;  | 
3912  | 0  |           }  | 
3913  | 0  |           BEGIN INITIAL;  | 
3914  | 0  |           sudoersless(sudoersleng);  | 
3915  | 0  |       } /* hex digest */  | 
3916  | 0  |   YY_BREAK  | 
3917  | 0  | case 23:  | 
3918  | 0  | YY_RULE_SETUP  | 
3919  | 0  | #line 334 "toke.l"  | 
3920  | 0  | { | 
3921  |  |           /* Only return DIGEST if the length is correct. */  | 
3922  | 0  |           size_t len, digest_len =  | 
3923  | 0  |         sudo_digest_getlen(digest_type);  | 
3924  | 0  |           if (sudoerstext[sudoersleng - 1] == '=') { | 
3925  |  |         /* use padding */  | 
3926  | 0  |         len = 4 * ((digest_len + 2) / 3);  | 
3927  | 0  |           } else { | 
3928  |  |         /* no padding */  | 
3929  | 0  |         len = (4 * digest_len + 2) / 3;  | 
3930  | 0  |           }  | 
3931  | 0  |           if ((size_t)sudoersleng == len) { | 
3932  | 0  |         if (!fill(sudoerstext, sudoersleng))  | 
3933  | 0  |             yyterminate();  | 
3934  | 0  |         BEGIN INITIAL;  | 
3935  | 0  |         LEXTRACE("DIGEST "); | 
3936  | 0  |         return DIGEST;  | 
3937  | 0  |           }  | 
3938  | 0  |           BEGIN INITIAL;  | 
3939  | 0  |           sudoersless(sudoersleng);  | 
3940  | 0  |       } /* base64 digest */  | 
3941  | 0  |   YY_BREAK  | 
3942  | 0  | case 24:  | 
3943  | 0  | YY_RULE_SETUP  | 
3944  | 0  | #line 356 "toke.l"  | 
3945  | 0  | { | 
3946  | 0  |           if (continued) { | 
3947  | 0  |         sudoers_errstr = N_("invalid line continuation"); | 
3948  | 0  |         LEXTRACE("ERROR "); | 
3949  | 0  |         return ERROR;  | 
3950  | 0  |           }  | 
3951  |  |  | 
3952  | 0  |           BEGIN GOTINC;  | 
3953  | 0  |           LEXTRACE("INCLUDE "); | 
3954  | 0  |           return INCLUDE;  | 
3955  | 0  |       }  | 
3956  | 0  |   YY_BREAK  | 
3957  | 0  | case 25:  | 
3958  | 0  | YY_RULE_SETUP  | 
3959  | 0  | #line 368 "toke.l"  | 
3960  | 0  | { | 
3961  | 0  |           if (continued) { | 
3962  | 0  |         sudoers_errstr = N_("invalid line continuation"); | 
3963  | 0  |         LEXTRACE("ERROR "); | 
3964  | 0  |         return ERROR;  | 
3965  | 0  |           }  | 
3966  |  |  | 
3967  | 0  |           BEGIN GOTINC;  | 
3968  | 0  |           LEXTRACE("INCLUDEDIR "); | 
3969  | 0  |           return INCLUDEDIR;  | 
3970  | 0  |       }  | 
3971  | 0  |   YY_BREAK  | 
3972  | 0  | case 26:  | 
3973  |  | /* rule 26 can match eol */  | 
3974  | 0  | YY_RULE_SETUP  | 
3975  | 0  | #line 380 "toke.l"  | 
3976  | 0  | { | 
3977  | 0  |           if (continued) { | 
3978  | 0  |         sudoers_errstr = N_("invalid line continuation"); | 
3979  | 0  |         LEXTRACE("ERROR "); | 
3980  | 0  |         return ERROR;  | 
3981  | 0  |           }  | 
3982  |  |  | 
3983  |  |           /* only consume #include */  | 
3984  | 0  |           sudoersless(sizeof("#include") - 1); | 
3985  | 0  |           yy_set_bol(0);  | 
3986  |  | 
  | 
3987  | 0  |           BEGIN GOTINC;  | 
3988  | 0  |           LEXTRACE("INCLUDE "); | 
3989  | 0  |           return INCLUDE;  | 
3990  | 0  |       }  | 
3991  | 0  |   YY_BREAK  | 
3992  | 0  | case 27:  | 
3993  |  | /* rule 27 can match eol */  | 
3994  | 0  | YY_RULE_SETUP  | 
3995  | 0  | #line 396 "toke.l"  | 
3996  | 0  | { | 
3997  | 0  |           if (continued) { | 
3998  | 0  |         sudoers_errstr = N_("invalid line continuation"); | 
3999  | 0  |         LEXTRACE("ERROR "); | 
4000  | 0  |         return ERROR;  | 
4001  | 0  |           }  | 
4002  |  |  | 
4003  |  |           /* only consume #includedir */  | 
4004  | 0  |           sudoersless(sizeof("#includedir") - 1); | 
4005  | 0  |           yy_set_bol(0);  | 
4006  |  | 
  | 
4007  | 0  |           BEGIN GOTINC;  | 
4008  | 0  |           LEXTRACE("INCLUDEDIR "); | 
4009  | 0  |           return INCLUDEDIR;  | 
4010  | 0  |       }  | 
4011  | 0  |   YY_BREAK  | 
4012  | 0  | case 28:  | 
4013  | 0  | YY_RULE_SETUP  | 
4014  | 0  | #line 412 "toke.l"  | 
4015  | 0  | { | 
4016  | 0  |           char deftype;  | 
4017  | 0  |           size_t n;  | 
4018  |  | 
  | 
4019  | 0  |           if (continued) { | 
4020  | 0  |         sudoers_errstr = N_("invalid line continuation"); | 
4021  | 0  |         LEXTRACE("ERROR "); | 
4022  | 0  |         return ERROR;  | 
4023  | 0  |           }  | 
4024  |  |  | 
4025  | 0  |           for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)  | 
4026  | 0  |         continue;  | 
4027  | 0  |           n += sizeof("Defaults") - 1; | 
4028  | 0  |           if ((deftype = sudoerstext[n++]) != '\0') { | 
4029  | 0  |         while (isblank((unsigned char)sudoerstext[n]))  | 
4030  | 0  |             n++;  | 
4031  | 0  |           }  | 
4032  | 0  |           BEGIN GOTDEFS;  | 
4033  | 0  |           switch (deftype) { | 
4034  | 0  |         case ':':  | 
4035  | 0  |             sudoersless(n);  | 
4036  | 0  |             LEXTRACE("DEFAULTS_USER "); | 
4037  | 0  |             return DEFAULTS_USER;  | 
4038  | 0  |         case '>':  | 
4039  | 0  |             sudoersless(n);  | 
4040  | 0  |             LEXTRACE("DEFAULTS_RUNAS "); | 
4041  | 0  |             return DEFAULTS_RUNAS;  | 
4042  | 0  |         case '@':  | 
4043  | 0  |             sudoersless(n);  | 
4044  | 0  |             LEXTRACE("DEFAULTS_HOST "); | 
4045  | 0  |             return DEFAULTS_HOST;  | 
4046  | 0  |         case '!':  | 
4047  | 0  |             sudoersless(n);  | 
4048  | 0  |             LEXTRACE("DEFAULTS_CMND "); | 
4049  | 0  |             return DEFAULTS_CMND;  | 
4050  | 0  |         default:  | 
4051  | 0  |             LEXTRACE("DEFAULTS "); | 
4052  | 0  |             return DEFAULTS;  | 
4053  | 0  |           }  | 
4054  | 0  |       }  | 
4055  | 0  |   YY_BREAK  | 
4056  | 0  | case 29:  | 
4057  | 0  | YY_RULE_SETUP  | 
4058  | 0  | #line 453 "toke.l"  | 
4059  | 0  | { | 
4060  | 0  |           size_t n;  | 
4061  |  | 
  | 
4062  | 0  |           if (continued) { | 
4063  | 0  |         sudoers_errstr = N_("invalid line continuation"); | 
4064  | 0  |         LEXTRACE("ERROR "); | 
4065  | 0  |         return ERROR;  | 
4066  | 0  |           }  | 
4067  |  |  | 
4068  | 0  |           for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)  | 
4069  | 0  |         continue;  | 
4070  | 0  |           switch (sudoerstext[n]) { | 
4071  | 0  |         case 'H':  | 
4072  | 0  |             LEXTRACE("HOSTALIAS "); | 
4073  | 0  |             return HOSTALIAS;  | 
4074  | 0  |         case 'C':  | 
4075  | 0  |             LEXTRACE("CMNDALIAS "); | 
4076  | 0  |             return CMNDALIAS;  | 
4077  | 0  |         case 'U':  | 
4078  | 0  |             LEXTRACE("USERALIAS "); | 
4079  | 0  |             return USERALIAS;  | 
4080  | 0  |         case 'R':  | 
4081  | 0  |             LEXTRACE("RUNASALIAS "); | 
4082  | 0  |             return RUNASALIAS;  | 
4083  | 0  |           }  | 
4084  | 0  |       }  | 
4085  | 0  |   YY_BREAK  | 
4086  | 0  | case 30:  | 
4087  | 0  | YY_RULE_SETUP  | 
4088  | 0  | #line 480 "toke.l"  | 
4089  | 0  | { | 
4090  |  |         /* cmnd does not require passwd for this user */  | 
4091  | 0  |             LEXTRACE("NOPASSWD "); | 
4092  | 0  |             return NOPASSWD;  | 
4093  | 0  |       }  | 
4094  | 0  |   YY_BREAK  | 
4095  | 0  | case 31:  | 
4096  | 0  | YY_RULE_SETUP  | 
4097  | 0  | #line 486 "toke.l"  | 
4098  | 0  | { | 
4099  |  |         /* cmnd requires passwd for this user */  | 
4100  | 0  |             LEXTRACE("PASSWD "); | 
4101  | 0  |             return PASSWD;  | 
4102  | 0  |       }  | 
4103  | 0  |   YY_BREAK  | 
4104  | 0  | case 32:  | 
4105  | 0  | YY_RULE_SETUP  | 
4106  | 0  | #line 492 "toke.l"  | 
4107  | 0  | { | 
4108  | 0  |             LEXTRACE("NOEXEC "); | 
4109  | 0  |             return NOEXEC;  | 
4110  | 0  |       }  | 
4111  | 0  |   YY_BREAK  | 
4112  | 0  | case 33:  | 
4113  | 0  | YY_RULE_SETUP  | 
4114  | 0  | #line 497 "toke.l"  | 
4115  | 0  | { | 
4116  | 0  |             LEXTRACE("EXEC "); | 
4117  | 0  |             return EXEC;  | 
4118  | 0  |       }  | 
4119  | 0  |   YY_BREAK  | 
4120  | 0  | case 34:  | 
4121  | 0  | YY_RULE_SETUP  | 
4122  | 0  | #line 502 "toke.l"  | 
4123  | 0  | { | 
4124  | 0  |             LEXTRACE("INTERCEPT "); | 
4125  | 0  |             return INTERCEPT;  | 
4126  | 0  |       }  | 
4127  | 0  |   YY_BREAK  | 
4128  | 0  | case 35:  | 
4129  | 0  | YY_RULE_SETUP  | 
4130  | 0  | #line 507 "toke.l"  | 
4131  | 0  | { | 
4132  | 0  |             LEXTRACE("NOINTERCEPT "); | 
4133  | 0  |             return NOINTERCEPT;  | 
4134  | 0  |       }  | 
4135  | 0  |   YY_BREAK  | 
4136  | 0  | case 36:  | 
4137  | 0  | YY_RULE_SETUP  | 
4138  | 0  | #line 512 "toke.l"  | 
4139  | 0  | { | 
4140  | 0  |             LEXTRACE("SETENV "); | 
4141  | 0  |             return SETENV;  | 
4142  | 0  |       }  | 
4143  | 0  |   YY_BREAK  | 
4144  | 0  | case 37:  | 
4145  | 0  | YY_RULE_SETUP  | 
4146  | 0  | #line 517 "toke.l"  | 
4147  | 0  | { | 
4148  | 0  |             LEXTRACE("NOSETENV "); | 
4149  | 0  |             return NOSETENV;  | 
4150  | 0  |       }  | 
4151  | 0  |   YY_BREAK  | 
4152  | 0  | case 38:  | 
4153  | 0  | YY_RULE_SETUP  | 
4154  | 0  | #line 522 "toke.l"  | 
4155  | 0  | { | 
4156  | 0  |             LEXTRACE("LOG_OUTPUT "); | 
4157  | 0  |             return LOG_OUTPUT;  | 
4158  | 0  |       }  | 
4159  | 0  |   YY_BREAK  | 
4160  | 0  | case 39:  | 
4161  | 0  | YY_RULE_SETUP  | 
4162  | 0  | #line 527 "toke.l"  | 
4163  | 0  | { | 
4164  | 0  |             LEXTRACE("NOLOG_OUTPUT "); | 
4165  | 0  |             return NOLOG_OUTPUT;  | 
4166  | 0  |       }  | 
4167  | 0  |   YY_BREAK  | 
4168  | 0  | case 40:  | 
4169  | 0  | YY_RULE_SETUP  | 
4170  | 0  | #line 532 "toke.l"  | 
4171  | 0  | { | 
4172  | 0  |             LEXTRACE("LOG_INPUT "); | 
4173  | 0  |             return LOG_INPUT;  | 
4174  | 0  |       }  | 
4175  | 0  |   YY_BREAK  | 
4176  | 0  | case 41:  | 
4177  | 0  | YY_RULE_SETUP  | 
4178  | 0  | #line 537 "toke.l"  | 
4179  | 0  | { | 
4180  | 0  |             LEXTRACE("NOLOG_INPUT "); | 
4181  | 0  |             return NOLOG_INPUT;  | 
4182  | 0  |       }  | 
4183  | 0  |   YY_BREAK  | 
4184  | 0  | case 42:  | 
4185  | 0  | YY_RULE_SETUP  | 
4186  | 0  | #line 542 "toke.l"  | 
4187  | 0  | { | 
4188  | 0  |             LEXTRACE("MAIL "); | 
4189  | 0  |             return MAIL;  | 
4190  | 0  |       }  | 
4191  | 0  |   YY_BREAK  | 
4192  | 0  | case 43:  | 
4193  | 0  | YY_RULE_SETUP  | 
4194  | 0  | #line 547 "toke.l"  | 
4195  | 0  | { | 
4196  | 0  |             LEXTRACE("NOMAIL "); | 
4197  | 0  |             return NOMAIL;  | 
4198  | 0  |       }  | 
4199  | 0  |   YY_BREAK  | 
4200  | 0  | case 44:  | 
4201  | 0  | YY_RULE_SETUP  | 
4202  | 0  | #line 552 "toke.l"  | 
4203  | 0  | { | 
4204  | 0  |             LEXTRACE("FOLLOW "); | 
4205  | 0  |             return FOLLOWLNK;  | 
4206  | 0  |       }  | 
4207  | 0  |   YY_BREAK  | 
4208  | 0  | case 45:  | 
4209  | 0  | YY_RULE_SETUP  | 
4210  | 0  | #line 557 "toke.l"  | 
4211  | 0  | { | 
4212  | 0  |             LEXTRACE("NOFOLLOW "); | 
4213  | 0  |             return NOFOLLOWLNK;  | 
4214  | 0  |       }  | 
4215  | 0  |   YY_BREAK  | 
4216  | 0  | case 46:  | 
4217  | 0  | YY_RULE_SETUP  | 
4218  | 0  | #line 562 "toke.l"  | 
4219  | 0  | { | 
4220  | 0  |           if (sudoerstext[0] == '+')  | 
4221  | 0  |         sudoers_errstr = N_("empty netgroup"); | 
4222  | 0  |           else  | 
4223  | 0  |         sudoers_errstr = N_("empty group"); | 
4224  | 0  |           LEXTRACE("ERROR "); | 
4225  | 0  |           return ERROR;  | 
4226  | 0  |       }  | 
4227  | 0  |   YY_BREAK  | 
4228  | 0  | case 47:  | 
4229  | 0  | YY_RULE_SETUP  | 
4230  | 0  | #line 571 "toke.l"  | 
4231  | 0  | { | 
4232  |  |           /* netgroup */  | 
4233  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
4234  | 0  |         yyterminate();  | 
4235  | 0  |           LEXTRACE("NETGROUP "); | 
4236  | 0  |           return NETGROUP;  | 
4237  | 0  |       }  | 
4238  | 0  |   YY_BREAK  | 
4239  | 0  | case 48:  | 
4240  | 0  | YY_RULE_SETUP  | 
4241  | 0  | #line 579 "toke.l"  | 
4242  | 0  | { | 
4243  |  |           /* group */  | 
4244  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
4245  | 0  |         yyterminate();  | 
4246  | 0  |           LEXTRACE("USERGROUP "); | 
4247  | 0  |           return USERGROUP;  | 
4248  | 0  |       }  | 
4249  | 0  |   YY_BREAK  | 
4250  | 0  | case 49:  | 
4251  | 0  | YY_RULE_SETUP  | 
4252  | 0  | #line 587 "toke.l"  | 
4253  | 0  | { | 
4254  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
4255  | 0  |         yyterminate();  | 
4256  | 0  |           LEXTRACE("NTWKADDR "); | 
4257  | 0  |           return NTWKADDR;  | 
4258  | 0  |       }  | 
4259  | 0  |   YY_BREAK  | 
4260  | 0  | case 50:  | 
4261  | 0  | YY_RULE_SETUP  | 
4262  | 0  | #line 594 "toke.l"  | 
4263  | 0  | { | 
4264  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
4265  | 0  |         yyterminate();  | 
4266  | 0  |           LEXTRACE("NTWKADDR "); | 
4267  | 0  |           return NTWKADDR;  | 
4268  | 0  |       }  | 
4269  | 0  |   YY_BREAK  | 
4270  | 0  | case 51:  | 
4271  | 0  | YY_RULE_SETUP  | 
4272  | 0  | #line 601 "toke.l"  | 
4273  | 0  | { | 
4274  | 0  |           if (!ipv6_valid(sudoerstext)) { | 
4275  | 0  |         sudoers_errstr = N_("invalid IPv6 address"); | 
4276  | 0  |         LEXTRACE("ERROR "); | 
4277  | 0  |         return ERROR;  | 
4278  | 0  |           }  | 
4279  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
4280  | 0  |         yyterminate();  | 
4281  | 0  |           LEXTRACE("NTWKADDR "); | 
4282  | 0  |           return NTWKADDR;  | 
4283  | 0  |       }  | 
4284  | 0  |   YY_BREAK  | 
4285  | 0  | case 52:  | 
4286  | 0  | YY_RULE_SETUP  | 
4287  | 0  | #line 613 "toke.l"  | 
4288  | 0  | { | 
4289  | 0  |           if (!ipv6_valid(sudoerstext)) { | 
4290  | 0  |         sudoers_errstr = N_("invalid IPv6 address"); | 
4291  | 0  |         LEXTRACE("ERROR "); | 
4292  | 0  |         return ERROR;  | 
4293  | 0  |           }  | 
4294  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
4295  | 0  |         yyterminate();  | 
4296  | 0  |           LEXTRACE("NTWKADDR "); | 
4297  | 0  |           return NTWKADDR;  | 
4298  | 0  |       }  | 
4299  | 0  |   YY_BREAK  | 
4300  | 0  | case 53:  | 
4301  | 0  | YY_RULE_SETUP  | 
4302  | 0  | #line 625 "toke.l"  | 
4303  | 0  | { | 
4304  | 0  |           LEXTRACE("ALL "); | 
4305  | 0  |           return ALL;  | 
4306  |  | 
  | 
4307  | 0  |       }  | 
4308  | 0  |   YY_BREAK  | 
4309  | 0  | case 54:  | 
4310  | 0  | YY_RULE_SETUP  | 
4311  | 0  | #line 631 "toke.l"  | 
4312  | 0  | { | 
4313  | 0  |           LEXTRACE("CMND_TIMEOUT "); | 
4314  | 0  |           return CMND_TIMEOUT;  | 
4315  | 0  |       }  | 
4316  | 0  |   YY_BREAK  | 
4317  | 0  | case 55:  | 
4318  | 0  | YY_RULE_SETUP  | 
4319  | 0  | #line 636 "toke.l"  | 
4320  | 0  | { | 
4321  | 0  |           LEXTRACE("NOTBEFORE "); | 
4322  | 0  |           return NOTBEFORE;  | 
4323  | 0  |       }  | 
4324  | 0  |   YY_BREAK  | 
4325  | 0  | case 56:  | 
4326  | 0  | YY_RULE_SETUP  | 
4327  | 0  | #line 641 "toke.l"  | 
4328  | 0  | { | 
4329  | 0  |           LEXTRACE("NOTAFTER "); | 
4330  | 0  |           return NOTAFTER;  | 
4331  | 0  |       }  | 
4332  | 0  |   YY_BREAK  | 
4333  | 0  | case 57:  | 
4334  | 0  | YY_RULE_SETUP  | 
4335  | 0  | #line 646 "toke.l"  | 
4336  | 0  | { | 
4337  | 0  |           LEXTRACE("CWD "); | 
4338  | 0  |           prev_state = YY_START;  | 
4339  | 0  |           BEGIN EXPECTPATH;  | 
4340  | 0  |           return CWD;  | 
4341  | 0  |       }  | 
4342  | 0  |   YY_BREAK  | 
4343  | 0  | case 58:  | 
4344  | 0  | YY_RULE_SETUP  | 
4345  | 0  | #line 653 "toke.l"  | 
4346  | 0  | { | 
4347  | 0  |           LEXTRACE("CHROOT "); | 
4348  | 0  |           prev_state = YY_START;  | 
4349  | 0  |           BEGIN EXPECTPATH;  | 
4350  | 0  |           return CHROOT;  | 
4351  | 0  |       }  | 
4352  | 0  |   YY_BREAK  | 
4353  | 0  | case 59:  | 
4354  | 0  | YY_RULE_SETUP  | 
4355  | 0  | #line 660 "toke.l"  | 
4356  | 0  | { | 
4357  | 0  |           LEXTRACE("ROLE "); | 
4358  | 0  |           return ROLE;  | 
4359  | 0  |       }  | 
4360  | 0  |   YY_BREAK  | 
4361  | 0  | case 60:  | 
4362  | 0  | YY_RULE_SETUP  | 
4363  | 0  | #line 665 "toke.l"  | 
4364  | 0  | { | 
4365  | 0  |           LEXTRACE("TYPE "); | 
4366  | 0  |           return TYPE;  | 
4367  | 0  |       }  | 
4368  | 0  |   YY_BREAK  | 
4369  | 0  | case 61:  | 
4370  | 0  | YY_RULE_SETUP  | 
4371  | 0  | #line 669 "toke.l"  | 
4372  | 0  | { | 
4373  | 0  |           LEXTRACE("APPARMOR_PROFILE "); | 
4374  | 0  |           return APPARMOR_PROFILE;  | 
4375  | 0  |       }  | 
4376  | 0  |   YY_BREAK  | 
4377  | 0  | case 62:  | 
4378  | 0  | YY_RULE_SETUP  | 
4379  | 0  | #line 673 "toke.l"  | 
4380  | 0  | { | 
4381  | 0  |           LEXTRACE("PRIVS "); | 
4382  | 0  |           return PRIVS;  | 
4383  | 0  |       }  | 
4384  | 0  |   YY_BREAK  | 
4385  | 0  | case 63:  | 
4386  | 0  | YY_RULE_SETUP  | 
4387  | 0  | #line 678 "toke.l"  | 
4388  | 0  | { | 
4389  | 0  |           LEXTRACE("LIMITPRIVS "); | 
4390  | 0  |           return LIMITPRIVS;  | 
4391  | 0  |       }  | 
4392  | 0  |   YY_BREAK  | 
4393  | 0  | case 64:  | 
4394  | 0  | YY_RULE_SETUP  | 
4395  | 0  | #line 683 "toke.l"  | 
4396  | 0  | { | 
4397  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
4398  | 0  |         yyterminate();  | 
4399  | 0  |           LEXTRACE("ALIAS "); | 
4400  | 0  |           return ALIAS;  | 
4401  | 0  |       }  | 
4402  | 0  |   YY_BREAK  | 
4403  | 0  | case 65:  | 
4404  | 0  | YY_RULE_SETUP  | 
4405  | 0  | #line 690 "toke.l"  | 
4406  | 0  | { | 
4407  |  |           /* XXX - no way to specify digest for command */  | 
4408  |  |           /* no command args allowed for Defaults!/path */  | 
4409  | 0  |           if (!fill_cmnd(sudoerstext, sudoersleng))  | 
4410  | 0  |         yyterminate();  | 
4411  | 0  |           LEXTRACE("COMMAND "); | 
4412  | 0  |           return COMMAND;  | 
4413  | 0  |       }  | 
4414  | 0  |   YY_BREAK  | 
4415  | 0  | case 66:  | 
4416  | 0  | YY_RULE_SETUP  | 
4417  | 0  | #line 699 "toke.l"  | 
4418  | 0  | { | 
4419  | 0  |           digest_type = SUDO_DIGEST_SHA224;  | 
4420  | 0  |           BEGIN WANTDIGEST;  | 
4421  | 0  |           LEXTRACE("SHA224_TOK "); | 
4422  | 0  |           return SHA224_TOK;  | 
4423  | 0  |       }  | 
4424  | 0  |   YY_BREAK  | 
4425  | 0  | case 67:  | 
4426  | 0  | YY_RULE_SETUP  | 
4427  | 0  | #line 706 "toke.l"  | 
4428  | 0  | { | 
4429  | 0  |           digest_type = SUDO_DIGEST_SHA256;  | 
4430  | 0  |           BEGIN WANTDIGEST;  | 
4431  | 0  |           LEXTRACE("SHA256_TOK "); | 
4432  | 0  |           return SHA256_TOK;  | 
4433  | 0  |       }  | 
4434  | 0  |   YY_BREAK  | 
4435  | 0  | case 68:  | 
4436  | 0  | YY_RULE_SETUP  | 
4437  | 0  | #line 713 "toke.l"  | 
4438  | 0  | { | 
4439  | 0  |           digest_type = SUDO_DIGEST_SHA384;  | 
4440  | 0  |           BEGIN WANTDIGEST;  | 
4441  | 0  |           LEXTRACE("SHA384_TOK "); | 
4442  | 0  |           return SHA384_TOK;  | 
4443  | 0  |       }  | 
4444  | 0  |   YY_BREAK  | 
4445  | 0  | case 69:  | 
4446  | 0  | YY_RULE_SETUP  | 
4447  | 0  | #line 720 "toke.l"  | 
4448  | 0  | { | 
4449  | 0  |           digest_type = SUDO_DIGEST_SHA512;  | 
4450  | 0  |           BEGIN WANTDIGEST;  | 
4451  | 0  |           LEXTRACE("SHA512_TOK "); | 
4452  | 0  |           return SHA512_TOK;  | 
4453  | 0  |       }  | 
4454  | 0  |   YY_BREAK  | 
4455  | 0  | case 70:  | 
4456  | 0  | YY_RULE_SETUP  | 
4457  | 0  | #line 727 "toke.l"  | 
4458  | 0  | { | 
4459  | 0  |           BEGIN GOTCMND;  | 
4460  | 0  |           LEXTRACE("COMMAND "); | 
4461  | 0  |           if (!fill_cmnd(sudoerstext, sudoersleng))  | 
4462  | 0  |         yyterminate();  | 
4463  | 0  |       }     /* sudo -e */  | 
4464  | 0  |   YY_BREAK  | 
4465  | 0  | case 71:  | 
4466  | 0  | YY_RULE_SETUP  | 
4467  | 0  | #line 734 "toke.l"  | 
4468  | 0  | { | 
4469  | 0  |         BEGIN prev_state;  | 
4470  | 0  |         if (!fill(sudoerstext, sudoersleng))  | 
4471  | 0  |             yyterminate();  | 
4472  | 0  |         LEXTRACE("WORD(5) "); | 
4473  | 0  |         return WORD;  | 
4474  | 0  |       }  | 
4475  | 0  |   YY_BREAK  | 
4476  | 0  | case 72:  | 
4477  | 0  | YY_RULE_SETUP  | 
4478  | 0  | #line 742 "toke.l"  | 
4479  | 0  | { | 
4480  |  |           /* directories can't have args... */  | 
4481  | 0  |           if (sudoerstext[sudoersleng - 1] == '/') { | 
4482  | 0  |         LEXTRACE("COMMAND "); | 
4483  | 0  |         if (!fill_cmnd(sudoerstext, sudoersleng))  | 
4484  | 0  |             yyterminate();  | 
4485  | 0  |         return COMMAND;  | 
4486  | 0  |           }  | 
4487  | 0  |           BEGIN GOTCMND;  | 
4488  | 0  |           LEXTRACE("COMMAND "); | 
4489  | 0  |           if (!fill_cmnd(sudoerstext, sudoersleng))  | 
4490  | 0  |         yyterminate();  | 
4491  | 0  |       }     /* a pathname */  | 
4492  | 0  |   YY_BREAK  | 
4493  | 1  | case 73:  | 
4494  | 1  | YY_RULE_SETUP  | 
4495  | 1  | #line 756 "toke.l"  | 
4496  | 1  | { | 
4497  | 1  |           if (sudoers_strict()) { | 
4498  | 0  |         if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) { | 
4499  | 0  |             LEXTRACE("ERROR "); | 
4500  | 0  |             return ERROR;  | 
4501  | 0  |         }  | 
4502  | 0  |           }  | 
4503  | 1  |           BEGIN GOTCMND;  | 
4504  | 1  |           LEXTRACE("COMMAND "); | 
4505  | 1  |           if (!fill_cmnd(sudoerstext, sudoersleng))  | 
4506  | 0  |         yyterminate();  | 
4507  | 1  |       }     /* a regex */  | 
4508  | 1  |   YY_BREAK  | 
4509  | 1  | case 74:  | 
4510  | 0  | YY_RULE_SETUP  | 
4511  | 0  | #line 769 "toke.l"  | 
4512  | 0  | { | 
4513  | 0  |           LEXTRACE("BEGINSTR "); | 
4514  | 0  |           sudoerslval.string = NULL;  | 
4515  | 0  |           if (YY_START != EXPECTPATH)  | 
4516  | 0  |         prev_state = YY_START;  | 
4517  | 0  |           BEGIN INSTR;  | 
4518  | 0  |       }  | 
4519  | 0  |   YY_BREAK  | 
4520  | 86.0k  | case 75:  | 
4521  | 86.0k  | YY_RULE_SETUP  | 
4522  | 86.0k  | #line 777 "toke.l"  | 
4523  | 86.0k  | { | 
4524  |  |           /* a word */  | 
4525  | 86.0k  |           if (!fill(sudoerstext, sudoersleng))  | 
4526  | 0  |         yyterminate();  | 
4527  | 86.0k  |           LEXTRACE("WORD(6) "); | 
4528  | 86.0k  |           return WORD;  | 
4529  | 86.0k  |       }  | 
4530  | 0  |   YY_BREAK  | 
4531  |  |  | 
4532  | 0  | case 76:  | 
4533  | 0  | YY_RULE_SETUP  | 
4534  | 0  | #line 786 "toke.l"  | 
4535  | 0  | { | 
4536  |  |           /* include file/directory */  | 
4537  | 0  |           if (!fill(sudoerstext, sudoersleng))  | 
4538  | 0  |         yyterminate();  | 
4539  | 0  |           BEGIN INITIAL;  | 
4540  | 0  |           LEXTRACE("WORD(7) "); | 
4541  | 0  |           return WORD;  | 
4542  | 0  |       }  | 
4543  | 0  |   YY_BREAK  | 
4544  | 0  | case 77:  | 
4545  | 0  | YY_RULE_SETUP  | 
4546  | 0  | #line 795 "toke.l"  | 
4547  | 0  | { | 
4548  | 0  |           LEXTRACE("BEGINSTR "); | 
4549  | 0  |           sudoerslval.string = NULL;  | 
4550  | 0  |           prev_state = INITIAL;  | 
4551  | 0  |           BEGIN INSTR;  | 
4552  | 0  |       }  | 
4553  | 0  |   YY_BREAK  | 
4554  |  |  | 
4555  | 0  | case 78:  | 
4556  | 0  | YY_RULE_SETUP  | 
4557  | 0  | #line 803 "toke.l"  | 
4558  | 0  | { | 
4559  | 0  |           LEXTRACE("( "); | 
4560  | 0  |           return '('; | 
4561  | 0  |       }  | 
4562  | 0  |   YY_BREAK  | 
4563  | 275  | case 79:  | 
4564  | 275  | YY_RULE_SETUP  | 
4565  | 275  | #line 808 "toke.l"  | 
4566  | 275  | { | 
4567  | 275  |           LEXTRACE(") "); | 
4568  | 275  |           return ')';  | 
4569  | 0  |       }  | 
4570  | 0  |   YY_BREAK  | 
4571  | 81.0k  | case 80:  | 
4572  | 81.0k  | YY_RULE_SETUP  | 
4573  | 81.0k  | #line 813 "toke.l"  | 
4574  | 81.0k  | { | 
4575  | 81.0k  |           LEXTRACE(", "); | 
4576  | 81.0k  |           return ',';  | 
4577  | 0  |       }     /* return ',' */  | 
4578  | 0  |   YY_BREAK  | 
4579  | 1  | case 81:  | 
4580  | 1  | YY_RULE_SETUP  | 
4581  | 1  | #line 818 "toke.l"  | 
4582  | 1  | { | 
4583  | 1  |           LEXTRACE("= "); | 
4584  | 1  |           return '=';  | 
4585  | 0  |       }     /* return '=' */  | 
4586  | 0  |   YY_BREAK  | 
4587  | 5.25k  | case 82:  | 
4588  | 5.25k  | YY_RULE_SETUP  | 
4589  | 5.25k  | #line 823 "toke.l"  | 
4590  | 5.25k  | { | 
4591  | 5.25k  |           LEXTRACE(": "); | 
4592  | 5.25k  |           return ':';  | 
4593  | 0  |       }     /* return ':' */  | 
4594  | 0  |   YY_BREAK  | 
4595  | 278  | case 83:  | 
4596  | 278  | YY_RULE_SETUP  | 
4597  | 278  | #line 828 "toke.l"  | 
4598  | 278  | { | 
4599  | 278  |           if (sudoersleng & 1) { | 
4600  | 278  |         LEXTRACE("!"); | 
4601  | 278  |         return '!'; /* return '!' */  | 
4602  | 278  |           }  | 
4603  | 278  |       }  | 
4604  | 0  |   YY_BREAK  | 
4605  | 33  | case 84:  | 
4606  |  | /* rule 84 can match eol */  | 
4607  | 33  | YY_RULE_SETUP  | 
4608  | 33  | #line 835 "toke.l"  | 
4609  | 33  | { | 
4610  | 33  |           if (YY_START == INSTR) { | 
4611  |  |         /* throw away old string */  | 
4612  | 0  |         parser_leak_remove(LEAK_PTR, sudoerslval.string);  | 
4613  | 0  |         free(sudoerslval.string);  | 
4614  |  |         /* re-scan after changing state */  | 
4615  | 0  |         BEGIN INITIAL;  | 
4616  | 0  |         sudoersless(0);  | 
4617  | 0  |         sudoers_errstr = N_("unexpected line break in string"); | 
4618  | 0  |         LEXTRACE("ERROR "); | 
4619  | 0  |         return ERROR;  | 
4620  | 0  |           }  | 
4621  | 33  |           BEGIN INITIAL;  | 
4622  | 33  |           sudolineno++;  | 
4623  | 33  |           continued = false;  | 
4624  | 33  |           LEXTRACE("\n"); | 
4625  | 33  |           return '\n';  | 
4626  | 33  |       }      /* return newline */  | 
4627  | 0  |   YY_BREAK  | 
4628  | 20  | case 85:  | 
4629  | 20  | YY_RULE_SETUP  | 
4630  | 20  | #line 854 "toke.l"  | 
4631  | 20  | {     /* throw away space/tabs */ | 
4632  | 20  |           sawspace = true; /* but remember for fill_args */  | 
4633  | 20  |       }  | 
4634  | 20  |   YY_BREAK  | 
4635  | 0  | case 86:  | 
4636  |  | /* rule 86 can match eol */  | 
4637  | 0  | YY_RULE_SETUP  | 
4638  | 0  | #line 858 "toke.l"  | 
4639  | 0  | { | 
4640  | 0  |           sawspace = true; /* remember for fill_args */  | 
4641  | 0  |           sudolineno++;  | 
4642  | 0  |           continued = true;  | 
4643  | 0  |       }     /* throw away EOL after \ */  | 
4644  | 0  |   YY_BREAK  | 
4645  | 0  | case 87:  | 
4646  |  | /* rule 87 can match eol */  | 
4647  | 0  | YY_RULE_SETUP  | 
4648  | 0  | #line 864 "toke.l"  | 
4649  | 0  | { | 
4650  | 0  |           if (sudoerstext[sudoersleng - 1] == '\n') { | 
4651  |  |         /* comment ending in a newline */  | 
4652  | 0  |         BEGIN INITIAL;  | 
4653  | 0  |         sudolineno++;  | 
4654  | 0  |         continued = false;  | 
4655  | 0  |           } else if (!feof(sudoersin)) { | 
4656  | 0  |         sudoers_errstr = strerror(errno);  | 
4657  | 0  |         LEXTRACE("ERROR "); | 
4658  | 0  |         return ERROR;  | 
4659  | 0  |           }  | 
4660  | 0  |           LEXTRACE("#\n"); | 
4661  | 0  |           return '\n';  | 
4662  | 0  |       }     /* comment, not uid/gid */  | 
4663  | 0  |   YY_BREAK  | 
4664  | 0  | case 88:  | 
4665  | 0  | YY_RULE_SETUP  | 
4666  | 0  | #line 879 "toke.l"  | 
4667  | 0  | { | 
4668  | 0  |           LEXTRACE("NOMATCH "); | 
4669  | 0  |           return NOMATCH;  | 
4670  | 0  |       } /* parse error, no matching token */  | 
4671  | 0  |   YY_BREAK  | 
4672  | 5  | case YY_STATE_EOF(INITIAL):  | 
4673  | 5  | case YY_STATE_EOF(GOTDEFS):  | 
4674  | 5  | case YY_STATE_EOF(GOTCMND):  | 
4675  | 5  | case YY_STATE_EOF(GOTREGEX):  | 
4676  | 5  | case YY_STATE_EOF(STARTDEFS):  | 
4677  | 5  | case YY_STATE_EOF(INDEFS):  | 
4678  | 5  | case YY_STATE_EOF(INSTR):  | 
4679  | 5  | case YY_STATE_EOF(WANTDIGEST):  | 
4680  | 5  | case YY_STATE_EOF(GOTINC):  | 
4681  | 5  | case YY_STATE_EOF(EXPECTPATH):  | 
4682  | 5  | #line 884 "toke.l"  | 
4683  | 5  | { | 
4684  | 5  |           if (!pop_include())  | 
4685  | 5  |         yyterminate();  | 
4686  | 5  |       }  | 
4687  | 0  |   YY_BREAK  | 
4688  | 0  | case 89:  | 
4689  | 0  | YY_RULE_SETUP  | 
4690  | 0  | #line 889 "toke.l"  | 
4691  | 0  | ECHO;  | 
4692  | 0  |   YY_BREAK  | 
4693  | 0  | #line 4693 "toke.c"  | 
4694  |  |  | 
4695  | 294  |   case YY_END_OF_BUFFER:  | 
4696  | 294  |     { | 
4697  |  |     /* Amount of text matched not including the EOB char. */  | 
4698  | 294  |     int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;  | 
4699  |  |  | 
4700  |  |     /* Undo the effects of YY_DO_BEFORE_ACTION. */  | 
4701  | 294  |     *yy_cp = (yy_hold_char);  | 
4702  | 294  |     YY_RESTORE_YY_MORE_OFFSET  | 
4703  |  |  | 
4704  | 294  |     if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )  | 
4705  | 5  |       { | 
4706  |  |       /* We're scanning a new file or input source.  It's  | 
4707  |  |        * possible that this happened because the user  | 
4708  |  |        * just pointed yyin at a new source and called  | 
4709  |  |        * yylex().  If so, then we have to assure  | 
4710  |  |        * consistency between YY_CURRENT_BUFFER and our  | 
4711  |  |        * globals.  Here is the right place to do so, because  | 
4712  |  |        * this is the first action (other than possibly a  | 
4713  |  |        * back-up) that will match for the new input source.  | 
4714  |  |        */  | 
4715  | 5  |       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;  | 
4716  | 5  |       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;  | 
4717  | 5  |       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;  | 
4718  | 5  |       }  | 
4719  |  |  | 
4720  |  |     /* Note that here we test for yy_c_buf_p "<=" to the position  | 
4721  |  |      * of the first EOB in the buffer, since yy_c_buf_p will  | 
4722  |  |      * already have been incremented past the NUL character  | 
4723  |  |      * (since all states make transitions on EOB to the  | 
4724  |  |      * end-of-buffer state).  Contrast this with the test  | 
4725  |  |      * in input().  | 
4726  |  |      */  | 
4727  | 294  |     if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )  | 
4728  | 0  |       { /* This was really a NUL. */ | 
4729  | 0  |       yy_state_type yy_next_state;  | 
4730  |  | 
  | 
4731  | 0  |       (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;  | 
4732  |  | 
  | 
4733  | 0  |       yy_current_state = yy_get_previous_state(  );  | 
4734  |  |  | 
4735  |  |       /* Okay, we're now positioned to make the NUL  | 
4736  |  |        * transition.  We couldn't have  | 
4737  |  |        * yy_get_previous_state() go ahead and do it  | 
4738  |  |        * for us because it doesn't know how to deal  | 
4739  |  |        * with the possibility of jamming (and we don't  | 
4740  |  |        * want to build jamming into it because then it  | 
4741  |  |        * will run more slowly).  | 
4742  |  |        */  | 
4743  |  | 
  | 
4744  | 0  |       yy_next_state = yy_try_NUL_trans( yy_current_state );  | 
4745  |  | 
  | 
4746  | 0  |       yy_bp = (yytext_ptr) + YY_MORE_ADJ;  | 
4747  |  | 
  | 
4748  | 0  |       if ( yy_next_state )  | 
4749  | 0  |         { | 
4750  |  |         /* Consume the NUL. */  | 
4751  | 0  |         yy_cp = ++(yy_c_buf_p);  | 
4752  | 0  |         yy_current_state = yy_next_state;  | 
4753  | 0  |         goto yy_match;  | 
4754  | 0  |         }  | 
4755  |  |  | 
4756  | 0  |       else  | 
4757  | 0  |         { | 
4758  | 0  |         yy_cp = (yy_c_buf_p);  | 
4759  | 0  |         goto yy_find_action;  | 
4760  | 0  |         }  | 
4761  | 0  |       }  | 
4762  |  |  | 
4763  | 294  |     else switch ( yy_get_next_buffer(  ) )  | 
4764  | 294  |       { | 
4765  | 5  |       case EOB_ACT_END_OF_FILE:  | 
4766  | 5  |         { | 
4767  | 5  |         (yy_did_buffer_switch_on_eof) = 0;  | 
4768  |  |  | 
4769  | 5  |         if ( yywrap(  ) )  | 
4770  | 5  |           { | 
4771  |  |           /* Note: because we've taken care in  | 
4772  |  |            * yy_get_next_buffer() to have set up  | 
4773  |  |            * yytext, we can now set up  | 
4774  |  |            * yy_c_buf_p so that if some total  | 
4775  |  |            * hoser (like flex itself) wants to  | 
4776  |  |            * call the scanner after we return the  | 
4777  |  |            * YY_NULL, it'll still work - another  | 
4778  |  |            * YY_NULL will get returned.  | 
4779  |  |            */  | 
4780  | 5  |           (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;  | 
4781  |  |  | 
4782  | 5  |           yy_act = YY_STATE_EOF(YY_START);  | 
4783  | 5  |           goto do_action;  | 
4784  | 5  |           }  | 
4785  |  |  | 
4786  | 0  |         else  | 
4787  | 0  |           { | 
4788  | 0  |           if ( ! (yy_did_buffer_switch_on_eof) )  | 
4789  | 0  |             YY_NEW_FILE;  | 
4790  | 0  |           }  | 
4791  | 0  |         break;  | 
4792  | 5  |         }  | 
4793  |  |  | 
4794  | 289  |       case EOB_ACT_CONTINUE_SCAN:  | 
4795  | 289  |         (yy_c_buf_p) =  | 
4796  | 289  |           (yytext_ptr) + yy_amount_of_matched_text;  | 
4797  |  |  | 
4798  | 289  |         yy_current_state = yy_get_previous_state(  );  | 
4799  |  |  | 
4800  | 289  |         yy_cp = (yy_c_buf_p);  | 
4801  | 289  |         yy_bp = (yytext_ptr) + YY_MORE_ADJ;  | 
4802  | 289  |         goto yy_match;  | 
4803  |  |  | 
4804  | 0  |       case EOB_ACT_LAST_MATCH:  | 
4805  | 0  |         (yy_c_buf_p) =  | 
4806  | 0  |         &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];  | 
4807  |  | 
  | 
4808  | 0  |         yy_current_state = yy_get_previous_state(  );  | 
4809  |  | 
  | 
4810  | 0  |         yy_cp = (yy_c_buf_p);  | 
4811  | 0  |         yy_bp = (yytext_ptr) + YY_MORE_ADJ;  | 
4812  | 0  |         goto yy_find_action;  | 
4813  | 294  |       }  | 
4814  | 0  |     break;  | 
4815  | 294  |     }  | 
4816  |  |  | 
4817  | 0  |   default:  | 
4818  | 0  |     YY_FATAL_ERROR(  | 
4819  | 247k  |       "fatal flex scanner internal error--no action found" );  | 
4820  | 247k  |   } /* end of action switch */  | 
4821  | 247k  |     } /* end of scanning one token */  | 
4822  | 172k  |   } /* end of user's declarations */  | 
4823  | 172k  | } /* end of yylex */  | 
4824  |  |  | 
4825  |  | /* yy_get_next_buffer - try to read in a new buffer  | 
4826  |  |  *  | 
4827  |  |  * Returns a code representing an action:  | 
4828  |  |  *  EOB_ACT_LAST_MATCH -  | 
4829  |  |  *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position  | 
4830  |  |  *  EOB_ACT_END_OF_FILE - end of file  | 
4831  |  |  */  | 
4832  |  | static int yy_get_next_buffer (void)  | 
4833  | 294  | { | 
4834  | 294  |       char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;  | 
4835  | 294  |   char *source = (yytext_ptr);  | 
4836  | 294  |   int number_to_move, i;  | 
4837  | 294  |   int ret_val;  | 
4838  |  |  | 
4839  | 294  |   if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )  | 
4840  | 0  |     YY_FATAL_ERROR(  | 
4841  | 294  |     "fatal flex scanner internal error--end of buffer missed" );  | 
4842  |  |  | 
4843  | 294  |   if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )  | 
4844  | 0  |     { /* Don't try to fill the buffer, so this is an EOF. */ | 
4845  | 0  |     if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )  | 
4846  | 0  |       { | 
4847  |  |       /* We matched a single character, the EOB, so  | 
4848  |  |        * treat this as a final EOF.  | 
4849  |  |        */  | 
4850  | 0  |       return EOB_ACT_END_OF_FILE;  | 
4851  | 0  |       }  | 
4852  |  |  | 
4853  | 0  |     else  | 
4854  | 0  |       { | 
4855  |  |       /* We matched some text prior to the EOB, first  | 
4856  |  |        * process it.  | 
4857  |  |        */  | 
4858  | 0  |       return EOB_ACT_LAST_MATCH;  | 
4859  | 0  |       }  | 
4860  | 0  |     }  | 
4861  |  |  | 
4862  |  |   /* Try to read more data. */  | 
4863  |  |  | 
4864  |  |   /* First move last chars to start of buffer. */  | 
4865  | 294  |   number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);  | 
4866  |  |  | 
4867  | 3.87M  |   for ( i = 0; i < number_to_move; ++i )  | 
4868  | 3.87M  |     *(dest++) = *(source++);  | 
4869  |  |  | 
4870  | 294  |   if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )  | 
4871  |  |     /* don't do the read, it's not guaranteed to return an EOF,  | 
4872  |  |      * just force an EOF  | 
4873  |  |      */  | 
4874  | 0  |     YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;  | 
4875  |  |  | 
4876  | 294  |   else  | 
4877  | 294  |     { | 
4878  | 294  |       int num_to_read =  | 
4879  | 294  |       YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;  | 
4880  |  |  | 
4881  | 297  |     while ( num_to_read <= 0 )  | 
4882  | 3  |       { /* Not enough room in the buffer - grow it. */ | 
4883  |  |  | 
4884  |  |       /* just a shorter name for the current buffer */  | 
4885  | 3  |       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;  | 
4886  |  |  | 
4887  | 3  |       int yy_c_buf_p_offset =  | 
4888  | 3  |         (int) ((yy_c_buf_p) - b->yy_ch_buf);  | 
4889  |  |  | 
4890  | 3  |       if ( b->yy_is_our_buffer )  | 
4891  | 3  |         { | 
4892  | 3  |         int new_size = b->yy_buf_size * 2;  | 
4893  |  |  | 
4894  | 3  |         if ( new_size <= 0 )  | 
4895  | 0  |           b->yy_buf_size += b->yy_buf_size / 8;  | 
4896  | 3  |         else  | 
4897  | 3  |           b->yy_buf_size *= 2;  | 
4898  |  |  | 
4899  | 3  |         b->yy_ch_buf = (char *)  | 
4900  |  |           /* Include room in for 2 EOB chars. */  | 
4901  | 3  |           yyrealloc( (void *) b->yy_ch_buf,  | 
4902  | 3  |                (yy_size_t) (b->yy_buf_size + 2)  );  | 
4903  | 3  |         }  | 
4904  | 0  |       else  | 
4905  |  |         /* Can't grow it, we don't own it. */  | 
4906  | 0  |         b->yy_ch_buf = NULL;  | 
4907  |  |  | 
4908  | 3  |       if ( ! b->yy_ch_buf )  | 
4909  | 0  |         YY_FATAL_ERROR(  | 
4910  | 3  |         "fatal error - scanner input buffer overflow" );  | 
4911  |  |  | 
4912  | 3  |       (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];  | 
4913  |  |  | 
4914  | 3  |       num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -  | 
4915  | 3  |             number_to_move - 1;  | 
4916  |  |  | 
4917  | 3  |       }  | 
4918  |  |  | 
4919  | 294  |     if ( num_to_read > YY_READ_BUF_SIZE )  | 
4920  | 291  |       num_to_read = YY_READ_BUF_SIZE;  | 
4921  |  |  | 
4922  |  |     /* Read in more data. */  | 
4923  | 294  |     YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),  | 
4924  | 294  |       (yy_n_chars), num_to_read );  | 
4925  |  |  | 
4926  | 294  |     YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);  | 
4927  | 294  |     }  | 
4928  |  |  | 
4929  | 294  |   if ( (yy_n_chars) == 0 )  | 
4930  | 5  |     { | 
4931  | 5  |     if ( number_to_move == YY_MORE_ADJ )  | 
4932  | 5  |       { | 
4933  | 5  |       ret_val = EOB_ACT_END_OF_FILE;  | 
4934  | 5  |       yyrestart( yyin  );  | 
4935  | 5  |       }  | 
4936  |  |  | 
4937  | 0  |     else  | 
4938  | 0  |       { | 
4939  | 0  |       ret_val = EOB_ACT_LAST_MATCH;  | 
4940  | 0  |       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =  | 
4941  | 0  |         YY_BUFFER_EOF_PENDING;  | 
4942  | 0  |       }  | 
4943  | 5  |     }  | 
4944  |  |  | 
4945  | 289  |   else  | 
4946  | 289  |     ret_val = EOB_ACT_CONTINUE_SCAN;  | 
4947  |  |  | 
4948  | 294  |   if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { | 
4949  |  |     /* Extend the array by 50%, plus the number we really need. */  | 
4950  | 0  |     int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);  | 
4951  | 0  |     YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(  | 
4952  | 0  |       (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );  | 
4953  | 0  |     if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )  | 
4954  | 0  |       YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );  | 
4955  |  |     /* "- 2" to take care of EOB's */  | 
4956  | 0  |     YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);  | 
4957  | 0  |   }  | 
4958  |  |  | 
4959  | 294  |   (yy_n_chars) += number_to_move;  | 
4960  | 294  |   YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;  | 
4961  | 294  |   YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;  | 
4962  |  |  | 
4963  | 294  |   (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];  | 
4964  |  |  | 
4965  | 294  |   return ret_val;  | 
4966  | 294  | }  | 
4967  |  |  | 
4968  |  | /* yy_get_previous_state - get the state just before the EOB char was reached */  | 
4969  |  |  | 
4970  |  |     static yy_state_type yy_get_previous_state (void)  | 
4971  | 289  | { | 
4972  | 289  |   yy_state_type yy_current_state;  | 
4973  | 289  |   char *yy_cp;  | 
4974  |  |       | 
4975  | 289  |   yy_current_state = (yy_start);  | 
4976  | 289  |   yy_current_state += YY_AT_BOL();  | 
4977  |  |  | 
4978  | 3.87M  |   for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )  | 
4979  | 3.87M  |     { | 
4980  | 3.87M  |     YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);  | 
4981  | 3.87M  |     if ( yy_accept[yy_current_state] )  | 
4982  | 3.87M  |       { | 
4983  | 3.87M  |       (yy_last_accepting_state) = yy_current_state;  | 
4984  | 3.87M  |       (yy_last_accepting_cpos) = yy_cp;  | 
4985  | 3.87M  |       }  | 
4986  | 7.74M  |     while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )  | 
4987  | 3.87M  |       { | 
4988  | 3.87M  |       yy_current_state = (int) yy_def[yy_current_state];  | 
4989  | 3.87M  |       if ( yy_current_state >= 1242 )  | 
4990  | 3.87M  |         yy_c = yy_meta[yy_c];  | 
4991  | 3.87M  |       }  | 
4992  | 3.87M  |     yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];  | 
4993  | 3.87M  |     }  | 
4994  |  |  | 
4995  | 289  |   return yy_current_state;  | 
4996  | 289  | }  | 
4997  |  |  | 
4998  |  | /* yy_try_NUL_trans - try to make a transition on the NUL character  | 
4999  |  |  *  | 
5000  |  |  * synopsis  | 
5001  |  |  *  next_state = yy_try_NUL_trans( current_state );  | 
5002  |  |  */  | 
5003  |  |     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )  | 
5004  | 0  | { | 
5005  | 0  |   int yy_is_jam;  | 
5006  | 0  |       char *yy_cp = (yy_c_buf_p);  | 
5007  |  | 
  | 
5008  | 0  |   YY_CHAR yy_c = 1;  | 
5009  | 0  |   if ( yy_accept[yy_current_state] )  | 
5010  | 0  |     { | 
5011  | 0  |     (yy_last_accepting_state) = yy_current_state;  | 
5012  | 0  |     (yy_last_accepting_cpos) = yy_cp;  | 
5013  | 0  |     }  | 
5014  | 0  |   while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )  | 
5015  | 0  |     { | 
5016  | 0  |     yy_current_state = (int) yy_def[yy_current_state];  | 
5017  | 0  |     if ( yy_current_state >= 1242 )  | 
5018  | 0  |       yy_c = yy_meta[yy_c];  | 
5019  | 0  |     }  | 
5020  | 0  |   yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];  | 
5021  | 0  |   yy_is_jam = (yy_current_state == 1241);  | 
5022  |  | 
  | 
5023  | 0  |     return yy_is_jam ? 0 : yy_current_state;  | 
5024  | 0  | }  | 
5025  |  |  | 
5026  |  | #ifndef YY_NO_UNPUT  | 
5027  |  |  | 
5028  |  | #endif  | 
5029  |  |  | 
5030  |  | #ifndef YY_NO_INPUT  | 
5031  |  | #ifdef __cplusplus  | 
5032  |  |     static int yyinput (void)  | 
5033  |  | #else  | 
5034  |  |     static int input  (void)  | 
5035  |  | #endif  | 
5036  |  |  | 
5037  |  | { | 
5038  |  |   int c;  | 
5039  |  |       | 
5040  |  |   *(yy_c_buf_p) = (yy_hold_char);  | 
5041  |  |  | 
5042  |  |   if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )  | 
5043  |  |     { | 
5044  |  |     /* yy_c_buf_p now points to the character we want to return.  | 
5045  |  |      * If this occurs *before* the EOB characters, then it's a  | 
5046  |  |      * valid NUL; if not, then we've hit the end of the buffer.  | 
5047  |  |      */  | 
5048  |  |     if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )  | 
5049  |  |       /* This was really a NUL. */  | 
5050  |  |       *(yy_c_buf_p) = '\0';  | 
5051  |  |  | 
5052  |  |     else  | 
5053  |  |       { /* need more input */ | 
5054  |  |       int offset = (int) ((yy_c_buf_p) - (yytext_ptr));  | 
5055  |  |       ++(yy_c_buf_p);  | 
5056  |  |  | 
5057  |  |       switch ( yy_get_next_buffer(  ) )  | 
5058  |  |         { | 
5059  |  |         case EOB_ACT_LAST_MATCH:  | 
5060  |  |           /* This happens because yy_g_n_b()  | 
5061  |  |            * sees that we've accumulated a  | 
5062  |  |            * token and flags that we need to  | 
5063  |  |            * try matching the token before  | 
5064  |  |            * proceeding.  But for input(),  | 
5065  |  |            * there's no matching to consider.  | 
5066  |  |            * So convert the EOB_ACT_LAST_MATCH  | 
5067  |  |            * to EOB_ACT_END_OF_FILE.  | 
5068  |  |            */  | 
5069  |  |  | 
5070  |  |           /* Reset buffer status. */  | 
5071  |  |           yyrestart( yyin );  | 
5072  |  |  | 
5073  |  |           FALLTHROUGH;  | 
5074  |  |  | 
5075  |  |         case EOB_ACT_END_OF_FILE:  | 
5076  |  |           { | 
5077  |  |           if ( yywrap(  ) )  | 
5078  |  |             return 0;  | 
5079  |  |  | 
5080  |  |           if ( ! (yy_did_buffer_switch_on_eof) )  | 
5081  |  |             YY_NEW_FILE;  | 
5082  |  | #ifdef __cplusplus  | 
5083  |  |           return yyinput();  | 
5084  |  | #else  | 
5085  |  |           return input();  | 
5086  |  | #endif  | 
5087  |  |           }  | 
5088  |  |  | 
5089  |  |         case EOB_ACT_CONTINUE_SCAN:  | 
5090  |  |           (yy_c_buf_p) = (yytext_ptr) + offset;  | 
5091  |  |           break;  | 
5092  |  |         }  | 
5093  |  |       }  | 
5094  |  |     }  | 
5095  |  |  | 
5096  |  |   c = *(unsigned char *) (yy_c_buf_p);  /* cast for 8-bit char's */  | 
5097  |  |   *(yy_c_buf_p) = '\0'; /* preserve yytext */  | 
5098  |  |   (yy_hold_char) = *++(yy_c_buf_p);  | 
5099  |  |  | 
5100  |  |   YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');  | 
5101  |  |  | 
5102  |  |   return c;  | 
5103  |  | }  | 
5104  |  | #endif  /* ifndef YY_NO_INPUT */  | 
5105  |  |  | 
5106  |  | /** Immediately switch to a different input stream.  | 
5107  |  |  * @param input_file A readable stream.  | 
5108  |  |  *   | 
5109  |  |  * @note This function does not reset the start condition to @c INITIAL .  | 
5110  |  |  */  | 
5111  |  |     void yyrestart  (FILE * input_file )  | 
5112  | 10  | { | 
5113  |  |       | 
5114  | 10  |   if ( ! YY_CURRENT_BUFFER ){ | 
5115  | 1  |         yyensure_buffer_stack ();  | 
5116  | 1  |     YY_CURRENT_BUFFER_LVALUE =  | 
5117  | 1  |             yy_create_buffer( yyin, YY_BUF_SIZE );  | 
5118  | 1  |   }  | 
5119  |  |  | 
5120  | 10  |   yy_init_buffer( YY_CURRENT_BUFFER, input_file );  | 
5121  | 10  |   yy_load_buffer_state(  );  | 
5122  | 10  | }  | 
5123  |  |  | 
5124  |  | /** Switch to a different input buffer.  | 
5125  |  |  * @param new_buffer The new input buffer.  | 
5126  |  |  *   | 
5127  |  |  */  | 
5128  |  |     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )  | 
5129  | 0  | { | 
5130  |  |       | 
5131  |  |   /* TODO. We should be able to replace this entire function body  | 
5132  |  |    * with  | 
5133  |  |    *    yypop_buffer_state();  | 
5134  |  |    *    yypush_buffer_state(new_buffer);  | 
5135  |  |      */  | 
5136  | 0  |   yyensure_buffer_stack ();  | 
5137  | 0  |   if ( YY_CURRENT_BUFFER == new_buffer )  | 
5138  | 0  |     return;  | 
5139  |  |  | 
5140  | 0  |   if ( YY_CURRENT_BUFFER )  | 
5141  | 0  |     { | 
5142  |  |     /* Flush out information for old buffer. */  | 
5143  | 0  |     *(yy_c_buf_p) = (yy_hold_char);  | 
5144  | 0  |     YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);  | 
5145  | 0  |     YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);  | 
5146  | 0  |     }  | 
5147  |  | 
  | 
5148  | 0  |   YY_CURRENT_BUFFER_LVALUE = new_buffer;  | 
5149  | 0  |   yy_load_buffer_state(  );  | 
5150  |  |  | 
5151  |  |   /* We don't actually know whether we did this switch during  | 
5152  |  |    * EOF (yywrap()) processing, but the only time this flag  | 
5153  |  |    * is looked at is after yywrap() is called, so it's safe  | 
5154  |  |    * to go ahead and always set it.  | 
5155  |  |    */  | 
5156  | 0  |   (yy_did_buffer_switch_on_eof) = 1;  | 
5157  | 0  | }  | 
5158  |  |  | 
5159  |  | static void yy_load_buffer_state  (void)  | 
5160  | 21  | { | 
5161  | 21  |       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;  | 
5162  | 21  |   (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;  | 
5163  | 21  |   yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;  | 
5164  | 21  |   (yy_hold_char) = *(yy_c_buf_p);  | 
5165  | 21  | }  | 
5166  |  |  | 
5167  |  | /** Allocate and initialize an input buffer state.  | 
5168  |  |  * @param file A readable stream.  | 
5169  |  |  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.  | 
5170  |  |  *   | 
5171  |  |  * @return the allocated buffer state.  | 
5172  |  |  */  | 
5173  |  |     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )  | 
5174  | 1  | { | 
5175  | 1  |   YY_BUFFER_STATE b;  | 
5176  |  |       | 
5177  | 1  |   b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );  | 
5178  | 1  |   if ( ! b )  | 
5179  | 0  |     YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );  | 
5180  |  |  | 
5181  | 1  |   b->yy_buf_size = size;  | 
5182  |  |  | 
5183  |  |   /* yy_ch_buf has to be 2 characters longer than the size given because  | 
5184  |  |    * we need to put in 2 end-of-buffer characters.  | 
5185  |  |    */  | 
5186  | 1  |   b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );  | 
5187  | 1  |   if ( ! b->yy_ch_buf )  | 
5188  | 0  |     YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );  | 
5189  |  |  | 
5190  | 1  |   b->yy_is_our_buffer = 1;  | 
5191  |  |  | 
5192  | 1  |   yy_init_buffer( b, file );  | 
5193  |  |  | 
5194  | 1  |   return b;  | 
5195  | 1  | }  | 
5196  |  |  | 
5197  |  | /** Destroy the buffer.  | 
5198  |  |  * @param b a buffer created with yy_create_buffer()  | 
5199  |  |  *   | 
5200  |  |  */  | 
5201  |  |     void yy_delete_buffer (YY_BUFFER_STATE  b )  | 
5202  | 0  | { | 
5203  |  |       | 
5204  | 0  |   if ( ! b )  | 
5205  | 0  |     return;  | 
5206  |  |  | 
5207  | 0  |   if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */  | 
5208  | 0  |     YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;  | 
5209  |  | 
  | 
5210  | 0  |   if ( b->yy_is_our_buffer )  | 
5211  | 0  |     yyfree( (void *) b->yy_ch_buf  );  | 
5212  |  | 
  | 
5213  | 0  |   yyfree( (void *) b  );  | 
5214  | 0  | }  | 
5215  |  |  | 
5216  |  | /* Initializes or reinitializes a buffer.  | 
5217  |  |  * This function is sometimes called more than once on the same buffer,  | 
5218  |  |  * such as during a yyrestart() or at EOF.  | 
5219  |  |  */  | 
5220  |  |     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )  | 
5221  |  |  | 
5222  | 11  | { | 
5223  | 11  |   int oerrno = errno;  | 
5224  |  |       | 
5225  | 11  |   yy_flush_buffer( b );  | 
5226  |  |  | 
5227  | 11  |   b->yy_input_file = file;  | 
5228  | 11  |   b->yy_fill_buffer = 1;  | 
5229  |  |  | 
5230  |  |     /* If b is the current buffer, then yy_init_buffer was _probably_  | 
5231  |  |      * called from yyrestart() or through yy_get_next_buffer.  | 
5232  |  |      * In that case, we don't want to reset the lineno or column.  | 
5233  |  |      */  | 
5234  | 11  |     if (b != YY_CURRENT_BUFFER){ | 
5235  | 1  |         b->yy_bs_lineno = 1;  | 
5236  | 1  |         b->yy_bs_column = 0;  | 
5237  | 1  |     }  | 
5238  |  |  | 
5239  | 11  |         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;  | 
5240  |  |       | 
5241  | 11  |   errno = oerrno;  | 
5242  | 11  | }  | 
5243  |  |  | 
5244  |  | /** Discard all buffered characters. On the next scan, YY_INPUT will be called.  | 
5245  |  |  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.  | 
5246  |  |  *   | 
5247  |  |  */  | 
5248  |  |     void yy_flush_buffer (YY_BUFFER_STATE  b )  | 
5249  | 11  | { | 
5250  | 11  |       if ( ! b )  | 
5251  | 0  |     return;  | 
5252  |  |  | 
5253  | 11  |   b->yy_n_chars = 0;  | 
5254  |  |  | 
5255  |  |   /* We always need two end-of-buffer characters.  The first causes  | 
5256  |  |    * a transition to the end-of-buffer state.  The second causes  | 
5257  |  |    * a jam in that state.  | 
5258  |  |    */  | 
5259  | 11  |   b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;  | 
5260  | 11  |   b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;  | 
5261  |  |  | 
5262  | 11  |   b->yy_buf_pos = &b->yy_ch_buf[0];  | 
5263  |  |  | 
5264  | 11  |   b->yy_at_bol = 1;  | 
5265  | 11  |   b->yy_buffer_status = YY_BUFFER_NEW;  | 
5266  |  |  | 
5267  | 11  |   if ( b == YY_CURRENT_BUFFER )  | 
5268  | 10  |     yy_load_buffer_state(  );  | 
5269  | 11  | }  | 
5270  |  |  | 
5271  |  | /** Pushes the new state onto the stack. The new state becomes  | 
5272  |  |  *  the current state. This function will allocate the stack  | 
5273  |  |  *  if necessary.  | 
5274  |  |  *  @param new_buffer The new state.  | 
5275  |  |  *    | 
5276  |  |  */  | 
5277  |  | void yypush_buffer_state (YY_BUFFER_STATE new_buffer )  | 
5278  | 0  | { | 
5279  | 0  |       if (new_buffer == NULL)  | 
5280  | 0  |     return;  | 
5281  |  |  | 
5282  | 0  |   yyensure_buffer_stack();  | 
5283  |  |  | 
5284  |  |   /* This block is copied from yy_switch_to_buffer. */  | 
5285  | 0  |   if ( YY_CURRENT_BUFFER )  | 
5286  | 0  |     { | 
5287  |  |     /* Flush out information for old buffer. */  | 
5288  | 0  |     *(yy_c_buf_p) = (yy_hold_char);  | 
5289  | 0  |     YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);  | 
5290  | 0  |     YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);  | 
5291  | 0  |     }  | 
5292  |  |  | 
5293  |  |   /* Only push if top exists. Otherwise, replace top. */  | 
5294  | 0  |   if (YY_CURRENT_BUFFER)  | 
5295  | 0  |     (yy_buffer_stack_top)++;  | 
5296  | 0  |   YY_CURRENT_BUFFER_LVALUE = new_buffer;  | 
5297  |  |  | 
5298  |  |   /* copied from yy_switch_to_buffer. */  | 
5299  | 0  |   yy_load_buffer_state(  );  | 
5300  | 0  |   (yy_did_buffer_switch_on_eof) = 1;  | 
5301  | 0  | }  | 
5302  |  |  | 
5303  |  | /** Removes and deletes the top of the stack, if present.  | 
5304  |  |  *  The next element becomes the new top.  | 
5305  |  |  *    | 
5306  |  |  */  | 
5307  |  | void yypop_buffer_state (void)  | 
5308  | 0  | { | 
5309  | 0  |       if (!YY_CURRENT_BUFFER)  | 
5310  | 0  |     return;  | 
5311  |  |  | 
5312  | 0  |   yy_delete_buffer(YY_CURRENT_BUFFER );  | 
5313  | 0  |   YY_CURRENT_BUFFER_LVALUE = NULL;  | 
5314  | 0  |   if ((yy_buffer_stack_top) > 0)  | 
5315  | 0  |     --(yy_buffer_stack_top);  | 
5316  |  | 
  | 
5317  | 0  |   if (YY_CURRENT_BUFFER) { | 
5318  | 0  |     yy_load_buffer_state(  );  | 
5319  | 0  |     (yy_did_buffer_switch_on_eof) = 1;  | 
5320  | 0  |   }  | 
5321  | 0  | }  | 
5322  |  |  | 
5323  |  | /* Allocates the stack if it does not exist.  | 
5324  |  |  *  Guarantees space for at least one push.  | 
5325  |  |  */  | 
5326  |  | static void yyensure_buffer_stack (void)  | 
5327  | 1  | { | 
5328  | 1  |   yy_size_t num_to_alloc;  | 
5329  |  |       | 
5330  | 1  |   if (!(yy_buffer_stack)) { | 
5331  |  |  | 
5332  |  |     /* First allocation is just for 2 elements, since we don't know if this  | 
5333  |  |      * scanner will even need a stack. We use 2 instead of 1 to avoid an  | 
5334  |  |      * immediate realloc on the next call.  | 
5335  |  |          */  | 
5336  | 1  |       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */  | 
5337  | 1  |     (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc  | 
5338  | 1  |                 (num_to_alloc * sizeof(struct yy_buffer_state*)  | 
5339  | 1  |                 );  | 
5340  | 1  |     if ( ! (yy_buffer_stack) )  | 
5341  | 0  |       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );  | 
5342  |  |  | 
5343  | 1  |     memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));  | 
5344  |  |  | 
5345  | 1  |     (yy_buffer_stack_max) = num_to_alloc;  | 
5346  | 1  |     (yy_buffer_stack_top) = 0;  | 
5347  | 1  |     return;  | 
5348  | 1  |   }  | 
5349  |  |  | 
5350  | 0  |   if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ | 
5351  |  |  | 
5352  |  |     /* Increase the buffer to prepare for a possible push. */  | 
5353  | 0  |     yy_size_t grow_size = 8 /* arbitrary grow size */;  | 
5354  |  | 
  | 
5355  | 0  |     num_to_alloc = (yy_buffer_stack_max) + grow_size;  | 
5356  | 0  |     (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc  | 
5357  | 0  |                 ((yy_buffer_stack),  | 
5358  | 0  |                 num_to_alloc * sizeof(struct yy_buffer_state*)  | 
5359  | 0  |                 );  | 
5360  | 0  |     if ( ! (yy_buffer_stack) )  | 
5361  | 0  |       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );  | 
5362  |  |  | 
5363  |  |     /* zero only the new slots.*/  | 
5364  | 0  |     memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));  | 
5365  | 0  |     (yy_buffer_stack_max) = num_to_alloc;  | 
5366  | 0  |   }  | 
5367  | 0  | }  | 
5368  |  |  | 
5369  |  | /** Setup the input buffer state to scan directly from a user-specified character buffer.  | 
5370  |  |  * @param base the character buffer  | 
5371  |  |  * @param size the size in bytes of the character buffer  | 
5372  |  |  *   | 
5373  |  |  * @return the newly allocated buffer state object.  | 
5374  |  |  */  | 
5375  |  | YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )  | 
5376  | 0  | { | 
5377  | 0  |   YY_BUFFER_STATE b;  | 
5378  |  |       | 
5379  | 0  |   if ( size < 2 ||  | 
5380  | 0  |        base[size-2] != YY_END_OF_BUFFER_CHAR ||  | 
5381  | 0  |        base[size-1] != YY_END_OF_BUFFER_CHAR )  | 
5382  |  |     /* They forgot to leave room for the EOB's. */  | 
5383  | 0  |     return NULL;  | 
5384  |  |  | 
5385  | 0  |   b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );  | 
5386  | 0  |   if ( ! b )  | 
5387  | 0  |     YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );  | 
5388  |  |  | 
5389  | 0  |   b->yy_buf_size = (int) (size - 2);  /* "- 2" to take care of EOB's */  | 
5390  | 0  |   b->yy_buf_pos = b->yy_ch_buf = base;  | 
5391  | 0  |   b->yy_is_our_buffer = 0;  | 
5392  | 0  |   b->yy_input_file = NULL;  | 
5393  | 0  |   b->yy_n_chars = b->yy_buf_size;  | 
5394  | 0  |   b->yy_is_interactive = 0;  | 
5395  | 0  |   b->yy_at_bol = 1;  | 
5396  | 0  |   b->yy_fill_buffer = 0;  | 
5397  | 0  |   b->yy_buffer_status = YY_BUFFER_NEW;  | 
5398  |  | 
  | 
5399  | 0  |   yy_switch_to_buffer( b  );  | 
5400  |  | 
  | 
5401  | 0  |   return b;  | 
5402  | 0  | }  | 
5403  |  |  | 
5404  |  | /** Setup the input buffer state to scan a string. The next call to yylex() will  | 
5405  |  |  * scan from a @e copy of @a str.  | 
5406  |  |  * @param yystr a NUL-terminated string to scan  | 
5407  |  |  *   | 
5408  |  |  * @return the newly allocated buffer state object.  | 
5409  |  |  * @note If you want to scan bytes that may contain NUL values, then use  | 
5410  |  |  *       yy_scan_bytes() instead.  | 
5411  |  |  */  | 
5412  |  | YY_BUFFER_STATE yy_scan_string (const char * yystr )  | 
5413  | 0  | { | 
5414  |  |       | 
5415  | 0  |   return yy_scan_bytes( yystr, (int) strlen(yystr) );  | 
5416  | 0  | }  | 
5417  |  |  | 
5418  |  | /** Setup the input buffer state to scan the given bytes. The next call to yylex() will  | 
5419  |  |  * scan from a @e copy of @a bytes.  | 
5420  |  |  * @param yybytes the byte buffer to scan  | 
5421  |  |  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.  | 
5422  |  |  *   | 
5423  |  |  * @return the newly allocated buffer state object.  | 
5424  |  |  */  | 
5425  |  | YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )  | 
5426  | 0  | { | 
5427  | 0  |   YY_BUFFER_STATE b;  | 
5428  | 0  |   char *buf;  | 
5429  | 0  |   yy_size_t n;  | 
5430  | 0  |   int i;  | 
5431  |  |       | 
5432  |  |   /* Get memory for full buffer, including space for trailing EOB's. */  | 
5433  | 0  |   n = (yy_size_t) (_yybytes_len + 2);  | 
5434  | 0  |   buf = (char *) yyalloc( n  );  | 
5435  | 0  |   if ( ! buf )  | 
5436  | 0  |     YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );  | 
5437  |  |  | 
5438  | 0  |   for ( i = 0; i < _yybytes_len; ++i )  | 
5439  | 0  |     buf[i] = yybytes[i];  | 
5440  |  | 
  | 
5441  | 0  |   buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;  | 
5442  |  | 
  | 
5443  | 0  |   b = yy_scan_buffer( buf, n );  | 
5444  | 0  |   if ( ! b )  | 
5445  | 0  |     YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );  | 
5446  |  |  | 
5447  |  |   /* It's okay to grow etc. this buffer, and we should throw it  | 
5448  |  |    * away when we're done.  | 
5449  |  |    */  | 
5450  | 0  |   b->yy_is_our_buffer = 1;  | 
5451  |  | 
  | 
5452  | 0  |   return b;  | 
5453  | 0  | }  | 
5454  |  |  | 
5455  |  | #ifndef YY_EXIT_FAILURE  | 
5456  | 0  | #define YY_EXIT_FAILURE 2  | 
5457  |  | #endif  | 
5458  |  |  | 
5459  |  | static void yynoreturn yy_fatal_error (const char* msg )  | 
5460  | 0  | { | 
5461  | 0  |       fprintf( stderr, "%s\n", msg );  | 
5462  | 0  |   exit( YY_EXIT_FAILURE );  | 
5463  | 0  | }  | 
5464  |  |  | 
5465  |  | /* Redefine yyless() so it works in section 3 code. */  | 
5466  |  |  | 
5467  |  | #undef yyless  | 
5468  |  | #define yyless(n) \  | 
5469  |  |   do \  | 
5470  |  |     { \ | 
5471  |  |     /* Undo effects of setting up yytext. */ \  | 
5472  |  |         int yyless_macro_arg = (n); \  | 
5473  |  |         YY_LESS_LINENO(yyless_macro_arg);\  | 
5474  |  |     yytext[yyleng] = (yy_hold_char); \  | 
5475  |  |     (yy_c_buf_p) = yytext + yyless_macro_arg; \  | 
5476  |  |     (yy_hold_char) = *(yy_c_buf_p); \  | 
5477  |  |     *(yy_c_buf_p) = '\0'; \  | 
5478  |  |     yyleng = yyless_macro_arg; \  | 
5479  |  |     } \  | 
5480  |  |   while ( 0 )  | 
5481  |  |  | 
5482  |  | /* Accessor  methods (get/set functions) to struct members. */  | 
5483  |  |  | 
5484  |  | /** Get the current line number.  | 
5485  |  |  *   | 
5486  |  |  */  | 
5487  |  | int yyget_lineno  (void)  | 
5488  | 0  | { | 
5489  |  |       | 
5490  | 0  |     return yylineno;  | 
5491  | 0  | }  | 
5492  |  |  | 
5493  |  | /** Get the input stream.  | 
5494  |  |  *   | 
5495  |  |  */  | 
5496  |  | FILE *yyget_in  (void)  | 
5497  | 0  | { | 
5498  | 0  |         return yyin;  | 
5499  | 0  | }  | 
5500  |  |  | 
5501  |  | /** Get the output stream.  | 
5502  |  |  *   | 
5503  |  |  */  | 
5504  |  | FILE *yyget_out  (void)  | 
5505  | 0  | { | 
5506  | 0  |         return yyout;  | 
5507  | 0  | }  | 
5508  |  |  | 
5509  |  | /** Get the length of the current token.  | 
5510  |  |  *   | 
5511  |  |  */  | 
5512  |  | int yyget_leng  (void)  | 
5513  | 0  | { | 
5514  | 0  |         return yyleng;  | 
5515  | 0  | }  | 
5516  |  |  | 
5517  |  | /** Get the current token.  | 
5518  |  |  *   | 
5519  |  |  */  | 
5520  |  |  | 
5521  |  | char *yyget_text  (void)  | 
5522  | 0  | { | 
5523  | 0  |         return yytext;  | 
5524  | 0  | }  | 
5525  |  |  | 
5526  |  | /** Set the current line number.  | 
5527  |  |  * @param _line_number line number  | 
5528  |  |  *   | 
5529  |  |  */  | 
5530  |  | void yyset_lineno (int  _line_number )  | 
5531  | 0  | { | 
5532  |  |       | 
5533  | 0  |     yylineno = _line_number;  | 
5534  | 0  | }  | 
5535  |  |  | 
5536  |  | /** Set the input stream. This does not discard the current  | 
5537  |  |  * input buffer.  | 
5538  |  |  * @param _in_str A readable stream.  | 
5539  |  |  *   | 
5540  |  |  * @see yy_switch_to_buffer  | 
5541  |  |  */  | 
5542  |  | void yyset_in (FILE *  _in_str )  | 
5543  | 0  | { | 
5544  | 0  |         yyin = _in_str ;  | 
5545  | 0  | }  | 
5546  |  |  | 
5547  |  | void yyset_out (FILE *  _out_str )  | 
5548  | 0  | { | 
5549  | 0  |         yyout = _out_str ;  | 
5550  | 0  | }  | 
5551  |  |  | 
5552  |  | int yyget_debug  (void)  | 
5553  | 0  | { | 
5554  | 0  |         return yy_flex_debug;  | 
5555  | 0  | }  | 
5556  |  |  | 
5557  |  | void yyset_debug (int  _bdebug )  | 
5558  | 0  | { | 
5559  | 0  |         yy_flex_debug = _bdebug ;  | 
5560  | 0  | }  | 
5561  |  |  | 
5562  |  | static int yy_init_globals (void)  | 
5563  | 0  | { | 
5564  |  |         /* Initialization is the same as for the non-reentrant scanner.  | 
5565  |  |      * This function is called from yylex_destroy(), so don't allocate here.  | 
5566  |  |      */  | 
5567  |  | 
  | 
5568  | 0  |     (yy_buffer_stack) = NULL;  | 
5569  | 0  |     (yy_buffer_stack_top) = 0;  | 
5570  | 0  |     (yy_buffer_stack_max) = 0;  | 
5571  | 0  |     (yy_c_buf_p) = NULL;  | 
5572  | 0  |     (yy_init) = 0;  | 
5573  | 0  |     (yy_start) = 0;  | 
5574  |  |  | 
5575  |  | /* Defined in main.c */  | 
5576  |  | #ifdef YY_STDINIT  | 
5577  |  |     yyin = stdin;  | 
5578  |  |     yyout = stdout;  | 
5579  |  | #else  | 
5580  | 0  |     yyin = NULL;  | 
5581  | 0  |     yyout = NULL;  | 
5582  | 0  | #endif  | 
5583  |  |  | 
5584  |  |     /* For future reference: Set errno on error, since we are called by  | 
5585  |  |      * yylex_init()  | 
5586  |  |      */  | 
5587  | 0  |     return 0;  | 
5588  | 0  | }  | 
5589  |  |  | 
5590  |  | /* yylex_destroy is for both reentrant and non-reentrant scanners. */  | 
5591  |  | int yylex_destroy  (void)  | 
5592  | 0  | { | 
5593  |  |       | 
5594  |  |     /* Pop the buffer stack, destroying each element. */  | 
5595  | 0  |   while(YY_CURRENT_BUFFER){ | 
5596  | 0  |     yy_delete_buffer( YY_CURRENT_BUFFER  );  | 
5597  | 0  |     YY_CURRENT_BUFFER_LVALUE = NULL;  | 
5598  | 0  |     yypop_buffer_state();  | 
5599  | 0  |   }  | 
5600  |  |  | 
5601  |  |   /* Destroy the stack itself. */  | 
5602  | 0  |   yyfree((yy_buffer_stack) );  | 
5603  | 0  |   (yy_buffer_stack) = NULL;  | 
5604  |  |  | 
5605  |  |     /* Reset the globals. This is important in a non-reentrant scanner so the next time  | 
5606  |  |      * yylex() is called, initialization will occur. */  | 
5607  | 0  |     yy_init_globals( );  | 
5608  |  | 
  | 
5609  | 0  |     return 0;  | 
5610  | 0  | }  | 
5611  |  |  | 
5612  |  | /*  | 
5613  |  |  * Internal utility routines.  | 
5614  |  |  */  | 
5615  |  |  | 
5616  |  | #ifndef yytext_ptr  | 
5617  |  | static void yy_flex_strncpy (char* s1, const char * s2, int n )  | 
5618  |  | { | 
5619  |  |       | 
5620  |  |   int i;  | 
5621  |  |   for ( i = 0; i < n; ++i )  | 
5622  |  |     s1[i] = s2[i];  | 
5623  |  | }  | 
5624  |  | #endif  | 
5625  |  |  | 
5626  |  | #ifdef YY_NEED_STRLEN  | 
5627  |  | static int yy_flex_strlen (const char * s )  | 
5628  |  | { | 
5629  |  |   int n;  | 
5630  |  |   for ( n = 0; s[n]; ++n )  | 
5631  |  |     ;  | 
5632  |  |  | 
5633  |  |   return n;  | 
5634  |  | }  | 
5635  |  | #endif  | 
5636  |  |  | 
5637  |  | void *yyalloc (yy_size_t  size )  | 
5638  | 3  | { | 
5639  | 3  |       return malloc(size);  | 
5640  | 3  | }  | 
5641  |  |  | 
5642  |  | void *yyrealloc  (void * ptr, yy_size_t  size )  | 
5643  | 3  | { | 
5644  |  |       | 
5645  |  |   /* The cast to (char *) in the following accommodates both  | 
5646  |  |    * implementations that use char* generic pointers, and those  | 
5647  |  |    * that use void* generic pointers.  It works with the latter  | 
5648  |  |    * because both ANSI C and C++ allow castless assignment from  | 
5649  |  |    * any pointer type to void*, and deal with argument conversions  | 
5650  |  |    * as though doing an assignment.  | 
5651  |  |    */  | 
5652  | 3  |   return realloc(ptr, size);  | 
5653  | 3  | }  | 
5654  |  |  | 
5655  |  | void yyfree (void * ptr )  | 
5656  | 0  | { | 
5657  | 0  |       free( (char *) ptr ); /* see yyrealloc() for (char *) cast */  | 
5658  | 0  | }  | 
5659  |  |  | 
5660  |  | #define YYTABLES_NAME "yytables"  | 
5661  |  |  | 
5662  |  | #line 889 "toke.l"  | 
5663  |  |  | 
5664  |  | struct path_list { | 
5665  |  |     SLIST_ENTRY(path_list) entries;  | 
5666  |  |     char *path;  | 
5667  |  | };  | 
5668  |  |  | 
5669  |  | SLIST_HEAD(path_list_head, path_list);  | 
5670  |  |  | 
5671  |  | struct include_stack { | 
5672  |  |     struct sudolinebuf line;  | 
5673  |  |     YY_BUFFER_STATE bs;  | 
5674  |  |     char *path; /* search path */  | 
5675  |  |     char *file;  | 
5676  |  |     struct path_list_head more; /* more files in case of includedir */  | 
5677  |  |     int lineno;  | 
5678  |  |     bool keepopen;  | 
5679  |  | };  | 
5680  |  |  | 
5681  |  | /*  | 
5682  |  |  * Compare two struct path_list structs in reverse order.  | 
5683  |  |  */  | 
5684  |  | static int  | 
5685  |  | pl_compare(const void *v1, const void *v2)  | 
5686  | 0  | { | 
5687  | 0  |     const struct path_list * const *p1 = v1;  | 
5688  | 0  |     const struct path_list * const *p2 = v2;  | 
5689  |  | 
  | 
5690  | 0  |     return strcmp((*p2)->path, (*p1)->path);  | 
5691  | 0  | }  | 
5692  |  |  | 
5693  |  | /*  | 
5694  |  |  * Open dirpath and fill in pathsp with an array of regular files  | 
5695  |  |  * that do not end in '~' or contain a '.'.  | 
5696  |  |  * Returns the number of files or SIZE_MAX (-1) on error.  | 
5697  |  |  * If zero files are found, NULL is stored in pathsp.  | 
5698  |  |  */  | 
5699  |  | static size_t  | 
5700  |  | read_dir_files(const char *dirpath, struct path_list ***pathsp, int verbose)  | 
5701  | 0  | { | 
5702  | 0  |     DIR *dir;  | 
5703  | 0  |     size_t i, count = 0;  | 
5704  | 0  |     size_t max_paths = 32;  | 
5705  | 0  |     struct dirent *dent;  | 
5706  | 0  |     struct path_list **paths = NULL;  | 
5707  | 0  |     const size_t dirlen = strlen(dirpath);  | 
5708  | 0  |     debug_decl(read_dir_files, SUDOERS_DEBUG_PARSER);  | 
5709  |  |  | 
5710  |  |     /* XXX - fdopendir */  | 
5711  | 0  |     dir = opendir(dirpath);  | 
5712  | 0  |     if (dir == NULL) { | 
5713  | 0  |   if (errno == ENOENT)  | 
5714  | 0  |       goto done;  | 
5715  | 0  |   sudo_warn("%s", dirpath); | 
5716  | 0  |   goto bad;  | 
5717  | 0  |     }  | 
5718  | 0  |     paths = reallocarray(NULL, max_paths, sizeof(*paths));  | 
5719  | 0  |     if (paths == NULL)  | 
5720  | 0  |   goto oom;  | 
5721  | 0  |     while ((dent = readdir(dir)) != NULL) { | 
5722  | 0  |   const size_t namelen = NAMLEN(dent);  | 
5723  | 0  |   const char *name = dent->d_name;  | 
5724  | 0  |   struct path_list *pl;  | 
5725  | 0  |   struct stat sb;  | 
5726  | 0  |   size_t len;  | 
5727  | 0  |   char *path;  | 
5728  |  |  | 
5729  |  |   /* Ignore files that end in '~' or have a '.' in them. */  | 
5730  | 0  |   if (namelen == 0 || name[namelen - 1] == '~' || strchr(name, '.') != NULL) { | 
5731  |  |       /* Warn about ignored files not starting with '.' if verbose. */  | 
5732  | 0  |       if (namelen > 0 && name[0] != '.' && verbose > 1) { | 
5733  | 0  |     if (name[namelen - 1] == '~' ||  | 
5734  | 0  |       (namelen > 4 && strcmp(&name[namelen - 4], ".bak") == 0)) { | 
5735  | 0  |         fprintf(stderr, U_("%s/%s: %s"), dirpath, name, | 
5736  | 0  |       U_("ignoring editor backup file")); | 
5737  | 0  |     } else { | 
5738  | 0  |         fprintf(stderr, U_("%s/%s: %s"), dirpath, name, | 
5739  | 0  |       U_("ignoring file name containing '.'")); | 
5740  | 0  |     }  | 
5741  | 0  |     fputc('\n', stderr); | 
5742  | 0  |       }  | 
5743  | 0  |       continue;  | 
5744  | 0  |   }  | 
5745  | 0  |   len = dirlen + 1 + namelen;  | 
5746  | 0  |   if ((path = sudo_rcstr_alloc(len)) == NULL)  | 
5747  | 0  |       goto oom;  | 
5748  | 0  |   if ((size_t)snprintf(path, len + 1, "%s/%s", dirpath, name) != len) { | 
5749  | 0  |       sudo_warnx(U_("internal error, %s overflow"), __func__); | 
5750  | 0  |       sudo_rcstr_delref(path);  | 
5751  | 0  |       goto bad;  | 
5752  | 0  |   }  | 
5753  | 0  |   if (stat(path, &sb) != 0 || !S_ISREG(sb.st_mode)) { | 
5754  | 0  |       sudo_rcstr_delref(path);  | 
5755  | 0  |       continue;  | 
5756  | 0  |   }  | 
5757  | 0  |   pl = malloc(sizeof(*pl));  | 
5758  | 0  |   if (pl == NULL) { | 
5759  | 0  |       sudo_rcstr_delref(path);  | 
5760  | 0  |       goto oom;  | 
5761  | 0  |   }  | 
5762  | 0  |   pl->path = path;  | 
5763  | 0  |   if (count >= max_paths) { | 
5764  | 0  |       struct path_list **tmp;  | 
5765  | 0  |       max_paths <<= 1;  | 
5766  | 0  |       tmp = reallocarray(paths, max_paths, sizeof(*paths));  | 
5767  | 0  |       if (tmp == NULL) { | 
5768  | 0  |     sudo_rcstr_delref(path);  | 
5769  | 0  |     free(pl);  | 
5770  | 0  |     goto oom;  | 
5771  | 0  |       }  | 
5772  | 0  |       paths = tmp;  | 
5773  | 0  |   }  | 
5774  | 0  |   paths[count++] = pl;  | 
5775  | 0  |     }  | 
5776  | 0  |     closedir(dir);  | 
5777  | 0  |     if (count == 0) { | 
5778  | 0  |   free(paths);  | 
5779  | 0  |   paths = NULL;  | 
5780  | 0  |     }  | 
5781  | 0  | done:  | 
5782  | 0  |     *pathsp = paths;  | 
5783  | 0  |     debug_return_size_t(count);  | 
5784  | 0  | oom:  | 
5785  | 0  |     sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); | 
5786  | 0  | bad:  | 
5787  | 0  |     sudoerserror(NULL);  | 
5788  | 0  |     if (dir != NULL)  | 
5789  | 0  |   closedir(dir);  | 
5790  | 0  |     for (i = 0; i < count; i++) { | 
5791  | 0  |   sudo_rcstr_delref(paths[i]->path);  | 
5792  | 0  |   free(paths[i]);  | 
5793  | 0  |     }  | 
5794  | 0  |     free(paths);  | 
5795  | 0  |     debug_return_size_t(SIZE_MAX);  | 
5796  | 0  | }  | 
5797  |  |  | 
5798  |  | /*  | 
5799  |  |  * Push a list of all files in dirpath onto stack.  | 
5800  |  |  * Returns the number of files or -1 on error.  | 
5801  |  |  */  | 
5802  |  | static size_t  | 
5803  |  | switch_dir(struct include_stack *stack, char *dirpath, int verbose)  | 
5804  | 0  | { | 
5805  | 0  |     struct path_list **paths = NULL;  | 
5806  | 0  |     size_t count, i;  | 
5807  | 0  |     debug_decl(switch_dir, SUDOERS_DEBUG_PARSER);  | 
5808  |  | 
  | 
5809  | 0  |     count = read_dir_files(dirpath, &paths, verbose);  | 
5810  | 0  |     if (count > 0) { | 
5811  |  |   /* Sort the list as an array in reverse order. */  | 
5812  | 0  |   qsort(paths, count, sizeof(*paths), pl_compare);  | 
5813  |  |  | 
5814  |  |   /* Build up the list in sorted order. */  | 
5815  | 0  |   for (i = 0; i < count; i++) { | 
5816  | 0  |       SLIST_INSERT_HEAD(&stack->more, paths[i], entries);  | 
5817  | 0  |   }  | 
5818  | 0  |   free(paths);  | 
5819  | 0  |     }  | 
5820  |  | 
  | 
5821  | 0  |     debug_return_size_t(count);  | 
5822  | 0  | }  | 
5823  |  |  | 
5824  | 0  | #define MAX_SUDOERS_DEPTH 128  | 
5825  | 0  | #define SUDOERS_STACK_INCREMENT 16  | 
5826  |  |  | 
5827  |  | static size_t istacksize, idepth;  | 
5828  |  | static struct include_stack *istack;  | 
5829  |  | static bool keepopen;  | 
5830  |  |  | 
5831  |  | void  | 
5832  |  | init_lexer(void)  | 
5833  | 45.9k  | { | 
5834  | 45.9k  |     struct path_list *pl;  | 
5835  | 45.9k  |     debug_decl(init_lexer, SUDOERS_DEBUG_PARSER);  | 
5836  |  |  | 
5837  | 45.9k  | #ifndef TRACELEXER  | 
5838  | 45.9k  |     free(trace_lbuf.buf);  | 
5839  | 45.9k  |     sudo_lbuf_init(&trace_lbuf, NULL, 0, NULL, 0);  | 
5840  | 45.9k  | #endif  | 
5841  |  |  | 
5842  | 45.9k  |     while (idepth) { | 
5843  | 0  |   idepth--;  | 
5844  | 0  |   while ((pl = SLIST_FIRST(&istack[idepth].more)) != NULL) { | 
5845  | 0  |       SLIST_REMOVE_HEAD(&istack[idepth].more, entries);  | 
5846  | 0  |       sudo_rcstr_delref(pl->path);  | 
5847  | 0  |       free(pl);  | 
5848  | 0  |   }  | 
5849  | 0  |   sudo_rcstr_delref(istack[idepth].path);  | 
5850  | 0  |   if (idepth && !istack[idepth].keepopen)  | 
5851  | 0  |       fclose(istack[idepth].bs->yy_input_file);  | 
5852  | 0  |   sudoers_delete_buffer(istack[idepth].bs);  | 
5853  | 0  |   free(istack[idepth].line.buf);  | 
5854  | 0  |     }  | 
5855  | 45.9k  |     free(istack);  | 
5856  | 45.9k  |     istack = NULL;  | 
5857  | 45.9k  |     istacksize = idepth = 0;  | 
5858  | 45.9k  |     free(sudolinebuf.buf);  | 
5859  | 45.9k  |     memset(&sudolinebuf, 0, sizeof(sudolinebuf));  | 
5860  | 45.9k  |     sudolineno = 1;  | 
5861  | 45.9k  |     keepopen = false;  | 
5862  | 45.9k  |     sawspace = false;  | 
5863  | 45.9k  |     continued = false;  | 
5864  | 45.9k  |     digest_type = SUDO_DIGEST_INVALID;  | 
5865  | 45.9k  |     prev_state = INITIAL;  | 
5866  | 45.9k  |     BEGIN INITIAL;  | 
5867  |  |  | 
5868  | 45.9k  |     debug_return;  | 
5869  | 45.9k  | }  | 
5870  |  |  | 
5871  |  | /*  | 
5872  |  |  * Like strlcpy() but expand %h escapes.  | 
5873  |  |  */  | 
5874  |  | static size_t  | 
5875  |  | strlcpy_expand_host(char * restrict dst, const char * restrict src,  | 
5876  |  |     const char * restrict host, size_t size)  | 
5877  | 0  | { | 
5878  | 0  |     size_t len = 0;  | 
5879  | 0  |     char ch;  | 
5880  | 0  |     debug_decl(strlcpy_expand_host, SUDOERS_DEBUG_PARSER);  | 
5881  |  | 
  | 
5882  | 0  |     while ((ch = *src++) != '\0') { | 
5883  | 0  |   if (ch == '%' && *src == 'h') { | 
5884  | 0  |       size_t n = strlcpy(dst, host, size);  | 
5885  | 0  |       len += n;  | 
5886  | 0  |       if (n >= size) { | 
5887  |  |     /* truncated */  | 
5888  | 0  |     n = size ? size - 1 : 0;  | 
5889  | 0  |       }  | 
5890  | 0  |       dst += n;  | 
5891  | 0  |       size -= n;  | 
5892  | 0  |       src++;  | 
5893  | 0  |       continue;  | 
5894  | 0  |   }  | 
5895  | 0  |   if (size > 1) { | 
5896  | 0  |       *dst++ = ch;  | 
5897  | 0  |       size--;  | 
5898  | 0  |       len++;  | 
5899  | 0  |   }  | 
5900  | 0  |     }  | 
5901  | 0  |     if (size > 0)  | 
5902  | 0  |   *dst = '\0';  | 
5903  |  | 
  | 
5904  | 0  |     debug_return_size_t(len);  | 
5905  | 0  | }  | 
5906  |  |  | 
5907  |  | /*  | 
5908  |  |  * Expand any embedded %h (host) escapes in the given path and makes  | 
5909  |  |  * a relative path fully-qualified based on the current sudoers file.  | 
5910  |  |  * Returns a reference-counted string on success or NULL on failure.  | 
5911  |  |  */  | 
5912  |  | static char *  | 
5913  |  | expand_include(const char *src, const char *host)  | 
5914  | 0  | { | 
5915  | 0  |     const char *path = sudoers_search_path ? sudoers_search_path : sudoers;  | 
5916  | 0  |     const char *path_end = path + strlen(path);  | 
5917  | 0  |     char *dst, *dst0 = NULL, *dynamic_host = NULL;  | 
5918  | 0  |     const char *cp, *ep;  | 
5919  | 0  |     size_t dst_size, src_len;  | 
5920  | 0  |     size_t nhost = 0;  | 
5921  | 0  |     debug_decl(expand_include, SUDOERS_DEBUG_PARSER);  | 
5922  |  |  | 
5923  |  |     /* Strip double quotes if present. */  | 
5924  | 0  |     src_len = strlen(src);  | 
5925  | 0  |     if (src_len > 1 && src[0] == '"' && src[src_len - 1] == '"') { | 
5926  | 0  |   src++;  | 
5927  | 0  |   src_len -= 2;  | 
5928  | 0  |     }  | 
5929  | 0  |     if (src_len == 0)  | 
5930  | 0  |   debug_return_ptr(NULL);  | 
5931  |  |  | 
5932  |  |     /* Check for %h escapes in src. */  | 
5933  | 0  |     cp = src;  | 
5934  | 0  |     ep = src + src_len;  | 
5935  | 0  |     while (cp < ep) { | 
5936  | 0  |   if (cp[0] == '%' && cp[1] == 'h') { | 
5937  | 0  |       nhost++;  | 
5938  | 0  |       cp += 2;  | 
5939  | 0  |       continue;  | 
5940  | 0  |   }  | 
5941  | 0  |   cp++;  | 
5942  | 0  |     }  | 
5943  |  |  | 
5944  |  |     /* Check for a path separator in the host name, replace with '_'. */  | 
5945  | 0  |     if (nhost != 0 && strchr(host, '/') != NULL) { | 
5946  | 0  |   dynamic_host = malloc(strlen(host) + 1);  | 
5947  | 0  |   if (dynamic_host == NULL) { | 
5948  | 0  |       sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); | 
5949  | 0  |       goto bad;  | 
5950  | 0  |   }  | 
5951  | 0  |   for (dst = dynamic_host; *host != '\0'; host++) { | 
5952  | 0  |       if (*host == '/') { | 
5953  | 0  |     *dst++ = '_';  | 
5954  | 0  |     continue;  | 
5955  | 0  |       }  | 
5956  | 0  |       *dst++ = *host;  | 
5957  | 0  |   }  | 
5958  | 0  |   *dst = '\0';  | 
5959  | 0  |   host = dynamic_host;  | 
5960  | 0  |     }  | 
5961  |  |  | 
5962  | 0  |     if (*src == '/') { | 
5963  |  |   /* Fully-qualified path, make a copy and expand %h escapes. */  | 
5964  | 0  |   dst_size = src_len + (nhost * strlen(host)) - (nhost * 2) + 1;  | 
5965  | 0  |   dst0 = sudo_rcstr_alloc(dst_size - 1);  | 
5966  | 0  |   if (dst0 == NULL) { | 
5967  | 0  |       sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); | 
5968  | 0  |       goto bad;  | 
5969  | 0  |   }  | 
5970  | 0  |   if (strlcpy_expand_host(dst0, src, host, dst_size) >= dst_size)  | 
5971  | 0  |       goto oflow;  | 
5972  | 0  |   goto done;  | 
5973  | 0  |     }  | 
5974  |  |  | 
5975  |  |     /*  | 
5976  |  |      * Relative paths are located in the same dir as the sudoers file.  | 
5977  |  |      * If the current sudoers file was opened via a colon-separated path,  | 
5978  |  |      * use the same path when opening src.  | 
5979  |  |      */  | 
5980  | 0  |     dst_size = 1;  | 
5981  | 0  |     for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL;  | 
5982  | 0  |       cp = sudo_strsplit(NULL, path_end, ":", &ep)) { | 
5983  | 0  |   char *dirend = memrchr(cp, '/', (size_t)(ep - cp));  | 
5984  | 0  |   if (dirend != NULL) { | 
5985  |  |       /* Include space for trailing '/' separator. */  | 
5986  | 0  |       dst_size += (size_t)(dirend - cp) + 1;  | 
5987  | 0  |   }  | 
5988  |  |   /* Includes space for expanded host and ':' separator. */  | 
5989  | 0  |   dst_size += src_len + (nhost * strlen(host)) - (nhost * 2) + 1;  | 
5990  | 0  |     }  | 
5991  |  |  | 
5992  |  |     /* Make a copy of the fully-qualified path and return it. */  | 
5993  | 0  |     dst = dst0 = sudo_rcstr_alloc(dst_size - 1);  | 
5994  | 0  |     if (dst0 == NULL) { | 
5995  | 0  |   sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); | 
5996  | 0  |   goto bad;  | 
5997  | 0  |     }  | 
5998  | 0  |     for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL;  | 
5999  | 0  |       cp = sudo_strsplit(NULL, path_end, ":", &ep)) { | 
6000  | 0  |   size_t len;  | 
6001  | 0  |   char *dirend;  | 
6002  |  | 
  | 
6003  | 0  |   if (cp != path) { | 
6004  | 0  |       if (dst_size < 2)  | 
6005  | 0  |     goto oflow;  | 
6006  | 0  |       *dst++ = ':';  | 
6007  | 0  |       dst_size--;  | 
6008  | 0  |   }  | 
6009  |  |  | 
6010  | 0  |   dirend = memrchr(cp, '/', (size_t)(ep - cp));  | 
6011  | 0  |   if (dirend != NULL) { | 
6012  | 0  |       len = (size_t)(dirend - cp) + 1;  | 
6013  | 0  |       if (len >= dst_size)  | 
6014  | 0  |     goto oflow;  | 
6015  | 0  |       memcpy(dst, cp, len);  | 
6016  | 0  |       dst += len;  | 
6017  | 0  |       dst_size -= len;  | 
6018  | 0  |   }  | 
6019  |  |  | 
6020  | 0  |   len = strlcpy_expand_host(dst, src, host, dst_size);  | 
6021  | 0  |   if (len >= dst_size)  | 
6022  | 0  |       goto oflow;  | 
6023  | 0  |   dst += len;  | 
6024  | 0  |   dst_size -= len;  | 
6025  | 0  |     }  | 
6026  | 0  |     *dst = '\0';  | 
6027  |  | 
  | 
6028  | 0  | done:  | 
6029  | 0  |     free(dynamic_host);  | 
6030  | 0  |     debug_return_str(dst0);  | 
6031  | 0  | oflow:  | 
6032  | 0  |     sudo_warnx(U_("internal error, %s overflow"), __func__); | 
6033  | 0  | bad:  | 
6034  | 0  |     sudoerserror(NULL);  | 
6035  | 0  |     free(dynamic_host);  | 
6036  | 0  |     free(dst0);  | 
6037  | 0  |     debug_return_str(NULL);  | 
6038  | 0  | }  | 
6039  |  |  | 
6040  |  | /*  | 
6041  |  |  * Open an include file (or file from a directory), push the old  | 
6042  |  |  * sudoers file buffer and switch to the new one.  | 
6043  |  |  * A missing or insecure include dir is simply ignored.  | 
6044  |  |  * Returns false on error, else true.  | 
6045  |  |  */  | 
6046  |  | static bool  | 
6047  |  | push_include_int(const char *opath, const char *host, bool isdir,  | 
6048  |  |      struct sudoers_parser_config *conf)  | 
6049  | 0  | { | 
6050  | 0  |     struct path_list *pl;  | 
6051  | 0  |     char *file = NULL, *path;  | 
6052  | 0  |     FILE *fp;  | 
6053  | 0  |     debug_decl(push_include, SUDOERS_DEBUG_PARSER);  | 
6054  |  | 
  | 
6055  | 0  |     if ((path = expand_include(opath, host)) == NULL)  | 
6056  | 0  |   debug_return_bool(false);  | 
6057  |  |  | 
6058  |  |     /* push current state onto stack */  | 
6059  | 0  |     if (idepth >= istacksize) { | 
6060  | 0  |   struct include_stack *new_istack;  | 
6061  |  | 
  | 
6062  | 0  |   if (idepth > MAX_SUDOERS_DEPTH) { | 
6063  | 0  |       if (conf->verbose > 0) { | 
6064  | 0  |     fprintf(stderr, U_("%s: %s"), path, | 
6065  | 0  |         U_("too many levels of includes")); | 
6066  | 0  |     fputc('\n', stderr); | 
6067  | 0  |       }  | 
6068  | 0  |       sudoerserror(NULL);  | 
6069  | 0  |       sudo_rcstr_delref(path);  | 
6070  | 0  |       debug_return_bool(false);  | 
6071  | 0  |   }  | 
6072  | 0  |   istacksize += SUDOERS_STACK_INCREMENT;  | 
6073  | 0  |   new_istack = reallocarray(istack, istacksize, sizeof(*istack));  | 
6074  | 0  |   if (new_istack == NULL) { | 
6075  | 0  |       sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); | 
6076  | 0  |       sudoerserror(NULL);  | 
6077  | 0  |       sudo_rcstr_delref(path);  | 
6078  | 0  |       debug_return_bool(false);  | 
6079  | 0  |   }  | 
6080  | 0  |   istack = new_istack;  | 
6081  | 0  |     }  | 
6082  | 0  |     SLIST_INIT(&istack[idepth].more);  | 
6083  | 0  |     if (isdir) { | 
6084  | 0  |   struct stat sb;  | 
6085  | 0  |   char dname[PATH_MAX];  | 
6086  | 0  |   int fd, status;  | 
6087  | 0  |   size_t count;  | 
6088  |  | 
  | 
6089  | 0  |   fd = sudo_open_conf_path(path, dname, sizeof(dname), NULL);  | 
6090  | 0  |   if (conf->ignore_perms) { | 
6091  |  |       /* Skip sudoers security checks when ignore_perms is set. */  | 
6092  | 0  |       if (fd == -1 || fstat(fd, &sb) == -1)  | 
6093  | 0  |     status = SUDO_PATH_MISSING;  | 
6094  | 0  |       else  | 
6095  | 0  |     status = SUDO_PATH_SECURE;  | 
6096  | 0  |   } else { | 
6097  | 0  |       status = sudo_secure_fd(fd, S_IFDIR, sudoers_file_uid(),  | 
6098  | 0  |     sudoers_file_gid(), &sb);  | 
6099  | 0  |   }  | 
6100  | 0  |   if (fd != -1)  | 
6101  | 0  |       close(fd); /* XXX use in read_dir_files? */  | 
6102  | 0  |   if (status != SUDO_PATH_SECURE) { | 
6103  | 0  |       if (conf->verbose > 0) { | 
6104  | 0  |     switch (status) { | 
6105  | 0  |     case SUDO_PATH_BAD_TYPE:  | 
6106  | 0  |         errno = ENOTDIR;  | 
6107  | 0  |         sudo_warn("%s", path); | 
6108  | 0  |         break;  | 
6109  | 0  |     case SUDO_PATH_WRONG_OWNER:  | 
6110  | 0  |         sudo_warnx(U_("%s is owned by uid %u, should be %u"),    | 
6111  | 0  |       path, (unsigned int) sb.st_uid,  | 
6112  | 0  |       (unsigned int) sudoers_file_uid());  | 
6113  | 0  |         break;  | 
6114  | 0  |     case SUDO_PATH_WORLD_WRITABLE:  | 
6115  | 0  |         sudo_warnx(U_("%s is world writable"), path); | 
6116  | 0  |         break;  | 
6117  | 0  |     case SUDO_PATH_GROUP_WRITABLE:  | 
6118  | 0  |         sudo_warnx(U_("%s is owned by gid %u, should be %u"), | 
6119  | 0  |       path, (unsigned int) sb.st_gid,  | 
6120  | 0  |       (unsigned int) sudoers_file_gid());  | 
6121  | 0  |         break;  | 
6122  | 0  |     default:  | 
6123  | 0  |         break;  | 
6124  | 0  |     }  | 
6125  | 0  |       }  | 
6126  |  |       /* A missing or insecure include dir is not a fatal error. */  | 
6127  | 0  |       sudo_rcstr_delref(path);  | 
6128  | 0  |       debug_return_bool(true);  | 
6129  | 0  |   }  | 
6130  | 0  |   count = switch_dir(&istack[idepth], dname, conf->verbose);  | 
6131  | 0  |   switch (count) { | 
6132  | 0  |   case SIZE_MAX:  | 
6133  | 0  |   case 0:  | 
6134  |  |       /* switch_dir() called sudoerserror() for us */  | 
6135  | 0  |       sudo_rcstr_delref(path);  | 
6136  | 0  |       debug_return_bool(count ? false : true);  | 
6137  | 0  |   }  | 
6138  |  |  | 
6139  |  |   /* Parse the first dir entry we can open, leave the rest for later. */  | 
6140  | 0  |   do { | 
6141  | 0  |       sudo_rcstr_delref(file);  | 
6142  | 0  |       sudo_rcstr_delref(path);  | 
6143  | 0  |       if ((pl = SLIST_FIRST(&istack[idepth].more)) == NULL) { | 
6144  |  |     /* Unable to open any files in include dir, not an error. */  | 
6145  | 0  |     debug_return_bool(true);  | 
6146  | 0  |       }  | 
6147  | 0  |       SLIST_REMOVE_HEAD(&istack[idepth].more, entries);  | 
6148  | 0  |       path = pl->path;  | 
6149  | 0  |       free(pl);  | 
6150  |  |       /* The file and path and the same for sudoers.d files. */  | 
6151  | 0  |       file = path;  | 
6152  | 0  |       sudo_rcstr_addref(file);  | 
6153  | 0  |   } while ((fp = open_sudoers(file, NULL, false, &keepopen)) == NULL);  | 
6154  | 0  |     } else { | 
6155  | 0  |   if ((fp = open_sudoers(path, &file, true, &keepopen)) == NULL) { | 
6156  |  |       /* The error was already printed by open_sudoers() */  | 
6157  | 0  |       sudoerserror(NULL);  | 
6158  | 0  |       sudo_rcstr_delref(path);  | 
6159  | 0  |       debug_return_bool(false);  | 
6160  | 0  |   }  | 
6161  | 0  |     }  | 
6162  |  |     /*  | 
6163  |  |      * Push the old (current) file and open the new one.  | 
6164  |  |      * We use the existing refs of sudoers and sudoers_search_path.  | 
6165  |  |      */  | 
6166  | 0  |     istack[idepth].file = sudoers;  | 
6167  | 0  |     istack[idepth].path = sudoers_search_path;  | 
6168  | 0  |     istack[idepth].line = sudolinebuf;  | 
6169  | 0  |     istack[idepth].bs = YY_CURRENT_BUFFER;  | 
6170  | 0  |     istack[idepth].lineno = sudolineno;  | 
6171  | 0  |     istack[idepth].keepopen = keepopen;  | 
6172  | 0  |     idepth++;  | 
6173  | 0  |     sudolineno = 1;  | 
6174  | 0  |     sudoers = file;  | 
6175  | 0  |     sudoers_search_path = path;  | 
6176  | 0  |     sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));  | 
6177  | 0  |     memset(&sudolinebuf, 0, sizeof(sudolinebuf));  | 
6178  |  | 
  | 
6179  | 0  |     debug_return_bool(true);  | 
6180  | 0  | }  | 
6181  |  |  | 
6182  |  | bool  | 
6183  |  | push_include(const char *opath, const char *host,  | 
6184  |  |      struct sudoers_parser_config *conf)  | 
6185  | 0  | { | 
6186  | 0  |     return push_include_int(opath, host, false, conf);  | 
6187  | 0  | }  | 
6188  |  |  | 
6189  |  | bool  | 
6190  |  | push_includedir(const char *opath, const char *host,  | 
6191  |  |      struct sudoers_parser_config *conf)  | 
6192  | 0  | { | 
6193  | 0  |     return push_include_int(opath, host, true, conf);  | 
6194  | 0  | }  | 
6195  |  |  | 
6196  |  | /*  | 
6197  |  |  * Restore the previous sudoers file and buffer, or, in the case  | 
6198  |  |  * of an includedir, switch to the next file in the dir.  | 
6199  |  |  * Returns false if there is nothing to pop, else true.  | 
6200  |  |  */  | 
6201  |  | static bool  | 
6202  |  | pop_include(void)  | 
6203  | 5  | { | 
6204  | 5  |     struct path_list *pl;  | 
6205  | 5  |     FILE *fp;  | 
6206  | 5  |     debug_decl(pop_include, SUDOERS_DEBUG_PARSER);  | 
6207  |  |  | 
6208  | 5  |     if (idepth == 0 || YY_CURRENT_BUFFER == NULL)  | 
6209  | 5  |   debug_return_bool(false);  | 
6210  |  |  | 
6211  | 0  |     if (!keepopen)  | 
6212  | 0  |   fclose(YY_CURRENT_BUFFER->yy_input_file);  | 
6213  | 0  |     sudoers_delete_buffer(YY_CURRENT_BUFFER);  | 
6214  |  |     /* If we are in an include dir, move to the next file. */  | 
6215  | 0  |     while ((pl = SLIST_FIRST(&istack[idepth - 1].more)) != NULL) { | 
6216  | 0  |   SLIST_REMOVE_HEAD(&istack[idepth - 1].more, entries);  | 
6217  | 0  |   fp = open_sudoers(pl->path, NULL, false, &keepopen);  | 
6218  | 0  |   if (fp != NULL) { | 
6219  | 0  |       sudolinebuf.len = sudolinebuf.off = 0;  | 
6220  | 0  |       sudolinebuf.toke_start = sudolinebuf.toke_end = 0;  | 
6221  | 0  |       sudo_rcstr_delref(sudoers);  | 
6222  | 0  |       sudo_rcstr_delref(sudoers_search_path);  | 
6223  | 0  |       sudoers_search_path = pl->path;  | 
6224  | 0  |       sudoers = sudoers_search_path;  | 
6225  | 0  |       sudo_rcstr_addref(sudoers);  | 
6226  | 0  |       sudolineno = 1;  | 
6227  | 0  |       sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));  | 
6228  | 0  |       free(pl);  | 
6229  | 0  |       break;  | 
6230  | 0  |   }  | 
6231  |  |   /* Unable to open path in include dir, go to next one. */  | 
6232  | 0  |   sudo_rcstr_delref(pl->path);  | 
6233  | 0  |   free(pl);  | 
6234  | 0  |     }  | 
6235  |  |     /* If no path list, just pop the last dir on the stack. */  | 
6236  | 0  |     if (pl == NULL) { | 
6237  | 0  |   idepth--;  | 
6238  | 0  |   sudoers_switch_to_buffer(istack[idepth].bs);  | 
6239  | 0  |   free(sudolinebuf.buf);  | 
6240  | 0  |   sudolinebuf = istack[idepth].line;  | 
6241  | 0  |   sudo_rcstr_delref(sudoers);  | 
6242  | 0  |   sudoers = istack[idepth].file;  | 
6243  | 0  |   sudo_rcstr_delref(sudoers_search_path);  | 
6244  | 0  |   sudoers_search_path = istack[idepth].path;  | 
6245  | 0  |   sudolineno = istack[idepth].lineno;  | 
6246  | 0  |   keepopen = istack[idepth].keepopen;  | 
6247  | 0  |     }  | 
6248  | 0  |     debug_return_bool(true);  | 
6249  | 0  | }  | 
6250  |  |  | 
6251  |  | #ifdef TRACELEXER  | 
6252  |  | int  | 
6253  |  | sudoers_trace_print(const char *msg)  | 
6254  |  | { | 
6255  |  |     return fputs(msg, stderr);  | 
6256  |  | }  | 
6257  |  | #else  | 
6258  |  | int  | 
6259  |  | sudoers_trace_print(const char *msg)  | 
6260  | 216k  | { | 
6261  | 216k  |     debug_decl_vars(sudoers_trace_print, SUDOERS_DEBUG_PARSER);  | 
6262  |  |  | 
6263  | 216k  |     if (sudo_debug_needed(SUDO_DEBUG_DEBUG)) { | 
6264  | 0  |   sudo_lbuf_append(&trace_lbuf, "%s", msg);  | 
6265  | 0  |   if (strchr(msg, '\n') != NULL)  | 
6266  | 0  |   { | 
6267  |  |       /* We already parsed the newline so sudolineno is off by one. */  | 
6268  | 0  |       sudo_debug_printf2(NULL, NULL, 0,  | 
6269  | 0  |     sudo_debug_subsys|SUDO_DEBUG_DEBUG, "sudoerslex: %s:%d: %s",  | 
6270  | 0  |     sudoers, sudolineno - 1, trace_lbuf.buf);  | 
6271  | 0  |       trace_lbuf.len = 0;  | 
6272  | 0  |   }  | 
6273  | 0  |     }  | 
6274  | 216k  |     return 0;  | 
6275  | 216k  | }  | 
6276  |  | #endif /* TRACELEXER */  | 
6277  |  |  | 
6278  |  | /*  | 
6279  |  |  * Custom input function that uses getdelim(3) and stores the buffer  | 
6280  |  |  * where the error functions can access it for better reporting.  | 
6281  |  |  * On success, buf is guaranteed to end in a newline and not contain  | 
6282  |  |  * embedded NULs.  Calls YY_FATAL_ERROR on error.  | 
6283  |  |  */  | 
6284  |  | static int  | 
6285  |  | sudoers_input(char *buf, yy_size_t max_size)  | 
6286  | 294  | { | 
6287  | 294  |     char *cp;  | 
6288  | 294  |     size_t avail = sudolinebuf.len - sudolinebuf.off;  | 
6289  | 294  |     debug_decl(sudoers_input, SUDOERS_DEBUG_PARSER);  | 
6290  |  |  | 
6291  |  |     /* Refill line buffer if needed. */  | 
6292  | 294  |     if (avail == 0) { | 
6293  |  |   /*  | 
6294  |  |    * Some getdelim(3) implementations write NUL to buf on EOF.  | 
6295  |  |    * We peek ahead one char to detect EOF and skip the getdelim() call.  | 
6296  |  |    * This will preserve the original value of the last line read.  | 
6297  |  |    */  | 
6298  | 38  |   int ch = getc(sudoersin);  | 
6299  | 38  |   if (ch == EOF)  | 
6300  | 5  |       goto sudoers_eof;  | 
6301  | 33  |   ungetc(ch, sudoersin);  | 
6302  | 33  |   avail = (size_t)getdelim(&sudolinebuf.buf, &sudolinebuf.size, '\n', sudoersin);  | 
6303  | 33  |   if (avail == (size_t)-1) { | 
6304  | 5  | sudoers_eof:  | 
6305  |  |       /* EOF or error. */  | 
6306  | 5  |       if (feof(sudoersin))  | 
6307  | 5  |     debug_return_int(0);  | 
6308  | 5  |       YY_FATAL_ERROR("input in flex scanner failed"); | 
6309  | 5  |   }  | 
6310  |  |  | 
6311  |  |   /* getdelim() can return embedded NULs, truncate if we find one. */  | 
6312  | 33  |   cp = memchr(sudolinebuf.buf, '\0', avail);  | 
6313  | 33  |   if (cp != NULL) { | 
6314  | 19  |       *cp++ = '\n';  | 
6315  | 19  |       *cp = '\0';  | 
6316  | 19  |       avail = (size_t)(cp - sudolinebuf.buf);  | 
6317  | 19  |   }  | 
6318  |  |  | 
6319  |  |   /* Add trailing newline if it is missing. */  | 
6320  | 33  |   if (sudolinebuf.buf[avail - 1] != '\n') { | 
6321  | 2  |       if (avail + 2 >= sudolinebuf.size) { | 
6322  | 0  |     cp = realloc(sudolinebuf.buf, avail + 2);  | 
6323  | 0  |     if (cp == NULL) { | 
6324  | 0  |         YY_FATAL_ERROR("unable to allocate memory"); | 
6325  | 0  |         debug_return_int(0);  | 
6326  | 0  |     }  | 
6327  | 0  |     sudolinebuf.buf = cp;  | 
6328  | 0  |     sudolinebuf.size = avail + 2;  | 
6329  | 0  |       }  | 
6330  | 2  |       sudolinebuf.buf[avail++] = '\n';  | 
6331  | 2  |       sudolinebuf.buf[avail] = '\0';  | 
6332  | 2  |   }  | 
6333  |  |  | 
6334  | 33  |   sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s:%d: %.*s", sudoers, sudolineno,  | 
6335  | 33  |       (int)(avail -1), sudolinebuf.buf);  | 
6336  |  |  | 
6337  | 33  |   sudolinebuf.len = avail;  | 
6338  | 33  |   sudolinebuf.off = 0;  | 
6339  | 33  |   sudolinebuf.toke_start = sudolinebuf.toke_end = 0;  | 
6340  | 33  |     }  | 
6341  |  |  | 
6342  | 289  |     if (avail > max_size)  | 
6343  | 256  |   avail = max_size;  | 
6344  | 289  |     memcpy(buf, sudolinebuf.buf + sudolinebuf.off, avail);  | 
6345  | 289  |     sudolinebuf.off += avail;  | 
6346  |  |  | 
6347  | 289  |     debug_return_int((int)avail);  | 
6348  | 289  | }  | 
6349  |  |  |