Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/src/pre.cpp

Source at commit 1322 created 9 years 5 months ago.
By meklort, Add doxygen to utils folder
1
2#line 3 "<stdout>"
3
4#define YY_INT_ALIGNED short int
5
6/* A lexical scanner generated by flex */
7
8#define yy_create_buffer preYY_create_buffer
9#define yy_delete_buffer preYY_delete_buffer
10#define yy_flex_debug preYY_flex_debug
11#define yy_init_buffer preYY_init_buffer
12#define yy_flush_buffer preYY_flush_buffer
13#define yy_load_buffer_state preYY_load_buffer_state
14#define yy_switch_to_buffer preYY_switch_to_buffer
15#define yyin preYYin
16#define yyleng preYYleng
17#define yylex preYYlex
18#define yylineno preYYlineno
19#define yyout preYYout
20#define yyrestart preYYrestart
21#define yytext preYYtext
22#define yywrap preYYwrap
23#define yyalloc preYYalloc
24#define yyrealloc preYYrealloc
25#define yyfree preYYfree
26
27#define FLEX_SCANNER
28#define YY_FLEX_MAJOR_VERSION 2
29#define YY_FLEX_MINOR_VERSION 5
30#define YY_FLEX_SUBMINOR_VERSION 35
31#if YY_FLEX_SUBMINOR_VERSION > 0
32#define FLEX_BETA
33#endif
34
35/* First, we deal with platform-specific or compiler-specific issues. */
36
37/* begin standard C headers. */
38#include <stdio.h>
39#include <string.h>
40#include <errno.h>
41#include <stdlib.h>
42
43/* end standard C headers. */
44
45/* flex integer type definitions */
46
47#ifndef FLEXINT_H
48#define FLEXINT_H
49
50/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
51
52#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
53
54/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55 * if you want the limit (max/min) macros for int types.
56 */
57#ifndef __STDC_LIMIT_MACROS
58#define __STDC_LIMIT_MACROS 1
59#endif
60
61#include <inttypes.h>
62typedef int8_t flex_int8_t;
63typedef uint8_t flex_uint8_t;
64typedef int16_t flex_int16_t;
65typedef uint16_t flex_uint16_t;
66typedef int32_t flex_int32_t;
67typedef uint32_t flex_uint32_t;
68#else
69typedef signed char flex_int8_t;
70typedef short int flex_int16_t;
71typedef int flex_int32_t;
72typedef unsigned char flex_uint8_t;
73typedef unsigned short int flex_uint16_t;
74typedef unsigned int flex_uint32_t;
75#endif /* ! C99 */
76
77/* Limits of integral types. */
78#ifndef INT8_MIN
79#define INT8_MIN (-128)
80#endif
81#ifndef INT16_MIN
82#define INT16_MIN (-32767-1)
83#endif
84#ifndef INT32_MIN
85#define INT32_MIN (-2147483647-1)
86#endif
87#ifndef INT8_MAX
88#define INT8_MAX (127)
89#endif
90#ifndef INT16_MAX
91#define INT16_MAX (32767)
92#endif
93#ifndef INT32_MAX
94#define INT32_MAX (2147483647)
95#endif
96#ifndef UINT8_MAX
97#define UINT8_MAX (255U)
98#endif
99#ifndef UINT16_MAX
100#define UINT16_MAX (65535U)
101#endif
102#ifndef UINT32_MAX
103#define UINT32_MAX (4294967295U)
104#endif
105
106#endif /* ! FLEXINT_H */
107
108#ifdef __cplusplus
109
110/* The "const" storage-class-modifier is valid. */
111#define YY_USE_CONST
112
113#else/* ! __cplusplus */
114
115/* C99 requires __STDC__ to be defined as 1. */
116#if defined (__STDC__)
117
118#define YY_USE_CONST
119
120#endif/* defined (__STDC__) */
121#endif/* ! __cplusplus */
122
123#ifdef YY_USE_CONST
124#define yyconst const
125#else
126#define yyconst
127#endif
128
129/* Returned upon end-of-file. */
130#define YY_NULL 0
131
132/* Promotes a possibly negative, possibly signed char to an unsigned
133 * integer for use as an array index. If the signed char is negative,
134 * we want to instead treat it as an 8-bit unsigned char, hence the
135 * double cast.
136 */
137#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
138
139/* Enter a start condition. This macro really ought to take a parameter,
140 * but we do it the disgusting crufty way forced on us by the ()-less
141 * definition of BEGIN.
142 */
143#define BEGIN (yy_start) = 1 + 2 *
144
145/* Translate the current start state into a value that can be later handed
146 * to BEGIN to return to the state. The YYSTATE alias is for lex
147 * compatibility.
148 */
149#define YY_START (((yy_start) - 1) / 2)
150#define YYSTATE YY_START
151
152/* Action number for EOF rule of a given start state. */
153#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
154
155/* Special action meaning "start processing a new file". */
156#define YY_NEW_FILE preYYrestart(preYYin )
157
158#define YY_END_OF_BUFFER_CHAR 0
159
160/* Size of default input buffer. */
161#ifndef YY_BUF_SIZE
162#define YY_BUF_SIZE 262144
163#endif
164
165/* The state buf must be large enough to hold one state per character in the main buffer.
166 */
167#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
168
169#ifndef YY_TYPEDEF_YY_BUFFER_STATE
170#define YY_TYPEDEF_YY_BUFFER_STATE
171typedef struct yy_buffer_state *YY_BUFFER_STATE;
172#endif
173
174#ifndef YY_TYPEDEF_YY_SIZE_T
175#define YY_TYPEDEF_YY_SIZE_T
176typedef size_t yy_size_t;
177#endif
178
179extern yy_size_t preYYleng;
180
181extern FILE *preYYin, *preYYout;
182
183#define EOB_ACT_CONTINUE_SCAN 0
184#define EOB_ACT_END_OF_FILE 1
185#define EOB_ACT_LAST_MATCH 2
186
187 #define YY_LESS_LINENO(n)
188
189/* Return all but the first "n" matched characters back to the input stream. */
190#define yyless(n) \
191do \
192{ \
193/* Undo effects of setting up preYYtext. */ \
194 int yyless_macro_arg = (n); \
195 YY_LESS_LINENO(yyless_macro_arg);\
196*yy_cp = (yy_hold_char); \
197YY_RESTORE_YY_MORE_OFFSET \
198(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
199YY_DO_BEFORE_ACTION; /* set up preYYtext again */ \
200} \
201while ( 0 )
202
203#define unput(c) yyunput( c, (yytext_ptr) )
204
205#ifndef YY_STRUCT_YY_BUFFER_STATE
206#define YY_STRUCT_YY_BUFFER_STATE
207struct yy_buffer_state
208{
209FILE *yy_input_file;
210
211char *yy_ch_buf;/* input buffer */
212char *yy_buf_pos;/* current position in input buffer */
213
214/* Size of input buffer in bytes, not including room for EOB
215 * characters.
216 */
217yy_size_t yy_buf_size;
218
219/* Number of characters read into yy_ch_buf, not including EOB
220 * characters.
221 */
222yy_size_t yy_n_chars;
223
224/* Whether we "own" the buffer - i.e., we know we created it,
225 * and can realloc() it to grow it, and should free() it to
226 * delete it.
227 */
228int yy_is_our_buffer;
229
230/* Whether this is an "interactive" input source; if so, and
231 * if we're using stdio for input, then we want to use getc()
232 * instead of fread(), to make sure we stop fetching input after
233 * each newline.
234 */
235int yy_is_interactive;
236
237/* Whether we're considered to be at the beginning of a line.
238 * If so, '^' rules will be active on the next match, otherwise
239 * not.
240 */
241int yy_at_bol;
242
243 int yy_bs_lineno; /**< The line count. */
244 int yy_bs_column; /**< The column count. */
245
246/* Whether to try to fill the input buffer when we reach the
247 * end of it.
248 */
249int yy_fill_buffer;
250
251int yy_buffer_status;
252
253#define YY_BUFFER_NEW 0
254#define YY_BUFFER_NORMAL 1
255/* When an EOF's been seen but there's still some text to process
256 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
257 * shouldn't try reading from the input source any more. We might
258 * still have a bunch of tokens to match, though, because of
259 * possible backing-up.
260 *
261 * When we actually see the EOF, we change the status to "new"
262 * (via preYYrestart()), so that the user can continue scanning by
263 * just pointing preYYin at a new input file.
264 */
265#define YY_BUFFER_EOF_PENDING 2
266
267};
268#endif /* !YY_STRUCT_YY_BUFFER_STATE */
269
270/* Stack of input buffers. */
271static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
272static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
273static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
274
275/* We provide macros for accessing buffer states in case in the
276 * future we want to put the buffer states in a more general
277 * "scanner state".
278 *
279 * Returns the top of the stack, or NULL.
280 */
281#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
282 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
283 : NULL)
284
285/* Same as previous macro, but useful when we know that the buffer stack is not
286 * NULL or when we need an lvalue. For internal use only.
287 */
288#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
289
290/* yy_hold_char holds the character lost when preYYtext is formed. */
291static char yy_hold_char;
292static yy_size_t yy_n_chars;/* number of characters read into yy_ch_buf */
293yy_size_t preYYleng;
294
295/* Points to current character in buffer. */
296static char *yy_c_buf_p = (char *) 0;
297static int yy_init = 0;/* whether we need to initialize */
298static int yy_start = 0;/* start state number */
299
300/* Flag which is used to allow preYYwrap()'s to do buffer switches
301 * instead of setting up a fresh preYYin. A bit of a hack ...
302 */
303static int yy_did_buffer_switch_on_eof;
304
305void preYYrestart (FILE *input_file );
306void preYY_switch_to_buffer (YY_BUFFER_STATE new_buffer );
307YY_BUFFER_STATE preYY_create_buffer (FILE *file,int size );
308void preYY_delete_buffer (YY_BUFFER_STATE b );
309void preYY_flush_buffer (YY_BUFFER_STATE b );
310void preYYpush_buffer_state (YY_BUFFER_STATE new_buffer );
311void preYYpop_buffer_state (void );
312
313static void preYYensure_buffer_stack (void );
314static void preYY_load_buffer_state (void );
315static void preYY_init_buffer (YY_BUFFER_STATE b,FILE *file );
316
317#define YY_FLUSH_BUFFER preYY_flush_buffer(YY_CURRENT_BUFFER )
318
319YY_BUFFER_STATE preYY_scan_buffer (char *base,yy_size_t size );
320YY_BUFFER_STATE preYY_scan_string (yyconst char *yy_str );
321YY_BUFFER_STATE preYY_scan_bytes (yyconst char *bytes,yy_size_t len );
322
323void *preYYalloc (yy_size_t );
324void *preYYrealloc (void *,yy_size_t );
325void preYYfree (void * );
326
327#define yy_new_buffer preYY_create_buffer
328
329#define yy_set_interactive(is_interactive) \
330{ \
331if ( ! YY_CURRENT_BUFFER ){ \
332 preYYensure_buffer_stack (); \
333YY_CURRENT_BUFFER_LVALUE = \
334 preYY_create_buffer(preYYin,YY_BUF_SIZE ); \
335} \
336YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
337}
338
339#define yy_set_bol(at_bol) \
340{ \
341if ( ! YY_CURRENT_BUFFER ){\
342 preYYensure_buffer_stack (); \
343YY_CURRENT_BUFFER_LVALUE = \
344 preYY_create_buffer(preYYin,YY_BUF_SIZE ); \
345} \
346YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
347}
348
349#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
350
351/* Begin user sect3 */
352
353#define preYYwrap(n) 1
354#define YY_SKIP_YYWRAP
355
356typedef unsigned char YY_CHAR;
357
358FILE *preYYin = (FILE *) 0, *preYYout = (FILE *) 0;
359
360typedef int yy_state_type;
361
362extern int preYYlineno;
363
364int preYYlineno = 1;
365
366extern char *preYYtext;
367#define yytext_ptr preYYtext
368
369static yy_state_type yy_get_previous_state (void );
370static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
371static int yy_get_next_buffer (void );
372static void yy_fatal_error (yyconst char msg[] );
373
374/* Done after the current pattern has been matched and before the
375 * corresponding action - sets up preYYtext.
376 */
377#define YY_DO_BEFORE_ACTION \
378(yytext_ptr) = yy_bp; \
379preYYleng = (size_t) (yy_cp - yy_bp); \
380(yy_hold_char) = *yy_cp; \
381*yy_cp = '\0'; \
382(yy_c_buf_p) = yy_cp;
383
384#define YY_NUM_RULES 166
385#define YY_END_OF_BUFFER 167
386/* This struct is not used in this scanner,
387 but its presence is necessary. */
388struct yy_trans_info
389{
390flex_int32_t yy_verify;
391flex_int32_t yy_nxt;
392};
393static yyconst flex_int16_t yy_acclist[1240] =
394 { 0,
395 148, 148, 167, 165, 166, 1, 165, 166, 164, 166,
396 3, 165, 166, 165, 166, 165, 166, 2, 165, 166,
397 6, 165, 166, 1, 6, 165, 166, 6, 165, 166,
398 6, 164, 166, 3, 6, 165, 166, 5, 165, 166,
399 6, 165, 166, 6, 165, 166, 6, 165, 166, 2,
400 6, 165, 166, 53, 165, 166, 1, 53, 165, 166,
401 49, 164, 166, 3, 53, 165, 166, 53, 165, 166,
402 53, 165, 166, 50, 53, 165, 166, 50, 53, 165,
403 166, 50, 53, 165, 166, 50, 53, 165, 166, 50,
404 53, 165, 166, 50, 53, 165, 166, 2, 53, 165,
405
406 166, 77, 165, 166, 1, 77, 165, 166, 75, 164,
407 166, 3, 77, 165, 166, 77, 165, 166, 77, 165,
408 166, 76, 77, 165, 166, 76, 77, 165, 166, 76,
409 77, 165, 166, 2, 77, 165, 166, 78, 81, 165,
410 166, 1, 78, 81, 165, 166, 84, 164, 166, 3,
411 78, 81, 165, 166, 80, 81, 165, 166, 81, 165,
412 166, 81, 165, 166, 78, 81, 165, 166, 2, 78,
413 81, 165, 166, 85, 88, 165, 166, 1, 85, 88,
414 165, 166, 3, 85, 88, 165, 166, 87, 88, 165,
415 166, 85, 88, 165, 166, 85, 88, 165, 166, 88,
416
417 165, 166, 2, 85, 88, 165, 166, 23, 165, 166,
418 1, 23, 165, 166, 24, 164, 166, 3, 23, 165,
419 166, 16, 23, 165, 166, 23, 165, 166, 23, 165,
420 166, 23, 165, 166, 21, 23, 165, 166,16404, 23,
421 165, 166, 21, 23, 165, 166,16404, 11, 23, 165,
422 166, 12, 23, 165, 166, 2, 23, 165, 166, 17,
423 165, 166, 1, 17, 165, 166, 19, 165, 166, 17,
424 165, 166, 17, 165, 166, 165, 166, 2, 17, 165,
425 166, 165, 166, 1, 165, 166, 3, 165, 166, 165,
426 166, 165, 166, 2, 165, 166, 90, 165, 166, 94,
427
428 165, 166, 1, 94, 165, 166, 92, 164, 166, 3,
429 94, 165, 166, 94, 165, 166, 94, 165, 166, 94,
430 165, 166, 2, 94, 165, 166, 8289, 165, 166,16479,
431 16481,16482, 165, 166, 101, 165, 166, 102, 165, 166,
432 100, 165, 166, 165, 166, 104, 165, 166, 165, 166,
433 160, 165, 166, 1, 160, 165, 166, 148, 160, 165,
434 166, 147, 164, 166, 3, 160, 165, 166, 151, 160,
435 165, 166, 143, 160, 165, 166, 152, 160, 165, 166,
436 160, 165, 166, 160, 165, 166, 150, 160, 165, 166,
437 144, 160, 165, 166, 160, 165, 166, 2, 160, 165,
438
439 166, 70, 165, 166, 1, 70, 165, 166, 69, 164,
440 166, 3, 70, 165, 166, 70, 165, 166, 70, 165,
441 166, 2, 70, 165, 166, 68, 70, 165, 166, 1,
442 68, 70, 165, 166, 68, 70, 165, 166, 68, 69,
443 164, 166, 3, 68, 70, 165, 166, 67, 70, 165,
444 166, 68, 70, 165, 166, 68, 70, 165, 166, 2,
445 68, 70, 165, 166, 120, 122, 165, 166, 1, 122,
446 165, 166, 121, 164, 166, 3, 120, 122, 165, 166,
447 122, 165, 166, 122, 165, 166, 120, 122, 165, 166,
448 122, 165, 166, 2, 120, 122, 165, 166, 123, 145,
449
450 165, 166, 1, 123, 145, 165, 166, 125, 164, 166,
451 3, 123, 145, 165, 166, 145, 165, 166, 123, 145,
452 165, 166, 123, 145, 165, 166, 144, 145, 165, 166,
453 2, 123, 145, 165, 166, 122, 165, 166, 122, 165,
454 166, 122, 165, 166, 133, 137, 138, 165, 166, 1,
455 133, 138, 165, 166, 134, 164, 166, 3, 133, 137,
456 138, 165, 166, 137, 138, 165, 166, 133, 137, 138,
457 165, 166, 138, 165, 166, 2, 133, 137, 138, 165,
458 166, 130, 132, 165, 166, 1, 132, 165, 166, 131,
459 164, 166, 3, 130, 132, 165, 166, 132, 165, 166,
460
461 130, 132, 165, 166, 130, 132, 165, 166, 2, 130,
462 132, 165, 166, 141, 142, 165, 166, 1, 142, 165,
463 166, 3, 141, 142, 165, 166, 141, 142, 165, 166,
464 141, 142, 165, 166, 2, 141, 142, 165, 166, 59,
465 165, 166, 1, 59, 165, 166, 60, 164, 166, 3,
466 59, 165, 166, 59, 165, 166, 59, 165, 166, 58,
467 59, 165, 166, 59, 165, 166, 58, 59, 165, 166,
468 2, 59, 165, 166, 66, 165, 166, 1, 66, 165,
469 166, 64, 164, 166, 3, 66, 165, 166, 66, 165,
470 166, 66, 165, 166, 62, 66, 165, 166, 66, 165,
471
472 166, 2, 66, 165, 166, 65, 66, 165, 166, 63,
473 66, 165, 166, 158, 165, 166, 1, 158, 165, 166,
474 3, 158, 165, 166, 155, 158, 165, 166, 158, 165,
475 166, 158, 165, 166, 158, 165, 166, 2, 158, 165,
476 166, 159, 165, 166, 1, 159, 165, 166, 3, 159,
477 165, 166, 157, 159, 165, 166, 159, 165, 166, 159,
478 165, 166, 159, 165, 166, 2, 159, 165, 166, 54,
479 165, 166, 52, 165, 166, 1, 52, 165, 166, 3,
480 52, 165, 166, 52, 165, 166, 52, 165, 166, 52,
481 165, 166, 2, 52, 165, 166, 31, 165, 166, 1,
482
483 31, 165, 166, 29, 164, 166, 3, 31, 165, 166,
484 28, 31, 165, 166, 31, 165, 166, 25, 31, 165,
485 166, 26, 31, 165, 166, 31, 165, 166, 31, 165,
486 166, 30, 31, 165, 166, 2, 31, 165, 166, 35,
487 165, 166, 1, 35, 165, 166, 3, 35, 165, 166,
488 32, 35, 165, 166, 35, 165, 166, 35, 165, 166,
489 35, 165, 166, 2, 35, 165, 166, 116, 165, 166,
490 1, 116, 165, 166, 3, 116, 165, 166, 116, 165,
491 166, 116, 165, 166, 114, 116, 165, 166, 2, 116,
492 165, 166, 162, 163, 6, 6, 5, 6, 50, 50,
493
494 50, 50, 50, 50, 50, 50, 50, 83, 162, 82,
495 163, 76, 76, 76, 76, 78, 78, 85, 83, 85,
496 162, 82, 85, 163, 85, 86, 8212, 21,16404, 22,
497 21,16404, 17, 17, 162, 17, 163, 17, 18, 91,
498 162, 163, 89, 90, 92, 162, 163, 93, 8289, 8290,
499 8287, 8289,16479,16481,16482, 102, 101, 102, 100, 104,
500 104, 99, 148, 149, 105, 162, 106, 163, 144, 146,
501 68, 68, 67, 120, 107, 109, 162, 108, 163, 120,
502 123, 124, 123, 163, 123, 119, 119, 162, 133, 137,
503 133, 137, 135, 137, 162, 136, 137, 163, 133, 137,
504
505 130, 127, 129, 162, 128, 130, 163, 130, 141, 139,
506 141, 162, 140, 141, 163, 141, 58, 55, 58, 62,
507 61, 63, 154, 162, 153, 163, 156, 54, 51, 33,
508 162, 33, 163, 34, 114, 162, 163, 4,16391, 50,
509 50, 50, 50, 50, 43, 50, 50, 50, 50, 50,
510 83, 83, 162, 82, 82, 163, 76, 76, 76, 71,
511 76, 76, 79, 4, 78, 83, 85, 83, 85, 162,
512 82, 85, 82, 85, 163, 4, 85, 15, 15, 21,
513 16404, 17, 162, 17, 163, 4, 17, 162, 163, 4,
514 4, 91, 162, 163, 4, 96, 103, 149, 105, 105,
515
516 162, 106, 106, 163, 108, 163, 4, 120, 123, 163,
517 4, 123, 118, 137, 162, 137, 163, 4, 133, 137,
518 4, 137, 126, 130, 163, 4, 130, 141, 162, 141,
519 163, 4, 141, 58, 27, 161,16391, 9, 8199, 50,
520 50, 50, 50, 50, 50, 50, 50, 50, 50, 83,
521 161, 76, 72, 76, 76, 76, 79, 83, 85, 161,
522 14, 13, 14, 21,16404, 17, 161, 161, 161, 104,
523 108, 110, 137, 161, 141, 161, 58, 27, 8199, 9,
524 50, 50, 44, 47, 45, 45, 50, 50, 50, 50,
525 50, 50, 50, 73, 76, 74, 76, 76, 13, 21,
526
527 16404, 112, 58, 8, 9, 50, 50, 48, 40, 39,
528 50, 50, 50, 46, 21,16404, 111, 113, 115, 58,
529 9, 38, 42, 41,16420, 37, 10, 58, 9, 8228,
530 57, 56, 9, 8228, 117, 9, 9, 9, 9
531 } ;
532
533static yyconst flex_int16_t yy_accept[1158] =
534 { 0,
535 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
536 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
537 1, 1, 1, 1, 1, 1, 1, 2, 3, 3,
538 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
539 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
540 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
541 3, 3, 3, 3, 3, 3, 3, 4, 6, 9,
542 11, 14, 16, 18, 21, 24, 28, 31, 34, 38,
543 41, 44, 47, 50, 54, 57, 61, 64, 68, 71,
544 74, 78, 82, 86, 90, 94, 98, 102, 105, 109,
545
546 112, 116, 119, 122, 126, 130, 134, 138, 142, 147,
547 150, 155, 159, 162, 165, 169, 174, 178, 183, 188,
548 192, 196, 200, 203, 208, 211, 215, 218, 222, 226,
549 229, 232, 235, 240, 243, 248, 252, 256, 260, 263,
550 267, 270, 273, 276, 278, 282, 284, 287, 290, 292,
551 294, 297, 300, 303, 307, 310, 314, 317, 320, 323,
552 327, 333, 335, 338, 341, 344, 346, 349, 351, 354,
553 358, 362, 365, 369, 373, 377, 381, 384, 387, 391,
554 395, 398, 402, 405, 409, 412, 416, 419, 422, 426,
555 430, 435, 439, 443, 448, 452, 456, 460, 465, 469,
556
557 473, 476, 481, 484, 487, 491, 494, 499, 503, 508,
558 511, 516, 519, 523, 527, 531, 536, 539, 542, 545,
559 550, 555, 558, 564, 568, 573, 576, 582, 586, 590,
560 593, 598, 601, 605, 609, 614, 618, 622, 627, 631,
561 635, 640, 643, 647, 650, 654, 657, 660, 664, 667,
562 671, 675, 678, 682, 685, 689, 692, 695, 699, 702,
563 706, 710, 714, 717, 721, 725, 729, 732, 735, 738,
564 742, 745, 749, 753, 757, 760, 763, 766, 770, 773,
565 776, 780, 784, 787, 790, 793, 797, 800, 804, 807,
566 811, 815, 818, 822, 826, 829, 832, 836, 840, 843,
567
568 847, 851, 855, 858, 861, 864, 868, 871, 875, 879,
569 882, 885, 889, 893, 894, 895, 895, 896, 897, 898,
570 899, 899, 899, 899, 900, 901, 902, 903, 904, 905,
571 906, 907, 908, 910, 912, 913, 914, 915, 916, 917,
572 917, 917, 918, 919, 922, 925, 926, 927, 927, 927,
573 927, 928, 930, 931, 931, 933, 934, 936, 938, 939,
574 940, 940, 941, 942, 943, 943, 943, 944, 945, 945,
575 946, 947, 948, 948, 949, 949, 950, 951, 952, 956,
576 956, 956, 957, 958, 959, 960, 960, 961, 961, 962,
577 963, 964, 964, 965, 967, 969, 970, 971, 971, 972,
578
579 973, 974, 975, 976, 978, 980, 981, 981, 981, 981,
580 981, 981, 981, 981, 981, 981, 981, 982, 983, 985,
581 986, 987, 989, 989, 989, 991, 992, 993, 996, 999,
582 1001, 1001, 1002, 1003, 1005, 1008, 1009, 1010, 1013, 1016,
583 1017, 1018, 1019, 1019, 1020, 1021, 1022, 1023, 1025, 1027,
584 1028, 1029, 1030, 1030, 1030, 1030, 1032, 1034, 1035, 1036,
585 1037, 1038, 1039, 1039, 1039, 1040, 1041, 1042, 1043, 1044,
586 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1054, 1055,
587 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1063, 1064, 1064,
588 1064, 1066, 1068, 1071, 1073, 1076, 1078, 1079, 1079, 1080,
589
590 1080, 1080, 1082, 1084, 1086, 1088, 1089, 1090, 1091, 1093,
591 1094, 1095, 1096, 1097, 1097, 1098, 1098, 1099, 1100, 1102,
592 1103, 1105, 1107, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
593 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
594 1109, 1109, 1111, 1113, 1113, 1114, 1116, 1118, 1121, 1123,
595 1123, 1123, 1124, 1126, 1128, 1130, 1132, 1134, 1135, 1135,
596 1136, 1136, 1136, 1137, 1137, 1138, 1138, 1139, 1139, 1140,
597 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150,
598 1152, 1153, 1155, 1156, 1157, 1157, 1158, 1158, 1161, 1162,
599 1164, 1164, 1164, 1166, 1168, 1169, 1170, 1171, 1172, 1172,
600
601 1172, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
602 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1175,
603 1177, 1178, 1178, 1179, 1179, 1179, 1179, 1179, 1179, 1180,
604 1180, 1181, 1181, 1182, 1183, 1185, 1186, 1187, 1188, 1189,
605 1190, 1191, 1192, 1193, 1194, 1195, 1195, 1196, 1198, 1199,
606 1199, 1199, 1200, 1200, 1200, 1202, 1202, 1202, 1202, 1202,
607 1202, 1202, 1202, 1202, 1202, 1203, 1203, 1203, 1203, 1203,
608 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
609 1203, 1204, 1204, 1204, 1204, 1204, 1204, 1205, 1205, 1206,
610 1206, 1207, 1208, 1208, 1208, 1209, 1210, 1211, 1212, 1213,
611
612 1214, 1215, 1215, 1215, 1217, 1218, 1218, 1218, 1218, 1218,
613 1218, 1218, 1219, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
614 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
615 1221, 1221, 1221, 1221, 1222, 1222, 1223, 1223, 1224, 1225,
616 1226, 1227, 1227, 1227, 1227, 1227, 1228, 1228, 1228, 1228,
617 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228,
618 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1229, 1229,
619 1229, 1230, 1230, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
620 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
621 1231, 1231, 1231, 1232, 1233, 1233, 1233, 1233, 1234, 1234,
622
623 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1236, 1236, 1236,
624 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1237, 1237,
625 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
626 1237, 1237, 1237, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
627 1238, 1238, 1238, 1238, 1239, 1239, 1239, 1239, 1239, 1239,
628 1239, 1239, 1239, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
629 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
630 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
631 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
632 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
633
634 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
635 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
636 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
637 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
638 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
639 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
640 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
641 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
642 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
643 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
644
645 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
646 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
647 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
648 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
649 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
650 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
651 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
652 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
653 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
654 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
655
656 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
657 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
658 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
659 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
660 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
661 1240, 1240, 1240, 1240, 1240, 1240, 1240
662 } ;
663
664static yyconst flex_int32_t yy_ec[256] =
665 { 0,
666 1, 1, 1, 1, 1, 2, 1, 1, 3, 4,
667 1, 1, 5, 1, 1, 1, 1, 1, 1, 1,
668 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
669 1, 3, 6, 7, 8, 9, 1, 1, 10, 11,
670 12, 13, 1, 14, 15, 16, 17, 18, 19, 18,
671 18, 18, 18, 18, 18, 20, 20, 21, 1, 22,
672 23, 24, 25, 26, 27, 27, 28, 27, 27, 27,
673 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
674 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
675 29, 30, 31, 1, 27, 1, 32, 33, 34, 35,
676
677 36, 37, 38, 39, 40, 38, 41, 42, 43, 44,
678 45, 46, 38, 47, 48, 49, 50, 51, 38, 52,
679 53, 38, 54, 1, 55, 1, 1, 1, 1, 1,
680 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
681 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
682 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
683 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
684 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
685 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
686 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
687
688 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
689 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
690 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
691 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
692 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
693 1, 1, 1, 1, 1
694 } ;
695
696static yyconst flex_int32_t yy_meta[57] =
697 { 0,
698 1, 2, 3, 4, 5, 6, 7, 1, 1, 8,
699 9, 6, 10, 1, 11, 12, 13, 14, 14, 14,
700 1, 15, 6, 6, 1, 16, 17, 17, 1, 18,
701 1, 17, 17, 17, 17, 17, 17, 17, 17, 17,
702 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
703 17, 17, 17, 1, 1, 1
704 } ;
705
706static yyconst flex_int16_t yy_base[1265] =
707 { 0,
708 0, 4, 9, 64, 120, 0, 176, 0, 26, 37,
709 231, 235, 291, 0, 346, 350, 357, 383, 439, 0,
710 53, 494, 524, 0, 577, 0, 633, 0, 59, 498,
711 688, 692, 697, 702, 757, 812, 868, 0, 923, 978,
712 716, 730, 763, 787, 793, 803, 1034, 0, 1090, 0,
713 1135, 0, 930, 937, 941, 959, 1162, 0, 1214, 1218,
714 1273, 1328, 1225, 1262, 1384, 0, 2823, 5434, 5434, 5434,
715 5434, 2, 2793, 5434, 5434, 5434, 71, 5434, 5434, 5434,
716 3, 2791, 77, 5434, 5434, 5434, 5434, 5434, 5, 2785,
717 0, 2766, 2768, 4, 57, 2755, 5434, 5434, 5434, 5434,
718
719 5434, 10, 2773, 0, 8, 2750, 5434, 0, 0, 5434,
720 0, 5434, 2756, 32, 2756, 0, 0, 0, 0, 5434,
721 58, 2755, 0, 0, 5434, 5434, 5434, 5434, 5434, 2742,
722 60, 2739, 103, 33, 725, 5434, 5434, 5434, 0, 0,
723 5434, 73, 2738, 0, 0, 0, 78, 227, 240, 234,
724 238, 29, 2757, 2755, 5434, 2749, 99, 242, 106, 2739,
725 362, 0, 2737, 2728, 2722, 2702, 247, 2708, 5434, 5434,
726 110, 5434, 5434, 5434, 2699, 5434, 253, 2681, 5434, 0,
727 239, 5434, 5434, 5434, 5434, 5434, 255, 2679, 5434, 5434,
728 5434, 246, 5434, 5434, 5434, 256, 2678, 5434, 0, 5434,
729
730 5434, 0, 2672, 258, 2659, 1415, 0, 0, 0, 5434,
731 0, 2665, 261, 2656, 0, 0, 2661, 263, 245, 366,
732 0, 5434, 367, 266, 376, 83, 377, 0, 5434, 5434,
733 0, 2656, 271, 2647, 0, 0, 5434, 0, 272, 2645,
734 0, 5434, 5434, 5434, 5434, 273, 2644, 0, 391, 2628,
735 5434, 5434, 5434, 5434, 5434, 343, 2638, 0, 2656, 5434,
736 5434, 0, 5434, 5434, 5434, 5434, 386, 2634, 0, 5434,
737 5434, 5434, 5434, 5434, 392, 2632, 0, 5434, 0, 5434,
738 5434, 5434, 397, 2628, 393, 5434, 5434, 5434, 5434, 5434,
739 5434, 2620, 5434, 5434, 398, 2624, 5434, 5434, 5434, 5434,
740
741 5434, 5434, 399, 2623, 0, 5434, 5434, 5434, 5434, 404,
742 2621, 0, 5434, 2606, 2600, 0, 5434, 501, 5434, 494,
743 415, 408, 507, 0, 2576, 2519, 382, 2520, 705, 2507,
744 2509, 2506, 2523, 2492, 0, 383, 2471, 800, 0, 2480,
745 406, 1462, 0, 523, 525, 1481, 5434, 2478, 417, 534,
746 5434, 720, 5434, 2482, 970, 0, 2472, 2462, 1500, 5434,
747 365, 5434, 730, 524, 1519, 426, 5434, 505, 2457, 5434,
748 345, 387, 1540, 5434, 2455, 747, 5434, 5434, 760, 2445,
749 374, 2445, 2443, 2439, 2436, 2416, 504, 2414, 530, 5434,
750 425, 2421, 2424, 534, 709, 0, 5434, 2422, 5434, 541,
751
752 5434, 0, 5434, 421, 2404, 1559, 1550, 2375, 2368, 2363,
753 2338, 2343, 2342, 2322, 2330, 2322, 0, 5434, 2346, 1597,
754 5434, 2349, 2313, 784, 693, 0, 0, 2343, 2319, 1620,
755 2280, 0, 695, 2307, 2302, 1639, 0, 2304, 2288, 1658,
756 0, 5434, 2300, 2265, 0, 5434, 0, 2285, 2269, 5434,
757 0, 5434, 2281, 2269, 720, 2256, 2246, 5434, 0, 2231,
758 5434, 5434, 767, 2234, 1242, 2204, 2199, 2197, 2196, 2191,
759 5434, 2184, 2172, 2160, 2157, 2156, 0, 2172, 0, 0,
760 2148, 2144, 2136, 5434, 2132, 2131, 2155, 5434, 2142, 812,
761 0, 745, 816, 766, 794, 0, 5434, 2133, 2123, 822,
762
763 847, 995, 2115, 0, 0, 838, 778, 802, 5434, 777,
764 2126, 2125, 5434, 823, 5434, 2108, 2120, 5434, 2102, 5434,
765 5434, 2094, 0, 2065, 2063, 948, 2058, 2069, 2068, 2045,
766 2057, 2048, 656, 2033, 2046, 2035, 2028, 2031, 2035, 2019,
767 2023, 0, 0, 2018, 5434, 2034, 0, 767, 0, 1999,
768 853, 5434, 0, 0, 2025, 0, 0, 1999, 2028, 5434,
769 2027, 847, 5434, 2024, 1290, 1255, 1268, 1302, 5434, 1991,
770 1982, 927, 1682, 1985, 1977, 1977, 1964, 1960, 1971, 0,
771 1006, 796, 1969, 1959, 1984, 5434, 995, 922, 5434, 5434,
772 1006, 1017, 1145, 0, 840, 1984, 5434, 1966, 1945, 1926,
773
774 5434, 1931, 1914, 1917, 1919, 1908, 1911, 1910, 1909, 1148,
775 1906, 1895, 1891, 1880, 1871, 1881, 1865, 1308, 0, 0,
776 1859, 1892, 5434, 1008, 966, 1316, 1443, 984, 1153, 1310,
777 1478, 1556, 1845, 1838, 5434, 5434, 928, 1833, 1738, 1155,
778 1831, 1814, 1827, 1852, 5434, 956, 1817, 0, 1222, 1840,
779 1824, 5434, 1818, 1358, 1534, 1791, 1156, 1775, 1779, 1764,
780 1763, 1644, 1627, 1233, 1248, 1622, 1615, 1601, 1604, 1603,
781 1609, 1592, 1589, 1580, 1574, 1586, 1581, 1562, 1569, 1561,
782 1560, 1585, 1584, 1612, 1792, 1007, 5434, 1795, 1798, 1802,
783 1554, 1583, 989, 1543, 5434, 1223, 5434, 1238, 1279, 1543,
784
785 1570, 1531, 1362, 1807, 1321, 1522, 1514, 1514, 1510, 1517,
786 1504, 1371, 5434, 1374, 1503, 1496, 1490, 1491, 1486, 1469,
787 1472, 1474, 1458, 1452, 1445, 1446, 1452, 1441, 1438, 1441,
788 1817, 1821, 1827, 1832, 1836, 1467, 1251, 1297, 5434, 1449,
789 5434, 1346, 1497, 1840, 1441, 5434, 1421, 1416, 1417, 1411,
790 1395, 1401, 1407, 1341, 1338, 1328, 1305, 1308, 1293, 1305,
791 1294, 1298, 1282, 1272, 1283, 1265, 1301, 1855, 1861, 1874,
792 1880, 1884, 0, 1516, 1893, 1296, 1255, 1217, 1203, 1187,
793 1177, 1140, 0, 1138, 1122, 1112, 1109, 980, 979, 963,
794 969, 950, 1369, 5434, 1908, 1914, 1903, 1918, 1927, 0,
795
796 1595, 1938, 1947, 937, 943, 929, 5434, 912, 912, 905,
797 884, 825, 805, 806, 1955, 1961, 1966, 1974, 1981, 1635,
798 1986, 1624, 774, 779, 713, 692, 659, 503, 464, 1995,
799 2000, 2020, 2026, 2029, 1654, 2041, 2014, 379, 328, 234,
800 2052, 2055, 2058, 2066, 2081, 1888, 2085, 2094, 202, 2110,
801 2113, 2100, 2123, 2137, 2142, 2152, 2133, 2157, 2167, 2170,
802 2179, 2146, 2190, 2205, 2193, 2214, 2219, 2199, 2224, 2233,
803 2210, 2238, 2247, 2252, 2257, 2267, 2262, 2272, 2277, 2286,
804 2289, 2292, 2304, 2307, 2319, 2310, 2324, 2334, 2329, 2339,
805 2344, 2349, 2356, 2365, 2374, 2381, 2386, 2377, 2391, 2401,
806
807 2396, 2406, 2411, 2420, 2430, 2440, 2433, 2449, 2459, 2453,
808 2464, 2473, 2468, 2478, 2488, 2493, 2497, 2507, 2500, 2512,
809 2521, 2516, 2526, 2541, 2530, 2546, 2555, 2535, 2560, 2569,
810 2564, 2574, 2583, 2578, 2588, 2593, 2598, 2602, 2617, 2607,
811 2622, 2631, 2611, 2640, 2651, 2626, 2663, 2672, 2636, 2683,
812 2688, 2693, 2697, 2706, 2711, 2716, 2725, 2719, 2730, 2741,
813 2734, 2746, 2751, 2763, 2766, 2771, 2780, 2786, 2789, 2798,
814 2803, 2808, 2817, 2824, 2833, 2827, 2842, 2852, 2845, 2861,
815 2871, 2864, 2880, 2885, 2890, 2897, 2900, 2909, 2912, 2917,
816 2926, 2929, 2938, 2932, 2947, 2957, 2943, 2962, 2971, 2952,
817
818 2980, 2991, 2984, 2996, 3005, 3000, 3010, 3015, 3024, 3028,
819 3037, 3031, 3046, 3057, 3062, 3068, 3077, 3071, 3089, 3092,
820 3101, 3104, 3115, 3109, 3124, 3129, 3134, 3138, 3147, 3156,
821 3161, 3170, 3175, 3181, 3186, 3191, 3195, 3200, 3209, 3212,
822 3215, 3227, 3230, 3239, 3233, 3244, 3253, 3248, 3262, 3267,
823 3272, 3279, 3292, 3301, 3305, 3308, 3319, 3324, 3327, 3336,
824 76, 3340, 3345, 3349, 3354, 3360, 3365, 3371, 3380, 3384,
825 3393, 3402, 3397, 3407, 3412, 3417, 3423, 3426, 5, 3432,
826 3436, 3439, 3445, 3449, 3454, 3459, 3464, 3469, 3478, 3484,
827 3491, 3497, 3501, 3506, 3511, 3516, 3521, 3524, 3530, 3536,
828
829 3539, 3543, 3549, 3553, 3558, 3563, 3568, 3576, 3582, 3591,
830 3595, 3601, 3605, 3610, 3615, 3620, 3623, 3628, 3634, 3637,
831 3643, 3647, 3653, 3657, 3662, 3667, 3675, 3680, 3689, 3695,
832 3699, 3705, 3709, 3714, 3719, 3722, 3727, 3732, 3735, 3741,
833 3747, 3751, 3757, 3761, 3766, 3774, 3779, 3787, 3793, 3799,
834 3803, 3809, 3813, 3818, 3821, 5434, 3875, 3893, 3911, 3929,
835 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109,
836 4127, 4145, 4163, 4181, 4199, 846, 1016, 4217, 4235, 4253,
837 4270, 4288, 4304, 4321, 4338, 4356, 4372, 4389, 4404, 4420,
838 1207, 4437, 4455, 4472, 4490, 4507, 4524, 4541, 4559, 1251,
839
840 1274, 1354, 4577, 1446, 4595, 4613, 4621, 4633, 4648, 1461,
841 4666, 4684, 1499, 4702, 4720, 4737, 4755, 4772, 4790, 4808,
842 4824, 4841, 4858, 4874, 4891, 4906, 4922, 1539, 4939, 4957,
843 4974, 4992, 5009, 5026, 5043, 5061, 1558, 1574, 1638, 1657,
844 5079, 5096, 5104, 5121, 5139, 1662, 5157, 5175, 1855, 5193,
845 5210, 5228, 5246, 5264, 5279, 5296, 5313, 5331, 5348, 5366,
846 5383, 5398, 1919, 5415
847 } ;
848
849static yyconst flex_int16_t yy_def[1265] =
850 { 0,
851 1157, 1157, 1157, 1158, 1156, 5, 1156, 7, 1159, 1159,
852 1160, 1160, 1156, 13, 1161, 1161, 1162, 1162, 1156, 19,
853 1163, 1163, 19, 23, 1156, 25, 1156, 27, 1164, 1165,
854 1157, 1157, 1157, 1157, 1166, 1166, 1156, 37, 1166, 1166,
855 1167, 1167, 1168, 1168, 1169, 1169, 1156, 47, 1156, 49,
856 49, 51, 1170, 1170, 1171, 1171, 23, 57, 1172, 1172,
857 1173, 1173, 1174, 1174, 1156, 65, 1156, 1156, 1156, 1156,
858 1156, 1156, 1156, 1156, 1156, 1156, 1175, 1156, 1156, 1156,
859 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
860 1176, 1176, 1176, 1176, 1176, 1176, 1156, 1156, 1156, 1156,
861
862 1156, 1156, 1156, 1177, 1177, 1177, 1156, 1178, 1178, 1156,
863 1178, 1156, 1179, 1156, 1178, 1178, 1180, 1180, 1180, 1156,
864 1180, 1180, 1181, 1180, 1156, 1156, 1156, 1156, 1156, 1182,
865 1156, 1156, 1183, 1156, 1183, 1156, 1156, 1156, 1184, 1184,
866 1156, 1184, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1186,
867 1186, 1187, 1188, 1188, 1156, 1188, 1188, 1188, 1156, 1188,
868 1189, 1156, 1156, 1156, 1156, 1156, 1190, 1156, 1156, 1156,
869 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1191,
870 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
871 1156, 1192, 1156, 1156, 1156, 1156, 1156, 1156, 1193, 1156,
872
873 1156, 1193, 1156, 1156, 1193, 1156, 1193, 1194, 1194, 1156,
874 1194, 1156, 1194, 1194, 1191, 1194, 1156, 1156, 1156, 1195,
875 1196, 1156, 1195, 1197, 1195, 1156, 1195, 1198, 1156, 1156,
876 1198, 1156, 1198, 1198, 1198, 1199, 1156, 1199, 1199, 1199,
877 1199, 1156, 1156, 1156, 1156, 1156, 1156, 1200, 1156, 1200,
878 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1201, 1156, 1156,
879 1156, 1202, 1156, 1156, 1156, 1156, 1156, 1156, 1203, 1156,
880 1156, 1156, 1156, 1156, 1156, 1156, 1203, 1156, 1204, 1156,
881 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
882 1156, 1205, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
883
884 1156, 1156, 1156, 1156, 1206, 1156, 1156, 1156, 1156, 1156,
885 1156, 1207, 1156, 1156, 1156, 1208, 1156, 1175, 1156, 1156,
886 1156, 1209, 1156, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
887 1210, 1210, 1211, 1212, 1213, 1213, 1213, 1213, 1214, 1215,
888 1216, 1214, 1217, 1218, 1219, 1217, 1156, 1156, 1220, 1156,
889 1156, 1221, 1156, 1156, 1221, 1222, 1222, 1222, 1222, 1156,
890 1223, 1156, 1223, 1223, 1223, 1156, 1156, 1224, 1225, 1156,
891 1225, 1225, 1225, 1156, 1156, 1156, 1156, 1156, 1226, 1156,
892 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1227, 1156,
893 1156, 1156, 1156, 1156, 1156, 1228, 1156, 1156, 1156, 1229,
894
895 1156, 1230, 1156, 1156, 1156, 1230, 1156, 1156, 1156, 1156,
896 1156, 1156, 1156, 1156, 1156, 1156, 1231, 1156, 1231, 1231,
897 1156, 1156, 1156, 1156, 1232, 1233, 1234, 1234, 1234, 1232,
898 1156, 1235, 1156, 1156, 1235, 1235, 1236, 1236, 1236, 1236,
899 1237, 1156, 1156, 1237, 1238, 1156, 1239, 1156, 1156, 1156,
900 1240, 1156, 1156, 1241, 1242, 1156, 1156, 1156, 1243, 1156,
901 1156, 1156, 1244, 1245, 1156, 1246, 1246, 1246, 1246, 1246,
902 1156, 1246, 1246, 1246, 1246, 1246, 1247, 1247, 1248, 1248,
903 1249, 1249, 1249, 1156, 1249, 1249, 1250, 1156, 1156, 1156,
904 1251, 1252, 1252, 1253, 1253, 1254, 1156, 1156, 1156, 1156,
905
906 1156, 1255, 1256, 1256, 1256, 1257, 1257, 1257, 1156, 1225,
907 1225, 1225, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
908 1156, 1156, 1230, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
909 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
910 1156, 1231, 1231, 1156, 1156, 1234, 1234, 1232, 1234, 1156,
911 1156, 1156, 1235, 1235, 1236, 1236, 1236, 1237, 1258, 1156,
912 1156, 1156, 1156, 1245, 1259, 1156, 1156, 1156, 1156, 1246,
913 1246, 1246, 1156, 1246, 1246, 1246, 1246, 1246, 1246, 1247,
914 1249, 1249, 1249, 1249, 1260, 1156, 1156, 1252, 1156, 1156,
915 1156, 1156, 1255, 1256, 1257, 1225, 1156, 1156, 1156, 1156,
916
917 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
918 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1234, 1236,
919 1237, 1261, 1156, 1156, 1259, 1259, 1259, 1156, 1259, 1156,
920 1156, 1156, 1246, 1246, 1156, 1156, 1156, 1246, 1156, 1246,
921 1246, 1246, 1246, 1246, 1156, 1156, 1249, 1249, 1249, 1156,
922 1156, 1156, 1156, 1156, 1255, 1156, 1156, 1156, 1156, 1156,
923 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
924 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
925 1237, 1156, 1156, 1259, 1259, 1156, 1156, 1156, 1156, 1156,
926 1246, 1246, 1156, 1156, 1156, 1156, 1156, 1246, 1246, 1246,
927
928 1156, 1156, 1156, 1255, 1156, 1156, 1156, 1156, 1156, 1156,
929 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
930 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1237,
931 1259, 1259, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1262,
932 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
933 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
934 1156, 1156, 1156, 1156, 1156, 1156, 1237, 1259, 1259, 1156,
935 1156, 1156, 1263, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
936 1156, 1156, 1264, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
937 1156, 1156, 1156, 1156, 1259, 1259, 1156, 1156, 1156, 1263,
938
939 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
940 1156, 1156, 1156, 1156, 1259, 1259, 1156, 1156, 1156, 1156,
941 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1259,
942 1259, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
943 1259, 1259, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1259,
944 1259, 1156, 1156, 1156, 1156, 1156, 1156, 1259, 1259, 1156,
945 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
946 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
947 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
948 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
949
950 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
951 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
952 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
953 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
954 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
955 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
956 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
957 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
958 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
959 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
960
961 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
962 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
963 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
964 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
965 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
966 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
967 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
968 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
969 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
970 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
971
972 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
973 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
974 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
975 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
976 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
977 1156, 1156, 1156, 1156, 1156, 0, 1156, 1156, 1156, 1156,
978 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
979 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
980 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
981 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
982
983 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
984 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
985 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
986 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
987 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
988 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
989 1156, 1156, 1156, 1156
990 } ;
991
992static yyconst flex_int16_t yy_nxt[5491] =
993 { 0,
994 1156, 69, 381, 70, 71, 69, 362, 70, 71, 1156,
995 69, 382, 70, 71, 314, 314, 72, 314, 315, 315,
996 72, 315, 333, 362, 73, 72, 334, 109, 73, 110,
997 111, 366, 112, 73, 1156, 113, 353, 354, 109, 367,
998 110, 111, 114, 112, 333, 327, 113, 328, 334, 336,
999 115, 337, 1156, 114, 154, 74, 155, 156, 746, 74,
1000 184, 115, 185, 186, 74, 76, 77, 78, 79, 157,
1001 344, 80, 314, 318, 345, 187, 315, 158, 319, 321,
1002 81, 116, 159, 188, 362, 357, 351, 322, 82, 358,
1003 83, 83, 116, 329, 323, 323, 323, 320, 320, 330,
1004
1005 331, 362, 370, 323, 323, 350, 350, 350, 160, 374,
1006 375, 371, 391, 351, 189, 372, 431, 392, 410, 84,
1007 85, 86, 85, 87, 88, 85, 85, 85, 85, 85,
1008 85, 85, 85, 85, 85, 85, 89, 85, 85, 85,
1009 85, 85, 85, 85, 90, 85, 91, 91, 85, 85,
1010 85, 91, 91, 92, 93, 94, 91, 91, 91, 95,
1011 91, 91, 91, 91, 91, 91, 91, 91, 91, 96,
1012 91, 91, 91, 85, 85, 97, 98, 99, 98, 100,
1013 101, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1014 98, 98, 102, 98, 98, 98, 98, 98, 98, 98,
1015
1016 103, 98, 104, 104, 98, 98, 98, 104, 104, 104,
1017 104, 105, 104, 104, 104, 106, 104, 104, 104, 104,
1018 104, 104, 104, 104, 104, 104, 104, 104, 104, 98,
1019 98, 107, 118, 362, 70, 119, 118, 120, 70, 119,
1020 362, 120, 397, 398, 362, 370, 362, 121, 400, 387,
1021 362, 121, 363, 401, 545, 122, 364, 362, 365, 122,
1022 123, 362, 388, 362, 123, 394, 373, 333, 333, 395,
1023 404, 334, 334, 314, 405, 422, 545, 419, 428, 315,
1024 423, 424, 429, 434, 438, 314, 124, 435, 439, 315,
1025 124, 125, 126, 125, 127, 128, 125, 129, 125, 125,
1026
1027 130, 125, 125, 125, 125, 125, 125, 131, 125, 125,
1028 125, 125, 125, 125, 125, 132, 125, 133, 133, 125,
1029 134, 125, 133, 133, 133, 133, 135, 133, 133, 133,
1030 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
1031 133, 133, 133, 133, 136, 137, 138, 140, 370, 70,
1032 71, 140, 141, 70, 71, 314, 141, 510, 147, 315,
1033 70, 148, 142, 68, 376, 377, 142, 426, 426, 849,
1034 143, 362, 378, 149, 143, 144, 381, 426, 426, 144,
1035 68, 150, 427, 427, 147, 382, 70, 148, 362, 68,
1036 370, 380, 427, 427, 442, 443, 452, 453, 448, 149,
1037
1038 430, 145, 449, 511, 314, 145, 68, 150, 315, 314,
1039 314, 456, 151, 315, 315, 457, 314, 321, 464, 465,
1040 315, 468, 481, 490, 490, 322, 499, 391, 366, 469,
1041 482, 545, 392, 460, 500, 500, 367, 403, 151, 68,
1042 69, 68, 70, 71, 68, 68, 68, 68, 68, 68,
1043 68, 68, 68, 68, 68, 72, 68, 68, 68, 68,
1044 68, 68, 68, 73, 68, 152, 152, 68, 68, 68,
1045 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1046 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1047 152, 152, 68, 68, 74, 154, 321, 155, 156, 191,
1048
1049 192, 193, 194, 318, 322, 195, 387, 366, 319, 321,
1050 157, 323, 323, 323, 196, 367, 545, 322, 158, 388,
1051 323, 323, 197, 159, 323, 323, 323, 320, 320, 477,
1052 362, 479, 387, 323, 323, 493, 501, 501, 501, 518,
1053 507, 495, 840, 400, 351, 388, 519, 362, 401, 160,
1054 161, 161, 477, 198, 479, 161, 161, 161, 161, 161,
1055 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1056 161, 161, 161, 161, 161, 161, 161, 68, 69, 162,
1057 70, 71, 68, 68, 68, 68, 68, 163, 164, 68,
1058 165, 68, 166, 72, 68, 68, 68, 68, 68, 68,
1059
1060 68, 73, 68, 167, 167, 68, 168, 68, 167, 167,
1061 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
1062 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
1063 68, 68, 74, 169, 170, 171, 172, 173, 169, 174,
1064 175, 169, 176, 169, 169, 169, 169, 169, 169, 177,
1065 169, 169, 169, 169, 169, 169, 169, 178, 179, 180,
1066 180, 169, 181, 169, 180, 180, 180, 180, 180, 180,
1067 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
1068 180, 180, 180, 180, 180, 180, 169, 169, 182, 69,
1069 608, 70, 71, 69, 426, 70, 71, 551, 69, 609,
1070
1071 70, 71, 552, 69, 72, 70, 71, 471, 72, 427,
1072 471, 545, 73, 72, 520, 471, 73, 221, 72, 222,
1073 223, 73, 350, 350, 350, 521, 73, 350, 350, 350,
1074 351, 221, 224, 222, 223, 351, 362, 562, 562, 472,
1075 225, 226, 506, 74, 545, 226, 224, 74, 473, 376,
1076 377, 477, 74, 362, 225, 226, 839, 74, 200, 226,
1077 201, 202, 376, 377, 229, 513, 230, 231, 426, 203,
1078 378, 227, 479, 204, 477, 232, 355, 464, 465, 233,
1079 370, 205, 206, 427, 362, 227, 206, 234, 229, 380,
1080 230, 231, 545, 596, 237, 479, 222, 238, 646, 232,
1081
1082 479, 362, 484, 233, 237, 484, 222, 238, 362, 239,
1083 484, 234, 207, 200, 545, 201, 202, 240, 235, 239,
1084 838, 586, 477, 479, 203, 362, 657, 240, 204, 587,
1085 587, 590, 588, 378, 485, 647, 205, 206, 545, 591,
1086 591, 206, 235, 486, 362, 477, 362, 829, 241, 592,
1087 592, 592, 380, 828, 595, 551, 623, 351, 241, 324,
1088 552, 362, 324, 362, 624, 624, 827, 207, 208, 209,
1089 208, 210, 211, 208, 208, 208, 208, 208, 208, 208,
1090 212, 208, 208, 208, 213, 208, 208, 208, 208, 208,
1091 208, 208, 214, 208, 215, 215, 208, 208, 208, 215,
1092
1093 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
1094 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
1095 215, 208, 208, 216, 200, 826, 201, 202, 477, 635,
1096 693, 264, 635, 70, 265, 217, 266, 635, 264, 218,
1097 70, 265, 272, 266, 70, 273, 267, 205, 219, 825,
1098 274, 477, 219, 267, 268, 824, 601, 275, 646, 269,
1099 272, 268, 70, 273, 610, 276, 269, 694, 274, 1156,
1100 277, 657, 350, 350, 350, 275, 601, 628, 207, 200,
1101 351, 201, 202, 276, 823, 270, 686, 687, 277, 657,
1102 217, 693, 270, 814, 218, 702, 278, 350, 350, 350,
1103
1104 813, 601, 205, 219, 488, 351, 812, 219, 645, 686,
1105 687, 645, 651, 651, 278, 652, 645, 560, 502, 654,
1106 654, 654, 811, 653, 653, 683, 683, 351, 694, 335,
1107 593, 810, 335, 207, 242, 243, 242, 244, 245, 242,
1108 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
1109 246, 242, 242, 242, 242, 242, 242, 242, 247, 242,
1110 248, 248, 242, 249, 242, 248, 248, 248, 250, 248,
1111 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
1112 248, 248, 248, 248, 248, 248, 248, 242, 242, 251,
1113 252, 253, 252, 254, 255, 252, 252, 252, 252, 252,
1114
1115 252, 252, 252, 252, 252, 252, 256, 252, 252, 252,
1116 252, 252, 252, 252, 257, 252, 258, 258, 252, 259,
1117 252, 258, 258, 258, 258, 258, 258, 258, 258, 258,
1118 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
1119 258, 258, 258, 252, 252, 260, 261, 350, 350, 350,
1120 665, 665, 665, 809, 610, 351, 1156, 696, 705, 705,
1121 705, 262, 262, 808, 628, 697, 262, 262, 262, 262,
1122 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
1123 262, 262, 262, 262, 262, 262, 262, 262, 279, 279,
1124 610, 655, 657, 279, 279, 279, 279, 279, 279, 279,
1125
1126 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1127 279, 279, 279, 279, 279, 281, 806, 87, 282, 281,
1128 396, 87, 282, 396, 484, 696, 300, 484, 70, 301,
1129 283, 302, 484, 697, 283, 712, 713, 714, 284, 657,
1130 738, 303, 284, 285, 566, 567, 568, 285, 739, 304,
1131 665, 665, 665, 635, 305, 657, 635, 630, 631, 632,
1132 805, 635, 569, 300, 441, 70, 301, 441, 302, 286,
1133 632, 632, 632, 286, 288, 569, 289, 290, 303, 291,
1134 306, 740, 292, 293, 294, 741, 304, 445, 569, 295,
1135 445, 305, 626, 567, 627, 569, 804, 296, 297, 738,
1136
1137 741, 628, 803, 793, 632, 632, 632, 739, 569, 792,
1138 629, 794, 688, 689, 690, 791, 790, 306, 684, 631,
1139 685, 569, 569, 705, 705, 705, 789, 628, 298, 288,
1140 569, 289, 290, 788, 291, 787, 629, 292, 293, 294,
1141 545, 673, 674, 629, 295, 610, 675, 786, 645, 676,
1142 677, 645, 296, 297, 678, 569, 645, 610, 679, 680,
1143 703, 703, 703, 569, 743, 743, 743, 447, 351, 629,
1144 447, 793, 351, 712, 713, 714, 714, 713, 714, 794,
1145 610, 785, 784, 298, 307, 308, 307, 70, 309, 307,
1146 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
1147
1148 310, 307, 307, 307, 307, 307, 307, 307, 311, 307,
1149 312, 312, 307, 307, 307, 312, 312, 312, 312, 312,
1150 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
1151 312, 312, 312, 312, 312, 312, 312, 307, 307, 313,
1152 407, 783, 782, 781, 407, 685, 632, 685, 408, 409,
1153 410, 740, 780, 411, 628, 741, 412, 413, 779, 451,
1154 778, 414, 451, 629, 777, 415, 416, 491, 776, 736,
1155 741, 462, 491, 491, 324, 767, 491, 324, 462, 766,
1156 690, 690, 690, 491, 491, 491, 496, 765, 764, 763,
1157 496, 496, 496, 762, 761, 496, 629, 496, 569, 774,
1158
1159 774, 774, 496, 496, 496, 505, 545, 351, 760, 505,
1160 505, 505, 335, 759, 505, 335, 505, 758, 801, 801,
1161 801, 505, 505, 505, 508, 362, 351, 757, 508, 508,
1162 508, 569, 756, 508, 755, 508, 350, 350, 350, 754,
1163 508, 508, 509, 370, 351, 512, 753, 752, 751, 512,
1164 512, 512, 396, 750, 512, 396, 512, 749, 690, 690,
1165 690, 512, 512, 512, 523, 748, 747, 742, 523, 523,
1166 523, 441, 701, 523, 441, 462, 569, 704, 699, 737,
1167 523, 523, 523, 524, 525, 736, 526, 445, 527, 326,
1168 445, 528, 529, 560, 560, 730, 530, 820, 820, 820,
1169
1170 531, 532, 543, 729, 728, 351, 543, 543, 543, 569,
1171 727, 543, 726, 543, 731, 689, 732, 725, 543, 543,
1172 543, 426, 724, 628, 723, 548, 837, 837, 837, 548,
1173 548, 548, 629, 722, 548, 721, 549, 835, 835, 835,
1174 720, 548, 548, 548, 554, 351, 719, 718, 554, 554,
1175 554, 447, 717, 554, 447, 554, 846, 846, 846, 716,
1176 554, 554, 554, 557, 351, 629, 715, 557, 557, 557,
1177 451, 711, 557, 451, 557, 324, 710, 746, 324, 557,
1178 557, 557, 636, 636, 637, 636, 636, 636, 636, 636,
1179 636, 636, 636, 636, 636, 636, 636, 636, 636, 324,
1180
1181 324, 324, 636, 636, 636, 636, 636, 636, 324, 324,
1182 636, 636, 636, 324, 324, 324, 324, 324, 324, 324,
1183 324, 638, 324, 324, 324, 324, 324, 324, 324, 324,
1184 324, 324, 324, 324, 324, 636, 636, 636, 695, 695,
1185 695, 695, 695, 695, 695, 695, 695, 695, 695, 695,
1186 695, 695, 695, 695, 695, 324, 324, 324, 695, 695,
1187 695, 695, 695, 695, 324, 324, 695, 695, 695, 324,
1188 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
1189 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
1190 324, 695, 695, 695, 732, 690, 732, 733, 734, 735,
1191
1192 735, 735, 735, 628, 735, 735, 735, 709, 708, 744,
1193 744, 744, 629, 745, 707, 569, 706, 351, 569, 768,
1194 734, 769, 569, 769, 735, 769, 657, 652, 628, 770,
1195 771, 772, 628, 488, 772, 772, 772, 629, 772, 772,
1196 772, 629, 775, 775, 775, 629, 745, 569, 569, 488,
1197 351, 569, 569, 581, 701, 569, 569, 795, 771, 796,
1198 746, 700, 699, 796, 772, 796, 628, 698, 335, 572,
1199 629, 335, 628, 692, 629, 629, 797, 798, 799, 691,
1200 569, 629, 799, 799, 799, 569, 799, 799, 799, 569,
1201 855, 855, 855, 746, 569, 802, 802, 802, 351, 745,
1202
1203 569, 560, 681, 351, 569, 817, 818, 819, 629, 672,
1204 815, 798, 816, 671, 629, 670, 816, 799, 816, 628,
1205 819, 819, 819, 569, 669, 628, 668, 569, 629, 819,
1206 819, 819, 800, 569, 629, 800, 667, 569, 569, 666,
1207 821, 821, 821, 664, 745, 610, 746, 569, 351, 822,
1208 822, 822, 663, 745, 662, 661, 569, 830, 818, 831,
1209 660, 629, 659, 831, 819, 831, 628, 629, 832, 833,
1210 834, 569, 628, 658, 657, 629, 834, 834, 834, 656,
1211 569, 629, 598, 834, 834, 834, 569, 370, 836, 836,
1212 836, 746, 745, 488, 569, 649, 351, 841, 833, 842,
1213
1214 746, 569, 842, 834, 842, 648, 628, 644, 629, 643,
1215 642, 628, 641, 640, 629, 629, 848, 848, 848, 569,
1216 629, 639, 843, 844, 845, 634, 633, 569, 845, 845,
1217 845, 845, 845, 845, 569, 565, 560, 560, 621, 746,
1218 569, 620, 609, 847, 847, 847, 569, 745, 629, 569,
1219 619, 351, 618, 629, 850, 844, 851, 851, 845, 851,
1220 852, 853, 854, 628, 617, 616, 628, 746, 854, 854,
1221 854, 615, 629, 569, 614, 629, 613, 612, 569, 569,
1222 611, 610, 569, 854, 854, 854, 569, 856, 856, 856,
1223 607, 745, 606, 605, 746, 351, 857, 857, 857, 604,
1224
1225 603, 569, 852, 853, 854, 629, 602, 600, 629, 599,
1226 598, 569, 858, 853, 859, 859, 854, 859, 563, 569,
1227 569, 628, 517, 597, 628, 854, 854, 854, 370, 370,
1228 629, 594, 589, 629, 569, 862, 862, 862, 746, 854,
1229 854, 854, 589, 569, 860, 860, 860, 746, 865, 865,
1230 865, 488, 351, 569, 861, 861, 861, 569, 745, 858,
1231 853, 859, 351, 629, 488, 485, 629, 584, 628, 859,
1232 854, 859, 863, 863, 863, 583, 569, 629, 628, 582,
1233 351, 864, 864, 864, 581, 745, 746, 629, 580, 351,
1234 569, 579, 866, 866, 866, 868, 868, 868, 578, 746,
1235
1236 351, 871, 871, 871, 577, 746, 576, 867, 867, 867,
1237 629, 745, 874, 874, 874, 351, 869, 869, 869, 575,
1238 629, 870, 870, 870, 351, 745, 872, 872, 872, 351,
1239 574, 573, 746, 572, 351, 873, 873, 873, 571, 745,
1240 875, 875, 875, 351, 570, 565, 746, 563, 351, 876,
1241 876, 876, 746, 745, 877, 877, 877, 351, 746, 878,
1242 878, 878, 461, 746, 880, 880, 880, 351, 460, 879,
1243 879, 879, 746, 745, 881, 881, 881, 351, 560, 882,
1244 882, 882, 351, 745, 452, 461, 746, 351, 883, 883,
1245 883, 884, 884, 884, 885, 885, 885, 460, 745, 351,
1246
1247 746, 558, 351, 442, 556, 746, 886, 886, 886, 887,
1248 887, 887, 889, 889, 889, 746, 555, 351, 553, 460,
1249 746, 888, 888, 888, 550, 745, 890, 890, 890, 351,
1250 746, 892, 892, 892, 351, 547, 891, 891, 891, 746,
1251 745, 893, 893, 893, 351, 746, 894, 894, 894, 351,
1252 745, 895, 895, 895, 351, 546, 544, 746, 896, 896,
1253 896, 460, 542, 746, 541, 540, 351, 897, 897, 897,
1254 539, 745, 746, 538, 537, 351, 898, 898, 898, 901,
1255 901, 901, 746, 899, 899, 899, 536, 746, 900, 900,
1256 900, 351, 745, 902, 902, 902, 351, 746, 904, 904,
1257
1258 904, 351, 746, 903, 903, 903, 535, 745, 905, 905,
1259 905, 351, 534, 906, 906, 906, 351, 745, 746, 533,
1260 522, 351, 907, 907, 907, 397, 517, 746, 393, 516,
1261 746, 515, 908, 908, 908, 910, 910, 910, 385, 746,
1262 351, 384, 909, 909, 909, 383, 745, 384, 514, 746,
1263 351, 911, 911, 911, 746, 913, 913, 913, 374, 351,
1264 370, 912, 912, 912, 746, 745, 914, 914, 914, 351,
1265 916, 916, 916, 746, 351, 915, 915, 915, 504, 745,
1266 917, 917, 917, 351, 503, 353, 746, 497, 351, 488,
1267 918, 918, 918, 746, 745, 919, 919, 919, 351, 920,
1268
1269 920, 920, 922, 922, 922, 483, 746, 351, 480, 921,
1270 921, 921, 746, 745, 923, 923, 923, 351, 925, 925,
1271 925, 746, 351, 924, 924, 924, 746, 745, 926, 926,
1272 926, 351, 928, 928, 928, 478, 351, 931, 931, 931,
1273 476, 746, 475, 927, 927, 927, 746, 745, 929, 929,
1274 929, 351, 474, 746, 470, 467, 351, 930, 930, 930,
1275 746, 745, 932, 932, 932, 351, 934, 934, 934, 746,
1276 351, 933, 933, 933, 746, 745, 935, 935, 935, 351,
1277 937, 937, 937, 746, 351, 936, 936, 936, 746, 745,
1278 938, 938, 938, 351, 746, 939, 939, 939, 351, 745,
1279
1280 940, 940, 940, 351, 941, 941, 941, 466, 746, 943,
1281 943, 943, 351, 946, 946, 946, 461, 746, 460, 942,
1282 942, 942, 746, 745, 944, 944, 944, 351, 949, 949,
1283 949, 746, 351, 945, 945, 945, 746, 745, 952, 952,
1284 952, 351, 947, 947, 947, 316, 746, 316, 316, 455,
1285 351, 746, 316, 948, 948, 948, 316, 745, 316, 446,
1286 746, 351, 316, 444, 746, 950, 950, 950, 316, 440,
1287 746, 436, 433, 351, 951, 951, 951, 421, 745, 746,
1288 420, 418, 351, 406, 746, 953, 953, 953, 403, 746,
1289 954, 954, 954, 351, 745, 955, 955, 955, 351, 956,
1290
1291 956, 956, 316, 316, 746, 316, 393, 351, 957, 957,
1292 957, 390, 745, 958, 958, 958, 351, 386, 959, 959,
1293 959, 961, 961, 961, 385, 746, 351, 960, 960, 960,
1294 384, 745, 962, 962, 962, 351, 964, 964, 964, 383,
1295 351, 746, 370, 963, 963, 963, 746, 745, 965, 965,
1296 965, 351, 370, 966, 966, 966, 351, 745, 370, 746,
1297 370, 351, 359, 316, 746, 967, 967, 967, 968, 968,
1298 968, 349, 746, 969, 969, 969, 351, 745, 746, 346,
1299 342, 351, 970, 970, 970, 341, 338, 746, 971, 971,
1300 971, 972, 972, 972, 746, 745, 351, 316, 332, 351,
1301
1302 973, 973, 973, 326, 746, 974, 974, 974, 325, 316,
1303 975, 975, 975, 351, 745, 316, 746, 316, 351, 976,
1304 976, 976, 1156, 1156, 746, 1156, 977, 977, 977, 979,
1305 979, 979, 1156, 746, 351, 978, 978, 978, 1156, 745,
1306 1156, 1156, 746, 351, 980, 980, 980, 982, 982, 982,
1307 1156, 746, 351, 1156, 981, 981, 981, 1156, 745, 1156,
1308 1156, 746, 351, 983, 983, 983, 985, 985, 985, 1156,
1309 746, 351, 1156, 984, 984, 984, 1156, 745, 1156, 1156,
1310 746, 351, 986, 986, 986, 1156, 746, 987, 987, 987,
1311 351, 745, 988, 988, 988, 351, 1156, 1156, 746, 989,
1312
1313 989, 989, 990, 990, 990, 746, 745, 351, 1156, 1156,
1314 351, 991, 991, 991, 992, 992, 992, 746, 1156, 993,
1315 993, 993, 351, 745, 746, 1156, 1156, 351, 994, 994,
1316 994, 995, 995, 995, 997, 997, 997, 1156, 746, 351,
1317 996, 996, 996, 746, 745, 1000, 1000, 1000, 351, 998,
1318 998, 998, 1156, 746, 1003, 1003, 1003, 351, 1156, 999,
1319 999, 999, 746, 745, 1001, 1001, 1001, 351, 1156, 1156,
1320 746, 1156, 351, 1002, 1002, 1002, 1156, 745, 1156, 746,
1321 1156, 351, 1004, 1004, 1004, 746, 1006, 1006, 1006, 1156,
1322 351, 746, 1156, 1005, 1005, 1005, 746, 745, 1007, 1007,
1323
1324 1007, 351, 1009, 1009, 1009, 746, 351, 1008, 1008, 1008,
1325 746, 745, 1010, 1010, 1010, 351, 1156, 1011, 1011, 1011,
1326 351, 745, 1156, 1156, 746, 351, 1012, 1012, 1012, 1156,
1327 1013, 1013, 1013, 1015, 1015, 1015, 1156, 746, 351, 1014,
1328 1014, 1014, 1156, 745, 746, 1156, 1156, 351, 1016, 1016,
1329 1016, 1156, 1156, 746, 1156, 1156, 351, 1156, 746, 1017,
1330 1017, 1017, 1156, 745, 1018, 1018, 1018, 351, 746, 1156,
1331 1019, 1019, 1019, 1021, 1021, 1021, 1156, 746, 351, 1020,
1332 1020, 1020, 1156, 745, 746, 1156, 1156, 351, 1156, 1156,
1333 746, 1022, 1022, 1022, 1023, 1023, 1023, 1156, 745, 351,
1334
1335 1156, 1156, 351, 1024, 1024, 1024, 1025, 1025, 1025, 1156,
1336 746, 1027, 1027, 1027, 351, 746, 1156, 1026, 1026, 1026,
1337 1156, 745, 1156, 1156, 746, 351, 1028, 1028, 1028, 1156,
1338 746, 1029, 1029, 1029, 351, 745, 1030, 1030, 1030, 351,
1339 1031, 1031, 1031, 1156, 1156, 746, 1156, 1156, 351, 1032,
1340 1032, 1032, 1156, 745, 746, 1156, 1156, 351, 1033, 1033,
1341 1033, 1156, 746, 1034, 1034, 1034, 1156, 1156, 746, 1156,
1342 1156, 351, 1035, 1035, 1035, 1156, 745, 1036, 1036, 1036,
1343 351, 1156, 746, 1037, 1037, 1037, 1156, 746, 1038, 1038,
1344 1038, 351, 745, 1039, 1039, 1039, 351, 1040, 1040, 1040,
1345
1346 746, 1156, 1041, 1041, 1041, 351, 745, 1156, 1156, 746,
1347 351, 1042, 1042, 1042, 1043, 1043, 1043, 1044, 1044, 1044,
1348 1156, 745, 351, 746, 1156, 351, 1156, 1156, 746, 1045,
1349 1045, 1045, 1046, 1046, 1046, 1048, 1048, 1048, 1156, 746,
1350 351, 1047, 1047, 1047, 746, 745, 1049, 1049, 1049, 351,
1351 1051, 1051, 1051, 746, 351, 1050, 1050, 1050, 1156, 745,
1352 1156, 1156, 746, 351, 1052, 1052, 1052, 1156, 746, 1053,
1353 1053, 1053, 351, 745, 1054, 1054, 1054, 351, 1156, 1156,
1354 746, 1055, 1055, 1055, 1156, 1156, 746, 1156, 1156, 351,
1355 1156, 1156, 746, 1156, 1056, 1056, 1056, 1156, 745, 1156,
1356
1357 1156, 746, 351, 1057, 1057, 1057, 746, 1058, 1058, 1058,
1358 1059, 1059, 1059, 1156, 745, 351, 1156, 1156, 351, 1156,
1359 746, 1060, 1060, 1060, 1156, 746, 1061, 1061, 1061, 1062,
1360 1062, 1062, 1156, 745, 351, 1156, 1156, 351, 1063, 1063,
1361 1063, 1156, 1064, 1064, 1064, 746, 745, 1065, 1065, 1065,
1362 351, 1066, 1066, 1066, 746, 745, 1067, 1067, 1067, 351,
1363 1156, 746, 1068, 1068, 1068, 1156, 745, 1069, 1069, 1069,
1364 351, 1156, 746, 1070, 1070, 1070, 1156, 745, 1156, 1156,
1365 746, 351, 1071, 1071, 1071, 1156, 1072, 1072, 1072, 746,
1366 745, 1156, 1156, 746, 351, 1073, 1073, 1073, 746, 1075,
1367
1368 1075, 1075, 746, 1156, 1074, 1074, 1074, 746, 745, 1076,
1369 1076, 1076, 351, 746, 1077, 1077, 1077, 1156, 746, 1078,
1370 1078, 1078, 1156, 1156, 746, 1079, 1079, 1079, 1080, 1080,
1371 1080, 1156, 1156, 746, 1081, 1081, 1081, 746, 1082, 1082,
1372 1082, 1083, 1083, 1083, 1156, 1156, 746, 1084, 1084, 1084,
1373 746, 1085, 1085, 1085, 1156, 746, 1086, 1086, 1086, 1156,
1374 746, 1087, 1087, 1087, 1156, 746, 1088, 1088, 1088, 1156,
1375 746, 1089, 1089, 1089, 1156, 1156, 746, 1156, 1156, 746,
1376 1090, 1090, 1090, 1156, 1156, 746, 1091, 1091, 1091, 746,
1377 1156, 1156, 746, 1092, 1092, 1092, 1156, 1156, 746, 1093,
1378
1379 1093, 1093, 746, 1094, 1094, 1094, 1156, 746, 1095, 1095,
1380 1095, 1156, 746, 1096, 1096, 1096, 1156, 746, 1097, 1097,
1381 1097, 1156, 746, 1098, 1098, 1098, 1099, 1099, 1099, 1156,
1382 1156, 746, 1100, 1100, 1100, 1156, 1156, 746, 1101, 1101,
1383 1101, 1102, 1102, 1102, 746, 1103, 1103, 1103, 1156, 1156,
1384 746, 1104, 1104, 1104, 746, 1105, 1105, 1105, 1156, 746,
1385 1106, 1106, 1106, 1156, 746, 1107, 1107, 1107, 1156, 746,
1386 1108, 1108, 1108, 1156, 746, 1156, 1156, 746, 1109, 1109,
1387 1109, 1156, 1156, 746, 1110, 1110, 1110, 1156, 1156, 746,
1388 1156, 1156, 746, 1111, 1111, 1111, 746, 1112, 1112, 1112,
1389
1390 1156, 1156, 746, 1113, 1113, 1113, 746, 1114, 1114, 1114,
1391 1156, 746, 1115, 1115, 1115, 1156, 746, 1116, 1116, 1116,
1392 1156, 746, 1117, 1117, 1117, 1118, 1118, 1118, 1156, 746,
1393 1119, 1119, 1119, 1156, 1156, 746, 1120, 1120, 1120, 1121,
1394 1121, 1121, 1156, 1156, 746, 1122, 1122, 1122, 746, 1123,
1395 1123, 1123, 1156, 1156, 746, 1124, 1124, 1124, 746, 1125,
1396 1125, 1125, 1156, 746, 1126, 1126, 1126, 1156, 746, 1127,
1397 1127, 1127, 1156, 746, 1156, 1156, 746, 1128, 1128, 1128,
1398 1156, 746, 1129, 1129, 1129, 1156, 1156, 746, 1156, 1156,
1399 746, 1130, 1130, 1130, 1156, 1156, 746, 1131, 1131, 1131,
1400
1401 746, 1132, 1132, 1132, 1156, 1156, 746, 1133, 1133, 1133,
1402 746, 1134, 1134, 1134, 1156, 746, 1135, 1135, 1135, 1156,
1403 746, 1136, 1136, 1136, 1137, 1137, 1137, 1156, 746, 1138,
1404 1138, 1138, 1156, 746, 1139, 1139, 1139, 1140, 1140, 1140,
1405 1156, 1156, 746, 1141, 1141, 1141, 1156, 1156, 746, 1142,
1406 1142, 1142, 746, 1143, 1143, 1143, 1156, 1156, 746, 1144,
1407 1144, 1144, 746, 1145, 1145, 1145, 1156, 746, 1146, 1146,
1408 1146, 1156, 746, 1156, 1156, 746, 1147, 1147, 1147, 1156,
1409 746, 1148, 1148, 1148, 1156, 746, 1156, 1156, 746, 1149,
1410 1149, 1149, 1156, 1156, 746, 1150, 1150, 1150, 1156, 1156,
1411
1412 746, 1151, 1151, 1151, 746, 1152, 1152, 1152, 1156, 1156,
1413 746, 1153, 1153, 1153, 746, 1154, 1154, 1154, 1156, 746,
1414 1155, 1155, 1155, 1079, 1079, 1079, 1156, 746, 1156, 1156,
1415 1156, 1156, 746, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1416 746, 1156, 1156, 1156, 1156, 1156, 746, 1156, 1156, 1156,
1417 1156, 1156, 746, 1156, 1156, 1156, 746, 1156, 1156, 1156,
1418 1156, 1156, 746, 1156, 1156, 1156, 746, 1156, 1156, 1156,
1419 1156, 746, 1156, 1156, 746, 68, 68, 68, 68, 68,
1420 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
1421 68, 68, 68, 75, 75, 75, 75, 75, 75, 75,
1422
1423 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
1424 75, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1425 108, 108, 108, 108, 108, 108, 108, 108, 108, 117,
1426 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
1427 117, 117, 117, 117, 117, 117, 117, 139, 139, 139,
1428 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
1429 139, 139, 139, 139, 139, 146, 146, 146, 146, 146,
1430 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1431 146, 146, 146, 153, 153, 153, 153, 153, 153, 153,
1432 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1433
1434 153, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1435 183, 183, 183, 183, 183, 183, 183, 183, 183, 190,
1436 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
1437 190, 190, 190, 190, 190, 190, 190, 199, 199, 199,
1438 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
1439 199, 199, 199, 199, 199, 220, 220, 220, 220, 220,
1440 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
1441 220, 220, 220, 228, 228, 228, 228, 228, 228, 228,
1442 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1443 228, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1444
1445 236, 236, 236, 236, 236, 236, 236, 236, 236, 263,
1446 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
1447 263, 263, 263, 263, 263, 263, 263, 271, 271, 271,
1448 271, 271, 271, 271, 271, 271, 271, 271, 271, 271,
1449 271, 271, 271, 271, 271, 280, 280, 280, 280, 280,
1450 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
1451 280, 280, 280, 287, 287, 287, 287, 287, 287, 287,
1452 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1453 287, 299, 299, 299, 299, 299, 299, 299, 299, 299,
1454 299, 299, 299, 299, 299, 299, 299, 299, 299, 317,
1455
1456 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
1457 317, 317, 317, 317, 317, 317, 317, 339, 339, 339,
1458 1156, 339, 339, 1156, 1156, 339, 339, 339, 339, 1156,
1459 339, 339, 339, 339, 339, 340, 340, 340, 1156, 340,
1460 340, 340, 1156, 340, 340, 340, 340, 340, 340, 340,
1461 340, 340, 340, 343, 343, 343, 1156, 343, 343, 1156,
1462 343, 343, 343, 343, 343, 343, 343, 343, 343, 343,
1463 347, 347, 347, 1156, 347, 347, 347, 347, 347, 347,
1464 347, 347, 347, 347, 347, 347, 347, 347, 348, 348,
1465 348, 1156, 348, 348, 348, 348, 348, 348, 348, 348,
1466
1467 348, 348, 348, 348, 348, 348, 352, 352, 352, 1156,
1468 1156, 1156, 352, 1156, 1156, 1156, 1156, 352, 1156, 1156,
1469 352, 356, 356, 356, 1156, 1156, 356, 1156, 356, 356,
1470 356, 356, 356, 356, 356, 356, 356, 356, 360, 360,
1471 360, 1156, 360, 360, 360, 360, 360, 360, 360, 360,
1472 360, 360, 360, 360, 360, 360, 361, 361, 361, 1156,
1473 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1474 361, 361, 361, 361, 368, 1156, 1156, 1156, 1156, 1156,
1475 368, 1156, 1156, 1156, 1156, 368, 1156, 1156, 368, 369,
1476 369, 369, 369, 369, 369, 369, 369, 369, 369, 369,
1477
1478 369, 369, 369, 369, 369, 369, 379, 379, 1156, 1156,
1479 1156, 1156, 379, 1156, 1156, 1156, 1156, 379, 1156, 1156,
1480 379, 379, 389, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1481 1156, 389, 1156, 389, 1156, 1156, 389, 399, 399, 399,
1482 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
1483 399, 399, 399, 399, 399, 402, 1156, 402, 1156, 402,
1484 402, 402, 402, 402, 1156, 402, 402, 1156, 402, 402,
1485 1156, 402, 417, 417, 417, 1156, 417, 417, 417, 417,
1486 417, 1156, 417, 417, 417, 417, 417, 417, 1156, 417,
1487 425, 425, 425, 1156, 425, 425, 425, 425, 425, 425,
1488
1489 425, 425, 425, 425, 425, 1156, 425, 426, 426, 426,
1490 1156, 426, 426, 426, 426, 426, 426, 426, 426, 1156,
1491 426, 426, 1156, 426, 427, 1156, 427, 1156, 427, 427,
1492 427, 427, 427, 427, 427, 427, 427, 427, 427, 1156,
1493 427, 432, 1156, 432, 1156, 432, 432, 432, 432, 432,
1494 1156, 432, 432, 432, 432, 432, 432, 432, 432, 437,
1495 1156, 437, 1156, 437, 437, 437, 437, 437, 437, 437,
1496 437, 437, 437, 437, 437, 437, 437, 450, 450, 450,
1497 1156, 450, 450, 450, 450, 450, 450, 450, 450, 450,
1498 450, 450, 450, 450, 450, 454, 454, 454, 1156, 454,
1499
1500 454, 454, 1156, 454, 454, 454, 454, 454, 454, 454,
1501 454, 454, 454, 458, 458, 458, 1156, 458, 458, 458,
1502 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
1503 458, 459, 459, 1156, 459, 1156, 1156, 459, 462, 1156,
1504 462, 462, 1156, 462, 1156, 462, 1156, 462, 463, 463,
1505 463, 1156, 463, 463, 463, 463, 463, 463, 463, 463,
1506 463, 463, 463, 463, 463, 463, 477, 477, 477, 1156,
1507 477, 477, 477, 477, 477, 477, 477, 477, 477, 477,
1508 477, 477, 477, 477, 479, 479, 479, 1156, 479, 479,
1509 479, 479, 479, 479, 479, 479, 479, 479, 479, 479,
1510
1511 479, 479, 339, 339, 339, 1156, 339, 339, 1156, 1156,
1512 339, 339, 339, 339, 1156, 339, 339, 339, 339, 339,
1513 487, 487, 487, 1156, 487, 487, 487, 487, 487, 487,
1514 487, 487, 487, 487, 487, 487, 487, 489, 489, 489,
1515 1156, 489, 489, 489, 489, 489, 489, 489, 489, 489,
1516 489, 489, 489, 489, 489, 343, 343, 343, 1156, 343,
1517 343, 1156, 343, 343, 343, 343, 343, 343, 343, 343,
1518 343, 343, 492, 492, 492, 1156, 492, 492, 492, 492,
1519 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
1520 494, 494, 494, 1156, 494, 494, 494, 494, 494, 494,
1521
1522 494, 494, 494, 494, 494, 494, 494, 494, 498, 498,
1523 498, 1156, 498, 498, 498, 498, 498, 498, 498, 498,
1524 498, 498, 498, 498, 498, 498, 352, 352, 352, 1156,
1525 1156, 1156, 352, 1156, 1156, 1156, 1156, 352, 1156, 1156,
1526 352, 356, 356, 356, 1156, 1156, 356, 1156, 356, 356,
1527 356, 356, 356, 356, 356, 356, 356, 356, 361, 361,
1528 361, 1156, 361, 361, 361, 361, 361, 361, 361, 361,
1529 361, 361, 361, 361, 361, 361, 368, 1156, 1156, 1156,
1530 1156, 1156, 368, 1156, 1156, 1156, 1156, 368, 1156, 1156,
1531 368, 369, 369, 369, 369, 369, 369, 369, 369, 369,
1532
1533 369, 369, 369, 369, 369, 369, 369, 369, 379, 379,
1534 1156, 1156, 1156, 1156, 379, 1156, 1156, 1156, 1156, 379,
1535 1156, 1156, 379, 379, 389, 1156, 1156, 1156, 1156, 1156,
1536 1156, 1156, 1156, 389, 1156, 389, 1156, 1156, 389, 399,
1537 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
1538 399, 399, 399, 399, 399, 399, 399, 402, 1156, 402,
1539 1156, 402, 402, 402, 402, 402, 1156, 402, 402, 1156,
1540 402, 402, 1156, 402, 417, 417, 417, 1156, 417, 417,
1541 417, 417, 417, 1156, 417, 417, 417, 417, 417, 417,
1542 1156, 417, 425, 425, 425, 1156, 425, 425, 425, 425,
1543
1544 425, 425, 425, 425, 425, 425, 425, 1156, 425, 426,
1545 426, 426, 1156, 426, 426, 426, 426, 426, 426, 426,
1546 426, 1156, 426, 426, 1156, 426, 427, 1156, 427, 1156,
1547 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1548 427, 1156, 427, 432, 1156, 432, 1156, 432, 432, 432,
1549 432, 432, 1156, 432, 432, 432, 432, 432, 432, 432,
1550 432, 437, 1156, 437, 1156, 437, 437, 437, 437, 437,
1551 437, 437, 437, 437, 437, 437, 437, 437, 437, 559,
1552 559, 559, 1156, 559, 559, 559, 559, 559, 559, 559,
1553 559, 559, 559, 559, 559, 559, 561, 561, 561, 1156,
1554
1555 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
1556 561, 561, 561, 561, 459, 459, 1156, 459, 1156, 1156,
1557 459, 463, 463, 463, 1156, 463, 463, 463, 463, 463,
1558 463, 463, 463, 463, 463, 463, 463, 463, 463, 564,
1559 564, 564, 1156, 564, 564, 564, 564, 564, 564, 564,
1560 564, 564, 564, 564, 564, 564, 564, 477, 477, 477,
1561 1156, 477, 477, 477, 477, 477, 477, 477, 477, 477,
1562 477, 477, 477, 477, 477, 479, 479, 479, 1156, 479,
1563 479, 479, 479, 479, 479, 479, 479, 479, 479, 479,
1564 479, 479, 479, 585, 585, 585, 1156, 585, 585, 585,
1565
1566 585, 585, 585, 585, 585, 585, 585, 585, 585, 585,
1567 339, 339, 339, 1156, 339, 339, 1156, 1156, 339, 339,
1568 339, 339, 1156, 339, 339, 339, 339, 339, 492, 492,
1569 492, 1156, 492, 492, 492, 492, 492, 492, 492, 492,
1570 492, 492, 492, 492, 492, 492, 494, 494, 494, 1156,
1571 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,
1572 494, 494, 494, 494, 343, 343, 343, 1156, 343, 343,
1573 1156, 343, 343, 343, 343, 343, 343, 343, 343, 343,
1574 343, 352, 352, 352, 1156, 1156, 1156, 352, 1156, 1156,
1575 1156, 1156, 352, 1156, 1156, 352, 356, 356, 356, 1156,
1576
1577 1156, 356, 1156, 356, 356, 356, 356, 356, 356, 356,
1578 356, 356, 356, 361, 361, 361, 1156, 361, 361, 361,
1579 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1580 361, 622, 622, 622, 1156, 622, 622, 622, 622, 622,
1581 622, 622, 622, 622, 622, 622, 622, 622, 625, 625,
1582 625, 625, 625, 625, 625, 625, 625, 625, 625, 625,
1583 625, 625, 625, 625, 625, 625, 650, 650, 650, 1156,
1584 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
1585 650, 650, 650, 682, 682, 682, 1156, 682, 682, 682,
1586 682, 682, 682, 682, 682, 682, 682, 682, 682, 682,
1587
1588 773, 1156, 1156, 1156, 773, 1156, 1156, 1156, 1156, 1156,
1589 1156, 1156, 773, 1156, 773, 807, 807, 807, 807, 807,
1590 807, 807, 807, 807, 807, 807, 807, 807, 1156, 807,
1591 807, 1156, 807, 67, 1156, 1156, 1156, 1156, 1156, 1156,
1592 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1593 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1594 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1595 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1596 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156
1597 } ;
1598
1599static yyconst flex_int16_t yy_chk[5491] =
1600 { 0,
1601 0, 1, 162, 1, 1, 2, 146, 2, 2, 0,
1602 3, 162, 3, 3, 72, 81, 1, 89, 72, 81,
1603 2, 89, 102, 146, 1, 3, 102, 9, 2, 9,
1604 9, 152, 9, 3, 0, 9, 134, 134, 10, 152,
1605 10, 10, 9, 10, 114, 94, 10, 94, 114, 105,
1606 9, 105, 0, 10, 21, 1, 21, 21, 1079, 2,
1607 29, 10, 29, 29, 3, 4, 4, 4, 4, 21,
1608 121, 4, 131, 77, 121, 29, 131, 21, 77, 83,
1609 4, 9, 21, 29, 147, 142, 1061, 83, 4, 142,
1610 4, 4, 10, 95, 83, 83, 83, 77, 77, 95,
1611
1612 95, 147, 157, 83, 83, 133, 133, 133, 21, 159,
1613 159, 157, 171, 133, 29, 157, 226, 171, 226, 4,
1614 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1615 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1616 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1617 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1618 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1619 5, 5, 5, 5, 5, 5, 7, 7, 7, 7,
1620 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1621 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1622
1623 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1624 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1625 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1626 7, 7, 11, 148, 11, 11, 12, 11, 12, 12,
1627 150, 12, 181, 181, 151, 158, 149, 11, 192, 167,
1628 148, 12, 149, 192, 849, 11, 149, 150, 150, 12,
1629 11, 151, 167, 149, 12, 177, 158, 187, 196, 177,
1630 204, 187, 196, 213, 204, 218, 840, 213, 224, 218,
1631 219, 219, 224, 233, 239, 246, 11, 233, 239, 246,
1632 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1633
1634 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1635 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1636 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1637 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1638 13, 13, 13, 13, 13, 13, 13, 15, 371, 15,
1639 15, 16, 15, 16, 16, 256, 16, 371, 17, 256,
1640 17, 17, 15, 17, 161, 161, 16, 220, 223, 839,
1641 15, 361, 161, 17, 16, 15, 381, 225, 227, 16,
1642 17, 17, 220, 223, 18, 381, 18, 18, 361, 18,
1643 372, 161, 225, 227, 249, 249, 285, 285, 267, 18,
1644
1645 225, 15, 267, 372, 275, 16, 18, 18, 275, 283,
1646 295, 303, 17, 283, 295, 303, 310, 321, 322, 322,
1647 310, 327, 336, 341, 341, 321, 349, 391, 366, 327,
1648 336, 838, 391, 404, 349, 349, 366, 404, 18, 19,
1649 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1650 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1651 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1652 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1653 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1654 19, 19, 19, 19, 19, 22, 320, 22, 22, 30,
1655
1656 30, 30, 30, 318, 320, 30, 387, 368, 318, 323,
1657 22, 320, 320, 320, 30, 368, 829, 323, 22, 387,
1658 320, 320, 30, 22, 323, 323, 323, 318, 318, 344,
1659 364, 345, 389, 323, 323, 344, 350, 350, 350, 394,
1660 364, 345, 828, 400, 350, 389, 394, 364, 400, 22,
1661 23, 23, 344, 30, 345, 23, 23, 23, 23, 23,
1662 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1663 23, 23, 23, 23, 23, 23, 23, 25, 25, 25,
1664 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1665 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1666
1667 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1668 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1669 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1670 25, 25, 25, 27, 27, 27, 27, 27, 27, 27,
1671 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1672 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1673 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1674 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1675 27, 27, 27, 27, 27, 27, 27, 27, 27, 31,
1676 533, 31, 31, 32, 425, 32, 32, 433, 33, 533,
1677
1678 33, 33, 433, 34, 31, 34, 34, 329, 32, 425,
1679 329, 827, 31, 33, 395, 329, 32, 41, 34, 41,
1680 41, 33, 352, 352, 352, 395, 34, 135, 135, 135,
1681 352, 42, 41, 42, 42, 135, 363, 455, 455, 329,
1682 41, 41, 363, 31, 826, 41, 42, 32, 329, 376,
1683 376, 492, 33, 363, 42, 42, 825, 34, 35, 42,
1684 35, 35, 379, 379, 43, 376, 43, 43, 548, 35,
1685 379, 41, 494, 35, 492, 43, 135, 463, 463, 43,
1686 510, 35, 35, 548, 507, 42, 35, 43, 44, 379,
1687 44, 44, 424, 510, 45, 494, 45, 45, 582, 44,
1688
1689 495, 507, 338, 44, 46, 338, 46, 46, 508, 45,
1690 338, 44, 35, 36, 424, 36, 36, 45, 43, 46,
1691 824, 490, 493, 495, 36, 508, 823, 46, 36, 490,
1692 490, 500, 493, 514, 338, 582, 36, 36, 424, 500,
1693 500, 36, 44, 338, 506, 493, 595, 814, 45, 501,
1694 501, 501, 514, 813, 506, 551, 562, 501, 46, 1176,
1695 551, 506, 1176, 595, 562, 562, 812, 36, 37, 37,
1696 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1697 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1698 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1699
1700 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1701 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1702 37, 37, 37, 37, 39, 811, 39, 39, 588, 572,
1703 637, 53, 572, 53, 53, 39, 53, 572, 54, 39,
1704 54, 54, 55, 54, 55, 55, 53, 39, 39, 810,
1705 55, 588, 39, 54, 53, 809, 526, 55, 646, 53,
1706 56, 54, 56, 56, 808, 55, 54, 637, 56, 625,
1707 55, 806, 355, 355, 355, 56, 526, 625, 39, 40,
1708 355, 40, 40, 56, 805, 53, 628, 628, 56, 804,
1709 40, 693, 54, 792, 40, 646, 55, 502, 502, 502,
1710
1711 791, 526, 40, 40, 587, 502, 790, 40, 581, 686,
1712 686, 581, 587, 587, 56, 591, 581, 624, 355, 592,
1713 592, 592, 789, 591, 591, 624, 624, 592, 693, 1177,
1714 502, 788, 1177, 40, 47, 47, 47, 47, 47, 47,
1715 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1716 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1717 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1718 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1719 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1720 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1721
1722 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1723 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1724 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1725 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1726 49, 49, 49, 49, 49, 49, 51, 593, 593, 593,
1727 610, 610, 610, 787, 786, 593, 629, 640, 657, 657,
1728 657, 51, 51, 785, 629, 640, 51, 51, 51, 51,
1729 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
1730 51, 51, 51, 51, 51, 51, 51, 51, 57, 57,
1731 784, 593, 782, 57, 57, 57, 57, 57, 57, 57,
1732
1733 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
1734 57, 57, 57, 57, 57, 59, 781, 59, 59, 60,
1735 1191, 60, 60, 1191, 649, 696, 63, 649, 63, 63,
1736 59, 63, 649, 696, 60, 664, 664, 664, 59, 780,
1737 698, 63, 60, 59, 465, 465, 465, 60, 698, 63,
1738 665, 665, 665, 737, 63, 779, 737, 566, 566, 566,
1739 778, 737, 465, 64, 1200, 64, 64, 1200, 64, 59,
1740 567, 567, 567, 60, 61, 566, 61, 61, 64, 61,
1741 63, 699, 61, 61, 61, 699, 64, 1201, 567, 61,
1742 1201, 64, 565, 565, 565, 465, 777, 61, 61, 738,
1743
1744 699, 565, 776, 767, 568, 568, 568, 738, 566, 766,
1745 565, 767, 630, 630, 630, 765, 764, 64, 626, 626,
1746 626, 567, 568, 705, 705, 705, 763, 626, 61, 62,
1747 630, 62, 62, 762, 62, 761, 626, 62, 62, 62,
1748 760, 618, 618, 565, 62, 759, 618, 758, 742, 618,
1749 618, 742, 62, 62, 618, 568, 742, 757, 618, 618,
1750 654, 654, 654, 630, 703, 703, 703, 1202, 654, 626,
1751 1202, 793, 703, 712, 712, 712, 714, 714, 714, 793,
1752 756, 755, 754, 62, 65, 65, 65, 65, 65, 65,
1753 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1754
1755 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1756 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1757 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1758 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1759 206, 753, 752, 751, 206, 627, 627, 627, 206, 206,
1760 206, 740, 750, 206, 627, 740, 206, 206, 749, 1204,
1761 748, 206, 1204, 627, 747, 206, 206, 342, 745, 736,
1762 740, 342, 342, 342, 1210, 730, 342, 1210, 342, 729,
1763 631, 631, 631, 342, 342, 342, 346, 728, 727, 726,
1764 346, 346, 346, 725, 724, 346, 627, 346, 631, 743,
1765
1766 743, 743, 346, 346, 346, 359, 723, 743, 722, 359,
1767 359, 359, 1213, 721, 359, 1213, 359, 720, 774, 774,
1768 774, 359, 359, 359, 365, 365, 774, 719, 365, 365,
1769 365, 631, 718, 365, 717, 365, 655, 655, 655, 716,
1770 365, 365, 365, 373, 655, 373, 715, 711, 710, 373,
1771 373, 373, 1228, 709, 373, 1228, 373, 708, 632, 632,
1772 632, 373, 373, 373, 406, 707, 706, 702, 406, 406,
1773 406, 1237, 701, 406, 1237, 406, 632, 655, 700, 694,
1774 406, 406, 406, 407, 407, 692, 407, 1238, 407, 691,
1775 1238, 407, 407, 683, 682, 681, 407, 801, 801, 801,
1776
1777 407, 407, 420, 680, 679, 801, 420, 420, 420, 632,
1778 678, 420, 677, 420, 684, 684, 684, 676, 420, 420,
1779 420, 430, 675, 684, 674, 430, 822, 822, 822, 430,
1780 430, 430, 684, 673, 430, 672, 430, 820, 820, 820,
1781 671, 430, 430, 430, 436, 820, 670, 669, 436, 436,
1782 436, 1239, 668, 436, 1239, 436, 835, 835, 835, 667,
1783 436, 436, 436, 440, 835, 684, 666, 440, 440, 440,
1784 1240, 663, 440, 1240, 440, 1246, 662, 822, 1246, 440,
1785 440, 440, 573, 573, 573, 573, 573, 573, 573, 573,
1786 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1787
1788 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1789 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1790 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1791 573, 573, 573, 573, 573, 573, 573, 573, 639, 639,
1792 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1793 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1794 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1795 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1796 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1797 639, 639, 639, 639, 685, 685, 685, 688, 688, 688,
1798
1799 689, 689, 689, 685, 690, 690, 690, 661, 660, 704,
1800 704, 704, 685, 704, 659, 688, 658, 704, 689, 731,
1801 731, 731, 690, 732, 732, 732, 656, 653, 731, 733,
1802 733, 733, 732, 651, 734, 734, 734, 731, 735, 735,
1803 735, 732, 744, 744, 744, 685, 744, 733, 688, 650,
1804 744, 689, 734, 647, 644, 690, 735, 768, 768, 768,
1805 704, 643, 642, 769, 769, 769, 768, 641, 1249, 638,
1806 731, 1249, 769, 634, 732, 768, 770, 770, 770, 633,
1807 733, 769, 771, 771, 771, 734, 772, 772, 772, 735,
1808 846, 846, 846, 744, 770, 775, 775, 775, 846, 775,
1809
1810 771, 622, 621, 775, 772, 797, 797, 797, 768, 617,
1811 795, 795, 795, 616, 769, 615, 796, 796, 796, 795,
1812 798, 798, 798, 797, 614, 796, 613, 770, 795, 799,
1813 799, 799, 1263, 771, 796, 1263, 612, 772, 798, 611,
1814 802, 802, 802, 609, 802, 608, 775, 799, 802, 803,
1815 803, 803, 607, 803, 606, 605, 797, 815, 815, 815,
1816 604, 795, 603, 816, 816, 816, 815, 796, 817, 817,
1817 817, 798, 816, 602, 600, 815, 818, 818, 818, 599,
1818 799, 816, 598, 819, 819, 819, 817, 596, 821, 821,
1819 821, 802, 821, 585, 818, 584, 821, 830, 830, 830,
1820
1821 803, 819, 831, 831, 831, 583, 830, 579, 815, 578,
1822 577, 831, 576, 575, 816, 830, 837, 837, 837, 817,
1823 831, 574, 832, 832, 832, 571, 570, 818, 833, 833,
1824 833, 834, 834, 834, 819, 564, 561, 559, 558, 821,
1825 832, 555, 550, 836, 836, 836, 833, 836, 830, 834,
1826 546, 836, 544, 831, 841, 841, 841, 842, 842, 842,
1827 843, 843, 843, 841, 541, 540, 842, 837, 844, 844,
1828 844, 539, 841, 832, 538, 842, 537, 536, 843, 833,
1829 535, 534, 834, 845, 845, 845, 844, 847, 847, 847,
1830 532, 847, 531, 530, 836, 847, 848, 848, 848, 529,
1831
1832 528, 845, 852, 852, 852, 841, 527, 525, 842, 524,
1833 522, 843, 850, 850, 850, 851, 851, 851, 519, 844,
1834 852, 850, 517, 516, 851, 853, 853, 853, 512, 511,
1835 850, 503, 499, 851, 845, 857, 857, 857, 847, 854,
1836 854, 854, 498, 853, 855, 855, 855, 848, 862, 862,
1837 862, 489, 855, 852, 856, 856, 856, 854, 856, 858,
1838 858, 858, 856, 850, 487, 486, 851, 485, 858, 859,
1839 859, 859, 860, 860, 860, 483, 853, 858, 859, 482,
1840 860, 861, 861, 861, 481, 861, 857, 859, 478, 861,
1841 854, 476, 863, 863, 863, 865, 865, 865, 475, 862,
1842
1843 863, 868, 868, 868, 474, 856, 473, 864, 864, 864,
1844 858, 864, 871, 871, 871, 864, 866, 866, 866, 472,
1845 859, 867, 867, 867, 866, 867, 869, 869, 869, 867,
1846 470, 469, 861, 468, 869, 870, 870, 870, 467, 870,
1847 872, 872, 872, 870, 466, 464, 865, 460, 872, 873,
1848 873, 873, 868, 873, 874, 874, 874, 873, 864, 875,
1849 875, 875, 457, 871, 877, 877, 877, 875, 456, 876,
1850 876, 876, 867, 876, 878, 878, 878, 876, 454, 879,
1851 879, 879, 878, 879, 453, 449, 870, 879, 880, 880,
1852 880, 881, 881, 881, 882, 882, 882, 448, 882, 881,
1853
1854 873, 444, 882, 443, 439, 874, 883, 883, 883, 884,
1855 884, 884, 886, 886, 886, 877, 438, 884, 435, 434,
1856 876, 885, 885, 885, 431, 885, 887, 887, 887, 885,
1857 879, 889, 889, 889, 887, 429, 888, 888, 888, 880,
1858 888, 890, 890, 890, 888, 882, 891, 891, 891, 890,
1859 891, 892, 892, 892, 891, 428, 423, 883, 893, 893,
1860 893, 422, 419, 886, 416, 415, 893, 894, 894, 894,
1861 414, 894, 885, 413, 412, 894, 895, 895, 895, 898,
1862 898, 898, 889, 896, 896, 896, 411, 888, 897, 897,
1863 897, 896, 897, 899, 899, 899, 897, 891, 901, 901,
1864
1865 901, 899, 892, 900, 900, 900, 410, 900, 902, 902,
1866 902, 900, 409, 903, 903, 903, 902, 903, 894, 408,
1867 405, 903, 904, 904, 904, 398, 393, 895, 392, 388,
1868 898, 386, 905, 905, 905, 907, 907, 907, 385, 897,
1869 905, 384, 906, 906, 906, 383, 906, 382, 380, 901,
1870 906, 908, 908, 908, 900, 910, 910, 910, 375, 908,
1871 369, 909, 909, 909, 903, 909, 911, 911, 911, 909,
1872 913, 913, 913, 904, 911, 912, 912, 912, 358, 912,
1873 914, 914, 914, 912, 357, 354, 907, 348, 914, 340,
1874 915, 915, 915, 906, 915, 916, 916, 916, 915, 917,
1875
1876 917, 917, 919, 919, 919, 337, 910, 917, 334, 918,
1877 918, 918, 909, 918, 920, 920, 920, 918, 922, 922,
1878 922, 913, 920, 921, 921, 921, 912, 921, 923, 923,
1879 923, 921, 925, 925, 925, 333, 923, 928, 928, 928,
1880 332, 915, 331, 924, 924, 924, 916, 924, 926, 926,
1881 926, 924, 330, 919, 328, 326, 926, 927, 927, 927,
1882 918, 927, 929, 929, 929, 927, 931, 931, 931, 922,
1883 929, 930, 930, 930, 921, 930, 932, 932, 932, 930,
1884 934, 934, 934, 925, 932, 933, 933, 933, 928, 933,
1885 935, 935, 935, 933, 924, 936, 936, 936, 935, 936,
1886
1887 937, 937, 937, 936, 938, 938, 938, 325, 927, 940,
1888 940, 940, 938, 943, 943, 943, 315, 931, 314, 939,
1889 939, 939, 930, 939, 941, 941, 941, 939, 946, 946,
1890 946, 934, 941, 942, 942, 942, 933, 942, 949, 949,
1891 949, 942, 944, 944, 944, 311, 936, 304, 296, 292,
1892 944, 937, 284, 945, 945, 945, 276, 945, 268, 259,
1893 940, 945, 257, 250, 943, 947, 947, 947, 247, 240,
1894 939, 234, 232, 947, 948, 948, 948, 217, 948, 946,
1895 214, 212, 948, 205, 942, 950, 950, 950, 203, 949,
1896 951, 951, 951, 950, 951, 952, 952, 952, 951, 953,
1897
1898 953, 953, 197, 188, 945, 178, 175, 953, 954, 954,
1899 954, 168, 954, 955, 955, 955, 954, 166, 956, 956,
1900 956, 958, 958, 958, 165, 948, 956, 957, 957, 957,
1901 164, 957, 959, 959, 959, 957, 961, 961, 961, 163,
1902 959, 951, 160, 960, 960, 960, 952, 960, 962, 962,
1903 962, 960, 156, 963, 963, 963, 962, 963, 154, 954,
1904 153, 963, 143, 132, 955, 964, 964, 964, 965, 965,
1905 965, 130, 958, 966, 966, 966, 965, 966, 957, 122,
1906 115, 966, 967, 967, 967, 113, 106, 961, 968, 968,
1907 968, 969, 969, 969, 960, 969, 968, 103, 96, 969,
1908
1909 970, 970, 970, 93, 963, 971, 971, 971, 92, 90,
1910 972, 972, 972, 971, 972, 82, 964, 73, 972, 973,
1911 973, 973, 67, 0, 966, 0, 974, 974, 974, 976,
1912 976, 976, 0, 967, 974, 975, 975, 975, 0, 975,
1913 0, 0, 969, 975, 977, 977, 977, 979, 979, 979,
1914 0, 970, 977, 0, 978, 978, 978, 0, 978, 0,
1915 0, 972, 978, 980, 980, 980, 982, 982, 982, 0,
1916 973, 980, 0, 981, 981, 981, 0, 981, 0, 0,
1917 976, 981, 983, 983, 983, 0, 975, 984, 984, 984,
1918 983, 984, 985, 985, 985, 984, 0, 0, 979, 986,
1919
1920 986, 986, 987, 987, 987, 978, 987, 986, 0, 0,
1921 987, 988, 988, 988, 989, 989, 989, 982, 0, 990,
1922 990, 990, 989, 990, 981, 0, 0, 990, 991, 991,
1923 991, 992, 992, 992, 994, 994, 994, 0, 984, 992,
1924 993, 993, 993, 985, 993, 997, 997, 997, 993, 995,
1925 995, 995, 0, 987, 1000, 1000, 1000, 995, 0, 996,
1926 996, 996, 988, 996, 998, 998, 998, 996, 0, 0,
1927 990, 0, 998, 999, 999, 999, 0, 999, 0, 991,
1928 0, 999, 1001, 1001, 1001, 994, 1003, 1003, 1003, 0,
1929 1001, 993, 0, 1002, 1002, 1002, 997, 1002, 1004, 1004,
1930
1931 1004, 1002, 1006, 1006, 1006, 1000, 1004, 1005, 1005, 1005,
1932 996, 1005, 1007, 1007, 1007, 1005, 0, 1008, 1008, 1008,
1933 1007, 1008, 0, 0, 999, 1008, 1009, 1009, 1009, 0,
1934 1010, 1010, 1010, 1012, 1012, 1012, 0, 1003, 1010, 1011,
1935 1011, 1011, 0, 1011, 1002, 0, 0, 1011, 1013, 1013,
1936 1013, 0, 0, 1006, 0, 0, 1013, 0, 1005, 1014,
1937 1014, 1014, 0, 1014, 1015, 1015, 1015, 1014, 1008, 0,
1938 1016, 1016, 1016, 1018, 1018, 1018, 0, 1009, 1016, 1017,
1939 1017, 1017, 0, 1017, 1012, 0, 0, 1017, 0, 0,
1940 1011, 1019, 1019, 1019, 1020, 1020, 1020, 0, 1020, 1019,
1941
1942 0, 0, 1020, 1021, 1021, 1021, 1022, 1022, 1022, 0,
1943 1014, 1024, 1024, 1024, 1022, 1015, 0, 1023, 1023, 1023,
1944 0, 1023, 0, 0, 1018, 1023, 1025, 1025, 1025, 0,
1945 1017, 1026, 1026, 1026, 1025, 1026, 1027, 1027, 1027, 1026,
1946 1028, 1028, 1028, 0, 0, 1020, 0, 0, 1028, 1029,
1947 1029, 1029, 0, 1029, 1021, 0, 0, 1029, 1030, 1030,
1948 1030, 0, 1024, 1031, 1031, 1031, 0, 0, 1023, 0,
1949 0, 1031, 1032, 1032, 1032, 0, 1032, 1033, 1033, 1033,
1950 1032, 0, 1026, 1034, 1034, 1034, 0, 1027, 1035, 1035,
1951 1035, 1034, 1035, 1036, 1036, 1036, 1035, 1037, 1037, 1037,
1952
1953 1029, 0, 1038, 1038, 1038, 1037, 1038, 0, 0, 1030,
1954 1038, 1039, 1039, 1039, 1040, 1040, 1040, 1041, 1041, 1041,
1955 0, 1041, 1040, 1032, 0, 1041, 0, 0, 1033, 1042,
1956 1042, 1042, 1043, 1043, 1043, 1045, 1045, 1045, 0, 1035,
1957 1043, 1044, 1044, 1044, 1036, 1044, 1046, 1046, 1046, 1044,
1958 1048, 1048, 1048, 1038, 1046, 1047, 1047, 1047, 0, 1047,
1959 0, 0, 1039, 1047, 1049, 1049, 1049, 0, 1041, 1050,
1960 1050, 1050, 1049, 1050, 1051, 1051, 1051, 1050, 0, 0,
1961 1042, 1052, 1052, 1052, 0, 0, 1045, 0, 0, 1052,
1962 0, 0, 1044, 0, 1053, 1053, 1053, 0, 1053, 0,
1963
1964 0, 1048, 1053, 1054, 1054, 1054, 1047, 1055, 1055, 1055,
1965 1056, 1056, 1056, 0, 1056, 1055, 0, 0, 1056, 0,
1966 1050, 1057, 1057, 1057, 0, 1051, 1058, 1058, 1058, 1059,
1967 1059, 1059, 0, 1059, 1058, 0, 0, 1059, 1060, 1060,
1968 1060, 0, 1062, 1062, 1062, 1053, 1062, 1063, 1063, 1063,
1969 1062, 1064, 1064, 1064, 1054, 1064, 1065, 1065, 1065, 1064,
1970 0, 1056, 1066, 1066, 1066, 0, 1066, 1067, 1067, 1067,
1971 1066, 0, 1057, 1068, 1068, 1068, 0, 1068, 0, 0,
1972 1059, 1068, 1069, 1069, 1069, 0, 1070, 1070, 1070, 1060,
1973 1070, 0, 0, 1062, 1070, 1071, 1071, 1071, 1063, 1073,
1974
1975 1073, 1073, 1064, 0, 1072, 1072, 1072, 1065, 1072, 1074,
1976 1074, 1074, 1072, 1066, 1075, 1075, 1075, 0, 1067, 1076,
1977 1076, 1076, 0, 0, 1068, 1077, 1077, 1077, 1078, 1078,
1978 1078, 0, 0, 1069, 1080, 1080, 1080, 1070, 1081, 1081,
1979 1081, 1082, 1082, 1082, 0, 0, 1071, 1083, 1083, 1083,
1980 1073, 1084, 1084, 1084, 0, 1072, 1085, 1085, 1085, 0,
1981 1074, 1086, 1086, 1086, 0, 1075, 1087, 1087, 1087, 0,
1982 1076, 1088, 1088, 1088, 0, 0, 1077, 0, 0, 1078,
1983 1089, 1089, 1089, 0, 0, 1080, 1090, 1090, 1090, 1081,
1984 0, 0, 1082, 1091, 1091, 1091, 0, 0, 1083, 1092,
1985
1986 1092, 1092, 1084, 1093, 1093, 1093, 0, 1085, 1094, 1094,
1987 1094, 0, 1086, 1095, 1095, 1095, 0, 1087, 1096, 1096,
1988 1096, 0, 1088, 1097, 1097, 1097, 1098, 1098, 1098, 0,
1989 0, 1089, 1099, 1099, 1099, 0, 0, 1090, 1100, 1100,
1990 1100, 1101, 1101, 1101, 1091, 1102, 1102, 1102, 0, 0,
1991 1092, 1103, 1103, 1103, 1093, 1104, 1104, 1104, 0, 1094,
1992 1105, 1105, 1105, 0, 1095, 1106, 1106, 1106, 0, 1096,
1993 1107, 1107, 1107, 0, 1097, 0, 0, 1098, 1108, 1108,
1994 1108, 0, 0, 1099, 1109, 1109, 1109, 0, 0, 1100,
1995 0, 0, 1101, 1110, 1110, 1110, 1102, 1111, 1111, 1111,
1996
1997 0, 0, 1103, 1112, 1112, 1112, 1104, 1113, 1113, 1113,
1998 0, 1105, 1114, 1114, 1114, 0, 1106, 1115, 1115, 1115,
1999 0, 1107, 1116, 1116, 1116, 1117, 1117, 1117, 0, 1108,
2000 1118, 1118, 1118, 0, 0, 1109, 1119, 1119, 1119, 1120,
2001 1120, 1120, 0, 0, 1110, 1121, 1121, 1121, 1111, 1122,
2002 1122, 1122, 0, 0, 1112, 1123, 1123, 1123, 1113, 1124,
2003 1124, 1124, 0, 1114, 1125, 1125, 1125, 0, 1115, 1126,
2004 1126, 1126, 0, 1116, 0, 0, 1117, 1127, 1127, 1127,
2005 0, 1118, 1128, 1128, 1128, 0, 0, 1119, 0, 0,
2006 1120, 1129, 1129, 1129, 0, 0, 1121, 1130, 1130, 1130,
2007
2008 1122, 1131, 1131, 1131, 0, 0, 1123, 1132, 1132, 1132,
2009 1124, 1133, 1133, 1133, 0, 1125, 1134, 1134, 1134, 0,
2010 1126, 1135, 1135, 1135, 1136, 1136, 1136, 0, 1127, 1137,
2011 1137, 1137, 0, 1128, 1138, 1138, 1138, 1139, 1139, 1139,
2012 0, 0, 1129, 1140, 1140, 1140, 0, 0, 1130, 1141,
2013 1141, 1141, 1131, 1142, 1142, 1142, 0, 0, 1132, 1143,
2014 1143, 1143, 1133, 1144, 1144, 1144, 0, 1134, 1145, 1145,
2015 1145, 0, 1135, 0, 0, 1136, 1146, 1146, 1146, 0,
2016 1137, 1147, 1147, 1147, 0, 1138, 0, 0, 1139, 1148,
2017 1148, 1148, 0, 0, 1140, 1149, 1149, 1149, 0, 0,
2018
2019 1141, 1150, 1150, 1150, 1142, 1151, 1151, 1151, 0, 0,
2020 1143, 1152, 1152, 1152, 1144, 1153, 1153, 1153, 0, 1145,
2021 1154, 1154, 1154, 1155, 1155, 1155, 0, 1146, 0, 0,
2022 0, 0, 1147, 0, 0, 0, 0, 0, 0, 0,
2023 1148, 0, 0, 0, 0, 0, 1149, 0, 0, 0,
2024 0, 0, 1150, 0, 0, 0, 1151, 0, 0, 0,
2025 0, 0, 1152, 0, 0, 0, 1153, 0, 0, 0,
2026 0, 1154, 0, 0, 1155, 1157, 1157, 1157, 1157, 1157,
2027 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
2028 1157, 1157, 1157, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
2029
2030 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
2031 1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
2032 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1160,
2033 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
2034 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1161, 1161, 1161,
2035 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
2036 1161, 1161, 1161, 1161, 1161, 1162, 1162, 1162, 1162, 1162,
2037 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
2038 1162, 1162, 1162, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
2039 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
2040
2041 1163, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
2042 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165,
2043 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
2044 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1166, 1166, 1166,
2045 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166,
2046 1166, 1166, 1166, 1166, 1166, 1167, 1167, 1167, 1167, 1167,
2047 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
2048 1167, 1167, 1167, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
2049 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
2050 1168, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
2051
2052 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170,
2053 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
2054 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1171, 1171, 1171,
2055 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2056 1171, 1171, 1171, 1171, 1171, 1172, 1172, 1172, 1172, 1172,
2057 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
2058 1172, 1172, 1172, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
2059 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
2060 1173, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
2061 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1175,
2062
2063 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
2064 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1178, 1178, 1178,
2065 0, 1178, 1178, 0, 0, 1178, 1178, 1178, 1178, 0,
2066 1178, 1178, 1178, 1178, 1178, 1179, 1179, 1179, 0, 1179,
2067 1179, 1179, 0, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
2068 1179, 1179, 1179, 1180, 1180, 1180, 0, 1180, 1180, 0,
2069 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
2070 1181, 1181, 1181, 0, 1181, 1181, 1181, 1181, 1181, 1181,
2071 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182,
2072 1182, 0, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
2073
2074 1182, 1182, 1182, 1182, 1182, 1182, 1183, 1183, 1183, 0,
2075 0, 0, 1183, 0, 0, 0, 0, 1183, 0, 0,
2076 1183, 1184, 1184, 1184, 0, 0, 1184, 0, 1184, 1184,
2077 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1185,
2078 1185, 0, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
2079 1185, 1185, 1185, 1185, 1185, 1185, 1186, 1186, 1186, 0,
2080 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
2081 1186, 1186, 1186, 1186, 1187, 0, 0, 0, 0, 0,
2082 1187, 0, 0, 0, 0, 1187, 0, 0, 1187, 1188,
2083 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
2084
2085 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 0, 0,
2086 0, 0, 1189, 0, 0, 0, 0, 1189, 0, 0,
2087 1189, 1189, 1190, 0, 0, 0, 0, 0, 0, 0,
2088 0, 1190, 0, 1190, 0, 0, 1190, 1192, 1192, 1192,
2089 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192,
2090 1192, 1192, 1192, 1192, 1192, 1193, 0, 1193, 0, 1193,
2091 1193, 1193, 1193, 1193, 0, 1193, 1193, 0, 1193, 1193,
2092 0, 1193, 1194, 1194, 1194, 0, 1194, 1194, 1194, 1194,
2093 1194, 0, 1194, 1194, 1194, 1194, 1194, 1194, 0, 1194,
2094 1195, 1195, 1195, 0, 1195, 1195, 1195, 1195, 1195, 1195,
2095
2096 1195, 1195, 1195, 1195, 1195, 0, 1195, 1196, 1196, 1196,
2097 0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 0,
2098 1196, 1196, 0, 1196, 1197, 0, 1197, 0, 1197, 1197,
2099 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 0,
2100 1197, 1198, 0, 1198, 0, 1198, 1198, 1198, 1198, 1198,
2101 0, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1199,
2102 0, 1199, 0, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
2103 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1203, 1203, 1203,
2104 0, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
2105 1203, 1203, 1203, 1203, 1203, 1205, 1205, 1205, 0, 1205,
2106
2107 1205, 1205, 0, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
2108 1205, 1205, 1205, 1206, 1206, 1206, 0, 1206, 1206, 1206,
2109 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
2110 1206, 1207, 1207, 0, 1207, 0, 0, 1207, 1208, 0,
2111 1208, 1208, 0, 1208, 0, 1208, 0, 1208, 1209, 1209,
2112 1209, 0, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
2113 1209, 1209, 1209, 1209, 1209, 1209, 1211, 1211, 1211, 0,
2114 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
2115 1211, 1211, 1211, 1211, 1212, 1212, 1212, 0, 1212, 1212,
2116 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
2117
2118 1212, 1212, 1214, 1214, 1214, 0, 1214, 1214, 0, 0,
2119 1214, 1214, 1214, 1214, 0, 1214, 1214, 1214, 1214, 1214,
2120 1215, 1215, 1215, 0, 1215, 1215, 1215, 1215, 1215, 1215,
2121 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1216, 1216, 1216,
2122 0, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216,
2123 1216, 1216, 1216, 1216, 1216, 1217, 1217, 1217, 0, 1217,
2124 1217, 0, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
2125 1217, 1217, 1218, 1218, 1218, 0, 1218, 1218, 1218, 1218,
2126 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
2127 1219, 1219, 1219, 0, 1219, 1219, 1219, 1219, 1219, 1219,
2128
2129 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1220, 1220,
2130 1220, 0, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
2131 1220, 1220, 1220, 1220, 1220, 1220, 1221, 1221, 1221, 0,
2132 0, 0, 1221, 0, 0, 0, 0, 1221, 0, 0,
2133 1221, 1222, 1222, 1222, 0, 0, 1222, 0, 1222, 1222,
2134 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1223, 1223,
2135 1223, 0, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
2136 1223, 1223, 1223, 1223, 1223, 1223, 1224, 0, 0, 0,
2137 0, 0, 1224, 0, 0, 0, 0, 1224, 0, 0,
2138 1224, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
2139
2140 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1226, 1226,
2141 0, 0, 0, 0, 1226, 0, 0, 0, 0, 1226,
2142 0, 0, 1226, 1226, 1227, 0, 0, 0, 0, 0,
2143 0, 0, 0, 1227, 0, 1227, 0, 0, 1227, 1229,
2144 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
2145 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1230, 0, 1230,
2146 0, 1230, 1230, 1230, 1230, 1230, 0, 1230, 1230, 0,
2147 1230, 1230, 0, 1230, 1231, 1231, 1231, 0, 1231, 1231,
2148 1231, 1231, 1231, 0, 1231, 1231, 1231, 1231, 1231, 1231,
2149 0, 1231, 1232, 1232, 1232, 0, 1232, 1232, 1232, 1232,
2150
2151 1232, 1232, 1232, 1232, 1232, 1232, 1232, 0, 1232, 1233,
2152 1233, 1233, 0, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
2153 1233, 0, 1233, 1233, 0, 1233, 1234, 0, 1234, 0,
2154 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
2155 1234, 0, 1234, 1235, 0, 1235, 0, 1235, 1235, 1235,
2156 1235, 1235, 0, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
2157 1235, 1236, 0, 1236, 0, 1236, 1236, 1236, 1236, 1236,
2158 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1241,
2159 1241, 1241, 0, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2160 1241, 1241, 1241, 1241, 1241, 1241, 1242, 1242, 1242, 0,
2161
2162 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
2163 1242, 1242, 1242, 1242, 1243, 1243, 0, 1243, 0, 0,
2164 1243, 1244, 1244, 1244, 0, 1244, 1244, 1244, 1244, 1244,
2165 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1245,
2166 1245, 1245, 0, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
2167 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1247, 1247, 1247,
2168 0, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247,
2169 1247, 1247, 1247, 1247, 1247, 1248, 1248, 1248, 0, 1248,
2170 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248,
2171 1248, 1248, 1248, 1250, 1250, 1250, 0, 1250, 1250, 1250,
2172
2173 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250,
2174 1251, 1251, 1251, 0, 1251, 1251, 0, 0, 1251, 1251,
2175 1251, 1251, 0, 1251, 1251, 1251, 1251, 1251, 1252, 1252,
2176 1252, 0, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252,
2177 1252, 1252, 1252, 1252, 1252, 1252, 1253, 1253, 1253, 0,
2178 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253,
2179 1253, 1253, 1253, 1253, 1254, 1254, 1254, 0, 1254, 1254,
2180 0, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
2181 1254, 1255, 1255, 1255, 0, 0, 0, 1255, 0, 0,
2182 0, 0, 1255, 0, 0, 1255, 1256, 1256, 1256, 0,
2183
2184 0, 1256, 0, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
2185 1256, 1256, 1256, 1257, 1257, 1257, 0, 1257, 1257, 1257,
2186 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257,
2187 1257, 1258, 1258, 1258, 0, 1258, 1258, 1258, 1258, 1258,
2188 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1259, 1259,
2189 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
2190 1259, 1259, 1259, 1259, 1259, 1259, 1260, 1260, 1260, 0,
2191 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
2192 1260, 1260, 1260, 1261, 1261, 1261, 0, 1261, 1261, 1261,
2193 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261,
2194
2195 1262, 0, 0, 0, 1262, 0, 0, 0, 0, 0,
2196 0, 0, 1262, 0, 1262, 1264, 1264, 1264, 1264, 1264,
2197 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 0, 1264,
2198 1264, 0, 1264, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2199 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2200 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2201 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2202 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2203 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156
2204 } ;
2205
2206extern int preYY_flex_debug;
2207int preYY_flex_debug = 0;
2208
2209static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
2210static char *yy_full_match;
2211static int yy_lp;
2212static int yy_looking_for_trail_begin = 0;
2213static int yy_full_lp;
2214static int *yy_full_state;
2215#define YY_TRAILING_MASK 0x2000
2216#define YY_TRAILING_HEAD_MASK 0x4000
2217#define REJECT \
2218{ \
2219*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */ \
2220yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
2221(yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
2222(yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
2223yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
2224++(yy_lp); \
2225goto find_rule; \
2226}
2227
2228#define yymore() yymore_used_but_not_detected
2229#define YY_MORE_ADJ 0
2230#define YY_RESTORE_YY_MORE_OFFSET
2231char *preYYtext;
2232#line 1 "pre.l"
2233/******************************************************************************
2234 *
2235 *
2236 *
2237 * Copyright (C) 1997-2011 by Dimitri van Heesch.
2238 *
2239 * Permission to use, copy, modify, and distribute this software and its
2240 * documentation under the terms of the GNU General Public License is hereby
2241 * granted. No representations are made about the suitability of this software
2242 * for any purpose. It is provided "as is" without express or implied warranty.
2243 * See the GNU General Public License for more details.
2244 *
2245 * Documents produced by Doxygen are derivative works derived from the
2246 * input used in their production; they are not affected by this license.
2247 *
2248 */
2249#line 19 "pre.l"
2250
2251/*
2252 *includes
2253 */
2254
2255#include <stdio.h>
2256#include <assert.h>
2257#include <ctype.h>
2258#include <errno.h>
2259
2260#include "qtbc.h"
2261#include <qarray.h>
2262#include <qstack.h>
2263#include <qfile.h>
2264#include <qstrlist.h>
2265#include <qdict.h>
2266#include <qregexp.h>
2267#include <qfileinfo.h>
2268#include <qdir.h>
2269
2270#include "pre.h"
2271#include "constexp.h"
2272#include "define.h"
2273#include "doxygen.h"
2274#include "message.h"
2275#include "util.h"
2276#include "defargs.h"
2277#include "debug.h"
2278#include "bufstr.h"
2279#include "portable.h"
2280#include "bufstr.h"
2281
2282#define YY_NEVER_INTERACTIVE 1
2283
2284
2285struct FileState
2286{
2287 FileState(int size) : fileBuf(size),
2288 oldFileBuf(0), oldFileBufPos(0) {}
2289 int lineNr;
2290 BufStr fileBuf;
2291 BufStr *oldFileBuf;
2292 int oldFileBufPos;
2293 YY_BUFFER_STATE bufState;
2294 QCString fileName;
2295};
2296
2297/* -----------------------------------------------------------------
2298 *
2299 *scanner's state
2300 */
2301
2302static int g_yyLineNr = 1;
2303static QCString g_yyFileName;
2304static FileDef *g_yyFileDef;
2305static FileDef *g_inputFileDef;
2306static int g_ifcount = 0;
2307static QStrList *g_pathList = 0;
2308static QStack<FileState> g_includeStack;
2309static QDict<int> *g_argDict;
2310static int g_defArgs = -1;
2311static QCString g_defName;
2312static QCString g_defText;
2313static QCString g_defLitText;
2314static QCString g_defArgsStr;
2315static QCString g_defExtraSpacing;
2316static bool g_defVarArgs;
2317static int g_level;
2318static int g_lastCContext;
2319static int g_lastCPPContext;
2320static QArray<int> g_levelGuard;
2321static BufStr *g_inputBuf;
2322static int g_inputBufPos;
2323static BufStr *g_outputBuf;
2324static int g_roundCount;
2325static bool g_quoteArg;
2326static DefineDict *g_globalDefineDict = new DefineDict(10009);
2327static DefineDict *g_fileDefineDict = new DefineDict(1009);
2328static DefineDict *g_expandedDict;
2329static int g_findDefArgContext;
2330static bool g_expectGuard;
2331static QCString g_lastGuardName;
2332static QCString g_incName;
2333static QCString g_guardExpr;
2334static int g_curlyCount;
2335static bool g_nospaces; // add extra spaces during macro expansion
2336
2337static bool g_macroExpansion; // from the configuration
2338static bool g_expandOnlyPredef; // from the configuration
2339static int g_commentCount;
2340static bool g_insideComment;
2341static bool g_isImported;
2342static QCString g_blockName;
2343static int g_condCtx;
2344static bool g_skip;
2345static QStack<bool> g_condStack;
2346static bool g_insideCS; // C# has simpler preprocessor
2347static bool g_isSource;
2348
2349static bool g_lexInit = FALSE;
2350
2351DefineDict* getGlobalDefineDict()
2352{
2353 return g_globalDefineDict;
2354}
2355
2356static void setFileName(const char *name)
2357{
2358 bool ambig;
2359 QFileInfo fi(name);
2360 g_yyFileName=convertToQCString(fi.absFilePath());
2361 g_yyFileDef=findFileDef(Doxygen::inputNameDict,g_yyFileName,ambig);
2362 if (g_yyFileDef==0) // if this is not an input file check if it is an
2363 // include file
2364 {
2365 g_yyFileDef=findFileDef(Doxygen::includeNameDict,g_yyFileName,ambig);
2366 }
2367 //printf("setFileName(%s) g_yyFileName=%s g_yyFileDef=%p\n",
2368 // name,g_yyFileName.data(),g_yyFileDef);
2369 if (g_yyFileDef && g_yyFileDef->isReference()) g_yyFileDef=0;
2370 g_insideCS = getLanguageFromFileName(g_yyFileName)==SrcLangExt_CSharp;
2371 g_isSource = guessSection(g_yyFileName);
2372}
2373
2374static void incrLevel()
2375{
2376 g_level++;
2377 g_levelGuard.resize(g_level);
2378 g_levelGuard[g_level-1]=FALSE;
2379 //printf("%s line %d: incrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level);
2380}
2381
2382static void decrLevel()
2383{
2384 //printf("%s line %d: decrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level);
2385 if (g_level > 0)
2386 {
2387 g_level--;
2388 g_levelGuard.resize(g_level);
2389 }
2390 else
2391 {
2392 warn(g_yyFileName,g_yyLineNr,"warning: More #endif's than #if's found.\n");
2393 }
2394}
2395
2396static bool otherCaseDone()
2397{
2398 if (g_level==0)
2399 {
2400 warn(g_yyFileName,g_yyLineNr,"warning: Found an #else without a preceding #if.\n");
2401 return TRUE;
2402 }
2403 else
2404 {
2405 return g_levelGuard[g_level-1];
2406 }
2407}
2408
2409static void setCaseDone(bool value)
2410{
2411 g_levelGuard[g_level-1]=value;
2412}
2413
2414static bool macroIsAccessible(Define *def)
2415{
2416 //printf("macroIsAccessible(%s) input=%s def=%s\n",
2417 // def->name.data(),g_inputFileDef?g_inputFileDef->name().data():"<none>",
2418 // def->fileDef ? def->fileDef->name().data() : "<none>");
2419 if (def && def->isPredefined) // predefined macro -> globally accessible
2420 {
2421 //printf("%s: predefined macro %s\n",g_inputFileDef->name().data(),def->name.data());
2422 return TRUE;
2423 }
2424 if (def && def->fileDef==g_inputFileDef)
2425 {
2426 //printf("%s: macro %s defined in this file at line %d now at %d\n",
2427 //g_inputFileDef->name().data(),def->name.data(),def->lineNr,g_yyLineNr);
2428 return def->lineNr<=g_yyLineNr;
2429 }
2430 if (g_inputFileDef && def && def->fileDef) // check if g_inputFileDef actually includes def->fileDef
2431 {
2432 QDict<FileDef> includedFiles(257);
2433 bool b = g_inputFileDef->includes(def->fileDef,&includedFiles);
2434 //printf("%s: Checking for accessibility of define '%s' (defined in %s): result=%d\n",
2435 // g_inputFileDef->name().data(),def->name.data(),def->fileDef->name().data(),b);
2436 return b;
2437 }
2438 //printf("not accessible!\n");
2439 return FALSE;
2440}
2441
2442static Define *isDefined(const char *name)
2443{
2444 Define *def=0;
2445 if (name)
2446 {
2447 def=g_globalDefineDict->find(name);
2448 //if ((def=fileDefineCache->findDefine(g_yyFileName,name)) && !def->undef)
2449 //return def;
2450 if (def && def->undef) def=0;
2451 if (def && !macroIsAccessible(def)) def=0;
2452 }
2453 return def;
2454}
2455
2456
2457static QDict<void> g_allIncludes(10009);
2458
2459static FileState *checkAndOpenFile(const QCString &fileName,bool &alreadyIncluded)
2460{
2461 alreadyIncluded = FALSE;
2462 FileState *fs = 0;
2463 //printf("checkAndOpenFile(%s)\n",fileName.data());
2464 QFileInfo fi(fileName);
2465 if (fi.exists() && fi.isFile())
2466 {
2467 static QStrList &exclPatterns = Config_getList("EXCLUDE_PATTERNS");
2468 if (patternMatch(fi,&exclPatterns)) return 0;
2469
2470 QCString absName = convertToQCString(fi.absFilePath());
2471
2472 // global guard
2473 if (g_curlyCount==0) // not #include inside { ... }
2474 {
2475 if (g_allIncludes.find(absName)!=0)
2476 {
2477 alreadyIncluded = TRUE;
2478 //printf(" already included 1\n");
2479 return 0; // already done
2480 }
2481 g_allIncludes.insert(absName,(void *)0x8);
2482 }
2483 // check include stack for absName
2484
2485 QStack<FileState> tmpStack;
2486 g_includeStack.setAutoDelete(FALSE);
2487 while ((fs=g_includeStack.pop()))
2488 {
2489 if (fs->fileName==absName) alreadyIncluded=TRUE;
2490 tmpStack.push(fs);
2491 }
2492 while ((fs=tmpStack.pop()))
2493 {
2494 g_includeStack.push(fs);
2495 }
2496 g_includeStack.setAutoDelete(TRUE);
2497
2498 if (alreadyIncluded)
2499 {
2500 //printf(" already included 2\n");
2501 return 0;
2502 }
2503 //printf("#include %s\n",absName.data());
2504
2505 fs = new FileState(fi.size()+4096);
2506 alreadyIncluded = FALSE;
2507 if (!readInputFile(absName,fs->fileBuf))
2508 { // error
2509 //printf(" error reading\n");
2510 delete fs;
2511 fs=0;
2512 }
2513 else
2514 {
2515 fs->oldFileBuf = g_inputBuf;
2516 fs->oldFileBufPos = g_inputBufPos;
2517 }
2518 }
2519 return fs;
2520}
2521
2522static FileState *findFile(const char *fileName,bool localInclude,bool &alreadyIncluded)
2523{
2524 //printf("** findFile(%s,%d) g_yyFileName=%s\n",fileName,localInclude,g_yyFileName.data());
2525 if (localInclude && !g_yyFileName.isEmpty())
2526 {
2527 QFileInfo fi(g_yyFileName);
2528 if (fi.exists())
2529 {
2530 QCString absName = QCString(fi.dirPath(TRUE).data())+"/"+fileName;
2531 FileState *fs = checkAndOpenFile(absName,alreadyIncluded);
2532 if (fs)
2533 {
2534setFileName(absName);
2535g_yyLineNr=1;
2536return fs;
2537 }
2538 else if (alreadyIncluded)
2539 {
2540return 0;
2541 }
2542 }
2543 }
2544 if (g_pathList==0)
2545 {
2546 return 0;
2547 }
2548 char *s=g_pathList->first();
2549 while (s)
2550 {
2551 QCString absName = (QCString)s+"/"+fileName;
2552 //printf(" Looking for %s in %s\n",fileName,s);
2553 FileState *fs = checkAndOpenFile(absName,alreadyIncluded);
2554 if (fs)
2555 {
2556 setFileName(absName);
2557 g_yyLineNr=1;
2558 //printf(" -> found it\n");
2559 return fs;
2560 }
2561 else if (alreadyIncluded)
2562 {
2563 return 0;
2564 }
2565
2566 s=g_pathList->next();
2567 }
2568 return 0;
2569}
2570
2571static QCString extractTrailingComment(const char *s)
2572{
2573 if (s==0) return "";
2574 int i=strlen(s)-1;
2575 while (i>=0)
2576 {
2577 char c=s[i];
2578 switch (c)
2579 {
2580 case '/':
2581{
2582 i--;
2583 if (i>=0 && s[i]=='*') // end of a comment block
2584 {
2585 i--;
2586 while (i>0 && !(s[i-1]=='/' && s[i]=='*')) i--;
2587 if (i==0) return s; else return &s[i-1];
2588 }
2589 else
2590 {
2591 return "";
2592 }
2593}
2594break;
2595// whitespace or line-continuation
2596 case ' ':
2597 case '\t':
2598 case '\r':
2599 case '\n':
2600 case '\\':
2601break;
2602 default:
2603return "";
2604 }
2605 i--;
2606 }
2607 return "";
2608}
2609
2610static int getNextChar(const QCString &expr,QCString *rest,uint &pos);
2611static int getCurrentChar(const QCString &expr,QCString *rest,uint pos);
2612static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c);
2613static void expandExpression(QCString &expr,QCString *rest,int pos);
2614
2615static QCString stringize(const QCString &s)
2616{
2617 QCString result;
2618 uint i=0;
2619 bool inString=FALSE;
2620 bool inChar=FALSE;
2621 char c,pc;
2622 while (i<s.length())
2623 {
2624 if (!inString && !inChar)
2625 {
2626 while (i<s.length() && !inString && !inChar)
2627 {
2628c=s.at(i++);
2629if (c=='"')
2630{
2631 result+="\\\"";
2632 inString=TRUE;
2633}
2634else if (c=='\'')
2635{
2636 result+=c;
2637 inChar=TRUE;
2638}
2639else
2640{
2641 result+=c;
2642}
2643 }
2644 }
2645 else if (inChar)
2646 {
2647 while (i<s.length() && inChar)
2648 {
2649c=s.at(i++);
2650if (c=='\'')
2651{
2652 result+='\'';
2653 inChar=FALSE;
2654}
2655else if (c=='\\')
2656{
2657 result+="\\\\";
2658}
2659else
2660{
2661 result+=c;
2662}
2663 }
2664 }
2665 else
2666 {
2667 pc=0;
2668 while (i<s.length() && inString)
2669 {
2670char c=s.at(i++);
2671if (c=='"')
2672{
2673 result+="\\\"";
2674 inString= pc=='\\';
2675}
2676else if (c=='\\')
2677 result+="\\\\";
2678else
2679 result+=c;
2680pc=c;
2681 }
2682 }
2683 }
2684 //printf("stringize `%s'->`%s'\n",s.data(),result.data());
2685 return result;
2686}
2687
2688/*! Execute all ## operators in expr.
2689 * If the macro name before or after the operator contains a no-rescan
2690 * marker (@-) then this is removed (before the concatenated macro name
2691 * may be expanded again.
2692 */
2693static void processConcatOperators(QCString &expr)
2694{
2695 //printf("processConcatOperators: in=`%s'\n",expr.data());
2696 QRegExp r("[ \\t\\n]*##[ \\t\\n]*");
2697 int l,n,i=0;
2698 if (expr.isEmpty()) return;
2699 while ((n=r.match(expr,i,&l))!=-1)
2700 {
2701 //printf("Match: `%s'\n",expr.data()+i);
2702 if (n+l+1<(int)expr.length() && expr.at(n+l)=='@' && expr.at(n+l+1)=='-')
2703 {
2704 // remove no-rescan marker after ID
2705 l+=2;
2706 }
2707 //printf("found `%s'\n",expr.mid(n,l).data());
2708 // remove the ## operator and the surrounding whitespace
2709 expr=expr.left(n)+expr.right(expr.length()-n-l);
2710 int k=n-1;
2711 while (k>=0 && isId(expr.at(k))) k--;
2712 if (k>0 && expr.at(k)=='-' && expr.at(k-1)=='@')
2713 {
2714 // remove no-rescan marker before ID
2715 expr=expr.left(k-1)+expr.right(expr.length()-k-1);
2716 n-=2;
2717 }
2718 i=n;
2719 }
2720 //printf("processConcatOperators: out=`%s'\n",expr.data());
2721}
2722
2723static void yyunput (int c,char *buf_ptr );
2724static void returnCharToStream(char c)
2725{
2726 unput(c);
2727}
2728
2729static inline void addTillEndOfString(const QCString &expr,QCString *rest,
2730 uint &pos,char term,QCString &arg)
2731{
2732 int cc;
2733 while ((cc=getNextChar(expr,rest,pos))!=EOF)
2734 {
2735 if (cc=='\\') arg+=(char)cc,cc=getNextChar(expr,rest,pos);
2736 else if (cc==term) return;
2737 arg+=(char)cc;
2738 }
2739}
2740
2741/*! replaces the function macro \a def whose argument list starts at
2742 * \a pos in expression \a expr.
2743 * Notice that this routine may scan beyond the \a expr string if needed.
2744 * In that case the characters will be read from the input file.
2745 * The replacement string will be returned in \a result and the
2746 * length of the (unexpanded) argument list is stored in \a len.
2747 */
2748static bool replaceFunctionMacro(const QCString &expr,QCString *rest,int pos,int &len,const Define *def,QCString &result)
2749{
2750 //printf("replaceFunctionMacro(expr=%s,rest=%s,pos=%d,def=%s) level=%d\n",expr.data(),rest ? rest->data() : 0,pos,def->name.data(),g_level);
2751 uint j=pos;
2752 len=0;
2753 result.resize(0);
2754 int cc;
2755 while ((cc=getCurrentChar(expr,rest,j))!=EOF && isspace(cc))
2756 {
2757 len++;
2758 getNextChar(expr,rest,j);
2759 }
2760 if (cc!='(')
2761 {
2762 unputChar(expr,rest,j,' ');
2763 return FALSE;
2764 }
2765 getNextChar(expr,rest,j); // eat the `(' character
2766
2767 QDict<QCString> argTable; // list of arguments
2768 argTable.setAutoDelete(TRUE);
2769 QCString arg;
2770 int argCount=0;
2771 bool done=FALSE;
2772
2773 // PHASE 1: read the macro arguments
2774 if (def->nargs==0)
2775 {
2776 while ((cc=getNextChar(expr,rest,j))!=EOF)
2777 {
2778 char c = (char)cc;
2779 if (c==')') break;
2780 }
2781 }
2782 else
2783 {
2784 while (!done && (argCount<def->nargs || def->varArgs) &&
2785((cc=getNextChar(expr,rest,j))!=EOF)
2786 )
2787 {
2788 char c=(char)cc;
2789 if (c=='(') // argument is a function => search for matching )
2790 {
2791int level=1;
2792arg+=c;
2793//char term='\0';
2794while ((cc=getNextChar(expr,rest,j))!=EOF)
2795{
2796 char c=(char)cc;
2797 //printf("processing %c: term=%c (%d)\n",c,term,term);
2798 if (c=='\'' || c=='\"') // skip ('s and )'s inside strings
2799 {
2800 arg+=c;
2801 addTillEndOfString(expr,rest,j,c,arg);
2802 }
2803 if (c==')')
2804 {
2805 level--;
2806 arg+=c;
2807 if (level==0) break;
2808 }
2809 else if (c=='(')
2810 {
2811 level++;
2812 arg+=c;
2813 }
2814 else
2815 arg+=c;
2816}
2817 }
2818 else if (c==')' || c==',') // last or next argument found
2819 {
2820if (c==',' && argCount==def->nargs-1 && def->varArgs)
2821{
2822 arg=arg.stripWhiteSpace();
2823 arg+=',';
2824}
2825else
2826{
2827 QCString argKey;
2828 argKey.sprintf("@%d",argCount++); // key name
2829 arg=arg.stripWhiteSpace();
2830 // add argument to the lookup table
2831 argTable.insert(argKey, new QCString(arg));
2832 arg.resize(0);
2833 if (c==')') // end of the argument list
2834 {
2835 done=TRUE;
2836 }
2837}
2838 }
2839 else if (c=='\"') // append literal strings
2840 {
2841arg+=c;
2842bool found=FALSE;
2843while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
2844{
2845 found = cc=='"';
2846 if (cc=='\\')
2847 {
2848 c=(char)cc;
2849 arg+=c;
2850 if ((cc=getNextChar(expr,rest,j))==EOF) break;
2851 }
2852 c=(char)cc;
2853 arg+=c;
2854}
2855 }
2856 else if (c=='\'') // append literal characters
2857 {
2858arg+=c;
2859bool found=FALSE;
2860while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
2861{
2862 found = cc=='\'';
2863 if (cc=='\\')
2864 {
2865 c=(char)cc;
2866 arg+=c;
2867 if ((cc=getNextChar(expr,rest,j))==EOF) break;
2868 }
2869 c=(char)cc;
2870 arg+=c;
2871}
2872 }
2873 else // append other characters
2874 {
2875arg+=c;
2876 }
2877 }
2878 }
2879
2880 // PHASE 2: apply the macro function
2881 if (argCount==def->nargs ||
2882 (argCount>def->nargs && def->varArgs)) // matching parameters lists
2883 {
2884 uint k=0;
2885 // substitution of all formal arguments
2886 QCString resExpr;
2887 const QCString d=def->definition.stripWhiteSpace();
2888 //printf("Macro definition: %s\n",d.data());
2889 bool inString=FALSE;
2890 while (k<d.length())
2891 {
2892 if (d.at(k)=='@') // maybe a marker, otherwise an escaped @
2893 {
2894if (d.at(k+1)=='@') // escaped @ => copy it (is unescaped later)
2895{
2896 k+=2;
2897 resExpr+="@@"; // we unescape these later
2898}
2899else if (d.at(k+1)=='-') // no-rescan marker
2900{
2901 k+=2;
2902 resExpr+="@-";
2903}
2904else // argument marker => read the argument number
2905{
2906 QCString key="@";
2907 QCString *subst=0;
2908 bool hash=FALSE;
2909 int l=k-1;
2910 // search for ## backward
2911 if (l>=0 && d.at(l)=='"') l--;
2912 while (l>=0 && d.at(l)==' ') l--;
2913 if (l>0 && d.at(l)=='#' && d.at(l-1)=='#') hash=TRUE;
2914 k++;
2915 // scan the number
2916 while (k<d.length() && d.at(k)>='0' && d.at(k)<='9') key+=d.at(k++);
2917 if (!hash)
2918 {
2919 // search for ## forward
2920 l=k;
2921 if (l<(int)d.length() && d.at(l)=='"') l++;
2922 while (l<(int)d.length() && d.at(l)==' ') l++;
2923 if (l<(int)d.length()-1 && d.at(l)=='#' && d.at(l+1)=='#') hash=TRUE;
2924 }
2925 //printf("request key %s result %s\n",key.data(),argTable[key]->data());
2926 if (key.length()>1 && (subst=argTable[key]))
2927 {
2928 QCString substArg=*subst;
2929 //printf("substArg=`%s'\n",substArg.data());
2930 // only if no ## operator is before or after the argument
2931 // marker we do macro expansion.
2932 if (!hash) expandExpression(substArg,0,0);
2933 if (inString)
2934 {
2935 //printf("`%s'=stringize(`%s')\n",stringize(*subst).data(),subst->data());
2936
2937 // if the marker is inside a string (because a # was put
2938 // before the macro name) we must escape " and \ characters
2939 resExpr+=stringize(substArg);
2940 }
2941 else
2942 {
2943 if (hash && substArg.isEmpty())
2944 {
2945resExpr+="@E"; // empty argument will be remove later on
2946 }
2947 else if (g_nospaces)
2948 {
2949 resExpr+=substArg;
2950 }
2951 else
2952 {
2953 resExpr+=" "+substArg+" ";
2954 }
2955 }
2956 }
2957}
2958 }
2959 else // no marker, just copy
2960 {
2961if (!inString && d.at(k)=='\"')
2962{
2963 inString=TRUE; // entering a literal string
2964}
2965else if (inString && d.at(k)=='\"' && (d.at(k-1)!='\\' || d.at(k-2)=='\\'))
2966{
2967 inString=FALSE; // leaving a literal string
2968}
2969resExpr+=d.at(k++);
2970 }
2971 }
2972 len=j-pos;
2973 result=resExpr;
2974 //printf("result after substitution `%s' expr=`%s'\n",
2975 // result.data(),expr.mid(pos,len).data());
2976 return TRUE;
2977 }
2978 return FALSE;
2979}
2980
2981
2982/*! returns the next identifier in string \a expr by starting at position \a p.
2983 * The position of the identifier is returned (or -1 if nothing is found)
2984 * and \a l is its length. Any quoted strings are skipping during the search.
2985 */
2986static int getNextId(const QCString &expr,int p,int *l)
2987{
2988 int n;
2989 while (p<(int)expr.length())
2990 {
2991 char c=expr.at(p++);
2992 if (isdigit(c)) // skip number
2993 {
2994 while (p<(int)expr.length() && isId(expr.at(p))) p++;
2995 }
2996 else if (isalpha(c) || c=='_') // read id
2997 {
2998 n=p-1;
2999 while (p<(int)expr.length() && isId(expr.at(p))) p++;
3000 *l=p-n;
3001 return n;
3002 }
3003 else if (c=='"') // skip string
3004 {
3005 char ppc=0,pc=c;
3006 if (p<(int)expr.length()) c=expr.at(p);
3007 while (p<(int)expr.length() && (c!='"' || (pc=='\\' && ppc!='\\')))
3008// continue as long as no " is found, but ignoring \", but not \\"
3009 {
3010ppc=pc;
3011pc=c;
3012c=expr.at(p);
3013p++;
3014 }
3015 if (p<(int)expr.length()) ++p; // skip closing quote
3016 }
3017 else if (c=='/') // skip C Comment
3018 {
3019 char pc=c;
3020 if (p<(int)expr.length())
3021 {
3022c=expr.at(++p);
3023 if (c=='*') // Start of C comment
3024 {
3025 while (p<(int)expr.length() && !(pc=='*' && c=='/'))
3026 {
3027 pc=c;
3028 c=expr.at(++p);
3029 }
3030 p++;
3031 }
3032 }
3033 }
3034 }
3035 return -1;
3036}
3037
3038/*! preforms recursive macro expansion on the string \a expr
3039 * starting at position \a pos.
3040 * May read additional characters from the input while re-scanning!
3041 * If \a expandAll is \c TRUE then all macros in the expression are
3042 * expanded, otherwise only the first is expanded.
3043 */
3044static void expandExpression(QCString &expr,QCString *rest,int pos)
3045{
3046 //printf("expandExpression(%s,%s)\n",expr.data(),rest ? rest->data() : 0);
3047 QCString macroName;
3048 QCString expMacro;
3049 bool definedTest=FALSE;
3050 int i=pos,l,p,len;
3051 while ((p=getNextId(expr,i,&l))!=-1) // search for an macro name
3052 {
3053 bool replaced=FALSE;
3054 macroName=expr.mid(p,l);
3055 if (p<2 || !(expr.at(p-2)=='@' && expr.at(p-1)=='-')) // no-rescan marker?
3056 {
3057 if (g_expandedDict->find(macroName)==0) // expand macro
3058 {
3059Define *def=isDefined(macroName);
3060if (definedTest) // macro name was found after defined
3061{
3062 if (def) expMacro = " 1 "; else expMacro = " 0 ";
3063 replaced=TRUE;
3064 len=l;
3065 definedTest=FALSE;
3066}
3067else if (def && def->nargs==-1) // simple macro
3068{
3069 // substitute the definition of the macro
3070 //printf("macro `%s'->`%s'\n",macroName.data(),def->definition.data());
3071 if (g_nospaces)
3072 {
3073 expMacro=def->definition.stripWhiteSpace();
3074 }
3075 else
3076 {
3077 expMacro=" "+def->definition.stripWhiteSpace()+" ";
3078 }
3079 //expMacro=def->definition.stripWhiteSpace();
3080 replaced=TRUE;
3081 len=l;
3082 //printf("simple macro expansion=`%s'->`%s'\n",macroName.data(),expMacro.data());
3083}
3084else if (def && def->nargs>=0) // function macro
3085{
3086 replaced=replaceFunctionMacro(expr,rest,p+l,len,def,expMacro);
3087 len+=l;
3088}
3089 else if (macroName=="defined")
3090 {
3091 //printf("found defined inside macro definition '%s'\n",expr.right(expr.length()-p).data());
3092 definedTest=TRUE;
3093 }
3094
3095if (replaced) // expand the macro and rescan the expression
3096{
3097
3098 //printf("replacing `%s'->`%s'\n",expr.mid(p,len).data(),expMacro.data());
3099 QCString resultExpr=expMacro;
3100 QCString restExpr=expr.right(expr.length()-len-p);
3101 processConcatOperators(resultExpr);
3102 if (def && !def->nonRecursive)
3103 {
3104 g_expandedDict->insert(macroName,def);
3105 expandExpression(resultExpr,&restExpr,0);
3106 g_expandedDict->remove(macroName);
3107 }
3108 expr=expr.left(p)+resultExpr+restExpr;
3109 i=p;
3110 //printf("new expression: %s\n",expr.data());
3111}
3112else // move to the next macro name
3113{
3114 //printf("moving to the next macro old=%d new=%d\n",i,p+l);
3115 i=p+l;
3116}
3117 }
3118 else // move to the next macro name
3119 {
3120expr=expr.left(p)+"@-"+expr.right(expr.length()-p);
3121//printf("macro already expanded, moving to the next macro expr=%s\n",expr.data());
3122i=p+l+2;
3123//i=p+l;
3124 }
3125 }
3126 else // no re-scan marker found, skip the macro name
3127 {
3128 //printf("skipping marked macro\n");
3129 i=p+l;
3130 }
3131 }
3132}
3133
3134/*! replaces all occurrences of @@@@ in \a s by @@
3135 * and removes all occurrences of @@E.
3136 * All identifiers found are replaced by 0L
3137 */
3138QCString removeIdsAndMarkers(const char *s)
3139{
3140 //printf("removeIdsAndMarkers(%s)\n",s);
3141 const char *p=s;
3142 char c;
3143 bool inNum=FALSE;
3144 QCString result;
3145 if (p)
3146 {
3147 while ((c=*p))
3148 {
3149 if (c=='@') // replace @@ with @ and remove @E
3150 {
3151if (*(p+1)=='@')
3152{
3153 result+=c;
3154}
3155else if (*(p+1)=='E')
3156{
3157 // skip
3158}
3159p+=2;
3160 }
3161 else if (isdigit(c)) // number
3162 {
3163result+=c;
3164p++;
3165 inNum=TRUE;
3166 }
3167 else if (c=='d' && !inNum) // identifier starting with a `d'
3168 {
3169if (strncmp(p,"defined ",8)==0 || strncmp(p,"defined(",8)==0)
3170 // defined keyword
3171{
3172 p+=7; // skip defined
3173}
3174else
3175{
3176 result+="0L";
3177 p++;
3178 while ((c=*p) && isId(c)) p++;
3179}
3180 }
3181 else if ((isalpha(c) || c=='_') && !inNum) // replace identifier with 0L
3182 {
3183result+="0L";
3184p++;
3185while ((c=*p) && isId(c)) p++;
3186if (*p=='(') // undefined function macro
3187{
3188 p++;
3189 int count=1;
3190 while ((c=*p++))
3191 {
3192 if (c=='(') count++;
3193 else if (c==')')
3194 {
3195 count--;
3196 if (count==0) break;
3197 }
3198 else if (c=='/')
3199 {
3200 char pc=c;
3201 c=*++p;
3202 if (c=='*') // start of C comment
3203 {
3204while (*p && !(pc=='*' && c=='/')) // search end of comment
3205{
3206 pc=c;
3207 c=*++p;
3208}
3209p++;
3210 }
3211 }
3212 }
3213}
3214 }
3215 else if (c=='/') // skip C comments
3216 {
3217char pc=c;
3218c=*++p;
3219if (c=='*') // start of C comment
3220{
3221 while (*p && !(pc=='*' && c=='/')) // search end of comment
3222 {
3223 pc=c;
3224 c=*++p;
3225 }
3226 p++;
3227}
3228else // oops, not comment but division
3229{
3230 result+=pc;
3231 goto nextChar;
3232}
3233 }
3234 else
3235 {
3236nextChar:
3237result+=c;
3238char lc=tolower(c);
3239if (!isId(lc) && lc!='.' /*&& lc!='-' && lc!='+'*/) inNum=FALSE;
3240p++;
3241 }
3242 }
3243 }
3244 //printf("removeIdsAndMarkers(%s)=%s\n",s,result.data());
3245 return result;
3246}
3247
3248/*! replaces all occurrences of @@ in \a s by @
3249 * \par assumption:
3250 * \a s only contains pairs of @@'s
3251 */
3252QCString removeMarkers(const char *s)
3253{
3254 const char *p=s;
3255 char c;
3256 QCString result;
3257 if (p)
3258 {
3259 while ((c=*p))
3260 {
3261 switch(c)
3262 {
3263case '@': // replace @@ with @
3264 {
3265 if (*(p+1)=='@')
3266 {
3267 result+=c;
3268 }
3269 p+=2;
3270 }
3271 break;
3272case '/': // skip C comments
3273 {
3274 result+=c;
3275 char pc=c;
3276 c=*++p;
3277 if (c=='*') // start of C comment
3278 {
3279 while (*p && !(pc=='*' && c=='/')) // search end of comment
3280 {
3281if (*p=='@' && *(p+1)=='@')
3282 result+=c,p++;
3283else
3284 result+=c;
3285pc=c;
3286c=*++p;
3287 }
3288 if (*p)
3289 {
3290 result+=c;
3291 p++;
3292 }
3293 }
3294 }
3295 break;
3296case '"': // skip string literals
3297 {
3298 result+=c;
3299 char pc=c;
3300 c=*++p;
3301 while (*p && (c!='"' || pc=='\\')) // no end quote
3302 {
3303 result+=c;
3304 c=*++p;
3305 }
3306 }
3307 break;
3308case '\'': // skip char literals
3309 {
3310 result+=c;
3311 char pc=c;
3312 c=*++p;
3313 while (*p && (c!='\'' || pc=='\\')) // no end quote
3314 {
3315 result+=c;
3316 c=*++p;
3317 }
3318 }
3319 break;
3320default:
3321 {
3322 result+=c;
3323 p++;
3324 }
3325 break;
3326 }
3327 }
3328 }
3329 //printf("RemoveMarkers(%s)=%s\n",s,result.data());
3330 return result;
3331}
3332
3333/*! compute the value of the expression in string \a expr.
3334 * If needed the function may read additional characters from the input.
3335 */
3336
3337bool computeExpression(const QCString &expr)
3338{
3339 QCString e=expr;
3340 expandExpression(e,0,0);
3341 //printf("after expansion `%s'\n",e.data());
3342 e = removeIdsAndMarkers(e);
3343 if (e.isEmpty()) return FALSE;
3344 //printf("parsing `%s'\n",e.data());
3345 return parseCppExpression(g_yyFileName,g_yyLineNr,e);
3346}
3347
3348/*! expands the macro definition in \a name
3349 * If needed the function may read additional characters from the input
3350 */
3351
3352QCString expandMacro(const QCString &name)
3353{
3354 QCString n=name;
3355 expandExpression(n,0,0);
3356 n=removeMarkers(n);
3357 //printf("expandMacro `%s'->`%s'\n",name.data(),n.data());
3358 return n;
3359}
3360
3361Define *newDefine()
3362{
3363 Define *def=new Define;
3364 def->name = g_defName;
3365 def->definition = g_defText.stripWhiteSpace();
3366 def->nargs = g_defArgs;
3367 def->fileName = g_yyFileName;
3368 def->fileDef = g_yyFileDef;
3369 def->lineNr = g_yyLineNr;
3370 def->varArgs = g_defVarArgs;
3371 //printf("newDefine: %s->%s\n",def->name.data(),
3372 // def->fileDef ? def->fileDef->name().data() : "<none>");
3373 //printf("newDefine: `%s'->`%s'\n",def->name.data(),def->definition.data());
3374 if (!def->name.isEmpty() && Doxygen::expandAsDefinedDict[def->name])
3375 {
3376 def->isPredefined=TRUE;
3377 }
3378 return def;
3379}
3380
3381void addDefine()
3382{
3383 if (g_skip) return; // do not add this define as it is inside a
3384 // conditional section (cond command) that is disabled.
3385 if (!Doxygen::gatherDefines) return;
3386
3387 //printf("addDefine %s %s\n",g_defName.data(),g_defArgsStr.data());
3388 //ArgumentList *al = new ArgumentList;
3389 //stringToArgumentList(g_defArgsStr,al);
3390 MemberDef *md=new MemberDef(
3391 g_yyFileName,g_yyLineNr,
3392 "#define",g_defName,g_defArgsStr,0,
3393 Public,Normal,FALSE,Member,MemberDef::Define,0,0);
3394 if (!g_defArgsStr.isEmpty())
3395 {
3396 ArgumentList *argList = new ArgumentList;
3397 //printf("addDefine() g_defName=`%s' g_defArgsStr=`%s'\n",g_defName.data(),g_defArgsStr.data());
3398 stringToArgumentList(g_defArgsStr,argList);
3399 md->setArgumentList(argList);
3400 }
3401 //printf("Setting initializer for `%s' to `%s'\n",g_defName.data(),g_defText.data());
3402 int l=g_defLitText.find('\n');
3403 if (l>0 && g_defLitText.left(l).stripWhiteSpace()=="\\")
3404 {
3405 // strip first line if it only contains a slash
3406 g_defLitText = g_defLitText.right(g_defLitText.length()-l-1);
3407 }
3408 else if (l>0)
3409 {
3410 // align the items on the first line with the items on the second line
3411 int k=l+1;
3412 const char *p=g_defLitText.data()+k;
3413 char c;
3414 while ((c=*p++) && (c==' ' || c=='\t')) k++;
3415 g_defLitText=g_defLitText.mid(l+1,k-l-1)+g_defLitText.stripWhiteSpace();
3416 }
3417 md->setInitializer(g_defLitText.stripWhiteSpace());
3418
3419 //printf("pre.l: md->setFileDef(%p)\n",g_inputFileDef);
3420 md->setFileDef(g_inputFileDef);
3421 md->setDefinition("#define "+g_defName);
3422
3423 MemberName *mn=Doxygen::functionNameSDict->find(g_defName);
3424 if (mn==0)
3425 {
3426 mn = new MemberName(g_defName);
3427 Doxygen::functionNameSDict->append(g_defName,mn);
3428 }
3429 mn->append(md);
3430 if (g_yyFileDef)
3431 {
3432 g_yyFileDef->insertMember(md);
3433 }
3434
3435 //Define *d;
3436 //if ((d=defineDict[g_defName])==0) defineDict.insert(g_defName,newDefine());
3437}
3438
3439static inline void outputChar(char c)
3440{
3441 if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addChar(c);
3442}
3443
3444static inline void outputArray(const char *a,int len)
3445{
3446 if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addArray(a,len);
3447}
3448
3449static void readIncludeFile(const QCString &inc)
3450{
3451 if (!Config_getBool("SEARCH_INCLUDES")) return; // do not read include files
3452 uint i=0;
3453
3454 // find the start of the include file name
3455 while (i<inc.length() &&
3456 (inc.at(i)==' ' || inc.at(i)=='"' || inc.at(i)=='<')
3457 ) i++;
3458 uint s=i;
3459
3460 // was it a local include?
3461 bool localInclude = s>0 && inc.at(s-1)=='"';
3462
3463 // find the end of the include file name
3464 while (i<inc.length() && inc.at(i)!='"' && inc.at(i)!='>') i++;
3465
3466 if (s<inc.length() && i>s) // valid include file name found
3467 {
3468 // extract include path+name
3469 QCString incFileName=inc.mid(s,i-s).stripWhiteSpace();
3470
3471 QCString dosExt = incFileName.right(4);
3472 if (dosExt==".exe" || dosExt==".dll" || dosExt==".tbl")
3473 {
3474 // skip imported binary files (e.g. M$ type libraries)
3475 return;
3476 }
3477
3478 QCString oldFileName = g_yyFileName;
3479 FileDef *oldFileDef = g_yyFileDef;
3480 int oldLineNr = g_yyLineNr;
3481 //printf("Searching for `%s'\n",incFileName.data());
3482
3483 // findFile will overwrite g_yyFileDef if found
3484 FileState *fs;
3485 bool alreadyIncluded = FALSE;
3486 //printf("calling findFile(%s)\n",incFileName.data());
3487 if ((fs=findFile(incFileName,localInclude,alreadyIncluded))) // see if the include file can be found
3488 {
3489 //printf("Found include file!\n");
3490 if (Debug::isFlagSet(Debug::Preprocessor))
3491 {
3492 for (i=0;i<g_includeStack.count();i++) msg(" ");
3493 //msg("#include %s: parsing...\n",incFileName.data());
3494 }
3495 if (oldFileDef)
3496 {
3497 // add include dependency to the file in which the #include was found
3498bool ambig;
3499// change to local name for bug 641336
3500 FileDef *incFd = findFileDef(Doxygen::inputNameDict,incFileName,ambig);
3501 oldFileDef->addIncludeDependency(ambig ? 0 : incFd,incFileName,localInclude,g_isImported);
3502 // add included by dependency
3503 if (g_yyFileDef)
3504 {
3505 //printf("Adding include dependency %s->%s\n",oldFileDef->name().data(),incFileName.data());
3506 g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
3507 }
3508 }
3509 fs->bufState = YY_CURRENT_BUFFER;
3510 fs->lineNr = oldLineNr;
3511 fs->fileName = oldFileName;
3512 // push the state on the stack
3513 g_includeStack.push(fs);
3514 // set the scanner to the include file
3515
3516 // Deal with file changes due to
3517 // #include's within { .. } blocks
3518 QCString lineStr(g_yyFileName.length()+20);
3519 lineStr.sprintf("# 1 \"%s\" 1\n",g_yyFileName.data());
3520 outputArray(lineStr.data(),lineStr.length());
3521
3522 //fprintf(stderr,"Switching to include file %s\n",incFileName.data());
3523 g_expectGuard=TRUE;
3524 g_inputBuf = &fs->fileBuf;
3525 g_inputBufPos=0;
3526 preYY_switch_to_buffer(preYY_create_buffer(0,YY_BUF_SIZE));
3527 }
3528 else
3529 {
3530 //printf(" calling findFile(%s) alreadyInc=%d\n",incFileName.data(),alreadyIncluded);
3531 if (oldFileDef)
3532 {
3533bool ambig;
3534//QCString absPath = incFileName;
3535//if (QDir::isRelativePath(incFileName))
3536//{
3537// absPath = QDir::cleanDirPath(oldFileDef->getPath()+"/"+incFileName);
3538// //printf("%s + %s -> resolved path %s\n",oldFileDef->getPath().data(),incFileName.data(),absPath.data());
3539//}
3540
3541// change to local name for bug 641336
3542FileDef *fd = findFileDef(Doxygen::inputNameDict,incFileName,ambig);
3543//printf("%s::findFileDef(%s)=%p\n",oldFileDef->name().data(),incFileName.data(),fd);
3544// add include dependency to the file in which the #include was found
3545oldFileDef->addIncludeDependency(ambig ? 0 : fd,incFileName,localInclude,g_isImported);
3546// add included by dependency
3547 if (fd)
3548 {
3549 //printf("Adding include dependency (2) %s->%s ambig=%d\n",oldFileDef->name().data(),fd->name().data(),ambig);
3550 fd->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
3551 }
3552 }
3553 if (Debug::isFlagSet(Debug::Preprocessor))
3554 {
3555 msg("#include %s: not found or already included! skipping...\n",incFileName.data());
3556 //printf("error: include file %s not found\n",preYYtext);
3557 }
3558 if (g_curlyCount>0 && !alreadyIncluded) // failed to find #include inside { ... }
3559 {
3560warn(g_yyFileName,g_yyLineNr,"Warning: include file %s not found, perhaps you forgot to add its directory to INCLUDE_PATH?",incFileName.data());
3561 }
3562 }
3563 }
3564}
3565
3566/* ----------------------------------------------------------------- */
3567
3568static void startCondSection(const char *sectId)
3569{
3570 g_condStack.push(new bool(g_skip));
3571 if (Config_getList("ENABLED_SECTIONS").find(sectId)==-1)
3572 {
3573 g_skip=TRUE;
3574 }
3575}
3576
3577static void endCondSection()
3578{
3579 if (g_condStack.isEmpty())
3580 {
3581 g_skip=FALSE;
3582 }
3583 else
3584 {
3585 bool *ctx = g_condStack.pop();
3586 g_skip=*ctx;
3587 }
3588}
3589
3590static void forceEndCondSection()
3591{
3592 while (!g_condStack.isEmpty())
3593 {
3594 g_condStack.pop();
3595 }
3596 g_skip=FALSE;
3597}
3598
3599static QCString escapeAt(const char *text)
3600{
3601 QCString result;
3602 if (text)
3603 {
3604 char c;
3605 const char *p=text;
3606 while ((c=*p++))
3607 {
3608 if (c=='@') result+="@@"; else result+=c;
3609 }
3610 }
3611 return result;
3612}
3613
3614static char resolveTrigraph(char c)
3615{
3616 switch (c)
3617 {
3618 case '=': return '#';
3619 case '/': return '\\';
3620 case '\'': return '^';
3621 case '(': return '[';
3622 case ')': return ']';
3623 case '!': return '|';
3624 case '<': return '{';
3625 case '>': return '}';
3626 case '-': return '~';
3627 }
3628 return '?';
3629}
3630
3631/* ----------------------------------------------------------------- */
3632
3633#undef YY_INPUT
3634#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
3635
3636static int yyread(char *buf,int max_size)
3637{
3638 int bytesInBuf = g_inputBuf->curPos()-g_inputBufPos;
3639 int bytesToCopy = QMIN(max_size,bytesInBuf);
3640 memcpy(buf,g_inputBuf->data()+g_inputBufPos,bytesToCopy);
3641 g_inputBufPos+=bytesToCopy;
3642 return bytesToCopy;
3643}
3644
3645/* ----------------------------------------------------------------- */
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679#line 3680 "<stdout>"
3680
3681#define INITIAL 0
3682#define Start 1
3683#define Command 2
3684#define SkipCommand 3
3685#define SkipLine 4
3686#define SkipString 5
3687#define CopyLine 6
3688#define CopyString 7
3689#define Include 8
3690#define IncludeID 9
3691#define EndImport 10
3692#define DefName 11
3693#define DefineArg 12
3694#define DefineText 13
3695#define SkipCPPBlock 14
3696#define Ifdef 15
3697#define Ifndef 16
3698#define SkipCComment 17
3699#define CopyCComment 18
3700#define SkipVerbatim 19
3701#define SkipCPPComment 20
3702#define RemoveCComment 21
3703#define RemoveCPPComment 22
3704#define Guard 23
3705#define DefinedExpr1 24
3706#define DefinedExpr2 25
3707#define SkipDoubleQuote 26
3708#define SkipSingleQuote 27
3709#define UndefName 28
3710#define IgnoreLine 29
3711#define FindDefineArgs 30
3712#define ReadString 31
3713#define CondLine 32
3714
3715#ifndef YY_NO_UNISTD_H
3716/* Special case for "unistd.h", since it is non-ANSI. We include it way
3717 * down here because we want the user's section 1 to have been scanned first.
3718 * The user has a chance to override it with an option.
3719 */
3720#include <unistd.h>
3721#endif
3722
3723#ifndef YY_EXTRA_TYPE
3724#define YY_EXTRA_TYPE void *
3725#endif
3726
3727static int yy_init_globals (void );
3728
3729/* Accessor methods to globals.
3730 These are made visible to non-reentrant scanners for convenience. */
3731
3732int preYYlex_destroy (void );
3733
3734int preYYget_debug (void );
3735
3736void preYYset_debug (int debug_flag );
3737
3738YY_EXTRA_TYPE preYYget_extra (void );
3739
3740void preYYset_extra (YY_EXTRA_TYPE user_defined );
3741
3742FILE *preYYget_in (void );
3743
3744void preYYset_in (FILE * in_str );
3745
3746FILE *preYYget_out (void );
3747
3748void preYYset_out (FILE * out_str );
3749
3750yy_size_t preYYget_leng (void );
3751
3752char *preYYget_text (void );
3753
3754int preYYget_lineno (void );
3755
3756void preYYset_lineno (int line_number );
3757
3758/* Macros after this point can all be overridden by user definitions in
3759 * section 1.
3760 */
3761
3762#ifndef YY_SKIP_YYWRAP
3763#ifdef __cplusplus
3764extern "C" int preYYwrap (void );
3765#else
3766extern int preYYwrap (void );
3767#endif
3768#endif
3769
3770 static void yyunput (int c,char *buf_ptr );
3771
3772#ifndef yytext_ptr
3773static void yy_flex_strncpy (char *,yyconst char *,int );
3774#endif
3775
3776#ifdef YY_NEED_STRLEN
3777static int yy_flex_strlen (yyconst char * );
3778#endif
3779
3780#ifndef YY_NO_INPUT
3781
3782#ifdef __cplusplus
3783static int yyinput (void );
3784#else
3785static int input (void );
3786#endif
3787
3788#endif
3789
3790/* Amount of stuff to slurp up with each read. */
3791#ifndef YY_READ_BUF_SIZE
3792#define YY_READ_BUF_SIZE 262144
3793#endif
3794
3795/* Copy whatever the last rule matched to the standard output. */
3796#ifndef ECHO
3797/* This used to be an fputs(), but since the string might contain NUL's,
3798 * we now use fwrite().
3799 */
3800#define ECHO fwrite( preYYtext, preYYleng, 1, preYYout )
3801#endif
3802
3803/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
3804 * is returned in "result".
3805 */
3806#ifndef YY_INPUT
3807#define YY_INPUT(buf,result,max_size) \
3808if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3809{ \
3810int c = '*'; \
3811yy_size_t n; \
3812for ( n = 0; n < max_size && \
3813 (c = getc( preYYin )) != EOF && c != '\n'; ++n ) \
3814buf[n] = (char) c; \
3815if ( c == '\n' ) \
3816buf[n++] = (char) c; \
3817if ( c == EOF && ferror( preYYin ) ) \
3818YY_FATAL_ERROR( "input in flex scanner failed" ); \
3819result = n; \
3820} \
3821else \
3822{ \
3823errno=0; \
3824while ( (result = fread(buf, 1, max_size, preYYin))==0 && ferror(preYYin)) \
3825{ \
3826if( errno != EINTR) \
3827{ \
3828YY_FATAL_ERROR( "input in flex scanner failed" ); \
3829break; \
3830} \
3831errno=0; \
3832clearerr(preYYin); \
3833} \
3834}\
3835\
3836
3837#endif
3838
3839/* No semi-colon after return; correct usage is to write "yyterminate();" -
3840 * we don't want an extra ';' after the "return" because that will cause
3841 * some compilers to complain about unreachable statements.
3842 */
3843#ifndef yyterminate
3844#define yyterminate() return YY_NULL
3845#endif
3846
3847/* Number of entries by which start-condition stack grows. */
3848#ifndef YY_START_STACK_INCR
3849#define YY_START_STACK_INCR 25
3850#endif
3851
3852/* Report a fatal error. */
3853#ifndef YY_FATAL_ERROR
3854#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3855#endif
3856
3857/* end tables serialization structures and prototypes */
3858
3859/* Default declaration of generated scanner - a define so the user can
3860 * easily add parameters.
3861 */
3862#ifndef YY_DECL
3863#define YY_DECL_IS_OURS 1
3864
3865extern int preYYlex (void);
3866
3867#define YY_DECL int preYYlex (void)
3868#endif /* !YY_DECL */
3869
3870/* Code executed at the beginning of each rule, after preYYtext and preYYleng
3871 * have been set up.
3872 */
3873#ifndef YY_USER_ACTION
3874#define YY_USER_ACTION
3875#endif
3876
3877/* Code executed at the end of each rule. */
3878#ifndef YY_BREAK
3879#define YY_BREAK break;
3880#endif
3881
3882#define YY_RULE_SETUP \
3883if ( preYYleng > 0 ) \
3884YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
3885(preYYtext[preYYleng - 1] == '\n'); \
3886YY_USER_ACTION
3887
3888/** The main scanner function which does all the work.
3889 */
3890YY_DECL
3891{
3892register yy_state_type yy_current_state;
3893register char *yy_cp, *yy_bp;
3894register int yy_act;
3895
3896#line 1458 "pre.l"
3897
3898
3899#line 3900 "<stdout>"
3900
3901if ( !(yy_init) )
3902{
3903(yy_init) = 1;
3904
3905#ifdef YY_USER_INIT
3906YY_USER_INIT;
3907#endif
3908
3909 /* Create the reject buffer large enough to save one state per allowed character. */
3910 if ( ! (yy_state_buf) )
3911 (yy_state_buf) = (yy_state_type *)preYYalloc(YY_STATE_BUF_SIZE );
3912 if ( ! (yy_state_buf) )
3913 YY_FATAL_ERROR( "out of dynamic memory in preYYlex()" );
3914
3915if ( ! (yy_start) )
3916(yy_start) = 1;/* first start state */
3917
3918if ( ! preYYin )
3919preYYin = stdin;
3920
3921if ( ! preYYout )
3922preYYout = stdout;
3923
3924if ( ! YY_CURRENT_BUFFER ) {
3925preYYensure_buffer_stack ();
3926YY_CURRENT_BUFFER_LVALUE =
3927preYY_create_buffer(preYYin,YY_BUF_SIZE );
3928}
3929
3930preYY_load_buffer_state( );
3931}
3932
3933while ( 1 )/* loops until end-of-file is reached */
3934{
3935yy_cp = (yy_c_buf_p);
3936
3937/* Support of preYYtext. */
3938*yy_cp = (yy_hold_char);
3939
3940/* yy_bp points to the position in yy_ch_buf of the start of
3941 * the current run.
3942 */
3943yy_bp = yy_cp;
3944
3945yy_current_state = (yy_start);
3946yy_current_state += YY_AT_BOL();
3947
3948(yy_state_ptr) = (yy_state_buf);
3949*(yy_state_ptr)++ = yy_current_state;
3950
3951yy_match:
3952do
3953{
3954register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3955while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3956{
3957yy_current_state = (int) yy_def[yy_current_state];
3958if ( yy_current_state >= 1157 )
3959yy_c = yy_meta[(unsigned int) yy_c];
3960}
3961yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3962*(yy_state_ptr)++ = yy_current_state;
3963++yy_cp;
3964}
3965while ( yy_base[yy_current_state] != 5434 );
3966
3967yy_find_action:
3968yy_current_state = *--(yy_state_ptr);
3969(yy_lp) = yy_accept[yy_current_state];
3970goto find_rule; /* Shut up GCC warning -Wall */
3971find_rule: /* we branch to this label when backing up */
3972for ( ; ; ) /* until we find what rule we matched */
3973{
3974if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
3975{
3976yy_act = yy_acclist[(yy_lp)];
3977if ( yy_act & YY_TRAILING_HEAD_MASK ||
3978 (yy_looking_for_trail_begin) )
3979{
3980if ( yy_act == (yy_looking_for_trail_begin) )
3981{
3982(yy_looking_for_trail_begin) = 0;
3983yy_act &= ~YY_TRAILING_HEAD_MASK;
3984break;
3985}
3986}
3987else if ( yy_act & YY_TRAILING_MASK )
3988{
3989(yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
3990(yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
3991(yy_full_match) = yy_cp;
3992(yy_full_state) = (yy_state_ptr);
3993(yy_full_lp) = (yy_lp);
3994}
3995else
3996{
3997(yy_full_match) = yy_cp;
3998(yy_full_state) = (yy_state_ptr);
3999(yy_full_lp) = (yy_lp);
4000break;
4001}
4002++(yy_lp);
4003goto find_rule;
4004}
4005--yy_cp;
4006yy_current_state = *--(yy_state_ptr);
4007(yy_lp) = yy_accept[yy_current_state];
4008}
4009
4010YY_DO_BEFORE_ACTION;
4011
4012do_action:/* This label is used only to access EOF actions. */
4013
4014switch ( yy_act )
4015{ /* beginning of action switch */
4016case 1:
4017YY_RULE_SETUP
4018#line 1460 "pre.l"
4019
4020YY_BREAK
4021case 2:
4022YY_RULE_SETUP
4023#line 1461 "pre.l"
4024
4025YY_BREAK
4026case 3:
4027YY_RULE_SETUP
4028#line 1462 "pre.l"
4029
4030YY_BREAK
4031case 4:
4032YY_RULE_SETUP
4033#line 1463 "pre.l"
4034{ // Trigraph
4035 unput(resolveTrigraph(preYYtext[2]));
4036 }
4037YY_BREAK
4038case 5:
4039YY_RULE_SETUP
4040#line 1466 "pre.l"
4041{ BEGIN(Command); }
4042YY_BREAK
4043case 6:
4044/* rule 6 can match eol */
4045*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4046(yy_c_buf_p) = yy_cp -= 1;
4047YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4048YY_RULE_SETUP
4049#line 1467 "pre.l"
4050{
4051 outputArray(preYYtext,preYYleng);
4052 BEGIN(CopyLine);
4053}
4054YY_BREAK
4055case 7:
4056/* rule 7 can match eol */
4057YY_RULE_SETUP
4058#line 1471 "pre.l"
4059{ // constructors?
4060 int i;
4061 for (i=preYYleng-1;i>=0;i--)
4062 {
4063 unput(preYYtext[i]);
4064 }
4065 BEGIN(CopyLine);
4066 }
4067YY_BREAK
4068case 8:
4069/* rule 8 can match eol */
4070#line 1480 "pre.l"
4071case 9:
4072/* rule 9 can match eol */
4073YY_RULE_SETUP
4074#line 1480 "pre.l"
4075{ // function like macro
4076 static bool skipFuncMacros = Config_getBool("SKIP_FUNCTION_MACROS");
4077 QCString name(preYYtext);
4078 name=name.left(name.find('(')).stripWhiteSpace();
4079
4080 Define *def=0;
4081 if (skipFuncMacros &&
4082 name!="Q_PROPERTY" &&
4083 !(
4084 (g_includeStack.isEmpty() || g_curlyCount>0) &&
4085 g_macroExpansion &&
4086 (def=g_globalDefineDict->find(name)) &&
4087 macroIsAccessible(def) &&
4088 (!g_expandOnlyPredef || def->isPredefined)
4089 )
4090 )
4091 {
4092 outputChar('\n');
4093 g_yyLineNr++;
4094 }
4095 else // don't skip
4096 {
4097 int i;
4098 for (i=preYYleng-1;i>=0;i--)
4099 {
4100 unput(preYYtext[i]);
4101 }
4102 BEGIN(CopyLine);
4103 }
4104 }
4105YY_BREAK
4106case 10:
4107/* rule 10 can match eol */
4108YY_RULE_SETUP
4109#line 1510 "pre.l"
4110{
4111 QCString text=preYYtext;
4112 g_yyLineNr+=text.contains('\n');
4113 outputArray(preYYtext,preYYleng);
4114 }
4115YY_BREAK
4116case 11:
4117YY_RULE_SETUP
4118#line 1515 "pre.l"
4119{ // count brackets inside the main file
4120 if (g_includeStack.isEmpty())
4121 {
4122 g_curlyCount++;
4123 }
4124 outputChar(*preYYtext);
4125 }
4126YY_BREAK
4127case 12:
4128YY_RULE_SETUP
4129#line 1522 "pre.l"
4130{ // count brackets inside the main file
4131 if (g_includeStack.isEmpty() && g_curlyCount>0)
4132 {
4133 g_curlyCount--;
4134 }
4135 outputChar(*preYYtext);
4136 }
4137YY_BREAK
4138case 13:
4139YY_RULE_SETUP
4140#line 1529 "pre.l"
4141{
4142 outputArray(preYYtext,preYYleng);
4143}
4144YY_BREAK
4145case 14:
4146YY_RULE_SETUP
4147#line 1532 "pre.l"
4148{
4149 outputArray(preYYtext,preYYleng);
4150}
4151YY_BREAK
4152case 15:
4153YY_RULE_SETUP
4154#line 1535 "pre.l"
4155{
4156 outputArray(preYYtext,preYYleng);
4157}
4158YY_BREAK
4159case 16:
4160YY_RULE_SETUP
4161#line 1538 "pre.l"
4162{
4163 outputChar(*preYYtext);
4164 BEGIN( CopyString );
4165}
4166YY_BREAK
4167case 17:
4168YY_RULE_SETUP
4169#line 1542 "pre.l"
4170{
4171 outputArray(preYYtext,preYYleng);
4172}
4173YY_BREAK
4174case 18:
4175YY_RULE_SETUP
4176#line 1545 "pre.l"
4177{
4178 outputArray(preYYtext,preYYleng);
4179}
4180YY_BREAK
4181case 19:
4182YY_RULE_SETUP
4183#line 1548 "pre.l"
4184{
4185 outputChar(*preYYtext);
4186 BEGIN( CopyLine );
4187}
4188YY_BREAK
4189case 20:
4190/* rule 20 can match eol */
4191YY_RULE_SETUP
4192#line 1552 "pre.l"
4193{
4194 g_expectGuard = FALSE;
4195 Define *def=0;
4196 //def=g_globalDefineDict->find(preYYtext);
4197 //printf("Search for define %s found=%d g_includeStack.isEmpty()=%d "
4198 // "g_curlyCount=%d g_macroExpansion=%d g_expandOnlyPredef=%d "
4199 // "isPreDefined=%d\n",preYYtext,def ? 1 : 0,
4200 // g_includeStack.isEmpty(),g_curlyCount,g_macroExpansion,g_expandOnlyPredef,
4201 // def ? def->isPredefined : -1
4202 //);
4203 if ((g_includeStack.isEmpty() || g_curlyCount>0) &&
4204 g_macroExpansion &&
4205 (def=g_globalDefineDict->find(preYYtext)) &&
4206 (def->isPredefined || macroIsAccessible(def)) &&
4207 (!g_expandOnlyPredef || def->isPredefined)
4208 )
4209 {
4210 //printf("Found it! #args=%d\n",def->nargs);
4211 g_roundCount=0;
4212 g_defArgsStr=preYYtext;
4213 if (def->nargs==-1) // no function macro
4214 {
4215 QCString result = def->isPredefined ? def->definition : expandMacro(g_defArgsStr);
4216 outputArray(result,result.length());
4217 }
4218 else // zero or more arguments
4219 {
4220 g_findDefArgContext = CopyLine;
4221 BEGIN(FindDefineArgs);
4222 }
4223 }
4224 else
4225 {
4226 outputArray(preYYtext,preYYleng);
4227 }
4228 }
4229YY_BREAK
4230case 21:
4231YY_RULE_SETUP
4232#line 1588 "pre.l"
4233{
4234 Define *def=0;
4235 if ((g_includeStack.isEmpty() || g_curlyCount>0) &&
4236 g_macroExpansion &&
4237 (def=g_globalDefineDict->find(preYYtext)) &&
4238 def->nargs==-1 &&
4239 (def->isPredefined || macroIsAccessible(def)) &&
4240 (!g_expandOnlyPredef || def->isPredefined)
4241 )
4242 {
4243 QCString result=def->isPredefined ? def->definition : expandMacro(preYYtext);
4244 outputArray(result,result.length());
4245 }
4246 else
4247 {
4248 outputArray(preYYtext,preYYleng);
4249 }
4250 }
4251YY_BREAK
4252case 22:
4253/* rule 22 can match eol */
4254*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4255(yy_c_buf_p) = yy_cp -= 1;
4256YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4257YY_RULE_SETUP
4258#line 1606 "pre.l"
4259{ // strip line continuation characters
4260 }
4261YY_BREAK
4262case 23:
4263YY_RULE_SETUP
4264#line 1608 "pre.l"
4265{
4266 outputChar(*preYYtext);
4267 }
4268YY_BREAK
4269case 24:
4270/* rule 24 can match eol */
4271YY_RULE_SETUP
4272#line 1611 "pre.l"
4273{
4274 outputChar('\n');
4275 BEGIN(Start);
4276 g_yyLineNr++;
4277 }
4278YY_BREAK
4279case 25:
4280YY_RULE_SETUP
4281#line 1616 "pre.l"
4282{
4283 g_defArgsStr+='(';
4284 g_roundCount++;
4285 }
4286YY_BREAK
4287case 26:
4288YY_RULE_SETUP
4289#line 1620 "pre.l"
4290{
4291 g_defArgsStr+=')';
4292 g_roundCount--;
4293 if (g_roundCount==0)
4294 {
4295 QCString result=expandMacro(g_defArgsStr);
4296 //printf("g_defArgsStr=`%s'->`%s'\n",g_defArgsStr.data(),result.data());
4297 if (g_findDefArgContext==CopyLine)
4298 {
4299 outputArray(result,result.length());
4300 BEGIN(g_findDefArgContext);
4301 }
4302 else // g_findDefArgContext==IncludeID
4303 {
4304 readIncludeFile(result);
4305 g_nospaces=FALSE;
4306 BEGIN(Start);
4307 }
4308 }
4309 }
4310YY_BREAK
4311/*
4312<FindDefineArgs>")"{B}*"("{
4313 g_defArgsStr+=preYYtext;
4314 }
4315 */
4316case 27:
4317YY_RULE_SETUP
4318#line 1645 "pre.l"
4319{
4320 g_defArgsStr+=preYYtext;
4321 }
4322YY_BREAK
4323case 28:
4324YY_RULE_SETUP
4325#line 1648 "pre.l"
4326{
4327 g_defArgsStr+=*preYYtext;
4328 BEGIN(ReadString);
4329 }
4330YY_BREAK
4331case 29:
4332/* rule 29 can match eol */
4333YY_RULE_SETUP
4334#line 1652 "pre.l"
4335{
4336 g_yyLineNr++;
4337 outputChar('\n');
4338 }
4339YY_BREAK
4340case 30:
4341YY_RULE_SETUP
4342#line 1656 "pre.l"
4343{
4344 g_defArgsStr+="@@";
4345 }
4346YY_BREAK
4347case 31:
4348YY_RULE_SETUP
4349#line 1659 "pre.l"
4350{
4351 g_defArgsStr+=*preYYtext;
4352 }
4353YY_BREAK
4354case 32:
4355YY_RULE_SETUP
4356#line 1662 "pre.l"
4357{
4358 g_defArgsStr+=*preYYtext;
4359 BEGIN(FindDefineArgs);
4360 }
4361YY_BREAK
4362case 33:
4363YY_RULE_SETUP
4364#line 1666 "pre.l"
4365{
4366 g_defArgsStr+=preYYtext;
4367 }
4368YY_BREAK
4369case 34:
4370YY_RULE_SETUP
4371#line 1669 "pre.l"
4372{
4373 g_defArgsStr+=preYYtext;
4374 }
4375YY_BREAK
4376case 35:
4377YY_RULE_SETUP
4378#line 1672 "pre.l"
4379{
4380 g_defArgsStr+=*preYYtext;
4381 }
4382YY_BREAK
4383case 36:
4384YY_RULE_SETUP
4385#line 1675 "pre.l"
4386{
4387 g_isImported = preYYtext[1]=='m';
4388 if (g_macroExpansion)
4389 BEGIN(IncludeID);
4390 }
4391YY_BREAK
4392case 37:
4393YY_RULE_SETUP
4394#line 1680 "pre.l"
4395{
4396 g_isImported = preYYtext[1]=='m';
4397 char c[2];
4398 c[0]=preYYtext[preYYleng-1];c[1]='\0';
4399 g_incName=c;
4400 BEGIN(Include);
4401}
4402YY_BREAK
4403case 38:
4404YY_RULE_SETUP
4405#line 1687 "pre.l"
4406{
4407 //printf("!!!DefName\n");
4408 BEGIN(DefName);
4409}
4410YY_BREAK
4411case 39:
4412*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4413(yy_c_buf_p) = yy_cp = yy_bp + 5;
4414YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4415YY_RULE_SETUP
4416#line 1691 "pre.l"
4417{
4418 incrLevel();
4419 g_guardExpr.resize(0);
4420 BEGIN(DefinedExpr2);
4421 }
4422YY_BREAK
4423case 40:
4424*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4425(yy_c_buf_p) = yy_cp = yy_bp + 5;
4426YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4427YY_RULE_SETUP
4428#line 1696 "pre.l"
4429{
4430 //printf("Pre.l: ifdef\n");
4431 incrLevel();
4432 g_guardExpr.resize(0);
4433 BEGIN(DefinedExpr1);
4434 }
4435YY_BREAK
4436case 41:
4437*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4438(yy_c_buf_p) = yy_cp = yy_bp + 6;
4439YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4440YY_RULE_SETUP