Logo AND Algorithmique Numérique Distribuée

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