Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
maintainer mode pass, to add dragonfly topology
[simgrid.git] / src / surf / xml / simgrid_dtd.c
1
2 #define  YY_INT_ALIGNED short int
3
4 /* A lexical scanner generated by flex */
5
6 #define yy_create_buffer surf_parse__create_buffer
7 #define yy_delete_buffer surf_parse__delete_buffer
8 #define yy_flex_debug surf_parse__flex_debug
9 #define yy_init_buffer surf_parse__init_buffer
10 #define yy_flush_buffer surf_parse__flush_buffer
11 #define yy_load_buffer_state surf_parse__load_buffer_state
12 #define yy_switch_to_buffer surf_parse__switch_to_buffer
13 #define yyin surf_parse_in
14 #define yyleng surf_parse_leng
15 #define yylex surf_parse_lex
16 #define yylineno surf_parse_lineno
17 #define yyout surf_parse_out
18 #define yyrestart surf_parse_restart
19 #define yytext surf_parse_text
20 #define yywrap surf_parse_wrap
21 #define yyalloc surf_parse_alloc
22 #define yyrealloc surf_parse_realloc
23 #define yyfree surf_parse_free
24
25 #define FLEX_SCANNER
26 #define YY_FLEX_MAJOR_VERSION 2
27 #define YY_FLEX_MINOR_VERSION 6
28 #define YY_FLEX_SUBMINOR_VERSION 0
29 #if YY_FLEX_SUBMINOR_VERSION > 0
30 #define FLEX_BETA
31 #endif
32
33 /* First, we deal with  platform-specific or compiler-specific issues. */
34
35 /* begin standard C headers. */
36 #include <stdio.h>
37 #include <string.h>
38 #include <errno.h>
39 #include <stdlib.h>
40
41 /* end standard C headers. */
42
43 /* flex integer type definitions */
44
45 #ifndef FLEXINT_H
46 #define FLEXINT_H
47
48 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
49
50 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
51
52 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
53  * if you want the limit (max/min) macros for int types. 
54  */
55 #ifndef __STDC_LIMIT_MACROS
56 #define __STDC_LIMIT_MACROS 1
57 #endif
58
59 #include <inttypes.h>
60 typedef int8_t flex_int8_t;
61 typedef uint8_t flex_uint8_t;
62 typedef int16_t flex_int16_t;
63 typedef uint16_t flex_uint16_t;
64 typedef int32_t flex_int32_t;
65 typedef uint32_t flex_uint32_t;
66 #else
67 typedef signed char flex_int8_t;
68 typedef short int flex_int16_t;
69 typedef int flex_int32_t;
70 typedef unsigned char flex_uint8_t; 
71 typedef unsigned short int flex_uint16_t;
72 typedef unsigned int flex_uint32_t;
73
74 /* Limits of integral types. */
75 #ifndef INT8_MIN
76 #define INT8_MIN               (-128)
77 #endif
78 #ifndef INT16_MIN
79 #define INT16_MIN              (-32767-1)
80 #endif
81 #ifndef INT32_MIN
82 #define INT32_MIN              (-2147483647-1)
83 #endif
84 #ifndef INT8_MAX
85 #define INT8_MAX               (127)
86 #endif
87 #ifndef INT16_MAX
88 #define INT16_MAX              (32767)
89 #endif
90 #ifndef INT32_MAX
91 #define INT32_MAX              (2147483647)
92 #endif
93 #ifndef UINT8_MAX
94 #define UINT8_MAX              (255U)
95 #endif
96 #ifndef UINT16_MAX
97 #define UINT16_MAX             (65535U)
98 #endif
99 #ifndef UINT32_MAX
100 #define UINT32_MAX             (4294967295U)
101 #endif
102
103 #endif /* ! C99 */
104
105 #endif /* ! FLEXINT_H */
106
107 #ifdef __cplusplus
108
109 /* The "const" storage-class-modifier is valid. */
110 #define YY_USE_CONST
111
112 #else   /* ! __cplusplus */
113
114 /* C99 requires __STDC__ to be defined as 1. */
115 #if defined (__STDC__)
116
117 #define YY_USE_CONST
118
119 #endif  /* defined (__STDC__) */
120 #endif  /* ! __cplusplus */
121
122 #ifdef YY_USE_CONST
123 #define yyconst const
124 #else
125 #define yyconst
126 #endif
127
128 /* Returned upon end-of-file. */
129 #define YY_NULL 0
130
131 /* Promotes a possibly negative, possibly signed char to an unsigned
132  * integer for use as an array index.  If the signed char is negative,
133  * we want to instead treat it as an 8-bit unsigned char, hence the
134  * double cast.
135  */
136 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
137
138 /* Enter a start condition.  This macro really ought to take a parameter,
139  * but we do it the disgusting crufty way forced on us by the ()-less
140  * definition of BEGIN.
141  */
142 #define BEGIN (yy_start) = 1 + 2 *
143
144 /* Translate the current start state into a value that can be later handed
145  * to BEGIN to return to the state.  The YYSTATE alias is for lex
146  * compatibility.
147  */
148 #define YY_START (((yy_start) - 1) / 2)
149 #define YYSTATE YY_START
150
151 /* Action number for EOF rule of a given start state. */
152 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
153
154 /* Special action meaning "start processing a new file". */
155 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
156
157 #define YY_END_OF_BUFFER_CHAR 0
158
159 /* Size of default input buffer. */
160 #ifndef YY_BUF_SIZE
161 #ifdef __ia64__
162 /* On IA-64, the buffer size is 16k, not 8k.
163  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
164  * Ditto for the __ia64__ case accordingly.
165  */
166 #define YY_BUF_SIZE 32768
167 #else
168 #define YY_BUF_SIZE 16384
169 #endif /* __ia64__ */
170 #endif
171
172 /* The state buf must be large enough to hold one state per character in the main buffer.
173  */
174 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
175
176 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
177 #define YY_TYPEDEF_YY_BUFFER_STATE
178 typedef struct yy_buffer_state *YY_BUFFER_STATE;
179 #endif
180
181 #ifndef YY_TYPEDEF_YY_SIZE_T
182 #define YY_TYPEDEF_YY_SIZE_T
183 typedef size_t yy_size_t;
184 #endif
185
186 extern yy_size_t surf_parse_leng;
187
188 extern FILE *surf_parse_in, *surf_parse_out;
189
190 #define EOB_ACT_CONTINUE_SCAN 0
191 #define EOB_ACT_END_OF_FILE 1
192 #define EOB_ACT_LAST_MATCH 2
193
194     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
195      *       access to the local variable yy_act. Since yyless() is a macro, it would break
196      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
197      *       One obvious solution it to make yy_act a global. I tried that, and saw
198      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
199      *       normally declared as a variable-- so it is not worth it.
200      */
201     #define  YY_LESS_LINENO(n) \
202             do { \
203                 unsigned int yyl;\
204                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
205                     if ( surf_parse_text[yyl] == '\n' )\
206                         --surf_parse_lineno;\
207             }while(0)
208     #define YY_LINENO_REWIND_TO(dst) \
209             do {\
210                 const char *p;\
211                 for ( p = yy_cp-1; p >= (dst); --p)\
212                     if ( *p == '\n' )\
213                         --surf_parse_lineno;\
214             }while(0)
215     
216 /* Return all but the first "n" matched characters back to the input stream. */
217 #define yyless(n) \
218         do \
219                 { \
220                 /* Undo effects of setting up surf_parse_text. */ \
221         int yyless_macro_arg = (n); \
222         YY_LESS_LINENO(yyless_macro_arg);\
223                 *yy_cp = (yy_hold_char); \
224                 YY_RESTORE_YY_MORE_OFFSET \
225                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
226                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
227                 } \
228         while ( 0 )
229
230 #define unput(c) yyunput( c, (yytext_ptr)  )
231
232 #ifndef YY_STRUCT_YY_BUFFER_STATE
233 #define YY_STRUCT_YY_BUFFER_STATE
234 struct yy_buffer_state
235         {
236         FILE *yy_input_file;
237
238         char *yy_ch_buf;                /* input buffer */
239         char *yy_buf_pos;               /* current position in input buffer */
240
241         /* Size of input buffer in bytes, not including room for EOB
242          * characters.
243          */
244         yy_size_t yy_buf_size;
245
246         /* Number of characters read into yy_ch_buf, not including EOB
247          * characters.
248          */
249         int yy_n_chars;
250
251         /* Whether we "own" the buffer - i.e., we know we created it,
252          * and can realloc() it to grow it, and should free() it to
253          * delete it.
254          */
255         int yy_is_our_buffer;
256
257         /* Whether this is an "interactive" input source; if so, and
258          * if we're using stdio for input, then we want to use getc()
259          * instead of fread(), to make sure we stop fetching input after
260          * each newline.
261          */
262         int yy_is_interactive;
263
264         /* Whether we're considered to be at the beginning of a line.
265          * If so, '^' rules will be active on the next match, otherwise
266          * not.
267          */
268         int yy_at_bol;
269
270     int yy_bs_lineno; /**< The line count. */
271     int yy_bs_column; /**< The column count. */
272     
273         /* Whether to try to fill the input buffer when we reach the
274          * end of it.
275          */
276         int yy_fill_buffer;
277
278         int yy_buffer_status;
279
280 #define YY_BUFFER_NEW 0
281 #define YY_BUFFER_NORMAL 1
282         /* When an EOF's been seen but there's still some text to process
283          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
284          * shouldn't try reading from the input source any more.  We might
285          * still have a bunch of tokens to match, though, because of
286          * possible backing-up.
287          *
288          * When we actually see the EOF, we change the status to "new"
289          * (via surf_parse_restart()), so that the user can continue scanning by
290          * just pointing surf_parse_in at a new input file.
291          */
292 #define YY_BUFFER_EOF_PENDING 2
293
294         };
295 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
296
297 /* Stack of input buffers. */
298 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
299 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
300 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
301
302 /* We provide macros for accessing buffer states in case in the
303  * future we want to put the buffer states in a more general
304  * "scanner state".
305  *
306  * Returns the top of the stack, or NULL.
307  */
308 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
309                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
310                           : NULL)
311
312 /* Same as previous macro, but useful when we know that the buffer stack is not
313  * NULL or when we need an lvalue. For internal use only.
314  */
315 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
316
317 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
318 static char yy_hold_char;
319 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
320 yy_size_t surf_parse_leng;
321
322 /* Points to current character in buffer. */
323 static char *yy_c_buf_p = (char *) 0;
324 static int yy_init = 0;         /* whether we need to initialize */
325 static int yy_start = 0;        /* start state number */
326
327 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
328  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
329  */
330 static int yy_did_buffer_switch_on_eof;
331
332 void surf_parse_restart (FILE *input_file  );
333 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
334 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
335 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
336 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
337 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
338 void surf_parse_pop_buffer_state (void );
339
340 static void surf_parse_ensure_buffer_stack (void );
341 static void surf_parse__load_buffer_state (void );
342 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
343
344 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
345
346 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
347 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
348 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,yy_size_t len  );
349
350 void *surf_parse_alloc (yy_size_t  );
351 void *surf_parse_realloc (void *,yy_size_t  );
352 void surf_parse_free (void *  );
353
354 #define yy_new_buffer surf_parse__create_buffer
355
356 #define yy_set_interactive(is_interactive) \
357         { \
358         if ( ! YY_CURRENT_BUFFER ){ \
359         surf_parse_ensure_buffer_stack (); \
360                 YY_CURRENT_BUFFER_LVALUE =    \
361             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
362         } \
363         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
364         }
365
366 #define yy_set_bol(at_bol) \
367         { \
368         if ( ! YY_CURRENT_BUFFER ){\
369         surf_parse_ensure_buffer_stack (); \
370                 YY_CURRENT_BUFFER_LVALUE =    \
371             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
372         } \
373         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
374         }
375
376 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
377
378 /* Begin user sect3 */
379
380 #define surf_parse_wrap() (/*CONSTCOND*/1)
381 #define YY_SKIP_YYWRAP
382
383 typedef unsigned char YY_CHAR;
384
385 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
386
387 typedef int yy_state_type;
388
389 extern int surf_parse_lineno;
390
391 int surf_parse_lineno = 1;
392
393 extern char *surf_parse_text;
394 #ifdef yytext_ptr
395 #undef yytext_ptr
396 #endif
397 #define yytext_ptr surf_parse_text
398
399 static yy_state_type yy_get_previous_state (void );
400 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
401 static int yy_get_next_buffer (void );
402 #if defined(__GNUC__) && __GNUC__ >= 3
403 __attribute__((__noreturn__))
404 #endif
405 static void yy_fatal_error (yyconst char msg[]  );
406
407 /* Done after the current pattern has been matched and before the
408  * corresponding action - sets up surf_parse_text.
409  */
410 #define YY_DO_BEFORE_ACTION \
411         (yytext_ptr) = yy_bp; \
412         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
413         (yy_hold_char) = *yy_cp; \
414         *yy_cp = '\0'; \
415         (yy_c_buf_p) = yy_cp;
416
417 #define YY_NUM_RULES 561
418 #define YY_END_OF_BUFFER 562
419 /* This struct is not used in this scanner,
420    but its presence is necessary. */
421 struct yy_trans_info
422         {
423         flex_int32_t yy_verify;
424         flex_int32_t yy_nxt;
425         };
426 static yyconst flex_int16_t yy_accept[3334] =
427     {   0,
428         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
429         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
430         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
431         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
432         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
433         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
434         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
435         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
436         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
437         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
438
439         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
440         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
441         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
442         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
443         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
444         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
445         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
446         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
447         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
448         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
449
450         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
451         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
452         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
453         0,    0,    0,    0,    0,    0,    0,    0,  562,  560,
454        15,   10,   10,   15,   15,  540,   10,  540,    5,    6,
455         5,    8,    9,    8,  556,  548,  549,  557,  554,  557,
456       555,  559,  548,  549,  559,   42,   10,   42,   42,   42,
457        40,   42,   42,   46,   10,   46,   46,  560,   46,  560,
458       560,   46,   63,   10,   63,   63,   63,   61,   63,   63,
459        63,   67,   10,   67,  560,   67,   74,   10,   74,   74,
460
461        74,   72,   74,   78,   10,   78,   89,   10,   89,   89,
462        89,   87,   89,   89,   89,   93,   10,   93,  106,   10,
463       106,  106,  106,  104,  106,  106,  106,  110,   10,  110,
464       110,  119,   10,  119,  119,  119,  117,  119,  119,  123,
465        10,  123,  123,  142,   10,  142,  142,  142,  140,  142,
466       142,  142,  142,  142,  142,  146,   10,  146,  199,   10,
467       199,  199,  199,  197,  199,  199,  199,  199,  199,  199,
468       199,  199,  203,   10,  203,  203,  210,   10,  210,  210,
469       210,  208,  210,  214,   10,  214,  214,  233,   10,  233,
470       233,  233,  231,  233,  233,  233,  233,  233,  237,   10,
471
472       237,  560,  237,  248,   10,  248,  248,  248,  246,  248,
473       248,  248,  252,   10,  252,  259,   10,  259,  259,  259,
474       257,  259,  263,   10,  263,  560,  263,  286,   10,  286,
475       286,  286,  284,  286,  286,  286,  286,  290,   10,  290,
476       290,  303,   10,  303,  303,  303,  301,  303,  303,  307,
477        10,  307,  316,   10,  316,  316,  316,  314,  316,  316,
478       320,   10,  320,  329,   10,  329,  329,  329,  327,  329,
479       329,  333,   10,  333,  354,   10,  354,  354,  354,  352,
480       354,  354,  354,  354,  354,  354,  358,   10,  358,  560,
481       365,   10,  365,  365,  365,  363,  365,  369,   10,  369,
482
483       369,  560,  369,  560,  369,  386,   10,  386,  386,  386,
484       384,  386,  386,  386,  386,  386,  390,   10,  390,  560,
485       390,  399,   10,  399,  399,  399,  397,  399,  399,  403,
486        10,  403,  430,   10,  430,  430,  430,  428,  430,  430,
487       430,  430,  430,  434,   10,  434,  447,   10,  447,  447,
488       447,  445,  447,  447,  451,   10,  451,  451,  460,   10,
489       460,  460,  460,  458,  460,  460,  464,   10,  464,  479,
490        10,  479,  479,  479,  477,  479,  479,  479,  479,  483,
491        10,  483,  483,  498,   10,  498,  498,  498,  496,  498,
492       498,  498,  498,  502,   10,  502,  560,  502,  513,   10,
493
494       513,  513,  513,  511,  513,  513,  513,  557,  556,  535,
495        10,  535,  535,  535,  533,  535,  535,  535,  539,   10,
496       539,   10,    0,    2,    2,    0,    4,    7,  551,  550,
497         0,    0,    0,    0,    0,    0,   41,   43,   43,   43,
498         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
499         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
500         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
501        62,   64,   64,   64,   64,   64,    0,    0,   73,   75,
502        75,    0,   88,   90,   90,   90,   90,    0,  105,  107,
503       107,  107,  107,    0,  118,  120,  120,  120,    0,  141,
504
505       143,  143,  143,  143,  143,  143,  143,  143,    0,  198,
506       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
507       200,  200,  200,  200,  200,    0,  209,  211,  211,    0,
508       232,  234,  234,  234,  234,  234,  234,  234,    0,    0,
509       247,  249,  249,  249,  249,    0,  258,  260,  260,    0,
510         0,  285,  287,  287,  287,  287,  287,  287,    0,  302,
511       304,  304,  304,    0,  315,  317,  317,  317,    0,  328,
512       330,  330,  330,    0,  353,  355,  355,  355,  355,  355,
513       355,  355,  355,    0,    0,  364,  366,  366,    0,    0,
514         0,    0,    0,    0,  385,  387,  387,  387,  387,  387,
515
516       387,    0,    0,  398,  400,  400,  400,    0,  429,  431,
517       431,  431,  431,  431,  431,  431,  431,  431,    0,  446,
518       448,  448,  448,  448,    0,  459,  461,  461,  461,    0,
519       478,  480,  480,  480,  480,  480,    0,  497,  499,  499,
520       499,  499,  499,    0,    0,  512,  514,  514,  514,  514,
521         0,    0,    0,  534,  536,  536,  536,  536,    0,    0,
522         0,    0,    0,    3,    0,    0,    0,    0,    0,    0,
523         0,  558,    0,    0,   43,    0,    0,   17,    0,    0,
524         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
525         0,    0,    0,    0,    0,    0,   16,    0,    0,    0,
526
527         0,    0,    0,    0,    0,    0,    0,    0,   16,    0,
528         0,   64,   64,   64,   64,    0,    0,    0,   75,    0,
529         0,   90,    0,    0,   90,    0,    0,  107,  107,  107,
530         0,    0,  120,  120,    0,    0,    0,    0,    0,    0,
531       143,  143,  143,  143,  143,    0,    0,  200,    0,    0,
532       200,    0,    0,  200,  200,  200,  200,  200,  200,  200,
533       200,  200,  200,    0,    0,    0,    0,    0,    0,  234,
534       234,  234,    0,    0,  234,  234,  234,    0,    0,    0,
535       249,    0,    0,    0,    0,    0,    0,  260,    0,    0,
536        17,  287,    0,    0,  287,  287,  287,    0,    0,  304,
537
538         0,    0,    0,    0,    0,    0,  317,    0,    0,  330,
539       330,    0,    0,  355,  355,  355,    0,    0,  355,  355,
540       355,    0,    0,    0,  366,    0,    0,    0,    0,    0,
541       387,  387,  387,  387,  387,    0,    0,    0,    0,    0,
542       400,    0,    0,  431,    0,    0,  431,  431,  431,  431,
543       431,  431,    0,    0,  448,  448,  448,    0,    0,  461,
544         0,    0,    0,    0,  480,  480,    0,    0,  480,    0,
545         0,  499,    0,    0,  499,  499,    0,    0,    0,  514,
546         0,    0,  514,    0,    0,    0,  553,  536,  536,  536,
547         0,    0,    0,   14,    1,    0,    0,  546,    0,    0,
548
549         0,  543,  542,    0,    0,   19,   18,   43,    0,    0,
550        45,    0,   17,    0,    0,    0,    0,    0,    0,    0,
551         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
552         0,    0,    0,   16,    0,    0,    0,    0,    0,    0,
553         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
554        64,   64,    0,    0,   64,    0,    0,   66,    0,    0,
555        75,    0,    0,   77,    0,   90,    0,   84,   83,   90,
556         0,    0,   92,    0,    0,    0,  107,  107,    0,    0,
557         0,    0,  109,    0,    0,    0,    0,    0,    0,    0,
558       122,    0,    0,  127,  126,    0,  129,  128,    0,    0,
559
560       143,  143,  143,  143,    0,    0,  145,    0,  200,  200,
561       200,    0,  158,  157,  200,    0,  162,  161,    0,    0,
562       200,  200,  200,  200,  200,  200,  200,  200,  200,    0,
563         0,  202,    0,    0,  207,  206,    0,    0,  213,    0,
564       234,  234,  234,    0,  224,  223,  234,  234,  234,    0,
565         0,  236,    0,    0,  249,    0,  243,  242,    0,  245,
566       244,    0,    0,  251,    0,  260,    0,    0,  262,    0,
567       287,    0,  271,  270,  287,  287,  287,    0,    0,  289,
568         0,  304,    0,  300,  299,    0,    0,  306,    0,    0,
569       311,  310,  317,    0,    0,  319,    0,  330,  330,    0,
570
571         0,  332,    0,  355,  355,  355,  355,    0,  345,  344,
572         0,    0,  355,  355,    0,    0,  357,    0,    0,  366,
573         0,    0,  368,    0,    0,    0,    0,  387,  387,  387,
574       387,  387,    0,    0,  389,    0,    0,    0,  394,  393,
575       400,    0,    0,  402,    0,  431,    0,  415,  414,    0,
576         0,  431,    0,    0,  431,  431,  431,    0,    0,  433,
577         0,    0,    0,    0,    0,  448,    0,    0,  450,    0,
578       461,    0,  457,  456,    0,    0,  463,    0,  480,  480,
579         0,  474,  473,  480,    0,    0,  482,    0,  499,    0,
580       491,  490,  499,  499,    0,    0,  501,    0,    0,  514,
581
582         0,  508,  507,  514,    0,    0,    0,  516,    0,  536,
583       536,  536,    0,    0,  538,    0,    0,    0,  547,  541,
584         0,    0,   43,    0,   44,    0,    0,    0,    0,    0,
585         0,    0,  216,    0,  265,    0,    0,  335,    0,    0,
586       392,    0,    0,    0,    0,  391,    0,    0,    0,    0,
587         0,  215,    0,  264,  334,    0,    0,    0,    0,    0,
588         0,   50,   49,   64,   64,    0,   56,   55,   64,    0,
589       264,   75,    0,   90,   90,    0,    0,   97,   96,  107,
590       107,    0,  103,  102,    0,    0,  114,  113,    0,  116,
591       115,    0,    0,  131,  130,  143,  143,  143,  143,    0,
592
593       200,  200,  200,    0,    0,    0,  164,  163,  200,  200,
594       200,  200,  200,  200,  200,  200,  200,  200,    0,    0,
595       234,  234,    0,    0,  234,  234,  234,    0,    0,    0,
596         0,    0,    0,    0,    0,  287,  287,  287,  287,    0,
597       304,    0,  317,    0,    0,    0,  330,    0,  355,  355,
598       355,  355,    0,  347,  346,  355,  355,    0,    0,  366,
599         0,    0,    0,    0,  387,    0,    0,  387,  387,  387,
600         0,    0,  400,    0,  431,    0,  417,  416,    0,    0,
601         0,  421,  420,  431,    0,    0,  431,    0,    0,  438,
602       437,    0,  440,  439,  448,    0,  461,    0,  480,  480,
603
604       480,    0,  499,  499,    0,    0,    0,    0,    0,    0,
605       514,    0,    0,  536,    0,    0,  536,    0,    0,    0,
606         0,   12,    0,  544,  545,   43,    0,    0,    0,    0,
607         0,    0,    0,  216,    0,    0,  265,    0,    0,  321,
608       335,    0,    0,  392,    0,  436,    0,  504,  391,    0,
609         0,    0,    0,    0,  215,    0,    0,  264,  334,  435,
610         0,  503,  436,  435,   64,   64,   64,    0,    0,    0,
611         0,    0,   90,   90,    0,  107,  107,    0,    0,  143,
612       143,    0,    0,  143,    0,    0,    0,  200,  200,    0,
613       160,  159,  200,  200,  200,  200,  200,  200,    0,    0,
614
615       200,  200,  200,    0,    0,  234,  234,    0,  222,  221,
616       234,    0,    0,  234,    0,  322,    0,  241,  240,    0,
617         0,  256,  255,    0,  287,  287,  287,  287,    0,  304,
618         0,    0,    0,    0,    0,  324,  323,  330,    0,  355,
619         0,    0,  355,  355,    0,    0,  355,    0,    0,  366,
620         0,    0,    0,    0,  387,    0,  375,  374,  387,  387,
621       387,    0,    0,    0,    0,    0,  431,    0,  419,  418,
622       431,    0,  425,  424,  431,    0,  448,    0,  461,    0,
623       480,  480,  480,    0,  499,    0,    0,    0,  495,  494,
624         0,    0,    0,  506,  505,  514,    0,    0,  536,    0,
625
626         0,    0,    0,    0,    0,    0,    0,    0,   11,   43,
627         0,    0,    0,    0,    0,    0,  204,    0,    0,    0,
628         0,  321,    0,    0,  404,  436,  453,    0,  504,    0,
629         0,    0,    0,    0,    0,    0,    0,  435,  452,    0,
630       503,    0,    0,    0,    0,    0,   64,    0,    0,    0,
631        71,   70,    0,   90,   90,    0,    0,    0,    0,    0,
632         0,    0,    0,    0,  143,    0,  137,  136,    0,    0,
633         0,    0,  150,  149,    0,    0,  200,  200,  200,    0,
634         0,  200,  200,  200,    0,  184,  183,    0,    0,  200,
635       200,    0,    0,  234,  234,    0,    0,    0,  228,  227,
636
637       234,    0,  235,  322,    0,    0,  287,  287,  287,  287,
638         0,  288,  304,    0,    0,  313,  312,    0,  330,    0,
639       355,    0,  339,  338,    0,    0,  355,    0,  349,  348,
640       355,    0,  356,    0,  366,    0,  205,    0,  405,  387,
641       387,  387,  387,    0,    0,    0,  396,  395,    0,  401,
642       431,  431,  431,    0,  448,    0,  461,    0,    0,    0,
643       480,    0,    0,    0,  499,    0,  493,  492,    0,    0,
644       514,    0,    0,  536,    0,    0,    0,    0,    0,    0,
645         0,    0,    0,  532,  531,    0,    0,    0,    0,    0,
646         0,   48,    0,    0,    0,    0,  125,  148,  204,    0,
647
648       254,    0,    0,    0,  370,  404,  453,  466,    0,   47,
649         0,    0,    0,  124,  147,    0,  253,  452,  465,    0,
650         0,   52,   51,    0,   54,   53,   64,    0,    0,    0,
651        90,    0,    0,    0,    0,   99,   98,    0,  101,  100,
652         0,    0,    0,  133,  132,    0,    0,    0,  139,  138,
653         0,    0,  152,  151,  200,  200,  200,    0,  172,  171,
654         0,    0,  200,  200,    0,  186,  185,  200,  200,    0,
655         0,  234,  234,    0,  226,  225,  234,    0,    0,  287,
656         0,    0,  287,  287,  287,  304,    0,    0,  330,    0,
657       331,  355,    0,  341,  340,  355,  355,    0,    0,    0,
658
659         0,  205,  371,  405,  387,  387,  387,  387,    0,    0,
660       431,    0,    0,  431,    0,  448,    0,  449,  461,    0,
661         0,  468,  467,    0,    0,  480,    0,  476,  475,    0,
662         0,    0,  499,    0,    0,  514,    0,    0,  515,    0,
663         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
664         0,    0,    0,    0,    0,    0,    0,    0,   48,   68,
665        80,    0,    0,  125,  148,    0,  254,  291,    0,  359,
666       370,  466,    0,    0,   47,   79,    0,    0,  124,  147,
667         0,  253,  465,    0,    0,   64,    0,  292,    0,   90,
668         0,   86,   85,    0,    0,    0,    0,  135,  134,    0,
669
670       200,  200,  200,    0,  174,  173,  200,  200,  200,    0,
671         0,    0,    0,  212,  234,  234,  234,    0,    0,  287,
672         0,  273,  272,  287,  287,  287,  304,    0,    0,  330,
673       355,  355,  355,  360,    0,  362,  361,    0,  371,    0,
674         0,  387,  387,  387,    0,   69,  431,    0,  423,  422,
675       431,    0,  432,  448,  461,    0,  462,    0,  470,  469,
676       480,    0,    0,  487,  486,  499,    0,    0,  514,  552,
677         0,  520,  519,    0,    0,    0,    0,    0,    0,    0,
678         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
679         0,    0,    0,    0,    0,    0,    0,   68,   80,    0,
680
681         0,  239,  291,    0,  359,    0,    0,   79,    0,    0,
682       238,    0,    0,   64,    0,   65,  292,    0,    0,    0,
683         0,    0,    0,    0,  144,  200,  200,  200,  200,    0,
684         0,  200,  200,    0,    0,    0,    0,  201,  234,  234,
685       234,    0,    0,  261,    0,    0,  287,  287,  287,  287,
686         0,    0,    0,    0,    0,    0,  355,  355,  355,  360,
687         0,    0,  373,  372,    0,    0,  387,  387,    0,  388,
688        69,    0,    0,  431,  448,  461,  480,    0,  481,  499,
689         0,    0,  514,    0,    0,    0,    0,    0,    0,    0,
690         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
691
692         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
693         0,  239,  308,    0,    0,    0,    0,  238,    0,    0,
694        64,    0,   76,    0,   82,   81,    0,   91,    0,    0,
695       200,  200,  200,  200,    0,  176,  175,  200,  200,    0,
696         0,    0,    0,    0,    0,  234,  234,    0,    0,    0,
697         0,  267,  266,  287,  287,  287,    0,    0,    0,    0,
698         0,    0,  305,    0,    0,  326,  325,  355,  355,    0,
699         0,    0,  367,    0,  377,  376,    0,    0,    0,    0,
700         0,    0,    0,  431,  448,  461,  480,  499,    0,  309,
701       514,    0,    0,    0,    0,    0,    0,    0,    0,    0,
702
703         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
704         0,    0,    0,    0,    0,    0,    0,    0,  112,  308,
705         0,    0,    0,  111,    0,    0,    0,    0,    0,    0,
706       200,  200,    0,    0,  200,  200,  200,    0,    0,    0,
707         0,    0,    0,    0,    0,  234,    0,    0,    0,  230,
708       229,    0,  250,  287,  287,  287,    0,  283,  282,    0,
709         0,    0,    0,    0,    0,    0,  355,    0,    0,    0,
710       351,  350,    0,    0,    0,    0,  383,  382,    0,    0,
711         0,    0,    0,    0,  431,    0,    0,    0,    0,  480,
712       499,    0,  309,    0,    0,    0,    0,    0,    0,  524,
713
714         0,    0,    0,    0,  523,    0,    0,    0,    0,    0,
715         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
716         0,    0,  112,  485,    0,    0,  111,  484,    0,    0,
717         0,    0,    0,    0,  200,    0,    0,    0,  168,  167,
718         0,    0,  200,  200,    0,    0,    0,    0,    0,    0,
719         0,    0,  234,    0,  220,  219,  287,    0,    0,  287,
720         0,    0,    0,    0,    0,    0,    0,  318,  355,    0,
721       343,  342,    0,    0,    0,    0,    0,    0,    0,    0,
722         0,    0,    0,    0,  431,    0,    0,    0,    0,  455,
723       454,    0,    0,    0,    0,    0,    0,  510,  509,    0,
724
725         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
726         0,    0,    0,    0,    0,   21,   29,    0,    0,    0,
727         0,   20,   28,    0,   95,  485,  518,   94,  484,  517,
728         0,    0,    0,    0,    0,    0,  121,  200,    0,  166,
729       165,    0,  170,  169,  200,  200,    0,    0,    0,    0,
730         0,    0,    0,    0,  234,  287,    0,  275,  274,  287,
731         0,    0,  294,    0,    0,  293,  355,    0,    0,    0,
732         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
733         0,    0,    0,    0,    0,    0,  472,  471,    0,  489,
734       488,    0,    0,    0,  530,    0,    0,    0,  529,    0,
735
736         0,    0,    0,    0,    0,    0,    0,    0,    0,   23,
737         0,    0,    0,   22,    0,   95,  518,   94,  517,    0,
738         0,    0,    0,    0,  200,    0,    0,  200,    0,    0,
739       190,    0,    0,    0,  189,    0,  234,    0,    0,    0,
740         0,    0,    0,    0,    0,  355,    0,    0,    0,    0,
741         0,    0,    0,    0,    0,    0,    0,    0,    0,  427,
742       426,    0,    0,    0,    0,    0,  500,    0,    0,    0,
743         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
744         0,    0,    0,    0,    0,    0,   60,    0,   59,    0,
745         0,  108,  200,    0,    0,    0,    0,    0,    0,    0,
746
747       192,    0,    0,  191,  234,    0,  269,  268,    0,    0,
748         0,  296,  298,  295,  297,  355,  379,    0,  378,    0,
749         0,  413,  409,    0,    0,  412,  408,    0,  444,    0,
750       443,    0,  528,    0,    0,  527,    0,    0,    0,  537,
751         0,    0,    0,   12,    0,   12,    0,   33,    0,    0,
752         0,    0,   31,   32,    0,    0,    0,    0,   30,   58,
753        57,  200,    0,    0,    0,    0,    0,  188,  187,    0,
754         0,    0,    0,  234,    0,    0,    0,    0,  355,    0,
755         0,    0,    0,    0,    0,  442,  441,  522,  526,  521,
756       525,    0,    0,    0,    0,    0,    0,    0,    0,   25,
757
758         0,    0,    0,    0,   24,    0,    0,    0,    0,    0,
759         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
760         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
761         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
762         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
763         0,    0,    0,    0,  194,    0,  193,    0,  218,  217,
764         0,    0,    0,    0,    0,    0,    0,  337,  336,    0,
765         0,  407,    0,  406,    0,    0,   11,    0,    0,    0,
766         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
767         0,    0,    0,    0,    0,  196,  195,    0,    0,    0,
768
769         0,    0,    0,  381,  380,    0,    0,    0,    0,    0,
770         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
771         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
772         0,    0,  411,  410,    0,    0,    0,   35,    0,    0,
773         0,   34,    0,    0,    0,    0,    0,    0,    0,    0,
774         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
775         0,    0,   27,    0,    0,   26,    0,    0,    0,    0,
776         0,    0,  178,    0,    0,  177,    0,    0,  277,    0,
777         0,  276,    0,    0,   37,    0,   36,    0,    0,    0,
778         0,  182,    0,  181,    0,  279,    0,  278,    0,    0,
779
780         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
781         0,   39,   38,    0,  154,    0,  153,    0,    0,    0,
782         0,    0,    0,  156,  155,  180,  179,  281,  280,    0,
783         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
784         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
785         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
786         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
787         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
788         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
789         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
790
791         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
792         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
793         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
794         0,   13,    0
795     } ;
796
797 static yyconst YY_CHAR yy_ec[256] =
798     {   0,
799         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
800         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
801         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
802         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
803         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
804        13,   14,   13,   13,   13,   15,   13,   16,   17,   18,
805        19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
806        28,   29,   30,   31,   32,   33,   34,   35,   36,   37,
807        31,   38,   39,   40,   41,   42,   43,   44,   45,   31,
808        46,    1,   47,    1,   48,    1,   49,   50,   51,   52,
809
810        53,   54,   55,   56,   57,   58,   59,   60,   61,   62,
811        63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
812        73,   74,    1,    1,    1,    1,    1,    1,    1,    1,
813         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
814         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
815         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
816         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
817         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
818         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
819         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
820
821         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
822         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
823         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
824         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
825         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
826         1,    1,    1,    1,    1
827     } ;
828
829 static yyconst YY_CHAR yy_meta[75] =
830     {   0,
831         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
832         3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
833         1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
834         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
835         5,    5,    5,    5,    5,    1,    1,    5,    9,    9,
836         9,    9,    9,    9,    5,    5,    5,    5,    5,    5,
837         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
838         5,    5,    5,    5
839     } ;
840
841 static yyconst flex_uint16_t yy_base[3813] =
842     {   0,
843         0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
844        14,   17,   33,   36,   49,   55,   45,   61,  108,  174,
845        66,   72,   75,   78,   83,  128,  131,  134,  138,  141,
846       194,  197,  200,  204,  207,  224,  230,  233,  241,  250,
847       268,  335,  288,  291,  294,  298,  301,  355,  358,  361,
848       402,  472,  365,  368,  542,  602,  422,  425,  662,  729,
849       428,  432,  435,  452,  492,  495,  498,  502,  796,  863,
850       505,  522,  562,  565,  568,  572,  575,  622,  930,  997,
851       625,  628, 1064,    0,  632,  635,  682,  685,  688,  692,
852       695,  749, 1138, 1195,  752,  755,  759,  762,  816,  819,
853
854       822,  826, 1252, 1319,  829,  883,  886,  889,  893,  896,
855       950,  953, 1386, 1455,  956,  960, 1524, 1578,  963, 1017,
856      1020, 1023, 1027, 1030, 1158, 1161, 1632, 1699, 1164, 1168,
857      1171, 1215, 1218, 1221, 1225, 1228, 1766, 1823, 1272, 1275,
858      1880, 1950, 1278, 1282, 2020, 2087, 1339, 1342, 2154, 2221,
859      1345, 1349, 1406, 1409, 2288, 2358, 1412, 1416, 1419, 1475,
860      1478, 1481, 1485, 1488, 1544, 1547, 1550, 1554, 1557, 1598,
861      1601, 1604, 1608, 1611, 1652, 1655, 2428, 2495, 1658, 1662,
862      1665, 1719, 1722, 1725, 1729, 1732, 2562, 2632, 1786, 1789,
863      2702, 2769, 1792, 1796, 2836, 2903, 1799, 1843, 1846, 1849,
864
865      1853, 1856, 1900, 1903, 2970, 3027, 1906, 1910, 3084, 3152,
866      1913, 1930, 1970, 1973, 1976, 1980, 1983, 2000, 3220, 3287,
867      2040, 2043, 2046, 2050, 2053, 2107, 2110, 2113, 3354, 3418,
868      2132, 2134, 3482, 3550, 2174, 2180,    0,    0, 9063,11902,
869     11902,   95,  100,   29,   41,11902,  103,   51,11902,11902,
870      9052,11902,11902, 9039,11902, 9054, 9054,  164,11902,11902,
871     11902,11902, 9048, 9048, 9003,11902,  158, 9027,    0,  142,
872     11902, 8994, 8982,11902,  164, 3614, 8976, 3678, 2187, 1238,
873      9027,   31,11902,  253, 9018,    0,  143,11902, 8968, 8963,
874        84,11902,  258,  253, 9021, 8968,11902,  322, 9007,    0,
875
876       148,11902, 8977,11902,  325,  218,11902,  328, 9003,    0,
877       242,11902, 8973, 8969, 8967,11902,  389,  373,11902,  393,
878      8995,    0,  245,11902, 8947, 8940, 8944,11902,  396, 8997,
879        11,11902,  455, 8984,    0,  313,11902, 8936, 8936,11902,
880       458, 8987,   79,11902,  461, 8978,    0,  446,11902, 8926,
881      8940, 8942, 8924, 8938,   19,11902,  525,  509,11902,  529,
882      8966,    0,  447,11902,  101, 8922, 8928,  317, 8905,  258,
883       531, 8907,11902,  532, 8957,  246,11902,  535, 8944,    0,
884       576,11902, 8911,11902,  652, 8950,  287,11902,  716, 8937,
885         0,  577,11902, 8886, 8892, 8898, 8882,  320,11902,  719,
886
887       112, 8887,  377,11902,  722, 8923,    0,  580,11902, 8879,
888      8889, 8872,11902,  783,  639,11902,  786, 8915,    0,  636,
889     11902, 8877,11902,  789, 2129, 8917,  681,11902,  847, 8908,
890         0,  637,11902, 8878, 8870, 8872,  102,11902,  850, 8908,
891       704,11902,  853, 8895,    0,  640,11902, 8857, 8861,11902,
892       856,  900,11902,  914, 8888,    0,  706,11902, 8855, 8857,
893     11902,  920,  908,11902,  923, 8881,    0,  707,11902, 8851,
894      8831,11902,  980,  967,11902,  989, 8874,    0,  773,11902,
895      8823, 8821, 8824, 8834, 8836,  447,11902, 1047, 1034,  774,
896     11902, 1056, 8860,    0,  840,11902, 8826,11902, 1188, 1305,
897
898       748, 1183,  771, 8814,  815,11902, 1308, 8853,    0,  841,
899     11902, 8803, 8808, 8809, 8803, 8796,11902, 1311,  454, 8810,
900       882,11902, 1370, 8838,    0,  898,11902, 8805, 8803,11902,
901      1375, 1423,11902, 1378, 8831,    0,  964,11902, 8797, 8793,
902      1191, 8795,  137,11902, 1437, 1424,11902, 1444, 8823,    0,
903       965,11902, 8771,  518,11902, 1447, 8825,  204,11902, 1450,
904      8816,    0,  968,11902, 8768, 8778,11902, 1506, 1492,11902,
905      1512, 8809,    0, 1031,11902, 8756, 8760, 8770, 8744,11902,
906      1515, 8804,  949,11902, 1518, 8795,    0, 1032,11902, 8747,
907      8757, 8745, 8746,11902, 1682,  272, 8741, 1171,11902, 1691,
908
909      8781,    0, 1035,11902, 8739, 8743, 8741, 1669, 8742,11902,
910      1694, 8768,    0, 1172,11902, 8727, 8185, 8175,11902, 1749,
911      1736, 1758,  408, 8167,11902, 8228, 8217,11902,11902,11902,
912      1750,  153, 8168, 8167, 8165, 8213,11902,    0, 2120, 8162,
913      8208, 8189, 8153,  328, 1234, 8154, 8147, 8151, 8143, 1128,
914       259, 8132, 8132, 1185, 8155,  396, 1301, 8129, 8119, 8123,
915      1445,  584, 8102, 8103, 8128,  398, 1755,  652,  439,  979,
916     11902,    0, 8089, 8103, 8098, 8087, 8124, 8068,11902,    0,
917      8057, 8067,11902,    0, 8052, 2187, 8041, 8058,11902,    0,
918      8038, 8049, 8045, 8042,11902,    0, 8011, 8020, 8020,11902,
919
920         0, 2241, 2244, 8000, 8009, 8009, 8006, 7996, 7994,11902,
921         0, 7985, 2254, 7966, 2308, 7957, 7963, 7959, 7968, 7967,
922      7942, 7961, 7955, 7945, 7934, 7945,11902,    0, 2311, 7943,
923     11902,    0, 7925,  175, 2314, 7905, 7918, 7917, 7908, 7900,
924     11902,    0, 7890, 2317, 2320, 7891,11902,    0, 7868, 7869,
925      7886,11902,    0, 7861, 2338, 7844, 7852, 7851, 7838,11902,
926         0, 7827, 2378, 7832,11902,    0, 2381, 7829, 7826,11902,
927         0, 7825, 7821, 7821,11902,    0, 7832, 7831, 7802, 2384,
928      7796, 7809, 7808, 7790, 7788,11902,    0, 7780, 7773, 1506,
929      1812, 1242, 1514, 1813,11902,    0, 7774, 7763, 7769, 7779,
930
931      7767, 7749, 7742,11902,    0, 2387, 7746, 7741,11902,    0,
932      7741, 2390, 7723, 7745, 7702, 7710, 7705, 7701, 7679,11902,
933         0, 7676, 7683, 7672, 7657,11902,    0, 7659, 2408, 7654,
934     11902,    0, 7644, 7647, 2448, 7640, 7636,11902,    0, 7635,
935      2451, 7640, 7607, 7613, 7615,11902,    0, 7609, 2454, 7601,
936       512, 7594, 7641,11902,    0, 7606, 7588, 7593, 7572, 7608,
937      7613, 1272, 7561,11902, 1925,    0, 7556, 7539, 7584, 7582,
938      7534,11902, 2457, 2006, 7528, 2192, 2516, 2077, 7539, 7529,
939      7515, 7527, 7507, 7497, 7491, 7505, 7493, 1266, 7500, 7499,
940      7484, 7479, 7471, 7475, 7478, 7463, 2081, 7473, 7455, 7468,
941
942      7447, 7444, 7453, 7440, 7448, 7430, 7425, 7438, 2142, 7416,
943      7415, 2460, 2526, 2519, 2529, 2262, 2582, 7420, 7412, 2523,
944      2592, 7423, 2585, 2341, 7412, 2595, 2652, 2603, 2666, 2657,
945      2660, 2663, 2671, 2722, 2725, 2735, 2728, 2411, 2748, 2614,
946      2790, 2798, 2801, 2808, 2865, 2740, 2876, 1869, 2794, 2622,
947      7405, 2862, 2689, 2868, 7400, 7391, 7390, 7385, 7373, 7369,
948      7378, 7375, 7356, 2871, 2926, 2929, 2819, 2932, 2936, 7360,
949      7349, 7357, 2939, 2891, 7360, 7354, 7334, 2990, 2993, 1306,
950      7335, 2999, 2957, 3003, 3048, 3056, 3059, 7326, 3062, 3106,
951      2213, 7326, 3109, 3066, 7323, 7309, 7305, 3112, 3117, 7319,
952
953      3121, 3140, 3173, 3185, 3176, 3188, 7286, 3180, 3248, 7301,
954      7282, 3241, 3252, 7289,    3, 7279, 3244, 3204, 3255, 7290,
955      7265, 3310, 3317, 7283, 7263, 3320, 3323, 7263, 7258, 7257,
956      7267, 7248, 7251, 7252, 7238, 3374, 3377, 7248, 3383, 3276,
957      7232, 3386, 3389, 7240, 3438, 3343, 3442, 7226, 3447, 7230,
958      7233, 7232, 3450, 3456, 3504, 3507, 3511, 3514, 3517, 7213,
959      3529, 3401, 3571, 3574, 7225, 7205, 3579, 3465, 7218, 3582,
960      3585, 7193, 3597, 3536, 7207, 7201, 3604, 3608, 1333, 7195,
961      3611, 3636, 7190, 7221, 3629, 3648,11902, 7179, 7187, 7182,
962      3652, 3657, 7212,11902,11902,  882, 7170,11902, 7202, 7200,
963
964      7149,11902,11902, 7144, 3682,11902,11902, 7139, 3690, 3693,
965     11902, 3699, 1941, 7126, 7119, 7127, 7136, 7126, 7109, 7114,
966      7099, 7105, 7105, 7102, 7092, 7077, 7074,  718, 7085, 7068,
967      7068, 7074, 1566, 2070, 7061, 7060, 7069, 7059, 7048, 7039,
968      7046, 7042, 7034, 7026, 7023, 7035, 7007, 7001, 3702, 3745,
969      6999, 6988, 3705, 3753, 7000, 3713, 3761,11902, 3764, 6988,
970      6993, 3767, 3770,11902, 3773, 6973, 3776,11902,11902, 6974,
971      3792, 3795,11902, 3798, 3801, 3804, 6968, 6964, 3819, 3823,
972      3831, 3837,11902, 3840, 3843, 3850, 3861, 3864, 3872, 3875,
973     11902, 3879, 3882,11902,11902, 3894,11902,11902, 3903, 3906,
974
975      6972, 6976, 6973, 6967, 3914, 3917,11902, 3921, 6951, 6971,
976      6941, 3924,11902,11902, 3936, 3942,11902,11902, 3950, 3954,
977      6922, 6937, 6917, 6922, 6912, 6907, 6909, 6898, 1247, 3962,
978      3970,11902, 3973, 3977,11902,11902, 3985, 3992,11902, 3995,
979      6892, 6893, 3998, 4004,11902,11902, 6853, 6868, 6864, 4016,
980      4019,11902, 4023, 6837, 4026, 4029,11902,11902, 4044,11902,
981     11902, 4052, 4056,11902, 4059, 4062, 4065, 4071,11902, 4080,
982      6827, 4090,11902,11902, 6830, 6830, 6833, 4084, 4099,11902,
983      4103, 6833, 4106,11902,11902, 4114, 4118,11902, 4125, 4133,
984     11902,11902, 6823, 4144, 4147,11902, 4150, 4153, 4156, 4159,
985
986      4174,11902, 4178, 6815, 6811, 6803, 6814, 4182,11902,11902,
987      4193, 4197, 6810, 6798, 4205, 4211,11902, 4214, 6780, 6789,
988      4217, 4220,11902, 4224, 6788, 1567, 6784, 6767, 4239, 6785,
989      6783, 6759, 4246, 4249,11902, 4252, 6757, 4259,11902,11902,
990      6761, 4272, 4275,11902, 4278, 6740, 4281,11902,11902, 4297,
991      4300, 4308, 4315, 4319, 6751, 4327, 6732, 4333, 4336,11902,
992      4340, 4345, 4348, 4359, 4363, 6723, 4371, 4377,11902, 4380,
993      6723, 4383,11902,11902, 4391, 4401,11902, 4404, 6715, 6706,
994      4410,11902,11902, 6728, 4423, 4426,11902, 4430, 6703, 4433,
995     11902,11902, 6675, 4449, 4452, 4455,11902, 4458, 6651, 4461,
996
997      4479,11902,11902, 4467, 6653, 4487, 4492,11902, 4495, 6615,
998      4498, 6610, 4502, 4506,11902, 4516,  888, 4521,11902,11902,
999      6551, 6541, 6494, 4525,11902, 6458, 6454, 6446, 6396, 6374,
1000      6313, 6307, 2073, 6294, 2281, 6301, 6291, 2116, 6304, 6286,
1001      2216, 6201, 6132, 6066, 6057, 2272, 6035, 6047, 6020, 5997,
1002      5974, 2350, 5870, 2420, 2486, 5855, 5807, 5798, 5722, 5719,
1003      4529,11902,11902, 5684,   38, 4544,11902,11902,   26, 4552,
1004      2829, 4555, 4558,   43,  195, 4564, 4567,11902,11902,  181,
1005       216, 4577,11902,11902, 4585, 4588,11902,11902, 4597,11902,
1006     11902, 4605, 4608,11902,11902,  239,  326, 4616,  370, 4626,
1007
1008      4629, 4634, 4637, 4640, 4658, 4666,11902,11902, 4647, 4674,
1009      4677, 4685, 4688, 4695, 4706, 4709, 4713, 4716, 4727, 4735,
1010       395,  460, 4739, 4742,  488, 4757,  525, 4760,  526, 4763,
1011      4766, 4781, 4784, 4789, 4802,  539,  567,  616,  654, 4805,
1012       636, 4809, 4812, 4816, 4831, 4835,  650, 4843,  658, 4851,
1013       703,  715, 4869,11902,11902, 4855,  726, 4863,  782,  776,
1014      4877,  784,  922,  932, 1005, 4882, 4885, 1086, 1112, 1130,
1015      4896, 1119, 4900, 4904, 1138, 4908,11902,11902, 4918, 4924,
1016      4932,11902,11902, 1162, 4940, 4946, 1173, 4954, 4958,11902,
1017     11902, 4967,11902,11902, 1169, 4975, 1211, 4978, 1231, 1227,
1018
1019      1302, 4981, 1293, 4984, 4988, 5006, 5014, 1299, 5017, 5020,
1020      1310, 1362, 5028, 1355, 5035, 5047, 5038, 5056, 1603, 1405,
1021      5061,11902, 1406,11902,11902, 1376, 1374, 1418, 1423, 1427,
1022      1442, 1447, 1468, 2490, 1480, 1512, 2557, 1516, 1525, 2684,
1023      2762, 1513, 1527, 2965, 1548, 3411, 1565, 3212, 3021, 1553,
1024      1564, 1561, 1610, 1618, 3215, 1612, 1623, 3314, 3476, 5064,
1025      1622, 3618, 5067, 5070, 5080, 5083, 5086, 5089, 1636, 5092,
1026      5113, 5121, 1636, 1618, 5124, 5135, 5143, 5146, 5153, 5157,
1027      5161, 5165, 5183, 5175, 5168, 5193, 5196, 5204, 5207, 5213,
1028     11902,11902, 5225, 5229, 5232, 5235, 5238, 5243, 5256, 5261,
1029
1030      5274, 5280, 5285, 5298, 5303, 1665, 1668, 5306,11902,11902,
1031      5317, 5322, 5328, 1684, 5341, 3644, 5344,11902,11902, 5352,
1032      5361,11902,11902, 5355, 1687, 1669, 1689, 1700, 5374, 1698,
1033      5377, 5380, 5383, 5399, 5402,11902,11902, 1705, 5410, 1732,
1034      5413, 5425, 5418, 1735, 5436, 5439, 1751, 5447, 1743, 1747,
1035      5450, 1756, 1749, 1758, 1757, 5454,11902,11902, 1782, 1794,
1036      1794, 5462, 1810, 5469, 5477, 5472, 1800, 5487,11902,11902,
1037      1816, 5496,11902,11902, 1807, 5504, 1830, 5507, 1849, 5510,
1038      5514, 5517, 5535, 5538, 1852, 5542, 5546, 5562,11902,11902,
1039      5570, 1874, 5573,11902,11902, 1866, 1885, 5589, 1862, 5592,
1040
1041      1966, 2511, 5601, 5604, 5612, 1929, 1997, 1961,11902, 5619,
1042      1882, 1879, 1884, 1968, 1879, 1926, 3728, 1936, 1947, 1943,
1043      1949, 5622, 1950, 1952, 5625, 5631, 5637, 1983, 5641, 2000,
1044      2007, 2000, 2048, 1995, 1999, 2012, 2025, 5644, 5647, 2050,
1045      5650, 2075, 5653, 5657, 5665, 5671, 2070, 5679, 2061, 5683,
1046     11902,11902, 5691, 2062, 5694, 5698, 5701, 5706, 5719, 5722,
1047      5730, 5733, 5737, 5756, 5764, 5767,11902,11902, 5775, 5778,
1048      5786, 5789,11902,11902, 5799, 5805, 2075, 2100, 2094, 5813,
1049      5817, 5825, 2113, 2137, 5831,11902,11902, 5839, 5843, 2121,
1050      2115, 5851, 5857, 2145, 2158, 5860, 5863, 5872,11902,11902,
1051
1052      2153, 5880,11902, 5883, 5886, 5889, 2145, 5892, 2201, 2193,
1053      5895,11902, 2189, 5899, 5914,11902,11902, 5922, 2224, 5925,
1054      2202, 5928,11902,11902, 5945, 5949, 2212, 5957,11902,11902,
1055      2205, 5965,11902, 2203, 5969, 5972, 5975, 2210, 5978, 2218,
1056      2225, 2218, 2247, 5987, 2263, 5991,11902,11902, 5999,11902,
1057      2263, 6002, 2271, 6006, 2274, 6009, 2283, 6012, 6020, 6034,
1058      6042, 6045, 6049, 6066, 6069, 6073,11902,11902, 6081, 2273,
1059      2287, 2324, 6089, 6092, 2326, 2313, 2377, 2314, 2333, 2320,
1060      2386, 2337, 6096,11902,11902, 6104, 2375, 2460, 2399, 6110,
1061      6116, 6124, 2328, 2349, 2379, 2358, 6128, 6131, 6135, 2363,
1062
1063      6138, 2364, 2378, 2405, 6141, 6144, 6147, 6151, 2406, 6154,
1064      2418, 2433, 2414, 6157, 6160, 2416, 6163, 6166, 6169, 2418,
1065      6172,11902,11902, 6180,11902,11902, 2432, 6188, 2423, 6191,
1066      2430, 6194, 6198, 6212, 6216,11902,11902, 6224,11902,11902,
1067      6232, 6235, 6240,11902,11902, 6256, 6259, 6274,11902,11902,
1068      6267, 6282,11902,11902, 2455, 2464, 2487, 6290,11902,11902,
1069      6298, 6301, 2485, 2475, 6309,11902,11902, 2497, 6317, 6320,
1070      6323, 2487, 2484, 6328,11902,11902, 2493, 6342, 6345, 2500,
1071      6348, 6351, 2503, 2527, 2532, 2538, 6367, 6370, 2549, 6373,
1072     11902, 2543, 6376,11902,11902, 2542, 2551, 2552, 6392, 6398,
1073
1074      6406, 6410, 6413, 6416, 6419, 6425, 6428, 6437, 6446, 2546,
1075      2561, 6449, 6455, 2580, 6467, 2579, 6471,11902, 2580, 6477,
1076      6480,11902,11902, 6497, 6500, 2589, 6508,11902,11902, 6516,
1077      6519, 6522, 2603, 6530, 2611, 2624, 2636, 6537,11902, 6540,
1078      6543, 2649, 2655, 2656, 2662, 2673, 2665, 2695, 2695, 2705,
1079      2720, 6551, 6558, 2736, 2809, 6561, 2984, 3943, 6570, 6573,
1080      6577, 2687, 2685, 6582, 6585, 2699, 6588, 6591, 2698, 6594,
1081      6597, 6601, 2694, 2723, 6604, 6607, 2725, 2726, 6610, 6613,
1082      2747, 6616, 6619, 2739, 2752, 2769, 6622, 6625, 6628, 6631,
1083      6634,11902,11902, 6642, 6649, 6652, 6655,11902,11902, 6663,
1084
1085      2764, 2777, 2839, 6671,11902,11902, 6682, 2796, 2799, 6687,
1086      6696, 6690, 6705,11902, 2805, 2810, 2832, 6709, 6714, 6717,
1087      6724,11902,11902, 6720, 6738, 6741, 6744, 6747, 6750, 6770,
1088      2829, 2837, 2839, 6776, 6779,11902,11902, 6788, 6793, 6796,
1089      6801, 6809, 6815, 6818, 6821, 6827, 6836, 6841,11902,11902,
1090      6850, 6854,11902, 2849, 2848, 6857,11902, 6861,11902,11902,
1091      2829, 6876, 6879,11902,11902, 2853, 6887, 2864, 2869,11902,
1092      6891,11902,11902, 2919, 2905, 2921, 2919, 2927, 2929, 2917,
1093      2936, 2932, 2939, 6899, 6902, 3029, 3023, 2938, 2943, 3058,
1094      2941, 2955, 2954, 2958, 3069, 2957, 2996, 6906, 6909, 2992,
1095
1096      2999, 6912, 6921, 3007, 6924, 3004, 3021, 6927, 3037, 3038,
1097      6930, 3034, 3055, 3074, 6934,11902, 6937, 6940, 6944, 6947,
1098      6955, 6965, 6968, 6974,11902, 3088, 3077, 3074, 3098, 6977,
1099      6980, 3088, 3097, 6989, 3784, 3862, 6997,11902, 3083, 3114,
1100      7000, 7003, 7006,11902, 7009, 7012, 3131, 3126, 3136, 7030,
1101      7036, 7039, 7048, 7054, 7057, 7061, 3134, 3137, 7069, 7075,
1102      7078, 7081,11902,11902, 7089, 7093, 7101, 7107, 7110,11902,
1103      7119, 7125, 7129, 7137, 3151, 3145, 3172, 7143,11902, 3185,
1104      7146, 3189, 3189, 3221, 3217, 3234, 3222, 3248, 3232, 3228,
1105      3248, 3236, 3261, 7149, 3290, 3492, 3319, 3234, 3251, 3265,
1106
1107      3269, 3269, 3262, 3266, 3278, 3278, 3282, 3289, 3283, 3315,
1108      3342, 7155, 7158, 3332, 3345, 3330, 3359, 7168, 3352, 3364,
1109      7171, 7175,11902, 7178,11902,11902, 7189,11902, 7195, 7198,
1110      3370, 3388, 7201, 3380, 7204,11902,11902, 3399, 3394, 3425,
1111      3503, 3437, 3443, 3557, 3462, 3431, 7219, 7222, 7225, 7233,
1112      7240,11902,11902, 3465, 3471, 3470, 7248, 7253, 7266, 3632,
1113      3999, 7261,11902, 7274, 7280,11902,11902, 3470, 7288, 7293,
1114      7296, 7306,11902, 7311,11902,11902, 7320, 7325, 7333, 7338,
1115      7347, 3687, 3715, 7355, 7358, 7361, 3491, 3493, 7364, 7367,
1116      7379, 3517, 3544, 3568, 3571, 3589, 3574, 3595, 3599, 3603,
1117
1118      3618, 7383, 3609, 3649, 3698, 3567, 3582, 3570, 3584, 3609,
1119      3630, 3620, 3630, 3617, 3638, 3667, 3677, 3668, 7386, 7389,
1120      3684, 3690, 3675, 7392, 3699, 3707, 7397, 7402, 7410, 7418,
1121      3698, 7421, 7424, 7430, 7444, 3732, 3733, 3766, 3749, 3769,
1122      3754, 3792, 3776, 3795, 3781, 3783, 7447, 7450, 7458,11902,
1123     11902, 7466,11902, 3776, 7470, 3786, 7474,11902,11902, 3812,
1124      3814, 3818, 3822, 3825, 3832, 7488, 3823, 7491, 7494, 7503,
1125     11902,11902, 7511, 3876, 3904, 7519,11902,11902, 3834, 3854,
1126      3914, 3855, 3858, 3969, 7527, 7530, 7533, 7541, 7548, 7559,
1127      7562, 7565, 7568, 7571, 7589, 3886, 3871, 3886, 3890,11902,
1128
1129      3910, 3905, 3905, 3917,11902, 7580, 3941, 3994, 7584, 3894,
1130      3917, 3940, 3997, 4005, 3956, 3969, 3974, 3992, 4042, 4043,
1131      4010, 4018, 7603, 7606, 4009, 4025, 7609, 7612, 4012, 7615,
1132      4079, 4095, 7623, 7628, 4029, 7632, 7635, 7643,11902,11902,
1133      7651, 7654, 4022, 4031, 4070, 4063, 4073, 4084, 4104, 4085,
1134      4101, 4102, 4090, 7662,11902,11902, 4113, 7670, 7673, 4095,
1135      4126, 4136, 4167, 4131, 4148, 4180, 7681,11902, 4136, 7684,
1136     11902,11902, 4162, 4167, 4174, 4184, 4189, 4194, 4195, 4204,
1137      4211, 4200, 4201, 4210, 7692, 7696, 4225, 4251, 7704,11902,
1138     11902, 7712, 7715, 7723, 7726, 7734, 7737,11902,11902, 4199,
1139
1140      4223, 4240, 4235, 4219, 4242, 4262, 4266, 7745, 4304, 7748,
1141      7753, 7757, 4236, 4223, 4287,11902,11902, 4242, 4244, 4237,
1142      4298,11902,11902, 4256, 7767, 7772, 7776, 7779, 7782, 7786,
1143      4277, 4288, 4284, 4300, 7789, 7795,11902, 4275, 7798,11902,
1144     11902, 7808,11902,11902, 7816, 4266, 4309, 4315, 4353, 4329,
1145      4334, 4331, 4367, 4338, 4331, 7819, 7822,11902,11902, 7830,
1146      4355, 4370,11902, 4363, 4373,11902, 4344, 4383, 4371, 4389,
1147      4378, 4383, 4394, 4397, 4384, 4396, 4412, 4415, 4402, 7837,
1148      7841, 4408, 4419, 4411, 4422, 7849,11902,11902, 7857,11902,
1149     11902, 7865, 4437, 4437,11902, 4444, 4447, 4447,11902, 4449,
1150
1151      7868, 4514, 7871, 7874, 7893, 7936, 7983, 4418, 4421,11902,
1152      4435, 4437, 4445,11902, 4456, 7901, 7904, 7907, 7912, 4508,
1153      4477, 4528, 4500, 7915, 4489, 7927, 7918, 7930, 4508, 4511,
1154     11902, 4545, 4517, 4525,11902, 4555, 4515, 7948, 7956, 7974,
1155      7966, 4576, 4579, 4584, 4586, 4536, 4592, 4562, 4595, 4573,
1156      4591, 4615, 4616, 4584, 4601, 4636, 4638, 4612, 8003,11902,
1157     11902, 4649, 4618, 4649, 4624, 7977,11902, 4659, 4638, 4640,
1158      4665, 4649, 4651, 8011, 4674, 8014, 4716, 4686, 8034, 8081,
1159      4926, 4636, 4695, 5241, 4654, 4696,11902, 4715,11902, 4715,
1160      8024,11902, 4653, 8054, 4751, 4803, 8045, 8063, 4700, 4707,
1161
1162     11902, 4723, 4726,11902, 4700, 8101,11902,11902, 8109, 4813,
1163      4821,11902,11902,11902,11902, 4703,11902, 4749,11902, 4751,
1164      4760,11902,11902, 4758, 4783,11902,11902, 4761,11902, 4794,
1165     11902, 4793,11902, 4804, 4811,11902, 4812, 4814, 8071,11902,
1166      4831, 4870, 4806, 4818, 4823, 4847, 8074,11902, 4795, 4828,
1167      4819, 4889,11902,11902, 4827, 4847, 4846, 4916,11902,11902,
1168     11902, 8117, 4924, 4886, 4953, 4889, 8120,11902,11902, 4890,
1169      4905, 4906, 4928, 8128, 4992, 4934, 5003, 4943, 8131, 4951,
1170      4955, 4981, 4971, 4984, 4974,11902,11902,11902,11902,11902,
1171     11902, 8135, 4996, 4983, 4996, 8138, 4962, 4945, 4961,11902,
1172
1173      4979, 4986, 4977, 4986,11902, 5006, 8141, 8150, 5021, 5029,
1174      5053, 5037, 5045, 5075, 5053, 5094, 5056, 5094, 8159, 8162,
1175      5064, 5073, 5086, 5070, 5079, 5091, 8170, 8173, 5078, 5080,
1176      5115, 5107, 5123, 5112, 8181, 5115, 5085, 5102, 5074, 5100,
1177      5098, 5135, 5112, 5132, 8184, 5164, 5216, 5153, 5160, 5163,
1178      5167, 5181, 5180, 5218,11902, 5216,11902, 8193,11902,11902,
1179      5212, 5219, 5215, 5219, 5228, 5231, 8201,11902,11902, 5265,
1180      5263,11902, 5240,11902, 5245, 5272,11902, 5222, 5224, 5227,
1181      5240, 5234, 5237, 5244, 5257, 5292, 5287, 5300, 5298, 5298,
1182      5308, 5309, 5308, 5314, 5316,11902,11902, 5319, 5326, 5326,
1183
1184      5332, 5343, 5343,11902,11902, 5365, 5364, 5354, 5326, 5337,
1185      5385, 5342, 5334, 5345, 5398, 5356, 5370, 5396, 5383, 5404,
1186      5396, 5394, 5411, 5407, 5405, 5422, 5424, 5421, 5443, 5432,
1187      5436, 5459,11902,11902, 5483, 5431, 5434,11902, 5488, 5441,
1188      5444,11902, 5492, 5485, 5487, 5489, 5490, 5503, 5494, 5526,
1189      5508, 5498, 5534, 5521, 5514, 5547, 5530, 5520, 5550, 5558,
1190      5502, 5563,11902, 5510, 5571,11902, 5551, 5557, 5556, 5562,
1191      5583, 5564,11902, 5590, 5567,11902, 5596, 5578,11902, 5603,
1192      5584,11902, 5642, 5545,11902, 5557,11902, 5594, 5611, 5600,
1193      5633,11902, 5638,11902, 5644,11902, 5645,11902, 5652, 8209,
1194
1195      5673, 5679, 5664, 5685, 5680, 5698, 5670, 5672, 5673, 5675,
1196      8212,11902,11902, 5721,11902, 5720,11902, 5724, 5733, 5737,
1197      5736, 5729, 5743,11902,11902,11902,11902,11902,11902, 5728,
1198      5737, 5744, 5754, 5766, 5784, 5735, 5894, 5734, 5893, 5923,
1199      5924, 5790, 5887, 5793, 5811, 5860, 5937, 5818, 5963, 5804,
1200      5918, 5942, 5976, 5913, 6005, 6030, 6045, 6007, 6008, 5902,
1201      5966, 5967, 5997, 6014, 6157, 6011, 6061, 6159, 6168, 6220,
1202      6236, 6167, 6209, 6183, 6186, 6185, 6262, 6252, 6259, 6054,
1203      6160, 6270, 6278, 6069, 6275, 6318, 6322, 6294, 6321, 6190,
1204      6230, 6346, 6348, 6247, 6336, 6369, 6405, 6371, 6422, 6386,
1205
1206      6435, 6413, 6425, 6434, 6473, 6470, 6515, 6509, 6619, 6447,
1207      6487, 6475, 6627, 6485, 6621, 6640, 6711, 6629, 6651, 6372,
1208      6659, 6712, 6717, 6694, 6718, 6735, 6741, 6456, 5816, 8220,
1209      8223,11902,11902, 8243, 8252, 8261, 8270, 8279, 8288, 8297,
1210      8306, 8315, 8324, 8333, 8342, 8351, 8360, 8369, 8378, 8387,
1211      8396, 8405, 8414, 8423, 8432, 8441, 8450, 8459, 8468, 8477,
1212      8486, 8495, 8504, 8513, 8522, 8531, 8540, 8549, 8558, 8567,
1213      8576, 8585, 8594, 8603, 8612, 8621, 8630, 8639, 8648, 8657,
1214      8666, 8675, 8684, 8693, 8702, 8711, 8720, 8729, 8738, 8747,
1215      8756, 8765, 8774, 8781, 8788, 8795, 8802, 8809, 8816, 8823,
1216
1217      8830, 8837, 8844, 8851, 8858, 8865, 8872, 8879, 8886, 8893,
1218      8900, 8907, 8914, 8921, 8928, 8935, 8942, 8949, 8956, 8963,
1219      8972, 8979, 8984, 8991, 8996, 9003, 9008, 9015, 9020, 9027,
1220      9032, 9039, 9044, 9051, 9056, 9063, 9068, 9075, 9080, 9087,
1221      9092, 9099, 9104, 9111, 9116, 9123, 9128, 9135, 9140, 9147,
1222      9152, 9159, 9164, 9171, 9176, 9183, 9188, 9195, 9200, 9207,
1223      9212, 9219, 9224, 9231, 9236, 9243, 9248, 9255, 9260, 9267,
1224      9272, 9279, 9284, 9291, 9296, 9305, 9311, 9318, 9326, 9334,
1225      9342, 9349, 9357, 9364, 9372, 9380, 9388, 9396, 9404, 9412,
1226      9420, 9427, 9435, 9443, 9450, 9458, 9465, 9473, 9480, 9488,
1227
1228      9495, 9503, 9510, 9518, 9525, 9533, 9540, 9548, 9555, 9563,
1229      9570, 9578, 9585, 9593, 9600, 9608, 9615, 9623, 9631, 9639,
1230      9646, 9654, 9661, 9669, 9676, 9684, 9691, 9699, 9706, 9714,
1231      9723, 9729, 9736, 9744, 9751, 9759, 9766, 9774, 9781, 9789,
1232      9796, 9804, 9812, 9819, 9827, 9834, 9842, 9850, 9857, 9865,
1233      9873, 9881, 9889, 9897, 9904, 9912, 9919, 9927, 9934, 9942,
1234      9950, 9958, 9965, 9973, 9980, 9988, 9995,10003,10010,10018,
1235     10025,10033,10040,10048,10055,10063,10070,10078,10085,10093,
1236     10101,10109,10116,10124,10133,10142,10149,10156,10164,10172,
1237     10180,10187,10195,10202,10210,10218,10225,10233,10241,10249,
1238
1239     10257,10264,10272,10280,10288,10295,10303,10310,10318,10326,
1240     10334,10341,10349,10356,10364,10371,10379,10386,10394,10402,
1241     10410,10417,10425,10432,10440,10447,10455,10462,10470,10477,
1242     10485,10492,10500,10507,10515,10524,10533,10540,10548,10556,
1243     10564,10571,10579,10587,10595,10603,10611,10619,10627,10635,
1244     10643,10650,10658,10666,10674,10681,10689,10696,10704,10712,
1245     10719,10727,10734,10742,10749,10757,10764,10772,10780,10787,
1246     10795,10802,10810,10817,10825,10833,10841,10848,10856,10863,
1247     10871,10878,10886,10895,10904,10912,10919,10927,10935,10942,
1248     10950,10958,10966,10974,10982,10989,10997,11005,11012,11020,
1249
1250     11028,11035,11042,11050,11058,11065,11073,11080,11088,11096,
1251     11103,11111,11118,11126,11133,11141,11148,11156,11164,11172,
1252     11180,11188,11195,11203,11211,11219,11228,11237,11244,11252,
1253     11260,11267,11275,11283,11291,11299,11306,11314,11322,11329,
1254     11337,11345,11352,11359,11367,11375,11382,11389,11397,11405,
1255     11413,11420,11428,11435,11442,11450,11457,11465,11472,11480,
1256     11487,11495,11504,11513,11520,11528,11536,11544,11552,11560,
1257     11568,11576,11583,11591,11598,11606,11614,11622,11630,11638,
1258     11646,11654,11661,11669,11677,11685,11693,11700,11707,11714,
1259     11722,11729,11737,11744,11752,11761,11770,11777,11785,11793,
1260
1261     11801,11809,11816,11823,11831,11838,11847,11856,11865,11874,
1262     11883,11892
1263     } ;
1264
1265 static yyconst flex_int16_t yy_def[3813] =
1266     {   0,
1267      3334, 3334, 3335, 3335, 3335, 3335, 3336, 3336, 3337, 3337,
1268      3338, 3338, 3339, 3339, 3339, 3339, 3340, 3340, 3341, 3341,
1269      3342, 3342, 3342, 3342, 3334, 3334, 3342, 3342, 3342, 3342,
1270      3334, 3334, 3342, 3342, 3334, 3334, 3342, 3342, 3342, 3342,
1271      3343, 3343, 3344, 3344, 3334, 3334, 3344, 3344, 3344, 3344,
1272      3345, 3345, 3346, 3346, 3347, 3347, 3348, 3348, 3349, 3349,
1273      3350, 3350, 3334, 3334, 3350, 3350, 3350, 3350, 3351, 3351,
1274      3352, 3352, 3334, 3334, 3352, 3352, 3352, 3352, 3353, 3353,
1275      3354, 3354, 3333,   83, 3355, 3355, 3334, 3334, 3355, 3355,
1276      3355, 3355, 3356, 3356, 3357, 3357, 3334, 3334, 3357, 3357,
1277
1278      3357, 3357, 3358, 3358, 3359, 3359, 3334, 3334, 3359, 3359,
1279      3359, 3359, 3360, 3360, 3361, 3361, 3362, 3362, 3363, 3363,
1280      3334, 3334, 3363, 3363, 3363, 3363, 3364, 3364, 3365, 3365,
1281      3334, 3334, 3365, 3365, 3365, 3365, 3366, 3366, 3367, 3367,
1282      3368, 3368, 3369, 3369, 3370, 3370, 3371, 3371, 3372, 3372,
1283      3373, 3373, 3334, 3334, 3374, 3374, 3375, 3375, 3375, 3375,
1284      3334, 3334, 3375, 3375, 3375, 3375, 3334, 3334, 3375, 3375,
1285      3334, 3334, 3375, 3375, 3375, 3375, 3376, 3376, 3377, 3377,
1286      3334, 3334, 3377, 3377, 3377, 3377, 3378, 3378, 3379, 3379,
1287      3380, 3380, 3381, 3381, 3382, 3382, 3383, 3383, 3334, 3334,
1288
1289      3383, 3383, 3383, 3383, 3384, 3384, 3385, 3385, 3386, 3386,
1290      3387, 3387, 3334, 3334, 3387, 3387, 3387, 3387, 3388, 3388,
1291      3389, 3389, 3334, 3334, 3389, 3389, 3389, 3389, 3390, 3390,
1292      3391, 3391, 3392, 3392, 3393, 3393, 3334, 3334, 3333, 3333,
1293      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1294      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1295      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3394, 3333,
1296      3333, 3394, 3394, 3333, 3333, 3333,  276, 3333,  278,  276,
1297       279,  278, 3333, 3333, 3333, 3395, 3333, 3333, 3395, 3395,
1298      3395, 3333, 3333,  278,  294,  294, 3333, 3333, 3333, 3396,
1299
1300      3333, 3333, 3396, 3333, 3333, 3333, 3333, 3333, 3333, 3397,
1301      3333, 3333, 3397, 3397, 3397, 3333, 3333, 3333, 3333, 3333,
1302      3333, 3398, 3333, 3333, 3398, 3398, 3398, 3333, 3333,  294,
1303       294, 3333, 3333, 3333, 3399, 3333, 3333, 3399, 3399, 3333,
1304      3333,  294,  294, 3333, 3333, 3333, 3400, 3333, 3333, 3400,
1305      3400, 3400, 3400, 3400, 3400, 3333, 3333, 3333, 3333, 3333,
1306      3333, 3401, 3333, 3333, 3401, 3401, 3401, 3401, 3401, 3401,
1307      3401, 3401, 3333, 3333,  278,  278, 3333, 3333, 3333, 3402,
1308      3333, 3333, 3402, 3333, 3333,  278,  278, 3333, 3333, 3333,
1309      3403, 3333, 3333, 3403, 3403, 3403, 3403, 3403, 3333, 3333,
1310
1311       278,  278,  278, 3333, 3333, 3333, 3404, 3333, 3333, 3404,
1312      3404, 3404, 3333, 3333, 3333, 3333, 3333, 3333, 3405, 3333,
1313      3333, 3405, 3333, 3333,  278,  425,  278, 3333, 3333, 3333,
1314      3406, 3333, 3333, 3406, 3406, 3406, 3406, 3333, 3333,  278,
1315       278, 3333, 3333, 3333, 3407, 3333, 3333, 3407, 3407, 3333,
1316      3333, 3333, 3333, 3333, 3333, 3408, 3333, 3333, 3408, 3408,
1317      3333, 3333, 3333, 3333, 3333, 3333, 3409, 3333, 3333, 3409,
1318      3409, 3333, 3333, 3333, 3333, 3333, 3333, 3410, 3333, 3333,
1319      3410, 3410, 3410, 3410, 3410, 3410, 3333, 3333, 3333, 3333,
1320      3333, 3333, 3333, 3411, 3333, 3333, 3411, 3333, 3333,  425,
1321
1322       425,  278,  278,  278,  278, 3333, 3333, 3333, 3412, 3333,
1323      3333, 3412, 3412, 3412, 3412, 3412, 3333, 3333,  278,  278,
1324       278, 3333, 3333, 3333, 3413, 3333, 3333, 3413, 3413, 3333,
1325      3333, 3333, 3333, 3333, 3333, 3414, 3333, 3333, 3414, 3414,
1326      3414, 3414, 3414, 3333, 3333, 3333, 3333, 3333, 3333, 3415,
1327      3333, 3333, 3415, 3415, 3333, 3333,  294,  294, 3333, 3333,
1328      3333, 3416, 3333, 3333, 3416, 3416, 3333, 3333, 3333, 3333,
1329      3333, 3333, 3417, 3333, 3333, 3417, 3417, 3417, 3417, 3333,
1330      3333,  278,  278, 3333, 3333, 3333, 3418, 3333, 3333, 3418,
1331      3418, 3418, 3418, 3333, 3333,  278,  278,  278, 3333, 3333,
1332
1333      3333, 3419, 3333, 3333, 3419, 3419, 3419, 3333, 3333, 3333,
1334      3333, 3333, 3420, 3333, 3333, 3420, 3420, 3420, 3333, 3333,
1335      3333, 3333, 3421, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1336      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3422, 3422, 3422,
1337      3423, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1338      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1339      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1340      3333, 3424, 3424, 3424, 3424, 3424, 3425, 3333, 3333, 3426,
1341      3426, 3427, 3333, 3428, 3428, 3428, 3428, 3429, 3333, 3430,
1342      3430, 3430, 3430, 3431, 3333, 3432, 3432, 3432, 3433, 3333,
1343
1344      3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3435, 3333,
1345      3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436,
1346      3436, 3436, 3436, 3436, 3436, 3437, 3333, 3438, 3438, 3439,
1347      3333, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3441, 3333,
1348      3333, 3442, 3442, 3442, 3442, 3443, 3333, 3444, 3444, 3445,
1349      3333, 3333, 3446, 3446, 3446, 3446, 3446, 3446, 3447, 3333,
1350      3448, 3448, 3448, 3449, 3333, 3450, 3450, 3450, 3451, 3333,
1351      3452, 3452, 3452, 3453, 3333, 3454, 3454, 3454, 3454, 3454,
1352      3454, 3454, 3454, 3455, 3333, 3333, 3456, 3456, 3457, 3333,
1353      3333, 3333, 3333, 3333, 3333, 3458, 3458, 3458, 3458, 3458,
1354
1355      3458, 3459, 3333, 3333, 3460, 3460, 3460, 3461, 3333, 3462,
1356      3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3463, 3333,
1357      3464, 3464, 3464, 3464, 3465, 3333, 3466, 3466, 3466, 3467,
1358      3333, 3468, 3468, 3468, 3468, 3468, 3469, 3333, 3470, 3470,
1359      3470, 3470, 3470, 3471, 3333, 3333, 3472, 3472, 3472, 3472,
1360      3333, 3473, 3333, 3333, 3474, 3474, 3474, 3474, 3475, 3476,
1361      3333, 3476, 3333, 3333, 3333, 3477, 3333, 3333, 3333, 3333,
1362      3333, 3333, 3333, 3333, 3478, 3479, 3479, 3333, 3333, 3333,
1363      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1364      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1365
1366      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1367      3333, 3480, 3480, 3480, 3480, 3481, 3481, 3333, 3482, 3483,
1368      3483, 3484, 3333, 3333, 3484, 3485, 3485, 3486, 3486, 3486,
1369      3487, 3487, 3488, 3488, 3489, 3489, 3333, 3333, 3333, 3333,
1370      3490, 3490, 3490, 3490, 3490, 3491, 3491, 3492, 3333, 3333,
1371      3492, 3333, 3333, 3492, 3492, 3492, 3492, 3492, 3492, 3492,
1372      3492, 3492, 3492, 3493, 3493, 3333, 3333, 3494, 3494, 3495,
1373      3495, 3495, 3333, 3333, 3495, 3495, 3495, 3496, 3496, 3333,
1374      3497, 3333, 3333, 3333, 3333, 3498, 3498, 3499, 3500, 3500,
1375      3333, 3501, 3333, 3333, 3501, 3501, 3501, 3502, 3502, 3503,
1376
1377      3333, 3333, 3504, 3504, 3333, 3333, 3505, 3506, 3506, 3507,
1378      3507, 3508, 3508, 3509, 3509, 3509, 3333, 3333, 3509, 3509,
1379      3509, 3510, 3510, 3333, 3511, 3512, 3512, 3333, 3333, 3333,
1380      3513, 3513, 3513, 3513, 3513, 3514, 3514, 3333, 3333, 3333,
1381      3515, 3516, 3516, 3517, 3333, 3333, 3517, 3517, 3517, 3517,
1382      3517, 3517, 3518, 3518, 3519, 3519, 3519, 3520, 3520, 3521,
1383      3333, 3333, 3522, 3522, 3523, 3523, 3333, 3333, 3523, 3524,
1384      3524, 3525, 3333, 3333, 3525, 3525, 3526, 3526, 3333, 3527,
1385      3333, 3333, 3527, 3333, 3528, 3528, 3333, 3529, 3529, 3529,
1386      3530, 3530, 3531, 3333, 3333, 3531, 3333, 3333, 3532, 3333,
1387
1388      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3533, 3333, 3534,
1389      3333, 3534, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1390      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1391      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1392      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1393      3535, 3535, 3333, 3333, 3535, 3333, 3536, 3333, 3536, 3333,
1394      3537, 3333, 3538, 3333, 3538, 3539, 3333, 3333, 3333, 3539,
1395      3333, 3540, 3333, 3540, 3333, 3333, 3541, 3541, 3333, 3333,
1396      3333, 3542, 3333, 3542, 3333, 3333, 3333, 3333, 3333, 3543,
1397      3333, 3543, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1398
1399      3544, 3544, 3544, 3544, 3333, 3545, 3333, 3545, 3546, 3546,
1400      3546, 3333, 3333, 3333, 3546, 3333, 3333, 3333, 3333, 3333,
1401      3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3333,
1402      3547, 3333, 3547, 3333, 3333, 3333, 3333, 3548, 3333, 3548,
1403      3549, 3549, 3549, 3333, 3333, 3333, 3549, 3549, 3549, 3333,
1404      3550, 3333, 3550, 3333, 3551, 3333, 3333, 3333, 3333, 3333,
1405      3333, 3333, 3552, 3333, 3552, 3553, 3333, 3554, 3333, 3554,
1406      3555, 3333, 3333, 3333, 3555, 3555, 3555, 3333, 3556, 3333,
1407      3556, 3557, 3333, 3333, 3333, 3333, 3558, 3333, 3558, 3333,
1408      3333, 3333, 3559, 3333, 3560, 3333, 3560, 3561, 3561, 3333,
1409
1410      3562, 3333, 3562, 3563, 3563, 3563, 3563, 3333, 3333, 3333,
1411      3333, 3333, 3563, 3563, 3333, 3564, 3333, 3564, 3333, 3565,
1412      3333, 3566, 3333, 3566, 3333, 3333, 3333, 3567, 3567, 3567,
1413      3567, 3567, 3333, 3568, 3333, 3568, 3333, 3333, 3333, 3333,
1414      3569, 3333, 3570, 3333, 3570, 3571, 3333, 3333, 3333, 3333,
1415      3333, 3571, 3333, 3333, 3571, 3571, 3571, 3333, 3572, 3333,
1416      3572, 3333, 3333, 3333, 3333, 3573, 3333, 3574, 3333, 3574,
1417      3575, 3333, 3333, 3333, 3333, 3576, 3333, 3576, 3577, 3577,
1418      3333, 3333, 3333, 3577, 3333, 3578, 3333, 3578, 3579, 3333,
1419      3333, 3333, 3579, 3579, 3333, 3580, 3333, 3580, 3333, 3581,
1420
1421      3333, 3333, 3333, 3581, 3333, 3333, 3582, 3333, 3582, 3583,
1422      3583, 3583, 3333, 3584, 3333, 3584, 3585, 3586, 3333, 3333,
1423      3333, 3333, 3587, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1424      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1425      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1426      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1427      3333, 3333, 3333, 3588, 3588, 3333, 3333, 3333, 3588, 3589,
1428      3333, 3590, 3591, 3592, 3592, 3593, 3333, 3333, 3333, 3594,
1429      3594, 3333, 3333, 3333, 3595, 3333, 3333, 3333, 3333, 3333,
1430      3333, 3596, 3333, 3333, 3333, 3597, 3597, 3597, 3597, 3598,
1431
1432      3599, 3599, 3599, 3333, 3333, 3333, 3333, 3333, 3599, 3599,
1433      3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3600, 3601,
1434      3602, 3602, 3333, 3333, 3602, 3602, 3602, 3603, 3333, 3333,
1435      3333, 3604, 3333, 3333, 3605, 3606, 3606, 3606, 3606, 3607,
1436      3608, 3609, 3610, 3611, 3333, 3333, 3612, 3613, 3614, 3614,
1437      3614, 3614, 3333, 3333, 3333, 3614, 3614, 3615, 3333, 3616,
1438      3617, 3333, 3333, 3333, 3618, 3333, 3333, 3618, 3618, 3618,
1439      3619, 3333, 3620, 3621, 3622, 3333, 3333, 3333, 3333, 3333,
1440      3333, 3333, 3333, 3622, 3333, 3333, 3622, 3623, 3333, 3333,
1441      3333, 3333, 3333, 3333, 3624, 3625, 3626, 3627, 3628, 3628,
1442
1443      3628, 3629, 3630, 3630, 3333, 3333, 3631, 3333, 3333, 3333,
1444      3632, 3333, 3633, 3634, 3333, 3333, 3634, 3635, 3636, 3637,
1445      3637, 3333, 3637, 3333, 3333, 3638, 3333, 3333, 3333, 3333,
1446      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1447      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1448      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1449      3333, 3333, 3333, 3333, 3639, 3639, 3639, 3640, 3333, 3333,
1450      3333, 3641, 3642, 3642, 3643, 3644, 3644, 3645, 3646, 3647,
1451      3647, 3333, 3333, 3647, 3648, 3333, 3333, 3649, 3649, 3333,
1452      3333, 3333, 3649, 3649, 3649, 3649, 3649, 3649, 3333, 3333,
1453
1454      3649, 3649, 3649, 3650, 3651, 3652, 3652, 3333, 3333, 3333,
1455      3652, 3333, 3333, 3652, 3653, 3333, 3333, 3333, 3333, 3654,
1456      3333, 3333, 3333, 3655, 3656, 3656, 3656, 3656, 3657, 3658,
1457      3659, 3333, 3333, 3660, 3333, 3333, 3333, 3661, 3662, 3663,
1458      3333, 3333, 3663, 3663, 3333, 3333, 3663, 3664, 3333, 3665,
1459      3666, 3333, 3333, 3333, 3667, 3333, 3333, 3333, 3667, 3667,
1460      3667, 3668, 3333, 3333, 3333, 3669, 3670, 3333, 3333, 3333,
1461      3670, 3333, 3333, 3333, 3670, 3671, 3672, 3673, 3674, 3675,
1462      3676, 3676, 3676, 3677, 3678, 3333, 3333, 3333, 3333, 3333,
1463      3679, 3333, 3333, 3333, 3333, 3680, 3333, 3681, 3682, 3333,
1464
1465      3333, 3333, 3333, 3333, 3683, 3684, 3685, 3685, 3333, 3686,
1466      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1467      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1468      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1469      3333, 3333, 3333, 3333, 3333, 3333, 3687, 3688, 3333, 3333,
1470      3333, 3333, 3689, 3690, 3690, 3691, 3333, 3333, 3333, 3333,
1471      3692, 3693, 3333, 3333, 3694, 3333, 3333, 3333, 3333, 3333,
1472      3695, 3333, 3333, 3333, 3333, 3333, 3696, 3696, 3696, 3333,
1473      3333, 3696, 3696, 3696, 3333, 3333, 3333, 3333, 3333, 3696,
1474      3696, 3697, 3698, 3699, 3699, 3333, 3333, 3333, 3333, 3333,
1475
1476      3699, 3333, 3333, 3333, 3700, 3701, 3702, 3702, 3702, 3702,
1477      3333, 3333, 3703, 3704, 3333, 3333, 3333, 3705, 3706, 3707,
1478      3708, 3333, 3333, 3333, 3333, 3333, 3708, 3333, 3333, 3333,
1479      3708, 3333, 3333, 3333, 3709, 3710, 3333, 3333, 3333, 3711,
1480      3711, 3711, 3711, 3712, 3333, 3333, 3333, 3333, 3333, 3333,
1481      3713, 3713, 3713, 3714, 3715, 3716, 3717, 3718, 3333, 3333,
1482      3719, 3333, 3333, 3720, 3721, 3333, 3333, 3333, 3722, 3333,
1483      3723, 3333, 3724, 3725, 3333, 3333, 3333, 3333, 3333, 3333,
1484      3333, 3333, 3333, 3333, 3333, 3726, 3727, 3728, 3728, 3333,
1485      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1486
1487      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1488      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1489      3333, 3333, 3333, 3333, 3333, 3333, 3729, 3730, 3333, 3731,
1490      3732, 3333, 3333, 3733, 3333, 3333, 3333, 3333, 3333, 3333,
1491      3734, 3735, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1492      3736, 3333, 3333, 3333, 3737, 3737, 3737, 3333, 3333, 3333,
1493      3333, 3333, 3737, 3737, 3333, 3333, 3333, 3737, 3737, 3738,
1494      3739, 3740, 3740, 3333, 3333, 3333, 3740, 3741, 3742, 3743,
1495      3333, 3333, 3743, 3743, 3743, 3744, 3745, 3746, 3747, 3333,
1496      3333, 3748, 3333, 3333, 3333, 3748, 3748, 3333, 3333, 3333,
1497
1498      3749, 3333, 3333, 3333, 3750, 3750, 3750, 3750, 3751, 3333,
1499      3752, 3333, 3333, 3752, 3753, 3754, 3333, 3333, 3755, 3756,
1500      3333, 3333, 3333, 3333, 3333, 3757, 3333, 3333, 3333, 3758,
1501      3333, 3333, 3759, 3760, 3333, 3761, 3333, 3333, 3333, 3333,
1502      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1503      3333, 3762, 3763, 3764, 3764, 3333, 3333, 3333, 3333, 3333,
1504      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1505      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1506      3333, 3333, 3333, 3333, 3333, 3765, 3766, 3333, 3767, 3768,
1507      3333, 3333, 3333, 3769, 3770, 3771, 3333, 3333, 3333, 3772,
1508
1509      3773, 3773, 3773, 3333, 3333, 3333, 3773, 3773, 3773, 3333,
1510      3333, 3774, 3333, 3333, 3775, 3775, 3775, 3776, 3777, 3778,
1511      3333, 3333, 3333, 3778, 3778, 3778, 3779, 3780, 3781, 3782,
1512      3783, 3783, 3783, 3333, 3333, 3333, 3333, 3784, 3333, 3333,
1513      3333, 3785, 3785, 3785, 3786, 3333, 3787, 3333, 3333, 3333,
1514      3787, 3333, 3333, 3788, 3789, 3333, 3333, 3333, 3333, 3333,
1515      3790, 3791, 3333, 3333, 3333, 3792, 3793, 3333, 3794, 3333,
1516      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1517      3333, 3333, 3333, 3795, 3796, 3797, 3797, 3333, 3333, 3333,
1518      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1519
1520      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1521      3333, 3333, 3333, 3798, 3333, 3333, 3333, 3799, 3333, 3333,
1522      3800, 3801, 3802, 3333, 3333, 3803, 3803, 3803, 3803, 3333,
1523      3333, 3803, 3803, 3333, 3333, 3333, 3333, 3333, 3804, 3804,
1524      3804, 3805, 3333, 3333, 3333, 3333, 3806, 3806, 3806, 3806,
1525      3333, 3333, 3780, 3781, 3333, 3333, 3783, 3783, 3783, 3333,
1526      3784, 3333, 3333, 3333, 3333, 3333, 3785, 3785, 3333, 3333,
1527      3333, 3333, 3333, 3787, 3788, 3789, 3790, 3333, 3333, 3792,
1528      3793, 3333, 3794, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1529      3333, 3333, 3333, 3795, 3796, 3797, 3797, 3333, 3333, 3333,
1530
1531      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1532      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1533      3798, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3801, 3802,
1534      3803, 3803, 3803, 3803, 3333, 3333, 3333, 3803, 3803, 3333,
1535      3333, 3333, 3333, 3333, 3333, 3804, 3804, 3333, 3333, 3805,
1536      3333, 3333, 3333, 3806, 3806, 3806, 3333, 3333, 3333, 3333,
1537      3333, 3333, 3333, 3781, 3333, 3333, 3333, 3783, 3783, 3333,
1538      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1539      3333, 3333, 3333, 3787, 3788, 3789, 3790, 3792, 3793, 3333,
1540      3794, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1541
1542      3333, 3795, 3796, 3797, 3797, 3333, 3333, 3333, 3333, 3333,
1543      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1544      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3801, 3802,
1545      3803, 3803, 3333, 3333, 3803, 3803, 3803, 3333, 3333, 3333,
1546      3333, 3333, 3333, 3333, 3333, 3804, 3333, 3333, 3333, 3333,
1547      3333, 3333, 3333, 3806, 3806, 3806, 3333, 3333, 3333, 3333,
1548      3333, 3333, 3333, 3333, 3333, 3781, 3783, 3333, 3333, 3333,
1549      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1550      3333, 3333, 3333, 3333, 3787, 3333, 3333, 3333, 3333, 3790,
1551      3792, 3793, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1552
1553      3333, 3333, 3333, 3333, 3333, 3795, 3796, 3797, 3797, 3333,
1554      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1555      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1556      3333, 3333, 3801, 3802, 3803, 3333, 3333, 3333, 3333, 3333,
1557      3333, 3333, 3803, 3803, 3333, 3333, 3333, 3333, 3333, 3333,
1558      3333, 3333, 3804, 3333, 3333, 3333, 3806, 3333, 3333, 3806,
1559      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3783, 3333,
1560      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1561      3333, 3333, 3333, 3333, 3787, 3333, 3333, 3333, 3333, 3333,
1562      3333, 3333, 3333, 3333, 3333, 3793, 3333, 3333, 3333, 3333,
1563
1564      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3795, 3796, 3797,
1565      3797, 3797, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1566      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1567      3333, 3333, 3333, 3333, 3801, 3333, 3333, 3803, 3333, 3333,
1568      3333, 3333, 3333, 3333, 3803, 3803, 3333, 3333, 3333, 3333,
1569      3333, 3333, 3333, 3333, 3804, 3806, 3333, 3333, 3333, 3806,
1570      3333, 3333, 3333, 3333, 3333, 3333, 3783, 3333, 3333, 3333,
1571      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1572      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1573      3333, 3793, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1574
1575      3795, 3796, 3797, 3797, 3797, 3807, 3808, 3333, 3333, 3333,
1576      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1577      3333, 3333, 3333, 3801, 3803, 3333, 3333, 3803, 3333, 3333,
1578      3333, 3333, 3333, 3333, 3333, 3333, 3804, 3333, 3333, 3333,
1579      3333, 3333, 3333, 3333, 3333, 3783, 3333, 3333, 3333, 3333,
1580      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1581      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1582      3333, 3333, 3333, 3795, 3796, 3797, 3809, 3810, 3807, 3808,
1583      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1584      3333, 3333, 3803, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1585
1586      3333, 3333, 3333, 3333, 3804, 3333, 3333, 3333, 3333, 3333,
1587      3333, 3333, 3333, 3333, 3333, 3783, 3333, 3333, 3333, 3333,
1588      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1589      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1590      3796, 3809, 3797, 3811, 3810, 3812, 3797, 3333, 3333, 3333,
1591      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1592      3333, 3803, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1593      3333, 3333, 3333, 3804, 3333, 3333, 3333, 3333, 3783, 3333,
1594      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1595      3333, 3796, 3811, 3333, 3812, 3797, 3333, 3333, 3333, 3333,
1596
1597      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1598      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1599      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1600      3333, 3333, 3333, 3333, 3796, 3333, 3333, 3333, 3333, 3333,
1601      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1602      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1603      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1604      3333, 3333, 3333, 3333, 3333, 3796, 3333, 3333, 3333, 3333,
1605      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1606      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1607
1608      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3796, 3333, 3333,
1609      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1610      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1611      3333, 3333, 3333, 3333, 3796, 3333, 3333, 3333, 3333, 3333,
1612      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1613      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3796,
1614      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1615      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1616      3333, 3333, 3796, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1617      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3796,
1618
1619      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1620      3796, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1621      3333, 3796, 3796, 3333, 3333, 3333, 3333, 3333, 3333, 3796,
1622      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1623      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1624      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1625      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1626      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1627      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1628      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1629
1630      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1631      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1632      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1633      3796, 3333,    0, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1634      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1635      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1636      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1637      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1638      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1639      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1640
1641      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1642      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1643      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1644      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1645      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1646      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1647      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1648      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1649      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1650      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1651
1652      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1653      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1654      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1655      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1656      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1657      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1658      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1659      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1660      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1661      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1662
1663      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1664      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1665      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1666      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1667      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1668      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1669      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1670      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1671      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1672      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1673
1674      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1675      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1676      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1677      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1678      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1679      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1680      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1681      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1682      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1683      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1684
1685      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1686      3333, 3333
1687     } ;
1688
1689 static yyconst flex_uint16_t yy_nxt[11977] =
1690     {   0,
1691      3333,  242,  243,  242,  242,  243,  242,  242,  243,  242,
1692       242,  243,  242,  247,  243,  247,  253,  244,  250,  253,
1693       244,  250,  694,  245, 3333,  251,  245, 3333,  251,  248,
1694       247,  243,  247,  623,  254,  256,  257,  254,  256,  257,
1695       258,  259,  641,  258,  259,  623,  248,  263,  264,  624,
1696       260,  256,  257,  260,  261,  626,  258,  256,  257, 1305,
1697       261,  625,  258,  263,  264, 1306,  260,  275,  243,  275,
1698       660,  625,  260,  275,  243,  275,  275,  243,  275,  275,
1699       243,  275,  707,  276,  243,  243,  243,  708, 1666,  276,
1700       699,  265,  277, 1667,  667,  277,  622,  622,  622, 1673,
1701
1702       278,  622,  622,  622,  622,  622,  622,  265,  266,  267,
1703       243,  267,  266,  266,  266,  266,  266,  266,  266,  268,
1704       266,  266,  266,  739,  266,  270,  266,  271,  266,  243,
1705       243,  243,  275,  243,  275,  275,  243,  275,  660,  275,
1706       243,  275,  275,  243,  275,  278,  626,  626,  276,  675,
1707       712,  276,  626,  266,  266,  279,  676,  757,  279,  622,
1708       622,  622,  625,  625,  272,  622,  622,  622,  625,  758,
1709       631,  713,  740,  273,  266,  267,  243,  267,  266,  266,
1710       266,  266,  266,  266,  266,  268,  266,  266,  266,  817,
1711       266,  270,  266,  271,  266,  243,  243,  243,  243,  243,
1712
1713       243,  275,  243,  275,  818,  275,  243,  275,  243,  243,
1714       243,  280,  632,  867,  280,  825,  868,  277,  633,  266,
1715       266,  277,  626,  634,  281,  243,  243,  243,  635,  682,
1716       272,  275,  243,  275,  275,  243,  275,  971,  625,  273,
1717       972,  281,  275,  243,  275, 1674,  626,  279, 1676,  626,
1718       279,  275,  243,  275,  622,  622,  622,  726,  282,  622,
1719       622,  622,  625,  660,  677,  625, 1677,  282,  283,  284,
1720       243,  284,  283,  283,  283,  283,  283,  283,  283,  285,
1721       283,  283,  283,  844,  283,  287,  283,  288,  283,  293,
1722       243,  293,  293,  243,  293,  243,  243,  243,  730,  243,
1723
1724       243,  243,  293,  243,  293,  294,  720,  892,  294,  667,
1725      1680,  295,  678,  283,  283,  295,  667,  626,  294,  289,
1726       721,  893,  290,  622,  622,  622,  622,  622,  622,  622,
1727       622,  622,  845,  625,  291,  283,  284,  243,  284,  283,
1728       283,  283,  283,  283,  283,  283,  285,  283,  283,  283,
1729       667,  283,  287,  283,  288,  283,  293,  243,  293,  293,
1730       243,  293,  293,  243,  293,  716,  305,  243,  305,  305,
1731       243,  305,  294,  717, 1681,  296,  880,  626,  296,  718,
1732       283,  283,  306,  737,  688,  306,  289,  738,  739,  290,
1733       622,  622,  622,  625,  622,  622,  622,  622,  622,  622,
1734
1735       881,  291,  297,  298,  243,  298,  297,  297,  297,  297,
1736       297,  297,  297,  299,  297,  297,  297,  861,  297,  301,
1737       297,  302,  297,  317,  243,  317,  317,  243,  317,  329,
1738       243,  329,  862,  329,  243,  329,  243,  243,  243,  318,
1739       667, 1684,  318, 1706,  898,  330,  898,  297,  297,  330,
1740       626,  626,  295,  243,  243,  243,  622,  622,  622,  622,
1741       622,  622,  622,  622,  622,  802,  625,  625,  899,  295,
1742       881,  303,  297,  298,  243,  298,  297,  297,  297,  297,
1743       297,  297,  297,  299,  297,  297,  297,  880,  297,  301,
1744       297,  302,  297,  329,  243,  329,  329,  243,  329,  329,
1745
1746       243,  329,  803,  329,  243,  329,  341,  243,  341,  330,
1747       782,  899,  330,  626,  783,  331, 1707,  297,  297,  331,
1748       709,  861,  342,  341,  243,  341,  622,  622,  622,  625,
1749       622,  622,  622,  622,  622,  622,  622,  622,  622,  342,
1750      1711,  303,  307,  308,  243,  308,  307,  307,  307,  307,
1751       307,  307,  307,  309,  307,  307,  307, 1084,  307,  311,
1752       307,  312,  307,  243,  243,  243,  243,  243,  243,  341,
1753       243,  341, 1714,  341,  243,  341,  341,  243,  341,  295,
1754       626,  626,  295,  823,  626,  342,  722,  307,  307,  342,
1755       824,  313,  343, 1716,  723, 1725,  625,  625,  314,  724,
1756
1757       625,  315,  307,  308,  243,  308,  307,  307,  307,  307,
1758       307,  307,  307,  309,  307,  307,  307, 1726,  307,  311,
1759       307,  312,  307,  341,  243,  341,  357,  243,  357,  357,
1760       243,  357,  892,  374,  243,  374,  374,  243,  374,  343,
1761       626,  626,  358,  626,  626,  358,  906,  307,  307,  375,
1762       746,  313,  375,  622,  622,  622,  625,  625,  314,  625,
1763       625,  315,  319,  320,  243,  320,  319,  319,  319,  319,
1764       319,  319,  319,  321,  319,  319,  319, 1727,  319,  323,
1765       319,  324,  319,  243,  243,  243,  243,  243,  243,  374,
1766       243,  374,  750,  374,  243,  374,  374,  243,  374,  278,
1767
1768       892, 1728,  278, 1730, 1738,  375, 1740,  319,  319,  375,
1769       626,  626,  376,  325,  910,  759,  326,  622,  622,  622,
1770       622,  622,  622,  622,  622,  622,  625,  625,  327,  319,
1771       320,  243,  320,  319,  319,  319,  319,  319,  319,  319,
1772       321,  319,  319,  319,  667,  319,  323,  319,  324,  319,
1773       374,  243,  374,  385,  243,  385,  385,  243,  385,  789,
1774       243,  243,  243,  243,  243,  243,  376,  667, 1440,  386,
1775      1743, 1744,  386, 1747,  319,  319,  278,  626,  626,  278,
1776       325, 1441,  789,  326,  622,  622,  622,  622,  622,  622,
1777       622,  622,  622,  625,  625,  327,  332,  333,  243,  333,
1778
1779       332,  332,  332,  332,  332,  332,  332,  334,  332,  332,
1780       332,  791,  332,  336,  332,  337,  332,  385,  243,  385,
1781       385,  243,  385,  385,  243,  385,  789,  385,  243,  385,
1782       400,  243,  400,  386,  794, 1749,  386,  785, 1750,  387,
1783      1752,  332,  332,  387,  626,  626,  401,  338,  622,  622,
1784       622,  622,  622,  622,  622,  622,  622,  622,  622,  622,
1785       625,  625,  339,  332,  333,  243,  333,  332,  332,  332,
1786       332,  332,  332,  332,  334,  332,  332,  332,  667,  332,
1787       336,  332,  337,  332,  400,  243,  400,  243,  243,  243,
1788       243,  243,  243,  802,  400,  243,  400,  400,  243,  400,
1789
1790       401, 1094,  626,  402,  626, 1417,  402, 1094,  332,  332,
1791       401,  764,  626,  401,  338,  622,  622,  622,  625,  769,
1792       625,  622,  622,  622,  622,  622,  622, 1619,  625,  339,
1793       344,  345,  243,  345,  344,  344,  344,  344,  344,  344,
1794       344,  346,  344,  344,  344,  667,  344,  348,  344,  349,
1795       344,  400,  243,  400,  400,  243,  400,  414,  243,  414,
1796       837,  414,  243,  414,  424,  243,  424,  403,  626,  626,
1797       403,  626,  626,  415, 1753,  344,  344,  415,  774,  350,
1798       425,  622,  622,  622,  625,  625,  351,  625,  625,  352,
1799       622,  622,  622,  353, 1754,  354,  355,  344,  345,  243,
1800
1801       345,  344,  344,  344,  344,  344,  344,  344,  346,  344,
1802       344,  344,  667,  344,  348,  344,  349,  344,  424,  243,
1803       424,  243,  243,  243,  243,  243,  243,  892,  424,  243,
1804       424,  424,  243,  424,  425,  626,  626,  426,  626,  626,
1805       426,  911,  344,  344,  425,  784,  350,  425,  622,  622,
1806       622,  625,  625,  351,  625,  625,  352,  622,  622,  622,
1807       353, 1755,  354,  355,  359,  360,  243,  360,  359,  359,
1808       359,  359,  359,  359,  359,  361,  359,  359,  359,  362,
1809       359,  363,  359,  364,  359,  362,  362,  362,  362,  362,
1810       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
1811
1812       362,  362,  362,  362,  362,  362,  362,  362,  362,  359,
1813       359,  362,  362,  365,  366,  362,  362,  362,  362,  362,
1814       367,  362,  362,  368,  362,  362,  362,  369,  362,  370,
1815       371,  372,  362,  362,  362,  362,  362,  362,  377,  378,
1816       243,  378,  377,  377,  377,  377,  377,  377,  377,  379,
1817       377,  377,  377, 1759,  377,  381,  377,  382,  377,  424,
1818       243,  424,  424,  243,  424,  439,  243,  439, 1760,  439,
1819       243,  439,  243,  243,  243,  427,  626, 1761,  427, 1763,
1820       889,  440,  844,  377,  377,  440, 1767,  890,  278,  622,
1821       622,  622,  625,  891,  383,  377,  378,  243,  378,  377,
1822
1823       377,  377,  377,  377,  377,  377,  379,  377,  377,  377,
1824      1771,  377,  381,  377,  382,  377,  243,  243,  243,  439,
1825       243,  439,  439,  243,  439, 1775,  439,  243,  439,  439,
1826       243,  439,  278,  793,  667,  440, 1777,  889,  440,  813,
1827       377,  377,  441,  814,  890,  441,  667,  815,  792, 3333,
1828       896,  383,  388,  389,  243,  389,  388,  388,  388,  388,
1829       388,  388,  388,  390,  388,  388,  388, 1779,  388,  392,
1830       388,  393,  388,  451,  243,  451,  451,  243,  451,  462,
1831       243,  462,  882,  462,  243,  462, 1781,  669, 1782,  452,
1832      1030, 1094,  452,  883, 1517,  463,  884,  388,  388,  463,
1833
1834       394,  654,  395,  670,  906,  664, 1518, 1096,  396,  622,
1835       622,  622,  622,  622,  622,  397,  789, 1124,  398,  388,
1836       389,  243,  389,  388,  388,  388,  388,  388,  388,  388,
1837       390,  388,  388,  388, 1125,  388,  392,  388,  393,  388,
1838       473,  243,  473,  473,  243,  473,  488,  243,  488,  900,
1839       488,  243,  488, 1783, 1785,  790,  474, 1124, 1792,  474,
1840       901, 1796,  489,  884,  388,  388,  489,  394,  791,  395,
1841       792,  622,  622,  622, 1254,  396,  622,  622,  622,  622,
1842       622,  622,  397, 1797, 1399,  398,  404,  405,  243,  405,
1843       404,  404,  404,  404,  404,  404,  404,  406,  404,  404,
1844
1845       404, 1125,  404,  408,  404,  409,  404,  243,  243,  243,
1846       243,  243,  243,  499,  243,  499, 1799,  499,  243,  499,
1847       499,  243,  499,  490, 1622, 1809,  490,  626,  626,  500,
1848      1810,  404,  404,  500,  808,  819,  501,  410,  622,  622,
1849       622, 1811,  411,  625,  625,  622,  622,  622,  622,  622,
1850       622,  622,  622,  622,  412,  404,  405,  243,  405,  404,
1851       404,  404,  404,  404,  404,  404,  406,  404,  404,  404,
1852      1812,  404,  408,  404,  409,  404,  499,  243,  499,  243,
1853       243,  243,  243,  243,  243, 1813,  499,  243,  499,  499,
1854       243,  499,  501, 1814, 1815,  502,  626,  905,  502, 1816,
1855
1856       404,  404,  500,  830,  890,  500,  410,  622,  622,  622,
1857       891,  411,  625,  622,  622,  622,  622,  622,  622,  622,
1858       622,  622, 1817,  412,  416,  417,  243,  417,  416,  416,
1859       416,  416,  416,  416,  416,  418,  416,  416,  416, 1818,
1860       416,  420,  416,  421,  416,  499,  243,  499,  499,  243,
1861       499,  243,  243,  243,  882,  243,  243,  243,  499,  243,
1862       499,  503,  900, 1819,  503,  883, 1820,  426, 1028,  416,
1863       416,  426, 1821,  901,  501, 1823, 1028,  422,  416,  417,
1864       243,  417,  416,  416,  416,  416,  416,  416,  416,  418,
1865       416,  416,  416, 1824,  416,  420,  416,  421,  416,  499,
1866
1867       243,  499,  243,  243,  243,  243,  243,  243, 1825,  499,
1868       243,  499,  499,  243,  499,  501, 1440, 1563,  504, 1828,
1869      1831,  504, 1094,  416,  416,  503, 1832, 1833,  503, 1446,
1870      1446,  422,  428,  429,  243,  429,  428,  428,  428,  428,
1871       428,  428,  428,  430,  428,  428,  428, 1806,  428,  432,
1872       428,  433,  428,  499,  243,  499,  499,  243,  499,  518,
1873       243,  518, 1834,  518,  243,  518,  243,  243,  243,  505,
1874      1835, 1836,  505,  851, 1837,  519, 1840,  428,  428,  519,
1875       852,  434,  520,  622,  622,  622, 1849, 1854,  435,  625,
1876      1855,  436,  622,  622,  622,  622,  622,  622,  437,  428,
1877
1878       429,  243,  429,  428,  428,  428,  428,  428,  428,  428,
1879       430,  428,  428,  428, 1894,  428,  432,  428,  433,  428,
1880       243,  243,  243,  518,  243,  518,  518,  243,  518, 1895,
1881       518,  243,  518,  518,  243,  518,  520, 1901, 1907,  519,
1882       626, 1908,  519, 1909,  428,  428,  521,  859,  434,  521,
1883       622,  622,  622, 1910, 1913,  435,  625, 1919,  436,  622,
1884       622,  622,  865,  865,  865,  437,  442,  443,  243,  443,
1885       442,  442,  442,  442,  442,  442,  442,  444,  442,  442,
1886       442, 1921,  442,  446,  442,  447,  442,  531,  243,  531,
1887       531,  243,  531,  545,  243,  545, 1927,  545,  243,  545,
1888
1889       556,  243,  556,  532, 1931, 1934,  532,  905, 1935,  546,
1890      1937,  442,  442,  546,  890, 1938,  557,  448, 1939, 1940,
1891       896,  866,  449,  442,  443,  243,  443,  442,  442,  442,
1892       442,  442,  442,  442,  444,  442,  442,  442, 1941,  442,
1893       446,  442,  447,  442,  556,  243,  556,  243,  243,  243,
1894       243,  243,  243, 1942,  556,  243,  556,  556,  243,  556,
1895       557, 1943, 1945,  295,  889,  905,  295, 1951,  442,  442,
1896       557,  890,  890,  557,  448, 1952, 1953, 1029, 1029,  449,
1897       453,  454,  243,  454,  453,  453,  453,  453,  453,  453,
1898       453,  455,  453,  453,  453, 1955,  453,  457,  453,  458,
1899
1900       453,  556,  243,  556,  556,  243,  556,  568,  243,  568,
1901      1957,  568,  243,  568,  581,  243,  581,  558, 1209, 1965,
1902       558, 1970, 1971,  569, 1972,  453,  453,  569, 1210, 1974,
1903       582,  581,  243,  581, 1992, 1211,  459,  865,  865,  865,
1904      1993, 1098, 1113, 1113, 1113, 1994, 1997,  582, 1094,  460,
1905       453,  454,  243,  454,  453,  453,  453,  453,  453,  453,
1906       453,  455,  453,  453,  453, 1987,  453,  457,  453,  458,
1907       453,  243,  243,  243,  243,  243,  243,  581,  243,  581,
1908      1622,  581,  243,  581,  581,  243,  581,  278, 1975, 1995,
1909       278, 1998, 2000,  582, 1976,  453,  453,  582, 1977, 2001,
1910
1911       583,  581,  243,  581, 1978, 1996,  459, 1105, 1105, 1105,
1912      2002, 1106, 2003, 1989, 1107, 2004, 1622,  583, 2005,  460,
1913       464,  465,  243,  465,  464,  464,  464,  464,  464,  464,
1914       464,  466,  464,  464,  464, 2008,  464,  468,  464,  469,
1915       464,  595,  243,  595,  595,  243,  595,  243,  243,  243,
1916      2009,  243,  243,  243,  595,  243,  595,  596, 1988, 2010,
1917       596, 2011, 2014,  597, 2015,  464,  464,  597, 2016, 2012,
1918       596, 1134, 1134, 1134, 1634, 1634, 1634, 2017, 1113, 1113,
1919      1113,  470, 1134, 1134, 1134, 2013,  471,  464,  465,  243,
1920       465,  464,  464,  464,  464,  464,  464,  464,  466,  464,
1921
1922       464,  464, 2019,  464,  468,  464,  469,  464,  595,  243,
1923       595,  595,  243,  595,  595,  243,  595, 1641, 1641, 1641,
1924      1635,  873,  873,  873,  596, 2020, 2027,  598, 2029, 2031,
1925       598, 2055,  464,  464,  256,  257,  256,  257,  874,  258,
1926       750,  258, 1114, 1134, 1134, 1134, 1135, 2056,  470,  608,
1927       751,  608, 2057,  471,  475,  476,  243,  476,  475,  475,
1928       475,  475,  475,  475,  475,  477,  475,  475,  475, 2063,
1929       475,  479,  475,  480,  475,  620,  243,  620,  609,  645,
1930       609,  620,  243,  620, 2064,  647, 2068, 2069,  923,  923,
1931       923,  621,  654, 1109, 1109, 1109,  653,  621,  641,  475,
1932
1933       475, 2072,  481,  482,  483,  924, 2073, 1114,  665, 2077,
1934       484, 1111, 2080,  485, 1113, 1113, 1113, 1644, 1644, 1644,
1935       486,  475,  476,  243,  476,  475,  475,  475,  475,  475,
1936       475,  475,  477,  475,  475,  475,  666,  475,  479,  475,
1937       480,  475,  937,  937,  937,  939,  939,  939, 2084, 2085,
1938       667, 2086,  668, 2089,  653,  949,  949,  949, 2092,  938,
1939      2096, 2097,  940, 1156, 1156, 1156,  475,  475, 2098,  481,
1940       482,  483,  950, 1649, 1649, 1649, 2103,  484, 1135, 2105,
1941       485, 1158, 1637, 1637, 1637, 2106, 2107,  486,  491,  492,
1942       243,  492,  491,  491,  491,  491,  491,  491,  491,  493,
1943
1944       491,  491,  491, 2108,  491,  495,  491,  496,  491,  952,
1945       952,  952,  966,  966,  966,  973,  973,  973,  982,  982,
1946       982,  984,  984,  984, 2110, 2111,  953, 2114, 1638,  967,
1947      2116, 2119,  974,  491,  491,  983, 2135, 2136,  985,  993,
1948       993,  993, 1167, 1167, 1167, 2137, 1168, 2142, 2143, 1169,
1949      2146, 1655, 1655, 1655, 2147, 2148,  994,  497,  491,  492,
1950       243,  492,  491,  491,  491,  491,  491,  491,  491,  493,
1951       491,  491,  491, 2151,  491,  495,  491,  496,  491, 1001,
1952      1001, 1001, 1005, 1005, 1005, 1017, 1017, 1017, 1039, 1039,
1953      1039, 1045, 1045, 1045, 1094, 2160, 1002, 1656, 2144, 1006,
1954
1955      2153, 2161, 1018,  491,  491, 1040, 2145, 2149, 1046, 1061,
1956      1061, 1061, 1193, 1193, 1193, 2150, 1194, 2162, 1622, 1195,
1957      2163, 1658, 1658, 1658, 2166, 2168, 1062,  497,  506,  507,
1958       243,  507,  506,  506,  506,  506,  506,  506,  506,  508,
1959       506,  506,  506, 2169,  506,  510,  506,  511,  506, 1067,
1960      1067, 1067, 1073, 1073, 1073, 1081, 1081, 1081,  873,  873,
1961       873, 1149, 1149, 1149, 2155, 2170, 1068, 1638, 2174, 1074,
1962      2176, 2177, 1082,  506,  506,  874, 2178, 2181, 1150, 1622,
1963      2185,  512, 2186,  513, 2188, 2190,  514, 1659, 1659, 1659,
1964       515, 1634, 1634, 1634,  516,  506,  507,  243,  507,  506,
1965
1966       506,  506,  506,  506,  506,  506,  508,  506,  506,  506,
1967      2154,  506,  510,  506,  511,  506, 2201, 1109, 1109, 1109,
1968      1153, 1153, 1153, 2202, 1162, 1162, 1162, 3333, 3333, 3333,
1969      3333, 3333, 3333, 1979, 2203, 1111, 2207, 1154, 2208, 1980,
1970       506,  506, 1164, 1981, 3333, 2209, 2215, 3333,  512, 1982,
1971       513, 2216, 2217,  514, 1112, 2220, 2224,  515, 1637, 1637,
1972      1637,  516,  522,  523,  243,  523,  522,  522,  522,  522,
1973       522,  522,  522,  524,  522,  522,  522, 1151,  522,  526,
1974       522,  527,  522, 1156, 1156, 1156,  923,  923,  923, 1155,
1975      2225, 2226, 1152, 1162, 1162, 1162, 1171, 1171, 1171, 2227,
1976
1977      2230, 1158, 2231,  924, 1175, 1175, 1175,  522,  522, 2232,
1978      2233, 1164, 2234, 2246, 1173, 1196, 1196, 1196,  528, 1197,
1979      1159, 1176, 1198, 1212, 1212, 1212, 2247, 1213, 2251, 2254,
1980      1214,  529,  522,  523,  243,  523,  522,  522,  522,  522,
1981       522,  522,  522,  524,  522,  522,  522, 2255,  522,  526,
1982       522,  527,  522, 1171, 1171, 1171, 2261, 1165, 1179, 1179,
1983      1179, 1181, 1181, 1181, 1181, 1181, 1181, 3333, 3333, 3333,
1984      2266, 1173, 1185, 1185, 1185, 1180, 2268,  522,  522, 1183,
1985      2269, 2270, 1183, 2274, 3333, 1822, 1822, 1822,  528, 1186,
1986      1216, 1216, 1216, 2275, 1217, 2276, 2277, 1218, 2278, 2279,
1987
1988      1174,  529,  533,  534,  243,  534,  533,  533,  533,  533,
1989       533,  533,  533,  535,  533,  533,  533, 1177,  533,  537,
1990       533,  538,  533, 1187, 1187, 1187, 1189, 1189, 1189,  937,
1991       937,  937, 1178, 2280, 2281, 1184, 1189, 1189, 1189, 2282,
1992      1188, 1205, 1205, 1205, 1191, 2283,  938,  533,  533,  939,
1993       939,  939, 2300, 2301, 1191, 1622,  539, 2302,  540, 1207,
1994      2304, 2306,  541, 1641, 1641, 1641,  940,  542,  543,  533,
1995       534,  243,  534,  533,  533,  533,  533,  533,  533,  533,
1996       535,  533,  533,  533, 2307,  533,  537,  533,  538,  533,
1997      2309, 1199, 1199, 1199, 2310,  949,  949,  949, 2286, 3333,
1998
1999      3333, 3333, 3333, 3333, 3333, 2311, 2312, 1192, 1200, 3333,
2000      3333, 3333,  950, 2313,  533,  533, 3333, 2314, 2326, 3333,
2001      1234, 1234, 1234,  539, 1235,  540, 3333, 1236, 1622,  541,
2002      1658, 1658, 1658, 2327,  542,  543,  547,  548,  243,  548,
2003       547,  547,  547,  547,  547,  547,  547,  549,  547,  547,
2004       547, 1201,  547,  551,  547,  552,  547, 1202, 2332, 2333,
2005      1203, 2339, 2340,  952,  952,  952, 3333, 3333, 3333, 1219,
2006      1219, 1219, 1230, 1230, 1230, 2287, 1669, 1205, 1205, 1205,
2007       953,  547,  547, 3333, 2341, 2357, 1220,  553, 2328, 2358,
2008      1232, 2359, 1244, 1244, 1244, 1207, 1245, 2375, 2329, 1246,
2009
2010      2376, 2377,  554,  547,  548,  243,  548,  547,  547,  547,
2011       547,  547,  547,  547,  549,  547,  547,  547, 1204,  547,
2012       551,  547,  552,  547, 1208, 2380, 2382, 1230, 1230, 1230,
2013       966,  966,  966, 1237, 1237, 1237, 2383, 1237, 1237, 1237,
2014       973,  973,  973, 2384, 2385, 1232, 2386,  967,  547,  547,
2015      2387, 1239, 2388, 2389,  553, 1239, 2390,  974, 1256, 1256,
2016      1256, 2391, 1257, 2392, 2393, 1258, 1644, 1644, 1644,  554,
2017       559,  560,  243,  560,  559,  559,  559,  559,  559,  559,
2018       559,  561,  559,  559,  559, 1233,  559,  563,  559,  564,
2019       559, 1250, 1250, 1250, 1250, 1250, 1250, 2398, 1240, 2399,
2020
2021       982,  982,  982, 2402,  984,  984,  984, 2288, 2289, 1252,
2022      2290, 2403, 1252, 2404, 2405,  559,  559,  983, 2291, 2408,
2023       565,  985, 1649, 1649, 1649, 2292,  566,  559,  560,  243,
2024       560,  559,  559,  559,  559,  559,  559,  559,  561,  559,
2025       559,  559, 1622,  559,  563,  559,  564,  559, 1622, 1259,
2026      1259, 1259, 2409, 1260, 2410, 1253, 1261, 1262, 1262, 1262,
2027      1262, 1262, 1262, 1267, 1267, 1267, 2411, 1272, 1272, 1272,
2028      2413, 1273,  559,  559, 1274, 1264, 2414,  565, 1264, 2397,
2029      2396, 1269, 2415,  566,  570,  571,  243,  571,  570,  570,
2030       570,  570,  570,  570,  570,  572,  570,  570,  570, 2416,
2031
2032       570,  574,  570,  575,  570, 2417, 2419, 1267, 1267, 1267,
2033       993,  993,  993, 1278, 1278, 1278, 2420, 2400, 1278, 1278,
2034      1278, 1265, 1001, 1001, 1001, 1269, 2401,  994, 2406,  570,
2035       570, 1280,  576, 2421,  577, 2431, 1280, 2407, 2432, 1002,
2036       578, 1283, 1283, 1283, 2433, 1284, 2434, 2438, 1285, 2439,
2037      2446,  579,  570,  571,  243,  571,  570,  570,  570,  570,
2038       570,  570,  570,  572,  570,  570,  570, 1270,  570,  574,
2039       570,  575,  570, 1281, 1286, 1286, 1286, 1005, 1005, 1005,
2040      2447, 1294, 1294, 1294, 2454, 2455, 1286, 1286, 1286, 1290,
2041      1290, 1290, 1288, 1291, 1006, 2456, 1292,  570,  570, 1296,
2042
2043       576, 2468,  577, 2469, 1288, 1308, 1308, 1308,  578, 1309,
2044      2485, 2486, 1310, 1829, 1829, 1829, 1655, 1655, 1655,  579,
2045       584,  585,  243,  585,  584,  584,  584,  584,  584,  584,
2046       584,  586,  584,  584,  584, 2487,  584,  588,  584,  589,
2047       584, 1289, 1300, 1300, 1300, 1017, 1017, 1017, 2488, 1294,
2048      1294, 1294, 2490, 1300, 1300, 1300, 1311, 1311, 1311, 1830,
2049      1302, 2491, 1018, 2492, 2493,  584,  584, 1296, 2494, 2495,
2050       590, 1302, 2496, 1312, 2497, 2498,  591, 1338, 1338, 1338,
2051       592, 1339, 2499, 2500, 1340, 2501,  593,  584,  585,  243,
2052       585,  584,  584,  584,  584,  584,  584,  584,  586,  584,
2053
2054       584,  584, 2506,  584,  588,  584,  589,  584, 2507, 1094,
2055      1297, 1315, 1315, 1315, 1303, 1658, 1658, 1658, 1315, 1315,
2056      1315, 1321, 1321, 1321, 1321, 1321, 1321, 2508, 2509, 1317,
2057      2510, 2511,  584,  584, 2512, 2513, 1317,  590, 1622, 1323,
2058      2514, 2515, 1323,  591, 1347, 1347, 1347,  592, 1348, 2503,
2059      2516, 1349, 2517,  593,  599,  600,  243,  600,  599,  599,
2060       599,  599,  599,  599,  599,  601,  599,  599,  599, 1318,
2061       599,  603,  599,  604,  599, 1333, 1333, 1333, 1333, 1333,
2062      1333, 2505, 1324, 2518, 1039, 1039, 1039, 1342, 1342, 1342,
2063      1342, 1342, 1342, 1335, 2519, 2521, 1335, 2522, 2523,  599,
2064
2065       599, 1040, 1372, 1372, 1372, 1344, 1373,  605, 1344, 1374,
2066       606, 2524, 1826, 1826, 1826, 2525, 2526,  607,  599,  600,
2067       243,  600,  599,  599,  599,  599,  599,  599,  599,  601,
2068       599,  599,  599, 2531,  599,  603,  599,  604,  599, 1045,
2069      1045, 1045, 1336, 1350, 1350, 1350, 2532, 2535, 1353, 1353,
2070      1353, 1358, 1358, 1358, 1345, 2536, 1046, 1358, 1358, 1358,
2071      1351, 2537, 2538,  599,  599, 1354, 1381, 1381, 1381, 1360,
2072      1382,  605, 2541, 1383,  606, 1360, 1827, 1659, 1659, 1659,
2073      2542,  607,  610,  611,  243,  611,  610,  610,  610,  610,
2074       610,  610,  610,  612,  610,  610,  610, 2545,  610,  614,
2075
2076       610,  615,  610, 2546, 1361, 1362, 1362, 1362, 1364, 1364,
2077      1364, 1622, 3333, 3333, 3333, 1367, 1367, 1367, 1367, 1367,
2078      1367, 2554, 1363, 2555, 2539, 1365, 2556,  610,  610, 3333,
2079      1061, 1061, 1061, 1369,  616, 2540, 1369, 1390, 1390, 1390,
2080       617, 1391, 2567, 2590, 1392, 2591, 2596, 1062, 2504,  618,
2081       610,  611,  243,  611,  610,  610,  610,  610,  610,  610,
2082       610,  612,  610,  610,  610, 2597,  610,  614,  610,  615,
2083       610, 1366, 1375, 1375, 1375, 1375, 1375, 1375, 2543, 1370,
2084      1067, 1067, 1067, 1385, 1385, 1385, 1385, 1385, 1385, 2544,
2085      1377, 2598, 2599, 1377, 2600,  610,  610, 1068, 1073, 1073,
2086
2087      1073, 1387,  616, 2601, 1387, 1395, 1395, 1395,  617, 1395,
2088      1395, 1395, 1081, 1081, 1081, 1074, 2602,  618,  626, 1841,
2089      1841, 1841, 2603, 1397, 2604,  641, 2605, 1397, 1094, 1082,
2090      1406, 1406, 1406, 2610,  625,  642, 1378, 1401, 1401, 1401,
2091      2611, 1402, 2612, 2613, 1403, 1904, 1904, 1904, 1408, 1406,
2092      1406, 1406, 1388, 1413, 1413, 1413, 2560, 2607, 1413, 1413,
2093      1413, 2614,  643,  644,  645, 1842, 2561, 1408, 1622,  646,
2094       647, 1415, 2562,  648,  649, 1398, 1415,  650, 2615,  651,
2095       652,  653,  626, 1105, 1105, 1105, 2616, 1106, 2617, 2618,
2096      1107, 1109, 1109, 1109, 1109, 1109, 1109, 2619,  625,  655,
2097
2098      1424, 1424, 1424, 1149, 1149, 1149, 1153, 1153, 1153, 1111,
2099      2608, 2579, 1111, 1409, 1156, 1156, 1156, 1622, 1425, 2620,
2100      1150, 2580, 1416, 1154, 2581, 2621,  643,  656,  657, 1999,
2101      1999, 1999, 1158,  658,  659, 2622, 2624,  660,  649, 2582,
2102      2625,  661, 2626,  662,  663,  664, 1461, 1461, 1461, 2583,
2103      1462, 2628, 2584, 1463, 1466, 1466, 1466, 2629, 1467, 2609,
2104      2635, 1468, 1156, 1156, 1156, 1156, 1156, 1156, 1162, 1162,
2105      1162, 1162, 1162, 1162, 1162, 1162, 1162, 1167, 1167, 1167,
2106      1158, 1168, 2643, 1158, 1169, 2644, 1164, 2645, 2646, 1164,
2107      2647, 2648, 1164, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2108
2109      1171, 1171, 1175, 1175, 1175, 1477, 1477, 1477, 2440, 1478,
2110      2441, 1173, 1479, 2649, 1173, 2650, 2651, 1173, 2652, 1176,
2111      1179, 1179, 1179, 2442, 1482, 1482, 1482, 1473, 1483, 1470,
2112      2653, 1484, 1181, 1181, 1181, 2657, 2660, 1180, 1181, 1181,
2113      1181, 1181, 1181, 1181, 1185, 1185, 1185, 2661, 1476, 2662,
2114      1183, 1486, 1486, 1486, 2663, 1487, 1183, 2664, 1488, 1183,
2115      2665, 1186, 1187, 1187, 1187, 1489, 1489, 1489, 2666, 1490,
2116      2669, 2677, 1491, 1189, 1189, 1189, 1189, 1189, 1189, 1188,
2117      1189, 1189, 1189, 1193, 1193, 1193, 2443, 1194, 2444, 2678,
2118      1195, 1191, 2681, 2682, 1191, 1196, 1196, 1196, 1191, 1197,
2119
2120      2673, 2445, 1198, 1485, 1199, 1199, 1199, 1493, 1493, 1493,
2121      2700, 1494, 2701, 2674, 1495, 1205, 1205, 1205, 1205, 1205,
2122      1205, 1200, 1205, 1205, 1205, 1212, 1212, 1212, 2675, 1213,
2123      2702, 2703, 1214, 1207, 2704, 2679, 1207, 1504, 1504, 1504,
2124      1207, 2676, 1492, 1216, 1216, 1216, 2705, 1217, 2680, 2706,
2125      1218, 1219, 1219, 1219, 1505, 1506, 1506, 1506, 2707, 1507,
2126      1094, 2713, 1508, 1230, 1230, 1230, 2293, 2294, 1220, 2295,
2127      1500, 1230, 1230, 1230, 1230, 1230, 1230, 2296, 1234, 1234,
2128      1234, 1232, 1235, 2714, 2297, 1236, 1237, 1237, 1237, 1232,
2129      2683, 2715, 1232, 1237, 1237, 1237, 1237, 1237, 1237, 1523,
2130
2131      1523, 1523, 2716, 2684, 1239, 1244, 1244, 1244, 2709, 1245,
2132      2717, 1239, 1246, 1622, 1239, 2718, 1524, 1250, 1250, 1250,
2133      1250, 1250, 1250, 2563, 1250, 1250, 1250, 1530, 1530, 1530,
2134      1256, 1256, 1256, 2564, 1257, 1252, 2719, 1258, 1252, 2565,
2135      2720, 1519, 1252, 2721, 1531, 1259, 1259, 1259, 2710, 1260,
2136      2722, 2723, 1261, 1262, 1262, 1262, 1520, 1262, 1262, 1262,
2137      1262, 1262, 1262, 1533, 1533, 1533, 1267, 1267, 1267, 2724,
2138      2725, 1264, 1267, 1267, 1267, 1264, 2727, 2728, 1264, 2730,
2139      1534, 1267, 1267, 1267, 1269, 1278, 1278, 1278, 2738, 1528,
2140      1269, 1272, 1272, 1272, 2745, 1273, 2746, 2747, 1274, 1269,
2141
2142      1278, 1278, 1278, 1280, 1278, 1278, 1278, 1283, 1283, 1283,
2143      2748, 1284, 2749, 2731, 1285, 1286, 1286, 1286, 1280, 1286,
2144      1286, 1286, 1280, 2732, 2750, 1532, 1286, 1286, 1286, 2733,
2145      1535, 2751, 2752, 1288, 1290, 1290, 1290, 1288, 1291, 2734,
2146      2753, 1292, 2754, 2755, 1288, 1294, 1294, 1294, 1294, 1294,
2147      1294, 1294, 1294, 1294, 1545, 1545, 1545, 3333, 3333, 3333,
2148      1300, 1300, 1300, 1296, 1540, 2756, 1296, 2760, 2761, 1296,
2149      2762, 1546, 2763, 2764, 3333, 1300, 1300, 1300, 1302, 1300,
2150      1300, 1300, 2765, 1308, 1308, 1308, 1542, 1309, 2766, 2767,
2151      1310, 2768, 2769, 1302, 1311, 1311, 1311, 1302, 1553, 1553,
2152
2153      1553, 1544, 1554, 2770, 1547, 1555, 1315, 1315, 1315, 2771,
2154      2772, 1312, 1315, 1315, 1315, 1315, 1315, 1315, 1321, 1321,
2155      1321, 1321, 1321, 1321, 1317, 1321, 1321, 1321, 2773, 2774,
2156      1317, 2775, 2776, 1317, 2777, 2778, 1323, 2779, 2793, 1323,
2157      1566, 1566, 1566, 1323, 2794, 2795, 1548, 1333, 1333, 1333,
2158      1333, 1333, 1333, 1333, 1333, 1333, 2796, 1567, 2797, 2782,
2159      1338, 1338, 1338, 2798, 1339, 1335, 1558, 1340, 1335, 2783,
2160      2799, 1335, 1561, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
2161      1342, 1342, 1347, 1347, 1347, 2784, 1348, 2800, 2808, 1349,
2162      2809, 1344, 2810, 2811, 1344, 2785, 2812, 1344, 1350, 1350,
2163
2164      1350, 1576, 1576, 1576, 2813, 1577, 2814, 2815, 1578, 1579,
2165      1579, 1579, 2820, 2821, 1571, 1351, 1353, 1353, 1353, 2822,
2166      1581, 1581, 1581, 1094, 1582, 2823, 1580, 1583, 1585, 1585,
2167      1585, 2825, 2828, 1354, 1358, 1358, 1358, 1358, 1358, 1358,
2168      1574, 1358, 1358, 1358, 2829, 1586, 1362, 1362, 1362, 1589,
2169      1589, 1589, 1360, 1590, 2830, 1360, 1591, 2802, 2831, 1360,
2170      1364, 1364, 1364, 1363, 1592, 1592, 1592, 2832, 1593, 2833,
2171      2834, 1594, 1367, 1367, 1367, 2835, 2836, 1365, 1367, 1367,
2172      1367, 1367, 1367, 1367, 1372, 1372, 1372, 2837, 1373, 2842,
2173      1369, 1374, 1375, 1375, 1375, 2843, 1369, 2844, 2845, 1369,
2174
2175      2846, 1588, 1375, 1375, 1375, 1375, 1375, 1375, 2847, 2848,
2176      1377, 1381, 1381, 1381, 2849, 1382, 2850, 2851, 1383, 2852,
2177      1377, 2853, 2854, 1377, 1385, 1385, 1385, 1385, 1385, 1385,
2178      2855, 1385, 1385, 1385, 1390, 1390, 1390, 2856, 1391, 2857,
2179      2858, 1392, 1387, 2862, 2863, 1387, 2864, 2865, 1596, 1387,
2180      1605, 1605, 1605, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
2181      1395, 1395, 1609, 1609, 1609, 2868, 2869, 1606, 3333, 3333,
2182      3333, 1397, 1598, 2870, 1397, 2871, 2872, 1397, 2873, 1610,
2183      1401, 1401, 1401, 2881, 1402, 3333, 2882, 1403, 1406, 1406,
2184      1406, 2883, 1602, 1406, 1406, 1406, 1406, 1406, 1406, 1615,
2185
2186      1615, 1615, 2884, 1413, 1413, 1413, 1408, 1413, 1413, 1413,
2187      2885, 1408, 2886, 2887, 1408, 2888, 1616, 1413, 1413, 1413,
2188      1607, 1415, 1621, 1621, 1621, 1415, 1424, 1424, 1424, 1611,
2189      1461, 1461, 1461, 1094, 1462, 1415, 2889, 1463, 2890, 2893,
2190      1622, 1623, 2899, 1613, 1425, 1466, 1466, 1466, 2900, 1467,
2191      2901, 2902, 1468, 1156, 1156, 1156, 1670, 1670, 1670, 1162,
2192      1162, 1162, 2903, 2904, 1618, 1171, 1171, 1171, 1477, 1477,
2193      1477, 1158, 1478, 1671, 2905, 1479, 2875, 1164, 1482, 1482,
2194      1482, 2912, 1483, 1173, 2913, 1484, 1181, 1181, 1181, 1486,
2195      1486, 1486, 2914, 1487, 2915, 2916, 1488, 2917, 1489, 1489,
2196
2197      1489, 2918, 1490, 2919, 1183, 1491, 1189, 1189, 1189, 1493,
2198      1493, 1493, 2920, 1494, 1668, 2921, 1495, 1682, 1682, 1682,
2199      2922, 2923, 1675, 2924, 1191, 2925, 1672, 1205, 1205, 1205,
2200      1686, 1686, 1686, 1678, 1683, 3333, 3333, 3333, 3333, 3333,
2201      3333, 1504, 1504, 1504, 2926, 1207, 2927, 1687, 3333, 3333,
2202      3333, 2928, 3333, 1679, 2929, 3333, 2930, 2931, 1505, 1690,
2203      1690, 1690, 2932, 1691, 2933, 3333, 1692, 1506, 1506, 1506,
2204      2934, 1507, 2935, 2936, 1508, 3333, 3333, 3333, 3333, 3333,
2205      3333, 2937, 1685, 2938, 2952, 1689, 3333, 3333, 3333, 3333,
2206      3333, 3333, 3333, 1094, 2943, 3333, 3333, 3333, 3333, 1693,
2207
2208      2953, 1688, 2958, 3333, 2959, 2946, 3333, 1699, 1699, 1699,
2209      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
2210      2960, 2943, 1694, 2961, 1700, 2962, 2970, 3333, 1230, 1230,
2211      1230, 3333, 2971, 1696, 3333, 2944, 1237, 1237, 1237, 2941,
2212      1523, 1523, 1523, 1708, 1708, 1708, 1232, 1709, 1695, 2972,
2213      1710, 2973, 2974, 1697, 1239, 2979, 1698, 1524, 1712, 1712,
2214      1712, 1250, 1250, 1250, 1530, 1530, 1530, 1717, 1717, 1717,
2215      2980, 1718, 2981, 2982, 1719, 1713, 1702, 2963, 1703, 1252,
2216      1701, 1531, 1262, 1262, 1262, 1533, 1533, 1533, 1705, 2964,
2217      1721, 1721, 1721, 1704, 1722, 2983, 2984, 1723, 2985, 2986,
2218
2219      1264, 2987, 1534, 1267, 1267, 1267, 1278, 1278, 1278, 2988,
2220      1286, 1286, 1286, 1732, 1732, 1732, 2989, 1294, 1294, 1294,
2221      2990, 1269, 2991, 2994, 1280, 1622, 1623, 1715, 1288, 2965,
2222      1733, 2943, 1545, 1545, 1545, 1296, 1735, 1735, 1735, 2975,
2223      1736, 2966, 2946, 1737, 1300, 1300, 1300, 2977, 1720, 1546,
2224      1094, 2976, 1741, 1741, 1741, 2994, 1745, 1745, 1745, 2978,
2225      2997, 1724, 1302, 1729, 1315, 1315, 1315, 1731, 1734, 1742,
2226      1553, 1553, 1553, 1746, 1554, 2943, 2998, 1555, 1321, 1321,
2227      1321, 2999, 1317, 1566, 1566, 1566, 1756, 1756, 1756, 2944,
2228      1757, 2992, 3002, 1758, 3000, 3003, 1323, 1333, 1333, 1333,
2229
2230      1567, 1764, 1764, 1764, 1739, 1342, 1342, 1342, 3004, 1576,
2231      1576, 1576, 3001, 1577, 3011, 1335, 1578, 3014, 1765, 1579,
2232      1579, 1579, 3015, 1344, 3005, 1768, 1768, 1768, 1748, 1769,
2233      3016, 2948, 1770, 1581, 1581, 1581, 1580, 1582, 3017, 3006,
2234      1583, 1585, 1585, 1585, 1751, 3009, 1762, 1772, 1772, 1772,
2235      2949, 1773, 2950, 3018, 1774, 1358, 1358, 1358, 1586, 1589,
2236      1589, 1589, 3023, 1590, 3010, 2951, 1591, 1766, 1592, 1592,
2237      1592, 3026, 1593, 1360, 3012, 1594, 1367, 1367, 1367, 1375,
2238      1375, 1375, 1385, 1385, 1385, 1786, 1786, 1786, 3029, 1605,
2239      1605, 1605, 3030, 3013, 1369, 3031, 3032, 1377, 3033, 3034,
2240
2241      1387, 2994, 1787, 3036, 2994, 1776, 1606, 1788, 1788, 1788,
2242      3037, 1789, 3038, 3021, 1790, 1395, 1395, 1395, 1609, 1609,
2243      1609, 1793, 1793, 1793, 3024, 1794, 3039, 3040, 1795, 1406,
2244      1406, 1406, 3022, 1397, 3041, 1610, 1615, 1615, 1615, 1803,
2245      1803, 1803, 1778, 3025, 3042, 1780, 1784, 1408, 1800, 1800,
2246      1800, 3043, 1801, 1616, 3044, 1802, 1804, 1413, 1413, 1413,
2247      3048, 3049, 1621, 1621, 1621, 1838, 1838, 1838, 1826, 1826,
2248      1826, 1838, 1838, 1838, 3050, 1415, 3051, 3052, 1798, 1791,
2249      1622, 1843, 1843, 1843, 1845, 1845, 1845, 3333, 3333, 3333,
2250      1156, 1156, 1156, 1670, 1670, 1670, 3053, 3054, 1844, 3055,
2251
2252      3056, 1846, 3057, 3061, 3333, 3062, 1805, 3063, 1158, 3064,
2253      1671, 3065, 3066, 1807, 1850, 1850, 1850, 3070, 1851, 3071,
2254      3072, 1852, 1162, 1162, 1162, 1171, 1171, 1171, 3073, 1839,
2255      1808, 3074, 1839, 3075, 3077, 1827, 1857, 1857, 1857, 3078,
2256      1164, 3079, 3080, 1173, 1859, 1859, 1859, 1181, 1181, 1181,
2257      3081, 1847, 3082, 1858, 1189, 1189, 1189, 1848, 1863, 1863,
2258      1863, 1860, 3333, 3333, 3333, 1183, 1682, 1682, 1682, 1205,
2259      1205, 1205, 1191, 1856, 3083, 1864, 1869, 1869, 1869, 3333,
2260      3084, 1853, 3085, 1683, 1866, 1866, 1866, 1207, 1867, 3090,
2261      3086, 1868, 3091, 1870, 1686, 1686, 1686, 1872, 1872, 1872,
2262
2263      3092, 1873, 3087, 3093, 1874, 1875, 1875, 1875, 3333, 3333,
2264      3333, 1687, 1861, 3094, 1690, 1690, 1690, 3095, 1691, 1862,
2265      1865, 1692, 1876, 3096, 3097, 3333, 3333, 3333, 3333, 1871,
2266      3333, 3333, 3333, 1880, 1880, 1880, 3333, 3333, 3333, 3333,
2267      3333, 3333, 3088, 3333, 3333, 3333, 3333, 3333, 3098, 2954,
2268      1881, 3099, 3100, 3333, 3089, 3101, 3333, 1699, 1699, 1699,
2269      3102, 3333, 1885, 1885, 1885, 2955, 1886, 2956, 3103, 1887,
2270      3104, 3105, 1877, 3106, 1700, 1888, 1888, 1888, 3107, 1879,
2271      2957, 3333, 3333, 3333, 3109, 1883, 3333, 3333, 3333, 3110,
2272      1878, 1094, 1889, 3111, 1882, 3112, 3113, 1884, 3333, 1230,
2273
2274      1230, 1230, 3114, 3333, 1237, 1237, 1237, 1708, 1708, 1708,
2275      3115, 1709, 3116, 3117, 1710, 3118, 3108, 1232, 1896, 1896,
2276      1896, 3119, 1239, 1712, 1712, 1712, 3120, 3121, 1890, 1898,
2277      1898, 1898, 3122, 1899, 3123, 1897, 1900, 3124, 3125, 1891,
2278      1713, 3126, 1902, 1902, 1902, 1717, 1717, 1717, 3127, 1718,
2279      3128, 3129, 1719, 1262, 1262, 1262, 1267, 1267, 1267, 1893,
2280      1903, 3130, 1721, 1721, 1721, 1892, 1722, 3131, 3132, 1723,
2281      3133, 1264, 3134, 1094, 1269, 1911, 1911, 1911, 1286, 1286,
2282      1286, 1732, 1732, 1732, 1915, 1915, 1915, 3136, 1916, 3137,
2283      3138, 1917, 3135, 1912, 3139, 3140, 1288, 3141, 1733, 1905,
2284
2285      1294, 1294, 1294, 1735, 1735, 1735, 3142, 1736, 3143, 3144,
2286      1737, 1300, 1300, 1300, 1741, 1741, 1741, 3145, 1296, 1925,
2287      1925, 1925, 3146, 1906, 1914, 3147, 1922, 1922, 1922, 1302,
2288      1923, 1742, 3148, 1924, 3149, 3150, 1926, 1745, 1745, 1745,
2289      1928, 1928, 1928, 3151, 1929, 3152, 3153, 1930, 1932, 1932,
2290      1932, 1321, 1321, 1321, 1746, 1756, 1756, 1756, 1918, 1757,
2291      3154, 3155, 1758, 1333, 1333, 1333, 1933, 3156, 3157, 1323,
2292      1764, 1764, 1764, 1949, 1949, 1949, 3158, 1920, 1946, 1946,
2293      1946, 1335, 1947, 3159, 3161, 1948, 3162, 1765, 1768, 1768,
2294      1768, 1950, 1769, 3163, 3164, 1770, 3165, 1772, 1772, 1772,
2295
2296      3166, 1773, 1094, 1936, 1774, 1358, 1358, 1358, 1367, 1367,
2297      1367, 1375, 1375, 1375, 1944, 1959, 1959, 1959, 3333, 3333,
2298      3333, 3167, 3160, 1360, 3168, 3169, 1369, 3170, 3171, 1377,
2299      3172, 3173, 1960, 3174, 3175, 3333, 1962, 1962, 1962, 1385,
2300      1385, 1385, 3176, 1786, 1786, 1786, 3177, 1966, 1966, 1966,
2301      3178, 1967, 3179, 1963, 1968, 3180, 3181, 1387, 3182, 1956,
2302      1787, 3184, 1958, 1788, 1788, 1788, 1954, 1789, 3185, 3186,
2303      1790, 1395, 1395, 1395, 1793, 1793, 1793, 1094, 1794, 3187,
2304      3188, 1795, 3189, 3183, 1961, 3190, 1964, 3191, 3192, 1397,
2305      1406, 1406, 1406, 1800, 1800, 1800, 3193, 1801, 3194, 3195,
2306
2307      1802, 3196, 1803, 1803, 1803, 1983, 1983, 1983, 1408, 1984,
2308      3197, 3198, 1985, 1413, 1413, 1413, 3199, 3201, 1969, 1804,
2309      1990, 1990, 1990, 1822, 1822, 1822, 2006, 2006, 2006, 3202,
2310      3203, 1415, 1826, 1826, 1826, 3204, 3205, 1991, 2007, 2007,
2311      2007, 1973, 1829, 1829, 1829, 1838, 1838, 1838, 2018, 2018,
2312      2018, 1841, 1841, 1841, 1843, 1843, 1843, 3206, 2021, 2021,
2313      2021, 1094, 2022, 3207, 1986, 2023, 1845, 1845, 1845, 3208,
2314      3209, 1844, 2024, 2024, 2024, 3200, 2025, 3210, 3212, 2026,
2315      1156, 1156, 1156, 1846, 1850, 1850, 1850, 3213, 1851, 3214,
2316      3215, 1852, 1162, 1162, 1162, 2032, 2032, 2032, 1158, 1171,
2317
2318      1171, 1171, 1857, 1857, 1857, 3216, 3217, 2035, 2035, 2035,
2319      1164, 2036, 2033, 3218, 2037, 3219, 3220, 1173, 3221, 1858,
2320      1859, 1859, 1859, 2038, 2038, 2038, 3224, 2039, 3225, 3226,
2321      2040, 1181, 1181, 1181, 1189, 1189, 1189, 1860, 1863, 1863,
2322      1863, 3227, 3228, 2030, 3229, 3240, 2028, 1094, 1094, 1183,
2323      3238, 1665, 1191, 1094, 1094, 1864, 1094, 2043, 2043, 2043,
2324      2034, 2044, 1094, 1094, 2045, 2046, 2046, 2046, 1866, 1866,
2325      1866, 1664, 1867, 1094, 1663, 1868, 1869, 1869, 1869, 2048,
2326      2048, 2048, 2047, 2049, 3230, 1094, 2050, 1205, 1205, 1205,
2327      1872, 1872, 1872, 1870, 1873, 3232, 2041, 1874, 3231, 2042,
2328
2329      1875, 1875, 1875, 1094, 3233, 1207, 2052, 2052, 2052, 1094,
2330      2053, 3234, 1094, 2054, 1880, 1880, 1880, 1876, 2058, 2058,
2331      2058, 3235, 2059, 1094, 3330, 2060, 2061, 2061, 2061, 3236,
2332      1094, 1881, 1885, 1885, 1885, 1094, 1886, 1094, 2051, 1887,
2333      1888, 1888, 1888, 2062, 2065, 2065, 2065, 3237, 2066, 3246,
2334      1662, 2067, 1230, 1230, 1230, 1661, 3244, 1889, 1237, 1237,
2335      1237, 1896, 1896, 1896, 2074, 2074, 2074, 3247, 2075, 3252,
2336      1232, 2076, 3250, 1898, 1898, 1898, 1239, 1899, 1897, 1094,
2337      1900, 1902, 1902, 1902, 1904, 1904, 1904, 1262, 1262, 1262,
2338      1267, 1267, 1267, 2081, 2081, 2081, 1911, 1911, 1911, 1903,
2339
2340      1286, 1286, 1286, 2070, 3241, 1264, 1094, 1660, 1269, 3239,
2341      2082, 2071, 1094, 1094, 1912, 1915, 1915, 1915, 1288, 1916,
2342      3248, 1094, 1917, 1294, 1294, 1294, 2090, 2090, 2090, 1922,
2343      1922, 1922, 1094, 1923, 3242, 3243, 1924, 1094, 1657, 2083,
2344      2079, 1296, 1094, 1094, 2091, 2078, 1925, 1925, 1925, 2087,
2345      2093, 2093, 2093, 3245, 2094, 3262, 1094, 2095, 1928, 1928,
2346      1928, 1094, 1929, 1926, 3256, 1930, 1932, 1932, 1932, 2088,
2347      2099, 2099, 2099, 1321, 1321, 1321, 2102, 2102, 2102, 2104,
2348      2104, 2104, 1094, 3253, 1933, 1094, 1094, 2100, 1333, 1333,
2349      1333, 1323, 1946, 1946, 1946, 1094, 1947, 3249, 3254, 1948,
2350
2351      1949, 1949, 1949, 2112, 2112, 2112, 1335, 1358, 1358, 1358,
2352      2117, 2117, 2117, 1375, 1375, 1375, 1094, 3251, 1950, 3263,
2353      2113, 1959, 1959, 1959, 1094, 1360, 1094, 1094, 2118, 3264,
2354      1094, 1377, 3255, 1094, 2101, 2121, 2121, 2121, 1960, 2122,
2355      3258, 1654, 2123, 2124, 2124, 2124, 1962, 1962, 1962, 1094,
2356      2127, 2127, 2127, 2109, 2128, 3259, 3257, 2129, 1653, 3265,
2357      2125, 3260, 3261, 1963, 1094, 3268, 2115, 1385, 1385, 1385,
2358      2131, 2131, 2131, 1094, 1966, 1966, 1966, 2120, 1967, 3266,
2359      1094, 1968, 1395, 1395, 1395, 1387, 1652, 2132, 1094, 2126,
2360      2138, 2138, 2138, 2140, 2140, 2140, 1651, 1983, 1983, 1983,
2361
2362      1397, 1984, 3282, 1650, 1985, 1413, 1413, 1413, 2139, 1648,
2363      2141, 1990, 1990, 1990, 1647, 3269, 2133, 2156, 2156, 2156,
2364      2130, 2157, 3286, 1415, 2158, 2159, 2159, 2159, 1991, 2164,
2365      2164, 2164, 2165, 2165, 2165, 2134, 1999, 1999, 1999, 2167,
2366      2167, 2167, 2171, 2171, 2171, 2006, 2006, 2006, 2007, 2007,
2367      2007, 2152, 2172, 2172, 2172, 2175, 2175, 2175, 2179, 2179,
2368      2179, 2180, 2180, 2180, 2182, 2182, 2182, 2018, 2018, 2018,
2369      2183, 2183, 2183, 2021, 2021, 2021, 1094, 2022, 1094, 1094,
2370      2023, 2024, 2024, 2024, 1646, 2025, 1094, 1094, 2026, 1156,
2371      1156, 1156, 1162, 1162, 1162, 2032, 2032, 2032, 2173, 2191,
2372
2373      2191, 2191, 1094, 2192, 1094, 1094, 2193, 1158, 3283, 1094,
2374      1164, 3270, 2033, 1171, 1171, 1171, 2184, 2035, 2035, 2035,
2375      3271, 2036, 3267, 3274, 2037, 2038, 2038, 2038, 1094, 2039,
2376      3272, 1173, 2040, 1181, 1181, 1181, 1189, 1189, 1189, 1094,
2377      2187, 2043, 2043, 2043, 3276, 2044, 3273, 3277, 2045, 1094,
2378      3278, 1183, 2189, 2195, 1191, 1094, 3292, 2046, 2046, 2046,
2379      2197, 2197, 2197, 1645, 2198, 3275, 1094, 2199, 1205, 1205,
2380      1205, 1094, 2196, 2194, 2047, 2048, 2048, 2048, 1094, 2049,
2381      3284, 1094, 2050, 2052, 2052, 2052, 1207, 2053, 3285, 1094,
2382      2054, 2058, 2058, 2058, 1094, 2059, 3293, 1094, 2060, 2061,
2383
2384      2061, 2061, 2204, 2204, 2204, 3290, 2205, 3296, 3280, 2206,
2385      2065, 2065, 2065, 1094, 2066, 3281, 2062, 2067, 2210, 2210,
2386      2210, 1230, 1230, 1230, 2213, 2213, 2213, 3279, 3287, 2074,
2387      2074, 2074, 3291, 2075, 2200, 2211, 2076, 1094, 1643, 1232,
2388      1094, 1094, 2214, 1262, 1262, 1262, 1267, 1267, 1267, 2081,
2389      2081, 2081, 2221, 2221, 2221, 1094, 2222, 1642, 1640, 2223,
2390      1639, 1264, 1636, 1633, 1269, 1094, 2082, 1094, 1286, 1286,
2391      1286, 1294, 1294, 1294, 2090, 2090, 2090, 2093, 2093, 2093,
2392      1632, 2094, 3322, 3288, 2095, 2212, 1288, 3289, 1094, 1296,
2393      1094, 1094, 2091, 2099, 2099, 2099, 3297, 2219, 2218, 2235,
2394
2395      2235, 2235, 3294, 2236, 3295, 1094, 2237, 1321, 1321, 1321,
2396      2100, 2102, 2102, 2102, 2239, 2239, 2239, 2104, 2104, 2104,
2397      2240, 2240, 2240, 3298, 1094, 1323, 3333, 3333, 3333, 3333,
2398      3333, 3333, 1094, 2229, 2228, 1631, 3300, 2241, 3333, 3333,
2399      3333, 1094, 3302, 3333, 1094, 3306, 3333, 1333, 1333, 1333,
2400      2112, 2112, 2112, 1094, 1094, 3333, 2248, 2248, 2248, 3299,
2401      2249, 3330, 1630, 2250, 3304, 1335, 1094, 2113, 2252, 2252,
2402      2252, 2238, 2117, 2117, 2117, 1094, 3305, 2242, 2256, 2256,
2403      2256, 2121, 2121, 2121, 3307, 2122, 2253, 3301, 2123, 1094,
2404      2118, 3303, 1094, 2243, 1094, 1629, 2257, 2244, 2124, 2124,
2405
2406      2124, 2258, 2258, 2258, 1094, 2259, 1094, 3312, 2260, 2127,
2407      2127, 2127, 2245, 2128, 1628, 2125, 2129, 1385, 1385, 1385,
2408      2131, 2131, 2131, 2263, 2263, 2263, 1627, 2264, 1094, 3314,
2409      2265, 1395, 1395, 1395, 1094, 1387, 3308, 2132, 2138, 2138,
2410      2138, 2140, 2140, 2140, 2271, 2271, 2271, 3313, 2272, 1397,
2411      3316, 2273, 1413, 1413, 1413, 1626, 2139, 1625, 2141, 2285,
2412      2285, 2285, 2156, 2156, 2156, 3310, 2157, 1624, 2262, 2158,
2413      1415, 2159, 2159, 2159, 2298, 2298, 2298, 1094, 2299, 2299,
2414      2299, 3309, 2267, 2164, 2164, 2164, 2165, 2165, 2165, 2167,
2415      2167, 2167, 2303, 2303, 2303, 2305, 2305, 2305, 2171, 2171,
2416
2417      2171, 2284, 2172, 2172, 2172, 2175, 2175, 2175, 2308, 2308,
2418      2308, 2179, 2179, 2179, 2180, 2180, 2180, 2182, 2182, 2182,
2419      2183, 2183, 2183, 2315, 2315, 2315, 2317, 2317, 2317, 1162,
2420      1162, 1162, 2319, 2319, 2319, 2191, 2191, 2191, 1094, 2192,
2421      1094, 2316, 2193, 1171, 1171, 1171, 1094, 1164, 1094, 2320,
2422      1181, 1181, 1181, 1189, 1189, 1189, 2197, 2197, 2197, 1094,
2423      2198, 1173, 1617, 2199, 2324, 2324, 2324, 1614, 1183, 3323,
2424      1094, 1191, 2204, 2204, 2204, 3311, 2205, 1612, 1094, 2206,
2425      3320, 3315, 2325, 2330, 2330, 2330, 3317, 2322, 2210, 2210,
2426      2210, 2337, 2337, 2337, 2321, 2318, 3318, 2334, 2334, 2334,
2427
2428      2331, 2335, 3321, 1608, 2336, 2211, 2213, 2213, 2213, 2338,
2429      1262, 1262, 1262, 1094, 2323, 2343, 2343, 2343, 2345, 2345,
2430      2345, 3333, 3333, 3333, 2214, 2221, 2221, 2221, 1264, 2222,
2431      1094, 1094, 2223, 2344, 1604, 2346, 1094, 1094, 3333, 3333,
2432      3333, 3333, 3333, 3333, 3333, 2351, 2351, 2351, 1286, 1286,
2433      1286, 1294, 1294, 1294, 1094, 1603, 3333, 1601, 1600, 3333,
2434      1094, 3326, 2352, 3324, 2347, 1599, 1288, 3319, 3325, 1296,
2435      2342, 2355, 2355, 2355, 1597, 1595, 2348, 2360, 2360, 2360,
2436      2235, 2235, 2235, 1587, 2236, 3327, 3328, 2237, 2356, 1321,
2437      1321, 1321, 3329, 2350, 2239, 2239, 2239, 2240, 2240, 2240,
2438
2439      2349, 1584, 2362, 2362, 2362, 1575, 2363, 1323, 2353, 2364,
2440      2365, 2365, 2365, 1573, 2241, 2354, 3333, 3333, 3333, 3333,
2441      3333, 3333, 2369, 2369, 2369, 1572, 1570, 2366, 2371, 2371,
2442      2371, 1569, 1568, 3333, 1565, 1564, 3333, 2372, 2372, 2372,
2443      2370, 1562, 2248, 2248, 2248, 1560, 2249, 1559, 2361, 2250,
2444      1557, 3333, 3333, 3333, 2373, 2252, 2252, 2252, 2256, 2256,
2445      2256, 1556, 2258, 2258, 2258, 1552, 2259, 2367, 3333, 2260,
2446      2368, 1551, 1550, 2253, 1549, 1543, 2257, 2378, 2378, 2378,
2447      2263, 2263, 2263, 1541, 2264, 1539, 1538, 2265, 1395, 1395,
2448      1395, 1537, 2271, 2271, 2271, 2379, 2272, 1536, 1529, 2273,
2449
2450      1413, 1413, 1413, 2285, 2285, 2285, 1397, 2298, 2298, 2298,
2451      2299, 2299, 2299, 2412, 2412, 2412, 1527, 2374, 1415, 1526,
2452      1525, 1094, 2303, 2303, 2303, 2305, 2305, 2305, 2308, 2308,
2453      2308, 2418, 2418, 2418, 2381, 2315, 2315, 2315, 2317, 2317,
2454      2317, 2422, 2422, 2422, 1522, 2319, 2319, 2319, 2424, 2424,
2455      2424, 1521, 2425, 2316, 1516, 2426, 2427, 2427, 2427, 2423,
2456      1515, 2394, 2320, 1514, 1513, 2395, 1181, 1181, 1181, 1189,
2457      1189, 1189, 1512, 1511, 2428, 2324, 2324, 2324, 2330, 2330,
2458      2330, 2435, 2435, 2435, 1183, 2436, 1510, 1191, 2437, 1509,
2459      2334, 2334, 2334, 2325, 2335, 2331, 1503, 2336, 2337, 2337,
2460
2461      2337, 2448, 2448, 2448, 1262, 1262, 1262, 2343, 2343, 2343,
2462      2345, 2345, 2345, 2451, 2451, 2451, 2338, 2452, 2449, 1502,
2463      2453, 1501, 1264, 1499, 1498, 2344, 1497, 2346, 1496, 1481,
2464      2429, 2457, 2457, 2457, 1480, 1475, 2430, 2351, 2351, 2351,
2465      2459, 2459, 2459, 1474, 2460, 1472, 1471, 2461, 2458, 2462,
2466      2462, 2462, 1469, 1465, 2352, 1294, 1294, 1294, 2355, 2355,
2467      2355, 2450, 2465, 2465, 2465, 1464, 2466, 2463, 1460, 2467,
2468      2470, 2470, 2470, 1296, 1459, 2356, 2360, 2360, 2360, 2472,
2469      2472, 2472, 2362, 2362, 2362, 1458, 2363, 2471, 1457, 2364,
2470      2365, 2365, 2365, 1456, 2474, 2474, 2474, 2473, 2475, 1455,
2471
2472      1454, 2476, 2477, 2477, 2477, 1453, 1452, 2366, 2479, 2479,
2473      2479, 2369, 2369, 2369, 1451, 1450, 2464, 1449, 1448, 2478,
2474      2371, 2371, 2371, 1447, 1445, 2480, 2372, 2372, 2372, 2370,
2475      2481, 2481, 2481, 1444, 2482, 1443, 1442, 2483, 3333, 3333,
2476      3333, 1439, 1438, 2373, 2378, 2378, 2378, 1395, 1395, 1395,
2477      1413, 1413, 1413, 1437, 1436, 3333, 2412, 2412, 2412, 2520,
2478      2520, 2520, 2379, 1435, 1434, 1397, 1433, 1432, 1415, 2418,
2479      2418, 2418, 2527, 2527, 2527, 1431, 2422, 2422, 2422, 2424,
2480      2424, 2424, 1430, 2425, 1429, 1428, 2426, 1427, 1426, 2528,
2481      2427, 2427, 2427, 2484, 2423, 1423, 1181, 1181, 1181, 1189,
2482
2483      1189, 1189, 2533, 2533, 2533, 2435, 2435, 2435, 2428, 2436,
2484      2502, 1422, 2437, 2489, 1183, 1421, 1420, 1191, 1419, 2534,
2485      2547, 2547, 2547, 2448, 2448, 2448, 2549, 2549, 2549, 1418,
2486      2550, 1094, 1412, 2551, 2552, 2552, 2552, 2548, 1411, 1410,
2487      2449, 2451, 2451, 2451, 1405, 2452, 1404, 1400, 2453, 2457,
2488      2457, 2457, 2553, 1394, 2557, 2557, 2557, 2529, 2558, 1393,
2489      1389, 2559, 2462, 2462, 2462, 2530, 2458, 2459, 2459, 2459,
2490      1384, 2460, 1380, 1379, 2461, 1294, 1294, 1294, 1371, 1357,
2491      2463, 2465, 2465, 2465, 1356, 2466, 1355, 1352, 2467, 2568,
2492      2568, 2568, 1346, 1296, 2470, 2470, 2470, 2570, 2570, 2570,
2493
2494      1341, 2571, 1337, 1332, 2572, 1331, 2569, 2472, 2472, 2472,
2495      1330, 2471, 2474, 2474, 2474, 1329, 2475, 1328, 1327, 2476,
2496      1326, 2477, 2477, 2477, 1325, 2473, 2573, 2573, 2573, 1320,
2497      2574, 1319, 1314, 2575, 2479, 2479, 2479, 2566, 2478, 2576,
2498      2576, 2576, 1313, 2577, 1307, 1304, 2578, 1299, 2481, 2481,
2499      2481, 2480, 2482, 1298, 1293, 2483, 3333, 3333, 3333, 2586,
2500      2586, 2586, 2588, 2588, 2588, 1395, 1395, 1395, 2593, 2593,
2501      2593, 1282, 1277, 3333, 1276, 1275, 2587, 1271, 1266, 2589,
2502      2594, 2594, 2594, 1397, 1413, 1413, 1413, 2623, 2623, 2623,
2503      2520, 2520, 2520, 2627, 2627, 2627, 1255, 2595, 2527, 2527,
2504
2505      2527, 1249, 1415, 2630, 2630, 2630, 1248, 2631, 1247, 1243,
2506      2632, 1181, 1181, 1181, 1242, 2528, 1241, 2585, 1229, 1189,
2507      1189, 1189, 2636, 2636, 2636, 2533, 2533, 2533, 1228, 1183,
2508      1227, 2638, 2638, 2638, 1226, 2639, 2592, 1191, 2640, 2637,
2509      1225, 1224, 2534, 1223, 2606, 2641, 2641, 2641, 2547, 2547,
2510      2547, 2654, 2654, 2654, 1222, 2655, 1221, 1215, 2656, 2549,
2511      2549, 2549, 2642, 2550, 1170, 2548, 2551, 2552, 2552, 2552,
2512      2634, 2658, 2658, 2658, 1166, 2557, 2557, 2557, 2633, 2558,
2513      1161, 1160, 2559, 1148, 1147, 2553, 1146, 1145, 2659, 2667,
2514      2667, 2667, 2568, 2568, 2568, 2670, 2670, 2670, 1144, 2671,
2515
2516      1143, 1142, 2672, 1141, 2570, 2570, 2570, 2668, 2571, 2569,
2517      1140, 2572, 2573, 2573, 2573, 1139, 2574, 1138, 1137, 2575,
2518      2576, 2576, 2576, 1136, 2577, 1133, 1132, 2578, 3333, 3333,
2519      3333, 2586, 2586, 2586, 2686, 2686, 2686, 1131, 2687, 1130,
2520      1129, 2688, 2588, 2588, 2588, 3333, 1128, 1127, 2587, 2689,
2521      2689, 2689, 1126, 2690, 1123, 1122, 2691, 1121, 1120, 2589,
2522      2692, 2692, 2692, 2694, 2694, 2694, 1395, 1395, 1395, 2593,
2523      2593, 2593, 2594, 2594, 2594, 1119, 1118, 2693, 1117, 1116,
2524      2695, 1413, 1413, 1413, 1397, 2711, 2711, 2711, 2685, 2595,
2525      2697, 2697, 2697, 1115, 2698, 1108, 1104, 2699, 1103, 1415,
2526
2527      1102, 1101, 2712, 1622, 2623, 2623, 2623, 2726, 2726, 2726,
2528      2627, 2627, 2627, 2729, 2729, 2729, 2630, 2630, 2630, 1100,
2529      2631, 1097, 1095, 2632, 1181, 1181, 1181, 1094, 2696, 2736,
2530      2736, 2736, 2708, 2636, 2636, 2636, 2739, 2739, 2739, 1092,
2531      2740, 1090, 1183, 2741, 2638, 2638, 2638, 2737, 2639, 1089,
2532      2637, 2640, 2641, 2641, 2641, 2742, 2742, 2742, 1088, 2743,
2533      1087, 1086, 2744, 2654, 2654, 2654, 1083, 2655, 1080, 2642,
2534      2656, 2658, 2658, 2658, 2757, 2757, 2757, 1079, 2758, 1078,
2535      1076, 2759, 2667, 2667, 2667, 2670, 2670, 2670, 2659, 2671,
2536      2735, 1075, 2672, 2780, 2780, 2780, 1072, 2686, 2686, 2686,
2537
2538      2668, 2687, 1071, 1069, 2688, 2689, 2689, 2689, 1066, 2690,
2539      2781, 1065, 2691, 2692, 2692, 2692, 2786, 2786, 2786, 1064,
2540      2787, 1060, 1059, 2788, 2694, 2694, 2694, 2789, 2789, 2789,
2541      2693, 2790, 1057, 1056, 2791, 1395, 1395, 1395, 2697, 2697,
2542      2697, 2695, 2698, 1055, 1054, 2699, 1413, 1413, 1413, 2803,
2543      2803, 2803, 1052, 1397, 2711, 2711, 2711, 1051, 2805, 2805,
2544      2805, 1050, 2806, 1049, 1415, 2807, 2804, 1622, 2816, 2816,
2545      2816, 2712, 1622, 2726, 2726, 2726, 1622, 2817, 2817, 2817,
2546      2818, 2818, 2818, 2729, 2729, 2729, 2792, 2819, 2819, 2819,
2547      1181, 1181, 1181, 1048, 1047, 2801, 2736, 2736, 2736, 2739,
2548
2549      2739, 2739, 1044, 2740, 1043, 1041, 2741, 1038, 1183, 2742,
2550      2742, 2742, 1037, 2743, 2737, 1035, 2744, 2826, 2826, 2826,
2551      2838, 2838, 2838, 2757, 2757, 2757, 1034, 2758, 1033, 1032,
2552      2759, 2840, 2840, 2840, 2827, 1031, 1027, 2839, 2780, 2780,
2553      2780, 2824, 2859, 2859, 2859, 1025, 2860, 1024, 2841, 2861,
2554      2786, 2786, 2786, 1023, 2787, 2781, 1021, 2788, 2789, 2789,
2555      2789, 1020, 2790, 1019, 1016, 2791, 2866, 2866, 2866, 1413,
2556      1413, 1413, 2803, 2803, 2803, 2876, 2876, 2876, 1015, 2877,
2557      1014, 1013, 2878, 1011, 2867, 1010, 1009, 1415, 1007, 2804,
2558      1622, 1004, 1000, 1622, 2805, 2805, 2805,  999, 2806,  997,
2559
2560       996, 2807, 2816, 2816, 2816, 2817, 2817, 2817, 2818, 2818,
2561      2818,  995, 1622, 2819, 2819, 2819, 2891, 2891, 2891, 2894,
2562      2894, 2894,  992, 2895,  991,  990, 2896,  988, 2826, 2826,
2563      2826, 2897, 2897, 2897, 2892, 2874, 1620, 1620, 1620, 1620,
2564      1620, 1620, 1620, 1620, 1620, 2827,  987, 1620, 2898, 2838,
2565      2838, 2838, 1620, 1620, 1620, 1622, 1620, 2906, 2906, 2906,
2566       981, 2907,  980,  979, 2908,  977, 2839, 2909, 2909, 2909,
2567       976, 2910,  975,  970, 2911, 2840, 2840, 2840, 2866, 2866,
2568      2866, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
2569      1620, 1620, 2841,  969, 1620,  965, 2867,  963,  962, 1620,
2570
2571      1620, 1620, 1622, 1620, 2859, 2859, 2859,  961, 2860,  960,
2572       959, 2861, 2939, 2939, 2939, 2876, 2876, 2876,  958, 2877,
2573       957,  956, 2878,  955,  954, 2891, 2891, 2891, 1620, 1620,
2574      2940,  951,  948, 1622, 1620, 1620, 1620, 1620, 1620, 2947,
2575      1620, 1620, 1620, 2892,  947, 1620, 2897, 2897, 2897,  945,
2576      1620, 1620, 1620, 1622, 1620, 2894, 2894, 2894,  944, 2895,
2577       943,  942, 2896, 2898, 2967, 2967, 2967,  941, 2968,  936,
2578       934, 2969, 2939, 2939, 2939, 2996, 2996, 2996,  933, 1620,
2579      1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 2947,
2580      2940,  932, 1620, 1622, 1623,  930,  929, 1620, 1620, 1620,
2581
2582      1622, 1620, 2906, 2906, 2906,  928, 2907,  927,  925, 2908,
2583      2909, 2909, 2909,  922, 2910,  921,  919, 2911, 3007, 3007,
2584      3007, 2967, 2967, 2967,  918, 2968, 1620, 1620, 2969, 3019,
2585      3019, 3019, 3027, 3027, 3027, 3008, 3035, 3035, 3035, 2996,
2586      2996, 2996, 3007, 3007, 3007,  917, 3020,  915,  914, 3028,
2587       913, 3045, 3045, 3045, 1094, 3046,  912, 1622, 3047, 3008,
2588      3019, 3019, 3019, 3058, 3058, 3058,  909, 3059,  908,  907,
2589      3060, 3027, 3027, 3027, 3067, 3067, 3067, 3020, 3068,  904,
2590       903, 3069, 3035, 3035, 3035, 3045, 3045, 3045, 3028, 3046,
2591      1807,  902, 3047,  897, 3058, 3058, 3058,  895, 3059,  894,
2592
2593      1094, 3060, 3067, 3067, 3067,  888, 3068,  887,  886, 3069,
2594      3211, 3211, 3211, 3211, 3211, 3211,  885, 3222,  879, 3076,
2595      3223, 3331, 3331, 3331, 3331, 3331, 3331,  878, 1094,  877,
2596       875, 1094,  872,  871,  870,  869,  864,  861,  863, 3332,
2597       858,  857, 3332,  240,  240,  240,  240,  240,  240,  240,
2598       240,  240,  241,  241,  241,  241,  241,  241,  241,  241,
2599       241,  246,  246,  246,  246,  246,  246,  246,  246,  246,
2600       249,  249,  249,  249,  249,  249,  249,  249,  249,  252,
2601       252,  252,  252,  252,  252,  252,  252,  252,  255,  255,
2602       255,  255,  255,  255,  255,  255,  255,  262,  262,  262,
2603
2604       262,  262,  262,  262,  262,  262,  269,  269,  269,  269,
2605       269,  269,  269,  269,  269,  274,  274,  274,  274,  274,
2606       274,  274,  274,  274,  286,  286,  286,  286,  286,  286,
2607       286,  286,  286,  292,  292,  292,  292,  292,  292,  292,
2608       292,  292,  300,  300,  300,  300,  300,  300,  300,  300,
2609       300,  304,  304,  304,  304,  304,  304,  304,  304,  304,
2610       310,  310,  310,  310,  310,  310,  310,  310,  310,  316,
2611       316,  316,  316,  316,  316,  316,  316,  316,  322,  322,
2612       322,  322,  322,  322,  322,  322,  322,  328,  328,  328,
2613       328,  328,  328,  328,  328,  328,  335,  335,  335,  335,
2614
2615       335,  335,  335,  335,  335,  340,  340,  340,  340,  340,
2616       340,  340,  340,  340,  347,  347,  347,  347,  347,  347,
2617       347,  347,  347,  356,  356,  356,  356,  356,  356,  356,
2618       356,  356,  373,  373,  373,  373,  373,  373,  373,  373,
2619       373,  380,  380,  380,  380,  380,  380,  380,  380,  380,
2620       384,  384,  384,  384,  384,  384,  384,  384,  384,  391,
2621       391,  391,  391,  391,  391,  391,  391,  391,  399,  399,
2622       399,  399,  399,  399,  399,  399,  399,  407,  407,  407,
2623       407,  407,  407,  407,  407,  407,  413,  413,  413,  413,
2624       413,  413,  413,  413,  413,  419,  419,  419,  419,  419,
2625
2626       419,  419,  419,  419,  423,  423,  423,  423,  423,  423,
2627       423,  423,  423,  431,  431,  431,  431,  431,  431,  431,
2628       431,  431,  438,  438,  438,  438,  438,  438,  438,  438,
2629       438,  445,  445,  445,  445,  445,  445,  445,  445,  445,
2630       450,  450,  450,  450,  450,  450,  450,  450,  450,  456,
2631       456,  456,  456,  456,  456,  456,  456,  456,  461,  461,
2632       461,  461,  461,  461,  461,  461,  461,  467,  467,  467,
2633       467,  467,  467,  467,  467,  467,  472,  472,  472,  472,
2634       472,  472,  472,  472,  472,  478,  478,  478,  478,  478,
2635       478,  478,  478,  478,  487,  487,  487,  487,  487,  487,
2636
2637       487,  487,  487,  494,  494,  494,  494,  494,  494,  494,
2638       494,  494,  498,  498,  498,  498,  498,  498,  498,  498,
2639       498,  509,  509,  509,  509,  509,  509,  509,  509,  509,
2640       517,  517,  517,  517,  517,  517,  517,  517,  517,  525,
2641       525,  525,  525,  525,  525,  525,  525,  525,  530,  530,
2642       530,  530,  530,  530,  530,  530,  530,  536,  536,  536,
2643       536,  536,  536,  536,  536,  536,  544,  544,  544,  544,
2644       544,  544,  544,  544,  544,  550,  550,  550,  550,  550,
2645       550,  550,  550,  550,  555,  555,  555,  555,  555,  555,
2646       555,  555,  555,  562,  562,  562,  562,  562,  562,  562,
2647
2648       562,  562,  567,  567,  567,  567,  567,  567,  567,  567,
2649       567,  573,  573,  573,  573,  573,  573,  573,  573,  573,
2650       580,  580,  580,  580,  580,  580,  580,  580,  580,  587,
2651       587,  587,  587,  587,  587,  587,  587,  587,  594,  594,
2652       594,  594,  594,  594,  594,  594,  594,  602,  602,  602,
2653       602,  602,  602,  602,  602,  602,  255,  255,  255,  255,
2654       255,  255,  255,  255,  255,  613,  613,  613,  613,  613,
2655       613,  613,  613,  613,  619,  619,  619,  619,  619,  619,
2656       619,  619,  619,  638,  638,  638,  856,  854,  853,  638,
2657       672,  672,  672,  850,  849,  848,  672,  680,  680,  680,
2658
2659       846,  845,  843,  680,  684,  684,  684,  842,  841,  840,
2660       684,  690,  690,  690,  838,  837,  836,  690,  696,  696,
2661       696,  835,  834,  833,  696,  701,  701,  701,  831,  829,
2662       828,  701,  711,  711,  711,  826,  825,  822,  711,  728,
2663       728,  728,  820,  816,  812,  728,  732,  732,  732,  811,
2664       809,  807,  732,  742,  742,  742,  806,  804,  803,  742,
2665       748,  748,  748,  801,  800,  799,  748,  753,  753,  753,
2666       798,  797,  795,  753,  761,  761,  761,  794,  788,  786,
2667       761,  766,  766,  766,  781,  780,  779,  766,  771,  771,
2668       771,  778,  777,  775,  771,  776,  776,  776,  773,  772,
2669
2670       770,  776,  787,  787,  787,  768,  767,  765,  787,  796,
2671       796,  796,  763,  762,  760,  796,  805,  805,  805,  759,
2672       756,  755,  805,  810,  810,  810,  754,  752, 3333,  810,
2673       821,  821,  821,  749,  747,  745,  821,  827,  827,  827,
2674       744,  743,  741,  827,  832,  832,  832,  740,  736,  735,
2675       832,  839,  839,  839,  734,  733,  731,  839,  847,  847,
2676       847,  730,  729,  727,  847,  855,  855,  855,  726,  725,
2677       719,  855,  860,  860,  860,  860,  860,  860,  860,  715,
2678       860,  638,  638,  638,  714,  710,  706,  638,  876,  705,
2679       704,  703,  876,  672,  672,  672,  702,  700,  699,  672,
2680
2681       916,  698,  697,  695,  916,  680,  680,  680,  694,  693,
2682       692,  680,  920,  691,  689,  687,  920,  684,  684,  684,
2683       686,  685,  683,  684,  926,  681,  679,  660,  926,  690,
2684       690,  690, 3333,  674,  673,  690,  931,  671, 3333,  654,
2685       931,  696,  696,  696,  640,  639,  637,  696,  935,  636,
2686       630,  629,  935,  701,  701,  701,  630,  629,  628,  701,
2687       946,  627, 3333, 3333,  946,  711,  711,  711, 3333, 3333,
2688      3333,  711,  964, 3333, 3333, 3333,  964,  728,  728,  728,
2689      3333, 3333, 3333,  728,  968, 3333, 3333, 3333,  968,  732,
2690       732,  732, 3333, 3333, 3333,  732,  978, 3333, 3333, 3333,
2691
2692       978,  742,  742,  742, 3333, 3333, 3333,  742,  986, 3333,
2693      3333, 3333,  986,  748,  748,  748, 3333, 3333, 3333,  748,
2694       989, 3333, 3333, 3333,  989,  753,  753,  753, 3333, 3333,
2695      3333,  753,  998, 3333, 3333, 3333,  998,  761,  761,  761,
2696      3333, 3333, 3333,  761, 1003, 3333, 3333, 3333, 1003,  766,
2697       766,  766, 3333, 3333, 3333,  766, 1008, 3333, 3333, 3333,
2698      1008,  771,  771,  771, 3333, 3333, 3333,  771, 1012, 3333,
2699      3333, 3333, 1012,  776,  776,  776, 3333, 3333, 3333,  776,
2700      1022, 3333, 3333, 3333, 1022,  787,  787,  787, 3333, 3333,
2701      3333,  787, 1026, 3333, 3333, 3333, 1026,  796,  796,  796,
2702
2703      3333, 3333, 3333,  796, 1036, 3333, 3333, 3333, 1036,  805,
2704       805,  805, 3333, 3333, 3333,  805, 1042, 3333, 3333, 3333,
2705      1042,  810,  810,  810, 3333, 3333, 3333,  810, 1053, 3333,
2706      3333, 3333, 1053,  821,  821,  821, 3333, 3333, 3333,  821,
2707      1058, 3333, 3333, 3333, 1058,  827,  827,  827, 3333, 3333,
2708      3333,  827, 1063, 3333, 3333, 3333, 1063,  832,  832,  832,
2709      3333, 3333, 3333,  832, 1070, 3333, 3333, 3333, 1070,  839,
2710       839,  839, 3333, 3333, 3333,  839, 1077, 3333, 3333, 3333,
2711      1077,  847,  847,  847, 3333, 3333, 3333,  847, 1085, 3333,
2712      3333, 3333, 1085,  855,  855,  855, 3333, 3333, 3333,  855,
2713
2714      1091, 3333, 3333, 3333, 1091, 1093, 1093, 1093, 1093, 1093,
2715      1093, 1093, 1093, 1093, 1099, 3333, 3333, 3333, 3333, 1099,
2716       638,  638,  638, 3333, 3333, 3333,  638, 1110, 1110, 1110,
2717      1110, 3333, 3333, 1110, 1110,  672,  672,  672,  672, 3333,
2718       672, 3333,  672, 1157, 1157, 1157, 1157, 3333, 3333, 1157,
2719      1157,  680,  680,  680, 3333, 3333, 3333,  680, 1163, 1163,
2720      1163, 1163, 3333, 3333, 1163, 1163,  684,  684,  684, 3333,
2721      3333, 3333,  684, 1172, 1172, 1172, 1172, 3333, 3333, 1172,
2722      1172,  690,  690,  690,  690, 3333,  690, 3333,  690, 1182,
2723      1182, 1182, 1182, 3333, 3333, 1182, 1182,  696,  696,  696,
2724
2725       696, 3333,  696, 3333,  696, 1190, 1190, 1190, 1190, 3333,
2726      3333, 1190, 1190,  701,  701,  701,  701, 3333,  701, 3333,
2727       701, 1206, 1206, 1206, 1206, 3333, 3333, 1206, 1206,  711,
2728       711,  711, 3333, 3333, 3333,  711, 1231, 1231, 1231, 1231,
2729      3333, 3333, 1231, 1231, 1238, 1238, 1238, 1238, 3333, 3333,
2730      1238, 1238,  732,  732,  732, 3333, 3333, 3333,  732, 1251,
2731      1251, 1251, 1251, 3333, 3333, 1251, 1251,  742,  742,  742,
2732      3333, 3333, 3333,  742, 1263, 1263, 1263, 1263, 3333, 3333,
2733      1263, 1263,  748,  748,  748, 3333, 3333, 3333,  748, 1268,
2734      1268, 1268, 1268, 3333, 3333, 1268, 1268,  753,  753,  753,
2735
2736      3333, 3333, 3333,  753, 1279, 1279, 1279, 1279, 3333, 3333,
2737      1279, 1279,  761,  761,  761, 3333, 3333, 3333,  761, 1287,
2738      1287, 1287, 1287, 3333, 3333, 1287, 1287,  766,  766,  766,
2739      3333, 3333, 3333,  766, 1295, 1295, 1295, 1295, 3333, 3333,
2740      1295, 1295,  771,  771,  771, 3333, 3333, 3333,  771, 1301,
2741      1301, 1301, 1301, 3333, 3333, 1301, 1301,  776,  776,  776,
2742      3333, 3333, 3333,  776, 1316, 1316, 1316, 1316, 3333, 3333,
2743      1316, 1316,  787,  787,  787, 3333, 3333, 3333,  787, 1322,
2744      1322, 1322, 1322, 3333, 3333, 1322, 1322,  796,  796,  796,
2745      3333, 3333, 3333,  796, 1334, 1334, 1334, 1334, 3333, 3333,
2746
2747      1334, 1334,  805,  805,  805, 3333, 3333, 3333,  805, 1343,
2748      1343, 1343, 1343, 3333, 3333, 1343, 1343,  810,  810,  810,
2749      3333, 3333, 3333,  810, 1359, 1359, 1359, 1359, 3333, 3333,
2750      1359, 1359,  821,  821,  821,  821, 3333,  821, 3333,  821,
2751      1368, 1368, 1368, 1368, 3333, 3333, 1368, 1368,  827,  827,
2752       827, 3333, 3333, 3333,  827, 1376, 1376, 1376, 1376, 3333,
2753      3333, 1376, 1376,  832,  832,  832, 3333, 3333, 3333,  832,
2754      1386, 1386, 1386, 1386, 3333, 3333, 1386, 1386,  839,  839,
2755       839, 3333, 3333, 3333,  839, 1396, 1396, 1396, 1396, 3333,
2756      3333, 1396, 1396,  847,  847,  847, 3333, 3333, 3333,  847,
2757
2758      1407, 1407, 1407, 1407, 3333, 3333, 1407, 1407,  855,  855,
2759       855, 3333, 3333, 3333,  855, 1414, 1414, 1414, 1414, 3333,
2760      3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2761      1093, 1093, 1099, 3333, 1099, 3333, 3333, 1099,  638,  638,
2762       638, 3333, 3333, 3333,  638, 1110, 1110, 1110, 1110, 3333,
2763      3333, 1110, 1110,  672,  672,  672, 3333, 3333, 3333,  672,
2764      1157, 1157, 1157, 1157, 3333, 3333, 1157, 1157,  680,  680,
2765       680, 3333, 3333, 3333,  680, 1163, 1163, 1163, 1163, 3333,
2766      3333, 1163, 1163,  684,  684,  684, 3333, 3333, 3333,  684,
2767      1172, 1172, 1172, 1172, 3333, 3333, 1172, 1172,  690,  690,
2768
2769       690, 3333, 3333, 3333,  690, 1182, 1182, 1182, 1182, 3333,
2770      3333, 1182, 1182, 1190, 1190, 1190, 1190, 3333, 3333, 1190,
2771      1190,  701,  701,  701, 3333, 3333, 3333,  701, 1206, 1206,
2772      1206, 1206, 3333, 3333, 1206, 1206,  711,  711,  711, 3333,
2773      3333, 3333,  711, 1231, 1231, 1231, 1231, 3333, 3333, 1231,
2774      1231, 1238, 1238, 1238, 1238, 3333, 3333, 1238, 1238,  732,
2775       732,  732, 3333, 3333, 3333,  732, 1251, 1251, 1251, 1251,
2776      3333, 3333, 1251, 1251,  742,  742,  742,  742, 3333,  742,
2777      3333,  742, 1263, 1263, 1263, 1263, 3333, 3333, 1263, 1263,
2778       748,  748,  748,  748, 3333,  748, 3333,  748, 1268, 1268,
2779
2780      1268, 1268, 3333, 3333, 1268, 1268,  753,  753,  753, 3333,
2781      3333, 3333,  753, 1279, 1279, 1279, 1279, 3333, 3333, 1279,
2782      1279,  761,  761,  761, 3333, 3333, 3333,  761, 1287, 1287,
2783      1287, 1287, 3333, 3333, 1287, 1287,  766,  766,  766, 3333,
2784      3333, 3333,  766, 1295, 1295, 1295, 1295, 3333, 3333, 1295,
2785      1295,  771,  771,  771,  771, 3333,  771, 3333,  771, 1301,
2786      1301, 1301, 1301, 3333, 3333, 1301, 1301,  776,  776,  776,
2787      3333, 3333, 3333,  776, 1316, 1316, 1316, 1316, 3333, 3333,
2788      1316, 1316,  787,  787,  787, 3333, 3333, 3333,  787, 1322,
2789      1322, 1322, 1322, 3333, 3333, 1322, 1322,  796,  796,  796,
2790
2791      3333, 3333, 3333,  796, 1334, 1334, 1334, 1334, 3333, 3333,
2792      1334, 1334,  805,  805,  805, 3333, 3333, 3333,  805, 1343,
2793      1343, 1343, 1343, 3333, 3333, 1343, 1343,  810,  810,  810,
2794      3333, 3333, 3333,  810, 1359, 1359, 1359, 1359, 3333, 3333,
2795      1359, 1359,  821,  821,  821, 3333, 3333, 3333,  821, 1368,
2796      1368, 1368, 1368, 3333, 3333, 1368, 1368,  827,  827,  827,
2797      3333, 3333, 3333,  827, 1376, 1376, 1376, 1376, 3333, 3333,
2798      1376, 1376,  832,  832,  832, 3333, 3333, 3333,  832, 1386,
2799      1386, 1386, 1386, 3333, 3333, 1386, 1386,  839,  839,  839,
2800      3333, 3333, 3333,  839, 1396, 1396, 1396, 1396, 3333, 3333,
2801
2802      1396, 1396,  847,  847,  847,  847, 3333,  847, 3333,  847,
2803      1407, 1407, 1407, 1407, 3333, 3333, 1407, 1407,  855,  855,
2804       855, 3333, 3333, 3333,  855, 1414, 1414, 1414, 1414, 3333,
2805      3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2806      1093, 1093, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
2807      1620,  638,  638,  638, 3333, 3333, 3333,  638,  672,  672,
2808       672, 3333, 3333, 3333,  672, 1157, 1157, 1157, 1157, 3333,
2809      3333, 1157, 1157,  680,  680,  680,  680, 3333,  680, 3333,
2810       680, 1163, 1163, 1163, 1163, 3333, 3333, 1163, 1163,  684,
2811       684,  684, 3333, 3333, 3333,  684, 1172, 1172, 1172, 1172,
2812
2813      3333, 3333, 1172, 1172,  690,  690,  690, 3333, 3333, 3333,
2814       690, 1182, 1182, 1182, 1182, 3333, 3333, 1182, 1182, 1190,
2815      1190, 1190, 1190, 3333, 3333, 1190, 1190,  701,  701,  701,
2816      3333, 3333, 3333,  701, 1206, 1206, 1206, 1206, 3333, 3333,
2817      1206, 1206,  711,  711,  711,  711, 3333,  711, 3333,  711,
2818      1231, 1231, 1231, 1231, 3333, 3333, 1231, 1231, 1238, 1238,
2819      1238, 1238, 3333, 3333, 1238, 1238,  732,  732,  732, 3333,
2820      3333, 3333,  732, 1251, 1251, 1251, 1251, 3333, 3333, 1251,
2821      1251, 1263, 1263, 1263, 1263, 3333, 3333, 1263, 1263, 1268,
2822      1268, 1268, 1268, 3333, 3333, 1268, 1268,  753,  753,  753,
2823
2824      3333, 3333, 3333,  753, 1279, 1279, 1279, 1279, 3333, 3333,
2825      1279, 1279,  761,  761,  761, 3333, 3333, 3333,  761, 1287,
2826      1287, 1287, 1287, 3333, 3333, 1287, 1287,  766,  766,  766,
2827       766, 3333,  766, 3333,  766, 1295, 1295, 1295, 1295, 3333,
2828      3333, 1295, 1295,  771,  771,  771, 3333, 3333, 3333,  771,
2829      1301, 1301, 1301, 1301, 3333, 3333, 1301, 1301,  776,  776,
2830       776, 3333, 3333, 3333,  776, 1316, 1316, 1316, 1316, 3333,
2831      3333, 1316, 1316,  787,  787,  787, 3333, 3333, 3333,  787,
2832      1322, 1322, 1322, 1322, 3333, 3333, 1322, 1322,  796,  796,
2833       796, 3333, 3333, 3333,  796, 1334, 1334, 1334, 1334, 3333,
2834
2835      3333, 1334, 1334,  805,  805,  805,  805, 3333,  805, 3333,
2836       805, 1343, 1343, 1343, 1343, 3333, 3333, 1343, 1343,  810,
2837       810,  810, 3333, 3333, 3333,  810, 1359, 1359, 1359, 1359,
2838      3333, 3333, 1359, 1359,  821,  821,  821, 3333, 3333, 3333,
2839       821, 1368, 1368, 1368, 1368, 3333, 3333, 1368, 1368,  827,
2840       827,  827, 3333, 3333, 3333,  827, 1376, 1376, 1376, 1376,
2841      3333, 3333, 1376, 1376,  832,  832,  832, 3333, 3333, 3333,
2842       832, 1386, 1386, 1386, 1386, 3333, 3333, 1386, 1386,  839,
2843       839,  839, 3333, 3333, 3333,  839, 1396, 1396, 1396, 1396,
2844      3333, 3333, 1396, 1396,  847,  847,  847, 3333, 3333, 3333,
2845
2846       847, 1407, 1407, 1407, 1407, 3333, 3333, 1407, 1407,  855,
2847       855,  855, 3333, 3333, 3333,  855, 1414, 1414, 1414, 1414,
2848      3333, 3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093, 1093,
2849      1093, 1093, 1093, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
2850      1620, 1620,  638,  638,  638, 3333, 3333, 3333,  638,  672,
2851       672,  672,  672, 3333,  672, 3333,  672, 1157, 1157, 1157,
2852      1157, 3333, 3333, 1157, 1157, 1163, 1163, 1163, 1163, 3333,
2853      3333, 1163, 1163,  684,  684,  684, 3333, 3333, 3333,  684,
2854      1172, 1172, 1172, 1172, 3333, 3333, 1172, 1172,  690,  690,
2855       690,  690, 3333,  690, 3333,  690, 1182, 1182, 1182, 1182,
2856
2857      3333, 3333, 1182, 1182, 1190, 1190, 1190, 1190, 3333, 3333,
2858      1190, 1190,  701,  701,  701,  701, 3333,  701, 3333,  701,
2859      1206, 1206, 1206, 1206, 3333, 3333, 1206, 1206,  711,  711,
2860       711,  711, 3333,  711, 3333,  711, 1231, 1231, 1231, 1231,
2861      3333, 3333, 1231, 1231, 1238, 1238, 1238, 1238, 3333, 3333,
2862      1238, 1238,  732,  732,  732, 3333, 3333, 3333,  732, 1251,
2863      1251, 1251, 1251, 3333, 3333, 1251, 1251, 1263, 1263, 1263,
2864      1263, 3333, 3333, 1263, 1263, 1268, 1268, 1268, 1268, 3333,
2865      3333, 1268, 1268,  753,  753,  753, 3333, 3333, 3333,  753,
2866      1279, 1279, 1279, 1279, 3333, 3333, 1279, 1279,  761,  761,
2867
2868       761, 3333, 3333, 3333,  761, 1287, 1287, 1287, 1287, 3333,
2869      3333, 1287, 1287, 1295, 1295, 1295, 1295, 3333, 3333, 1295,
2870      1295,  771,  771,  771, 3333, 3333, 3333,  771, 1301, 1301,
2871      1301, 1301, 3333, 3333, 1301, 1301,  776,  776,  776, 3333,
2872      3333, 3333,  776, 1316, 1316, 1316, 1316, 3333, 3333, 1316,
2873      1316,  787,  787,  787, 3333, 3333, 3333,  787, 1322, 1322,
2874      1322, 1322, 3333, 3333, 1322, 1322,  796,  796,  796, 3333,
2875      3333, 3333,  796, 1334, 1334, 1334, 1334, 3333, 3333, 1334,
2876      1334, 1343, 1343, 1343, 1343, 3333, 3333, 1343, 1343,  810,
2877       810,  810, 3333, 3333, 3333,  810, 1359, 1359, 1359, 1359,
2878
2879      3333, 3333, 1359, 1359,  821,  821,  821, 3333, 3333, 3333,
2880       821, 1368, 1368, 1368, 1368, 3333, 3333, 1368, 1368,  827,
2881       827,  827, 3333, 3333, 3333,  827, 1376, 1376, 1376, 1376,
2882      3333, 3333, 1376, 1376,  832,  832,  832,  832, 3333,  832,
2883      3333,  832, 1386, 1386, 1386, 1386, 3333, 3333, 1386, 1386,
2884       839,  839,  839, 3333, 3333, 3333,  839, 1396, 1396, 1396,
2885      1396, 3333, 3333, 1396, 1396,  847,  847,  847, 3333, 3333,
2886      3333,  847, 1407, 1407, 1407, 1407, 3333, 3333, 1407, 1407,
2887       855,  855,  855, 3333, 3333, 3333,  855, 1414, 1414, 1414,
2888      1414, 3333, 3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093,
2889
2890      1093, 1093, 1093, 1093, 1620, 1620, 1620, 1620, 1620, 1620,
2891      1620, 1620, 1620,  638,  638,  638,  638, 3333,  638, 3333,
2892       638,  672,  672,  672, 3333, 3333, 3333,  672, 1157, 1157,
2893      1157, 1157, 3333, 3333, 1157, 1157, 1163, 1163, 1163, 1163,
2894      3333, 3333, 1163, 1163,  684,  684,  684, 3333, 3333, 3333,
2895       684, 1172, 1172, 1172, 1172, 3333, 3333, 1172, 1172, 1182,
2896      1182, 1182, 1182, 3333, 3333, 1182, 1182, 1190, 1190, 1190,
2897      1190, 3333, 3333, 1190, 1190,  701,  701,  701,  701, 3333,
2898       701, 3333,  701, 1206, 1206, 1206, 1206, 3333, 3333, 1206,
2899      1206,  711,  711,  711, 3333, 3333, 3333,  711, 1231, 1231,
2900
2901      1231, 1231, 3333, 3333, 1231, 1231, 1238, 1238, 1238, 1238,
2902      3333, 3333, 1238, 1238,  732,  732,  732, 3333, 3333, 3333,
2903       732, 1263, 1263, 1263, 1263, 3333, 3333, 1263, 1263, 1268,
2904      1268, 1268, 1268, 3333, 3333, 1268, 1268,  753,  753,  753,
2905      3333, 3333, 3333,  753,  761,  761,  761, 3333, 3333, 3333,
2906       761, 1287, 1287, 1287, 1287, 3333, 3333, 1287, 1287, 1295,
2907      1295, 1295, 1295, 3333, 3333, 1295, 1295,  771,  771,  771,
2908      3333, 3333, 3333,  771, 1301, 1301, 1301, 1301, 3333, 3333,
2909      1301, 1301,  776,  776,  776, 3333, 3333, 3333,  776,  787,
2910       787,  787,  787, 3333,  787, 3333,  787, 1322, 1322, 1322,
2911
2912      1322, 3333, 3333, 1322, 1322,  796,  796,  796, 3333, 3333,
2913      3333,  796, 1334, 1334, 1334, 1334, 3333, 3333, 1334, 1334,
2914       810,  810,  810, 3333, 3333, 3333,  810, 1359, 1359, 1359,
2915      1359, 3333, 3333, 1359, 1359,  821,  821,  821, 3333, 3333,
2916      3333,  821, 1368, 1368, 1368, 1368, 3333, 3333, 1368, 1368,
2917       827,  827,  827, 3333, 3333, 3333,  827, 1376, 1376, 1376,
2918      1376, 3333, 3333, 1376, 1376,  832,  832,  832,  832, 3333,
2919       832, 3333,  832, 1386, 1386, 1386, 1386, 3333, 3333, 1386,
2920      1386,  839,  839,  839,  839, 3333,  839, 3333,  839, 1396,
2921      1396, 1396, 1396, 3333, 3333, 1396, 1396,  847,  847,  847,
2922
2923      3333, 3333, 3333,  847, 1407, 1407, 1407, 1407, 3333, 3333,
2924      1407, 1407,  855,  855,  855,  855, 3333,  855, 3333,  855,
2925      1414, 1414, 1414, 1414, 3333, 3333, 1414, 1414, 1093, 1093,
2926      1093, 1093, 1093, 1093, 1093, 1093, 1093, 1620, 1620, 1620,
2927      1620, 1620, 1620, 1620, 1620, 1620,  672,  672,  672, 3333,
2928      3333, 3333,  672, 1157, 1157, 1157, 1157, 3333, 3333, 1157,
2929      1157, 1163, 1163, 1163, 1163, 3333, 3333, 1163, 1163,  684,
2930       684,  684, 3333, 3333, 3333,  684, 1172, 1172, 1172, 1172,
2931      3333, 3333, 1172, 1172, 1182, 1182, 1182, 1182, 3333, 3333,
2932      1182, 1182, 1190, 1190, 1190, 1190, 3333, 3333, 1190, 1190,
2933
2934      1206, 1206, 1206, 1206, 3333, 3333, 1206, 1206,  711,  711,
2935       711, 3333, 3333, 3333,  711, 1231, 1231, 1231, 1231, 3333,
2936      3333, 1231, 1231, 1238, 1238, 1238, 1238, 3333, 3333, 1238,
2937      1238,  732,  732,  732, 3333, 3333, 3333,  732, 1263, 1263,
2938      1263, 1263, 3333, 3333, 1263, 1263, 1268, 1268, 1268, 1268,
2939      3333, 3333, 1268, 1268,  753,  753,  753, 3333, 3333, 3333,
2940       753,  761,  761,  761, 3333, 3333, 3333,  761, 1287, 1287,
2941      1287, 1287, 3333, 3333, 1287, 1287, 1295, 1295, 1295, 1295,
2942      3333, 3333, 1295, 1295,  771,  771,  771, 3333, 3333, 3333,
2943       771,  776,  776,  776, 3333, 3333, 3333,  776, 1322, 1322,
2944
2945      1322, 1322, 3333, 3333, 1322, 1322,  796,  796,  796,  796,
2946      3333,  796, 3333,  796, 1334, 1334, 1334, 1334, 3333, 3333,
2947      1334, 1334,  810,  810,  810, 3333, 3333, 3333,  810, 1359,
2948      1359, 1359, 1359, 3333, 3333, 1359, 1359,  821,  821,  821,
2949      3333, 3333, 3333,  821,  827,  827,  827, 3333, 3333, 3333,
2950       827, 1376, 1376, 1376, 1376, 3333, 3333, 1376, 1376,  832,
2951       832,  832, 3333, 3333, 3333,  832, 1386, 1386, 1386, 1386,
2952      3333, 3333, 1386, 1386,  839,  839,  839, 3333, 3333, 3333,
2953       839, 1396, 1396, 1396, 1396, 3333, 3333, 1396, 1396,  847,
2954       847,  847, 3333, 3333, 3333,  847, 1414, 1414, 1414, 1414,
2955
2956      3333, 3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093, 1093,
2957      1093, 1093, 1093, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
2958      1620, 1620,  672,  672,  672, 3333, 3333, 3333,  672, 1157,
2959      1157, 1157, 1157, 3333, 3333, 1157, 1157, 1163, 1163, 1163,
2960      1163, 3333, 3333, 1163, 1163,  684,  684,  684,  684, 3333,
2961       684, 3333,  684, 1172, 1172, 1172, 1172, 3333, 3333, 1172,
2962      1172, 1182, 1182, 1182, 1182, 3333, 3333, 1182, 1182, 1190,
2963      1190, 1190, 1190, 3333, 3333, 1190, 1190, 1206, 1206, 1206,
2964      1206, 3333, 3333, 1206, 1206,  711,  711,  711, 3333, 3333,
2965      3333,  711, 1231, 1231, 1231, 1231, 3333, 3333, 1231, 1231,
2966
2967       732,  732,  732, 3333, 3333, 3333,  732, 1263, 1263, 1263,
2968      1263, 3333, 3333, 1263, 1263, 1268, 1268, 1268, 1268, 3333,
2969      3333, 1268, 1268,  753,  753,  753,  753, 3333,  753, 3333,
2970       753,  761,  761,  761,  761, 3333,  761, 3333,  761, 1287,
2971      1287, 1287, 1287, 3333, 3333, 1287, 1287, 1295, 1295, 1295,
2972      1295, 3333, 3333, 1295, 1295,  771,  771,  771,  771, 3333,
2973       771, 3333,  771,  776,  776,  776, 3333, 3333, 3333,  776,
2974      1322, 1322, 1322, 1322, 3333, 3333, 1322, 1322,  796,  796,
2975       796,  796, 3333,  796, 3333,  796, 1334, 1334, 1334, 1334,
2976      3333, 3333, 1334, 1334,  810,  810,  810,  810, 3333,  810,
2977
2978      3333,  810,  821,  821,  821, 3333, 3333, 3333,  821,  827,
2979       827,  827, 3333, 3333, 3333,  827,  832,  832,  832, 3333,
2980      3333, 3333,  832, 1386, 1386, 1386, 1386, 3333, 3333, 1386,
2981      1386,  839,  839,  839, 3333, 3333, 3333,  839, 1396, 1396,
2982      1396, 1396, 3333, 3333, 1396, 1396,  847,  847,  847, 3333,
2983      3333, 3333,  847, 1414, 1414, 1414, 1414, 3333, 3333, 1414,
2984      1414, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2985      1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,  672,
2986       672,  672, 3333, 3333, 3333,  672, 1163, 1163, 1163, 1163,
2987      3333, 3333, 1163, 1163, 1172, 1172, 1172, 1172, 3333, 3333,
2988
2989      1172, 1172, 1182, 1182, 1182, 1182, 3333, 3333, 1182, 1182,
2990      1190, 1190, 1190, 1190, 3333, 3333, 1190, 1190,  711,  711,
2991       711, 3333, 3333, 3333,  711,  732,  732,  732, 3333, 3333,
2992      3333,  732, 1263, 1263, 1263, 1263, 3333, 3333, 1263, 1263,
2993       753,  753,  753, 3333, 3333, 3333,  753, 2879, 2879, 2879,
2994      2879, 2879, 2879, 2879, 2879, 2879, 2880, 2880, 2880, 2880,
2995      2880, 2880, 2880, 2880, 2880, 2942, 2942, 2942, 2942, 2942,
2996      2942, 2942, 2942, 2942, 2945, 2945, 2945, 2945, 2945, 2945,
2997      2945, 2945, 2945, 2993, 2993, 2993, 2993, 2993, 2993, 2993,
2998      2993, 2993, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995,
2999
3000      2995,  239, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
3001      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
3002      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
3003      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
3004      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
3005      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
3006      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
3007      3333, 3333, 3333, 3333, 3333, 3333
3008     } ;
3009
3010 static yyconst flex_int16_t yy_chk[11977] =
3011     {   0,
3012         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
3013         6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
3014         4,   10,  331,    5,    0,    9,    6,    0,   10,    7,
3015         8,    8,    8,  244,   11,   13,   13,   12,   14,   14,
3016        13,   13,  282,   14,   14,  245,    8,   17,   17,  244,
3017        13,   15,   15,   14,   15,  248,   15,   16,   16, 1015,
3018        16,  245,   16,   18,   18, 1015,   15,   21,   21,   21,
3019       331,  248,   16,   22,   22,   22,   23,   23,   23,   24,
3020        24,   24,  355,   21,   25,   25,   25,  355, 1465,   22,
3021       343,   17,   23, 1469,  282,   24,  242,  242,  242, 1474,
3022
3023        25,  243,  243,  243,  247,  247,  247,   18,   19,   19,
3024        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
3025        19,   19,   19,  401,   19,   19,   19,   19,   19,   26,
3026        26,   26,   27,   27,   27,   28,   28,   28,  343,   29,
3027        29,   29,   30,   30,   30,   26,  270,  287,   27,  291,
3028       365,   28,  301,   19,   19,   29,  291,  437,   30,  267,
3029       267,  267,  270,  287,   19,  275,  275,  275,  301,  437,
3030       258,  365,  401,   19,   20,   20,   20,   20,   20,   20,
3031        20,   20,   20,   20,   20,   20,   20,   20,   20,  543,
3032        20,   20,   20,   20,   20,   31,   31,   31,   32,   32,
3033
3034        32,   33,   33,   33,  543,   34,   34,   34,   35,   35,
3035        35,   31,  258,  632,   32,  558,  632,   33,  258,   20,
3036        20,   34,  306,  258,   35,   36,   36,   36,  258,  306,
3037        20,   37,   37,   37,   38,   38,   38,  734,  306,   20,
3038       734,   36,   39,   39,   39, 1475,  311,   37, 1480,  323,
3039        38,   40,   40,   40,  284,  284,  284,  376,   39,  293,
3040       293,  293,  311,  558,  294,  323, 1481,   40,   41,   41,
3041        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
3042        41,   41,   41,  596,   41,   41,   41,   41,   41,   43,
3043        43,   43,   44,   44,   44,   45,   45,   45,  387,   46,
3044
3045        46,   46,   47,   47,   47,   43,  370,  651,   44,  376,
3046      1496,   45,  294,   41,   41,   46,  294,  336,   47,   41,
3047       370,  651,   41,  298,  298,  298,  305,  305,  305,  308,
3048       308,  308,  596,  336,   41,   42,   42,   42,   42,   42,
3049        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
3050       387,   42,   42,   42,   42,   42,   48,   48,   48,   49,
3051        49,   49,   50,   50,   50,  368,   53,   53,   53,   54,
3052        54,   54,   48,  368, 1497,   49,  644,  318,   50,  368,
3053        42,   42,   53,  398,  318,   54,   42,  398,  403,   42,
3054       317,  317,  317,  318,  320,  320,  320,  329,  329,  329,
3055
3056       644,   42,   51,   51,   51,   51,   51,   51,   51,   51,
3057        51,   51,   51,   51,   51,   51,   51,  623,   51,   51,
3058        51,   51,   51,   57,   57,   57,   58,   58,   58,   61,
3059        61,   61,  623,   62,   62,   62,   63,   63,   63,   57,
3060       403, 1499,   58, 1521,  656,   61,  666,   51,   51,   62,
3061       348,  363,   63,   64,   64,   64,  333,  333,  333,  341,
3062       341,  341,  345,  345,  345,  519,  348,  363,  656,   64,
3063       666,   51,   52,   52,   52,   52,   52,   52,   52,   52,
3064        52,   52,   52,   52,   52,   52,   52,  669,   52,   52,
3065        52,   52,   52,   65,   65,   65,   66,   66,   66,   67,
3066
3067        67,   67,  519,   68,   68,   68,   71,   71,   71,   65,
3068       486,  669,   66,  358,  486,   67, 1522,   52,   52,   68,
3069       358,  851,   71,   72,   72,   72,  357,  357,  357,  358,
3070       360,  360,  360,  374,  374,  374,  378,  378,  378,   72,
3071      1525,   52,   55,   55,   55,   55,   55,   55,   55,   55,
3072        55,   55,   55,   55,   55,   55,   55,  851,   55,   55,
3073        55,   55,   55,   73,   73,   73,   74,   74,   74,   75,
3074        75,   75, 1527,   76,   76,   76,   77,   77,   77,   73,
3075       381,  392,   74,  554,  408,   75,  371,   55,   55,   76,
3076       554,   55,   77, 1529,  371, 1536,  381,  392,   55,  371,
3077
3078       408,   55,   56,   56,   56,   56,   56,   56,   56,   56,
3079        56,   56,   56,   56,   56,   56,   56, 1537,   56,   56,
3080        56,   56,   56,   78,   78,   78,   81,   81,   81,   82,
3081        82,   82,  662,   85,   85,   85,   86,   86,   86,   78,
3082       420,  432,   81,  415,  446,   82,  662,   56,   56,   85,
3083       415,   56,   86,  385,  385,  385,  420,  432,   56,  415,
3084       446,   56,   59,   59,   59,   59,   59,   59,   59,   59,
3085        59,   59,   59,   59,   59,   59,   59, 1538,   59,   59,
3086        59,   59,   59,   87,   87,   87,   88,   88,   88,   89,
3087        89,   89,  427,   90,   90,   90,   91,   91,   91,   87,
3088
3089       668, 1539,   88, 1541, 1547,   89, 1549,   59,   59,   90,
3090       457,  468,   91,   59,  668,  441,   59,  389,  389,  389,
3091       400,  400,  400,  405,  405,  405,  457,  468,   59,   60,
3092        60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
3093        60,   60,   60,   60,  427,   60,   60,   60,   60,   60,
3094        92,   92,   92,   95,   95,   95,   96,   96,   96,  501,
3095        97,   97,   97,   98,   98,   98,   92,  441, 1128,   95,
3096      1551, 1552,   96, 1557,   60,   60,   97,  479,  490,   98,
3097        60, 1128,  503,   60,  414,  414,  414,  417,  417,  417,
3098       424,  424,  424,  479,  490,   60,   69,   69,   69,   69,
3099
3100        69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
3101        69,  501,   69,   69,   69,   69,   69,   99,   99,   99,
3102       100,  100,  100,  101,  101,  101,  505,  102,  102,  102,
3103       105,  105,  105,   99,  503, 1559,  100,  490, 1560,  101,
3104      1562,   69,   69,  102,  495,  510,  105,   69,  429,  429,
3105       429,  439,  439,  439,  443,  443,  443,  451,  451,  451,
3106       495,  510,   69,   70,   70,   70,   70,   70,   70,   70,
3107        70,   70,   70,   70,   70,   70,   70,   70,  505,   70,
3108        70,   70,   70,   70,  106,  106,  106,  107,  107,  107,
3109       108,  108,  108,  521,  109,  109,  109,  110,  110,  110,
3110
3111       106, 1096,  526,  107,  452, 1096,  108, 1417,   70,   70,
3112       109,  452,  463,  110,   70,  454,  454,  454,  526,  463,
3113       452,  462,  462,  462,  465,  465,  465, 1417,  463,   70,
3114        79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
3115        79,   79,   79,   79,   79,  521,   79,   79,   79,   79,
3116        79,  111,  111,  111,  112,  112,  112,  115,  115,  115,
3117       583,  116,  116,  116,  119,  119,  119,  111,  537,  551,
3118       112,  474,  563,  115, 1563,   79,   79,  116,  474,   79,
3119       119,  473,  473,  473,  537,  551,   79,  474,  563,   79,
3120       476,  476,  476,   79, 1564,   79,   79,   80,   80,   80,
3121
3122        80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
3123        80,   80,  583,   80,   80,   80,   80,   80,  120,  120,
3124       120,  121,  121,  121,  122,  122,  122,  670,  123,  123,
3125       123,  124,  124,  124,  120,  574,  588,  121,  489,  603,
3126       122,  670,   80,   80,  123,  489,   80,  124,  488,  488,
3127       488,  574,  588,   80,  489,  603,   80,  492,  492,  492,
3128        80, 1565,   80,   80,   83,   83,   83,   83,   83,   83,
3129        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3130        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3131        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3132
3133        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3134        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3135        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3136        83,   83,   83,   83,   83,   83,   83,   83,   93,   93,
3137        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
3138        93,   93,   93, 1568,   93,   93,   93,   93,   93,  125,
3139       125,  125,  126,  126,  126,  129,  129,  129, 1569,  130,
3140       130,  130,  131,  131,  131,  125,  614, 1570,  126, 1572,
3141       650,  129,  598,   93,   93,  130, 1575,  650,  131,  499,
3142       499,  499,  614,  650,   93,   94,   94,   94,   94,   94,
3143
3144        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
3145      1584,   94,   94,   94,   94,   94,  132,  132,  132,  133,
3146       133,  133,  134,  134,  134, 1587,  135,  135,  135,  136,
3147       136,  136,  132,  502,  598,  133, 1595,  654,  134,  541,
3148        94,   94,  135,  541,  654,  136,  502,  541,  502,  280,
3149       654,   94,  103,  103,  103,  103,  103,  103,  103,  103,
3150       103,  103,  103,  103,  103,  103,  103, 1597,  103,  103,
3151       103,  103,  103,  139,  139,  139,  140,  140,  140,  143,
3152       143,  143,  645,  144,  144,  144, 1599,  280, 1600,  139,
3153       792,  862,  140,  645, 1229,  143,  645,  103,  103,  144,
3154
3155       103,  280,  103,  280,  792,  280, 1229,  862,  103,  507,
3156       507,  507,  518,  518,  518,  103,  500,  888,  103,  104,
3157       104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
3158       104,  104,  104,  104,  888,  104,  104,  104,  104,  104,
3159       147,  147,  147,  148,  148,  148,  151,  151,  151,  657,
3160       152,  152,  152, 1601, 1603,  500,  147,  980, 1608,  148,
3161       657, 1611,  151,  657,  104,  104,  152,  104,  500,  104,
3162       500,  523,  523,  523,  980,  104,  531,  531,  531,  534,
3163       534,  534,  104, 1612, 1079,  104,  113,  113,  113,  113,
3164       113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
3165
3166       113, 1079,  113,  113,  113,  113,  113,  153,  153,  153,
3167       154,  154,  154,  157,  157,  157, 1614,  158,  158,  158,
3168       159,  159,  159,  153, 1620, 1623,  154,  532,  546,  157,
3169      1626,  113,  113,  158,  532,  546,  159,  113,  545,  545,
3170       545, 1627,  113,  532,  546,  548,  548,  548,  556,  556,
3171       556,  560,  560,  560,  113,  114,  114,  114,  114,  114,
3172       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
3173      1628,  114,  114,  114,  114,  114,  160,  160,  160,  161,
3174       161,  161,  162,  162,  162, 1629,  163,  163,  163,  164,
3175       164,  164,  160, 1630, 1631,  161,  569,  661,  162, 1632,
3176
3177       114,  114,  163,  569,  661,  164,  114,  568,  568,  568,
3178       661,  114,  569,  571,  571,  571,  581,  581,  581,  585,
3179       585,  585, 1633,  114,  117,  117,  117,  117,  117,  117,
3180       117,  117,  117,  117,  117,  117,  117,  117,  117, 1635,
3181       117,  117,  117,  117,  117,  165,  165,  165,  166,  166,
3182       166,  167,  167,  167,  790,  168,  168,  168,  169,  169,
3183       169,  165,  793, 1636,  166,  790, 1638,  167,  790,  117,
3184       117,  168, 1639,  793,  169, 1642,  793,  117,  118,  118,
3185       118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
3186       118,  118,  118, 1643,  118,  118,  118,  118,  118,  170,
3187
3188       170,  170,  171,  171,  171,  172,  172,  172, 1645,  173,
3189       173,  173,  174,  174,  174,  170, 1133, 1326,  171, 1647,
3190      1650,  172, 1619,  118,  118,  173, 1651, 1652,  174, 1133,
3191      1326,  118,  127,  127,  127,  127,  127,  127,  127,  127,
3192       127,  127,  127,  127,  127,  127,  127, 1619,  127,  127,
3193       127,  127,  127,  175,  175,  175,  176,  176,  176,  179,
3194       179,  179, 1653,  180,  180,  180,  181,  181,  181,  175,
3195      1654, 1656,  176,  608, 1657,  179, 1661,  127,  127,  180,
3196       608,  127,  181,  595,  595,  595, 1669, 1673,  127,  608,
3197      1674,  127,  600,  600,  600,  611,  611,  611,  127,  128,
3198
3199       128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
3200       128,  128,  128,  128, 1706,  128,  128,  128,  128,  128,
3201       182,  182,  182,  183,  183,  183,  184,  184,  184, 1707,
3202       185,  185,  185,  186,  186,  186,  182, 1714, 1725,  183,
3203       621, 1726,  184, 1727,  128,  128,  185,  621,  128,  186,
3204       620,  620,  620, 1728, 1730,  128,  621, 1738,  128,  622,
3205       622,  622,  631,  631,  631,  128,  137,  137,  137,  137,
3206       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
3207       137, 1740,  137,  137,  137,  137,  137,  189,  189,  189,
3208       190,  190,  190,  193,  193,  193, 1744,  194,  194,  194,
3209
3210       197,  197,  197,  189, 1747, 1749,  190,  667, 1750,  193,
3211      1752,  137,  137,  194,  667, 1753,  197,  137, 1754, 1755,
3212       667,  631,  137,  138,  138,  138,  138,  138,  138,  138,
3213       138,  138,  138,  138,  138,  138,  138,  138, 1759,  138,
3214       138,  138,  138,  138,  198,  198,  198,  199,  199,  199,
3215       200,  200,  200, 1760,  201,  201,  201,  202,  202,  202,
3216       198, 1761, 1763,  199,  791,  794,  200, 1767,  138,  138,
3217       201,  791,  794,  202,  138, 1771, 1775,  791,  794,  138,
3218       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
3219       141,  141,  141,  141,  141, 1777,  141,  141,  141,  141,
3220
3221       141,  203,  203,  203,  204,  204,  204,  207,  207,  207,
3222      1779,  208,  208,  208,  211,  211,  211,  203,  948, 1785,
3223       204, 1792, 1796,  207, 1797,  141,  141,  208,  948, 1799,
3224       211,  212,  212,  212, 1811,  948,  141,  865,  865,  865,
3225      1812,  865, 1113, 1113, 1113, 1813, 1815,  212, 1806,  141,
3226       142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
3227       142,  142,  142,  142,  142, 1806,  142,  142,  142,  142,
3228       142,  213,  213,  213,  214,  214,  214,  215,  215,  215,
3229      1808,  216,  216,  216,  217,  217,  217,  213, 1801, 1814,
3230       214, 1816, 1818,  215, 1801,  142,  142,  216, 1801, 1819,
3231
3232       217,  218,  218,  218, 1801, 1814,  142,  874,  874,  874,
3233      1820,  874, 1821, 1808,  874, 1823, 1807,  218, 1824,  142,
3234       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
3235       145,  145,  145,  145,  145, 1828,  145,  145,  145,  145,
3236       145,  221,  221,  221,  222,  222,  222,  223,  223,  223,
3237      1830,  224,  224,  224,  225,  225,  225,  221, 1807, 1831,
3238       222, 1832, 1834,  223, 1835,  145,  145,  224, 1836, 1833,
3239       225, 1134, 1134, 1134, 1433, 1433, 1433, 1837,  878,  878,
3240       878,  145,  897,  897,  897, 1833,  145,  146,  146,  146,
3241       146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
3242
3243       146,  146, 1840,  146,  146,  146,  146,  146,  226,  226,
3244       226,  227,  227,  227,  228,  228,  228, 1438, 1438, 1438,
3245      1433,  639,  639,  639,  226, 1842, 1847,  227, 1849, 1854,
3246       228, 1877,  146,  146,  231,  231,  232,  232,  639,  231,
3247       425,  232,  878,  909,  909,  909,  897, 1878,  146,  231,
3248       425,  232, 1879,  146,  149,  149,  149,  149,  149,  149,
3249       149,  149,  149,  149,  149,  149,  149,  149,  149, 1883,
3250       149,  149,  149,  149,  149,  235,  235,  235,  231,  425,
3251       232,  236,  236,  236, 1884,  425, 1890, 1891,  686,  686,
3252       686,  235,  425,  876,  876,  876,  425,  236,  279,  149,
3253
3254       149, 1894,  149,  149,  149,  686, 1895,  909,  279, 1901,
3255       149,  876, 1907,  149,  991,  991,  991, 1441, 1441, 1441,
3256       149,  150,  150,  150,  150,  150,  150,  150,  150,  150,
3257       150,  150,  150,  150,  150,  150,  279,  150,  150,  150,
3258       150,  150,  702,  702,  702,  703,  703,  703, 1909, 1910,
3259       279, 1913,  279, 1919,  279,  713,  713,  713, 1921,  702,
3260      1927, 1931,  703,  916,  916,  916,  150,  150, 1934,  150,
3261       150,  150,  713, 1446, 1446, 1446, 1938,  150,  991, 1940,
3262       150,  916, 1435, 1435, 1435, 1941, 1942,  150,  155,  155,
3263       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
3264
3265       155,  155,  155, 1943,  155,  155,  155,  155,  155,  715,
3266       715,  715,  729,  729,  729,  735,  735,  735,  744,  744,
3267       744,  745,  745,  745, 1945, 1951,  715, 1953, 1435,  729,
3268      1955, 1957,  735,  155,  155,  744, 1970, 1971,  745,  755,
3269       755,  755,  924,  924,  924, 1972,  924, 1975, 1976,  924,
3270      1978, 1452, 1452, 1452, 1979, 1980,  755,  155,  156,  156,
3271       156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
3272       156,  156,  156, 1982,  156,  156,  156,  156,  156,  763,
3273       763,  763,  767,  767,  767,  780,  780,  780,  806,  806,
3274       806,  812,  812,  812, 1987, 1993,  763, 1452, 1977,  767,
3275
3276      1987, 1994,  780,  156,  156,  806, 1977, 1981,  812,  829,
3277       829,  829,  938,  938,  938, 1981,  938, 1995, 1989,  938,
3278      1996, 1454, 1454, 1454, 2000, 2002,  829,  156,  177,  177,
3279       177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
3280       177,  177,  177, 2003,  177,  177,  177,  177,  177,  835,
3281       835,  835,  841,  841,  841,  849,  849,  849,  873,  873,
3282       873,  912,  912,  912, 1989, 2004,  835, 1454, 2009,  841,
3283      2011, 2012,  849,  177,  177,  873, 2013, 2016,  912, 1988,
3284      2020,  177, 2027,  177, 2029, 2031,  177, 1455, 1455, 1455,
3285       177, 1634, 1634, 1634,  177,  178,  178,  178,  178,  178,
3286
3287       178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
3288      1988,  178,  178,  178,  178,  178, 2055,  877,  877,  877,
3289       914,  914,  914, 2056,  920,  920,  920,  913,  913,  913,
3290       915,  915,  915, 1802, 2057,  877, 2063,  914, 2064, 1802,
3291       178,  178,  920, 1802,  913, 2068, 2072,  915,  178, 1802,
3292       178, 2073, 2077,  178,  877, 2080, 2083,  178, 1637, 1637,
3293      1637,  178,  187,  187,  187,  187,  187,  187,  187,  187,
3294       187,  187,  187,  187,  187,  187,  187,  913,  187,  187,
3295       187,  187,  187,  917,  917,  917,  923,  923,  923,  915,
3296      2084, 2085,  913,  921,  921,  921,  926,  926,  926, 2086,
3297
3298      2089,  917, 2092,  923,  928,  928,  928,  187,  187, 2096,
3299      2097,  921, 2098, 2110,  926,  940,  940,  940,  187,  940,
3300       917,  928,  940,  950,  950,  950, 2111,  950, 2114, 2116,
3301       950,  187,  188,  188,  188,  188,  188,  188,  188,  188,
3302       188,  188,  188,  188,  188,  188,  188, 2119,  188,  188,
3303       188,  188,  188,  927,  927,  927, 2126,  921,  930,  930,
3304       930,  931,  931,  931,  932,  932,  932,  929,  929,  929,
3305      2133,  927,  933,  933,  933,  930, 2135,  188,  188,  931,
3306      2136, 2137,  932, 2142,  929, 1640, 1640, 1640,  188,  933,
3307       953,  953,  953, 2143,  953, 2144, 2145,  953, 2146, 2147,
3308
3309       927,  188,  191,  191,  191,  191,  191,  191,  191,  191,
3310       191,  191,  191,  191,  191,  191,  191,  929,  191,  191,
3311       191,  191,  191,  934,  934,  934,  935,  935,  935,  937,
3312       937,  937,  929, 2148, 2149,  932,  936,  936,  936, 2150,
3313       934,  946,  946,  946,  935, 2151,  937,  191,  191,  939,
3314       939,  939, 2162, 2163,  936, 2154,  191, 2166,  191,  946,
3315      2169, 2173,  191, 1641, 1641, 1641,  939,  191,  191,  192,
3316       192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
3317       192,  192,  192,  192, 2174,  192,  192,  192,  192,  192,
3318      2177,  941,  941,  941, 2178,  949,  949,  949, 2154,  942,
3319
3320       942,  942,  943,  943,  943, 2181, 2184,  936,  941,  944,
3321       944,  944,  949, 2185,  192,  192,  942, 2186, 2201,  943,
3322       967,  967,  967,  192,  967,  192,  944,  967, 2155,  192,
3323      1471, 1471, 1471, 2202,  192,  192,  195,  195,  195,  195,
3324       195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
3325       195,  942,  195,  195,  195,  195,  195,  943, 2208, 2209,
3326       944, 2215, 2216,  952,  952,  952,  945,  945,  945,  954,
3327       954,  954,  964,  964,  964, 2155, 1471,  947,  947,  947,
3328       952,  195,  195,  945, 2217, 2231,  954,  195, 2203, 2232,
3329       964, 2233,  974,  974,  974,  947,  974, 2254, 2203,  974,
3330
3331      2255, 2261,  195,  196,  196,  196,  196,  196,  196,  196,
3332       196,  196,  196,  196,  196,  196,  196,  196,  945,  196,
3333       196,  196,  196,  196,  947, 2266, 2268,  965,  965,  965,
3334       966,  966,  966,  968,  968,  968, 2269,  969,  969,  969,
3335       973,  973,  973, 2274, 2275,  965, 2276,  966,  196,  196,
3336      2277,  968, 2278, 2279,  196,  969, 2280,  973,  983,  983,
3337       983, 2281,  983, 2282, 2283,  983, 1644, 1644, 1644,  196,
3338       205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
3339       205,  205,  205,  205,  205,  965,  205,  205,  205,  205,
3340       205,  978,  978,  978,  979,  979,  979, 2288,  969, 2289,
3341
3342       982,  982,  982, 2291,  984,  984,  984, 2157, 2157,  978,
3343      2157, 2292,  979, 2293, 2294,  205,  205,  982, 2157, 2296,
3344       205,  984, 1649, 1649, 1649, 2157,  205,  206,  206,  206,
3345       206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
3346       206,  206, 2287,  206,  206,  206,  206,  206, 2286,  985,
3347       985,  985, 2297,  985, 2300,  979,  985,  986,  986,  986,
3348       987,  987,  987,  989,  989,  989, 2301,  994,  994,  994,
3349      2304,  994,  206,  206,  994,  986, 2306,  206,  987, 2287,
3350      2286,  989, 2307,  206,  209,  209,  209,  209,  209,  209,
3351       209,  209,  209,  209,  209,  209,  209,  209,  209, 2309,
3352
3353       209,  209,  209,  209,  209, 2310, 2312,  990,  990,  990,
3354       993,  993,  993,  998,  998,  998, 2313, 2290,  999,  999,
3355       999,  987, 1001, 1001, 1001,  990, 2290,  993, 2295,  209,
3356       209,  998,  209, 2314,  209, 2326,  999, 2295, 2327, 1001,
3357       209, 1002, 1002, 1002, 2328, 1002, 2329, 2332, 1002, 2333,
3358      2339,  209,  210,  210,  210,  210,  210,  210,  210,  210,
3359       210,  210,  210,  210,  210,  210,  210,  990,  210,  210,
3360       210,  210,  210,  999, 1003, 1003, 1003, 1005, 1005, 1005,
3361      2340, 1008, 1008, 1008, 2347, 2348, 1004, 1004, 1004, 1006,
3362      1006, 1006, 1003, 1006, 1005, 2349, 1006,  210,  210, 1008,
3363
3364       210, 2357,  210, 2358, 1004, 1018, 1018, 1018,  210, 1018,
3365      2375, 2376, 1018, 1648, 1648, 1648, 1655, 1655, 1655,  210,
3366       219,  219,  219,  219,  219,  219,  219,  219,  219,  219,
3367       219,  219,  219,  219,  219, 2377,  219,  219,  219,  219,
3368       219, 1004, 1012, 1012, 1012, 1017, 1017, 1017, 2380, 1009,
3369      1009, 1009, 2382, 1013, 1013, 1013, 1019, 1019, 1019, 1648,
3370      1012, 2383, 1017, 2384, 2385,  219,  219, 1009, 2386, 2387,
3371       219, 1013, 2388, 1019, 2389, 2390,  219, 1040, 1040, 1040,
3372       219, 1040, 2391, 2392, 1040, 2393,  219,  220,  220,  220,
3373       220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
3374
3375       220,  220, 2398,  220,  220,  220,  220,  220, 2399, 2395,
3376      1009, 1022, 1022, 1022, 1013, 1658, 1658, 1658, 1023, 1023,
3377      1023, 1026, 1026, 1026, 1027, 1027, 1027, 2400, 2401, 1022,
3378      2402, 2403,  220,  220, 2404, 2405, 1023,  220, 2397, 1026,
3379      2406, 2407, 1027,  220, 1046, 1046, 1046,  220, 1046, 2395,
3380      2408, 1046, 2409,  220,  229,  229,  229,  229,  229,  229,
3381       229,  229,  229,  229,  229,  229,  229,  229,  229, 1023,
3382       229,  229,  229,  229,  229, 1036, 1036, 1036, 1037, 1037,
3383      1037, 2397, 1027, 2410, 1039, 1039, 1039, 1042, 1042, 1042,
3384      1043, 1043, 1043, 1036, 2411, 2414, 1037, 2415, 2416,  229,
3385
3386       229, 1039, 1062, 1062, 1062, 1042, 1062,  229, 1043, 1062,
3387       229, 2417, 1646, 1646, 1646, 2419, 2420,  229,  230,  230,
3388       230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
3389       230,  230,  230, 2431,  230,  230,  230,  230,  230, 1045,
3390      1045, 1045, 1037, 1047, 1047, 1047, 2432, 2434, 1049, 1049,
3391      1049, 1053, 1053, 1053, 1043, 2438, 1045, 1054, 1054, 1054,
3392      1047, 2439, 2440,  230,  230, 1049, 1068, 1068, 1068, 1053,
3393      1068,  230, 2442, 1068,  230, 1054, 1646, 1659, 1659, 1659,
3394      2443,  230,  233,  233,  233,  233,  233,  233,  233,  233,
3395       233,  233,  233,  233,  233,  233,  233, 2445,  233,  233,
3396
3397       233,  233,  233, 2446, 1054, 1055, 1055, 1055, 1056, 1056,
3398      1056, 2396, 1057, 1057, 1057, 1058, 1058, 1058, 1059, 1059,
3399      1059, 2454, 1055, 2455, 2441, 1056, 2456,  233,  233, 1057,
3400      1061, 1061, 1061, 1058,  233, 2441, 1059, 1074, 1074, 1074,
3401       233, 1074, 2468, 2487, 1074, 2488, 2492, 1061, 2396,  233,
3402       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
3403       234,  234,  234,  234,  234, 2493,  234,  234,  234,  234,
3404       234, 1057, 1063, 1063, 1063, 1064, 1064, 1064, 2444, 1059,
3405      1067, 1067, 1067, 1070, 1070, 1070, 1071, 1071, 1071, 2444,
3406      1063, 2494, 2495, 1064, 2496,  234,  234, 1067, 1073, 1073,
3407
3408      1073, 1070,  234, 2497, 1071, 1077, 1077, 1077,  234, 1078,
3409      1078, 1078, 1081, 1081, 1081, 1073, 2498,  234,  276, 1662,
3410      1662, 1662, 2499, 1077, 2500,  276, 2501, 1078, 2503, 1081,
3411      1085, 1085, 1085, 2506,  276,  276, 1064, 1082, 1082, 1082,
3412      2507, 1082, 2508, 2509, 1082, 1716, 1716, 1716, 1085, 1086,
3413      1086, 1086, 1071, 1091, 1091, 1091, 2460, 2503, 1092, 1092,
3414      1092, 2510,  276,  276,  276, 1662, 2460, 1086, 2504,  276,
3415       276, 1091, 2460,  276,  276, 1078, 1092,  276, 2511,  276,
3416       276,  276,  278, 1105, 1105, 1105, 2512, 1105, 2513, 2514,
3417      1105, 1109, 1109, 1109, 1110, 1110, 1110, 2515,  278,  278,
3418
3419      1112, 1112, 1112, 1149, 1149, 1149, 1153, 1153, 1153, 1109,
3420      2504, 2482, 1110, 1086, 1156, 1156, 1156, 2505, 1112, 2516,
3421      1149, 2482, 1092, 1153, 2482, 2517,  278,  278,  278, 1817,
3422      1817, 1817, 1156,  278,  278, 2518, 2521,  278,  278, 2483,
3423      2522,  278, 2523,  278,  278,  278, 1150, 1150, 1150, 2483,
3424      1150, 2525, 2483, 1150, 1154, 1154, 1154, 2526, 1154, 2505,
3425      2531, 1154, 1157, 1157, 1157, 1159, 1159, 1159, 1162, 1162,
3426      1162, 1163, 1163, 1163, 1165, 1165, 1165, 1167, 1167, 1167,
3427      1157, 1167, 2536, 1159, 1167, 2537, 1162, 2538, 2539, 1163,
3428      2540, 2541, 1165, 1171, 1171, 1171, 1172, 1172, 1172, 1174,
3429
3430      1174, 1174, 1175, 1175, 1175, 1176, 1176, 1176, 2335, 1176,
3431      2335, 1171, 1176, 2542, 1172, 2543, 2544, 1174, 2545, 1175,
3432      1179, 1179, 1179, 2335, 1180, 1180, 1180, 1165, 1180, 1159,
3433      2546, 1180, 1181, 1181, 1181, 2554, 2556, 1179, 1182, 1182,
3434      1182, 1184, 1184, 1184, 1185, 1185, 1185, 2560, 1174, 2561,
3435      1181, 1186, 1186, 1186, 2562, 1186, 1182, 2563, 1186, 1184,
3436      2564, 1185, 1187, 1187, 1187, 1188, 1188, 1188, 2565, 1188,
3437      2567, 2579, 1188, 1189, 1189, 1189, 1190, 1190, 1190, 1187,
3438      1192, 1192, 1192, 1193, 1193, 1193, 2336, 1193, 2336, 2580,
3439      1193, 1189, 2582, 2583, 1190, 1196, 1196, 1196, 1192, 1196,
3440
3441      2574, 2336, 1196, 1184, 1199, 1199, 1199, 1200, 1200, 1200,
3442      2596, 1200, 2597, 2574, 1200, 1205, 1205, 1205, 1206, 1206,
3443      1206, 1199, 1208, 1208, 1208, 1212, 1212, 1212, 2575, 1212,
3444      2598, 2599, 1212, 1205, 2601, 2581, 1206, 1215, 1215, 1215,
3445      1208, 2575, 1192, 1216, 1216, 1216, 2602, 1216, 2581, 2603,
3446      1216, 1219, 1219, 1219, 1215, 1220, 1220, 1220, 2604, 1220,
3447      2607, 2610, 1220, 1230, 1230, 1230, 2158, 2158, 1219, 2158,
3448      1208, 1231, 1231, 1231, 1233, 1233, 1233, 2158, 1234, 1234,
3449      1234, 1230, 1234, 2611, 2158, 1234, 1237, 1237, 1237, 1231,
3450      2584, 2612, 1233, 1238, 1238, 1238, 1240, 1240, 1240, 1243,
3451
3452      1243, 1243, 2613, 2584, 1237, 1244, 1244, 1244, 2607, 1244,
3453      2614, 1238, 1244, 2608, 1240, 2615, 1243, 1250, 1250, 1250,
3454      1251, 1251, 1251, 2461, 1253, 1253, 1253, 1255, 1255, 1255,
3455      1256, 1256, 1256, 2461, 1256, 1250, 2616, 1256, 1251, 2461,
3456      2617, 1233, 1253, 2618, 1255, 1259, 1259, 1259, 2608, 1259,
3457      2619, 2620, 1259, 1262, 1262, 1262, 1240, 1263, 1263, 1263,
3458      1265, 1265, 1265, 1266, 1266, 1266, 1267, 1267, 1267, 2621,
3459      2622, 1262, 1268, 1268, 1268, 1263, 2625, 2626, 1265, 2629,
3460      1266, 1270, 1270, 1270, 1267, 1278, 1278, 1278, 2635, 1253,
3461      1268, 1272, 1272, 1272, 2643, 1272, 2644, 2645, 1272, 1270,
3462
3463      1279, 1279, 1279, 1278, 1281, 1281, 1281, 1283, 1283, 1283,
3464      2646, 1283, 2647, 2631, 1283, 1286, 1286, 1286, 1279, 1287,
3465      1287, 1287, 1281, 2631, 2648, 1265, 1289, 1289, 1289, 2632,
3466      1270, 2649, 2650, 1286, 1290, 1290, 1290, 1287, 1290, 2632,
3467      2651, 1290, 2652, 2653, 1289, 1294, 1294, 1294, 1295, 1295,
3468      1295, 1297, 1297, 1297, 1298, 1298, 1298, 1299, 1299, 1299,
3469      1300, 1300, 1300, 1294, 1281, 2657, 1295, 2660, 2661, 1297,
3470      2662, 1298, 2663, 2664, 1299, 1301, 1301, 1301, 1300, 1303,
3471      1303, 1303, 2665, 1308, 1308, 1308, 1289, 1308, 2666, 2669,
3472      1308, 2673, 2674, 1301, 1311, 1311, 1311, 1303, 1312, 1312,
3473
3474      1312, 1297, 1312, 2675, 1299, 1312, 1315, 1315, 1315, 2676,
3475      2677, 1311, 1316, 1316, 1316, 1318, 1318, 1318, 1321, 1321,
3476      1321, 1322, 1322, 1322, 1315, 1324, 1324, 1324, 2678, 2679,
3477      1316, 2680, 2681, 1318, 2682, 2683, 1321, 2684, 2700, 1322,
3478      1329, 1329, 1329, 1324, 2701, 2702, 1303, 1333, 1333, 1333,
3479      1334, 1334, 1334, 1336, 1336, 1336, 2703, 1329, 2704, 2687,
3480      1338, 1338, 1338, 2705, 1338, 1333, 1318, 1338, 1334, 2687,
3481      2706, 1336, 1324, 1342, 1342, 1342, 1343, 1343, 1343, 1345,
3482      1345, 1345, 1347, 1347, 1347, 2688, 1347, 2707, 2713, 1347,
3483      2714, 1342, 2715, 2718, 1343, 2688, 2719, 1345, 1350, 1350,
3484
3485      1350, 1351, 1351, 1351, 2720, 1351, 2721, 2724, 1351, 1352,
3486      1352, 1352, 2731, 2732, 1336, 1350, 1353, 1353, 1353, 2733,
3487      1354, 1354, 1354, 2709, 1354, 2734, 1352, 1354, 1356, 1356,
3488      1356, 2738, 2746, 1353, 1358, 1358, 1358, 1359, 1359, 1359,
3489      1345, 1361, 1361, 1361, 2747, 1356, 1362, 1362, 1362, 1363,
3490      1363, 1363, 1358, 1363, 2748, 1359, 1363, 2709, 2749, 1361,
3491      1364, 1364, 1364, 1362, 1365, 1365, 1365, 2750, 1365, 2751,
3492      2752, 1365, 1367, 1367, 1367, 2753, 2754, 1364, 1368, 1368,
3493      1368, 1370, 1370, 1370, 1372, 1372, 1372, 2755, 1372, 2761,
3494      1367, 1372, 1375, 1375, 1375, 2762, 1368, 2764, 2765, 1370,
3495
3496      2767, 1361, 1376, 1376, 1376, 1378, 1378, 1378, 2768, 2769,
3497      1375, 1381, 1381, 1381, 2770, 1381, 2771, 2772, 1381, 2773,
3498      1376, 2774, 2775, 1378, 1385, 1385, 1385, 1386, 1386, 1386,
3499      2776, 1388, 1388, 1388, 1390, 1390, 1390, 2777, 1390, 2778,
3500      2779, 1390, 1385, 2782, 2783, 1386, 2784, 2785, 1370, 1388,
3501      1394, 1394, 1394, 1395, 1395, 1395, 1396, 1396, 1396, 1398,
3502      1398, 1398, 1400, 1400, 1400, 2793, 2794, 1394, 1404, 1404,
3503      1404, 1395, 1378, 2796, 1396, 2797, 2798, 1398, 2800, 1400,
3504      1401, 1401, 1401, 2808, 1401, 1404, 2809, 1401, 1406, 1406,
3505      1406, 2811, 1388, 1407, 1407, 1407, 1409, 1409, 1409, 1411,
3506
3507      1411, 1411, 2812, 1413, 1413, 1413, 1406, 1414, 1414, 1414,
3508      2813, 1407, 2815, 2820, 1409, 2821, 1411, 1416, 1416, 1416,
3509      1398, 1413, 1418, 1418, 1418, 1414, 1424, 1424, 1424, 1404,
3510      1461, 1461, 1461, 2802, 1461, 1416, 2822, 1461, 2823, 2825,
3511      1418, 1418, 2829, 1409, 1424, 1466, 1466, 1466, 2830, 1466,
3512      2832, 2833, 1466, 1470, 1470, 1470, 1472, 1472, 1472, 1473,
3513      1473, 1473, 2834, 2836, 1416, 1476, 1476, 1476, 1477, 1477,
3514      1477, 1470, 1477, 1472, 2837, 1477, 2802, 1473, 1482, 1482,
3515      1482, 2842, 1482, 1476, 2843, 1482, 1485, 1485, 1485, 1486,
3516      1486, 1486, 2844, 1486, 2845, 2846, 1486, 2847, 1489, 1489,
3517
3518      1489, 2848, 1489, 2849, 1485, 1489, 1492, 1492, 1492, 1493,
3519      1493, 1493, 2850, 1493, 1470, 2851, 1493, 1498, 1498, 1498,
3520      2852, 2853, 1476, 2854, 1492, 2855, 1473, 1500, 1500, 1500,
3521      1501, 1501, 1501, 1485, 1498, 1502, 1502, 1502, 1503, 1503,
3522      1503, 1504, 1504, 1504, 2856, 1500, 2857, 1501, 1509, 1509,
3523      1509, 2858, 1502, 1492, 2862, 1503, 2863, 2864, 1504, 1505,
3524      1505, 1505, 2865, 1505, 2868, 1509, 1505, 1506, 1506, 1506,
3525      2869, 1506, 2870, 2871, 1506, 1510, 1510, 1510, 1511, 1511,
3526      1511, 2872, 1500, 2873, 2882, 1503, 1512, 1512, 1512, 1513,
3527      1513, 1513, 1510, 2875, 2878, 1511, 1514, 1514, 1514, 1509,
3528
3529      2883, 1502, 2885, 1512, 2886, 2878, 1513, 1515, 1515, 1515,
3530      1516, 1516, 1516, 1514, 1517, 1517, 1517, 1518, 1518, 1518,
3531      2888, 2877, 1510, 2890, 1515, 2893, 2899, 1516, 1519, 1519,
3532      1519, 1517, 2900, 1512, 1518, 2877, 1520, 1520, 1520, 2875,
3533      1523, 1523, 1523, 1524, 1524, 1524, 1519, 1524, 1511, 2902,
3534      1524, 2903, 2905, 1513, 1520, 2916, 1514, 1523, 1526, 1526,
3535      1526, 1528, 1528, 1528, 1530, 1530, 1530, 1531, 1531, 1531,
3536      2918, 1531, 2920, 2921, 1531, 1526, 1517, 2895, 1518, 1528,
3537      1516, 1530, 1532, 1532, 1532, 1533, 1533, 1533, 1520, 2895,
3538      1534, 1534, 1534, 1519, 1534, 2924, 2925, 1534, 2928, 2930,
3539
3540      1532, 2932, 1533, 1535, 1535, 1535, 1540, 1540, 1540, 2934,
3541      1542, 1542, 1542, 1543, 1543, 1543, 2935, 1544, 1544, 1544,
3542      2937, 1535, 2938, 2944, 1540, 2943, 2943, 1528, 1542, 2896,
3543      1543, 2945, 1545, 1545, 1545, 1544, 1546, 1546, 1546, 2910,
3544      1546, 2896, 2945, 1546, 1548, 1548, 1548, 2911, 1532, 1545,
3545      2941, 2910, 1550, 1550, 1550, 2946, 1556, 1556, 1556, 2911,
3546      2949, 1535, 1548, 1540, 1558, 1558, 1558, 1542, 1544, 1550,
3547      1553, 1553, 1553, 1556, 1553, 2942, 2950, 1553, 1561, 1561,
3548      1561, 2951, 1558, 1566, 1566, 1566, 1567, 1567, 1567, 2942,
3549      1567, 2941, 2955, 1567, 2952, 2956, 1561, 1571, 1571, 1571,
3550
3551      1566, 1573, 1573, 1573, 1548, 1574, 1574, 1574, 2957, 1576,
3552      1576, 1576, 2952, 1576, 2964, 1571, 1576, 2966, 1573, 1579,
3553      1579, 1579, 2970, 1574, 2958, 1580, 1580, 1580, 1558, 1580,
3554      2971, 2881, 1580, 1581, 1581, 1581, 1579, 1581, 2972, 2958,
3555      1581, 1585, 1585, 1585, 1561, 2963, 1571, 1586, 1586, 1586,
3556      2881, 1586, 2881, 2973, 1586, 1588, 1588, 1588, 1585, 1589,
3557      1589, 1589, 2976, 1589, 2963, 2881, 1589, 1574, 1592, 1592,
3558      1592, 2978, 1592, 1588, 2965, 1592, 1596, 1596, 1596, 1598,
3559      1598, 1598, 1602, 1602, 1602, 1604, 1604, 1604, 2980, 1605,
3560      1605, 1605, 2981, 2965, 1596, 2982, 2983, 1598, 2984, 2985,
3561
3562      1602, 2993, 1604, 2994, 2995, 1588, 1605, 1606, 1606, 1606,
3563      2997, 1606, 2998, 2975, 1606, 1607, 1607, 1607, 1609, 1609,
3564      1609, 1610, 1610, 1610, 2977, 1610, 2999, 3001, 1610, 1613,
3565      1613, 1613, 2975, 1607, 3002, 1609, 1615, 1615, 1615, 1617,
3566      1617, 1617, 1596, 2977, 3003, 1598, 1602, 1613, 1616, 1616,
3567      1616, 3004, 1616, 1615, 3006, 1616, 1617, 1618, 1618, 1618,
3568      3009, 3010, 1621, 1621, 1621, 1660, 1660, 1660, 1663, 1663,
3569      1663, 1664, 1664, 1664, 3011, 1618, 3012, 3013, 1613, 1607,
3570      1621, 1665, 1665, 1665, 1666, 1666, 1666, 1667, 1667, 1667,
3571      1668, 1668, 1668, 1670, 1670, 1670, 3014, 3015, 1665, 3016,
3572
3573      3017, 1666, 3018, 3021, 1667, 3022, 1618, 3023, 1668, 3024,
3574      1670, 3025, 3026, 1621, 1671, 1671, 1671, 3029, 1671, 3030,
3575      3031, 1671, 1672, 1672, 1672, 1675, 1675, 1675, 3032, 1660,
3576      1621, 3033, 1663, 3034, 3036, 1664, 1676, 1676, 1676, 3037,
3577      1672, 3038, 3039, 1675, 1677, 1677, 1677, 1678, 1678, 1678,
3578      3040, 1667, 3041, 1676, 1679, 1679, 1679, 1668, 1680, 1680,
3579      1680, 1677, 1681, 1681, 1681, 1678, 1682, 1682, 1682, 1685,
3580      1685, 1685, 1679, 1675, 3042, 1680, 1684, 1684, 1684, 1681,
3581      3043, 1672, 3044, 1682, 1683, 1683, 1683, 1685, 1683, 3048,
3582      3046, 1683, 3049, 1684, 1686, 1686, 1686, 1687, 1687, 1687,
3583
3584      3050, 1687, 3046, 3051, 1687, 1688, 1688, 1688, 1689, 1689,
3585      1689, 1686, 1678, 3052, 1690, 1690, 1690, 3053, 1690, 1679,
3586      1681, 1690, 1688, 3054, 3056, 1689, 1693, 1693, 1693, 1685,
3587      1694, 1694, 1694, 1695, 1695, 1695, 1696, 1696, 1696, 1697,
3588      1697, 1697, 3047, 1693, 1698, 1698, 1698, 1694, 3061, 2884,
3589      1695, 3062, 3063, 1696, 3047, 3064, 1697, 1699, 1699, 1699,
3590      3065, 1698, 1700, 1700, 1700, 2884, 1700, 2884, 3066, 1700,
3591      3070, 3071, 1689, 3073, 1699, 1701, 1701, 1701, 3075, 1694,
3592      2884, 1702, 1702, 1702, 3078, 1697, 1703, 1703, 1703, 3079,
3593      1693, 3076, 1701, 3080, 1696, 3081, 3082, 1698, 1702, 1704,
3594
3595      1704, 1704, 3083, 1703, 1705, 1705, 1705, 1708, 1708, 1708,
3596      3084, 1708, 3085, 3086, 1708, 3087, 3076, 1704, 1711, 1711,
3597      1711, 3088, 1705, 1712, 1712, 1712, 3089, 3090, 1702, 1713,
3598      1713, 1713, 3091, 1713, 3092, 1711, 1713, 3093, 3094, 1703,
3599      1712, 3095, 1715, 1715, 1715, 1717, 1717, 1717, 3098, 1717,
3600      3099, 3100, 1717, 1720, 1720, 1720, 1724, 1724, 1724, 1705,
3601      1715, 3101, 1721, 1721, 1721, 1704, 1721, 3102, 3103, 1721,
3602      3106, 1720, 3107, 3108, 1724, 1729, 1729, 1729, 1731, 1731,
3603      1731, 1732, 1732, 1732, 1733, 1733, 1733, 3109, 1733, 3110,
3604      3111, 1733, 3108, 1729, 3112, 3113, 1731, 3114, 1732, 1720,
3605
3606      1734, 1734, 1734, 1735, 1735, 1735, 3115, 1735, 3116, 3117,
3607      1735, 1739, 1739, 1739, 1741, 1741, 1741, 3118, 1734, 1743,
3608      1743, 1743, 3119, 1724, 1731, 3120, 1742, 1742, 1742, 1739,
3609      1742, 1741, 3121, 1742, 3122, 3123, 1743, 1745, 1745, 1745,
3610      1746, 1746, 1746, 3124, 1746, 3125, 3126, 1746, 1748, 1748,
3611      1748, 1751, 1751, 1751, 1745, 1756, 1756, 1756, 1734, 1756,
3612      3127, 3128, 1756, 1762, 1762, 1762, 1748, 3129, 3130, 1751,
3613      1764, 1764, 1764, 1766, 1766, 1766, 3131, 1739, 1765, 1765,
3614      1765, 1762, 1765, 3132, 3136, 1765, 3137, 1764, 1768, 1768,
3615      1768, 1766, 1768, 3139, 3140, 1768, 3141, 1772, 1772, 1772,
3616
3617      3143, 1772, 3135, 1751, 1772, 1776, 1776, 1776, 1778, 1778,
3618      1778, 1780, 1780, 1780, 1762, 1781, 1781, 1781, 1782, 1782,
3619      1782, 3144, 3135, 1776, 3145, 3146, 1778, 3147, 3148, 1780,
3620      3149, 3150, 1781, 3151, 3152, 1782, 1783, 1783, 1783, 1784,
3621      1784, 1784, 3153, 1786, 1786, 1786, 3154, 1787, 1787, 1787,
3622      3155, 1787, 3156, 1783, 1787, 3157, 3158, 1784, 3159, 1778,
3623      1786, 3161, 1780, 1788, 1788, 1788, 1776, 1788, 3162, 3164,
3624      1788, 1791, 1791, 1791, 1793, 1793, 1793, 3160, 1793, 3165,
3625      3167, 1793, 3168, 3160, 1782, 3169, 1784, 3170, 3171, 1791,
3626      1798, 1798, 1798, 1800, 1800, 1800, 3172, 1800, 3174, 3175,
3627
3628      1800, 3177, 1803, 1803, 1803, 1804, 1804, 1804, 1798, 1804,
3629      3178, 3180, 1804, 1805, 1805, 1805, 3181, 3184, 1791, 1803,
3630      1810, 1810, 1810, 1822, 1822, 1822, 1825, 1825, 1825, 3186,
3631      3188, 1805, 1826, 1826, 1826, 3189, 3190, 1810, 1827, 1827,
3632      1827, 1798, 1829, 1829, 1829, 1838, 1838, 1838, 1839, 1839,
3633      1839, 1841, 1841, 1841, 1843, 1843, 1843, 3191, 1844, 1844,
3634      1844, 3183, 1844, 3193, 1805, 1844, 1845, 1845, 1845, 3195,
3635      3197, 1843, 1846, 1846, 1846, 3183, 1846, 3199, 3201, 1846,
3636      1848, 1848, 1848, 1845, 1850, 1850, 1850, 3202, 1850, 3203,
3637      3204, 1850, 1853, 1853, 1853, 1855, 1855, 1855, 1848, 1856,
3638
3639      1856, 1856, 1857, 1857, 1857, 3205, 3206, 1858, 1858, 1858,
3640      1853, 1858, 1855, 3207, 1858, 3208, 3209, 1856, 3210, 1857,
3641      1859, 1859, 1859, 1860, 1860, 1860, 3214, 1860, 3216, 3218,
3642      1860, 1861, 1861, 1861, 1862, 1862, 1862, 1859, 1863, 1863,
3643      1863, 3219, 3220, 1853, 3221, 3238, 1848, 3230, 3222, 1861,
3644      3236, 1464, 1862, 3238, 3236, 1863, 3231, 1864, 1864, 1864,
3645      1856, 1864, 3223, 3232, 1864, 1865, 1865, 1865, 1866, 1866,
3646      1866, 1460, 1866, 3233, 1459, 1866, 1869, 1869, 1869, 1870,
3647      1870, 1870, 1865, 1870, 3222, 3234, 1870, 1871, 1871, 1871,
3648      1872, 1872, 1872, 1869, 1872, 3230, 1861, 1872, 3223, 1862,
3649
3650      1875, 1875, 1875, 3235, 3231, 1871, 1876, 1876, 1876, 3242,
3651      1876, 3232, 3244, 1876, 1880, 1880, 1880, 1875, 1881, 1881,
3652      1881, 3233, 1881, 3250, 3329, 1881, 1882, 1882, 1882, 3234,
3653      3245, 1880, 1885, 1885, 1885, 3329, 1885, 3248, 1871, 1885,
3654      1888, 1888, 1888, 1882, 1889, 1889, 1889, 3235, 1889, 3244,
3655      1458, 1889, 1892, 1892, 1892, 1457, 3242, 1888, 1893, 1893,
3656      1893, 1896, 1896, 1896, 1897, 1897, 1897, 3245, 1897, 3250,
3657      1892, 1897, 3248, 1898, 1898, 1898, 1893, 1898, 1896, 3246,
3658      1898, 1902, 1902, 1902, 1904, 1904, 1904, 1905, 1905, 1905,
3659      1906, 1906, 1906, 1908, 1908, 1908, 1911, 1911, 1911, 1902,
3660
3661      1914, 1914, 1914, 1892, 3239, 1905, 3243, 1456, 1906, 3237,
3662      1908, 1893, 3239, 3237, 1911, 1915, 1915, 1915, 1914, 1915,
3663      3246, 3260, 1915, 1918, 1918, 1918, 1920, 1920, 1920, 1922,
3664      1922, 1922, 3254, 1922, 3240, 3241, 1922, 3251, 1453, 1908,
3665      1906, 1918, 3240, 3241, 1920, 1905, 1925, 1925, 1925, 1914,
3666      1926, 1926, 1926, 3243, 1926, 3260, 3247, 1926, 1928, 1928,
3667      1928, 3252, 1928, 1925, 3254, 1928, 1932, 1932, 1932, 1918,
3668      1935, 1935, 1935, 1936, 1936, 1936, 1937, 1937, 1937, 1939,
3669      1939, 1939, 3249, 3251, 1932, 3261, 3262, 1935, 1944, 1944,
3670      1944, 1936, 1946, 1946, 1946, 3253, 1946, 3247, 3252, 1946,
3671
3672      1949, 1949, 1949, 1952, 1952, 1952, 1944, 1954, 1954, 1954,
3673      1956, 1956, 1956, 1958, 1958, 1958, 3263, 3249, 1949, 3261,
3674      1952, 1959, 1959, 1959, 3255, 1954, 3258, 3259, 1956, 3262,
3675      3266, 1958, 3253, 3264, 1936, 1960, 1960, 1960, 1959, 1960,
3676      3256, 1451, 1960, 1961, 1961, 1961, 1962, 1962, 1962, 3256,
3677      1963, 1963, 1963, 1944, 1963, 3257, 3255, 1963, 1450, 3263,
3678      1961, 3258, 3259, 1962, 3257, 3266, 1954, 1964, 1964, 1964,
3679      1965, 1965, 1965, 3280, 1966, 1966, 1966, 1958, 1966, 3264,
3680      3267, 1966, 1969, 1969, 1969, 1964, 1449, 1965, 3284, 1961,
3681      1973, 1973, 1973, 1974, 1974, 1974, 1448, 1983, 1983, 1983,
3682
3683      1969, 1983, 3280, 1447, 1983, 1986, 1986, 1986, 1973, 1445,
3684      1974, 1990, 1990, 1990, 1444, 3267, 1965, 1991, 1991, 1991,
3685      1964, 1991, 3284, 1986, 1991, 1992, 1992, 1992, 1990, 1997,
3686      1997, 1997, 1998, 1998, 1998, 1969, 1999, 1999, 1999, 2001,
3687      2001, 2001, 2005, 2005, 2005, 2006, 2006, 2006, 2007, 2007,
3688      2007, 1986, 2008, 2008, 2008, 2010, 2010, 2010, 2014, 2014,
3689      2014, 2015, 2015, 2015, 2017, 2017, 2017, 2018, 2018, 2018,
3690      2019, 2019, 2019, 2021, 2021, 2021, 3265, 2021, 3268, 3281,
3691      2021, 2024, 2024, 2024, 1443, 2024, 3272, 3269, 2024, 2028,
3692      2028, 2028, 2030, 2030, 2030, 2032, 2032, 2032, 2008, 2033,
3693
3694      2033, 2033, 3274, 2033, 3276, 3275, 2033, 2028, 3281, 3290,
3695      2030, 3268, 2032, 2034, 2034, 2034, 2019, 2035, 2035, 2035,
3696      3269, 2035, 3265, 3272, 2035, 2038, 2038, 2038, 3273, 2038,
3697      3270, 2034, 2038, 2041, 2041, 2041, 2042, 2042, 2042, 3270,
3698      2028, 2043, 2043, 2043, 3274, 2043, 3271, 3275, 2043, 3291,
3699      3276, 2041, 2030, 2041, 2042, 3271, 3290, 2046, 2046, 2046,
3700      2047, 2047, 2047, 1442, 2047, 3273, 3294, 2047, 2051, 2051,
3701      2051, 3278, 2042, 2034, 2046, 2048, 2048, 2048, 3279, 2048,
3702      3282, 3277, 2048, 2052, 2052, 2052, 2051, 2052, 3283, 3282,
3703      2052, 2058, 2058, 2058, 3285, 2058, 3291, 3283, 2058, 2061,
3704
3705      2061, 2061, 2062, 2062, 2062, 3288, 2062, 3294, 3278, 2062,
3706      2065, 2065, 2065, 3288, 2065, 3279, 2061, 2065, 2069, 2069,
3707      2069, 2070, 2070, 2070, 2071, 2071, 2071, 3277, 3285, 2074,
3708      2074, 2074, 3289, 2074, 2051, 2069, 2074, 3286, 1440, 2070,
3709      3289, 3287, 2071, 2078, 2078, 2078, 2079, 2079, 2079, 2081,
3710      2081, 2081, 2082, 2082, 2082, 3295, 2082, 1439, 1437, 2082,
3711      1436, 2078, 1434, 1432, 2079, 3292, 2081, 3293, 2087, 2087,
3712      2087, 2088, 2088, 2088, 2090, 2090, 2090, 2093, 2093, 2093,
3713      1431, 2093, 3320, 3286, 2093, 2070, 2087, 3287, 3296, 2088,
3714      3298, 3320, 2090, 2099, 2099, 2099, 3295, 2079, 2078, 2100,
3715
3716      2100, 2100, 3292, 2100, 3293, 3300, 2100, 2101, 2101, 2101,
3717      2099, 2102, 2102, 2102, 2103, 2103, 2103, 2104, 2104, 2104,
3718      2105, 2105, 2105, 3296, 3297, 2101, 2106, 2106, 2106, 2107,
3719      2107, 2107, 3302, 2088, 2087, 1430, 3298, 2105, 2108, 2108,
3720      2108, 3299, 3300, 2106, 3303, 3304, 2107, 2109, 2109, 2109,
3721      2112, 2112, 2112, 3304, 3301, 2108, 2113, 2113, 2113, 3297,
3722      2113, 3328, 1429, 2113, 3302, 2109, 3310, 2112, 2115, 2115,
3723      2115, 2101, 2117, 2117, 2117, 3328, 3303, 2106, 2120, 2120,
3724      2120, 2121, 2121, 2121, 3305, 2121, 2115, 3299, 2121, 3306,
3725      2117, 3301, 3305, 2107, 3312, 1428, 2120, 2108, 2124, 2124,
3726
3727      2124, 2125, 2125, 2125, 3314, 2125, 3311, 3310, 2125, 2127,
3728      2127, 2127, 2109, 2127, 1427, 2124, 2127, 2130, 2130, 2130,
3729      2131, 2131, 2131, 2132, 2132, 2132, 1426, 2132, 3308, 3312,
3730      2132, 2134, 2134, 2134, 3307, 2130, 3306, 2131, 2138, 2138,
3731      2138, 2140, 2140, 2140, 2141, 2141, 2141, 3311, 2141, 2134,
3732      3314, 2141, 2152, 2152, 2152, 1423, 2138, 1422, 2140, 2153,
3733      2153, 2153, 2156, 2156, 2156, 3308, 2156, 1421, 2130, 2156,
3734      2152, 2159, 2159, 2159, 2160, 2160, 2160, 2153, 2161, 2161,
3735      2161, 3307, 2134, 2164, 2164, 2164, 2165, 2165, 2165, 2167,
3736      2167, 2167, 2168, 2168, 2168, 2170, 2170, 2170, 2171, 2171,
3737
3738      2171, 2152, 2172, 2172, 2172, 2175, 2175, 2175, 2176, 2176,
3739      2176, 2179, 2179, 2179, 2180, 2180, 2180, 2182, 2182, 2182,
3740      2183, 2183, 2183, 2187, 2187, 2187, 2188, 2188, 2188, 2189,
3741      2189, 2189, 2190, 2190, 2190, 2191, 2191, 2191, 3309, 2191,
3742      3315, 2187, 2191, 2194, 2194, 2194, 3313, 2189, 3318, 2190,
3743      2195, 2195, 2195, 2196, 2196, 2196, 2197, 2197, 2197, 3316,
3744      2197, 2194, 1412, 2197, 2200, 2200, 2200, 1410, 2195, 3321,
3745      3319, 2196, 2204, 2204, 2204, 3309, 2204, 1405, 3321, 2204,
3746      3318, 3313, 2200, 2207, 2207, 2207, 3315, 2195, 2210, 2210,
3747      2210, 2212, 2212, 2212, 2194, 2189, 3316, 2211, 2211, 2211,
3748
3749      2207, 2211, 3319, 1399, 2211, 2210, 2213, 2213, 2213, 2212,
3750      2218, 2218, 2218, 3324, 2196, 2219, 2219, 2219, 2220, 2220,
3751      2220, 2224, 2224, 2224, 2213, 2221, 2221, 2221, 2218, 2221,
3752      3317, 3322, 2221, 2219, 1393, 2220, 3323, 3325, 2224, 2225,
3753      2225, 2225, 2226, 2226, 2226, 2227, 2227, 2227, 2228, 2228,
3754      2228, 2229, 2229, 2229, 3326, 1389, 2225, 1384, 1380, 2226,
3755      3327, 3324, 2227, 3322, 2220, 1379, 2228, 3317, 3323, 2229,
3756      2218, 2230, 2230, 2230, 1371, 1366, 2224, 2234, 2234, 2234,
3757      2235, 2235, 2235, 1357, 2235, 3325, 3326, 2235, 2230, 2238,
3758      2238, 2238, 3327, 2226, 2239, 2239, 2239, 2240, 2240, 2240,
3759
3760      2225, 1355, 2241, 2241, 2241, 1346, 2241, 2238, 2228, 2241,
3761      2242, 2242, 2242, 1341, 2240, 2229, 2243, 2243, 2243, 2244,
3762      2244, 2244, 2245, 2245, 2245, 1337, 1332, 2242, 2246, 2246,
3763      2246, 1331, 1330, 2243, 1328, 1327, 2244, 2247, 2247, 2247,
3764      2245, 1325, 2248, 2248, 2248, 1320, 2248, 1319, 2238, 2248,
3765      1314, 2251, 2251, 2251, 2247, 2252, 2252, 2252, 2256, 2256,
3766      2256, 1313, 2258, 2258, 2258, 1307, 2258, 2243, 2251, 2258,
3767      2244, 1306, 1305, 2252, 1304, 1293, 2256, 2262, 2262, 2262,
3768      2263, 2263, 2263, 1282, 2263, 1277, 1276, 2263, 2267, 2267,
3769      2267, 1275, 2271, 2271, 2271, 2262, 2271, 1271, 1254, 2271,
3770
3771      2284, 2284, 2284, 2285, 2285, 2285, 2267, 2298, 2298, 2298,
3772      2299, 2299, 2299, 2302, 2302, 2302, 1249, 2251, 2284, 1248,
3773      1247, 2285, 2303, 2303, 2303, 2305, 2305, 2305, 2308, 2308,
3774      2308, 2311, 2311, 2311, 2267, 2315, 2315, 2315, 2317, 2317,
3775      2317, 2318, 2318, 2318, 1242, 2319, 2319, 2319, 2320, 2320,
3776      2320, 1241, 2320, 2315, 1228, 2320, 2321, 2321, 2321, 2318,
3777      1227, 2284, 2319, 1226, 1225, 2285, 2322, 2322, 2322, 2323,
3778      2323, 2323, 1224, 1223, 2321, 2324, 2324, 2324, 2330, 2330,
3779      2330, 2331, 2331, 2331, 2322, 2331, 1222, 2323, 2331, 1221,
3780      2334, 2334, 2334, 2324, 2334, 2330, 1211, 2334, 2337, 2337,
3781
3782      2337, 2341, 2341, 2341, 2342, 2342, 2342, 2343, 2343, 2343,
3783      2345, 2345, 2345, 2346, 2346, 2346, 2337, 2346, 2341, 1210,
3784      2346, 1209, 2342, 1204, 1203, 2343, 1202, 2345, 1201, 1178,
3785      2322, 2350, 2350, 2350, 1177, 1170, 2323, 2351, 2351, 2351,
3786      2352, 2352, 2352, 1166, 2352, 1161, 1160, 2352, 2350, 2353,
3787      2353, 2353, 1155, 1152, 2351, 2354, 2354, 2354, 2355, 2355,
3788      2355, 2342, 2356, 2356, 2356, 1151, 2356, 2353, 1148, 2356,
3789      2359, 2359, 2359, 2354, 1147, 2355, 2360, 2360, 2360, 2361,
3790      2361, 2361, 2362, 2362, 2362, 1146, 2362, 2359, 1145, 2362,
3791      2365, 2365, 2365, 1144, 2366, 2366, 2366, 2361, 2366, 1143,
3792
3793      1142, 2366, 2367, 2367, 2367, 1141, 1140, 2365, 2368, 2368,
3794      2368, 2369, 2369, 2369, 1139, 1138, 2354, 1137, 1136, 2367,
3795      2371, 2371, 2371, 1135, 1132, 2368, 2372, 2372, 2372, 2369,
3796      2373, 2373, 2373, 1131, 2373, 1130, 1129, 2373, 2374, 2374,
3797      2374, 1127, 1126, 2372, 2378, 2378, 2378, 2381, 2381, 2381,
3798      2394, 2394, 2394, 1125, 1124, 2374, 2412, 2412, 2412, 2413,
3799      2413, 2413, 2378, 1123, 1122, 2381, 1121, 1120, 2394, 2418,
3800      2418, 2418, 2421, 2421, 2421, 1119, 2422, 2422, 2422, 2424,
3801      2424, 2424, 1118, 2424, 1117, 1116, 2424, 1115, 1114, 2421,
3802      2427, 2427, 2427, 2374, 2422, 1108, 2429, 2429, 2429, 2430,
3803
3804      2430, 2430, 2433, 2433, 2433, 2435, 2435, 2435, 2427, 2435,
3805      2394, 1104, 2435, 2381, 2429, 1101, 1100, 2430, 1099, 2433,
3806      2447, 2447, 2447, 2448, 2448, 2448, 2449, 2449, 2449, 1097,
3807      2449, 1093, 1090, 2449, 2450, 2450, 2450, 2447, 1089, 1088,
3808      2448, 2451, 2451, 2451, 1084, 2451, 1083, 1080, 2451, 2457,
3809      2457, 2457, 2450, 1076, 2458, 2458, 2458, 2429, 2458, 1075,
3810      1072, 2458, 2462, 2462, 2462, 2430, 2457, 2459, 2459, 2459,
3811      1069, 2459, 1066, 1065, 2459, 2464, 2464, 2464, 1060, 1052,
3812      2462, 2465, 2465, 2465, 1051, 2465, 1050, 1048, 2465, 2469,
3813      2469, 2469, 1044, 2464, 2470, 2470, 2470, 2471, 2471, 2471,
3814
3815      1041, 2471, 1038, 1035, 2471, 1034, 2469, 2472, 2472, 2472,
3816      1033, 2470, 2474, 2474, 2474, 1032, 2474, 1031, 1030, 2474,
3817      1029, 2477, 2477, 2477, 1028, 2472, 2478, 2478, 2478, 1025,
3818      2478, 1024, 1021, 2478, 2479, 2479, 2479, 2464, 2477, 2480,
3819      2480, 2480, 1020, 2480, 1016, 1014, 2480, 1011, 2481, 2481,
3820      2481, 2479, 2481, 1010, 1007, 2481, 2484, 2484, 2484, 2485,
3821      2485, 2485, 2486, 2486, 2486, 2489, 2489, 2489, 2490, 2490,
3822      2490, 1000,  997, 2484,  996,  995, 2485,  992,  988, 2486,
3823      2491, 2491, 2491, 2489, 2502, 2502, 2502, 2519, 2519, 2519,
3824      2520, 2520, 2520, 2524, 2524, 2524,  981, 2491, 2527, 2527,
3825
3826      2527,  977, 2502, 2528, 2528, 2528,  976, 2528,  975,  972,
3827      2528, 2529, 2529, 2529,  971, 2527,  970, 2484,  963, 2530,
3828      2530, 2530, 2532, 2532, 2532, 2533, 2533, 2533,  962, 2529,
3829       961, 2534, 2534, 2534,  960, 2534, 2489, 2530, 2534, 2532,
3830       959,  958, 2533,  957, 2502, 2535, 2535, 2535, 2547, 2547,
3831      2547, 2548, 2548, 2548,  956, 2548,  955,  951, 2548, 2549,
3832      2549, 2549, 2535, 2549,  925, 2547, 2549, 2552, 2552, 2552,
3833      2530, 2555, 2555, 2555,  922, 2557, 2557, 2557, 2529, 2557,
3834       919,  918, 2557,  911,  910, 2552,  908,  907, 2555, 2566,
3835      2566, 2566, 2568, 2568, 2568, 2569, 2569, 2569,  906, 2569,
3836
3837       905,  904, 2569,  903, 2570, 2570, 2570, 2566, 2570, 2568,
3838       902, 2570, 2573, 2573, 2573,  901, 2573,  900,  899, 2573,
3839      2576, 2576, 2576,  898, 2576,  896,  895, 2576, 2585, 2585,
3840      2585, 2586, 2586, 2586, 2587, 2587, 2587,  894, 2587,  893,
3841       892, 2587, 2588, 2588, 2588, 2585,  891,  890, 2586, 2589,
3842      2589, 2589,  889, 2589,  887,  886, 2589,  885,  884, 2588,
3843      2590, 2590, 2590, 2591, 2591, 2591, 2592, 2592, 2592, 2593,
3844      2593, 2593, 2594, 2594, 2594,  883,  882, 2590,  881,  880,
3845      2591, 2606, 2606, 2606, 2592, 2609, 2609, 2609, 2585, 2594,
3846      2595, 2595, 2595,  879, 2595,  875,  871, 2595,  870, 2606,
3847
3848       869,  868, 2609, 2609, 2623, 2623, 2623, 2624, 2624, 2624,
3849      2627, 2627, 2627, 2628, 2628, 2628, 2630, 2630, 2630,  867,
3850      2630,  863,  861, 2630, 2633, 2633, 2633,  860, 2592, 2634,
3851      2634, 2634, 2606, 2636, 2636, 2636, 2637, 2637, 2637,  859,
3852      2637,  858, 2633, 2637, 2638, 2638, 2638, 2634, 2638,  857,
3853      2636, 2638, 2641, 2641, 2641, 2642, 2642, 2642,  856, 2642,
3854       853,  852, 2642, 2654, 2654, 2654,  850, 2654,  848, 2641,
3855      2654, 2658, 2658, 2658, 2659, 2659, 2659,  845, 2659,  844,
3856       843, 2659, 2667, 2667, 2667, 2670, 2670, 2670, 2658, 2670,
3857      2633,  842, 2670, 2685, 2685, 2685,  840, 2686, 2686, 2686,
3858
3859      2667, 2686,  837,  836, 2686, 2689, 2689, 2689,  834, 2689,
3860      2685,  833, 2689, 2692, 2692, 2692, 2693, 2693, 2693,  830,
3861      2693,  828,  825, 2693, 2694, 2694, 2694, 2695, 2695, 2695,
3862      2692, 2695,  824,  823, 2695, 2696, 2696, 2696, 2697, 2697,
3863      2697, 2694, 2697,  822,  819, 2697, 2708, 2708, 2708, 2710,
3864      2710, 2710,  818, 2696, 2711, 2711, 2711,  817, 2712, 2712,
3865      2712,  816, 2712,  815, 2708, 2712, 2710, 2710, 2725, 2725,
3866      2725, 2711, 2711, 2726, 2726, 2726, 2712, 2727, 2727, 2727,
3867      2728, 2728, 2728, 2729, 2729, 2729, 2696, 2730, 2730, 2730,
3868      2735, 2735, 2735,  814,  813, 2708, 2736, 2736, 2736, 2739,
3869
3870      2739, 2739,  811, 2739,  808,  807, 2739,  803, 2735, 2742,
3871      2742, 2742,  802, 2742, 2736,  801, 2742, 2745, 2745, 2745,
3872      2756, 2756, 2756, 2757, 2757, 2757,  800, 2757,  799,  798,
3873      2757, 2760, 2760, 2760, 2745,  797,  789, 2756, 2780, 2780,
3874      2780, 2735, 2781, 2781, 2781,  788, 2781,  785, 2760, 2781,
3875      2786, 2786, 2786,  784, 2786, 2780,  783, 2786, 2789, 2789,
3876      2789,  782, 2789,  781,  779, 2789, 2792, 2792, 2792, 2801,
3877      2801, 2801, 2803, 2803, 2803, 2804, 2804, 2804,  778, 2804,
3878       777,  774, 2804,  773, 2792,  772,  769, 2801,  768, 2803,
3879      2803,  764,  762, 2804, 2805, 2805, 2805,  759, 2805,  758,
3880
3881       757, 2805, 2816, 2816, 2816, 2817, 2817, 2817, 2818, 2818,
3882      2818,  756, 2805, 2819, 2819, 2819, 2824, 2824, 2824, 2827,
3883      2827, 2827,  754, 2827,  751,  750, 2827,  749, 2826, 2826,
3884      2826, 2828, 2828, 2828, 2824, 2801, 2806, 2806, 2806, 2806,
3885      2806, 2806, 2806, 2806, 2806, 2826,  746, 2806, 2828, 2838,
3886      2838, 2838, 2806, 2806, 2806, 2806, 2806, 2839, 2839, 2839,
3887       743, 2839,  740,  739, 2839,  738, 2838, 2841, 2841, 2841,
3888       737, 2841,  736,  733, 2841, 2840, 2840, 2840, 2866, 2866,
3889      2866, 2806, 2806, 2807, 2807, 2807, 2807, 2807, 2807, 2807,
3890      2807, 2807, 2840,  730, 2807,  726, 2866,  725,  724, 2807,
3891
3892      2807, 2807, 2807, 2807, 2859, 2859, 2859,  723, 2859,  722,
3893       721, 2859, 2874, 2874, 2874, 2876, 2876, 2876,  720, 2876,
3894       719,  718, 2876,  717,  716, 2891, 2891, 2891, 2807, 2807,
3895      2874,  714,  712, 2876, 2879, 2879, 2879, 2879, 2879, 2879,
3896      2879, 2879, 2879, 2891,  709, 2879, 2897, 2897, 2897,  708,
3897      2879, 2879, 2879, 2879, 2879, 2894, 2894, 2894,  707, 2894,
3898       706,  705, 2894, 2897, 2898, 2898, 2898,  704, 2898,  699,
3899       698, 2898, 2939, 2939, 2939, 2947, 2947, 2947,  697, 2879,
3900      2879, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880,
3901      2939,  694, 2880, 2947, 2947,  693,  692, 2880, 2880, 2880,
3902
3903      2880, 2880, 2906, 2906, 2906,  691, 2906,  688,  687, 2906,
3904      2909, 2909, 2909,  685, 2909,  682,  681, 2909, 2962, 2962,
3905      2962, 2967, 2967, 2967,  678, 2967, 2880, 2880, 2967, 2974,
3906      2974, 2974, 2979, 2979, 2979, 2962, 2992, 2992, 2992, 2996,
3907      2996, 2996, 3007, 3007, 3007,  677, 2974,  676,  675, 2979,
3908       674, 3008, 3008, 3008, 2992, 3008,  673, 2996, 3008, 3007,
3909      3019, 3019, 3019, 3020, 3020, 3020,  665, 3020,  664,  663,
3910      3020, 3027, 3027, 3027, 3028, 3028, 3028, 3019, 3028,  660,
3911       659, 3028, 3035, 3035, 3035, 3045, 3045, 3045, 3027, 3045,
3912      2996,  658, 3045,  655, 3058, 3058, 3058,  653, 3058,  652,
3913
3914      3035, 3058, 3067, 3067, 3067,  649, 3067,  648,  647, 3067,
3915      3200, 3200, 3200, 3211, 3211, 3211,  646, 3211,  643, 3035,
3916      3211, 3330, 3330, 3330, 3331, 3331, 3331,  642, 3200,  641,
3917       640, 3211,  636,  635,  634,  633,  627,  626,  624, 3330,
3918       618,  617, 3331, 3334, 3334, 3334, 3334, 3334, 3334, 3334,
3919      3334, 3334, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335,
3920      3335, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336,
3921      3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3338,
3922      3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3339, 3339,
3923      3339, 3339, 3339, 3339, 3339, 3339, 3339, 3340, 3340, 3340,
3924
3925      3340, 3340, 3340, 3340, 3340, 3340, 3341, 3341, 3341, 3341,
3926      3341, 3341, 3341, 3341, 3341, 3342, 3342, 3342, 3342, 3342,
3927      3342, 3342, 3342, 3342, 3343, 3343, 3343, 3343, 3343, 3343,
3928      3343, 3343, 3343, 3344, 3344, 3344, 3344, 3344, 3344, 3344,
3929      3344, 3344, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345,
3930      3345, 3346, 3346, 3346, 3346, 3346, 3346, 3346, 3346, 3346,
3931      3347, 3347, 3347, 3347, 3347, 3347, 3347, 3347, 3347, 3348,
3932      3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3349, 3349,
3933      3349, 3349, 3349, 3349, 3349, 3349, 3349, 3350, 3350, 3350,
3934      3350, 3350, 3350, 3350, 3350, 3350, 3351, 3351, 3351, 3351,
3935
3936      3351, 3351, 3351, 3351, 3351, 3352, 3352, 3352, 3352, 3352,
3937      3352, 3352, 3352, 3352, 3353, 3353, 3353, 3353, 3353, 3353,
3938      3353, 3353, 3353, 3354, 3354, 3354, 3354, 3354, 3354, 3354,
3939      3354, 3354, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355,
3940      3355, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356,
3941      3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3358,
3942      3358, 3358, 3358, 3358, 3358, 3358, 3358, 3358, 3359, 3359,
3943      3359, 3359, 3359, 3359, 3359, 3359, 3359, 3360, 3360, 3360,
3944      3360, 3360, 3360, 3360, 3360, 3360, 3361, 3361, 3361, 3361,
3945      3361, 3361, 3361, 3361, 3361, 3362, 3362, 3362, 3362, 3362,
3946
3947      3362, 3362, 3362, 3362, 3363, 3363, 3363, 3363, 3363, 3363,
3948      3363, 3363, 3363, 3364, 3364, 3364, 3364, 3364, 3364, 3364,
3949      3364, 3364, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365,
3950      3365, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366,
3951      3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3368,
3952      3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3369, 3369,
3953      3369, 3369, 3369, 3369, 3369, 3369, 3369, 3370, 3370, 3370,
3954      3370, 3370, 3370, 3370, 3370, 3370, 3371, 3371, 3371, 3371,
3955      3371, 3371, 3371, 3371, 3371, 3372, 3372, 3372, 3372, 3372,
3956      3372, 3372, 3372, 3372, 3373, 3373, 3373, 3373, 3373, 3373,
3957
3958      3373, 3373, 3373, 3374, 3374, 3374, 3374, 3374, 3374, 3374,
3959      3374, 3374, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375,
3960      3375, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376,
3961      3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3378,
3962      3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3379, 3379,
3963      3379, 3379, 3379, 3379, 3379, 3379, 3379, 3380, 3380, 3380,
3964      3380, 3380, 3380, 3380, 3380, 3380, 3381, 3381, 3381, 3381,
3965      3381, 3381, 3381, 3381, 3381, 3382, 3382, 3382, 3382, 3382,
3966      3382, 3382, 3382, 3382, 3383, 3383, 3383, 3383, 3383, 3383,
3967      3383, 3383, 3383, 3384, 3384, 3384, 3384, 3384, 3384, 3384,
3968
3969      3384, 3384, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385,
3970      3385, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386,
3971      3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3388,
3972      3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3389, 3389,
3973      3389, 3389, 3389, 3389, 3389, 3389, 3389, 3390, 3390, 3390,
3974      3390, 3390, 3390, 3390, 3390, 3390, 3391, 3391, 3391, 3391,
3975      3391, 3391, 3391, 3391, 3391, 3392, 3392, 3392, 3392, 3392,
3976      3392, 3392, 3392, 3392, 3393, 3393, 3393, 3393, 3393, 3393,
3977      3393, 3393, 3393, 3394, 3394, 3394,  616,  612,  609, 3394,
3978      3395, 3395, 3395,  607,  606,  605, 3395, 3396, 3396, 3396,
3979
3980       601,  597,  593, 3396, 3397, 3397, 3397,  592,  591,  590,
3981      3397, 3398, 3398, 3398,  586,  582,  579, 3398, 3399, 3399,
3982      3399,  578,  577,  576, 3399, 3400, 3400, 3400,  572,  566,
3983       565, 3400, 3401, 3401, 3401,  561,  557,  553, 3401, 3402,
3984      3402, 3402,  549,  542,  540, 3402, 3403, 3403, 3403,  539,
3985       535,  529, 3403, 3404, 3404, 3404,  528,  524,  520, 3404,
3986      3405, 3405, 3405,  516,  515,  514, 3405, 3406, 3406, 3406,
3987       513,  512,  508, 3406, 3407, 3407, 3407,  504,  497,  493,
3988      3407, 3408, 3408, 3408,  485,  484,  483, 3408, 3409, 3409,
3989      3409,  482,  481,  477, 3409, 3410, 3410, 3410,  471,  470,
3990
3991       466, 3410, 3411, 3411, 3411,  460,  459,  455, 3411, 3412,
3992      3412, 3412,  449,  448,  444, 3412, 3413, 3413, 3413,  440,
3993       436,  435, 3413, 3414, 3414, 3414,  434,  430,  426, 3414,
3994      3415, 3415, 3415,  422,  418,  412, 3415, 3416, 3416, 3416,
3995       411,  410,  406, 3416, 3417, 3417, 3417,  402,  397,  396,
3996      3417, 3418, 3418, 3418,  395,  394,  390, 3418, 3419, 3419,
3997      3419,  386,  383,  379, 3419, 3420, 3420, 3420,  375,  372,
3998       369, 3420, 3421, 3421, 3421, 3421, 3421, 3421, 3421,  367,
3999      3421, 3422, 3422, 3422,  366,  361,  354, 3422, 3423,  353,
4000       352,  351, 3423, 3424, 3424, 3424,  350,  346,  342, 3424,
4001
4002      3425,  339,  338,  334, 3425, 3426, 3426, 3426,  330,  327,
4003       326, 3426, 3427,  325,  321,  315, 3427, 3428, 3428, 3428,
4004       314,  313,  309, 3428, 3429,  303,  299,  296, 3429, 3430,
4005      3430, 3430,  295,  290,  289, 3430, 3431,  285,  281,  277,
4006      3431, 3432, 3432, 3432,  273,  272,  268, 3432, 3433,  265,
4007       264,  263, 3433, 3434, 3434, 3434,  257,  256,  254, 3434,
4008      3435,  251,  239,    0, 3435, 3436, 3436, 3436,    0,    0,
4009         0, 3436, 3437,    0,    0,    0, 3437, 3438, 3438, 3438,
4010         0,    0,    0, 3438, 3439,    0,    0,    0, 3439, 3440,
4011      3440, 3440,    0,    0,    0, 3440, 3441,    0,    0,    0,
4012
4013      3441, 3442, 3442, 3442,    0,    0,    0, 3442, 3443,    0,
4014         0,    0, 3443, 3444, 3444, 3444,    0,    0,    0, 3444,
4015      3445,    0,    0,    0, 3445, 3446, 3446, 3446,    0,    0,
4016         0, 3446, 3447,    0,    0,    0, 3447, 3448, 3448, 3448,
4017         0,    0,    0, 3448, 3449,    0,    0,    0, 3449, 3450,
4018      3450, 3450,    0,    0,    0, 3450, 3451,    0,    0,    0,
4019      3451, 3452, 3452, 3452,    0,    0,    0, 3452, 3453,    0,
4020         0,    0, 3453, 3454, 3454, 3454,    0,    0,    0, 3454,
4021      3455,    0,    0,    0, 3455, 3456, 3456, 3456,    0,    0,
4022         0, 3456, 3457,    0,    0,    0, 3457, 3458, 3458, 3458,
4023
4024         0,    0,    0, 3458, 3459,    0,    0,    0, 3459, 3460,
4025      3460, 3460,    0,    0,    0, 3460, 3461,    0,    0,    0,
4026      3461, 3462, 3462, 3462,    0,    0,    0, 3462, 3463,    0,
4027         0,    0, 3463, 3464, 3464, 3464,    0,    0,    0, 3464,
4028      3465,    0,    0,    0, 3465, 3466, 3466, 3466,    0,    0,
4029         0, 3466, 3467,    0,    0,    0, 3467, 3468, 3468, 3468,
4030         0,    0,    0, 3468, 3469,    0,    0,    0, 3469, 3470,
4031      3470, 3470,    0,    0,    0, 3470, 3471,    0,    0,    0,
4032      3471, 3472, 3472, 3472,    0,    0,    0, 3472, 3473,    0,
4033         0,    0, 3473, 3474, 3474, 3474,    0,    0,    0, 3474,
4034
4035      3475,    0,    0,    0, 3475, 3476, 3476, 3476, 3476, 3476,
4036      3476, 3476, 3476, 3476, 3477,    0,    0,    0,    0, 3477,
4037      3478, 3478, 3478,    0,    0,    0, 3478, 3479, 3479, 3479,
4038      3479,    0,    0, 3479, 3479, 3480, 3480, 3480, 3480,    0,
4039      3480,    0, 3480, 3481, 3481, 3481, 3481,    0,    0, 3481,
4040      3481, 3482, 3482, 3482,    0,    0,    0, 3482, 3483, 3483,
4041      3483, 3483,    0,    0, 3483, 3483, 3484, 3484, 3484,    0,
4042         0,    0, 3484, 3485, 3485, 3485, 3485,    0,    0, 3485,
4043      3485, 3486, 3486, 3486, 3486,    0, 3486,    0, 3486, 3487,
4044      3487, 3487, 3487,    0,    0, 3487, 3487, 3488, 3488, 3488,
4045
4046      3488,    0, 3488,    0, 3488, 3489, 3489, 3489, 3489,    0,
4047         0, 3489, 3489, 3490, 3490, 3490, 3490,    0, 3490,    0,
4048      3490, 3491, 3491, 3491, 3491,    0,    0, 3491, 3491, 3492,
4049      3492, 3492,    0,    0,    0, 3492, 3493, 3493, 3493, 3493,
4050         0,    0, 3493, 3493, 3494, 3494, 3494, 3494,    0,    0,
4051      3494, 3494, 3495, 3495, 3495,    0,    0,    0, 3495, 3496,
4052      3496, 3496, 3496,    0,    0, 3496, 3496, 3497, 3497, 3497,
4053         0,    0,    0, 3497, 3498, 3498, 3498, 3498,    0,    0,
4054      3498, 3498, 3499, 3499, 3499,    0,    0,    0, 3499, 3500,
4055      3500, 3500, 3500,    0,    0, 3500, 3500, 3501, 3501, 3501,
4056
4057         0,    0,    0, 3501, 3502, 3502, 3502, 3502,    0,    0,
4058      3502, 3502, 3503, 3503, 3503,    0,    0,    0, 3503, 3504,
4059      3504, 3504, 3504,    0,    0, 3504, 3504, 3505, 3505, 3505,
4060         0,    0,    0, 3505, 3506, 3506, 3506, 3506,    0,    0,
4061      3506, 3506, 3507, 3507, 3507,    0,    0,    0, 3507, 3508,
4062      3508, 3508, 3508,    0,    0, 3508, 3508, 3509, 3509, 3509,
4063         0,    0,    0, 3509, 3510, 3510, 3510, 3510,    0,    0,
4064      3510, 3510, 3511, 3511, 3511,    0,    0,    0, 3511, 3512,
4065      3512, 3512, 3512,    0,    0, 3512, 3512, 3513, 3513, 3513,
4066         0,    0,    0, 3513, 3514, 3514, 3514, 3514,    0,    0,
4067
4068      3514, 3514, 3515, 3515, 3515,    0,    0,    0, 3515, 3516,
4069      3516, 3516, 3516,    0,    0, 3516, 3516, 3517, 3517, 3517,
4070         0,    0,    0, 3517, 3518, 3518, 3518, 3518,    0,    0,
4071      3518, 3518, 3519, 3519, 3519, 3519,    0, 3519,    0, 3519,
4072      3520, 3520, 3520, 3520,    0,    0, 3520, 3520, 3521, 3521,
4073      3521,    0,    0,    0, 3521, 3522, 3522, 3522, 3522,    0,
4074         0, 3522, 3522, 3523, 3523, 3523,    0,    0,    0, 3523,
4075      3524, 3524, 3524, 3524,    0,    0, 3524, 3524, 3525, 3525,
4076      3525,    0,    0,    0, 3525, 3526, 3526, 3526, 3526,    0,
4077         0, 3526, 3526, 3527, 3527, 3527,    0,    0,    0, 3527,
4078
4079      3528, 3528, 3528, 3528,    0,    0, 3528, 3528, 3529, 3529,
4080      3529,    0,    0,    0, 3529, 3530, 3530, 3530, 3530,    0,
4081         0, 3530, 3530, 3531, 3531, 3531, 3531, 3531, 3531, 3531,
4082      3531, 3531, 3532,    0, 3532,    0,    0, 3532, 3533, 3533,
4083      3533,    0,    0,    0, 3533, 3534, 3534, 3534, 3534,    0,
4084         0, 3534, 3534, 3535, 3535, 3535,    0,    0,    0, 3535,
4085      3536, 3536, 3536, 3536,    0,    0, 3536, 3536, 3537, 3537,
4086      3537,    0,    0,    0, 3537, 3538, 3538, 3538, 3538,    0,
4087         0, 3538, 3538, 3539, 3539, 3539,    0,    0,    0, 3539,
4088      3540, 3540, 3540, 3540,    0,    0, 3540, 3540, 3541, 3541,
4089
4090      3541,    0,    0,    0, 3541, 3542, 3542, 3542, 3542,    0,
4091         0, 3542, 3542, 3543, 3543, 3543, 3543,    0,    0, 3543,
4092      3543, 3544, 3544, 3544,    0,    0,    0, 3544, 3545, 3545,
4093      3545, 3545,    0,    0, 3545, 3545, 3546, 3546, 3546,    0,
4094         0,    0, 3546, 3547, 3547, 3547, 3547,    0,    0, 3547,
4095      3547, 3548, 3548, 3548, 3548,    0,    0, 3548, 3548, 3549,
4096      3549, 3549,    0,    0,    0, 3549, 3550, 3550, 3550, 3550,
4097         0,    0, 3550, 3550, 3551, 3551, 3551, 3551,    0, 3551,
4098         0, 3551, 3552, 3552, 3552, 3552,    0,    0, 3552, 3552,
4099      3553, 3553, 3553, 3553,    0, 3553,    0, 3553, 3554, 3554,
4100
4101      3554, 3554,    0,    0, 3554, 3554, 3555, 3555, 3555,    0,
4102         0,    0, 3555, 3556, 3556, 3556, 3556,    0,    0, 3556,
4103      3556, 3557, 3557, 3557,    0,    0,    0, 3557, 3558, 3558,
4104      3558, 3558,    0,    0, 3558, 3558, 3559, 3559, 3559,    0,
4105         0,    0, 3559, 3560, 3560, 3560, 3560,    0,    0, 3560,
4106      3560, 3561, 3561, 3561, 3561,    0, 3561,    0, 3561, 3562,
4107      3562, 3562, 3562,    0,    0, 3562, 3562, 3563, 3563, 3563,
4108         0,    0,    0, 3563, 3564, 3564, 3564, 3564,    0,    0,
4109      3564, 3564, 3565, 3565, 3565,    0,    0,    0, 3565, 3566,
4110      3566, 3566, 3566,    0,    0, 3566, 3566, 3567, 3567, 3567,
4111
4112         0,    0,    0, 3567, 3568, 3568, 3568, 3568,    0,    0,
4113      3568, 3568, 3569, 3569, 3569,    0,    0,    0, 3569, 3570,
4114      3570, 3570, 3570,    0,    0, 3570, 3570, 3571, 3571, 3571,
4115         0,    0,    0, 3571, 3572, 3572, 3572, 3572,    0,    0,
4116      3572, 3572, 3573, 3573, 3573,    0,    0,    0, 3573, 3574,
4117      3574, 3574, 3574,    0,    0, 3574, 3574, 3575, 3575, 3575,
4118         0,    0,    0, 3575, 3576, 3576, 3576, 3576,    0,    0,
4119      3576, 3576, 3577, 3577, 3577,    0,    0,    0, 3577, 3578,
4120      3578, 3578, 3578,    0,    0, 3578, 3578, 3579, 3579, 3579,
4121         0,    0,    0, 3579, 3580, 3580, 3580, 3580,    0,    0,
4122
4123      3580, 3580, 3581, 3581, 3581, 3581,    0, 3581,    0, 3581,
4124      3582, 3582, 3582, 3582,    0,    0, 3582, 3582, 3583, 3583,
4125      3583,    0,    0,    0, 3583, 3584, 3584, 3584, 3584,    0,
4126         0, 3584, 3584, 3585, 3585, 3585, 3585, 3585, 3585, 3585,
4127      3585, 3585, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586,
4128      3586, 3587, 3587, 3587,    0,    0,    0, 3587, 3588, 3588,
4129      3588,    0,    0,    0, 3588, 3589, 3589, 3589, 3589,    0,
4130         0, 3589, 3589, 3590, 3590, 3590, 3590,    0, 3590,    0,
4131      3590, 3591, 3591, 3591, 3591,    0,    0, 3591, 3591, 3592,
4132      3592, 3592,    0,    0,    0, 3592, 3593, 3593, 3593, 3593,
4133
4134         0,    0, 3593, 3593, 3594, 3594, 3594,    0,    0,    0,
4135      3594, 3595, 3595, 3595, 3595,    0,    0, 3595, 3595, 3596,
4136      3596, 3596, 3596,    0,    0, 3596, 3596, 3597, 3597, 3597,
4137         0,    0,    0, 3597, 3598, 3598, 3598, 3598,    0,    0,
4138      3598, 3598, 3599, 3599, 3599, 3599,    0, 3599,    0, 3599,
4139      3600, 3600, 3600, 3600,    0,    0, 3600, 3600, 3601, 3601,
4140      3601, 3601,    0,    0, 3601, 3601, 3602, 3602, 3602,    0,
4141         0,    0, 3602, 3603, 3603, 3603, 3603,    0,    0, 3603,
4142      3603, 3604, 3604, 3604, 3604,    0,    0, 3604, 3604, 3605,
4143      3605, 3605, 3605,    0,    0, 3605, 3605, 3606, 3606, 3606,
4144
4145         0,    0,    0, 3606, 3607, 3607, 3607, 3607,    0,    0,
4146      3607, 3607, 3608, 3608, 3608,    0,    0,    0, 3608, 3609,
4147      3609, 3609, 3609,    0,    0, 3609, 3609, 3610, 3610, 3610,
4148      3610,    0, 3610,    0, 3610, 3611, 3611, 3611, 3611,    0,
4149         0, 3611, 3611, 3612, 3612, 3612,    0,    0,    0, 3612,
4150      3613, 3613, 3613, 3613,    0,    0, 3613, 3613, 3614, 3614,
4151      3614,    0,    0,    0, 3614, 3615, 3615, 3615, 3615,    0,
4152         0, 3615, 3615, 3616, 3616, 3616,    0,    0,    0, 3616,
4153      3617, 3617, 3617, 3617,    0,    0, 3617, 3617, 3618, 3618,
4154      3618,    0,    0,    0, 3618, 3619, 3619, 3619, 3619,    0,
4155
4156         0, 3619, 3619, 3620, 3620, 3620, 3620,    0, 3620,    0,
4157      3620, 3621, 3621, 3621, 3621,    0,    0, 3621, 3621, 3622,
4158      3622, 3622,    0,    0,    0, 3622, 3623, 3623, 3623, 3623,
4159         0,    0, 3623, 3623, 3624, 3624, 3624,    0,    0,    0,
4160      3624, 3625, 3625, 3625, 3625,    0,    0, 3625, 3625, 3626,
4161      3626, 3626,    0,    0,    0, 3626, 3627, 3627, 3627, 3627,
4162         0,    0, 3627, 3627, 3628, 3628, 3628,    0,    0,    0,
4163      3628, 3629, 3629, 3629, 3629,    0,    0, 3629, 3629, 3630,
4164      3630, 3630,    0,    0,    0, 3630, 3631, 3631, 3631, 3631,
4165         0,    0, 3631, 3631, 3632, 3632, 3632,    0,    0,    0,
4166
4167      3632, 3633, 3633, 3633, 3633,    0,    0, 3633, 3633, 3634,
4168      3634, 3634,    0,    0,    0, 3634, 3635, 3635, 3635, 3635,
4169         0,    0, 3635, 3635, 3636, 3636, 3636, 3636, 3636, 3636,
4170      3636, 3636, 3636, 3637, 3637, 3637, 3637, 3637, 3637, 3637,
4171      3637, 3637, 3638, 3638, 3638,    0,    0,    0, 3638, 3639,
4172      3639, 3639, 3639,    0, 3639,    0, 3639, 3640, 3640, 3640,
4173      3640,    0,    0, 3640, 3640, 3641, 3641, 3641, 3641,    0,
4174         0, 3641, 3641, 3642, 3642, 3642,    0,    0,    0, 3642,
4175      3643, 3643, 3643, 3643,    0,    0, 3643, 3643, 3644, 3644,
4176      3644, 3644,    0, 3644,    0, 3644, 3645, 3645, 3645, 3645,
4177
4178         0,    0, 3645, 3645, 3646, 3646, 3646, 3646,    0,    0,
4179      3646, 3646, 3647, 3647, 3647, 3647,    0, 3647,    0, 3647,
4180      3648, 3648, 3648, 3648,    0,    0, 3648, 3648, 3649, 3649,
4181      3649, 3649,    0, 3649,    0, 3649, 3650, 3650, 3650, 3650,
4182         0,    0, 3650, 3650, 3651, 3651, 3651, 3651,    0,    0,
4183      3651, 3651, 3652, 3652, 3652,    0,    0,    0, 3652, 3653,
4184      3653, 3653, 3653,    0,    0, 3653, 3653, 3654, 3654, 3654,
4185      3654,    0,    0, 3654, 3654, 3655, 3655, 3655, 3655,    0,
4186         0, 3655, 3655, 3656, 3656, 3656,    0,    0,    0, 3656,
4187      3657, 3657, 3657, 3657,    0,    0, 3657, 3657, 3658, 3658,
4188
4189      3658,    0,    0,    0, 3658, 3659, 3659, 3659, 3659,    0,
4190         0, 3659, 3659, 3660, 3660, 3660, 3660,    0,    0, 3660,
4191      3660, 3661, 3661, 3661,    0,    0,    0, 3661, 3662, 3662,
4192      3662, 3662,    0,    0, 3662, 3662, 3663, 3663, 3663,    0,
4193         0,    0, 3663, 3664, 3664, 3664, 3664,    0,    0, 3664,
4194      3664, 3665, 3665, 3665,    0,    0,    0, 3665, 3666, 3666,
4195      3666, 3666,    0,    0, 3666, 3666, 3667, 3667, 3667,    0,
4196         0,    0, 3667, 3668, 3668, 3668, 3668,    0,    0, 3668,
4197      3668, 3669, 3669, 3669, 3669,    0,    0, 3669, 3669, 3670,
4198      3670, 3670,    0,    0,    0, 3670, 3671, 3671, 3671, 3671,
4199
4200         0,    0, 3671, 3671, 3672, 3672, 3672,    0,    0,    0,
4201      3672, 3673, 3673, 3673, 3673,    0,    0, 3673, 3673, 3674,
4202      3674, 3674,    0,    0,    0, 3674, 3675, 3675, 3675, 3675,
4203         0,    0, 3675, 3675, 3676, 3676, 3676, 3676,    0, 3676,
4204         0, 3676, 3677, 3677, 3677, 3677,    0,    0, 3677, 3677,
4205      3678, 3678, 3678,    0,    0,    0, 3678, 3679, 3679, 3679,
4206      3679,    0,    0, 3679, 3679, 3680, 3680, 3680,    0,    0,
4207         0, 3680, 3681, 3681, 3681, 3681,    0,    0, 3681, 3681,
4208      3682, 3682, 3682,    0,    0,    0, 3682, 3683, 3683, 3683,
4209      3683,    0,    0, 3683, 3683, 3684, 3684, 3684, 3684, 3684,
4210
4211      3684, 3684, 3684, 3684, 3685, 3685, 3685, 3685, 3685, 3685,
4212      3685, 3685, 3685, 3686, 3686, 3686, 3686,    0, 3686,    0,
4213      3686, 3687, 3687, 3687,    0,    0,    0, 3687, 3688, 3688,
4214      3688, 3688,    0,    0, 3688, 3688, 3689, 3689, 3689, 3689,
4215         0,    0, 3689, 3689, 3690, 3690, 3690,    0,    0,    0,
4216      3690, 3691, 3691, 3691, 3691,    0,    0, 3691, 3691, 3692,
4217      3692, 3692, 3692,    0,    0, 3692, 3692, 3693, 3693, 3693,
4218      3693,    0,    0, 3693, 3693, 3694, 3694, 3694, 3694,    0,
4219      3694,    0, 3694, 3695, 3695, 3695, 3695,    0,    0, 3695,
4220      3695, 3696, 3696, 3696,    0,    0,    0, 3696, 3697, 3697,
4221
4222      3697, 3697,    0,    0, 3697, 3697, 3698, 3698, 3698, 3698,
4223         0,    0, 3698, 3698, 3699, 3699, 3699,    0,    0,    0,
4224      3699, 3700, 3700, 3700, 3700,    0,    0, 3700, 3700, 3701,
4225      3701, 3701, 3701,    0,    0, 3701, 3701, 3702, 3702, 3702,
4226         0,    0,    0, 3702, 3703, 3703, 3703,    0,    0,    0,
4227      3703, 3704, 3704, 3704, 3704,    0,    0, 3704, 3704, 3705,
4228      3705, 3705, 3705,    0,    0, 3705, 3705, 3706, 3706, 3706,
4229         0,    0,    0, 3706, 3707, 3707, 3707, 3707,    0,    0,
4230      3707, 3707, 3708, 3708, 3708,    0,    0,    0, 3708, 3709,
4231      3709, 3709, 3709,    0, 3709,    0, 3709, 3710, 3710, 3710,
4232
4233      3710,    0,    0, 3710, 3710, 3711, 3711, 3711,    0,    0,
4234         0, 3711, 3712, 3712, 3712, 3712,    0,    0, 3712, 3712,
4235      3713, 3713, 3713,    0,    0,    0, 3713, 3714, 3714, 3714,
4236      3714,    0,    0, 3714, 3714, 3715, 3715, 3715,    0,    0,
4237         0, 3715, 3716, 3716, 3716, 3716,    0,    0, 3716, 3716,
4238      3717, 3717, 3717,    0,    0,    0, 3717, 3718, 3718, 3718,
4239      3718,    0,    0, 3718, 3718, 3719, 3719, 3719, 3719,    0,
4240      3719,    0, 3719, 3720, 3720, 3720, 3720,    0,    0, 3720,
4241      3720, 3721, 3721, 3721, 3721,    0, 3721,    0, 3721, 3722,
4242      3722, 3722, 3722,    0,    0, 3722, 3722, 3723, 3723, 3723,
4243
4244         0,    0,    0, 3723, 3724, 3724, 3724, 3724,    0,    0,
4245      3724, 3724, 3725, 3725, 3725, 3725,    0, 3725,    0, 3725,
4246      3726, 3726, 3726, 3726,    0,    0, 3726, 3726, 3727, 3727,
4247      3727, 3727, 3727, 3727, 3727, 3727, 3727, 3728, 3728, 3728,
4248      3728, 3728, 3728, 3728, 3728, 3728, 3729, 3729, 3729,    0,
4249         0,    0, 3729, 3730, 3730, 3730, 3730,    0,    0, 3730,
4250      3730, 3731, 3731, 3731, 3731,    0,    0, 3731, 3731, 3732,
4251      3732, 3732,    0,    0,    0, 3732, 3733, 3733, 3733, 3733,
4252         0,    0, 3733, 3733, 3734, 3734, 3734, 3734,    0,    0,
4253      3734, 3734, 3735, 3735, 3735, 3735,    0,    0, 3735, 3735,
4254
4255      3736, 3736, 3736, 3736,    0,    0, 3736, 3736, 3737, 3737,
4256      3737,    0,    0,    0, 3737, 3738, 3738, 3738, 3738,    0,
4257         0, 3738, 3738, 3739, 3739, 3739, 3739,    0,    0, 3739,
4258      3739, 3740, 3740, 3740,    0,    0,    0, 3740, 3741, 3741,
4259      3741, 3741,    0,    0, 3741, 3741, 3742, 3742, 3742, 3742,
4260         0,    0, 3742, 3742, 3743, 3743, 3743,    0,    0,    0,
4261      3743, 3744, 3744, 3744,    0,    0,    0, 3744, 3745, 3745,
4262      3745, 3745,    0,    0, 3745, 3745, 3746, 3746, 3746, 3746,
4263         0,    0, 3746, 3746, 3747, 3747, 3747,    0,    0,    0,
4264      3747, 3748, 3748, 3748,    0,    0,    0, 3748, 3749, 3749,
4265
4266      3749, 3749,    0,    0, 3749, 3749, 3750, 3750, 3750, 3750,
4267         0, 3750,    0, 3750, 3751, 3751, 3751, 3751,    0,    0,
4268      3751, 3751, 3752, 3752, 3752,    0,    0,    0, 3752, 3753,
4269      3753, 3753, 3753,    0,    0, 3753, 3753, 3754, 3754, 3754,
4270         0,    0,    0, 3754, 3755, 3755, 3755,    0,    0,    0,
4271      3755, 3756, 3756, 3756, 3756,    0,    0, 3756, 3756, 3757,
4272      3757, 3757,    0,    0,    0, 3757, 3758, 3758, 3758, 3758,
4273         0,    0, 3758, 3758, 3759, 3759, 3759,    0,    0,    0,
4274      3759, 3760, 3760, 3760, 3760,    0,    0, 3760, 3760, 3761,
4275      3761, 3761,    0,    0,    0, 3761, 3762, 3762, 3762, 3762,
4276
4277         0,    0, 3762, 3762, 3763, 3763, 3763, 3763, 3763, 3763,
4278      3763, 3763, 3763, 3764, 3764, 3764, 3764, 3764, 3764, 3764,
4279      3764, 3764, 3765, 3765, 3765,    0,    0,    0, 3765, 3766,
4280      3766, 3766, 3766,    0,    0, 3766, 3766, 3767, 3767, 3767,
4281      3767,    0,    0, 3767, 3767, 3768, 3768, 3768, 3768,    0,
4282      3768,    0, 3768, 3769, 3769, 3769, 3769,    0,    0, 3769,
4283      3769, 3770, 3770, 3770, 3770,    0,    0, 3770, 3770, 3771,
4284      3771, 3771, 3771,    0,    0, 3771, 3771, 3772, 3772, 3772,
4285      3772,    0,    0, 3772, 3772, 3773, 3773, 3773,    0,    0,
4286         0, 3773, 3774, 3774, 3774, 3774,    0,    0, 3774, 3774,
4287
4288      3775, 3775, 3775,    0,    0,    0, 3775, 3776, 3776, 3776,
4289      3776,    0,    0, 3776, 3776, 3777, 3777, 3777, 3777,    0,
4290         0, 3777, 3777, 3778, 3778, 3778, 3778,    0, 3778,    0,
4291      3778, 3779, 3779, 3779, 3779,    0, 3779,    0, 3779, 3780,
4292      3780, 3780, 3780,    0,    0, 3780, 3780, 3781, 3781, 3781,
4293      3781,    0,    0, 3781, 3781, 3782, 3782, 3782, 3782,    0,
4294      3782,    0, 3782, 3783, 3783, 3783,    0,    0,    0, 3783,
4295      3784, 3784, 3784, 3784,    0,    0, 3784, 3784, 3785, 3785,
4296      3785, 3785,    0, 3785,    0, 3785, 3786, 3786, 3786, 3786,
4297         0,    0, 3786, 3786, 3787, 3787, 3787, 3787,    0, 3787,
4298
4299         0, 3787, 3788, 3788, 3788,    0,    0,    0, 3788, 3789,
4300      3789, 3789,    0,    0,    0, 3789, 3790, 3790, 3790,    0,
4301         0,    0, 3790, 3791, 3791, 3791, 3791,    0,    0, 3791,
4302      3791, 3792, 3792, 3792,    0,    0,    0, 3792, 3793, 3793,
4303      3793, 3793,    0,    0, 3793, 3793, 3794, 3794, 3794,    0,
4304         0,    0, 3794, 3795, 3795, 3795, 3795,    0,    0, 3795,
4305      3795, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
4306      3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3798,
4307      3798, 3798,    0,    0,    0, 3798, 3799, 3799, 3799, 3799,
4308         0,    0, 3799, 3799, 3800, 3800, 3800, 3800,    0,    0,
4309
4310      3800, 3800, 3801, 3801, 3801, 3801,    0,    0, 3801, 3801,
4311      3802, 3802, 3802, 3802,    0,    0, 3802, 3802, 3803, 3803,
4312      3803,    0,    0,    0, 3803, 3804, 3804, 3804,    0,    0,
4313         0, 3804, 3805, 3805, 3805, 3805,    0,    0, 3805, 3805,
4314      3806, 3806, 3806,    0,    0,    0, 3806, 3807, 3807, 3807,
4315      3807, 3807, 3807, 3807, 3807, 3807, 3808, 3808, 3808, 3808,
4316      3808, 3808, 3808, 3808, 3808, 3809, 3809, 3809, 3809, 3809,
4317      3809, 3809, 3809, 3809, 3810, 3810, 3810, 3810, 3810, 3810,
4318      3810, 3810, 3810, 3811, 3811, 3811, 3811, 3811, 3811, 3811,
4319      3811, 3811, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812,
4320
4321      3812, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4322      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4323      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4324      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4325      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4326      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4327      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4328      3333, 3333, 3333, 3333, 3333, 3333
4329     } ;
4330
4331 /* Table of booleans, true if rule could match eol. */
4332 static yyconst flex_int32_t yy_rule_can_match_eol[562] =
4333     {   0,
4334 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 
4335     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4336     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4337     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
4338     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
4339     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4340     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4341     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4342     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4343     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4344     0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
4345     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 
4346     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 
4347     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4348     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4349     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
4350     0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
4351     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
4352     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4353     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4354     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4355     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
4356     1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 
4357     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4358     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
4359     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 
4360     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 
4361     0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 
4362     1, 0,     };
4363
4364 static yy_state_type yy_last_accepting_state;
4365 static char *yy_last_accepting_cpos;
4366
4367 extern int surf_parse__flex_debug;
4368 int surf_parse__flex_debug = 0;
4369
4370 /* The intent behind this definition is that it'll catch
4371  * any uses of REJECT which flex missed.
4372  */
4373 #define REJECT reject_used_but_not_detected
4374 #define yymore() yymore_used_but_not_detected
4375 #define YY_MORE_ADJ 0
4376 #define YY_RESTORE_YY_MORE_OFFSET
4377 char *surf_parse_text;
4378 /* Validating XML processor for src/surf/xml/simgrid.dtd.
4379  *
4380  * This program was generated with the FleXML XML processor generator.
4381  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
4382  * FleXML is Copyright (C) 2003-2013 Martin Quinson.  All rights reserved.
4383  * (1.9.6).
4384  * 
4385  * There are two, intertwined parts to this program, part A and part B.
4386  *
4387  * Part A
4388  * ------
4389  * 
4390  * Some parts, here collectively called "Part A", are found in the 
4391  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
4392  * and Copyright (C) 2003-2013 Martin Quinson. All rights reserved.
4393  *
4394  * You can redistribute, use, perform, display and/or modify "Part A"
4395  * provided the following two conditions hold:
4396  *
4397  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
4398  *    FleXML; without even the implied warranty of MERCHANTABILITY or
4399  *    FITNESS FOR A PARTICULAR PURPOSE.
4400  *
4401  * 2. The program distribution conditions do not in any way affect the
4402  *    distribution conditions of the FleXML system used to generate this
4403  *    file or any version of FleXML derived from that system.
4404  *
4405  * Notice that these are explicit rights granted to you for files
4406  * generated by the FleXML system.  For your rights in connection with
4407  * the FleXML system itself please consult the GNU General Public License.
4408  * 
4409  * Part B
4410  * ------
4411  * 
4412  * The other parts, here collectively called "Part B", and which came 
4413  * from the DTD used by FleXML to generate this program, can be 
4414  * distributed (or not, as the case may be) under the terms of whoever
4415  * wrote them, provided these terms respect and obey the two conditions 
4416  * above under the heading "Part A".
4417  *
4418  * The author of and contributors to FleXML specifically disclaim
4419  * any copyright interest in "Part B", unless "Part B" was written 
4420  * by the author of or contributors to FleXML.
4421  * 
4422  */
4423
4424 /* Version strings. */
4425 const char surfxml_flexml_version[] = "1.9.6";
4426
4427 /* ANSI headers. */
4428 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
4429 #include <stdio.h>
4430 #include <string.h>
4431 #include <assert.h>
4432 #include <stdarg.h>
4433 #include <ctype.h>
4434      
4435 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
4436 # ifndef __STRICT_ANSI__
4437 #  include <io.h>
4438 #  include <process.h>
4439 # endif
4440 #else
4441 # include <unistd.h>
4442 #endif
4443      
4444 #ifndef FLEXML_INDEXSTACKSIZE
4445 #define FLEXML_INDEXSTACKSIZE 1000
4446 #endif
4447
4448 /* Generated definitions. */
4449 #define FLEXML_yylineno
4450 #ifndef FLEXML_BUFFERSTACKSIZE
4451 #define FLEXML_BUFFERSTACKSIZE 1000000
4452 #endif
4453 #define FLEXML_NEED_BUFFERLIT
4454
4455 /* XML processor api. */
4456 /* FleXML-provided data. */
4457 int surfxml_pcdata_ix;
4458 extern char *surfxml_bufferstack;
4459 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
4460 AT_surfxml_AS_id AX_surfxml_AS_id;
4461 #define A_surfxml_AS_id (surfxml_bufferstack + AX_surfxml_AS_id)
4462 short int surfxml_AS_id_isset;
4463 AT_surfxml_AS_routing AX_surfxml_AS_routing;
4464 #define A_surfxml_AS_routing AX_surfxml_AS_routing
4465 short int surfxml_AS_routing_isset;
4466 AT_surfxml_ASroute_dst AX_surfxml_ASroute_dst;
4467 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
4468 short int surfxml_ASroute_dst_isset;
4469 AT_surfxml_ASroute_gw___dst AX_surfxml_ASroute_gw___dst;
4470 #define A_surfxml_ASroute_gw___dst (surfxml_bufferstack + AX_surfxml_ASroute_gw___dst)
4471 short int surfxml_ASroute_gw___dst_isset;
4472 AT_surfxml_ASroute_gw___src AX_surfxml_ASroute_gw___src;
4473 #define A_surfxml_ASroute_gw___src (surfxml_bufferstack + AX_surfxml_ASroute_gw___src)
4474 short int surfxml_ASroute_gw___src_isset;
4475 AT_surfxml_ASroute_src AX_surfxml_ASroute_src;
4476 #define A_surfxml_ASroute_src (surfxml_bufferstack + AX_surfxml_ASroute_src)
4477 short int surfxml_ASroute_src_isset;
4478 AT_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical;
4479 #define A_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical
4480 short int surfxml_ASroute_symmetrical_isset;
4481 AT_surfxml_argument_value AX_surfxml_argument_value;
4482 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
4483 short int surfxml_argument_value_isset;
4484 AT_surfxml_backbone_bandwidth AX_surfxml_backbone_bandwidth;
4485 #define A_surfxml_backbone_bandwidth (surfxml_bufferstack + AX_surfxml_backbone_bandwidth)
4486 short int surfxml_backbone_bandwidth_isset;
4487 AT_surfxml_backbone_id AX_surfxml_backbone_id;
4488 #define A_surfxml_backbone_id (surfxml_bufferstack + AX_surfxml_backbone_id)
4489 short int surfxml_backbone_id_isset;
4490 AT_surfxml_backbone_latency AX_surfxml_backbone_latency;
4491 #define A_surfxml_backbone_latency (surfxml_bufferstack + AX_surfxml_backbone_latency)
4492 short int surfxml_backbone_latency_isset;
4493 AT_surfxml_bypassASroute_dst AX_surfxml_bypassASroute_dst;
4494 #define A_surfxml_bypassASroute_dst (surfxml_bufferstack + AX_surfxml_bypassASroute_dst)
4495 short int surfxml_bypassASroute_dst_isset;
4496 AT_surfxml_bypassASroute_gw___dst AX_surfxml_bypassASroute_gw___dst;
4497 #define A_surfxml_bypassASroute_gw___dst (surfxml_bufferstack + AX_surfxml_bypassASroute_gw___dst)
4498 short int surfxml_bypassASroute_gw___dst_isset;
4499 AT_surfxml_bypassASroute_gw___src AX_surfxml_bypassASroute_gw___src;
4500 #define A_surfxml_bypassASroute_gw___src (surfxml_bufferstack + AX_surfxml_bypassASroute_gw___src)
4501 short int surfxml_bypassASroute_gw___src_isset;
4502 AT_surfxml_bypassASroute_src AX_surfxml_bypassASroute_src;
4503 #define A_surfxml_bypassASroute_src (surfxml_bufferstack + AX_surfxml_bypassASroute_src)
4504 short int surfxml_bypassASroute_src_isset;
4505 AT_surfxml_bypassRoute_dst AX_surfxml_bypassRoute_dst;
4506 #define A_surfxml_bypassRoute_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_dst)
4507 short int surfxml_bypassRoute_dst_isset;
4508 AT_surfxml_bypassRoute_src AX_surfxml_bypassRoute_src;
4509 #define A_surfxml_bypassRoute_src (surfxml_bufferstack + AX_surfxml_bypassRoute_src)
4510 short int surfxml_bypassRoute_src_isset;
4511 AT_surfxml_cabinet_bw AX_surfxml_cabinet_bw;
4512 #define A_surfxml_cabinet_bw (surfxml_bufferstack + AX_surfxml_cabinet_bw)
4513 short int surfxml_cabinet_bw_isset;
4514 AT_surfxml_cabinet_id AX_surfxml_cabinet_id;
4515 #define A_surfxml_cabinet_id (surfxml_bufferstack + AX_surfxml_cabinet_id)
4516 short int surfxml_cabinet_id_isset;
4517 AT_surfxml_cabinet_lat AX_surfxml_cabinet_lat;
4518 #define A_surfxml_cabinet_lat (surfxml_bufferstack + AX_surfxml_cabinet_lat)
4519 short int surfxml_cabinet_lat_isset;
4520 AT_surfxml_cabinet_prefix AX_surfxml_cabinet_prefix;
4521 #define A_surfxml_cabinet_prefix (surfxml_bufferstack + AX_surfxml_cabinet_prefix)
4522 short int surfxml_cabinet_prefix_isset;
4523 AT_surfxml_cabinet_radical AX_surfxml_cabinet_radical;
4524 #define A_surfxml_cabinet_radical (surfxml_bufferstack + AX_surfxml_cabinet_radical)
4525 short int surfxml_cabinet_radical_isset;
4526 AT_surfxml_cabinet_speed AX_surfxml_cabinet_speed;
4527 #define A_surfxml_cabinet_speed (surfxml_bufferstack + AX_surfxml_cabinet_speed)
4528 short int surfxml_cabinet_speed_isset;
4529 AT_surfxml_cabinet_suffix AX_surfxml_cabinet_suffix;
4530 #define A_surfxml_cabinet_suffix (surfxml_bufferstack + AX_surfxml_cabinet_suffix)
4531 short int surfxml_cabinet_suffix_isset;
4532 AT_surfxml_cluster_bb___bw AX_surfxml_cluster_bb___bw;
4533 #define A_surfxml_cluster_bb___bw (surfxml_bufferstack + AX_surfxml_cluster_bb___bw)
4534 short int surfxml_cluster_bb___bw_isset;
4535 AT_surfxml_cluster_bb___lat AX_surfxml_cluster_bb___lat;
4536 #define A_surfxml_cluster_bb___lat (surfxml_bufferstack + AX_surfxml_cluster_bb___lat)
4537 short int surfxml_cluster_bb___lat_isset;
4538 AT_surfxml_cluster_bb___sharing___policy AX_surfxml_cluster_bb___sharing___policy;
4539 #define A_surfxml_cluster_bb___sharing___policy AX_surfxml_cluster_bb___sharing___policy
4540 short int surfxml_cluster_bb___sharing___policy_isset;
4541 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
4542 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
4543 short int surfxml_cluster_bw_isset;
4544 AT_surfxml_cluster_core AX_surfxml_cluster_core;
4545 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
4546 short int surfxml_cluster_core_isset;
4547 AT_surfxml_cluster_id AX_surfxml_cluster_id;
4548 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
4549 short int surfxml_cluster_id_isset;
4550 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
4551 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
4552 short int surfxml_cluster_lat_isset;
4553 AT_surfxml_cluster_limiter___link AX_surfxml_cluster_limiter___link;
4554 #define A_surfxml_cluster_limiter___link (surfxml_bufferstack + AX_surfxml_cluster_limiter___link)
4555 short int surfxml_cluster_limiter___link_isset;
4556 AT_surfxml_cluster_loopback___bw AX_surfxml_cluster_loopback___bw;
4557 #define A_surfxml_cluster_loopback___bw (surfxml_bufferstack + AX_surfxml_cluster_loopback___bw)
4558 short int surfxml_cluster_loopback___bw_isset;
4559 AT_surfxml_cluster_loopback___lat AX_surfxml_cluster_loopback___lat;
4560 #define A_surfxml_cluster_loopback___lat (surfxml_bufferstack + AX_surfxml_cluster_loopback___lat)
4561 short int surfxml_cluster_loopback___lat_isset;
4562 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
4563 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
4564 short int surfxml_cluster_prefix_isset;
4565 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
4566 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
4567 short int surfxml_cluster_radical_isset;
4568 AT_surfxml_cluster_router___id AX_surfxml_cluster_router___id;
4569 #define A_surfxml_cluster_router___id (surfxml_bufferstack + AX_surfxml_cluster_router___id)
4570 short int surfxml_cluster_router___id_isset;
4571 AT_surfxml_cluster_sharing___policy AX_surfxml_cluster_sharing___policy;
4572 #define A_surfxml_cluster_sharing___policy AX_surfxml_cluster_sharing___policy
4573 short int surfxml_cluster_sharing___policy_isset;
4574 AT_surfxml_cluster_speed AX_surfxml_cluster_speed;
4575 #define A_surfxml_cluster_speed (surfxml_bufferstack + AX_surfxml_cluster_speed)
4576 short int surfxml_cluster_speed_isset;
4577 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
4578 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
4579 short int surfxml_cluster_suffix_isset;
4580 AT_surfxml_cluster_topo___parameters AX_surfxml_cluster_topo___parameters;
4581 #define A_surfxml_cluster_topo___parameters (surfxml_bufferstack + AX_surfxml_cluster_topo___parameters)
4582 short int surfxml_cluster_topo___parameters_isset;
4583 AT_surfxml_cluster_topology AX_surfxml_cluster_topology;
4584 #define A_surfxml_cluster_topology AX_surfxml_cluster_topology
4585 short int surfxml_cluster_topology_isset;
4586 AT_surfxml_config_id AX_surfxml_config_id;
4587 #define A_surfxml_config_id (surfxml_bufferstack + AX_surfxml_config_id)
4588 short int surfxml_config_id_isset;
4589 AT_surfxml_host_availability___file AX_surfxml_host_availability___file;
4590 #define A_surfxml_host_availability___file (surfxml_bufferstack + AX_surfxml_host_availability___file)
4591 short int surfxml_host_availability___file_isset;
4592 AT_surfxml_host_coordinates AX_surfxml_host_coordinates;
4593 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
4594 short int surfxml_host_coordinates_isset;
4595 AT_surfxml_host_core AX_surfxml_host_core;
4596 #define A_surfxml_host_core (surfxml_bufferstack + AX_surfxml_host_core)
4597 short int surfxml_host_core_isset;
4598 AT_surfxml_host_id AX_surfxml_host_id;
4599 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
4600 short int surfxml_host_id_isset;
4601 AT_surfxml_host_pstate AX_surfxml_host_pstate;
4602 #define A_surfxml_host_pstate (surfxml_bufferstack + AX_surfxml_host_pstate)
4603 short int surfxml_host_pstate_isset;
4604 AT_surfxml_host_speed AX_surfxml_host_speed;
4605 #define A_surfxml_host_speed (surfxml_bufferstack + AX_surfxml_host_speed)
4606 short int surfxml_host_speed_isset;
4607 AT_surfxml_host_state___file AX_surfxml_host_state___file;
4608 #define A_surfxml_host_state___file (surfxml_bufferstack + AX_surfxml_host_state___file)
4609 short int surfxml_host_state___file_isset;
4610 AT_surfxml_host___link_down AX_surfxml_host___link_down;
4611 #define A_surfxml_host___link_down (surfxml_bufferstack + AX_surfxml_host___link_down)
4612 short int surfxml_host___link_down_isset;
4613 AT_surfxml_host___link_id AX_surfxml_host___link_id;
4614 #define A_surfxml_host___link_id (surfxml_bufferstack + AX_surfxml_host___link_id)
4615 short int surfxml_host___link_id_isset;
4616 AT_surfxml_host___link_up AX_surfxml_host___link_up;
4617 #define A_surfxml_host___link_up (surfxml_bufferstack + AX_surfxml_host___link_up)
4618 short int surfxml_host___link_up_isset;
4619 AT_surfxml_include_file AX_surfxml_include_file;
4620 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
4621 short int surfxml_include_file_isset;
4622 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
4623 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
4624 short int surfxml_link_bandwidth_isset;
4625 AT_surfxml_link_bandwidth___file AX_surfxml_link_bandwidth___file;
4626 #define A_surfxml_link_bandwidth___file (surfxml_bufferstack + AX_surfxml_link_bandwidth___file)
4627 short int surfxml_link_bandwidth___file_isset;
4628 AT_surfxml_link_id AX_surfxml_link_id;
4629 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
4630 short int surfxml_link_id_isset;
4631 AT_surfxml_link_latency AX_surfxml_link_latency;
4632 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
4633 short int surfxml_link_latency_isset;
4634 AT_surfxml_link_latency___file AX_surfxml_link_latency___file;
4635 #define A_surfxml_link_latency___file (surfxml_bufferstack + AX_surfxml_link_latency___file)
4636 short int surfxml_link_latency___file_isset;
4637 AT_surfxml_link_sharing___policy AX_surfxml_link_sharing___policy;
4638 #define A_surfxml_link_sharing___policy AX_surfxml_link_sharing___policy
4639 short int surfxml_link_sharing___policy_isset;
4640 AT_surfxml_link_state___file AX_surfxml_link_state___file;
4641 #define A_surfxml_link_state___file (surfxml_bufferstack + AX_surfxml_link_state___file)
4642 short int surfxml_link_state___file_isset;
4643 AT_surfxml_link___ctn_direction AX_surfxml_link___ctn_direction;
4644 #define A_surfxml_link___ctn_direction AX_surfxml_link___ctn_direction
4645 short int surfxml_link___ctn_direction_isset;
4646 AT_surfxml_link___ctn_id AX_surfxml_link___ctn_id;
4647 #define A_surfxml_link___ctn_id (surfxml_bufferstack + AX_surfxml_link___ctn_id)
4648 short int surfxml_link___ctn_id_isset;
4649 AT_surfxml_model___prop_id AX_surfxml_model___prop_id;
4650 #define A_surfxml_model___prop_id (surfxml_bufferstack + AX_surfxml_model___prop_id)
4651 short int surfxml_model___prop_id_isset;
4652 AT_surfxml_model___prop_value AX_surfxml_model___prop_value;
4653 #define A_surfxml_model___prop_value (surfxml_bufferstack + AX_surfxml_model___prop_value)
4654 short int surfxml_model___prop_value_isset;
4655 AT_surfxml_mount_name AX_surfxml_mount_name;
4656 #define A_surfxml_mount_name (surfxml_bufferstack + AX_surfxml_mount_name)
4657 short int surfxml_mount_name_isset;
4658 AT_surfxml_mount_storageId AX_surfxml_mount_storageId;
4659 #define A_surfxml_mount_storageId (surfxml_bufferstack + AX_surfxml_mount_storageId)
4660 short int surfxml_mount_storageId_isset;
4661 AT_surfxml_peer_availability___file AX_surfxml_peer_availability___file;
4662 #define A_surfxml_peer_availability___file (surfxml_bufferstack + AX_surfxml_peer_availability___file)
4663 short int surfxml_peer_availability___file_isset;
4664 AT_surfxml_peer_bw___in AX_surfxml_peer_bw___in;
4665 #define A_surfxml_peer_bw___in (surfxml_bufferstack + AX_surfxml_peer_bw___in)
4666 short int surfxml_peer_bw___in_isset;
4667 AT_surfxml_peer_bw___out AX_surfxml_peer_bw___out;
4668 #define A_surfxml_peer_bw___out (surfxml_bufferstack + AX_surfxml_peer_bw___out)
4669 short int surfxml_peer_bw___out_isset;
4670 AT_surfxml_peer_coordinates AX_surfxml_peer_coordinates;
4671 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
4672 short int surfxml_peer_coordinates_isset;
4673 AT_surfxml_peer_id AX_surfxml_peer_id;
4674 #define A_surfxml_peer_id (surfxml_bufferstack + AX_surfxml_peer_id)
4675 short int surfxml_peer_id_isset;
4676 AT_surfxml_peer_lat AX_surfxml_peer_lat;
4677 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
4678 short int surfxml_peer_lat_isset;
4679 AT_surfxml_peer_speed AX_surfxml_peer_speed;
4680 #define A_surfxml_peer_speed (surfxml_bufferstack + AX_surfxml_peer_speed)
4681 short int surfxml_peer_speed_isset;
4682 AT_surfxml_peer_state___file AX_surfxml_peer_state___file;
4683 #define A_surfxml_peer_state___file (surfxml_bufferstack + AX_surfxml_peer_state___file)
4684 short int surfxml_peer_state___file_isset;
4685 AT_surfxml_platform_version AX_surfxml_platform_version;
4686 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
4687 short int surfxml_platform_version_isset;
4688 AT_surfxml_process_function AX_surfxml_process_function;
4689 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
4690 short int surfxml_process_function_isset;
4691 AT_surfxml_process_host AX_surfxml_process_host;
4692 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
4693 short int surfxml_process_host_isset;
4694 AT_surfxml_process_kill___time AX_surfxml_process_kill___time;
4695 #define A_surfxml_process_kill___time (surfxml_bufferstack + AX_surfxml_process_kill___time)
4696 short int surfxml_process_kill___time_isset;
4697 AT_surfxml_process_on___failure AX_surfxml_process_on___failure;
4698 #define A_surfxml_process_on___failure AX_surfxml_process_on___failure
4699 short int surfxml_process_on___failure_isset;
4700 AT_surfxml_process_start___time AX_surfxml_process_start___time;
4701 #define A_surfxml_process_start___time (surfxml_bufferstack + AX_surfxml_process_start___time)
4702 short int surfxml_process_start___time_isset;
4703 AT_surfxml_prop_id AX_surfxml_prop_id;
4704 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
4705 short int surfxml_prop_id_isset;
4706 AT_surfxml_prop_value AX_surfxml_prop_value;
4707 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
4708 short int surfxml_prop_value_isset;
4709 AT_surfxml_random_generator AX_surfxml_random_generator;
4710 #define A_surfxml_random_generator AX_surfxml_random_generator
4711 short int surfxml_random_generator_isset;
4712 AT_surfxml_random_id AX_surfxml_random_id;
4713 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
4714 short int surfxml_random_id_isset;
4715 AT_surfxml_random_max AX_surfxml_random_max;
4716 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
4717 short int surfxml_random_max_isset;
4718 AT_surfxml_random_mean AX_surfxml_random_mean;
4719 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
4720 short int surfxml_random_mean_isset;
4721 AT_surfxml_random_min AX_surfxml_random_min;
4722 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
4723 short int surfxml_random_min_isset;
4724 AT_surfxml_random_radical AX_surfxml_random_radical;
4725 #define A_surfxml_random_radical (surfxml_bufferstack + AX_surfxml_random_radical)
4726 short int surfxml_random_radical_isset;
4727 AT_surfxml_random_seed AX_surfxml_random_seed;
4728 #define A_surfxml_random_seed (surfxml_bufferstack + AX_surfxml_random_seed)
4729 short int surfxml_random_seed_isset;
4730 AT_surfxml_random_std___deviation AX_surfxml_random_std___deviation;
4731 #define A_surfxml_random_std___deviation (surfxml_bufferstack + AX_surfxml_random_std___deviation)
4732 short int surfxml_random_std___deviation_isset;
4733 AT_surfxml_route_dst AX_surfxml_route_dst;
4734 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
4735 short int surfxml_route_dst_isset;
4736 AT_surfxml_route_src AX_surfxml_route_src;
4737 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
4738 short int surfxml_route_src_isset;
4739 AT_surfxml_route_symmetrical AX_surfxml_route_symmetrical;
4740 #define A_surfxml_route_symmetrical AX_surfxml_route_symmetrical
4741 short int surfxml_route_symmetrical_isset;
4742 AT_surfxml_router_coordinates AX_surfxml_router_coordinates;
4743 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
4744 short int surfxml_router_coordinates_isset;
4745 AT_surfxml_router_id AX_surfxml_router_id;
4746 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
4747 short int surfxml_router_id_isset;
4748 AT_surfxml_storage_attach AX_surfxml_storage_attach;
4749 #define A_surfxml_storage_attach (surfxml_bufferstack + AX_surfxml_storage_attach)
4750 short int surfxml_storage_attach_isset;
4751 AT_surfxml_storage_content AX_surfxml_storage_content;
4752 #define A_surfxml_storage_content (surfxml_bufferstack + AX_surfxml_storage_content)
4753 short int surfxml_storage_content_isset;
4754 AT_surfxml_storage_content___type AX_surfxml_storage_content___type;
4755 #define A_surfxml_storage_content___type (surfxml_bufferstack + AX_surfxml_storage_content___type)
4756 short int surfxml_storage_content___type_isset;
4757 AT_surfxml_storage_id AX_surfxml_storage_id;
4758 #define A_surfxml_storage_id (surfxml_bufferstack + AX_surfxml_storage_id)
4759 short int surfxml_storage_id_isset;
4760 AT_surfxml_storage_typeId AX_surfxml_storage_typeId;
4761 #define A_surfxml_storage_typeId (surfxml_bufferstack + AX_surfxml_storage_typeId)
4762 short int surfxml_storage_typeId_isset;
4763 AT_surfxml_storage___type_content AX_surfxml_storage___type_content;
4764 #define A_surfxml_storage___type_content (surfxml_bufferstack + AX_surfxml_storage___type_content)
4765 short int surfxml_storage___type_content_isset;
4766 AT_surfxml_storage___type_content___type AX_surfxml_storage___type_content___type;
4767 #define A_surfxml_storage___type_content___type (surfxml_bufferstack + AX_surfxml_storage___type_content___type)
4768 short int surfxml_storage___type_content___type_isset;
4769 AT_surfxml_storage___type_id AX_surfxml_storage___type_id;
4770 #define A_surfxml_storage___type_id (surfxml_bufferstack + AX_surfxml_storage___type_id)
4771 short int surfxml_storage___type_id_isset;
4772 AT_surfxml_storage___type_model AX_surfxml_storage___type_model;
4773 #define A_surfxml_storage___type_model (surfxml_bufferstack + AX_surfxml_storage___type_model)
4774 short int surfxml_storage___type_model_isset;
4775 AT_surfxml_storage___type_size AX_surfxml_storage___type_size;
4776 #define A_surfxml_storage___type_size (surfxml_bufferstack + AX_surfxml_storage___type_size)
4777 short int surfxml_storage___type_size_isset;
4778 AT_surfxml_trace_file AX_surfxml_trace_file;
4779 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
4780 short int surfxml_trace_file_isset;
4781 AT_surfxml_trace_id AX_surfxml_trace_id;
4782 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
4783 short int surfxml_trace_id_isset;
4784 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
4785 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
4786 short int surfxml_trace_periodicity_isset;
4787 AT_surfxml_trace___connect_element AX_surfxml_trace___connect_element;
4788 #define A_surfxml_trace___connect_element (surfxml_bufferstack + AX_surfxml_trace___connect_element)
4789 short int surfxml_trace___connect_element_isset;
4790 AT_surfxml_trace___connect_kind AX_surfxml_trace___connect_kind;
4791 #define A_surfxml_trace___connect_kind AX_surfxml_trace___connect_kind
4792 short int surfxml_trace___connect_kind_isset;
4793 AT_surfxml_trace___connect_trace AX_surfxml_trace___connect_trace;
4794 #define A_surfxml_trace___connect_trace (surfxml_bufferstack + AX_surfxml_trace___connect_trace)
4795 short int surfxml_trace___connect_trace_isset;
4796
4797 /* XML state. */
4798 #ifdef FLEX_DEBUG
4799 # define ENTER(state)   debug_enter(state,#state)
4800 # define LEAVE          debug_leave()
4801 # define SET(state)     debug_set(state,#state)
4802   static void debug_enter(int, const char*);
4803   static void debug_leave(void);
4804   static void debug_set(int, const char*);
4805 #else
4806 # define ENTER(state)   (yy_push_state(state))
4807 # define LEAVE          (yy_pop_state())
4808 # define SET(state)     BEGIN(state)
4809 #endif
4810
4811 /* Generic actions. */
4812 #define SKIP    /*skip*/
4813 #define SUCCEED        CLEANUP; return 0
4814
4815 #define FAIL    return fail
4816 static int fail(const char*, ...);
4817
4818 enum {flexml_max_err_msg_size = 512};
4819 static char flexml_err_msg[flexml_max_err_msg_size];
4820 const char * surfxml_parse_err_msg()
4821 {
4822     return flexml_err_msg;
4823 }
4824 static void reset_surfxml_parse_err_msg()
4825 {
4826     flexml_err_msg[0] = '\0';
4827 }
4828
4829 /* Cleanup */
4830 static void cleanup(void);
4831 #define CLEANUP  cleanup()
4832
4833 /* Text buffer stack handling. */
4834 char *surfxml_bufferstack = NULL;
4835 static int blimit = FLEXML_BUFFERSTACKSIZE;
4836 static int bnext = 1;
4837
4838 static int *indexstack = NULL;
4839 static int ilimit = FLEXML_INDEXSTACKSIZE;
4840 static int inext = 1;
4841
4842 #define BUFFERSET(P)  (P = bnext)
4843 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
4844 #define BUFFERDONE    (BUFFERPUTC('\0'))
4845
4846 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
4847
4848 /* after this is called, there are at least 2 slots left in the stack */
4849 static int ck_blimit()
4850 {
4851      if (bnext >= blimit) {
4852          blimit += FLEXML_BUFFERSTACKSIZE + 2;
4853          {
4854              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
4855              assert(temp);
4856              surfxml_bufferstack = temp;
4857          }
4858      }
4859      return 0;
4860 }
4861
4862 /* after this is called, there are at least 2 slots left in the stack */
4863 static int ck_ilimit()
4864 {
4865      if (inext >= ilimit) {
4866          ilimit += FLEXML_INDEXSTACKSIZE + 2;
4867          {
4868              int *temp = (int *) realloc(indexstack, ilimit);
4869              assert(temp);
4870              indexstack = temp;
4871          }
4872      }
4873      return 0;
4874 }
4875
4876 #ifdef FLEXML_NEED_BUFFERLIT
4877 static void surfxml_bufferliteral(char c, int* pp, const char* text)
4878 {
4879    BUFFERSET(*pp);
4880    if (c) {
4881       const char *s = strchr(text, c), *e = strrchr(text, c);
4882       assert(s && e && s <= e);
4883       ++s;
4884       while (s < e) {
4885          if (isspace(*s)) {
4886             BUFFERPUTC(' ');
4887             do ++s; while (s < e && isspace(*s));
4888          } else
4889            BUFFERPUTC(*s++);
4890       }
4891    } else {
4892       const char *s = text;
4893       while (*s)
4894         BUFFERPUTC(*s++);
4895    }
4896    BUFFERDONE;
4897 }
4898 #endif
4899
4900 static void pushbuffer(int p)
4901 {
4902     ck_ilimit();
4903     indexstack[inext++] = p;
4904     indexstack[inext++] = bnext;    
4905 }
4906
4907 static int popbuffer(void)
4908 {
4909     assert(inext >= 2);
4910     bnext = indexstack[--inext];
4911     return indexstack[--inext];
4912 }
4913
4914 /* General internal entities are `unput' back onto the input stream... */
4915 #define ENTITYTEXT(T) \
4916   { char *s = (T), *e = s+strlen(s);\
4917     while (--e >= s) { unput(*e); }}
4918
4919 /* Flex standard options. */
4920 #define YY_NO_INPUT 1
4921 /* Flex user-requested options. */
4922 /* XML character classes (currently restricted to ASCII). */
4923 /* "Common syntactic structures." */
4924 /* "Names and Tokens." */
4925 /* Miscellaneous. */
4926 /* Parser states (flex `exclusive start conditions'):
4927  *
4928  * PROLOG       the XML prolog of the document before <?xml...>
4929  * DOCTYPE      the XML prolog of the document after <?xml...>
4930  * EPILOG       after the root element
4931  * INCOMMENT    inside an XML comment <!--....-->
4932  * INPI         inside an XML PI <?...?>
4933  * VALUE1       inside a '...'-delimited literal
4934  * VALUE2       inside a "..."-delimited literal
4935  * CDATA        inside a <![CDATA[...] ]> section.
4936  * ROOT_<tag>   expect root element <tag>
4937  * AL_<tag>     inside the attribute list for <tag>
4938  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
4939  * IMPOSSIBLE   dummy to permit disabling rules; must be last
4940  */
4941
4942 /* State names. */
4943 const char* *surfxml_statenames=NULL;
4944
4945 #define INITIAL 0
4946 #define PROLOG 1
4947 #define DOCTYPE 2
4948 #define EPILOG 3
4949 #define INCOMMENT 4
4950 #define INPI 5
4951 #define VALUE1 6
4952 #define VALUE2 7
4953 #define CDATA 8
4954 #define AL_surfxml_AS 9
4955 #define S_surfxml_AS 10
4956 #define S_surfxml_AS_1 11
4957 #define S_surfxml_AS_2 12
4958 #define S_surfxml_AS_3 13
4959 #define S_surfxml_AS_4 14
4960 #define S_surfxml_AS_5 15
4961 #define S_surfxml_AS_6 16
4962 #define S_surfxml_AS_7 17
4963 #define S_surfxml_AS_8 18
4964 #define E_surfxml_AS 19
4965 #define AL_surfxml_ASroute 20
4966 #define S_surfxml_ASroute 21
4967 #define S_surfxml_ASroute_1 22
4968 #define S_surfxml_ASroute_2 23
4969 #define E_surfxml_ASroute 24
4970 #define AL_surfxml_argument 25
4971 #define E_surfxml_argument 26
4972 #define AL_surfxml_backbone 27
4973 #define E_surfxml_backbone 28
4974 #define AL_surfxml_bypassASroute 29
4975 #define S_surfxml_bypassASroute 30
4976 #define S_surfxml_bypassASroute_1 31
4977 #define S_surfxml_bypassASroute_2 32
4978 #define E_surfxml_bypassASroute 33
4979 #define AL_surfxml_bypassRoute 34
4980 #define S_surfxml_bypassRoute 35
4981 #define S_surfxml_bypassRoute_1 36
4982 #define S_surfxml_bypassRoute_2 37
4983 #define E_surfxml_bypassRoute 38
4984 #define AL_surfxml_cabinet 39
4985 #define E_surfxml_cabinet 40
4986 #define AL_surfxml_cluster 41
4987 #define S_surfxml_cluster 42
4988 #define S_surfxml_cluster_1 43
4989 #define S_surfxml_cluster_2 44
4990 #define E_surfxml_cluster 45
4991 #define AL_surfxml_config 46
4992 #define S_surfxml_config 47
4993 #define S_surfxml_config_1 48
4994 #define S_surfxml_config_2 49
4995 #define E_surfxml_config 50
4996 #define AL_surfxml_host 51
4997 #define S_surfxml_host 52
4998 #define S_surfxml_host_1 53
4999 #define S_surfxml_host_2 54
5000 #define E_surfxml_host 55
5001 #define AL_surfxml_host___link 56
5002 #define E_surfxml_host___link 57
5003 #define AL_surfxml_include 58
5004 #define S_surfxml_include 59
5005 #define S_surfxml_include_1 60
5006 #define S_surfxml_include_2 61
5007 #define E_surfxml_include 62
5008 #define AL_surfxml_link 63
5009 #define S_surfxml_link 64
5010 #define S_surfxml_link_1 65
5011 #define S_surfxml_link_2 66
5012 #define E_surfxml_link 67
5013 #define AL_surfxml_link___ctn 68
5014 #define E_surfxml_link___ctn 69
5015 #define AL_surfxml_model___prop 70
5016 #define E_surfxml_model___prop 71
5017 #define AL_surfxml_mount 72
5018 #define E_surfxml_mount 73
5019 #define AL_surfxml_peer 74
5020 #define E_surfxml_peer 75
5021 #define ROOT_surfxml_platform 76
5022 #define AL_surfxml_platform 77
5023 #define S_surfxml_platform 78
5024 #define S_surfxml_platform_1 79
5025 #define S_surfxml_platform_2 80
5026 #define S_surfxml_platform_3 81
5027 #define S_surfxml_platform_4 82
5028 #define S_surfxml_platform_5 83
5029 #define S_surfxml_platform_6 84
5030 #define S_surfxml_platform_7 85
5031 #define S_surfxml_platform_8 86
5032 #define E_surfxml_platform 87
5033 #define AL_surfxml_process 88
5034 #define S_surfxml_process 89
5035 #define S_surfxml_process_1 90
5036 #define S_surfxml_process_2 91
5037 #define E_surfxml_process 92
5038 #define AL_surfxml_prop 93
5039 #define E_surfxml_prop 94
5040 #define AL_surfxml_random 95
5041 #define E_surfxml_random 96
5042 #define AL_surfxml_route 97
5043 #define S_surfxml_route 98
5044 #define S_surfxml_route_1 99
5045 #define S_surfxml_route_2 100
5046 #define E_surfxml_route 101
5047 #define AL_surfxml_router 102
5048 #define E_surfxml_router 103
5049 #define AL_surfxml_storage 104
5050 #define S_surfxml_storage 105
5051 #define S_surfxml_storage_1 106
5052 #define S_surfxml_storage_2 107
5053 #define E_surfxml_storage 108
5054 #define AL_surfxml_storage___type 109
5055 #define S_surfxml_storage___type 110
5056 #define S_surfxml_storage___type_1 111
5057 #define S_surfxml_storage___type_2 112
5058 #define E_surfxml_storage___type 113
5059 #define AL_surfxml_trace 114
5060 #define IN_trace 115
5061 #define AL_surfxml_trace___connect 116
5062 #define E_surfxml_trace___connect 117
5063 #define IMPOSSIBLE 118
5064
5065 #ifndef YY_NO_UNISTD_H
5066 /* Special case for "unistd.h", since it is non-ANSI. We include it way
5067  * down here because we want the user's section 1 to have been scanned first.
5068  * The user has a chance to override it with an option.
5069  */
5070 #if defined(_WIN32)
5071 #  ifndef __STRICT_ANSI__
5072 #    include <io.h>
5073 #    include <process.h>
5074 #  endif
5075 #else
5076 #  include <unistd.h>
5077 #endif
5078 #endif
5079
5080 #ifndef YY_EXTRA_TYPE
5081 #define YY_EXTRA_TYPE void *
5082 #endif
5083
5084 static int yy_init_globals (void );
5085
5086 /* Accessor methods to globals.
5087    These are made visible to non-reentrant scanners for convenience. */
5088
5089 int surf_parse_lex_destroy (void );
5090
5091 int surf_parse_get_debug (void );
5092
5093 void surf_parse_set_debug (int debug_flag  );
5094
5095 YY_EXTRA_TYPE surf_parse_get_extra (void );
5096
5097 void surf_parse_set_extra (YY_EXTRA_TYPE user_defined  );
5098
5099 FILE *surf_parse_get_in (void );
5100
5101 void surf_parse_set_in  (FILE * _in_str  );
5102
5103 FILE *surf_parse_get_out (void );
5104
5105 void surf_parse_set_out  (FILE * _out_str  );
5106
5107 yy_size_t surf_parse_get_leng (void );
5108
5109 char *surf_parse_get_text (void );
5110
5111 int surf_parse_get_lineno (void );
5112
5113 void surf_parse_set_lineno (int _line_number  );
5114
5115 /* Macros after this point can all be overridden by user definitions in
5116  * section 1.
5117  */
5118
5119 #ifndef YY_SKIP_YYWRAP
5120 #ifdef __cplusplus
5121 extern "C" int surf_parse_wrap (void );
5122 #else
5123 extern int surf_parse_wrap (void );
5124 #endif
5125 #endif
5126
5127 #ifndef YY_NO_UNPUT
5128     
5129 #endif
5130
5131 #ifndef yytext_ptr
5132 static void yy_flex_strncpy (char *,yyconst char *,int );
5133 #endif
5134
5135 #ifdef YY_NEED_STRLEN
5136 static int yy_flex_strlen (yyconst char * );
5137 #endif
5138
5139 #ifndef YY_NO_INPUT
5140
5141 #ifdef __cplusplus
5142 static int yyinput (void );
5143 #else
5144 static int input (void );
5145 #endif
5146
5147 #endif
5148
5149         static int yy_start_stack_ptr = 0;
5150         static int yy_start_stack_depth = 0;
5151         static int *yy_start_stack = NULL;
5152     
5153     static void yy_push_state (int _new_state );
5154     
5155     static void yy_pop_state (void );
5156     
5157 /* Amount of stuff to slurp up with each read. */
5158 #ifndef YY_READ_BUF_SIZE
5159 #ifdef __ia64__
5160 /* On IA-64, the buffer size is 16k, not 8k */
5161 #define YY_READ_BUF_SIZE 16384
5162 #else
5163 #define YY_READ_BUF_SIZE 8192
5164 #endif /* __ia64__ */
5165 #endif
5166
5167 /* Copy whatever the last rule matched to the standard output. */
5168 #ifndef ECHO
5169 /* This used to be an fputs(), but since the string might contain NUL's,
5170  * we now use fwrite().
5171  */
5172 #define ECHO do { if (fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )) {} } while (0)
5173 #endif
5174
5175 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
5176  * is returned in "result".
5177  */
5178 #ifndef YY_INPUT
5179 #define YY_INPUT(buf,result,max_size) \
5180         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
5181                 { \
5182                 int c = '*'; \
5183                 size_t n; \
5184                 for ( n = 0; n < max_size && \
5185                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
5186                         buf[n] = (char) c; \
5187                 if ( c == '\n' ) \
5188                         buf[n++] = (char) c; \
5189                 if ( c == EOF && ferror( surf_parse_in ) ) \
5190                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
5191                 result = n; \
5192                 } \
5193         else \
5194                 { \
5195                 errno=0; \
5196                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
5197                         { \
5198                         if( errno != EINTR) \
5199                                 { \
5200                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
5201                                 break; \
5202                                 } \
5203                         errno=0; \
5204                         clearerr(surf_parse_in); \
5205                         } \
5206                 }\
5207 \
5208
5209 #endif
5210
5211 /* No semi-colon after return; correct usage is to write "yyterminate();" -
5212  * we don't want an extra ';' after the "return" because that will cause
5213  * some compilers to complain about unreachable statements.
5214  */
5215 #ifndef yyterminate
5216 #define yyterminate() return YY_NULL
5217 #endif
5218
5219 /* Number of entries by which start-condition stack grows. */
5220 #ifndef YY_START_STACK_INCR
5221 #define YY_START_STACK_INCR 25
5222 #endif
5223
5224 /* Report a fatal error. */
5225 #ifndef YY_FATAL_ERROR
5226 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
5227 #endif
5228
5229 /* end tables serialization structures and prototypes */
5230
5231 /* Default declaration of generated scanner - a define so the user can
5232  * easily add parameters.
5233  */
5234 #ifndef YY_DECL
5235 #define YY_DECL_IS_OURS 1
5236
5237 extern int surf_parse_lex (void);
5238
5239 #define YY_DECL int surf_parse_lex (void)
5240 #endif /* !YY_DECL */
5241
5242 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
5243  * have been set up.
5244  */
5245 #ifndef YY_USER_ACTION
5246 #define YY_USER_ACTION
5247 #endif
5248
5249 /* Code executed at the end of each rule. */
5250 #ifndef YY_BREAK
5251 #define YY_BREAK /*LINTED*/break;
5252 #endif
5253
5254 #define YY_RULE_SETUP \
5255         YY_USER_ACTION
5256
5257 /** The main scanner function which does all the work.
5258  */
5259 YY_DECL
5260 {
5261         yy_state_type yy_current_state;
5262         char *yy_cp, *yy_bp;
5263         int yy_act;
5264     
5265         if ( !(yy_init) )
5266                 {
5267                 (yy_init) = 1;
5268
5269 #ifdef YY_USER_INIT
5270                 YY_USER_INIT;
5271 #endif
5272
5273                 if ( ! (yy_start) )
5274                         (yy_start) = 1; /* first start state */
5275
5276                 if ( ! surf_parse_in )
5277                         surf_parse_in = stdin;
5278
5279                 if ( ! surf_parse_out )
5280                         surf_parse_out = stdout;
5281
5282                 if ( ! YY_CURRENT_BUFFER ) {
5283                         surf_parse_ensure_buffer_stack ();
5284                         YY_CURRENT_BUFFER_LVALUE =
5285                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
5286                 }
5287
5288                 surf_parse__load_buffer_state( );
5289                 }
5290
5291         {
5292
5293  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
5294  SET(PROLOG);
5295  reset_surfxml_parse_err_msg();
5296  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
5297  assert(surfxml_bufferstack);
5298  #ifdef FLEX_DEBUG
5299  {
5300      int i;
5301      for (i = 0; i < blimit; i++) {
5302          surfxml_bufferstack[i] = '\377';
5303      }
5304  }
5305  #endif
5306  surfxml_bufferstack[0] = '\0';
5307  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
5308  assert(indexstack);
5309  indexstack[0] = 0;
5310
5311   /* FleXML_init */
5312   bnext = inext = 1;
5313   surfxml_bufferliteral('\0', &bnext, "0.0");
5314   surfxml_bufferliteral('\0', &bnext, "2147483647");
5315   surfxml_bufferliteral('\0', &bnext, "txt_unix");
5316   surfxml_bufferliteral('\0', &bnext, "1");
5317   surfxml_bufferliteral('\0', &bnext, "0.0");
5318   surfxml_bufferliteral('\0', &bnext, "txt_unix");
5319   surfxml_bufferliteral('\0', &bnext, "1");
5320   surfxml_bufferliteral('\0', &bnext, "0s");
5321   surfxml_bufferliteral('\0', &bnext, "-1.0");
5322   surfxml_bufferliteral('\0', &bnext, "-1.0");
5323   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
5324   surfxml_statenames[PROLOG] = NULL;
5325   surfxml_statenames[DOCTYPE] = NULL;
5326   surfxml_statenames[EPILOG] = NULL;
5327   surfxml_statenames[INCOMMENT] = NULL;
5328   surfxml_statenames[INPI] = NULL;
5329   surfxml_statenames[VALUE1] = NULL;
5330   surfxml_statenames[VALUE2] = NULL;
5331   surfxml_statenames[CDATA] = NULL;
5332   surfxml_statenames[AL_surfxml_AS] = NULL;
5333   surfxml_statenames[S_surfxml_AS] = "AS";
5334   surfxml_statenames[S_surfxml_AS_1] = "AS";
5335   surfxml_statenames[S_surfxml_AS_2] = "AS";
5336   surfxml_statenames[S_surfxml_AS_3] = "AS";
5337   surfxml_statenames[S_surfxml_AS_4] = "AS";
5338   surfxml_statenames[S_surfxml_AS_5] = "AS";
5339   surfxml_statenames[S_surfxml_AS_6] = "AS";
5340   surfxml_statenames[S_surfxml_AS_7] = "AS";
5341   surfxml_statenames[S_surfxml_AS_8] = "AS";
5342   surfxml_statenames[E_surfxml_AS] = "AS";
5343   surfxml_statenames[AL_surfxml_ASroute] = NULL;
5344   surfxml_statenames[S_surfxml_ASroute] = "ASroute";
5345   surfxml_statenames[S_surfxml_ASroute_1] = "ASroute";
5346   surfxml_statenames[S_surfxml_ASroute_2] = "ASroute";
5347   surfxml_statenames[E_surfxml_ASroute] = "ASroute";
5348   surfxml_statenames[AL_surfxml_argument] = NULL;
5349   surfxml_statenames[E_surfxml_argument] = "argument";
5350   surfxml_statenames[AL_surfxml_backbone] = NULL;
5351   surfxml_statenames[E_surfxml_backbone] = "backbone";
5352   surfxml_statenames[AL_surfxml_bypassASroute] = NULL;
5353   surfxml_statenames[S_surfxml_bypassASroute] = "bypassASroute";
5354   surfxml_statenames[S_surfxml_bypassASroute_1] = "bypassASroute";
5355   surfxml_statenames[S_surfxml_bypassASroute_2] = "bypassASroute";
5356   surfxml_statenames[E_surfxml_bypassASroute] = "bypassASroute";
5357   surfxml_statenames[AL_surfxml_bypassRoute] = NULL;
5358   surfxml_statenames[S_surfxml_bypassRoute] = "bypassRoute";
5359   surfxml_statenames[S_surfxml_bypassRoute_1] = "bypassRoute";
5360   surfxml_statenames[S_surfxml_bypassRoute_2] = "bypassRoute";
5361   surfxml_statenames[E_surfxml_bypassRoute] = "bypassRoute";
5362   surfxml_statenames[AL_surfxml_cabinet] = NULL;
5363   surfxml_statenames[E_surfxml_cabinet] = "cabinet";
5364   surfxml_statenames[AL_surfxml_cluster] = NULL;
5365   surfxml_statenames[S_surfxml_cluster] = "cluster";
5366   surfxml_statenames[S_surfxml_cluster_1] = "cluster";
5367   surfxml_statenames[S_surfxml_cluster_2] = "cluster";
5368   surfxml_statenames[E_surfxml_cluster] = "cluster";
5369   surfxml_statenames[AL_surfxml_config] = NULL;
5370   surfxml_statenames[S_surfxml_config] = "config";
5371   surfxml_statenames[S_surfxml_config_1] = "config";
5372   surfxml_statenames[S_surfxml_config_2] = "config";
5373   surfxml_statenames[E_surfxml_config] = "config";
5374   surfxml_statenames[AL_surfxml_host] = NULL;
5375   surfxml_statenames[S_surfxml_host] = "host";
5376   surfxml_statenames[S_surfxml_host_1] = "host";
5377   surfxml_statenames[S_surfxml_host_2] = "host";
5378   surfxml_statenames[E_surfxml_host] = "host";
5379   surfxml_statenames[AL_surfxml_host___link] = NULL;
5380   surfxml_statenames[E_surfxml_host___link] = "host_link";
5381   surfxml_statenames[AL_surfxml_include] = NULL;
5382   surfxml_statenames[S_surfxml_include] = "include";
5383   surfxml_statenames[S_surfxml_include_1] = "include";
5384   surfxml_statenames[S_surfxml_include_2] = "include";
5385   surfxml_statenames[E_surfxml_include] = "include";
5386   surfxml_statenames[AL_surfxml_link] = NULL;
5387   surfxml_statenames[S_surfxml_link] = "link";
5388   surfxml_statenames[S_surfxml_link_1] = "link";
5389   surfxml_statenames[S_surfxml_link_2] = "link";
5390   surfxml_statenames[E_surfxml_link] = "link";
5391   surfxml_statenames[AL_surfxml_link___ctn] = NULL;
5392   surfxml_statenames[E_surfxml_link___ctn] = "link_ctn";
5393   surfxml_statenames[AL_surfxml_model___prop] = NULL;
5394   surfxml_statenames[E_surfxml_model___prop] = "model_prop";
5395   surfxml_statenames[AL_surfxml_mount] = NULL;
5396   surfxml_statenames[E_surfxml_mount] = "mount";
5397   surfxml_statenames[AL_surfxml_peer] = NULL;
5398   surfxml_statenames[E_surfxml_peer] = "peer";
5399   surfxml_statenames[ROOT_surfxml_platform] = NULL;
5400   surfxml_statenames[AL_surfxml_platform] = NULL;
5401   surfxml_statenames[S_surfxml_platform] = "platform";
5402   surfxml_statenames[S_surfxml_platform_1] = "platform";
5403   surfxml_statenames[S_surfxml_platform_2] = "platform";
5404   surfxml_statenames[S_surfxml_platform_3] = "platform";
5405   surfxml_statenames[S_surfxml_platform_4] = "platform";
5406   surfxml_statenames[S_surfxml_platform_5] = "platform";
5407   surfxml_statenames[S_surfxml_platform_6] = "platform";
5408   surfxml_statenames[S_surfxml_platform_7] = "platform";
5409   surfxml_statenames[S_surfxml_platform_8] = "platform";
5410   surfxml_statenames[E_surfxml_platform] = "platform";
5411   surfxml_statenames[AL_surfxml_process] = NULL;
5412   surfxml_statenames[S_surfxml_process] = "process";
5413   surfxml_statenames[S_surfxml_process_1] = "process";
5414   surfxml_statenames[S_surfxml_process_2] = "process";
5415   surfxml_statenames[E_surfxml_process] = "process";
5416   surfxml_statenames[AL_surfxml_prop] = NULL;
5417   surfxml_statenames[E_surfxml_prop] = "prop";
5418   surfxml_statenames[AL_surfxml_random] = NULL;
5419   surfxml_statenames[E_surfxml_random] = "random";
5420   surfxml_statenames[AL_surfxml_route] = NULL;
5421   surfxml_statenames[S_surfxml_route] = "route";
5422   surfxml_statenames[S_surfxml_route_1] = "route";
5423   surfxml_statenames[S_surfxml_route_2] = "route";
5424   surfxml_statenames[E_surfxml_route] = "route";
5425   surfxml_statenames[AL_surfxml_router] = NULL;
5426   surfxml_statenames[E_surfxml_router] = "router";
5427   surfxml_statenames[AL_surfxml_storage] = NULL;
5428   surfxml_statenames[S_surfxml_storage] = "storage";
5429   surfxml_statenames[S_surfxml_storage_1] = "storage";
5430   surfxml_statenames[S_surfxml_storage_2] = "storage";
5431   surfxml_statenames[E_surfxml_storage] = "storage";
5432   surfxml_statenames[AL_surfxml_storage___type] = NULL;
5433   surfxml_statenames[S_surfxml_storage___type] = "storage_type";
5434   surfxml_statenames[S_surfxml_storage___type_1] = "storage_type";
5435   surfxml_statenames[S_surfxml_storage___type_2] = "storage_type";
5436   surfxml_statenames[E_surfxml_storage___type] = "storage_type";
5437   surfxml_statenames[AL_surfxml_trace] = NULL;
5438   surfxml_statenames[IN_trace] = "trace";
5439   surfxml_statenames[AL_surfxml_trace___connect] = NULL;
5440   surfxml_statenames[E_surfxml_trace___connect] = "trace_connect";
5441   }
5442
5443  /* COMMENTS and PIs: handled uniformly for efficiency. */
5444
5445         while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
5446                 {
5447                 yy_cp = (yy_c_buf_p);
5448
5449                 /* Support of surf_parse_text. */
5450                 *yy_cp = (yy_hold_char);
5451
5452                 /* yy_bp points to the position in yy_ch_buf of the start of
5453                  * the current run.
5454                  */
5455                 yy_bp = yy_cp;
5456
5457                 yy_current_state = (yy_start);
5458 yy_match:
5459                 do
5460                         {
5461                         YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
5462                         if ( yy_accept[yy_current_state] )
5463                                 {
5464                                 (yy_last_accepting_state) = yy_current_state;
5465                                 (yy_last_accepting_cpos) = yy_cp;
5466                                 }
5467                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5468                                 {
5469                                 yy_current_state = (int) yy_def[yy_current_state];
5470                                 if ( yy_current_state >= 3334 )
5471                                         yy_c = yy_meta[(unsigned int) yy_c];
5472                                 }
5473                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5474                         ++yy_cp;
5475                         }
5476                 while ( yy_base[yy_current_state] != 11902 );
5477
5478 yy_find_action:
5479                 yy_act = yy_accept[yy_current_state];
5480                 if ( yy_act == 0 )
5481                         { /* have to back up */
5482                         yy_cp = (yy_last_accepting_cpos);
5483                         yy_current_state = (yy_last_accepting_state);
5484                         yy_act = yy_accept[yy_current_state];
5485                         }
5486
5487                 YY_DO_BEFORE_ACTION;
5488
5489                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
5490                         {
5491                         yy_size_t yyl;
5492                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
5493                                 if ( surf_parse_text[yyl] == '\n' )
5494                                            
5495     surf_parse_lineno++;
5496 ;
5497                         }
5498
5499 do_action:      /* This label is used only to access EOF actions. */
5500
5501                 switch ( yy_act )
5502         { /* beginning of action switch */
5503                         case 0: /* must back up */
5504                         /* undo the effects of YY_DO_BEFORE_ACTION */
5505                         *yy_cp = (yy_hold_char);
5506                         yy_cp = (yy_last_accepting_cpos);
5507                         yy_current_state = (yy_last_accepting_state);
5508                         goto yy_find_action;
5509
5510 case 1:
5511 YY_RULE_SETUP
5512 ENTER(INCOMMENT);
5513         YY_BREAK
5514 case 2:
5515 YY_RULE_SETUP
5516 ENTER(INPI);
5517         YY_BREAK
5518
5519 case 3:
5520 YY_RULE_SETUP
5521 LEAVE;
5522         YY_BREAK
5523 case 4:
5524 case 5:
5525 case 6:
5526 /* rule 6 can match eol */
5527 YY_RULE_SETUP
5528 SKIP;
5529         YY_BREAK
5530 case YY_STATE_EOF(INCOMMENT):
5531 FAIL("EOF in comment.");
5532         YY_BREAK
5533
5534 case 7:
5535 YY_RULE_SETUP
5536 LEAVE;
5537         YY_BREAK
5538 case 8:
5539 case 9:
5540 /* rule 9 can match eol */
5541 YY_RULE_SETUP
5542 SKIP;
5543         YY_BREAK
5544 case YY_STATE_EOF(INPI):
5545 FAIL("EOF in PI (processing instruction).");
5546         YY_BREAK
5547
5548 /* SPACES: skipped uniformly */
5549 case 10:
5550 /* rule 10 can match eol */
5551 YY_RULE_SETUP
5552 SKIP;
5553         YY_BREAK
5554 /* PROLOG: determine root element and process it. */
5555
5556 case 11:
5557 /* rule 11 can match eol */
5558 YY_RULE_SETUP
5559 SET(DOCTYPE); 
5560         YY_BREAK
5561 case 12:
5562 /* rule 12 can match eol */
5563 YY_RULE_SETUP
5564 FAIL("Bad declaration %s.\nIf your are using a XML v3 file (check the version attribute in <platform>), please update it with tools/simgrid_update_xml.pl",surf_parse_text);
5565         YY_BREAK
5566
5567 case 13:
5568 /* rule 13 can match eol */
5569 YY_RULE_SETUP
5570 SET(ROOT_surfxml_platform);
5571         YY_BREAK
5572 case 14:
5573 /* rule 14 can match eol */
5574 YY_RULE_SETUP
5575 FAIL("Bad declaration %s.\nIf your are using a XML v3 file (check the version attribute in <platform>), please update it with tools/simgrid_update_xml.pl",surf_parse_text);
5576         YY_BREAK
5577 case 15:
5578 YY_RULE_SETUP
5579 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
5580         YY_BREAK
5581 case YY_STATE_EOF(PROLOG):
5582 case YY_STATE_EOF(DOCTYPE):
5583 FAIL("EOF in prolog.");
5584         YY_BREAK
5585
5586 /* RULES DERIVED FROM DTD. */
5587 case 16:
5588 /* rule 16 can match eol */
5589 YY_RULE_SETUP
5590 FAIL("Starting tag <AS> is not allowed here.");
5591         YY_BREAK
5592 case 17:
5593 /* rule 17 can match eol */
5594 YY_RULE_SETUP
5595 {
5596   AX_surfxml_AS_id = 0;
5597   surfxml_AS_id_isset = 0;
5598   AX_surfxml_AS_routing = AU_surfxml_AS_routing;
5599   surfxml_AS_routing_isset = 0;
5600   ENTER(AL_surfxml_AS); pushbuffer(0);
5601   }
5602         YY_BREAK
5603
5604 case 18:
5605 /* rule 18 can match eol */
5606 YY_RULE_SETUP
5607 if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");} surfxml_AS_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_id);
5608         YY_BREAK
5609 case 19:
5610 /* rule 19 can match eol */
5611 YY_RULE_SETUP
5612 if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");}  surfxml_AS_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_id);
5613         YY_BREAK
5614 case 20:
5615 /* rule 20 can match eol */
5616 case 21:
5617 /* rule 21 can match eol */
5618 YY_RULE_SETUP
5619 A_surfxml_AS_routing = A_surfxml_AS_routing_Full;
5620         YY_BREAK
5621 case 22:
5622 /* rule 22 can match eol */
5623 case 23:
5624 /* rule 23 can match eol */
5625 YY_RULE_SETUP
5626 A_surfxml_AS_routing = A_surfxml_AS_routing_Floyd;
5627         YY_BREAK
5628 case 24:
5629 /* rule 24 can match eol */
5630 case 25:
5631 /* rule 25 can match eol */
5632 YY_RULE_SETUP
5633 A_surfxml_AS_routing = A_surfxml_AS_routing_Dijkstra;
5634         YY_BREAK
5635 case 26:
5636 /* rule 26 can match eol */
5637 case 27:
5638 /* rule 27 can match eol */
5639 YY_RULE_SETUP
5640 A_surfxml_AS_routing = A_surfxml_AS_routing_DijkstraCache;
5641         YY_BREAK
5642 case 28:
5643 /* rule 28 can match eol */
5644 case 29:
5645 /* rule 29 can match eol */
5646 YY_RULE_SETUP
5647 A_surfxml_AS_routing = A_surfxml_AS_routing_None;
5648         YY_BREAK
5649 case 30:
5650 /* rule 30 can match eol */
5651 case 31:
5652 /* rule 31 can match eol */
5653 YY_RULE_SETUP
5654 A_surfxml_AS_routing = A_surfxml_AS_routing_Vivaldi;
5655         YY_BREAK
5656 case 32:
5657 /* rule 32 can match eol */
5658 case 33:
5659 /* rule 33 can match eol */
5660 YY_RULE_SETUP
5661 A_surfxml_AS_routing = A_surfxml_AS_routing_Cluster;
5662         YY_BREAK
5663 case 34:
5664 /* rule 34 can match eol */
5665 case 35:
5666 /* rule 35 can match eol */
5667 YY_RULE_SETUP
5668 A_surfxml_AS_routing = A_surfxml_AS_routing_ClusterTorus;
5669         YY_BREAK
5670 case 36:
5671 /* rule 36 can match eol */
5672 case 37:
5673 /* rule 37 can match eol */
5674 YY_RULE_SETUP
5675 A_surfxml_AS_routing = A_surfxml_AS_routing_ClusterFatTree;
5676         YY_BREAK
5677 case 38:
5678 /* rule 38 can match eol */
5679 case 39:
5680 /* rule 39 can match eol */
5681 YY_RULE_SETUP
5682 A_surfxml_AS_routing = A_surfxml_AS_routing_ClusterDragonfly;
5683         YY_BREAK
5684 case 40:
5685 YY_RULE_SETUP
5686 {
5687   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
5688   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
5689   LEAVE; STag_surfxml_AS();surfxml_pcdata_ix = 0; ENTER(S_surfxml_AS);
5690  }
5691         YY_BREAK
5692 case 41:
5693 YY_RULE_SETUP
5694 {
5695   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
5696   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
5697   LEAVE; STag_surfxml_AS(); surfxml_pcdata_ix = 0; ETag_surfxml_AS(); popbuffer(); /* attribute */
5698   switch (YY_START) {
5699    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
5700    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
5701    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
5702   }
5703  }
5704         YY_BREAK
5705 case 42:
5706 YY_RULE_SETUP
5707 FAIL("Unexpected character `%c' in attribute list of AS element.", surf_parse_text[0]);
5708         YY_BREAK
5709 case 43:
5710 YY_RULE_SETUP
5711 FAIL("Bad attribute `%s' in `AS' element start tag.",surf_parse_text);
5712         YY_BREAK
5713 case YY_STATE_EOF(AL_surfxml_AS):
5714 FAIL("EOF in attribute list of `AS' element.");
5715         YY_BREAK
5716
5717 case 44:
5718 /* rule 44 can match eol */
5719 YY_RULE_SETUP
5720 {
5721   LEAVE;
5722   ETag_surfxml_AS();
5723   popbuffer(); /* attribute */
5724   switch (YY_START) {
5725    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
5726    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
5727    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
5728   }
5729  }
5730         YY_BREAK
5731 case 45:
5732 /* rule 45 can match eol */
5733 YY_RULE_SETUP
5734 FAIL("Unexpected end-tag `%s': `</AS>' expected.",surf_parse_text);
5735         YY_BREAK
5736 case 46:
5737 YY_RULE_SETUP
5738 FAIL("Unexpected character `%c': `</AS>' expected.",surf_parse_text[0]);
5739         YY_BREAK
5740 case YY_STATE_EOF(E_surfxml_AS):
5741 case YY_STATE_EOF(S_surfxml_AS):
5742 case YY_STATE_EOF(S_surfxml_AS_1):
5743 case YY_STATE_EOF(S_surfxml_AS_3):
5744 case YY_STATE_EOF(S_surfxml_AS_4):
5745 case YY_STATE_EOF(S_surfxml_AS_6):
5746 case YY_STATE_EOF(S_surfxml_AS_8):
5747 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</AS>' expected.");
5748         YY_BREAK
5749
5750 case 47:
5751 /* rule 47 can match eol */
5752 YY_RULE_SETUP
5753 FAIL("Starting tag <ASroute> is not allowed here.");
5754         YY_BREAK
5755 case 48:
5756 /* rule 48 can match eol */
5757 YY_RULE_SETUP
5758 {
5759   AX_surfxml_ASroute_dst = 0;
5760   surfxml_ASroute_dst_isset = 0;
5761   AX_surfxml_ASroute_gw___dst = 0;
5762   surfxml_ASroute_gw___dst_isset = 0;
5763   AX_surfxml_ASroute_gw___src = 0;
5764   surfxml_ASroute_gw___src_isset = 0;
5765   AX_surfxml_ASroute_src = 0;
5766   surfxml_ASroute_src_isset = 0;
5767   AX_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5768   surfxml_ASroute_symmetrical_isset = 0;
5769   ENTER(AL_surfxml_ASroute); pushbuffer(0);
5770   }
5771         YY_BREAK
5772
5773 case 49:
5774 /* rule 49 can match eol */
5775 YY_RULE_SETUP
5776 if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");} surfxml_ASroute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_dst);
5777         YY_BREAK
5778 case 50:
5779 /* rule 50 can match eol */
5780 YY_RULE_SETUP
5781 if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");}  surfxml_ASroute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_dst);
5782         YY_BREAK
5783 case 51:
5784 /* rule 51 can match eol */
5785 YY_RULE_SETUP
5786 if (surfxml_ASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");} surfxml_ASroute_gw___dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw___dst);
5787         YY_BREAK
5788 case 52:
5789 /* rule 52 can match eol */
5790 YY_RULE_SETUP
5791 if (surfxml_ASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");}  surfxml_ASroute_gw___dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw___dst);
5792         YY_BREAK
5793 case 53:
5794 /* rule 53 can match eol */
5795 YY_RULE_SETUP
5796 if (surfxml_ASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");} surfxml_ASroute_gw___src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw___src);
5797         YY_BREAK
5798 case 54:
5799 /* rule 54 can match eol */
5800 YY_RULE_SETUP
5801 if (surfxml_ASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");}  surfxml_ASroute_gw___src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw___src);
5802         YY_BREAK
5803 case 55:
5804 /* rule 55 can match eol */
5805 YY_RULE_SETUP
5806 if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");} surfxml_ASroute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_src);
5807         YY_BREAK
5808 case 56:
5809 /* rule 56 can match eol */
5810 YY_RULE_SETUP
5811 if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");}  surfxml_ASroute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_src);
5812         YY_BREAK
5813 case 57:
5814 /* rule 57 can match eol */
5815 case 58:
5816 /* rule 58 can match eol */
5817 YY_RULE_SETUP
5818 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5819         YY_BREAK
5820 case 59:
5821 /* rule 59 can match eol */
5822 case 60:
5823 /* rule 60 can match eol */
5824 YY_RULE_SETUP
5825 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_NO;
5826         YY_BREAK
5827 case 61:
5828 YY_RULE_SETUP
5829 {
5830   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5831   if (!AX_surfxml_ASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5832   if (!AX_surfxml_ASroute_gw___src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5833   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5834   LEAVE; STag_surfxml_ASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_ASroute);
5835  }
5836         YY_BREAK
5837 case 62:
5838 YY_RULE_SETUP
5839 {
5840   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5841   if (!AX_surfxml_ASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5842   if (!AX_surfxml_ASroute_gw___src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5843   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5844   LEAVE; STag_surfxml_ASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_ASroute(); popbuffer(); /* attribute */
5845   switch (YY_START) {
5846    case S_surfxml_AS: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
5847    case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
5848   }
5849  }
5850         YY_BREAK
5851 case 63:
5852 YY_RULE_SETUP
5853 FAIL("Unexpected character `%c' in attribute list of ASroute element.", surf_parse_text[0]);
5854         YY_BREAK
5855 case 64:
5856 YY_RULE_SETUP
5857 FAIL("Bad attribute `%s' in `ASroute' element start tag.",surf_parse_text);
5858         YY_BREAK
5859 case YY_STATE_EOF(AL_surfxml_ASroute):
5860 FAIL("EOF in attribute list of `ASroute' element.");
5861         YY_BREAK
5862
5863 case 65:
5864 /* rule 65 can match eol */
5865 YY_RULE_SETUP
5866 {
5867   LEAVE;
5868   ETag_surfxml_ASroute();
5869   popbuffer(); /* attribute */
5870   switch (YY_START) {
5871    case S_surfxml_AS: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
5872    case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
5873   }
5874  }
5875         YY_BREAK
5876 case 66:
5877 /* rule 66 can match eol */
5878 YY_RULE_SETUP
5879 FAIL("Unexpected end-tag `%s': `</ASroute>' expected.",surf_parse_text);
5880         YY_BREAK
5881 case 67:
5882 YY_RULE_SETUP
5883 FAIL("Unexpected character `%c': `</ASroute>' expected.",surf_parse_text[0]);
5884         YY_BREAK
5885 case YY_STATE_EOF(E_surfxml_ASroute):
5886 case YY_STATE_EOF(S_surfxml_ASroute):
5887 case YY_STATE_EOF(S_surfxml_ASroute_2):
5888 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</ASroute>' expected.");
5889         YY_BREAK
5890
5891 case 68:
5892 /* rule 68 can match eol */
5893 YY_RULE_SETUP
5894 FAIL("Starting tag <argument> is not allowed here.");
5895         YY_BREAK
5896 case 69:
5897 /* rule 69 can match eol */
5898 YY_RULE_SETUP
5899 {
5900   AX_surfxml_argument_value = 0;
5901   surfxml_argument_value_isset = 0;
5902   ENTER(AL_surfxml_argument); pushbuffer(0);
5903   }
5904         YY_BREAK
5905
5906 case 70:
5907 /* rule 70 can match eol */
5908 YY_RULE_SETUP
5909 if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");} surfxml_argument_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
5910         YY_BREAK
5911 case 71:
5912 /* rule 71 can match eol */
5913 YY_RULE_SETUP
5914 if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");}  surfxml_argument_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
5915         YY_BREAK
5916 case 72:
5917 YY_RULE_SETUP
5918 {
5919   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5920   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
5921  }
5922         YY_BREAK
5923 case 73:
5924 YY_RULE_SETUP
5925 {
5926   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5927   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
5928   switch (YY_START) {
5929    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
5930   }
5931  }
5932         YY_BREAK
5933 case 74:
5934 YY_RULE_SETUP
5935 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
5936         YY_BREAK
5937 case 75:
5938 YY_RULE_SETUP
5939 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
5940         YY_BREAK
5941 case YY_STATE_EOF(AL_surfxml_argument):
5942 FAIL("EOF in attribute list of `argument' element.");
5943         YY_BREAK
5944
5945 case 76:
5946 /* rule 76 can match eol */
5947 YY_RULE_SETUP
5948 {
5949   LEAVE;
5950   ETag_surfxml_argument();
5951   popbuffer(); /* attribute */
5952   switch (YY_START) {
5953    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
5954   }
5955  }
5956         YY_BREAK
5957 case 77:
5958 /* rule 77 can match eol */
5959 YY_RULE_SETUP
5960 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
5961         YY_BREAK
5962 case 78:
5963 YY_RULE_SETUP
5964 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
5965         YY_BREAK
5966 case YY_STATE_EOF(E_surfxml_argument):
5967 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</argument>' expected.");
5968         YY_BREAK
5969
5970 case 79:
5971 /* rule 79 can match eol */
5972 YY_RULE_SETUP
5973 FAIL("Starting tag <backbone> is not allowed here.");
5974         YY_BREAK
5975 case 80:
5976 /* rule 80 can match eol */
5977 YY_RULE_SETUP
5978 {
5979   AX_surfxml_backbone_bandwidth = 0;
5980   surfxml_backbone_bandwidth_isset = 0;
5981   AX_surfxml_backbone_id = 0;
5982   surfxml_backbone_id_isset = 0;
5983   AX_surfxml_backbone_latency = 0;
5984   surfxml_backbone_latency_isset = 0;
5985   ENTER(AL_surfxml_backbone); pushbuffer(0);
5986   }
5987         YY_BREAK
5988
5989 case 81:
5990 /* rule 81 can match eol */
5991 YY_RULE_SETUP
5992 if (surfxml_backbone_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_backbone>");} surfxml_backbone_bandwidth_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_bandwidth);
5993         YY_BREAK
5994 case 82:
5995 /* rule 82 can match eol */
5996 YY_RULE_SETUP
5997 if (surfxml_backbone_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_backbone>");}  surfxml_backbone_bandwidth_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_bandwidth);
5998         YY_BREAK
5999 case 83:
6000 /* rule 83 can match eol */
6001 YY_RULE_SETUP
6002 if (surfxml_backbone_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_backbone>");} surfxml_backbone_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_id);
6003         YY_BREAK
6004 case 84:
6005 /* rule 84 can match eol */
6006 YY_RULE_SETUP
6007 if (surfxml_backbone_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_backbone>");}  surfxml_backbone_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_id);
6008         YY_BREAK
6009 case 85:
6010 /* rule 85 can match eol */
6011 YY_RULE_SETUP
6012 if (surfxml_backbone_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_backbone>");} surfxml_backbone_latency_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_latency);
6013         YY_BREAK
6014 case 86:
6015 /* rule 86 can match eol */
6016 YY_RULE_SETUP
6017 if (surfxml_backbone_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_backbone>");}  surfxml_backbone_latency_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_latency);
6018         YY_BREAK
6019 case 87:
6020 YY_RULE_SETUP
6021 {
6022   if (!AX_surfxml_backbone_bandwidth) FAIL("Required attribute `bandwidth' not set for `backbone' element.");
6023   if (!AX_surfxml_backbone_id) FAIL("Required attribute `id' not set for `backbone' element.");
6024   if (!AX_surfxml_backbone_latency) FAIL("Required attribute `latency' not set for `backbone' element.");
6025   LEAVE; STag_surfxml_backbone();surfxml_pcdata_ix = 0; ENTER(E_surfxml_backbone);
6026  }
6027         YY_BREAK
6028 case 88:
6029 YY_RULE_SETUP
6030 {
6031   if (!AX_surfxml_backbone_bandwidth) FAIL("Required attribute `bandwidth' not set for `backbone' element.");
6032   if (!AX_surfxml_backbone_id) FAIL("Required attribute `id' not set for `backbone' element.");
6033   if (!AX_surfxml_backbone_latency) FAIL("Required attribute `latency' not set for `backbone' element.");
6034   LEAVE; STag_surfxml_backbone(); surfxml_pcdata_ix = 0; ETag_surfxml_backbone(); popbuffer(); /* attribute */
6035   switch (YY_START) {
6036    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6037   }
6038  }
6039         YY_BREAK
6040 case 89:
6041 YY_RULE_SETUP
6042 FAIL("Unexpected character `%c' in attribute list of backbone element.", surf_parse_text[0]);
6043         YY_BREAK
6044 case 90:
6045 YY_RULE_SETUP
6046 FAIL("Bad attribute `%s' in `backbone' element start tag.",surf_parse_text);
6047         YY_BREAK
6048 case YY_STATE_EOF(AL_surfxml_backbone):
6049 FAIL("EOF in attribute list of `backbone' element.");
6050         YY_BREAK
6051
6052 case 91:
6053 /* rule 91 can match eol */
6054 YY_RULE_SETUP
6055 {
6056   LEAVE;
6057   ETag_surfxml_backbone();
6058   popbuffer(); /* attribute */
6059   switch (YY_START) {
6060    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6061   }
6062  }
6063         YY_BREAK
6064 case 92:
6065 /* rule 92 can match eol */
6066 YY_RULE_SETUP
6067 FAIL("Unexpected end-tag `%s': `</backbone>' expected.",surf_parse_text);
6068         YY_BREAK
6069 case 93:
6070 YY_RULE_SETUP
6071 FAIL("Unexpected character `%c': `</backbone>' expected.",surf_parse_text[0]);
6072         YY_BREAK
6073 case YY_STATE_EOF(E_surfxml_backbone):
6074 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</backbone>' expected.");
6075         YY_BREAK
6076
6077 case 94:
6078 /* rule 94 can match eol */
6079 YY_RULE_SETUP
6080 FAIL("Starting tag <bypassASroute> is not allowed here.");
6081         YY_BREAK
6082 case 95:
6083 /* rule 95 can match eol */
6084 YY_RULE_SETUP
6085 {
6086   AX_surfxml_bypassASroute_dst = 0;
6087   surfxml_bypassASroute_dst_isset = 0;
6088   AX_surfxml_bypassASroute_gw___dst = 0;
6089   surfxml_bypassASroute_gw___dst_isset = 0;
6090   AX_surfxml_bypassASroute_gw___src = 0;
6091   surfxml_bypassASroute_gw___src_isset = 0;
6092   AX_surfxml_bypassASroute_src = 0;
6093   surfxml_bypassASroute_src_isset = 0;
6094   ENTER(AL_surfxml_bypassASroute); pushbuffer(0);
6095   }
6096         YY_BREAK
6097
6098 case 96:
6099 /* rule 96 can match eol */
6100 YY_RULE_SETUP
6101 if (surfxml_bypassASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassASroute>");} surfxml_bypassASroute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_dst);
6102         YY_BREAK
6103 case 97:
6104 /* rule 97 can match eol */
6105 YY_RULE_SETUP
6106 if (surfxml_bypassASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassASroute>");}  surfxml_bypassASroute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_dst);
6107         YY_BREAK
6108 case 98:
6109 /* rule 98 can match eol */
6110 YY_RULE_SETUP
6111 if (surfxml_bypassASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassASroute>");} surfxml_bypassASroute_gw___dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw___dst);
6112         YY_BREAK
6113 case 99:
6114 /* rule 99 can match eol */
6115 YY_RULE_SETUP
6116 if (surfxml_bypassASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassASroute>");}  surfxml_bypassASroute_gw___dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw___dst);
6117         YY_BREAK
6118 case 100:
6119 /* rule 100 can match eol */
6120 YY_RULE_SETUP
6121 if (surfxml_bypassASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassASroute>");} surfxml_bypassASroute_gw___src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw___src);
6122         YY_BREAK
6123 case 101:
6124 /* rule 101 can match eol */
6125 YY_RULE_SETUP
6126 if (surfxml_bypassASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassASroute>");}  surfxml_bypassASroute_gw___src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw___src);
6127         YY_BREAK
6128 case 102:
6129 /* rule 102 can match eol */
6130 YY_RULE_SETUP
6131 if (surfxml_bypassASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassASroute>");} surfxml_bypassASroute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_src);
6132         YY_BREAK
6133 case 103:
6134 /* rule 103 can match eol */
6135 YY_RULE_SETUP
6136 if (surfxml_bypassASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassASroute>");}  surfxml_bypassASroute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_src);
6137         YY_BREAK
6138 case 104:
6139 YY_RULE_SETUP
6140 {
6141   if (!AX_surfxml_bypassASroute_dst) FAIL("Required attribute `dst' not set for `bypassASroute' element.");
6142   if (!AX_surfxml_bypassASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `bypassASroute' element.");
6143   if (!AX_surfxml_bypassASroute_gw___src) FAIL("Required attribute `gw_src' not set for `bypassASroute' element.");
6144   if (!AX_surfxml_bypassASroute_src) FAIL("Required attribute `src' not set for `bypassASroute' element.");
6145   LEAVE; STag_surfxml_bypassASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassASroute);
6146  }
6147         YY_BREAK
6148 case 105:
6149 YY_RULE_SETUP
6150 {
6151   if (!AX_surfxml_bypassASroute_dst) FAIL("Required attribute `dst' not set for `bypassASroute' element.");
6152   if (!AX_surfxml_bypassASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `bypassASroute' element.");
6153   if (!AX_surfxml_bypassASroute_gw___src) FAIL("Required attribute `gw_src' not set for `bypassASroute' element.");
6154   if (!AX_surfxml_bypassASroute_src) FAIL("Required attribute `src' not set for `bypassASroute' element.");
6155   LEAVE; STag_surfxml_bypassASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassASroute(); popbuffer(); /* attribute */
6156   switch (YY_START) {
6157    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6158   }
6159  }
6160         YY_BREAK
6161 case 106:
6162 YY_RULE_SETUP
6163 FAIL("Unexpected character `%c' in attribute list of bypassASroute element.", surf_parse_text[0]);
6164         YY_BREAK
6165 case 107:
6166 YY_RULE_SETUP
6167 FAIL("Bad attribute `%s' in `bypassASroute' element start tag.",surf_parse_text);
6168         YY_BREAK
6169 case YY_STATE_EOF(AL_surfxml_bypassASroute):
6170 FAIL("EOF in attribute list of `bypassASroute' element.");
6171         YY_BREAK
6172
6173 case 108:
6174 /* rule 108 can match eol */
6175 YY_RULE_SETUP
6176 {
6177   LEAVE;
6178   ETag_surfxml_bypassASroute();
6179   popbuffer(); /* attribute */
6180   switch (YY_START) {
6181    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6182   }
6183  }
6184         YY_BREAK
6185 case 109:
6186 /* rule 109 can match eol */
6187 YY_RULE_SETUP
6188 FAIL("Unexpected end-tag `%s': `</bypassASroute>' expected.",surf_parse_text);
6189         YY_BREAK
6190 case 110:
6191 YY_RULE_SETUP
6192 FAIL("Unexpected character `%c': `</bypassASroute>' expected.",surf_parse_text[0]);
6193         YY_BREAK
6194 case YY_STATE_EOF(E_surfxml_bypassASroute):
6195 case YY_STATE_EOF(S_surfxml_bypassASroute):
6196 case YY_STATE_EOF(S_surfxml_bypassASroute_2):
6197 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</bypassASroute>' expected.");
6198         YY_BREAK
6199
6200 case 111:
6201 /* rule 111 can match eol */
6202 YY_RULE_SETUP
6203 FAIL("Starting tag <bypassRoute> is not allowed here.");
6204         YY_BREAK
6205 case 112:
6206 /* rule 112 can match eol */
6207 YY_RULE_SETUP
6208 {
6209   AX_surfxml_bypassRoute_dst = 0;
6210   surfxml_bypassRoute_dst_isset = 0;
6211   AX_surfxml_bypassRoute_src = 0;
6212   surfxml_bypassRoute_src_isset = 0;
6213   ENTER(AL_surfxml_bypassRoute); pushbuffer(0);
6214   }
6215         YY_BREAK
6216
6217 case 113:
6218 /* rule 113 can match eol */
6219 YY_RULE_SETUP
6220 if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");} surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_dst);
6221         YY_BREAK
6222 case 114:
6223 /* rule 114 can match eol */
6224 YY_RULE_SETUP
6225 if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");}  surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_dst);
6226         YY_BREAK
6227 case 115:
6228 /* rule 115 can match eol */
6229 YY_RULE_SETUP
6230 if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");} surfxml_bypassRoute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_src);
6231         YY_BREAK
6232 case 116:
6233 /* rule 116 can match eol */
6234 YY_RULE_SETUP
6235 if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");}  surfxml_bypassRoute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_src);
6236         YY_BREAK
6237 case 117:
6238 YY_RULE_SETUP
6239 {
6240   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
6241   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
6242   LEAVE; STag_surfxml_bypassRoute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassRoute);
6243  }
6244         YY_BREAK
6245 case 118:
6246 YY_RULE_SETUP
6247 {
6248   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
6249   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
6250   LEAVE; STag_surfxml_bypassRoute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassRoute(); popbuffer(); /* attribute */
6251   switch (YY_START) {
6252    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6253   }
6254  }
6255         YY_BREAK
6256 case 119:
6257 YY_RULE_SETUP
6258 FAIL("Unexpected character `%c' in attribute list of bypassRoute element.", surf_parse_text[0]);
6259         YY_BREAK
6260 case 120:
6261 YY_RULE_SETUP
6262 FAIL("Bad attribute `%s' in `bypassRoute' element start tag.",surf_parse_text);
6263         YY_BREAK
6264 case YY_STATE_EOF(AL_surfxml_bypassRoute):
6265 FAIL("EOF in attribute list of `bypassRoute' element.");
6266         YY_BREAK
6267
6268 case 121:
6269 /* rule 121 can match eol */
6270 YY_RULE_SETUP
6271 {
6272   LEAVE;
6273   ETag_surfxml_bypassRoute();
6274   popbuffer(); /* attribute */
6275   switch (YY_START) {
6276    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6277   }
6278  }
6279         YY_BREAK
6280 case 122:
6281 /* rule 122 can match eol */
6282 YY_RULE_SETUP
6283 FAIL("Unexpected end-tag `%s': `</bypassRoute>' expected.",surf_parse_text);
6284         YY_BREAK
6285 case 123:
6286 YY_RULE_SETUP
6287 FAIL("Unexpected character `%c': `</bypassRoute>' expected.",surf_parse_text[0]);
6288         YY_BREAK
6289 case YY_STATE_EOF(E_surfxml_bypassRoute):
6290 case YY_STATE_EOF(S_surfxml_bypassRoute):
6291 case YY_STATE_EOF(S_surfxml_bypassRoute_2):
6292 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</bypassRoute>' expected.");
6293         YY_BREAK
6294
6295 case 124:
6296 /* rule 124 can match eol */
6297 YY_RULE_SETUP
6298 FAIL("Starting tag <cabinet> is not allowed here.");
6299         YY_BREAK
6300 case 125:
6301 /* rule 125 can match eol */
6302 YY_RULE_SETUP
6303 {
6304   AX_surfxml_cabinet_bw = 0;
6305   surfxml_cabinet_bw_isset = 0;
6306   AX_surfxml_cabinet_id = 0;
6307   surfxml_cabinet_id_isset = 0;
6308   AX_surfxml_cabinet_lat = 0;
6309   surfxml_cabinet_lat_isset = 0;
6310   AX_surfxml_cabinet_prefix = 0;
6311   surfxml_cabinet_prefix_isset = 0;
6312   AX_surfxml_cabinet_radical = 0;
6313   surfxml_cabinet_radical_isset = 0;
6314   AX_surfxml_cabinet_speed = 0;
6315   surfxml_cabinet_speed_isset = 0;
6316   AX_surfxml_cabinet_suffix = 0;
6317   surfxml_cabinet_suffix_isset = 0;
6318   ENTER(AL_surfxml_cabinet); pushbuffer(0);
6319   }
6320         YY_BREAK
6321
6322 case 126:
6323 /* rule 126 can match eol */
6324 YY_RULE_SETUP
6325 if (surfxml_cabinet_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cabinet>");} surfxml_cabinet_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_bw);
6326         YY_BREAK
6327 case 127:
6328 /* rule 127 can match eol */
6329 YY_RULE_SETUP
6330 if (surfxml_cabinet_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cabinet>");}  surfxml_cabinet_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_bw);
6331         YY_BREAK
6332 case 128:
6333 /* rule 128 can match eol */
6334 YY_RULE_SETUP
6335 if (surfxml_cabinet_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cabinet>");} surfxml_cabinet_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_id);
6336         YY_BREAK
6337 case 129:
6338 /* rule 129 can match eol */
6339 YY_RULE_SETUP
6340 if (surfxml_cabinet_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cabinet>");}  surfxml_cabinet_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_id);
6341         YY_BREAK
6342 case 130:
6343 /* rule 130 can match eol */
6344 YY_RULE_SETUP
6345 if (surfxml_cabinet_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cabinet>");} surfxml_cabinet_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_lat);
6346         YY_BREAK
6347 case 131:
6348 /* rule 131 can match eol */
6349 YY_RULE_SETUP
6350 if (surfxml_cabinet_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cabinet>");}  surfxml_cabinet_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_lat);
6351         YY_BREAK
6352 case 132:
6353 /* rule 132 can match eol */
6354 YY_RULE_SETUP
6355 if (surfxml_cabinet_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cabinet>");} surfxml_cabinet_prefix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_prefix);
6356         YY_BREAK
6357 case 133:
6358 /* rule 133 can match eol */
6359 YY_RULE_SETUP
6360 if (surfxml_cabinet_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cabinet>");}  surfxml_cabinet_prefix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_prefix);
6361         YY_BREAK
6362 case 134:
6363 /* rule 134 can match eol */
6364 YY_RULE_SETUP
6365 if (surfxml_cabinet_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cabinet>");} surfxml_cabinet_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_radical);
6366         YY_BREAK
6367 case 135:
6368 /* rule 135 can match eol */
6369 YY_RULE_SETUP
6370 if (surfxml_cabinet_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cabinet>");}  surfxml_cabinet_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_radical);
6371         YY_BREAK
6372 case 136:
6373 /* rule 136 can match eol */
6374 YY_RULE_SETUP
6375 if (surfxml_cabinet_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cabinet>");} surfxml_cabinet_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_speed);
6376         YY_BREAK
6377 case 137:
6378 /* rule 137 can match eol */
6379 YY_RULE_SETUP
6380 if (surfxml_cabinet_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cabinet>");}  surfxml_cabinet_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_speed);
6381         YY_BREAK
6382 case 138:
6383 /* rule 138 can match eol */
6384 YY_RULE_SETUP
6385 if (surfxml_cabinet_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cabinet>");} surfxml_cabinet_suffix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_suffix);
6386         YY_BREAK
6387 case 139:
6388 /* rule 139 can match eol */
6389 YY_RULE_SETUP
6390 if (surfxml_cabinet_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cabinet>");}  surfxml_cabinet_suffix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_suffix);
6391         YY_BREAK
6392 case 140:
6393 YY_RULE_SETUP
6394 {
6395   if (!AX_surfxml_cabinet_bw) FAIL("Required attribute `bw' not set for `cabinet' element.");
6396   if (!AX_surfxml_cabinet_id) FAIL("Required attribute `id' not set for `cabinet' element.");
6397   if (!AX_surfxml_cabinet_lat) FAIL("Required attribute `lat' not set for `cabinet' element.");
6398   if (!AX_surfxml_cabinet_prefix) FAIL("Required attribute `prefix' not set for `cabinet' element.");
6399   if (!AX_surfxml_cabinet_radical) FAIL("Required attribute `radical' not set for `cabinet' element.");
6400   if (!AX_surfxml_cabinet_speed) FAIL("Required attribute `speed' not set for `cabinet' element.");
6401   if (!AX_surfxml_cabinet_suffix) FAIL("Required attribute `suffix' not set for `cabinet' element.");
6402   LEAVE; STag_surfxml_cabinet();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cabinet);
6403  }
6404         YY_BREAK
6405 case 141:
6406 YY_RULE_SETUP
6407 {
6408   if (!AX_surfxml_cabinet_bw) FAIL("Required attribute `bw' not set for `cabinet' element.");
6409   if (!AX_surfxml_cabinet_id) FAIL("Required attribute `id' not set for `cabinet' element.");
6410   if (!AX_surfxml_cabinet_lat) FAIL("Required attribute `lat' not set for `cabinet' element.");
6411   if (!AX_surfxml_cabinet_prefix) FAIL("Required attribute `prefix' not set for `cabinet' element.");
6412   if (!AX_surfxml_cabinet_radical) FAIL("Required attribute `radical' not set for `cabinet' element.");
6413   if (!AX_surfxml_cabinet_speed) FAIL("Required attribute `speed' not set for `cabinet' element.");
6414   if (!AX_surfxml_cabinet_suffix) FAIL("Required attribute `suffix' not set for `cabinet' element.");
6415   LEAVE; STag_surfxml_cabinet(); surfxml_pcdata_ix = 0; ETag_surfxml_cabinet(); popbuffer(); /* attribute */
6416   switch (YY_START) {
6417    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6418    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6419    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6420   }
6421  }
6422         YY_BREAK
6423 case 142:
6424 YY_RULE_SETUP
6425 FAIL("Unexpected character `%c' in attribute list of cabinet element.", surf_parse_text[0]);
6426         YY_BREAK
6427 case 143:
6428 YY_RULE_SETUP
6429 FAIL("Bad attribute `%s' in `cabinet' element start tag.",surf_parse_text);
6430         YY_BREAK
6431 case YY_STATE_EOF(AL_surfxml_cabinet):
6432 FAIL("EOF in attribute list of `cabinet' element.");
6433         YY_BREAK
6434
6435 case 144:
6436 /* rule 144 can match eol */
6437 YY_RULE_SETUP
6438 {
6439   LEAVE;
6440   ETag_surfxml_cabinet();
6441   popbuffer(); /* attribute */
6442   switch (YY_START) {
6443    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6444    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6445    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6446   }
6447  }
6448         YY_BREAK
6449 case 145:
6450 /* rule 145 can match eol */
6451 YY_RULE_SETUP
6452 FAIL("Unexpected end-tag `%s': `</cabinet>' expected.",surf_parse_text);
6453         YY_BREAK
6454 case 146:
6455 YY_RULE_SETUP
6456 FAIL("Unexpected character `%c': `</cabinet>' expected.",surf_parse_text[0]);
6457         YY_BREAK
6458 case YY_STATE_EOF(E_surfxml_cabinet):
6459 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</cabinet>' expected.");
6460         YY_BREAK
6461
6462 case 147:
6463 /* rule 147 can match eol */
6464 YY_RULE_SETUP
6465 FAIL("Starting tag <cluster> is not allowed here.");
6466         YY_BREAK
6467 case 148:
6468 /* rule 148 can match eol */
6469 YY_RULE_SETUP
6470 {
6471   AX_surfxml_cluster_bb___bw = 0;
6472   surfxml_cluster_bb___bw_isset = 0;
6473   AX_surfxml_cluster_bb___lat = 42;
6474   surfxml_cluster_bb___lat_isset = 0;
6475   AX_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_SHARED;
6476   surfxml_cluster_bb___sharing___policy_isset = 0;
6477   AX_surfxml_cluster_bw = 0;
6478   surfxml_cluster_bw_isset = 0;
6479   AX_surfxml_cluster_core = 40;
6480   surfxml_cluster_core_isset = 0;
6481   AX_surfxml_cluster_id = 0;
6482   surfxml_cluster_id_isset = 0;
6483   AX_surfxml_cluster_lat = 0;
6484   surfxml_cluster_lat_isset = 0;
6485   AX_surfxml_cluster_limiter___link = 0;
6486   surfxml_cluster_limiter___link_isset = 0;
6487   AX_surfxml_cluster_loopback___bw = 0;
6488   surfxml_cluster_loopback___bw_isset = 0;
6489   AX_surfxml_cluster_loopback___lat = 0;
6490   surfxml_cluster_loopback___lat_isset = 0;
6491   AX_surfxml_cluster_prefix = 0;
6492   surfxml_cluster_prefix_isset = 0;
6493   AX_surfxml_cluster_radical = 0;
6494   surfxml_cluster_radical_isset = 0;
6495   AX_surfxml_cluster_router___id = 0;
6496   surfxml_cluster_router___id_isset = 0;
6497   AX_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FULLDUPLEX;
6498   surfxml_cluster_sharing___policy_isset = 0;
6499   AX_surfxml_cluster_speed = 0;
6500   surfxml_cluster_speed_isset = 0;
6501   AX_surfxml_cluster_suffix = 0;
6502   surfxml_cluster_suffix_isset = 0;
6503   AX_surfxml_cluster_topo___parameters = 0;
6504   surfxml_cluster_topo___parameters_isset = 0;
6505   AX_surfxml_cluster_topology = A_surfxml_cluster_topology_FLAT;
6506   surfxml_cluster_topology_isset = 0;
6507   ENTER(AL_surfxml_cluster); pushbuffer(0);
6508   }
6509         YY_BREAK
6510
6511 case 149:
6512 /* rule 149 can match eol */
6513 YY_RULE_SETUP
6514 if (surfxml_cluster_bb___bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");} surfxml_cluster_bb___bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb___bw);
6515         YY_BREAK
6516 case 150:
6517 /* rule 150 can match eol */
6518 YY_RULE_SETUP
6519 if (surfxml_cluster_bb___bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");}  surfxml_cluster_bb___bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb___bw);
6520         YY_BREAK
6521 case 151:
6522 /* rule 151 can match eol */
6523 YY_RULE_SETUP
6524 if (surfxml_cluster_bb___lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");} surfxml_cluster_bb___lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb___lat);
6525         YY_BREAK
6526 case 152:
6527 /* rule 152 can match eol */
6528 YY_RULE_SETUP
6529 if (surfxml_cluster_bb___lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");}  surfxml_cluster_bb___lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb___lat);
6530         YY_BREAK
6531 case 153:
6532 /* rule 153 can match eol */
6533 case 154:
6534 /* rule 154 can match eol */
6535 YY_RULE_SETUP
6536 A_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_SHARED;
6537         YY_BREAK
6538 case 155:
6539 /* rule 155 can match eol */
6540 case 156:
6541 /* rule 156 can match eol */
6542 YY_RULE_SETUP
6543 A_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_FATPIPE;
6544         YY_BREAK
6545 case 157:
6546 /* rule 157 can match eol */
6547 YY_RULE_SETUP
6548 if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");} surfxml_cluster_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
6549         YY_BREAK
6550 case 158:
6551 /* rule 158 can match eol */
6552 YY_RULE_SETUP
6553 if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");}  surfxml_cluster_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
6554         YY_BREAK
6555 case 159:
6556 /* rule 159 can match eol */
6557 YY_RULE_SETUP
6558 if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");} surfxml_cluster_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_core);
6559         YY_BREAK
6560 case 160:
6561 /* rule 160 can match eol */
6562 YY_RULE_SETUP
6563 if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");}  surfxml_cluster_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_core);
6564         YY_BREAK
6565 case 161:
6566 /* rule 161 can match eol */
6567 YY_RULE_SETUP
6568 if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");} surfxml_cluster_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
6569         YY_BREAK
6570 case 162:
6571 /* rule 162 can match eol */
6572 YY_RULE_SETUP
6573 if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");}  surfxml_cluster_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
6574         YY_BREAK
6575 case 163:
6576 /* rule 163 can match eol */
6577 YY_RULE_SETUP
6578 if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");} surfxml_cluster_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
6579         YY_BREAK
6580 case 164:
6581 /* rule 164 can match eol */
6582 YY_RULE_SETUP
6583 if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");}  surfxml_cluster_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
6584         YY_BREAK
6585 case 165:
6586 /* rule 165 can match eol */
6587 YY_RULE_SETUP
6588 if (surfxml_cluster_limiter___link_isset != 0) {FAIL("Multiple definition of attribute limiter_link in <surfxml_cluster>");} surfxml_cluster_limiter___link_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_limiter___link);
6589         YY_BREAK
6590 case 166:
6591 /* rule 166 can match eol */
6592 YY_RULE_SETUP
6593 if (surfxml_cluster_limiter___link_isset != 0) {FAIL("Multiple definition of attribute limiter_link in <surfxml_cluster>");}  surfxml_cluster_limiter___link_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_limiter___link);
6594         YY_BREAK
6595 case 167:
6596 /* rule 167 can match eol */
6597 YY_RULE_SETUP
6598 if (surfxml_cluster_loopback___bw_isset != 0) {FAIL("Multiple definition of attribute loopback_bw in <surfxml_cluster>");} surfxml_cluster_loopback___bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_loopback___bw);
6599         YY_BREAK
6600 case 168:
6601 /* rule 168 can match eol */
6602 YY_RULE_SETUP
6603 if (surfxml_cluster_loopback___bw_isset != 0) {FAIL("Multiple definition of attribute loopback_bw in <surfxml_cluster>");}  surfxml_cluster_loopback___bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_loopback___bw);
6604         YY_BREAK
6605 case 169:
6606 /* rule 169 can match eol */
6607 YY_RULE_SETUP
6608 if (surfxml_cluster_loopback___lat_isset != 0) {FAIL("Multiple definition of attribute loopback_lat in <surfxml_cluster>");} surfxml_cluster_loopback___lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_loopback___lat);
6609         YY_BREAK
6610 case 170:
6611 /* rule 170 can match eol */
6612 YY_RULE_SETUP
6613 if (surfxml_cluster_loopback___lat_isset != 0) {FAIL("Multiple definition of attribute loopback_lat in <surfxml_cluster>");}  surfxml_cluster_loopback___lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_loopback___lat);
6614         YY_BREAK
6615 case 171:
6616 /* rule 171 can match eol */
6617 YY_RULE_SETUP
6618 if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");} surfxml_cluster_prefix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
6619         YY_BREAK
6620 case 172:
6621 /* rule 172 can match eol */
6622 YY_RULE_SETUP
6623 if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");}  surfxml_cluster_prefix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
6624         YY_BREAK
6625 case 173:
6626 /* rule 173 can match eol */
6627 YY_RULE_SETUP
6628 if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");} surfxml_cluster_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
6629         YY_BREAK
6630 case 174:
6631 /* rule 174 can match eol */
6632 YY_RULE_SETUP
6633 if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");}  surfxml_cluster_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
6634         YY_BREAK
6635 case 175:
6636 /* rule 175 can match eol */
6637 YY_RULE_SETUP
6638 if (surfxml_cluster_router___id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");} surfxml_cluster_router___id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_router___id);
6639         YY_BREAK
6640 case 176:
6641 /* rule 176 can match eol */
6642 YY_RULE_SETUP
6643 if (surfxml_cluster_router___id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");}  surfxml_cluster_router___id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_router___id);
6644         YY_BREAK
6645 case 177:
6646 /* rule 177 can match eol */
6647 case 178:
6648 /* rule 178 can match eol */
6649 YY_RULE_SETUP
6650 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_SHARED;
6651         YY_BREAK
6652 case 179:
6653 /* rule 179 can match eol */
6654 case 180:
6655 /* rule 180 can match eol */
6656 YY_RULE_SETUP
6657 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FULLDUPLEX;
6658         YY_BREAK
6659 case 181:
6660 /* rule 181 can match eol */
6661 case 182:
6662 /* rule 182 can match eol */
6663 YY_RULE_SETUP
6664 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FATPIPE;
6665         YY_BREAK
6666 case 183:
6667 /* rule 183 can match eol */
6668 YY_RULE_SETUP
6669 if (surfxml_cluster_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cluster>");} surfxml_cluster_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_speed);
6670         YY_BREAK
6671 case 184:
6672 /* rule 184 can match eol */
6673 YY_RULE_SETUP
6674 if (surfxml_cluster_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cluster>");}  surfxml_cluster_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_speed);
6675         YY_BREAK
6676 case 185:
6677 /* rule 185 can match eol */
6678 YY_RULE_SETUP
6679 if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");} surfxml_cluster_suffix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
6680         YY_BREAK
6681 case 186:
6682 /* rule 186 can match eol */
6683 YY_RULE_SETUP
6684 if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");}  surfxml_cluster_suffix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
6685         YY_BREAK
6686 case 187:
6687 /* rule 187 can match eol */
6688 YY_RULE_SETUP
6689 if (surfxml_cluster_topo___parameters_isset != 0) {FAIL("Multiple definition of attribute topo_parameters in <surfxml_cluster>");} surfxml_cluster_topo___parameters_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_topo___parameters);
6690         YY_BREAK
6691 case 188:
6692 /* rule 188 can match eol */
6693 YY_RULE_SETUP
6694 if (surfxml_cluster_topo___parameters_isset != 0) {FAIL("Multiple definition of attribute topo_parameters in <surfxml_cluster>");}  surfxml_cluster_topo___parameters_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_topo___parameters);
6695         YY_BREAK
6696 case 189:
6697 /* rule 189 can match eol */
6698 case 190:
6699 /* rule 190 can match eol */
6700 YY_RULE_SETUP
6701 A_surfxml_cluster_topology = A_surfxml_cluster_topology_FLAT;
6702         YY_BREAK
6703 case 191:
6704 /* rule 191 can match eol */
6705 case 192:
6706 /* rule 192 can match eol */
6707 YY_RULE_SETUP
6708 A_surfxml_cluster_topology = A_surfxml_cluster_topology_TORUS;
6709         YY_BREAK
6710 case 193:
6711 /* rule 193 can match eol */
6712 case 194:
6713 /* rule 194 can match eol */
6714 YY_RULE_SETUP
6715 A_surfxml_cluster_topology = A_surfxml_cluster_topology_FAT___TREE;
6716         YY_BREAK
6717 case 195:
6718 /* rule 195 can match eol */
6719 case 196:
6720 /* rule 196 can match eol */
6721 YY_RULE_SETUP
6722 A_surfxml_cluster_topology = A_surfxml_cluster_topology_DRAGONFLY;
6723         YY_BREAK
6724 case 197:
6725 YY_RULE_SETUP
6726 {
6727   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
6728   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
6729   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
6730   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
6731   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
6732   if (!AX_surfxml_cluster_speed) FAIL("Required attribute `speed' not set for `cluster' element.");
6733   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
6734   LEAVE; STag_surfxml_cluster();surfxml_pcdata_ix = 0; ENTER(S_surfxml_cluster);
6735  }
6736         YY_BREAK
6737 case 198:
6738 YY_RULE_SETUP
6739 {
6740   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
6741   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
6742   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
6743   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
6744   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
6745   if (!AX_surfxml_cluster_speed) FAIL("Required attribute `speed' not set for `cluster' element.");
6746   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
6747   LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
6748   switch (YY_START) {
6749    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6750    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6751    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6752   }
6753  }
6754         YY_BREAK
6755 case 199:
6756 YY_RULE_SETUP
6757 FAIL("Unexpected character `%c' in attribute list of cluster element.", surf_parse_text[0]);
6758         YY_BREAK
6759 case 200:
6760 YY_RULE_SETUP
6761 FAIL("Bad attribute `%s' in `cluster' element start tag.",surf_parse_text);
6762         YY_BREAK
6763 case YY_STATE_EOF(AL_surfxml_cluster):
6764 FAIL("EOF in attribute list of `cluster' element.");
6765         YY_BREAK
6766
6767 case 201:
6768 /* rule 201 can match eol */
6769 YY_RULE_SETUP
6770 {
6771   LEAVE;
6772   ETag_surfxml_cluster();
6773   popbuffer(); /* attribute */
6774   switch (YY_START) {
6775    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6776    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6777    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6778   }
6779  }
6780         YY_BREAK
6781 case 202:
6782 /* rule 202 can match eol */
6783 YY_RULE_SETUP
6784 FAIL("Unexpected end-tag `%s': `</cluster>' expected.",surf_parse_text);
6785         YY_BREAK
6786 case 203:
6787 YY_RULE_SETUP
6788 FAIL("Unexpected character `%c': `</cluster>' expected.",surf_parse_text[0]);
6789         YY_BREAK
6790 case YY_STATE_EOF(E_surfxml_cluster):
6791 case YY_STATE_EOF(S_surfxml_cluster):
6792 case YY_STATE_EOF(S_surfxml_cluster_2):
6793 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</cluster>' expected.");
6794         YY_BREAK
6795
6796 case 204:
6797 /* rule 204 can match eol */
6798 YY_RULE_SETUP
6799 FAIL("Starting tag <config> is not allowed here.");
6800         YY_BREAK
6801 case 205:
6802 /* rule 205 can match eol */
6803 YY_RULE_SETUP
6804 {
6805   AX_surfxml_config_id = 0;
6806   surfxml_config_id_isset = 0;
6807   ENTER(AL_surfxml_config); pushbuffer(0);
6808   }
6809         YY_BREAK
6810
6811 case 206:
6812 /* rule 206 can match eol */
6813 YY_RULE_SETUP
6814 if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");} surfxml_config_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_config_id);
6815         YY_BREAK
6816 case 207:
6817 /* rule 207 can match eol */
6818 YY_RULE_SETUP
6819 if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");}  surfxml_config_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_config_id);
6820         YY_BREAK
6821 case 208:
6822 YY_RULE_SETUP
6823 {
6824   LEAVE; STag_surfxml_config();surfxml_pcdata_ix = 0; ENTER(S_surfxml_config);
6825  }
6826         YY_BREAK
6827 case 209:
6828 YY_RULE_SETUP
6829 {
6830   LEAVE; STag_surfxml_config(); surfxml_pcdata_ix = 0; ETag_surfxml_config(); popbuffer(); /* attribute */
6831   switch (YY_START) {
6832    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
6833   }
6834  }
6835         YY_BREAK
6836 case 210:
6837 YY_RULE_SETUP
6838 FAIL("Unexpected character `%c' in attribute list of config element.", surf_parse_text[0]);
6839         YY_BREAK
6840 case 211:
6841 YY_RULE_SETUP
6842 FAIL("Bad attribute `%s' in `config' element start tag.",surf_parse_text);
6843         YY_BREAK
6844 case YY_STATE_EOF(AL_surfxml_config):
6845 FAIL("EOF in attribute list of `config' element.");
6846         YY_BREAK
6847
6848 case 212:
6849 /* rule 212 can match eol */
6850 YY_RULE_SETUP
6851 {
6852   LEAVE;
6853   ETag_surfxml_config();
6854   popbuffer(); /* attribute */
6855   switch (YY_START) {
6856    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
6857   }
6858  }
6859         YY_BREAK
6860 case 213:
6861 /* rule 213 can match eol */
6862 YY_RULE_SETUP
6863 FAIL("Unexpected end-tag `%s': `</config>' expected.",surf_parse_text);
6864         YY_BREAK
6865 case 214:
6866 YY_RULE_SETUP
6867 FAIL("Unexpected character `%c': `</config>' expected.",surf_parse_text[0]);
6868         YY_BREAK
6869 case YY_STATE_EOF(E_surfxml_config):
6870 case YY_STATE_EOF(S_surfxml_config):
6871 case YY_STATE_EOF(S_surfxml_config_2):
6872 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</config>' expected.");
6873         YY_BREAK
6874
6875 case 215:
6876 /* rule 215 can match eol */
6877 YY_RULE_SETUP
6878 FAIL("Starting tag <host> is not allowed here.");
6879         YY_BREAK
6880 case 216:
6881 /* rule 216 can match eol */
6882 YY_RULE_SETUP
6883 {
6884   AX_surfxml_host_availability___file = 0;
6885   surfxml_host_availability___file_isset = 0;
6886   AX_surfxml_host_coordinates = 0;
6887   surfxml_host_coordinates_isset = 0;
6888   AX_surfxml_host_core = 25;
6889   surfxml_host_core_isset = 0;
6890   AX_surfxml_host_id = 0;
6891   surfxml_host_id_isset = 0;
6892   AX_surfxml_host_pstate = 27;
6893   surfxml_host_pstate_isset = 0;
6894   AX_surfxml_host_speed = 0;
6895   surfxml_host_speed_isset = 0;
6896   AX_surfxml_host_state___file = 0;
6897   surfxml_host_state___file_isset = 0;
6898   ENTER(AL_surfxml_host); pushbuffer(0);
6899   }
6900         YY_BREAK
6901
6902 case 217:
6903 /* rule 217 can match eol */
6904 YY_RULE_SETUP
6905 if (surfxml_host_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");} surfxml_host_availability___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability___file);
6906         YY_BREAK
6907 case 218:
6908 /* rule 218 can match eol */
6909 YY_RULE_SETUP
6910 if (surfxml_host_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");}  surfxml_host_availability___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability___file);
6911         YY_BREAK
6912 case 219:
6913 /* rule 219 can match eol */
6914 YY_RULE_SETUP
6915 if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");} surfxml_host_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_coordinates);
6916         YY_BREAK
6917 case 220:
6918 /* rule 220 can match eol */
6919 YY_RULE_SETUP
6920 if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");}  surfxml_host_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_coordinates);
6921         YY_BREAK
6922 case 221:
6923 /* rule 221 can match eol */
6924 YY_RULE_SETUP
6925 if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");} surfxml_host_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_core);
6926         YY_BREAK
6927 case 222:
6928 /* rule 222 can match eol */
6929 YY_RULE_SETUP
6930 if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");}  surfxml_host_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_core);
6931         YY_BREAK
6932 case 223:
6933 /* rule 223 can match eol */
6934 YY_RULE_SETUP
6935 if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");} surfxml_host_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
6936         YY_BREAK
6937 case 224:
6938 /* rule 224 can match eol */
6939 YY_RULE_SETUP
6940 if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");}  surfxml_host_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
6941         YY_BREAK
6942 case 225:
6943 /* rule 225 can match eol */
6944 YY_RULE_SETUP
6945 if (surfxml_host_pstate_isset != 0) {FAIL("Multiple definition of attribute pstate in <surfxml_host>");} surfxml_host_pstate_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_pstate);
6946         YY_BREAK
6947 case 226:
6948 /* rule 226 can match eol */
6949 YY_RULE_SETUP
6950 if (surfxml_host_pstate_isset != 0) {FAIL("Multiple definition of attribute pstate in <surfxml_host>");}  surfxml_host_pstate_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_pstate);
6951         YY_BREAK
6952 case 227:
6953 /* rule 227 can match eol */
6954 YY_RULE_SETUP
6955 if (surfxml_host_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_host>");} surfxml_host_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_speed);
6956         YY_BREAK
6957 case 228:
6958 /* rule 228 can match eol */
6959 YY_RULE_SETUP
6960 if (surfxml_host_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_host>");}  surfxml_host_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_speed);
6961         YY_BREAK
6962 case 229:
6963 /* rule 229 can match eol */
6964 YY_RULE_SETUP
6965 if (surfxml_host_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");} surfxml_host_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state___file);
6966         YY_BREAK
6967 case 230:
6968 /* rule 230 can match eol */
6969 YY_RULE_SETUP
6970 if (surfxml_host_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");}  surfxml_host_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state___file);
6971         YY_BREAK
6972 case 231:
6973 YY_RULE_SETUP
6974 {
6975   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
6976   if (!AX_surfxml_host_speed) FAIL("Required attribute `speed' not set for `host' element.");
6977   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
6978  }
6979         YY_BREAK
6980 case 232:
6981 YY_RULE_SETUP
6982 {
6983   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
6984   if (!AX_surfxml_host_speed) FAIL("Required attribute `speed' not set for `host' element.");
6985   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
6986   switch (YY_START) {
6987    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6988   }
6989  }
6990         YY_BREAK
6991 case 233:
6992 YY_RULE_SETUP
6993 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
6994         YY_BREAK
6995 case 234:
6996 YY_RULE_SETUP
6997 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
6998         YY_BREAK
6999 case YY_STATE_EOF(AL_surfxml_host):
7000 FAIL("EOF in attribute list of `host' element.");
7001         YY_BREAK
7002
7003 case 235:
7004 /* rule 235 can match eol */
7005 YY_RULE_SETUP
7006 {
7007   LEAVE;
7008   ETag_surfxml_host();
7009   popbuffer(); /* attribute */
7010   switch (YY_START) {
7011    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7012   }
7013  }
7014         YY_BREAK
7015 case 236:
7016 /* rule 236 can match eol */
7017 YY_RULE_SETUP
7018 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
7019         YY_BREAK
7020 case 237:
7021 YY_RULE_SETUP
7022 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
7023         YY_BREAK
7024 case YY_STATE_EOF(E_surfxml_host):
7025 case YY_STATE_EOF(S_surfxml_host):
7026 case YY_STATE_EOF(S_surfxml_host_2):
7027 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</host>' expected.");
7028         YY_BREAK
7029
7030 case 238:
7031 /* rule 238 can match eol */
7032 YY_RULE_SETUP
7033 FAIL("Starting tag <host_link> is not allowed here.");
7034         YY_BREAK
7035 case 239:
7036 /* rule 239 can match eol */
7037 YY_RULE_SETUP
7038 {
7039   AX_surfxml_host___link_down = 0;
7040   surfxml_host___link_down_isset = 0;
7041   AX_surfxml_host___link_id = 0;
7042   surfxml_host___link_id_isset = 0;
7043   AX_surfxml_host___link_up = 0;
7044   surfxml_host___link_up_isset = 0;
7045   ENTER(AL_surfxml_host___link); pushbuffer(0);
7046   }
7047         YY_BREAK
7048
7049 case 240:
7050 /* rule 240 can match eol */
7051 YY_RULE_SETUP
7052 if (surfxml_host___link_down_isset != 0) {FAIL("Multiple definition of attribute down in <surfxml_host___link>");} surfxml_host___link_down_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host___link_down);
7053         YY_BREAK
7054 case 241:
7055 /* rule 241 can match eol */
7056 YY_RULE_SETUP
7057 if (surfxml_host___link_down_isset != 0) {FAIL("Multiple definition of attribute down in <surfxml_host___link>");}  surfxml_host___link_down_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host___link_down);
7058         YY_BREAK
7059 case 242:
7060 /* rule 242 can match eol */
7061 YY_RULE_SETUP
7062 if (surfxml_host___link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host___link>");} surfxml_host___link_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host___link_id);
7063         YY_BREAK
7064 case 243:
7065 /* rule 243 can match eol */
7066 YY_RULE_SETUP
7067 if (surfxml_host___link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host___link>");}  surfxml_host___link_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host___link_id);
7068         YY_BREAK
7069 case 244:
7070 /* rule 244 can match eol */
7071 YY_RULE_SETUP
7072 if (surfxml_host___link_up_isset != 0) {FAIL("Multiple definition of attribute up in <surfxml_host___link>");} surfxml_host___link_up_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host___link_up);
7073         YY_BREAK
7074 case 245:
7075 /* rule 245 can match eol */
7076 YY_RULE_SETUP
7077 if (surfxml_host___link_up_isset != 0) {FAIL("Multiple definition of attribute up in <surfxml_host___link>");}  surfxml_host___link_up_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host___link_up);
7078         YY_BREAK
7079 case 246:
7080 YY_RULE_SETUP
7081 {
7082   if (!AX_surfxml_host___link_down) FAIL("Required attribute `down' not set for `host_link' element.");
7083   if (!AX_surfxml_host___link_id) FAIL("Required attribute `id' not set for `host_link' element.");
7084   if (!AX_surfxml_host___link_up) FAIL("Required attribute `up' not set for `host_link' element.");
7085   LEAVE; STag_surfxml_host___link();surfxml_pcdata_ix = 0; ENTER(E_surfxml_host___link);
7086  }
7087         YY_BREAK
7088 case 247:
7089 YY_RULE_SETUP
7090 {
7091   if (!AX_surfxml_host___link_down) FAIL("Required attribute `down' not set for `host_link' element.");
7092   if (!AX_surfxml_host___link_id) FAIL("Required attribute `id' not set for `host_link' element.");
7093   if (!AX_surfxml_host___link_up) FAIL("Required attribute `up' not set for `host_link' element.");
7094   LEAVE; STag_surfxml_host___link(); surfxml_pcdata_ix = 0; ETag_surfxml_host___link(); popbuffer(); /* attribute */
7095   switch (YY_START) {
7096    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7097   }
7098  }
7099         YY_BREAK
7100 case 248:
7101 YY_RULE_SETUP
7102 FAIL("Unexpected character `%c' in attribute list of host_link element.", surf_parse_text[0]);
7103         YY_BREAK
7104 case 249:
7105 YY_RULE_SETUP
7106 FAIL("Bad attribute `%s' in `host_link' element start tag.",surf_parse_text);
7107         YY_BREAK
7108 case YY_STATE_EOF(AL_surfxml_host___link):
7109 FAIL("EOF in attribute list of `host_link' element.");
7110         YY_BREAK
7111
7112 case 250:
7113 /* rule 250 can match eol */
7114 YY_RULE_SETUP
7115 {
7116   LEAVE;
7117   ETag_surfxml_host___link();
7118   popbuffer(); /* attribute */
7119   switch (YY_START) {
7120    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7121   }
7122  }
7123         YY_BREAK
7124 case 251:
7125 /* rule 251 can match eol */
7126 YY_RULE_SETUP
7127 FAIL("Unexpected end-tag `%s': `</host_link>' expected.",surf_parse_text);
7128         YY_BREAK
7129 case 252:
7130 YY_RULE_SETUP
7131 FAIL("Unexpected character `%c': `</host_link>' expected.",surf_parse_text[0]);
7132         YY_BREAK
7133 case YY_STATE_EOF(E_surfxml_host___link):
7134 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</host_link>' expected.");
7135         YY_BREAK
7136
7137 case 253:
7138 /* rule 253 can match eol */
7139 YY_RULE_SETUP
7140 FAIL("Starting tag <include> is not allowed here.");
7141         YY_BREAK
7142 case 254:
7143 /* rule 254 can match eol */
7144 YY_RULE_SETUP
7145 {
7146   AX_surfxml_include_file = 0;
7147   surfxml_include_file_isset = 0;
7148   ENTER(AL_surfxml_include); pushbuffer(0);
7149   }
7150         YY_BREAK
7151
7152 case 255:
7153 /* rule 255 can match eol */
7154 YY_RULE_SETUP
7155 if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");} surfxml_include_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
7156         YY_BREAK
7157 case 256:
7158 /* rule 256 can match eol */
7159 YY_RULE_SETUP
7160 if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");}  surfxml_include_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
7161         YY_BREAK
7162 case 257:
7163 YY_RULE_SETUP
7164 {
7165   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
7166   LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(S_surfxml_include);
7167  }
7168         YY_BREAK
7169 case 258:
7170 YY_RULE_SETUP
7171 {
7172   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
7173   LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
7174   switch (YY_START) {
7175    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7176    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7177    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7178   }
7179  }
7180         YY_BREAK
7181 case 259:
7182 YY_RULE_SETUP
7183 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
7184         YY_BREAK
7185 case 260:
7186 YY_RULE_SETUP
7187 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
7188         YY_BREAK
7189 case YY_STATE_EOF(AL_surfxml_include):
7190 FAIL("EOF in attribute list of `include' element.");
7191         YY_BREAK
7192
7193 case 261:
7194 /* rule 261 can match eol */
7195 YY_RULE_SETUP
7196 {
7197   LEAVE;
7198   ETag_surfxml_include();
7199   popbuffer(); /* attribute */
7200   switch (YY_START) {
7201    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7202    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7203    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7204   }
7205  }
7206         YY_BREAK
7207 case 262:
7208 /* rule 262 can match eol */
7209 YY_RULE_SETUP
7210 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
7211         YY_BREAK
7212 case 263:
7213 YY_RULE_SETUP
7214 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
7215         YY_BREAK
7216 case YY_STATE_EOF(E_surfxml_include):
7217 case YY_STATE_EOF(S_surfxml_include):
7218 case YY_STATE_EOF(S_surfxml_include_2):
7219 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</include>' expected.");
7220         YY_BREAK
7221
7222 case 264:
7223 /* rule 264 can match eol */
7224 YY_RULE_SETUP
7225 FAIL("Starting tag <link> is not allowed here.");
7226         YY_BREAK
7227 case 265:
7228 /* rule 265 can match eol */
7229 YY_RULE_SETUP
7230 {
7231   AX_surfxml_link_bandwidth = 0;
7232   surfxml_link_bandwidth_isset = 0;
7233   AX_surfxml_link_bandwidth___file = 0;
7234   surfxml_link_bandwidth___file_isset = 0;
7235   AX_surfxml_link_id = 0;
7236   surfxml_link_id_isset = 0;
7237   AX_surfxml_link_latency = 0;
7238   surfxml_link_latency_isset = 0;
7239   AX_surfxml_link_latency___file = 0;
7240   surfxml_link_latency___file_isset = 0;
7241   AX_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_SHARED;
7242   surfxml_link_sharing___policy_isset = 0;
7243   AX_surfxml_link_state___file = 0;
7244   surfxml_link_state___file_isset = 0;
7245   ENTER(AL_surfxml_link); pushbuffer(0);
7246   }
7247         YY_BREAK
7248
7249 case 266:
7250 /* rule 266 can match eol */
7251 YY_RULE_SETUP
7252 if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");} surfxml_link_bandwidth_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
7253         YY_BREAK
7254 case 267:
7255 /* rule 267 can match eol */
7256 YY_RULE_SETUP
7257 if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");}  surfxml_link_bandwidth_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
7258         YY_BREAK
7259 case 268:
7260 /* rule 268 can match eol */
7261 YY_RULE_SETUP
7262 if (surfxml_link_bandwidth___file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");} surfxml_link_bandwidth___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth___file);
7263         YY_BREAK
7264 case 269:
7265 /* rule 269 can match eol */
7266 YY_RULE_SETUP
7267 if (surfxml_link_bandwidth___file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");}  surfxml_link_bandwidth___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth___file);
7268         YY_BREAK
7269 case 270:
7270 /* rule 270 can match eol */
7271 YY_RULE_SETUP
7272 if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");} surfxml_link_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
7273         YY_BREAK
7274 case 271:
7275 /* rule 271 can match eol */
7276 YY_RULE_SETUP
7277 if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");}  surfxml_link_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
7278         YY_BREAK
7279 case 272:
7280 /* rule 272 can match eol */
7281 YY_RULE_SETUP
7282 if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");} surfxml_link_latency_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
7283         YY_BREAK
7284 case 273:
7285 /* rule 273 can match eol */
7286 YY_RULE_SETUP
7287 if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");}  surfxml_link_latency_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
7288         YY_BREAK
7289 case 274:
7290 /* rule 274 can match eol */
7291 YY_RULE_SETUP
7292 if (surfxml_link_latency___file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");} surfxml_link_latency___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency___file);
7293         YY_BREAK
7294 case 275:
7295 /* rule 275 can match eol */
7296 YY_RULE_SETUP
7297 if (surfxml_link_latency___file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");}  surfxml_link_latency___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency___file);
7298         YY_BREAK
7299 case 276:
7300 /* rule 276 can match eol */
7301 case 277:
7302 /* rule 277 can match eol */
7303 YY_RULE_SETUP
7304 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_SHARED;
7305         YY_BREAK
7306 case 278:
7307 /* rule 278 can match eol */
7308 case 279:
7309 /* rule 279 can match eol */
7310 YY_RULE_SETUP
7311 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_FATPIPE;
7312         YY_BREAK
7313 case 280:
7314 /* rule 280 can match eol */
7315 case 281:
7316 /* rule 281 can match eol */
7317 YY_RULE_SETUP
7318 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_FULLDUPLEX;
7319         YY_BREAK
7320 case 282:
7321 /* rule 282 can match eol */
7322 YY_RULE_SETUP
7323 if (surfxml_link_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");} surfxml_link_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state___file);
7324         YY_BREAK
7325 case 283:
7326 /* rule 283 can match eol */
7327 YY_RULE_SETUP
7328 if (surfxml_link_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");}  surfxml_link_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state___file);
7329         YY_BREAK
7330 case 284:
7331 YY_RULE_SETUP
7332 {
7333   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
7334   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
7335   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
7336  }
7337         YY_BREAK
7338 case 285:
7339 YY_RULE_SETUP
7340 {
7341   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
7342   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
7343   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
7344   switch (YY_START) {
7345    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7346   }
7347  }
7348         YY_BREAK
7349 case 286:
7350 YY_RULE_SETUP
7351 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
7352         YY_BREAK
7353 case 287:
7354 YY_RULE_SETUP
7355 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
7356         YY_BREAK
7357 case YY_STATE_EOF(AL_surfxml_link):
7358 FAIL("EOF in attribute list of `link' element.");
7359         YY_BREAK
7360
7361 case 288:
7362 /* rule 288 can match eol */
7363 YY_RULE_SETUP
7364 {
7365   LEAVE;
7366   ETag_surfxml_link();
7367   popbuffer(); /* attribute */
7368   switch (YY_START) {
7369    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7370   }
7371  }
7372         YY_BREAK
7373 case 289:
7374 /* rule 289 can match eol */
7375 YY_RULE_SETUP
7376 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
7377         YY_BREAK
7378 case 290:
7379 YY_RULE_SETUP
7380 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
7381         YY_BREAK
7382 case YY_STATE_EOF(E_surfxml_link):
7383 case YY_STATE_EOF(S_surfxml_link):
7384 case YY_STATE_EOF(S_surfxml_link_2):
7385 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link>' expected.");
7386         YY_BREAK
7387
7388 case 291:
7389 /* rule 291 can match eol */
7390 YY_RULE_SETUP
7391 FAIL("Starting tag <link_ctn> is not allowed here.");
7392         YY_BREAK
7393 case 292:
7394 /* rule 292 can match eol */
7395 YY_RULE_SETUP
7396 {
7397   AX_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_NONE;
7398   surfxml_link___ctn_direction_isset = 0;
7399   AX_surfxml_link___ctn_id = 0;
7400   surfxml_link___ctn_id_isset = 0;
7401   ENTER(AL_surfxml_link___ctn); pushbuffer(0);
7402   }
7403         YY_BREAK
7404
7405 case 293:
7406 /* rule 293 can match eol */
7407 case 294:
7408 /* rule 294 can match eol */
7409 YY_RULE_SETUP
7410 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_UP;
7411         YY_BREAK
7412 case 295:
7413 /* rule 295 can match eol */
7414 case 296:
7415 /* rule 296 can match eol */
7416 YY_RULE_SETUP
7417 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_DOWN;
7418         YY_BREAK
7419 case 297:
7420 /* rule 297 can match eol */
7421 case 298:
7422 /* rule 298 can match eol */
7423 YY_RULE_SETUP
7424 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_NONE;
7425         YY_BREAK
7426 case 299:
7427 /* rule 299 can match eol */
7428 YY_RULE_SETUP
7429 if (surfxml_link___ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link___ctn>");} surfxml_link___ctn_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link___ctn_id);
7430         YY_BREAK
7431 case 300:
7432 /* rule 300 can match eol */
7433 YY_RULE_SETUP
7434 if (surfxml_link___ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link___ctn>");}  surfxml_link___ctn_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link___ctn_id);
7435         YY_BREAK
7436 case 301:
7437 YY_RULE_SETUP
7438 {
7439   if (!AX_surfxml_link___ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
7440   LEAVE; STag_surfxml_link___ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link___ctn);
7441  }
7442         YY_BREAK
7443 case 302:
7444 YY_RULE_SETUP
7445 {
7446   if (!AX_surfxml_link___ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
7447   LEAVE; STag_surfxml_link___ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link___ctn(); popbuffer(); /* attribute */
7448   switch (YY_START) {
7449    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
7450    case S_surfxml_bypassASroute: case S_surfxml_bypassASroute_1: case S_surfxml_bypassASroute_2: SET(S_surfxml_bypassASroute_2); break;
7451    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_1: case S_surfxml_bypassRoute_2: SET(S_surfxml_bypassRoute_2); break;
7452    case S_surfxml_route: case S_surfxml_route_1: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
7453   }
7454  }
7455         YY_BREAK
7456 case 303:
7457 YY_RULE_SETUP
7458 FAIL("Unexpected character `%c' in attribute list of link_ctn element.", surf_parse_text[0]);
7459         YY_BREAK
7460 case 304:
7461 YY_RULE_SETUP
7462 FAIL("Bad attribute `%s' in `link_ctn' element start tag.",surf_parse_text);
7463         YY_BREAK
7464 case YY_STATE_EOF(AL_surfxml_link___ctn):
7465 FAIL("EOF in attribute list of `link_ctn' element.");
7466         YY_BREAK
7467
7468 case 305:
7469 /* rule 305 can match eol */
7470 YY_RULE_SETUP
7471 {
7472   LEAVE;
7473   ETag_surfxml_link___ctn();
7474   popbuffer(); /* attribute */
7475   switch (YY_START) {
7476    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
7477    case S_surfxml_bypassASroute: case S_surfxml_bypassASroute_1: case S_surfxml_bypassASroute_2: SET(S_surfxml_bypassASroute_2); break;
7478    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_1: case S_surfxml_bypassRoute_2: SET(S_surfxml_bypassRoute_2); break;
7479    case S_surfxml_route: case S_surfxml_route_1: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
7480   }
7481  }
7482         YY_BREAK
7483 case 306:
7484 /* rule 306 can match eol */
7485 YY_RULE_SETUP
7486 FAIL("Unexpected end-tag `%s': `</link_ctn>' expected.",surf_parse_text);
7487         YY_BREAK
7488 case 307:
7489 YY_RULE_SETUP
7490 FAIL("Unexpected character `%c': `</link_ctn>' expected.",surf_parse_text[0]);
7491         YY_BREAK
7492 case YY_STATE_EOF(E_surfxml_link___ctn):
7493 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link_ctn>' expected.");
7494         YY_BREAK
7495
7496 /* <!-- <!ATTLIST model_prop key CDATA #REQUIRED> -->
7497   * <!-- <!ATTLIST model_prop key CDATA #REQUIRED> -->  */
7498 case 308:
7499 /* rule 308 can match eol */
7500 YY_RULE_SETUP
7501 FAIL("Starting tag <model_prop> is not allowed here.");
7502         YY_BREAK
7503 case 309:
7504 /* rule 309 can match eol */
7505 YY_RULE_SETUP
7506 {
7507   AX_surfxml_model___prop_id = 0;
7508   surfxml_model___prop_id_isset = 0;
7509   AX_surfxml_model___prop_value = 0;
7510   surfxml_model___prop_value_isset = 0;
7511   ENTER(AL_surfxml_model___prop); pushbuffer(0);
7512   }
7513         YY_BREAK
7514
7515 case 310:
7516 /* rule 310 can match eol */
7517 YY_RULE_SETUP
7518 if (surfxml_model___prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_model___prop>");} surfxml_model___prop_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_model___prop_id);
7519         YY_BREAK
7520 case 311:
7521 /* rule 311 can match eol */
7522 YY_RULE_SETUP
7523 if (surfxml_model___prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_model___prop>");}  surfxml_model___prop_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_model___prop_id);
7524         YY_BREAK
7525 case 312:
7526 /* rule 312 can match eol */
7527 YY_RULE_SETUP
7528 if (surfxml_model___prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_model___prop>");} surfxml_model___prop_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_model___prop_value);
7529         YY_BREAK
7530 case 313:
7531 /* rule 313 can match eol */
7532 YY_RULE_SETUP
7533 if (surfxml_model___prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_model___prop>");}  surfxml_model___prop_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_model___prop_value);
7534         YY_BREAK
7535 case 314:
7536 YY_RULE_SETUP
7537 {
7538   if (!AX_surfxml_model___prop_id) FAIL("Required attribute `id' not set for `model_prop' element.");
7539   if (!AX_surfxml_model___prop_value) FAIL("Required attribute `value' not set for `model_prop' element.");
7540   LEAVE; STag_surfxml_model___prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_model___prop);
7541  }
7542         YY_BREAK
7543 case 315:
7544 YY_RULE_SETUP
7545 {
7546   if (!AX_surfxml_model___prop_id) FAIL("Required attribute `id' not set for `model_prop' element.");
7547   if (!AX_surfxml_model___prop_value) FAIL("Required attribute `value' not set for `model_prop' element.");
7548   LEAVE; STag_surfxml_model___prop(); surfxml_pcdata_ix = 0; ETag_surfxml_model___prop(); popbuffer(); /* attribute */
7549   switch (YY_START) {
7550    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
7551   }
7552  }
7553         YY_BREAK
7554 case 316:
7555 YY_RULE_SETUP
7556 FAIL("Unexpected character `%c' in attribute list of model_prop element.", surf_parse_text[0]);
7557         YY_BREAK
7558 case 317:
7559 YY_RULE_SETUP
7560 FAIL("Bad attribute `%s' in `model_prop' element start tag.",surf_parse_text);
7561         YY_BREAK
7562 case YY_STATE_EOF(AL_surfxml_model___prop):
7563 FAIL("EOF in attribute list of `model_prop' element.");
7564         YY_BREAK
7565
7566 case 318:
7567 /* rule 318 can match eol */
7568 YY_RULE_SETUP
7569 {
7570   LEAVE;
7571   ETag_surfxml_model___prop();
7572   popbuffer(); /* attribute */
7573   switch (YY_START) {
7574    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
7575   }
7576  }
7577         YY_BREAK
7578 case 319:
7579 /* rule 319 can match eol */
7580 YY_RULE_SETUP
7581 FAIL("Unexpected end-tag `%s': `</model_prop>' expected.",surf_parse_text);
7582         YY_BREAK
7583 case 320:
7584 YY_RULE_SETUP
7585 FAIL("Unexpected character `%c': `</model_prop>' expected.",surf_parse_text[0]);
7586         YY_BREAK
7587 case YY_STATE_EOF(E_surfxml_model___prop):
7588 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</model_prop>' expected.");
7589         YY_BREAK
7590
7591 case 321:
7592 /* rule 321 can match eol */
7593 YY_RULE_SETUP
7594 FAIL("Starting tag <mount> is not allowed here.");
7595         YY_BREAK
7596 case 322:
7597 /* rule 322 can match eol */
7598 YY_RULE_SETUP
7599 {
7600   AX_surfxml_mount_name = 0;
7601   surfxml_mount_name_isset = 0;
7602   AX_surfxml_mount_storageId = 0;
7603   surfxml_mount_storageId_isset = 0;
7604   ENTER(AL_surfxml_mount); pushbuffer(0);
7605   }
7606         YY_BREAK
7607
7608 case 323:
7609 /* rule 323 can match eol */
7610 YY_RULE_SETUP
7611 if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");} surfxml_mount_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_name);
7612         YY_BREAK
7613 case 324:
7614 /* rule 324 can match eol */
7615 YY_RULE_SETUP
7616 if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");}  surfxml_mount_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_name);
7617         YY_BREAK
7618 case 325:
7619 /* rule 325 can match eol */
7620 YY_RULE_SETUP
7621 if (surfxml_mount_storageId_isset != 0) {FAIL("Multiple definition of attribute storageId in <surfxml_mount>");} surfxml_mount_storageId_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_storageId);
7622         YY_BREAK
7623 case 326:
7624 /* rule 326 can match eol */
7625 YY_RULE_SETUP
7626 if (surfxml_mount_storageId_isset != 0) {FAIL("Multiple definition of attribute storageId in <surfxml_mount>");}  surfxml_mount_storageId_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_storageId);
7627         YY_BREAK
7628 case 327:
7629 YY_RULE_SETUP
7630 {
7631   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
7632   if (!AX_surfxml_mount_storageId) FAIL("Required attribute `storageId' not set for `mount' element.");
7633   LEAVE; STag_surfxml_mount();surfxml_pcdata_ix = 0; ENTER(E_surfxml_mount);
7634  }
7635         YY_BREAK
7636 case 328:
7637 YY_RULE_SETUP
7638 {
7639   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
7640   if (!AX_surfxml_mount_storageId) FAIL("Required attribute `storageId' not set for `mount' element.");
7641   LEAVE; STag_surfxml_mount(); surfxml_pcdata_ix = 0; ETag_surfxml_mount(); popbuffer(); /* attribute */
7642   switch (YY_START) {
7643    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
7644   }
7645  }
7646         YY_BREAK
7647 case 329:
7648 YY_RULE_SETUP
7649 FAIL("Unexpected character `%c' in attribute list of mount element.", surf_parse_text[0]);
7650         YY_BREAK
7651 case 330:
7652 YY_RULE_SETUP
7653 FAIL("Bad attribute `%s' in `mount' element start tag.",surf_parse_text);
7654         YY_BREAK
7655 case YY_STATE_EOF(AL_surfxml_mount):
7656 FAIL("EOF in attribute list of `mount' element.");
7657         YY_BREAK
7658
7659 case 331:
7660 /* rule 331 can match eol */
7661 YY_RULE_SETUP
7662 {
7663   LEAVE;
7664   ETag_surfxml_mount();
7665   popbuffer(); /* attribute */
7666   switch (YY_START) {
7667    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
7668   }
7669  }
7670         YY_BREAK
7671 case 332:
7672 /* rule 332 can match eol */
7673 YY_RULE_SETUP
7674 FAIL("Unexpected end-tag `%s': `</mount>' expected.",surf_parse_text);
7675         YY_BREAK
7676 case 333:
7677 YY_RULE_SETUP
7678 FAIL("Unexpected character `%c': `</mount>' expected.",surf_parse_text[0]);
7679         YY_BREAK
7680 case YY_STATE_EOF(E_surfxml_mount):
7681 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</mount>' expected.");
7682         YY_BREAK
7683
7684 case 334:
7685 /* rule 334 can match eol */
7686 YY_RULE_SETUP
7687 FAIL("Starting tag <peer> is not allowed here.");
7688         YY_BREAK
7689 case 335:
7690 /* rule 335 can match eol */
7691 YY_RULE_SETUP
7692 {
7693   AX_surfxml_peer_availability___file = 0;
7694   surfxml_peer_availability___file_isset = 0;
7695   AX_surfxml_peer_bw___in = 0;
7696   surfxml_peer_bw___in_isset = 0;
7697   AX_surfxml_peer_bw___out = 0;
7698   surfxml_peer_bw___out_isset = 0;
7699   AX_surfxml_peer_coordinates = 0;
7700   surfxml_peer_coordinates_isset = 0;
7701   AX_surfxml_peer_id = 0;
7702   surfxml_peer_id_isset = 0;
7703   AX_surfxml_peer_lat = 0;
7704   surfxml_peer_lat_isset = 0;
7705   AX_surfxml_peer_speed = 0;
7706   surfxml_peer_speed_isset = 0;
7707   AX_surfxml_peer_state___file = 0;
7708   surfxml_peer_state___file_isset = 0;
7709   ENTER(AL_surfxml_peer); pushbuffer(0);
7710   }
7711         YY_BREAK
7712
7713 case 336:
7714 /* rule 336 can match eol */
7715 YY_RULE_SETUP
7716 if (surfxml_peer_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");} surfxml_peer_availability___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_availability___file);
7717         YY_BREAK
7718 case 337:
7719 /* rule 337 can match eol */
7720 YY_RULE_SETUP
7721 if (surfxml_peer_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");}  surfxml_peer_availability___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_availability___file);
7722         YY_BREAK
7723 case 338:
7724 /* rule 338 can match eol */
7725 YY_RULE_SETUP
7726 if (surfxml_peer_bw___in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");} surfxml_peer_bw___in_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw___in);
7727         YY_BREAK
7728 case 339:
7729 /* rule 339 can match eol */
7730 YY_RULE_SETUP
7731 if (surfxml_peer_bw___in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");}  surfxml_peer_bw___in_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw___in);
7732         YY_BREAK
7733 case 340:
7734 /* rule 340 can match eol */
7735 YY_RULE_SETUP
7736 if (surfxml_peer_bw___out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");} surfxml_peer_bw___out_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw___out);
7737         YY_BREAK
7738 case 341:
7739 /* rule 341 can match eol */
7740 YY_RULE_SETUP
7741 if (surfxml_peer_bw___out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");}  surfxml_peer_bw___out_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw___out);
7742         YY_BREAK
7743 case 342:
7744 /* rule 342 can match eol */
7745 YY_RULE_SETUP
7746 if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");} surfxml_peer_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_coordinates);
7747         YY_BREAK
7748 case 343:
7749 /* rule 343 can match eol */
7750 YY_RULE_SETUP
7751 if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");}  surfxml_peer_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_coordinates);
7752         YY_BREAK
7753 case 344:
7754 /* rule 344 can match eol */
7755 YY_RULE_SETUP
7756 if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");} surfxml_peer_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_id);
7757         YY_BREAK
7758 case 345:
7759 /* rule 345 can match eol */
7760 YY_RULE_SETUP
7761 if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");}  surfxml_peer_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_id);
7762         YY_BREAK
7763 case 346:
7764 /* rule 346 can match eol */
7765 YY_RULE_SETUP
7766 if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");} surfxml_peer_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_lat);
7767         YY_BREAK
7768 case 347:
7769 /* rule 347 can match eol */
7770 YY_RULE_SETUP
7771 if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");}  surfxml_peer_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_lat);
7772         YY_BREAK
7773 case 348:
7774 /* rule 348 can match eol */
7775 YY_RULE_SETUP
7776 if (surfxml_peer_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_peer>");} surfxml_peer_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_speed);
7777         YY_BREAK
7778 case 349:
7779 /* rule 349 can match eol */
7780 YY_RULE_SETUP
7781 if (surfxml_peer_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_peer>");}  surfxml_peer_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_speed);
7782         YY_BREAK
7783 case 350:
7784 /* rule 350 can match eol */
7785 YY_RULE_SETUP
7786 if (surfxml_peer_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");} surfxml_peer_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_state___file);
7787         YY_BREAK
7788 case 351:
7789 /* rule 351 can match eol */
7790 YY_RULE_SETUP
7791 if (surfxml_peer_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");}  surfxml_peer_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_state___file);
7792         YY_BREAK
7793 case 352:
7794 YY_RULE_SETUP
7795 {
7796   if (!AX_surfxml_peer_bw___in) FAIL("Required attribute `bw_in' not set for `peer' element.");
7797   if (!AX_surfxml_peer_bw___out) FAIL("Required attribute `bw_out' not set for `peer' element.");
7798   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
7799   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
7800   if (!AX_surfxml_peer_speed) FAIL("Required attribute `speed' not set for `peer' element.");
7801   LEAVE; STag_surfxml_peer();surfxml_pcdata_ix = 0; ENTER(E_surfxml_peer);
7802  }
7803         YY_BREAK
7804 case 353:
7805 YY_RULE_SETUP
7806 {
7807   if (!AX_surfxml_peer_bw___in) FAIL("Required attribute `bw_in' not set for `peer' element.");
7808   if (!AX_surfxml_peer_bw___out) FAIL("Required attribute `bw_out' not set for `peer' element.");
7809   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
7810   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
7811   if (!AX_surfxml_peer_speed) FAIL("Required attribute `speed' not set for `peer' element.");
7812   LEAVE; STag_surfxml_peer(); surfxml_pcdata_ix = 0; ETag_surfxml_peer(); popbuffer(); /* attribute */
7813   switch (YY_START) {
7814    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7815    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7816    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7817   }
7818  }
7819         YY_BREAK
7820 case 354:
7821 YY_RULE_SETUP
7822 FAIL("Unexpected character `%c' in attribute list of peer element.", surf_parse_text[0]);
7823         YY_BREAK
7824 case 355:
7825 YY_RULE_SETUP
7826 FAIL("Bad attribute `%s' in `peer' element start tag.",surf_parse_text);
7827         YY_BREAK
7828 case YY_STATE_EOF(AL_surfxml_peer):
7829 FAIL("EOF in attribute list of `peer' element.");
7830         YY_BREAK
7831
7832 case 356:
7833 /* rule 356 can match eol */
7834 YY_RULE_SETUP
7835 {
7836   LEAVE;
7837   ETag_surfxml_peer();
7838   popbuffer(); /* attribute */
7839   switch (YY_START) {
7840    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7841    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7842    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7843   }
7844  }
7845         YY_BREAK
7846 case 357:
7847 /* rule 357 can match eol */
7848 YY_RULE_SETUP
7849 FAIL("Unexpected end-tag `%s': `</peer>' expected.",surf_parse_text);
7850         YY_BREAK
7851 case 358:
7852 YY_RULE_SETUP
7853 FAIL("Unexpected character `%c': `</peer>' expected.",surf_parse_text[0]);
7854         YY_BREAK
7855 case YY_STATE_EOF(E_surfxml_peer):
7856 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</peer>' expected.");
7857         YY_BREAK
7858
7859 /* <!-- 
7860   *              DTD of SimGrid platform and deployment files.
7861   * More info: http://simgrid.gforge.inria.fr/simgrid/latest/doc/platform.html
7862   * To upgrade your files, use the tool simgrid_update_xml
7863   * * New in DTD version 4 (in SimGrid 3.13):
7864   *    - Rename (power->speed) the attributes describing the amount of flop
7865   *      that a <host>, <peer>, <cluster> or <cabinet> can deliver per second.
7866   *    - In <trace_connect>, attribute kind="POWER" is now kind="SPEED".
7867   *    
7868   *    - In <host> and <link>, attributes availability and state are gone.
7869   *      It was redundent with state and availability traces, and with peak values.
7870   *      
7871   *    - In <cluster>, cannot set the availability nor state traces. 
7872   *      This was too complex and unused.
7873   *    - The DOCTYPE points to the right URL (this file):
7874   *      http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd
7875   *      
7876   *    - Kill <gpu>. Was not doing anything.
7877   *    - A warning is emitted for unit-less values (they are still accepted).
7878   *      - speed. Default: 'f' or 'flops'. Also defined:
7879   *         'Yf',         'Zf',         'Ef',       'Pf',        'Tf',        'Gf',        'Mf',        'kf'
7880   *         'yottaflops', 'zettaflops', 'exaflops', 'petaflops', 'teraflops', 'gigaflops', 'megaflops', 'kiloflops'
7881   *      - bandwidth. Default: 'Bps' bytes per second (or 'bps' for bits but 1 Bps = 8 bps)
7882   *        Also defined in bytes: 'TiBps', 'GiBps', 'MiBps', 'KiBps', 'TBps', 'GBps', 'MBps', 'kBps', 'Bps'
7883   *        And the same in bits:  'Tibps', 'Gibps', 'Mibps', 'Kibps', 'Tbps', 'Gbps', 'Mbps', 'kbps', 'bps'
7884   *      - latency. Default: 's' second. Also defined:
7885   *        'w' week, 'd' day, 'h' hour, 'm' minute, 'ms' millisecond, 'us' microsecond, 'ns' nanosecond, 'ps' picosecond
7886   * * New in DTD version 3 (in SimGrid 3.5):
7887   *    - The AS tag were introduced. Every platform should now
7888   *      contain an englobing AS tag.
7889   *    - Routes are now symmetric by default.
7890   *    - Renamed tags (for sake of XML sanity):
7891   *      - LINK:CTN -> LINK_CTN
7892   *      - TRACE:CONNECT -> TRACE_CONNECT
7893   * * New in DTD version 2 (in SimGrid 3.4):
7894   *    - Renamed tags:
7895   *      - CPU -> HOST
7896   *      - NETWORK_LINK -> LINK
7897   *      - ROUTE_ELEMENT ->  LINK:CTN (changed again in v3)
7898   *      - PLATFORM_DESCRIPTION -> PLATFORM
7899   * * New in DTD version 1 (in SimGrid 3.3):
7900   *    - DTD is now versionned with the version attribute of platform
7901   *    - Unit change: 
7902   *      - Link bandwidth: from Mb/s to b/s
7903   *      - CPU speed: from MFlop/s to Flop/s
7904   * -->  */
7905 case 359:
7906 /* rule 359 can match eol */
7907 YY_RULE_SETUP
7908 FAIL("Starting tag <platform> is not allowed here.");
7909         YY_BREAK
7910 case 360:
7911 /* rule 360 can match eol */
7912 YY_RULE_SETUP
7913 {
7914   AX_surfxml_platform_version = 1;
7915   surfxml_platform_version_isset = 0;
7916   ENTER(AL_surfxml_platform); pushbuffer(0);
7917   }
7918         YY_BREAK
7919
7920 case 361:
7921 /* rule 361 can match eol */
7922 YY_RULE_SETUP
7923 if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");} surfxml_platform_version_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
7924         YY_BREAK
7925 case 362:
7926 /* rule 362 can match eol */
7927 YY_RULE_SETUP
7928 if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");}  surfxml_platform_version_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
7929         YY_BREAK
7930 case 363:
7931 YY_RULE_SETUP
7932 {
7933   LEAVE; STag_surfxml_platform();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform);
7934  }
7935         YY_BREAK
7936 case 364:
7937 YY_RULE_SETUP
7938 {
7939   LEAVE; STag_surfxml_platform(); surfxml_pcdata_ix = 0; ETag_surfxml_platform(); popbuffer(); /* attribute */
7940   switch (YY_START) {
7941    case ROOT_surfxml_platform: SET(EPILOG); break;
7942   }
7943  }
7944         YY_BREAK
7945 case 365:
7946 YY_RULE_SETUP
7947 FAIL("Unexpected character `%c' in attribute list of platform element.", surf_parse_text[0]);
7948         YY_BREAK
7949 case 366:
7950 YY_RULE_SETUP
7951 FAIL("Bad attribute `%s' in `platform' element start tag.",surf_parse_text);
7952         YY_BREAK
7953 case YY_STATE_EOF(AL_surfxml_platform):
7954 FAIL("EOF in attribute list of `platform' element.");
7955         YY_BREAK
7956
7957 case 367:
7958 /* rule 367 can match eol */
7959 YY_RULE_SETUP
7960 {
7961   LEAVE;
7962   ETag_surfxml_platform();
7963   popbuffer(); /* attribute */
7964   switch (YY_START) {
7965    case ROOT_surfxml_platform: SET(EPILOG); break;
7966   }
7967  }
7968         YY_BREAK
7969 case 368:
7970 /* rule 368 can match eol */
7971 YY_RULE_SETUP
7972 FAIL("Unexpected end-tag `%s': `</platform>' expected.",surf_parse_text);
7973         YY_BREAK
7974 case 369:
7975 YY_RULE_SETUP
7976 FAIL("Unexpected character `%c': `</platform>' expected.",surf_parse_text[0]);
7977         YY_BREAK
7978 case YY_STATE_EOF(E_surfxml_platform):
7979 case YY_STATE_EOF(S_surfxml_platform):
7980 case YY_STATE_EOF(S_surfxml_platform_1):
7981 case YY_STATE_EOF(S_surfxml_platform_3):
7982 case YY_STATE_EOF(S_surfxml_platform_4):
7983 case YY_STATE_EOF(S_surfxml_platform_6):
7984 case YY_STATE_EOF(S_surfxml_platform_8):
7985 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</platform>' expected.");
7986         YY_BREAK
7987
7988 case 370:
7989 /* rule 370 can match eol */
7990 YY_RULE_SETUP
7991 FAIL("Starting tag <process> is not allowed here.");
7992         YY_BREAK
7993 case 371:
7994 /* rule 371 can match eol */
7995 YY_RULE_SETUP
7996 {
7997   AX_surfxml_process_function = 0;
7998   surfxml_process_function_isset = 0;
7999   AX_surfxml_process_host = 0;
8000   surfxml_process_host_isset = 0;
8001   AX_surfxml_process_kill___time = 50;
8002   surfxml_process_kill___time_isset = 0;
8003   AX_surfxml_process_on___failure = A_surfxml_process_on___failure_DIE;
8004   surfxml_process_on___failure_isset = 0;
8005   AX_surfxml_process_start___time = 45;
8006   surfxml_process_start___time_isset = 0;
8007   ENTER(AL_surfxml_process); pushbuffer(0);
8008   }
8009         YY_BREAK
8010
8011 case 372:
8012 /* rule 372 can match eol */
8013 YY_RULE_SETUP
8014 if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");} surfxml_process_function_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
8015         YY_BREAK
8016 case 373:
8017 /* rule 373 can match eol */
8018 YY_RULE_SETUP
8019 if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");}  surfxml_process_function_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
8020         YY_BREAK
8021 case 374:
8022 /* rule 374 can match eol */
8023 YY_RULE_SETUP
8024 if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");} surfxml_process_host_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
8025         YY_BREAK
8026 case 375:
8027 /* rule 375 can match eol */
8028 YY_RULE_SETUP
8029 if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");}  surfxml_process_host_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
8030         YY_BREAK
8031 case 376:
8032 /* rule 376 can match eol */
8033 YY_RULE_SETUP
8034 if (surfxml_process_kill___time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");} surfxml_process_kill___time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill___time);
8035         YY_BREAK
8036 case 377:
8037 /* rule 377 can match eol */
8038 YY_RULE_SETUP
8039 if (surfxml_process_kill___time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");}  surfxml_process_kill___time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill___time);
8040         YY_BREAK
8041 case 378:
8042 /* rule 378 can match eol */
8043 case 379:
8044 /* rule 379 can match eol */
8045 YY_RULE_SETUP
8046 A_surfxml_process_on___failure = A_surfxml_process_on___failure_DIE;
8047         YY_BREAK
8048 case 380:
8049 /* rule 380 can match eol */
8050 case 381:
8051 /* rule 381 can match eol */
8052 YY_RULE_SETUP
8053 A_surfxml_process_on___failure = A_surfxml_process_on___failure_RESTART;
8054         YY_BREAK
8055 case 382:
8056 /* rule 382 can match eol */
8057 YY_RULE_SETUP
8058 if (surfxml_process_start___time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");} surfxml_process_start___time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start___time);
8059         YY_BREAK
8060 case 383:
8061 /* rule 383 can match eol */
8062 YY_RULE_SETUP
8063 if (surfxml_process_start___time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");}  surfxml_process_start___time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start___time);
8064         YY_BREAK
8065 case 384:
8066 YY_RULE_SETUP
8067 {
8068   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
8069   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
8070   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
8071  }
8072         YY_BREAK
8073 case 385:
8074 YY_RULE_SETUP
8075 {
8076   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
8077   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
8078   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
8079   switch (YY_START) {
8080    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_4: case S_surfxml_platform_6: case S_surfxml_platform_7: case S_surfxml_platform_8: SET(S_surfxml_platform_8); break;
8081   }
8082  }
8083         YY_BREAK
8084 case 386:
8085 YY_RULE_SETUP
8086 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
8087         YY_BREAK
8088 case 387:
8089 YY_RULE_SETUP
8090 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
8091         YY_BREAK
8092 case YY_STATE_EOF(AL_surfxml_process):
8093 FAIL("EOF in attribute list of `process' element.");
8094         YY_BREAK
8095
8096 case 388:
8097 /* rule 388 can match eol */
8098 YY_RULE_SETUP
8099 {
8100   LEAVE;
8101   ETag_surfxml_process();
8102   popbuffer(); /* attribute */
8103   switch (YY_START) {
8104    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_4: case S_surfxml_platform_6: case S_surfxml_platform_7: case S_surfxml_platform_8: SET(S_surfxml_platform_8); break;
8105   }
8106  }
8107         YY_BREAK
8108 case 389:
8109 /* rule 389 can match eol */
8110 YY_RULE_SETUP
8111 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
8112         YY_BREAK
8113 case 390:
8114 YY_RULE_SETUP
8115 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
8116         YY_BREAK
8117 case YY_STATE_EOF(E_surfxml_process):
8118 case YY_STATE_EOF(S_surfxml_process):
8119 case YY_STATE_EOF(S_surfxml_process_2):
8120 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</process>' expected.");
8121         YY_BREAK
8122
8123 /* <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
8124   * <!-- <!ATTLIST prop key CDATA #REQUIRED> -->  */
8125 case 391:
8126 /* rule 391 can match eol */
8127 YY_RULE_SETUP
8128 FAIL("Starting tag <prop> is not allowed here.");
8129         YY_BREAK
8130 case 392:
8131 /* rule 392 can match eol */
8132 YY_RULE_SETUP
8133 {
8134   AX_surfxml_prop_id = 0;
8135   surfxml_prop_id_isset = 0;
8136   AX_surfxml_prop_value = 0;
8137   surfxml_prop_value_isset = 0;
8138   ENTER(AL_surfxml_prop); pushbuffer(0);
8139   }
8140         YY_BREAK
8141
8142 case 393:
8143 /* rule 393 can match eol */
8144 YY_RULE_SETUP
8145 if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");} surfxml_prop_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
8146         YY_BREAK
8147 case 394:
8148 /* rule 394 can match eol */
8149 YY_RULE_SETUP
8150 if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");}  surfxml_prop_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
8151         YY_BREAK
8152 case 395:
8153 /* rule 395 can match eol */
8154 YY_RULE_SETUP
8155 if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");} surfxml_prop_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
8156         YY_BREAK
8157 case 396:
8158 /* rule 396 can match eol */
8159 YY_RULE_SETUP
8160 if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");}  surfxml_prop_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
8161         YY_BREAK
8162 case 397:
8163 YY_RULE_SETUP
8164 {
8165   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
8166   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
8167   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
8168  }
8169         YY_BREAK
8170 case 398:
8171 YY_RULE_SETUP
8172 {
8173   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
8174   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
8175   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
8176   switch (YY_START) {
8177    case S_surfxml_AS: case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
8178    case S_surfxml_cluster: case S_surfxml_cluster_1: case S_surfxml_cluster_2: SET(S_surfxml_cluster_2); break;
8179    case S_surfxml_config: case S_surfxml_config_1: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
8180    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
8181    case S_surfxml_link: case S_surfxml_link_1: case S_surfxml_link_2: SET(S_surfxml_link_2); break;
8182    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
8183    case S_surfxml_storage: case S_surfxml_storage_1: case S_surfxml_storage_2: SET(S_surfxml_storage_2); break;
8184    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
8185   }
8186  }
8187         YY_BREAK
8188 case 399:
8189 YY_RULE_SETUP
8190 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
8191         YY_BREAK
8192 case 400:
8193 YY_RULE_SETUP
8194 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
8195         YY_BREAK
8196 case YY_STATE_EOF(AL_surfxml_prop):
8197 FAIL("EOF in attribute list of `prop' element.");
8198         YY_BREAK
8199
8200 case 401:
8201 /* rule 401 can match eol */
8202 YY_RULE_SETUP
8203 {
8204   LEAVE;
8205   ETag_surfxml_prop();
8206   popbuffer(); /* attribute */
8207   switch (YY_START) {
8208    case S_surfxml_AS: case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
8209    case S_surfxml_cluster: case S_surfxml_cluster_1: case S_surfxml_cluster_2: SET(S_surfxml_cluster_2); break;
8210    case S_surfxml_config: case S_surfxml_config_1: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
8211    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
8212    case S_surfxml_link: case S_surfxml_link_1: case S_surfxml_link_2: SET(S_surfxml_link_2); break;
8213    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
8214    case S_surfxml_storage: case S_surfxml_storage_1: case S_surfxml_storage_2: SET(S_surfxml_storage_2); break;
8215    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
8216   }
8217  }
8218         YY_BREAK
8219 case 402:
8220 /* rule 402 can match eol */
8221 YY_RULE_SETUP
8222 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
8223         YY_BREAK
8224 case 403:
8225 YY_RULE_SETUP
8226 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
8227         YY_BREAK
8228 case YY_STATE_EOF(E_surfxml_prop):
8229 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</prop>' expected.");
8230         YY_BREAK
8231
8232 case 404:
8233 /* rule 404 can match eol */
8234 YY_RULE_SETUP
8235 FAIL("Starting tag <random> is not allowed here.");
8236         YY_BREAK
8237 case 405:
8238 /* rule 405 can match eol */
8239 YY_RULE_SETUP
8240 {
8241   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
8242   surfxml_random_generator_isset = 0;
8243   AX_surfxml_random_id = 0;
8244   surfxml_random_id_isset = 0;
8245   AX_surfxml_random_max = 0;
8246   surfxml_random_max_isset = 0;
8247   AX_surfxml_random_mean = 0;
8248   surfxml_random_mean_isset = 0;
8249   AX_surfxml_random_min = 0;
8250   surfxml_random_min_isset = 0;
8251   AX_surfxml_random_radical = 0;
8252   surfxml_random_radical_isset = 0;
8253   AX_surfxml_random_seed = 5;
8254   surfxml_random_seed_isset = 0;
8255   AX_surfxml_random_std___deviation = 0;
8256   surfxml_random_std___deviation_isset = 0;
8257   ENTER(AL_surfxml_random); pushbuffer(0);
8258   }
8259         YY_BREAK
8260
8261 case 406:
8262 /* rule 406 can match eol */
8263 case 407:
8264 /* rule 407 can match eol */
8265 YY_RULE_SETUP
8266 A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
8267         YY_BREAK
8268 case 408:
8269 /* rule 408 can match eol */
8270 case 409:
8271 /* rule 409 can match eol */
8272 YY_RULE_SETUP
8273 A_surfxml_random_generator = A_surfxml_random_generator_RAND;
8274         YY_BREAK
8275 case 410:
8276 /* rule 410 can match eol */
8277 case 411:
8278 /* rule 411 can match eol */
8279 YY_RULE_SETUP
8280 A_surfxml_random_generator = A_surfxml_random_generator_RNGSTREAM;
8281         YY_BREAK
8282 case 412:
8283 /* rule 412 can match eol */
8284 case 413:
8285 /* rule 413 can match eol */
8286 YY_RULE_SETUP
8287 A_surfxml_random_generator = A_surfxml_random_generator_NONE;
8288         YY_BREAK
8289 case 414:
8290 /* rule 414 can match eol */
8291 YY_RULE_SETUP
8292 if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");} surfxml_random_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_id);
8293         YY_BREAK
8294 case 415:
8295 /* rule 415 can match eol */
8296 YY_RULE_SETUP
8297 if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");}  surfxml_random_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_id);
8298         YY_BREAK
8299 case 416:
8300 /* rule 416 can match eol */
8301 YY_RULE_SETUP
8302 if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");} surfxml_random_max_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_max);
8303         YY_BREAK
8304 case 417:
8305 /* rule 417 can match eol */
8306 YY_RULE_SETUP
8307 if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");}  surfxml_random_max_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_max);
8308         YY_BREAK
8309 case 418:
8310 /* rule 418 can match eol */
8311 YY_RULE_SETUP
8312 if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");} surfxml_random_mean_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_mean);
8313         YY_BREAK
8314 case 419:
8315 /* rule 419 can match eol */
8316 YY_RULE_SETUP
8317 if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");}  surfxml_random_mean_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_mean);
8318         YY_BREAK
8319 case 420:
8320 /* rule 420 can match eol */
8321 YY_RULE_SETUP
8322 if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");} surfxml_random_min_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_min);
8323         YY_BREAK
8324 case 421:
8325 /* rule 421 can match eol */
8326 YY_RULE_SETUP
8327 if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");}  surfxml_random_min_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_min);
8328         YY_BREAK
8329 case 422:
8330 /* rule 422 can match eol */
8331 YY_RULE_SETUP
8332 if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");} surfxml_random_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_radical);
8333         YY_BREAK
8334 case 423:
8335 /* rule 423 can match eol */
8336 YY_RULE_SETUP
8337 if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");}  surfxml_random_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_radical);
8338         YY_BREAK
8339 case 424:
8340 /* rule 424 can match eol */
8341 YY_RULE_SETUP
8342 if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");} surfxml_random_seed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_seed);
8343         YY_BREAK
8344 case 425:
8345 /* rule 425 can match eol */
8346 YY_RULE_SETUP
8347 if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");}  surfxml_random_seed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_seed);
8348         YY_BREAK
8349 case 426:
8350 /* rule 426 can match eol */
8351 YY_RULE_SETUP
8352 if (surfxml_random_std___deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");} surfxml_random_std___deviation_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std___deviation);
8353         YY_BREAK
8354 case 427:
8355 /* rule 427 can match eol */
8356 YY_RULE_SETUP
8357 if (surfxml_random_std___deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");}  surfxml_random_std___deviation_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std___deviation);
8358         YY_BREAK
8359 case 428:
8360 YY_RULE_SETUP
8361 {
8362   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
8363   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
8364   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
8365   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
8366   if (!AX_surfxml_random_std___deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
8367   LEAVE; STag_surfxml_random();surfxml_pcdata_ix = 0; ENTER(E_surfxml_random);
8368  }
8369         YY_BREAK
8370 case 429:
8371 YY_RULE_SETUP
8372 {
8373   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
8374   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
8375   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
8376   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
8377   if (!AX_surfxml_random_std___deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
8378   LEAVE; STag_surfxml_random(); surfxml_pcdata_ix = 0; ETag_surfxml_random(); popbuffer(); /* attribute */
8379   switch (YY_START) {
8380    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
8381   }
8382  }
8383         YY_BREAK
8384 case 430:
8385 YY_RULE_SETUP
8386 FAIL("Unexpected character `%c' in attribute list of random element.", surf_parse_text[0]);
8387         YY_BREAK
8388 case 431:
8389 YY_RULE_SETUP
8390 FAIL("Bad attribute `%s' in `random' element start tag.",surf_parse_text);
8391         YY_BREAK
8392 case YY_STATE_EOF(AL_surfxml_random):
8393 FAIL("EOF in attribute list of `random' element.");
8394         YY_BREAK
8395
8396 case 432:
8397 /* rule 432 can match eol */
8398 YY_RULE_SETUP
8399 {
8400   LEAVE;
8401   ETag_surfxml_random();
8402   popbuffer(); /* attribute */
8403   switch (YY_START) {
8404    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
8405   }
8406  }
8407         YY_BREAK
8408 case 433:
8409 /* rule 433 can match eol */
8410 YY_RULE_SETUP
8411 FAIL("Unexpected end-tag `%s': `</random>' expected.",surf_parse_text);
8412         YY_BREAK
8413 case 434:
8414 YY_RULE_SETUP
8415 FAIL("Unexpected character `%c': `</random>' expected.",surf_parse_text[0]);
8416         YY_BREAK
8417 case YY_STATE_EOF(E_surfxml_random):
8418 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</random>' expected.");
8419         YY_BREAK
8420
8421 case 435:
8422 /* rule 435 can match eol */
8423 YY_RULE_SETUP
8424 FAIL("Starting tag <route> is not allowed here.");
8425         YY_BREAK
8426 case 436:
8427 /* rule 436 can match eol */
8428 YY_RULE_SETUP
8429 {
8430   AX_surfxml_route_dst = 0;
8431   surfxml_route_dst_isset = 0;
8432   AX_surfxml_route_src = 0;
8433   surfxml_route_src_isset = 0;
8434   AX_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
8435   surfxml_route_symmetrical_isset = 0;
8436   ENTER(AL_surfxml_route); pushbuffer(0);
8437   }
8438         YY_BREAK
8439
8440 case 437:
8441 /* rule 437 can match eol */
8442 YY_RULE_SETUP
8443 if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");} surfxml_route_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
8444         YY_BREAK
8445 case 438:
8446 /* rule 438 can match eol */
8447 YY_RULE_SETUP
8448 if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");}  surfxml_route_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
8449         YY_BREAK
8450 case 439:
8451 /* rule 439 can match eol */
8452 YY_RULE_SETUP
8453 if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");} surfxml_route_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
8454         YY_BREAK
8455 case 440:
8456 /* rule 440 can match eol */
8457 YY_RULE_SETUP
8458 if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");}  surfxml_route_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
8459         YY_BREAK
8460 case 441:
8461 /* rule 441 can match eol */
8462 case 442:
8463 /* rule 442 can match eol */
8464 YY_RULE_SETUP
8465 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
8466         YY_BREAK
8467 case 443:
8468 /* rule 443 can match eol */
8469 case 444:
8470 /* rule 444 can match eol */
8471 YY_RULE_SETUP
8472 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_NO;
8473         YY_BREAK
8474 case 445:
8475 YY_RULE_SETUP
8476 {
8477   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
8478   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
8479   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
8480  }
8481         YY_BREAK
8482 case 446:
8483 YY_RULE_SETUP
8484 {
8485   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
8486   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
8487   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
8488   switch (YY_START) {
8489    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8490   }
8491  }
8492         YY_BREAK
8493 case 447:
8494 YY_RULE_SETUP
8495 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
8496         YY_BREAK
8497 case 448:
8498 YY_RULE_SETUP
8499 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
8500         YY_BREAK
8501 case YY_STATE_EOF(AL_surfxml_route):
8502 FAIL("EOF in attribute list of `route' element.");
8503         YY_BREAK
8504
8505 case 449:
8506 /* rule 449 can match eol */
8507 YY_RULE_SETUP
8508 {
8509   LEAVE;
8510   ETag_surfxml_route();
8511   popbuffer(); /* attribute */
8512   switch (YY_START) {
8513    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8514   }
8515  }
8516         YY_BREAK
8517 case 450:
8518 /* rule 450 can match eol */
8519 YY_RULE_SETUP
8520 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
8521         YY_BREAK
8522 case 451:
8523 YY_RULE_SETUP
8524 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
8525         YY_BREAK
8526 case YY_STATE_EOF(E_surfxml_route):
8527 case YY_STATE_EOF(S_surfxml_route):
8528 case YY_STATE_EOF(S_surfxml_route_2):
8529 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</route>' expected.");
8530         YY_BREAK
8531
8532 case 452:
8533 /* rule 452 can match eol */
8534 YY_RULE_SETUP
8535 FAIL("Starting tag <router> is not allowed here.");
8536         YY_BREAK
8537 case 453:
8538 /* rule 453 can match eol */
8539 YY_RULE_SETUP
8540 {
8541   AX_surfxml_router_coordinates = 0;
8542   surfxml_router_coordinates_isset = 0;
8543   AX_surfxml_router_id = 0;
8544   surfxml_router_id_isset = 0;
8545   ENTER(AL_surfxml_router); pushbuffer(0);
8546   }
8547         YY_BREAK
8548
8549 case 454:
8550 /* rule 454 can match eol */
8551 YY_RULE_SETUP
8552 if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");} surfxml_router_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_coordinates);
8553         YY_BREAK
8554 case 455:
8555 /* rule 455 can match eol */
8556 YY_RULE_SETUP
8557 if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");}  surfxml_router_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_coordinates);
8558         YY_BREAK
8559 case 456:
8560 /* rule 456 can match eol */
8561 YY_RULE_SETUP
8562 if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");} surfxml_router_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
8563         YY_BREAK
8564 case 457:
8565 /* rule 457 can match eol */
8566 YY_RULE_SETUP
8567 if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");}  surfxml_router_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
8568         YY_BREAK
8569 case 458:
8570 YY_RULE_SETUP
8571 {
8572   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
8573   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
8574  }
8575         YY_BREAK
8576 case 459:
8577 YY_RULE_SETUP
8578 {
8579   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
8580   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
8581   switch (YY_START) {
8582    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8583   }
8584  }
8585         YY_BREAK
8586 case 460:
8587 YY_RULE_SETUP
8588 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
8589         YY_BREAK
8590 case 461:
8591 YY_RULE_SETUP
8592 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
8593         YY_BREAK
8594 case YY_STATE_EOF(AL_surfxml_router):
8595 FAIL("EOF in attribute list of `router' element.");
8596         YY_BREAK
8597
8598 case 462:
8599 /* rule 462 can match eol */
8600 YY_RULE_SETUP
8601 {
8602   LEAVE;
8603   ETag_surfxml_router();
8604   popbuffer(); /* attribute */
8605   switch (YY_START) {
8606    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8607   }
8608  }
8609         YY_BREAK
8610 case 463:
8611 /* rule 463 can match eol */
8612 YY_RULE_SETUP
8613 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
8614         YY_BREAK
8615 case 464:
8616 YY_RULE_SETUP
8617 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
8618         YY_BREAK
8619 case YY_STATE_EOF(E_surfxml_router):
8620 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</router>' expected.");
8621         YY_BREAK
8622
8623 case 465:
8624 /* rule 465 can match eol */
8625 YY_RULE_SETUP
8626 FAIL("Starting tag <storage> is not allowed here.");
8627         YY_BREAK
8628 case 466:
8629 /* rule 466 can match eol */
8630 YY_RULE_SETUP
8631 {
8632   AX_surfxml_storage_attach = 0;
8633   surfxml_storage_attach_isset = 0;
8634   AX_surfxml_storage_content = 0;
8635   surfxml_storage_content_isset = 0;
8636   AX_surfxml_storage_content___type = 31;
8637   surfxml_storage_content___type_isset = 0;
8638   AX_surfxml_storage_id = 0;
8639   surfxml_storage_id_isset = 0;
8640   AX_surfxml_storage_typeId = 0;
8641   surfxml_storage_typeId_isset = 0;
8642   ENTER(AL_surfxml_storage); pushbuffer(0);
8643   }
8644         YY_BREAK
8645
8646 case 467:
8647 /* rule 467 can match eol */
8648 YY_RULE_SETUP
8649 if (surfxml_storage_attach_isset != 0) {FAIL("Multiple definition of attribute attach in <surfxml_storage>");} surfxml_storage_attach_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_attach);
8650         YY_BREAK
8651 case 468:
8652 /* rule 468 can match eol */
8653 YY_RULE_SETUP
8654 if (surfxml_storage_attach_isset != 0) {FAIL("Multiple definition of attribute attach in <surfxml_storage>");}  surfxml_storage_attach_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_attach);
8655         YY_BREAK
8656 case 469:
8657 /* rule 469 can match eol */
8658 YY_RULE_SETUP
8659 if (surfxml_storage_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage>");} surfxml_storage_content_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_content);
8660         YY_BREAK
8661 case 470:
8662 /* rule 470 can match eol */
8663 YY_RULE_SETUP
8664 if (surfxml_storage_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage>");}  surfxml_storage_content_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_content);
8665         YY_BREAK
8666 case 471:
8667 /* rule 471 can match eol */
8668 YY_RULE_SETUP
8669 if (surfxml_storage_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage>");} surfxml_storage_content___type_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_content___type);
8670         YY_BREAK
8671 case 472:
8672 /* rule 472 can match eol */
8673 YY_RULE_SETUP
8674 if (surfxml_storage_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage>");}  surfxml_storage_content___type_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_content___type);
8675         YY_BREAK
8676 case 473:
8677 /* rule 473 can match eol */
8678 YY_RULE_SETUP
8679 if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");} surfxml_storage_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_id);
8680         YY_BREAK
8681 case 474:
8682 /* rule 474 can match eol */
8683 YY_RULE_SETUP
8684 if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");}  surfxml_storage_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_id);
8685         YY_BREAK
8686 case 475:
8687 /* rule 475 can match eol */
8688 YY_RULE_SETUP
8689 if (surfxml_storage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_storage>");} surfxml_storage_typeId_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_typeId);
8690         YY_BREAK
8691 case 476:
8692 /* rule 476 can match eol */
8693 YY_RULE_SETUP
8694 if (surfxml_storage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_storage>");}  surfxml_storage_typeId_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_typeId);
8695         YY_BREAK
8696 case 477:
8697 YY_RULE_SETUP
8698 {
8699   if (!AX_surfxml_storage_attach) FAIL("Required attribute `attach' not set for `storage' element.");
8700   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
8701   if (!AX_surfxml_storage_typeId) FAIL("Required attribute `typeId' not set for `storage' element.");
8702   LEAVE; STag_surfxml_storage();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage);
8703  }
8704         YY_BREAK
8705 case 478:
8706 YY_RULE_SETUP
8707 {
8708   if (!AX_surfxml_storage_attach) FAIL("Required attribute `attach' not set for `storage' element.");
8709   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
8710   if (!AX_surfxml_storage_typeId) FAIL("Required attribute `typeId' not set for `storage' element.");
8711   LEAVE; STag_surfxml_storage(); surfxml_pcdata_ix = 0; ETag_surfxml_storage(); popbuffer(); /* attribute */
8712   switch (YY_START) {
8713    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8714   }
8715  }
8716         YY_BREAK
8717 case 479:
8718 YY_RULE_SETUP
8719 FAIL("Unexpected character `%c' in attribute list of storage element.", surf_parse_text[0]);
8720         YY_BREAK
8721 case 480:
8722 YY_RULE_SETUP
8723 FAIL("Bad attribute `%s' in `storage' element start tag.",surf_parse_text);
8724         YY_BREAK
8725 case YY_STATE_EOF(AL_surfxml_storage):
8726 FAIL("EOF in attribute list of `storage' element.");
8727         YY_BREAK
8728
8729 case 481:
8730 /* rule 481 can match eol */
8731 YY_RULE_SETUP
8732 {
8733   LEAVE;
8734   ETag_surfxml_storage();
8735   popbuffer(); /* attribute */
8736   switch (YY_START) {
8737    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8738   }
8739  }
8740         YY_BREAK
8741 case 482:
8742 /* rule 482 can match eol */
8743 YY_RULE_SETUP
8744 FAIL("Unexpected end-tag `%s': `</storage>' expected.",surf_parse_text);
8745         YY_BREAK
8746 case 483:
8747 YY_RULE_SETUP
8748 FAIL("Unexpected character `%c': `</storage>' expected.",surf_parse_text[0]);
8749         YY_BREAK
8750 case YY_STATE_EOF(E_surfxml_storage):
8751 case YY_STATE_EOF(S_surfxml_storage):
8752 case YY_STATE_EOF(S_surfxml_storage_2):
8753 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage>' expected.");
8754         YY_BREAK
8755
8756 case 484:
8757 /* rule 484 can match eol */
8758 YY_RULE_SETUP
8759 FAIL("Starting tag <storage_type> is not allowed here.");
8760         YY_BREAK
8761 case 485:
8762 /* rule 485 can match eol */
8763 YY_RULE_SETUP
8764 {
8765   AX_surfxml_storage___type_content = 0;
8766   surfxml_storage___type_content_isset = 0;
8767   AX_surfxml_storage___type_content___type = 16;
8768   surfxml_storage___type_content___type_isset = 0;
8769   AX_surfxml_storage___type_id = 0;
8770   surfxml_storage___type_id_isset = 0;
8771   AX_surfxml_storage___type_model = 0;
8772   surfxml_storage___type_model_isset = 0;
8773   AX_surfxml_storage___type_size = 0;
8774   surfxml_storage___type_size_isset = 0;
8775   ENTER(AL_surfxml_storage___type); pushbuffer(0);
8776   }
8777         YY_BREAK
8778
8779 case 486:
8780 /* rule 486 can match eol */
8781 YY_RULE_SETUP
8782 if (surfxml_storage___type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage___type>");} surfxml_storage___type_content_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_content);
8783         YY_BREAK
8784 case 487:
8785 /* rule 487 can match eol */
8786 YY_RULE_SETUP
8787 if (surfxml_storage___type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage___type>");}  surfxml_storage___type_content_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_content);
8788         YY_BREAK
8789 case 488:
8790 /* rule 488 can match eol */
8791 YY_RULE_SETUP
8792 if (surfxml_storage___type_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage___type>");} surfxml_storage___type_content___type_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_content___type);
8793         YY_BREAK
8794 case 489:
8795 /* rule 489 can match eol */
8796 YY_RULE_SETUP
8797 if (surfxml_storage___type_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage___type>");}  surfxml_storage___type_content___type_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_content___type);
8798         YY_BREAK
8799 case 490:
8800 /* rule 490 can match eol */
8801 YY_RULE_SETUP
8802 if (surfxml_storage___type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage___type>");} surfxml_storage___type_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_id);
8803         YY_BREAK
8804 case 491:
8805 /* rule 491 can match eol */
8806 YY_RULE_SETUP
8807 if (surfxml_storage___type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage___type>");}  surfxml_storage___type_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_id);
8808         YY_BREAK
8809 case 492:
8810 /* rule 492 can match eol */
8811 YY_RULE_SETUP
8812 if (surfxml_storage___type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage___type>");} surfxml_storage___type_model_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_model);
8813         YY_BREAK
8814 case 493:
8815 /* rule 493 can match eol */
8816 YY_RULE_SETUP
8817 if (surfxml_storage___type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage___type>");}  surfxml_storage___type_model_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_model);
8818         YY_BREAK
8819 case 494:
8820 /* rule 494 can match eol */
8821 YY_RULE_SETUP
8822 if (surfxml_storage___type_size_isset != 0) {FAIL("Multiple definition of attribute size in <surfxml_storage___type>");} surfxml_storage___type_size_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_size);
8823         YY_BREAK
8824 case 495:
8825 /* rule 495 can match eol */
8826 YY_RULE_SETUP
8827 if (surfxml_storage___type_size_isset != 0) {FAIL("Multiple definition of attribute size in <surfxml_storage___type>");}  surfxml_storage___type_size_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_size);
8828         YY_BREAK
8829 case 496:
8830 YY_RULE_SETUP
8831 {
8832   if (!AX_surfxml_storage___type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
8833   if (!AX_surfxml_storage___type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
8834   if (!AX_surfxml_storage___type_size) FAIL("Required attribute `size' not set for `storage_type' element.");
8835   LEAVE; STag_surfxml_storage___type();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage___type);
8836  }
8837         YY_BREAK
8838 case 497:
8839 YY_RULE_SETUP
8840 {
8841   if (!AX_surfxml_storage___type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
8842   if (!AX_surfxml_storage___type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
8843   if (!AX_surfxml_storage___type_size) FAIL("Required attribute `size' not set for `storage_type' element.");
8844   LEAVE; STag_surfxml_storage___type(); surfxml_pcdata_ix = 0; ETag_surfxml_storage___type(); popbuffer(); /* attribute */
8845   switch (YY_START) {
8846    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8847   }
8848  }
8849         YY_BREAK
8850 case 498:
8851 YY_RULE_SETUP
8852 FAIL("Unexpected character `%c' in attribute list of storage_type element.", surf_parse_text[0]);
8853         YY_BREAK
8854 case 499:
8855 YY_RULE_SETUP
8856 FAIL("Bad attribute `%s' in `storage_type' element start tag.",surf_parse_text);
8857         YY_BREAK
8858 case YY_STATE_EOF(AL_surfxml_storage___type):
8859 FAIL("EOF in attribute list of `storage_type' element.");
8860         YY_BREAK
8861
8862 case 500:
8863 /* rule 500 can match eol */
8864 YY_RULE_SETUP
8865 {
8866   LEAVE;
8867   ETag_surfxml_storage___type();
8868   popbuffer(); /* attribute */
8869   switch (YY_START) {
8870    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8871   }
8872  }
8873         YY_BREAK
8874 case 501:
8875 /* rule 501 can match eol */
8876 YY_RULE_SETUP
8877 FAIL("Unexpected end-tag `%s': `</storage_type>' expected.",surf_parse_text);
8878         YY_BREAK
8879 case 502:
8880 YY_RULE_SETUP
8881 FAIL("Unexpected character `%c': `</storage_type>' expected.",surf_parse_text[0]);
8882         YY_BREAK
8883 case YY_STATE_EOF(E_surfxml_storage___type):
8884 case YY_STATE_EOF(S_surfxml_storage___type):
8885 case YY_STATE_EOF(S_surfxml_storage___type_2):
8886 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage_type>' expected.");
8887         YY_BREAK
8888
8889 case 503:
8890 /* rule 503 can match eol */
8891 YY_RULE_SETUP
8892 FAIL("Starting tag <trace> is not allowed here.");
8893         YY_BREAK
8894 case 504:
8895 /* rule 504 can match eol */
8896 YY_RULE_SETUP
8897 {
8898   AX_surfxml_trace_file = 0;
8899   surfxml_trace_file_isset = 0;
8900   AX_surfxml_trace_id = 0;
8901   surfxml_trace_id_isset = 0;
8902   AX_surfxml_trace_periodicity = 0;
8903   surfxml_trace_periodicity_isset = 0;
8904   ENTER(AL_surfxml_trace); pushbuffer(0);
8905   }
8906         YY_BREAK
8907
8908 case 505:
8909 /* rule 505 can match eol */
8910 YY_RULE_SETUP
8911 if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");} surfxml_trace_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_file);
8912         YY_BREAK
8913 case 506:
8914 /* rule 506 can match eol */
8915 YY_RULE_SETUP
8916 if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");}  surfxml_trace_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_file);
8917         YY_BREAK
8918 case 507:
8919 /* rule 507 can match eol */
8920 YY_RULE_SETUP
8921 if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");} surfxml_trace_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_id);
8922         YY_BREAK
8923 case 508:
8924 /* rule 508 can match eol */
8925 YY_RULE_SETUP
8926 if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");}  surfxml_trace_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_id);
8927         YY_BREAK
8928 case 509:
8929 /* rule 509 can match eol */
8930 YY_RULE_SETUP
8931 if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");} surfxml_trace_periodicity_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_periodicity);
8932         YY_BREAK
8933 case 510:
8934 /* rule 510 can match eol */
8935 YY_RULE_SETUP
8936 if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");}  surfxml_trace_periodicity_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_periodicity);
8937         YY_BREAK
8938 case 511:
8939 YY_RULE_SETUP
8940 {
8941   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
8942   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
8943   LEAVE; STag_surfxml_trace();pushbuffer(surfxml_pcdata_ix); BUFFERSET(surfxml_pcdata_ix);; ENTER(IN_trace);
8944  }
8945         YY_BREAK
8946 case 512:
8947 YY_RULE_SETUP
8948 {
8949   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
8950   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
8951   LEAVE; STag_surfxml_trace(); surfxml_pcdata_ix = 0; ETag_surfxml_trace(); popbuffer(); /* attribute */
8952   switch (YY_START) {
8953    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8954    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
8955    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
8956   }
8957  }
8958         YY_BREAK
8959 case 513:
8960 YY_RULE_SETUP
8961 FAIL("Unexpected character `%c' in attribute list of trace element.", surf_parse_text[0]);
8962         YY_BREAK
8963 case 514:
8964 YY_RULE_SETUP
8965 FAIL("Bad attribute `%s' in `trace' element start tag.",surf_parse_text);
8966         YY_BREAK
8967 case YY_STATE_EOF(AL_surfxml_trace):
8968 FAIL("EOF in attribute list of `trace' element.");
8969         YY_BREAK
8970
8971 case 515:
8972 /* rule 515 can match eol */
8973 YY_RULE_SETUP
8974 {
8975   LEAVE;
8976   BUFFERDONE;
8977   ETag_surfxml_trace();
8978   surfxml_pcdata_ix = popbuffer();
8979   popbuffer(); /* attribute */
8980   switch (YY_START) {
8981    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8982    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
8983    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
8984   }
8985  }
8986         YY_BREAK
8987 case 516:
8988 /* rule 516 can match eol */
8989 YY_RULE_SETUP
8990 FAIL("Unexpected end-tag `%s': `</trace>' expected.",surf_parse_text);
8991         YY_BREAK
8992 case YY_STATE_EOF(IN_trace):
8993 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace>' expected.");
8994         YY_BREAK
8995
8996 case 517:
8997 /* rule 517 can match eol */
8998 YY_RULE_SETUP
8999 FAIL("Starting tag <trace_connect> is not allowed here.");
9000         YY_BREAK
9001 case 518:
9002 /* rule 518 can match eol */
9003 YY_RULE_SETUP
9004 {
9005   AX_surfxml_trace___connect_element = 0;
9006   surfxml_trace___connect_element_isset = 0;
9007   AX_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_HOST___AVAIL;
9008   surfxml_trace___connect_kind_isset = 0;
9009   AX_surfxml_trace___connect_trace = 0;
9010   surfxml_trace___connect_trace_isset = 0;
9011   ENTER(AL_surfxml_trace___connect); pushbuffer(0);
9012   }
9013         YY_BREAK
9014
9015 case 519:
9016 /* rule 519 can match eol */
9017 YY_RULE_SETUP
9018 if (surfxml_trace___connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace___connect>");} surfxml_trace___connect_element_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace___connect_element);
9019         YY_BREAK
9020 case 520:
9021 /* rule 520 can match eol */
9022 YY_RULE_SETUP
9023 if (surfxml_trace___connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace___connect>");}  surfxml_trace___connect_element_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace___connect_element);
9024         YY_BREAK
9025 case 521:
9026 /* rule 521 can match eol */
9027 case 522:
9028 /* rule 522 can match eol */
9029 YY_RULE_SETUP
9030 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_HOST___AVAIL;
9031         YY_BREAK
9032 case 523:
9033 /* rule 523 can match eol */
9034 case 524:
9035 /* rule 524 can match eol */
9036 YY_RULE_SETUP
9037 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_SPEED;
9038         YY_BREAK
9039 case 525:
9040 /* rule 525 can match eol */
9041 case 526:
9042 /* rule 526 can match eol */
9043 YY_RULE_SETUP
9044 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_LINK___AVAIL;
9045         YY_BREAK
9046 case 527:
9047 /* rule 527 can match eol */
9048 case 528:
9049 /* rule 528 can match eol */
9050 YY_RULE_SETUP
9051 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_BANDWIDTH;
9052         YY_BREAK
9053 case 529:
9054 /* rule 529 can match eol */
9055 case 530:
9056 /* rule 530 can match eol */
9057 YY_RULE_SETUP
9058 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_LATENCY;
9059         YY_BREAK
9060 case 531:
9061 /* rule 531 can match eol */
9062 YY_RULE_SETUP
9063 if (surfxml_trace___connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace___connect>");} surfxml_trace___connect_trace_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace___connect_trace);
9064         YY_BREAK
9065 case 532:
9066 /* rule 532 can match eol */
9067 YY_RULE_SETUP
9068 if (surfxml_trace___connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace___connect>");}  surfxml_trace___connect_trace_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace___connect_trace);
9069         YY_BREAK
9070 case 533:
9071 YY_RULE_SETUP
9072 {
9073   if (!AX_surfxml_trace___connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
9074   if (!AX_surfxml_trace___connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
9075   LEAVE; STag_surfxml_trace___connect();surfxml_pcdata_ix = 0; ENTER(E_surfxml_trace___connect);
9076  }
9077         YY_BREAK
9078 case 534:
9079 YY_RULE_SETUP
9080 {
9081   if (!AX_surfxml_trace___connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
9082   if (!AX_surfxml_trace___connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
9083   LEAVE; STag_surfxml_trace___connect(); surfxml_pcdata_ix = 0; ETag_surfxml_trace___connect(); popbuffer(); /* attribute */
9084   switch (YY_START) {
9085    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
9086    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
9087    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
9088   }
9089  }
9090         YY_BREAK
9091 case 535:
9092 YY_RULE_SETUP
9093 FAIL("Unexpected character `%c' in attribute list of trace_connect element.", surf_parse_text[0]);
9094         YY_BREAK
9095 case 536:
9096 YY_RULE_SETUP
9097 FAIL("Bad attribute `%s' in `trace_connect' element start tag.",surf_parse_text);
9098         YY_BREAK
9099 case YY_STATE_EOF(AL_surfxml_trace___connect):
9100 FAIL("EOF in attribute list of `trace_connect' element.");
9101         YY_BREAK
9102
9103 case 537:
9104 /* rule 537 can match eol */
9105 YY_RULE_SETUP
9106 {
9107   LEAVE;
9108   ETag_surfxml_trace___connect();
9109   popbuffer(); /* attribute */
9110   switch (YY_START) {
9111    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
9112    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
9113    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
9114   }
9115  }
9116         YY_BREAK
9117 case 538:
9118 /* rule 538 can match eol */
9119 YY_RULE_SETUP
9120 FAIL("Unexpected end-tag `%s': `</trace_connect>' expected.",surf_parse_text);
9121         YY_BREAK
9122 case 539:
9123 YY_RULE_SETUP
9124 FAIL("Unexpected character `%c': `</trace_connect>' expected.",surf_parse_text[0]);
9125         YY_BREAK
9126 case YY_STATE_EOF(E_surfxml_trace___connect):
9127 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace_connect>' expected.");
9128         YY_BREAK
9129
9130 /* EPILOG: after the root element. */
9131
9132 case 540:
9133 YY_RULE_SETUP
9134 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
9135         YY_BREAK
9136 case YY_STATE_EOF(EPILOG):
9137 SUCCEED;
9138         YY_BREAK
9139
9140 /* CHARACTER DATA. */
9141
9142 /* Non-defined standard entities... */
9143 case 541:
9144 YY_RULE_SETUP
9145 BUFFERPUTC('&');
9146         YY_BREAK
9147 case 542:
9148 YY_RULE_SETUP
9149 BUFFERPUTC('<');
9150         YY_BREAK
9151 case 543:
9152 YY_RULE_SETUP
9153 BUFFERPUTC('>');
9154         YY_BREAK
9155 case 544:
9156 YY_RULE_SETUP
9157 BUFFERPUTC('\'');
9158         YY_BREAK
9159 case 545:
9160 YY_RULE_SETUP
9161 BUFFERPUTC('"');
9162         YY_BREAK
9163 /* Character entities. */
9164 case 546:
9165 YY_RULE_SETUP
9166 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
9167         YY_BREAK
9168 case 547:
9169 YY_RULE_SETUP
9170 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
9171         YY_BREAK
9172
9173 case 548:
9174 /* rule 548 can match eol */
9175 case 549:
9176 /* rule 549 can match eol */
9177 case 550:
9178 /* rule 550 can match eol */
9179 case 551:
9180 /* rule 551 can match eol */
9181 YY_RULE_SETUP
9182 BUFFERPUTC('\n');
9183         YY_BREAK
9184
9185 case 552:
9186 YY_RULE_SETUP
9187 ENTER(CDATA);
9188         YY_BREAK
9189 case 553:
9190 YY_RULE_SETUP
9191 FAIL("Unexpected `]""]>' in character data.");
9192         YY_BREAK
9193
9194 case 554:
9195 YY_RULE_SETUP
9196 BUFFERDONE; LEAVE;
9197         YY_BREAK
9198 case YY_STATE_EOF(VALUE1):
9199 FAIL("EOF in literal (\"'\" expected).");
9200         YY_BREAK
9201
9202 case 555:
9203 YY_RULE_SETUP
9204 BUFFERDONE; LEAVE;
9205         YY_BREAK
9206 case YY_STATE_EOF(VALUE2):
9207 FAIL("EOF in literal (`\"' expected).");
9208         YY_BREAK
9209
9210 case 556:
9211 /* rule 556 can match eol */
9212 YY_RULE_SETUP
9213 BUFFERPUTC(surf_parse_text[0]);
9214         YY_BREAK
9215 case 557:
9216 YY_RULE_SETUP
9217 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
9218         YY_BREAK
9219
9220 case 558:
9221 YY_RULE_SETUP
9222 LEAVE;
9223         YY_BREAK
9224 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
9225 case 559:
9226 YY_RULE_SETUP
9227 BUFFERPUTC(surf_parse_text[0]);
9228         YY_BREAK
9229 case YY_STATE_EOF(CDATA):
9230 FAIL("EOF in CDATA section.");
9231         YY_BREAK
9232
9233 /* Impossible rules to avoid warnings from flex(1). */
9234 /* Ideally, this should be replaced by code in flexml.pl that
9235     generates just the states not covered by other rules. */
9236
9237 case 560:
9238 /* rule 560 can match eol */
9239 YY_RULE_SETUP
9240 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
9241         YY_BREAK
9242
9243 case 561:
9244 YY_RULE_SETUP
9245 ECHO;
9246         YY_BREAK
9247 case YY_STATE_EOF(INITIAL):
9248 case YY_STATE_EOF(S_surfxml_AS_2):
9249 case YY_STATE_EOF(S_surfxml_AS_5):
9250 case YY_STATE_EOF(S_surfxml_AS_7):
9251 case YY_STATE_EOF(S_surfxml_ASroute_1):
9252 case YY_STATE_EOF(S_surfxml_bypassASroute_1):
9253 case YY_STATE_EOF(S_surfxml_bypassRoute_1):
9254 case YY_STATE_EOF(S_surfxml_cluster_1):
9255 case YY_STATE_EOF(S_surfxml_config_1):
9256 case YY_STATE_EOF(S_surfxml_host_1):
9257 case YY_STATE_EOF(S_surfxml_include_1):
9258 case YY_STATE_EOF(S_surfxml_link_1):
9259 case YY_STATE_EOF(ROOT_surfxml_platform):
9260 case YY_STATE_EOF(S_surfxml_platform_2):
9261 case YY_STATE_EOF(S_surfxml_platform_5):
9262 case YY_STATE_EOF(S_surfxml_platform_7):
9263 case YY_STATE_EOF(S_surfxml_process_1):
9264 case YY_STATE_EOF(S_surfxml_route_1):
9265 case YY_STATE_EOF(S_surfxml_storage_1):
9266 case YY_STATE_EOF(S_surfxml_storage___type_1):
9267 case YY_STATE_EOF(IMPOSSIBLE):
9268         yyterminate();
9269
9270         case YY_END_OF_BUFFER:
9271                 {
9272                 /* Amount of text matched not including the EOB char. */
9273                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
9274
9275                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
9276                 *yy_cp = (yy_hold_char);
9277                 YY_RESTORE_YY_MORE_OFFSET
9278
9279                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
9280                         {
9281                         /* We're scanning a new file or input source.  It's
9282                          * possible that this happened because the user
9283                          * just pointed surf_parse_in at a new source and called
9284                          * surf_parse_lex().  If so, then we have to assure
9285                          * consistency between YY_CURRENT_BUFFER and our
9286                          * globals.  Here is the right place to do so, because
9287                          * this is the first action (other than possibly a
9288                          * back-up) that will match for the new input source.
9289                          */
9290                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
9291                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
9292                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
9293                         }
9294
9295                 /* Note that here we test for yy_c_buf_p "<=" to the position
9296                  * of the first EOB in the buffer, since yy_c_buf_p will
9297                  * already have been incremented past the NUL character
9298                  * (since all states make transitions on EOB to the
9299                  * end-of-buffer state).  Contrast this with the test
9300                  * in input().
9301                  */
9302                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
9303                         { /* This was really a NUL. */
9304                         yy_state_type yy_next_state;
9305
9306                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
9307
9308                         yy_current_state = yy_get_previous_state(  );
9309
9310                         /* Okay, we're now positioned to make the NUL
9311                          * transition.  We couldn't have
9312                          * yy_get_previous_state() go ahead and do it
9313                          * for us because it doesn't know how to deal
9314                          * with the possibility of jamming (and we don't
9315                          * want to build jamming into it because then it
9316                          * will run more slowly).
9317                          */
9318
9319                         yy_next_state = yy_try_NUL_trans( yy_current_state );
9320
9321                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9322
9323                         if ( yy_next_state )
9324                                 {
9325                                 /* Consume the NUL. */
9326                                 yy_cp = ++(yy_c_buf_p);
9327                                 yy_current_state = yy_next_state;
9328                                 goto yy_match;
9329                                 }
9330
9331                         else
9332                                 {
9333                                 yy_cp = (yy_c_buf_p);
9334                                 goto yy_find_action;
9335                                 }
9336                         }
9337
9338                 else switch ( yy_get_next_buffer(  ) )
9339                         {
9340                         case EOB_ACT_END_OF_FILE:
9341                                 {
9342                                 (yy_did_buffer_switch_on_eof) = 0;
9343
9344                                 if ( surf_parse_wrap( ) )
9345                                         {
9346                                         /* Note: because we've taken care in
9347                                          * yy_get_next_buffer() to have set up
9348                                          * surf_parse_text, we can now set up
9349                                          * yy_c_buf_p so that if some total
9350                                          * hoser (like flex itself) wants to
9351                                          * call the scanner after we return the
9352                                          * YY_NULL, it'll still work - another
9353                                          * YY_NULL will get returned.
9354                                          */
9355                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
9356
9357                                         yy_act = YY_STATE_EOF(YY_START);
9358                                         goto do_action;
9359                                         }
9360
9361                                 else
9362                                         {
9363                                         if ( ! (yy_did_buffer_switch_on_eof) )
9364                                                 YY_NEW_FILE;
9365                                         }
9366                                 break;
9367                                 }
9368
9369                         case EOB_ACT_CONTINUE_SCAN:
9370                                 (yy_c_buf_p) =
9371                                         (yytext_ptr) + yy_amount_of_matched_text;
9372
9373                                 yy_current_state = yy_get_previous_state(  );
9374
9375                                 yy_cp = (yy_c_buf_p);
9376                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9377                                 goto yy_match;
9378
9379                         case EOB_ACT_LAST_MATCH:
9380                                 (yy_c_buf_p) =
9381                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
9382
9383                                 yy_current_state = yy_get_previous_state(  );
9384
9385                                 yy_cp = (yy_c_buf_p);
9386                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9387                                 goto yy_find_action;
9388                         }
9389                 break;
9390                 }
9391
9392         default:
9393                 YY_FATAL_ERROR(
9394                         "fatal flex scanner internal error--no action found" );
9395         } /* end of action switch */
9396                 } /* end of scanning one token */
9397         } /* end of user's declarations */
9398 } /* end of surf_parse_lex */
9399
9400 /* yy_get_next_buffer - try to read in a new buffer
9401  *
9402  * Returns a code representing an action:
9403  *      EOB_ACT_LAST_MATCH -
9404  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
9405  *      EOB_ACT_END_OF_FILE - end of file
9406  */
9407 static int yy_get_next_buffer (void)
9408 {
9409         char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
9410         char *source = (yytext_ptr);
9411         yy_size_t number_to_move, i;
9412         int ret_val;
9413
9414         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
9415                 YY_FATAL_ERROR(
9416                 "fatal flex scanner internal error--end of buffer missed" );
9417
9418         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
9419                 { /* Don't try to fill the buffer, so this is an EOF. */
9420                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
9421                         {
9422                         /* We matched a single character, the EOB, so
9423                          * treat this as a final EOF.
9424                          */
9425                         return EOB_ACT_END_OF_FILE;
9426                         }
9427
9428                 else
9429                         {
9430                         /* We matched some text prior to the EOB, first
9431                          * process it.
9432                          */
9433                         return EOB_ACT_LAST_MATCH;
9434                         }
9435                 }
9436
9437         /* Try to read more data. */
9438
9439         /* First move last chars to start of buffer. */
9440         number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
9441
9442         for ( i = 0; i < number_to_move; ++i )
9443                 *(dest++) = *(source++);
9444
9445         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
9446                 /* don't do the read, it's not guaranteed to return an EOF,
9447                  * just force an EOF
9448                  */
9449                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
9450
9451         else
9452                 {
9453                         yy_size_t num_to_read =
9454                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
9455
9456                 while ( num_to_read <= 0 )
9457                         { /* Not enough room in the buffer - grow it. */
9458
9459                         /* just a shorter name for the current buffer */
9460                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
9461
9462                         int yy_c_buf_p_offset =
9463                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
9464
9465                         if ( b->yy_is_our_buffer )
9466                                 {
9467                                 yy_size_t new_size = b->yy_buf_size * 2;
9468
9469                                 if ( new_size <= 0 )
9470                                         b->yy_buf_size += b->yy_buf_size / 8;
9471                                 else
9472                                         b->yy_buf_size *= 2;
9473
9474                                 b->yy_ch_buf = (char *)
9475                                         /* Include room in for 2 EOB chars. */
9476                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
9477                                 }
9478                         else
9479                                 /* Can't grow it, we don't own it. */
9480                                 b->yy_ch_buf = 0;
9481
9482                         if ( ! b->yy_ch_buf )
9483                                 YY_FATAL_ERROR(
9484                                 "fatal error - scanner input buffer overflow" );
9485
9486                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
9487
9488                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
9489                                                 number_to_move - 1;
9490
9491                         }
9492
9493                 if ( num_to_read > YY_READ_BUF_SIZE )
9494                         num_to_read = YY_READ_BUF_SIZE;
9495
9496                 /* Read in more data. */
9497                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
9498                         (yy_n_chars), num_to_read );
9499
9500                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9501                 }
9502
9503         if ( (yy_n_chars) == 0 )
9504                 {
9505                 if ( number_to_move == YY_MORE_ADJ )
9506                         {
9507                         ret_val = EOB_ACT_END_OF_FILE;
9508                         surf_parse_restart(surf_parse_in  );
9509                         }
9510
9511                 else
9512                         {
9513                         ret_val = EOB_ACT_LAST_MATCH;
9514                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
9515                                 YY_BUFFER_EOF_PENDING;
9516                         }
9517                 }
9518
9519         else
9520                 ret_val = EOB_ACT_CONTINUE_SCAN;
9521
9522         if ((unsigned int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
9523                 /* Extend the array by 50%, plus the number we really need. */
9524                 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
9525                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) surf_parse_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
9526                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
9527                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
9528         }
9529
9530         (yy_n_chars) += number_to_move;
9531         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
9532         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
9533
9534         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
9535
9536         return ret_val;
9537 }
9538
9539 /* yy_get_previous_state - get the state just before the EOB char was reached */
9540
9541     static yy_state_type yy_get_previous_state (void)
9542 {
9543         yy_state_type yy_current_state;
9544         char *yy_cp;
9545     
9546         yy_current_state = (yy_start);
9547
9548         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
9549                 {
9550                 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
9551                 if ( yy_accept[yy_current_state] )
9552                         {
9553                         (yy_last_accepting_state) = yy_current_state;
9554                         (yy_last_accepting_cpos) = yy_cp;
9555                         }
9556                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
9557                         {
9558                         yy_current_state = (int) yy_def[yy_current_state];
9559                         if ( yy_current_state >= 3334 )
9560                                 yy_c = yy_meta[(unsigned int) yy_c];
9561                         }
9562                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
9563                 }
9564
9565         return yy_current_state;
9566 }
9567
9568 /* yy_try_NUL_trans - try to make a transition on the NUL character
9569  *
9570  * synopsis
9571  *      next_state = yy_try_NUL_trans( current_state );
9572  */
9573     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
9574 {
9575         int yy_is_jam;
9576         char *yy_cp = (yy_c_buf_p);
9577
9578         YY_CHAR yy_c = 1;
9579         if ( yy_accept[yy_current_state] )
9580                 {
9581                 (yy_last_accepting_state) = yy_current_state;
9582                 (yy_last_accepting_cpos) = yy_cp;
9583                 }
9584         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
9585                 {
9586                 yy_current_state = (int) yy_def[yy_current_state];
9587                 if ( yy_current_state >= 3334 )
9588                         yy_c = yy_meta[(unsigned int) yy_c];
9589                 }
9590         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
9591         yy_is_jam = (yy_current_state == 3333);
9592
9593                 return yy_is_jam ? 0 : yy_current_state;
9594 }
9595
9596 #ifndef YY_NO_UNPUT
9597
9598 #endif
9599
9600 #ifndef YY_NO_INPUT
9601 #ifdef __cplusplus
9602     static int yyinput (void)
9603 #else
9604     static int input  (void)
9605 #endif
9606
9607 {
9608         int c;
9609     
9610         *(yy_c_buf_p) = (yy_hold_char);
9611
9612         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
9613                 {
9614                 /* yy_c_buf_p now points to the character we want to return.
9615                  * If this occurs *before* the EOB characters, then it's a
9616                  * valid NUL; if not, then we've hit the end of the buffer.
9617                  */
9618                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
9619                         /* This was really a NUL. */
9620                         *(yy_c_buf_p) = '\0';
9621
9622                 else
9623                         { /* need more input */
9624                         yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
9625                         ++(yy_c_buf_p);
9626
9627                         switch ( yy_get_next_buffer(  ) )
9628                                 {
9629                                 case EOB_ACT_LAST_MATCH:
9630                                         /* This happens because yy_g_n_b()
9631                                          * sees that we've accumulated a
9632                                          * token and flags that we need to
9633                                          * try matching the token before
9634                                          * proceeding.  But for input(),
9635                                          * there's no matching to consider.
9636                                          * So convert the EOB_ACT_LAST_MATCH
9637                                          * to EOB_ACT_END_OF_FILE.
9638                                          */
9639
9640                                         /* Reset buffer status. */
9641                                         surf_parse_restart(surf_parse_in );
9642
9643                                         /*FALLTHROUGH*/
9644
9645                                 case EOB_ACT_END_OF_FILE:
9646                                         {
9647                                         if ( surf_parse_wrap( ) )
9648                                                 return EOF;
9649
9650                                         if ( ! (yy_did_buffer_switch_on_eof) )
9651                                                 YY_NEW_FILE;
9652 #ifdef __cplusplus
9653                                         return yyinput();
9654 #else
9655                                         return input();
9656 #endif
9657                                         }
9658
9659                                 case EOB_ACT_CONTINUE_SCAN:
9660                                         (yy_c_buf_p) = (yytext_ptr) + offset;
9661                                         break;
9662                                 }
9663                         }
9664                 }
9665
9666         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
9667         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
9668         (yy_hold_char) = *++(yy_c_buf_p);
9669
9670         if ( c == '\n' )
9671                    
9672     surf_parse_lineno++;
9673 ;
9674
9675         return c;
9676 }
9677 #endif  /* ifndef YY_NO_INPUT */
9678
9679 /** Immediately switch to a different input stream.
9680  * @param input_file A readable stream.
9681  * 
9682  * @note This function does not reset the start condition to @c INITIAL .
9683  */
9684     void surf_parse_restart  (FILE * input_file )
9685 {
9686     
9687         if ( ! YY_CURRENT_BUFFER ){
9688         surf_parse_ensure_buffer_stack ();
9689                 YY_CURRENT_BUFFER_LVALUE =
9690             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
9691         }
9692
9693         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
9694         surf_parse__load_buffer_state( );
9695 }
9696
9697 /** Switch to a different input buffer.
9698  * @param new_buffer The new input buffer.
9699  * 
9700  */
9701     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
9702 {
9703     
9704         /* TODO. We should be able to replace this entire function body
9705          * with
9706          *              surf_parse_pop_buffer_state();
9707          *              surf_parse_push_buffer_state(new_buffer);
9708      */
9709         surf_parse_ensure_buffer_stack ();
9710         if ( YY_CURRENT_BUFFER == new_buffer )
9711                 return;
9712
9713         if ( YY_CURRENT_BUFFER )
9714                 {
9715                 /* Flush out information for old buffer. */
9716                 *(yy_c_buf_p) = (yy_hold_char);
9717                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
9718                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9719                 }
9720
9721         YY_CURRENT_BUFFER_LVALUE = new_buffer;
9722         surf_parse__load_buffer_state( );
9723
9724         /* We don't actually know whether we did this switch during
9725          * EOF (surf_parse_wrap()) processing, but the only time this flag
9726          * is looked at is after surf_parse_wrap() is called, so it's safe
9727          * to go ahead and always set it.
9728          */
9729         (yy_did_buffer_switch_on_eof) = 1;
9730 }
9731
9732 static void surf_parse__load_buffer_state  (void)
9733 {
9734         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
9735         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
9736         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
9737         (yy_hold_char) = *(yy_c_buf_p);
9738 }
9739
9740 /** Allocate and initialize an input buffer state.
9741  * @param file A readable stream.
9742  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
9743  * 
9744  * @return the allocated buffer state.
9745  */
9746     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
9747 {
9748         YY_BUFFER_STATE b;
9749     
9750         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
9751         if ( ! b )
9752                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
9753
9754         b->yy_buf_size = (yy_size_t)size;
9755
9756         /* yy_ch_buf has to be 2 characters longer than the size given because
9757          * we need to put in 2 end-of-buffer characters.
9758          */
9759         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
9760         if ( ! b->yy_ch_buf )
9761                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
9762
9763         b->yy_is_our_buffer = 1;
9764
9765         surf_parse__init_buffer(b,file );
9766
9767         return b;
9768 }
9769
9770 /** Destroy the buffer.
9771  * @param b a buffer created with surf_parse__create_buffer()
9772  * 
9773  */
9774     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
9775 {
9776     
9777         if ( ! b )
9778                 return;
9779
9780         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
9781                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
9782
9783         if ( b->yy_is_our_buffer )
9784                 surf_parse_free((void *) b->yy_ch_buf  );
9785
9786         surf_parse_free((void *) b  );
9787 }
9788
9789 /* Initializes or reinitializes a buffer.
9790  * This function is sometimes called more than once on the same buffer,
9791  * such as during a surf_parse_restart() or at EOF.
9792  */
9793     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
9794
9795 {
9796         int oerrno = errno;
9797     
9798         surf_parse__flush_buffer(b );
9799
9800         b->yy_input_file = file;
9801         b->yy_fill_buffer = 1;
9802
9803     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
9804      * called from surf_parse_restart() or through yy_get_next_buffer.
9805      * In that case, we don't want to reset the lineno or column.
9806      */
9807     if (b != YY_CURRENT_BUFFER){
9808         b->yy_bs_lineno = 1;
9809         b->yy_bs_column = 0;
9810     }
9811
9812         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
9813     
9814         errno = oerrno;
9815 }
9816
9817 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
9818  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
9819  * 
9820  */
9821     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
9822 {
9823         if ( ! b )
9824                 return;
9825
9826         b->yy_n_chars = 0;
9827
9828         /* We always need two end-of-buffer characters.  The first causes
9829          * a transition to the end-of-buffer state.  The second causes
9830          * a jam in that state.
9831          */
9832         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
9833         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
9834
9835         b->yy_buf_pos = &b->yy_ch_buf[0];
9836
9837         b->yy_at_bol = 1;
9838         b->yy_buffer_status = YY_BUFFER_NEW;
9839
9840         if ( b == YY_CURRENT_BUFFER )
9841                 surf_parse__load_buffer_state( );
9842 }
9843
9844 /** Pushes the new state onto the stack. The new state becomes
9845  *  the current state. This function will allocate the stack
9846  *  if necessary.
9847  *  @param new_buffer The new state.
9848  *  
9849  */
9850 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
9851 {
9852         if (new_buffer == NULL)
9853                 return;
9854
9855         surf_parse_ensure_buffer_stack();
9856
9857         /* This block is copied from surf_parse__switch_to_buffer. */
9858         if ( YY_CURRENT_BUFFER )
9859                 {
9860                 /* Flush out information for old buffer. */
9861                 *(yy_c_buf_p) = (yy_hold_char);
9862                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
9863                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9864                 }
9865
9866         /* Only push if top exists. Otherwise, replace top. */
9867         if (YY_CURRENT_BUFFER)
9868                 (yy_buffer_stack_top)++;
9869         YY_CURRENT_BUFFER_LVALUE = new_buffer;
9870
9871         /* copied from surf_parse__switch_to_buffer. */
9872         surf_parse__load_buffer_state( );
9873         (yy_did_buffer_switch_on_eof) = 1;
9874 }
9875
9876 /** Removes and deletes the top of the stack, if present.
9877  *  The next element becomes the new top.
9878  *  
9879  */
9880 void surf_parse_pop_buffer_state (void)
9881 {
9882         if (!YY_CURRENT_BUFFER)
9883                 return;
9884
9885         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
9886         YY_CURRENT_BUFFER_LVALUE = NULL;
9887         if ((yy_buffer_stack_top) > 0)
9888                 --(yy_buffer_stack_top);
9889
9890         if (YY_CURRENT_BUFFER) {
9891                 surf_parse__load_buffer_state( );
9892                 (yy_did_buffer_switch_on_eof) = 1;
9893         }
9894 }
9895
9896 /* Allocates the stack if it does not exist.
9897  *  Guarantees space for at least one push.
9898  */
9899 static void surf_parse_ensure_buffer_stack (void)
9900 {
9901         yy_size_t num_to_alloc;
9902     
9903         if (!(yy_buffer_stack)) {
9904
9905                 /* First allocation is just for 2 elements, since we don't know if this
9906                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
9907                  * immediate realloc on the next call.
9908          */
9909                 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
9910                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
9911                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
9912                                                                 );
9913                 if ( ! (yy_buffer_stack) )
9914                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
9915                                                                   
9916                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
9917                                 
9918                 (yy_buffer_stack_max) = num_to_alloc;
9919                 (yy_buffer_stack_top) = 0;
9920                 return;
9921         }
9922
9923         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
9924
9925                 /* Increase the buffer to prepare for a possible push. */
9926                 yy_size_t grow_size = 8 /* arbitrary grow size */;
9927
9928                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
9929                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
9930                                                                 ((yy_buffer_stack),
9931                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
9932                                                                 );
9933                 if ( ! (yy_buffer_stack) )
9934                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
9935
9936                 /* zero only the new slots.*/
9937                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
9938                 (yy_buffer_stack_max) = num_to_alloc;
9939         }
9940 }
9941
9942 /** Setup the input buffer state to scan directly from a user-specified character buffer.
9943  * @param base the character buffer
9944  * @param size the size in bytes of the character buffer
9945  * 
9946  * @return the newly allocated buffer state object. 
9947  */
9948 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
9949 {
9950         YY_BUFFER_STATE b;
9951     
9952         if ( size < 2 ||
9953              base[size-2] != YY_END_OF_BUFFER_CHAR ||
9954              base[size-1] != YY_END_OF_BUFFER_CHAR )
9955                 /* They forgot to leave room for the EOB's. */
9956                 return 0;
9957
9958         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
9959         if ( ! b )
9960                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
9961
9962         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
9963         b->yy_buf_pos = b->yy_ch_buf = base;
9964         b->yy_is_our_buffer = 0;
9965         b->yy_input_file = 0;
9966         b->yy_n_chars = b->yy_buf_size;
9967         b->yy_is_interactive = 0;
9968         b->yy_at_bol = 1;
9969         b->yy_fill_buffer = 0;
9970         b->yy_buffer_status = YY_BUFFER_NEW;
9971
9972         surf_parse__switch_to_buffer(b  );
9973
9974         return b;
9975 }
9976
9977 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
9978  * scan from a @e copy of @a str.
9979  * @param yystr a NUL-terminated string to scan
9980  * 
9981  * @return the newly allocated buffer state object.
9982  * @note If you want to scan bytes that may contain NUL values, then use
9983  *       surf_parse__scan_bytes() instead.
9984  */
9985 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
9986 {
9987     
9988         return surf_parse__scan_bytes(yystr,strlen(yystr) );
9989 }
9990
9991 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
9992  * scan from a @e copy of @a bytes.
9993  * @param yybytes the byte buffer to scan
9994  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
9995  * 
9996  * @return the newly allocated buffer state object.
9997  */
9998 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
9999 {
10000         YY_BUFFER_STATE b;
10001         char *buf;
10002         yy_size_t n;
10003         yy_size_t i;
10004     
10005         /* Get memory for full buffer, including space for trailing EOB's. */
10006         n = _yybytes_len + 2;
10007         buf = (char *) surf_parse_alloc(n  );
10008         if ( ! buf )
10009                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
10010
10011         for ( i = 0; i < _yybytes_len; ++i )
10012                 buf[i] = yybytes[i];
10013
10014         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
10015
10016         b = surf_parse__scan_buffer(buf,n );
10017         if ( ! b )
10018                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
10019
10020         /* It's okay to grow etc. this buffer, and we should throw it
10021          * away when we're done.
10022          */
10023         b->yy_is_our_buffer = 1;
10024
10025         return b;
10026 }
10027
10028     static void yy_push_state (int  _new_state )
10029 {
10030         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
10031                 {
10032                 yy_size_t new_size;
10033
10034                 (yy_start_stack_depth) += YY_START_STACK_INCR;
10035                 new_size = (yy_start_stack_depth) * sizeof( int );
10036
10037                 if ( ! (yy_start_stack) )
10038                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
10039
10040                 else
10041                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
10042
10043                 if ( ! (yy_start_stack) )
10044                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
10045                 }
10046
10047         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
10048
10049         BEGIN(_new_state);
10050 }
10051
10052     static void yy_pop_state  (void)
10053 {
10054         if ( --(yy_start_stack_ptr) < 0 )
10055                 YY_FATAL_ERROR( "start-condition stack underflow" );
10056
10057         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
10058 }
10059
10060 #ifndef YY_EXIT_FAILURE
10061 #define YY_EXIT_FAILURE 2
10062 #endif
10063
10064 static void yy_fatal_error (yyconst char* msg )
10065 {
10066                         (void) fprintf( stderr, "%s\n", msg );
10067         exit( YY_EXIT_FAILURE );
10068 }
10069
10070 /* Redefine yyless() so it works in section 3 code. */
10071
10072 #undef yyless
10073 #define yyless(n) \
10074         do \
10075                 { \
10076                 /* Undo effects of setting up surf_parse_text. */ \
10077         int yyless_macro_arg = (n); \
10078         YY_LESS_LINENO(yyless_macro_arg);\
10079                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
10080                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
10081                 (yy_hold_char) = *(yy_c_buf_p); \
10082                 *(yy_c_buf_p) = '\0'; \
10083                 surf_parse_leng = yyless_macro_arg; \
10084                 } \
10085         while ( 0 )
10086
10087 /* Accessor  methods (get/set functions) to struct members. */
10088
10089 /** Get the current line number.
10090  * 
10091  */
10092 int surf_parse_get_lineno  (void)
10093 {
10094         
10095     return surf_parse_lineno;
10096 }
10097
10098 /** Get the input stream.
10099  * 
10100  */
10101 FILE *surf_parse_get_in  (void)
10102 {
10103         return surf_parse_in;
10104 }
10105
10106 /** Get the output stream.
10107  * 
10108  */
10109 FILE *surf_parse_get_out  (void)
10110 {
10111         return surf_parse_out;
10112 }
10113
10114 /** Get the length of the current token.
10115  * 
10116  */
10117 yy_size_t surf_parse_get_leng  (void)
10118 {
10119         return surf_parse_leng;
10120 }
10121
10122 /** Get the current token.
10123  * 
10124  */
10125
10126 char *surf_parse_get_text  (void)
10127 {
10128         return surf_parse_text;
10129 }
10130
10131 /** Set the current line number.
10132  * @param _line_number line number
10133  * 
10134  */
10135 void surf_parse_set_lineno (int  _line_number )
10136 {
10137     
10138     surf_parse_lineno = _line_number;
10139 }
10140
10141 /** Set the input stream. This does not discard the current
10142  * input buffer.
10143  * @param _in_str A readable stream.
10144  * 
10145  * @see surf_parse__switch_to_buffer
10146  */
10147 void surf_parse_set_in (FILE *  _in_str )
10148 {
10149         surf_parse_in = _in_str ;
10150 }
10151
10152 void surf_parse_set_out (FILE *  _out_str )
10153 {
10154         surf_parse_out = _out_str ;
10155 }
10156
10157 int surf_parse_get_debug  (void)
10158 {
10159         return surf_parse__flex_debug;
10160 }
10161
10162 void surf_parse_set_debug (int  _bdebug )
10163 {
10164         surf_parse__flex_debug = _bdebug ;
10165 }
10166
10167 static int yy_init_globals (void)
10168 {
10169         /* Initialization is the same as for the non-reentrant scanner.
10170      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
10171      */
10172
10173     /* We do not touch surf_parse_lineno unless the option is enabled. */
10174     surf_parse_lineno =  1;
10175     
10176     (yy_buffer_stack) = 0;
10177     (yy_buffer_stack_top) = 0;
10178     (yy_buffer_stack_max) = 0;
10179     (yy_c_buf_p) = (char *) 0;
10180     (yy_init) = 0;
10181     (yy_start) = 0;
10182
10183     (yy_start_stack_ptr) = 0;
10184     (yy_start_stack_depth) = 0;
10185     (yy_start_stack) =  NULL;
10186
10187 /* Defined in main.c */
10188 #ifdef YY_STDINIT
10189     surf_parse_in = stdin;
10190     surf_parse_out = stdout;
10191 #else
10192     surf_parse_in = (FILE *) 0;
10193     surf_parse_out = (FILE *) 0;
10194 #endif
10195
10196     /* For future reference: Set errno on error, since we are called by
10197      * surf_parse_lex_init()
10198      */
10199     return 0;
10200 }
10201
10202 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
10203 int surf_parse_lex_destroy  (void)
10204 {
10205     
10206     /* Pop the buffer stack, destroying each element. */
10207         while(YY_CURRENT_BUFFER){
10208                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
10209                 YY_CURRENT_BUFFER_LVALUE = NULL;
10210                 surf_parse_pop_buffer_state();
10211         }
10212
10213         /* Destroy the stack itself. */
10214         surf_parse_free((yy_buffer_stack) );
10215         (yy_buffer_stack) = NULL;
10216
10217     /* Destroy the start condition stack. */
10218         surf_parse_free((yy_start_stack)  );
10219         (yy_start_stack) = NULL;
10220
10221     /* Reset the globals. This is important in a non-reentrant scanner so the next time
10222      * surf_parse_lex() is called, initialization will occur. */
10223     yy_init_globals( );
10224
10225     return 0;
10226 }
10227
10228 /*
10229  * Internal utility routines.
10230  */
10231
10232 #ifndef yytext_ptr
10233 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
10234 {
10235                 
10236         int i;
10237         for ( i = 0; i < n; ++i )
10238                 s1[i] = s2[i];
10239 }
10240 #endif
10241
10242 #ifdef YY_NEED_STRLEN
10243 static int yy_flex_strlen (yyconst char * s )
10244 {
10245         int n;
10246         for ( n = 0; s[n]; ++n )
10247                 ;
10248
10249         return n;
10250 }
10251 #endif
10252
10253 void *surf_parse_alloc (yy_size_t  size )
10254 {
10255                         return (void *) malloc( size );
10256 }
10257
10258 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
10259 {
10260                 
10261         /* The cast to (char *) in the following accommodates both
10262          * implementations that use char* generic pointers, and those
10263          * that use void* generic pointers.  It works with the latter
10264          * because both ANSI C and C++ allow castless assignment from
10265          * any pointer type to void*, and deal with argument conversions
10266          * as though doing an assignment.
10267          */
10268         return (void *) realloc( (char *) ptr, size );
10269 }
10270
10271 void surf_parse_free (void * ptr )
10272 {
10273                         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
10274 }
10275
10276 #define YYTABLES_NAME "yytables"
10277
10278 /* Element context stack lookup. */
10279 int surfxml_element_context(int i)
10280 {
10281   return (0<i && i<yy_start_stack_depth
10282           ? yy_start_stack[yy_start_stack_ptr - i]
10283           : 0);
10284 }
10285
10286 #ifdef FLEX_DEBUG
10287 void print_yy_stack(char* fmt, ...)
10288 {
10289   int i = 0; va_list ap; va_start(ap, fmt);
10290   vfprintf(stderr, fmt, ap);
10291   if (surfxml_statenames) {
10292       for (i=1; i<yy_start_stack_ptr; i++) {
10293           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
10294       }
10295       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
10296   }
10297   va_end(ap);
10298 }
10299
10300 void print_surfxml_bufferstack()
10301 {
10302     int i;
10303     fputs("Buffer: ", stderr);
10304     for (i = 0; i < blimit; i++) {
10305        if ( surfxml_bufferstack[i] == '\377' ) break;
10306          putc(surfxml_bufferstack[i], stderr);
10307     }
10308     putc('\n', stderr);
10309 }
10310
10311 static void debug_enter(int state, const char* statename) {
10312   yy_push_state(state);
10313   if (surf_parse__flex_debug) {
10314        print_yy_stack("--ENTER(%s) : ",statename);
10315        print_surfxml_bufferstack();
10316   }
10317 }
10318
10319 static void debug_leave(void) {
10320     if (surf_parse__flex_debug) {
10321         print_yy_stack("--LEAVE : ");
10322         print_surfxml_bufferstack();
10323     }
10324   yy_pop_state();
10325 }
10326
10327 static void debug_set(int state, const char* statename) {
10328   BEGIN(state);
10329   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
10330 }
10331 #endif
10332
10333 static void cleanup(void)
10334 {
10335     if (surfxml_statenames) {
10336         free(surfxml_statenames);
10337         surfxml_statenames = NULL;
10338     }
10339     free(surfxml_bufferstack);
10340     surfxml_bufferstack = NULL;
10341
10342     free(indexstack);
10343     indexstack = NULL;
10344 }
10345
10346 static int fail(const char* fmt, ...)
10347 {
10348     int chars_left, used;
10349     va_list ap; va_start(ap, fmt);
10350 #ifdef FLEXML_yylineno
10351     used = sprintf(flexml_err_msg,
10352                    "Invalid XML (XML input line %d, state %d): ",
10353                    surf_parse_lineno, YY_START);
10354 #else
10355     used = sprintf(flexml_err_msg,
10356                    "Invalid XML (state %d): ",
10357                    YY_START);
10358 #endif
10359     chars_left = flexml_max_err_msg_size - used - 1;
10360     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
10361     va_end(ap);
10362
10363 #ifndef FLEXML_quiet_parser
10364     /* print directly to sdterr */
10365     fprintf(stderr, "%s\n", flexml_err_msg);
10366     flexml_err_msg[0] = '\0';
10367 #endif
10368
10369     cleanup();
10370
10371     return 1;
10372 }
10373