Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
keep documentation in sync with implementation
[simgrid.git] / src / surf / simgrid_dtd.c
1
2 #line 3 "surf/simgrid_dtd.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define yy_create_buffer surf_parse__create_buffer
9 #define yy_delete_buffer surf_parse__delete_buffer
10 #define yy_flex_debug surf_parse__flex_debug
11 #define yy_init_buffer surf_parse__init_buffer
12 #define yy_flush_buffer surf_parse__flush_buffer
13 #define yy_load_buffer_state surf_parse__load_buffer_state
14 #define yy_switch_to_buffer surf_parse__switch_to_buffer
15 #define yyin surf_parse_in
16 #define yyleng surf_parse_leng
17 #define yylex surf_parse_lex
18 #define yylineno surf_parse_lineno
19 #define yyout surf_parse_out
20 #define yyrestart surf_parse_restart
21 #define yytext surf_parse_text
22 #define yywrap surf_parse_wrap
23 #define yyalloc surf_parse_alloc
24 #define yyrealloc surf_parse_realloc
25 #define yyfree surf_parse_free
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 #ifdef WIN32
43 #include <io.h>
44 #endif
45 /* end standard C headers. */
46
47 /* flex integer type definitions */
48
49 #ifndef FLEXINT_H
50 #define FLEXINT_H
51
52 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
53
54 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
55
56 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
57  * if you want the limit (max/min) macros for int types. 
58  */
59 #ifndef __STDC_LIMIT_MACROS
60 #define __STDC_LIMIT_MACROS 1
61 #endif
62
63 #include <inttypes.h>
64 typedef int8_t flex_int8_t;
65 typedef uint8_t flex_uint8_t;
66 typedef int16_t flex_int16_t;
67 typedef uint16_t flex_uint16_t;
68 typedef int32_t flex_int32_t;
69 typedef uint32_t flex_uint32_t;
70 #else
71 typedef signed char flex_int8_t;
72 typedef short int flex_int16_t;
73 typedef int flex_int32_t;
74 typedef unsigned char flex_uint8_t; 
75 typedef unsigned short int flex_uint16_t;
76 typedef unsigned int flex_uint32_t;
77
78 /* Limits of integral types. */
79 #ifndef INT8_MIN
80 #define INT8_MIN               (-128)
81 #endif
82 #ifndef INT16_MIN
83 #define INT16_MIN              (-32767-1)
84 #endif
85 #ifndef INT32_MIN
86 #define INT32_MIN              (-2147483647-1)
87 #endif
88 #ifndef INT8_MAX
89 #define INT8_MAX               (127)
90 #endif
91 #ifndef INT16_MAX
92 #define INT16_MAX              (32767)
93 #endif
94 #ifndef INT32_MAX
95 #define INT32_MAX              (2147483647)
96 #endif
97 #ifndef UINT8_MAX
98 #define UINT8_MAX              (255U)
99 #endif
100 #ifndef UINT16_MAX
101 #define UINT16_MAX             (65535U)
102 #endif
103 #ifndef UINT32_MAX
104 #define UINT32_MAX             (4294967295U)
105 #endif
106
107 #endif /* ! C99 */
108
109 #endif /* ! FLEXINT_H */
110
111 #ifdef __cplusplus
112
113 /* The "const" storage-class-modifier is valid. */
114 #define YY_USE_CONST
115
116 #else   /* ! __cplusplus */
117
118 /* C99 requires __STDC__ to be defined as 1. */
119 #if defined (__STDC__)
120
121 #define YY_USE_CONST
122
123 #endif  /* defined (__STDC__) */
124 #endif  /* ! __cplusplus */
125
126 #ifdef YY_USE_CONST
127 #define yyconst const
128 #else
129 #define yyconst
130 #endif
131
132 /* Returned upon end-of-file. */
133 #define YY_NULL 0
134
135 /* Promotes a possibly negative, possibly signed char to an unsigned
136  * integer for use as an array index.  If the signed char is negative,
137  * we want to instead treat it as an 8-bit unsigned char, hence the
138  * double cast.
139  */
140 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
141
142 /* Enter a start condition.  This macro really ought to take a parameter,
143  * but we do it the disgusting crufty way forced on us by the ()-less
144  * definition of BEGIN.
145  */
146 #define BEGIN (yy_start) = 1 + 2 *
147
148 /* Translate the current start state into a value that can be later handed
149  * to BEGIN to return to the state.  The YYSTATE alias is for lex
150  * compatibility.
151  */
152 #define YY_START (((yy_start) - 1) / 2)
153 #define YYSTATE YY_START
154
155 /* Action number for EOF rule of a given start state. */
156 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
157
158 /* Special action meaning "start processing a new file". */
159 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
160
161 #define YY_END_OF_BUFFER_CHAR 0
162
163 /* Size of default input buffer. */
164 #ifndef YY_BUF_SIZE
165 #define YY_BUF_SIZE 16384
166 #endif
167
168 /* The state buf must be large enough to hold one state per character in the main buffer.
169  */
170 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
171
172 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
173 #define YY_TYPEDEF_YY_BUFFER_STATE
174 typedef struct yy_buffer_state *YY_BUFFER_STATE;
175 #endif
176
177 extern int surf_parse_leng;
178
179 extern FILE *surf_parse_in, *surf_parse_out;
180
181 #define EOB_ACT_CONTINUE_SCAN 0
182 #define EOB_ACT_END_OF_FILE 1
183 #define EOB_ACT_LAST_MATCH 2
184
185     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
186      *       access to the local variable yy_act. Since yyless() is a macro, it would break
187      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
188      *       One obvious solution it to make yy_act a global. I tried that, and saw
189      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
190      *       normally declared as a register variable-- so it is not worth it.
191      */
192     #define  YY_LESS_LINENO(n) \
193             do { \
194                 int yyl;\
195                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
196                     if ( surf_parse_text[yyl] == '\n' )\
197                         --surf_parse_lineno;\
198             }while(0)
199     
200 /* Return all but the first "n" matched characters back to the input stream. */
201 #define yyless(n) \
202         do \
203                 { \
204                 /* Undo effects of setting up surf_parse_text. */ \
205         int yyless_macro_arg = (n); \
206         YY_LESS_LINENO(yyless_macro_arg);\
207                 *yy_cp = (yy_hold_char); \
208                 YY_RESTORE_YY_MORE_OFFSET \
209                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
210                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
211                 } \
212         while ( 0 )
213
214 #define unput(c) yyunput( c, (yytext_ptr)  )
215
216 #ifndef YY_TYPEDEF_YY_SIZE_T
217 #define YY_TYPEDEF_YY_SIZE_T
218 typedef size_t yy_size_t;
219 #endif
220
221 #ifndef YY_STRUCT_YY_BUFFER_STATE
222 #define YY_STRUCT_YY_BUFFER_STATE
223 struct yy_buffer_state
224         {
225         FILE *yy_input_file;
226
227         char *yy_ch_buf;                /* input buffer */
228         char *yy_buf_pos;               /* current position in input buffer */
229
230         /* Size of input buffer in bytes, not including room for EOB
231          * characters.
232          */
233         yy_size_t yy_buf_size;
234
235         /* Number of characters read into yy_ch_buf, not including EOB
236          * characters.
237          */
238         int yy_n_chars;
239
240         /* Whether we "own" the buffer - i.e., we know we created it,
241          * and can realloc() it to grow it, and should free() it to
242          * delete it.
243          */
244         int yy_is_our_buffer;
245
246         /* Whether this is an "interactive" input source; if so, and
247          * if we're using stdio for input, then we want to use getc()
248          * instead of fread(), to make sure we stop fetching input after
249          * each newline.
250          */
251         int yy_is_interactive;
252
253         /* Whether we're considered to be at the beginning of a line.
254          * If so, '^' rules will be active on the next match, otherwise
255          * not.
256          */
257         int yy_at_bol;
258
259     int yy_bs_lineno; /**< The line count. */
260     int yy_bs_column; /**< The column count. */
261     
262         /* Whether to try to fill the input buffer when we reach the
263          * end of it.
264          */
265         int yy_fill_buffer;
266
267         int yy_buffer_status;
268
269 #define YY_BUFFER_NEW 0
270 #define YY_BUFFER_NORMAL 1
271         /* When an EOF's been seen but there's still some text to process
272          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
273          * shouldn't try reading from the input source any more.  We might
274          * still have a bunch of tokens to match, though, because of
275          * possible backing-up.
276          *
277          * When we actually see the EOF, we change the status to "new"
278          * (via surf_parse_restart()), so that the user can continue scanning by
279          * just pointing surf_parse_in at a new input file.
280          */
281 #define YY_BUFFER_EOF_PENDING 2
282
283         };
284 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
285
286 /* Stack of input buffers. */
287 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
288 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
289 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
290
291 /* We provide macros for accessing buffer states in case in the
292  * future we want to put the buffer states in a more general
293  * "scanner state".
294  *
295  * Returns the top of the stack, or NULL.
296  */
297 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
298                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
299                           : NULL)
300
301 /* Same as previous macro, but useful when we know that the buffer stack is not
302  * NULL or when we need an lvalue. For internal use only.
303  */
304 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
305
306 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
307 static char yy_hold_char;
308 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
309 int surf_parse_leng;
310
311 /* Points to current character in buffer. */
312 static char *yy_c_buf_p = (char *) 0;
313 static int yy_init = 0;         /* whether we need to initialize */
314 static int yy_start = 0;        /* start state number */
315
316 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
317  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
318  */
319 static int yy_did_buffer_switch_on_eof;
320
321 void surf_parse_restart (FILE *input_file  );
322 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
323 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
324 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
325 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
326 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
327 void surf_parse_pop_buffer_state (void );
328
329 static void surf_parse_ensure_buffer_stack (void );
330 static void surf_parse__load_buffer_state (void );
331 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
332
333 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
334
335 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
336 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
337 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,int len  );
338
339 void *surf_parse_alloc (yy_size_t  );
340 void *surf_parse_realloc (void *,yy_size_t  );
341 void surf_parse_free (void *  );
342
343 #define yy_new_buffer surf_parse__create_buffer
344
345 #define yy_set_interactive(is_interactive) \
346         { \
347         if ( ! YY_CURRENT_BUFFER ){ \
348         surf_parse_ensure_buffer_stack (); \
349                 YY_CURRENT_BUFFER_LVALUE =    \
350             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
351         } \
352         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
353         }
354
355 #define yy_set_bol(at_bol) \
356         { \
357         if ( ! YY_CURRENT_BUFFER ){\
358         surf_parse_ensure_buffer_stack (); \
359                 YY_CURRENT_BUFFER_LVALUE =    \
360             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
361         } \
362         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
363         }
364
365 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
366
367 /* Begin user sect3 */
368
369 #define surf_parse_wrap(n) 1
370 #define YY_SKIP_YYWRAP
371
372 typedef unsigned char YY_CHAR;
373
374 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
375
376 typedef int yy_state_type;
377
378 extern int surf_parse_lineno;
379
380 int surf_parse_lineno = 1;
381
382 extern char *surf_parse_text;
383 #define yytext_ptr surf_parse_text
384
385 static yy_state_type yy_get_previous_state (void );
386 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
387 static int yy_get_next_buffer (void );
388 static void yy_fatal_error (yyconst char msg[]  );
389
390 /* Done after the current pattern has been matched and before the
391  * corresponding action - sets up surf_parse_text.
392  */
393 #define YY_DO_BEFORE_ACTION \
394         (yytext_ptr) = yy_bp; \
395         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
396         (yy_hold_char) = *yy_cp; \
397         *yy_cp = '\0'; \
398         (yy_c_buf_p) = yy_cp;
399
400 #define YY_NUM_RULES 351
401 #define YY_END_OF_BUFFER 352
402 /* This struct is not used in this scanner,
403    but its presence is necessary. */
404 struct yy_trans_info
405         {
406         flex_int32_t yy_verify;
407         flex_int32_t yy_nxt;
408         };
409 static yyconst flex_int16_t yy_accept[2023] =
410     {   0,
411         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
412         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
413         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
414         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
415         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
416         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
417         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
418         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
419         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
420         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
421
422         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
423         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
424         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
425         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
426         0,    0,  352,  350,   15,   10,   10,   15,   15,  330,
427        10,  330,    5,    6,    5,    8,    9,    8,  346,  338,
428       339,  347,  344,  347,  345,  349,  338,  339,  349,  350,
429        26,   10,   26,   26,   26,   24,   26,   26,   30,   10,
430        30,   30,  350,  350,   30,   37,   10,   37,   37,   37,
431        35,   37,   41,   10,   41,   52,   10,   52,   52,   52,
432
433        50,   52,   52,   52,  347,  346,   74,   10,   74,   74,
434        74,   72,   74,   74,   74,   74,   78,   10,   78,  350,
435        78,   97,   10,   97,   97,   97,   95,   97,   97,   97,
436       101,   10,  101,  114,   10,  114,  114,  114,  112,  114,
437       114,  114,  114,  118,   10,  118,  125,   10,  125,  125,
438       125,  123,  125,  350,  350,  129,   10,  129,  156,   10,
439       156,  156,  156,  154,  156,  156,  156,  156,  156,  160,
440        10,  160,  160,  169,   10,  169,  169,  169,  167,  169,
441       169,  173,   10,  173,  196,   10,  196,  196,  196,  194,
442       196,  196,  196,  196,  196,  196,  200,   10,  200,  207,
443
444        10,  207,  207,  207,  205,  207,  211,   10,  211,  236,
445        10,  236,  236,  236,  234,  236,  236,  236,  236,  240,
446        10,  240,  240,  259,   10,  259,  259,  259,  257,  259,
447       259,  259,  350,  263,   10,  263,  263,  286,   10,  286,
448       286,  286,  284,  286,  286,  286,  286,  290,   10,  290,
449       290,  297,   10,  297,  297,  297,  295,  297,  301,   10,
450       301,  314,   10,  314,  314,  314,  312,  314,  314,  314,
451       314,  318,   10,  318,  350,  318,  325,   10,  325,  325,
452       325,  323,  325,  329,   10,  329,   10,    0,    2,    2,
453         0,    4,    7,  341,  340,    0,    0,    0,    0,    0,
454
455         0,    0,   25,   27,   27,   27,    0,    0,    0,    0,
456         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
457         0,    0,    0,    0,    0,    0,    0,    0,    0,   36,
458        38,   38,    0,   51,   53,   53,   53,   53,    0,    0,
459         0,   73,   75,   75,   75,   75,   75,   75,   75,    0,
460         0,   96,   98,   98,   98,   98,    0,  113,  115,  115,
461       115,  115,  115,    0,  124,  126,  126,    0,  155,  157,
462       157,  157,  157,  157,  157,  157,    0,  168,  170,  170,
463       170,    0,  195,  197,  197,  197,  197,  197,  197,  197,
464       197,  197,    0,  206,  208,  208,    0,  235,  237,  237,
465
466       237,  237,  237,  237,    0,  258,  260,  260,  260,  260,
467       260,    0,    0,  285,  287,  287,  287,  287,  287,    0,
468       296,  298,  298,    0,  313,  315,  315,  315,  315,  315,
469         0,    0,  324,  326,  326,    0,    0,    0,    0,    0,
470         3,    0,    0,    0,    0,    0,    0,    0,  348,    0,
471        27,   27,    0,    0,    0,    0,    0,    0,    0,    0,
472         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
473         0,    0,    0,    0,    0,    0,    0,    0,    0,   38,
474         0,    0,   53,    0,    0,   53,    0,    0,    0,  343,
475        75,    0,    0,   75,   75,   75,   75,    0,    0,    0,
476
477        98,   98,   98,    0,    0,    0,    0,  115,  115,  115,
478         0,    0,  126,    0,    0,  157,    0,    0,  157,  157,
479       157,  157,    0,    0,    0,    0,  170,    0,    0,  197,
480         0,    0,    0,    0,  197,  197,  197,  197,  197,    0,
481         0,    0,    0,    0,    0,  237,    0,    0,  237,  237,
482       237,    0,    0,  260,  260,  260,  260,    0,    0,    0,
483       287,  287,  287,  287,    0,    0,    0,    0,    0,    0,
484       315,  315,  315,  315,    0,    0,    0,  326,    0,    0,
485         0,   14,    1,    0,    0,  336,    0,    0,    0,  333,
486       332,    0,    0,   27,   27,    0,    0,   29,    0,    0,
487
488         0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
489         0,    0,    0,    0,    0,    0,    0,  102,    0,    0,
490         0,    0,    0,    0,   38,    0,    0,   40,    0,   53,
491         0,   45,   44,   53,    0,    0,    0,   55,    0,   75,
492         0,   59,   58,    0,    0,   75,    0,    0,   75,    0,
493         0,   77,    0,    0,   98,   98,   98,    0,    0,  100,
494         0,    0,  105,  104,  115,  115,  115,    0,    0,  117,
495         0,  126,    0,    0,  128,    0,  157,    0,  133,  132,
496       157,  157,  157,  157,    0,    0,  159,    0,    0,  164,
497       163,  170,    0,    0,  172,    0,  197,  197,    0,  187,
498
499       186,    0,  177,  176,    0,    0,  197,  197,  197,  197,
500         0,    0,  199,    0,    0,  204,  203,    0,    0,  210,
501         0,  237,    0,  215,  214,  237,  237,  237,    0,    0,
502       239,    0,  260,    0,    0,    0,    0,  260,    0,    0,
503         0,  262,    0,  287,    0,    0,  287,    0,    0,    0,
504         0,  289,    0,    0,  294,  293,    0,    0,  300,    0,
505       315,  315,  315,  315,    0,    0,  317,    0,    0,  326,
506         0,    0,  328,    0,    0,    0,  337,  331,    0,    0,
507         0,   27,   27,    0,    0,    0,    0,  131,    0,  213,
508         0,    0,  161,    0,    0,  103,    0,    0,    0,  130,
509
510       212,    0,    0,  102,    0,    0,    0,    0,    0,    0,
511         0,    0,    0,    0,    0,   53,    0,    0,   75,    0,
512        63,   62,    0,    0,    0,   61,   60,   75,    0,  162,
513        98,    0,    0,   98,    0,  115,  115,  115,    0,  126,
514         0,  157,  157,  157,  157,  157,    0,  170,    0,  197,
515       197,    0,  189,  188,  197,  197,  197,  197,    0,    0,
516       237,  237,  237,  237,    0,  260,    0,  246,  245,    0,
517       244,  243,  260,  212,    0,  287,    0,  269,  268,  287,
518         0,  267,  266,    0,    0,  315,    0,    0,  315,  315,
519         0,    0,  326,    0,    0,    0,    0,   12,    0,  334,
520
521       335,    0,   27,   27,    0,    0,    0,    0,  131,    0,
522       213,    0,    0,    0,  161,    0,  265,   43,    0,    0,
523       130,  212,    0,  265,   42,    0,  264,    0,  264,   42,
524         0,   34,   33,    0,    0,   47,   46,   53,    0,    0,
525        75,    0,   65,   64,   75,    0,  162,   98,    0,    0,
526         0,    0,    0,    0,  115,  115,  115,    0,  116,  126,
527         0,  157,  157,  157,    0,    0,    0,    0,  157,    0,
528         0,    0,    0,    0,    0,  197,    0,    0,  197,  197,
529       197,    0,    0,  237,  237,  237,    0,    0,  237,    0,
530       260,  260,    0,    0,  287,  287,    0,    0,  315,    0,
531
532       305,  304,  315,  315,    0,    0,    0,    0,    0,    0,
533         0,    0,   11,    0,   27,   27,   27,    0,    0,    0,
534         0,    0,    0,    0,    0,   57,  265,    0,  202,   43,
535         0,    0,    0,   56,  201,   42,    0,  264,    0,    0,
536         0,    0,   53,    0,    0,   75,   75,    0,   98,    0,
537         0,    0,    0,    0,    0,    0,    0,    0,   92,   91,
538         0,    0,    0,  115,    0,    0,    0,    0,    0,  157,
539       157,  157,    0,  135,  134,    0,    0,    0,  157,    0,
540       158,    0,  166,  165,    0,  171,    0,  191,  190,    0,
541         0,    0,  185,  184,    0,    0,  197,    0,    0,    0,
542
543         0,  237,  237,  237,    0,    0,    0,  237,    0,  238,
544         0,    0,  260,    0,    0,    0,    0,  287,    0,    0,
545       315,  315,  315,    0,    0,    0,  322,  321,    0,    0,
546         0,    0,    0,    0,    0,   27,   27,    0,    0,  175,
547       120,   32,    0,    0,  303,   57,    0,  202,    0,  174,
548       119,   56,  201,  302,    0,   31,    0,    0,   53,    0,
549         0,   54,   75,   75,    0,    0,    0,    0,    0,    0,
550         0,    0,    0,    0,    0,    0,    0,    0,    0,  107,
551       106,    0,    0,    0,  109,  108,    0,  122,  121,    0,
552       157,  157,  157,    0,    0,  157,    0,  193,  192,    0,
553
554       179,  178,    0,    0,    0,  181,  180,    0,    0,  237,
555         0,    0,  237,  237,    0,    0,  237,    0,    0,    0,
556       260,    0,    0,    0,    0,    0,  287,    0,  288,    0,
557       315,  315,  315,    0,    0,    0,    0,    0,    0,   17,
558         0,   19,   18,   27,   27,    0,  319,  175,  120,   32,
559       291,   16,  303,    0,    0,  174,  119,  302,    0,   31,
560         0,    0,   53,  342,   75,   75,    0,   76,    0,   94,
561        93,    0,    0,    0,    0,    0,    0,    0,    0,    0,
562         0,    0,    0,  111,  110,    0,  157,  157,  157,    0,
563         0,    0,    0,  157,    0,  183,  182,    0,    0,  209,
564
565       237,    0,  221,  220,  237,  237,    0,    0,    0,    0,
566       237,    0,    0,    0,    0,  260,  292,    0,    0,    0,
567         0,    0,  287,    0,    0,    0,  315,  315,    0,  320,
568         0,    0,    0,    0,   17,   27,   27,    0,  319,  291,
569        16,    0,    0,    0,    0,    0,   39,   53,    0,    0,
570        75,    0,    0,    0,    0,    0,    0,    0,    0,    0,
571         0,    0,    0,  127,  157,  157,  157,    0,  141,    0,
572       140,  157,    0,  198,    0,    0,  237,  237,  237,    0,
573       225,    0,  224,  237,    0,    0,    0,    0,    0,    0,
574         0,    0,  292,    0,    0,    0,    0,    0,    0,    0,
575
576       287,    0,    0,  307,  306,    0,    0,  315,    0,  316,
577       320,    0,    0,    0,    0,    0,    0,   27,    0,   28,
578         0,    0,    0,    0,   53,    0,    0,    0,   75,    0,
579         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
580       157,  157,  157,  143,  142,    0,    0,    0,  217,  216,
581       237,  237,  237,  227,  226,    0,    0,    0,    0,    0,
582         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
583         0,    0,    0,  287,  287,    0,  299,    0,  311,  310,
584         0,    0,    0,  327,    0,    0,    0,    0,   21,   20,
585         0,    0,  242,    0,  241,    0,    0,    0,    0,    0,
586
587         0,    0,   75,    0,    0,    0,    0,   84,    0,    0,
588         0,    0,   83,    0,  157,  157,  157,    0,  145,  144,
589       237,  237,  237,    0,  229,  228,    0,    0,    0,    0,
590         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
591         0,    0,    0,  287,  287,    0,  309,  308,    0,    0,
592         0,    0,   23,   22,  242,    0,  241,    0,    0,   49,
593        48,    0,    0,    0,    0,   75,    0,    0,    0,    0,
594         0,    0,    0,    0,    0,    0,    0,  157,  157,  157,
595       237,    0,    0,  237,    0,    0,    0,    0,    0,    0,
596         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
597
598         0,  287,  287,    0,    0,    0,    0,   80,   79,    0,
599         0,    0,    0,    0,    0,    0,    0,   90,    0,    0,
600         0,   89,    0,    0,    0,  137,  136,  157,  157,  157,
601       157,  237,    0,  223,  222,  237,    0,    0,    0,    0,
602         0,    0,  256,    0,  255,    0,    0,  261,    0,    0,
603         0,    0,    0,    0,    0,    0,  287,    0,    0,  287,
604         0,    0,    0,    0,    0,    0,   80,   79,    0,    0,
605         0,    0,    0,   67,   66,    0,    0,    0,    0,    0,
606         0,    0,  157,  157,  157,  157,    0,    0,    0,    0,
607         0,    0,    0,    0,    0,    0,  254,  253,    0,    0,
608
609         0,    0,    0,    0,    0,  273,  272,  287,    0,  271,
610       270,  287,    0,    0,    0,    0,    0,    0,    0,   71,
611         0,   70,   88,    0,    0,   87,    0,    0,    0,   99,
612       157,  157,  157,  157,    0,  219,  218,    0,    0,    0,
613         0,    0,  250,    0,    0,  249,    0,    0,  281,    0,
614         0,  280,  287,  287,    0,    0,    0,   12,    0,   12,
615         0,    0,    0,   82,   86,   81,   85,  157,  157,  157,
616       157,    0,    0,    0,    0,  252,  248,  251,  247,  283,
617       279,  282,  278,  287,  287,    0,    0,    0,    0,    0,
618         0,    0,    0,    0,    0,    0,    0,    0,  157,    0,
619
620         0,    0,    0,    0,    0,  287,  287,    0,    0,   69,
621        68,    0,  139,  138,    0,  149,  148,    0,  147,  146,
622       157,    0,  153,  152,    0,    0,    0,    0,  287,  287,
623         0,   11,  157,    0,    0,    0,    0,  287,  287,    0,
624       157,    0,    0,    0,    0,  287,  287,    0,  157,    0,
625         0,    0,    0,  287,  287,    0,    0,    0,    0,  231,
626         0,  230,  287,  287,    0,    0,  151,  150,  233,  232,
627       287,  287,    0,  287,  287,    0,  287,  287,    0,    0,
628       287,  287,    0,    0,  287,  287,    0,    0,  287,  287,
629         0,    0,    0,    0,    0,    0,    0,    0,    0,  277,
630
631       276,    0,  275,  274,    0,    0,    0,    0,    0,    0,
632         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
633        13,    0
634     } ;
635
636 static yyconst flex_int32_t yy_ec[256] =
637     {   0,
638         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
639         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
640         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
641         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
642         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
643        13,   14,   13,   13,   13,   15,   13,   16,   17,   18,
644        19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
645        28,   29,   30,   28,   31,   32,   33,   34,   35,   36,
646        28,   37,   38,   39,   28,   40,   41,   28,   42,   28,
647        43,    1,   44,    1,   45,    1,   46,   47,   48,   49,
648
649        50,   51,   52,   53,   54,   28,   55,   56,   57,   58,
650        59,   60,   61,   62,   63,   64,   65,   66,   67,   68,
651        69,   28,    1,    1,    1,    1,    1,    1,    1,    1,
652         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
653         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
654         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
655         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
656         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
657         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
658         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
659
660         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
661         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
662         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
663         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
664         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
665         1,    1,    1,    1,    1
666     } ;
667
668 static yyconst flex_int32_t yy_meta[70] =
669     {   0,
670         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
671         3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
672         1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
673         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
674         5,    5,    1,    1,    5,    9,    9,    9,    9,    9,
675         9,    5,    5,    5,    5,    5,    5,    5,    5,    5,
676         5,    5,    5,    5,    5,    5,    5,    5,    5
677     } ;
678
679 static yyconst flex_int16_t yy_base[2256] =
680     {   0,
681         0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
682        14,   17,   33,   36,   49,   55,   45,   61,   66,   72,
683       105,  173,   75,   78,   83,  125,  128,  132,  135,  138,
684       193,  196,  200,  203,  206,  224,  242,  293,  262,  265,
685       344,  404,  271,  273,  464,  527,  269,  316,  320,  323,
686       364,  367,  371,  374,  590,  654,  424,  427,  718,  781,
687       431,  434,  844,  907,  484,  487,  491,  494,  497,  547,
688       970, 1033,  550,  554,  557,  560,  610,  613,  617,  620,
689      1096, 1162,  623,  674, 1228,    0,  677,  681, 1297, 1351,
690       684,  687, 1405, 1468,  738,  741,  745,  748,  751,  801,
691
692       804,  808, 1531, 1594,  811,  814,  864,  867,  871,  874,
693       877,  927, 1657, 1720,  930,  934,  937,  940,  990,  993,
694       997, 1000, 1783, 1837, 1003, 1053, 1891, 1954, 1056, 1060,
695      1063, 1066, 1116, 1119, 1123, 1126, 2017, 2083, 1129, 1182,
696         0,    0, 5066, 7094, 7094,   95,  100,   29,   41, 7094,
697       155,   51, 7094, 7094, 5055, 7094, 7094, 5043, 7094, 5058,
698      5042, 1141, 7094, 7094, 7094, 7094, 5036, 5032, 4990,  210,
699      7094,  158, 5012,    0,  142, 7094, 4977, 4969, 7094,  162,
700      2145, 2205,  160, 5007,  176, 7094,  165, 4998,    0,  149,
701      7094, 4961, 7094,  230,  378, 7094,  326, 4994,    0,  208,
702
703      7094, 4958, 4949, 4947,  379, 4950, 7094,  329, 4972,    0,
704       214, 7094, 4938, 4937,  238, 4915, 7094,  377,   11,   31,
705      4965, 7094,  399, 4948,    0,  435, 7094, 4907, 4905, 4888,
706      7094,  457,  441, 7094,  520, 4922,    0,  436, 7094, 4892,
707      4870, 4871, 4851, 7094,  583,  498, 7094,  640, 4894,    0,
708       499, 7094, 4862,  513, 4840, 7094,  644, 4879, 7094,  647,
709      4870,    0,  562, 7094, 4802,   34, 4821, 4797, 4788, 7094,
710       704,  177, 4838, 7094,  708, 4827,    0,  568, 7094, 4793,
711      4783, 7094,  711,  752, 7094,  772, 4808,    0,  631, 7094,
712       211, 4777, 4775,   93, 4773, 4753, 7094,  834,  818, 7094,
713
714       894, 4796,    0,  632, 7094, 4753, 7094,  897,  881, 7094,
715       901, 4781,    0,  695, 7094, 4739, 4735, 4736,   80, 7094,
716       957,  360, 4765, 7094,  960, 4755,    0,  696, 7094, 4726,
717      4709,   26,  304, 7094,  963,  330, 4746, 7094, 1149, 4726,
718         0,  885, 7094, 4694, 4675, 4679, 4673, 7094, 1152,  499,
719      4721, 7094, 1155, 4705,    0,  948, 7094, 4672, 7094, 1186,
720      1005, 7094, 1192, 4696,    0, 1004, 7094, 4650, 4654, 4655,
721      4643, 7094, 1205, 1100, 4694, 4691, 7094, 1208, 4678,    0,
722      1007, 7094, 4650, 7094, 1211, 1068, 1215,  429, 4627, 7094,
723      4683, 4665, 7094, 7094, 7094, 1306,  283, 4614, 4612, 4607,
724
725      4647, 4609, 7094,    0, 4598, 4601, 4586, 4583, 4584, 4580,
726      4574, 4570, 4573,    4,  166, 4567, 4554, 4558, 4546, 4545,
727      4541,  404, 4544, 4530,   38,  467, 4530,  712, 4523, 7094,
728         0, 4526, 4527, 7094,    0, 4523, 1320, 4516,  533, 4512,
729      4555, 7094,    0, 4514, 1323, 4486, 4507, 4493, 4497, 4477,
730        89, 7094,    0, 4488, 4462, 4473, 4453, 7094,    0, 1326,
731      4459, 4459, 4455, 4435, 7094,    0, 4429, 4441, 7094,    0,
732      4444, 1329, 4422, 4400, 4400, 4419, 4407, 7094,    0, 1373,
733      4398, 4393, 7094,    0, 4406, 1377, 1380, 4375, 4371, 4386,
734      4372, 4366, 4367, 7094,    0, 1383, 4348, 7094,    0, 4351,
735
736      1425, 4340, 4357, 4355, 4340, 7094,    0, 4327, 4326, 4340,
737      4326, 4323, 4308, 7094,    0, 4305, 4289, 4291, 4298, 4283,
738      7094,    0, 1428, 4287, 7094,    0, 4277, 4271, 4272, 4280,
739      4264, 4261, 7094,    0, 4265, 4267, 4286, 4295,  807, 4246,
740      7094, 1207,    0, 4229, 4229, 4269, 4268, 4224, 7094, 4231,
741      4213, 4213, 1431, 1434, 4218, 4203, 4205, 4201, 4215, 4194,
742      4202, 4187, 4187, 4178, 4170, 4186, 4165, 4167, 4164, 4155,
743      4154, 4145, 4145, 4157, 4143, 4135, 4141, 4122, 4139, 4128,
744      1437, 1489, 4127, 1494, 1497, 4108, 4137, 1551, 1556, 7094,
745      4106, 1559, 1514, 1562, 4097, 1565, 4108, 1619, 1627, 4090,
746
747      4091, 4097, 4083, 1622, 1630, 1677, 1583, 4079, 4065, 4067,
748      1682, 1695, 4068, 1685, 1740, 4058, 1691, 1642, 4059, 4062,
749      4056, 4037, 1745, 1748, 1751, 1710, 4035, 1755, 1808,  583,
750      1811, 1814, 1857, 1860, 1869, 4032, 4030, 4025, 4021, 1911,
751      1920, 1914, 1880, 1917, 1923, 4022, 1926, 1975, 4014, 3994,
752      3987, 1983, 1986, 3996, 1989, 1992, 3981, 3977, 2039, 2046,
753      3979, 1997, 3983, 2043, 2049, 2052, 2061, 2072, 2104, 2110,
754      3976, 3952, 3959, 3943, 2113, 2116, 3952, 3927, 2119, 2138,
755      3970, 7094, 7094,  315, 3922, 7094, 3934, 3933, 3878, 7094,
756      7094, 3872, 3870, 3879, 3868, 2141, 2149, 7094, 2168, 3865,
757
758      3859, 3871, 3849, 3854, 3849, 3830,  261, 3839, 3819, 1223,
759      3834, 3802, 3814, 3798, 3796, 3801, 3784, 1332, 3795,  384,
760      3777, 3784, 3774, 3788, 2144, 2172, 2177, 7094, 2182, 2209,
761      2216, 7094, 7094, 2229, 3810, 2232, 2235, 7094, 2240, 3756,
762      2268, 7094, 7094, 2243, 2276, 2287, 2290, 2293, 3767, 2301,
763      2308, 7094, 2311,  432, 3761, 2314, 3760, 2320, 2323, 7094,
764      2332, 2335, 7094, 7094, 3754, 3751, 3743, 2343, 2346, 7094,
765      2351, 3739, 2354, 2357, 7094, 2377, 3735, 2380, 7094, 7094,
766      3728, 3721, 3717, 3727, 2388, 2391, 7094, 2396, 2400, 7094,
767      7094, 3722, 2410, 2415, 7094, 2418, 3702, 3717, 2422, 7094,
768
769      7094, 2438, 7094, 7094, 2430, 2448, 3700, 3698, 3703, 3695,
770      2458, 2461, 7094, 2464, 2467, 7094, 7094, 2483, 2486, 7094,
771      2489, 3673, 2492, 7094, 7094, 3679, 3672, 3662, 2508, 2511,
772      7094, 2514, 3611, 2517, 2521, 2536, 2539, 3618, 3612, 2547,
773      2554, 7094, 2557, 3602, 2560, 2567, 3607, 2578, 2581, 2589,
774      2592, 7094, 2596, 2599, 7094, 7094, 2611, 2615, 7094, 2621,
775      3590, 2624, 3607, 3576, 2630, 2634, 7094, 2642, 3573, 3586,
776      2645, 2649, 7094, 2653,  726, 2656, 7094, 7094, 3618, 3616,
777      3569, 3560, 3587, 2664, 3545, 3528, 3544, 1386, 3520, 2152,
778      3533, 3532, 1460, 3512, 3519, 1463, 3518, 3502, 3518, 1523,
779
780      2678, 3504, 3511, 1526, 3497, 3496, 3494, 3478, 3491, 3490,
781      2668, 2686, 2694, 2700, 2704, 3489, 3504, 2713, 3479, 2718,
782      7094, 7094, 2727, 2732, 2745, 7094, 7094, 3473, 2740, 1650,
783      3457, 2753, 2760, 2771, 2774, 3446, 3466, 3439, 2777, 3457,
784      2780, 3458, 3452, 3436, 2783, 2789, 2801, 2807, 2811, 2814,
785      2821, 2833, 7094, 7094, 2825, 2843, 2847, 2850, 2853, 2856,
786      3442, 3447, 3431, 2876, 2879, 3430, 2885, 7094, 7094, 2894,
787      7094, 7094, 3418, 2903, 2906, 3419, 2921, 7094, 7094, 3412,
788      2929, 7094, 7094, 2937, 2940, 3420, 2910, 2943, 3401, 3418,
789      2951, 3402, 2959, 2962,  181, 3437, 2965, 7094, 3436, 7094,
790
791      7094, 3395, 3388,  518, 2970, 3395, 3393, 3394, 1705, 3391,
792      1769, 3387, 3375, 3365, 1774, 3370, 2973, 2977, 3375, 3365,
793      1777, 1829, 3354, 2984, 2994, 3347, 3000, 3358, 3003, 3009,
794      3020, 7094, 7094, 3030, 3034, 7094, 7094, 3351, 3362, 3049,
795      3328, 3052, 7094, 7094, 3325, 3064, 1832, 3325, 3068, 1059,
796      1113, 3045, 3076, 3084, 3087, 3090, 3094, 3098, 7094, 3108,
797      3112, 3337, 3333, 3317, 3117, 3122, 3135, 3138, 3328, 3146,
798      3149, 3153, 3161, 3167, 3170, 3180, 3185, 3188, 3198, 3203,
799      3206, 3209, 3212, 3328, 3307, 3321, 3216, 3224, 3321, 3234,
800      3237, 3241, 3322, 3244, 3247, 3265, 3268, 3273, 3310, 3276,
801
802      7094, 7094, 3313, 3302, 3288, 3306, 3293, 3296, 3311, 1422,
803       612,  568, 7094, 3279, 3317, 3320, 3323, 3326, 3282, 3275,
804      3282, 3267, 3252, 3249, 3246, 1875, 1945, 3250, 1948, 2010,
805      3258, 3242, 3248, 3330, 3341, 3345, 3224, 3348, 3229, 3233,
806      3233, 3351, 3226, 3243, 3355, 3204, 3207, 3358, 3361, 3236,
807      3222,  260, 3220, 3231, 3217,  421, 3207, 3384, 7094, 7094,
808      3392, 3395, 3400, 3414, 3417, 3420, 3428, 3435, 3446, 3180,
809      3169, 3172, 3449, 7094, 7094, 3458, 3188, 3186, 3149, 3466,
810      7094, 3469, 7094, 7094, 3477, 7094, 3481, 7094, 7094, 3489,
811      3496, 3507, 7094, 7094, 3515, 3518, 3526, 3529, 3533, 3547,
812
813      3550, 3134, 3553, 3151, 3556, 3160, 3158, 3131, 3571, 7094,
814      3574, 3577, 3585, 3116, 3597, 3592, 3612, 3603, 3606, 3621,
815      3120, 3120, 3121, 3625, 3109, 3628, 7094, 7094, 3640,  808,
816      1330,  747, 3104, 3644, 3647, 3655, 3662, 3669, 3096, 3673,
817      3676, 3680, 3087, 3086, 3683, 3689, 3070, 3692, 3074, 3695,
818      3698, 3701, 3704, 3707, 3065, 3712, 3070, 3715, 3068, 3074,
819      3718, 7094, 3046, 3061, 3721, 3726, 3730, 3071, 3065, 3044,
820      3047, 3035, 3041, 3035, 3024, 3026, 3018, 3740, 3744, 7094,
821      7094, 3752, 3755, 3764, 7094, 7094, 3772, 7094, 7094, 3780,
822      3001, 2995, 2985,  669,  743, 2986, 3783, 7094, 7094, 3792,
823
824      7094, 7094, 3800, 3803, 3811, 7094, 7094, 3819, 3822, 2988,
825      3825, 3828, 2988, 2970,  806,  857, 2972, 3843,  358,  361,
826      3851, 2962, 3854, 3857,  658,  785, 3865, 3869, 7094, 3873,
827      3876, 2968, 2960, 3883, 2950, 3894, 3888,  927, 1009, 3898,
828      3903, 7094, 7094, 3913, 3916, 3922, 3925, 3936, 3941, 3945,
829      3951, 3954, 3957, 2953, 2950, 3960, 3963, 3967, 2938, 3970,
830      2934, 3973, 2927, 7094, 3979, 2920, 3982, 7094, 3985, 7094,
831      7094, 2958, 2920, 2932, 2925, 2925, 2925, 2909, 2911, 2905,
832      2902, 3993, 3997, 7094, 7094, 4005, 2868, 2859, 2848, 2865,
833      2878, 2850, 2865, 2818, 4008, 7094, 7094, 4016, 4019, 7094,
834
835      4024, 4028, 7094, 7094, 2810, 2784, 2761, 2746, 2713, 2723,
836      2624,   81,  919,  466,  985, 4038, 4042, 4045,  474, 1048,
837       477, 1057, 4051, 4056, 4059, 4071, 4064,  527, 4082, 4085,
838      4088, 4091,  748,  840, 4095, 4101, 4113, 4119, 4122, 4125,
839      4131,  518,  548,  565,  624, 4134, 7094,  665, 4138, 4141,
840       706,  738,  786,  838,  838,  886,  894,  901,  915,  912,
841       931, 4156, 4162, 7094,  934,  971,  965, 1025, 7094, 1023,
842      7094, 4165, 4168, 7094, 4171, 4177,  998, 1005, 1019, 1080,
843      7094, 1115, 7094, 4189, 1109, 1100, 1117, 1135, 1140, 1165,
844      4192, 4195, 4203, 4213, 1166, 1160, 1173, 1175, 1165, 1178,
845
846      4216, 4219, 4222, 7094, 7094, 4234, 4238, 4247, 4252, 7094,
847      4255, 4258, 1293, 1347, 1384, 4271, 4278, 4289, 4292, 7094,
848      1169, 1287, 1284, 1293, 4295, 4298, 1366, 1470, 1285, 1316,
849      1325, 1349, 1371, 1391, 1368, 1378, 1397, 1423, 1437, 4307,
850      1381, 1403, 1403, 7094, 7094, 4313, 4316, 4327, 7094, 7094,
851      1402, 1410, 1430, 7094, 7094, 4335, 4338, 1457, 1463, 1468,
852      1468, 1469, 1474, 4346, 1548, 1549, 4354, 1477, 1480, 1485,
853      1519, 1518, 1534, 4357, 4360, 4364, 7094, 4369, 7094, 7094,
854      4378, 4383, 4391, 7094, 1573, 1552, 1559, 4396, 7094, 7094,
855      4404, 4410, 4422, 1525, 4425, 1540, 4428, 4431, 1579, 1598,
856
857      1590, 1606, 1577, 1611, 1601, 1607, 1615, 7094, 1631, 1642,
858      1641, 1650, 7094, 4439, 4442, 1646, 1659, 4446, 7094, 7094,
859      1661, 4454, 1670, 4460, 7094, 7094, 1699, 1710, 1730, 1724,
860      1726, 1741, 1747, 1779, 1771, 1782, 4468, 1772, 1783, 1795,
861      1785, 1788, 1799, 4472, 4475, 4493, 7094, 7094, 1916, 1833,
862      4481, 4501, 7094, 7094, 4478, 1765, 4509, 1801, 4512, 7094,
863      7094, 1845, 1834, 1852, 1841, 4522, 1848, 1868, 1901, 1910,
864      1899, 1917, 1932, 1931, 4525, 4528, 4531, 1919, 1995, 1921,
865      1952, 4540, 4546, 1935, 1980, 1989, 1999, 2009, 2018, 2033,
866      2062, 2032, 2062, 2035, 4554, 2047, 2053, 2048, 2069, 2083,
867
868      2076, 4558, 4561, 2108, 4564, 4567, 4587, 4595, 4598, 2091,
869      2104, 2097, 2107, 4606, 4609, 2105, 2105, 7094, 2107, 2109,
870      2130, 7094, 2132, 4617, 4620, 7094, 7094, 2111, 2117, 2123,
871      2131, 4628, 4632, 7094, 7094, 4640, 2157, 2149, 2162, 2164,
872      2156, 2169, 7094, 2189, 7094, 2194, 4646, 7094, 2179, 2172,
873      2190, 2191, 2187, 2198, 4649, 4652, 4660, 4667, 4671, 4680,
874      2204, 4685, 4688, 4708, 4747, 4791, 4698, 4716, 2202, 2223,
875      2215, 2232, 4720, 7094, 7094, 2243, 2218, 2222, 2248, 2232,
876      2234, 4737, 2217, 2227, 2218, 2217, 4741, 4728, 4759, 4767,
877      2257, 2259, 2281, 2272, 2275, 2292, 7094, 7094, 2281, 2283,
878
879      2313, 2294, 2304, 2321, 4777, 7094, 7094, 4785, 4811, 7094,
880      7094, 4803, 2345, 4821, 2356, 2355, 4857, 4901, 2318, 7094,
881      2328, 7094, 7094, 2345, 2361, 7094, 2359, 2361, 4829, 7094,
882      2322, 2307, 2336, 2337, 4834, 7094, 7094, 4842, 2410, 2418,
883      2382, 2390, 7094, 2392, 2396, 7094, 2404, 2417, 7094, 2418,
884      2420, 7094, 4851, 4869, 2423, 2452, 2454, 2430, 2488, 2437,
885      4877, 2438, 2440, 7094, 7094, 7094, 7094, 4880, 4892, 4921,
886      4924, 2457, 2453, 2461, 2470, 7094, 7094, 7094, 7094, 7094,
887      7094, 7094, 7094, 4927, 4932, 4935, 2494, 2481, 2495, 4945,
888      2499, 2498, 4950, 4883, 4954, 4958, 4968, 4972, 2460, 4980,
889
890      4987, 2487, 2510, 2494, 2513, 4998, 5001, 5004, 2517, 7094,
891      7094, 5007, 7094, 7094, 5019, 7094, 7094, 5027, 7094, 7094,
892      2494, 5035, 7094, 7094, 2510, 2510, 2516, 2516, 5045, 5048,
893      2546, 7094, 2517, 2538, 2549, 2548, 2560, 5051, 5054, 2569,
894      2538, 2570, 2585, 2575, 2595, 5057, 5075, 2601, 5078, 2603,
895      2624, 2613, 2633, 5081, 5084, 2665, 5087, 5110, 2657, 7094,
896      2655, 7094, 5118, 5121, 2666, 5139, 7094, 7094, 7094, 7094,
897      5147, 5150, 5153, 5156, 5159, 5168, 5182, 5187, 2655, 2663,
898      5194, 5201, 2658, 2691, 5205, 5208, 2680, 2738, 5212, 5226,
899      2673, 2719, 5231, 5237, 5253, 5256, 2703, 2739, 5264, 7094,
900
901      7094, 5273, 7094, 7094, 2778, 2787, 2747, 2750, 2850, 2852,
902      2799, 2818, 2689, 2748, 2855, 2866, 2800, 2881, 5281, 5284,
903      7094, 7094, 5304, 5313, 5322, 5331, 5340, 5349, 5358, 5367,
904      5376, 5385, 5394, 5403, 5412, 5421, 5430, 5439, 5448, 5457,
905      5466, 5475, 5484, 5493, 5502, 5511, 5520, 5529, 5538, 5547,
906      5556, 5565, 5574, 5583, 5592, 5601, 5610, 5619, 5628, 5637,
907      5646, 5653, 5660, 5667, 5674, 5681, 5688, 5695, 5702, 5709,
908      5716, 5723, 5730, 5737, 5744, 5751, 5758, 5765, 5774, 5779,
909      5784, 5789, 5794, 5799, 5804, 5809, 5814, 5819, 5826, 5831,
910      5838, 5843, 5850, 5855, 5862, 5867, 5874, 5879, 5886, 5891,
911
912      5898, 5903, 5910, 5915, 5924, 5930, 5937, 5945, 5952, 5960,
913      5967, 5975, 5982, 5990, 5997, 6005, 6012, 6020, 6027, 6035,
914      6042, 6050, 6057, 6065, 6072, 6080, 6088, 6095, 6103, 6110,
915      6118, 6125, 6133, 6141, 6148, 6156, 6163, 6171, 6180, 6186,
916      6193, 6201, 6209, 6217, 6225, 6233, 6240, 6248, 6255, 6263,
917      6270, 6278, 6285, 6293, 6300, 6308, 6315, 6323, 6330, 6338,
918      6346, 6353, 6361, 6368, 6376, 6383, 6391, 6399, 6406, 6414,
919      6421, 6429, 6438, 6447, 6454, 6462, 6470, 6477, 6485, 6492,
920      6500, 6507, 6515, 6522, 6530, 6537, 6545, 6552, 6560, 6568,
921      6576, 6584, 6592, 6600, 6607, 6615, 6622, 6630, 6637, 6645,
922
923      6653, 6660, 6668, 6676, 6684, 6693, 6702, 6709, 6717, 6725,
924      6732, 6740, 6747, 6755, 6762, 6770, 6778, 6786, 6794, 6801,
925      6809, 6817, 6825, 6833, 6841, 6848, 6856, 6864, 6872, 6880,
926      6888, 6896, 6903, 6911, 6919, 6928, 6937, 6945, 6953, 6961,
927      6968, 6976, 6983, 6991, 6999, 7007, 7015, 7023, 7030, 7039,
928      7048, 7057, 7066, 7075, 7084
929     } ;
930
931 static yyconst flex_int16_t yy_def[2256] =
932     {   0,
933      2023, 2023, 2024, 2024, 2024, 2024, 2025, 2025, 2026, 2026,
934      2027, 2027, 2028, 2028, 2028, 2028, 2029, 2029, 2023, 2023,
935      2030, 2030, 2031, 2031, 2031, 2031, 2023, 2023, 2031, 2031,
936      2023, 2023, 2031, 2031, 2031, 2031, 2032, 2032, 2033, 2033,
937      2034, 2034, 2028, 2028, 2035, 2035, 2036, 2036, 2023, 2023,
938      2036, 2036, 2036, 2036, 2037, 2037, 2038, 2038, 2039, 2039,
939      2040, 2040, 2041, 2041, 2023, 2023, 2023, 2023, 2042, 2042,
940      2043, 2043, 2044, 2044, 2023, 2023, 2044, 2044, 2044, 2044,
941      2045, 2045, 2046, 2046, 2022,   85, 2047, 2047, 2048, 2048,
942      2049, 2049, 2050, 2050, 2051, 2051, 2023, 2023, 2051, 2051,
943
944      2051, 2051, 2052, 2052, 2023, 2023, 2023, 2023, 2053, 2053,
945      2053, 2053, 2054, 2054, 2055, 2055, 2023, 2023, 2055, 2055,
946      2055, 2055, 2056, 2056, 2057, 2057, 2058, 2058, 2059, 2059,
947      2023, 2023, 2059, 2059, 2059, 2059, 2060, 2060, 2061, 2061,
948      2023, 2023, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
949      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
950      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
951      2022, 2022, 2022, 2062, 2022, 2022, 2062, 2062, 2022, 2022,
952      2022, 2022,  181,  182,  182, 2022, 2022, 2022, 2063, 2022,
953      2022, 2063, 2022, 2022, 2022, 2022, 2022, 2022, 2064, 2022,
954
955      2022, 2064, 2064, 2064, 2022, 2022, 2022, 2022, 2022, 2065,
956      2022, 2022, 2065, 2065, 2065, 2065, 2022, 2022,  185,  185,
957       185, 2022, 2022, 2022, 2066, 2022, 2022, 2066, 2066, 2066,
958      2022, 2022, 2022, 2022, 2022, 2022, 2067, 2022, 2022, 2067,
959      2067, 2067, 2067, 2022, 2022, 2022, 2022, 2022, 2022, 2068,
960      2022, 2022, 2068,  185,  254, 2022, 2022,  185, 2022, 2022,
961      2022, 2069, 2022, 2022, 2069, 2069, 2069, 2069, 2069, 2022,
962      2022,  185,  185, 2022, 2022, 2022, 2070, 2022, 2022, 2070,
963      2070, 2022, 2022, 2022, 2022, 2022, 2022, 2071, 2022, 2022,
964      2071, 2071, 2071, 2071, 2071, 2071, 2022, 2022, 2022, 2022,
965
966      2022, 2022, 2072, 2022, 2022, 2072, 2022, 2022, 2022, 2022,
967      2022, 2022, 2073, 2022, 2022, 2073, 2073, 2073, 2073, 2022,
968      2022,  185,  185, 2022, 2022, 2022, 2074, 2022, 2022, 2074,
969      2074, 2074,  185, 2022, 2022,  185,  185, 2022, 2022, 2022,
970      2075, 2022, 2022, 2075, 2075, 2075, 2075, 2022, 2022,  185,
971       185, 2022, 2022, 2022, 2076, 2022, 2022, 2076, 2022, 2022,
972      2022, 2022, 2022, 2022, 2077, 2022, 2022, 2077, 2077, 2077,
973      2077, 2022, 2022,  185,  374,  185, 2022, 2022, 2022, 2078,
974      2022, 2022, 2078, 2022, 2022, 2022, 2022, 2079, 2022, 2022,
975      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
976
977      2022, 2022, 2022, 2062, 2062, 2062, 2080, 2022, 2022, 2022,
978      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
979      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
980      2063, 2063, 2081, 2022, 2064, 2064, 2064, 2064, 2022, 2082,
981      2022, 2022, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2083,
982      2022, 2022, 2066, 2066, 2066, 2066, 2084, 2022, 2067, 2067,
983      2067, 2067, 2067, 2085, 2022, 2068, 2068, 2086, 2022, 2069,
984      2069, 2069, 2069, 2069, 2069, 2069, 2087, 2022, 2070, 2070,
985      2070, 2088, 2022, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
986      2089, 2089, 2090, 2022, 2091, 2091, 2092, 2022, 2093, 2093,
987
988      2093, 2093, 2093, 2093, 2094, 2022, 2095, 2095, 2095, 2095,
989      2095, 2022, 2096, 2022, 2097, 2097, 2097, 2097, 2097, 2098,
990      2022, 2099, 2099, 2100, 2022, 2101, 2101, 2101, 2101, 2101,
991      2102, 2022, 2022, 2103, 2103, 2104, 2105, 2022, 2105, 2022,
992      2022, 2022, 2106, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
993      2107, 2107, 2108, 2108, 2022, 2022, 2022, 2022, 2022, 2022,
994      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
995      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2109,
996      2110, 2110, 2111, 2022, 2022, 2111, 2022, 2112, 2112, 2022,
997      2113, 2022, 2022, 2113, 2113, 2113, 2113, 2114, 2114, 2022,
998
999      2115, 2115, 2115, 2116, 2116, 2022, 2022, 2117, 2117, 2117,
1000      2118, 2118, 2119, 2120, 2120, 2121, 2022, 2022, 2121, 2121,
1001      2121, 2121, 2122, 2122, 2022, 2022, 2123, 2124, 2124, 2125,
1002      2022, 2022, 2022, 2022, 2125, 2125, 2125, 2125, 2125, 2126,
1003      2126, 2022, 2022, 2127, 2127, 2128, 2022, 2022, 2128, 2128,
1004      2128, 2129, 2129, 2130, 2130, 2130, 2130, 2022, 2131, 2131,
1005      2132, 2132, 2132, 2132, 2133, 2133, 2022, 2022, 2134, 2134,
1006      2135, 2135, 2135, 2135, 2136, 2136, 2022, 2137, 2138, 2138,
1007      2139, 2022, 2022, 2139, 2022, 2022, 2140, 2022, 2022, 2022,
1008      2022, 2022, 2022, 2141, 2141, 2022, 2142, 2022, 2142, 2022,
1009
1010      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1011      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1012      2022, 2022, 2022, 2022, 2143, 2022, 2144, 2022, 2144, 2145,
1013      2022, 2022, 2022, 2145, 2022, 2022, 2146, 2022, 2146, 2147,
1014      2022, 2022, 2022, 2022, 2022, 2147, 2022, 2022, 2147, 2022,
1015      2148, 2022, 2148, 2022, 2149, 2149, 2149, 2022, 2150, 2022,
1016      2150, 2022, 2022, 2022, 2151, 2151, 2151, 2022, 2152, 2022,
1017      2152, 2153, 2022, 2154, 2022, 2154, 2155, 2022, 2022, 2022,
1018      2155, 2155, 2155, 2155, 2022, 2156, 2022, 2156, 2022, 2022,
1019      2022, 2157, 2022, 2158, 2022, 2158, 2159, 2159, 2022, 2022,
1020
1021      2022, 2022, 2022, 2022, 2022, 2022, 2159, 2159, 2159, 2159,
1022      2022, 2160, 2022, 2160, 2022, 2022, 2022, 2022, 2161, 2022,
1023      2161, 2162, 2022, 2022, 2022, 2162, 2162, 2162, 2022, 2163,
1024      2022, 2163, 2164, 2022, 2022, 2022, 2022, 2164, 2022, 2022,
1025      2165, 2022, 2165, 2166, 2022, 2022, 2166, 2022, 2022, 2022,
1026      2167, 2022, 2167, 2022, 2022, 2022, 2022, 2168, 2022, 2168,
1027      2169, 2169, 2169, 2169, 2022, 2170, 2022, 2170, 2022, 2171,
1028      2022, 2172, 2022, 2172, 2173, 2174, 2022, 2022, 2022, 2022,
1029      2022, 2175, 2175, 2176, 2022, 2022, 2022, 2022, 2022, 2022,
1030      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1031
1032      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1033      2022, 2022, 2177, 2022, 2022, 2178, 2022, 2179, 2180, 2022,
1034      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2180, 2181, 2022,
1035      2182, 2022, 2022, 2182, 2183, 2184, 2184, 2184, 2185, 2186,
1036      2187, 2188, 2188, 2188, 2188, 2188, 2189, 2190, 2191, 2192,
1037      2192, 2022, 2022, 2022, 2192, 2192, 2192, 2192, 2193, 2194,
1038      2195, 2195, 2195, 2195, 2196, 2197, 2022, 2022, 2022, 2022,
1039      2022, 2022, 2197, 2022, 2198, 2199, 2022, 2022, 2022, 2199,
1040      2022, 2022, 2022, 2200, 2201, 2202, 2022, 2022, 2202, 2202,
1041      2203, 2022, 2204, 2205, 2206, 2207, 2207, 2022, 2207, 2022,
1042
1043      2022, 2022, 2208, 2208, 2209, 2022, 2022, 2022, 2022, 2022,
1044      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1045      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1046      2022, 2022, 2022, 2210, 2022, 2022, 2022, 2211, 2022, 2212,
1047      2213, 2022, 2022, 2022, 2213, 2214, 2022, 2215, 2022, 2022,
1048      2022, 2022, 2022, 2216, 2217, 2217, 2217, 2022, 2022, 2218,
1049      2219, 2220, 2220, 2220, 2022, 2022, 2022, 2022, 2220, 2221,
1050      2022, 2022, 2222, 2022, 2022, 2223, 2022, 2022, 2223, 2223,
1051      2223, 2224, 2225, 2226, 2226, 2226, 2022, 2022, 2226, 2227,
1052      2228, 2228, 2022, 2229, 2230, 2230, 2231, 2232, 2233, 2022,
1053
1054      2022, 2022, 2233, 2233, 2234, 2022, 2022, 2022, 2235, 2236,
1055      2237, 2237, 2022, 2022, 2238, 2238, 2238, 2239, 2022, 2022,
1056      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1057      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1058      2022, 2240, 2241, 2022, 2242, 2243, 2243, 2244, 2245, 2022,
1059      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1060      2246, 2022, 2022, 2247, 2022, 2022, 2022, 2022, 2248, 2249,
1061      2249, 2249, 2022, 2022, 2022, 2022, 2022, 2022, 2249, 2022,
1062      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1063      2022, 2022, 2022, 2022, 2022, 2022, 2223, 2022, 2022, 2224,
1064
1065      2225, 2226, 2226, 2226, 2022, 2022, 2022, 2226, 2022, 2022,
1066      2022, 2022, 2228, 2022, 2229, 2022, 2022, 2230, 2231, 2232,
1067      2233, 2233, 2233, 2234, 2022, 2022, 2022, 2022, 2235, 2236,
1068      2237, 2237, 2022, 2022, 2022, 2238, 2238, 2239, 2022, 2022,
1069      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1070      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2240, 2241, 2022,
1071      2022, 2022, 2243, 2243, 2244, 2022, 2022, 2022, 2022, 2022,
1072      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2246, 2022, 2022,
1073      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2248,
1074      2249, 2249, 2249, 2022, 2022, 2249, 2022, 2022, 2022, 2022,
1075
1076      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2224, 2225, 2226,
1077      2022, 2022, 2226, 2226, 2022, 2022, 2226, 2022, 2022, 2022,
1078      2228, 2022, 2229, 2022, 2022, 2022, 2230, 2022, 2022, 2232,
1079      2233, 2233, 2233, 2234, 2022, 2235, 2236, 2237, 2237, 2022,
1080      2022, 2022, 2022, 2238, 2238, 2239, 2022, 2022, 2022, 2022,
1081      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1082      2022, 2240, 2241, 2022, 2243, 2243, 2022, 2022, 2022, 2022,
1083      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1084      2022, 2246, 2022, 2022, 2022, 2248, 2249, 2249, 2249, 2022,
1085      2022, 2022, 2022, 2249, 2022, 2022, 2022, 2224, 2022, 2022,
1086
1087      2226, 2022, 2022, 2022, 2226, 2226, 2022, 2022, 2022, 2022,
1088      2226, 2022, 2022, 2022, 2022, 2228, 2022, 2229, 2022, 2022,
1089      2022, 2022, 2230, 2232, 2022, 2022, 2233, 2233, 2234, 2022,
1090      2235, 2236, 2237, 2237, 2022, 2238, 2238, 2239, 2022, 2022,
1091      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2241, 2022, 2022,
1092      2243, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1093      2022, 2246, 2022, 2022, 2249, 2249, 2249, 2022, 2022, 2022,
1094      2022, 2249, 2022, 2022, 2022, 2022, 2226, 2226, 2226, 2022,
1095      2022, 2022, 2022, 2226, 2022, 2022, 2022, 2022, 2022, 2022,
1096      2022, 2022, 2022, 2229, 2022, 2022, 2022, 2022, 2022, 2022,
1097
1098      2230, 2232, 2022, 2022, 2022, 2022, 2022, 2233, 2022, 2022,
1099      2022, 2235, 2236, 2237, 2237, 2022, 2022, 2238, 2022, 2022,
1100      2022, 2022, 2022, 2022, 2241, 2022, 2022, 2022, 2243, 2022,
1101      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2246,
1102      2249, 2249, 2249, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1103      2226, 2226, 2226, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1104      2022, 2022, 2022, 2022, 2022, 2022, 2229, 2022, 2022, 2022,
1105      2022, 2022, 2022, 2230, 2230, 2022, 2022, 2022, 2022, 2022,
1106      2022, 2022, 2022, 2022, 2236, 2237, 2237, 2022, 2022, 2022,
1107      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1108
1109      2022, 2022, 2243, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1110      2022, 2022, 2022, 2246, 2249, 2249, 2249, 2022, 2022, 2022,
1111      2226, 2226, 2226, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1112      2022, 2022, 2022, 2022, 2022, 2022, 2229, 2022, 2022, 2022,
1113      2022, 2022, 2022, 2230, 2230, 2022, 2022, 2022, 2236, 2237,
1114      2237, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1115      2022, 2022, 2022, 2022, 2022, 2243, 2022, 2022, 2022, 2022,
1116      2022, 2022, 2022, 2022, 2246, 2022, 2022, 2249, 2249, 2249,
1117      2226, 2022, 2022, 2226, 2022, 2022, 2022, 2022, 2022, 2022,
1118      2022, 2022, 2022, 2022, 2229, 2022, 2022, 2022, 2022, 2022,
1119
1120      2022, 2230, 2230, 2236, 2237, 2237, 2237, 2022, 2022, 2022,
1121      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1122      2022, 2022, 2022, 2246, 2022, 2022, 2022, 2249, 2249, 2249,
1123      2249, 2226, 2022, 2022, 2022, 2226, 2022, 2022, 2022, 2022,
1124      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1125      2022, 2022, 2022, 2022, 2022, 2022, 2230, 2022, 2022, 2230,
1126      2236, 2237, 2237, 2237, 2250, 2251, 2022, 2022, 2022, 2022,
1127      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1128      2022, 2246, 2249, 2249, 2249, 2249, 2022, 2022, 2022, 2022,
1129      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1130
1131      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2230, 2022, 2022,
1132      2022, 2230, 2236, 2237, 2252, 2253, 2250, 2251, 2022, 2022,
1133      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1134      2249, 2249, 2249, 2249, 2022, 2022, 2022, 2022, 2022, 2022,
1135      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1136      2022, 2022, 2230, 2230, 2236, 2252, 2237, 2254, 2253, 2255,
1137      2237, 2022, 2022, 2022, 2022, 2022, 2022, 2249, 2249, 2249,
1138      2249, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1139      2022, 2022, 2022, 2230, 2230, 2236, 2254, 2022, 2255, 2237,
1140      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2249, 2022,
1141
1142      2022, 2022, 2022, 2022, 2022, 2230, 2230, 2236, 2022, 2022,
1143      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1144      2249, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2230, 2230,
1145      2236, 2022, 2249, 2022, 2022, 2022, 2022, 2230, 2230, 2236,
1146      2249, 2022, 2022, 2022, 2022, 2230, 2230, 2236, 2249, 2022,
1147      2022, 2022, 2022, 2230, 2230, 2236, 2022, 2022, 2022, 2022,
1148      2022, 2022, 2230, 2230, 2236, 2022, 2022, 2022, 2022, 2022,
1149      2230, 2230, 2236, 2230, 2230, 2236, 2230, 2230, 2236, 2236,
1150      2230, 2230, 2236, 2236, 2230, 2230, 2236, 2236, 2230, 2230,
1151      2236, 2236, 2022, 2022, 2022, 2022, 2236, 2236, 2022, 2022,
1152
1153      2022, 2022, 2022, 2022, 2236, 2236, 2236, 2236, 2236, 2236,
1154      2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236,
1155      2022,    0, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1156      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1157      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1158      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1159      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1160      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1161      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1162      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1163
1164      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1165      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1166      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1167      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1168      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1169      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1170      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1171      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1172      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1173      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1174
1175      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1176      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1177      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1178      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1179      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1180      2022, 2022, 2022, 2022, 2022
1181     } ;
1182
1183 static yyconst flex_int16_t yy_nxt[7164] =
1184     {   0,
1185      2022,  146,  147,  146,  146,  147,  146,  146,  147,  146,
1186       146,  147,  146,  151,  147,  151,  157,  148,  154,  157,
1187       148,  154,  450,  149, 2022,  155,  149, 2022,  155,  152,
1188       151,  147,  151,  388,  158,  160,  161,  158,  160,  161,
1189       162,  163, 2022,  162,  163,  388,  152,  167,  168,  389,
1190       164,  160,  161,  164,  165,  391,  162,  160,  161,  561,
1191       165,  390,  162,  167,  168,  562,  164,  147,  147,  147,
1192       451,  390,  164,  147,  147,  147,  180,  147,  180,  180,
1193       147,  180,  472,  170,  180,  147,  180,  510,  169,  170,
1194       451,  473,  181,  561,  511,  181,  387,  387,  387,  575,
1195
1196       182,  387,  387,  387,  169,  171,  172,  147,  172,  171,
1197       171,  171,  171,  171,  171,  171,  173,  171,  171,  171,
1198      1485,  171,  175,  171,  176,  171,  180,  147,  180,  147,
1199       147,  147,  503,  147,  147,  147,  180,  147,  180,  180,
1200       147,  180,  182,  504,  561,  183,  391,  171,  171,  183,
1201       600,  489,  181,  391,  490,  181,  387,  387,  387,  387,
1202       387,  387,  390,  387,  387,  387,  387,  387,  387,  390,
1203       177, 2022,  178,  171,  172,  147,  172,  171,  171,  171,
1204       171,  171,  171,  171,  173,  171,  171,  171,  477,  171,
1205       175,  171,  176,  171,  147,  147,  147,  147,  147,  147,
1206
1207       682,  180,  147,  180,  180,  147,  180,  180,  147,  180,
1208       184,  563,  391,  184,  391,  171,  171,  182,  391,  425,
1209       182,  426, 1110,  185,  564,  180,  147,  180,  390,  427,
1210       390,  387,  387,  387,  390,  425,  451,  428,  177,  429,
1211       178,  185,  186,  187,  147,  187,  186,  186,  186,  186,
1212       186,  186,  186,  188,  186,  186,  186,  485,  186,  190,
1213       186,  191,  186,  194,  147,  194,  194,  147,  194,  402,
1214       218,  147,  218,  160,  161,  160,  161,  486,  162,  195,
1215       162, 1270,  195,  446,  186,  186,  219,  447,  205, 1271,
1216       205,  448,  192,  186,  187,  147,  187,  186,  186,  186,
1217
1218       186,  186,  186,  186,  188,  186,  186,  186,  892,  186,
1219       190,  186,  191,  186,  206, 2022,  206,  218,  147,  218,
1220       893,  147,  147,  147,  147,  147,  147,  387,  387,  387,
1221       387,  387,  387,  219,  682,  186,  186,  220,  875,  544,
1222       220,  513,  545,  192,  196,  197,  147,  197,  196,  196,
1223       196,  196,  196,  196,  196,  198,  196,  196,  196,  512,
1224       196,  200,  196,  201,  196,  218,  147,  218,  218,  147,
1225       218,  505,  218,  147,  218,  218,  147,  218,  387,  387,
1226       387,  219,  391,  439,  219,  512,  196,  196,  221,  433,
1227       440,  221, 1412, 1413,  202, 1414, 1415,  203,  390,  390,
1228
1229       387,  387,  387,  204,  196,  197,  147,  197,  196,  196,
1230       196,  196,  196,  196,  196,  198,  196,  196,  196,  451,
1231       196,  200,  196,  201,  196,  232,  147,  232,  232,  147,
1232       232,  906,  245,  147,  245,  245,  147,  245,  538,  391,
1233       391,  233, 1275,  893,  233,  391,  196,  196,  246,  571,
1234      1276,  246,  457,  539,  202,  390,  390,  203,  387,  387,
1235       387,  390,  572,  204,  207,  208,  147,  208,  207,  207,
1236       207,  207,  207,  207,  207,  209,  207,  207,  207,  906,
1237       207,  211,  207,  212,  207,  147,  147,  147,  147,  147,
1238       147,  930,  147,  147,  147,  147,  147,  147,  257,  147,
1239
1240       257,  254,  391,  391,  254, 1488,  207,  207,  255,  464,
1241       520,  255,  563, 1495,  258,  213, 1498,  214,  390,  390,
1242       215,  387,  387,  387, 2022,  576,  216,  207,  208,  147,
1243       208,  207,  207,  207,  207,  207,  207,  207,  209,  207,
1244       207,  207,  538,  207,  211,  207,  212,  207,  257,  147,
1245       257,  271,  147,  271,  512,  271,  147,  271,  147,  147,
1246       147,  147,  147,  147,  258,  411,  391,  272,  413,  207,
1247       207,  272,  391, 1116,  220,  587, 1508,  220,  213, 1117,
1248       214, 1521,  390,  215,  387,  387,  387,  998,  390,  216,
1249       222,  223,  147,  223,  222,  222,  222,  222,  222,  222,
1250
1251       222,  224,  222,  222,  222, 1522,  222,  226,  222,  227,
1252       222,  271,  147,  271,  271,  147,  271, 1232,  271,  147,
1253       271,  271,  147,  271,  283,  147,  283,  272, 1523,  797,
1254       272,  998,  222,  222,  273,  391,  391,  273,  798,  228,
1255       284,  387,  387,  387,  229,  387,  387,  387,  387,  387,
1256       387,  390,  390,  230,  222,  223,  147,  223,  222,  222,
1257       222,  222,  222,  222,  222,  224,  222,  222,  222, 1231,
1258       222,  226,  222,  227,  222,  283,  147,  283,  298,  147,
1259       298, 1524,  298,  147,  298,  308,  147,  308,  308,  147,
1260       308,  284, 1419, 1420,  299, 1390,  222,  222,  299,  391,
1261
1262       391,  309, 1391,  228,  309,  387,  387,  387,  229,  387,
1263       387,  387,  387,  387,  387,  390,  390,  230,  234,  235,
1264       147,  235,  234,  234,  234,  234,  234,  234,  234,  236,
1265       234,  234,  234, 1525,  234,  238,  234,  239,  234,  321,
1266       147,  321,  321,  147,  321,  682,  147,  147,  147,  147,
1267       147,  147,  321,  147,  321,  322,  391,  571,  322, 1529,
1268       234,  234,  220,  482,  995,  220,  998,  998,  322, 1392,
1269       578,  240,  390,  387,  387,  387, 1393,  241, 1530,  242,
1270       243,  234,  235,  147,  235,  234,  234,  234,  234,  234,
1271       234,  234,  236,  234,  234,  234, 1514,  234,  238,  234,
1272
1273       239,  234,  321,  147,  321,  321,  147,  321, 1339,  321,
1274       147,  321,  147,  147,  147,  147,  147,  147,  322, 1421,
1275      1422,  323,  391,  234,  234,  323,  682,  682,  333,  493,
1276      1531,  333, 1407, 1337,  240,  387,  387,  387,  390, 1408,
1277       241,  684,  242,  243,  247,  248,  147,  248,  247,  247,
1278       247,  247,  247,  247,  247,  249,  247,  247,  247,  998,
1279       247,  251,  247,  252,  247,  147,  147,  147,  147,  147,
1280       147, 1532,  335,  147,  335,  335,  147,  335,  335,  147,
1281       335,  333, 1533, 1409,  333,  391,  247,  247,  336,  391,
1282      1410,  336,  497, 1515,  337,  387,  387,  387,  387,  387,
1283
1284       387,  390,  387,  387,  387,  390,  253,  247,  248,  147,
1285       248,  247,  247,  247,  247,  247,  247,  247,  249,  247,
1286       247,  247, 1534,  247,  251,  247,  252,  247,  335,  147,
1287       335,  349,  147,  349, 1535,  349,  147,  349,  147,  147,
1288       147,  147,  147,  147,  337, 1536,  998,  350, 1537,  247,
1289       247,  350,  391, 1486,  333, 1487, 1538,  333,  387,  387,
1290       387,  387,  387,  387,  387,  387,  387, 1539,  390,  253,
1291       259,  260,  147,  260,  259,  259,  259,  259,  259,  259,
1292       259,  261,  259,  259,  259, 1433,  259,  263,  259,  264,
1293       259,  349,  147,  349,  349,  147,  349, 1541,  349,  147,
1294
1295       349,  349,  147,  349,  360,  147,  360,  350,  391,  391,
1296       350,  391,  259,  259,  351,  265,  524,  351, 1542, 1489,
1297       361, 1490, 1543,  266,  390,  390,  267,  390,  998,  268,
1298      1544, 1545,  269,  259,  260,  147,  260,  259,  259,  259,
1299       259,  259,  259,  259,  261,  259,  259,  259, 1551,  259,
1300       263,  259,  264,  259,  360,  147,  360,  373,  147,  373,
1301      1552,  373,  147,  373,  147,  147,  147,  147,  147,  147,
1302       361, 1434,  391,  374, 1553,  259,  259,  374,  265,  536,
1303       375, 1150, 1496,  375, 1497, 1554,  266, 1151,  390,  267,
1304      1152, 1499,  268, 1500, 1153,  269,  274,  275,  147,  275,
1305
1306       274,  274,  274,  274,  274,  274,  274,  276,  274,  274,
1307       274,  531,  274,  278,  274,  279,  274,  373,  147,  373,
1308       373,  147,  373, 1555,  373,  147,  373,  373,  147,  373,
1309       385,  147,  385,  374, 1558, 1154,  374, 1559,  274,  274,
1310       376, 1155, 1560,  376, 1156,  532,  386,  396, 1157,  280,
1311       387,  387,  387,  387,  387,  387,  387,  387,  387,  451,
1312      1561,  281,  274,  275,  147,  275,  274,  274,  274,  274,
1313       274,  274,  274,  276,  274,  274,  274, 1562,  274,  278,
1314       274,  279,  274,  385,  147,  385,  397,  387,  387,  387,
1315      1563, 1568,  398,  387,  387,  387,  399, 1569, 1570,  386,
1316
1317      1571,  400, 1572, 1573,  274,  274,  387,  387,  387,  387,
1318       387,  387,  387,  387,  387,  280,  387,  387,  387,  542,
1319       542,  542, 1593,  686,  896,  896,  896,  281,  285,  286,
1320       147,  286,  285,  285,  285,  285,  285,  285,  285,  287,
1321       285,  285,  285,  288,  285,  289,  285,  290,  285,  288,
1322       288,  288,  288,  288,  288,  288,  288,  288,  288,  288,
1323       288,  288,  288,  288,  288,  288,  288,  288,  288,  288,
1324       285,  285,  288,  288,  291,  288,  288,  288,  288,  288,
1325       288,  292,  288,  293,  288,  288,  288,  294,  288,  295,
1326       296,  288,  288,  288,  288,  288,  288,  300,  301,  147,
1327
1328       301,  300,  300,  300,  300,  300,  300,  300,  302,  300,
1329       300,  300,  682,  300,  304,  300,  305,  300,  542,  542,
1330       542,  584,  584,  584,  592,  592,  592,  606,  606,  606,
1331       617,  617,  617,  904,  904,  904, 1594, 1595,  585,  300,
1332       300,  593, 1596, 1603,  607, 1604, 1605,  618, 1585,  998,
1333       306,  300,  301,  147,  301,  300,  300,  300,  300,  300,
1334       300,  300,  302,  300,  300,  300,  998,  300,  304,  300,
1335       305,  300, 1606,  543,  625,  625,  625, 1338,  631,  631,
1336       631,  633,  633,  633,  642,  642,  642, 1009, 1009, 1009,
1337      1599,  626, 1607,  300,  300,  632, 1608, 1609,  634, 1610,
1338
1339      1586,  643, 1600,  998,  306,  310,  311,  147,  311,  310,
1340       310,  310,  310,  310,  310,  310,  312,  310,  310,  310,
1341      1611,  310,  314,  310,  315,  310,  647,  647,  647,  667,
1342       667,  667,  696,  696,  696,  696,  696,  696,  726,  726,
1343       726,  682, 1587,  648, 1612, 1613,  668,  310,  310, 1615,
1344       698,  316, 1616,  698, 1617, 1621,  728, 1230,  317, 1622,
1345       318, 1015, 1015, 1015,  896,  896,  896,  319,  310,  311,
1346       147,  311,  310,  310,  310,  310,  310,  310,  310,  312,
1347       310,  310,  310, 1623,  310,  314,  310,  315,  310,  699,
1348       726,  726,  726, 1627, 1601,  584,  584,  584,  731,  731,
1349
1350       731, 1628,  732, 1629, 1630,  733, 1602, 1631,  728, 1632,
1351       310,  310,  585, 1638,  316,  741,  741,  741, 1639,  742,
1352      1640,  317,  743,  318, 1021, 1021, 1021,  904,  904,  904,
1353       319,  324,  325,  147,  325,  324,  324,  324,  324,  324,
1354       324,  324,  326,  324,  324,  324,  729,  324,  328,  324,
1355       329,  324,  736,  736,  736, 1641, 1642,  736,  736,  736,
1356       592,  592,  592,  744,  744,  744,  747,  747,  747, 1643,
1357       738,  998, 1656,  324,  324,  738,  330,  593,  998,  331,
1358       745, 1633, 1635,  748,  762,  762,  762, 1658,  763, 1634,
1359      1636,  764,  682,  332,  324,  325,  147,  325,  324,  324,
1360
1361       324,  324,  324,  324,  324,  326,  324,  324,  324, 1650,
1362       324,  328,  324,  329,  324, 1662, 1651,  739, 1649, 1663,
1363       750,  750,  750,  758,  758,  758, 1664, 1665,  750,  750,
1364       750,  758,  758,  758, 1666, 1667,  324,  324,  752,  330,
1365      1668,  760,  331,  778,  778,  778,  752,  779, 1669,  760,
1366       780, 1047, 1047, 1047, 1670, 1671,  332,  338,  339,  147,
1367       339,  338,  338,  338,  338,  338,  338,  338,  340,  338,
1368       338,  338,  753,  338,  342,  338,  343,  338,  606,  606,
1369       606, 1672, 1673,  768,  768,  768,  773,  773,  773, 1674,
1370      1679,  761,  617,  617,  617,  607,  768,  768,  768,  338,
1371
1372       338,  770,  344, 1680,  775,  345, 1009, 1009, 1009,  618,
1373       346,  789,  789,  789,  770,  790, 1681, 1684,  791,  347,
1374       338,  339,  147,  339,  338,  338,  338,  338,  338,  338,
1375       338,  340,  338,  338,  338, 1685,  338,  342,  338,  343,
1376       338,  773,  773,  773,  771, 1686,  785,  785,  785,  785,
1377       785,  785,  625,  625,  625, 1687,  793,  793,  793,  775,
1378      1688, 1689,  338,  338,  787,  344, 1690,  787,  345,  626,
1379      1011, 1011, 1011,  346,  795, 1015, 1015, 1015, 1021, 1021,
1380      1021, 1691,  347,  352,  353,  147,  353,  352,  352,  352,
1381       352,  352,  352,  352,  354,  352,  352,  352,  776,  352,
1382
1383       356,  352,  357,  352, 1692, 1693,  788, 1694, 1696,  793,
1384       793,  793,  631,  631,  631,  799,  799,  799, 1697,  800,
1385      1698, 1699,  801, 1700, 1701,  352,  352,  795, 1708,  632,
1386      1022, 1022, 1022, 1047, 1047, 1047,  358,  352,  353,  147,
1387       353,  352,  352,  352,  352,  352,  352,  352,  354,  352,
1388       352,  352,  998,  352,  356,  352,  357,  352,  633,  633,
1389       633,  802,  802,  802, 1709,  803, 1710, 1711,  804,  796,
1390       805,  805,  805, 1712, 1713,  634, 1246, 1246, 1246,  352,
1391       352,  815,  815,  815, 1705,  816, 1716,  806,  817, 1717,
1392       358,  362,  363,  147,  363,  362,  362,  362,  362,  362,
1393
1394       362,  362,  364,  362,  362,  362, 1718,  362,  366,  362,
1395       367,  362,  811,  811,  811,  642,  642,  642,  818,  818,
1396       818,  811,  811,  811,  818,  818,  818,  647,  647,  647,
1397       813, 1719,  643,  362,  362,  682,  820, 1720, 1721,  813,
1398      1722,  368,  820,  369,  648,  370, 1127, 1127, 1127, 1248,
1399      1248, 1248, 1723,  371,  362,  363,  147,  363,  362,  362,
1400       362,  362,  362,  362,  362,  364,  362,  362,  362, 1728,
1401       362,  366,  362,  367,  362,  814,  823,  823,  823, 1704,
1402       824,  821, 1731,  825,  829,  829,  829,  829,  829,  829,
1403       834,  834,  834,  836,  836,  836,  362,  362,  845,  845,
1404
1405       845, 1732,  831, 1736,  368,  831,  369,  835,  370, 1737,
1406       837, 1130, 1130, 1130, 1738,  846,  371,  377,  378,  147,
1407       378,  377,  377,  377,  377,  377,  377,  377,  379,  377,
1408       377,  377, 1739,  377,  381,  377,  382,  377, 1740,  832,
1409       840,  840,  840, 1741,  848,  848,  848,  840,  840,  840,
1410       850,  850,  850,  850,  850,  850, 1729, 1730,  842,  377,
1411       377,  849,  667,  667,  667,  842, 1742, 1743,  852, 1744,
1412      1745,  852, 1746,  854,  854,  854, 1749,  855, 1750,  668,
1413       856, 1751,  383,  377,  378,  147,  378,  377,  377,  377,
1414       377,  377,  377,  377,  379,  377,  377,  377, 1752,  377,
1415
1416       381,  377,  382,  377,  843,  857,  857,  857, 1753, 1754,
1417       853,  857,  857,  857,  865,  865,  865,  865,  865,  865,
1418       871,  871,  871,  859, 1769,  377,  377,  682, 1770,  859,
1419      1771, 1772,  867, 1776, 1777,  867, 1778, 1779,  873,  871,
1420       871,  871,  696,  696,  696,  911,  911,  911,  383,  391,
1421       696,  696,  696, 1011, 1011, 1011,  407,  873, 1761, 1780,
1422       698, 1781,  912,  860, 1783,  390, 1784, 1012,  698,  696,
1423       696,  696, 1785,  726,  726,  726, 1786,  868,  726,  726,
1424       726, 1791, 1792,  726,  726,  726, 1793,  698, 1794, 1795,
1425       408,  728,  409, 1796, 1797,  410,  728,  411,  412,  874,
1426
1427       413,  728, 1798, 1799,  414, 1800,  415,  416,  417,  391,
1428       914,  914,  914,  884, 1801, 1802,  407,  731,  731,  731,
1429      1803,  732, 1804,  682,  733,  390, 1819,  915, 1820,  913,
1430      2022, 2022, 2022,  736,  736,  736,  736,  736,  736, 1821,
1431      1822,  736,  736,  736,  744,  744,  744, 2022, 1823, 1824,
1432       408,  738,  418, 1825,  738,  419, 1826,  420,  412,  738,
1433       421,  745, 1813, 1827,  414, 1828,  422,  423,  424,  741,
1434       741,  741, 1831,  742, 1832, 1833,  743,  920,  920,  920,
1435      1834,  921, 1841, 1842,  922,  918, 1843,  916,  923,  923,
1436       923,  747,  747,  747,  925,  925,  925, 1844,  926, 1845,
1437
1438      1846,  927,  750,  750,  750,  924, 1847, 1848,  748,  750,
1439       750,  750,  750,  750,  750,  932,  932,  932, 1849, 1850,
1440       752,  758,  758,  758,  758,  758,  758,  752, 1851, 1852,
1441       752, 1862,  933,  758,  758,  758,  762,  762,  762,  760,
1442       763, 1863,  760,  764,  768,  768,  768,  768,  768,  768,
1443      1864,  760,  768,  768,  768,  773,  773,  773,  773,  773,
1444       773, 1857,  770, 1857,  682,  770, 1865, 1866,  929, 1867,
1445       770, 1868, 1869,  775, 1860, 1858,  775,  935,  773,  773,
1446       773,  778,  778,  778, 1870,  779, 1871, 1876,  780,  785,
1447       785,  785,  785,  785,  785, 1877,  775,  785,  785,  785,
1448
1449      1878,  789,  789,  789, 1879,  790, 1855,  787,  791, 1880,
1450       787,  793,  793,  793,  939,  787,  793,  793,  793,  793,
1451       793,  793, 1881,  799,  799,  799, 1882,  800, 1883,  795,
1452       801,  805,  805,  805,  795, 1888, 1872,  795,  941,  802,
1453       802,  802,  682,  803, 1874, 1888,  804, 1873,  806,  952,
1454       952,  952, 1891,  953, 1892, 1875,  954, 1857,  947,  811,
1455       811,  811,  811,  811,  811,  811,  811,  811,  815,  815,
1456       815, 1858,  816,  998,  999,  817,  949,  813, 1902, 1886,
1457       813, 1903, 1904,  813,  818,  818,  818,  818,  818,  818,
1458       818,  818,  818,  823,  823,  823, 1857,  824, 1905, 1888,
1459
1460       825, 1909,  820, 1888, 1910,  820, 1911, 1860,  820,  829,
1461       829,  829,  829,  829,  829,  829,  829,  829,  834,  834,
1462       834, 1921,  967,  967,  967, 1925,  968,  831,  959,  969,
1463       831, 1926, 1927,  831, 1928,  835, 1932,  836,  836,  836,
1464       970,  970,  970, 1933,  971, 1934, 1935,  972,  840,  840,
1465       840, 1936, 1937,  960,  837,  840,  840,  840,  840,  840,
1466       840,  845,  845,  845, 1941,  682,  842, 1942,  977,  977,
1467       977,  965,  978,  842, 1943,  979,  842, 1944,  846,  848,
1468       848,  848,  981,  981,  981, 1945,  982, 1940,  682,  983,
1469       850,  850,  850,  850,  850,  850,  849,  850,  850,  850,
1470
1471       854,  854,  854, 1949,  855, 1950, 1948,  856,  852, 1951,
1472      1952,  852,  857,  857,  857,  852,  857,  857,  857, 1953,
1473       682,  975,  857,  857,  857,  987,  987,  987, 1959, 1960,
1474       859,  865,  865,  865,  859,  865,  865,  865, 1961, 1956,
1475       859, 1962,  988,  865,  865,  865,  871,  871,  871,  867,
1476       871,  871,  871,  867,  871,  871,  871,  997,  997,  997,
1477       984,  867, 1969, 1970,  873,  696,  696,  696,  873,  911,
1478       911,  911,  873, 1484,  682,  998,  999,  682,  985, 1022,
1479      1022, 1022,  682,  698,  682,  682,  912, 1031, 1031, 1031,
1480      1965, 1032,  682, 1012, 1033,  726,  726,  726, 1973,  682,
1481
1482       991,  914,  914,  914,  994, 1035, 1035, 1035,  682, 1036,
1483       682, 1987, 1037,  728,  736,  736,  736, 1983,  915,  920,
1484       920,  920,  682,  921, 1997, 1984,  922, 1005,  923,  923,
1485       923, 1483,  738, 1042, 1042, 1042, 1991, 1043,  682, 1482,
1486      1044,  750,  750,  750, 1988,  924,  925,  925,  925, 1034,
1487       926, 1481, 2015,  927,  932,  932,  932,  682,  682,  752,
1488      1040, 1049, 1049, 1049, 2005, 1050,  682,  682, 1051,  682,
1489      1998,  933, 1052, 1052, 1052,  758,  758,  758, 1058, 1058,
1490      1058,  773,  773,  773, 1065, 1065, 1065, 1480, 1046, 1053,
1491      1067, 1067, 1067,  760, 1992, 2009, 1059,  682, 2010,  775,
1492
1493      2006, 1066,  785,  785,  785, 2019,  682, 1068, 1071, 1071,
1494      1071, 2016,  793,  793,  793, 1074, 1074, 1074,  682,  682,
1495       787, 1054, 2022, 2022, 2022, 1072, 1077, 1077, 1077, 1061,
1496       795, 2007, 1075, 1069,  952,  952,  952,  682,  953, 2022,
1497      2008,  954, 1479, 1078, 2022, 2022, 2022, 2013, 2022, 2022,
1498      2022, 2022, 2022, 2022,  811,  811,  811,  818,  818,  818,
1499      2011, 2022, 2012, 1478, 1070, 2022, 2014, 1472, 2022,  682,
1500      1073,  682,  813, 1471,  682,  820, 1470, 1087, 1087, 1087,
1501       829,  829,  829, 1469, 1076,  682,  967,  967,  967, 2019,
1502       968, 1468, 1080,  969, 1088,  970,  970,  970,  831,  971,
1503
1504       682, 1467,  972, 2017, 1022, 1022, 1022,  840,  840,  840,
1505      1079,  987,  987,  987, 2018, 1082, 1466, 1081, 1093, 1083,
1506      1089, 1465,  977,  977,  977,  842,  978, 1461,  988,  979,
1507       981,  981,  981, 1090,  982, 1460, 1459,  983,  850,  850,
1508       850,  857,  857,  857, 1100, 1100, 1100, 1458, 1101, 1457,
1509      1456, 1102,  865,  865,  865, 1455,  852, 1454, 1453,  859,
1510      1107, 1107, 1107,  871,  871,  871,  997,  997,  997, 1094,
1511       867,  696,  696,  696, 1127, 1127, 1127, 1108, 1130, 1130,
1512      1130,  873, 1452, 1451,  998, 1127, 1127, 1127, 1128,  698,
1513      1448, 1445, 1131, 1444, 1098, 1136, 1136, 1136, 1105, 1128,
1514
1515      1097, 1138, 1138, 1138, 1138, 1138, 1138, 1443, 1442, 1131,
1516      1136, 1136, 1136, 1430, 1111, 1139, 1428, 1427, 1139, 1417,
1517      1118, 1031, 1031, 1031, 1141, 1032, 1109, 1411, 1033, 1406,
1518      1112,  726,  726,  726, 1129, 1035, 1035, 1035, 1405, 1036,
1519      1401, 1394, 1037, 1389, 1388, 1135, 1052, 1052, 1052,  728,
1520       736,  736,  736, 1042, 1042, 1042, 1387, 1043, 1381, 1380,
1521      1044, 1129, 1379, 1053, 1135,  750,  750,  750,  738, 1049,
1522      1049, 1049, 1378, 1050, 1377, 1376, 1051, 1158, 1158, 1158,
1523      1375, 1159, 1374,  752, 1160,  758,  758,  758, 1162, 1162,
1524      1162, 2022, 2022, 2022, 1142, 1165, 1165, 1165, 1145, 1058,
1525
1526      1058, 1058, 1373,  760, 1372, 1163, 1366, 1365, 2022, 1167,
1527      1167, 1167, 1166,  773,  773,  773, 1364, 1059, 1065, 1065,
1528      1065, 1363, 1148, 1173, 1173, 1173, 1168, 1174, 1361, 1359,
1529      1175,  775, 1355, 1161, 1354, 1066, 1067, 1067, 1067, 1176,
1530      1176, 1176, 1352, 1177, 1351, 1164, 1178, 1180, 1180, 1180,
1531      1071, 1071, 1071, 1068, 1182, 1182, 1182, 1169, 1183, 1347,
1532      1340, 1184, 1185, 1185, 1185, 1181, 1335, 1072, 1074, 1074,
1533      1074, 1187, 1187, 1187, 1333, 1188, 1332, 1331, 1189, 1322,
1534      1186, 1190, 1190, 1190, 1317, 1075, 1077, 1077, 1077, 1192,
1535      1192, 1192, 1316, 1193, 1315, 1314, 1194, 1310, 1191, 1195,
1536
1537      1195, 1195, 1296, 1078, 2022, 2022, 2022, 1198, 1198, 1198,
1538       811,  811,  811,  818,  818,  818, 1196, 1087, 1087, 1087,
1539      1295, 2022, 1294, 1293, 1199, 1205, 1205, 1205,  813, 1206,
1540      1292,  820, 1207, 1291, 1088, 1209, 1209, 1209, 1211, 1211,
1541      1211, 1277, 2022, 2022, 2022,  840,  840,  840, 1216, 1216,
1542      1216, 1274, 1273, 1210, 1272, 1212, 1269, 1268, 1197, 2022,
1543      1264, 1201, 1263,  842, 1260, 1217, 2022, 2022, 2022,  850,
1544       850,  850, 1200, 1259,  857,  857,  857, 1100, 1100, 1100,
1545      1257, 1101, 1256, 2022, 1102, 1255, 1254,  852, 1220,  865,
1546       865,  865,  859, 1215, 1107, 1107, 1107, 1226, 1226, 1226,
1547
1548      1251, 1227, 1213, 1250, 1228, 1249, 1247,  867, 1245, 1218,
1549      1244, 1108,  871,  871,  871, 1243, 1242, 1219, 1234, 1234,
1550      1234, 2022, 2022, 2022, 2022, 2022, 2022,  696,  696,  696,
1551       873, 1252, 1252, 1252, 1241, 1235, 1240, 1224, 2022, 1239,
1552      1233, 2022, 1253, 1253, 1253,  698, 1136, 1136, 1136, 1138,
1553      1138, 1138,  726,  726,  726, 1225, 1261, 1261, 1261,  750,
1554       750,  750, 1266, 1266, 1266, 1223, 1222, 1229, 1221, 1214,
1555       728, 1208, 1204, 1236, 1262, 1203, 1202,  752, 1179, 1267,
1556      1172, 1237, 1171, 1170, 1238, 1158, 1158, 1158, 1149, 1159,
1557      1147, 1146, 1160,  758,  758,  758, 1162, 1162, 1162, 1258,
1558
1559      1144, 1279, 1279, 1279, 1143, 1280, 1140, 1278, 1281, 1137,
1560      1134,  760, 1133, 1163, 1265, 1282, 1282, 1282, 1165, 1165,
1561      1165, 1284, 1284, 1284, 1132, 1285, 1126, 1125, 1286, 1167,
1562      1167, 1167, 1283, 1124, 1123, 1166, 1287, 1287, 1287, 1122,
1563      1288, 1121, 1120, 1289, 1119, 1115, 1168,  773,  773,  773,
1564      1173, 1173, 1173, 1114, 1174, 1113,  998, 1175, 1106, 1176,
1565      1176, 1176, 1104, 1177, 1103,  775, 1178, 1180, 1180, 1180,
1566      1182, 1182, 1182, 1099, 1183, 1096, 1095, 1184, 1185, 1185,
1567      1185, 1092, 1187, 1187, 1187, 1181, 1188, 1091, 1086, 1189,
1568      1190, 1190, 1190, 1290, 1085, 1084, 1186, 1297, 1297, 1297,
1569
1570      1064, 1298, 1063, 1062, 1299, 1060, 1057, 1191, 1192, 1192,
1571      1192, 1056, 1193, 1055, 1048, 1194, 1195, 1195, 1195, 1300,
1572      1300, 1300, 1045, 1301, 1041, 1039, 1302, 1303, 1303, 1303,
1573      1198, 1198, 1198, 1196, 1305, 1305, 1305, 1038, 1306, 1030,
1574      1029, 1307, 1028, 1027, 1304, 1026, 1025, 1199,  811,  811,
1575       811,  818,  818,  818, 1311, 1311, 1311, 1205, 1205, 1205,
1576      1024, 1206, 1023, 1020, 1207, 1019,  813, 1018, 1017,  820,
1577      1016, 1312, 1209, 1209, 1209, 1211, 1211, 1211, 1318, 1318,
1578      1318, 1014, 1319, 1013, 1010, 1320, 2022, 2022, 2022, 1008,
1579      1210, 1007, 1212, 1216, 1216, 1216, 1308, 1313,  840,  840,
1580
1581       840, 1006, 1004, 2022, 2022, 2022, 2022, 1328, 1328, 1328,
1582      1217, 1309, 1323, 1324, 1324, 1324,  842, 1325, 1003, 1002,
1583      1326, 2022,  857,  857,  857, 1329,  865,  865,  865, 1226,
1584      1226, 1226, 1001, 1227, 1000,  993, 1228,  992, 1321,  990,
1585       859,  871,  871,  871,  867, 1234, 1234, 1234, 1341, 1341,
1586      1341,  989, 1342,  986,  980, 1343, 2022, 2022, 2022,  873,
1587       976, 1327, 1235, 2022, 2022, 2022,  974,  973, 1330,  966,
1588       696,  696,  696, 2022, 1348, 1348, 1348, 1349, 1349, 1349,
1589      2022, 1350, 1350, 1350, 1353, 1353, 1353, 1334,  698, 1336,
1590      1246, 1246, 1246, 1248, 1248, 1248, 1356, 1356, 1356, 1357,
1591
1592      1357, 1357, 1252, 1252, 1252, 1253, 1253, 1253, 1358, 1358,
1593      1358,  964, 1344, 1360, 1360, 1360,  726,  726,  726, 1261,
1594      1261, 1261, 1367, 1367, 1367,  963, 1345, 1266, 1266, 1266,
1595      1346, 1369, 1369, 1369,  728, 1370,  962, 1262, 1371,  961,
1596      1368,  758,  758,  758, 1267, 1279, 1279, 1279,  958, 1280,
1597       957,  956, 1281, 1282, 1282, 1282, 1383, 1383, 1383,  760,
1598      1384,  955,  951, 1385, 1362, 1284, 1284, 1284,  950, 1285,
1599      1283,  948, 1286, 1287, 1287, 1287,  946, 1288,  945,  944,
1600      1289,  773,  773,  773, 1297, 1297, 1297, 1382, 1298,  943,
1601       942, 1299,  940, 1300, 1300, 1300,  938, 1301,  937,  775,
1602
1603      1302, 1303, 1303, 1303, 1395, 1395, 1395,  936, 1396,  934,
1604       931, 1397, 1305, 1305, 1305,  928, 1306,  919, 1304, 1307,
1605       811,  811,  811, 1399, 1399, 1399, 1311, 1311, 1311, 1402,
1606      1402, 1402, 1386, 1403,  917,  910, 1404,  909,  813,  908,
1607       907, 1400,  905, 1312, 1318, 1318, 1318,  903, 1319,  902,
1608       901, 1320, 2022, 2022, 2022,  840,  840,  840, 1324, 1324,
1609      1324,  900, 1325,  899,  898, 1326, 2022, 2022, 2022, 2022,
1610      1328, 1328, 1328,  842,  857,  857,  857, 1425, 1425, 1425,
1611      1398,  897,  895, 2022,  865,  865,  865,  894, 1329, 1432,
1612      1432, 1432,  859,  891, 1426,  871,  871,  871, 1416, 1435,
1613
1614      1435, 1435,  867,  890, 1341, 1341, 1341,  682, 1342,  889,
1615      1418, 1343,  888,  873, 2022, 2022, 2022, 2022, 2022, 2022,
1616       887,  886, 1423,  696,  696,  696, 1439, 1439, 1439,  885,
1617       883, 2022,  882,  881, 2022,  880, 1424, 1348, 1348, 1348,
1618       879,  698, 1349, 1349, 1349, 1429, 1350, 1350, 1350,  878,
1619       877, 1431, 1440, 1440, 1440, 1441, 1441, 1441, 1353, 1353,
1620      1353, 1356, 1356, 1356, 1357, 1357, 1357, 1436, 1358, 1358,
1621      1358, 1360, 1360, 1360, 1446, 1446, 1446,  876, 1438, 1437,
1622      1449, 1449, 1449, 1367, 1367, 1367, 1369, 1369, 1369,  682,
1623      1370,  870, 1447, 1371,  758,  758,  758, 1450, 1383, 1383,
1624
1625      1383, 1368, 1384,  869,  864, 1385, 1463, 1463, 1463, 1395,
1626      1395, 1395,  760, 1396,  863,  862, 1397, 1473, 1473, 1473,
1627      1399, 1399, 1399,  861, 1464, 1475, 1475, 1475,  847, 1402,
1628      1402, 1402,  844, 1403,  839, 1474, 1404,  838, 1400, 1491,
1629      1491, 1491, 1476, 1493, 1493, 1493,  840,  840,  840,  833,
1630       828, 1462, 2022, 2022, 2022,  827, 1492,  857,  857,  857,
1631      1425, 1425, 1425,  826,  842, 1506, 1506, 1506, 1477, 2022,
1632       822,  810, 1503, 1503, 1503,  859, 1504, 1426,  809, 1505,
1633       808,  807, 1507, 1509, 1509, 1509, 1511, 1511, 1511,  871,
1634       871,  871, 1432, 1432, 1432, 1501, 1435, 1435, 1435,  792,
1635
1636       784, 1510, 1516, 1516, 1516,  783,  782,  873,  781, 1494,
1637       682,  777,  772, 1502, 2022, 2022, 2022,  767,  766, 1517,
1638      1519, 1519, 1519, 1439, 1439, 1439, 1440, 1440, 1440,  765,
1639       757, 2022, 1441, 1441, 1441, 1446, 1446, 1446, 1520, 1449,
1640      1449, 1449, 1526, 1526, 1526,  756, 1527,  755,  754, 1528,
1641      1513, 1512,  749, 1447,  746,  740, 1450,  758,  758,  758,
1642       735,  734, 1518, 1463, 1463, 1463, 1546, 1546, 1546, 1473,
1643      1473, 1473, 1475, 1475, 1475,  760,  730,  725, 1548, 1548,
1644      1548, 1464, 1549, 1547,  724, 1550,  723, 1474,  722, 1476,
1645      1556, 1556, 1556, 1491, 1491, 1491, 1564, 1564, 1564,  721,
1646
1647      1565,  720,  719, 1566, 1493, 1493, 1493, 1557,  718,  717,
1648      1492,  716,  715, 1540,  840,  840,  840, 2022, 2022, 2022,
1649      1576, 1576, 1576, 1503, 1503, 1503,  714, 1504,  713,  712,
1650      1505,  711,  842,  710, 2022, 1506, 1506, 1506, 1577, 1578,
1651      1578, 1578,  709, 1579,  708,  707, 1580,  706, 1581, 1581,
1652      1581,  705, 1507, 1509, 1509, 1509, 1511, 1511, 1511, 1583,
1653      1583, 1583,  704,  703, 1574, 1582,  702,  701, 1567,  700,
1654       695, 1510, 1516, 1516, 1516,  694,  693, 1584, 1575, 1588,
1655      1588, 1588,  692, 1589,  691,  690, 1590,  689,  688, 1517,
1656      1591, 1591, 1591, 1519, 1519, 1519, 1597, 1597, 1597, 1526,
1657
1658      1526, 1526,  685, 1527,  683,  682, 1528, 1592,  758,  758,
1659       758, 1520,  680, 1598, 1546, 1546, 1546, 1618, 1618, 1618,
1660       678, 1619,  677,  676, 1620,  674,  760,  673, 1548, 1548,
1661      1548, 1547, 1549,  672,  671, 1550, 1556, 1556, 1556, 1624,
1662      1624, 1624,  670, 1625,  666,  664, 1626, 1564, 1564, 1564,
1663       663, 1565,  662, 1557, 1566,  840,  840,  840, 2022, 2022,
1664      2022, 2022, 2022, 2022, 1614, 1576, 1576, 1576,  661,  660,
1665      1578, 1578, 1578,  842, 1579, 2022,  658, 1580, 2022, 1581,
1666      1581, 1581,  657, 1577, 1646, 1646, 1646,  656, 1647,  655,
1667       654, 1648, 1583, 1583, 1583,  653, 1582, 1588, 1588, 1588,
1668
1669       651, 1589,  650,  649, 1590, 1591, 1591, 1591,  646,  645,
1670      1584, 1652, 1652, 1652,  641, 1653,  639, 1637, 1654, 1644,
1671       638, 1645, 1592, 1655, 1655, 1655, 1657, 1657, 1657, 1597,
1672      1597, 1597, 1659, 1659, 1659,  637, 1660,  636,  635, 1661,
1673       758,  758,  758, 1676, 1676, 1676, 1598, 1618, 1618, 1618,
1674       630, 1619,  629,  627, 1620, 1682, 1682, 1682,  760,  624,
1675      1677, 1624, 1624, 1624,  622, 1625,  621,  620, 1626,  840,
1676       840,  840, 1683, 2022, 2022, 2022, 2022, 2022, 2022, 1655,
1677      1655, 1655, 1706, 1706, 1706,  619, 1678,  842, 1675,  616,
1678      2022,  615,  613, 2022, 1646, 1646, 1646,  612, 1647, 1707,
1679
1680       998, 1648, 1652, 1652, 1652,  610, 1653,  609,  608, 1654,
1681      1657, 1657, 1657, 1659, 1659, 1659,  605, 1660,  603,  602,
1682      1661, 1695, 1703, 1714, 1714, 1714,  758,  758,  758, 1676,
1683      1676, 1676, 1725, 1725, 1725, 1702, 1726,  601,  599, 1727,
1684      1715, 1682, 1682, 1682,  760,  597, 1677, 1733, 1733, 1733,
1685       596, 1734,  595,  594, 1735, 1747, 1747, 1747, 1683, 1755,
1686      1755, 1755, 1758, 1758, 1758, 1762, 1762, 1762, 1706, 1706,
1687      1706,  591, 1724, 1748,  590,  589, 1756,  586,  583, 1759,
1688       582,  580, 1763,  998,  579, 1707,  998,  577, 1764, 1764,
1689      1764,  574, 1765,  573,  570, 1766, 1767, 1767, 1767, 1768,
1690
1691      1768, 1768, 1757,  569,  568, 1760,  998, 1714, 1714, 1714,
1692      1773, 1773, 1773,  567, 1774,  566,  565, 1775,  758,  758,
1693       758, 1725, 1725, 1725, 1715, 1726,  560,  559, 1727, 1787,
1694      1787, 1787,  558, 1733, 1733, 1733,  760, 1734,  557,  556,
1695      1735, 1789, 1789, 1789,  555,  554, 1788, 1747, 1747, 1747,
1696      1755, 1755, 1755, 1805, 1805, 1805,  552, 1806, 1790,  551,
1697      1807, 2022, 2022, 2022,  550, 1748,  549, 1756, 1758, 1758,
1698      1758,  548, 1809, 1809, 1809,  547, 1810,  546, 2022, 1811,
1699      1782, 2022, 2022, 2022,  541, 1759, 1762, 1762, 1762, 1814,
1700      1814, 1814,  538, 1815,  540,  535, 1816,  533, 2022, 1767,
1701
1702      1767, 1767,  531, 1763,  998, 2022,  530,  998,  529, 1764,
1703      1764, 1764,  528, 1765,  527,  525, 1766, 1768, 1768, 1768,
1704       523, 1773, 1773, 1773,  521, 1774, 1808,  998, 1775, 1835,
1705      1835, 1835,  520, 1836,  519,  518, 1837,  517, 1829, 1829,
1706      1829,  516, 1787, 1787, 1787,  514, 1812,  996,  996,  996,
1707       996,  996,  996,  996,  996,  996, 1830,  513,  996, 1788,
1708      1789, 1789, 1789,  996,  996,  996,  998,  996, 1838, 1838,
1709      1838,  509, 1839,  508,  506, 1840,  505, 1790, 1805, 1805,
1710      1805,  502, 1806,  501,  500, 1807, 2022, 2022, 2022,  996,
1711       996,  996,  996,  996,  996,  996,  996,  996,  996,  996,
1712
1713       498,  496,  996, 2022, 2022, 2022, 2022,  996,  996,  996,
1714       998,  996, 1809, 1809, 1809,  494, 1810,  492,  491, 1811,
1715       488, 2022, 1814, 1814, 1814,  487, 1815,  483,  481, 1816,
1716      1829, 1829, 1829,  996,  996, 1835, 1835, 1835, 1853, 1836,
1717       998,  480, 1837, 1838, 1838, 1838,  478, 1839, 1830,  477,
1718      1840,  476, 2022, 2022, 2022,  475, 1854,  996,  996,  996,
1719       996,  996, 1861,  996,  996,  996,  474,  471,  996, 2022,
1720      2022, 2022, 2022,  996,  996,  996,  998,  996, 1890, 1890,
1721      1890, 1893, 1893, 1893, 1912, 1912, 1912, 2022, 1913,  469,
1722       468, 1914,  420, 1895, 1895, 1895,  998,  999, 1894,  996,
1723
1724       996,  996,  996,  996,  996,  996,  996,  996,  996, 1861,
1725      1896,  467,  996,  465, 1884,  463,  462,  996,  996,  996,
1726       998,  996, 1897, 1897, 1897, 1900, 1900, 1900, 2022, 2022,
1727      2022,  461, 1885, 2022, 2022, 2022, 1908, 1908, 1908, 1898,
1728       460,  458, 1901,  996,  996, 2022, 1890, 1890, 1890,  456,
1729      2022, 1893, 1893, 1893,  682, 1895, 1895, 1895,  455, 1915,
1730      1915, 1915,  454, 1916,  998, 1899, 1917,  452, 1894, 1897,
1731      1897, 1897, 1896, 1918, 1918, 1918,  450, 1919,  449, 1906,
1732      1920, 1900, 1900, 1900, 1907,  445, 1898,  444, 1922, 1922,
1733      1922,  442, 1923,  441, 1111, 1924,  438,  437, 1901, 2022,
1734
1735      2022, 2022, 2022, 2022, 2022, 1908, 1908, 1908, 1912, 1912,
1736      1912,  436, 1913,  434,  432, 1914, 2022,  430, 2022, 2022,
1737      1915, 1915, 1915,  682, 1916,  406,  405, 1917, 1918, 1918,
1738      1918,  403, 1919,  401,  395, 1920, 1922, 1922, 1922,  394,
1739      1923, 1931, 1929, 1924,  395, 1930, 2022, 2022, 2022, 2022,
1740      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1741      2022,  394,  393, 2022,  392, 2022, 2022, 2022, 2022, 2022,
1742      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 1957,
1743      1957, 1957, 2022, 2022, 2022, 2022, 2022, 2022, 1957, 1957,
1744      1957, 2022, 2022, 2022, 2022, 2022, 1958, 2022, 2022, 2022,
1745
1746      2022, 2022, 2022, 1938, 2022, 1958, 1939, 2022, 2022, 1954,
1747      2022, 1966, 1966, 1966, 1946, 1967, 2022, 1947, 1968, 2022,
1748      2022, 2022, 2022, 2022, 2022, 2022, 2022, 1955, 2022, 2022,
1749      1963, 2022, 2022, 1964, 2022, 2022, 2022, 2022, 2022, 2022,
1750      1966, 1966, 1966, 2022, 1967, 2022, 2022, 1968, 2022, 2022,
1751      2022, 2022, 2022, 2022, 1976, 1976, 1976, 2022, 2022, 2022,
1752      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 1976,
1753      1976, 1976,  682, 1979, 2022, 2022, 1980, 2022, 2022, 1971,
1754      2022, 2022, 1972, 2022, 2022, 2022, 2022,  682, 2022, 2022,
1755      2022, 1974, 2022, 2022, 1975, 2022, 2022, 2022, 2022, 2022,
1756
1757      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1758      2022, 2022, 2022, 1993, 1993, 1993, 2022, 2022, 1977, 2022,
1759      1978, 2022, 2022, 2022, 2022, 2022, 2022, 1995, 1995, 1995,
1760      1994, 1981, 1993, 1993, 1993, 2022, 1982, 2022, 1999, 1999,
1761      1999, 2022, 2000, 2022, 1996, 2001, 2022, 2022, 1986, 1994,
1762      2022, 1985, 2022, 1989, 1995, 1995, 1995, 2002, 2002, 2002,
1763      2022, 2003, 2022, 2022, 2004, 1999, 1999, 1999, 2022, 2000,
1764      2022, 1996, 2001, 1990, 2002, 2002, 2002, 2022, 2003, 2022,
1765      2022, 2004, 2020, 2020, 2020, 2020, 2020, 2020, 2022, 2022,
1766      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1767
1768      2021, 2022, 2022, 2021,  144,  144,  144,  144,  144,  144,
1769       144,  144,  144,  145,  145,  145,  145,  145,  145,  145,
1770       145,  145,  150,  150,  150,  150,  150,  150,  150,  150,
1771       150,  153,  153,  153,  153,  153,  153,  153,  153,  153,
1772       156,  156,  156,  156,  156,  156,  156,  156,  156,  159,
1773       159,  159,  159,  159,  159,  159,  159,  159,  166,  166,
1774       166,  166,  166,  166,  166,  166,  166,  174,  174,  174,
1775       174,  174,  174,  174,  174,  174,  179,  179,  179,  179,
1776       179,  179,  179,  179,  179,  189,  189,  189,  189,  189,
1777       189,  189,  189,  189,  193,  193,  193,  193,  193,  193,
1778
1779       193,  193,  193,  199,  199,  199,  199,  199,  199,  199,
1780       199,  199,  210,  210,  210,  210,  210,  210,  210,  210,
1781       210,  217,  217,  217,  217,  217,  217,  217,  217,  217,
1782       225,  225,  225,  225,  225,  225,  225,  225,  225,  231,
1783       231,  231,  231,  231,  231,  231,  231,  231,  237,  237,
1784       237,  237,  237,  237,  237,  237,  237,  244,  244,  244,
1785       244,  244,  244,  244,  244,  244,  250,  250,  250,  250,
1786       250,  250,  250,  250,  250,  256,  256,  256,  256,  256,
1787       256,  256,  256,  256,  262,  262,  262,  262,  262,  262,
1788       262,  262,  262,  270,  270,  270,  270,  270,  270,  270,
1789
1790       270,  270,  277,  277,  277,  277,  277,  277,  277,  277,
1791       277,  282,  282,  282,  282,  282,  282,  282,  282,  282,
1792       297,  297,  297,  297,  297,  297,  297,  297,  297,  303,
1793       303,  303,  303,  303,  303,  303,  303,  303,  307,  307,
1794       307,  307,  307,  307,  307,  307,  307,  313,  313,  313,
1795       313,  313,  313,  313,  313,  313,  320,  320,  320,  320,
1796       320,  320,  320,  320,  320,  327,  327,  327,  327,  327,
1797       327,  327,  327,  327,  334,  334,  334,  334,  334,  334,
1798       334,  334,  334,  341,  341,  341,  341,  341,  341,  341,
1799       341,  341,  348,  348,  348,  348,  348,  348,  348,  348,
1800
1801       348,  355,  355,  355,  355,  355,  355,  355,  355,  355,
1802       359,  359,  359,  359,  359,  359,  359,  359,  359,  365,
1803       365,  365,  365,  365,  365,  365,  365,  365,  372,  372,
1804       372,  372,  372,  372,  372,  372,  372,  380,  380,  380,
1805       380,  380,  380,  380,  380,  380,  384,  384,  384,  384,
1806       384,  384,  384,  384,  384,  404,  404,  404, 2022, 2022,
1807      2022,  404,  431,  431,  431, 2022, 2022, 2022,  431,  435,
1808       435,  435, 2022, 2022, 2022,  435,  443,  443,  443, 2022,
1809      2022, 2022,  443,  453,  453,  453, 2022, 2022, 2022,  453,
1810       459,  459,  459, 2022, 2022, 2022,  459,  466,  466,  466,
1811
1812      2022, 2022, 2022,  466,  470,  470,  470, 2022, 2022, 2022,
1813       470,  479,  479,  479, 2022, 2022, 2022,  479,  484,  484,
1814       484, 2022, 2022, 2022,  484,  495,  495,  495, 2022, 2022,
1815      2022,  495,  499,  499,  499, 2022, 2022, 2022,  499,  507,
1816       507,  507, 2022, 2022, 2022,  507,  515,  515,  515, 2022,
1817      2022, 2022,  515,  522,  522,  522, 2022, 2022, 2022,  522,
1818       526,  526,  526, 2022, 2022, 2022,  526,  534,  534,  534,
1819      2022, 2022, 2022,  534,  537,  537,  537,  537,  537,  537,
1820       537, 2022,  537,  553, 2022, 2022, 2022,  553,  581, 2022,
1821      2022, 2022,  581,  588, 2022, 2022, 2022,  588,  598, 2022,
1822
1823      2022, 2022,  598,  604, 2022, 2022, 2022,  604,  611, 2022,
1824      2022, 2022,  611,  614, 2022, 2022, 2022,  614,  623, 2022,
1825      2022, 2022,  623,  628, 2022, 2022, 2022,  628,  484,  484,
1826       484, 2022, 2022, 2022,  484,  640, 2022, 2022, 2022,  640,
1827       495,  495,  495, 2022, 2022, 2022,  495,  644, 2022, 2022,
1828      2022,  644,  499,  499,  499, 2022, 2022, 2022,  499,  652,
1829      2022, 2022, 2022,  652,  507,  507,  507, 2022, 2022, 2022,
1830       507,  659, 2022, 2022, 2022,  659,  515,  515,  515, 2022,
1831      2022, 2022,  515,  665, 2022, 2022, 2022,  665,  522,  522,
1832       522, 2022, 2022, 2022,  522,  669, 2022, 2022, 2022,  669,
1833
1834       526,  526,  526, 2022, 2022, 2022,  526,  675, 2022, 2022,
1835      2022,  675,  534,  534,  534, 2022, 2022, 2022,  534,  679,
1836      2022, 2022, 2022,  679,  681,  681,  681,  681,  681,  681,
1837       681,  681,  681,  687, 2022, 2022, 2022, 2022,  687,  404,
1838       404,  404, 2022, 2022, 2022,  404,  697,  697,  697,  697,
1839      2022, 2022,  697,  697,  431,  431,  431, 2022, 2022, 2022,
1840       431,  727,  727,  727,  727, 2022, 2022,  727,  727,  435,
1841       435,  435, 2022, 2022, 2022,  435,  737,  737,  737,  737,
1842      2022, 2022,  737,  737,  443,  443,  443, 2022, 2022, 2022,
1843       443,  751,  751,  751,  751, 2022, 2022,  751,  751,  453,
1844
1845       453,  453, 2022, 2022, 2022,  453,  759,  759,  759,  759,
1846      2022, 2022,  759,  759,  459,  459,  459, 2022, 2022, 2022,
1847       459,  769,  769,  769,  769, 2022, 2022,  769,  769,  466,
1848       466,  466, 2022, 2022, 2022,  466,  774,  774,  774,  774,
1849      2022, 2022,  774,  774,  470,  470,  470, 2022, 2022, 2022,
1850       470,  786,  786,  786,  786, 2022, 2022,  786,  786,  479,
1851       479,  479, 2022, 2022, 2022,  479,  794,  794,  794,  794,
1852      2022, 2022,  794,  794,  484,  484,  484, 2022, 2022, 2022,
1853       484,  812,  812,  812,  812, 2022, 2022,  812,  812,  819,
1854       819,  819,  819, 2022, 2022,  819,  819,  499,  499,  499,
1855
1856      2022, 2022, 2022,  499,  830,  830,  830,  830, 2022, 2022,
1857       830,  830,  507,  507,  507, 2022, 2022, 2022,  507,  841,
1858       841,  841,  841, 2022, 2022,  841,  841,  515,  515,  515,
1859      2022, 2022, 2022,  515,  851,  851,  851,  851, 2022, 2022,
1860       851,  851,  858,  858,  858,  858, 2022, 2022,  858,  858,
1861       526,  526,  526, 2022, 2022, 2022,  526,  866,  866,  866,
1862       866, 2022, 2022,  866,  866,  534,  534,  534, 2022, 2022,
1863      2022,  534,  872,  872,  872,  872, 2022, 2022,  872,  872,
1864       681,  681,  681,  681,  681,  681,  681,  681,  681,  687,
1865      2022,  687, 2022, 2022,  687,  404,  404,  404, 2022, 2022,
1866
1867      2022,  404,  697,  697,  697,  697, 2022, 2022,  697,  697,
1868       431,  431,  431,  431, 2022,  431, 2022,  431,  727,  727,
1869       727,  727, 2022, 2022,  727,  727,  435,  435,  435,  435,
1870      2022,  435, 2022,  435,  737,  737,  737,  737, 2022, 2022,
1871       737,  737,  443,  443,  443, 2022, 2022, 2022,  443,  751,
1872       751,  751,  751, 2022, 2022,  751,  751,  453,  453,  453,
1873      2022, 2022, 2022,  453,  759,  759,  759,  759, 2022, 2022,
1874       759,  759,  459,  459,  459, 2022, 2022, 2022,  459,  769,
1875       769,  769,  769, 2022, 2022,  769,  769,  466,  466,  466,
1876      2022, 2022, 2022,  466,  774,  774,  774,  774, 2022, 2022,
1877
1878       774,  774,  470,  470,  470, 2022, 2022, 2022,  470,  786,
1879       786,  786,  786, 2022, 2022,  786,  786,  479,  479,  479,
1880      2022, 2022, 2022,  479,  794,  794,  794,  794, 2022, 2022,
1881       794,  794,  484,  484,  484, 2022, 2022, 2022,  484,  812,
1882       812,  812,  812, 2022, 2022,  812,  812,  819,  819,  819,
1883       819, 2022, 2022,  819,  819,  499,  499,  499, 2022, 2022,
1884      2022,  499,  830,  830,  830,  830, 2022, 2022,  830,  830,
1885       507,  507,  507, 2022, 2022, 2022,  507,  841,  841,  841,
1886       841, 2022, 2022,  841,  841,  515,  515,  515, 2022, 2022,
1887      2022,  515,  851,  851,  851,  851, 2022, 2022,  851,  851,
1888
1889       858,  858,  858,  858, 2022, 2022,  858,  858,  526,  526,
1890       526, 2022, 2022, 2022,  526,  866,  866,  866,  866, 2022,
1891      2022,  866,  866,  534,  534,  534, 2022, 2022, 2022,  534,
1892       872,  872,  872,  872, 2022, 2022,  872,  872,  681,  681,
1893       681,  681,  681,  681,  681,  681,  681,  996,  996,  996,
1894       996,  996,  996,  996,  996,  996,  404,  404,  404, 2022,
1895      2022, 2022,  404,  697,  697,  697,  697, 2022, 2022,  697,
1896       697,  727,  727,  727,  727, 2022, 2022,  727,  727,  435,
1897       435,  435, 2022, 2022, 2022,  435,  737,  737,  737,  737,
1898      2022, 2022,  737,  737,  443,  443,  443, 2022, 2022, 2022,
1899
1900       443,  751,  751,  751,  751, 2022, 2022,  751,  751,  453,
1901       453,  453, 2022, 2022, 2022,  453,  759,  759,  759,  759,
1902      2022, 2022,  759,  759,  459,  459,  459, 2022, 2022, 2022,
1903       459,  769,  769,  769,  769, 2022, 2022,  769,  769,  466,
1904       466,  466, 2022, 2022, 2022,  466,  774,  774,  774,  774,
1905      2022, 2022,  774,  774,  470,  470,  470, 2022, 2022, 2022,
1906       470,  786,  786,  786,  786, 2022, 2022,  786,  786,  479,
1907       479,  479,  479, 2022,  479, 2022,  479,  794,  794,  794,
1908       794, 2022, 2022,  794,  794,  484,  484,  484,  484, 2022,
1909       484, 2022,  484,  812,  812,  812,  812, 2022, 2022,  812,
1910
1911       812,  819,  819,  819,  819, 2022, 2022,  819,  819,  499,
1912       499,  499, 2022, 2022, 2022,  499,  830,  830,  830,  830,
1913      2022, 2022,  830,  830,  507,  507,  507, 2022, 2022, 2022,
1914       507,  841,  841,  841,  841, 2022, 2022,  841,  841,  515,
1915       515,  515, 2022, 2022, 2022,  515,  851,  851,  851,  851,
1916      2022, 2022,  851,  851,  858,  858,  858,  858, 2022, 2022,
1917       858,  858,  526,  526,  526, 2022, 2022, 2022,  526,  866,
1918       866,  866,  866, 2022, 2022,  866,  866,  534,  534,  534,
1919       534, 2022,  534, 2022,  534,  872,  872,  872,  872, 2022,
1920      2022,  872,  872,  681,  681,  681,  681,  681,  681,  681,
1921
1922       681,  681,  996,  996,  996,  996,  996,  996,  996,  996,
1923       996,  404,  404,  404, 2022, 2022, 2022,  404,  697,  697,
1924       697,  697, 2022, 2022,  697,  697,  727,  727,  727,  727,
1925      2022, 2022,  727,  727,  435,  435,  435, 2022, 2022, 2022,
1926       435,  737,  737,  737,  737, 2022, 2022,  737,  737,  443,
1927       443,  443, 2022, 2022, 2022,  443,  751,  751,  751,  751,
1928      2022, 2022,  751,  751,  453,  453,  453, 2022, 2022, 2022,
1929       453,  759,  759,  759,  759, 2022, 2022,  759,  759,  459,
1930       459,  459,  459, 2022,  459, 2022,  459,  466,  466,  466,
1931       466, 2022,  466, 2022,  466,  774,  774,  774,  774, 2022,
1932
1933      2022,  774,  774,  470,  470,  470, 2022, 2022, 2022,  470,
1934       786,  786,  786,  786, 2022, 2022,  786,  786,  794,  794,
1935       794,  794, 2022, 2022,  794,  794,  484,  484,  484,  484,
1936      2022,  484, 2022,  484,  812,  812,  812,  812, 2022, 2022,
1937       812,  812,  819,  819,  819,  819, 2022, 2022,  819,  819,
1938       499,  499,  499, 2022, 2022, 2022,  499,  830,  830,  830,
1939       830, 2022, 2022,  830,  830,  507,  507,  507,  507, 2022,
1940       507, 2022,  507,  841,  841,  841,  841, 2022, 2022,  841,
1941       841,  515,  515,  515,  515, 2022,  515, 2022,  515,  851,
1942       851,  851,  851, 2022, 2022,  851,  851,  858,  858,  858,
1943
1944       858, 2022, 2022,  858,  858,  526,  526,  526, 2022, 2022,
1945      2022,  526,  866,  866,  866,  866, 2022, 2022,  866,  866,
1946       872,  872,  872,  872, 2022, 2022,  872,  872,  681,  681,
1947       681,  681,  681,  681,  681,  681,  681,  996,  996,  996,
1948       996,  996,  996,  996,  996,  996,  404,  404,  404,  404,
1949      2022,  404, 2022,  404,  697,  697,  697,  697, 2022, 2022,
1950       697,  697,  727,  727,  727,  727, 2022, 2022,  727,  727,
1951       435,  435,  435, 2022, 2022, 2022,  435,  737,  737,  737,
1952       737, 2022, 2022,  737,  737,  443,  443,  443, 2022, 2022,
1953      2022,  443,  751,  751,  751,  751, 2022, 2022,  751,  751,
1954
1955       453,  453,  453,  453, 2022,  453, 2022,  453,  759,  759,
1956       759,  759, 2022, 2022,  759,  759,  459,  459,  459,  459,
1957      2022,  459, 2022,  459,  774,  774,  774,  774, 2022, 2022,
1958       774,  774,  470,  470,  470, 2022, 2022, 2022,  470, 1817,
1959      1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1818, 1818,
1960      1818, 1818, 1818, 1818, 1818, 1818, 1818, 1856, 1856, 1856,
1961      1856, 1856, 1856, 1856, 1856, 1856, 1859, 1859, 1859, 1859,
1962      1859, 1859, 1859, 1859, 1859, 1887, 1887, 1887, 1887, 1887,
1963      1887, 1887, 1887, 1887, 1889, 1889, 1889, 1889, 1889, 1889,
1964      1889, 1889, 1889,  143, 2022, 2022, 2022, 2022, 2022, 2022,
1965
1966      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1967      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1968      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1969      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1970      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1971      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
1972      2022, 2022, 2022
1973     } ;
1974
1975 static yyconst flex_int16_t yy_chk[7164] =
1976     {   0,
1977         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
1978         6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
1979         4,   10,  219,    5,    0,    9,    6,    0,   10,    7,
1980         8,    8,    8,  148,   11,   13,   13,   12,   14,   14,
1981        13,   13,  220,   14,   14,  149,    8,   17,   17,  148,
1982        13,   15,   15,   14,   15,  152,   15,   16,   16,  414,
1983        16,  149,   16,   18,   18,  414,   15,   19,   19,   19,
1984       219,  152,   16,   20,   20,   20,   23,   23,   23,   24,
1985        24,   24,  266,   19,   25,   25,   25,  332,   17,   20,
1986       220,  266,   23,  425,  332,   24,  146,  146,  146,  425,
1987
1988        25,  147,  147,  147,   18,   21,   21,   21,   21,   21,
1989        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
1990      1412,   21,   21,   21,   21,   21,   26,   26,   26,   27,
1991        27,   27,  319,   28,   28,   28,   29,   29,   29,   30,
1992        30,   30,   26,  319,  451,   27,  175,   21,   21,   28,
1993       451,  294,   29,  190,  294,   30,  151,  151,  151,  172,
1994       172,  172,  175,  180,  180,  180,  187,  187,  187,  190,
1995        21,  183,   21,   22,   22,   22,   22,   22,   22,   22,
1996        22,   22,   22,   22,   22,   22,   22,   22,  272,   22,
1997        22,   22,   22,   22,   31,   31,   31,   32,   32,   32,
1998
1999       995,   33,   33,   33,   34,   34,   34,   35,   35,   35,
2000        31,  415,  200,   32,  170,   22,   22,   33,  211,  183,
2001        34,  183,  995,   35,  415,   36,   36,   36,  200,  185,
2002       170,  194,  194,  194,  211,  185,  272,  185,   22,  185,
2003        22,   36,   37,   37,   37,   37,   37,   37,   37,   37,
2004        37,   37,   37,   37,   37,   37,   37,  291,   37,   37,
2005        37,   37,   37,   39,   39,   39,   40,   40,   40,  170,
2006        47,   47,   47,   43,   43,   44,   44,  291,   43,   39,
2007        44, 1152,   40,  215,   37,   37,   47,  215,   43, 1152,
2008        44,  215,   37,   38,   38,   38,   38,   38,   38,   38,
2009
2010        38,   38,   38,   38,   38,   38,   38,   38,  707,   38,
2011        38,   38,   38,   38,   43,  333,   44,   48,   48,   48,
2012       707,   49,   49,   49,   50,   50,   50,  197,  197,  197,
2013       208,  208,  208,   48,  684,   38,   38,   49,  684,  397,
2014        50,  336,  397,   38,   41,   41,   41,   41,   41,   41,
2015        41,   41,   41,   41,   41,   41,   41,   41,   41,  333,
2016        41,   41,   41,   41,   41,   51,   51,   51,   52,   52,
2017        52,  322,   53,   53,   53,   54,   54,   54,  218,  218,
2018       218,   51,  195,  205,   52,  336,   41,   41,   53,  195,
2019       205,   54, 1319, 1319,   41, 1320, 1320,   41,  195,  205,
2020
2021       223,  223,  223,   41,   42,   42,   42,   42,   42,   42,
2022        42,   42,   42,   42,   42,   42,   42,   42,   42,  322,
2023        42,   42,   42,   42,   42,   57,   57,   57,   58,   58,
2024        58,  720,   61,   61,   61,   62,   62,   62,  388,  226,
2025       238,   57, 1156,  720,   58,  233,   42,   42,   61,  422,
2026      1156,   62,  233,  388,   42,  226,  238,   42,  232,  232,
2027       232,  233,  422,   42,   45,   45,   45,   45,   45,   45,
2028        45,   45,   45,   45,   45,   45,   45,   45,   45,  754,
2029        45,   45,   45,   45,   45,   65,   65,   65,   66,   66,
2030        66,  754,   67,   67,   67,   68,   68,   68,   69,   69,
2031
2032        69,   65,  246,  251,   66, 1414,   45,   45,   67,  246,
2033       350,   68,  426, 1419,   69,   45, 1421,   45,  246,  251,
2034        45,  235,  235,  235,  254,  426,   45,   46,   46,   46,
2035        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
2036        46,   46,  439,   46,   46,   46,   46,   46,   70,   70,
2037        70,   73,   73,   73,  350,   74,   74,   74,   75,   75,
2038        75,   76,   76,   76,   70,  254,  263,   73,  254,   46,
2039        46,   74,  278, 1004,   75,  439, 1428,   76,   46, 1004,
2040        46, 1442,  263,   46,  245,  245,  245, 1112,  278,   46,
2041        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
2042
2043        55,   55,   55,   55,   55, 1443,   55,   55,   55,   55,
2044        55,   77,   77,   77,   78,   78,   78, 1112,   79,   79,
2045        79,   80,   80,   80,   83,   83,   83,   77, 1444,  630,
2046        78, 1111,   55,   55,   79,  289,  304,   80,  630,   55,
2047        83,  248,  248,  248,   55,  257,  257,  257,  260,  260,
2048       260,  289,  304,   55,   56,   56,   56,   56,   56,   56,
2049        56,   56,   56,   56,   56,   56,   56,   56,   56, 1111,
2050        56,   56,   56,   56,   56,   84,   84,   84,   87,   87,
2051        87, 1445,   88,   88,   88,   91,   91,   91,   92,   92,
2052        92,   84, 1325, 1325,   87, 1294,   56,   56,   88,  314,
2053
2054       328,   91, 1294,   56,   92,  271,  271,  271,   56,  275,
2055       275,  275,  283,  283,  283,  314,  328,   56,   59,   59,
2056        59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
2057        59,   59,   59, 1448,   59,   59,   59,   59,   59,   95,
2058        95,   95,   96,   96,   96,  875,   97,   97,   97,   98,
2059        98,   98,   99,   99,   99,   95,  284,  428,   96, 1451,
2060        59,   59,   97,  284,  875,   98, 1232, 1433,   99, 1295,
2061       428,   59,  284,  286,  286,  286, 1295,   59, 1452,   59,
2062        59,   60,   60,   60,   60,   60,   60,   60,   60,   60,
2063        60,   60,   60,   60,   60,   60, 1433,   60,   60,   60,
2064
2065        60,   60,  100,  100,  100,  101,  101,  101, 1232,  102,
2066       102,  102,  105,  105,  105,  106,  106,  106,  100, 1326,
2067      1326,  101,  299,   60,   60,  102,  539, 1230,  105,  299,
2068      1453,  106, 1315, 1230,   60,  298,  298,  298,  299, 1315,
2069        60,  539,   60,   60,   63,   63,   63,   63,   63,   63,
2070        63,   63,   63,   63,   63,   63,   63,   63,   63, 1434,
2071        63,   63,   63,   63,   63,  107,  107,  107,  108,  108,
2072       108, 1454,  109,  109,  109,  110,  110,  110,  111,  111,
2073       111,  107, 1455, 1316,  108,  309,   63,   63,  109,  342,
2074      1316,  110,  309, 1434,  111,  301,  301,  301,  308,  308,
2075
2076       308,  309,  311,  311,  311,  342,   63,   64,   64,   64,
2077        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
2078        64,   64, 1456,   64,   64,   64,   64,   64,  112,  112,
2079       112,  115,  115,  115, 1457,  116,  116,  116,  117,  117,
2080       117,  118,  118,  118,  112, 1458, 1338,  115, 1459,   64,
2081        64,  116,  356, 1413,  117, 1413, 1460,  118,  321,  321,
2082       321,  325,  325,  325,  335,  335,  335, 1461,  356,   64,
2083        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
2084        71,   71,   71,   71,   71, 1338,   71,   71,   71,   71,
2085        71,  119,  119,  119,  120,  120,  120, 1465,  121,  121,
2086
2087       121,  122,  122,  122,  125,  125,  125,  119,  366,  361,
2088       120,  381,   71,   71,  121,   71,  361,  122, 1466, 1415,
2089       125, 1415, 1467,   71,  366,  361,   71,  381, 1339,   71,
2090      1468, 1470,   71,   72,   72,   72,   72,   72,   72,   72,
2091        72,   72,   72,   72,   72,   72,   72,   72, 1477,   72,
2092        72,   72,   72,   72,  126,  126,  126,  129,  129,  129,
2093      1478,  130,  130,  130,  131,  131,  131,  132,  132,  132,
2094       126, 1339,  386,  129, 1479,   72,   72,  130,   72,  386,
2095       131, 1050, 1420,  132, 1420, 1480,   72, 1050,  386,   72,
2096      1050, 1422,   72, 1422, 1050,   72,   81,   81,   81,   81,
2097
2098        81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
2099        81,  374,   81,   81,   81,   81,   81,  133,  133,  133,
2100       134,  134,  134, 1482,  135,  135,  135,  136,  136,  136,
2101       139,  139,  139,  133, 1485, 1051,  134, 1486,   81,   81,
2102       135, 1051, 1487,  136, 1051,  374,  139,  162, 1051,   81,
2103       339,  339,  339,  349,  349,  349,  353,  353,  353,  374,
2104      1488,   81,   82,   82,   82,   82,   82,   82,   82,   82,
2105        82,   82,   82,   82,   82,   82,   82, 1489,   82,   82,
2106        82,   82,   82,  140,  140,  140,  162,  360,  360,  360,
2107      1490, 1495,  162,  363,  363,  363,  162, 1496, 1497,  140,
2108
2109      1498,  162, 1499, 1500,   82,   82,  373,  373,  373,  378,
2110       378,  378,  385,  385,  385,   82,  387,  387,  387,  542,
2111       542,  542, 1521,  542,  710,  710,  710,   82,   85,   85,
2112        85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
2113        85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
2114        85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
2115        85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
2116        85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
2117        85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
2118        85,   85,   85,   85,   85,   85,   85,   89,   89,   89,
2119
2120        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
2121        89,   89, 1513,   89,   89,   89,   89,   89,  396,  396,
2122       396,  437,  437,  437,  445,  445,  445,  460,  460,  460,
2123       472,  472,  472,  718,  718,  718, 1522, 1523,  437,   89,
2124        89,  445, 1524, 1529,  460, 1530, 1531,  472, 1513, 1231,
2125        89,   90,   90,   90,   90,   90,   90,   90,   90,   90,
2126        90,   90,   90,   90,   90,   90, 1514,   90,   90,   90,
2127        90,   90, 1532,  396,  480,  480,  480, 1231,  486,  486,
2128       486,  487,  487,  487,  496,  496,  496,  888,  888,  888,
2129      1527,  480, 1533,   90,   90,  486, 1534, 1535,  487, 1536,
2130
2131      1514,  496, 1527, 1515,   90,   93,   93,   93,   93,   93,
2132        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
2133      1537,   93,   93,   93,   93,   93,  501,  501,  501,  523,
2134       523,  523,  553,  553,  553,  554,  554,  554,  581,  581,
2135       581, 1110, 1515,  501, 1538, 1539,  523,   93,   93, 1541,
2136       553,   93, 1542,  554, 1543, 1551,  581, 1110,   93, 1552,
2137        93,  893,  893,  893,  896,  896,  896,   93,   94,   94,
2138        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
2139        94,   94,   94, 1553,   94,   94,   94,   94,   94,  554,
2140       582,  582,  582, 1558, 1528,  584,  584,  584,  585,  585,
2141
2142       585, 1559,  585, 1560, 1561,  585, 1528, 1562,  582, 1563,
2143        94,   94,  584, 1568,   94,  593,  593,  593, 1569,  593,
2144      1570,   94,  593,   94,  900,  900,  900,  904,  904,  904,
2145        94,  103,  103,  103,  103,  103,  103,  103,  103,  103,
2146       103,  103,  103,  103,  103,  103,  582,  103,  103,  103,
2147       103,  103,  588,  588,  588, 1571, 1572,  589,  589,  589,
2148       592,  592,  592,  594,  594,  594,  596,  596,  596, 1573,
2149       588, 1586, 1594,  103,  103,  589,  103,  592, 1587,  103,
2150       594, 1565, 1566,  596,  607,  607,  607, 1596,  607, 1565,
2151      1566,  607, 1585,  103,  104,  104,  104,  104,  104,  104,
2152
2153       104,  104,  104,  104,  104,  104,  104,  104,  104, 1586,
2154       104,  104,  104,  104,  104, 1599, 1587,  589, 1585, 1600,
2155       598,  598,  598,  604,  604,  604, 1601, 1602,  599,  599,
2156       599,  605,  605,  605, 1603, 1604,  104,  104,  598,  104,
2157      1605,  604,  104,  618,  618,  618,  599,  618, 1606,  605,
2158       618,  930,  930,  930, 1607, 1609,  104,  113,  113,  113,
2159       113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
2160       113,  113,  599,  113,  113,  113,  113,  113,  606,  606,
2161       606, 1610, 1611,  611,  611,  611,  614,  614,  614, 1612,
2162      1616,  605,  617,  617,  617,  606,  612,  612,  612,  113,
2163
2164       113,  611,  113, 1617,  614,  113, 1009, 1009, 1009,  617,
2165       113,  626,  626,  626,  612,  626, 1621, 1623,  626,  113,
2166       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
2167       114,  114,  114,  114,  114, 1627,  114,  114,  114,  114,
2168       114,  615,  615,  615,  612, 1628,  623,  623,  623,  624,
2169       624,  624,  625,  625,  625, 1629,  628,  628,  628,  615,
2170      1630, 1631,  114,  114,  623,  114, 1632,  624,  114,  625,
2171      1011, 1011, 1011,  114,  628, 1015, 1015, 1015, 1021, 1021,
2172      1021, 1633,  114,  123,  123,  123,  123,  123,  123,  123,
2173       123,  123,  123,  123,  123,  123,  123,  123,  615,  123,
2174
2175       123,  123,  123,  123, 1634, 1635,  624, 1636, 1638,  629,
2176       629,  629,  631,  631,  631,  632,  632,  632, 1639,  632,
2177      1640, 1641,  632, 1642, 1643,  123,  123,  629, 1656,  631,
2178      1022, 1022, 1022, 1047, 1047, 1047,  123,  124,  124,  124,
2179       124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
2180       124,  124, 1650,  124,  124,  124,  124,  124,  633,  633,
2181       633,  634,  634,  634, 1658,  634, 1662, 1663,  634,  629,
2182       635,  635,  635, 1664, 1665,  633, 1126, 1126, 1126,  124,
2183       124,  643,  643,  643, 1650,  643, 1667,  635,  643, 1668,
2184       124,  127,  127,  127,  127,  127,  127,  127,  127,  127,
2185
2186       127,  127,  127,  127,  127,  127, 1669,  127,  127,  127,
2187       127,  127,  640,  640,  640,  642,  642,  642,  644,  644,
2188       644,  641,  641,  641,  645,  645,  645,  647,  647,  647,
2189       640, 1670,  642,  127,  127, 1649,  644, 1671, 1672,  641,
2190      1673,  127,  645,  127,  647,  127, 1127, 1127, 1127, 1129,
2191      1129, 1129, 1674,  127,  128,  128,  128,  128,  128,  128,
2192       128,  128,  128,  128,  128,  128,  128,  128,  128, 1678,
2193       128,  128,  128,  128,  128,  641,  648,  648,  648, 1649,
2194       648,  645, 1680,  648,  652,  652,  652,  653,  653,  653,
2195       655,  655,  655,  656,  656,  656,  128,  128,  662,  662,
2196
2197       662, 1681,  652, 1684,  128,  653,  128,  655,  128, 1685,
2198       656, 1130, 1130, 1130, 1686,  662,  128,  137,  137,  137,
2199       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
2200       137,  137, 1687,  137,  137,  137,  137,  137, 1688,  653,
2201       659,  659,  659, 1689,  664,  664,  664,  660,  660,  660,
2202       665,  665,  665,  666,  666,  666, 1679, 1679,  659,  137,
2203       137,  664,  667,  667,  667,  660, 1690, 1691,  665, 1692,
2204      1693,  666, 1694,  668,  668,  668, 1696,  668, 1697,  667,
2205       668, 1698,  137,  138,  138,  138,  138,  138,  138,  138,
2206       138,  138,  138,  138,  138,  138,  138,  138, 1699,  138,
2207
2208       138,  138,  138,  138,  660,  669,  669,  669, 1700, 1701,
2209       666,  670,  670,  670,  675,  675,  675,  676,  676,  676,
2210       679,  679,  679,  669, 1710,  138,  138, 1704, 1711,  670,
2211      1712, 1713,  675, 1716, 1717,  676, 1719, 1720,  679,  680,
2212       680,  680,  696,  696,  696,  725,  725,  725,  138,  181,
2213       697,  697,  697,  890,  890,  890,  181,  680, 1704, 1721,
2214       696, 1723,  725,  670, 1728,  181, 1729,  890,  697,  699,
2215       699,  699, 1730,  726,  726,  726, 1731,  676,  727,  727,
2216       727, 1737, 1738,  729,  729,  729, 1739,  699, 1740, 1741,
2217       181,  726,  181, 1742, 1744,  181,  727,  181,  181,  680,
2218
2219       181,  729, 1746, 1749,  181, 1750,  181,  181,  181,  182,
2220       730,  730,  730,  699, 1751, 1752,  182,  731,  731,  731,
2221      1753,  731, 1754, 1761,  731,  182, 1769,  730, 1770,  729,
2222       734,  734,  734,  736,  736,  736,  737,  737,  737, 1771,
2223      1772,  739,  739,  739,  744,  744,  744,  734, 1776, 1777,
2224       182,  736,  182, 1778,  737,  182, 1779,  182,  182,  739,
2225       182,  744, 1761, 1780,  182, 1781,  182,  182,  182,  741,
2226       741,  741, 1783,  741, 1784, 1785,  741,  745,  745,  745,
2227      1786,  745, 1791, 1792,  745,  739, 1793,  734,  746,  746,
2228       746,  747,  747,  747,  748,  748,  748, 1794,  748, 1795,
2229
2230      1796,  748,  750,  750,  750,  746, 1799, 1800,  747,  751,
2231       751,  751,  753,  753,  753,  756,  756,  756, 1801, 1802,
2232       750,  758,  758,  758,  759,  759,  759,  751, 1803, 1804,
2233       753, 1819,  756,  761,  761,  761,  762,  762,  762,  758,
2234       762, 1821,  759,  762,  768,  768,  768,  769,  769,  769,
2235      1824,  761,  771,  771,  771,  773,  773,  773,  774,  774,
2236       774, 1815,  768, 1816, 1813,  769, 1825, 1827,  753, 1828,
2237       771, 1831, 1832,  773, 1816, 1815,  774,  761,  776,  776,
2238       776,  778,  778,  778, 1833,  778, 1834, 1841,  778,  785,
2239       785,  785,  786,  786,  786, 1842,  776,  788,  788,  788,
2240
2241      1844,  789,  789,  789, 1845,  789, 1813,  785,  789, 1847,
2242       786,  793,  793,  793,  771,  788,  794,  794,  794,  796,
2243       796,  796, 1848,  799,  799,  799, 1850,  799, 1851,  793,
2244       799,  805,  805,  805,  794, 1858, 1839,  796,  776,  802,
2245       802,  802, 1855,  802, 1840, 1860,  802, 1839,  805,  806,
2246       806,  806, 1862,  806, 1863, 1840,  806, 1856,  788,  811,
2247       811,  811,  812,  812,  812,  814,  814,  814,  815,  815,
2248       815, 1856,  815, 1857, 1857,  815,  796,  811, 1872, 1855,
2249       812, 1873, 1874,  814,  818,  818,  818,  819,  819,  819,
2250       821,  821,  821,  823,  823,  823, 1859,  823, 1875, 1887,
2251
2252       823, 1888,  818, 1889, 1891,  819, 1892, 1859,  821,  829,
2253       829,  829,  830,  830,  830,  832,  832,  832,  834,  834,
2254       834, 1899,  835,  835,  835, 1902,  835,  829,  814,  835,
2255       830, 1903, 1904,  832, 1905,  834, 1909,  836,  836,  836,
2256       837,  837,  837, 1921,  837, 1925, 1926,  837,  840,  840,
2257       840, 1927, 1928,  821,  836,  841,  841,  841,  843,  843,
2258       843,  845,  845,  845, 1933, 1931,  840, 1934,  846,  846,
2259       846,  832,  846,  841, 1935,  846,  843, 1936,  845,  848,
2260       848,  848,  849,  849,  849, 1937,  849, 1931, 1940,  849,
2261       850,  850,  850,  851,  851,  851,  848,  853,  853,  853,
2262
2263       854,  854,  854, 1941,  854, 1942, 1940,  854,  850, 1943,
2264      1944,  851,  857,  857,  857,  853,  858,  858,  858, 1945,
2265      1948,  843,  860,  860,  860,  862,  862,  862, 1950, 1951,
2266       857,  865,  865,  865,  858,  866,  866,  866, 1952, 1948,
2267       860, 1953,  862,  868,  868,  868,  871,  871,  871,  865,
2268       872,  872,  872,  866,  874,  874,  874,  876,  876,  876,
2269       853,  868, 1959, 1961,  871,  884,  884,  884,  872,  911,
2270       911,  911,  874, 1411, 1979,  876,  876, 1983,  860,  901,
2271       901,  901, 1980,  884, 1956, 1965,  911,  912,  912,  912,
2272      1956,  912, 1991,  901,  912,  913,  913,  913, 1965, 1987,
2273
2274       868,  914,  914,  914,  874,  915,  915,  915, 2013,  915,
2275      1984, 1983,  915,  913,  918,  918,  918, 1979,  914,  920,
2276       920,  920, 1997,  920, 1991, 1980,  920,  884,  923,  923,
2277       923, 1410,  918,  924,  924,  924, 1987,  924, 1992, 1409,
2278       924,  929,  929,  929, 1984,  923,  925,  925,  925,  913,
2279       925, 1408, 2013,  925,  932,  932,  932, 1988, 1998,  929,
2280       918,  933,  933,  933, 1997,  933, 2007, 2014,  933, 2008,
2281      1992,  932,  934,  934,  934,  935,  935,  935,  939,  939,
2282       939,  941,  941,  941,  945,  945,  945, 1407,  929,  934,
2283       946,  946,  946,  935, 1988, 2007,  939, 2005, 2008,  941,
2284
2285      1998,  945,  947,  947,  947, 2017, 2006,  946,  948,  948,
2286       948, 2014,  949,  949,  949,  950,  950,  950, 2011, 2017,
2287       947,  935,  951,  951,  951,  948,  955,  955,  955,  941,
2288       949, 2005,  950,  946,  952,  952,  952, 2012,  952,  951,
2289      2006,  952, 1406,  955,  956,  956,  956, 2011,  957,  957,
2290       957,  958,  958,  958,  959,  959,  959,  960,  960,  960,
2291      2009,  956, 2010, 1405,  947,  957, 2012, 1394,  958, 2009,
2292       949, 2010,  959, 1393, 2015,  960, 1392,  964,  964,  964,
2293       965,  965,  965, 1391,  951, 2016,  967,  967,  967, 2018,
2294       967, 1390,  957,  967,  964,  970,  970,  970,  965,  970,
2295
2296      2018, 1389,  970, 2015,  974,  974,  974,  975,  975,  975,
2297       956,  987,  987,  987, 2016,  959, 1388,  958,  974,  960,
2298       964, 1387,  977,  977,  977,  975,  977, 1381,  987,  977,
2299       981,  981,  981,  965,  981, 1380, 1379,  981,  984,  984,
2300       984,  985,  985,  985,  988,  988,  988, 1378,  988, 1377,
2301      1376,  988,  991,  991,  991, 1375,  984, 1374, 1373,  985,
2302       993,  993,  993,  994,  994,  994,  997,  997,  997,  975,
2303       991, 1005, 1005, 1005, 1017, 1017, 1017,  993, 1018, 1018,
2304      1018,  994, 1372, 1366,  997, 1024, 1024, 1024, 1017, 1005,
2305      1363, 1361, 1018, 1359,  985, 1025, 1025, 1025,  991, 1024,
2306
2307       984, 1027, 1027, 1027, 1029, 1029, 1029, 1355, 1354, 1025,
2308      1030, 1030, 1030, 1335,  997, 1027, 1333, 1332, 1029, 1322,
2309      1005, 1031, 1031, 1031, 1030, 1031,  994, 1317, 1031, 1314,
2310       997, 1034, 1034, 1034, 1017, 1035, 1035, 1035, 1313, 1035,
2311      1310, 1296, 1035, 1293, 1292, 1024, 1052, 1052, 1052, 1034,
2312      1040, 1040, 1040, 1042, 1042, 1042, 1291, 1042, 1277, 1276,
2313      1042, 1027, 1275, 1052, 1029, 1046, 1046, 1046, 1040, 1049,
2314      1049, 1049, 1274, 1049, 1273, 1272, 1049, 1053, 1053, 1053,
2315      1271, 1053, 1270, 1046, 1053, 1054, 1054, 1054, 1055, 1055,
2316      1055, 1056, 1056, 1056, 1034, 1057, 1057, 1057, 1040, 1058,
2317
2318      1058, 1058, 1269, 1054, 1268, 1055, 1264, 1263, 1056, 1060,
2319      1060, 1060, 1057, 1061, 1061, 1061, 1260, 1058, 1065, 1065,
2320      1065, 1259, 1046, 1066, 1066, 1066, 1060, 1066, 1257, 1255,
2321      1066, 1061, 1249, 1054, 1247, 1065, 1067, 1067, 1067, 1068,
2322      1068, 1068, 1244, 1068, 1243, 1056, 1068, 1070, 1070, 1070,
2323      1071, 1071, 1071, 1067, 1072, 1072, 1072, 1061, 1072, 1239,
2324      1233, 1072, 1073, 1073, 1073, 1070, 1225, 1071, 1074, 1074,
2325      1074, 1075, 1075, 1075, 1223, 1075, 1222, 1221, 1075, 1214,
2326      1073, 1076, 1076, 1076, 1208, 1074, 1077, 1077, 1077, 1078,
2327      1078, 1078, 1207, 1078, 1206, 1204, 1078, 1202, 1076, 1079,
2328
2329      1079, 1079, 1179, 1077, 1080, 1080, 1080, 1081, 1081, 1081,
2330      1082, 1082, 1082, 1083, 1083, 1083, 1079, 1087, 1087, 1087,
2331      1178, 1080, 1177, 1172, 1081, 1088, 1088, 1088, 1082, 1088,
2332      1171, 1083, 1088, 1170, 1087, 1090, 1090, 1090, 1091, 1091,
2333      1091, 1157, 1092, 1092, 1092, 1094, 1094, 1094, 1095, 1095,
2334      1095, 1155, 1154, 1090, 1153, 1091, 1151, 1150, 1080, 1092,
2335      1147, 1083, 1146, 1094, 1144, 1095, 1096, 1096, 1096, 1097,
2336      1097, 1097, 1082, 1143, 1098, 1098, 1098, 1100, 1100, 1100,
2337      1141, 1100, 1140, 1096, 1100, 1139, 1137, 1097, 1098, 1105,
2338      1105, 1105, 1098, 1094, 1107, 1107, 1107, 1108, 1108, 1108,
2339
2340      1133, 1108, 1092, 1132, 1108, 1131, 1128, 1105, 1125, 1096,
2341      1124, 1107, 1109, 1109, 1109, 1123, 1122, 1097, 1115, 1115,
2342      1115, 1116, 1116, 1116, 1117, 1117, 1117, 1118, 1118, 1118,
2343      1109, 1134, 1134, 1134, 1121, 1115, 1120, 1105, 1116, 1119,
2344      1114, 1117, 1135, 1135, 1135, 1118, 1136, 1136, 1136, 1138,
2345      1138, 1138, 1142, 1142, 1142, 1106, 1145, 1145, 1145, 1148,
2346      1148, 1148, 1149, 1149, 1149, 1104, 1103, 1109, 1099, 1093,
2347      1142, 1089, 1086, 1116, 1145, 1085, 1084, 1148, 1069, 1149,
2348      1064, 1117, 1063, 1062, 1118, 1158, 1158, 1158, 1048, 1158,
2349      1045, 1041, 1158, 1161, 1161, 1161, 1162, 1162, 1162, 1142,
2350
2351      1039, 1163, 1163, 1163, 1038, 1163, 1028, 1161, 1163, 1026,
2352      1023, 1161, 1020, 1162, 1148, 1164, 1164, 1164, 1165, 1165,
2353      1165, 1166, 1166, 1166, 1019, 1166, 1016, 1014, 1166, 1167,
2354      1167, 1167, 1164, 1013, 1012, 1165, 1168, 1168, 1168, 1010,
2355      1168, 1008, 1007, 1168, 1006, 1003, 1167, 1169, 1169, 1169,
2356      1173, 1173, 1173, 1002, 1173,  999,  996, 1173,  992, 1176,
2357      1176, 1176,  990, 1176,  989, 1169, 1176, 1180, 1180, 1180,
2358      1182, 1182, 1182,  986, 1182,  980,  976, 1182, 1185, 1185,
2359      1185,  973, 1187, 1187, 1187, 1180, 1187,  966,  963, 1187,
2360      1190, 1190, 1190, 1169,  962,  961, 1185, 1191, 1191, 1191,
2361
2362       944, 1191,  943,  942, 1191,  940,  938, 1190, 1192, 1192,
2363      1192,  937, 1192,  936,  931, 1192, 1195, 1195, 1195, 1196,
2364      1196, 1196,  928, 1196,  919,  917, 1196, 1197, 1197, 1197,
2365      1198, 1198, 1198, 1195, 1199, 1199, 1199,  916, 1199,  910,
2366       909, 1199,  908,  907, 1197,  906,  905, 1198, 1200, 1200,
2367      1200, 1201, 1201, 1201, 1203, 1203, 1203, 1205, 1205, 1205,
2368       903, 1205,  902,  899, 1205,  898, 1200,  897,  895, 1201,
2369       894, 1203, 1209, 1209, 1209, 1211, 1211, 1211, 1212, 1212,
2370      1212,  892, 1212,  891,  889, 1212, 1213, 1213, 1213,  887,
2371      1209,  886, 1211, 1216, 1216, 1216, 1200, 1203, 1215, 1215,
2372
2373      1215,  885,  883, 1213, 1218, 1218, 1218, 1219, 1219, 1219,
2374      1216, 1201, 1215, 1217, 1217, 1217, 1215, 1217,  882,  881,
2375      1217, 1218, 1220, 1220, 1220, 1219, 1224, 1224, 1224, 1226,
2376      1226, 1226,  880, 1226,  879,  870, 1226,  869, 1213,  864,
2377      1220, 1229, 1229, 1229, 1224, 1234, 1234, 1234, 1235, 1235,
2378      1235,  863, 1235,  861,  847, 1235, 1236, 1236, 1236, 1229,
2379       844, 1218, 1234, 1237, 1237, 1237,  839,  838, 1220,  833,
2380      1238, 1238, 1238, 1236, 1240, 1240, 1240, 1241, 1241, 1241,
2381      1237, 1242, 1242, 1242, 1245, 1245, 1245, 1224, 1238, 1229,
2382      1246, 1246, 1246, 1248, 1248, 1248, 1250, 1250, 1250, 1251,
2383
2384      1251, 1251, 1252, 1252, 1252, 1253, 1253, 1253, 1254, 1254,
2385      1254,  828, 1236, 1256, 1256, 1256, 1258, 1258, 1258, 1261,
2386      1261, 1261, 1265, 1265, 1265,  827, 1237, 1266, 1266, 1266,
2387      1238, 1267, 1267, 1267, 1258, 1267,  826, 1261, 1267,  822,
2388      1265, 1278, 1278, 1278, 1266, 1279, 1279, 1279,  810, 1279,
2389       809,  808, 1279, 1282, 1282, 1282, 1283, 1283, 1283, 1278,
2390      1283,  807,  798, 1283, 1258, 1284, 1284, 1284,  797, 1284,
2391      1282,  792, 1284, 1287, 1287, 1287,  784, 1287,  783,  782,
2392      1287, 1290, 1290, 1290, 1297, 1297, 1297, 1278, 1297,  781,
2393       777, 1297,  772, 1300, 1300, 1300,  767, 1300,  766, 1290,
2394
2395      1300, 1303, 1303, 1303, 1304, 1304, 1304,  765, 1304,  757,
2396       755, 1304, 1305, 1305, 1305,  749, 1305,  740, 1303, 1305,
2397      1308, 1308, 1308, 1309, 1309, 1309, 1311, 1311, 1311, 1312,
2398      1312, 1312, 1290, 1312,  735,  724, 1312,  723, 1308,  722,
2399       721, 1309,  719, 1311, 1318, 1318, 1318,  717, 1318,  716,
2400       715, 1318, 1321, 1321, 1321, 1323, 1323, 1323, 1324, 1324,
2401      1324,  714, 1324,  713,  712, 1324, 1327, 1327, 1327, 1321,
2402      1328, 1328, 1328, 1323, 1330, 1330, 1330, 1331, 1331, 1331,
2403      1308,  711,  709, 1327, 1334, 1334, 1334,  708, 1328, 1337,
2404      1337, 1337, 1330,  706, 1331, 1336, 1336, 1336, 1321, 1340,
2405
2406      1340, 1340, 1334,  705, 1341, 1341, 1341, 1337, 1341,  704,
2407      1323, 1341,  703, 1336, 1344, 1344, 1344, 1345, 1345, 1345,
2408       702,  701, 1327, 1346, 1346, 1346, 1347, 1347, 1347,  700,
2409       695, 1344,  694,  693, 1345,  692, 1330, 1348, 1348, 1348,
2410       689, 1346, 1349, 1349, 1349, 1334, 1350, 1350, 1350,  688,
2411       687, 1336, 1351, 1351, 1351, 1352, 1352, 1352, 1353, 1353,
2412      1353, 1356, 1356, 1356, 1357, 1357, 1357, 1344, 1358, 1358,
2413      1358, 1360, 1360, 1360, 1362, 1362, 1362,  685, 1346, 1345,
2414      1365, 1365, 1365, 1367, 1367, 1367, 1369, 1369, 1369,  681,
2415      1369,  678, 1362, 1369, 1382, 1382, 1382, 1365, 1383, 1383,
2416
2417      1383, 1367, 1383,  677,  674, 1383, 1386, 1386, 1386, 1395,
2418      1395, 1395, 1382, 1395,  673,  672, 1395, 1398, 1398, 1398,
2419      1399, 1399, 1399,  671, 1386, 1401, 1401, 1401,  663, 1402,
2420      1402, 1402,  661, 1402,  658, 1398, 1402,  657, 1399, 1416,
2421      1416, 1416, 1401, 1417, 1417, 1417, 1418, 1418, 1418,  654,
2422       651, 1382, 1423, 1423, 1423,  650, 1416, 1424, 1424, 1424,
2423      1425, 1425, 1425,  649, 1418, 1427, 1427, 1427, 1401, 1423,
2424       646,  639, 1426, 1426, 1426, 1424, 1426, 1425,  638, 1426,
2425       637,  636, 1427, 1429, 1429, 1429, 1430, 1430, 1430, 1431,
2426      1431, 1431, 1432, 1432, 1432, 1423, 1435, 1435, 1435,  627,
2427
2428       622, 1429, 1436, 1436, 1436,  621,  620, 1431,  619, 1418,
2429      1432,  616,  613, 1424, 1437, 1437, 1437,  610,  609, 1436,
2430      1438, 1438, 1438, 1439, 1439, 1439, 1440, 1440, 1440,  608,
2431       603, 1437, 1441, 1441, 1441, 1446, 1446, 1446, 1438, 1449,
2432      1449, 1449, 1450, 1450, 1450,  602, 1450,  601,  600, 1450,
2433      1432, 1431,  597, 1446,  595,  591, 1449, 1462, 1462, 1462,
2434       587,  586, 1437, 1463, 1463, 1463, 1472, 1472, 1472, 1473,
2435      1473, 1473, 1475, 1475, 1475, 1462,  583,  580, 1476, 1476,
2436      1476, 1463, 1476, 1472,  579, 1476,  578, 1473,  577, 1475,
2437      1484, 1484, 1484, 1491, 1491, 1491, 1492, 1492, 1492,  576,
2438
2439      1492,  575,  574, 1492, 1493, 1493, 1493, 1484,  573,  572,
2440      1491,  571,  570, 1462, 1494, 1494, 1494, 1501, 1501, 1501,
2441      1502, 1502, 1502, 1503, 1503, 1503,  569, 1503,  568,  567,
2442      1503,  566, 1494,  565, 1501, 1506, 1506, 1506, 1502, 1507,
2443      1507, 1507,  564, 1507,  563,  562, 1507,  561, 1508, 1508,
2444      1508,  560, 1506, 1509, 1509, 1509, 1511, 1511, 1511, 1512,
2445      1512, 1512,  559,  558, 1501, 1508,  557,  556, 1494,  555,
2446       552, 1509, 1516, 1516, 1516,  551,  550, 1512, 1501, 1517,
2447      1517, 1517,  548, 1517,  547,  546, 1517,  545,  544, 1516,
2448      1518, 1518, 1518, 1519, 1519, 1519, 1525, 1525, 1525, 1526,
2449
2450      1526, 1526,  540, 1526,  538,  537, 1526, 1518, 1540, 1540,
2451      1540, 1519,  536, 1525, 1546, 1546, 1546, 1547, 1547, 1547,
2452       535, 1547,  532,  531, 1547,  530, 1540,  529, 1548, 1548,
2453      1548, 1546, 1548,  528,  527, 1548, 1556, 1556, 1556, 1557,
2454      1557, 1557,  524, 1557,  520,  519, 1557, 1564, 1564, 1564,
2455       518, 1564,  517, 1556, 1564, 1567, 1567, 1567, 1574, 1574,
2456      1574, 1575, 1575, 1575, 1540, 1576, 1576, 1576,  516,  513,
2457      1578, 1578, 1578, 1567, 1578, 1574,  512, 1578, 1575, 1581,
2458      1581, 1581,  511, 1576, 1582, 1582, 1582,  510, 1582,  509,
2459       508, 1582, 1583, 1583, 1583,  505, 1581, 1588, 1588, 1588,
2460
2461       504, 1588,  503,  502, 1588, 1591, 1591, 1591,  500,  497,
2462      1583, 1592, 1592, 1592,  493, 1592,  492, 1567, 1592, 1574,
2463       491, 1575, 1591, 1593, 1593, 1593, 1595, 1595, 1595, 1597,
2464      1597, 1597, 1598, 1598, 1598,  490, 1598,  489,  488, 1598,
2465      1614, 1614, 1614, 1615, 1615, 1615, 1597, 1618, 1618, 1618,
2466       485, 1618,  482,  481, 1618, 1622, 1622, 1622, 1614,  477,
2467      1615, 1624, 1624, 1624,  476, 1624,  475,  474, 1624, 1637,
2468      1637, 1637, 1622, 1644, 1644, 1644, 1645, 1645, 1645, 1655,
2469      1655, 1655, 1651, 1651, 1651,  473, 1615, 1637, 1614,  471,
2470      1644,  468,  467, 1645, 1646, 1646, 1646,  464, 1646, 1651,
2471
2472      1651, 1646, 1652, 1652, 1652,  463, 1652,  462,  461, 1652,
2473      1657, 1657, 1657, 1659, 1659, 1659,  457, 1659,  456,  455,
2474      1659, 1637, 1645, 1666, 1666, 1666, 1675, 1675, 1675, 1676,
2475      1676, 1676, 1677, 1677, 1677, 1644, 1677,  454,  450, 1677,
2476      1666, 1682, 1682, 1682, 1675,  449, 1676, 1683, 1683, 1683,
2477       448, 1683,  447,  446, 1683, 1695, 1695, 1695, 1682, 1702,
2478      1702, 1702, 1703, 1703, 1703, 1705, 1705, 1705, 1706, 1706,
2479      1706,  444, 1675, 1695,  441,  440, 1702,  438,  436, 1703,
2480       433,  432, 1705, 1705,  429, 1706, 1706,  427, 1707, 1707,
2481      1707,  424, 1707,  423,  421, 1707, 1708, 1708, 1708, 1709,
2482
2483      1709, 1709, 1702,  420,  419, 1703, 1707, 1714, 1714, 1714,
2484      1715, 1715, 1715,  418, 1715,  417,  416, 1715, 1724, 1724,
2485      1724, 1725, 1725, 1725, 1714, 1725,  413,  412, 1725, 1732,
2486      1732, 1732,  411, 1733, 1733, 1733, 1724, 1733,  410,  409,
2487      1733, 1736, 1736, 1736,  408,  407, 1732, 1747, 1747, 1747,
2488      1755, 1755, 1755, 1756, 1756, 1756,  406, 1756, 1736,  405,
2489      1756, 1757, 1757, 1757,  402, 1747,  401, 1755, 1758, 1758,
2490      1758,  400, 1759, 1759, 1759,  399, 1759,  398, 1757, 1759,
2491      1724, 1760, 1760, 1760,  392, 1758, 1762, 1762, 1762, 1763,
2492      1763, 1763,  391, 1763,  389,  383, 1763,  379, 1760, 1767,
2493
2494      1767, 1767,  376, 1762, 1762,  375,  371, 1763,  370, 1764,
2495      1764, 1764,  369, 1764,  368,  364, 1764, 1768, 1768, 1768,
2496       358, 1773, 1773, 1773,  354, 1773, 1757, 1764, 1773, 1788,
2497      1788, 1788,  351, 1788,  347,  346, 1788,  345, 1782, 1782,
2498      1782,  344, 1787, 1787, 1787,  340, 1760, 1765, 1765, 1765,
2499      1765, 1765, 1765, 1765, 1765, 1765, 1782,  337, 1765, 1787,
2500      1789, 1789, 1789, 1765, 1765, 1765, 1765, 1765, 1790, 1790,
2501      1790,  331, 1790,  330,  326, 1790,  323, 1789, 1805, 1805,
2502      1805,  318, 1805,  317,  316, 1805, 1808, 1808, 1808, 1765,
2503      1765, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766,
2504
2505       312,  306, 1766, 1808, 1812, 1812, 1812, 1766, 1766, 1766,
2506      1766, 1766, 1809, 1809, 1809,  302, 1809,  296,  295, 1809,
2507       293, 1812, 1814, 1814, 1814,  292, 1814,  287,  281, 1814,
2508      1829, 1829, 1829, 1766, 1766, 1835, 1835, 1835, 1808, 1835,
2509      1814,  280, 1835, 1838, 1838, 1838,  276, 1838, 1829,  273,
2510      1838,  269, 1853, 1853, 1853,  268, 1812, 1817, 1817, 1817,
2511      1817, 1817, 1817, 1817, 1817, 1817,  267,  265, 1817, 1853,
2512      1854, 1854, 1854, 1817, 1817, 1817, 1817, 1817, 1861, 1861,
2513      1861, 1868, 1868, 1868, 1894, 1894, 1894, 1854, 1894,  261,
2514       258, 1894,  255, 1869, 1869, 1869, 1861, 1861, 1868, 1817,
2515
2516      1817, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818,
2517      1869,  253, 1818,  249, 1853,  243,  242, 1818, 1818, 1818,
2518      1818, 1818, 1870, 1870, 1870, 1871, 1871, 1871, 1884, 1884,
2519      1884,  241, 1854, 1885, 1885, 1885, 1886, 1886, 1886, 1870,
2520       240,  236, 1871, 1818, 1818, 1884, 1890, 1890, 1890,  230,
2521      1885, 1893, 1893, 1893, 1886, 1895, 1895, 1895,  229, 1896,
2522      1896, 1896,  228, 1896, 1890, 1870, 1896,  224, 1893, 1897,
2523      1897, 1897, 1895, 1898, 1898, 1898,  221, 1898,  216, 1884,
2524      1898, 1900, 1900, 1900, 1885,  214, 1897,  213, 1901, 1901,
2525      1901,  209, 1901,  206, 1890, 1901,  204,  203, 1900, 1906,
2526
2527      1906, 1906, 1907, 1907, 1907, 1908, 1908, 1908, 1912, 1912,
2528      1912,  202, 1912,  198,  192, 1912, 1906,  188,  184, 1907,
2529      1915, 1915, 1915, 1908, 1915,  178,  177, 1915, 1918, 1918,
2530      1918,  173, 1918,  169,  168, 1918, 1922, 1922, 1922,  167,
2531      1922, 1908, 1906, 1922,  161, 1907, 1929, 1929, 1929, 1930,
2532      1930, 1930, 1938, 1938, 1938, 1939, 1939, 1939, 1946, 1946,
2533      1946,  160,  158, 1929,  155,  143, 1930,    0,    0, 1938,
2534         0,    0, 1939,    0,    0, 1946, 1947, 1947, 1947, 1949,
2535      1949, 1949, 1954, 1954, 1954, 1955, 1955, 1955, 1957, 1957,
2536      1957,    0,    0, 1947,    0,    0, 1949,    0,    0, 1954,
2537
2538         0,    0, 1955, 1929,    0, 1957, 1930,    0,    0, 1946,
2539         0, 1958, 1958, 1958, 1938, 1958,    0, 1939, 1958, 1963,
2540      1963, 1963, 1964, 1964, 1964,    0,    0, 1947,    0,    0,
2541      1954,    0,    0, 1955,    0,    0, 1963,    0,    0, 1964,
2542      1966, 1966, 1966,    0, 1966,    0,    0, 1966, 1971, 1971,
2543      1971, 1972, 1972, 1972, 1973, 1973, 1973, 1974, 1974, 1974,
2544      1975, 1975, 1975,    0,    0, 1971,    0,    0, 1972, 1976,
2545      1976, 1976, 1973, 1976, 1974,    0, 1976, 1975,    0, 1963,
2546         0,    0, 1964, 1977, 1977, 1977,    0, 1976, 1978, 1978,
2547      1978, 1971,    0,    0, 1972, 1981, 1981, 1981,    0,    0,
2548
2549      1977,    0, 1982, 1982, 1982, 1978, 1985, 1985, 1985, 1986,
2550      1986, 1986, 1981, 1989, 1989, 1989,    0,    0, 1974, 1982,
2551      1975,    0,    0, 1985,    0,    0, 1986, 1990, 1990, 1990,
2552      1989, 1977, 1993, 1993, 1993,    0, 1978,    0, 1994, 1994,
2553      1994,    0, 1994,    0, 1990, 1994,    0,    0, 1982, 1993,
2554         0, 1981,    0, 1985, 1995, 1995, 1995, 1996, 1996, 1996,
2555         0, 1996,    0,    0, 1996, 1999, 1999, 1999,    0, 1999,
2556         0, 1995, 1999, 1986, 2002, 2002, 2002,    0, 2002,    0,
2557         0, 2002, 2019, 2019, 2019, 2020, 2020, 2020,    0,    0,
2558         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2559
2560      2019,    0,    0, 2020, 2023, 2023, 2023, 2023, 2023, 2023,
2561      2023, 2023, 2023, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
2562      2024, 2024, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025,
2563      2025, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026,
2564      2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2028,
2565      2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2029, 2029,
2566      2029, 2029, 2029, 2029, 2029, 2029, 2029, 2030, 2030, 2030,
2567      2030, 2030, 2030, 2030, 2030, 2030, 2031, 2031, 2031, 2031,
2568      2031, 2031, 2031, 2031, 2031, 2032, 2032, 2032, 2032, 2032,
2569      2032, 2032, 2032, 2032, 2033, 2033, 2033, 2033, 2033, 2033,
2570
2571      2033, 2033, 2033, 2034, 2034, 2034, 2034, 2034, 2034, 2034,
2572      2034, 2034, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035,
2573      2035, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036,
2574      2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2038,
2575      2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2039, 2039,
2576      2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2040, 2040,
2577      2040, 2040, 2040, 2040, 2040, 2040, 2041, 2041, 2041, 2041,
2578      2041, 2041, 2041, 2041, 2041, 2042, 2042, 2042, 2042, 2042,
2579      2042, 2042, 2042, 2042, 2043, 2043, 2043, 2043, 2043, 2043,
2580      2043, 2043, 2043, 2044, 2044, 2044, 2044, 2044, 2044, 2044,
2581
2582      2044, 2044, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045,
2583      2045, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046,
2584      2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2048,
2585      2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2049, 2049,
2586      2049, 2049, 2049, 2049, 2049, 2049, 2049, 2050, 2050, 2050,
2587      2050, 2050, 2050, 2050, 2050, 2050, 2051, 2051, 2051, 2051,
2588      2051, 2051, 2051, 2051, 2051, 2052, 2052, 2052, 2052, 2052,
2589      2052, 2052, 2052, 2052, 2053, 2053, 2053, 2053, 2053, 2053,
2590      2053, 2053, 2053, 2054, 2054, 2054, 2054, 2054, 2054, 2054,
2591      2054, 2054, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055,
2592
2593      2055, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056,
2594      2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2058,
2595      2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2059, 2059,
2596      2059, 2059, 2059, 2059, 2059, 2059, 2059, 2060, 2060, 2060,
2597      2060, 2060, 2060, 2060, 2060, 2060, 2061, 2061, 2061, 2061,
2598      2061, 2061, 2061, 2061, 2061, 2062, 2062, 2062,    0,    0,
2599         0, 2062, 2063, 2063, 2063,    0,    0,    0, 2063, 2064,
2600      2064, 2064,    0,    0,    0, 2064, 2065, 2065, 2065,    0,
2601         0,    0, 2065, 2066, 2066, 2066,    0,    0,    0, 2066,
2602      2067, 2067, 2067,    0,    0,    0, 2067, 2068, 2068, 2068,
2603
2604         0,    0,    0, 2068, 2069, 2069, 2069,    0,    0,    0,
2605      2069, 2070, 2070, 2070,    0,    0,    0, 2070, 2071, 2071,
2606      2071,    0,    0,    0, 2071, 2072, 2072, 2072,    0,    0,
2607         0, 2072, 2073, 2073, 2073,    0,    0,    0, 2073, 2074,
2608      2074, 2074,    0,    0,    0, 2074, 2075, 2075, 2075,    0,
2609         0,    0, 2075, 2076, 2076, 2076,    0,    0,    0, 2076,
2610      2077, 2077, 2077,    0,    0,    0, 2077, 2078, 2078, 2078,
2611         0,    0,    0, 2078, 2079, 2079, 2079, 2079, 2079, 2079,
2612      2079,    0, 2079, 2080,    0,    0,    0, 2080, 2081,    0,
2613         0,    0, 2081, 2082,    0,    0,    0, 2082, 2083,    0,
2614
2615         0,    0, 2083, 2084,    0,    0,    0, 2084, 2085,    0,
2616         0,    0, 2085, 2086,    0,    0,    0, 2086, 2087,    0,
2617         0,    0, 2087, 2088,    0,    0,    0, 2088, 2089, 2089,
2618      2089,    0,    0,    0, 2089, 2090,    0,    0,    0, 2090,
2619      2091, 2091, 2091,    0,    0,    0, 2091, 2092,    0,    0,
2620         0, 2092, 2093, 2093, 2093,    0,    0,    0, 2093, 2094,
2621         0,    0,    0, 2094, 2095, 2095, 2095,    0,    0,    0,
2622      2095, 2096,    0,    0,    0, 2096, 2097, 2097, 2097,    0,
2623         0,    0, 2097, 2098,    0,    0,    0, 2098, 2099, 2099,
2624      2099,    0,    0,    0, 2099, 2100,    0,    0,    0, 2100,
2625
2626      2101, 2101, 2101,    0,    0,    0, 2101, 2102,    0,    0,
2627         0, 2102, 2103, 2103, 2103,    0,    0,    0, 2103, 2104,
2628         0,    0,    0, 2104, 2105, 2105, 2105, 2105, 2105, 2105,
2629      2105, 2105, 2105, 2106,    0,    0,    0,    0, 2106, 2107,
2630      2107, 2107,    0,    0,    0, 2107, 2108, 2108, 2108, 2108,
2631         0,    0, 2108, 2108, 2109, 2109, 2109,    0,    0,    0,
2632      2109, 2110, 2110, 2110, 2110,    0,    0, 2110, 2110, 2111,
2633      2111, 2111,    0,    0,    0, 2111, 2112, 2112, 2112, 2112,
2634         0,    0, 2112, 2112, 2113, 2113, 2113,    0,    0,    0,
2635      2113, 2114, 2114, 2114, 2114,    0,    0, 2114, 2114, 2115,
2636
2637      2115, 2115,    0,    0,    0, 2115, 2116, 2116, 2116, 2116,
2638         0,    0, 2116, 2116, 2117, 2117, 2117,    0,    0,    0,
2639      2117, 2118, 2118, 2118, 2118,    0,    0, 2118, 2118, 2119,
2640      2119, 2119,    0,    0,    0, 2119, 2120, 2120, 2120, 2120,
2641         0,    0, 2120, 2120, 2121, 2121, 2121,    0,    0,    0,
2642      2121, 2122, 2122, 2122, 2122,    0,    0, 2122, 2122, 2123,
2643      2123, 2123,    0,    0,    0, 2123, 2124, 2124, 2124, 2124,
2644         0,    0, 2124, 2124, 2125, 2125, 2125,    0,    0,    0,
2645      2125, 2126, 2126, 2126, 2126,    0,    0, 2126, 2126, 2127,
2646      2127, 2127, 2127,    0,    0, 2127, 2127, 2128, 2128, 2128,
2647
2648         0,    0,    0, 2128, 2129, 2129, 2129, 2129,    0,    0,
2649      2129, 2129, 2130, 2130, 2130,    0,    0,    0, 2130, 2131,
2650      2131, 2131, 2131,    0,    0, 2131, 2131, 2132, 2132, 2132,
2651         0,    0,    0, 2132, 2133, 2133, 2133, 2133,    0,    0,
2652      2133, 2133, 2134, 2134, 2134, 2134,    0,    0, 2134, 2134,
2653      2135, 2135, 2135,    0,    0,    0, 2135, 2136, 2136, 2136,
2654      2136,    0,    0, 2136, 2136, 2137, 2137, 2137,    0,    0,
2655         0, 2137, 2138, 2138, 2138, 2138,    0,    0, 2138, 2138,
2656      2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2140,
2657         0, 2140,    0,    0, 2140, 2141, 2141, 2141,    0,    0,
2658
2659         0, 2141, 2142, 2142, 2142, 2142,    0,    0, 2142, 2142,
2660      2143, 2143, 2143, 2143,    0, 2143,    0, 2143, 2144, 2144,
2661      2144, 2144,    0,    0, 2144, 2144, 2145, 2145, 2145, 2145,
2662         0, 2145,    0, 2145, 2146, 2146, 2146, 2146,    0,    0,
2663      2146, 2146, 2147, 2147, 2147,    0,    0,    0, 2147, 2148,
2664      2148, 2148, 2148,    0,    0, 2148, 2148, 2149, 2149, 2149,
2665         0,    0,    0, 2149, 2150, 2150, 2150, 2150,    0,    0,
2666      2150, 2150, 2151, 2151, 2151,    0,    0,    0, 2151, 2152,
2667      2152, 2152, 2152,    0,    0, 2152, 2152, 2153, 2153, 2153,
2668         0,    0,    0, 2153, 2154, 2154, 2154, 2154,    0,    0,
2669
2670      2154, 2154, 2155, 2155, 2155,    0,    0,    0, 2155, 2156,
2671      2156, 2156, 2156,    0,    0, 2156, 2156, 2157, 2157, 2157,
2672         0,    0,    0, 2157, 2158, 2158, 2158, 2158,    0,    0,
2673      2158, 2158, 2159, 2159, 2159,    0,    0,    0, 2159, 2160,
2674      2160, 2160, 2160,    0,    0, 2160, 2160, 2161, 2161, 2161,
2675      2161,    0,    0, 2161, 2161, 2162, 2162, 2162,    0,    0,
2676         0, 2162, 2163, 2163, 2163, 2163,    0,    0, 2163, 2163,
2677      2164, 2164, 2164,    0,    0,    0, 2164, 2165, 2165, 2165,
2678      2165,    0,    0, 2165, 2165, 2166, 2166, 2166,    0,    0,
2679         0, 2166, 2167, 2167, 2167, 2167,    0,    0, 2167, 2167,
2680
2681      2168, 2168, 2168, 2168,    0,    0, 2168, 2168, 2169, 2169,
2682      2169,    0,    0,    0, 2169, 2170, 2170, 2170, 2170,    0,
2683         0, 2170, 2170, 2171, 2171, 2171,    0,    0,    0, 2171,
2684      2172, 2172, 2172, 2172,    0,    0, 2172, 2172, 2173, 2173,
2685      2173, 2173, 2173, 2173, 2173, 2173, 2173, 2174, 2174, 2174,
2686      2174, 2174, 2174, 2174, 2174, 2174, 2175, 2175, 2175,    0,
2687         0,    0, 2175, 2176, 2176, 2176, 2176,    0,    0, 2176,
2688      2176, 2177, 2177, 2177, 2177,    0,    0, 2177, 2177, 2178,
2689      2178, 2178,    0,    0,    0, 2178, 2179, 2179, 2179, 2179,
2690         0,    0, 2179, 2179, 2180, 2180, 2180,    0,    0,    0,
2691
2692      2180, 2181, 2181, 2181, 2181,    0,    0, 2181, 2181, 2182,
2693      2182, 2182,    0,    0,    0, 2182, 2183, 2183, 2183, 2183,
2694         0,    0, 2183, 2183, 2184, 2184, 2184,    0,    0,    0,
2695      2184, 2185, 2185, 2185, 2185,    0,    0, 2185, 2185, 2186,
2696      2186, 2186,    0,    0,    0, 2186, 2187, 2187, 2187, 2187,
2697         0,    0, 2187, 2187, 2188, 2188, 2188,    0,    0,    0,
2698      2188, 2189, 2189, 2189, 2189,    0,    0, 2189, 2189, 2190,
2699      2190, 2190, 2190,    0, 2190,    0, 2190, 2191, 2191, 2191,
2700      2191,    0,    0, 2191, 2191, 2192, 2192, 2192, 2192,    0,
2701      2192,    0, 2192, 2193, 2193, 2193, 2193,    0,    0, 2193,
2702
2703      2193, 2194, 2194, 2194, 2194,    0,    0, 2194, 2194, 2195,
2704      2195, 2195,    0,    0,    0, 2195, 2196, 2196, 2196, 2196,
2705         0,    0, 2196, 2196, 2197, 2197, 2197,    0,    0,    0,
2706      2197, 2198, 2198, 2198, 2198,    0,    0, 2198, 2198, 2199,
2707      2199, 2199,    0,    0,    0, 2199, 2200, 2200, 2200, 2200,
2708         0,    0, 2200, 2200, 2201, 2201, 2201, 2201,    0,    0,
2709      2201, 2201, 2202, 2202, 2202,    0,    0,    0, 2202, 2203,
2710      2203, 2203, 2203,    0,    0, 2203, 2203, 2204, 2204, 2204,
2711      2204,    0, 2204,    0, 2204, 2205, 2205, 2205, 2205,    0,
2712         0, 2205, 2205, 2206, 2206, 2206, 2206, 2206, 2206, 2206,
2713
2714      2206, 2206, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207,
2715      2207, 2208, 2208, 2208,    0,    0,    0, 2208, 2209, 2209,
2716      2209, 2209,    0,    0, 2209, 2209, 2210, 2210, 2210, 2210,
2717         0,    0, 2210, 2210, 2211, 2211, 2211,    0,    0,    0,
2718      2211, 2212, 2212, 2212, 2212,    0,    0, 2212, 2212, 2213,
2719      2213, 2213,    0,    0,    0, 2213, 2214, 2214, 2214, 2214,
2720         0,    0, 2214, 2214, 2215, 2215, 2215,    0,    0,    0,
2721      2215, 2216, 2216, 2216, 2216,    0,    0, 2216, 2216, 2217,
2722      2217, 2217, 2217,    0, 2217,    0, 2217, 2218, 2218, 2218,
2723      2218,    0, 2218,    0, 2218, 2219, 2219, 2219, 2219,    0,
2724
2725         0, 2219, 2219, 2220, 2220, 2220,    0,    0,    0, 2220,
2726      2221, 2221, 2221, 2221,    0,    0, 2221, 2221, 2222, 2222,
2727      2222, 2222,    0,    0, 2222, 2222, 2223, 2223, 2223, 2223,
2728         0, 2223,    0, 2223, 2224, 2224, 2224, 2224,    0,    0,
2729      2224, 2224, 2225, 2225, 2225, 2225,    0,    0, 2225, 2225,
2730      2226, 2226, 2226,    0,    0,    0, 2226, 2227, 2227, 2227,
2731      2227,    0,    0, 2227, 2227, 2228, 2228, 2228, 2228,    0,
2732      2228,    0, 2228, 2229, 2229, 2229, 2229,    0,    0, 2229,
2733      2229, 2230, 2230, 2230, 2230,    0, 2230,    0, 2230, 2231,
2734      2231, 2231, 2231,    0,    0, 2231, 2231, 2232, 2232, 2232,
2735
2736      2232,    0,    0, 2232, 2232, 2233, 2233, 2233,    0,    0,
2737         0, 2233, 2234, 2234, 2234, 2234,    0,    0, 2234, 2234,
2738      2235, 2235, 2235, 2235,    0,    0, 2235, 2235, 2236, 2236,
2739      2236, 2236, 2236, 2236, 2236, 2236, 2236, 2237, 2237, 2237,
2740      2237, 2237, 2237, 2237, 2237, 2237, 2238, 2238, 2238, 2238,
2741         0, 2238,    0, 2238, 2239, 2239, 2239, 2239,    0,    0,
2742      2239, 2239, 2240, 2240, 2240, 2240,    0,    0, 2240, 2240,
2743      2241, 2241, 2241,    0,    0,    0, 2241, 2242, 2242, 2242,
2744      2242,    0,    0, 2242, 2242, 2243, 2243, 2243,    0,    0,
2745         0, 2243, 2244, 2244, 2244, 2244,    0,    0, 2244, 2244,
2746
2747      2245, 2245, 2245, 2245,    0, 2245,    0, 2245, 2246, 2246,
2748      2246, 2246,    0,    0, 2246, 2246, 2247, 2247, 2247, 2247,
2749         0, 2247,    0, 2247, 2248, 2248, 2248, 2248,    0,    0,
2750      2248, 2248, 2249, 2249, 2249,    0,    0,    0, 2249, 2250,
2751      2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2251, 2251,
2752      2251, 2251, 2251, 2251, 2251, 2251, 2251, 2252, 2252, 2252,
2753      2252, 2252, 2252, 2252, 2252, 2252, 2253, 2253, 2253, 2253,
2754      2253, 2253, 2253, 2253, 2253, 2254, 2254, 2254, 2254, 2254,
2755      2254, 2254, 2254, 2254, 2255, 2255, 2255, 2255, 2255, 2255,
2756      2255, 2255, 2255, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2757
2758      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2759      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2760      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2761      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2762      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2763      2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2764      2022, 2022, 2022
2765     } ;
2766
2767 /* Table of booleans, true if rule could match eol. */
2768 static yyconst flex_int32_t yy_rule_can_match_eol[352] =
2769     {   0,
2770 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 
2771     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 
2772     1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 
2773     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
2774     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 
2775     1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
2776     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
2777     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
2778     0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
2779     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
2780     0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 
2781     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
2782     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
2783     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
2784     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 
2785     1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
2786     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 
2787     1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,     };
2788
2789 static yy_state_type yy_last_accepting_state;
2790 static char *yy_last_accepting_cpos;
2791
2792 extern int surf_parse__flex_debug;
2793 int surf_parse__flex_debug = 0;
2794
2795 /* The intent behind this definition is that it'll catch
2796  * any uses of REJECT which flex missed.
2797  */
2798 #define REJECT reject_used_but_not_detected
2799 #define yymore() yymore_used_but_not_detected
2800 #define YY_MORE_ADJ 0
2801 #define YY_RESTORE_YY_MORE_OFFSET
2802 char *surf_parse_text;
2803 /* Validating XML processor for surf/simgrid.dtd.
2804  * Generated 2008/02/03 11:50:45.
2805  *
2806  * This program was generated with the FleXML XML processor generator.
2807  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
2808  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
2809  * (Id: flexml.pl,v 1.63 2007/10/11 14:46:08 mquinson Exp).
2810  * 
2811  * There are two, intertwined parts to this program, part A and part B.
2812  *
2813  * Part A
2814  * ------
2815  * 
2816  * Some parts, here collectively called "Part A", are found in the 
2817  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
2818  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
2819  *
2820  * You can redistribute, use, perform, display and/or modify "Part A"
2821  * provided the following two conditions hold:
2822  *
2823  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
2824  *    FleXML; without even the implied warranty of MERCHANTABILITY or
2825  *    FITNESS FOR A PARTICULAR PURPOSE.
2826  *
2827  * 2. The program distribution conditions do not in any way affect the
2828  *    distribution conditions of the FleXML system used to generate this
2829  *    file or any version of FleXML derived from that system.
2830  *
2831  * Notice that these are explicit rights granted to you for files
2832  * generated by the FleXML system.  For your rights in connection with
2833  * the FleXML system itself please consult the GNU General Public License.
2834  * 
2835  * Part B
2836  * ------
2837  * 
2838  * The other parts, here collectively called "Part B", and which came 
2839  * from the DTD used by FleXML to generate this program, can be 
2840  * distributed (or not, as the case may be) under the terms of whoever
2841  * wrote them, provided these terms respect and obey the two conditions 
2842  * above under the heading "Part A".
2843  *
2844  * The author of and contributors to FleXML specifically disclaim
2845  * any copyright interest in "Part B", unless "Part B" was written 
2846  * by the author of or contributors to FleXML.
2847  * 
2848  */
2849
2850 /* Version strings. */
2851 const char rcs_surfxml_flexml_skeleton[] =
2852  "$" "Id: skel,v 1.40 2007/10/11 09:57:24 mquinson Exp $";
2853 const char rcs_surfxml_flexml[] =
2854  "$" "Id: flexml.pl,v 1.63 2007/10/11 14:46:08 mquinson Exp $";
2855
2856 /* ANSI headers. */
2857 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
2858 #include <stdio.h>
2859 #include <string.h>
2860 #include <assert.h>
2861 #include <stdarg.h>
2862 #include <ctype.h>
2863      
2864 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
2865 # ifndef __STRICT_ANSI__
2866 #  include <io.h>
2867 #  include <process.h>
2868 # endif
2869 #else
2870 # include <unistd.h>
2871 #endif
2872      
2873 #ifndef FLEXML_INDEXSTACKSIZE
2874 #define FLEXML_INDEXSTACKSIZE 1000
2875 #endif
2876
2877 /* Generated definitions. */
2878 #define FLEXML_yylineno
2879 #ifndef FLEXML_BUFFERSTACKSIZE
2880 #define FLEXML_BUFFERSTACKSIZE 1000000
2881 #endif
2882 #define FLEXML_NEED_BUFFERLIT
2883
2884 /* XML processor api. */
2885 /* FleXML-provided data. */
2886 int surfxml_pcdata_ix;
2887 extern char *surfxml_bufferstack;
2888 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
2889 AT_surfxml_random_generator AX_surfxml_random_generator;
2890 #define A_surfxml_random_generator AX_surfxml_random_generator
2891 AT_surfxml_prop_id AX_surfxml_prop_id;
2892 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
2893 AT_surfxml_host_interference_recv AX_surfxml_host_interference_recv;
2894 #define A_surfxml_host_interference_recv (surfxml_bufferstack + AX_surfxml_host_interference_recv)
2895 AT_surfxml_host_id AX_surfxml_host_id;
2896 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
2897 AT_surfxml_set_id AX_surfxml_set_id;
2898 #define A_surfxml_set_id (surfxml_bufferstack + AX_surfxml_set_id)
2899 AT_surfxml_link_latency_file AX_surfxml_link_latency_file;
2900 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
2901 AT_surfxml_host_state AX_surfxml_host_state;
2902 #define A_surfxml_host_state AX_surfxml_host_state
2903 AT_surfxml_host_interference_send_recv AX_surfxml_host_interference_send_recv;
2904 #define A_surfxml_host_interference_send_recv (surfxml_bufferstack + AX_surfxml_host_interference_send_recv)
2905 AT_surfxml_host_interference_send AX_surfxml_host_interference_send;
2906 #define A_surfxml_host_interference_send (surfxml_bufferstack + AX_surfxml_host_interference_send)
2907 AT_surfxml_set_suffix AX_surfxml_set_suffix;
2908 #define A_surfxml_set_suffix (surfxml_bufferstack + AX_surfxml_set_suffix)
2909 AT_surfxml_route_impact_on_dst AX_surfxml_route_impact_on_dst;
2910 #define A_surfxml_route_impact_on_dst (surfxml_bufferstack + AX_surfxml_route_impact_on_dst)
2911 AT_surfxml_host_power AX_surfxml_host_power;
2912 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
2913 AT_surfxml_router_id AX_surfxml_router_id;
2914 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
2915 AT_surfxml_process_start_time AX_surfxml_process_start_time;
2916 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
2917 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
2918 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
2919 AT_surfxml_platform_xmlns_c_route AX_surfxml_platform_xmlns_c_route;
2920 #define A_surfxml_platform_xmlns_c_route (surfxml_bufferstack + AX_surfxml_platform_xmlns_c_route)
2921 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
2922 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
2923 AT_surfxml_trace_file AX_surfxml_trace_file;
2924 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
2925 AT_surfxml_route_action AX_surfxml_route_action;
2926 #define A_surfxml_route_action AX_surfxml_route_action
2927 AT_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy;
2928 #define A_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy
2929 AT_surfxml_random_min AX_surfxml_random_min;
2930 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
2931 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
2932 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
2933 AT_surfxml_cluster_bb_bw AX_surfxml_cluster_bb_bw;
2934 #define A_surfxml_cluster_bb_bw (surfxml_bufferstack + AX_surfxml_cluster_bb_bw)
2935 AT_surfxml_trace_c_connect_element AX_surfxml_trace_c_connect_element;
2936 #define A_surfxml_trace_c_connect_element (surfxml_bufferstack + AX_surfxml_trace_c_connect_element)
2937 AT_surfxml_argument_value AX_surfxml_argument_value;
2938 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
2939 AT_surfxml_link_state AX_surfxml_link_state;
2940 #define A_surfxml_link_state AX_surfxml_link_state
2941 AT_surfxml_route_impact_on_src AX_surfxml_route_impact_on_src;
2942 #define A_surfxml_route_impact_on_src (surfxml_bufferstack + AX_surfxml_route_impact_on_src)
2943 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
2944 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
2945 AT_surfxml_cluster_id AX_surfxml_cluster_id;
2946 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
2947 AT_surfxml_random_mean AX_surfxml_random_mean;
2948 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
2949 AT_surfxml_cluster_bb_lat AX_surfxml_cluster_bb_lat;
2950 #define A_surfxml_cluster_bb_lat (surfxml_bufferstack + AX_surfxml_cluster_bb_lat)
2951 AT_surfxml_link_latency AX_surfxml_link_latency;
2952 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
2953 AT_surfxml_platform_xmlns_c_link AX_surfxml_platform_xmlns_c_link;
2954 #define A_surfxml_platform_xmlns_c_link (surfxml_bufferstack + AX_surfxml_platform_xmlns_c_link)
2955 AT_surfxml_link_bandwidth_file AX_surfxml_link_bandwidth_file;
2956 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
2957 AT_surfxml_random_id AX_surfxml_random_id;
2958 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
2959 AT_surfxml_set_radical AX_surfxml_set_radical;
2960 #define A_surfxml_set_radical (surfxml_bufferstack + AX_surfxml_set_radical)
2961 AT_surfxml_random_max AX_surfxml_random_max;
2962 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
2963 AT_surfxml_link_id AX_surfxml_link_id;
2964 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
2965 AT_surfxml_process_host AX_surfxml_process_host;
2966 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
2967 AT_surfxml_host_availability_file AX_surfxml_host_availability_file;
2968 #define A_surfxml_host_availability_file (surfxml_bufferstack + AX_surfxml_host_availability_file)
2969 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
2970 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
2971 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
2972 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
2973 AT_surfxml_foreach_set_id AX_surfxml_foreach_set_id;
2974 #define A_surfxml_foreach_set_id (surfxml_bufferstack + AX_surfxml_foreach_set_id)
2975 AT_surfxml_route_impact_on_dst_with_other_send AX_surfxml_route_impact_on_dst_with_other_send;
2976 #define A_surfxml_route_impact_on_dst_with_other_send (surfxml_bufferstack + AX_surfxml_route_impact_on_dst_with_other_send)
2977 AT_surfxml_prop_value AX_surfxml_prop_value;
2978 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
2979 AT_surfxml_route_impact_on_src_with_other_recv AX_surfxml_route_impact_on_src_with_other_recv;
2980 #define A_surfxml_route_impact_on_src_with_other_recv (surfxml_bufferstack + AX_surfxml_route_impact_on_src_with_other_recv)
2981 AT_surfxml_link_state_file AX_surfxml_link_state_file;
2982 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
2983 AT_surfxml_set_prefix AX_surfxml_set_prefix;
2984 #define A_surfxml_set_prefix (surfxml_bufferstack + AX_surfxml_set_prefix)
2985 AT_surfxml_cluster_power AX_surfxml_cluster_power;
2986 #define A_surfxml_cluster_power (surfxml_bufferstack + AX_surfxml_cluster_power)
2987 AT_surfxml_process_function AX_surfxml_process_function;
2988 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
2989 AT_surfxml_host_max_outgoing_rate AX_surfxml_host_max_outgoing_rate;
2990 #define A_surfxml_host_max_outgoing_rate (surfxml_bufferstack + AX_surfxml_host_max_outgoing_rate)
2991 AT_surfxml_link_c_ctn_id AX_surfxml_link_c_ctn_id;
2992 #define A_surfxml_link_c_ctn_id (surfxml_bufferstack + AX_surfxml_link_c_ctn_id)
2993 AT_surfxml_host_availability AX_surfxml_host_availability;
2994 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
2995 AT_surfxml_route_src AX_surfxml_route_src;
2996 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
2997 AT_surfxml_route_c_multi_src AX_surfxml_route_c_multi_src;
2998 #define A_surfxml_route_c_multi_src (surfxml_bufferstack + AX_surfxml_route_c_multi_src)
2999 AT_surfxml_route_c_multi_action AX_surfxml_route_c_multi_action;
3000 #define A_surfxml_route_c_multi_action AX_surfxml_route_c_multi_action
3001 AT_surfxml_trace_c_connect_trace AX_surfxml_trace_c_connect_trace;
3002 #define A_surfxml_trace_c_connect_trace (surfxml_bufferstack + AX_surfxml_trace_c_connect_trace)
3003 AT_surfxml_trace_id AX_surfxml_trace_id;
3004 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
3005 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
3006 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
3007 AT_surfxml_include_file AX_surfxml_include_file;
3008 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
3009 AT_surfxml_random_std_deviation AX_surfxml_random_std_deviation;
3010 #define A_surfxml_random_std_deviation (surfxml_bufferstack + AX_surfxml_random_std_deviation)
3011 AT_surfxml_trace_c_connect_kind AX_surfxml_trace_c_connect_kind;
3012 #define A_surfxml_trace_c_connect_kind AX_surfxml_trace_c_connect_kind
3013 AT_surfxml_route_c_multi_dst AX_surfxml_route_c_multi_dst;
3014 #define A_surfxml_route_c_multi_dst (surfxml_bufferstack + AX_surfxml_route_c_multi_dst)
3015 AT_surfxml_host_state_file AX_surfxml_host_state_file;
3016 #define A_surfxml_host_state_file (surfxml_bufferstack + AX_surfxml_host_state_file)
3017 AT_surfxml_route_c_multi_symmetric AX_surfxml_route_c_multi_symmetric;
3018 #define A_surfxml_route_c_multi_symmetric AX_surfxml_route_c_multi_symmetric
3019 AT_surfxml_route_dst AX_surfxml_route_dst;
3020 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
3021 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
3022 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
3023 AT_surfxml_platform_version AX_surfxml_platform_version;
3024 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
3025
3026 /* XML state. */
3027 #ifdef FLEX_DEBUG
3028 # define ENTER(state)   debug_enter(state,#state)
3029 # define LEAVE          debug_leave()
3030 # define SET(state)     debug_set(state,#state)
3031   static void debug_enter(int, const char*);
3032   static void debug_leave(void);
3033   static void debug_set(int, const char*);
3034 #else
3035 # define ENTER(state)   (yy_push_state(state))
3036 # define LEAVE          (yy_pop_state())
3037 # define SET(state)     BEGIN(state)
3038 #endif
3039
3040 /* Generic actions. */
3041 #define SKIP    /*skip*/
3042 #define SUCCEED        CLEANUP; return 0
3043
3044 #define FAIL    return fail
3045 static int fail(const char*, ...);
3046
3047 enum {flexml_max_err_msg_size = 512};
3048 static char flexml_err_msg[flexml_max_err_msg_size];
3049 const char * surfxml_parse_err_msg()
3050 {
3051     return flexml_err_msg;
3052 }
3053 static void reset_surfxml_parse_err_msg()
3054 {
3055     flexml_err_msg[0] = '\0';
3056 }
3057
3058 /* Cleanup */
3059 static void cleanup(void);
3060 #define CLEANUP  cleanup()
3061
3062 /* Text buffer stack handling. */
3063 char *surfxml_bufferstack = NULL;
3064 static int blimit = FLEXML_BUFFERSTACKSIZE;
3065 static int bnext = 1;
3066
3067 static int *indexstack = NULL;
3068 static int ilimit = FLEXML_INDEXSTACKSIZE;
3069 static int inext = 1;
3070
3071 #define BUFFERSET(P)  (P = bnext)
3072 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
3073 #define BUFFERDONE    (BUFFERPUTC('\0'))
3074
3075 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
3076
3077 /* after this is called, there are at least 2 slots left in the stack */
3078 static int ck_blimit()
3079 {
3080      if (bnext >= blimit) {
3081          blimit += FLEXML_BUFFERSTACKSIZE + 2;
3082          {
3083              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
3084              assert(temp);
3085              surfxml_bufferstack = temp;
3086          }
3087      }
3088      return 0;
3089 }
3090
3091 /* after this is called, there are at least 2 slots left in the stack */
3092 static int ck_ilimit()
3093 {
3094      if (inext >= ilimit) {
3095          ilimit += FLEXML_INDEXSTACKSIZE + 2;
3096          {
3097              int *temp = (int *) realloc(indexstack, ilimit);
3098              assert(temp);
3099              indexstack = temp;
3100          }
3101      }
3102      return 0;
3103 }
3104
3105 #ifdef FLEXML_NEED_BUFFERLIT
3106 static void surfxml_bufferliteral(char c, int* pp, const char* text)
3107 {
3108   const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
3109   assert(s <= e); BUFFERSET(*pp);
3110   while (++s<e) {
3111     if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
3112     else BUFFERPUTC(*s);
3113   }
3114   BUFFERDONE;
3115 }
3116 #endif
3117
3118 static void pushbuffer(int p)
3119 {
3120     ck_ilimit();
3121     indexstack[inext++] = p;
3122     indexstack[inext++] = bnext;    
3123 }
3124
3125 static int popbuffer(void)
3126 {
3127     assert(inext >= 2);
3128     bnext = indexstack[--inext];
3129     return indexstack[--inext];
3130 }
3131
3132 /* General internal entities are `unput' back onto the input stream... */
3133 #define ENTITYTEXT(T) \
3134   { char *s = (T), *e = s+strlen(s);\
3135     while (--e >= s) { unput(*e); }}
3136
3137 /* Flex standard options. */
3138 #define YY_NO_INPUT 1
3139 /* Flex user-requested options. */
3140 /* XML character classes (currently restricted to ASCII). */
3141 /* "Common syntactic structures." */
3142 /* "Names and Tokens." */
3143 /* Miscellaneous. */
3144 /* Parser states (flex `exclusive start conditions'):
3145  *
3146  * PROLOG       the XML prolog of the document before <?xml...>
3147  * DOCTYPE      the XML prolog of the document after <?xml...>
3148  * EPILOG       after the root element
3149  * INCOMMENT    inside an XML comment <!--....-->
3150  * INPI         inside an XML PI <?...?>
3151  * VALUE1       inside a '...'-delimited literal
3152  * VALUE2       inside a "..."-delimited literal
3153  * CDATA        inside a <![CDATA[...] ]> section.
3154  * ROOT_<tag>   expect root element <tag>
3155  * AL_<tag>     inside the attribute list for <tag>
3156  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
3157  * IMPOSSIBLE   dummy to permit disabling rules; must be last
3158  */
3159
3160 /* State names. */
3161 const char* *surfxml_statenames=NULL;
3162
3163 #define INITIAL 0
3164 #define PROLOG 1
3165 #define DOCTYPE 2
3166 #define EPILOG 3
3167 #define INCOMMENT 4
3168 #define INPI 5
3169 #define VALUE1 6
3170 #define VALUE2 7
3171 #define CDATA 8
3172 #define ROOT_surfxml_platform 9
3173 #define AL_surfxml_platform 10
3174 #define S_surfxml_platform 11
3175 #define S_surfxml_platform_1 12
3176 #define S_surfxml_platform_2 13
3177 #define S_surfxml_platform_3 14
3178 #define S_surfxml_platform_4 15
3179 #define S_surfxml_platform_5 16
3180 #define E_surfxml_platform 17
3181 #define AL_surfxml_include 18
3182 #define E_surfxml_include 19
3183 #define AL_surfxml_trace 20
3184 #define IN_trace 21
3185 #define AL_surfxml_random 22
3186 #define S_surfxml_random 23
3187 #define S_surfxml_random_1 24
3188 #define S_surfxml_random_2 25
3189 #define E_surfxml_random 26
3190 #define AL_surfxml_trace_c_connect 27
3191 #define E_surfxml_trace_c_connect 28
3192 #define AL_surfxml_set 29
3193 #define E_surfxml_set 30
3194 #define AL_surfxml_foreach 31
3195 #define S_surfxml_foreach 32
3196 #define S_surfxml_foreach_1 33
3197 #define E_surfxml_foreach 34
3198 #define AL_surfxml_host 35
3199 #define S_surfxml_host 36
3200 #define S_surfxml_host_1 37
3201 #define S_surfxml_host_2 38
3202 #define E_surfxml_host 39
3203 #define AL_surfxml_prop 40
3204 #define E_surfxml_prop 41
3205 #define AL_surfxml_cluster 42
3206 #define E_surfxml_cluster 43
3207 #define AL_surfxml_router 44
3208 #define E_surfxml_router 45
3209 #define AL_surfxml_link 46
3210 #define S_surfxml_link 47
3211 #define S_surfxml_link_1 48
3212 #define S_surfxml_link_2 49
3213 #define E_surfxml_link 50
3214 #define AL_surfxml_route_c_multi 51
3215 #define S_surfxml_route_c_multi 52
3216 #define S_surfxml_route_c_multi_1 53
3217 #define S_surfxml_route_c_multi_2 54
3218 #define E_surfxml_route_c_multi 55
3219 #define AL_surfxml_route 56
3220 #define S_surfxml_route 57
3221 #define S_surfxml_route_1 58
3222 #define S_surfxml_route_2 59
3223 #define E_surfxml_route 60
3224 #define AL_surfxml_link_c_ctn 61
3225 #define E_surfxml_link_c_ctn 62
3226 #define AL_surfxml_process 63
3227 #define S_surfxml_process 64
3228 #define S_surfxml_process_1 65
3229 #define S_surfxml_process_2 66
3230 #define E_surfxml_process 67
3231 #define AL_surfxml_argument 68
3232 #define E_surfxml_argument 69
3233 #define IMPOSSIBLE 70
3234
3235 #ifndef YY_NO_UNISTD_H
3236 /* Special case for "unistd.h", since it is non-ANSI. We include it way
3237  * down here because we want the user's section 1 to have been scanned first.
3238  * The user has a chance to override it with an option.
3239  */
3240 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
3241 #  ifndef __STRICT_ANSI__
3242 #    include <io.h>
3243 #    include <process.h>
3244 #  endif
3245 #else
3246 #  include <unistd.h>
3247 #endif
3248 #endif
3249
3250 #ifndef YY_EXTRA_TYPE
3251 #define YY_EXTRA_TYPE void *
3252 #endif
3253
3254 static int yy_init_globals (void );
3255
3256 /* Accessor methods to globals.
3257    These are made visible to non-reentrant scanners for convenience. */
3258
3259 int surf_parse_lex_destroy (void );
3260
3261 int surf_parse_get_debug (void );
3262
3263 void surf_parse_set_debug (int debug_flag  );
3264
3265 YY_EXTRA_TYPE surf_parse_get_extra (void );
3266
3267 void surf_parse_set_extra (YY_EXTRA_TYPE user_defined  );
3268
3269 FILE *surf_parse_get_in (void );
3270
3271 void surf_parse_set_in  (FILE * in_str  );
3272
3273 FILE *surf_parse_get_out (void );
3274
3275 void surf_parse_set_out  (FILE * out_str  );
3276
3277 int surf_parse_get_leng (void );
3278
3279 char *surf_parse_get_text (void );
3280
3281 int surf_parse_get_lineno (void );
3282
3283 void surf_parse_set_lineno (int line_number  );
3284
3285 /* Macros after this point can all be overridden by user definitions in
3286  * section 1.
3287  */
3288
3289 #ifndef YY_SKIP_YYWRAP
3290 #ifdef __cplusplus
3291 extern "C" int surf_parse_wrap (void );
3292 #else
3293 extern int surf_parse_wrap (void );
3294 #endif
3295 #endif
3296
3297 #ifndef yytext_ptr
3298 static void yy_flex_strncpy (char *,yyconst char *,int );
3299 #endif
3300
3301 #ifdef YY_NEED_STRLEN
3302 static int yy_flex_strlen (yyconst char * );
3303 #endif
3304
3305 #ifndef YY_NO_INPUT
3306
3307 #ifdef __cplusplus
3308 static int yyinput (void );
3309 #else
3310 static int input (void );
3311 #endif
3312
3313 #endif
3314
3315         static int yy_start_stack_ptr = 0;
3316         static int yy_start_stack_depth = 0;
3317         static int *yy_start_stack = NULL;
3318     
3319     static void yy_push_state (int new_state );
3320     
3321     static void yy_pop_state (void );
3322     
3323 /* Amount of stuff to slurp up with each read. */
3324 #ifndef YY_READ_BUF_SIZE
3325 #define YY_READ_BUF_SIZE 8192
3326 #endif
3327
3328 /* Copy whatever the last rule matched to the standard output. */
3329 #ifndef ECHO
3330 /* This used to be an fputs(), but since the string might contain NUL's,
3331  * we now use fwrite().
3332  */
3333 #define ECHO do { if (fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )) {} } while (0)
3334 #endif
3335
3336 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
3337  * is returned in "result".
3338  */
3339 #ifndef YY_INPUT
3340 #define YY_INPUT(buf,result,max_size) \
3341         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3342                 { \
3343                 int c = '*'; \
3344                 size_t n; \
3345                 for ( n = 0; n < max_size && \
3346                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
3347                         buf[n] = (char) c; \
3348                 if ( c == '\n' ) \
3349                         buf[n++] = (char) c; \
3350                 if ( c == EOF && ferror( surf_parse_in ) ) \
3351                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
3352                 result = n; \
3353                 } \
3354         else \
3355                 { \
3356                 errno=0; \
3357                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
3358                         { \
3359                         if( errno != EINTR) \
3360                                 { \
3361                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
3362                                 break; \
3363                                 } \
3364                         errno=0; \
3365                         clearerr(surf_parse_in); \
3366                         } \
3367                 }\
3368 \
3369
3370 #endif
3371
3372 /* No semi-colon after return; correct usage is to write "yyterminate();" -
3373  * we don't want an extra ';' after the "return" because that will cause
3374  * some compilers to complain about unreachable statements.
3375  */
3376 #ifndef yyterminate
3377 #define yyterminate() return YY_NULL
3378 #endif
3379
3380 /* Number of entries by which start-condition stack grows. */
3381 #ifndef YY_START_STACK_INCR
3382 #define YY_START_STACK_INCR 25
3383 #endif
3384
3385 /* Report a fatal error. */
3386 #ifndef YY_FATAL_ERROR
3387 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3388 #endif
3389
3390 /* end tables serialization structures and prototypes */
3391
3392 /* Default declaration of generated scanner - a define so the user can
3393  * easily add parameters.
3394  */
3395 #ifndef YY_DECL
3396 #define YY_DECL_IS_OURS 1
3397
3398 extern int surf_parse_lex (void);
3399
3400 #define YY_DECL int surf_parse_lex (void)
3401 #endif /* !YY_DECL */
3402
3403 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
3404  * have been set up.
3405  */
3406 #ifndef YY_USER_ACTION
3407 #define YY_USER_ACTION
3408 #endif
3409
3410 /* Code executed at the end of each rule. */
3411 #ifndef YY_BREAK
3412 #define YY_BREAK break;
3413 #endif
3414
3415 #define YY_RULE_SETUP \
3416         YY_USER_ACTION
3417
3418 /** The main scanner function which does all the work.
3419  */
3420 YY_DECL
3421 {
3422         register yy_state_type yy_current_state;
3423         register char *yy_cp, *yy_bp;
3424         register int yy_act;
3425     
3426  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
3427  SET(PROLOG);
3428  reset_surfxml_parse_err_msg();
3429  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
3430  assert(surfxml_bufferstack);
3431  #ifdef FLEX_DEBUG
3432  {
3433      int i;
3434      for (i = 0; i < blimit; i++) {
3435          surfxml_bufferstack[i] = '\377';
3436      }
3437  }
3438  #endif
3439  surfxml_bufferstack[0] = '\0';
3440  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
3441  assert(indexstack);
3442  indexstack[0] = 0;
3443
3444   /* FleXML_init */
3445   bnext = inext = 1;
3446   surfxml_bufferliteral('\0', &bnext, "0.0");
3447   surfxml_bufferliteral('\0', &bnext, "http://simgrid.gforge.inria.fr/");
3448   surfxml_bufferliteral('\0', &bnext, "http://simgrid.gforge.inria.fr/");
3449   surfxml_bufferliteral('\0', &bnext, "1.0");
3450   surfxml_bufferliteral('\0', &bnext, "1.0");
3451   surfxml_bufferliteral('\0', &bnext, "1.0");
3452   surfxml_bufferliteral('\0', &bnext, "1.0");
3453   surfxml_bufferliteral('\0', &bnext, "-1.0");
3454   surfxml_bufferliteral('\0', &bnext, "0.0");
3455   surfxml_bufferliteral('\0', &bnext, "0.0");
3456   surfxml_bufferliteral('\0', &bnext, "0.0");
3457   surfxml_bufferliteral('\0', &bnext, "0.0");
3458   surfxml_bufferliteral('\0', &bnext, "0.0");
3459   surfxml_bufferliteral('\0', &bnext, "-1.0");
3460   surfxml_bufferliteral('\0', &bnext, "-1.0");
3461   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
3462   surfxml_statenames[PROLOG] = NULL;
3463   surfxml_statenames[DOCTYPE] = NULL;
3464   surfxml_statenames[EPILOG] = NULL;
3465   surfxml_statenames[INCOMMENT] = NULL;
3466   surfxml_statenames[INPI] = NULL;
3467   surfxml_statenames[VALUE1] = NULL;
3468   surfxml_statenames[VALUE2] = NULL;
3469   surfxml_statenames[CDATA] = NULL;
3470   surfxml_statenames[ROOT_surfxml_platform] = NULL;
3471   surfxml_statenames[AL_surfxml_platform] = NULL;
3472   surfxml_statenames[S_surfxml_platform] = "platform";
3473   surfxml_statenames[S_surfxml_platform_1] = "platform";
3474   surfxml_statenames[S_surfxml_platform_2] = "platform";
3475   surfxml_statenames[S_surfxml_platform_3] = "platform";
3476   surfxml_statenames[S_surfxml_platform_4] = "platform";
3477   surfxml_statenames[S_surfxml_platform_5] = "platform";
3478   surfxml_statenames[E_surfxml_platform] = "platform";
3479   surfxml_statenames[AL_surfxml_include] = NULL;
3480   surfxml_statenames[E_surfxml_include] = "include";
3481   surfxml_statenames[AL_surfxml_trace] = NULL;
3482   surfxml_statenames[IN_trace] = "trace";
3483   surfxml_statenames[AL_surfxml_random] = NULL;
3484   surfxml_statenames[S_surfxml_random] = "random";
3485   surfxml_statenames[S_surfxml_random_1] = "random";
3486   surfxml_statenames[S_surfxml_random_2] = "random";
3487   surfxml_statenames[E_surfxml_random] = "random";
3488   surfxml_statenames[AL_surfxml_trace_c_connect] = NULL;
3489   surfxml_statenames[E_surfxml_trace_c_connect] = "trace:connect";
3490   surfxml_statenames[AL_surfxml_set] = NULL;
3491   surfxml_statenames[E_surfxml_set] = "set";
3492   surfxml_statenames[AL_surfxml_foreach] = NULL;
3493   surfxml_statenames[S_surfxml_foreach] = "foreach";
3494   surfxml_statenames[S_surfxml_foreach_1] = "foreach";
3495   surfxml_statenames[E_surfxml_foreach] = "foreach";
3496   surfxml_statenames[AL_surfxml_host] = NULL;
3497   surfxml_statenames[S_surfxml_host] = "host";
3498   surfxml_statenames[S_surfxml_host_1] = "host";
3499   surfxml_statenames[S_surfxml_host_2] = "host";
3500   surfxml_statenames[E_surfxml_host] = "host";
3501   surfxml_statenames[AL_surfxml_prop] = NULL;
3502   surfxml_statenames[E_surfxml_prop] = "prop";
3503   surfxml_statenames[AL_surfxml_cluster] = NULL;
3504   surfxml_statenames[E_surfxml_cluster] = "cluster";
3505   surfxml_statenames[AL_surfxml_router] = NULL;
3506   surfxml_statenames[E_surfxml_router] = "router";
3507   surfxml_statenames[AL_surfxml_link] = NULL;
3508   surfxml_statenames[S_surfxml_link] = "link";
3509   surfxml_statenames[S_surfxml_link_1] = "link";
3510   surfxml_statenames[S_surfxml_link_2] = "link";
3511   surfxml_statenames[E_surfxml_link] = "link";
3512   surfxml_statenames[AL_surfxml_route_c_multi] = NULL;
3513   surfxml_statenames[S_surfxml_route_c_multi] = "route:multi";
3514   surfxml_statenames[S_surfxml_route_c_multi_1] = "route:multi";
3515   surfxml_statenames[S_surfxml_route_c_multi_2] = "route:multi";
3516   surfxml_statenames[E_surfxml_route_c_multi] = "route:multi";
3517   surfxml_statenames[AL_surfxml_route] = NULL;
3518   surfxml_statenames[S_surfxml_route] = "route";
3519   surfxml_statenames[S_surfxml_route_1] = "route";
3520   surfxml_statenames[S_surfxml_route_2] = "route";
3521   surfxml_statenames[E_surfxml_route] = "route";
3522   surfxml_statenames[AL_surfxml_link_c_ctn] = NULL;
3523   surfxml_statenames[E_surfxml_link_c_ctn] = "link:ctn";
3524   surfxml_statenames[AL_surfxml_process] = NULL;
3525   surfxml_statenames[S_surfxml_process] = "process";
3526   surfxml_statenames[S_surfxml_process_1] = "process";
3527   surfxml_statenames[S_surfxml_process_2] = "process";
3528   surfxml_statenames[E_surfxml_process] = "process";
3529   surfxml_statenames[AL_surfxml_argument] = NULL;
3530   surfxml_statenames[E_surfxml_argument] = "argument";
3531   }
3532
3533  /* COMMENTS and PIs: handled uniformly for efficiency. */
3534
3535         if ( !(yy_init) )
3536                 {
3537                 (yy_init) = 1;
3538
3539 #ifdef YY_USER_INIT
3540                 YY_USER_INIT;
3541 #endif
3542
3543                 if ( ! (yy_start) )
3544                         (yy_start) = 1; /* first start state */
3545
3546                 if ( ! surf_parse_in )
3547                         surf_parse_in = stdin;
3548
3549                 if ( ! surf_parse_out )
3550                         surf_parse_out = stdout;
3551
3552                 if ( ! YY_CURRENT_BUFFER ) {
3553                         surf_parse_ensure_buffer_stack ();
3554                         YY_CURRENT_BUFFER_LVALUE =
3555                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
3556                 }
3557
3558                 surf_parse__load_buffer_state( );
3559                 }
3560
3561         while ( 1 )             /* loops until end-of-file is reached */
3562                 {
3563                 yy_cp = (yy_c_buf_p);
3564
3565                 /* Support of surf_parse_text. */
3566                 *yy_cp = (yy_hold_char);
3567
3568                 /* yy_bp points to the position in yy_ch_buf of the start of
3569                  * the current run.
3570                  */
3571                 yy_bp = yy_cp;
3572
3573                 yy_current_state = (yy_start);
3574 yy_match:
3575                 do
3576                         {
3577                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3578                         if ( yy_accept[yy_current_state] )
3579                                 {
3580                                 (yy_last_accepting_state) = yy_current_state;
3581                                 (yy_last_accepting_cpos) = yy_cp;
3582                                 }
3583                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3584                                 {
3585                                 yy_current_state = (int) yy_def[yy_current_state];
3586                                 if ( yy_current_state >= 2023 )
3587                                         yy_c = yy_meta[(unsigned int) yy_c];
3588                                 }
3589                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3590                         ++yy_cp;
3591                         }
3592                 while ( yy_base[yy_current_state] != 7094 );
3593
3594 yy_find_action:
3595                 yy_act = yy_accept[yy_current_state];
3596                 if ( yy_act == 0 )
3597                         { /* have to back up */
3598                         yy_cp = (yy_last_accepting_cpos);
3599                         yy_current_state = (yy_last_accepting_state);
3600                         yy_act = yy_accept[yy_current_state];
3601                         }
3602
3603                 YY_DO_BEFORE_ACTION;
3604
3605                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
3606                         {
3607                         int yyl;
3608                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
3609                                 if ( surf_parse_text[yyl] == '\n' )
3610                                            
3611     surf_parse_lineno++;
3612 ;
3613                         }
3614
3615 do_action:      /* This label is used only to access EOF actions. */
3616
3617                 switch ( yy_act )
3618         { /* beginning of action switch */
3619                         case 0: /* must back up */
3620                         /* undo the effects of YY_DO_BEFORE_ACTION */
3621                         *yy_cp = (yy_hold_char);
3622                         yy_cp = (yy_last_accepting_cpos);
3623                         yy_current_state = (yy_last_accepting_state);
3624                         goto yy_find_action;
3625
3626 case 1:
3627 YY_RULE_SETUP
3628 ENTER(INCOMMENT);
3629         YY_BREAK
3630 case 2:
3631 YY_RULE_SETUP
3632 ENTER(INPI);
3633         YY_BREAK
3634
3635 case 3:
3636 YY_RULE_SETUP
3637 LEAVE;
3638         YY_BREAK
3639 case 4:
3640 case 5:
3641 case 6:
3642 /* rule 6 can match eol */
3643 YY_RULE_SETUP
3644 SKIP;
3645         YY_BREAK
3646 case YY_STATE_EOF(INCOMMENT):
3647 FAIL("EOF in comment.");
3648         YY_BREAK
3649
3650 case 7:
3651 YY_RULE_SETUP
3652 LEAVE;
3653         YY_BREAK
3654 case 8:
3655 case 9:
3656 /* rule 9 can match eol */
3657 YY_RULE_SETUP
3658 SKIP;
3659         YY_BREAK
3660 case YY_STATE_EOF(INPI):
3661 FAIL("EOF in PI (processing instruction).");
3662         YY_BREAK
3663
3664 /* SPACES: skipped uniformly */
3665 case 10:
3666 /* rule 10 can match eol */
3667 YY_RULE_SETUP
3668 SKIP;
3669         YY_BREAK
3670 /* PROLOG: determine root element and process it. */
3671
3672 case 11:
3673 /* rule 11 can match eol */
3674 YY_RULE_SETUP
3675 SET(DOCTYPE); 
3676         YY_BREAK
3677 case 12:
3678 /* rule 12 can match eol */
3679 YY_RULE_SETUP
3680 FAIL("Bad declaration %s.",surf_parse_text);
3681         YY_BREAK
3682
3683 case 13:
3684 /* rule 13 can match eol */
3685 YY_RULE_SETUP
3686 SET(ROOT_surfxml_platform);
3687         YY_BREAK
3688 case 14:
3689 /* rule 14 can match eol */
3690 YY_RULE_SETUP
3691 FAIL("Bad declaration %s.",surf_parse_text);
3692         YY_BREAK
3693 case 15:
3694 YY_RULE_SETUP
3695 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
3696         YY_BREAK
3697 case YY_STATE_EOF(PROLOG):
3698 case YY_STATE_EOF(DOCTYPE):
3699 FAIL("EOF in prolog.");
3700         YY_BREAK
3701
3702 /* RULES DERIVED FROM DTD. */
3703 /* <!-- Small DTD for SURF based tools. -->  */
3704 case 16:
3705 /* rule 16 can match eol */
3706 YY_RULE_SETUP
3707 FAIL("Starting tag <platform> is not allowed here.");
3708         YY_BREAK
3709 case 17:
3710 /* rule 17 can match eol */
3711 YY_RULE_SETUP
3712 {
3713   AX_surfxml_platform_version = 1;
3714   AX_surfxml_platform_xmlns_c_link = 5;
3715   AX_surfxml_platform_xmlns_c_route = 37;
3716   ENTER(AL_surfxml_platform); pushbuffer(0);
3717   }
3718         YY_BREAK
3719
3720 case 18:
3721 /* rule 18 can match eol */
3722 YY_RULE_SETUP
3723 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
3724         YY_BREAK
3725 case 19:
3726 /* rule 19 can match eol */
3727 YY_RULE_SETUP
3728 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
3729         YY_BREAK
3730 case 20:
3731 /* rule 20 can match eol */
3732 YY_RULE_SETUP
3733 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_xmlns_c_link);
3734         YY_BREAK
3735 case 21:
3736 /* rule 21 can match eol */
3737 YY_RULE_SETUP
3738 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_xmlns_c_link);
3739         YY_BREAK
3740 case 22:
3741 /* rule 22 can match eol */
3742 YY_RULE_SETUP
3743 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_xmlns_c_route);
3744         YY_BREAK
3745 case 23:
3746 /* rule 23 can match eol */
3747 YY_RULE_SETUP
3748 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_xmlns_c_route);
3749         YY_BREAK
3750 case 24:
3751 YY_RULE_SETUP
3752 {
3753   LEAVE; STag_surfxml_platform();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform);
3754  }
3755         YY_BREAK
3756 case 25:
3757 YY_RULE_SETUP
3758 {
3759   LEAVE; STag_surfxml_platform(); surfxml_pcdata_ix = 0; ETag_surfxml_platform(); popbuffer(); /* attribute */
3760   switch (YY_START) {
3761    case ROOT_surfxml_platform: SET(EPILOG); break;
3762   }
3763  }
3764         YY_BREAK
3765 case 26:
3766 YY_RULE_SETUP
3767 FAIL("Unexpected character `%c' in attribute list of platform element.", surf_parse_text[0]);
3768         YY_BREAK
3769 case 27:
3770 YY_RULE_SETUP
3771 FAIL("Bad attribute `%s' in `platform' element start tag.",surf_parse_text);
3772         YY_BREAK
3773 case YY_STATE_EOF(AL_surfxml_platform):
3774 FAIL("EOF in attribute list of `platform' element.");
3775         YY_BREAK
3776
3777 case 28:
3778 /* rule 28 can match eol */
3779 YY_RULE_SETUP
3780 {
3781   LEAVE;
3782   ETag_surfxml_platform();
3783   popbuffer(); /* attribute */
3784   switch (YY_START) {
3785    case ROOT_surfxml_platform: SET(EPILOG); break;
3786   }
3787  }
3788         YY_BREAK
3789 case 29:
3790 /* rule 29 can match eol */
3791 YY_RULE_SETUP
3792 FAIL("Unexpected end-tag `%s': `</platform>' expected.",surf_parse_text);
3793         YY_BREAK
3794 case 30:
3795 YY_RULE_SETUP
3796 FAIL("Unexpected character `%c': `</platform>' expected.",surf_parse_text[0]);
3797         YY_BREAK
3798 case YY_STATE_EOF(S_surfxml_platform_5):
3799 case YY_STATE_EOF(S_surfxml_platform_1):
3800 case YY_STATE_EOF(S_surfxml_platform_3):
3801 case YY_STATE_EOF(S_surfxml_platform):
3802 case YY_STATE_EOF(E_surfxml_platform):
3803 FAIL("Premature EOF: `</platform>' expected.");
3804         YY_BREAK
3805
3806 case 31:
3807 /* rule 31 can match eol */
3808 YY_RULE_SETUP
3809 FAIL("Starting tag <include> is not allowed here.");
3810         YY_BREAK
3811 case 32:
3812 /* rule 32 can match eol */
3813 YY_RULE_SETUP
3814 {
3815   AX_surfxml_include_file = 0;
3816   ENTER(AL_surfxml_include); pushbuffer(0);
3817   }
3818         YY_BREAK
3819
3820 case 33:
3821 /* rule 33 can match eol */
3822 YY_RULE_SETUP
3823 ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
3824         YY_BREAK
3825 case 34:
3826 /* rule 34 can match eol */
3827 YY_RULE_SETUP
3828 ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
3829         YY_BREAK
3830 case 35:
3831 YY_RULE_SETUP
3832 {
3833   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
3834   LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(E_surfxml_include);
3835  }
3836         YY_BREAK
3837 case 36:
3838 YY_RULE_SETUP
3839 {
3840   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
3841   LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
3842   switch (YY_START) {
3843    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
3844    case S_surfxml_platform_2: SET(S_surfxml_platform_3); break;
3845   }
3846  }
3847         YY_BREAK
3848 case 37:
3849 YY_RULE_SETUP
3850 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
3851         YY_BREAK
3852 case 38:
3853 YY_RULE_SETUP
3854 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
3855         YY_BREAK
3856 case YY_STATE_EOF(AL_surfxml_include):
3857 FAIL("EOF in attribute list of `include' element.");
3858         YY_BREAK
3859
3860 case 39:
3861 /* rule 39 can match eol */
3862 YY_RULE_SETUP
3863 {
3864   LEAVE;
3865   ETag_surfxml_include();
3866   popbuffer(); /* attribute */
3867   switch (YY_START) {
3868    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
3869    case S_surfxml_platform_2: SET(S_surfxml_platform_3); break;
3870   }
3871  }
3872         YY_BREAK
3873 case 40:
3874 /* rule 40 can match eol */
3875 YY_RULE_SETUP
3876 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
3877         YY_BREAK
3878 case 41:
3879 YY_RULE_SETUP
3880 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
3881         YY_BREAK
3882 case YY_STATE_EOF(E_surfxml_include):
3883 FAIL("Premature EOF: `</include>' expected.");
3884         YY_BREAK
3885
3886 case 42:
3887 /* rule 42 can match eol */
3888 YY_RULE_SETUP
3889 FAIL("Starting tag <trace> is not allowed here.");
3890         YY_BREAK
3891 case 43:
3892 /* rule 43 can match eol */
3893 YY_RULE_SETUP
3894 {
3895   AX_surfxml_trace_id = 0;
3896   AX_surfxml_trace_file = 0;
3897   AX_surfxml_trace_periodicity = 0;
3898   ENTER(AL_surfxml_trace); pushbuffer(0);
3899   }
3900         YY_BREAK
3901
3902 case 44:
3903 /* rule 44 can match eol */
3904 YY_RULE_SETUP
3905 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_id);
3906         YY_BREAK
3907 case 45:
3908 /* rule 45 can match eol */
3909 YY_RULE_SETUP
3910 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_id);
3911         YY_BREAK
3912 case 46:
3913 /* rule 46 can match eol */
3914 YY_RULE_SETUP
3915 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_file);
3916         YY_BREAK
3917 case 47:
3918 /* rule 47 can match eol */
3919 YY_RULE_SETUP
3920 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_file);
3921         YY_BREAK
3922 case 48:
3923 /* rule 48 can match eol */
3924 YY_RULE_SETUP
3925 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_periodicity);
3926         YY_BREAK
3927 case 49:
3928 /* rule 49 can match eol */
3929 YY_RULE_SETUP
3930 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_periodicity);
3931         YY_BREAK
3932 case 50:
3933 YY_RULE_SETUP
3934 {
3935   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
3936   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
3937   LEAVE; STag_surfxml_trace();pushbuffer(surfxml_pcdata_ix); BUFFERSET(surfxml_pcdata_ix);; ENTER(IN_trace);
3938  }
3939         YY_BREAK
3940 case 51:
3941 YY_RULE_SETUP
3942 {
3943   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
3944   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
3945   LEAVE; STag_surfxml_trace(); surfxml_pcdata_ix = 0; ETag_surfxml_trace(); popbuffer(); /* attribute */
3946   switch (YY_START) {
3947    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
3948   }
3949  }
3950         YY_BREAK
3951 case 52:
3952 YY_RULE_SETUP
3953 FAIL("Unexpected character `%c' in attribute list of trace element.", surf_parse_text[0]);
3954         YY_BREAK
3955 case 53:
3956 YY_RULE_SETUP
3957 FAIL("Bad attribute `%s' in `trace' element start tag.",surf_parse_text);
3958         YY_BREAK
3959 case YY_STATE_EOF(AL_surfxml_trace):
3960 FAIL("EOF in attribute list of `trace' element.");
3961         YY_BREAK
3962
3963 case 54:
3964 /* rule 54 can match eol */
3965 YY_RULE_SETUP
3966 {
3967   LEAVE;
3968   BUFFERDONE;
3969   ETag_surfxml_trace();
3970   surfxml_pcdata_ix = popbuffer();
3971   popbuffer(); /* attribute */
3972   switch (YY_START) {
3973    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
3974   }
3975  }
3976         YY_BREAK
3977 case 55:
3978 /* rule 55 can match eol */
3979 YY_RULE_SETUP
3980 FAIL("Unexpected end-tag `%s': `</trace>' expected.",surf_parse_text);
3981         YY_BREAK
3982 case YY_STATE_EOF(IN_trace):
3983 FAIL("Premature EOF: `</trace>' expected.");
3984         YY_BREAK
3985
3986 case 56:
3987 /* rule 56 can match eol */
3988 YY_RULE_SETUP
3989 FAIL("Starting tag <random> is not allowed here.");
3990         YY_BREAK
3991 case 57:
3992 /* rule 57 can match eol */
3993 YY_RULE_SETUP
3994 {
3995   AX_surfxml_random_id = 0;
3996   AX_surfxml_random_min = 0;
3997   AX_surfxml_random_max = 0;
3998   AX_surfxml_random_mean = 0;
3999   AX_surfxml_random_std_deviation = 0;
4000   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
4001   ENTER(AL_surfxml_random); pushbuffer(0);
4002   }
4003         YY_BREAK
4004
4005 case 58:
4006 /* rule 58 can match eol */
4007 YY_RULE_SETUP
4008 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_id);
4009         YY_BREAK
4010 case 59:
4011 /* rule 59 can match eol */
4012 YY_RULE_SETUP
4013 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_id);
4014         YY_BREAK
4015 case 60:
4016 /* rule 60 can match eol */
4017 YY_RULE_SETUP
4018 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_min);
4019         YY_BREAK
4020 case 61:
4021 /* rule 61 can match eol */
4022 YY_RULE_SETUP
4023 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_min);
4024         YY_BREAK
4025 case 62:
4026 /* rule 62 can match eol */
4027 YY_RULE_SETUP
4028 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_max);
4029         YY_BREAK
4030 case 63:
4031 /* rule 63 can match eol */
4032 YY_RULE_SETUP
4033 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_max);
4034         YY_BREAK
4035 case 64:
4036 /* rule 64 can match eol */
4037 YY_RULE_SETUP
4038 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_mean);
4039         YY_BREAK
4040 case 65:
4041 /* rule 65 can match eol */
4042 YY_RULE_SETUP
4043 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_mean);
4044         YY_BREAK
4045 case 66:
4046 /* rule 66 can match eol */
4047 YY_RULE_SETUP
4048 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std_deviation);
4049         YY_BREAK
4050 case 67:
4051 /* rule 67 can match eol */
4052 YY_RULE_SETUP
4053 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std_deviation);
4054         YY_BREAK
4055 case 68:
4056 /* rule 68 can match eol */
4057 case 69:
4058 /* rule 69 can match eol */
4059 YY_RULE_SETUP
4060 A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
4061         YY_BREAK
4062 case 70:
4063 /* rule 70 can match eol */
4064 case 71:
4065 /* rule 71 can match eol */
4066 YY_RULE_SETUP
4067 A_surfxml_random_generator = A_surfxml_random_generator_RAND;
4068         YY_BREAK
4069 case 72:
4070 YY_RULE_SETUP
4071 {
4072   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
4073   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
4074   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
4075   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
4076   if (!AX_surfxml_random_std_deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
4077   LEAVE; STag_surfxml_random();surfxml_pcdata_ix = 0; ENTER(S_surfxml_random);
4078  }
4079         YY_BREAK
4080 case 73:
4081 YY_RULE_SETUP
4082 {
4083   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
4084   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
4085   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
4086   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
4087   if (!AX_surfxml_random_std_deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
4088   LEAVE; STag_surfxml_random(); surfxml_pcdata_ix = 0; ETag_surfxml_random(); popbuffer(); /* attribute */
4089   switch (YY_START) {
4090    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
4091   }
4092  }
4093         YY_BREAK
4094 case 74:
4095 YY_RULE_SETUP
4096 FAIL("Unexpected character `%c' in attribute list of random element.", surf_parse_text[0]);
4097         YY_BREAK
4098 case 75:
4099 YY_RULE_SETUP
4100 FAIL("Bad attribute `%s' in `random' element start tag.",surf_parse_text);
4101         YY_BREAK
4102 case YY_STATE_EOF(AL_surfxml_random):
4103 FAIL("EOF in attribute list of `random' element.");
4104         YY_BREAK
4105
4106 case 76:
4107 /* rule 76 can match eol */
4108 YY_RULE_SETUP
4109 {
4110   LEAVE;
4111   ETag_surfxml_random();
4112   popbuffer(); /* attribute */
4113   switch (YY_START) {
4114    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
4115   }
4116  }
4117         YY_BREAK
4118 case 77:
4119 /* rule 77 can match eol */
4120 YY_RULE_SETUP
4121 FAIL("Unexpected end-tag `%s': `</random>' expected.",surf_parse_text);
4122         YY_BREAK
4123 case 78:
4124 YY_RULE_SETUP
4125 FAIL("Unexpected character `%c': `</random>' expected.",surf_parse_text[0]);
4126         YY_BREAK
4127 case YY_STATE_EOF(S_surfxml_random_2):
4128 case YY_STATE_EOF(S_surfxml_random):
4129 case YY_STATE_EOF(E_surfxml_random):
4130 FAIL("Premature EOF: `</random>' expected.");
4131         YY_BREAK
4132
4133 case 79:
4134 /* rule 79 can match eol */
4135 YY_RULE_SETUP
4136 FAIL("Starting tag <trace:connect> is not allowed here.");
4137         YY_BREAK
4138 case 80:
4139 /* rule 80 can match eol */
4140 YY_RULE_SETUP
4141 {
4142   AX_surfxml_trace_c_connect_kind = A_surfxml_trace_c_connect_kind_HOST_AVAIL;
4143   AX_surfxml_trace_c_connect_trace = 0;
4144   AX_surfxml_trace_c_connect_element = 0;
4145   ENTER(AL_surfxml_trace_c_connect); pushbuffer(0);
4146   }
4147         YY_BREAK
4148
4149 case 81:
4150 /* rule 81 can match eol */
4151 case 82:
4152 /* rule 82 can match eol */
4153 YY_RULE_SETUP
4154 A_surfxml_trace_c_connect_kind = A_surfxml_trace_c_connect_kind_HOST_AVAIL;
4155         YY_BREAK
4156 case 83:
4157 /* rule 83 can match eol */
4158 case 84:
4159 /* rule 84 can match eol */
4160 YY_RULE_SETUP
4161 A_surfxml_trace_c_connect_kind = A_surfxml_trace_c_connect_kind_POWER;
4162         YY_BREAK
4163 case 85:
4164 /* rule 85 can match eol */
4165 case 86:
4166 /* rule 86 can match eol */
4167 YY_RULE_SETUP
4168 A_surfxml_trace_c_connect_kind = A_surfxml_trace_c_connect_kind_LINK_AVAIL;
4169         YY_BREAK
4170 case 87:
4171 /* rule 87 can match eol */
4172 case 88:
4173 /* rule 88 can match eol */
4174 YY_RULE_SETUP
4175 A_surfxml_trace_c_connect_kind = A_surfxml_trace_c_connect_kind_BANDWIDTH;
4176         YY_BREAK
4177 case 89:
4178 /* rule 89 can match eol */
4179 case 90:
4180 /* rule 90 can match eol */
4181 YY_RULE_SETUP
4182 A_surfxml_trace_c_connect_kind = A_surfxml_trace_c_connect_kind_LATENCY;
4183         YY_BREAK
4184 case 91:
4185 /* rule 91 can match eol */
4186 YY_RULE_SETUP
4187 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_c_connect_trace);
4188         YY_BREAK
4189 case 92:
4190 /* rule 92 can match eol */
4191 YY_RULE_SETUP
4192 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_c_connect_trace);
4193         YY_BREAK
4194 case 93:
4195 /* rule 93 can match eol */
4196 YY_RULE_SETUP
4197 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_c_connect_element);
4198         YY_BREAK
4199 case 94:
4200 /* rule 94 can match eol */
4201 YY_RULE_SETUP
4202 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_c_connect_element);
4203         YY_BREAK
4204 case 95:
4205 YY_RULE_SETUP
4206 {
4207   if (!AX_surfxml_trace_c_connect_trace) FAIL("Required attribute `trace' not set for `trace:connect' element.");
4208   if (!AX_surfxml_trace_c_connect_element) FAIL("Required attribute `element' not set for `trace:connect' element.");
4209   LEAVE; STag_surfxml_trace_c_connect();surfxml_pcdata_ix = 0; ENTER(E_surfxml_trace_c_connect);
4210  }
4211         YY_BREAK
4212 case 96:
4213 YY_RULE_SETUP
4214 {
4215   if (!AX_surfxml_trace_c_connect_trace) FAIL("Required attribute `trace' not set for `trace:connect' element.");
4216   if (!AX_surfxml_trace_c_connect_element) FAIL("Required attribute `element' not set for `trace:connect' element.");
4217   LEAVE; STag_surfxml_trace_c_connect(); surfxml_pcdata_ix = 0; ETag_surfxml_trace_c_connect(); popbuffer(); /* attribute */
4218   switch (YY_START) {
4219    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
4220    case S_surfxml_platform_2: SET(S_surfxml_platform_3); break;
4221   }
4222  }
4223         YY_BREAK
4224 case 97:
4225 YY_RULE_SETUP
4226 FAIL("Unexpected character `%c' in attribute list of trace:connect element.", surf_parse_text[0]);
4227         YY_BREAK
4228 case 98:
4229 YY_RULE_SETUP
4230 FAIL("Bad attribute `%s' in `trace:connect' element start tag.",surf_parse_text);
4231         YY_BREAK
4232 case YY_STATE_EOF(AL_surfxml_trace_c_connect):
4233 FAIL("EOF in attribute list of `trace:connect' element.");
4234         YY_BREAK
4235
4236 case 99:
4237 /* rule 99 can match eol */
4238 YY_RULE_SETUP
4239 {
4240   LEAVE;
4241   ETag_surfxml_trace_c_connect();
4242   popbuffer(); /* attribute */
4243   switch (YY_START) {
4244    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
4245    case S_surfxml_platform_2: SET(S_surfxml_platform_3); break;
4246   }
4247  }
4248         YY_BREAK
4249 case 100:
4250 /* rule 100 can match eol */
4251 YY_RULE_SETUP
4252 FAIL("Unexpected end-tag `%s': `</trace:connect>' expected.",surf_parse_text);
4253         YY_BREAK
4254 case 101:
4255 YY_RULE_SETUP
4256 FAIL("Unexpected character `%c': `</trace:connect>' expected.",surf_parse_text[0]);
4257         YY_BREAK
4258 case YY_STATE_EOF(E_surfxml_trace_c_connect):
4259 FAIL("Premature EOF: `</trace:connect>' expected.");
4260         YY_BREAK
4261
4262 case 102:
4263 /* rule 102 can match eol */
4264 YY_RULE_SETUP
4265 FAIL("Starting tag <set> is not allowed here.");
4266         YY_BREAK
4267 case 103:
4268 /* rule 103 can match eol */
4269 YY_RULE_SETUP
4270 {
4271   AX_surfxml_set_id = 0;
4272   AX_surfxml_set_prefix = 0;
4273   AX_surfxml_set_suffix = 0;
4274   AX_surfxml_set_radical = 0;
4275   ENTER(AL_surfxml_set); pushbuffer(0);
4276   }
4277         YY_BREAK
4278
4279 case 104:
4280 /* rule 104 can match eol */
4281 YY_RULE_SETUP
4282 ENTER(VALUE1); BUFFERSET(AX_surfxml_set_id);
4283         YY_BREAK
4284 case 105:
4285 /* rule 105 can match eol */
4286 YY_RULE_SETUP
4287 ENTER(VALUE2); BUFFERSET(AX_surfxml_set_id);
4288         YY_BREAK
4289 case 106:
4290 /* rule 106 can match eol */
4291 YY_RULE_SETUP
4292 ENTER(VALUE1); BUFFERSET(AX_surfxml_set_prefix);
4293         YY_BREAK
4294 case 107:
4295 /* rule 107 can match eol */
4296 YY_RULE_SETUP
4297 ENTER(VALUE2); BUFFERSET(AX_surfxml_set_prefix);
4298         YY_BREAK
4299 case 108:
4300 /* rule 108 can match eol */
4301 YY_RULE_SETUP
4302 ENTER(VALUE1); BUFFERSET(AX_surfxml_set_suffix);
4303         YY_BREAK
4304 case 109:
4305 /* rule 109 can match eol */
4306 YY_RULE_SETUP
4307 ENTER(VALUE2); BUFFERSET(AX_surfxml_set_suffix);
4308         YY_BREAK
4309 case 110:
4310 /* rule 110 can match eol */
4311 YY_RULE_SETUP
4312 ENTER(VALUE1); BUFFERSET(AX_surfxml_set_radical);
4313         YY_BREAK
4314 case 111:
4315 /* rule 111 can match eol */
4316 YY_RULE_SETUP
4317 ENTER(VALUE2); BUFFERSET(AX_surfxml_set_radical);
4318         YY_BREAK
4319 case 112:
4320 YY_RULE_SETUP
4321 {
4322   if (!AX_surfxml_set_id) FAIL("Required attribute `id' not set for `set' element.");
4323   if (!AX_surfxml_set_prefix) FAIL("Required attribute `prefix' not set for `set' element.");
4324   if (!AX_surfxml_set_suffix) FAIL("Required attribute `suffix' not set for `set' element.");
4325   if (!AX_surfxml_set_radical) FAIL("Required attribute `radical' not set for `set' element.");
4326   LEAVE; STag_surfxml_set();surfxml_pcdata_ix = 0; ENTER(E_surfxml_set);
4327  }
4328         YY_BREAK
4329 case 113:
4330 YY_RULE_SETUP
4331 {
4332   if (!AX_surfxml_set_id) FAIL("Required attribute `id' not set for `set' element.");
4333   if (!AX_surfxml_set_prefix) FAIL("Required attribute `prefix' not set for `set' element.");
4334   if (!AX_surfxml_set_suffix) FAIL("Required attribute `suffix' not set for `set' element.");
4335   if (!AX_surfxml_set_radical) FAIL("Required attribute `radical' not set for `set' element.");
4336   LEAVE; STag_surfxml_set(); surfxml_pcdata_ix = 0; ETag_surfxml_set(); popbuffer(); /* attribute */
4337   switch (YY_START) {
4338    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
4339   }
4340  }
4341         YY_BREAK
4342 case 114:
4343 YY_RULE_SETUP
4344 FAIL("Unexpected character `%c' in attribute list of set element.", surf_parse_text[0]);
4345         YY_BREAK
4346 case 115:
4347 YY_RULE_SETUP
4348 FAIL("Bad attribute `%s' in `set' element start tag.",surf_parse_text);
4349         YY_BREAK
4350 case YY_STATE_EOF(AL_surfxml_set):
4351 FAIL("EOF in attribute list of `set' element.");
4352         YY_BREAK
4353
4354 case 116:
4355 /* rule 116 can match eol */
4356 YY_RULE_SETUP
4357 {
4358   LEAVE;
4359   ETag_surfxml_set();
4360   popbuffer(); /* attribute */
4361   switch (YY_START) {
4362    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
4363   }
4364  }
4365         YY_BREAK
4366 case 117:
4367 /* rule 117 can match eol */
4368 YY_RULE_SETUP
4369 FAIL("Unexpected end-tag `%s': `</set>' expected.",surf_parse_text);
4370         YY_BREAK
4371 case 118:
4372 YY_RULE_SETUP
4373 FAIL("Unexpected character `%c': `</set>' expected.",surf_parse_text[0]);
4374         YY_BREAK
4375 case YY_STATE_EOF(E_surfxml_set):
4376 FAIL("Premature EOF: `</set>' expected.");
4377         YY_BREAK
4378
4379 case 119:
4380 /* rule 119 can match eol */
4381 YY_RULE_SETUP
4382 FAIL("Starting tag <foreach> is not allowed here.");
4383         YY_BREAK
4384 case 120:
4385 /* rule 120 can match eol */
4386 YY_RULE_SETUP
4387 {
4388   AX_surfxml_foreach_set_id = 0;
4389   ENTER(AL_surfxml_foreach); pushbuffer(0);
4390   }
4391         YY_BREAK
4392
4393 case 121:
4394 /* rule 121 can match eol */
4395 YY_RULE_SETUP
4396 ENTER(VALUE1); BUFFERSET(AX_surfxml_foreach_set_id);
4397         YY_BREAK
4398 case 122:
4399 /* rule 122 can match eol */
4400 YY_RULE_SETUP
4401 ENTER(VALUE2); BUFFERSET(AX_surfxml_foreach_set_id);
4402         YY_BREAK
4403 case 123:
4404 YY_RULE_SETUP
4405 {
4406   if (!AX_surfxml_foreach_set_id) FAIL("Required attribute `set_id' not set for `foreach' element.");
4407   LEAVE; STag_surfxml_foreach();surfxml_pcdata_ix = 0; ENTER(S_surfxml_foreach);
4408  }
4409         YY_BREAK
4410 case 124:
4411 YY_RULE_SETUP
4412 FAIL("`foreach' element cannot be empty.");
4413         YY_BREAK
4414 case 125:
4415 YY_RULE_SETUP
4416 FAIL("Unexpected character `%c' in attribute list of foreach element.", surf_parse_text[0]);
4417         YY_BREAK
4418 case 126:
4419 YY_RULE_SETUP
4420 FAIL("Bad attribute `%s' in `foreach' element start tag.",surf_parse_text);
4421         YY_BREAK
4422 case YY_STATE_EOF(AL_surfxml_foreach):
4423 FAIL("EOF in attribute list of `foreach' element.");
4424         YY_BREAK
4425
4426 case 127:
4427 /* rule 127 can match eol */
4428 YY_RULE_SETUP
4429 {
4430   LEAVE;
4431   ETag_surfxml_foreach();
4432   popbuffer(); /* attribute */
4433   switch (YY_START) {
4434    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
4435   }
4436  }
4437         YY_BREAK
4438 case 128:
4439 /* rule 128 can match eol */
4440 YY_RULE_SETUP
4441 FAIL("Unexpected end-tag `%s': `</foreach>' expected.",surf_parse_text);
4442         YY_BREAK
4443 case 129:
4444 YY_RULE_SETUP
4445 FAIL("Unexpected character `%c': `</foreach>' expected.",surf_parse_text[0]);
4446         YY_BREAK
4447 case YY_STATE_EOF(E_surfxml_foreach):
4448 FAIL("Premature EOF: `</foreach>' expected.");
4449         YY_BREAK
4450
4451 case 130:
4452 /* rule 130 can match eol */
4453 YY_RULE_SETUP
4454 FAIL("Starting tag <host> is not allowed here.");
4455         YY_BREAK
4456 case 131:
4457 /* rule 131 can match eol */
4458 YY_RULE_SETUP
4459 {
4460   AX_surfxml_host_id = 0;
4461   AX_surfxml_host_power = 0;
4462   AX_surfxml_host_availability = 69;
4463   AX_surfxml_host_availability_file = 0;
4464   AX_surfxml_host_state = A_surfxml_host_state_ON;
4465   AX_surfxml_host_state_file = 0;
4466   AX_surfxml_host_interference_send = 73;
4467   AX_surfxml_host_interference_recv = 77;
4468   AX_surfxml_host_interference_send_recv = 81;
4469   AX_surfxml_host_max_outgoing_rate = 85;
4470   ENTER(AL_surfxml_host); pushbuffer(0);
4471   }
4472         YY_BREAK
4473
4474 case 132:
4475 /* rule 132 can match eol */
4476 YY_RULE_SETUP
4477 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
4478         YY_BREAK
4479 case 133:
4480 /* rule 133 can match eol */
4481 YY_RULE_SETUP
4482 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
4483         YY_BREAK
4484 case 134:
4485 /* rule 134 can match eol */
4486 YY_RULE_SETUP
4487 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_power);
4488         YY_BREAK
4489 case 135:
4490 /* rule 135 can match eol */
4491 YY_RULE_SETUP
4492 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_power);
4493         YY_BREAK
4494 case 136:
4495 /* rule 136 can match eol */
4496 YY_RULE_SETUP
4497 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability);
4498         YY_BREAK
4499 case 137:
4500 /* rule 137 can match eol */
4501 YY_RULE_SETUP
4502 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability);
4503         YY_BREAK
4504 case 138:
4505 /* rule 138 can match eol */
4506 YY_RULE_SETUP
4507 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability_file);
4508         YY_BREAK
4509 case 139:
4510 /* rule 139 can match eol */
4511 YY_RULE_SETUP
4512 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability_file);
4513         YY_BREAK
4514 case 140:
4515 /* rule 140 can match eol */
4516 case 141:
4517 /* rule 141 can match eol */
4518 YY_RULE_SETUP
4519 A_surfxml_host_state = A_surfxml_host_state_ON;
4520         YY_BREAK
4521 case 142:
4522 /* rule 142 can match eol */
4523 case 143:
4524 /* rule 143 can match eol */
4525 YY_RULE_SETUP
4526 A_surfxml_host_state = A_surfxml_host_state_OFF;
4527         YY_BREAK
4528 case 144:
4529 /* rule 144 can match eol */
4530 YY_RULE_SETUP
4531 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state_file);
4532         YY_BREAK
4533 case 145:
4534 /* rule 145 can match eol */
4535 YY_RULE_SETUP
4536 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state_file);
4537         YY_BREAK
4538 case 146:
4539 /* rule 146 can match eol */
4540 YY_RULE_SETUP
4541 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_interference_send);
4542         YY_BREAK
4543 case 147:
4544 /* rule 147 can match eol */
4545 YY_RULE_SETUP
4546 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_interference_send);
4547         YY_BREAK
4548 case 148:
4549 /* rule 148 can match eol */
4550 YY_RULE_SETUP
4551 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_interference_recv);
4552         YY_BREAK
4553 case 149:
4554 /* rule 149 can match eol */
4555 YY_RULE_SETUP
4556 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_interference_recv);
4557         YY_BREAK
4558 case 150:
4559 /* rule 150 can match eol */
4560 YY_RULE_SETUP
4561 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_interference_send_recv);
4562         YY_BREAK
4563 case 151:
4564 /* rule 151 can match eol */
4565 YY_RULE_SETUP
4566 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_interference_send_recv);
4567         YY_BREAK
4568 case 152:
4569 /* rule 152 can match eol */
4570 YY_RULE_SETUP
4571 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_max_outgoing_rate);
4572         YY_BREAK
4573 case 153:
4574 /* rule 153 can match eol */
4575 YY_RULE_SETUP
4576 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_max_outgoing_rate);
4577         YY_BREAK
4578 case 154:
4579 YY_RULE_SETUP
4580 {
4581   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
4582   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
4583   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
4584  }
4585         YY_BREAK
4586 case 155:
4587 YY_RULE_SETUP
4588 {
4589   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
4590   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
4591   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
4592   switch (YY_START) {
4593    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
4594    case S_surfxml_foreach: SET(S_surfxml_foreach_1); break;
4595   }
4596  }
4597         YY_BREAK
4598 case 156:
4599 YY_RULE_SETUP
4600 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
4601         YY_BREAK
4602 case 157:
4603 YY_RULE_SETUP
4604 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
4605         YY_BREAK
4606 case YY_STATE_EOF(AL_surfxml_host):
4607 FAIL("EOF in attribute list of `host' element.");
4608         YY_BREAK
4609
4610 case 158:
4611 /* rule 158 can match eol */
4612 YY_RULE_SETUP
4613 {
4614   LEAVE;
4615   ETag_surfxml_host();
4616   popbuffer(); /* attribute */
4617   switch (YY_START) {
4618    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
4619    case S_surfxml_foreach: SET(S_surfxml_foreach_1); break;
4620   }
4621  }
4622         YY_BREAK
4623 case 159:
4624 /* rule 159 can match eol */
4625 YY_RULE_SETUP
4626 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
4627         YY_BREAK
4628 case 160:
4629 YY_RULE_SETUP
4630 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
4631         YY_BREAK
4632 case YY_STATE_EOF(S_surfxml_host):
4633 case YY_STATE_EOF(E_surfxml_host):
4634 case YY_STATE_EOF(S_surfxml_host_2):
4635 FAIL("Premature EOF: `</host>' expected.");
4636         YY_BREAK
4637
4638 case 161:
4639 /* rule 161 can match eol */
4640 YY_RULE_SETUP
4641 FAIL("Starting tag <prop> is not allowed here.");
4642         YY_BREAK
4643 case 162:
4644 /* rule 162 can match eol */
4645 YY_RULE_SETUP
4646 {
4647   AX_surfxml_prop_id = 0;
4648   AX_surfxml_prop_value = 0;
4649   ENTER(AL_surfxml_prop); pushbuffer(0);
4650   }
4651         YY_BREAK
4652
4653 case 163:
4654 /* rule 163 can match eol */
4655 YY_RULE_SETUP
4656 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
4657         YY_BREAK
4658 case 164:
4659 /* rule 164 can match eol */
4660 YY_RULE_SETUP
4661 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
4662         YY_BREAK
4663 case 165:
4664 /* rule 165 can match eol */
4665 YY_RULE_SETUP
4666 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
4667         YY_BREAK
4668 case 166:
4669 /* rule 166 can match eol */
4670 YY_RULE_SETUP
4671 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
4672         YY_BREAK
4673 case 167:
4674 YY_RULE_SETUP
4675 {
4676   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
4677   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
4678   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
4679  }
4680         YY_BREAK
4681 case 168:
4682 YY_RULE_SETUP
4683 {
4684   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
4685   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
4686   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
4687   switch (YY_START) {
4688    case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
4689    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
4690    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
4691    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
4692   }
4693  }
4694         YY_BREAK
4695 case 169:
4696 YY_RULE_SETUP
4697 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
4698         YY_BREAK
4699 case 170:
4700 YY_RULE_SETUP
4701 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
4702         YY_BREAK
4703 case YY_STATE_EOF(AL_surfxml_prop):
4704 FAIL("EOF in attribute list of `prop' element.");
4705         YY_BREAK
4706
4707 case 171:
4708 /* rule 171 can match eol */
4709 YY_RULE_SETUP
4710 {
4711   LEAVE;
4712   ETag_surfxml_prop();
4713   popbuffer(); /* attribute */
4714   switch (YY_START) {
4715    case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
4716    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
4717    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
4718    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
4719   }
4720  }
4721         YY_BREAK
4722 case 172:
4723 /* rule 172 can match eol */
4724 YY_RULE_SETUP
4725 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
4726         YY_BREAK
4727 case 173:
4728 YY_RULE_SETUP
4729 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
4730         YY_BREAK
4731 case YY_STATE_EOF(E_surfxml_prop):
4732 FAIL("Premature EOF: `</prop>' expected.");
4733         YY_BREAK
4734
4735 case 174:
4736 /* rule 174 can match eol */
4737 YY_RULE_SETUP
4738 FAIL("Starting tag <cluster> is not allowed here.");
4739         YY_BREAK
4740 case 175:
4741 /* rule 175 can match eol */
4742 YY_RULE_SETUP
4743 {
4744   AX_surfxml_cluster_id = 0;
4745   AX_surfxml_cluster_prefix = 0;
4746   AX_surfxml_cluster_suffix = 0;
4747   AX_surfxml_cluster_radical = 0;
4748   AX_surfxml_cluster_power = 0;
4749   AX_surfxml_cluster_bw = 0;
4750   AX_surfxml_cluster_lat = 0;
4751   AX_surfxml_cluster_bb_bw = 0;
4752   AX_surfxml_cluster_bb_lat = 0;
4753   ENTER(AL_surfxml_cluster); pushbuffer(0);
4754   }
4755         YY_BREAK
4756
4757 case 176:
4758 /* rule 176 can match eol */
4759 YY_RULE_SETUP
4760 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
4761         YY_BREAK
4762 case 177:
4763 /* rule 177 can match eol */
4764 YY_RULE_SETUP
4765 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
4766         YY_BREAK
4767 case 178:
4768 /* rule 178 can match eol */
4769 YY_RULE_SETUP
4770 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
4771         YY_BREAK
4772 case 179:
4773 /* rule 179 can match eol */
4774 YY_RULE_SETUP
4775 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
4776         YY_BREAK
4777 case 180:
4778 /* rule 180 can match eol */
4779 YY_RULE_SETUP
4780 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
4781         YY_BREAK
4782 case 181:
4783 /* rule 181 can match eol */
4784 YY_RULE_SETUP
4785 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
4786         YY_BREAK
4787 case 182:
4788 /* rule 182 can match eol */
4789 YY_RULE_SETUP
4790 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
4791         YY_BREAK
4792 case 183:
4793 /* rule 183 can match eol */
4794 YY_RULE_SETUP
4795 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
4796         YY_BREAK
4797 case 184:
4798 /* rule 184 can match eol */
4799 YY_RULE_SETUP
4800 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_power);
4801         YY_BREAK
4802 case 185:
4803 /* rule 185 can match eol */
4804 YY_RULE_SETUP
4805 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_power);
4806         YY_BREAK
4807 case 186:
4808 /* rule 186 can match eol */
4809 YY_RULE_SETUP
4810 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
4811         YY_BREAK
4812 case 187:
4813 /* rule 187 can match eol */
4814 YY_RULE_SETUP
4815 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
4816         YY_BREAK
4817 case 188:
4818 /* rule 188 can match eol */
4819 YY_RULE_SETUP
4820 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
4821         YY_BREAK
4822 case 189:
4823 /* rule 189 can match eol */
4824 YY_RULE_SETUP
4825 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
4826         YY_BREAK
4827 case 190:
4828 /* rule 190 can match eol */
4829 YY_RULE_SETUP
4830 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_bw);
4831         YY_BREAK
4832 case 191:
4833 /* rule 191 can match eol */
4834 YY_RULE_SETUP
4835 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_bw);
4836         YY_BREAK
4837 case 192:
4838 /* rule 192 can match eol */
4839 YY_RULE_SETUP
4840 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_lat);
4841         YY_BREAK
4842 case 193:
4843 /* rule 193 can match eol */
4844 YY_RULE_SETUP
4845 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_lat);
4846         YY_BREAK
4847 case 194:
4848 YY_RULE_SETUP
4849 {
4850   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
4851   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
4852   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
4853   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
4854   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
4855   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
4856   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
4857   if (!AX_surfxml_cluster_bb_bw) FAIL("Required attribute `bb_bw' not set for `cluster' element.");
4858   if (!AX_surfxml_cluster_bb_lat) FAIL("Required attribute `bb_lat' not set for `cluster' element.");
4859   LEAVE; STag_surfxml_cluster();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cluster);
4860  }
4861         YY_BREAK
4862 case 195:
4863 YY_RULE_SETUP
4864 {
4865   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
4866   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
4867   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
4868   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
4869   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
4870   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
4871   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
4872   if (!AX_surfxml_cluster_bb_bw) FAIL("Required attribute `bb_bw' not set for `cluster' element.");
4873   if (!AX_surfxml_cluster_bb_lat) FAIL("Required attribute `bb_lat' not set for `cluster' element.");
4874   LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
4875   switch (YY_START) {
4876    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
4877   }
4878  }
4879         YY_BREAK
4880 case 196:
4881 YY_RULE_SETUP
4882 FAIL("Unexpected character `%c' in attribute list of cluster element.", surf_parse_text[0]);
4883         YY_BREAK
4884 case 197:
4885 YY_RULE_SETUP
4886 FAIL("Bad attribute `%s' in `cluster' element start tag.",surf_parse_text);
4887         YY_BREAK
4888 case YY_STATE_EOF(AL_surfxml_cluster):
4889 FAIL("EOF in attribute list of `cluster' element.");
4890         YY_BREAK
4891
4892 case 198:
4893 /* rule 198 can match eol */
4894 YY_RULE_SETUP
4895 {
4896   LEAVE;
4897   ETag_surfxml_cluster();
4898   popbuffer(); /* attribute */
4899   switch (YY_START) {
4900    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
4901   }
4902  }
4903         YY_BREAK
4904 case 199:
4905 /* rule 199 can match eol */
4906 YY_RULE_SETUP
4907 FAIL("Unexpected end-tag `%s': `</cluster>' expected.",surf_parse_text);
4908         YY_BREAK
4909 case 200:
4910 YY_RULE_SETUP
4911 FAIL("Unexpected character `%c': `</cluster>' expected.",surf_parse_text[0]);
4912         YY_BREAK
4913 case YY_STATE_EOF(E_surfxml_cluster):
4914 FAIL("Premature EOF: `</cluster>' expected.");
4915         YY_BREAK
4916
4917 case 201:
4918 /* rule 201 can match eol */
4919 YY_RULE_SETUP
4920 FAIL("Starting tag <router> is not allowed here.");
4921         YY_BREAK
4922 case 202:
4923 /* rule 202 can match eol */
4924 YY_RULE_SETUP
4925 {
4926   AX_surfxml_router_id = 0;
4927   ENTER(AL_surfxml_router); pushbuffer(0);
4928   }
4929         YY_BREAK
4930
4931 case 203:
4932 /* rule 203 can match eol */
4933 YY_RULE_SETUP
4934 ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
4935         YY_BREAK
4936 case 204:
4937 /* rule 204 can match eol */
4938 YY_RULE_SETUP
4939 ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
4940         YY_BREAK
4941 case 205:
4942 YY_RULE_SETUP
4943 {
4944   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
4945   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
4946  }
4947         YY_BREAK
4948 case 206:
4949 YY_RULE_SETUP
4950 {
4951   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
4952   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
4953   switch (YY_START) {
4954    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
4955   }
4956  }
4957         YY_BREAK
4958 case 207:
4959 YY_RULE_SETUP
4960 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
4961         YY_BREAK
4962 case 208:
4963 YY_RULE_SETUP
4964 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
4965         YY_BREAK
4966 case YY_STATE_EOF(AL_surfxml_router):
4967 FAIL("EOF in attribute list of `router' element.");
4968         YY_BREAK
4969
4970 case 209:
4971 /* rule 209 can match eol */
4972 YY_RULE_SETUP
4973 {
4974   LEAVE;
4975   ETag_surfxml_router();
4976   popbuffer(); /* attribute */
4977   switch (YY_START) {
4978    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
4979   }
4980  }
4981         YY_BREAK
4982 case 210:
4983 /* rule 210 can match eol */
4984 YY_RULE_SETUP
4985 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
4986         YY_BREAK
4987 case 211:
4988 YY_RULE_SETUP
4989 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
4990         YY_BREAK
4991 case YY_STATE_EOF(E_surfxml_router):
4992 FAIL("Premature EOF: `</router>' expected.");
4993         YY_BREAK
4994
4995 case 212:
4996 /* rule 212 can match eol */
4997 YY_RULE_SETUP
4998 FAIL("Starting tag <link> is not allowed here.");
4999         YY_BREAK
5000 case 213:
5001 /* rule 213 can match eol */
5002 YY_RULE_SETUP
5003 {
5004   AX_surfxml_link_id = 0;
5005   AX_surfxml_link_bandwidth = 0;
5006   AX_surfxml_link_bandwidth_file = 0;
5007   AX_surfxml_link_latency = 90;
5008   AX_surfxml_link_latency_file = 0;
5009   AX_surfxml_link_state = A_surfxml_link_state_ON;
5010   AX_surfxml_link_state_file = 0;
5011   AX_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
5012   ENTER(AL_surfxml_link); pushbuffer(0);
5013   }
5014         YY_BREAK
5015
5016 case 214:
5017 /* rule 214 can match eol */
5018 YY_RULE_SETUP
5019 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
5020         YY_BREAK
5021 case 215:
5022 /* rule 215 can match eol */
5023 YY_RULE_SETUP
5024 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
5025         YY_BREAK
5026 case 216:
5027 /* rule 216 can match eol */
5028 YY_RULE_SETUP
5029 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
5030         YY_BREAK
5031 case 217:
5032 /* rule 217 can match eol */
5033 YY_RULE_SETUP
5034 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
5035         YY_BREAK
5036 case 218:
5037 /* rule 218 can match eol */
5038 YY_RULE_SETUP
5039 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth_file);
5040         YY_BREAK
5041 case 219:
5042 /* rule 219 can match eol */
5043 YY_RULE_SETUP
5044 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth_file);
5045         YY_BREAK
5046 case 220:
5047 /* rule 220 can match eol */
5048 YY_RULE_SETUP
5049 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
5050         YY_BREAK
5051 case 221:
5052 /* rule 221 can match eol */
5053 YY_RULE_SETUP
5054 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
5055         YY_BREAK
5056 case 222:
5057 /* rule 222 can match eol */
5058 YY_RULE_SETUP
5059 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency_file);
5060         YY_BREAK
5061 case 223:
5062 /* rule 223 can match eol */
5063 YY_RULE_SETUP
5064 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency_file);
5065         YY_BREAK
5066 case 224:
5067 /* rule 224 can match eol */
5068 case 225:
5069 /* rule 225 can match eol */
5070 YY_RULE_SETUP
5071 A_surfxml_link_state = A_surfxml_link_state_ON;
5072         YY_BREAK
5073 case 226:
5074 /* rule 226 can match eol */
5075 case 227:
5076 /* rule 227 can match eol */
5077 YY_RULE_SETUP
5078 A_surfxml_link_state = A_surfxml_link_state_OFF;
5079         YY_BREAK
5080 case 228:
5081 /* rule 228 can match eol */
5082 YY_RULE_SETUP
5083 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state_file);
5084         YY_BREAK
5085 case 229:
5086 /* rule 229 can match eol */
5087 YY_RULE_SETUP
5088 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state_file);
5089         YY_BREAK
5090 case 230:
5091 /* rule 230 can match eol */
5092 case 231:
5093 /* rule 231 can match eol */
5094 YY_RULE_SETUP
5095 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
5096         YY_BREAK
5097 case 232:
5098 /* rule 232 can match eol */
5099 case 233:
5100 /* rule 233 can match eol */
5101 YY_RULE_SETUP
5102 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FATPIPE;
5103         YY_BREAK
5104 case 234:
5105 YY_RULE_SETUP
5106 {
5107   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
5108   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
5109   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
5110  }
5111         YY_BREAK
5112 case 235:
5113 YY_RULE_SETUP
5114 {
5115   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
5116   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
5117   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
5118   switch (YY_START) {
5119    case S_surfxml_foreach: case S_surfxml_foreach_1: SET(E_surfxml_foreach); break;
5120    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
5121   }
5122  }
5123         YY_BREAK
5124 case 236:
5125 YY_RULE_SETUP
5126 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
5127         YY_BREAK
5128 case 237:
5129 YY_RULE_SETUP
5130 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
5131         YY_BREAK
5132 case YY_STATE_EOF(AL_surfxml_link):
5133 FAIL("EOF in attribute list of `link' element.");
5134         YY_BREAK
5135
5136 case 238:
5137 /* rule 238 can match eol */
5138 YY_RULE_SETUP
5139 {
5140   LEAVE;
5141   ETag_surfxml_link();
5142   popbuffer(); /* attribute */
5143   switch (YY_START) {
5144    case S_surfxml_foreach: case S_surfxml_foreach_1: SET(E_surfxml_foreach); break;
5145    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
5146   }
5147  }
5148         YY_BREAK
5149 case 239:
5150 /* rule 239 can match eol */
5151 YY_RULE_SETUP
5152 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
5153         YY_BREAK
5154 case 240:
5155 YY_RULE_SETUP
5156 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
5157         YY_BREAK
5158 case YY_STATE_EOF(S_surfxml_link_2):
5159 case YY_STATE_EOF(E_surfxml_link):
5160 case YY_STATE_EOF(S_surfxml_link):
5161 FAIL("Premature EOF: `</link>' expected.");
5162         YY_BREAK
5163
5164 case 241:
5165 /* rule 241 can match eol */
5166 YY_RULE_SETUP
5167 FAIL("Starting tag <route:multi> is not allowed here.");
5168         YY_BREAK
5169 case 242:
5170 /* rule 242 can match eol */
5171 YY_RULE_SETUP
5172 {
5173   AX_surfxml_route_c_multi_src = 0;
5174   AX_surfxml_route_c_multi_dst = 0;
5175   AX_surfxml_route_c_multi_action = A_surfxml_route_c_multi_action_POSTPEND;
5176   AX_surfxml_route_c_multi_symmetric = A_surfxml_route_c_multi_symmetric_YES;
5177   ENTER(AL_surfxml_route_c_multi); pushbuffer(0);
5178   }
5179         YY_BREAK
5180
5181 case 243:
5182 /* rule 243 can match eol */
5183 YY_RULE_SETUP
5184 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_c_multi_src);
5185         YY_BREAK
5186 case 244:
5187 /* rule 244 can match eol */
5188 YY_RULE_SETUP
5189 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_c_multi_src);
5190         YY_BREAK
5191 case 245:
5192 /* rule 245 can match eol */
5193 YY_RULE_SETUP
5194 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_c_multi_dst);
5195         YY_BREAK
5196 case 246:
5197 /* rule 246 can match eol */
5198 YY_RULE_SETUP
5199 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_c_multi_dst);
5200         YY_BREAK
5201 case 247:
5202 /* rule 247 can match eol */
5203 case 248:
5204 /* rule 248 can match eol */
5205 YY_RULE_SETUP
5206 A_surfxml_route_c_multi_action = A_surfxml_route_c_multi_action_POSTPEND;
5207         YY_BREAK
5208 case 249:
5209 /* rule 249 can match eol */
5210 case 250:
5211 /* rule 250 can match eol */
5212 YY_RULE_SETUP
5213 A_surfxml_route_c_multi_action = A_surfxml_route_c_multi_action_PREPEND;
5214         YY_BREAK
5215 case 251:
5216 /* rule 251 can match eol */
5217 case 252:
5218 /* rule 252 can match eol */
5219 YY_RULE_SETUP
5220 A_surfxml_route_c_multi_action = A_surfxml_route_c_multi_action_OVERRIDE;
5221         YY_BREAK
5222 case 253:
5223 /* rule 253 can match eol */
5224 case 254:
5225 /* rule 254 can match eol */
5226 YY_RULE_SETUP
5227 A_surfxml_route_c_multi_symmetric = A_surfxml_route_c_multi_symmetric_YES;
5228         YY_BREAK
5229 case 255:
5230 /* rule 255 can match eol */
5231 case 256:
5232 /* rule 256 can match eol */
5233 YY_RULE_SETUP
5234 A_surfxml_route_c_multi_symmetric = A_surfxml_route_c_multi_symmetric_NO;
5235         YY_BREAK
5236 case 257:
5237 YY_RULE_SETUP
5238 {
5239   if (!AX_surfxml_route_c_multi_src) FAIL("Required attribute `src' not set for `route:multi' element.");
5240   if (!AX_surfxml_route_c_multi_dst) FAIL("Required attribute `dst' not set for `route:multi' element.");
5241   LEAVE; STag_surfxml_route_c_multi();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route_c_multi);
5242  }
5243         YY_BREAK
5244 case 258:
5245 YY_RULE_SETUP
5246 FAIL("`route:multi' element cannot be empty.");
5247         YY_BREAK
5248 case 259:
5249 YY_RULE_SETUP
5250 FAIL("Unexpected character `%c' in attribute list of route:multi element.", surf_parse_text[0]);
5251         YY_BREAK
5252 case 260:
5253 YY_RULE_SETUP
5254 FAIL("Bad attribute `%s' in `route:multi' element start tag.",surf_parse_text);
5255         YY_BREAK
5256 case YY_STATE_EOF(AL_surfxml_route_c_multi):
5257 FAIL("EOF in attribute list of `route:multi' element.");
5258         YY_BREAK
5259
5260 case 261:
5261 /* rule 261 can match eol */
5262 YY_RULE_SETUP
5263 {
5264   LEAVE;
5265   ETag_surfxml_route_c_multi();
5266   popbuffer(); /* attribute */
5267   switch (YY_START) {
5268    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
5269   }
5270  }
5271         YY_BREAK
5272 case 262:
5273 /* rule 262 can match eol */
5274 YY_RULE_SETUP
5275 FAIL("Unexpected end-tag `%s': `</route:multi>' expected.",surf_parse_text);
5276         YY_BREAK
5277 case 263:
5278 YY_RULE_SETUP
5279 FAIL("Unexpected character `%c': `</route:multi>' expected.",surf_parse_text[0]);
5280         YY_BREAK
5281 case YY_STATE_EOF(S_surfxml_route_c_multi_2):
5282 case YY_STATE_EOF(E_surfxml_route_c_multi):
5283 FAIL("Premature EOF: `</route:multi>' expected.");
5284         YY_BREAK
5285
5286 case 264:
5287 /* rule 264 can match eol */
5288 YY_RULE_SETUP
5289 FAIL("Starting tag <route> is not allowed here.");
5290         YY_BREAK
5291 case 265:
5292 /* rule 265 can match eol */
5293 YY_RULE_SETUP
5294 {
5295   AX_surfxml_route_src = 0;
5296   AX_surfxml_route_dst = 0;
5297   AX_surfxml_route_impact_on_src = 94;
5298   AX_surfxml_route_impact_on_dst = 98;
5299   AX_surfxml_route_impact_on_src_with_other_recv = 102;
5300   AX_surfxml_route_impact_on_dst_with_other_send = 106;
5301   AX_surfxml_route_action = A_surfxml_route_action_POSTPEND;
5302   ENTER(AL_surfxml_route); pushbuffer(0);
5303   }
5304         YY_BREAK
5305
5306 case 266:
5307 /* rule 266 can match eol */
5308 YY_RULE_SETUP
5309 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
5310         YY_BREAK
5311 case 267:
5312 /* rule 267 can match eol */
5313 YY_RULE_SETUP
5314 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
5315         YY_BREAK
5316 case 268:
5317 /* rule 268 can match eol */
5318 YY_RULE_SETUP
5319 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
5320         YY_BREAK
5321 case 269:
5322 /* rule 269 can match eol */
5323 YY_RULE_SETUP
5324 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
5325         YY_BREAK
5326 case 270:
5327 /* rule 270 can match eol */
5328 YY_RULE_SETUP
5329 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_src);
5330         YY_BREAK
5331 case 271:
5332 /* rule 271 can match eol */
5333 YY_RULE_SETUP
5334 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_src);
5335         YY_BREAK
5336 case 272:
5337 /* rule 272 can match eol */
5338 YY_RULE_SETUP
5339 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_dst);
5340         YY_BREAK
5341 case 273:
5342 /* rule 273 can match eol */
5343 YY_RULE_SETUP
5344 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_dst);
5345         YY_BREAK
5346 case 274:
5347 /* rule 274 can match eol */
5348 YY_RULE_SETUP
5349 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
5350         YY_BREAK
5351 case 275:
5352 /* rule 275 can match eol */
5353 YY_RULE_SETUP
5354 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
5355         YY_BREAK
5356 case 276:
5357 /* rule 276 can match eol */
5358 YY_RULE_SETUP
5359 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
5360         YY_BREAK
5361 case 277:
5362 /* rule 277 can match eol */
5363 YY_RULE_SETUP
5364 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
5365         YY_BREAK
5366 case 278:
5367 /* rule 278 can match eol */
5368 case 279:
5369 /* rule 279 can match eol */
5370 YY_RULE_SETUP
5371 A_surfxml_route_action = A_surfxml_route_action_POSTPEND;
5372         YY_BREAK
5373 case 280:
5374 /* rule 280 can match eol */
5375 case 281:
5376 /* rule 281 can match eol */
5377 YY_RULE_SETUP
5378 A_surfxml_route_action = A_surfxml_route_action_PREPEND;
5379         YY_BREAK
5380 case 282:
5381 /* rule 282 can match eol */
5382 case 283:
5383 /* rule 283 can match eol */
5384 YY_RULE_SETUP
5385 A_surfxml_route_action = A_surfxml_route_action_OVERRIDE;
5386         YY_BREAK
5387 case 284:
5388 YY_RULE_SETUP
5389 {
5390   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
5391   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
5392   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
5393  }
5394         YY_BREAK
5395 case 285:
5396 YY_RULE_SETUP
5397 {
5398   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
5399   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
5400   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
5401   switch (YY_START) {
5402    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
5403   }
5404  }
5405         YY_BREAK
5406 case 286:
5407 YY_RULE_SETUP
5408 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
5409         YY_BREAK
5410 case 287:
5411 YY_RULE_SETUP
5412 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
5413         YY_BREAK
5414 case YY_STATE_EOF(AL_surfxml_route):
5415 FAIL("EOF in attribute list of `route' element.");
5416         YY_BREAK
5417
5418 case 288:
5419 /* rule 288 can match eol */
5420 YY_RULE_SETUP
5421 {
5422   LEAVE;
5423   ETag_surfxml_route();
5424   popbuffer(); /* attribute */
5425   switch (YY_START) {
5426    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
5427   }
5428  }
5429         YY_BREAK
5430 case 289:
5431 /* rule 289 can match eol */
5432 YY_RULE_SETUP
5433 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
5434         YY_BREAK
5435 case 290:
5436 YY_RULE_SETUP
5437 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
5438         YY_BREAK
5439 case YY_STATE_EOF(S_surfxml_route):
5440 case YY_STATE_EOF(S_surfxml_route_2):
5441 case YY_STATE_EOF(E_surfxml_route):
5442 FAIL("Premature EOF: `</route>' expected.");
5443         YY_BREAK
5444
5445 case 291:
5446 /* rule 291 can match eol */
5447 YY_RULE_SETUP
5448 FAIL("Starting tag <link:ctn> is not allowed here.");
5449         YY_BREAK
5450 case 292:
5451 /* rule 292 can match eol */
5452 YY_RULE_SETUP
5453 {
5454   AX_surfxml_link_c_ctn_id = 0;
5455   ENTER(AL_surfxml_link_c_ctn); pushbuffer(0);
5456   }
5457         YY_BREAK
5458
5459 case 293:
5460 /* rule 293 can match eol */
5461 YY_RULE_SETUP
5462 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_c_ctn_id);
5463         YY_BREAK
5464 case 294:
5465 /* rule 294 can match eol */
5466 YY_RULE_SETUP
5467 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_c_ctn_id);
5468         YY_BREAK
5469 case 295:
5470 YY_RULE_SETUP
5471 {
5472   if (!AX_surfxml_link_c_ctn_id) FAIL("Required attribute `id' not set for `link:ctn' element.");
5473   LEAVE; STag_surfxml_link_c_ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link_c_ctn);
5474  }
5475         YY_BREAK
5476 case 296:
5477 YY_RULE_SETUP
5478 {
5479   if (!AX_surfxml_link_c_ctn_id) FAIL("Required attribute `id' not set for `link:ctn' element.");
5480   LEAVE; STag_surfxml_link_c_ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link_c_ctn(); popbuffer(); /* attribute */
5481   switch (YY_START) {
5482    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
5483    case S_surfxml_route_c_multi_2: case S_surfxml_route_c_multi_1: case S_surfxml_route_c_multi: SET(S_surfxml_route_c_multi_2); break;
5484   }
5485  }
5486         YY_BREAK
5487 case 297:
5488 YY_RULE_SETUP
5489 FAIL("Unexpected character `%c' in attribute list of link:ctn element.", surf_parse_text[0]);
5490         YY_BREAK
5491 case 298:
5492 YY_RULE_SETUP
5493 FAIL("Bad attribute `%s' in `link:ctn' element start tag.",surf_parse_text);
5494         YY_BREAK
5495 case YY_STATE_EOF(AL_surfxml_link_c_ctn):
5496 FAIL("EOF in attribute list of `link:ctn' element.");
5497         YY_BREAK
5498
5499 case 299:
5500 /* rule 299 can match eol */
5501 YY_RULE_SETUP
5502 {
5503   LEAVE;
5504   ETag_surfxml_link_c_ctn();
5505   popbuffer(); /* attribute */
5506   switch (YY_START) {
5507    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
5508    case S_surfxml_route_c_multi_2: case S_surfxml_route_c_multi_1: case S_surfxml_route_c_multi: SET(S_surfxml_route_c_multi_2); break;
5509   }
5510  }
5511         YY_BREAK
5512 case 300:
5513 /* rule 300 can match eol */
5514 YY_RULE_SETUP
5515 FAIL("Unexpected end-tag `%s': `</link:ctn>' expected.",surf_parse_text);
5516         YY_BREAK
5517 case 301:
5518 YY_RULE_SETUP
5519 FAIL("Unexpected character `%c': `</link:ctn>' expected.",surf_parse_text[0]);
5520         YY_BREAK
5521 case YY_STATE_EOF(E_surfxml_link_c_ctn):
5522 FAIL("Premature EOF: `</link:ctn>' expected.");
5523         YY_BREAK
5524
5525 case 302:
5526 /* rule 302 can match eol */
5527 YY_RULE_SETUP
5528 FAIL("Starting tag <process> is not allowed here.");
5529         YY_BREAK
5530 case 303:
5531 /* rule 303 can match eol */
5532 YY_RULE_SETUP
5533 {
5534   AX_surfxml_process_host = 0;
5535   AX_surfxml_process_function = 0;
5536   AX_surfxml_process_start_time = 110;
5537   AX_surfxml_process_kill_time = 115;
5538   ENTER(AL_surfxml_process); pushbuffer(0);
5539   }
5540         YY_BREAK
5541
5542 case 304:
5543 /* rule 304 can match eol */
5544 YY_RULE_SETUP
5545 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
5546         YY_BREAK
5547 case 305:
5548 /* rule 305 can match eol */
5549 YY_RULE_SETUP
5550 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
5551         YY_BREAK
5552 case 306:
5553 /* rule 306 can match eol */
5554 YY_RULE_SETUP
5555 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
5556         YY_BREAK
5557 case 307:
5558 /* rule 307 can match eol */
5559 YY_RULE_SETUP
5560 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
5561         YY_BREAK
5562 case 308:
5563 /* rule 308 can match eol */
5564 YY_RULE_SETUP
5565 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start_time);
5566         YY_BREAK
5567 case 309:
5568 /* rule 309 can match eol */
5569 YY_RULE_SETUP
5570 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start_time);
5571         YY_BREAK
5572 case 310:
5573 /* rule 310 can match eol */
5574 YY_RULE_SETUP
5575 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill_time);
5576         YY_BREAK
5577 case 311:
5578 /* rule 311 can match eol */
5579 YY_RULE_SETUP
5580 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill_time);
5581         YY_BREAK
5582 case 312:
5583 YY_RULE_SETUP
5584 {
5585   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
5586   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
5587   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
5588  }
5589         YY_BREAK
5590 case 313:
5591 YY_RULE_SETUP
5592 {
5593   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
5594   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
5595   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
5596   switch (YY_START) {
5597    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
5598   }
5599  }
5600         YY_BREAK
5601 case 314:
5602 YY_RULE_SETUP
5603 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
5604         YY_BREAK
5605 case 315:
5606 YY_RULE_SETUP
5607 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
5608         YY_BREAK
5609 case YY_STATE_EOF(AL_surfxml_process):
5610 FAIL("EOF in attribute list of `process' element.");
5611         YY_BREAK
5612
5613 case 316:
5614 /* rule 316 can match eol */
5615 YY_RULE_SETUP
5616 {
5617   LEAVE;
5618   ETag_surfxml_process();
5619   popbuffer(); /* attribute */
5620   switch (YY_START) {
5621    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
5622   }
5623  }
5624         YY_BREAK
5625 case 317:
5626 /* rule 317 can match eol */
5627 YY_RULE_SETUP
5628 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
5629         YY_BREAK
5630 case 318:
5631 YY_RULE_SETUP
5632 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
5633         YY_BREAK
5634 case YY_STATE_EOF(S_surfxml_process):
5635 case YY_STATE_EOF(E_surfxml_process):
5636 case YY_STATE_EOF(S_surfxml_process_2):
5637 FAIL("Premature EOF: `</process>' expected.");
5638         YY_BREAK
5639
5640 case 319:
5641 /* rule 319 can match eol */
5642 YY_RULE_SETUP
5643 FAIL("Starting tag <argument> is not allowed here.");
5644         YY_BREAK
5645 case 320:
5646 /* rule 320 can match eol */
5647 YY_RULE_SETUP
5648 {
5649   AX_surfxml_argument_value = 0;
5650   ENTER(AL_surfxml_argument); pushbuffer(0);
5651   }
5652         YY_BREAK
5653
5654 case 321:
5655 /* rule 321 can match eol */
5656 YY_RULE_SETUP
5657 ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
5658         YY_BREAK
5659 case 322:
5660 /* rule 322 can match eol */
5661 YY_RULE_SETUP
5662 ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
5663         YY_BREAK
5664 case 323:
5665 YY_RULE_SETUP
5666 {
5667   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5668   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
5669  }
5670         YY_BREAK
5671 case 324:
5672 YY_RULE_SETUP
5673 {
5674   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5675   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
5676   switch (YY_START) {
5677    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
5678   }
5679  }
5680         YY_BREAK
5681 case 325:
5682 YY_RULE_SETUP
5683 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
5684         YY_BREAK
5685 case 326:
5686 YY_RULE_SETUP
5687 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
5688         YY_BREAK
5689 case YY_STATE_EOF(AL_surfxml_argument):
5690 FAIL("EOF in attribute list of `argument' element.");
5691         YY_BREAK
5692
5693 case 327:
5694 /* rule 327 can match eol */
5695 YY_RULE_SETUP
5696 {
5697   LEAVE;
5698   ETag_surfxml_argument();
5699   popbuffer(); /* attribute */
5700   switch (YY_START) {
5701    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
5702   }
5703  }
5704         YY_BREAK
5705 case 328:
5706 /* rule 328 can match eol */
5707 YY_RULE_SETUP
5708 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
5709         YY_BREAK
5710 case 329:
5711 YY_RULE_SETUP
5712 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
5713         YY_BREAK
5714 case YY_STATE_EOF(E_surfxml_argument):
5715 FAIL("Premature EOF: `</argument>' expected.");
5716         YY_BREAK
5717
5718 /* EPILOG: after the root element. */
5719
5720 case 330:
5721 YY_RULE_SETUP
5722 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
5723         YY_BREAK
5724 case YY_STATE_EOF(EPILOG):
5725 SUCCEED;
5726         YY_BREAK
5727
5728 /* CHARACTER DATA. */
5729
5730 /* Non-defined standard entities... */
5731 case 331:
5732 YY_RULE_SETUP
5733 BUFFERPUTC('&');
5734         YY_BREAK
5735 case 332:
5736 YY_RULE_SETUP
5737 BUFFERPUTC('<');
5738         YY_BREAK
5739 case 333:
5740 YY_RULE_SETUP
5741 BUFFERPUTC('>');
5742         YY_BREAK
5743 case 334:
5744 YY_RULE_SETUP
5745 BUFFERPUTC('\'');
5746         YY_BREAK
5747 case 335:
5748 YY_RULE_SETUP
5749 BUFFERPUTC('"');
5750         YY_BREAK
5751 /* Character entities. */
5752 case 336:
5753 YY_RULE_SETUP
5754 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
5755         YY_BREAK
5756 case 337:
5757 YY_RULE_SETUP
5758 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
5759         YY_BREAK
5760
5761 case 338:
5762 /* rule 338 can match eol */
5763 case 339:
5764 /* rule 339 can match eol */
5765 case 340:
5766 /* rule 340 can match eol */
5767 case 341:
5768 /* rule 341 can match eol */
5769 YY_RULE_SETUP
5770 BUFFERPUTC('\n');
5771         YY_BREAK
5772
5773 case 342:
5774 YY_RULE_SETUP
5775 ENTER(CDATA);
5776         YY_BREAK
5777 case 343:
5778 YY_RULE_SETUP
5779 FAIL("Unexpected `]""]>' in character data.");
5780         YY_BREAK
5781
5782 case 344:
5783 YY_RULE_SETUP
5784 BUFFERDONE; LEAVE;
5785         YY_BREAK
5786 case YY_STATE_EOF(VALUE1):
5787 FAIL("EOF in literal (\"'\" expected).");
5788         YY_BREAK
5789
5790 case 345:
5791 YY_RULE_SETUP
5792 BUFFERDONE; LEAVE;
5793         YY_BREAK
5794 case YY_STATE_EOF(VALUE2):
5795 FAIL("EOF in literal (`\"' expected).");
5796         YY_BREAK
5797
5798 case 346:
5799 /* rule 346 can match eol */
5800 YY_RULE_SETUP
5801 BUFFERPUTC(surf_parse_text[0]);
5802         YY_BREAK
5803 case 347:
5804 YY_RULE_SETUP
5805 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
5806         YY_BREAK
5807
5808 case 348:
5809 YY_RULE_SETUP
5810 LEAVE;
5811         YY_BREAK
5812 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
5813 case 349:
5814 YY_RULE_SETUP
5815 BUFFERPUTC(surf_parse_text[0]);
5816         YY_BREAK
5817 case YY_STATE_EOF(CDATA):
5818 FAIL("EOF in CDATA section.");
5819         YY_BREAK
5820
5821 /* Impossible rules to avoid warnings from flex(1). */
5822 /* Ideally, this should be replaced by code in flexml.pl that
5823     generates just the states not covered by other rules. */
5824
5825 case 350:
5826 /* rule 350 can match eol */
5827 YY_RULE_SETUP
5828 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
5829         YY_BREAK
5830
5831 case 351:
5832 YY_RULE_SETUP
5833 ECHO;
5834         YY_BREAK
5835 case YY_STATE_EOF(INITIAL):
5836 case YY_STATE_EOF(ROOT_surfxml_platform):
5837 case YY_STATE_EOF(S_surfxml_platform_2):
5838 case YY_STATE_EOF(S_surfxml_platform_4):
5839 case YY_STATE_EOF(S_surfxml_random_1):
5840 case YY_STATE_EOF(S_surfxml_foreach):
5841 case YY_STATE_EOF(S_surfxml_foreach_1):
5842 case YY_STATE_EOF(S_surfxml_host_1):
5843 case YY_STATE_EOF(S_surfxml_link_1):
5844 case YY_STATE_EOF(S_surfxml_route_c_multi):
5845 case YY_STATE_EOF(S_surfxml_route_c_multi_1):
5846 case YY_STATE_EOF(S_surfxml_route_1):
5847 case YY_STATE_EOF(S_surfxml_process_1):
5848 case YY_STATE_EOF(IMPOSSIBLE):
5849         yyterminate();
5850
5851         case YY_END_OF_BUFFER:
5852                 {
5853                 /* Amount of text matched not including the EOB char. */
5854                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
5855
5856                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
5857                 *yy_cp = (yy_hold_char);
5858                 YY_RESTORE_YY_MORE_OFFSET
5859
5860                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
5861                         {
5862                         /* We're scanning a new file or input source.  It's
5863                          * possible that this happened because the user
5864                          * just pointed surf_parse_in at a new source and called
5865                          * surf_parse_lex().  If so, then we have to assure
5866                          * consistency between YY_CURRENT_BUFFER and our
5867                          * globals.  Here is the right place to do so, because
5868                          * this is the first action (other than possibly a
5869                          * back-up) that will match for the new input source.
5870                          */
5871                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
5872                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
5873                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
5874                         }
5875
5876                 /* Note that here we test for yy_c_buf_p "<=" to the position
5877                  * of the first EOB in the buffer, since yy_c_buf_p will
5878                  * already have been incremented past the NUL character
5879                  * (since all states make transitions on EOB to the
5880                  * end-of-buffer state).  Contrast this with the test
5881                  * in input().
5882                  */
5883                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
5884                         { /* This was really a NUL. */
5885                         yy_state_type yy_next_state;
5886
5887                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
5888
5889                         yy_current_state = yy_get_previous_state(  );
5890
5891                         /* Okay, we're now positioned to make the NUL
5892                          * transition.  We couldn't have
5893                          * yy_get_previous_state() go ahead and do it
5894                          * for us because it doesn't know how to deal
5895                          * with the possibility of jamming (and we don't
5896                          * want to build jamming into it because then it
5897                          * will run more slowly).
5898                          */
5899
5900                         yy_next_state = yy_try_NUL_trans( yy_current_state );
5901
5902                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5903
5904                         if ( yy_next_state )
5905                                 {
5906                                 /* Consume the NUL. */
5907                                 yy_cp = ++(yy_c_buf_p);
5908                                 yy_current_state = yy_next_state;
5909                                 goto yy_match;
5910                                 }
5911
5912                         else
5913                                 {
5914                                 yy_cp = (yy_c_buf_p);
5915                                 goto yy_find_action;
5916                                 }
5917                         }
5918
5919                 else switch ( yy_get_next_buffer(  ) )
5920                         {
5921                         case EOB_ACT_END_OF_FILE:
5922                                 {
5923                                 (yy_did_buffer_switch_on_eof) = 0;
5924
5925                                 if ( surf_parse_wrap( ) )
5926                                         {
5927                                         /* Note: because we've taken care in
5928                                          * yy_get_next_buffer() to have set up
5929                                          * surf_parse_text, we can now set up
5930                                          * yy_c_buf_p so that if some total
5931                                          * hoser (like flex itself) wants to
5932                                          * call the scanner after we return the
5933                                          * YY_NULL, it'll still work - another
5934                                          * YY_NULL will get returned.
5935                                          */
5936                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
5937
5938                                         yy_act = YY_STATE_EOF(YY_START);
5939                                         goto do_action;
5940                                         }
5941
5942                                 else
5943                                         {
5944                                         if ( ! (yy_did_buffer_switch_on_eof) )
5945                                                 YY_NEW_FILE;
5946                                         }
5947                                 break;
5948                                 }
5949
5950                         case EOB_ACT_CONTINUE_SCAN:
5951                                 (yy_c_buf_p) =
5952                                         (yytext_ptr) + yy_amount_of_matched_text;
5953
5954                                 yy_current_state = yy_get_previous_state(  );
5955
5956                                 yy_cp = (yy_c_buf_p);
5957                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5958                                 goto yy_match;
5959
5960                         case EOB_ACT_LAST_MATCH:
5961                                 (yy_c_buf_p) =
5962                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
5963
5964                                 yy_current_state = yy_get_previous_state(  );
5965
5966                                 yy_cp = (yy_c_buf_p);
5967                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5968                                 goto yy_find_action;
5969                         }
5970                 break;
5971                 }
5972
5973         default:
5974                 YY_FATAL_ERROR(
5975                         "fatal flex scanner internal error--no action found" );
5976         } /* end of action switch */
5977                 } /* end of scanning one token */
5978 } /* end of surf_parse_lex */
5979
5980 /* yy_get_next_buffer - try to read in a new buffer
5981  *
5982  * Returns a code representing an action:
5983  *      EOB_ACT_LAST_MATCH -
5984  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
5985  *      EOB_ACT_END_OF_FILE - end of file
5986  */
5987 static int yy_get_next_buffer (void)
5988 {
5989         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
5990         register char *source = (yytext_ptr);
5991         register int number_to_move, i;
5992         int ret_val;
5993
5994         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
5995                 YY_FATAL_ERROR(
5996                 "fatal flex scanner internal error--end of buffer missed" );
5997
5998         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
5999                 { /* Don't try to fill the buffer, so this is an EOF. */
6000                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
6001                         {
6002                         /* We matched a single character, the EOB, so
6003                          * treat this as a final EOF.
6004                          */
6005                         return EOB_ACT_END_OF_FILE;
6006                         }
6007
6008                 else
6009                         {
6010                         /* We matched some text prior to the EOB, first
6011                          * process it.
6012                          */
6013                         return EOB_ACT_LAST_MATCH;
6014                         }
6015                 }
6016
6017         /* Try to read more data. */
6018
6019         /* First move last chars to start of buffer. */
6020         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
6021
6022         for ( i = 0; i < number_to_move; ++i )
6023                 *(dest++) = *(source++);
6024
6025         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
6026                 /* don't do the read, it's not guaranteed to return an EOF,
6027                  * just force an EOF
6028                  */
6029                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
6030
6031         else
6032                 {
6033                         int num_to_read =
6034                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
6035
6036                 while ( num_to_read <= 0 )
6037                         { /* Not enough room in the buffer - grow it. */
6038
6039                         /* just a shorter name for the current buffer */
6040                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
6041
6042                         int yy_c_buf_p_offset =
6043                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
6044
6045                         if ( b->yy_is_our_buffer )
6046                                 {
6047                                 int new_size = b->yy_buf_size * 2;
6048
6049                                 if ( new_size <= 0 )
6050                                         b->yy_buf_size += b->yy_buf_size / 8;
6051                                 else
6052                                         b->yy_buf_size *= 2;
6053
6054                                 b->yy_ch_buf = (char *)
6055                                         /* Include room in for 2 EOB chars. */
6056                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
6057                                 }
6058                         else
6059                                 /* Can't grow it, we don't own it. */
6060                                 b->yy_ch_buf = 0;
6061
6062                         if ( ! b->yy_ch_buf )
6063                                 YY_FATAL_ERROR(
6064                                 "fatal error - scanner input buffer overflow" );
6065
6066                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
6067
6068                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
6069                                                 number_to_move - 1;
6070
6071                         }
6072
6073                 if ( num_to_read > YY_READ_BUF_SIZE )
6074                         num_to_read = YY_READ_BUF_SIZE;
6075
6076                 /* Read in more data. */
6077                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
6078                         (yy_n_chars), (size_t) num_to_read );
6079
6080                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6081                 }
6082
6083         if ( (yy_n_chars) == 0 )
6084                 {
6085                 if ( number_to_move == YY_MORE_ADJ )
6086                         {
6087                         ret_val = EOB_ACT_END_OF_FILE;
6088                         surf_parse_restart(surf_parse_in  );
6089                         }
6090
6091                 else
6092                         {
6093                         ret_val = EOB_ACT_LAST_MATCH;
6094                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
6095                                 YY_BUFFER_EOF_PENDING;
6096                         }
6097                 }
6098
6099         else
6100                 ret_val = EOB_ACT_CONTINUE_SCAN;
6101
6102         if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
6103                 /* Extend the array by 50%, plus the number we really need. */
6104                 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
6105                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) surf_parse_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
6106                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6107                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
6108         }
6109
6110         (yy_n_chars) += number_to_move;
6111         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
6112         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
6113
6114         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
6115
6116         return ret_val;
6117 }
6118
6119 /* yy_get_previous_state - get the state just before the EOB char was reached */
6120
6121     static yy_state_type yy_get_previous_state (void)
6122 {
6123         register yy_state_type yy_current_state;
6124         register char *yy_cp;
6125     
6126         yy_current_state = (yy_start);
6127
6128         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
6129                 {
6130                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
6131                 if ( yy_accept[yy_current_state] )
6132                         {
6133                         (yy_last_accepting_state) = yy_current_state;
6134                         (yy_last_accepting_cpos) = yy_cp;
6135                         }
6136                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6137                         {
6138                         yy_current_state = (int) yy_def[yy_current_state];
6139                         if ( yy_current_state >= 2023 )
6140                                 yy_c = yy_meta[(unsigned int) yy_c];
6141                         }
6142                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6143                 }
6144
6145         return yy_current_state;
6146 }
6147
6148 /* yy_try_NUL_trans - try to make a transition on the NUL character
6149  *
6150  * synopsis
6151  *      next_state = yy_try_NUL_trans( current_state );
6152  */
6153     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
6154 {
6155         register int yy_is_jam;
6156         register char *yy_cp = (yy_c_buf_p);
6157
6158         register YY_CHAR yy_c = 1;
6159         if ( yy_accept[yy_current_state] )
6160                 {
6161                 (yy_last_accepting_state) = yy_current_state;
6162                 (yy_last_accepting_cpos) = yy_cp;
6163                 }
6164         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6165                 {
6166                 yy_current_state = (int) yy_def[yy_current_state];
6167                 if ( yy_current_state >= 2023 )
6168                         yy_c = yy_meta[(unsigned int) yy_c];
6169                 }
6170         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6171         yy_is_jam = (yy_current_state == 2022);
6172
6173         return yy_is_jam ? 0 : yy_current_state;
6174 }
6175
6176 #ifndef YY_NO_INPUT
6177 #ifdef __cplusplus
6178     static int yyinput (void)
6179 #else
6180     static int input  (void)
6181 #endif
6182
6183 {
6184         int c;
6185     
6186         *(yy_c_buf_p) = (yy_hold_char);
6187
6188         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
6189                 {
6190                 /* yy_c_buf_p now points to the character we want to return.
6191                  * If this occurs *before* the EOB characters, then it's a
6192                  * valid NUL; if not, then we've hit the end of the buffer.
6193                  */
6194                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6195                         /* This was really a NUL. */
6196                         *(yy_c_buf_p) = '\0';
6197
6198                 else
6199                         { /* need more input */
6200                         int offset = (yy_c_buf_p) - (yytext_ptr);
6201                         ++(yy_c_buf_p);
6202
6203                         switch ( yy_get_next_buffer(  ) )
6204                                 {
6205                                 case EOB_ACT_LAST_MATCH:
6206                                         /* This happens because yy_g_n_b()
6207                                          * sees that we've accumulated a
6208                                          * token and flags that we need to
6209                                          * try matching the token before
6210                                          * proceeding.  But for input(),
6211                                          * there's no matching to consider.
6212                                          * So convert the EOB_ACT_LAST_MATCH
6213                                          * to EOB_ACT_END_OF_FILE.
6214                                          */
6215
6216                                         /* Reset buffer status. */
6217                                         surf_parse_restart(surf_parse_in );
6218
6219                                         /*FALLTHROUGH*/
6220
6221                                 case EOB_ACT_END_OF_FILE:
6222                                         {
6223                                         if ( surf_parse_wrap( ) )
6224                                                 return EOF;
6225
6226                                         if ( ! (yy_did_buffer_switch_on_eof) )
6227                                                 YY_NEW_FILE;
6228 #ifdef __cplusplus
6229                                         return yyinput();
6230 #else
6231                                         return input();
6232 #endif
6233                                         }
6234
6235                                 case EOB_ACT_CONTINUE_SCAN:
6236                                         (yy_c_buf_p) = (yytext_ptr) + offset;
6237                                         break;
6238                                 }
6239                         }
6240                 }
6241
6242         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
6243         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
6244         (yy_hold_char) = *++(yy_c_buf_p);
6245
6246         if ( c == '\n' )
6247                    
6248     surf_parse_lineno++;
6249 ;
6250
6251         return c;
6252 }
6253 #endif  /* ifndef YY_NO_INPUT */
6254
6255 /** Immediately switch to a different input stream.
6256  * @param input_file A readable stream.
6257  * 
6258  * @note This function does not reset the start condition to @c INITIAL .
6259  */
6260     void surf_parse_restart  (FILE * input_file )
6261 {
6262     
6263         if ( ! YY_CURRENT_BUFFER ){
6264         surf_parse_ensure_buffer_stack ();
6265                 YY_CURRENT_BUFFER_LVALUE =
6266             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
6267         }
6268
6269         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
6270         surf_parse__load_buffer_state( );
6271 }
6272
6273 /** Switch to a different input buffer.
6274  * @param new_buffer The new input buffer.
6275  * 
6276  */
6277     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
6278 {
6279     
6280         /* TODO. We should be able to replace this entire function body
6281          * with
6282          *              surf_parse_pop_buffer_state();
6283          *              surf_parse_push_buffer_state(new_buffer);
6284      */
6285         surf_parse_ensure_buffer_stack ();
6286         if ( YY_CURRENT_BUFFER == new_buffer )
6287                 return;
6288
6289         if ( YY_CURRENT_BUFFER )
6290                 {
6291                 /* Flush out information for old buffer. */
6292                 *(yy_c_buf_p) = (yy_hold_char);
6293                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6294                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6295                 }
6296
6297         YY_CURRENT_BUFFER_LVALUE = new_buffer;
6298         surf_parse__load_buffer_state( );
6299
6300         /* We don't actually know whether we did this switch during
6301          * EOF (surf_parse_wrap()) processing, but the only time this flag
6302          * is looked at is after surf_parse_wrap() is called, so it's safe
6303          * to go ahead and always set it.
6304          */
6305         (yy_did_buffer_switch_on_eof) = 1;
6306 }
6307
6308 static void surf_parse__load_buffer_state  (void)
6309 {
6310         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6311         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6312         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6313         (yy_hold_char) = *(yy_c_buf_p);
6314 }
6315
6316 /** Allocate and initialize an input buffer state.
6317  * @param file A readable stream.
6318  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
6319  * 
6320  * @return the allocated buffer state.
6321  */
6322     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
6323 {
6324         YY_BUFFER_STATE b;
6325     
6326         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
6327         if ( ! b )
6328                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
6329
6330         b->yy_buf_size = size;
6331
6332         /* yy_ch_buf has to be 2 characters longer than the size given because
6333          * we need to put in 2 end-of-buffer characters.
6334          */
6335         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
6336         if ( ! b->yy_ch_buf )
6337                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
6338
6339         b->yy_is_our_buffer = 1;
6340
6341         surf_parse__init_buffer(b,file );
6342
6343         return b;
6344 }
6345
6346 /** Destroy the buffer.
6347  * @param b a buffer created with surf_parse__create_buffer()
6348  * 
6349  */
6350     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
6351 {
6352     
6353         if ( ! b )
6354                 return;
6355
6356         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
6357                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
6358
6359         if ( b->yy_is_our_buffer )
6360                 surf_parse_free((void *) b->yy_ch_buf  );
6361
6362         surf_parse_free((void *) b  );
6363 }
6364
6365 #ifndef __cplusplus
6366 #ifndef WIN32
6367 extern int isatty (int );
6368 #endif
6369 #endif /* __cplusplus */
6370     
6371 /* Initializes or reinitializes a buffer.
6372  * This function is sometimes called more than once on the same buffer,
6373  * such as during a surf_parse_restart() or at EOF.
6374  */
6375     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
6376
6377 {
6378         int oerrno = errno;
6379     
6380         surf_parse__flush_buffer(b );
6381
6382         b->yy_input_file = file;
6383         b->yy_fill_buffer = 1;
6384
6385     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
6386      * called from surf_parse_restart() or through yy_get_next_buffer.
6387      * In that case, we don't want to reset the lineno or column.
6388      */
6389     if (b != YY_CURRENT_BUFFER){
6390         b->yy_bs_lineno = 1;
6391         b->yy_bs_column = 0;
6392     }
6393
6394         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
6395     
6396         errno = oerrno;
6397 }
6398
6399 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
6400  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
6401  * 
6402  */
6403     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
6404 {
6405         if ( ! b )
6406                 return;
6407
6408         b->yy_n_chars = 0;
6409
6410         /* We always need two end-of-buffer characters.  The first causes
6411          * a transition to the end-of-buffer state.  The second causes
6412          * a jam in that state.
6413          */
6414         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
6415         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
6416
6417         b->yy_buf_pos = &b->yy_ch_buf[0];
6418
6419         b->yy_at_bol = 1;
6420         b->yy_buffer_status = YY_BUFFER_NEW;
6421
6422         if ( b == YY_CURRENT_BUFFER )
6423                 surf_parse__load_buffer_state( );
6424 }
6425
6426 /** Pushes the new state onto the stack. The new state becomes
6427  *  the current state. This function will allocate the stack
6428  *  if necessary.
6429  *  @param new_buffer The new state.
6430  *  
6431  */
6432 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
6433 {
6434         if (new_buffer == NULL)
6435                 return;
6436
6437         surf_parse_ensure_buffer_stack();
6438
6439         /* This block is copied from surf_parse__switch_to_buffer. */
6440         if ( YY_CURRENT_BUFFER )
6441                 {
6442                 /* Flush out information for old buffer. */
6443                 *(yy_c_buf_p) = (yy_hold_char);
6444                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6445                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6446                 }
6447
6448         /* Only push if top exists. Otherwise, replace top. */
6449         if (YY_CURRENT_BUFFER)
6450                 (yy_buffer_stack_top)++;
6451         YY_CURRENT_BUFFER_LVALUE = new_buffer;
6452
6453         /* copied from surf_parse__switch_to_buffer. */
6454         surf_parse__load_buffer_state( );
6455         (yy_did_buffer_switch_on_eof) = 1;
6456 }
6457
6458 /** Removes and deletes the top of the stack, if present.
6459  *  The next element becomes the new top.
6460  *  
6461  */
6462 void surf_parse_pop_buffer_state (void)
6463 {
6464         if (!YY_CURRENT_BUFFER)
6465                 return;
6466
6467         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
6468         YY_CURRENT_BUFFER_LVALUE = NULL;
6469         if ((yy_buffer_stack_top) > 0)
6470                 --(yy_buffer_stack_top);
6471
6472         if (YY_CURRENT_BUFFER) {
6473                 surf_parse__load_buffer_state( );
6474                 (yy_did_buffer_switch_on_eof) = 1;
6475         }
6476 }
6477
6478 /* Allocates the stack if it does not exist.
6479  *  Guarantees space for at least one push.
6480  */
6481 static void surf_parse_ensure_buffer_stack (void)
6482 {
6483         int num_to_alloc;
6484     
6485         if (!(yy_buffer_stack)) {
6486
6487                 /* First allocation is just for 2 elements, since we don't know if this
6488                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
6489                  * immediate realloc on the next call.
6490          */
6491                 num_to_alloc = 1;
6492                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
6493                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
6494                                                                 );
6495                 if ( ! (yy_buffer_stack) )
6496                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
6497                                                                   
6498                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
6499                                 
6500                 (yy_buffer_stack_max) = num_to_alloc;
6501                 (yy_buffer_stack_top) = 0;
6502                 return;
6503         }
6504
6505         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
6506
6507                 /* Increase the buffer to prepare for a possible push. */
6508                 int grow_size = 8 /* arbitrary grow size */;
6509
6510                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
6511                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
6512                                                                 ((yy_buffer_stack),
6513                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
6514                                                                 );
6515                 if ( ! (yy_buffer_stack) )
6516                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
6517
6518                 /* zero only the new slots.*/
6519                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
6520                 (yy_buffer_stack_max) = num_to_alloc;
6521         }
6522 }
6523
6524 /** Setup the input buffer state to scan directly from a user-specified character buffer.
6525  * @param base the character buffer
6526  * @param size the size in bytes of the character buffer
6527  * 
6528  * @return the newly allocated buffer state object. 
6529  */
6530 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
6531 {
6532         YY_BUFFER_STATE b;
6533     
6534         if ( size < 2 ||
6535              base[size-2] != YY_END_OF_BUFFER_CHAR ||
6536              base[size-1] != YY_END_OF_BUFFER_CHAR )
6537                 /* They forgot to leave room for the EOB's. */
6538                 return 0;
6539
6540         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
6541         if ( ! b )
6542                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
6543
6544         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
6545         b->yy_buf_pos = b->yy_ch_buf = base;
6546         b->yy_is_our_buffer = 0;
6547         b->yy_input_file = 0;
6548         b->yy_n_chars = b->yy_buf_size;
6549         b->yy_is_interactive = 0;
6550         b->yy_at_bol = 1;
6551         b->yy_fill_buffer = 0;
6552         b->yy_buffer_status = YY_BUFFER_NEW;
6553
6554         surf_parse__switch_to_buffer(b  );
6555
6556         return b;
6557 }
6558
6559 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
6560  * scan from a @e copy of @a str.
6561  * @param yystr a NUL-terminated string to scan
6562  * 
6563  * @return the newly allocated buffer state object.
6564  * @note If you want to scan bytes that may contain NUL values, then use
6565  *       surf_parse__scan_bytes() instead.
6566  */
6567 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
6568 {
6569     
6570         return surf_parse__scan_bytes(yystr,strlen(yystr) );
6571 }
6572
6573 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
6574  * scan from a @e copy of @a bytes.
6575  * @param bytes the byte buffer to scan
6576  * @param len the number of bytes in the buffer pointed to by @a bytes.
6577  * 
6578  * @return the newly allocated buffer state object.
6579  */
6580 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
6581 {
6582         YY_BUFFER_STATE b;
6583         char *buf;
6584         yy_size_t n;
6585         int i;
6586     
6587         /* Get memory for full buffer, including space for trailing EOB's. */
6588         n = _yybytes_len + 2;
6589         buf = (char *) surf_parse_alloc(n  );
6590         if ( ! buf )
6591                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
6592
6593         for ( i = 0; i < _yybytes_len; ++i )
6594                 buf[i] = yybytes[i];
6595
6596         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
6597
6598         b = surf_parse__scan_buffer(buf,n );
6599         if ( ! b )
6600                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
6601
6602         /* It's okay to grow etc. this buffer, and we should throw it
6603          * away when we're done.
6604          */
6605         b->yy_is_our_buffer = 1;
6606
6607         return b;
6608 }
6609
6610     static void yy_push_state (int  new_state )
6611 {
6612         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
6613                 {
6614                 yy_size_t new_size;
6615
6616                 (yy_start_stack_depth) += YY_START_STACK_INCR;
6617                 new_size = (yy_start_stack_depth) * sizeof( int );
6618
6619                 if ( ! (yy_start_stack) )
6620                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
6621
6622                 else
6623                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
6624
6625                 if ( ! (yy_start_stack) )
6626                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
6627                 }
6628
6629         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
6630
6631         BEGIN(new_state);
6632 }
6633
6634     static void yy_pop_state  (void)
6635 {
6636         if ( --(yy_start_stack_ptr) < 0 )
6637                 YY_FATAL_ERROR( "start-condition stack underflow" );
6638
6639         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
6640 }
6641
6642 #ifndef YY_EXIT_FAILURE
6643 #define YY_EXIT_FAILURE 2
6644 #endif
6645
6646 static void yy_fatal_error (yyconst char* msg )
6647 {
6648         (void) fprintf( stderr, "%s\n", msg );
6649         exit( YY_EXIT_FAILURE );
6650 }
6651
6652 /* Redefine yyless() so it works in section 3 code. */
6653
6654 #undef yyless
6655 #define yyless(n) \
6656         do \
6657                 { \
6658                 /* Undo effects of setting up surf_parse_text. */ \
6659         int yyless_macro_arg = (n); \
6660         YY_LESS_LINENO(yyless_macro_arg);\
6661                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
6662                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
6663                 (yy_hold_char) = *(yy_c_buf_p); \
6664                 *(yy_c_buf_p) = '\0'; \
6665                 surf_parse_leng = yyless_macro_arg; \
6666                 } \
6667         while ( 0 )
6668
6669 /* Accessor  methods (get/set functions) to struct members. */
6670
6671 /** Get the current line number.
6672  * 
6673  */
6674 int surf_parse_get_lineno  (void)
6675 {
6676         
6677     return surf_parse_lineno;
6678 }
6679
6680 /** Get the input stream.
6681  * 
6682  */
6683 FILE *surf_parse_get_in  (void)
6684 {
6685         return surf_parse_in;
6686 }
6687
6688 /** Get the output stream.
6689  * 
6690  */
6691 FILE *surf_parse_get_out  (void)
6692 {
6693         return surf_parse_out;
6694 }
6695
6696 /** Get the length of the current token.
6697  * 
6698  */
6699 int surf_parse_get_leng  (void)
6700 {
6701         return surf_parse_leng;
6702 }
6703
6704 /** Get the current token.
6705  * 
6706  */
6707
6708 char *surf_parse_get_text  (void)
6709 {
6710         return surf_parse_text;
6711 }
6712
6713 /** Set the current line number.
6714  * @param line_number
6715  * 
6716  */
6717 void surf_parse_set_lineno (int  line_number )
6718 {
6719     
6720     surf_parse_lineno = line_number;
6721 }
6722
6723 /** Set the input stream. This does not discard the current
6724  * input buffer.
6725  * @param in_str A readable stream.
6726  * 
6727  * @see surf_parse__switch_to_buffer
6728  */
6729 void surf_parse_set_in (FILE *  in_str )
6730 {
6731         surf_parse_in = in_str ;
6732 }
6733
6734 void surf_parse_set_out (FILE *  out_str )
6735 {
6736         surf_parse_out = out_str ;
6737 }
6738
6739 int surf_parse_get_debug  (void)
6740 {
6741         return surf_parse__flex_debug;
6742 }
6743
6744 void surf_parse_set_debug (int  bdebug )
6745 {
6746         surf_parse__flex_debug = bdebug ;
6747 }
6748
6749 static int yy_init_globals (void)
6750 {
6751         /* Initialization is the same as for the non-reentrant scanner.
6752      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
6753      */
6754
6755     /* We do not touch surf_parse_lineno unless the option is enabled. */
6756     surf_parse_lineno =  1;
6757     
6758     (yy_buffer_stack) = 0;
6759     (yy_buffer_stack_top) = 0;
6760     (yy_buffer_stack_max) = 0;
6761     (yy_c_buf_p) = (char *) 0;
6762     (yy_init) = 0;
6763     (yy_start) = 0;
6764
6765     (yy_start_stack_ptr) = 0;
6766     (yy_start_stack_depth) = 0;
6767     (yy_start_stack) =  NULL;
6768
6769 /* Defined in main.c */
6770 #ifdef YY_STDINIT
6771     surf_parse_in = stdin;
6772     surf_parse_out = stdout;
6773 #else
6774     surf_parse_in = (FILE *) 0;
6775     surf_parse_out = (FILE *) 0;
6776 #endif
6777
6778     /* For future reference: Set errno on error, since we are called by
6779      * surf_parse_lex_init()
6780      */
6781     return 0;
6782 }
6783
6784 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
6785 int surf_parse_lex_destroy  (void)
6786 {
6787     
6788     /* Pop the buffer stack, destroying each element. */
6789         while(YY_CURRENT_BUFFER){
6790                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
6791                 YY_CURRENT_BUFFER_LVALUE = NULL;
6792                 surf_parse_pop_buffer_state();
6793         }
6794
6795         /* Destroy the stack itself. */
6796         surf_parse_free((yy_buffer_stack) );
6797         (yy_buffer_stack) = NULL;
6798
6799     /* Destroy the start condition stack. */
6800         surf_parse_free((yy_start_stack)  );
6801         (yy_start_stack) = NULL;
6802
6803     /* Reset the globals. This is important in a non-reentrant scanner so the next time
6804      * surf_parse_lex() is called, initialization will occur. */
6805     yy_init_globals( );
6806
6807     return 0;
6808 }
6809
6810 /*
6811  * Internal utility routines.
6812  */
6813
6814 #ifndef yytext_ptr
6815 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
6816 {
6817         register int i;
6818         for ( i = 0; i < n; ++i )
6819                 s1[i] = s2[i];
6820 }
6821 #endif
6822
6823 #ifdef YY_NEED_STRLEN
6824 static int yy_flex_strlen (yyconst char * s )
6825 {
6826         register int n;
6827         for ( n = 0; s[n]; ++n )
6828                 ;
6829
6830         return n;
6831 }
6832 #endif
6833
6834 void *surf_parse_alloc (yy_size_t  size )
6835 {
6836         return (void *) malloc( size );
6837 }
6838
6839 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
6840 {
6841         /* The cast to (char *) in the following accommodates both
6842          * implementations that use char* generic pointers, and those
6843          * that use void* generic pointers.  It works with the latter
6844          * because both ANSI C and C++ allow castless assignment from
6845          * any pointer type to void*, and deal with argument conversions
6846          * as though doing an assignment.
6847          */
6848         return (void *) realloc( (char *) ptr, size );
6849 }
6850
6851 void surf_parse_free (void * ptr )
6852 {
6853         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
6854 }
6855
6856 #define YYTABLES_NAME "yytables"
6857
6858 /* Element context stack lookup. */
6859 int surfxml_element_context(int i)
6860 {
6861   return (0<i && i<yy_start_stack_depth
6862           ? yy_start_stack[yy_start_stack_ptr - i]
6863           : 0);
6864 }
6865
6866 #ifdef FLEX_DEBUG
6867 void print_yy_stack(char* fmt, ...)
6868 {
6869   int i = 0; va_list ap; va_start(ap, fmt);
6870   vfprintf(stderr, fmt, ap);
6871   if (surfxml_statenames) {
6872       for (i=1; i<yy_start_stack_ptr; i++) {
6873           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
6874       }
6875       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
6876   }
6877   va_end(ap);
6878 }
6879
6880 void print_surfxml_bufferstack()
6881 {
6882     int i;
6883     fputs("Buffer: ", stderr);
6884     for (i = 0; i < blimit; i++) {
6885        if ( surfxml_bufferstack[i] == '\377' ) break;
6886          putc(surfxml_bufferstack[i], stderr);
6887     }
6888     putc('\n', stderr);
6889 }
6890
6891 static void debug_enter(int state, const char* statename) {
6892   yy_push_state(state);
6893   if (surf_parse__flex_debug) {
6894        print_yy_stack("--ENTER(%s) : ",statename);
6895        print_surfxml_bufferstack();
6896   }
6897 }
6898
6899 static void debug_leave(void) {
6900     if (surf_parse__flex_debug) {
6901         print_yy_stack("--LEAVE : ");
6902         print_surfxml_bufferstack();
6903     }
6904   yy_pop_state();
6905 }
6906
6907 static void debug_set(int state, const char* statename) {
6908   BEGIN(state);
6909   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
6910 }
6911 #endif
6912
6913 static void cleanup(void)
6914 {
6915     if (surfxml_statenames) {
6916         free(surfxml_statenames);
6917         surfxml_statenames = NULL;
6918     }
6919     free(surfxml_bufferstack);
6920     surfxml_bufferstack = NULL;
6921
6922     free(indexstack);
6923     indexstack = NULL;
6924 }
6925
6926 static int fail(const char* fmt, ...)
6927 {
6928     int chars_left, used;
6929     va_list ap; va_start(ap, fmt);
6930 #ifdef FLEXML_yylineno
6931     used = sprintf(flexml_err_msg,
6932                    "Invalid XML (XML input line %d, state %d): ",
6933                    surf_parse_lineno, YY_START);
6934 #else
6935     used = sprintf(flexml_err_msg,
6936                    "Invalid XML (state %d): ",
6937                    YY_START);
6938 #endif
6939     chars_left = flexml_max_err_msg_size - used - 1;
6940     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
6941     va_end(ap);
6942
6943 #ifndef FLEXML_quiet_parser
6944     /* print directly to sdterr */
6945     fprintf(stderr, "%s\n", flexml_err_msg);
6946     flexml_err_msg[0] = '\0';
6947 #endif
6948
6949     cleanup();
6950
6951     return 1;
6952 }
6953