Logo AND Algorithmique Numérique Distribuée

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