Logo AND Algorithmique Numérique Distribuée

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