Logo AND Algorithmique Numérique Distribuée

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