1 
2 #line 3 "lacheck.c"
3 
4 #define  YY_INT_ALIGNED short int
5 
6 /* A lexical scanner generated by flex */
7 
8 #define FLEX_SCANNER
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 39
12 #if YY_FLEX_SUBMINOR_VERSION > 0
13 #define FLEX_BETA
14 #endif
15 
16 /* First, we deal with  platform-specific or compiler-specific issues. */
17 
18 /* begin standard C headers. */
19 #include <stdio.h>
20 #include <string.h>
21 #include <errno.h>
22 #include <stdlib.h>
23 
24 /* end standard C headers. */
25 
26 /* flex integer type definitions */
27 
28 #ifndef FLEXINT_H
29 #define FLEXINT_H
30 
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32 
33 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
34 
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36  * if you want the limit (max/min) macros for int types.
37  */
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
40 #endif
41 
42 #include <inttypes.h>
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
49 #else
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t;
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
56 
57 /* Limits of integral types. */
58 #ifndef INT8_MIN
59 #define INT8_MIN               (-128)
60 #endif
61 #ifndef INT16_MIN
62 #define INT16_MIN              (-32767-1)
63 #endif
64 #ifndef INT32_MIN
65 #define INT32_MIN              (-2147483647-1)
66 #endif
67 #ifndef INT8_MAX
68 #define INT8_MAX               (127)
69 #endif
70 #ifndef INT16_MAX
71 #define INT16_MAX              (32767)
72 #endif
73 #ifndef INT32_MAX
74 #define INT32_MAX              (2147483647)
75 #endif
76 #ifndef UINT8_MAX
77 #define UINT8_MAX              (255U)
78 #endif
79 #ifndef UINT16_MAX
80 #define UINT16_MAX             (65535U)
81 #endif
82 #ifndef UINT32_MAX
83 #define UINT32_MAX             (4294967295U)
84 #endif
85 
86 #endif /* ! C99 */
87 
88 #endif /* ! FLEXINT_H */
89 
90 #ifdef __cplusplus
91 
92 /* The "const" storage-class-modifier is valid. */
93 #define YY_USE_CONST
94 
95 #else	/* ! __cplusplus */
96 
97 /* C99 requires __STDC__ to be defined as 1. */
98 #if defined (__STDC__)
99 
100 #define YY_USE_CONST
101 
102 #endif	/* defined (__STDC__) */
103 #endif	/* ! __cplusplus */
104 
105 #ifdef YY_USE_CONST
106 #define yyconst const
107 #else
108 #define yyconst
109 #endif
110 
111 /* Returned upon end-of-file. */
112 #define YY_NULL 0
113 
114 /* Promotes a possibly negative, possibly signed char to an unsigned
115  * integer for use as an array index.  If the signed char is negative,
116  * we want to instead treat it as an 8-bit unsigned char, hence the
117  * double cast.
118  */
119 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
120 
121 /* Enter a start condition.  This macro really ought to take a parameter,
122  * but we do it the disgusting crufty way forced on us by the ()-less
123  * definition of BEGIN.
124  */
125 #define BEGIN (yy_start) = 1 + 2 *
126 
127 /* Translate the current start state into a value that can be later handed
128  * to BEGIN to return to the state.  The YYSTATE alias is for lex
129  * compatibility.
130  */
131 #define YY_START (((yy_start) - 1) / 2)
132 #define YYSTATE YY_START
133 
134 /* Action number for EOF rule of a given start state. */
135 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
136 
137 /* Special action meaning "start processing a new file". */
138 #define YY_NEW_FILE yyrestart(yyin  )
139 
140 #define YY_END_OF_BUFFER_CHAR 0
141 
142 /* Size of default input buffer. */
143 #ifndef YY_BUF_SIZE
144 #define YY_BUF_SIZE 16384
145 #endif
146 
147 /* The state buf must be large enough to hold one state per character in the main buffer.
148  */
149 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
150 
151 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
152 #define YY_TYPEDEF_YY_BUFFER_STATE
153 typedef struct yy_buffer_state *YY_BUFFER_STATE;
154 #endif
155 
156 #ifndef YY_TYPEDEF_YY_SIZE_T
157 #define YY_TYPEDEF_YY_SIZE_T
158 typedef size_t yy_size_t;
159 #endif
160 
161 extern yy_size_t yyleng;
162 
163 extern FILE *yyin, *yyout;
164 
165 #define EOB_ACT_CONTINUE_SCAN 0
166 #define EOB_ACT_END_OF_FILE 1
167 #define EOB_ACT_LAST_MATCH 2
168 
169     #define YY_LESS_LINENO(n)
170     #define YY_LINENO_REWIND_TO(ptr)
171 
172 /* Return all but the first "n" matched characters back to the input stream. */
173 #define yyless(n) \
174 	do \
175 		{ \
176 		/* Undo effects of setting up yytext. */ \
177         int yyless_macro_arg = (n); \
178         YY_LESS_LINENO(yyless_macro_arg);\
179 		*yy_cp = (yy_hold_char); \
180 		YY_RESTORE_YY_MORE_OFFSET \
181 		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
182 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
183 		} \
184 	while ( 0 )
185 
186 #define unput(c) yyunput( c, (yytext_ptr)  )
187 
188 #ifndef YY_STRUCT_YY_BUFFER_STATE
189 #define YY_STRUCT_YY_BUFFER_STATE
190 struct yy_buffer_state
191 	{
192 	FILE *yy_input_file;
193 
194 	char *yy_ch_buf;		/* input buffer */
195 	char *yy_buf_pos;		/* current position in input buffer */
196 
197 	/* Size of input buffer in bytes, not including room for EOB
198 	 * characters.
199 	 */
200 	yy_size_t yy_buf_size;
201 
202 	/* Number of characters read into yy_ch_buf, not including EOB
203 	 * characters.
204 	 */
205 	yy_size_t yy_n_chars;
206 
207 	/* Whether we "own" the buffer - i.e., we know we created it,
208 	 * and can realloc() it to grow it, and should free() it to
209 	 * delete it.
210 	 */
211 	int yy_is_our_buffer;
212 
213 	/* Whether this is an "interactive" input source; if so, and
214 	 * if we're using stdio for input, then we want to use getc()
215 	 * instead of fread(), to make sure we stop fetching input after
216 	 * each newline.
217 	 */
218 	int yy_is_interactive;
219 
220 	/* Whether we're considered to be at the beginning of a line.
221 	 * If so, '^' rules will be active on the next match, otherwise
222 	 * not.
223 	 */
224 	int yy_at_bol;
225 
226     int yy_bs_lineno; /**< The line count. */
227     int yy_bs_column; /**< The column count. */
228 
229 	/* Whether to try to fill the input buffer when we reach the
230 	 * end of it.
231 	 */
232 	int yy_fill_buffer;
233 
234 	int yy_buffer_status;
235 
236 #define YY_BUFFER_NEW 0
237 #define YY_BUFFER_NORMAL 1
238 	/* When an EOF's been seen but there's still some text to process
239 	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
240 	 * shouldn't try reading from the input source any more.  We might
241 	 * still have a bunch of tokens to match, though, because of
242 	 * possible backing-up.
243 	 *
244 	 * When we actually see the EOF, we change the status to "new"
245 	 * (via yyrestart()), so that the user can continue scanning by
246 	 * just pointing yyin at a new input file.
247 	 */
248 #define YY_BUFFER_EOF_PENDING 2
249 
250 	};
251 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
252 
253 /* Stack of input buffers. */
254 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
255 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
256 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
257 
258 /* We provide macros for accessing buffer states in case in the
259  * future we want to put the buffer states in a more general
260  * "scanner state".
261  *
262  * Returns the top of the stack, or NULL.
263  */
264 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
265                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
266                           : NULL)
267 
268 /* Same as previous macro, but useful when we know that the buffer stack is not
269  * NULL or when we need an lvalue. For internal use only.
270  */
271 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
272 
273 /* yy_hold_char holds the character lost when yytext is formed. */
274 static char yy_hold_char;
275 static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
276 yy_size_t yyleng;
277 
278 /* Points to current character in buffer. */
279 static char *yy_c_buf_p = (char *) 0;
280 static int yy_init = 0;		/* whether we need to initialize */
281 static int yy_start = 0;	/* start state number */
282 
283 /* Flag which is used to allow yywrap()'s to do buffer switches
284  * instead of setting up a fresh yyin.  A bit of a hack ...
285  */
286 static int yy_did_buffer_switch_on_eof;
287 
288 void yyrestart (FILE *input_file  );
289 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
290 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
291 void yy_delete_buffer (YY_BUFFER_STATE b  );
292 void yy_flush_buffer (YY_BUFFER_STATE b  );
293 void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
294 void yypop_buffer_state (void );
295 
296 static void yyensure_buffer_stack (void );
297 static void yy_load_buffer_state (void );
298 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
299 
300 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
301 
302 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
303 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
304 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
305 
306 void *yyalloc (yy_size_t  );
307 void *yyrealloc (void *,yy_size_t  );
308 void yyfree (void *  );
309 
310 #define yy_new_buffer yy_create_buffer
311 
312 #define yy_set_interactive(is_interactive) \
313 	{ \
314 	if ( ! YY_CURRENT_BUFFER ){ \
315         yyensure_buffer_stack (); \
316 		YY_CURRENT_BUFFER_LVALUE =    \
317             yy_create_buffer(yyin,YY_BUF_SIZE ); \
318 	} \
319 	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
320 	}
321 
322 #define yy_set_bol(at_bol) \
323 	{ \
324 	if ( ! YY_CURRENT_BUFFER ){\
325         yyensure_buffer_stack (); \
326 		YY_CURRENT_BUFFER_LVALUE =    \
327             yy_create_buffer(yyin,YY_BUF_SIZE ); \
328 	} \
329 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
330 	}
331 
332 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
333 
334 /* Begin user sect3 */
335 
336 typedef unsigned char YY_CHAR;
337 
338 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
339 
340 typedef int yy_state_type;
341 
342 extern int yylineno;
343 
344 int yylineno = 1;
345 
346 extern char *yytext;
347 #define yytext_ptr yytext
348 
349 static yy_state_type yy_get_previous_state (void );
350 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
351 static int yy_get_next_buffer (void );
352 static void yy_fatal_error (yyconst char msg[]  );
353 
354 /* Done after the current pattern has been matched and before the
355  * corresponding action - sets up yytext.
356  */
357 #define YY_DO_BEFORE_ACTION \
358 	(yytext_ptr) = yy_bp; \
359 	yyleng = (size_t) (yy_cp - yy_bp); \
360 	(yy_hold_char) = *yy_cp; \
361 	*yy_cp = '\0'; \
362 	(yy_c_buf_p) = yy_cp;
363 
364 #define YY_NUM_RULES 88
365 #define YY_END_OF_BUFFER 89
366 /* This struct is not used in this scanner,
367    but its presence is necessary. */
368 struct yy_trans_info
369 	{
370 	flex_int32_t yy_verify;
371 	flex_int32_t yy_nxt;
372 	};
373 static yyconst flex_int16_t yy_acclist[361] =
374     {   0,
375        89,   87,   88,   87,   88,    4,   88,   87,   88,   43,
376        87,   88,   81,   87,   88,   87,   88,   87,   88,   87,
377        88,   87,   88,   87,   88,    9,   87,   88,   10,   87,
378        88,   87,   88,   87,   88,   87,   88,   87,   88,   87,
379        88,   87,   88,   49,   88,   88,   49,   88,   59,   88,
380        59,   88,   52,   88,   51,   52,   88,   53,   88,   52,
381        88,   85,   88,   85,   88,   88,   83,   88,   82,   88,
382        83,   88,   56,   88,   55,   88,   56,   88,   31,   88,
383         4,   88,   31,   88,   31,   88,   29,   31,   88,   30,
384        31,   88,   41,   88,   40,   41,   88,   41,   88,   35,
385 
386        88,   35,   88,   35,   88,   33,   35,   88,   34,   35,
387        88,   27,   88,   25,   27,   88,    4,   25,   88,   13,
388        27,   88,   27,   88,   13,   27,   88,   24,   27,   88,
389        24,   27,   88,   13,   27,   88,   27,   88,   13,   27,
390        88,    9,   27,   88,   11,   27,   88,   26,   27,   88,
391        12,   27,   88,   12,   27,   88,   27,   88,   27,   88,
392        12,   27,   88,   27,   88,   12,   27,   88,   10,   27,
393        88,   80,   63,   42,   44,    3,   79,    7,    2,   36,
394        37,   17,   38,    1,   39,    5,    6,16445,    8,   63,
395        79,16445,   49,    1,   49,   59,    1,   59,    1,   85,
396 
397         1,   85,   80,   13,   13,   13,   79,   13,   18,   13,
398        12,   12,   12,   16,   12,   78,16444,    3,   66,   68,
399     16446,16445,   77,   77,   77,   14,   68,16446,16445,   78,
400     16444,   13,16446,   12,16446,16460,16460,   15,16444,    3,
401         3,16460,16460,   77,   77,   73,   73,   77,   22,   22,
402        77,   19,   19,   77, 8253,   25,16444,   23,   67,   67,
403      8268,   67,   67, 8252,   67,    3,   67, 8268, 8254,   28,
404        28,   77,   28,   58,   57,    8,   63,   67,   67,   67,
405        67,   71,    3,    3,   67,   28,   77,   28,   77,   74,
406        74,   74,   77,   74,   74,   54,   54,   54,   77,   54,
407 
408        67,   67,   67,   70,    3,   67,    3,   48,   47,    9,
409        10,   84,   74,   75,   75,   75,   77,   75,   75,   67,
410        29,   30,   33,   34,    9,   11,   10,    3,   64,   75,
411         3,   69,   65,   65,   65,    3,   65,   46,   46,   77,
412        86,   77,   86,   65,   72,    3,   65,   65,   65,    3,
413        45,   45,   77,    3,   20,   20,   77,   21,   50,   32
414     } ;
415 
416 static yyconst flex_int16_t yy_accept[954] =
417     {   0,
418         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
419         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
420         1,    1,    1,    1,    1,    1,    1,    2,    4,    6,
421         8,   10,   13,   16,   18,   20,   22,   24,   26,   29,
422        32,   34,   36,   38,   40,   42,   44,   46,   47,   49,
423        51,   53,   55,   58,   60,   62,   64,   66,   67,   69,
424        71,   73,   75,   77,   79,   81,   83,   85,   87,   90,
425        93,   95,   98,  100,  102,  104,  106,  109,  112,  114,
426       117,  120,  123,  125,  128,  131,  134,  137,  139,  142,
427       145,  148,  151,  154,  157,  159,  161,  164,  166,  169,
428 
429       172,  172,  172,  172,  172,  173,  173,  173,  173,  173,
430       173,  173,  173,  174,  174,  174,  175,  175,  176,  176,
431       177,  177,  177,  177,  177,  177,  177,  177,  178,  178,
432       179,  180,  181,  182,  183,  183,  183,  184,  185,  186,
433       186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
434       186,  186,  186,  186,  186,  186,  187,  188,  189,  189,
435       190,  191,  191,  191,  191,  191,  191,  191,  191,  191,
436       192,  192,  193,  193,  194,  196,  197,  199,  200,  200,
437       201,  203,  203,  203,  203,  203,  204,  204,  204,  204,
438       204,  205,  206,  208,  209,  210,  210,  210,  210,  210,
439 
440       210,  210,  210,  211,  212,  213,  214,  215,  215,  215,
441       216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
442       216,  216,  216,  216,  216,  216,  217,  217,  217,  217,
443       217,  217,  217,  217,  217,  217,  218,  218,  218,  218,
444       219,  219,  219,  219,  219,  219,  219,  219,  219,  219,
445       219,  219,  219,  219,  219,  220,  220,  220,  220,  221,
446       222,  223,  224,  225,  226,  226,  226,  226,  226,  226,
447       226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
448       226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
449       226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
450 
451       226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
452       226,  227,  228,  229,  230,  230,  230,  230,  230,  230,
453       230,  230,  230,  230,  230,  231,  231,  231,  231,  232,
454       234,  234,  234,  234,  234,  234,  234,  234,  234,  236,
455       236,  236,  236,  236,  236,  236,  236,  236,  236,  236,
456       236,  237,  238,  238,  238,  238,  238,  239,  239,  239,
457       239,  239,  239,  239,  239,  240,  240,  240,  240,  240,
458       240,  240,  240,  241,  241,  241,  241,  242,  242,  242,
459       242,  242,  243,  244,  244,  244,  244,  244,  244,  244,
460       244,  244,  244,  244,  244,  244,  244,  244,  245,  246,
461 
462       246,  246,  246,  246,  246,  246,  246,  246,  246,  246,
463       247,  249,  249,  249,  249,  249,  249,  249,  249,  249,
464       250,  252,  252,  252,  252,  252,  252,  252,  252,  253,
465       255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
466       255,  255,  255,  255,  255,  256,  256,  256,  256,  256,
467       256,  256,  256,  256,  256,  256,  256,  256,  256,  256,
468       256,  256,  256,  256,  256,  256,  256,  256,  256,  257,
469       258,  258,  258,  258,  258,  259,  259,  259,  259,  259,
470       259,  259,  259,  259,  259,  260,  260,  260,  261,  261,
471       261,  261,  262,  262,  262,  262,  262,  262,  262,  262,
472 
473       262,  262,  262,  262,  263,  264,  264,  264,  264,  264,
474       264,  265,  265,  265,  265,  265,  265,  266,  266,  267,
475       267,  268,  268,  268,  268,  269,  269,  269,  269,  269,
476       269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
477       270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
478       270,  270,  270,  271,  273,  274,  274,  274,  274,  274,
479       274,  275,  275,  275,  275,  276,  276,  276,  276,  276,
480       276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
481       276,  276,  276,  276,  277,  278,  278,  278,  278,  278,
482       278,  278,  278,  279,  280,  280,  280,  280,  280,  280,
483 
484       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
485       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
486       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
487       281,  281,  282,  282,  283,  283,  283,  283,  283,  284,
488       285,  285,  285,  286,  286,  286,  286,  286,  286,  286,
489       286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
490       286,  286,  286,  286,  288,  290,  290,  290,  290,  290,
491       290,  290,  290,  290,  290,  290,  290,  291,  292,  292,
492       294,  295,  296,  296,  296,  296,  296,  296,  296,  296,
493       297,  298,  300,  301,  301,  301,  301,  301,  301,  301,
494 
495       302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
496       302,  302,  302,  302,  302,  302,  302,  303,  303,  303,
497       303,  303,  303,  303,  304,  304,  304,  305,  306,  306,
498       307,  308,  308,  308,  308,  308,  308,  308,  308,  308,
499       308,  308,  309,  309,  309,  310,  311,  311,  311,  311,
500       311,  311,  311,  311,  312,  312,  312,  312,  312,  313,
501       313,  314,  314,  314,  314,  314,  315,  316,  316,  318,
502       319,  320,  320,  320,  320,  321,  321,  321,  322,  323,
503       324,  325,  326,  327,  327,  328,  328,  328,  328,  328,
504       328,  328,  328,  329,  329,  329,  329,  329,  329,  330,
505 
506       330,  330,  330,  330,  330,  330,  330,  330,  330,  330,
507       330,  330,  330,  330,  330,  331,  331,  331,  331,  331,
508       331,  331,  331,  331,  331,  331,  331,  331,  331,  332,
509       332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
510       332,  332,  332,  332,  333,  333,  333,  333,  333,  333,
511       333,  333,  333,  334,  334,  334,  335,  335,  335,  335,
512       335,  336,  336,  337,  337,  338,  338,  338,  338,  338,
513       338,  338,  338,  338,  338,  338,  338,  339,  341,  342,
514       344,  344,  344,  344,  344,  344,  344,  344,  344,  344,
515       344,  345,  345,  345,  346,  347,  347,  347,  348,  348,
516 
517       348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
518       348,  348,  348,  348,  348,  349,  349,  349,  349,  349,
519       350,  351,  351,  351,  351,  351,  351,  351,  352,  354,
520       354,  354,  354,  354,  354,  354,  354,  355,  355,  355,
521       355,  356,  358,  358,  359,  359,  360,  360,  360,  360,
522       360,  361,  361
523     } ;
524 
525 static yyconst flex_int32_t yy_ec[256] =
526     {   0,
527         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
528         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
529         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
530         1,    4,    5,    6,    6,    7,    8,    6,    9,   10,
531        11,   12,   13,   14,   15,   16,   17,   18,   18,   18,
532        18,   18,   18,   18,   18,   18,   18,   19,   20,    6,
533         6,    6,   21,   22,   23,   23,   23,   23,   23,   23,
534        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
535        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
536        24,   25,   26,    6,    1,   27,   28,   29,   30,   31,
537 
538        32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
539        42,   43,   37,   44,   45,   46,   47,   48,   49,   50,
540        51,   37,   52,    1,   53,   54,    1,    1,    1,    1,
541         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
542         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
543         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
544         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
545         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
546         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
547         1,    1,    1,    1,    1,    1,   55,   55,    1,    1,
548 
549         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
550         1,    1,    1,    1,    1,   55,    1,    1,    1,    1,
551         1,    1,    1,    1,    1,    1,    1,    1,   56,   56,
552         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
553         1,    1,    1,    1,    1,    1,    1,   56,    1,    1,
554         1,    1,    1,    1,    1
555     } ;
556 
557 static yyconst flex_int32_t yy_meta[57] =
558     {   0,
559         1,    2,    3,    2,    4,    1,    5,    6,    7,    8,
560         8,    1,    1,    9,    1,   10,    1,    8,    8,    8,
561        11,   12,   13,    1,   14,    1,   15,   16,   16,   16,
562        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
563        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
564        16,   17,   18,   19,   20,   21
565     } ;
566 
567 static yyconst flex_int16_t yy_base[1045] =
568     {   0,
569         0,   56,  110,  111,  112,  113,  115,  117,  118,  119,
570      5108, 5107,  120,  121,  122,  123,  124,  126,  134,  136,
571       150,  159,  212,    0,  268,    0, 5131,  155,  323,  179,
572       179,  180,  171,  378,  181,  361,  410,  373,  187,  184,
573       462,  405,  465,  478,  515,  360,    0, 5134, 5105,    0,
574      5104, 5134, 5134, 5134,  167,    0, 5103, 5102, 5134, 5134,
575      5101, 5134, 5134, 5100, 5134, 5134, 5121,  470, 5134, 5134,
576      5134, 5134, 5098, 5134, 5119,  475, 5134, 5134,  315,  570,
577       624,  388,  472,  397,  322,  569,  675,  714,  758,  507,
578       324,  585,  463,  583,  589,  593,  809,  373,  860,  385,
579 
580       618,  612,  660,  667,  657,    0,  914,  688,  701,  940,
581       968, 5105, 5134,  704,  719, 5134,  571, 5134, 5113, 5134,
582       712, 1012,  784,  745,  779, 5086,  817, 5134,  596, 5134,
583      5134, 5134, 5134, 5134, 5072, 5069, 5134,  814, 5134,  462,
584       474,  853,  545,  860,  384,  688,  109,  491,  369,  645,
585       711,  134,  570,  401,  719, 5134, 5134,  801,  891, 5065,
586      5062,  987,  865,  901, 1018, 5001,  414, 1035,  796, 1043,
587       897, 1067,  838,    0,    0,    0,    0, 5134, 4956,    0,
588         0, 4934, 4931, 4900, 4879, 5134,    0, 4883,  619,  729,
589       766, 1114,  782,  823, 5134, 4840,  596, 4762, 4774, 4703,
590 
591       462, 4684,  837,  801, 1115,  913, 5134,  597, 4671,  939,
592      1059, 1130, 1010, 4649, 4621, 4594, 4587, 4535, 4487, 4485,
593      4447,    0, 1139, 4455, 4448, 1169, 1150, 1196, 1209, 1249,
594      4414, 4393, 4346,  128,  559,  990, 1304, 4323, 1230, 1311,
595      1189, 1314,  536,  170,  468,  509,  382,  694,  390,  565,
596       786,    0, 1143, 1335, 5134, 1326, 1241, 4290, 5134, 1003,
597      1062, 4298, 4297, 4296,  624,  467,  677,  753,  452,  696,
598       714,  803, 1102, 1372,  632,  808, 1128,  313,  813, 1428,
599       734,  914,  880,  784,  909, 1194, 1484,  178,  749,  601,
600       855, 1145,  926,  976,  989,  996, 1104, 1051, 1238, 1299,
601 
602       980, 1300,    0,    0, 1016,    0, 4299, 1539, 1564, 1532,
603      5134, 1571, 1580, 1590, 1596, 1599, 1623, 4298, 4282, 4268,
604      4267, 4266, 4265, 4305, 4297, 1070, 1308, 1540, 1673, 1606,
605      4261, 4256,    0,    0, 4270, 4254, 4265, 4243, 1678, 4242,
606         0, 4220, 1066,    0, 4229, 1685, 1698, 1333, 1702, 4191,
607      1269, 1634, 4183, 4167, 4190,    0, 5134, 1727, 1717,    0,
608      1736, 1743, 1781, 1345, 1751, 4148, 4139, 4141, 1761, 1806,
609      4122, 1796, 1211, 4150, 1192, 1814, 1822, 1776, 1824, 1846,
610       906, 1768, 1771, 1204, 1077,    0, 4113, 4147, 1682,    0,
611      1850, 4118,   87, 4072, 4045, 1853, 1711, 4044, 4039,  558,
612 
613      1234, 1129,  844, 1288, 1164, 1310, 1313, 1105, 1300, 5134,
614      4038, 1547, 1329, 1908, 1523, 1522, 1179, 1242, 1139, 5134,
615      4037, 1963, 1536, 1584, 1589, 1597,  867, 1032, 5134, 4035,
616      1528, 1601, 1694, 1669, 1608, 1661, 1719, 1195, 1592, 1662,
617      1727, 1225, 1367, 1856, 5134, 1864, 1856, 4053, 4050, 4024,
618      4048, 1878,    0, 1881, 1966, 2015, 1882, 1979, 2040, 1986,
619      2047, 2050, 4034, 1809, 4006, 4005, 4004, 4003, 2094, 1888,
620      2058, 2076, 4002, 4001, 5134, 4010, 4001, 4010, 4010, 3996,
621      3997,    0, 3986, 3950, 5134, 1879, 3913, 3912, 1973, 3883,
622      2004, 5134, 3887, 3882, 2084, 3917, 2104, 1951,    0, 1681,
623 
624      3916, 2119, 3901, 2010, 2022, 3868,    0, 3883, 2126, 2133,
625      5134, 2151, 3878, 3907, 1799, 3905, 3904, 2056, 1978, 1748,
626      1874, 2136, 2004, 2143, 3903,  963, 1797, 3902, 2161,    0,
627      1963, 3901, 3842, 3840, 3842, 3837, 3829, 2164, 2148, 5134,
628      2158, 1745, 1810, 1823, 1998, 1695, 2176, 1847, 1875, 2219,
629      1769, 1938, 2254, 2284,    0, 2035, 2049, 1979, 2069, 2334,
630      5134, 3871, 1797, 2052, 5134, 2096, 2063, 2109, 1824, 2072,
631      2386, 2148, 2091, 2054, 2151, 2152, 2092, 2150, 2153, 2160,
632      2442, 1957, 2204, 3864, 3863, 3840, 2337,    0, 2172, 3866,
633      2344, 3854, 2347, 2353, 2497, 2500, 2507, 2510, 2307, 3819,
634 
635      3819, 3818, 3817, 3812, 2525, 2534, 2541, 3811, 3810, 3813,
636      3818, 3813, 2545, 3776, 3790, 3814, 2595, 3802, 3808, 3802,
637      3758, 3751, 3769, 2598, 3764, 3748, 3787, 2605, 2614, 3775,
638      3783, 3782, 3743, 5134, 3748, 2623,    0, 3776, 2630, 3764,
639      2180, 3773, 3770, 2154, 2504, 2181, 2345, 3769, 2639, 3725,
640      3721, 3727, 3730, 3716, 2517, 2169, 2654, 2321, 2343, 2182,
641      2341, 3729, 2344,    0,    0, 2349, 3724, 2353, 2504, 3750,
642      2512, 2517, 2351, 2526, 2647, 2166, 5134, 2699,    0, 3727,
643      3726, 2657, 2484, 1852, 2519, 2509, 2524, 2750, 2664, 5134,
644      3732, 3721, 3720, 3705, 3732, 2669, 2676, 3717, 3722, 3721,
645 
646      2805, 3690, 3676, 3672, 3669, 3662, 2689, 3647, 3641, 3617,
647      3624, 2808, 3605, 3604, 2545, 3639, 3638, 2700, 3591, 3590,
648      3584, 2813, 3619, 3618, 2816, 3574, 5134, 2628, 3612, 3611,
649      2823, 2560, 2341, 1719, 2824, 3335, 3347, 3333, 2832, 2582,
650      2848, 5134, 3374, 2593, 5134, 3354, 2597, 2346, 2659, 2588,
651      2618, 2673, 2687, 3353, 2623, 2665, 2188, 2688, 5134, 2899,
652         0, 2676, 2818, 2801, 2820, 5134, 2946,    0, 3352, 3351,
653      2861, 3327, 2868, 3368, 3367, 2871, 3325, 5134, 5134, 5134,
654      5134, 5134, 5134, 3323, 5134, 3322, 2688, 2879, 3321, 3320,
655      2906, 3318, 2836, 2888, 2672, 2840, 3318, 2913, 5134, 2904,
656 
657      3359, 2641, 2831, 2693, 2845, 2837, 2873, 2865, 2996, 3308,
658      3357, 2189, 2900, 2689,    0, 3316, 2933, 3328, 3258, 3257,
659      3276, 3003, 2913, 3250, 3237, 3167, 2885, 3010, 3017, 2945,
660      2276, 1870, 2932,    0, 3030, 3166, 2169, 3160, 2908, 3055,
661      3111, 2903, 3134, 5134,    0, 2921, 2930, 2543, 3182, 3153,
662      3024, 3023, 5134, 3002, 3033, 3032, 3166, 2994, 2942,    0,
663      2891, 3168, 3015, 2953, 2957, 3170, 1323, 2998,    0, 3007,
664      2855, 2772, 2684, 2638, 2584, 2846, 5134, 2590, 5134, 2542,
665      2941, 3008, 3000, 2993,    0, 2471, 2473, 2402, 2370, 2277,
666      2275, 2107, 2099, 5134, 2024, 3172, 1971, 1969, 2819, 2030,
667 
668      1839, 3175, 1714, 1598, 1589, 1529, 3200, 3235, 3158, 3022,
669      1523, 1525, 1334, 1308, 1228, 3256, 1128, 1112, 1046,  999,
670      3259, 2278, 3262, 3258,  895,  817,  687, 5134,  679, 3162,
671      3294,  615,    0,    0, 3260,  485, 3261, 2894,  428, 3248,
672      5134,  308,  155, 5134, 2920, 5134, 3329,    0,   75,    0,
673         0, 5134, 3381, 3402, 3423, 3444, 3465, 3486, 3507, 3528,
674      3549, 3570, 3591, 3604, 3624, 3645, 3666, 3687, 3707, 3725,
675      3743, 3761, 3779, 3799, 3820, 3840, 3262, 3264, 3860, 3881,
676      3896, 3908, 3929, 3950, 3971, 3992, 4013, 3275, 4033, 4042,
677      4063, 4084, 4105, 4126, 4135, 4156, 4177, 4198, 4219, 4240,
678 
679      4261, 4281, 4301, 4322, 4343, 4364, 4385, 3340, 4406, 4427,
680      4448, 4469, 4490, 4511, 4532, 4553, 4574, 4595, 4616, 4637,
681      4658, 4679, 4700, 4721, 3342, 4742, 4763, 4784, 4805, 4826,
682      4847, 4868, 4889, 4910, 4931, 4952, 4973, 4994, 5015, 5036,
683      5057, 5078, 3176, 5099
684     } ;
685 
686 static yyconst flex_int16_t yy_def[1045] =
687     {   0,
688       952,  952,  953,  953,  954,  954,  955,  955,  956,  956,
689       957,  957,  958,  958,  959,  959,  960,  960,  961,  961,
690       962,  962,  952,   23,  952,   25,  952,  952,  952,   29,
691       952,  952,  963,  952,  952,  964,  952,  964,  952,  952,
692       952,  965,  965,  965,  952,   45,  966,  952,  966,  967,
693       967,  952,  952,  952,  952,  968,  968,  952,  952,  952,
694       952,  952,  952,  952,  952,  952,  963,  952,  952,  952,
695       952,  952,  952,  952,  963,  952,  952,  952,  952,  969,
696       969,  970,  963,  970,  952,  952,  971,  952,  971,  952,
697       952,  952,  972,  972,  952,  952,  973,   88,  973,  952,
698 
699       952,  952,  952,  952,  974,  975,  976,  974,  974,  952,
700       952,  110,  952,  952,  952,  952,  111,  952,  963,  952,
701       963,  963,  952,  952,  117,  952,  964,  952,  127,  952,
702       952,  952,  952,  952,  977,  978,  952,  952,  952,  978,
703       978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
704       978,  978,  978,  978,  978,  952,  952,  979,  127,  952,
705       952,  952,  952,  965,  965,  117,  117,  965,   45,  965,
706        45,  952,   45,  966,  966,  967,  967,  952,  952,  968,
707       968,  952,  952,  952,  952,  952,  980,  981,  982,  982,
708       970,   89,  970,   89,  952,  952,  952,  952,  952,  952,
709 
710       952,  952,   89,  972,   99,   99,  952,  952,  952,   99,
711       952,  983,  952,  952,  952,  952,  952,  952,  952,  952,
712       952,  984,  952,  952,  952,  976,  952,  985,  952,  952,
713       110,  110,  952,  952,  952,  230,  952,  952,  963,  952,
714       986,  963,  963,  963,  963,  963,  963,  963,  963,  963,
715       952,  987,  952,  952,  952,  952,  952,  952,  952,  952,
716       952,  988,  977,  988,  978,  978,  978,  978,  978,  978,
717       978,  978,  978,  952,  978,  978,  978,  978,  978,  952,
718       978,  978,  978,  978,  978,  978,  952,  978,  978,  978,
719       978,  978,  978,  978,  978,  978,  978,  978,  989,  989,
720 
721       990,  990,  991,  992,  952,  993,  952,  952,  994,  952,
722       952,  965,  965,  965,  989,  989,  952,  317,  952,  952,
723       952,  952,  952,  952,  981,  995,  982,  982,  995,  970,
724       952,  952,  996,  997,  952,  952,  952,  952,  972,  952,
725       998,  952,  952,  999,  952,  983,  983,  952,  952,  952,
726       952,  952,  952,  952,  952, 1000,  952,  230,  952, 1001,
727       983, 1002,  985,  952, 1002,  952,  952,  952, 1003, 1003,
728       952,  963,  952, 1004,  963, 1005,  983, 1005,  963,  963,
729       963,  963,  963,  963,  963, 1006,  952,  952,  952, 1007,
730       952,  952,  952,  952,  952,  952,  952, 1008, 1008,  978,
731 
732       978,  978,  978,  978,  978,  978,  978,  978,  978,  952,
733      1008,  978,  978,  952,  978,  978,  978,  978,  978,  952,
734      1008,  978,  978,  978,  978,  978,  978,  978,  952, 1008,
735       978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
736       978,  978,  989,  989,  952,  989,  990,  952,  952,  952,
737       952,  952, 1009,  983,  965,  994,  952,  952,  952,  989,
738       989,  989,  317,  952,  952,  952,  952,  952,  995,  952,
739      1003, 1003,  952,  952,  952,  952,  952,  952,  952,  952,
740       952, 1010,  952,  952,  952,  983, 1011,  952,  983,  952,
741       952,  952,  952,  952,  952,  952,  952,  952, 1012,  952,
742 
743       952,  983, 1013, 1002, 1002,  952, 1014,  952, 1003, 1003,
744       952, 1003,  952, 1015,  963,  963,  963, 1005,  983, 1016,
745       963, 1005,  963,  963,  963,  963,  963,  952,  952, 1017,
746       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
747       952,  978,  978,  978,  978,  978,  978,  978,  978,  952,
748       978,  978,  414,  414,  414,  978,  978,  978,  978,  952,
749       952, 1018,  978,  978,  952,  978,  978,  978,  978,  978,
750       952,  978,  978,  978,  978,  978,  978,  978,  978,  978,
751       952,  978,  989,  952,  952,  952,  952, 1019,  952,  952,
752       983, 1020,  965,  965,  952,  952,  952,  989,  952,  952,
753 
754       952,  952,  952,  952, 1003, 1003, 1003,  952,  952,  952,
755       952,  952,  581,  952,  952,  952,  952, 1021,  952,  952,
756       952,  952,  952,  952,  952,  952,  952,  952,  952, 1022,
757       952,  952,  952,  952,  952, 1003, 1023,  963,  952,  952,
758      1024,  963,  963,  963,  963,  963,  952,  952,  952,  952,
759       952,  952,  952,  952,  952,  978,  978,  978,  978,  978,
760       978,  550,  978,  554,  554,  978,  550,  978,  978, 1018,
761       978,  978,  978,  978,  978,  978,  952,  571,  678, 1025,
762       978,  678,  978,  978,  978,  978,  978,  952,  978,  952,
763       613, 1025,  978,  952,  952,  952,  952, 1026,  952,  952,
764 
765       952,  952,  952,  952,  952,  952, 1003,  952,  952,  952,
766       952,  952,  952,  952,  952,  952,  952,  983,  952,  952,
767       952,  952,  952,  952,  983,  952,  952,  952,  963,  963,
768       983,  963,  963,  963,  952,  952,  952,  952,  952,  978,
769       952,  952, 1027,  978,  952,  978,  978,  978,  978,  978,
770       978,  978,  978,  978,  978,  978,  978,  978,  952, 1028,
771      1029,  978,  978,  978,  978,  952,  688,  767, 1025,  978,
772       767,  952,  952,  952,  952,  983,  952,  952,  952,  952,
773       952,  952,  952,  952,  952,  952,  983, 1030,  952,  952,
774       983,  952,  983, 1031,  963,  963,  952,  952,  952,  952,
775 
776      1027,  978,  978,  978,  978,  978,  978,  978, 1028, 1032,
777       952,  978,  978,  978, 1033,  952,  983,  952,  952,  952,
778       952, 1030,  952,  952,  952,  952,  963, 1031, 1030,  963,
779       963,  963,  952, 1034,  952,  952,  952,  952,  978,  952,
780       952,  978, 1032,  952,  678,  978,  978,  978,  952,  952,
781       952,  952,  952, 1030, 1035,  952, 1030,  952,  952, 1036,
782       963, 1031, 1030, 1037,  963, 1031,  963,  963, 1038,  952,
783       952,  952,  952,  952,  952,  978,  952, 1025,  952, 1025,
784       978,  978,  978,  978,  767,  952,  952,  952, 1039,  952,
785       952,  952,  952,  952,  952, 1040,  963,  963,  963,  963,
786 
787       952,  952,  952,  952,  952,  952,  952,  978,  978,  978,
788       952,  952,  952,  952,  952, 1030,  952,  952,  963,  963,
789      1030,  963,  963,  952,  952,  952,  952,  952, 1025,  978,
790       952,  952, 1041, 1042, 1030,  952, 1030,  963,  952,  978,
791       952, 1025,  952,  952,  978,  952,  978, 1043, 1043, 1044,
792      1044,    0,  952,  952,  952,  952,  952,  952,  952,  952,
793       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
794       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
795       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
796       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
797 
798       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
799       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
800       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
801       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
802       952,  952,  952,  952
803     } ;
804 
805 static yyconst flex_int16_t yy_nxt[5191] =
806     {   0,
807        28,   29,   30,   29,   31,   28,   32,   33,   28,   28,
808        28,   28,   34,   28,   34,   35,   28,   28,   28,   28,
809        31,   28,   36,   28,   37,   28,   28,   38,   38,   38,
810        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
811        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
812        38,   39,   40,   41,   36,   38,   28,   29,   30,   29,
813        42,   28,   32,   33,   43,   43,   43,   28,   34,   43,
814        34,   44,   28,   43,   43,   43,   42,   28,   45,   28,
815        37,   28,   43,   46,   46,   46,   46,   46,   46,   46,
816        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
817 
818        46,   46,   46,   46,   46,   46,   46,   39,   40,   41,
819        45,   46,   48,   48,   48,   48,   53,   54,   53,   54,
820        48,   48,   60,   60,   63,   63,   66,  950,   66,  534,
821       264,   67,  535,   67,   49,   49,   51,   51,   72,   55,
822        72,   55,   57,   57,   61,   61,   64,   64,   68,   72,
823        68,   72,   66,  285,   72,  264,   72,   75,   73,  367,
824        73,   66,   48,   48,   48,   48,   75,  351,  101,  294,
825        48,   48,  120,  120,   76,   69,   70,   69,   70,  102,
826       114,  115,  114,   76,  121,  116,  118,  116,  160,  160,
827       160,  178,  101,  101,  101,  122,  126,  101,  179,  264,
828 
829       101,   77,   78,  117,  102,  117,  431,  946,  102,  382,
830        77,   78,   79,   80,   81,   80,   82,   79,   79,   83,
831        84,   84,   84,   79,   79,   85,   79,   86,   79,   84,
832        84,   84,   82,   79,   87,   79,   88,   79,   84,   89,
833        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
834        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
835        89,   89,   89,   90,   91,   92,   87,   89,   79,   80,
836        81,   80,   93,   79,   79,   83,   79,   94,   94,   79,
837        79,   79,   79,   95,   79,   94,   94,   94,   96,   79,
838        97,   79,   98,   79,   79,   99,   99,   99,   99,   99,
839 
840        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
841        99,   99,   99,   99,   99,   99,   99,   99,   99,   90,
842       100,   92,   97,   99,  103,  104,  103,  105,  101,  398,
843       106,  107,  108,  108,  264,  101,  109,  101,  105,  102,
844       108,  108,  108,  105,  418,  110,  102,  111,  102,  108,
845       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
846       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
847       112,  112,  112,  112,  101,  172,  113,  110,  112,  123,
848       123,  123,  173,  127,  120,  102,  101,  128,  158,  207,
849       264,  101,  120,  124,  116,  159,  288,  102,  101,  128,
850 
851       289,  101,  125,  952,  208,  264,  163,  163,  163,  102,
852       101,  116,  117,  209,  173,  127,  130,  131,  165,  132,
853       133,  102,  264,  385,  952,  283,  134,  159,  383,  166,
854       311,  135,  136,  137,  138,  139,  296,  140,  141,  142,
855       143,  144,  145,  146,  147,  148,  136,  136,  149,  136,
856       150,  151,  136,  152,  153,  154,  136,  155,  136,  146,
857       136,  156,  157,  161,  161,  161,  163,  163,  163,  116,
858       120,  952,  799,  264,  120,  101,  101,  131,  165,  163,
859       163,  163,  131,  264,  116,  121,  162,  117,  264,  167,
860       265,  165,  266,  168,  178,  264,  122,  404,  182,  178,
861 
862       334,  183,  166,  184,  337,  267,  185,  268,  160,  160,
863       160,  120,  264,  383,  401,  113,  163,  163,  163,  164,
864       101,  156,  157,  164,  164,  164,  156,  157,  165,  351,
865       164,  286,  164,  164,  164,  164,  287,  169,  120,  167,
866       384,  170,  171,  171,  171,  171,  171,  171,  171,  171,
867       171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
868       171,  171,  171,  171,  171,  171,  264,  120,  382,  169,
869       171,  103,  104,  103,  186,  116,  276,  187,  188,  264,
870       277,  116,  101,  101,  126,  186,  161,  161,  161,  952,
871       186,  264,  189,  117,  111,  116,  101,  352,  101,  116,
872 
873       952,  368,  101,  952,  126,  542,  101,  102,  287,  162,
874       382,  261,  295,  117,  219,  220,  952,  117,  159,  211,
875       211,  211,  264,  113,  189,  114,  115,  114,  186,  332,
876       340,  187,  188,  212,  326,  333,  341,  101,  113,  186,
877       214,  327,  213,  215,  186,  264,  189,  216,  111,  433,
878       159,  217,  218,  264,  943,  219,  220,  221,  223,  223,
879       223,  103,  104,  103,  186,  400,  264,  222,  114,  115,
880       114,  186,  413,  327,  222,  186,  290,  113,  189,  191,
881       186,  224,  186,  191,  191,  191,  291,  186,  101,  223,
882       223,  223,  191,  191,  191,  191,  120,  192,  264,  102,
883 
884       398,  193,  227,  227,  227,  114,  115,  114,  186,  264,
885       402,  222,  224,  239,  240,  239,  228,  264,  278,  186,
886       237,  237,  237,  186,  186,  229,  222,  241,  284,  192,
887       195,  799,  264,  382,  186,  264,  242,  405,  138,  186,
888       264,  406,  196,  238,  329,  197,  254,  254,  254,  198,
889       297,  327,  199,  292,  200,  264,  293,  255,  201,  255,
890       124,  202,  191,  298,  422,  423,  191,  191,  191,  256,
891       264,  101,  952,  158,  264,  191,  191,  191,  191,  952,
892       203,  432,  102,  327,  193,  251,  251,  251,  952,  952,
893       952,  252,  257,  386,  257,  952,  403,  257,  257,  124,
894 
895       313,  124,  299,  300,  299,  264,  952,  952,  253,  164,
896       387,  313,  203,  204,  952,  423,  313,  258,  204,  204,
897       307,  260,  101,  301,  264,  952,  204,  204,  204,  264,
898       952,  205,  260,  102,  264,  128,  952,  260,  261,  127,
899       414,  952,  214,  128,  407,  215,  415,  952,  939,  216,
900       952,  164,  952,  217,  218,  301,  419,  219,  220,  221,
901       173,  952,  307,  205,  204,  264,  163,  163,  163,  204,
902       204,  127,  306,  101,  264,  158,  264,  204,  204,  204,
903       269,  264,  210,  270,  102,  545,  128,  271,  264,  307,
904       278,  272,  173,  279,  273,  952,  274,  275,  434,  280,
905 
906       281,  264,  163,  163,  163,  568,  952,  952,  120,  282,
907       164,  952,  314,  159,  210,  223,  223,  223,  108,  173,
908       425,  307,  107,  108,  108,  307,  952,  108,  261,  108,
909       264,  108,  108,  108,  108,  264,  523,  952,  224,  799,
910       108,  223,  223,  223,  108,  159,  426,  264,  108,  108,
911       108,  173,  952,  108,  952,  230,  424,  108,  108,  108,
912       108,  437,  231,  952,  224,  120,  108,  232,  232,  232,
913       232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
914       232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
915       232,  369,  370,  369,  231,  232,  214,  264,  645,  215,
916 
917       233,  937,  301,  216,  396,  397,  396,  217,  218,  438,
918       264,  234,  235,  221,  120,  214,  439,  264,  215,  308,
919       308,  308,  216,  349,  952,  349,  217,  218,  349,  349,
920       219,  305,  221,  309,  301,  440,  163,  163,  163,  350,
921       243,  952,  310,  244,  163,  163,  163,  245,  937,  952,
922       312,  246,  247,  264,  352,  248,  249,  250,  450,  307,
923       343,  343,  343,  299,  300,  299,  344,  307,  315,  316,
924       315,  164,  264,  482,  212,  164,  164,  164,  569,  120,
925       164,  212,  164,  213,  164,  164,  164,  164,  442,  317,
926       483,  307,  189,  164,  318,  318,  318,  318,  318,  318,
927 
928       318,  318,  318,  318,  318,  318,  318,  318,  318,  318,
929       318,  318,  318,  318,  318,  318,  318,  318,  330,  339,
930       527,  317,  318,  264,  189,  264,  264,  952,  952,  260,
931       260,  346,  346,  346,  330,  260,  192,  205,  952,  952,
932       223,  223,  223,  351,  408,  347,  356,  441,  409,  264,
933       264,  359,  359,  359,  348,  550,  257,  360,  257,  936,
934       264,  257,  257,  224,  544,  212,  264,  416,  192,  205,
935       223,  223,  223,  108,  229,  417,  435,  108,  108,  108,
936       559,  258,  108,  436,  108,  264,  108,  108,  108,  108,
937       376,  377,  376,  224,  120,  108,  345,  361,  361,  361,
938 
939       264,  345,  345,  345,  378,  517,  120,  345,  345,  547,
940       345,  363,  345,  379,  558,  264,  264,  345,  482,  345,
941       364,  345,  349,  427,  349,  357,  212,  349,  349,  578,
942       935,  372,  373,  372,  526,  483,  428,  374,  350,  443,
943       444,  443,  251,  251,  251,  241,  264,  345,  345,  345,
944       223,  223,  223,  108,  242,  264,  124,  108,  108,  108,
945       582,  543,  108,  264,  108,  253,  108,  108,  108,  108,
946       491,  110,  491,  224,  414,  108,  112,  112,  112,  112,
947       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
948       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
949 
950       446,  300,  446,  110,  112,  237,  237,  237,  186,  264,
951       935,  222,  343,  343,  343,  158,  120,  546,  344,  186,
952       492,  264,  301,  952,  186,  120,  212,  380,  238,  380,
953       327,  264,  380,  380,  264,  213,  389,  389,  389,  391,
954       551,  391,  390,  381,  391,  391,  489,  255,  489,  255,
955       264,  489,  489,  548,  301,  392,  552,  549,  489,  256,
956       489,  357,  327,  489,  489,  934,  899,  393,  443,  444,
957       443,  394,  410,  410,  410,  410,  410,  410,  410,  410,
958       410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
959       410,  410,  410,  411,  136,  410,  410,  410,  410,  136,
960 
961       136,  412,  136,  136,  136,  136,  136,  136,  136,  136,
962       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
963       136,  136,  136,  410,  410,  410,  410,  410,  420,  420,
964       420,  420,  420,  420,  420,  420,  420,  420,  420,  420,
965       420,  420,  420,  420,  420,  420,  420,  420,  420,  421,
966       136,  420,  420,  420,  420,  136,  136,  136,  136,  136,
967       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
968       136,  136,  136,  136,  136,  136,  136,  136,  136,  420,
969       420,  420,  420,  420,  429,  429,  429,  429,  429,  429,
970       429,  429,  429,  429,  429,  429,  429,  429,  429,  429,
971 
972       429,  429,  429,  429,  429,  430,  136,  429,  429,  429,
973       429,  136,  136,  136,  136,  136,  136,  136,  136,  136,
974       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
975       136,  136,  136,  136,  136,  429,  429,  429,  429,  429,
976       452,  452,  452,  264,  264,  349,  453,  349,  311,  264,
977       349,  349,  556,  557,  212,  470,  933,  264,  932,  570,
978       927,  350,  327,  310,  345,  454,  454,  454,  264,  345,
979       345,  345,  163,  163,  163,  345,  345,  952,  345,  456,
980       345,  458,  459,  458,  566,  345,  952,  345,  457,  345,
981       550,  315,  316,  315,  327,  307,  952,  460,  461,  460,
982 
983       462,  316,  462,  306,  307,  264,  306,  396,  397,  396,
984       264,  567,  952,  264,  307,  345,  345,  345,  264,  952,
985       307,  579,  264,  307,  163,  163,  163,  164,  926,  264,
986       952,  164,  164,  164,  550,  491,  164,  491,  164,  550,
987       164,  164,  164,  164,  925,  317,  571,  307,  575,  164,
988       463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
989       463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
990       463,  463,  463,  463,  471,  472,  471,  317,  463,  396,
991       397,  396,  264,  264,  952,  492,  486,  486,  486,  530,
992       264,  952,  487,  580,  255,  189,  255,  357,  488,  346,
993 
994       346,  346,  952,  343,  343,  343,  531,  576,  574,  348,
995       350,  488,  541,  347,  541,  264,  264,  212,  223,  223,
996       223,  120,  348,  572,  499,  573,  213,  189,  497,  497,
997       497,  105,  212,  540,  106,  107,  659,  502,  502,  502,
998       264,  500,  105,  503,  223,  223,  223,  105,  264,  488,
999       120,  498,  369,  370,  369,  581,  504,  796,  577,  799,
1000       364,  643,  509,  510,  509,  540,  264,  224,  356,  524,
1001       120,  524,  524,  120,  524,  224,  550,  376,  377,  376,
1002       113,  345,  361,  361,  361,  224,  345,  345,  345,  521,
1003       264,  378,  345,  345,  505,  345,  363,  345,  120,  120,
1004 
1005       379,  120,  345,  514,  345,  364,  345,  512,  370,  512,
1006       599,  241,  599,  356,  662,  518,  519,  518,  264,  525,
1007       515,  520,  525,  486,  486,  486,  120,  521,  381,  487,
1008       224,  264,  345,  345,  345,  488,  646,  522,  379,  522,
1009       671,  924,  522,  522,  264,  264,  348,  372,  373,  372,
1010       656,  389,  389,  389,  538,  539,  538,  583,  300,  583,
1011       600,  241,  255,  657,  255,  583,  444,  583,  264,  675,
1012       242,  261,  120,  264,  256,  540,  120,  660,  301,  163,
1013       163,  163,  591,  591,  591,  588,  618,  517,  592,  471,
1014       472,  471,  488,  212,  488,  489,  264,  489,  311,  763,
1015 
1016       489,  489,  589,  952,  868,  457,  661,  540,  553,  553,
1017       301,  553,  553,  553,  553,  553,  553,  553,  553,  553,
1018       553,  553,  553,  553,  553,  553,  553,  553,  553,  554,
1019       555,  553,  553,  553,  553,  555,  555,  555,  555,  555,
1020       555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
1021       555,  555,  555,  555,  555,  555,  555,  555,  555,  264,
1022       553,  553,  553,  553,  560,  561,  560,  163,  163,  163,
1023       562,  921,  952,  921,  486,  486,  486,  663,  264,  593,
1024       595,  596,  595,  233,  264,  618,  306,  460,  461,  460,
1025       307,  488,  392,  306,  625,  626,  563,  348,  564,  550,
1026 
1027       264,  540,  952,  307,  393,  491,  120,  491,  394,  668,
1028       307,  223,  223,  223,  565,  345,  454,  454,  454,  264,
1029       345,  345,  345,  223,  223,  223,  345,  345,  594,  345,
1030       456,  345,  120,  540,  224,  504,  345,  853,  345,  457,
1031       345,  597,  163,  597,  658,  644,  224,  306,  598,  316,
1032       598,  598,  461,  598,  306,  492,  264,  306,  640,  605,
1033       606,  605,  540,  641,  307,  952,  345,  345,  345,  521,
1034       264,  307,  923,  264,  307,  264,  666,  607,  472,  607,
1035       119,  685,  952,  952,  264,  497,  497,  497,  186,  667,
1036       264,  222,  672,  264,  540,  497,  497,  497,  186,  186,
1037 
1038       952,  187,  188,  673,  186,  497,  497,  497,  186,  186,
1039       676,  222,  264,  264,  186,  669,  189,  264,  498,  186,
1040       629,  629,  629,  687,  186,  572,  630,  509,  510,  509,
1041       264,  684,  488,  356,  636,  370,  636,  518,  519,  518,
1042       356,  918,  917,  224,  524,  120,  524,  113,  189,  655,
1043       224,  655,  636,  510,  636,  674,  120,  224,  356,  541,
1044       379,  541,  251,  251,  251,  538,  539,  538,  252,  264,
1045       540,  264,  264,  264,  264,  224,  124,  123,  123,  123,
1046       540,  264,  120,  120,  689,  253,  540,  264,  311,  683,
1047       264,  124,  686,  730,  525,  688,  547,  264,  740,  732,
1048 
1049       253,  350,  540,  264,  547,  583,  444,  583,  734,  264,
1050       264,  873,  540,  748,  874,  808,  846,  760,  540,  410,
1051       410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
1052       410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
1053       411,  136,  410,  410,  410,  410,  136,  136,  136,  136,
1054       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
1055       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
1056       410,  410,  410,  410,  410,  553,  553,  916,  120,  916,
1057       120,  553,  553,  553,  553,  553,  553,  553,  553,  553,
1058       553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
1059 
1060       553,  553,  553,  553,  553,  664,  665,  867,  599,  938,
1061       599,  665,  665,  665,  665,  665,  665,  665,  665,  665,
1062       665,  665,  665,  665,  665,  665,  665,  665,  665,  665,
1063       665,  665,  665,  665,  665,  560,  561,  560,  163,  163,
1064       163,  562,  264,  120,  306,  697,  697,  697,  163,  163,
1065       163,  698,  386,  952,  163,  163,  163,  488,  600,  952,
1066       124,  307,  264,  746,  264,  264,  593,  264,  307,  387,
1067       264,  307,  264,  747,  264,  550,  749,  307,  550,  752,
1068       795,  757,  750,  915,  550,  565,  677,  678,  679,  678,
1069       677,  677,  677,  677,  677,  677,  677,  677,  677,  677,
1070 
1071       677,  677,  677,  677,  677,  677,  677,  680,  681,  677,
1072       682,  677,  677,  681,  681,  681,  681,  681,  681,  681,
1073       681,  681,  681,  681,  681,  681,  681,  681,  681,  681,
1074       681,  681,  681,  681,  681,  681,  681,  677,  677,  677,
1075       677,  677,  690,  690,  913,  690,  690,  690,  690,  690,
1076       690,  690,  690,  691,  690,  690,  690,  690,  690,  690,
1077       690,  690,  690,  692,  693,  690,  690,  690,  690,  693,
1078       693,  693,  693,  693,  693,  693,  693,  693,  693,  693,
1079       693,  693,  693,  693,  693,  693,  693,  693,  693,  693,
1080       693,  693,  693,  690,  690,  690,  690,  690,  595,  596,
1081 
1082       595,  701,  163,  701,  306,  264,  120,  306,  597,  163,
1083       597,  598,  461,  598,  306,  912,  911,  306,  655,  540,
1084       655,  307,  540,  762,  307,  264,  605,  606,  605,  540,
1085       264,  307,  952,  264,  307,  707,  472,  707,  264,  540,
1086       264,  952,  707,  606,  707,  264,  754,  264,  952,  952,
1087       733,  540,  482,  755,  540,  765,  758,  764,  952,  756,
1088       212,  540,  120,  398,  264,  952,  690,  690,  547,  483,
1089       884,  540,  690,  690,  690,  690,  690,  690,  690,  690,
1090       690,  690,  690,  690,  690,  690,  690,  690,  690,  690,
1091       690,  690,  690,  690,  690,  690,  343,  343,  343,  223,
1092 
1093       223,  223,  344,  264,  794,  356,  359,  359,  359,  264,
1094       212,  398,  360,  550,  264,  223,  223,  223,  264,  213,
1095       212,  356,  224,  906,  636,  510,  636,  485,  550,  229,
1096       356,  343,  343,  343,  803,  482,  802,  344,  224,  264,
1097       389,  389,  389,  212,  264,  212,  390,  224,  759,  804,
1098       759,  255,  483,  255,  213,  741,  742,  741,  677,  952,
1099       677,  743,  264,  256,  677,  161,  161,  161,  264,  806,
1100       452,  452,  452,  905,  120,  264,  453,  163,  163,  163,
1101       264,  677,  839,  306,  212,  264,  264,  744,  772,  485,
1102       707,  606,  707,  310,  264,  618,  952,  264,  759,  550,
1103 
1104       307,  486,  486,  486,  550,  745,  761,  487,  264,  264,
1105       264,  807,  952,  952,  264,  812,  831,  113,  805,  675,
1106       677,  677,  904,  848,  348,  550,  677,  677,  677,  677,
1107       677,  677,  677,  677,  677,  677,  677,  677,  677,  677,
1108       677,  677,  677,  677,  677,  677,  677,  677,  677,  677,
1109       766,  767,  768,  767,  766,  766,  766,  766,  766,  766,
1110       766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
1111       766,  769,  770,  766,  771,  766,  766,  770,  770,  770,
1112       770,  770,  770,  770,  770,  770,  770,  770,  770,  770,
1113       770,  770,  770,  770,  770,  770,  770,  770,  770,  770,
1114 
1115       770,  766,  766,  766,  766,  766,  701,  163,  701,  161,
1116       161,  161,  306,  903,  223,  223,  223,  502,  502,  502,
1117       499,  120,  264,  503,  486,  486,  486,  540,  212,  307,
1118       487,  530,  772,  798,  798,  798,  255,  500,  255,  264,
1119       364,  264,  120,  618,  799,  814,  799,  348,  531,  741,
1120       742,  741,  264,  813,  922,  743,  800,  902,  264,  540,
1121       952,  113,  766,  952,  766,  550,  264,  264,  766,  163,
1122       163,  163,  591,  591,  591,  588,  550,  550,  592,  840,
1123       822,  822,  822,  212,  832,  766,  264,  120,  907,  828,
1124       829,  828,  589,  120,  264,  457,  120,  842,  861,  745,
1125 
1126       810,  810,  810,  823,  810,  810,  810,  629,  629,  629,
1127       810,  810,  830,  630,  833,  833,  833,  835,  841,  835,
1128       834,  264,  835,  835,  264,  799,  857,  799,  857,  264,
1129       224,  857,  857,  836,  697,  697,  697,  800,  382,  869,
1130       698,  264,  264,  847,  799,  837,  799,  120,  881,  838,
1131       810,  264,  810,  815,  876,  120,  870,  307,  866,  120,
1132       866,  882,  264,  866,  866,  947,  898,  766,  766,  893,
1133       861,  883,  908,  766,  766,  766,  766,  766,  766,  766,
1134       766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
1135       766,  766,  766,  766,  766,  766,  766,  810,  810,  810,
1136 
1137       120,  810,  810,  810,  854,  854,  854,  810,  810,  889,
1138       855,  862,  863,  862,  264,  856,  856,  864,  854,  854,
1139       854,  264,  889,  865,  855,  900,  952,  823,  856,  264,
1140       856,  833,  833,  833,  830,  910,  836,  892,  414,  952,
1141       909,  823,  799,  264,  799,  853,  891,  810,  837,  810,
1142       888,  887,  838,  931,  800,  877,  877,  877,  877,  877,
1143       877,  877,  877,  877,  877,  877,  877,  877,  877,  877,
1144       877,  877,  877,  877,  877,  877,  878,  136,  877,  877,
1145       877,  877,  136,  136,  136,  136,  136,  136,  136,  136,
1146       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
1147 
1148       136,  136,  136,  136,  136,  136,  877,  877,  877,  877,
1149       877,  879,  879,  879,  879,  879,  879,  879,  879,  879,
1150       879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
1151       879,  879,  880,  136,  879,  879,  879,  879,  136,  136,
1152       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
1153       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
1154       136,  136,  879,  879,  879,  879,  879,  854,  854,  854,
1155       895,  862,  863,  862,  120,  896,  833,  833,  833,  264,
1156       886,  865,  834,  264,  885,  920,  844,  799,  949,  799,
1157       823,  949,  119,  940,  830,  875,  872,  930,  860,  800,
1158 
1159       928,  928,  928,  928,  928,  928,  928,  928,  928,  928,
1160       928,  928,  928,  928,  928,  928,  928,  928,  928,  928,
1161       928,  929,  136,  928,  928,  928,  928,  136,  136,  136,
1162       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
1163       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
1164       136,  928,  928,  928,  928,  928,  264,  854,  854,  854,
1165       854,  854,  854,  855,  120,  869,  855,  889,  889,  264,
1166       799,  859,  799,  263,  263,  136,  136,  263,  550,  136,
1167       823,  858,  870,  823,  952,  952,  399,  399,  945,  853,
1168       399,  852,  851,  382,  941,  941,  941,  941,  941,  941,
1169 
1170       941,  941,  941,  941,  941,  941,  941,  941,  941,  941,
1171       941,  941,  941,  941,  941,  942,  136,  941,  941,  941,
1172       941,  136,  136,  136,  136,  136,  136,  136,  136,  136,
1173       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
1174       136,  136,  136,  136,  136,  941,  941,  941,  941,  941,
1175       264,  399,  399,  399,  399,  399,  850,  399,  450,  845,
1176       844,  742,  255,  826,  825,  824,  820,  819,  818,  817,
1177       817,  816,  264,  398,  264,  264,  742,  255,  797,  255,
1178       948,   47,   47,   47,   47,   47,   47,   47,   47,   47,
1179        47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
1180 
1181        47,   47,   50,   50,   50,   50,   50,   50,   50,   50,
1182        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1183        50,   50,   50,   52,   52,   52,   52,   52,   52,   52,
1184        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
1185        52,   52,   52,   52,   56,   56,   56,   56,   56,   56,
1186        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
1187        56,   56,   56,   56,   56,   48,   48,   48,   48,   48,
1188        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
1189        48,   48,   48,   48,   48,   48,   59,   59,   59,   59,
1190        59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
1191 
1192        59,   59,   59,   59,   59,   59,   59,   62,   62,   62,
1193        62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
1194        62,   62,   62,   62,   62,   62,   62,   62,   65,   65,
1195        65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
1196        65,   65,   65,   65,   65,   65,   65,   65,   65,   71,
1197        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
1198        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
1199        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
1200        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
1201        74,  119,  119,  119,  119,  119,  119,  119,  119,  119,
1202 
1203       119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
1204       119,  119,  129,  793,  793,  792,  129,  129,  129,  129,
1205       791,  791,  790,  129,  129,  164,  164,  164,  164,  789,
1206       164,  164,  164,  164,  164,  788,  164,  164,  164,  164,
1207       787,  787,  786,  164,  164,  174,  174,  785,  174,  174,
1208       174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
1209       174,  174,  784,  174,  174,  174,  176,  176,  760,  176,
1210       176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
1211       176,  176,  176,  783,  176,  176,  176,  180,  180,  782,
1212       180,  180,  180,  180,  180,  180,  180,  180,  180,  180,
1213 
1214       180,  180,  180,  180,  781,  180,  180,  180,  190,  190,
1215       190,  780,  190,  190,  779,  190,  190,  190,  778,  190,
1216       190,  777,  190,  776,  776,  190,  190,  190,  191,  191,
1217       775,  191,  191,  191,  773,  191,  113,  191,  191,  191,
1218       191,  264,  398,  690,  191,  191,  194,  264,  398,  194,
1219       194,  194,  561,  194,  753,  194,  194,  194,  194,  751,
1220       739,  738,  194,  194,  204,  204,  737,  736,  204,  204,
1221       255,  735,  731,  204,  204,  731,  204,  485,  728,  113,
1222       204,  204,  206,  726,  725,  725,  206,  206,  724,  722,
1223       368,  206,  206,  206,  206,  367,  721,  720,  206,  206,
1224 
1225       108,  108,  108,  719,  718,  108,  108,  108,  108,  108,
1226       718,  108,  108,  108,  108,  717,  715,  714,  108,  108,
1227       225,  225,  713,  225,  225,  225,  225,  225,  225,  225,
1228       225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
1229       225,  226,  226,  226,  712,  711,  226,  226,  226,  226,
1230       226,  710,  226,  226,  226,  226,  709,  708,  706,  226,
1231       226,  302,  302,  705,  704,  703,  702,  700,  696,  694,
1232       304,  303,  302,  561,  654,  302,  653,  652,  651,  302,
1233       302,  324,  324,  650,  324,  324,  324,  324,  324,  324,
1234       324,  324,  324,  324,  324,  324,  324,  324,  324,  324,
1235 
1236       324,  324,  325,  649,  647,  120,  120,  639,  325,  120,
1237       637,  325,  635,  633,  632,  325,  325,  328,  628,  624,
1238       328,  623,  622,  328,  621,  485,  620,  328,  328,  345,
1239       345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
1240       345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
1241       355,  355,  617,  355,  355,  355,  355,  355,  355,  355,
1242       355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
1243       355,  362,  362,  362,  362,  362,  362,  362,  362,  362,
1244       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
1245       362,  362,  375,  375,  375,  375,  375,  375,  375,  375,
1246 
1247       375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
1248       375,  375,  375,  388,  388,  350,  388,  388,  388,  388,
1249       388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
1250       388,  388,  388,  388,  445,  445,  615,  614,  613,  612,
1251       611,  610,  609,  608,  604,  603,  602,  601,  445,  314,
1252       587,  586,  585,  445,  447,  584,  398,  447,  398,  398,
1253       398,  447,  447,  448,  448,  398,  448,  448,  448,  448,
1254       448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
1255       448,  448,  448,  448,  449,  449,  537,  449,  449,  449,
1256       449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
1257 
1258       449,  449,  449,  449,  449,  451,  451,  536,  451,  451,
1259       451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
1260       451,  451,  451,  451,  451,  451,  455,  455,  455,  455,
1261       455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
1262       455,  455,  455,  455,  455,  455,  455,  190,  533,  529,
1263       190,  258,  120,  513,  190,  190,  475,  475,  475,  475,
1264       475,  475,  475,  475,  475,  475,  475,  475,  508,  475,
1265       475,  507,  475,  475,  475,  475,  475,  429,  429,  429,
1266       429,  429,  429,  429,  429,  429,  429,  429,  429,  506,
1267       429,  429,  495,  429,  429,  429,  429,  429,  420,  420,
1268 
1269       420,  420,  420,  420,  420,  420,  420,  420,  420,  420,
1270       494,  420,  420,  493,  420,  420,  420,  420,  420,  484,
1271       484,  490,  484,  484,  484,  484,  484,  484,  484,  484,
1272       484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
1273       496,  496,  485,  496,  496,  496,  496,  496,  496,  496,
1274       496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
1275       496,  501,  501,  481,  501,  501,  501,  501,  501,  501,
1276       501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
1277       501,  501,  108,  108,  108,  480,  479,  108,  108,  108,
1278       108,  108,  478,  108,  108,  108,  108,  477,  476,  474,
1279 
1280       108,  108,  511,  511,  473,  952,  511,  469,  468,  467,
1281       466,  465,  464,  172,  511,  311,  511,  398,  262,  398,
1282       395,  511,  516,  516,  516,  516,  516,  516,  516,  516,
1283       516,  516,  516,  516,  516,  516,  516,  516,  516,  516,
1284       516,  516,  516,  375,  375,  375,  375,  375,  375,  375,
1285       375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
1286       375,  375,  375,  375,  528,  528,  371,  528,  528,  528,
1287       528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
1288       528,  528,  528,  528,  528,  532,  532,  366,  532,  532,
1289       532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
1290 
1291       532,  532,  532,  532,  532,  532,  590,  590,  365,  590,
1292       590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
1293       590,  590,  590,  590,  590,  590,  590,  616,  616,  108,
1294       616,  616,  616,  616,  616,  616,  616,  616,  616,  616,
1295       616,  616,  616,  616,  616,  616,  616,  616,  619,  619,
1296       358,  619,  619,  619,  619,  619,  619,  619,  619,  619,
1297       619,  619,  619,  619,  619,  619,  619,  619,  619,  627,
1298       627,  357,  627,  627,  627,  627,  627,  627,  627,  627,
1299       627,  627,  627,  627,  627,  627,  627,  627,  627,  627,
1300       631,  631,  351,  631,  631,  631,  631,  631,  631,  631,
1301 
1302       631,  631,  631,  631,  631,  631,  631,  631,  631,  631,
1303       631,  634,  634,  634,  634,  634,  634,  634,  634,  634,
1304       634,  634,  634,  352,  634,  634,  351,  634,  634,  634,
1305       634,  634,  638,  638,  638,  638,  638,  638,  638,  638,
1306       638,  638,  638,  638,  638,  638,  638,  638,  638,  638,
1307       638,  638,  638,  642,  642,  642,  642,  642,  642,  642,
1308       642,  642,  642,  642,  642,  642,  642,  642,  642,  642,
1309       642,  642,  642,  642,  648,  648,  354,  648,  648,  648,
1310       648,  648,  648,  648,  648,  648,  648,  648,  648,  648,
1311       648,  648,  648,  648,  648,  670,  670,  670,  670,  670,
1312 
1313       670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
1314       670,  670,  670,  670,  670,  670,  695,  695,  353,  695,
1315       695,  695,  695,  695,  695,  695,  695,  695,  695,  695,
1316       695,  695,  695,  695,  695,  695,  695,  699,  699,  352,
1317       699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
1318       699,  699,  699,  699,  699,  699,  699,  699,  716,  716,
1319       351,  716,  716,  716,  716,  716,  716,  716,  716,  716,
1320       716,  716,  716,  716,  716,  716,  716,  716,  716,  723,
1321       723,  351,  723,  723,  723,  723,  723,  723,  723,  723,
1322       723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
1323 
1324       727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
1325       727,  727,  342,  727,  727,  338,  727,  727,  727,  727,
1326       727,  729,  729,  729,  729,  729,  729,  729,  729,  729,
1327       729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
1328       729,  729,  774,  774,  336,  774,  774,  774,  774,  774,
1329       774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
1330       774,  774,  774,  801,  801,  801,  801,  801,  801,  801,
1331       801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
1332       801,  801,  801,  801,  809,  809,  809,  809,  809,  809,
1333       809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
1334 
1335       809,  335,  809,  809,  809,  811,  811,  334,  811,  811,
1336       811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
1337       811,  811,  811,  811,  811,  811,  821,  821,  821,  821,
1338       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
1339       821,  821,  821,  821,  821,  821,  821,  827,  827,  827,
1340       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1341       827,  827,  827,  827,  827,  827,  827,  827,  843,  843,
1342       843,  843,  843,  331,  843,  843,  843,  843,  843,  843,
1343       843,  843,  843,  843,  843,  843,  843,  843,  843,  849,
1344       849,  188,  849,  849,  849,  849,  849,  849,  849,  849,
1345 
1346       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
1347       871,  871,  323,  871,  871,  871,  871,  871,  871,  871,
1348       871,  871,  871,  871,  871,  871,  871,  871,  871,  871,
1349       871,  890,  890,  322,  890,  890,  890,  890,  890,  890,
1350       890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
1351       890,  890,  894,  894,  894,  894,  894,  894,  894,  894,
1352       894,  894,  894,  894,  321,  894,  894,  320,  894,  894,
1353       894,  894,  894,  897,  897,  897,  897,  897,  897,  897,
1354       897,  897,  897,  897,  897,  897,  897,  897,  897,  897,
1355       897,  897,  897,  897,  901,  901,  319,  901,  901,  901,
1356 
1357       901,  901,  901,  901,  901,  901,  901,  901,  901,  901,
1358       901,  901,  901,  901,  901,  914,  914,  311,  914,  914,
1359       914,  914,  914,  914,  914,  914,  914,  914,  914,  914,
1360       914,  914,  914,  914,  914,  914,  919,  919,  919,  919,
1361       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
1362       919,  919,  919,  919,  919,  919,  919,  944,  944,  944,
1363       944,  944,  944,  944,  944,  944,  944,  944,  944,  304,
1364       944,  944,  303,  944,  944,  944,  944,  944,  941,  941,
1365       941,  941,  941,  941,  941,  941,  941,  941,  941,  941,
1366       264,  941,  941,  262,  941,  941,  941,  941,  941,  951,
1367 
1368       951,  259,  951,  951,  951,  951,  951,  951,  951,  951,
1369       951,  951,  951,  951,  951,  120,  951,  951,  951,  951,
1370       236,  120,  178,  120,  178,  178,  178,  181,  177,  175,
1371       952,   58,   58,   27,  952,  952,  952,  952,  952,  952,
1372       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
1373       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
1374       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
1375       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
1376       952,  952,  952,  952,  952,  952,  952,  952,  952,  952
1377     } ;
1378 
1379 static yyconst flex_int16_t yy_chk[5191] =
1380     {   0,
1381         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1382         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1383         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1384         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1385         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1386         1,    1,    1,    1,    1,    1,    2,    2,    2,    2,
1387         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1388         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1389         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1390         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1391 
1392         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1393         2,    2,    3,    4,    5,    6,    7,    7,    8,    8,
1394         9,   10,   13,   14,   15,   16,   17,  949,   18,  393,
1395       147,   17,  393,   18,    3,    4,    5,    6,   19,    7,
1396        20,    8,    9,   10,   13,   14,   15,   16,   17,   19,
1397        18,   20,   21,  147,   19,  152,   20,   21,   19,  234,
1398        20,   22,    3,    4,    5,    6,   22,  234,   28,  152,
1399         9,   10,  244,   33,   21,   17,   17,   18,   18,   28,
1400        30,   30,   30,   22,   33,   31,   32,   35,   39,   39,
1401        39,   55,   31,   32,   35,   33,   35,   40,   55,  288,
1402 
1403        39,   21,   21,   31,   32,   35,  288,  943,   40,  244,
1404        22,   22,   23,   23,   23,   23,   23,   23,   23,   23,
1405        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
1406        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
1407        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
1408        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
1409        23,   23,   23,   23,   23,   23,   23,   23,   25,   25,
1410        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
1411        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
1412        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
1413 
1414        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
1415        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
1416        25,   25,   25,   25,   29,   29,   29,   29,   79,  942,
1417        29,   29,   29,   29,  278,   85,   29,   91,   29,   79,
1418        29,   29,   29,   29,  278,   29,   85,   29,   91,   29,
1419        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
1420        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
1421        29,   29,   29,   29,   36,   46,   29,   29,   29,   34,
1422        34,   34,   46,   36,  247,   36,   38,   36,   38,   98,
1423       149,   34,  249,   34,   82,   38,  149,   38,  100,   38,
1424 
1425       149,   82,   34,   84,   98,  145,   42,   42,   42,  100,
1426        84,   42,   82,   98,   46,   36,   37,   37,   42,   37,
1427        37,   84,  154,  247,  167,  145,   37,   38,  249,   42,
1428       167,   37,   37,   37,   37,   37,  154,   37,   37,   37,
1429        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
1430        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
1431        37,   37,   37,   41,   41,   41,   43,   43,   43,   93,
1432       245,   43,  939,  269,   83,   41,   93,   68,   43,   44,
1433        44,   44,   76,  140,   44,   83,   41,   93,  266,   43,
1434       140,   44,  140,   44,   68,  141,   83,  269,   68,   76,
1435 
1436       201,   68,   44,   76,  201,  141,   76,  141,   90,   90,
1437        90,  246,  148,  245,  266,   41,   45,   45,   45,   45,
1438        90,   68,   68,   45,   45,   45,   76,   76,   45,  936,
1439        45,  148,   45,   45,   45,   45,  148,   45,  243,   45,
1440       246,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1441        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1442        45,   45,   45,   45,   45,   45,  143,  250,  243,   45,
1443        45,   80,   80,   80,   80,   86,  143,   80,   80,  400,
1444       143,  117,   86,   80,   86,   80,   92,   92,   92,   94,
1445        80,  153,   80,   86,   80,   95,   94,  235,   92,   96,
1446 
1447       129,  235,   95,  117,   95,  400,   96,   94,  153,   92,
1448       250,  129,  153,   95,  117,  117,  129,   96,  129,  101,
1449       101,  101,  290,   80,   80,   81,   81,   81,   81,  197,
1450       208,   81,   81,  101,  189,  197,  208,   81,   92,   81,
1451       102,  189,  101,  102,   81,  265,   81,  102,   81,  290,
1452       129,  102,  102,  275,  932,  102,  102,  102,  105,  105,
1453       105,  103,  103,  103,  103,  265,  150,  103,  104,  104,
1454       104,  104,  275,  189,  104,  103,  150,   81,   81,   87,
1455       103,  105,  104,   87,   87,   87,  150,  104,   87,  108,
1456       108,  108,   87,   87,   87,   87,  248,   87,  267,   87,
1457 
1458       929,   87,  109,  109,  109,  114,  114,  114,  114,  146,
1459       267,  114,  108,  121,  121,  121,  109,  270,  146,  114,
1460       115,  115,  115,  115,  114,  109,  115,  121,  146,   87,
1461        88,  927,  151,  248,  115,  271,  121,  270,   88,  115,
1462       155,  271,   88,  115,  190,   88,  124,  124,  124,   88,
1463       155,  190,   88,  151,   88,  281,  151,  124,   88,  124,
1464       124,   88,   89,  155,  281,  281,   89,   89,   89,  124,
1465       289,   89,  191,   89,  268,   89,   89,   89,   89,  191,
1466        89,  289,   89,  190,   89,  123,  123,  123,  193,  125,
1467       191,  123,  125,  251,  125,  193,  268,  125,  125,  123,
1468 
1469       169,  251,  158,  158,  158,  284,  193,  204,  123,  169,
1470       251,  169,   89,   97,  204,  284,  169,  125,   97,   97,
1471       169,  127,   97,  158,  272,  204,   97,   97,   97,  276,
1472       127,   97,  127,   97,  279,   97,  194,  127,  194,  127,
1473       276,  127,  138,  127,  272,  138,  276,  194,  926,  138,
1474       203,  173,  203,  138,  138,  158,  279,  138,  138,  138,
1475       173,  203,  173,   97,   99,  403,  163,  163,  163,   99,
1476        99,  127,  163,   99,  142,   99,  291,   99,   99,   99,
1477       142,  144,   99,  142,   99,  403,   99,  142,  427,  163,
1478       144,  142,  173,  144,  142,  159,  142,  142,  291,  144,
1479 
1480       144,  283,  164,  164,  164,  427,  159,  164,  381,  144,
1481       171,  159,  171,  159,   99,  107,  107,  107,  107,  171,
1482       283,  171,  107,  107,  107,  164,  206,  107,  206,  107,
1483       285,  107,  107,  107,  107,  282,  381,  206,  107,  925,
1484       107,  110,  110,  110,  110,  159,  285,  293,  110,  110,
1485       110,  171,  210,  110,  210,  110,  282,  110,  110,  110,
1486       110,  293,  110,  210,  110,  526,  110,  110,  110,  110,
1487       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
1488       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
1489       110,  236,  236,  236,  110,  110,  111,  294,  526,  111,
1490 
1491       111,  920,  301,  111,  260,  260,  260,  111,  111,  294,
1492       295,  111,  111,  111,  122,  162,  295,  296,  162,  165,
1493       165,  165,  162,  213,  165,  213,  162,  162,  213,  213,
1494       162,  162,  162,  165,  301,  296,  168,  168,  168,  213,
1495       122,  168,  165,  122,  170,  170,  170,  122,  919,  170,
1496       168,  122,  122,  428,  305,  122,  122,  122,  305,  168,
1497       211,  211,  211,  261,  261,  261,  211,  170,  172,  172,
1498       172,  172,  298,  343,  211,  172,  172,  172,  428,  385,
1499       172,  343,  172,  211,  172,  172,  172,  172,  298,  172,
1500       343,  172,  326,  172,  172,  172,  172,  172,  172,  172,
1501 
1502       172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
1503       172,  172,  172,  172,  172,  172,  172,  172,  192,  205,
1504       385,  172,  172,  273,  326,  297,  408,  192,  205,  192,
1505       205,  212,  212,  212,  192,  205,  192,  205,  192,  205,
1506       223,  223,  223,  918,  273,  212,  223,  297,  273,  277,
1507       402,  227,  227,  227,  212,  408,  253,  227,  253,  917,
1508       419,  253,  253,  223,  402,  227,  292,  277,  192,  205,
1509       226,  226,  226,  226,  227,  277,  292,  226,  226,  226,
1510       419,  253,  226,  292,  226,  405,  226,  226,  226,  226,
1511       241,  241,  241,  226,  375,  226,  228,  228,  228,  228,
1512 
1513       417,  228,  228,  228,  241,  375,  384,  228,  228,  405,
1514       228,  228,  228,  241,  417,  286,  438,  228,  373,  228,
1515       228,  228,  229,  286,  229,  229,  373,  229,  229,  438,
1516       915,  239,  239,  239,  384,  373,  286,  239,  229,  299,
1517       299,  299,  257,  257,  257,  239,  442,  228,  228,  228,
1518       230,  230,  230,  230,  239,  401,  257,  230,  230,  230,
1519       442,  401,  230,  418,  230,  257,  230,  230,  230,  230,
1520       351,  230,  351,  230,  418,  230,  230,  230,  230,  230,
1521       230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
1522       230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
1523 
1524       300,  300,  300,  230,  230,  237,  237,  237,  237,  404,
1525       914,  237,  240,  240,  240,  302,  242,  404,  240,  237,
1526       351,  409,  302,  327,  237,  867,  240,  242,  237,  242,
1527       327,  406,  242,  242,  407,  240,  254,  254,  254,  256,
1528       409,  256,  254,  242,  256,  256,  348,  254,  348,  254,
1529       413,  348,  348,  406,  302,  256,  413,  407,  364,  254,
1530       364,  364,  327,  364,  364,  913,  867,  256,  443,  443,
1531       443,  256,  274,  274,  274,  274,  274,  274,  274,  274,
1532       274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
1533       274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
1534 
1535       274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
1536       274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
1537       274,  274,  274,  274,  274,  274,  274,  274,  280,  280,
1538       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1539       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1540       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1541       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1542       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1543       280,  280,  280,  280,  287,  287,  287,  287,  287,  287,
1544       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
1545 
1546       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
1547       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
1548       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
1549       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
1550       308,  308,  308,  416,  415,  310,  308,  310,  310,  431,
1551       310,  310,  415,  416,  308,  328,  912,  423,  911,  431,
1552       906,  310,  328,  308,  309,  309,  309,  309,  412,  309,
1553       309,  309,  312,  312,  312,  309,  309,  312,  309,  309,
1554       309,  313,  313,  313,  423,  309,  313,  309,  309,  309,
1555       412,  314,  314,  314,  328,  312,  314,  315,  315,  315,
1556 
1557       316,  316,  316,  315,  313,  424,  316,  330,  330,  330,
1558       425,  424,  330,  439,  314,  309,  309,  309,  426,  330,
1559       315,  439,  432,  316,  317,  317,  317,  317,  905,  435,
1560       330,  317,  317,  317,  425,  352,  317,  352,  317,  426,
1561       317,  317,  317,  317,  904,  317,  432,  317,  435,  317,
1562       317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
1563       317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
1564       317,  317,  317,  317,  329,  329,  329,  317,  317,  339,
1565       339,  339,  436,  440,  339,  352,  346,  346,  346,  389,
1566       434,  339,  346,  440,  389,  329,  389,  500,  346,  347,
1567 
1568       347,  347,  339,  349,  349,  349,  389,  436,  434,  346,
1569       500,  347,  397,  347,  397,  433,  546,  349,  359,  359,
1570       359,  734,  347,  433,  359,  433,  349,  329,  358,  358,
1571       358,  358,  359,  397,  358,  358,  546,  361,  361,  361,
1572       437,  359,  358,  361,  362,  362,  362,  358,  441,  361,
1573       520,  358,  365,  365,  365,  441,  362,  734,  437,  903,
1574       361,  520,  369,  369,  369,  397,  542,  362,  369,  382,
1575       382,  382,  383,  383,  383,  365,  542,  378,  378,  378,
1576       358,  363,  363,  363,  363,  369,  363,  363,  363,  378,
1577       551,  378,  363,  363,  363,  363,  363,  363,  372,  527,
1578 
1579       378,  515,  363,  372,  363,  363,  363,  370,  370,  370,
1580       464,  372,  464,  370,  551,  376,  376,  376,  563,  382,
1581       372,  376,  383,  377,  377,  377,  379,  376,  515,  377,
1582       370,  543,  363,  363,  363,  377,  527,  379,  376,  379,
1583       563,  901,  379,  379,  544,  569,  377,  380,  380,  380,
1584       543,  391,  391,  391,  396,  396,  396,  444,  444,  444,
1585       464,  380,  391,  544,  391,  446,  446,  446,  548,  569,
1586       380,  447,  832,  684,  391,  396,  521,  548,  447,  452,
1587       452,  452,  454,  454,  454,  452,  486,  521,  454,  470,
1588       470,  470,  486,  452,  454,  457,  549,  457,  457,  684,
1589 
1590       457,  457,  452,  486,  832,  454,  549,  396,  414,  414,
1591       447,  414,  414,  414,  414,  414,  414,  414,  414,  414,
1592       414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
1593       414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
1594       414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
1595       414,  414,  414,  414,  414,  414,  414,  414,  414,  552,
1596       414,  414,  414,  414,  422,  422,  422,  455,  455,  455,
1597       422,  898,  455,  897,  489,  489,  489,  552,  582,  455,
1598       458,  458,  458,  498,  422,  519,  458,  460,  460,  460,
1599       455,  519,  531,  460,  498,  498,  422,  489,  422,  582,
1600 
1601       558,  458,  519,  458,  531,  491,  523,  491,  531,  558,
1602       460,  504,  504,  504,  422,  456,  456,  456,  456,  545,
1603       456,  456,  456,  505,  505,  505,  456,  456,  456,  456,
1604       456,  456,  900,  458,  504,  505,  456,  895,  456,  456,
1605       456,  459,  459,  459,  545,  523,  505,  459,  461,  461,
1606       461,  462,  462,  462,  461,  491,  556,  462,  518,  471,
1607       471,  471,  459,  518,  459,  471,  456,  456,  456,  518,
1608       557,  461,  900,  564,  462,  574,  556,  472,  472,  472,
1609       518,  574,  471,  472,  567,  495,  495,  495,  495,  557,
1610       559,  495,  564,  570,  459,  469,  469,  469,  469,  495,
1611 
1612       472,  469,  469,  567,  495,  497,  497,  497,  497,  469,
1613       570,  497,  573,  577,  469,  559,  469,  566,  469,  497,
1614       502,  502,  502,  577,  497,  566,  502,  509,  509,  509,
1615       568,  573,  502,  509,  510,  510,  510,  522,  522,  522,
1616       510,  893,  892,  502,  524,  524,  524,  469,  469,  539,
1617       509,  539,  512,  512,  512,  568,  644,  510,  512,  541,
1618       522,  541,  529,  529,  529,  538,  538,  538,  529,  572,
1619       539,  578,  575,  576,  579,  512,  529,  547,  547,  547,
1620       541,  580,  641,  646,  579,  529,  538,  676,  589,  572,
1621       656,  547,  575,  641,  524,  578,  576,  547,  656,  644,
1622 
1623       547,  589,  539,  660,  580,  583,  583,  583,  646,  757,
1624       812,  837,  541,  660,  837,  757,  812,  676,  538,  550,
1625       550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
1626       550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
1627       550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
1628       550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
1629       550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
1630       550,  550,  550,  550,  550,  553,  553,  891,  831,  890,
1631       922,  553,  553,  553,  553,  553,  553,  553,  553,  553,
1632       553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
1633 
1634       553,  553,  553,  553,  553,  554,  554,  831,  599,  922,
1635       599,  554,  554,  554,  554,  554,  554,  554,  554,  554,
1636       554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
1637       554,  554,  554,  554,  554,  560,  560,  560,  587,  587,
1638       587,  560,  658,  733,  587,  591,  591,  591,  593,  593,
1639       593,  591,  647,  593,  594,  594,  594,  591,  599,  594,
1640       647,  587,  661,  658,  659,  663,  594,  748,  591,  647,
1641       666,  593,  673,  659,  668,  663,  661,  594,  748,  666,
1642       733,  673,  661,  889,  668,  560,  571,  571,  571,  571,
1643       571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
1644 
1645       571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
1646       571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
1647       571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
1648       571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
1649       571,  571,  581,  581,  888,  581,  581,  581,  581,  581,
1650       581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
1651       581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
1652       581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
1653       581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
1654       581,  581,  581,  581,  581,  581,  581,  581,  595,  595,
1655 
1656       595,  596,  596,  596,  595,  683,  645,  596,  597,  597,
1657       597,  598,  598,  598,  597,  887,  886,  598,  655,  595,
1658       655,  595,  596,  683,  596,  669,  605,  605,  605,  597,
1659       686,  597,  605,  671,  598,  606,  606,  606,  672,  655,
1660       685,  606,  607,  607,  607,  687,  669,  674,  607,  605,
1661       645,  595,  715,  671,  596,  686,  674,  685,  606,  672,
1662       715,  597,  732,  880,  848,  607,  613,  613,  687,  715,
1663       848,  655,  613,  613,  613,  613,  613,  613,  613,  613,
1664       613,  613,  613,  613,  613,  613,  613,  613,  613,  613,
1665       613,  613,  613,  613,  613,  613,  617,  617,  617,  624,
1666 
1667       624,  624,  617,  740,  732,  624,  628,  628,  628,  750,
1668       617,  878,  628,  740,  744,  629,  629,  629,  747,  617,
1669       628,  629,  624,  875,  636,  636,  636,  629,  747,  628,
1670       636,  639,  639,  639,  750,  728,  744,  639,  629,  751,
1671       649,  649,  649,  728,  755,  639,  649,  636,  675,  751,
1672       675,  649,  728,  649,  639,  657,  657,  657,  682,  682,
1673       682,  657,  802,  649,  682,  689,  689,  689,  675,  755,
1674       696,  696,  696,  874,  795,  657,  696,  697,  697,  697,
1675       749,  682,  802,  697,  696,  689,  756,  657,  689,  697,
1676       707,  707,  707,  696,  752,  787,  707,  762,  675,  749,
1677 
1678       697,  718,  718,  718,  752,  657,  678,  718,  753,  758,
1679       814,  756,  787,  707,  804,  762,  795,  689,  753,  758,
1680       678,  678,  873,  814,  718,  804,  678,  678,  678,  678,
1681       678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
1682       678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
1683       688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
1684       688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
1685       688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
1686       688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
1687       688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
1688 
1689       688,  688,  688,  688,  688,  688,  701,  701,  701,  712,
1690       712,  712,  701,  872,  722,  722,  722,  725,  725,  725,
1691       722,  899,  764,  725,  731,  731,  731,  701,  722,  701,
1692       731,  735,  712,  739,  739,  739,  735,  722,  735,  763,
1693       725,  765,  796,  793,  739,  764,  739,  731,  735,  741,
1694       741,  741,  803,  763,  899,  741,  739,  871,  806,  701,
1695       793,  712,  771,  771,  771,  765,  805,  876,  771,  773,
1696       773,  773,  776,  776,  776,  773,  803,  805,  776,  806,
1697       788,  788,  788,  773,  796,  771,  808,  827,  876,  794,
1698       794,  794,  773,  861,  807,  776,  938,  808,  827,  741,
1699 
1700       760,  760,  760,  788,  760,  760,  760,  791,  791,  791,
1701       760,  760,  794,  791,  798,  798,  798,  800,  807,  800,
1702       798,  813,  800,  800,  842,  798,  823,  798,  823,  839,
1703       791,  823,  823,  800,  817,  817,  817,  798,  938,  833,
1704       817,  945,  846,  813,  833,  800,  833,  830,  842,  800,
1705       760,  847,  760,  767,  839,  864,  833,  817,  830,  865,
1706       830,  846,  881,  830,  830,  945,  864,  767,  767,  859,
1707       865,  847,  881,  767,  767,  767,  767,  767,  767,  767,
1708       767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
1709       767,  767,  767,  767,  767,  767,  767,  809,  809,  809,
1710 
1711       868,  809,  809,  809,  822,  822,  822,  809,  809,  854,
1712       822,  828,  828,  828,  884,  854,  822,  828,  829,  829,
1713       829,  883,  863,  828,  829,  868,  854,  822,  863,  882,
1714       829,  835,  835,  835,  828,  884,  870,  858,  882,  863,
1715       883,  829,  835,  910,  835,  856,  855,  809,  870,  809,
1716       852,  851,  870,  910,  835,  840,  840,  840,  840,  840,
1717       840,  840,  840,  840,  840,  840,  840,  840,  840,  840,
1718       840,  840,  840,  840,  840,  840,  840,  840,  840,  840,
1719       840,  840,  840,  840,  840,  840,  840,  840,  840,  840,
1720       840,  840,  840,  840,  840,  840,  840,  840,  840,  840,
1721 
1722       840,  840,  840,  840,  840,  840,  840,  840,  840,  840,
1723       840,  841,  841,  841,  841,  841,  841,  841,  841,  841,
1724       841,  841,  841,  841,  841,  841,  841,  841,  841,  841,
1725       841,  841,  841,  841,  841,  841,  841,  841,  841,  841,
1726       841,  841,  841,  841,  841,  841,  841,  841,  841,  841,
1727       841,  841,  841,  841,  841,  841,  841,  841,  841,  841,
1728       841,  841,  841,  841,  841,  841,  841,  857,  857,  857,
1729       862,  866,  866,  866,  896,  862,  902,  902,  902,  909,
1730       850,  862,  902,  930,  849,  896,  843,  902, 1043,  902,
1731       857, 1043,  862,  930,  866,  838,  836,  909,  826,  902,
1732 
1733       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
1734       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
1735       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
1736       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
1737       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
1738       907,  907,  907,  907,  907,  907,  908,  916,  916,  916,
1739       921,  921,  921,  916,  923,  924,  921,  935,  937,  940,
1740       924,  825,  924,  977,  977,  978,  978,  977,  908,  978,
1741       916,  824,  924,  921,  935,  937,  988,  988,  940,  821,
1742       988,  820,  819,  923,  931,  931,  931,  931,  931,  931,
1743 
1744       931,  931,  931,  931,  931,  931,  931,  931,  931,  931,
1745       931,  931,  931,  931,  931,  931,  931,  931,  931,  931,
1746       931,  931,  931,  931,  931,  931,  931,  931,  931,  931,
1747       931,  931,  931,  931,  931,  931,  931,  931,  931,  931,
1748       931,  931,  931,  931,  931,  931,  931,  931,  931,  931,
1749       947, 1008, 1008, 1025, 1025, 1008,  818, 1025,  816,  811,
1750       810,  801,  797,  792,  790,  789,  786,  784,  777,  775,
1751       774,  772,  770,  769,  754,  746,  743,  738,  737,  736,
1752       947,  953,  953,  953,  953,  953,  953,  953,  953,  953,
1753       953,  953,  953,  953,  953,  953,  953,  953,  953,  953,
1754 
1755       953,  953,  954,  954,  954,  954,  954,  954,  954,  954,
1756       954,  954,  954,  954,  954,  954,  954,  954,  954,  954,
1757       954,  954,  954,  955,  955,  955,  955,  955,  955,  955,
1758       955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
1759       955,  955,  955,  955,  956,  956,  956,  956,  956,  956,
1760       956,  956,  956,  956,  956,  956,  956,  956,  956,  956,
1761       956,  956,  956,  956,  956,  957,  957,  957,  957,  957,
1762       957,  957,  957,  957,  957,  957,  957,  957,  957,  957,
1763       957,  957,  957,  957,  957,  957,  958,  958,  958,  958,
1764       958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
1765 
1766       958,  958,  958,  958,  958,  958,  958,  959,  959,  959,
1767       959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
1768       959,  959,  959,  959,  959,  959,  959,  959,  960,  960,
1769       960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
1770       960,  960,  960,  960,  960,  960,  960,  960,  960,  961,
1771       961,  961,  961,  961,  961,  961,  961,  961,  961,  961,
1772       961,  961,  961,  961,  961,  961,  961,  961,  961,  961,
1773       962,  962,  962,  962,  962,  962,  962,  962,  962,  962,
1774       962,  962,  962,  962,  962,  962,  962,  962,  962,  962,
1775       962,  963,  963,  963,  963,  963,  963,  963,  963,  963,
1776 
1777       963,  963,  963,  963,  963,  963,  963,  963,  963,  963,
1778       963,  963,  964,  730,  729,  726,  964,  964,  964,  964,
1779       724,  723,  721,  964,  964,  965,  965,  965,  965,  720,
1780       965,  965,  965,  965,  965,  719,  965,  965,  965,  965,
1781       717,  716,  714,  965,  965,  966,  966,  713,  966,  966,
1782       966,  966,  966,  966,  966,  966,  966,  966,  966,  966,
1783       966,  966,  711,  966,  966,  966,  967,  967,  710,  967,
1784       967,  967,  967,  967,  967,  967,  967,  967,  967,  967,
1785       967,  967,  967,  709,  967,  967,  967,  968,  968,  708,
1786       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
1787 
1788       968,  968,  968,  968,  706,  968,  968,  968,  969,  969,
1789       969,  705,  969,  969,  704,  969,  969,  969,  703,  969,
1790       969,  702,  969,  700,  699,  969,  969,  969,  970,  970,
1791       698,  970,  970,  970,  695,  970,  694,  970,  970,  970,
1792       970,  693,  692,  691,  970,  970,  971,  681,  680,  971,
1793       971,  971,  670,  971,  667,  971,  971,  971,  971,  662,
1794       654,  653,  971,  971,  972,  972,  652,  651,  972,  972,
1795       650,  648,  643,  972,  972,  642,  972,  640,  638,  635,
1796       972,  972,  973,  633,  632,  631,  973,  973,  630,  627,
1797       626,  973,  973,  973,  973,  625,  623,  622,  973,  973,
1798 
1799       974,  974,  974,  621,  620,  974,  974,  974,  974,  974,
1800       619,  974,  974,  974,  974,  618,  616,  615,  974,  974,
1801       975,  975,  614,  975,  975,  975,  975,  975,  975,  975,
1802       975,  975,  975,  975,  975,  975,  975,  975,  975,  975,
1803       975,  976,  976,  976,  612,  611,  976,  976,  976,  976,
1804       976,  610,  976,  976,  976,  976,  609,  608,  604,  976,
1805       976,  979,  979,  603,  602,  601,  600,  592,  590,  586,
1806       585,  584,  979,  562,  537,  979,  536,  535,  534,  979,
1807       979,  980,  980,  533,  980,  980,  980,  980,  980,  980,
1808       980,  980,  980,  980,  980,  980,  980,  980,  980,  980,
1809 
1810       980,  980,  981,  532,  528,  525,  517,  516,  981,  514,
1811       513,  981,  508,  506,  503,  981,  981,  982,  501,  496,
1812       982,  494,  493,  982,  490,  488,  487,  982,  982,  983,
1813       983,  983,  983,  983,  983,  983,  983,  983,  983,  983,
1814       983,  983,  983,  983,  983,  983,  983,  983,  983,  983,
1815       984,  984,  484,  984,  984,  984,  984,  984,  984,  984,
1816       984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
1817       984,  985,  985,  985,  985,  985,  985,  985,  985,  985,
1818       985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
1819       985,  985,  986,  986,  986,  986,  986,  986,  986,  986,
1820 
1821       986,  986,  986,  986,  986,  986,  986,  986,  986,  986,
1822       986,  986,  986,  987,  987,  483,  987,  987,  987,  987,
1823       987,  987,  987,  987,  987,  987,  987,  987,  987,  987,
1824       987,  987,  987,  987,  989,  989,  481,  480,  479,  478,
1825       477,  476,  474,  473,  468,  467,  466,  465,  989,  463,
1826       451,  450,  449,  989,  990,  448,  430,  990,  421,  411,
1827       399,  990,  990,  991,  991,  398,  991,  991,  991,  991,
1828       991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
1829       991,  991,  991,  991,  992,  992,  395,  992,  992,  992,
1830       992,  992,  992,  992,  992,  992,  992,  992,  992,  992,
1831 
1832       992,  992,  992,  992,  992,  993,  993,  394,  993,  993,
1833       993,  993,  993,  993,  993,  993,  993,  993,  993,  993,
1834       993,  993,  993,  993,  993,  993,  994,  994,  994,  994,
1835       994,  994,  994,  994,  994,  994,  994,  994,  994,  994,
1836       994,  994,  994,  994,  994,  994,  994,  995,  392,  388,
1837       995,  387,  374,  371,  995,  995,  996,  996,  996,  996,
1838       996,  996,  996,  996,  996,  996,  996,  996,  368,  996,
1839       996,  367,  996,  996,  996,  996,  996,  997,  997,  997,
1840       997,  997,  997,  997,  997,  997,  997,  997,  997,  366,
1841       997,  997,  355,  997,  997,  997,  997,  997,  998,  998,
1842 
1843       998,  998,  998,  998,  998,  998,  998,  998,  998,  998,
1844       354,  998,  998,  353,  998,  998,  998,  998,  998,  999,
1845       999,  350,  999,  999,  999,  999,  999,  999,  999,  999,
1846       999,  999,  999,  999,  999,  999,  999,  999,  999,  999,
1847      1000, 1000,  345, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
1848      1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
1849      1000, 1001, 1001,  342, 1001, 1001, 1001, 1001, 1001, 1001,
1850      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
1851      1001, 1001, 1002, 1002, 1002,  340,  338, 1002, 1002, 1002,
1852      1002, 1002,  337, 1002, 1002, 1002, 1002,  336,  335,  332,
1853 
1854      1002, 1002, 1003, 1003,  331,  325, 1003,  324,  323,  322,
1855       321,  320,  319,  318, 1003,  307, 1003,  264,  263,  262,
1856       258, 1003, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
1857      1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
1858      1004, 1004, 1004, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
1859      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
1860      1005, 1005, 1005, 1005, 1006, 1006,  238, 1006, 1006, 1006,
1861      1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006,
1862      1006, 1006, 1006, 1006, 1006, 1007, 1007,  233, 1007, 1007,
1863      1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007,
1864 
1865      1007, 1007, 1007, 1007, 1007, 1007, 1009, 1009,  232, 1009,
1866      1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
1867      1009, 1009, 1009, 1009, 1009, 1009, 1009, 1010, 1010,  231,
1868      1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
1869      1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, 1011,
1870       225, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
1871      1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1012,
1872      1012,  224, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012,
1873      1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012,
1874      1013, 1013,  221, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
1875 
1876      1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
1877      1013, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
1878      1014, 1014, 1014,  220, 1014, 1014,  219, 1014, 1014, 1014,
1879      1014, 1014, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
1880      1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
1881      1015, 1015, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
1882      1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
1883      1016, 1016, 1016, 1016, 1017, 1017,  218, 1017, 1017, 1017,
1884      1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
1885      1017, 1017, 1017, 1017, 1017, 1018, 1018, 1018, 1018, 1018,
1886 
1887      1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
1888      1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019,  217, 1019,
1889      1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019,
1890      1019, 1019, 1019, 1019, 1019, 1019, 1019, 1020, 1020,  216,
1891      1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
1892      1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1021, 1021,
1893       215, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021,
1894      1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1022,
1895      1022,  214, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
1896      1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
1897 
1898      1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,
1899      1023, 1023,  209, 1023, 1023,  202, 1023, 1023, 1023, 1023,
1900      1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1901      1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1902      1024, 1024, 1026, 1026,  200, 1026, 1026, 1026, 1026, 1026,
1903      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
1904      1026, 1026, 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
1905      1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
1906      1027, 1027, 1027, 1027, 1028, 1028, 1028, 1028, 1028, 1028,
1907      1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028,
1908 
1909      1028,  199, 1028, 1028, 1028, 1029, 1029,  198, 1029, 1029,
1910      1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029,
1911      1029, 1029, 1029, 1029, 1029, 1029, 1030, 1030, 1030, 1030,
1912      1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
1913      1030, 1030, 1030, 1030, 1030, 1030, 1030, 1031, 1031, 1031,
1914      1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031,
1915      1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1032, 1032,
1916      1032, 1032, 1032,  196, 1032, 1032, 1032, 1032, 1032, 1032,
1917      1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033,
1918      1033,  188, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
1919 
1920      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
1921      1034, 1034,  185, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
1922      1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
1923      1034, 1035, 1035,  184, 1035, 1035, 1035, 1035, 1035, 1035,
1924      1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035,
1925      1035, 1035, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
1926      1036, 1036, 1036, 1036,  183, 1036, 1036,  182, 1036, 1036,
1927      1036, 1036, 1036, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
1928      1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
1929      1037, 1037, 1037, 1037, 1038, 1038,  179, 1038, 1038, 1038,
1930 
1931      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
1932      1038, 1038, 1038, 1038, 1038, 1039, 1039,  166, 1039, 1039,
1933      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
1934      1039, 1039, 1039, 1039, 1039, 1039, 1040, 1040, 1040, 1040,
1935      1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
1936      1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041,
1937      1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,  161,
1938      1041, 1041,  160, 1041, 1041, 1041, 1041, 1041, 1042, 1042,
1939      1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
1940       136, 1042, 1042,  135, 1042, 1042, 1042, 1042, 1042, 1044,
1941 
1942      1044,  126, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044,
1943      1044, 1044, 1044, 1044, 1044,  119, 1044, 1044, 1044, 1044,
1944       112,   75,   73,   67,   64,   61,   58,   57,   51,   49,
1945        27,   12,   11,  952,  952,  952,  952,  952,  952,  952,
1946       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
1947       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
1948       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
1949       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
1950       952,  952,  952,  952,  952,  952,  952,  952,  952,  952
1951     } ;
1952 
1953 extern int yy_flex_debug;
1954 int yy_flex_debug = 0;
1955 
1956 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
1957 static char *yy_full_match;
1958 static int yy_lp;
1959 static int yy_looking_for_trail_begin = 0;
1960 static int yy_full_lp;
1961 static int *yy_full_state;
1962 #define YY_TRAILING_MASK 0x2000
1963 #define YY_TRAILING_HEAD_MASK 0x4000
1964 #define REJECT \
1965 { \
1966 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \
1967 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
1968 (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
1969 (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
1970 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
1971 ++(yy_lp); \
1972 goto find_rule; \
1973 }
1974 
1975 #define yymore() yymore_used_but_not_detected
1976 #define YY_MORE_ADJ 0
1977 #define YY_RESTORE_YY_MORE_OFFSET
1978 char *yytext;
1979 #line 1 "lacheck.l"
1980 /*                    -*- Mode: C -*-
1981  *
1982  * lacheck.lex - A consistency checker checker for LaTeX documents
1983  *
1984  * Copyright (C) 1991, 1992 Kresten Krab Thorup.
1985  * Copyright (C) 1993 --- 1998 Per Abrahamsen.
1986  *
1987  * This program is free software; you can redistribute it and/or modify
1988  * it under the terms of the GNU General Public License as published by
1989  * the Free Software Foundation; either version 1, or (at your option)
1990  * any later version.
1991  *
1992  * This program is distributed in the hope that it will be useful,
1993  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1994  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1995  * GNU General Public License for more details.
1996  *
1997  * You should have received a copy of the GNU General Public License
1998  * along with this program; if not, write to the Free Software
1999  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
2000  *
2001  * Please send bugs, suggestions, and queries to auc-tex_mgr@sunsite.auc.dk.
2002  *
2003  * $Revision: 1.26 $
2004  * Author          : Kresten Krab Thorup
2005  * Created On      : Sun May 26 18:11:58 1991
2006  *
2007  * HISTORY
2008  * 07-Mar-1998		Per Abrahamsen
2009  *    Added return to yywrap.  Patch by Fabrice POPINEAU
2010  *    <popineau@esemetz.ese-metz.fr>.
2011  * 14-Jan-1998		Per Abrahamsen
2012  *    Added GPL blurp.
2013  * 27-Oct-1997		Per Abrahamsen
2014  *    Count newline after newenvironment and newcommand.
2015  * 12-Jan-1996          Per Abrahamsen
2016  *    \\} used not to end a group in definitions.  Reported by Piet
2017  *    van Oostrum <piet@cs.ruu.nl>.
2018  * 03-Jan-1995		Per Abrahamsen
2019  *    Fix bug which prevented detection of multiple illegal characters
2020  *    in labels.  Reported by eeide@jaguar.cs.utah.edu (Eric Eide).
2021  * 30-Jul-1994		Per Abrahamsen
2022  *    Define dummy yywrap so we no longer depend on `libl.a'.
2023  * 26-Apr-1994		Per Abrahamsen
2024  *    Removed a few warnings, by Richard Lloyd <R.K.Lloyd@csc.liv.ac.uk>.
2025  * 23-Apr-1994		Per Abrahamsen
2026  *    Changed all `%i' to `%d' for VMS portability.  Reported by
2027  *    Stephen Harker <PHS172M@vaxc.cc.monash.edu.au>.
2028  * 16-Feb-1994		Per Abrahamsen
2029  *    Try file name with `.tex' appended before trying it bare.  This
2030  *    will make the case where a directory and a TeX file share the
2031  *    same name work.
2032  * 19-Jan-1994		Per Abrahamsen
2033  *    Comments don't imply whitespace.  Pointed out by Jacco van
2034  *    Ossenbruggen <jrvosse@cs.vu.nl>.
2035  * 14-Jan-1994		Per Abrahamsen
2036  *    Don't complain about \ref at the beginning of a paragraph.
2037  *    Suggested by Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>.
2038  * 11-Jan-1994		Per Abrahamsen
2039  *    Added version string to usage message.  Suggested by Uwe Bonnes
2040  *    <bon@LTE.E-TECHNIK.uni-erlangen.de> .
2041  * 04-Jan-1994		Per Abrahamsen
2042  *    Warn about newlines in \verb.  Suggested by Mark Burton
2043  *    <markb@ordern.demon.co.uk>.  The LaTeX Book agrees (p. 168).
2044  * 10-Sep-1993          Per Abrahamsen
2045  *    Removed complain about missing ~ before \cite.  Requested by
2046  *    Nelson H. F. Beebe <beebe@math.utah.edu>.  The LaTeX Book seems
2047  *    to agree.
2048  * 03-Sep-1993	        Per Abrahamsen
2049  *    Check for illegal characters in labels.
2050  * 16-Aug-1993	        Per Abrahamsen
2051  *    Recognize \endinput.  Suggested by Stefan Farestam
2052  *    <Stefan.Farestam@cerfacs.fr>.
2053  * 13-Aug-1993          Per Abrahamsen
2054  *    } was eaten after display math.  Reported by Eckhard R�ggeberg
2055  *    <eckhard@ts.go.dlr.de>.
2056  * 13-Aug-1993          Per Abrahamsen
2057  *    Recognize \verb*.  Reported by Eckhard R�ggeberg
2058  *    <eckhard@ts.go.dlr.de>.
2059  * 08-Aug-1993          Per Abrahamsen
2060  *    Better catch begin and end without arguments.
2061  * 08-Aug-1993          Per Abrahamsen
2062  *    Removed free(NULL) as reported by Darrel R. Hankerson
2063  *    <hankedr@mail.auburn.edu>.
2064  * 08-Aug-1993		Per Abrahamsen
2065  *    Removed declaration of realloc for some C compilers.  Reported by
2066  *    Darrel R. Hankerson <hankedr@mail.auburn.edu>
2067  * 30-Jul-1993          Per Abrahamsen
2068  *    Added check for italic correction after normal text.
2069  * 29-Jul-1993          Per Abrahamsen
2070  *    Added cast for (char*) malloc as suggested by John Interrante
2071  *    <interran@uluru.Stanford.EDU>.
2072  * 29-Jul-1993          Per Abrahamsen
2073  *    Added check for missing and extra italic correction.
2074  * 29-Jul-1993	        Per Abrahamsen
2075  *    Made line number counting more reliable (but it still needs a rewrite)!
2076  * 28-Jul-1993	        Per Abrahamsen
2077  *    Added check for italic correction before point or comma.
2078  * 6-Jun-1992		Kresten Krab Thorup
2079  *    Last Modified: Sat Jun  6 16:37:44 1992 #48 (Kresten Krab Thorup)
2080  *    Added test for whitespace before punctuation mark
2081  * 17-Dec-1991  (Last Mod: Tue Dec 17 21:01:24 1991 #41)  Kresten Krab Thorup
2082  *    Added 'word word` and missing ~ before cite and ref
2083  * 18-Jun-1991  (Last Mod: Tue Jun 18 19:20:43 1991 #17)  Kresten Krab Thorup
2084  *    Added check (or rather management) for \newenvironment and
2085  *    \newcommand - as suggested by Per Abrahamsen abrham@hugin.dk
2086  * 30-May-1991  (Last Mod: Thu May 30 02:22:33 1991 #15)  Kresten Krab Thorup
2087  *    Added check for `$${punct}' and `{punct}$' constructions
2088  * 30-May-1991  (Last Mod: Wed May 29 10:31:35 1991 #6)  Kresten Krab Thorup
2089  *    Improved (dynamic) stack management from Andreas Stolcke ...
2090  *                                       <stolcke@ICSI.Berkeley.EDU>
2091  * 26-May-1991  Kresten Krab Thorup
2092  *    Initial distribution version.
2093  */
2094 #line 119 "lacheck.l"
2095 
2096 #include <stdio.h>
2097 #include <string.h>
2098 
2099 /* #include <sys/param.h> */
2100 
2101 /* extern char *realloc(); */
2102 
2103 #ifdef NEED_STRSTR
2104 char *strstr();
2105 #endif
2106 
2107 #define GROUP_STACK_SIZE 10
2108 #define INPUT_STACK_SIZE 10
2109 
2110 #define PROGNAME "LaCheck"
2111 
2112   /* macros */
2113 
2114 #define CG_NAME gstack[gstackp-1].s_name
2115 #define CG_TYPE gstack[gstackp-1].s_type
2116 #define CG_LINE gstack[gstackp-1].s_line
2117 #define CG_ITALIC gstack[gstackp-1].italic
2118 #define CG_FILE gstack[gstackp-1].s_file
2119 
2120 void pop(void);
2121 void push(const char *p_name, int p_type, int p_line);
2122 void linecount(void);
2123 void g_checkend(int n);
2124 void e_checkend(int n, char *name);
2125 void f_checkend(char *name);
2126 void input_file(char *file_nam);
2127 void print_bad_match(char *end_command, int type);
2128 int check_top_level_end(char *end_command, int type);
2129 
2130   /* global variables */
2131 
2132 int line_count = 1;
2133 int warn_count = 0;
2134 char *file_name;
2135 char verb_char;
2136 
2137   /* the group stack */
2138 
2139 typedef struct tex_group
2140  {
2141     char *s_name;
2142     int s_type;
2143     int s_line;
2144     int italic;
2145     char *s_file;
2146  } tex_group;
2147 
2148 tex_group *gstack;
2149 int gstack_size = GROUP_STACK_SIZE;
2150 int gstackp = 0;
2151 
2152 typedef struct input_
2153  {
2154     YY_BUFFER_STATE stream;
2155     char *name;
2156     int linenum;
2157  } input_;
2158 
2159 input_ *istack;
2160 int istack_size = INPUT_STACK_SIZE;
2161 int istackp = 0;
2162 
2163 int def_count = 0;
2164 
2165 
2166 
2167 #line 2168 "lacheck.c"
2168 
2169 #define INITIAL 0
2170 #define B_ENVIRONMENT 1
2171 #define E_ENVIRONMENT 2
2172 #define VERBATIM 3
2173 #define INCLUDE 4
2174 #define MATH 5
2175 #define COMMENT 6
2176 #define VERB 7
2177 #define DEF 8
2178 #define AFTER_DISPLAY 9
2179 #define ENV_DEF 10
2180 #define ICOR 11
2181 #define GETICOR 12
2182 
2183 #ifndef YY_NO_UNISTD_H
2184 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2185  * down here because we want the user's section 1 to have been scanned first.
2186  * The user has a chance to override it with an option.
2187  */
2188 #include <unistd.h>
2189 #endif
2190 
2191 #ifndef YY_EXTRA_TYPE
2192 #define YY_EXTRA_TYPE void *
2193 #endif
2194 
2195 static int yy_init_globals (void );
2196 
2197 /* Accessor methods to globals.
2198    These are made visible to non-reentrant scanners for convenience. */
2199 
2200 int yylex_destroy (void );
2201 
2202 int yyget_debug (void );
2203 
2204 void yyset_debug (int debug_flag  );
2205 
2206 YY_EXTRA_TYPE yyget_extra (void );
2207 
2208 void yyset_extra (YY_EXTRA_TYPE user_defined  );
2209 
2210 FILE *yyget_in (void );
2211 
2212 void yyset_in  (FILE * in_str  );
2213 
2214 FILE *yyget_out (void );
2215 
2216 void yyset_out  (FILE * out_str  );
2217 
2218 yy_size_t yyget_leng (void );
2219 
2220 char *yyget_text (void );
2221 
2222 int yyget_lineno (void );
2223 
2224 void yyset_lineno (int line_number  );
2225 
2226 /* Macros after this point can all be overridden by user definitions in
2227  * section 1.
2228  */
2229 
2230 #ifndef YY_SKIP_YYWRAP
2231 #ifdef __cplusplus
2232 extern "C" int yywrap (void );
2233 #else
2234 extern int yywrap (void );
2235 #endif
2236 #endif
2237 
2238     static void yyunput (int c,char *buf_ptr  );
2239 
2240 #ifndef yytext_ptr
2241 static void yy_flex_strncpy (char *,yyconst char *,int );
2242 #endif
2243 
2244 #ifdef YY_NEED_STRLEN
2245 static int yy_flex_strlen (yyconst char * );
2246 #endif
2247 
2248 #ifndef YY_NO_INPUT
2249 
2250 #ifdef __cplusplus
2251 static int yyinput (void );
2252 #else
2253 static int input (void );
2254 #endif
2255 
2256 #endif
2257 
2258 /* Amount of stuff to slurp up with each read. */
2259 #ifndef YY_READ_BUF_SIZE
2260 #define YY_READ_BUF_SIZE 8192
2261 #endif
2262 
2263 /* Copy whatever the last rule matched to the standard output. */
2264 #ifndef ECHO
2265 /* This used to be an fputs(), but since the string might contain NUL's,
2266  * we now use fwrite().
2267  */
2268 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
2269 #endif
2270 
2271 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
2272  * is returned in "result".
2273  */
2274 #ifndef YY_INPUT
2275 #define YY_INPUT(buf,result,max_size) \
2276 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2277 		{ \
2278 		int c = '*'; \
2279 		size_t n; \
2280 		for ( n = 0; n < max_size && \
2281 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2282 			buf[n] = (char) c; \
2283 		if ( c == '\n' ) \
2284 			buf[n++] = (char) c; \
2285 		if ( c == EOF && ferror( yyin ) ) \
2286 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
2287 		result = n; \
2288 		} \
2289 	else \
2290 		{ \
2291 		errno=0; \
2292 		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
2293 			{ \
2294 			if( errno != EINTR) \
2295 				{ \
2296 				YY_FATAL_ERROR( "input in flex scanner failed" ); \
2297 				break; \
2298 				} \
2299 			errno=0; \
2300 			clearerr(yyin); \
2301 			} \
2302 		}\
2303 \
2304 
2305 #endif
2306 
2307 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2308  * we don't want an extra ';' after the "return" because that will cause
2309  * some compilers to complain about unreachable statements.
2310  */
2311 #ifndef yyterminate
2312 #define yyterminate() return YY_NULL
2313 #endif
2314 
2315 /* Number of entries by which start-condition stack grows. */
2316 #ifndef YY_START_STACK_INCR
2317 #define YY_START_STACK_INCR 25
2318 #endif
2319 
2320 /* Report a fatal error. */
2321 #ifndef YY_FATAL_ERROR
2322 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2323 #endif
2324 
2325 /* end tables serialization structures and prototypes */
2326 
2327 /* Default declaration of generated scanner - a define so the user can
2328  * easily add parameters.
2329  */
2330 #ifndef YY_DECL
2331 #define YY_DECL_IS_OURS 1
2332 
2333 extern int yylex (void);
2334 
2335 #define YY_DECL int yylex (void)
2336 #endif /* !YY_DECL */
2337 
2338 /* Code executed at the beginning of each rule, after yytext and yyleng
2339  * have been set up.
2340  */
2341 #ifndef YY_USER_ACTION
2342 #define YY_USER_ACTION
2343 #endif
2344 
2345 /* Code executed at the end of each rule. */
2346 #ifndef YY_BREAK
2347 #define YY_BREAK break;
2348 #endif
2349 
2350 #define YY_RULE_SETUP \
2351 	if ( yyleng > 0 ) \
2352 		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
2353 				(yytext[yyleng - 1] == '\n'); \
2354 	YY_USER_ACTION
2355 
2356 /** The main scanner function which does all the work.
2357  */
2358 YY_DECL
2359 {
2360 	register yy_state_type yy_current_state;
2361 	register char *yy_cp, *yy_bp;
2362 	register int yy_act;
2363 
2364 	if ( !(yy_init) )
2365 		{
2366 		(yy_init) = 1;
2367 
2368 #ifdef YY_USER_INIT
2369 		YY_USER_INIT;
2370 #endif
2371 
2372         /* Create the reject buffer large enough to save one state per allowed character. */
2373         if ( ! (yy_state_buf) )
2374             (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE  );
2375             if ( ! (yy_state_buf) )
2376                 YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
2377 
2378 		if ( ! (yy_start) )
2379 			(yy_start) = 1;	/* first start state */
2380 
2381 		if ( ! yyin )
2382 			yyin = stdin;
2383 
2384 		if ( ! yyout )
2385 			yyout = stdout;
2386 
2387 		if ( ! YY_CURRENT_BUFFER ) {
2388 			yyensure_buffer_stack ();
2389 			YY_CURRENT_BUFFER_LVALUE =
2390 				yy_create_buffer(yyin,YY_BUF_SIZE );
2391 		}
2392 
2393 		yy_load_buffer_state( );
2394 		}
2395 
2396 	{
2397 #line 234 "lacheck.l"
2398 
2399 
2400 #line 2401 "lacheck.c"
2401 
2402 	while ( 1 )		/* loops until end-of-file is reached */
2403 		{
2404 		yy_cp = (yy_c_buf_p);
2405 
2406 		/* Support of yytext. */
2407 		*yy_cp = (yy_hold_char);
2408 
2409 		/* yy_bp points to the position in yy_ch_buf of the start of
2410 		 * the current run.
2411 		 */
2412 		yy_bp = yy_cp;
2413 
2414 		yy_current_state = (yy_start);
2415 		yy_current_state += YY_AT_BOL();
2416 
2417 		(yy_state_ptr) = (yy_state_buf);
2418 		*(yy_state_ptr)++ = yy_current_state;
2419 
2420 yy_match:
2421 		do
2422 			{
2423 			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
2424 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2425 				{
2426 				yy_current_state = (int) yy_def[yy_current_state];
2427 				if ( yy_current_state >= 953 )
2428 					yy_c = yy_meta[(unsigned int) yy_c];
2429 				}
2430 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2431 			*(yy_state_ptr)++ = yy_current_state;
2432 			++yy_cp;
2433 			}
2434 		while ( yy_current_state != 952 );
2435 
2436 yy_find_action:
2437 		yy_current_state = *--(yy_state_ptr);
2438 		(yy_lp) = yy_accept[yy_current_state];
2439 find_rule: /* we branch to this label when backing up */
2440 		for ( ; ; ) /* until we find what rule we matched */
2441 			{
2442 			if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
2443 				{
2444 				yy_act = yy_acclist[(yy_lp)];
2445 				if ( yy_act & YY_TRAILING_HEAD_MASK ||
2446 				     (yy_looking_for_trail_begin) )
2447 					{
2448 					if ( yy_act == (yy_looking_for_trail_begin) )
2449 						{
2450 						(yy_looking_for_trail_begin) = 0;
2451 						yy_act &= ~YY_TRAILING_HEAD_MASK;
2452 						break;
2453 						}
2454 					}
2455 				else if ( yy_act & YY_TRAILING_MASK )
2456 					{
2457 					(yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
2458 					(yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
2459 					}
2460 				else
2461 					{
2462 					(yy_full_match) = yy_cp;
2463 					(yy_full_state) = (yy_state_ptr);
2464 					(yy_full_lp) = (yy_lp);
2465 					break;
2466 					}
2467 				++(yy_lp);
2468 				goto find_rule;
2469 				}
2470 			--yy_cp;
2471 			yy_current_state = *--(yy_state_ptr);
2472 			(yy_lp) = yy_accept[yy_current_state];
2473 			}
2474 
2475 		YY_DO_BEFORE_ACTION;
2476 
2477 do_action:	/* This label is used only to access EOF actions. */
2478 
2479 		switch ( yy_act )
2480 	{ /* beginning of action switch */
2481 case 1:
2482 YY_RULE_SETUP
2483 #line 236 "lacheck.l"
2484 { ; }
2485 	YY_BREAK
2486 case 2:
2487 YY_RULE_SETUP
2488 #line 238 "lacheck.l"
2489 { ; }
2490 	YY_BREAK
2491 case 3:
2492 /* rule 3 can match eol */
2493 YY_RULE_SETUP
2494 #line 240 "lacheck.l"
2495 { line_count++; }
2496 	YY_BREAK
2497 case 4:
2498 /* rule 4 can match eol */
2499 YY_RULE_SETUP
2500 #line 242 "lacheck.l"
2501 { line_count++; }
2502 	YY_BREAK
2503 case 5:
2504 YY_RULE_SETUP
2505 #line 244 "lacheck.l"
2506 { ; }
2507 	YY_BREAK
2508 case 6:
2509 YY_RULE_SETUP
2510 #line 246 "lacheck.l"
2511 { ; }
2512 	YY_BREAK
2513 case 7:
2514 YY_RULE_SETUP
2515 #line 248 "lacheck.l"
2516 { ; }
2517 	YY_BREAK
2518 case 8:
2519 /* rule 8 can match eol */
2520 YY_RULE_SETUP
2521 #line 250 "lacheck.l"
2522 {
2523   if (CG_TYPE != 4 && CG_TYPE != 5) {
2524     if (!(CG_TYPE == 2 && strstr(CG_NAME, "array"))) {
2525       printf( "\"%s\", line %d: possible unwanted space at \"{\"\n",
2526 	     file_name, line_count);
2527       ++warn_count ;
2528     }
2529   }
2530   push( "{", 0, line_count);
2531   linecount();
2532  }
2533 	YY_BREAK
2534 case 9:
2535 YY_RULE_SETUP
2536 #line 262 "lacheck.l"
2537 {  push( "{", 0, line_count);}
2538 	YY_BREAK
2539 case 10:
2540 YY_RULE_SETUP
2541 #line 264 "lacheck.l"
2542 {
2543   {
2544     int italic = CG_ITALIC;
2545     g_checkend(0);
2546     if (italic && !CG_ITALIC)
2547       BEGIN(GETICOR) ;
2548     else
2549       BEGIN(INITIAL);
2550   }}
2551 	YY_BREAK
2552 case 11:
2553 YY_RULE_SETUP
2554 #line 274 "lacheck.l"
2555 {  g_checkend(0); }
2556 	YY_BREAK
2557 case 12:
2558 YY_RULE_SETUP
2559 #line 276 "lacheck.l"
2560 {
2561  {
2562    if (!CG_ITALIC)
2563      {
2564        printf("\"%s\", line %d: you may need a \\/ before \"%s\"\n",
2565 	      file_name, line_count, yytext);
2566        ++warn_count;
2567      }
2568     BEGIN(INITIAL);
2569  }}
2570 	YY_BREAK
2571 case 13:
2572 YY_RULE_SETUP
2573 #line 287 "lacheck.l"
2574 {
2575  {
2576    if (CG_ITALIC)
2577      {
2578        printf("\"%s\", line %d: \\/ not needed before italic text \"%s\"\n",
2579 	      file_name, line_count, yytext);
2580        ++warn_count;
2581      }
2582     BEGIN(INITIAL);
2583  }}
2584 	YY_BREAK
2585 case 14:
2586 /* rule 14 can match eol */
2587 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2588 YY_LINENO_REWIND_TO(yy_cp - 2);
2589 (yy_c_buf_p) = yy_cp -= 2;
2590 YY_DO_BEFORE_ACTION; /* set up yytext again */
2591 YY_RULE_SETUP
2592 #line 298 "lacheck.l"
2593 {
2594   {
2595    linecount();
2596    if (!CG_ITALIC)
2597      {
2598        printf("\"%s\", line %d: \\/ not needed after non-italic text \"%s\"\n",
2599               file_name, line_count, yytext);
2600        ++warn_count;
2601      }
2602  }}
2603 	YY_BREAK
2604 case 15:
2605 /* rule 15 can match eol */
2606 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2607 YY_LINENO_REWIND_TO(yy_cp - 2);
2608 (yy_c_buf_p) = yy_cp -= 2;
2609 YY_DO_BEFORE_ACTION; /* set up yytext again */
2610 YY_RULE_SETUP
2611 #line 309 "lacheck.l"
2612 {
2613   {
2614    linecount();
2615    if (!CG_ITALIC)
2616      {
2617        printf("\"%s\", line %d: \\/ is not needed after non-italic \"%s\"\n",
2618               file_name, line_count, yytext);
2619        ++warn_count;
2620      }
2621  }}
2622 	YY_BREAK
2623 case 16:
2624 YY_RULE_SETUP
2625 #line 320 "lacheck.l"
2626 { BEGIN(INITIAL); }
2627 	YY_BREAK
2628 case 17:
2629 YY_RULE_SETUP
2630 #line 322 "lacheck.l"
2631 { BEGIN(ICOR); }
2632 	YY_BREAK
2633 case 18:
2634 YY_RULE_SETUP
2635 #line 324 "lacheck.l"
2636 {
2637   {
2638     printf("\"%s\", line %d: double \\/ found \"%s\"\n",
2639            file_name, line_count, yytext);
2640     ++warn_count;
2641     BEGIN(ICOR);
2642   }}
2643 	YY_BREAK
2644 case 19:
2645 /* rule 19 can match eol */
2646 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2647 YY_LINENO_REWIND_TO(yy_cp - 1);
2648 (yy_c_buf_p) = yy_cp -= 1;
2649 YY_DO_BEFORE_ACTION; /* set up yytext again */
2650 YY_RULE_SETUP
2651 #line 332 "lacheck.l"
2652 { CG_ITALIC = 1; }
2653 	YY_BREAK
2654 case 20:
2655 /* rule 20 can match eol */
2656 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2657 YY_LINENO_REWIND_TO(yy_bp + 12);
2658 (yy_c_buf_p) = yy_cp = yy_bp + 12;
2659 YY_DO_BEFORE_ACTION; /* set up yytext again */
2660 YY_RULE_SETUP
2661 #line 334 "lacheck.l"
2662 {
2663   {
2664     if(CG_ITALIC)
2665       BEGIN(GETICOR);
2666     else
2667       BEGIN(INITIAL);
2668     CG_ITALIC = 0;
2669   }}
2670 	YY_BREAK
2671 case 21:
2672 /* rule 21 can match eol */
2673 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2674 YY_LINENO_REWIND_TO(yy_bp + 12);
2675 (yy_c_buf_p) = yy_cp = yy_bp + 12;
2676 YY_DO_BEFORE_ACTION; /* set up yytext again */
2677 YY_RULE_SETUP
2678 #line 343 "lacheck.l"
2679 { CG_ITALIC = 0; }
2680 	YY_BREAK
2681 case 22:
2682 /* rule 22 can match eol */
2683 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2684 YY_LINENO_REWIND_TO(yy_bp + 3);
2685 (yy_c_buf_p) = yy_cp = yy_bp + 3;
2686 YY_DO_BEFORE_ACTION; /* set up yytext again */
2687 YY_RULE_SETUP
2688 #line 345 "lacheck.l"
2689 {
2690   {
2691     if(CG_ITALIC)
2692       BEGIN(GETICOR);
2693     else
2694       BEGIN(INITIAL);
2695     CG_ITALIC = !CG_ITALIC;
2696   }}
2697 	YY_BREAK
2698 case 23:
2699 /* rule 23 can match eol */
2700 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2701 YY_LINENO_REWIND_TO(yy_bp + 3);
2702 (yy_c_buf_p) = yy_cp = yy_bp + 3;
2703 YY_DO_BEFORE_ACTION; /* set up yytext again */
2704 YY_RULE_SETUP
2705 #line 354 "lacheck.l"
2706 { CG_ITALIC = !CG_ITALIC; }
2707 	YY_BREAK
2708 case 24:
2709 YY_RULE_SETUP
2710 #line 356 "lacheck.l"
2711 {
2712  {
2713     printf("\"%s\", line %d: do not use \\/ before \"%s\"\n",
2714 	   file_name, line_count, yytext);
2715     ++warn_count;
2716     BEGIN(INITIAL);
2717  }}
2718 	YY_BREAK
2719 case 25:
2720 /* rule 25 can match eol */
2721 YY_RULE_SETUP
2722 #line 364 "lacheck.l"
2723 { ; }
2724 	YY_BREAK
2725 case 26:
2726 YY_RULE_SETUP
2727 #line 366 "lacheck.l"
2728 { ; }
2729 	YY_BREAK
2730 case 27:
2731 YY_RULE_SETUP
2732 #line 368 "lacheck.l"
2733 {
2734   {
2735     unput(yytext[0]);
2736     BEGIN(INITIAL);
2737   }}
2738 	YY_BREAK
2739 case 28:
2740 YY_RULE_SETUP
2741 #line 374 "lacheck.l"
2742 BEGIN(DEF);
2743 	YY_BREAK
2744 case 29:
2745 YY_RULE_SETUP
2746 #line 376 "lacheck.l"
2747 { ++def_count; }
2748 	YY_BREAK
2749 case 30:
2750 YY_RULE_SETUP
2751 #line 378 "lacheck.l"
2752 { --def_count;
2753 		 if(def_count == 0)
2754 		     BEGIN(INITIAL); }
2755 	YY_BREAK
2756 case 31:
2757 YY_RULE_SETUP
2758 #line 382 "lacheck.l"
2759 { ; }
2760 	YY_BREAK
2761 case 32:
2762 YY_RULE_SETUP
2763 #line 384 "lacheck.l"
2764 BEGIN(ENV_DEF);
2765 	YY_BREAK
2766 case 33:
2767 YY_RULE_SETUP
2768 #line 386 "lacheck.l"
2769 { ++def_count; }
2770 	YY_BREAK
2771 case 34:
2772 YY_RULE_SETUP
2773 #line 388 "lacheck.l"
2774 { --def_count;
2775 		 if(def_count == 0)
2776 		     BEGIN(DEF); }
2777 	YY_BREAK
2778 case 35:
2779 YY_RULE_SETUP
2780 #line 392 "lacheck.l"
2781 { ; }
2782 	YY_BREAK
2783 case 36:
2784 YY_RULE_SETUP
2785 #line 394 "lacheck.l"
2786 {
2787     if(CG_TYPE == 4 || CG_TYPE == 5)
2788 	print_bad_match(yytext,4);
2789     else
2790     {
2791 	push( yytext, 4, line_count);
2792     }}
2793 	YY_BREAK
2794 case 37:
2795 YY_RULE_SETUP
2796 #line 402 "lacheck.l"
2797 {  g_checkend(4); }
2798 	YY_BREAK
2799 case 38:
2800 YY_RULE_SETUP
2801 #line 404 "lacheck.l"
2802 {
2803     if(CG_TYPE == 4 || CG_TYPE == 5)
2804 	print_bad_match(yytext,5);
2805     else
2806     {
2807 	push( yytext, 5, line_count);
2808     }}
2809 	YY_BREAK
2810 case 39:
2811 YY_RULE_SETUP
2812 #line 413 "lacheck.l"
2813 {  g_checkend(5);     BEGIN(AFTER_DISPLAY);}
2814 	YY_BREAK
2815 case 40:
2816 YY_RULE_SETUP
2817 #line 415 "lacheck.l"
2818 {
2819 
2820     printf( "\"%s\", line %d: punctuation mark \"%s\" should be placed before end of displaymath\n",
2821 	   file_name, line_count, yytext);
2822     ++warn_count ;
2823 
2824   BEGIN(INITIAL); }
2825 	YY_BREAK
2826 case 41:
2827 /* rule 41 can match eol */
2828 YY_RULE_SETUP
2829 #line 423 "lacheck.l"
2830 { unput(yytext[0]); BEGIN(INITIAL); }
2831 	YY_BREAK
2832 case 42:
2833 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2834 (yy_c_buf_p) = yy_cp = yy_bp + 1;
2835 YY_DO_BEFORE_ACTION; /* set up yytext again */
2836 YY_RULE_SETUP
2837 #line 425 "lacheck.l"
2838 { if (CG_TYPE == 4)
2839        {
2840 	 printf( "\"%s\", line %d: punctuation mark \"%s\" should be placed after end of math mode\n",
2841 		file_name, line_count, yytext);
2842 	 ++warn_count ;
2843 	 BEGIN(INITIAL);
2844        }}
2845 	YY_BREAK
2846 case 43:
2847 YY_RULE_SETUP
2848 #line 433 "lacheck.l"
2849 {
2850 
2851     if(CG_TYPE == 5)
2852 	print_bad_match(yytext, 4);
2853     else
2854 
2855     if(CG_TYPE == 4)
2856     {
2857 	e_checkend(4, yytext);
2858     }
2859     else
2860     {
2861 	push( yytext, 4, line_count);
2862     }}
2863 	YY_BREAK
2864 case 44:
2865 YY_RULE_SETUP
2866 #line 449 "lacheck.l"
2867 {
2868 
2869     if(CG_TYPE == 4)
2870 	print_bad_match(yytext,5);
2871     else
2872 
2873     if(CG_TYPE == 5)
2874     {
2875 	e_checkend(5, yytext);
2876         BEGIN(AFTER_DISPLAY);
2877     }
2878     else
2879     {
2880 	push( yytext, 5, line_count);
2881     }}
2882 	YY_BREAK
2883 case 45:
2884 /* rule 45 can match eol */
2885 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2886 YY_LINENO_REWIND_TO(yy_bp + 11);
2887 (yy_c_buf_p) = yy_cp = yy_bp + 11;
2888 YY_DO_BEFORE_ACTION; /* set up yytext again */
2889 YY_RULE_SETUP
2890 #line 465 "lacheck.l"
2891 {
2892  {
2893     push("\\begingroup", 1, line_count);
2894  }}
2895 	YY_BREAK
2896 case 46:
2897 /* rule 46 can match eol */
2898 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2899 YY_LINENO_REWIND_TO(yy_bp + 9);
2900 (yy_c_buf_p) = yy_cp = yy_bp + 9;
2901 YY_DO_BEFORE_ACTION; /* set up yytext again */
2902 YY_RULE_SETUP
2903 #line 471 "lacheck.l"
2904 {
2905  {
2906     g_checkend(1);
2907  }}
2908 	YY_BREAK
2909 case 47:
2910 YY_RULE_SETUP
2911 #line 477 "lacheck.l"
2912 { BEGIN(B_ENVIRONMENT); }
2913 	YY_BREAK
2914 case 48:
2915 /* rule 48 can match eol */
2916 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2917 YY_LINENO_REWIND_TO(yy_cp - 1);
2918 (yy_c_buf_p) = yy_cp -= 1;
2919 YY_DO_BEFORE_ACTION; /* set up yytext again */
2920 YY_RULE_SETUP
2921 #line 479 "lacheck.l"
2922 {
2923  {
2924 
2925     printf("\"%s\", line %d: {argument} missing for \\begin\n",
2926 	   file_name, line_count) ;
2927     ++warn_count;
2928  }}
2929 	YY_BREAK
2930 case 49:
2931 YY_RULE_SETUP
2932 #line 487 "lacheck.l"
2933 {
2934  {
2935     if (strcmp( yytext, "verbatim" ) == 0 )
2936 	{
2937 	 input();
2938 	 BEGIN(VERBATIM);
2939 	}
2940     else
2941 	{
2942     	 push(yytext, 2, line_count);
2943 
2944 	 if (   strcmp (yytext, "sl" ) == 0
2945 	     || strcmp (yytext, "it" ) == 0)
2946 	   CG_ITALIC = 1;
2947 	 else if (strcmp (yytext, "normalshape") == 0)
2948 	   CG_ITALIC = 0;
2949 	 else if (strcmp (yytext, "em") == 0)
2950 	   CG_ITALIC = !CG_ITALIC;
2951 
2952  	 input();
2953 	 BEGIN(INITIAL);
2954 	}
2955  }}
2956 	YY_BREAK
2957 case 50:
2958 YY_RULE_SETUP
2959 #line 511 "lacheck.l"
2960 { BEGIN(INITIAL); }
2961 	YY_BREAK
2962 case 51:
2963 YY_RULE_SETUP
2964 #line 513 "lacheck.l"
2965 {
2966      printf("\"%s\", line %d: TAB character in verbatim environment\n",
2967 	   file_name, line_count) ;
2968     ++warn_count;
2969  }
2970 	YY_BREAK
2971 case 52:
2972 YY_RULE_SETUP
2973 #line 519 "lacheck.l"
2974 { ; }
2975 	YY_BREAK
2976 case 53:
2977 /* rule 53 can match eol */
2978 YY_RULE_SETUP
2979 #line 521 "lacheck.l"
2980 { ++line_count; }
2981 	YY_BREAK
2982 case 54:
2983 YY_RULE_SETUP
2984 #line 524 "lacheck.l"
2985 {
2986           verb_char = yytext[yyleng-1];
2987 	  BEGIN(VERB);
2988 	}
2989 	YY_BREAK
2990 case 55:
2991 /* rule 55 can match eol */
2992 YY_RULE_SETUP
2993 #line 529 "lacheck.l"
2994 {
2995   printf("\"%s\", line %d: \\verb should not contain end of line characters\n",
2996 	 file_name, line_count) ;
2997   ++line_count;
2998 }
2999 	YY_BREAK
3000 case 56:
3001 YY_RULE_SETUP
3002 #line 535 "lacheck.l"
3003 {
3004   if ( *yytext == verb_char )
3005     BEGIN(INITIAL);
3006 }
3007 	YY_BREAK
3008 case 57:
3009 YY_RULE_SETUP
3010 #line 541 "lacheck.l"
3011 { BEGIN(E_ENVIRONMENT); }
3012 	YY_BREAK
3013 case 58:
3014 /* rule 58 can match eol */
3015 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3016 YY_LINENO_REWIND_TO(yy_cp - 1);
3017 (yy_c_buf_p) = yy_cp -= 1;
3018 YY_DO_BEFORE_ACTION; /* set up yytext again */
3019 YY_RULE_SETUP
3020 #line 543 "lacheck.l"
3021 {
3022  {
3023     printf("\"%s\", line %d: {argument} missing for \\end\n",
3024 	   file_name, line_count) ;
3025     ++warn_count;
3026  }}
3027 	YY_BREAK
3028 case 59:
3029 YY_RULE_SETUP
3030 #line 551 "lacheck.l"
3031 {
3032  {
3033     e_checkend(2, yytext);
3034     input();
3035 
3036     BEGIN(INITIAL);
3037  }}
3038 	YY_BREAK
3039 case 60:
3040 /* rule 60 can match eol */
3041 YY_RULE_SETUP
3042 #line 560 "lacheck.l"
3043 {
3044  {
3045     linecount();
3046     printf( "\"%s\", line %d: missing `\\ ' after \"%s\"\n",
3047 	   file_name, line_count, ++yytext);
3048     ++warn_count ;
3049     BEGIN(INITIAL);
3050  }}
3051 	YY_BREAK
3052 case 61:
3053 /* rule 61 can match eol */
3054 YY_RULE_SETUP
3055 #line 569 "lacheck.l"
3056 {
3057  {
3058     printf( "\"%s\", line %d: missing `\\ ' after \"%s\"\n",
3059 	   file_name, line_count, yytext);
3060     ++warn_count ;
3061     BEGIN(INITIAL);
3062  }}
3063 	YY_BREAK
3064 case 62:
3065 /* rule 62 can match eol */
3066 YY_RULE_SETUP
3067 #line 577 "lacheck.l"
3068 {
3069  {
3070    linecount();
3071    printf("\"%s\", line %d: missing `\\@' before `.' in \"%s\"\n",
3072 	  file_name, line_count, yytext);
3073    ++warn_count ;
3074    BEGIN(INITIAL);
3075  }}
3076 	YY_BREAK
3077 case 63:
3078 /* rule 63 can match eol */
3079 YY_RULE_SETUP
3080 #line 586 "lacheck.l"
3081 {
3082 
3083     printf("\"%s\", line %d: double space at \"%s\"\n",
3084 	   file_name, line_count, yytext);
3085     ++warn_count;
3086 	linecount();
3087     BEGIN(INITIAL);
3088   }
3089 	YY_BREAK
3090 case 64:
3091 /* rule 64 can match eol */
3092 YY_RULE_SETUP
3093 #line 595 "lacheck.l"
3094 {
3095 	printf("\"%s\", line %d: \\ldots should be \\cdots in \"%s\"\n",
3096 	   file_name, line_count, yytext);
3097 	++warn_count;
3098 	linecount();
3099   }
3100 	YY_BREAK
3101 case 65:
3102 /* rule 65 can match eol */
3103 YY_RULE_SETUP
3104 #line 602 "lacheck.l"
3105 {
3106 	printf("\"%s\", line %d: \\cdots should be \\ldots in \"%s\"\n",
3107 	   file_name, line_count, yytext);
3108 	++warn_count;
3109 	linecount();
3110     BEGIN(INITIAL);
3111   }
3112 	YY_BREAK
3113 case 66:
3114 /* rule 66 can match eol */
3115 YY_RULE_SETUP
3116 #line 610 "lacheck.l"
3117 {
3118 	printf("\"%s\", line %d: Dots should be \\cdots in \"%s\"\n",
3119 	   file_name, line_count, yytext);
3120 	++warn_count;
3121 	linecount();
3122   }
3123 	YY_BREAK
3124 case 67:
3125 /* rule 67 can match eol */
3126 YY_RULE_SETUP
3127 #line 617 "lacheck.l"
3128 {
3129 	printf("\"%s\", line %d: Dots should be \\ldots in \"%s\"\n",
3130 	   file_name, line_count, yytext);
3131 	++warn_count;
3132 	linecount();
3133     BEGIN(INITIAL);
3134   }
3135 	YY_BREAK
3136 case 68:
3137 YY_RULE_SETUP
3138 #line 626 "lacheck.l"
3139 {
3140     printf("\"%s\", line %d: Dots should be ellipsis \"%s\"\n",
3141 	   file_name, line_count, yytext);
3142     ++warn_count;
3143     BEGIN(INITIAL);
3144   }
3145 	YY_BREAK
3146 case 69:
3147 /* rule 69 can match eol */
3148 YY_RULE_SETUP
3149 #line 633 "lacheck.l"
3150 {
3151     linecount();
3152     printf("\"%s\", line %d: bad character in label \"%s\", see C.10.2\n",
3153            file_name, line_count, yytext);
3154   }
3155 	YY_BREAK
3156 case 70:
3157 /* rule 70 can match eol */
3158 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3159 YY_LINENO_REWIND_TO(yy_cp - 1);
3160 (yy_c_buf_p) = yy_cp -= 1;
3161 YY_DO_BEFORE_ACTION; /* set up yytext again */
3162 YY_RULE_SETUP
3163 #line 639 "lacheck.l"
3164 {
3165     linecount();
3166     BEGIN(INITIAL);
3167   }
3168 	YY_BREAK
3169 case 71:
3170 /* rule 71 can match eol */
3171 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3172 YY_LINENO_REWIND_TO(yy_cp - 1);
3173 (yy_c_buf_p) = yy_cp -= 1;
3174 YY_DO_BEFORE_ACTION; /* set up yytext again */
3175 YY_RULE_SETUP
3176 #line 644 "lacheck.l"
3177 {
3178     linecount();
3179     printf("\"%s\", line %d: perhaps you should insert a `~' before \"%s\"\n",
3180 	   file_name, line_count, ++yytext);
3181     BEGIN(INITIAL);
3182   }
3183 	YY_BREAK
3184 case 72:
3185 /* rule 72 can match eol */
3186 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3187 YY_LINENO_REWIND_TO(yy_cp - 1);
3188 (yy_c_buf_p) = yy_cp -= 1;
3189 YY_DO_BEFORE_ACTION; /* set up yytext again */
3190 YY_RULE_SETUP
3191 #line 651 "lacheck.l"
3192 {
3193     linecount();
3194     printf("\"%s\", line %d: whitespace before footnote in \"%s\"\n",
3195 	   file_name, line_count, ++yytext);
3196     BEGIN(INITIAL);
3197   }
3198 	YY_BREAK
3199 case 73:
3200 /* rule 73 can match eol */
3201 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3202 YY_LINENO_REWIND_TO(yy_cp - 1);
3203 (yy_c_buf_p) = yy_cp -= 1;
3204 YY_DO_BEFORE_ACTION; /* set up yytext again */
3205 YY_RULE_SETUP
3206 #line 659 "lacheck.l"
3207 {
3208  {
3209     printf("\"%s\", line %d: Don't use \"%s\" in LaTeX documents\n",
3210 	   file_name, line_count, yytext);
3211     ++warn_count ;
3212  }}
3213 	YY_BREAK
3214 case 74:
3215 /* rule 74 can match eol */
3216 YY_RULE_SETUP
3217 #line 666 "lacheck.l"
3218 { linecount() ;}
3219 	YY_BREAK
3220 case 75:
3221 /* rule 75 can match eol */
3222 YY_RULE_SETUP
3223 #line 667 "lacheck.l"
3224 {	linecount(); }
3225 	YY_BREAK
3226 case 76:
3227 /* rule 76 can match eol */
3228 YY_RULE_SETUP
3229 #line 669 "lacheck.l"
3230 {
3231  {
3232    linecount();
3233     printf("\"%s\", line %d: Fontspecifiers don't take arguments. \"%s\"\n",
3234 	   file_name, line_count, yytext);
3235     ++warn_count;
3236   /*    (void) input(); */
3237     BEGIN(INITIAL);
3238  }}
3239 	YY_BREAK
3240 case 77:
3241 YY_RULE_SETUP
3242 #line 679 "lacheck.l"
3243 {
3244  {
3245     printf("\"%s\", line %d: Do not use @ in LaTeX macro names. \"%s\"\n",
3246 	   file_name, line_count, yytext);
3247     ++warn_count;
3248  }}
3249 	YY_BREAK
3250 case 78:
3251 /* rule 78 can match eol */
3252 YY_RULE_SETUP
3253 #line 686 "lacheck.l"
3254 {
3255  {
3256    linecount();
3257     printf("\"%s\", line %d: Use ` to begin quotation, not ' \"%s\"\n",
3258 	   file_name, line_count, yytext);
3259     ++warn_count;
3260     BEGIN(INITIAL);
3261  }}
3262 	YY_BREAK
3263 case 79:
3264 YY_RULE_SETUP
3265 #line 695 "lacheck.l"
3266 {
3267  {
3268     printf("\"%s\", line %d: Use ' to end quotation, not ` \"%s\"\n",
3269 	   file_name, line_count, yytext);
3270     ++warn_count;
3271     BEGIN(INITIAL);
3272  }}
3273 	YY_BREAK
3274 case 80:
3275 /* rule 80 can match eol */
3276 YY_RULE_SETUP
3277 #line 704 "lacheck.l"
3278 {
3279  {
3280     printf("\"%s\", line %d: Whitespace before punctation mark in \"%s\"\n",
3281 	   file_name, line_count, yytext);
3282     ++warn_count;
3283 	linecount();
3284     BEGIN(INITIAL);
3285  }}
3286 	YY_BREAK
3287 case 81:
3288 YY_RULE_SETUP
3289 #line 713 "lacheck.l"
3290 { BEGIN(COMMENT); }
3291 	YY_BREAK
3292 case 82:
3293 /* rule 82 can match eol */
3294 YY_RULE_SETUP
3295 #line 715 "lacheck.l"
3296 { BEGIN(INITIAL); ++line_count; }
3297 	YY_BREAK
3298 case 83:
3299 YY_RULE_SETUP
3300 #line 717 "lacheck.l"
3301 { ; }
3302 	YY_BREAK
3303 case 84:
3304 YY_RULE_SETUP
3305 #line 720 "lacheck.l"
3306 { BEGIN(INCLUDE); }
3307 	YY_BREAK
3308 case 85:
3309 YY_RULE_SETUP
3310 #line 722 "lacheck.l"
3311 {
3312  {
3313 	if ( strstr(yytext,".sty") == NULL )
3314 	{
3315 	  printf("** %s:\n", yytext);
3316 	  input_file(yytext);
3317 	}
3318 	else
3319 	{
3320 		printf("\"%s\", line %d: Style file `%s\' omitted.\n",
3321 			file_name,
3322 			line_count,
3323 			yytext);
3324 		input();
3325 	}
3326 	BEGIN(INITIAL);
3327  }}
3328 	YY_BREAK
3329 case 86:
3330 /* rule 86 can match eol */
3331 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3332 YY_LINENO_REWIND_TO(yy_bp + 9);
3333 (yy_c_buf_p) = yy_cp = yy_bp + 9;
3334 YY_DO_BEFORE_ACTION; /* set up yytext again */
3335 #line 741 "lacheck.l"
3336 YY_RULE_SETUP
3337 case YY_STATE_EOF(INITIAL):
3338 YY_RULE_SETUP
3339 case YY_STATE_EOF(B_ENVIRONMENT):
3340 YY_RULE_SETUP
3341 case YY_STATE_EOF(E_ENVIRONMENT):
3342 YY_RULE_SETUP
3343 case YY_STATE_EOF(VERBATIM):
3344 YY_RULE_SETUP
3345 case YY_STATE_EOF(INCLUDE):
3346 YY_RULE_SETUP
3347 case YY_STATE_EOF(MATH):
3348 YY_RULE_SETUP
3349 case YY_STATE_EOF(COMMENT):
3350 YY_RULE_SETUP
3351 case YY_STATE_EOF(VERB):
3352 YY_RULE_SETUP
3353 case YY_STATE_EOF(DEF):
3354 YY_RULE_SETUP
3355 case YY_STATE_EOF(AFTER_DISPLAY):
3356 YY_RULE_SETUP
3357 case YY_STATE_EOF(ENV_DEF):
3358 YY_RULE_SETUP
3359 case YY_STATE_EOF(ICOR):
3360 YY_RULE_SETUP
3361 case YY_STATE_EOF(GETICOR):
3362 #line 741 "lacheck.l"
3363 {
3364 	  if (--istackp < 0)
3365 		  yyterminate();
3366 
3367 	  else
3368 		{
3369 		  fclose(yyin);
3370 	  	  f_checkend(file_name);
3371 		  yy_switch_to_buffer(istack[istackp].stream);
3372 		  free(file_name);
3373 		  line_count = istack[istackp].linenum;
3374 		  file_name = istack[istackp].name;
3375 		  input();
3376 		  BEGIN(INITIAL);
3377 		}
3378 
3379 	}
3380 	YY_BREAK
3381 case 87:
3382 YY_RULE_SETUP
3383 #line 760 "lacheck.l"
3384 { ; }
3385 	YY_BREAK
3386 case 88:
3387 YY_RULE_SETUP
3388 #line 761 "lacheck.l"
3389 ECHO;
3390 	YY_BREAK
3391 #line 3392 "lacheck.c"
3392 
3393 	case YY_END_OF_BUFFER:
3394 		{
3395 		/* Amount of text matched not including the EOB char. */
3396 		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3397 
3398 		/* Undo the effects of YY_DO_BEFORE_ACTION. */
3399 		*yy_cp = (yy_hold_char);
3400 		YY_RESTORE_YY_MORE_OFFSET
3401 
3402 		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3403 			{
3404 			/* We're scanning a new file or input source.  It's
3405 			 * possible that this happened because the user
3406 			 * just pointed yyin at a new source and called
3407 			 * yylex().  If so, then we have to assure
3408 			 * consistency between YY_CURRENT_BUFFER and our
3409 			 * globals.  Here is the right place to do so, because
3410 			 * this is the first action (other than possibly a
3411 			 * back-up) that will match for the new input source.
3412 			 */
3413 			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3414 			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
3415 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3416 			}
3417 
3418 		/* Note that here we test for yy_c_buf_p "<=" to the position
3419 		 * of the first EOB in the buffer, since yy_c_buf_p will
3420 		 * already have been incremented past the NUL character
3421 		 * (since all states make transitions on EOB to the
3422 		 * end-of-buffer state).  Contrast this with the test
3423 		 * in input().
3424 		 */
3425 		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3426 			{ /* This was really a NUL. */
3427 			yy_state_type yy_next_state;
3428 
3429 			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3430 
3431 			yy_current_state = yy_get_previous_state(  );
3432 
3433 			/* Okay, we're now positioned to make the NUL
3434 			 * transition.  We couldn't have
3435 			 * yy_get_previous_state() go ahead and do it
3436 			 * for us because it doesn't know how to deal
3437 			 * with the possibility of jamming (and we don't
3438 			 * want to build jamming into it because then it
3439 			 * will run more slowly).
3440 			 */
3441 
3442 			yy_next_state = yy_try_NUL_trans( yy_current_state );
3443 
3444 			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3445 
3446 			if ( yy_next_state )
3447 				{
3448 				/* Consume the NUL. */
3449 				yy_cp = ++(yy_c_buf_p);
3450 				yy_current_state = yy_next_state;
3451 				goto yy_match;
3452 				}
3453 
3454 			else
3455 				{
3456 				yy_cp = (yy_c_buf_p);
3457 				goto yy_find_action;
3458 				}
3459 			}
3460 
3461 		else switch ( yy_get_next_buffer(  ) )
3462 			{
3463 			case EOB_ACT_END_OF_FILE:
3464 				{
3465 				(yy_did_buffer_switch_on_eof) = 0;
3466 
3467 				if ( yywrap( ) )
3468 					{
3469 					/* Note: because we've taken care in
3470 					 * yy_get_next_buffer() to have set up
3471 					 * yytext, we can now set up
3472 					 * yy_c_buf_p so that if some total
3473 					 * hoser (like flex itself) wants to
3474 					 * call the scanner after we return the
3475 					 * YY_NULL, it'll still work - another
3476 					 * YY_NULL will get returned.
3477 					 */
3478 					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
3479 
3480 					yy_act = YY_STATE_EOF(YY_START);
3481 					goto do_action;
3482 					}
3483 
3484 				else
3485 					{
3486 					if ( ! (yy_did_buffer_switch_on_eof) )
3487 						YY_NEW_FILE;
3488 					}
3489 				break;
3490 				}
3491 
3492 			case EOB_ACT_CONTINUE_SCAN:
3493 				(yy_c_buf_p) =
3494 					(yytext_ptr) + yy_amount_of_matched_text;
3495 
3496 				yy_current_state = yy_get_previous_state(  );
3497 
3498 				yy_cp = (yy_c_buf_p);
3499 				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3500 				goto yy_match;
3501 
3502 			case EOB_ACT_LAST_MATCH:
3503 				(yy_c_buf_p) =
3504 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3505 
3506 				yy_current_state = yy_get_previous_state(  );
3507 
3508 				yy_cp = (yy_c_buf_p);
3509 				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3510 				goto yy_find_action;
3511 			}
3512 		break;
3513 		}
3514 
3515 	default:
3516 		YY_FATAL_ERROR(
3517 			"fatal flex scanner internal error--no action found" );
3518 	} /* end of action switch */
3519 		} /* end of scanning one token */
3520 	} /* end of user's declarations */
3521 } /* end of yylex */
3522 
3523 /* yy_get_next_buffer - try to read in a new buffer
3524  *
3525  * Returns a code representing an action:
3526  *	EOB_ACT_LAST_MATCH -
3527  *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3528  *	EOB_ACT_END_OF_FILE - end of file
3529  */
yy_get_next_buffer(void)3530 static int yy_get_next_buffer (void)
3531 {
3532     	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3533 	register char *source = (yytext_ptr);
3534 	register int number_to_move, i;
3535 	int ret_val;
3536 
3537 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
3538 		YY_FATAL_ERROR(
3539 		"fatal flex scanner internal error--end of buffer missed" );
3540 
3541 	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3542 		{ /* Don't try to fill the buffer, so this is an EOF. */
3543 		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
3544 			{
3545 			/* We matched a single character, the EOB, so
3546 			 * treat this as a final EOF.
3547 			 */
3548 			return EOB_ACT_END_OF_FILE;
3549 			}
3550 
3551 		else
3552 			{
3553 			/* We matched some text prior to the EOB, first
3554 			 * process it.
3555 			 */
3556 			return EOB_ACT_LAST_MATCH;
3557 			}
3558 		}
3559 
3560 	/* Try to read more data. */
3561 
3562 	/* First move last chars to start of buffer. */
3563 	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
3564 
3565 	for ( i = 0; i < number_to_move; ++i )
3566 		*(dest++) = *(source++);
3567 
3568 	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3569 		/* don't do the read, it's not guaranteed to return an EOF,
3570 		 * just force an EOF
3571 		 */
3572 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
3573 
3574 	else
3575 		{
3576 			yy_size_t num_to_read =
3577 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3578 
3579 		while ( num_to_read <= 0 )
3580 			{ /* Not enough room in the buffer - grow it. */
3581 
3582 			YY_FATAL_ERROR(
3583 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3584 
3585 			}
3586 
3587 		if ( num_to_read > YY_READ_BUF_SIZE )
3588 			num_to_read = YY_READ_BUF_SIZE;
3589 
3590 		/* Read in more data. */
3591 		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3592 			(yy_n_chars), num_to_read );
3593 
3594 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3595 		}
3596 
3597 	if ( (yy_n_chars) == 0 )
3598 		{
3599 		if ( number_to_move == YY_MORE_ADJ )
3600 			{
3601 			ret_val = EOB_ACT_END_OF_FILE;
3602 			yyrestart(yyin  );
3603 			}
3604 
3605 		else
3606 			{
3607 			ret_val = EOB_ACT_LAST_MATCH;
3608 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3609 				YY_BUFFER_EOF_PENDING;
3610 			}
3611 		}
3612 
3613 	else
3614 		ret_val = EOB_ACT_CONTINUE_SCAN;
3615 
3616 	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
3617 		/* Extend the array by 50%, plus the number we really need. */
3618 		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
3619 		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
3620 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3621 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
3622 	}
3623 
3624 	(yy_n_chars) += number_to_move;
3625 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
3626 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
3627 
3628 	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3629 
3630 	return ret_val;
3631 }
3632 
3633 /* yy_get_previous_state - get the state just before the EOB char was reached */
3634 
yy_get_previous_state(void)3635     static yy_state_type yy_get_previous_state (void)
3636 {
3637 	register yy_state_type yy_current_state;
3638 	register char *yy_cp;
3639 
3640 	yy_current_state = (yy_start);
3641 	yy_current_state += YY_AT_BOL();
3642 
3643 	(yy_state_ptr) = (yy_state_buf);
3644 	*(yy_state_ptr)++ = yy_current_state;
3645 
3646 	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3647 		{
3648 		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3649 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3650 			{
3651 			yy_current_state = (int) yy_def[yy_current_state];
3652 			if ( yy_current_state >= 953 )
3653 				yy_c = yy_meta[(unsigned int) yy_c];
3654 			}
3655 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3656 		*(yy_state_ptr)++ = yy_current_state;
3657 		}
3658 
3659 	return yy_current_state;
3660 }
3661 
3662 /* yy_try_NUL_trans - try to make a transition on the NUL character
3663  *
3664  * synopsis
3665  *	next_state = yy_try_NUL_trans( current_state );
3666  */
yy_try_NUL_trans(yy_state_type yy_current_state)3667     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
3668 {
3669 	register int yy_is_jam;
3670 
3671 	register YY_CHAR yy_c = 1;
3672 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3673 		{
3674 		yy_current_state = (int) yy_def[yy_current_state];
3675 		if ( yy_current_state >= 953 )
3676 			yy_c = yy_meta[(unsigned int) yy_c];
3677 		}
3678 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3679 	yy_is_jam = (yy_current_state == 952);
3680 	if ( ! yy_is_jam )
3681 		*(yy_state_ptr)++ = yy_current_state;
3682 
3683 		return yy_is_jam ? 0 : yy_current_state;
3684 }
3685 
yyunput(int c,register char * yy_bp)3686     static void yyunput (int c, register char * yy_bp )
3687 {
3688 	register char *yy_cp;
3689 
3690     yy_cp = (yy_c_buf_p);
3691 
3692 	/* undo effects of setting up yytext */
3693 	*yy_cp = (yy_hold_char);
3694 
3695 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3696 		{ /* need to shift things up to make room */
3697 		/* +2 for EOB chars. */
3698 		register yy_size_t number_to_move = (yy_n_chars) + 2;
3699 		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
3700 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
3701 		register char *source =
3702 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
3703 
3704 		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3705 			*--dest = *--source;
3706 
3707 		yy_cp += (int) (dest - source);
3708 		yy_bp += (int) (dest - source);
3709 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
3710 			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
3711 
3712 		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3713 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
3714 		}
3715 
3716 	*--yy_cp = (char) c;
3717 
3718 	(yytext_ptr) = yy_bp;
3719 	(yy_hold_char) = *yy_cp;
3720 	(yy_c_buf_p) = yy_cp;
3721 }
3722 
3723 #ifndef YY_NO_INPUT
3724 #ifdef __cplusplus
yyinput(void)3725     static int yyinput (void)
3726 #else
3727     static int input  (void)
3728 #endif
3729 
3730 {
3731 	int c;
3732 
3733 	*(yy_c_buf_p) = (yy_hold_char);
3734 
3735 	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3736 		{
3737 		/* yy_c_buf_p now points to the character we want to return.
3738 		 * If this occurs *before* the EOB characters, then it's a
3739 		 * valid NUL; if not, then we've hit the end of the buffer.
3740 		 */
3741 		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3742 			/* This was really a NUL. */
3743 			*(yy_c_buf_p) = '\0';
3744 
3745 		else
3746 			{ /* need more input */
3747 			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
3748 			++(yy_c_buf_p);
3749 
3750 			switch ( yy_get_next_buffer(  ) )
3751 				{
3752 				case EOB_ACT_LAST_MATCH:
3753 					/* This happens because yy_g_n_b()
3754 					 * sees that we've accumulated a
3755 					 * token and flags that we need to
3756 					 * try matching the token before
3757 					 * proceeding.  But for input(),
3758 					 * there's no matching to consider.
3759 					 * So convert the EOB_ACT_LAST_MATCH
3760 					 * to EOB_ACT_END_OF_FILE.
3761 					 */
3762 
3763 					/* Reset buffer status. */
3764 					yyrestart(yyin );
3765 
3766 					/*FALLTHROUGH*/
3767 
3768 				case EOB_ACT_END_OF_FILE:
3769 					{
3770 					if ( yywrap( ) )
3771 						return EOF;
3772 
3773 					if ( ! (yy_did_buffer_switch_on_eof) )
3774 						YY_NEW_FILE;
3775 #ifdef __cplusplus
3776 					return yyinput();
3777 #else
3778 					return input();
3779 #endif
3780 					}
3781 
3782 				case EOB_ACT_CONTINUE_SCAN:
3783 					(yy_c_buf_p) = (yytext_ptr) + offset;
3784 					break;
3785 				}
3786 			}
3787 		}
3788 
3789 	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
3790 	*(yy_c_buf_p) = '\0';	/* preserve yytext */
3791 	(yy_hold_char) = *++(yy_c_buf_p);
3792 
3793 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3794 
3795 	return c;
3796 }
3797 #endif	/* ifndef YY_NO_INPUT */
3798 
3799 /** Immediately switch to a different input stream.
3800  * @param input_file A readable stream.
3801  *
3802  * @note This function does not reset the start condition to @c INITIAL .
3803  */
yyrestart(FILE * input_file)3804     void yyrestart  (FILE * input_file )
3805 {
3806 
3807 	if ( ! YY_CURRENT_BUFFER ){
3808         yyensure_buffer_stack ();
3809 		YY_CURRENT_BUFFER_LVALUE =
3810             yy_create_buffer(yyin,YY_BUF_SIZE );
3811 	}
3812 
3813 	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
3814 	yy_load_buffer_state( );
3815 }
3816 
3817 /** Switch to a different input buffer.
3818  * @param new_buffer The new input buffer.
3819  *
3820  */
yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)3821     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
3822 {
3823 
3824 	/* TODO. We should be able to replace this entire function body
3825 	 * with
3826 	 *		yypop_buffer_state();
3827 	 *		yypush_buffer_state(new_buffer);
3828      */
3829 	yyensure_buffer_stack ();
3830 	if ( YY_CURRENT_BUFFER == new_buffer )
3831 		return;
3832 
3833 	if ( YY_CURRENT_BUFFER )
3834 		{
3835 		/* Flush out information for old buffer. */
3836 		*(yy_c_buf_p) = (yy_hold_char);
3837 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3838 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3839 		}
3840 
3841 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
3842 	yy_load_buffer_state( );
3843 
3844 	/* We don't actually know whether we did this switch during
3845 	 * EOF (yywrap()) processing, but the only time this flag
3846 	 * is looked at is after yywrap() is called, so it's safe
3847 	 * to go ahead and always set it.
3848 	 */
3849 	(yy_did_buffer_switch_on_eof) = 1;
3850 }
3851 
yy_load_buffer_state(void)3852 static void yy_load_buffer_state  (void)
3853 {
3854     	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3855 	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3856 	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3857 	(yy_hold_char) = *(yy_c_buf_p);
3858 }
3859 
3860 /** Allocate and initialize an input buffer state.
3861  * @param file A readable stream.
3862  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3863  *
3864  * @return the allocated buffer state.
3865  */
yy_create_buffer(FILE * file,int size)3866     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
3867 {
3868 	YY_BUFFER_STATE b;
3869 
3870 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
3871 	if ( ! b )
3872 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3873 
3874 	b->yy_buf_size = size;
3875 
3876 	/* yy_ch_buf has to be 2 characters longer than the size given because
3877 	 * we need to put in 2 end-of-buffer characters.
3878 	 */
3879 	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
3880 	if ( ! b->yy_ch_buf )
3881 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3882 
3883 	b->yy_is_our_buffer = 1;
3884 
3885 	yy_init_buffer(b,file );
3886 
3887 	return b;
3888 }
3889 
3890 /** Destroy the buffer.
3891  * @param b a buffer created with yy_create_buffer()
3892  *
3893  */
yy_delete_buffer(YY_BUFFER_STATE b)3894     void yy_delete_buffer (YY_BUFFER_STATE  b )
3895 {
3896 
3897 	if ( ! b )
3898 		return;
3899 
3900 	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3901 		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3902 
3903 	if ( b->yy_is_our_buffer )
3904 		yyfree((void *) b->yy_ch_buf  );
3905 
3906 	yyfree((void *) b  );
3907 }
3908 
3909 /* Initializes or reinitializes a buffer.
3910  * This function is sometimes called more than once on the same buffer,
3911  * such as during a yyrestart() or at EOF.
3912  */
yy_init_buffer(YY_BUFFER_STATE b,FILE * file)3913     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
3914 
3915 {
3916 	int oerrno = errno;
3917 
3918 	yy_flush_buffer(b );
3919 
3920 	b->yy_input_file = file;
3921 	b->yy_fill_buffer = 1;
3922 
3923     /* If b is the current buffer, then yy_init_buffer was _probably_
3924      * called from yyrestart() or through yy_get_next_buffer.
3925      * In that case, we don't want to reset the lineno or column.
3926      */
3927     if (b != YY_CURRENT_BUFFER){
3928         b->yy_bs_lineno = 1;
3929         b->yy_bs_column = 0;
3930     }
3931 
3932         b->yy_is_interactive = 0;
3933 
3934 	errno = oerrno;
3935 }
3936 
3937 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3938  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3939  *
3940  */
yy_flush_buffer(YY_BUFFER_STATE b)3941     void yy_flush_buffer (YY_BUFFER_STATE  b )
3942 {
3943     	if ( ! b )
3944 		return;
3945 
3946 	b->yy_n_chars = 0;
3947 
3948 	/* We always need two end-of-buffer characters.  The first causes
3949 	 * a transition to the end-of-buffer state.  The second causes
3950 	 * a jam in that state.
3951 	 */
3952 	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3953 	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3954 
3955 	b->yy_buf_pos = &b->yy_ch_buf[0];
3956 
3957 	b->yy_at_bol = 1;
3958 	b->yy_buffer_status = YY_BUFFER_NEW;
3959 
3960 	if ( b == YY_CURRENT_BUFFER )
3961 		yy_load_buffer_state( );
3962 }
3963 
3964 /** Pushes the new state onto the stack. The new state becomes
3965  *  the current state. This function will allocate the stack
3966  *  if necessary.
3967  *  @param new_buffer The new state.
3968  *
3969  */
yypush_buffer_state(YY_BUFFER_STATE new_buffer)3970 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
3971 {
3972     	if (new_buffer == NULL)
3973 		return;
3974 
3975 	yyensure_buffer_stack();
3976 
3977 	/* This block is copied from yy_switch_to_buffer. */
3978 	if ( YY_CURRENT_BUFFER )
3979 		{
3980 		/* Flush out information for old buffer. */
3981 		*(yy_c_buf_p) = (yy_hold_char);
3982 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3983 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3984 		}
3985 
3986 	/* Only push if top exists. Otherwise, replace top. */
3987 	if (YY_CURRENT_BUFFER)
3988 		(yy_buffer_stack_top)++;
3989 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
3990 
3991 	/* copied from yy_switch_to_buffer. */
3992 	yy_load_buffer_state( );
3993 	(yy_did_buffer_switch_on_eof) = 1;
3994 }
3995 
3996 /** Removes and deletes the top of the stack, if present.
3997  *  The next element becomes the new top.
3998  *
3999  */
yypop_buffer_state(void)4000 void yypop_buffer_state (void)
4001 {
4002     	if (!YY_CURRENT_BUFFER)
4003 		return;
4004 
4005 	yy_delete_buffer(YY_CURRENT_BUFFER );
4006 	YY_CURRENT_BUFFER_LVALUE = NULL;
4007 	if ((yy_buffer_stack_top) > 0)
4008 		--(yy_buffer_stack_top);
4009 
4010 	if (YY_CURRENT_BUFFER) {
4011 		yy_load_buffer_state( );
4012 		(yy_did_buffer_switch_on_eof) = 1;
4013 	}
4014 }
4015 
4016 /* Allocates the stack if it does not exist.
4017  *  Guarantees space for at least one push.
4018  */
yyensure_buffer_stack(void)4019 static void yyensure_buffer_stack (void)
4020 {
4021 	yy_size_t num_to_alloc;
4022 
4023 	if (!(yy_buffer_stack)) {
4024 
4025 		/* First allocation is just for 2 elements, since we don't know if this
4026 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
4027 		 * immediate realloc on the next call.
4028          */
4029 		num_to_alloc = 1;
4030 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
4031 								(num_to_alloc * sizeof(struct yy_buffer_state*)
4032 								);
4033 		if ( ! (yy_buffer_stack) )
4034 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4035 
4036 		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4037 
4038 		(yy_buffer_stack_max) = num_to_alloc;
4039 		(yy_buffer_stack_top) = 0;
4040 		return;
4041 	}
4042 
4043 	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4044 
4045 		/* Increase the buffer to prepare for a possible push. */
4046 		int grow_size = 8 /* arbitrary grow size */;
4047 
4048 		num_to_alloc = (yy_buffer_stack_max) + grow_size;
4049 		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
4050 								((yy_buffer_stack),
4051 								num_to_alloc * sizeof(struct yy_buffer_state*)
4052 								);
4053 		if ( ! (yy_buffer_stack) )
4054 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4055 
4056 		/* zero only the new slots.*/
4057 		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4058 		(yy_buffer_stack_max) = num_to_alloc;
4059 	}
4060 }
4061 
4062 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4063  * @param base the character buffer
4064  * @param size the size in bytes of the character buffer
4065  *
4066  * @return the newly allocated buffer state object.
4067  */
yy_scan_buffer(char * base,yy_size_t size)4068 YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
4069 {
4070 	YY_BUFFER_STATE b;
4071 
4072 	if ( size < 2 ||
4073 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
4074 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
4075 		/* They forgot to leave room for the EOB's. */
4076 		return 0;
4077 
4078 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
4079 	if ( ! b )
4080 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4081 
4082 	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
4083 	b->yy_buf_pos = b->yy_ch_buf = base;
4084 	b->yy_is_our_buffer = 0;
4085 	b->yy_input_file = 0;
4086 	b->yy_n_chars = b->yy_buf_size;
4087 	b->yy_is_interactive = 0;
4088 	b->yy_at_bol = 1;
4089 	b->yy_fill_buffer = 0;
4090 	b->yy_buffer_status = YY_BUFFER_NEW;
4091 
4092 	yy_switch_to_buffer(b  );
4093 
4094 	return b;
4095 }
4096 
4097 /** Setup the input buffer state to scan a string. The next call to yylex() will
4098  * scan from a @e copy of @a str.
4099  * @param yystr a NUL-terminated string to scan
4100  *
4101  * @return the newly allocated buffer state object.
4102  * @note If you want to scan bytes that may contain NUL values, then use
4103  *       yy_scan_bytes() instead.
4104  */
yy_scan_string(yyconst char * yystr)4105 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
4106 {
4107 
4108 	return yy_scan_bytes(yystr,strlen(yystr) );
4109 }
4110 
4111 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
4112  * scan from a @e copy of @a bytes.
4113  * @param yybytes the byte buffer to scan
4114  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
4115  *
4116  * @return the newly allocated buffer state object.
4117  */
yy_scan_bytes(yyconst char * yybytes,yy_size_t _yybytes_len)4118 YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
4119 {
4120 	YY_BUFFER_STATE b;
4121 	char *buf;
4122 	yy_size_t n;
4123 	yy_size_t i;
4124 
4125 	/* Get memory for full buffer, including space for trailing EOB's. */
4126 	n = _yybytes_len + 2;
4127 	buf = (char *) yyalloc(n  );
4128 	if ( ! buf )
4129 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4130 
4131 	for ( i = 0; i < _yybytes_len; ++i )
4132 		buf[i] = yybytes[i];
4133 
4134 	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4135 
4136 	b = yy_scan_buffer(buf,n );
4137 	if ( ! b )
4138 		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4139 
4140 	/* It's okay to grow etc. this buffer, and we should throw it
4141 	 * away when we're done.
4142 	 */
4143 	b->yy_is_our_buffer = 1;
4144 
4145 	return b;
4146 }
4147 
4148 #ifndef YY_EXIT_FAILURE
4149 #define YY_EXIT_FAILURE 2
4150 #endif
4151 
yy_fatal_error(yyconst char * msg)4152 static void yy_fatal_error (yyconst char* msg )
4153 {
4154     	(void) fprintf( stderr, "%s\n", msg );
4155 	exit( YY_EXIT_FAILURE );
4156 }
4157 
4158 /* Redefine yyless() so it works in section 3 code. */
4159 
4160 #undef yyless
4161 #define yyless(n) \
4162 	do \
4163 		{ \
4164 		/* Undo effects of setting up yytext. */ \
4165         int yyless_macro_arg = (n); \
4166         YY_LESS_LINENO(yyless_macro_arg);\
4167 		yytext[yyleng] = (yy_hold_char); \
4168 		(yy_c_buf_p) = yytext + yyless_macro_arg; \
4169 		(yy_hold_char) = *(yy_c_buf_p); \
4170 		*(yy_c_buf_p) = '\0'; \
4171 		yyleng = yyless_macro_arg; \
4172 		} \
4173 	while ( 0 )
4174 
4175 /* Accessor  methods (get/set functions) to struct members. */
4176 
4177 /** Get the current line number.
4178  *
4179  */
yyget_lineno(void)4180 int yyget_lineno  (void)
4181 {
4182 
4183     return yylineno;
4184 }
4185 
4186 /** Get the input stream.
4187  *
4188  */
yyget_in(void)4189 FILE *yyget_in  (void)
4190 {
4191         return yyin;
4192 }
4193 
4194 /** Get the output stream.
4195  *
4196  */
yyget_out(void)4197 FILE *yyget_out  (void)
4198 {
4199         return yyout;
4200 }
4201 
4202 /** Get the length of the current token.
4203  *
4204  */
yyget_leng(void)4205 yy_size_t yyget_leng  (void)
4206 {
4207         return yyleng;
4208 }
4209 
4210 /** Get the current token.
4211  *
4212  */
4213 
yyget_text(void)4214 char *yyget_text  (void)
4215 {
4216         return yytext;
4217 }
4218 
4219 /** Set the current line number.
4220  * @param line_number
4221  *
4222  */
yyset_lineno(int line_number)4223 void yyset_lineno (int  line_number )
4224 {
4225 
4226     yylineno = line_number;
4227 }
4228 
4229 /** Set the input stream. This does not discard the current
4230  * input buffer.
4231  * @param in_str A readable stream.
4232  *
4233  * @see yy_switch_to_buffer
4234  */
yyset_in(FILE * in_str)4235 void yyset_in (FILE *  in_str )
4236 {
4237         yyin = in_str ;
4238 }
4239 
yyset_out(FILE * out_str)4240 void yyset_out (FILE *  out_str )
4241 {
4242         yyout = out_str ;
4243 }
4244 
yyget_debug(void)4245 int yyget_debug  (void)
4246 {
4247         return yy_flex_debug;
4248 }
4249 
yyset_debug(int bdebug)4250 void yyset_debug (int  bdebug )
4251 {
4252         yy_flex_debug = bdebug ;
4253 }
4254 
yy_init_globals(void)4255 static int yy_init_globals (void)
4256 {
4257         /* Initialization is the same as for the non-reentrant scanner.
4258      * This function is called from yylex_destroy(), so don't allocate here.
4259      */
4260 
4261     (yy_buffer_stack) = 0;
4262     (yy_buffer_stack_top) = 0;
4263     (yy_buffer_stack_max) = 0;
4264     (yy_c_buf_p) = (char *) 0;
4265     (yy_init) = 0;
4266     (yy_start) = 0;
4267 
4268     (yy_state_buf) = 0;
4269     (yy_state_ptr) = 0;
4270     (yy_full_match) = 0;
4271     (yy_lp) = 0;
4272 
4273 /* Defined in main.c */
4274 #ifdef YY_STDINIT
4275     yyin = stdin;
4276     yyout = stdout;
4277 #else
4278     yyin = (FILE *) 0;
4279     yyout = (FILE *) 0;
4280 #endif
4281 
4282     /* For future reference: Set errno on error, since we are called by
4283      * yylex_init()
4284      */
4285     return 0;
4286 }
4287 
4288 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
yylex_destroy(void)4289 int yylex_destroy  (void)
4290 {
4291 
4292     /* Pop the buffer stack, destroying each element. */
4293 	while(YY_CURRENT_BUFFER){
4294 		yy_delete_buffer(YY_CURRENT_BUFFER  );
4295 		YY_CURRENT_BUFFER_LVALUE = NULL;
4296 		yypop_buffer_state();
4297 	}
4298 
4299 	/* Destroy the stack itself. */
4300 	yyfree((yy_buffer_stack) );
4301 	(yy_buffer_stack) = NULL;
4302 
4303     yyfree ( (yy_state_buf) );
4304     (yy_state_buf)  = NULL;
4305 
4306     /* Reset the globals. This is important in a non-reentrant scanner so the next time
4307      * yylex() is called, initialization will occur. */
4308     yy_init_globals( );
4309 
4310     return 0;
4311 }
4312 
4313 /*
4314  * Internal utility routines.
4315  */
4316 
4317 #ifndef yytext_ptr
yy_flex_strncpy(char * s1,yyconst char * s2,int n)4318 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4319 {
4320 	register int i;
4321 	for ( i = 0; i < n; ++i )
4322 		s1[i] = s2[i];
4323 }
4324 #endif
4325 
4326 #ifdef YY_NEED_STRLEN
yy_flex_strlen(yyconst char * s)4327 static int yy_flex_strlen (yyconst char * s )
4328 {
4329 	register int n;
4330 	for ( n = 0; s[n]; ++n )
4331 		;
4332 
4333 	return n;
4334 }
4335 #endif
4336 
yyalloc(yy_size_t size)4337 void *yyalloc (yy_size_t  size )
4338 {
4339 	return (void *) malloc( size );
4340 }
4341 
yyrealloc(void * ptr,yy_size_t size)4342 void *yyrealloc  (void * ptr, yy_size_t  size )
4343 {
4344 	/* The cast to (char *) in the following accommodates both
4345 	 * implementations that use char* generic pointers, and those
4346 	 * that use void* generic pointers.  It works with the latter
4347 	 * because both ANSI C and C++ allow castless assignment from
4348 	 * any pointer type to void*, and deal with argument conversions
4349 	 * as though doing an assignment.
4350 	 */
4351 	return (void *) realloc( (char *) ptr, size );
4352 }
4353 
yyfree(void * ptr)4354 void yyfree (void * ptr )
4355 {
4356 	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
4357 }
4358 
4359 #define YYTABLES_NAME "yytables"
4360 
4361 #line 761 "lacheck.l"
4362 
4363 
main(int argc,char * argv[])4364 int main(int argc, char *argv[])
4365 {
4366     /* allocate initial stacks */
4367     gstack = (tex_group *)malloc(gstack_size * sizeof(tex_group));
4368     istack = (input_ *)malloc(istack_size * sizeof(input_));
4369     if ( gstack == NULL || istack == NULL ) {
4370 	fprintf(stderr, "%s: not enough memory for stacks\n", PROGNAME);
4371 	exit(3);
4372     }
4373 
4374     if(argc > 1)
4375     {
4376         if ( (file_name = (char*) malloc(strlen(argv[1]) + 5)) == NULL ) {
4377 		fprintf(stderr, "%s: out of memory\n", PROGNAME);
4378 		exit(3);
4379 	}
4380 
4381 	strcpy(file_name, argv[1]);
4382 	strcat(file_name, ".tex" );
4383 
4384 	if ((yyin = fopen( file_name, "r")) != NULL )
4385 	{
4386 	    push(file_name, 3, 1);
4387 	    yylex();
4388 	    f_checkend(file_name);
4389 	}
4390 	else {
4391                  file_name[strlen(file_name) - 4] = '\0';
4392 		 if ((yyin = fopen( file_name, "r")) != NULL )
4393 		 {
4394 		     push(file_name, 3, 1);
4395 		     yylex();
4396 		     f_checkend(file_name);
4397 		 }
4398 		 else
4399 		     fprintf(stderr,
4400 			     "%s: Could not open : %s\n",PROGNAME, argv[1]);
4401 	     }
4402     }
4403     else
4404     {
4405 	printf("\n* %s *\n\n",PROGNAME);
4406 	printf("\t...a consistency checker for LaTeX documents.\n");
4407 	printf("$Id: lacheck.lex,v 1.26 1998/03/07 07:46:45 abraham Exp $\n\n");
4408 
4409 	printf("Usage:\n\tlacheck filename[.tex] <return>\n\n\n");
4410 
4411 	printf("\tFrom within Emacs:\n\n");
4412 	printf("\tM-x compile RET lacheck filename[.tex] RET\n\n");
4413 	printf("\tUse C-x ` to step through the messages.\n\n");
4414 	printf("\n\tThe found context is displayed in \"double quotes\"\n\n");
4415 	printf("Remark:\n\tAll messages are only warnings!\n\n");
4416 	printf("\tYour document may be right even though LaCheck says ");
4417 	printf("something else.\n\n");
4418     }
4419     return(0);
4420 }
4421 
yywrap(void)4422 int yywrap(void) { return 1; }
4423 
4424 #ifdef NEED_STRSTR
4425 char *
strstr(string,substring)4426 strstr(string, substring)
4427     register char *string;	/* String to search. */
4428     char *substring;		/* Substring to try to find in string. */
4429 {
4430     register char *a, *b;
4431 
4432     /* First scan quickly through the two strings looking for a
4433      * single-character match.  When it's found, then compare the
4434      * rest of the substring.
4435      */
4436 
4437     b = substring;
4438     if (*b == 0) {
4439 	return string;
4440     }
4441     for ( ; *string != 0; string += 1) {
4442 	if (*string != *b) {
4443 	    continue;
4444 	}
4445 	a = string;
4446 	while (1) {
4447 	    if (*b == 0) {
4448 		return string;
4449 	    }
4450 	    if (*a++ != *b++) {
4451 		break;
4452 	    }
4453 	}
4454 	b = substring;
4455     }
4456     return (char *) 0;
4457 }
4458 #endif /* NEED_STRSTR */
4459 
push(const char * p_name,int p_type,int p_line)4460 void push(const char *p_name, int p_type, int p_line)
4461 {
4462     if ( gstackp == gstack_size ) {	/* extend stack */
4463 	gstack_size *= 2;
4464 	gstack = (tex_group *)realloc(gstack, gstack_size * sizeof(tex_group));
4465 	if ( gstack == NULL ) {
4466 		fprintf(stderr, "%s: stack out of memory", PROGNAME);
4467 	exit(3);
4468     }
4469     }
4470 
4471     if ( (gstack[gstackp].s_name =
4472 		(char *)malloc(strlen(p_name) + 1)) == NULL ||
4473          (gstack[gstackp].s_file =
4474 		(char *)malloc(strlen(file_name) + 1)) == NULL ) {
4475 	fprintf(stderr, "%s: out of memory\n", PROGNAME);
4476 	exit(3);
4477     }
4478 
4479     strcpy(gstack[gstackp].s_name, p_name);
4480     gstack[gstackp].s_type = p_type;
4481     gstack[gstackp].s_line = p_line;
4482     gstack[gstackp].italic = (  (p_type == 4 || p_type == 5)
4483 			      ? 1
4484 			      : (  gstackp
4485 				 ? gstack[gstackp - 1].italic
4486 				 : 0));
4487     strcpy(gstack[gstackp].s_file,file_name);
4488     ++gstackp;
4489 
4490 }
4491 
input_file(char * file_nam)4492 void input_file(char *file_nam)
4493 {
4494     char *tmp_file_name;
4495     FILE *tmp_yyin;
4496 
4497     if ( (tmp_file_name = (char*) malloc(strlen(file_nam) + 5)) == NULL ) {
4498 	fprintf(stderr, "%s: out of memory\n", PROGNAME);
4499 	exit(3);
4500     }
4501     strcpy(tmp_file_name,file_nam);
4502 
4503     if (istackp == istack_size) {	/* extend stack */
4504 	istack_size *= 2;
4505 	istack = (input_ *)realloc(istack, istack_size * sizeof(input_));
4506 	if ( istack == NULL ) {
4507 		fprintf(stderr, "%s: \\input stack out of memory\n", PROGNAME);
4508 	exit(3);
4509         }
4510     }
4511 
4512     istack[istackp].stream = YY_CURRENT_BUFFER;
4513     istack[istackp].linenum = line_count;
4514     istack[istackp].name = file_name;
4515     ++istackp;
4516 
4517     (void) strcat(tmp_file_name, ".tex");
4518     if ((tmp_yyin = fopen( tmp_file_name, "r")) != NULL )
4519 	{
4520 	  yyin = tmp_yyin;
4521 	  yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));
4522 	  file_name = tmp_file_name;
4523 	  push(file_name, 3, 1);
4524           line_count = 1;
4525 	}
4526     else {
4527           tmp_file_name[strlen(tmp_file_name) - 4] = '\0';
4528 	  if ((tmp_yyin = fopen( tmp_file_name , "r")) != NULL )
4529 	    {
4530 		yyin = tmp_yyin;
4531 	   	yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));
4532 		file_name = tmp_file_name;
4533 		push(file_name, 3, 1);
4534    	        line_count = 1;
4535 	    }
4536           else
4537 	  {
4538 	       --istackp;
4539 	       free(tmp_file_name);
4540 	       printf("\"%s\", line %d: Could not open \"%s\"\n",
4541 			file_name,
4542 			line_count,
4543 			file_nam);
4544 	       input();
4545 	  }
4546 	 }
4547 }
4548 
pop(void)4549 void pop(void)
4550 {
4551     if ( gstackp == 0 )
4552     {
4553        	fprintf(stderr, "%s: Stack underflow\n", PROGNAME);
4554 	exit(4);
4555     }
4556     --gstackp;
4557 
4558     free(gstack[gstackp].s_name);
4559     free(gstack[gstackp].s_file);
4560 }
4561 
print_bg_command(char * name)4562 static void print_bg_command(char *name)
4563 {
4564 
4565     switch (CG_TYPE) {
4566 
4567     case 2:
4568 	printf("\\begin{%s}", name);
4569 	break;
4570 
4571     case 3:
4572 	printf("beginning of file %s", name);
4573 	break;
4574 
4575     case 4:
4576 	printf("math begin %s", name);
4577 	break;
4578 
4579     case 5:
4580 	printf("display math begin %s", name);
4581 	break;
4582 
4583     default:
4584 	printf("%s", name);
4585 
4586     }
4587 }
4588 
print_eg_command(char * name,int type)4589 static void print_eg_command(char *name, int type)
4590 {
4591 
4592     switch (type) {
4593 
4594     case 2:
4595 	printf("\\end{%s}", name);
4596 	break;
4597 
4598     case 3:
4599 	printf("end of file %s", name);
4600 	break;
4601 
4602     case 4:
4603 	printf("math end %s", name);
4604 	break;
4605 
4606     case 5:
4607 	printf("display math end %s", name);
4608 	break;
4609 
4610     default:
4611 	printf("%s", name);
4612 	break;
4613     }
4614 }
4615 
4616 
g_checkend(int n)4617 void g_checkend(int n)
4618 {
4619     if ( check_top_level_end(yytext,n) == 1 )
4620        {
4621        if (  CG_TYPE != n  )
4622 	 print_bad_match(yytext,n);
4623        else
4624 	pop();
4625        }
4626 }
4627 
e_checkend(int n,char * name)4628 void e_checkend(int n, char *name)
4629 {
4630    if ( check_top_level_end(name,n) == 1 )
4631     {
4632      if (  CG_TYPE != n  ||  strcmp( CG_NAME, name ) != 0 )
4633     	print_bad_match(name,n);
4634 
4635      if ( CG_TYPE != 3 )
4636         pop();
4637 
4638     }
4639 }
4640 
f_checkend(char * name)4641 void f_checkend(char *name)
4642 {
4643     if ( check_top_level_end(name,3) == 1 )
4644      {
4645        if (  CG_TYPE != 3  ||  strcmp( CG_NAME, name ) != 0 )
4646 
4647     	while( CG_TYPE != 3  )
4648 	{
4649 	  print_bad_match(name,3);
4650           pop();
4651         }
4652 
4653          pop();
4654      }
4655 }
4656 
print_bad_match(char * end_command,int type)4657 void print_bad_match(char *end_command, int type)
4658 {
4659 	  printf("\"%s\", line %d: <- unmatched \"",
4660 	         file_name,
4661 		 line_count);
4662 	  print_eg_command(end_command, type);
4663 	  printf("\"\n");
4664 
4665 	  printf("\"%s\", line %d: -> unmatched \"",
4666 	         CG_FILE,
4667 		 CG_LINE);
4668 	  print_bg_command(CG_NAME);
4669 	  printf("\"\n");
4670 	  warn_count += 2;
4671 }
4672 
check_top_level_end(char * end_command,int type)4673 int check_top_level_end(char *end_command, int type)
4674 {
4675     if ( gstackp == 0 )
4676 	{
4677 	 printf("\"%s\", line %d: \"",
4678 	        file_name,
4679 		line_count);
4680 	 print_eg_command(end_command, type);
4681 	 printf("\" found at top level\n");
4682 	 ++warn_count;
4683          return(0);
4684 	}
4685     else
4686     	return(1);
4687 }
4688 
linecount(void)4689 void linecount(void)
4690 {
4691   int i;
4692   for (i = 0; i < yyleng; i++)
4693     if(yytext[i] == '\n')
4694       line_count++;
4695 }
4696 
4697 
4698