Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[DOC] Fixed even more errors.
[simgrid.git] / src / surf / simgrid_dtd.c
1
2 #line 3 "src/surf/simgrid_dtd.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define yy_create_buffer surf_parse__create_buffer
9 #define yy_delete_buffer surf_parse__delete_buffer
10 #define yy_flex_debug surf_parse__flex_debug
11 #define yy_init_buffer surf_parse__init_buffer
12 #define yy_flush_buffer surf_parse__flush_buffer
13 #define yy_load_buffer_state surf_parse__load_buffer_state
14 #define yy_switch_to_buffer surf_parse__switch_to_buffer
15 #define yyin surf_parse_in
16 #define yyleng surf_parse_leng
17 #define yylex surf_parse_lex
18 #define yylineno surf_parse_lineno
19 #define yyout surf_parse_out
20 #define yyrestart surf_parse_restart
21 #define yytext surf_parse_text
22 #define yywrap surf_parse_wrap
23 #define yyalloc surf_parse_alloc
24 #define yyrealloc surf_parse_realloc
25 #define yyfree surf_parse_free
26
27 #define FLEX_SCANNER
28 #define YY_FLEX_MAJOR_VERSION 2
29 #define YY_FLEX_MINOR_VERSION 5
30 #define YY_FLEX_SUBMINOR_VERSION 39
31 #if YY_FLEX_SUBMINOR_VERSION > 0
32 #define FLEX_BETA
33 #endif
34
35 /* First, we deal with  platform-specific or compiler-specific issues. */
36
37 /* begin standard C headers. */
38 #include <stdio.h>
39 #include <string.h>
40 #include <errno.h>
41 #include <stdlib.h>
42
43 /* end standard C headers. */
44
45 /* flex integer type definitions */
46
47 #ifndef FLEXINT_H
48 #define FLEXINT_H
49
50 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
51
52 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
53
54 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55  * if you want the limit (max/min) macros for int types. 
56  */
57 #ifndef __STDC_LIMIT_MACROS
58 #define __STDC_LIMIT_MACROS 1
59 #endif
60
61 #include <inttypes.h>
62 typedef int8_t flex_int8_t;
63 typedef uint8_t flex_uint8_t;
64 typedef int16_t flex_int16_t;
65 typedef uint16_t flex_uint16_t;
66 typedef int32_t flex_int32_t;
67 typedef uint32_t flex_uint32_t;
68 #else
69 typedef signed char flex_int8_t;
70 typedef short int flex_int16_t;
71 typedef int flex_int32_t;
72 typedef unsigned char flex_uint8_t; 
73 typedef unsigned short int flex_uint16_t;
74 typedef unsigned int flex_uint32_t;
75
76 /* Limits of integral types. */
77 #ifndef INT8_MIN
78 #define INT8_MIN               (-128)
79 #endif
80 #ifndef INT16_MIN
81 #define INT16_MIN              (-32767-1)
82 #endif
83 #ifndef INT32_MIN
84 #define INT32_MIN              (-2147483647-1)
85 #endif
86 #ifndef INT8_MAX
87 #define INT8_MAX               (127)
88 #endif
89 #ifndef INT16_MAX
90 #define INT16_MAX              (32767)
91 #endif
92 #ifndef INT32_MAX
93 #define INT32_MAX              (2147483647)
94 #endif
95 #ifndef UINT8_MAX
96 #define UINT8_MAX              (255U)
97 #endif
98 #ifndef UINT16_MAX
99 #define UINT16_MAX             (65535U)
100 #endif
101 #ifndef UINT32_MAX
102 #define UINT32_MAX             (4294967295U)
103 #endif
104
105 #endif /* ! C99 */
106
107 #endif /* ! FLEXINT_H */
108
109 #ifdef __cplusplus
110
111 /* The "const" storage-class-modifier is valid. */
112 #define YY_USE_CONST
113
114 #else   /* ! __cplusplus */
115
116 /* C99 requires __STDC__ to be defined as 1. */
117 #if defined (__STDC__)
118
119 #define YY_USE_CONST
120
121 #endif  /* defined (__STDC__) */
122 #endif  /* ! __cplusplus */
123
124 #ifdef YY_USE_CONST
125 #define yyconst const
126 #else
127 #define yyconst
128 #endif
129
130 /* Returned upon end-of-file. */
131 #define YY_NULL 0
132
133 /* Promotes a possibly negative, possibly signed char to an unsigned
134  * integer for use as an array index.  If the signed char is negative,
135  * we want to instead treat it as an 8-bit unsigned char, hence the
136  * double cast.
137  */
138 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
139
140 /* Enter a start condition.  This macro really ought to take a parameter,
141  * but we do it the disgusting crufty way forced on us by the ()-less
142  * definition of BEGIN.
143  */
144 #define BEGIN (yy_start) = 1 + 2 *
145
146 /* Translate the current start state into a value that can be later handed
147  * to BEGIN to return to the state.  The YYSTATE alias is for lex
148  * compatibility.
149  */
150 #define YY_START (((yy_start) - 1) / 2)
151 #define YYSTATE YY_START
152
153 /* Action number for EOF rule of a given start state. */
154 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
155
156 /* Special action meaning "start processing a new file". */
157 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
158
159 #define YY_END_OF_BUFFER_CHAR 0
160
161 /* Size of default input buffer. */
162 #ifndef YY_BUF_SIZE
163 #ifdef __ia64__
164 /* On IA-64, the buffer size is 16k, not 8k.
165  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
166  * Ditto for the __ia64__ case accordingly.
167  */
168 #define YY_BUF_SIZE 32768
169 #else
170 #define YY_BUF_SIZE 16384
171 #endif /* __ia64__ */
172 #endif
173
174 /* The state buf must be large enough to hold one state per character in the main buffer.
175  */
176 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
177
178 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
179 #define YY_TYPEDEF_YY_BUFFER_STATE
180 typedef struct yy_buffer_state *YY_BUFFER_STATE;
181 #endif
182
183 #ifndef YY_TYPEDEF_YY_SIZE_T
184 #define YY_TYPEDEF_YY_SIZE_T
185 typedef size_t yy_size_t;
186 #endif
187
188 extern yy_size_t surf_parse_leng;
189
190 extern FILE *surf_parse_in, *surf_parse_out;
191
192 #define EOB_ACT_CONTINUE_SCAN 0
193 #define EOB_ACT_END_OF_FILE 1
194 #define EOB_ACT_LAST_MATCH 2
195
196     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
197      *       access to the local variable yy_act. Since yyless() is a macro, it would break
198      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
199      *       One obvious solution it to make yy_act a global. I tried that, and saw
200      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
201      *       normally declared as a register variable-- so it is not worth it.
202      */
203     #define  YY_LESS_LINENO(n) \
204             do { \
205                 int yyl;\
206                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
207                     if ( surf_parse_text[yyl] == '\n' )\
208                         --surf_parse_lineno;\
209             }while(0)
210     #define YY_LINENO_REWIND_TO(dst) \
211             do {\
212                 const char *p;\
213                 for ( p = yy_cp-1; p >= (dst); --p)\
214                     if ( *p == '\n' )\
215                         --surf_parse_lineno;\
216             }while(0)
217     
218 /* Return all but the first "n" matched characters back to the input stream. */
219 #define yyless(n) \
220         do \
221                 { \
222                 /* Undo effects of setting up surf_parse_text. */ \
223         int yyless_macro_arg = (n); \
224         YY_LESS_LINENO(yyless_macro_arg);\
225                 *yy_cp = (yy_hold_char); \
226                 YY_RESTORE_YY_MORE_OFFSET \
227                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
228                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
229                 } \
230         while ( 0 )
231
232 #define unput(c) yyunput( c, (yytext_ptr)  )
233
234 #ifndef YY_STRUCT_YY_BUFFER_STATE
235 #define YY_STRUCT_YY_BUFFER_STATE
236 struct yy_buffer_state
237         {
238         FILE *yy_input_file;
239
240         char *yy_ch_buf;                /* input buffer */
241         char *yy_buf_pos;               /* current position in input buffer */
242
243         /* Size of input buffer in bytes, not including room for EOB
244          * characters.
245          */
246         yy_size_t yy_buf_size;
247
248         /* Number of characters read into yy_ch_buf, not including EOB
249          * characters.
250          */
251         yy_size_t yy_n_chars;
252
253         /* Whether we "own" the buffer - i.e., we know we created it,
254          * and can realloc() it to grow it, and should free() it to
255          * delete it.
256          */
257         int yy_is_our_buffer;
258
259         /* Whether this is an "interactive" input source; if so, and
260          * if we're using stdio for input, then we want to use getc()
261          * instead of fread(), to make sure we stop fetching input after
262          * each newline.
263          */
264         int yy_is_interactive;
265
266         /* Whether we're considered to be at the beginning of a line.
267          * If so, '^' rules will be active on the next match, otherwise
268          * not.
269          */
270         int yy_at_bol;
271
272     int yy_bs_lineno; /**< The line count. */
273     int yy_bs_column; /**< The column count. */
274     
275         /* Whether to try to fill the input buffer when we reach the
276          * end of it.
277          */
278         int yy_fill_buffer;
279
280         int yy_buffer_status;
281
282 #define YY_BUFFER_NEW 0
283 #define YY_BUFFER_NORMAL 1
284         /* When an EOF's been seen but there's still some text to process
285          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
286          * shouldn't try reading from the input source any more.  We might
287          * still have a bunch of tokens to match, though, because of
288          * possible backing-up.
289          *
290          * When we actually see the EOF, we change the status to "new"
291          * (via surf_parse_restart()), so that the user can continue scanning by
292          * just pointing surf_parse_in at a new input file.
293          */
294 #define YY_BUFFER_EOF_PENDING 2
295
296         };
297 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
298
299 /* Stack of input buffers. */
300 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
301 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
302 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
303
304 /* We provide macros for accessing buffer states in case in the
305  * future we want to put the buffer states in a more general
306  * "scanner state".
307  *
308  * Returns the top of the stack, or NULL.
309  */
310 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
311                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
312                           : NULL)
313
314 /* Same as previous macro, but useful when we know that the buffer stack is not
315  * NULL or when we need an lvalue. For internal use only.
316  */
317 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
318
319 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
320 static char yy_hold_char;
321 static yy_size_t yy_n_chars;            /* number of characters read into yy_ch_buf */
322 yy_size_t surf_parse_leng;
323
324 /* Points to current character in buffer. */
325 static char *yy_c_buf_p = (char *) 0;
326 static int yy_init = 0;         /* whether we need to initialize */
327 static int yy_start = 0;        /* start state number */
328
329 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
330  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
331  */
332 static int yy_did_buffer_switch_on_eof;
333
334 void surf_parse_restart (FILE *input_file  );
335 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
336 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
337 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
338 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
339 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
340 void surf_parse_pop_buffer_state (void );
341
342 static void surf_parse_ensure_buffer_stack (void );
343 static void surf_parse__load_buffer_state (void );
344 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
345
346 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
347
348 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
349 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
350 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,yy_size_t len  );
351
352 void *surf_parse_alloc (yy_size_t  );
353 void *surf_parse_realloc (void *,yy_size_t  );
354 void surf_parse_free (void *  );
355
356 #define yy_new_buffer surf_parse__create_buffer
357
358 #define yy_set_interactive(is_interactive) \
359         { \
360         if ( ! YY_CURRENT_BUFFER ){ \
361         surf_parse_ensure_buffer_stack (); \
362                 YY_CURRENT_BUFFER_LVALUE =    \
363             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
364         } \
365         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
366         }
367
368 #define yy_set_bol(at_bol) \
369         { \
370         if ( ! YY_CURRENT_BUFFER ){\
371         surf_parse_ensure_buffer_stack (); \
372                 YY_CURRENT_BUFFER_LVALUE =    \
373             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
374         } \
375         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
376         }
377
378 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
379
380 /* Begin user sect3 */
381
382 #define surf_parse_wrap() 1
383 #define YY_SKIP_YYWRAP
384
385 typedef unsigned char YY_CHAR;
386
387 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
388
389 typedef int yy_state_type;
390
391 extern int surf_parse_lineno;
392
393 int surf_parse_lineno = 1;
394
395 extern char *surf_parse_text;
396 #define yytext_ptr surf_parse_text
397
398 static yy_state_type yy_get_previous_state (void );
399 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
400 static int yy_get_next_buffer (void );
401 static void yy_fatal_error (yyconst char msg[]  );
402
403 /* Done after the current pattern has been matched and before the
404  * corresponding action - sets up surf_parse_text.
405  */
406 #define YY_DO_BEFORE_ACTION \
407         (yytext_ptr) = yy_bp; \
408         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
409         (yy_hold_char) = *yy_cp; \
410         *yy_cp = '\0'; \
411         (yy_c_buf_p) = yy_cp;
412
413 #define YY_NUM_RULES 595
414 #define YY_END_OF_BUFFER 596
415 /* This struct is not used in this scanner,
416    but its presence is necessary. */
417 struct yy_trans_info
418         {
419         flex_int32_t yy_verify;
420         flex_int32_t yy_nxt;
421         };
422 static yyconst flex_int16_t yy_accept[3466] =
423     {   0,
424         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
425         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
426         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
427         0,    0,    0,    0,    0,    0,    0,    0,    0,    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
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         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
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
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         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
450         0,    0,    0,    0,    0,    0,  596,  594,   15,   10,
451        10,   15,   15,  574,   10,  574,    5,    6,    5,    8,
452         9,    8,  590,  582,  583,  591,  588,  591,  589,  593,
453       582,  583,  593,  130,   10,  130,  130,  130,  128,  130,
454       130,  134,   10,  134,  134,  594,  134,  594,  594,  134,
455       453,   10,  453,  453,  453,  451,  453,  453,  453,  457,
456
457        10,  457,  594,  457,  532,   10,  532,  532,  532,  530,
458       532,  536,   10,  536,  384,   10,  384,  384,  384,  382,
459       384,  384,  384,  388,   10,  388,  500,   10,  500,  500,
460       500,  498,  500,  500,  500,  504,   10,  504,  504,  483,
461        10,  483,  483,  483,  481,  483,  483,  487,   10,  487,
462       487,  331,   10,  331,  331,  331,  329,  331,  331,  331,
463       331,  331,  331,  335,   10,  335,  308,   10,  308,  308,
464       308,  306,  308,  308,  308,  308,  308,  308,  308,  308,
465       308,  312,   10,  312,  312,  543,   10,  543,  543,  543,
466       541,  543,  547,   10,  547,  547,  234,   10,  234,  234,
467
468       234,  232,  234,  238,   10,  238,  204,   10,  204,  204,
469       204,  202,  204,  204,  204,  204,  204,  208,   10,  208,
470       594,  208,  249,   10,  249,  249,  249,  247,  249,  249,
471       249,  253,   10,  253,   33,   10,   33,   33,   33,   31,
472        33,   37,   10,   37,  594,   37,  415,   10,  415,  415,
473       415,  413,  415,  415,  415,  415,  419,   10,  419,  419,
474       470,   10,  470,  470,  470,  468,  470,  470,  474,   10,
475       474,  569,   10,  569,  569,  569,  567,  569,  569,  573,
476        10,  573,  162,   10,  162,  162,  162,  160,  162,  162,
477       166,   10,  166,  175,   10,  175,  175,  175,  173,  175,
478
479       175,  179,   10,  179,  356,   10,  356,  356,  356,  354,
480       356,  356,  356,  356,  356,  356,  356,  360,   10,  360,
481       594,   22,   10,   22,   22,   22,   20,   22,   26,   10,
482        26,   26,  594,   26,  594,   26,  521,   10,  521,  521,
483       521,  519,  521,  521,  521,  521,  521,  525,   10,  525,
484       594,  525,  556,   10,  556,  556,  556,  554,  556,  556,
485       560,   10,  560,   78,   10,   78,   78,   78,   76,   78,
486        78,   78,   78,   78,   82,   10,   82,  432,   10,  432,
487       432,  432,  430,  432,  432,  436,   10,  436,  436,  369,
488        10,  369,  369,  369,  367,  369,  369,  373,   10,  373,
489
490       223,   10,  223,  223,  223,  221,  223,  223,  223,  223,
491       227,   10,  227,  227,  149,   10,  149,  149,  149,  147,
492       149,  149,  149,  149,  153,   10,  153,  594,  153,   48,
493        10,   48,   48,   48,   46,   48,   48,   48,  591,  590,
494       101,   10,  101,  101,  101,   99,  101,  101,  101,  105,
495        10,  105,   10,    0,    2,    2,    0,    4,    7,  585,
496       584,    0,    0,    0,    0,    0,    0,  129,  131,  131,
497       131,    0,    0,    0,    0,    0,    0,    0,    0,    0,
498         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
499         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
500
501         0,    0,    0,  452,  454,  454,  454,  454,  454,    0,
502         0,  531,  533,  533,    0,  383,  385,  385,  385,  385,
503         0,  499,  501,  501,  501,  501,    0,  482,  484,  484,
504       484,    0,  330,  332,  332,  332,  332,  332,  332,  332,
505       332,    0,  307,  309,  309,  309,  309,  309,  309,  309,
506       309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
507         0,  542,  544,  544,    0,  233,  235,  235,    0,  203,
508       205,  205,  205,  205,  205,  205,  205,    0,    0,  248,
509       250,  250,  250,  250,    0,   32,   34,   34,    0,    0,
510       414,  416,  416,  416,  416,  416,  416,    0,  469,  471,
511
512       471,  471,    0,  568,  570,  570,  570,    0,  161,  163,
513       163,  163,    0,  174,  176,  176,  176,    0,  355,  357,
514       357,  357,  357,  357,  357,  357,  357,    0,    0,   21,
515        23,   23,    0,    0,    0,    0,    0,    0,  520,  522,
516       522,  522,  522,  522,  522,    0,    0,  555,  557,  557,
517       557,    0,   77,   79,   79,   79,   79,   79,   79,   79,
518        79,   79,    0,  431,  433,  433,  433,  433,    0,  368,
519       370,  370,  370,    0,  222,  224,  224,  224,  224,  224,
520         0,  148,  150,  150,  150,  150,  150,    0,    0,   47,
521        49,   49,   49,   49,    0,    0,    0,  100,  102,  102,
522
523       102,  102,    0,    0,    0,    0,    0,    3,    0,    0,
524         0,    0,    0,    0,    0,  592,    0,    0,  131,    0,
525         0,  107,    0,    0,    0,    0,    0,    0,    0,    0,
526         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
527         0,    0,  106,    0,    0,    0,    0,    0,    0,    0,
528         0,    0,    0,    0,    0,  106,    0,    0,  454,  454,
529       454,  454,    0,    0,    0,  533,    0,    0,  385,    0,
530         0,  385,    0,    0,  501,  501,  501,    0,    0,  484,
531       484,    0,    0,    0,    0,    0,    0,  332,  332,  332,
532       332,  332,    0,    0,  309,  309,    0,    0,  309,    0,
533
534         0,  309,  309,  309,  309,  309,  309,  309,  309,  309,
535       309,  309,    0,    0,    0,    0,    0,    0,  235,    0,
536         0,  205,  205,  205,    0,    0,  205,  205,  205,    0,
537         0,    0,    0,  250,    0,    0,    0,    0,    0,    0,
538        34,    0,    0,  107,  416,    0,    0,  416,  416,  416,
539         0,    0,  471,    0,    0,    0,    0,    0,    0,  570,
540         0,    0,  163,  163,    0,    0,  176,  176,    0,    0,
541       357,  357,  357,    0,    0,  357,  357,  357,    0,    0,
542         0,   23,    0,    0,    0,    0,    0,  522,  522,  522,
543       522,  522,    0,    0,    0,    0,    0,  557,    0,    0,
544
545        79,    0,    0,   79,   79,   79,   79,   79,   79,    0,
546         0,  433,  433,  433,    0,    0,  370,    0,    0,    0,
547         0,  224,  224,    0,    0,  224,    0,    0,  150,    0,
548         0,  150,  150,    0,    0,    0,   49,    0,    0,   49,
549         0,    0,    0,  587,  102,  102,  102,    0,    0,    0,
550        14,    1,    0,    0,  580,    0,    0,    0,  577,  576,
551         0,    0,  109,  108,  131,    0,    0,  133,    0,  107,
552         0,    0,    0,    0,    0,    0,    0,  229,    0,    0,
553         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
554         0,    0,  106,    0,    0,    0,    0,    0,  228,    0,
555
556         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
557       454,  454,    0,    0,  454,    0,    0,  456,    0,    0,
558       533,    0,    0,  535,    0,  385,    0,  377,  376,  385,
559         0,    0,  387,    0,    0,    0,  501,  501,    0,    0,
560         0,    0,  503,    0,    0,    0,    0,    0,    0,    0,
561       486,    0,    0,  326,  325,    0,  316,  315,    0,    0,
562       332,  332,  332,  332,    0,    0,  334,    0,  309,  309,
563       309,  309,    0,  269,  268,  309,    0,  257,  256,    0,
564         0,  309,  309,  309,  309,  309,  309,  309,  309,  309,
565       309,    0,    0,  311,    0,    0,  540,  539,    0,    0,
566
567       546,    0,  235,    0,    0,  237,    0,  205,  205,  205,
568         0,  183,  182,  205,  205,  205,    0,    0,  207,    0,
569         0,    0,  250,    0,  242,  241,    0,  244,  243,    0,
570         0,  252,    0,   34,    0,    0,   36,    0,  416,    0,
571       392,  391,  416,  416,  416,    0,    0,  418,    0,  471,
572         0,  461,  460,    0,    0,  473,    0,    0,  564,  563,
573       570,    0,    0,  572,    0,  163,  163,    0,    0,  165,
574         0,  176,  176,    0,    0,  178,    0,  357,  357,  357,
575       357,    0,  339,  338,    0,    0,  357,  357,    0,    0,
576       359,    0,    0,   23,    0,    0,   25,    0,    0,    0,
577
578         0,  522,  522,  522,  522,  522,    0,    0,  524,    0,
579         0,    0,  551,  550,  557,    0,    0,  559,    0,   79,
580         0,   55,   54,    0,    0,   79,    0,    0,   79,   79,
581        79,    0,    0,   81,    0,    0,    0,    0,    0,  433,
582         0,    0,  435,    0,  370,    0,  364,  363,    0,    0,
583       372,    0,  224,  224,    0,  212,  211,  224,    0,    0,
584       226,    0,  150,    0,  138,  137,  150,  150,    0,    0,
585       152,    0,    0,   49,    0,   41,   40,   49,    0,    0,
586         0,   51,    0,  102,  102,  102,    0,    0,  104,    0,
587         0,    0,  581,  575,    0,    0,  131,    0,  132,    0,
588
589         0,    0,    0,    0,    0,    0,  229,  181,    0,  390,
590         0,    0,    0,  337,    0,    0,  549,    0,    0,    0,
591         0,  548,    0,    0,    0,    0,    0,  228,  180,    0,
592       389,  336,    0,    0,    0,    0,    0,    0,  442,  441,
593       454,  454,    0,  440,  439,  454,    0,  389,  533,    0,
594       385,  385,    0,    0,  493,  492,  501,  501,    0,  491,
595       490,    0,    0,  480,  479,    0,  478,  477,    0,    0,
596       328,  327,  332,  332,  332,  332,    0,  309,  309,  309,
597       309,    0,    0,    0,  271,  270,  309,  309,  309,  309,
598       309,  309,  309,  309,  309,  309,  309,    0,    0,    0,
599
600         0,    0,  205,  205,    0,    0,  205,  205,  205,    0,
601         0,    0,    0,    0,    0,    0,    0,    0,  416,  416,
602       416,  416,    0,  471,    0,  570,    0,    0,    0,  163,
603         0,    0,    0,  176,    0,  357,  357,  357,  357,    0,
604       347,  346,  357,  357,    0,    0,   23,    0,    0,    0,
605         0,  522,    0,    0,  522,  522,  522,    0,    0,  557,
606         0,   79,    0,   59,   58,    0,    0,    0,   57,   56,
607        79,    0,    0,   79,    0,    0,  425,  424,    0,  423,
608       422,  433,    0,  370,    0,  224,  224,  224,    0,  150,
609       150,    0,    0,    0,    0,    0,    0,   49,    0,    0,
610
611       102,    0,    0,  102,    0,    0,    0,    0,   12,    0,
612       578,  579,  131,    0,    0,    0,    0,    0,    0,    0,
613       181,    0,    0,  390,    0,    0,  154,    0,  337,    0,
614         0,  549,    0,  421,    0,   39,  548,    0,    0,    0,
615         0,    0,  180,    0,    0,  389,  336,  420,    0,   38,
616       421,  420,  454,  454,  454,    0,    0,    0,    0,    0,
617       385,  385,    0,  501,  501,    0,    0,    0,    0,  332,
618       332,  332,    0,  309,    0,    0,  309,  309,    0,  267,
619       266,  309,  309,    0,    0,  309,  309,  309,  309,  309,
620       309,  309,  309,    0,    0,    0,  231,  230,    0,  236,
621
622       205,  205,    0,  187,  186,    0,    0,  205,    0,    0,
623       205,    0,  155,    0,    0,  246,  245,    0,    0,   30,
624        29,    0,  416,  416,  416,    0,    0,  416,    0,  471,
625         0,    0,    0,    0,    0,  159,  158,  163,    0,    0,
626       172,  171,  176,    0,  357,    0,    0,  357,  357,    0,
627         0,  357,    0,    0,   23,    0,    0,    0,    0,  522,
628         0,  508,  507,  522,  522,  522,    0,    0,    0,    0,
629         0,   79,    0,   61,   60,   79,    0,   65,   64,   79,
630         0,  433,    0,  370,    0,  224,  224,  224,    0,  150,
631         0,    0,    0,  142,  141,    0,    0,    0,   43,   42,
632
633        49,    0,    0,  102,    0,    0,    0,    0,    0,    0,
634         0,    0,    0,   11,  131,    0,    0,    0,    0,    0,
635         0,  537,    0,    0,    0,    0,  154,    0,    0,    0,
636        52,  421,  362,    0,   39,    0,    0,    0,    0,    0,
637         0,    0,    0,  420,  361,    0,   38,    0,    0,    0,
638         0,    0,  454,    0,    0,    0,  529,  528,    0,  385,
639       385,    0,    0,    0,    0,    0,    0,    0,    0,  324,
640       323,    0,    0,  332,    0,    0,    0,  309,    0,  287,
641       286,    0,    0,  309,  309,  309,    0,  265,  264,    0,
642         0,  309,  309,  309,  309,    0,    0,  309,  309,    0,
643
644         0,  205,  205,    0,  185,  184,    0,    0,    0,    0,
645         0,  205,    0,  206,  155,    0,    0,    0,  416,  416,
646       416,    0,    0,    0,  416,    0,  417,  471,    0,    0,
647       566,  565,    0,  163,    0,    0,    0,    0,  357,    0,
648       343,  342,    0,    0,  357,    0,  341,  340,  357,    0,
649       358,    0,   23,    0,  538,    0,   53,  522,  522,  522,
650       522,    0,    0,    0,  553,  552,    0,  558,   79,   79,
651        79,    0,  433,    0,  370,    0,    0,    0,  224,    0,
652         0,    0,  150,    0,  140,  139,    0,    0,   49,    0,
653         0,  102,    0,    0,    0,    0,    0,    0,    0,    0,
654
655         0,   96,   95,    0,    0,    0,    0,    0,    0,  438,
656         0,    0,    0,    0,  314,  255,  537,    0,   28,    0,
657         0,    0,    0,  505,   52,  362,  210,    0,  437,    0,
658         0,    0,  313,  254,    0,   27,  361,  209,    0,    0,
659       446,  445,    0,  444,  443,  454,    0,    0,    0,  385,
660         0,    0,    0,    0,  497,  496,    0,  495,  494,    0,
661         0,    0,  318,  317,    0,    0,    0,  320,  319,    0,
662       309,    0,  289,  288,  309,  309,  309,    0,  259,  258,
663         0,    0,  309,  309,  309,    0,  261,  260,  309,  309,
664         0,    0,  205,  205,    0,  201,  200,    0,    0,  205,
665
666         0,    0,    0,  416,    0,    0,  416,  416,    0,    0,
667       416,  471,    0,    0,  163,    0,  164,    0,  170,  169,
668         0,  357,    0,  345,  344,  357,  357,    0,    0,    0,
669         0,  538,  506,   53,  522,  522,  522,  522,    0,    0,
670        79,    0,    0,   79,    0,  433,    0,  434,  370,    0,
671         0,  220,  219,    0,    0,  224,    0,  214,  213,    0,
672         0,    0,  150,    0,    0,   49,    0,    0,   50,    0,
673         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
674         0,    0,    0,    0,    0,    0,    0,    0,  438,  526,
675       375,    0,    0,  314,  255,    0,   28,  458,    0,  167,
676
677        16,  505,  210,    0,    0,  437,  374,    0,    0,  313,
678       254,    0,   27,  209,    0,    0,  454,    0,  459,    0,
679       385,    0,  381,  380,    0,    0,    0,    0,  322,  321,
680         0,  309,  309,  309,  309,    0,  263,  262,  309,  309,
681       309,  309,    0,    0,    0,    0,  545,  205,  205,    0,
682         0,    0,    0,  205,  168,    0,    0,  416,    0,  398,
683       397,  416,  416,    0,    0,    0,    0,  416,  471,    0,
684         0,  163,    0,  357,  357,  357,   17,    0,   19,   18,
685         0,  506,    0,    0,  522,  522,  522,    0,  527,   79,
686         0,   67,   66,   79,    0,   80,  433,  370,    0,  371,
687
688         0,  216,  215,  224,    0,    0,  144,  143,  150,    0,
689         0,   49,  586,    0,   98,   97,    0,    0,    0,    0,
690         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
691         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
692       526,  375,    0,    0,  240,  458,    0,  167,   16,    0,
693         0,  374,    0,    0,  239,    0,    0,  454,    0,  455,
694       459,    0,    0,    0,    0,    0,    0,    0,  333,  309,
695       309,  309,  309,  309,    0,    0,  309,  309,  309,    0,
696         0,    0,    0,  310,  205,  205,    0,  193,    0,  192,
697       205,  168,    0,    0,   35,    0,    0,  416,  416,  416,
698
699         0,  402,    0,  401,  416,    0,    0,    0,    0,    0,
700         0,    0,  357,  357,  357,   17,    0,    0,  510,  509,
701         0,    0,  522,  522,    0,  523,  527,    0,    0,   79,
702       433,  370,  224,    0,  225,  150,    0,    0,   49,    0,
703         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
704         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
705         0,    0,    0,    0,    0,    0,    0,  240,  561,    0,
706         0,    0,    0,  239,    0,    0,  454,    0,  534,    0,
707       379,  378,    0,  386,    0,    0,  309,  309,  309,  309,
708       309,    0,  299,  298,  309,    0,    0,  309,    0,    0,
709
710         0,    0,  205,  205,  195,  194,    0,    0,    0,    0,
711       394,  393,  416,  416,  416,  404,  403,    0,    0,    0,
712         0,    0,    0,  472,    0,    0,  157,  156,    0,  177,
713       357,  357,    0,    0,    0,   24,    0,  514,  513,    0,
714         0,    0,    0,    0,    0,    0,   79,  433,  370,  224,
715       150,    0,  562,   49,    0,    0,    0,    0,    0,    0,
716         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
717         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
718         0,  476,  561,    0,    0,    0,  475,    0,    0,    0,
719         0,    0,    0,  309,  309,  309,    0,    0,  309,  309,
720
721         0,  297,  296,  309,    0,    0,    0,    0,    0,    0,
722       205,    0,    0,    0,  197,  196,    0,  251,  416,  416,
723       416,    0,  406,  405,    0,    0,    0,    0,    0,    0,
724         0,  357,    0,    0,    0,  353,  352,    0,    0,    0,
725         0,  512,  511,    0,    0,    0,    0,    0,    0,   79,
726         0,    0,    0,    0,  224,  150,    0,  562,    0,    0,
727         0,    0,    0,    0,   88,    0,    0,    0,    0,   87,
728         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
729         0,    0,    0,    0,    0,    0,    0,  476,  136,    0,
730         0,  475,  135,    0,    0,    0,    0,    0,    0,  309,
731
732       309,    0,    0,    0,  303,  302,    0,    0,  309,  309,
733         0,    0,    0,    0,    0,    0,    0,    0,  205,    0,
734       199,  198,  416,    0,    0,  416,    0,    0,    0,    0,
735         0,    0,    0,  571,  357,    0,  349,  348,    0,    0,
736         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
737        79,    0,    0,    0,    0,  366,  365,    0,    0,    0,
738         0,    0,    0,   45,   44,    0,    0,    0,    0,    0,
739         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
740         0,  111,  119,    0,    0,    0,    0,  110,  118,    0,
741       489,  136,   84,  488,  135,   83,    0,    0,    0,    0,
742
743         0,    0,  485,  309,  309,    0,  301,  300,    0,  305,
744       304,  309,  309,    0,    0,    0,    0,    0,    0,    0,
745       189,  188,  205,  416,    0,  400,  399,  416,    0,    0,
746       463,    0,    0,  462,  357,    0,    0,    0,    0,    0,
747         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
748         0,    0,    0,    0,  218,  217,    0,  146,  145,    0,
749         0,    0,   94,    0,    0,    0,   93,    0,    0,    0,
750         0,    0,    0,    0,    0,    0,    0,  113,    0,    0,
751         0,  112,    0,  489,   84,  488,   83,    0,    0,    0,
752         0,    0,  309,  309,    0,    0,  309,    0,  279,    0,
753
754         0,  278,    0,  205,    0,    0,    0,    0,    0,    0,
755         0,    0,  357,    0,    0,    0,    0,    0,    0,    0,
756         0,    0,    0,    0,    0,    0,   63,   62,    0,    0,
757         0,    0,    0,  151,    0,    0,    0,    0,    0,    0,
758         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
759         0,    0,    0,  450,    0,  449,    0,    0,  502,  309,
760       309,    0,    0,    0,    0,    0,    0,  281,    0,  280,
761       205,    0,  396,  395,    0,    0,    0,  465,  467,  464,
762       466,  357,  516,    0,  515,    0,    0,   75,   71,    0,
763         0,   74,   70,    0,  429,    0,  428,    0,   92,    0,
764
765         0,   91,    0,    0,    0,  103,    0,    0,    0,   12,
766         0,   12,    0,  123,    0,    0,  121,  122,    0,    0,
767       120,  448,  447,  309,  309,    0,    0,    0,    0,    0,
768       285,  284,    0,    0,  205,    0,    0,    0,    0,  357,
769         0,    0,    0,    0,    0,    0,  427,  426,   86,   90,
770        85,   89,    0,    0,    0,    0,    0,    0,    0,  115,
771         0,    0,    0,  114,    0,    0,    0,    0,    0,    0,
772         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
773         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
774         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
775
776         0,    0,  295,  294,    0,    0,    0,    0,    0,    0,
777         0,    0,    0,  283,  282,    0,  191,  190,    0,    0,
778         0,    0,    0,    0,    0,  351,  350,    0,    0,   69,
779         0,   68,    0,    0,   11,    0,    0,    0,    0,    0,
780         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
781         0,    0,    0,    0,    0,    0,    0,  518,  517,    0,
782         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
783         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
784         0,    0,    0,    0,   73,   72,    0,    0,    0,    0,
785         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
786
787         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
788         0,  125,  117,    0,  124,  116,    0,    0,    0,    0,
789         0,    0,  273,    0,    0,  272,    0,    0,  408,    0,
790         0,  407,    0,    0,    0,    0,    0,    0,    0,  277,
791         0,  276,    0,  410,    0,  409,    0,    0,    0,    0,
792         0,    0,    0,    0,    0,    0,    0,    0,    0,  127,
793       126,    0,  291,    0,  290,    0,    0,    0,    0,    0,
794         0,  293,  292,  275,  274,  412,  411,    0,    0,    0,
795         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
796         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
797
798         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
799         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
800         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
801         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
802         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
803         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
804         0,    0,    0,   13,    0
805     } ;
806
807 static yyconst flex_int32_t yy_ec[256] =
808     {   0,
809         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
810         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
811         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
812         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
813         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
814        13,   14,   13,   13,   13,   15,   13,   16,   17,   18,
815        19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
816        28,   29,   30,   31,   32,   33,   34,   35,   36,   37,
817        31,   38,   39,   40,   41,   42,   43,   44,   45,   31,
818        46,    1,   47,    1,   48,    1,   49,   50,   51,   52,
819
820        53,   54,   55,   56,   57,   58,   59,   60,   61,   62,
821        63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
822        73,   74,    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,    1,    1,    1,    1,    1,
827         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
828         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
829         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
830
831         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
832         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
833         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
834         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
835         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
836         1,    1,    1,    1,    1
837     } ;
838
839 static yyconst flex_int32_t yy_meta[75] =
840     {   0,
841         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
842         3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
843         1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
844         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
845         5,    5,    5,    5,    5,    1,    1,    5,    9,    9,
846         9,    9,    9,    9,    5,    5,    5,    5,    5,    5,
847         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
848         5,    5,    5,    5
849     } ;
850
851 static yyconst flex_int16_t yy_base[3973] =
852     {   0,
853         0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
854        14,   17,   33,   36,   49,   55,   45,   61,  108,  174,
855        66,   72,   75,   78,   83,  128,  131,  134,  138,  141,
856       194,  197,  200,  204,  207,  224,  230,  233,  241,  250,
857       268,  335,  288,  291,  294,  298,  301,  355,  358,  361,
858       402,  472,  365,  368,  542,  602,  422,  425,  662,  729,
859       428,  432,  435,  452,  492,  495,  498,  502,  796,  863,
860       505,  522,  562,  565,  568,  572,  575,  622,  930,  997,
861       625,  628, 1064,    0,  632,  635,  682,  685,  688,  692,
862       695,  749, 1138, 1195,  752,  755,  759,  762,  816,  819,
863
864       822,  826, 1252, 1314,  829,  883, 1376, 1443,  886,  889,
865       893,  896,  950,  953,  956,  960, 1510, 1579,  963, 1017,
866      1648, 1702, 1020, 1023, 1027, 1030, 1158, 1161, 1164, 1168,
867      1756, 1823, 1171, 1215, 1218, 1221, 1225, 1228, 1272, 1275,
868      1890, 1947, 1278, 1282, 2004, 2074, 1285, 1334, 2144, 2211,
869      1337, 1340, 2278, 2346, 1344, 1347, 2414, 2481, 1396, 1399,
870      1402, 1406, 2548, 2618, 1463, 1466, 1469, 1473, 1530, 1533,
871      1536, 1540, 1543, 1599, 1602, 1605, 1609, 1612, 1668, 1671,
872      1674, 1678, 1681, 1722, 2688, 2755, 1725, 1728, 1732, 1735,
873      1776, 1779, 1782, 1786, 2822, 2892, 1789, 1843, 2962, 3029,
874
875      1846, 1849, 3096, 3163, 1853, 1856, 1910, 1913, 1916, 1920,
876      1923, 1967, 3230, 3287, 1970, 1973, 3344, 3412, 1977, 1980,
877      2024, 2027, 2030, 2034, 2037, 2054, 3480, 3547, 2094, 2097,
878      2100, 2104, 2107, 2124, 2164, 2167, 3614, 3678, 2180, 2189,
879      3742, 3810, 2171, 2176,    0,    0, 9402,12512,12512,   95,
880       100,   29,   41,12512,  103,   51,12512,12512, 9391,12512,
881     12512, 9376,12512, 9391, 9391,  164,12512,12512,12512,12512,
882      9385, 9385, 9340,12512,  158, 9362,    0,  142,12512, 9329,
883      9317,12512,  164, 3874, 9311, 3938, 2183, 1362, 9362,   31,
884     12512,  253, 9353,    0,  143,12512, 9301, 9296,   84,12512,
885
886       258,  253,  109,  141,12512,  322, 9346,    0,  209,12512,
887      9312,12512,  325,  372,12512,  328, 9340,    0,  218,12512,
888      9310, 9302, 9304,12512,  392,  380,12512,  395, 9332,    0,
889       242,12512, 9280, 9275, 9279,12512,  455,  451,  246,12512,
890       458, 9320,    0,  245,12512, 9272, 9272,12512,  462,  457,
891       287,12512,  525, 9313,    0,  313,12512, 9261, 9279, 9277,
892        25, 9276, 9255,12512,  528,  579,12512,  531, 9299,    0,
893       370,12512, 9248,  101, 9254, 9260,  317,  175,  258,  526,
894      9248,12512,  534, 9298,  377,12512,  594, 9285,    0,  446,
895     12512, 9252,12512,  652, 9291,  388,12512,  716, 9278,    0,
896
897       580,12512, 9248,12512,  719,  639,12512,  722, 9276,    0,
898       636,12512, 9221, 9227, 9237,  638, 9216,12512,  783,  272,
899      9222,  569,12512,  786, 9262,    0,  637,12512, 9214, 9224,
900      9211,12512,  789,  833,12512,  847, 9250,    0,  640,12512,
901      9212,12512,  853, 2188, 9256,  681,12512,  856, 9243,    0,
902       706,12512, 9213, 9209, 9207,   15,12512,  914, 9243,  704,
903     12512,  917, 9234,    0,  707,12512, 9192, 9196,12512,  920,
904       841,12512,  923, 9227,    0,  773,12512, 9190, 9192,12512,
905       980,  967,12512,  989, 9220,    0,  774,12512, 9186, 9166,
906     12512, 1047, 1034,12512, 1056, 9213,    0,  831,12512, 9179,
907
908      9154,12512, 1188, 1289,12512, 1245, 9206,    0,  907,12512,
909      9151, 9149, 9156, 8586, 8588, 8572, 8566,12512, 1302, 1290,
910       964,12512, 1305, 8613,    0,  908,12512, 8579,12512, 1364,
911      1429,  748, 1305,  771, 8567,  815,12512, 1432, 8610,    0,
912       965,12512, 8560, 8564, 8569, 8562, 8548,12512, 1435,   11,
913      8566,  882,12512, 1494, 8593,    0,  968,12512, 8553, 8554,
914     12512, 1499, 1352,12512, 1502, 8582,    0, 1031,12512, 8547,
915      8543, 1358, 8545,   71,12512, 1561, 1547,12512, 1567, 8572,
916         0, 1032,12512, 8519, 1114,12512, 1570, 1419,  949,12512,
917      1573, 8564,    0, 1035,12512, 8517, 8526,12512, 1630, 1616,
918
919     12512, 1636, 8557,    0, 1172,12512, 8499, 8493, 8503, 8472,
920     12512, 1639, 8532, 1171,12512, 1642, 8522,    0, 1173,12512,
921      8469, 8473, 8461, 8465,12512, 1806, 1176, 8460, 1228,12512,
922      1815, 8484,    0, 1229,12512, 8444, 8447, 8442, 1793, 8445,
923     12512, 1818, 8471,    0, 1292,12512, 8423, 8425, 8414,12512,
924      1873, 1860, 1882,  239, 8403,12512, 8464, 8452,12512,12512,
925     12512, 1874,  247, 8395, 8394, 8389, 8425,12512,    0, 2240,
926      8368, 8414, 8395, 8362,  369,  384, 8363, 8362, 8354, 8354,
927       839, 1185,  524, 8331, 8332, 1500, 8352,  439, 1369, 8326,
928      8325, 8325, 8328, 1569, 1296, 8309, 8310, 8335,  629, 1879,
929
930      1425, 1195, 1436,12512,    0, 8297, 8316, 8311, 8299, 8318,
931      8282,12512,    0, 8277, 8283,12512,    0, 8268, 2251, 8261,
932      8277,12512,    0, 8245, 8246, 8241, 8241,12512,    0, 8221,
933      8227, 8217,12512,    0, 2258, 2298, 8198, 8193, 8206, 8206,
934      8201, 8202,12512,    0, 8203, 8202, 2301, 8182, 2304, 8179,
935      8184, 8168, 8159, 8175, 8171, 8153, 8166, 8165, 8158, 8147,
936      8158,12512,    0, 2307, 8146,12512,    0, 8135, 8139,12512,
937         0, 8144,  405, 2310, 8112, 8114, 8131, 8116, 1415,12512,
938         0, 8098, 2366, 2369, 8108,12512,    0, 8102, 8104, 8120,
939     12512,    0, 8089, 2372, 8082, 8071, 8069, 8054,12512,    0,
940
941      8043, 2375, 8041,12512,    0, 2378, 8040, 8029,12512,    0,
942      8028, 8016, 8017,12512,    0, 8015, 8004, 8004,12512,    0,
943      8011, 8011, 7990, 2434, 7980, 7976, 7988, 7970, 7965,12512,
944         0, 7957, 7954, 1630, 1936, 1492, 1638, 1937,12512,    0,
945      7955, 7940, 7946, 7956, 7946, 7923, 7919,12512,    0, 2437,
946      7913, 7904,12512,    0, 7905, 2440, 7893, 7898, 7884, 7892,
947      7889, 7889, 7873,12512,    0, 7857, 7873, 7861, 7855,12512,
948         0, 7841, 2443, 7837,12512,    0, 7833, 7838, 2447, 7834,
949      7826,12512,    0, 7830, 2501, 7834, 7811, 7816, 1678,12512,
950         0, 7812, 2504, 7805,  493, 7801, 7844,12512,    0, 7810,
951
952      7799, 7807, 7781, 7827, 7836, 1334, 7783,12512, 2049,    0,
953      7769, 7768, 7813, 7811, 7763,12512, 2507, 2130, 7757, 2513,
954      2568, 2199, 7768, 7761, 7747, 7759, 7735, 7740, 7732, 7732,
955      7745, 7732,  489, 7722, 7728, 7731, 7715, 7708, 7699, 7704,
956      7712, 7694, 2264, 7704, 7681, 7693, 7672, 7667, 7668, 7682,
957      7666, 7670, 7636, 7641, 7653, 2272, 7632, 7630, 2510, 2582,
958      2571, 2579, 2576, 2639, 7636, 7612, 2589, 2648, 7628, 2642,
959      2330, 7625, 2651, 2728, 2654, 2719, 2708, 2713, 2716, 2722,
960      2776, 2779, 2788, 2794, 2396, 2801, 2466, 2843, 2855, 2861,
961      2868, 2924, 2846, 2938, 7616, 1993, 2914, 2533, 7619, 2917,
962
963      2602, 2927, 7613, 7601, 7611, 7608, 7603, 7591, 7586, 7576,
964      7589, 7578, 2982, 2991, 2986, 2673, 2994, 3057, 7580, 3050,
965      3054, 7575, 7564, 7576, 2997, 2879, 7574, 7577, 7552, 3060,
966      3063, 1323, 7544, 7549, 3069, 2948, 3119, 3018, 3125, 3129,
967      7556, 3132, 3137, 2340, 7552, 3183, 3152, 7550, 7535, 7521,
968      3186, 3201, 7534, 3192, 3210, 3250, 3253, 3259, 3220, 7513,
969      3262, 3265, 7528, 7513, 3309, 3312, 7518, 7517, 3315, 3319,
970      7507,   37, 7496, 3322, 3364, 3375, 7508, 7490, 3378, 3385,
971      7508, 7488, 3432, 3442, 7492, 7489, 7479, 7489, 7470, 7472,
972      7475, 7457, 3437, 3445, 7467, 3381, 3400, 7442, 3451, 3503,
973
974      7454, 3506, 3464, 3510, 7443, 3513, 7435, 7439, 7441, 3516,
975      3581, 3568, 3571, 3576, 3636, 3639, 7412, 3643, 3536, 3646,
976      3649, 7428, 7399, 3701, 3603, 7396, 3706, 3711, 7380, 3714,
977      3661, 7385, 7384, 3719, 3764, 1390, 7382, 3767, 3771, 7377,
978      7402, 3779, 3788,12512, 7356, 7364, 7354, 3831, 3835, 7382,
979     12512,12512, 1727, 7323,12512, 7364, 7359, 7308,12512,12512,
980      7302, 3794,12512,12512, 7312, 3838, 3841,12512, 3844, 2065,
981      7301, 7294, 7298, 7307, 7297, 7276, 7286, 2407, 7266, 7273,
982      7272, 7276, 7266, 7260, 7255, 7252,  718, 7250, 7233, 7233,
983      7240, 1691, 2610, 7226, 7229, 7237, 7226, 7193, 2613, 7190,
984
985      7196, 7195, 7185, 7176, 7164, 7165, 7147, 7145, 3863, 3868,
986      7127, 7127, 3881, 3885, 7131, 3895, 3900,12512, 3906, 7123,
987      7128, 3942, 3945,12512, 3948, 7108, 3910,12512,12512, 7109,
988      3951, 3954,12512, 3976, 3903, 4005, 7103, 7102, 3973, 4013,
989      3980, 4021,12512, 4026, 4029, 4033, 4041, 4047, 4055, 4059,
990     12512, 4062, 4065,12512,12512, 4074,12512,12512, 4082, 4085,
991      7100, 7108, 7111, 7103, 4093, 4096,12512, 4100, 7092, 7075,
992      7090, 7078, 4103,12512,12512, 4115, 4119,12512,12512, 4127,
993      4133, 7065, 7066, 7049, 7049, 7054, 7046, 7040, 7036, 7031,
994       110, 4141, 4145,12512, 4149, 4153,12512,12512, 4164, 4168,
995
996     12512, 4171, 4174, 4177, 4183,12512, 4192, 7022, 7026, 4196,
997      4202,12512,12512, 7011, 6993, 7007, 4217, 4220,12512, 4223,
998      6993, 6990, 4226, 4232,12512,12512, 4244,12512,12512, 4252,
999      4255,12512, 4260, 4263, 4266, 4274,12512, 4281, 6980, 4289,
1000     12512,12512, 6988, 6990, 6992, 4285, 4300,12512, 4304, 6993,
1001      4307,12512,12512, 4315, 4319,12512, 4326, 4334,12512,12512,
1002      6989, 4345, 4348,12512, 4351, 4354, 4357, 4360, 4375,12512,
1003      4379, 4382, 4388, 4394, 4406,12512, 4409, 6981, 6962, 6949,
1004      6965, 4413,12512,12512, 4421, 4428, 6923, 6915, 4439, 4442,
1005     12512, 4447, 6896, 6905, 4450, 4453,12512, 4461, 6900, 1748,
1006
1007      6897, 6878, 4472, 6885, 6878, 6804, 4476, 4481,12512, 4484,
1008      6802, 4503,12512,12512, 6804, 4491, 4495,12512, 4514, 6755,
1009      4517,12512,12512, 4525, 4529, 4537, 4546, 4549, 6754, 4557,
1010      6743, 4560, 4564,12512, 4567, 4570, 4579, 4588, 4591, 6740,
1011      4599, 4602,12512, 4606, 6736, 4609,12512,12512, 4621, 4628,
1012     12512, 4631, 6736, 6678, 4634,12512,12512, 6642, 4642, 4650,
1013     12512, 4653, 6614, 4657,12512,12512, 6585, 4665, 4674, 4677,
1014     12512, 4683, 6586, 4686, 4689,12512,12512, 4704, 6595, 4707,
1015      4710,12512, 4715, 6564, 4718, 6561, 4722, 4729,12512, 4736,
1016       821, 4741,12512,12512, 6572, 6506, 6460, 4748,12512, 6253,
1017
1018      6255, 6265, 6174, 6122, 6093, 6082, 2681, 2874,   20, 2887,
1019       130,  148,  151, 2750,  192,  214, 2813,  259,  325,  339,
1020       392, 2849,  445,  472,  551,  585,  636, 2852, 3089,  638,
1021      3473, 2957,  662,  722,  719,  721,  786, 4751,12512,12512,
1022       835,  854, 4767,12512,12512,  840, 4775, 3671, 4778, 4784,
1023       918,  944, 4787, 4790,12512,12512,  974, 1011, 4799,12512,
1024     12512, 4807, 4810,12512,12512, 4819,12512,12512, 4827, 4830,
1025     12512,12512, 4838, 4841, 4846, 4859, 4864, 1105, 4867, 1101,
1026      1132, 4870, 4879, 4888,12512,12512, 1158, 1177, 4896, 1211,
1027      1242, 1246, 1268, 1305, 1291, 1308, 1350, 4899, 4902, 4905,
1028
1029      4908, 4923, 1367, 1362, 4926, 4930, 4938, 1368, 4944, 4947,
1030      1418, 1442, 4950, 4956, 4968, 4971, 4974, 4982, 1452, 1475,
1031      1487, 4991, 4994, 1482, 4997, 5001, 5004, 5009, 5023, 1523,
1032      5031, 5019, 5041, 1543, 5056, 1561, 5059, 1550, 1562, 5062,
1033     12512,12512, 5070, 1576, 5077, 1593, 1601, 5080, 1631, 1638,
1034      1634, 1643, 5083, 5092, 1650, 1676, 1696, 5088, 1691, 5101,
1035      5107, 1705, 5112,12512,12512, 5121, 5126, 5143,12512,12512,
1036      1723, 5134, 5152, 1734, 5160, 5163,12512,12512, 5172,12512,
1037     12512, 1727, 5180, 1739, 5183, 1745, 1749, 1763, 5186, 1777,
1038      5189, 5192, 5195, 5211, 1794, 5214, 5217, 1810, 1841, 5225,
1039
1040      1804, 5234, 5237, 5252, 5255, 2026, 1848, 5258,12512, 1858,
1041     12512,12512, 1824, 1814, 1853, 1858, 1862, 1877, 1880, 1880,
1042      3531, 1880, 1891, 3725, 1893, 1915, 3734, 1929, 3802, 1923,
1043      1920, 5261, 1931, 5264, 1945, 5270, 5277, 1933, 1957, 1968,
1044      1991, 1994, 5280, 1989, 2002, 5283, 5286, 5289, 2004, 5292,
1045      5295, 5298, 5301, 5305, 5310, 5313, 2014, 5319, 5333, 5323,
1046      2018, 2000, 5342, 5346, 5349, 5354, 5367, 5375, 5387, 5395,
1047      5398, 5401, 5404, 2040, 5407, 5426, 5434, 2039, 5437,12512,
1048     12512, 2047, 2063, 5445, 5448, 5457, 2056, 2069, 2064, 2069,
1049      5465, 2075, 2074, 5468, 5471, 5476,12512,12512, 5490,12512,
1050
1051      2080, 2073, 5493,12512,12512, 5501, 5505, 5513, 5519, 5531,
1052      2083, 5522, 5527, 2089, 5541,12512,12512, 5549, 5552,12512,
1053     12512, 5560, 2088, 2068, 2088, 5563, 5568, 2106, 5581, 2115,
1054      5584, 5587, 5590, 5605, 5608,12512,12512, 2123, 5616, 5624,
1055     12512,12512, 5619, 5637, 2127, 5640, 5643, 5651, 2119, 5658,
1056      5665, 2132, 5676, 2124, 2134, 5679, 2144, 2137, 2147, 2146,
1057      5683,12512,12512, 2177, 2175, 2169, 5691, 2185, 5698, 5703,
1058      5711, 2172, 5716,12512,12512, 2181, 5726,12512,12512, 2176,
1059      5734, 2182, 5737, 2188, 5743, 5746, 5749, 5756, 5767, 2195,
1060      5770, 5774, 5782,12512,12512, 5790, 2216, 5796,12512,12512,
1061
1062      2212, 2231, 5804, 2204, 5809, 2298, 2637, 5817, 5823, 5831,
1063      2308, 2321, 2342,12512, 5839, 2241, 2253, 2254, 2365, 2250,
1064      2253, 5842, 2265, 2284, 2316, 2322, 5845, 2334, 2324, 2329,
1065      5850, 5857, 5860, 2348, 5863, 2353, 2354, 2350, 2435, 2345,
1066      2364, 2391, 2399, 5866, 5869, 2401, 5872, 2404, 5875, 5879,
1067      5887, 5893, 2401, 5901, 2399, 5905,12512,12512, 5913, 2408,
1068      5916, 5920, 5923, 5928, 5941, 5944, 5952, 5955, 5959,12512,
1069     12512, 5974, 5978, 5986, 5992, 5995, 6004, 2420, 6011,12512,
1070     12512, 6023, 6026, 2422, 2432, 2438, 6034,12512,12512, 6042,
1071      6045, 6056, 2461, 2471, 2464, 6060, 6063, 2456, 2451, 6074,
1072
1073      6078, 2468, 2485, 6081,12512,12512, 6089, 6093, 6101, 2504,
1074      2507, 2487, 6109,12512, 6112, 2491, 6115, 6118, 2479, 6121,
1075      2516, 6128, 2540, 2541, 2530, 6139,12512, 2526, 6142, 6145,
1076     12512,12512, 6153, 2567, 6161, 6164, 6176, 6184, 2542, 6188,
1077     12512,12512, 6196, 6203, 2551, 6214,12512,12512, 2545, 6222,
1078     12512, 2537, 6225, 6228, 6232, 2543, 6235, 2585, 2587, 2593,
1079      2606, 6243, 2605, 6247,12512,12512, 6255,12512, 2606, 6258,
1080      2615, 6262, 2623, 6265, 2632, 6268, 6276, 6290, 6298, 6301,
1081      6305, 6322, 6325, 6329,12512,12512, 6337, 2622, 2636, 2682,
1082      6345, 6348, 2691, 2692, 2707, 2703, 2718, 2707, 2763, 2709,
1083
1084      6352,12512,12512, 6360, 2768, 2787, 2801, 6366, 6372, 6380,
1085      2678, 2696, 2711, 2721, 6384, 6387, 6391, 2725, 6394, 2738,
1086      2740, 2757, 2751, 6397, 6400, 6403, 6407, 2756, 6410, 2791,
1087      2821, 2810, 6413, 6416, 2813, 6419, 6422, 6425, 2821, 6428,
1088     12512,12512, 6436,12512,12512, 2835, 6444, 2852, 6447, 2867,
1089      6450, 6454, 6468, 6472,12512,12512, 6480,12512,12512, 6488,
1090      6491, 6496,12512,12512, 6512, 6515, 6530,12512,12512, 6523,
1091      2864, 6538,12512,12512, 2870, 2874, 2889, 6546,12512,12512,
1092      6554, 6557, 2892, 2881, 2887, 6565,12512,12512, 2899, 6573,
1093      6576, 6579, 2893, 2887, 6584,12512,12512, 2977, 2980, 2896,
1094
1095      2938, 6598, 6601, 2936, 6604, 6607, 2949, 2942, 2983, 3052,
1096      2953, 2963, 6623, 6626, 2974, 6629,12512, 6632,12512,12512,
1097      6648, 2985, 6654,12512,12512, 2987, 3008, 3008, 6662, 6667,
1098      6675, 6680, 6683, 6690, 6694, 6697, 6702, 6705, 6708, 3010,
1099      3015, 6715, 6723, 3033, 6733, 3034, 6736,12512, 3021, 6740,
1100      6743,12512,12512, 6755, 6761, 3026, 6774,12512,12512, 6769,
1101      6782, 6788, 3044, 6796, 3053, 3067, 3079, 6800,12512, 6804,
1102      6808, 3095, 3105, 3106, 3112, 3107, 3116, 3114, 3119, 3125,
1103      3119, 6822, 6825, 3197, 3205, 6828, 6811, 6816, 6852, 6857,
1104      6860, 3113, 3122, 6863, 6866, 3134, 6872, 6875, 3134, 6878,
1105
1106      6881, 6884, 6887, 3130, 3138, 6890, 6893, 3135, 3138, 6896,
1107      6899, 3149, 6902, 6905, 3150, 3158, 3178, 6908, 6911, 6914,
1108      6917, 6920,12512,12512, 6928, 6935, 6938, 6941,12512,12512,
1109      6949, 3171, 3191, 3202, 3224, 6957,12512,12512, 6968, 3208,
1110      3222, 3218, 6973, 6982, 6976, 6991,12512, 3223, 3230, 3259,
1111      3297, 3282, 3311, 3274, 6995, 7000, 7003, 7006, 7010,12512,
1112     12512, 7024, 7027, 3303, 3325, 3309, 3328, 7030, 7033, 7036,
1113      7055, 7061, 7064, 3283, 3289, 3290, 7067, 7070,12512,12512,
1114      7083, 7089, 7092, 7098, 7106, 7110, 7116, 7120, 7124, 7128,
1115      7139,12512,12512, 7134, 7147,12512, 3311, 3316, 7152,12512,
1116
1117      7155,12512,12512, 3298, 7171, 7174,12512,12512, 3299, 7183,
1118      3311, 3308,12512, 7186,12512,12512, 3367, 3356, 3371, 3367,
1119      3381, 3383, 3370, 3385, 3396, 3411, 7194, 7197, 3422, 3524,
1120      3383, 3393, 3391, 3393, 3407, 3412, 3421, 3517, 3416, 3439,
1121      7202, 7205, 3440, 3436, 7208, 7216, 3458, 7219, 7222, 3451,
1122      3466, 7225, 3467, 3475, 7230, 3473, 3501, 3516, 7233,12512,
1123      7236, 7239, 7243, 7246, 7261, 7264, 7267, 7270,12512, 3514,
1124      3540, 3527, 3520, 3543, 7273, 7276, 3536, 7291, 3544, 7294,
1125      3573, 3617, 7302,12512, 3531, 3535, 3597,12512, 3601,12512,
1126      7305, 7309, 7312, 7315,12512, 7323, 7335, 3557, 3576, 3594,
1127
1128      3649,12512, 3649,12512, 7343, 7346, 7349, 7357, 7364, 7370,
1129      7376, 7384, 3604, 3609, 7388, 7391, 7394, 7397,12512,12512,
1130      7406, 7409, 7417, 7420, 7426,12512, 7429, 7438, 7441, 7449,
1131      3617, 3627, 3636, 7452,12512, 3637, 7456, 3642, 3634, 3668,
1132      3682, 3699, 3692, 3703, 3715, 3716, 3730, 3724, 3738, 7459,
1133      3789, 3816, 3787, 3709, 3727, 3724, 3733, 3732, 3732, 3757,
1134      3794, 3790, 3799, 3798, 3792, 3799, 3822, 7462, 7467, 3812,
1135      3827, 3812, 3837, 7471, 3828, 3840, 7478, 7481,12512, 7484,
1136     12512,12512, 7492,12512, 7496, 7500, 3838, 3853, 3859, 7506,
1137      3853, 7524,12512,12512, 3870, 7515, 7533, 3860, 3948, 3896,
1138
1139      3964, 3897, 3863, 7541,12512,12512, 7544, 7547, 7511, 7563,
1140     12512,12512, 3880, 3886, 3904,12512,12512, 7571, 7574, 7582,
1141      3985, 4290, 7590,12512, 7593, 7596,12512,12512, 7604,12512,
1142      3890, 7612, 7615, 7619, 7633,12512, 7636,12512,12512, 7644,
1143      7652, 7647, 7665, 7673, 4089, 4214, 7681, 7684, 7687, 3911,
1144      3913, 7690, 7693, 7705, 3937, 3947, 3949, 3963, 3984, 3961,
1145      3979, 3988, 3991, 4009, 7709, 4032, 4053, 4120, 3954, 3975,
1146      3965, 3980, 3994, 4005, 3988, 4011, 3999, 4032, 4040, 4059,
1147      4042, 7712, 7715, 4058, 4081, 4065, 7718, 4085, 4090, 7723,
1148      7728, 7736, 7744, 4106, 4095, 7747, 7750, 7756, 7770, 4109,
1149
1150      7773,12512,12512, 4110, 4124, 4161, 4151, 4150, 4170, 4163,
1151      7781, 7784, 7789, 7804,12512,12512, 7812,12512, 4142, 7815,
1152      4156, 7818,12512,12512, 4173, 4174, 4176, 4178, 4180, 4180,
1153      7833, 4183, 7836, 7839, 7848,12512,12512, 7856, 4235, 4274,
1154      7864,12512,12512, 4194, 4206, 4352, 4206, 4215, 4367, 7872,
1155      7875, 7878, 7886, 7893, 7904, 7907, 7910, 7913, 7916, 7934,
1156      4246, 4232, 4234, 4239,12512, 4271, 4255, 4255, 4272,12512,
1157      7925, 4325, 4314, 7929, 4258, 4266, 4289, 4336, 4338, 4307,
1158      4302, 4305, 4323, 4385, 4391, 4344, 4352, 7948, 7951, 4352,
1159      4368, 7954, 7957, 4359, 7960, 4393, 4423, 7968, 7973, 4379,
1160
1161      4375, 7977, 7980, 7988,12512,12512, 7996, 7999, 4363, 4373,
1162      4399, 4420, 4420, 4418, 4429, 4430, 8007, 8010, 4418, 8018,
1163     12512,12512, 4429, 8026, 8029, 4416, 4447, 4457, 4496, 4460,
1164      4473, 4504, 8037,12512, 4460, 8040,12512,12512, 4492, 4498,
1165      4495, 4504, 4514, 4502, 4507, 4515, 4523, 4511, 4519, 4529,
1166      8048, 8052, 4551, 4582, 8060,12512,12512, 8068, 8071, 8079,
1167      8082, 8090, 8093,12512,12512, 4535, 4556, 4573, 4576, 4559,
1168      4592, 4607, 4598, 8101, 4629, 8104, 8109, 8113, 4568, 4560,
1169      4633,12512,12512, 4590, 4594, 4582, 4649,12512,12512, 4612,
1170      8123, 8128, 8132, 8135, 8138, 8142, 4629, 4645, 4636, 4648,
1171
1172      8145, 8151,12512, 4625, 4639, 8154,12512,12512, 8164,12512,
1173     12512, 8172, 4632, 4661, 4696, 4665, 4675, 4719, 4690, 8175,
1174     12512,12512, 4677, 8183, 8186,12512,12512, 8197, 4701, 4715,
1175     12512, 4712, 4722,12512, 4701, 4733, 4724, 4739, 4727, 4737,
1176      4748, 4750, 4744, 4749, 4772, 4775, 4767, 8201, 8204, 4779,
1177      4791, 4782, 4794, 8215,12512,12512, 8223,12512,12512, 8231,
1178      4795, 4796,12512, 4805, 4808, 4821,12512, 4822, 8234, 4855,
1179      8237, 8240, 8259, 8302, 8349, 4788, 4789,12512, 4801, 4793,
1180      4798,12512, 4820, 8267, 8270, 8273, 8278, 4873, 4841, 4878,
1181      4854, 8281, 4836, 4865, 8293, 8284, 8296, 4882,12512, 4917,
1182
1183      4897,12512, 4928, 4878, 8314, 8322, 8340, 8332, 4938, 4949,
1184      4952, 4955, 4908, 4973, 4941, 4973, 4947, 4964, 4985, 5003,
1185      4976, 4993, 5010, 5021, 4991, 8369,12512,12512, 5031, 5001,
1186      5032, 5007, 8343,12512, 5042, 5016, 5019, 5045, 5022, 5034,
1187      8377, 5068, 8380, 5093, 5097, 8400, 8447, 5064, 5020, 5069,
1188      5122, 5028, 5098,12512, 5116,12512, 5117, 8390,12512, 5080,
1189      5068, 8420, 5183, 5203, 8411, 8429, 5116,12512, 5118,12512,
1190      5097, 8467,12512,12512, 8475, 5205, 5208,12512,12512,12512,
1191     12512, 5098,12512, 5135,12512, 5137, 5146,12512,12512, 5130,
1192      5159,12512,12512, 5139,12512, 5173,12512, 5193,12512, 5199,
1193
1194      5201,12512, 5200, 5215, 8437,12512, 5249, 5353, 5229, 5219,
1195      5363, 5225, 8440,12512, 5312, 5357,12512,12512, 5359, 5310,
1196     12512,12512,12512, 8483, 8486, 5319, 5241, 5345, 5302, 8494,
1197     12512,12512, 5306, 5321, 8504, 5390, 5325, 5401, 5346, 8507,
1198      5347, 5350, 5380, 5389, 5401, 5392,12512,12512,12512,12512,
1199     12512,12512, 8510, 5413, 5401, 5416, 8513, 5384, 5381,12512,
1200      5396, 5406, 5393,12512, 5413, 8516, 8525, 8534, 8537, 5423,
1201      5432, 5455, 5441, 5450, 5464, 5481, 5480, 8545, 8548, 5450,
1202      5465, 5478, 5461, 5473, 5490, 8556, 8559, 5473, 5478, 5513,
1203      5505, 5530, 5519, 8567, 5526, 5480, 5483, 5506, 5491, 5494,
1204
1205      5517, 8570,12512,12512, 8579, 5576, 5624, 5536, 5542, 5538,
1206      5541, 5546, 5543,12512,12512, 8587,12512,12512, 5558, 5565,
1207      5562, 5565, 5572, 5575, 8595,12512,12512, 5610, 5615,12512,
1208      5597,12512, 5600, 5628,12512, 5587, 5568, 5594, 5608, 5589,
1209      5608, 5644, 5643, 5653, 5647, 5658, 5665, 5665, 5667, 5673,
1210      5678, 5678, 5685, 5690, 5691, 5698, 5698,12512,12512, 5720,
1211      5718, 5722, 5666, 5676, 5702, 5688, 5695, 5711, 5726, 5745,
1212      5739, 5759, 5745, 5754, 5776, 5766, 5763, 5784, 5777, 5781,
1213      5798, 5791, 5789, 5806,12512,12512, 5860, 5771, 5832, 5834,
1214      5784, 5846, 5847, 5849, 5849, 5855, 5855, 5872, 5864, 5904,
1215
1216      5886, 5876, 5919, 5903, 5899, 5932, 5913, 5904, 5940, 5944,
1217      5898,12512,12512, 5899,12512,12512, 5937, 5945, 5943, 5948,
1218      5973, 5952,12512, 5977, 5958,12512, 5986, 5967,12512, 5993,
1219      5970,12512, 5989, 5957, 5959, 5979, 5993, 5984, 6006,12512,
1220      6007,12512, 6008,12512, 6013,12512, 6015, 8605, 6044, 6043,
1221      6027, 6049, 6030, 6059, 6026, 6027, 6029, 6030, 8608,12512,
1222     12512, 6080,12512, 6079,12512, 6083, 6091, 6095, 6097, 6116,
1223      6133,12512,12512,12512,12512,12512,12512, 6106, 6108, 6140,
1224      6151, 6132, 6138, 6194, 6267, 6183, 6201, 6261, 6264, 6223,
1225      6254, 6232, 6286, 6089, 6292, 6316, 6317, 6220, 6293, 6423,
1226
1227      6439, 6202, 6278, 6424, 6457, 6446, 6465, 6157, 6325, 6416,
1228      6441, 6421, 6487, 6483, 6515, 6492, 6493, 6517, 6574, 6602,
1229      6604, 6235, 6298, 6531, 6578, 6617, 6694, 6413, 6599, 6642,
1230      6669, 6668, 6700, 6682, 6695, 6542, 6552, 6299, 6545, 6761,
1231      6762, 6445, 6735, 6620, 6789, 6703, 6713, 6793, 6795, 6595,
1232      6710, 6828, 6945, 6905, 6915, 6953, 6980, 6963, 6970, 6827,
1233      6575, 8616, 8619,12512,12512, 8639, 8648, 8657, 8666, 8675,
1234      8684, 8693, 8702, 8711, 8720, 8729, 8738, 8747, 8756, 8765,
1235      8774, 8783, 8792, 8801, 8810, 8819, 8828, 8837, 8846, 8855,
1236      8864, 8873, 8882, 8891, 8900, 8909, 8918, 8927, 8936, 8945,
1237
1238      8954, 8963, 8972, 8981, 8990, 8999, 9008, 9017, 9026, 9035,
1239      9044, 9053, 9062, 9071, 9080, 9089, 9098, 9107, 9116, 9125,
1240      9134, 9143, 9152, 9161, 9170, 9179, 9188, 9197, 9206, 9213,
1241      9220, 9227, 9234, 9241, 9248, 9255, 9262, 9269, 9276, 9283,
1242      9290, 9297, 9304, 9311, 9318, 9325, 9332, 9339, 9346, 9353,
1243      9360, 9367, 9374, 9381, 9388, 9395, 9402, 9409, 9418, 9425,
1244      9430, 9437, 9442, 9449, 9454, 9461, 9466, 9473, 9478, 9485,
1245      9490, 9497, 9502, 9509, 9514, 9521, 9526, 9533, 9538, 9545,
1246      9550, 9557, 9562, 9569, 9574, 9581, 9586, 9593, 9598, 9605,
1247      9610, 9617, 9622, 9629, 9634, 9641, 9646, 9653, 9658, 9665,
1248
1249      9670, 9677, 9682, 9689, 9694, 9701, 9706, 9713, 9718, 9725,
1250      9730, 9737, 9742, 9749, 9754, 9761, 9766, 9775, 9781, 9788,
1251      9796, 9804, 9812, 9819, 9827, 9834, 9842, 9850, 9858, 9866,
1252      9874, 9882, 9890, 9897, 9905, 9913, 9920, 9928, 9935, 9943,
1253      9950, 9958, 9965, 9973, 9980, 9988, 9995,10003,10010,10018,
1254     10025,10033,10040,10048,10055,10063,10070,10078,10085,10093,
1255     10100,10108,10115,10123,10131,10139,10146,10154,10161,10169,
1256     10176,10184,10191,10199,10206,10214,10223,10229,10236,10244,
1257     10251,10259,10266,10274,10281,10289,10296,10304,10312,10319,
1258     10327,10334,10342,10350,10358,10366,10373,10381,10389,10397,
1259
1260     10405,10413,10420,10428,10435,10443,10450,10458,10466,10474,
1261     10482,10490,10497,10505,10512,10520,10527,10535,10542,10550,
1262     10557,10565,10572,10580,10587,10595,10602,10610,10617,10625,
1263     10633,10641,10648,10656,10665,10674,10681,10688,10696,10704,
1264     10712,10719,10727,10734,10742,10750,10758,10766,10773,10781,
1265     10789,10797,10804,10812,10820,10828,10835,10843,10850,10858,
1266     10866,10874,10881,10889,10896,10904,10911,10919,10926,10934,
1267     10941,10949,10957,10965,10972,10980,10987,10995,11002,11010,
1268     11017,11025,11032,11040,11047,11055,11062,11070,11079,11088,
1269     11095,11103,11111,11119,11126,11134,11142,11150,11158,11166,
1270
1271     11174,11181,11189,11197,11204,11212,11220,11228,11235,11243,
1272     11250,11258,11266,11273,11281,11289,11297,11304,11312,11319,
1273     11327,11334,11342,11350,11357,11365,11372,11380,11387,11395,
1274     11403,11411,11418,11426,11433,11441,11448,11456,11465,11474,
1275     11482,11489,11497,11505,11512,11520,11528,11536,11544,11552,
1276     11559,11567,11575,11582,11590,11598,11605,11612,11620,11628,
1277     11635,11643,11651,11658,11666,11674,11681,11689,11696,11704,
1278     11711,11719,11726,11734,11742,11750,11758,11766,11773,11781,
1279     11789,11797,11806,11815,11822,11830,11838,11845,11853,11861,
1280     11869,11877,11884,11892,11900,11907,11915,11923,11930,11937,
1281
1282     11945,11953,11960,11968,11975,11983,11991,11999,12006,12014,
1283     12021,12028,12036,12043,12051,12058,12066,12073,12081,12090,
1284     12099,12106,12114,12122,12130,12138,12146,12154,12162,12169,
1285     12177,12184,12192,12200,12208,12216,12224,12232,12240,12248,
1286     12255,12263,12271,12279,12287,12294,12301,12308,12316,12323,
1287     12331,12338,12346,12355,12364,12371,12379,12387,12395,12403,
1288     12410,12417,12425,12432,12440,12448,12457,12466,12475,12484,
1289     12493,12502
1290     } ;
1291
1292 static yyconst flex_int16_t yy_def[3973] =
1293     {   0,
1294      3466, 3466, 3467, 3467, 3467, 3467, 3468, 3468, 3469, 3469,
1295      3470, 3470, 3471, 3471, 3471, 3471, 3472, 3472, 3473, 3473,
1296      3474, 3474, 3474, 3474, 3466, 3466, 3474, 3474, 3474, 3474,
1297      3466, 3466, 3474, 3474, 3466, 3466, 3474, 3474, 3474, 3474,
1298      3475, 3475, 3476, 3476, 3466, 3466, 3476, 3476, 3476, 3476,
1299      3477, 3477, 3478, 3478, 3479, 3479, 3480, 3480, 3481, 3481,
1300      3482, 3482, 3466, 3466, 3482, 3482, 3482, 3482, 3483, 3483,
1301      3484, 3484, 3466, 3466, 3484, 3484, 3484, 3484, 3485, 3485,
1302      3486, 3486, 3465,   83, 3487, 3487, 3466, 3466, 3487, 3487,
1303      3487, 3487, 3488, 3488, 3489, 3489, 3466, 3466, 3489, 3489,
1304
1305      3489, 3489, 3490, 3490, 3491, 3491, 3492, 3492, 3493, 3493,
1306      3466, 3466, 3493, 3493, 3493, 3493, 3494, 3494, 3495, 3495,
1307      3496, 3496, 3497, 3497, 3466, 3466, 3497, 3497, 3497, 3497,
1308      3498, 3498, 3499, 3499, 3466, 3466, 3499, 3499, 3499, 3499,
1309      3500, 3500, 3501, 3501, 3502, 3502, 3503, 3503, 3504, 3504,
1310      3505, 3505, 3506, 3506, 3507, 3507, 3508, 3508, 3509, 3509,
1311      3466, 3466, 3510, 3510, 3511, 3511, 3511, 3511, 3466, 3466,
1312      3511, 3511, 3511, 3511, 3466, 3466, 3511, 3511, 3466, 3466,
1313      3511, 3511, 3511, 3511, 3512, 3512, 3513, 3513, 3466, 3466,
1314      3513, 3513, 3513, 3513, 3514, 3514, 3515, 3515, 3516, 3516,
1315
1316      3517, 3517, 3518, 3518, 3519, 3519, 3466, 3466, 3519, 3519,
1317      3519, 3519, 3520, 3520, 3521, 3521, 3522, 3522, 3523, 3523,
1318      3466, 3466, 3523, 3523, 3523, 3523, 3524, 3524, 3525, 3525,
1319      3466, 3466, 3525, 3525, 3525, 3525, 3526, 3526, 3527, 3527,
1320      3528, 3528, 3529, 3529, 3466, 3466, 3465, 3465, 3465, 3465,
1321      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1322      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1323      3465, 3465, 3465, 3465, 3465, 3465, 3530, 3465, 3465, 3530,
1324      3530, 3465, 3465, 3465,  284, 3465,  286,  284,  287,  286,
1325      3465, 3465, 3465, 3531, 3465, 3465, 3531, 3531, 3531, 3465,
1326
1327      3465,  286,  286,  286, 3465, 3465, 3465, 3532, 3465, 3465,
1328      3532, 3465, 3465, 3465, 3465, 3465, 3465, 3533, 3465, 3465,
1329      3533, 3533, 3533, 3465, 3465, 3465, 3465, 3465, 3465, 3534,
1330      3465, 3465, 3534, 3534, 3534, 3465, 3465,  286,  286, 3465,
1331      3465, 3465, 3535, 3465, 3465, 3535, 3535, 3465, 3465,  286,
1332       286, 3465, 3465, 3465, 3536, 3465, 3465, 3536, 3536, 3536,
1333      3536, 3536, 3536, 3465, 3465, 3465, 3465, 3465, 3465, 3537,
1334      3465, 3465, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537,
1335      3537, 3465, 3465,  286,  286, 3465, 3465, 3465, 3538, 3465,
1336      3465, 3538, 3465, 3465,  286,  286, 3465, 3465, 3465, 3539,
1337
1338      3465, 3465, 3539, 3465, 3465, 3465, 3465, 3465, 3465, 3540,
1339      3465, 3465, 3540, 3540, 3540, 3540, 3540, 3465, 3465,  286,
1340       286,  286, 3465, 3465, 3465, 3541, 3465, 3465, 3541, 3541,
1341      3541, 3465, 3465, 3465, 3465, 3465, 3465, 3542, 3465, 3465,
1342      3542, 3465, 3465,  286,  444,  286, 3465, 3465, 3465, 3543,
1343      3465, 3465, 3543, 3543, 3543, 3543, 3465, 3465,  286,  286,
1344      3465, 3465, 3465, 3544, 3465, 3465, 3544, 3544, 3465, 3465,
1345      3465, 3465, 3465, 3465, 3545, 3465, 3465, 3545, 3545, 3465,
1346      3465, 3465, 3465, 3465, 3465, 3546, 3465, 3465, 3546, 3546,
1347      3465, 3465, 3465, 3465, 3465, 3465, 3547, 3465, 3465, 3547,
1348
1349      3547, 3465, 3465, 3465, 3465, 3465, 3465, 3548, 3465, 3465,
1350      3548, 3548, 3548, 3548, 3548, 3548, 3548, 3465, 3465, 3465,
1351      3465, 3465, 3465, 3465, 3549, 3465, 3465, 3549, 3465, 3465,
1352       444,  444,  286,  286,  286,  286, 3465, 3465, 3465, 3550,
1353      3465, 3465, 3550, 3550, 3550, 3550, 3550, 3465, 3465,  286,
1354       286,  286, 3465, 3465, 3465, 3551, 3465, 3465, 3551, 3551,
1355      3465, 3465, 3465, 3465, 3465, 3465, 3552, 3465, 3465, 3552,
1356      3552, 3552, 3552, 3552, 3465, 3465, 3465, 3465, 3465, 3465,
1357      3553, 3465, 3465, 3553, 3553, 3465, 3465,  286,  286, 3465,
1358      3465, 3465, 3554, 3465, 3465, 3554, 3554, 3465, 3465, 3465,
1359
1360      3465, 3465, 3465, 3555, 3465, 3465, 3555, 3555, 3555, 3555,
1361      3465, 3465,  286,  286, 3465, 3465, 3465, 3556, 3465, 3465,
1362      3556, 3556, 3556, 3556, 3465, 3465,  286,  286,  286, 3465,
1363      3465, 3465, 3557, 3465, 3465, 3557, 3557, 3557, 3465, 3465,
1364      3465, 3465, 3465, 3558, 3465, 3465, 3558, 3558, 3558, 3465,
1365      3465, 3465, 3465, 3559, 3465, 3465, 3465, 3465, 3465, 3465,
1366      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3560, 3560,
1367      3560, 3561, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1368      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1369      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1370
1371      3465, 3465, 3465, 3465, 3562, 3562, 3562, 3562, 3562, 3563,
1372      3465, 3465, 3564, 3564, 3565, 3465, 3566, 3566, 3566, 3566,
1373      3567, 3465, 3568, 3568, 3568, 3568, 3569, 3465, 3570, 3570,
1374      3570, 3571, 3465, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
1375      3572, 3573, 3465, 3574, 3574, 3574, 3574, 3574, 3574, 3574,
1376      3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574,
1377      3575, 3465, 3576, 3576, 3577, 3465, 3578, 3578, 3579, 3465,
1378      3580, 3580, 3580, 3580, 3580, 3580, 3580, 3581, 3465, 3465,
1379      3582, 3582, 3582, 3582, 3583, 3465, 3584, 3584, 3585, 3465,
1380      3465, 3586, 3586, 3586, 3586, 3586, 3586, 3587, 3465, 3588,
1381
1382      3588, 3588, 3589, 3465, 3590, 3590, 3590, 3591, 3465, 3592,
1383      3592, 3592, 3593, 3465, 3594, 3594, 3594, 3595, 3465, 3596,
1384      3596, 3596, 3596, 3596, 3596, 3596, 3596, 3597, 3465, 3465,
1385      3598, 3598, 3599, 3465, 3465, 3465, 3465, 3465, 3465, 3600,
1386      3600, 3600, 3600, 3600, 3600, 3601, 3465, 3465, 3602, 3602,
1387      3602, 3603, 3465, 3604, 3604, 3604, 3604, 3604, 3604, 3604,
1388      3604, 3604, 3605, 3465, 3606, 3606, 3606, 3606, 3607, 3465,
1389      3608, 3608, 3608, 3609, 3465, 3610, 3610, 3610, 3610, 3610,
1390      3611, 3465, 3612, 3612, 3612, 3612, 3612, 3613, 3465, 3465,
1391      3614, 3614, 3614, 3614, 3465, 3615, 3465, 3465, 3616, 3616,
1392
1393      3616, 3616, 3617, 3618, 3465, 3618, 3465, 3465, 3465, 3619,
1394      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3620, 3621,
1395      3621, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1396      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1397      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1398      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3622, 3622,
1399      3622, 3622, 3623, 3623, 3465, 3624, 3625, 3625, 3626, 3465,
1400      3465, 3626, 3627, 3627, 3628, 3628, 3628, 3629, 3629, 3630,
1401      3630, 3631, 3631, 3465, 3465, 3465, 3465, 3632, 3632, 3632,
1402      3632, 3632, 3633, 3633, 3634, 3634, 3465, 3465, 3634, 3465,
1403
1404      3465, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634,
1405      3634, 3634, 3635, 3635, 3465, 3465, 3636, 3636, 3637, 3638,
1406      3638, 3639, 3639, 3639, 3465, 3465, 3639, 3639, 3639, 3640,
1407      3640, 3465, 3465, 3641, 3465, 3465, 3465, 3465, 3642, 3642,
1408      3643, 3644, 3644, 3465, 3645, 3465, 3465, 3645, 3645, 3645,
1409      3646, 3646, 3647, 3465, 3465, 3648, 3648, 3465, 3465, 3649,
1410      3650, 3650, 3651, 3651, 3652, 3652, 3653, 3653, 3654, 3654,
1411      3655, 3655, 3655, 3465, 3465, 3655, 3655, 3655, 3656, 3656,
1412      3465, 3657, 3658, 3658, 3465, 3465, 3465, 3659, 3659, 3659,
1413      3659, 3659, 3660, 3660, 3465, 3465, 3465, 3661, 3662, 3662,
1414
1415      3663, 3465, 3465, 3663, 3663, 3663, 3663, 3663, 3663, 3664,
1416      3664, 3665, 3665, 3665, 3666, 3666, 3667, 3465, 3465, 3668,
1417      3668, 3669, 3669, 3465, 3465, 3669, 3670, 3670, 3671, 3465,
1418      3465, 3671, 3671, 3672, 3672, 3465, 3673, 3465, 3465, 3673,
1419      3465, 3674, 3674, 3465, 3675, 3675, 3675, 3676, 3676, 3677,
1420      3465, 3465, 3677, 3465, 3465, 3678, 3465, 3465, 3465, 3465,
1421      3465, 3465, 3465, 3465, 3679, 3465, 3680, 3465, 3680, 3465,
1422      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1423      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1424      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1425
1426      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1427      3681, 3681, 3465, 3465, 3681, 3465, 3682, 3465, 3682, 3465,
1428      3683, 3465, 3684, 3465, 3684, 3685, 3465, 3465, 3465, 3685,
1429      3465, 3686, 3465, 3686, 3465, 3465, 3687, 3687, 3465, 3465,
1430      3465, 3688, 3465, 3688, 3465, 3465, 3465, 3465, 3465, 3689,
1431      3465, 3689, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1432      3690, 3690, 3690, 3690, 3465, 3691, 3465, 3691, 3692, 3692,
1433      3692, 3692, 3465, 3465, 3465, 3692, 3465, 3465, 3465, 3465,
1434      3465, 3692, 3692, 3692, 3692, 3692, 3692, 3692, 3692, 3692,
1435      3692, 3465, 3693, 3465, 3693, 3465, 3465, 3465, 3465, 3694,
1436
1437      3465, 3694, 3695, 3465, 3696, 3465, 3696, 3697, 3697, 3697,
1438      3465, 3465, 3465, 3697, 3697, 3697, 3465, 3698, 3465, 3698,
1439      3465, 3465, 3699, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1440      3700, 3465, 3700, 3701, 3465, 3702, 3465, 3702, 3703, 3465,
1441      3465, 3465, 3703, 3703, 3703, 3465, 3704, 3465, 3704, 3705,
1442      3465, 3465, 3465, 3465, 3706, 3465, 3706, 3465, 3465, 3465,
1443      3707, 3465, 3708, 3465, 3708, 3709, 3709, 3465, 3710, 3465,
1444      3710, 3711, 3711, 3465, 3712, 3465, 3712, 3713, 3713, 3713,
1445      3713, 3465, 3465, 3465, 3465, 3465, 3713, 3713, 3465, 3714,
1446      3465, 3714, 3465, 3715, 3465, 3716, 3465, 3716, 3465, 3465,
1447
1448      3465, 3717, 3717, 3717, 3717, 3717, 3465, 3718, 3465, 3718,
1449      3465, 3465, 3465, 3465, 3719, 3465, 3720, 3465, 3720, 3721,
1450      3465, 3465, 3465, 3465, 3465, 3721, 3465, 3465, 3721, 3721,
1451      3721, 3465, 3722, 3465, 3722, 3465, 3465, 3465, 3465, 3723,
1452      3465, 3724, 3465, 3724, 3725, 3465, 3465, 3465, 3465, 3726,
1453      3465, 3726, 3727, 3727, 3465, 3465, 3465, 3727, 3465, 3728,
1454      3465, 3728, 3729, 3465, 3465, 3465, 3729, 3729, 3465, 3730,
1455      3465, 3730, 3465, 3731, 3465, 3465, 3465, 3731, 3465, 3465,
1456      3732, 3465, 3732, 3733, 3733, 3733, 3465, 3734, 3465, 3734,
1457      3735, 3736, 3465, 3465, 3465, 3465, 3737, 3465, 3465, 3465,
1458
1459      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1460      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1461      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1462      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1463      3738, 3738, 3465, 3465, 3465, 3738, 3739, 3465, 3740, 3741,
1464      3742, 3742, 3743, 3465, 3465, 3465, 3744, 3744, 3465, 3465,
1465      3465, 3745, 3465, 3465, 3465, 3465, 3465, 3465, 3746, 3465,
1466      3465, 3465, 3747, 3747, 3747, 3747, 3748, 3749, 3749, 3749,
1467      3749, 3465, 3465, 3465, 3465, 3465, 3749, 3749, 3749, 3749,
1468      3749, 3749, 3749, 3749, 3749, 3749, 3749, 3750, 3751, 3465,
1469
1470      3465, 3752, 3753, 3753, 3465, 3465, 3753, 3753, 3753, 3754,
1471      3465, 3465, 3465, 3465, 3755, 3465, 3465, 3756, 3757, 3757,
1472      3757, 3757, 3758, 3759, 3760, 3761, 3762, 3465, 3465, 3763,
1473      3764, 3465, 3465, 3765, 3766, 3767, 3767, 3767, 3767, 3465,
1474      3465, 3465, 3767, 3767, 3768, 3465, 3769, 3770, 3465, 3465,
1475      3465, 3771, 3465, 3465, 3771, 3771, 3771, 3772, 3465, 3773,
1476      3774, 3775, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1477      3775, 3465, 3465, 3775, 3776, 3465, 3465, 3465, 3465, 3465,
1478      3465, 3777, 3778, 3779, 3780, 3781, 3781, 3781, 3782, 3783,
1479      3783, 3465, 3465, 3784, 3465, 3465, 3465, 3785, 3465, 3786,
1480
1481      3787, 3465, 3465, 3787, 3788, 3789, 3790, 3790, 3465, 3790,
1482      3465, 3465, 3791, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1483      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1484      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1485      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1486      3465, 3465, 3792, 3792, 3792, 3793, 3465, 3465, 3465, 3794,
1487      3795, 3795, 3796, 3797, 3797, 3798, 3799, 3465, 3465, 3800,
1488      3800, 3800, 3801, 3802, 3465, 3465, 3802, 3802, 3465, 3465,
1489      3465, 3802, 3802, 3465, 3465, 3802, 3802, 3802, 3802, 3802,
1490      3802, 3802, 3802, 3803, 3804, 3465, 3465, 3465, 3465, 3465,
1491
1492      3805, 3805, 3465, 3465, 3465, 3465, 3465, 3805, 3465, 3465,
1493      3805, 3806, 3465, 3465, 3465, 3465, 3465, 3807, 3465, 3465,
1494      3465, 3808, 3809, 3809, 3809, 3465, 3465, 3809, 3810, 3811,
1495      3812, 3465, 3465, 3813, 3465, 3465, 3465, 3814, 3815, 3465,
1496      3465, 3465, 3816, 3817, 3818, 3465, 3465, 3818, 3818, 3465,
1497      3465, 3818, 3819, 3465, 3820, 3821, 3465, 3465, 3465, 3822,
1498      3465, 3465, 3465, 3822, 3822, 3822, 3823, 3465, 3465, 3465,
1499      3824, 3825, 3465, 3465, 3465, 3825, 3465, 3465, 3465, 3825,
1500      3826, 3827, 3828, 3829, 3830, 3831, 3831, 3831, 3832, 3833,
1501      3465, 3465, 3465, 3465, 3465, 3834, 3465, 3465, 3465, 3465,
1502
1503      3835, 3465, 3836, 3837, 3465, 3465, 3465, 3465, 3465, 3838,
1504      3839, 3840, 3840, 3465, 3841, 3465, 3465, 3465, 3465, 3465,
1505      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1506      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1507      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1508      3465, 3465, 3842, 3843, 3465, 3465, 3465, 3465, 3844, 3845,
1509      3845, 3846, 3465, 3465, 3465, 3465, 3847, 3848, 3465, 3465,
1510      3465, 3465, 3465, 3849, 3465, 3465, 3850, 3851, 3465, 3465,
1511      3465, 3465, 3465, 3851, 3851, 3851, 3465, 3465, 3465, 3465,
1512      3465, 3851, 3851, 3851, 3851, 3465, 3465, 3851, 3851, 3852,
1513
1514      3853, 3854, 3854, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1515      3465, 3854, 3465, 3465, 3465, 3465, 3855, 3856, 3857, 3857,
1516      3857, 3465, 3465, 3465, 3857, 3465, 3465, 3858, 3859, 3465,
1517      3465, 3465, 3860, 3861, 3862, 3465, 3465, 3863, 3864, 3465,
1518      3465, 3465, 3465, 3465, 3864, 3465, 3465, 3465, 3864, 3465,
1519      3465, 3465, 3865, 3866, 3465, 3465, 3465, 3867, 3867, 3867,
1520      3867, 3868, 3465, 3465, 3465, 3465, 3465, 3465, 3869, 3869,
1521      3869, 3870, 3871, 3872, 3873, 3874, 3465, 3465, 3875, 3465,
1522      3465, 3876, 3877, 3465, 3465, 3465, 3878, 3465, 3879, 3465,
1523      3880, 3881, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1524
1525      3465, 3465, 3465, 3882, 3883, 3884, 3884, 3465, 3465, 3465,
1526      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1527      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1528      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1529      3465, 3465, 3465, 3465, 3465, 3885, 3886, 3465, 3887, 3888,
1530      3465, 3465, 3889, 3465, 3465, 3465, 3465, 3465, 3465, 3890,
1531      3891, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3892,
1532      3893, 3465, 3465, 3465, 3893, 3893, 3893, 3465, 3465, 3465,
1533      3465, 3465, 3893, 3893, 3893, 3465, 3465, 3465, 3893, 3893,
1534      3894, 3895, 3896, 3896, 3465, 3465, 3465, 3465, 3465, 3896,
1535
1536      3465, 3897, 3898, 3899, 3465, 3465, 3899, 3899, 3465, 3465,
1537      3899, 3900, 3901, 3902, 3903, 3465, 3465, 3465, 3465, 3465,
1538      3904, 3905, 3465, 3465, 3465, 3905, 3905, 3465, 3465, 3465,
1539      3906, 3465, 3465, 3465, 3907, 3907, 3907, 3907, 3908, 3465,
1540      3909, 3465, 3465, 3909, 3910, 3911, 3465, 3465, 3912, 3913,
1541      3465, 3465, 3465, 3465, 3465, 3914, 3465, 3465, 3465, 3915,
1542      3465, 3465, 3916, 3917, 3465, 3918, 3465, 3465, 3465, 3465,
1543      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1544      3465, 3919, 3920, 3921, 3921, 3465, 3465, 3465, 3465, 3465,
1545      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1546
1547      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1548      3465, 3465, 3465, 3465, 3465, 3465, 3922, 3923, 3465, 3924,
1549      3925, 3465, 3465, 3465, 3926, 3927, 3928, 3465, 3465, 3465,
1550      3929, 3930, 3930, 3930, 3930, 3465, 3465, 3465, 3930, 3930,
1551      3930, 3930, 3465, 3465, 3931, 3465, 3465, 3932, 3932, 3465,
1552      3465, 3465, 3465, 3932, 3465, 3933, 3934, 3935, 3465, 3465,
1553      3465, 3935, 3935, 3465, 3465, 3465, 3465, 3935, 3936, 3937,
1554      3938, 3939, 3940, 3941, 3941, 3941, 3465, 3465, 3465, 3465,
1555      3942, 3465, 3465, 3465, 3943, 3943, 3943, 3944, 3465, 3945,
1556      3465, 3465, 3465, 3945, 3465, 3465, 3946, 3947, 3465, 3465,
1557
1558      3465, 3465, 3465, 3948, 3949, 3465, 3465, 3465, 3950, 3951,
1559      3465, 3952, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1560      3465, 3465, 3465, 3465, 3465, 3465, 3953, 3954, 3955, 3955,
1561      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1562      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1563      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3956, 3465, 3465,
1564      3465, 3957, 3465, 3465, 3958, 3959, 3960, 3465, 3465, 3961,
1565      3961, 3961, 3961, 3961, 3465, 3465, 3961, 3961, 3961, 3465,
1566      3465, 3465, 3465, 3465, 3962, 3962, 3465, 3465, 3465, 3465,
1567      3962, 3465, 3963, 3465, 3465, 3465, 3465, 3964, 3964, 3964,
1568
1569      3465, 3465, 3465, 3465, 3964, 3465, 3465, 3965, 3966, 3465,
1570      3465, 3940, 3941, 3941, 3941, 3465, 3942, 3465, 3465, 3465,
1571      3465, 3465, 3943, 3943, 3465, 3465, 3465, 3465, 3465, 3945,
1572      3946, 3947, 3948, 3465, 3465, 3950, 3951, 3465, 3952, 3465,
1573      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3953,
1574      3954, 3955, 3955, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1575      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1576      3465, 3465, 3465, 3465, 3465, 3465, 3956, 3465, 3465, 3465,
1577      3465, 3465, 3465, 3465, 3959, 3960, 3961, 3961, 3961, 3961,
1578      3961, 3465, 3465, 3465, 3961, 3465, 3465, 3961, 3465, 3465,
1579
1580      3465, 3465, 3962, 3962, 3465, 3465, 3465, 3465, 3963, 3465,
1581      3465, 3465, 3964, 3964, 3964, 3465, 3465, 3465, 3465, 3465,
1582      3465, 3465, 3465, 3465, 3966, 3465, 3465, 3465, 3465, 3465,
1583      3941, 3941, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1584      3465, 3465, 3465, 3465, 3465, 3465, 3945, 3946, 3947, 3948,
1585      3950, 3951, 3465, 3952, 3465, 3465, 3465, 3465, 3465, 3465,
1586      3465, 3465, 3465, 3465, 3953, 3954, 3955, 3955, 3465, 3465,
1587      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1588      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1589      3465, 3959, 3960, 3961, 3961, 3961, 3465, 3465, 3961, 3961,
1590
1591      3465, 3465, 3465, 3961, 3465, 3465, 3465, 3465, 3465, 3465,
1592      3962, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3964, 3964,
1593      3964, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1594      3966, 3941, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1595      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3945,
1596      3465, 3465, 3465, 3465, 3948, 3950, 3951, 3465, 3465, 3465,
1597      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1598      3953, 3954, 3955, 3955, 3465, 3465, 3465, 3465, 3465, 3465,
1599      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1600      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3959, 3960, 3961,
1601
1602      3961, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3961, 3961,
1603      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3962, 3465,
1604      3465, 3465, 3964, 3465, 3465, 3964, 3465, 3465, 3465, 3465,
1605      3465, 3465, 3465, 3465, 3941, 3465, 3465, 3465, 3465, 3465,
1606      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1607      3945, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1608      3465, 3951, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1609      3465, 3465, 3465, 3953, 3954, 3955, 3955, 3955, 3465, 3465,
1610      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1611      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1612
1613      3959, 3465, 3465, 3961, 3961, 3465, 3465, 3465, 3465, 3465,
1614      3465, 3961, 3961, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1615      3465, 3465, 3962, 3964, 3465, 3465, 3465, 3964, 3465, 3465,
1616      3465, 3465, 3465, 3465, 3941, 3465, 3465, 3465, 3465, 3465,
1617      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1618      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3951,
1619      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3953, 3954,
1620      3955, 3955, 3955, 3967, 3968, 3465, 3465, 3465, 3465, 3465,
1621      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1622      3465, 3959, 3961, 3961, 3465, 3465, 3961, 3465, 3465, 3465,
1623
1624      3465, 3465, 3465, 3962, 3465, 3465, 3465, 3465, 3465, 3465,
1625      3465, 3465, 3941, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1626      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1627      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1628      3953, 3954, 3955, 3969, 3970, 3967, 3968, 3465, 3465, 3465,
1629      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3961,
1630      3961, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1631      3962, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1632      3465, 3941, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1633      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1634
1635      3465, 3465, 3465, 3465, 3465, 3465, 3954, 3969, 3955, 3971,
1636      3970, 3972, 3955, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1637      3465, 3465, 3465, 3961, 3961, 3465, 3465, 3465, 3465, 3465,
1638      3465, 3465, 3465, 3465, 3962, 3465, 3465, 3465, 3465, 3941,
1639      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1640      3465, 3465, 3954, 3971, 3465, 3972, 3955, 3465, 3465, 3465,
1641      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1642      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1643      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1644      3465, 3465, 3465, 3954, 3465, 3465, 3465, 3465, 3465, 3465,
1645
1646      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1647      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1648      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1649      3465, 3465, 3465, 3954, 3465, 3465, 3465, 3465, 3465, 3465,
1650      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1651      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1652      3465, 3954, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1653      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1654      3465, 3465, 3465, 3465, 3465, 3465, 3954, 3465, 3465, 3465,
1655      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1656
1657      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3954,
1658      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1659      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1660      3465, 3465, 3954, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1661      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3954, 3465, 3465,
1662      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3954, 3465,
1663      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3954,
1664      3954, 3465, 3465, 3465, 3465, 3465, 3465, 3954, 3954, 3954,
1665      3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954,
1666      3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954,
1667
1668      3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954,
1669      3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954,
1670      3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954,
1671      3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954,
1672      3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954,
1673      3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954,
1674      3954, 3954, 3954, 3465,    0, 3465, 3465, 3465, 3465, 3465,
1675      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1676      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1677      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1678
1679      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1680      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1681      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1682      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1683      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1684      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1685      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1686      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1687      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1688      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1689
1690      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1691      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1692      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1693      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1694      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1695      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1696      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1697      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1698      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1699      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1700
1701      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1702      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1703      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1704      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1705      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1706      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1707      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1708      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1709      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1710      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1711
1712      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1713      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1714      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1715      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1716      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1717      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1718      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1719      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1720      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1721      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1722
1723      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1724      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1725      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1726      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1727      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1728      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1729      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
1730      3465, 3465
1731     } ;
1732
1733 static yyconst flex_int16_t yy_nxt[12587] =
1734     {   0,
1735      3465,  250,  251,  250,  250,  251,  250,  250,  251,  250,
1736       250,  251,  250,  255,  251,  255,  261,  252,  258,  261,
1737       252,  258,  846,  253, 3465,  259,  253, 3465,  259,  256,
1738       255,  251,  255,  654,  262,  264,  265,  262,  264,  265,
1739       266,  267,  672,  266,  267,  654,  256,  271,  272,  655,
1740       268,  264,  265,  268,  269,  657,  266,  264,  265,  847,
1741       269,  656,  266,  271,  272, 3465,  268,  283,  251,  283,
1742       796,  656,  268,  283,  251,  283,  283,  251,  283,  283,
1743       251,  283,  797,  284,  251,  251,  251,  738, 1723,  284,
1744       739,  273,  285, 1379,  700,  285,  653,  653,  653, 1380,
1745
1746       286,  653,  653,  653,  653,  653,  653,  273,  274,  275,
1747       251,  275,  274,  274,  274,  274,  274,  274,  274,  276,
1748       274,  274,  274,  861,  274,  278,  274,  279,  274,  251,
1749       251,  251,  283,  251,  283,  283,  251,  283,  862,  283,
1750       251,  283,  283,  251,  283,  286,  657,  657,  284,  708,
1751       746,  284,  710,  274,  274,  287,  709, 1596,  287,  653,
1752       653,  653,  656,  656,  280,  653,  653,  653,  711, 1597,
1753       662,  747,  700,  281,  274,  275,  251,  275,  274,  274,
1754       274,  274,  274,  274,  274,  276,  274,  274,  274, 1726,
1755       274,  278,  274,  279,  274,  251,  251,  251,  251,  251,
1756
1757       251,  283,  251,  283,  700,  283,  251,  283,  251,  251,
1758       251,  288,  663,  657,  288, 1727, 1728,  285,  664,  274,
1759       274,  285,  657,  665,  289,  251,  251,  251,  666,  656,
1760       280,  283,  251,  283,  283,  251,  283,  753,  656,  281,
1761       754,  289,  283,  251,  283, 1730,  657,  287,  905,  657,
1762       287,  283,  251,  283,  653,  653,  653,  727,  290,  653,
1763       653,  653,  656,  906,  710,  656, 1731,  290,  291,  292,
1764       251,  292,  291,  291,  291,  291,  291,  291,  291,  293,
1765       291,  291,  291,  778,  291,  295,  291,  296,  291,  301,
1766       251,  301,  301,  251,  301,  251,  251,  251,  732,  251,
1767
1768       251,  251,  301,  251,  301,  302,  755,  911,  302,  700,
1769       912,  303,  711,  291,  291,  303,  700,  657,  302,  297,
1770       756, 1733,  298,  653,  653,  653,  653,  653,  653,  653,
1771       653,  653,  779,  656,  299,  291,  292,  251,  292,  291,
1772       291,  291,  291,  291,  291,  291,  293,  291,  291,  291,
1773       700,  291,  295,  291,  296,  291,  301,  251,  301,  301,
1774       251,  301,  301,  251,  301,  750,  313,  251,  313,  313,
1775       251,  313,  302,  751,  657,  304,  657, 1734,  304,  752,
1776       291,  291,  314,  715,  657,  314,  297, 1735,  761,  298,
1777       656,  721,  656,  653,  653,  653,  653,  653,  653,  765,
1778
1779       656,  299,  305,  306,  251,  306,  305,  305,  305,  305,
1780       305,  305,  305,  307,  305,  305,  305,  924,  305,  309,
1781       305,  310,  305,  325,  251,  325,  325,  251,  325,  337,
1782       251,  337,  926,  337,  251,  337,  251,  251,  251,  326,
1783       700,  925,  326,  927, 1736,  338,  928,  305,  305,  338,
1784       657,  700,  303,  251,  251,  251,  653,  653,  653,  653,
1785       653,  653,  727,  653,  653,  653,  656, 1023,  732,  303,
1786      1024,  311,  305,  306,  251,  306,  305,  305,  305,  305,
1787       305,  305,  305,  307,  305,  305,  305,  944,  305,  309,
1788       305,  310,  305,  337,  251,  337,  337,  251,  337,  337,
1789
1790       251,  337,  905,  337,  251,  337,  349,  251,  349,  338,
1791       711,  945,  338, 1738,  700,  339,  711,  305,  305,  339,
1792       700, 1739,  350,  349,  251,  349,  653,  653,  653,  653,
1793       653,  653,  653,  653,  653,  653,  653,  653, 1141,  350,
1794      1182,  311,  315,  316,  251,  316,  315,  315,  315,  315,
1795       315,  315,  315,  317,  315,  315,  315, 1183,  315,  319,
1796       315,  320,  315,  251,  251,  251,  251,  251,  251,  349,
1797       251,  349,  938,  349,  251,  349,  349,  251,  349,  303,
1798       778,  757,  303,  657,  657,  350,  939,  315,  315,  350,
1799       742,  321,  351,  758,  759,  653,  653,  653,  322,  656,
1800
1801       656,  323,  315,  316,  251,  316,  315,  315,  315,  315,
1802       315,  315,  315,  317,  315,  315,  315, 1740,  315,  319,
1803       315,  320,  315,  349,  251,  349,  365,  251,  365,  365,
1804       251,  365,  700,  383,  251,  383,  383,  251,  383,  351,
1805       657,  657,  366,  657,  657,  366, 1741,  315,  315,  384,
1806       769,  321,  384,  653,  653,  653,  656,  656,  322,  656,
1807       656,  323,  327,  328,  251,  328,  327,  327,  327,  327,
1808       327,  327,  327,  329,  327,  327,  327,  944,  327,  331,
1809       327,  332,  327,  251,  251,  251,  251,  251,  251,  383,
1810       251,  383,  789,  383,  251,  383,  383,  251,  383,  286,
1811
1812       775,  925,  286, 1742,  776,  384, 1745,  327,  327,  384,
1813       657,  657,  385,  333, 1748,  798,  334,  653,  653,  653,
1814       653,  653,  653,  653,  653,  653,  656,  656,  335,  327,
1815       328,  251,  328,  327,  327,  327,  327,  327,  327,  327,
1816       329,  327,  327,  327,  700,  327,  331,  327,  332,  327,
1817       383,  251,  383,  394,  251,  394,  394,  251,  394,  833,
1818       251,  251,  251,  251,  251,  251,  385,  700, 1516,  395,
1819      1749, 1750,  395, 1751,  327,  327,  286,  657,  657,  286,
1820       333, 1517,  833,  334,  653,  653,  653,  653,  653,  653,
1821       653,  653,  653,  656,  656,  335,  340,  341,  251,  341,
1822
1823       340,  340,  340,  340,  340,  340,  340,  342,  340,  340,
1824       340,  835,  340,  344,  340,  345,  340,  394,  251,  394,
1825       394,  251,  394,  394,  251,  394,  833,  394,  251,  394,
1826       405,  251,  405,  395,  838,  657,  395,  657, 1752,  396,
1827      1151,  340,  340,  396,  785,  657,  406,  346,  653,  653,
1828       653,  656,  803,  656,  653,  653,  653,  653,  653,  653,
1829      1706,  656,  347,  340,  341,  251,  341,  340,  340,  340,
1830       340,  340,  340,  340,  342,  340,  340,  340,  700,  340,
1831       344,  340,  345,  340,  405,  251,  405,  419,  251,  419,
1832       419,  251,  419,  846,  251,  251,  251,  251,  251,  251,
1833
1834       406,  933, 1753,  420, 1754,  934,  420, 1755,  340,  340,
1835       421,  657,  657,  421,  346,  653,  653,  653,  653,  653,
1836       653,  653,  653,  653,  653,  653,  653,  656,  656,  347,
1837       352,  353,  251,  353,  352,  352,  352,  352,  352,  352,
1838       352,  354,  352,  352,  352,  700,  352,  356,  352,  357,
1839       352,  419,  251,  419,  419,  251,  419,  419,  251,  419,
1840       869,  419,  251,  419,  433,  251,  433,  420,  657,  657,
1841       420,  657,  657,  422, 1761,  352,  352,  422,  808,  358,
1842       434,  653,  653,  653,  656,  656,  359,  656,  656,  360,
1843       653,  653,  653,  361, 1762,  362,  363,  352,  353,  251,
1844
1845       353,  352,  352,  352,  352,  352,  352,  352,  354,  352,
1846       352,  352,  700,  352,  356,  352,  357,  352,  433,  251,
1847       433,  443,  251,  443,  443,  251,  443,  829,  251,  251,
1848       251,  251,  251,  251,  434,  657,  657,  444,  657,  657,
1849       444, 1764,  352,  352,  445,  813,  358,  445,  653,  653,
1850       653,  656,  656,  359,  656,  656,  360,  653,  653,  653,
1851       361, 1765,  362,  363,  367,  368,  251,  368,  367,  367,
1852       367,  367,  367,  367,  367,  369,  367,  367,  367,  370,
1853       367,  371,  367,  372,  367,  370,  370,  370,  370,  370,
1854       370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
1855
1856       370,  370,  370,  370,  370,  370,  370,  370,  370,  367,
1857       367,  370,  373,  374,  375,  370,  370,  370,  370,  370,
1858       376,  370,  370,  377,  370,  370,  370,  378,  370,  379,
1859       380,  381,  370,  370,  370,  370,  370,  370,  386,  387,
1860       251,  387,  386,  386,  386,  386,  386,  386,  386,  388,
1861       386,  386,  386, 1774,  386,  390,  386,  391,  386,  443,
1862       251,  443,  443,  251,  443,  443,  251,  443, 1777,  443,
1863       251,  443,  458,  251,  458,  444,  657,  657,  444,  867,
1864      1778,  446,  881,  386,  386,  446,  868,  888,  459,  653,
1865       653,  653,  656,  656,  392,  386,  387,  251,  387,  386,
1866
1867       386,  386,  386,  386,  386,  386,  388,  386,  386,  386,
1868      1782,  386,  390,  386,  391,  386,  458,  251,  458,  251,
1869       251,  251,  251,  251,  251, 1783,  458,  251,  458,  458,
1870       251,  458,  459,  657,  700,  286,  889,  935,  286,  888,
1871       386,  386,  459,  924,  936,  459,  653,  653,  653,  656,
1872       937,  392,  397,  398,  251,  398,  397,  397,  397,  397,
1873       397,  397,  397,  399,  397,  397,  397,  945,  397,  401,
1874       397,  402,  397,  458,  251,  458,  458,  251,  458,  470,
1875       251,  470, 1786,  470,  251,  470,  481,  251,  481,  460,
1876      1787,  700,  460,  657,  657,  471,  657,  397,  397,  471,
1877
1878       818,  828,  482,  653,  653,  653,  653,  653,  653,  656,
1879       656, 1788,  656,  403,  397,  398,  251,  398,  397,  397,
1880       397,  397,  397,  397,  397,  399,  397,  397,  397, 1789,
1881       397,  401,  397,  402,  397,  481,  251,  481,  492,  251,
1882       492,  492,  251,  492,  938,  503,  251,  503,  503,  251,
1883       503,  482, 1790, 1151,  493,  837,  657,  493,  953,  397,
1884       397,  504, 1791,  852,  504,  653,  653,  653,  700, 1153,
1885       836, 1792,  656, 3465, 1182,  403,  407,  408,  251,  408,
1886       407,  407,  407,  407,  407,  407,  407,  409,  407,  407,
1887       407, 1321,  407,  411,  407,  412,  407,  519,  251,  519,
1888
1889       519,  251,  519,  251,  251,  251,  857,  251,  251,  251,
1890       858,  702, 1793,  520,  859, 1801,  520,  946, 1802,  521,
1891      1808,  407,  407,  521,  413,  686,  414,  703,  947,  697,
1892       869,  928,  415,  653,  653,  653,  653,  653,  653,  416,
1893       833, 1473,  417,  407,  408,  251,  408,  407,  407,  407,
1894       407,  407,  407,  407,  409,  407,  407,  407, 1183,  407,
1895       411,  407,  412,  407,  530,  251,  530,  530,  251,  530,
1896       530,  251,  530,  938,  530,  251,  530, 1032,  711,  834,
1897       531, 1033,  700,  531,  938, 1813,  532,  957,  407,  407,
1898       532,  413,  835,  414,  836,  653,  653,  653,  958,  415,
1899
1900       653,  653,  653,  653,  653,  653,  416, 1814, 1823,  417,
1901       423,  424,  251,  424,  423,  423,  423,  423,  423,  423,
1902       423,  425,  423,  423,  423, 1824,  423,  427,  423,  428,
1903       423,  251,  251,  251,  251,  251,  251,  530,  251,  530,
1904      1087,  530,  251,  530,  530,  251,  530,  533, 1825, 1830,
1905       533,  657,  935,  531,  953,  423,  423,  531,  863,  936,
1906       534,  429,  653,  653,  653,  942,  430,  656,  653,  653,
1907       653,  653,  653,  653,  653,  653,  653, 1838,  431,  423,
1908       424,  251,  424,  423,  423,  423,  423,  423,  423,  423,
1909       425,  423,  423,  423, 1843,  423,  427,  423,  428,  423,
1910
1911       530,  251,  530,  251,  251,  251,  251,  251,  251, 1845,
1912       530,  251,  530,  530,  251,  530,  534, 1848, 1849,  445,
1913       657,  952,  445, 1852,  423,  423,  532,  874,  936,  532,
1914       429,  653,  653,  653,  937,  430,  656,  653,  653,  653,
1915       653,  653,  653,  653,  653,  653, 1854,  431,  435,  436,
1916       251,  436,  435,  435,  435,  435,  435,  435,  435,  437,
1917       435,  435,  435, 1855,  435,  439,  435,  440,  435,  251,
1918       251,  251,  251,  251,  251,  530,  251,  530,  926,  530,
1919       251,  530,  530,  251,  530,  535,  946, 1857,  535,  927,
1920      1858,  534, 1085,  435,  435,  534, 1859,  947,  536, 1860,
1921
1922      1085,  441,  435,  436,  251,  436,  435,  435,  435,  435,
1923       435,  435,  435,  437,  435,  435,  435, 1864,  435,  439,
1924       435,  440,  435,  530,  251,  530,  549,  251,  549,  549,
1925       251,  549, 1865,  251,  251,  251,  251,  251,  251,  536,
1926      1136, 1516,  550, 1866,  934,  550, 1151,  435,  435,  551,
1927      1491, 1868,  551, 1872, 1522,  441,  447,  448,  251,  448,
1928       447,  447,  447,  447,  447,  447,  447,  449,  447,  447,
1929       447, 1876,  447,  451,  447,  452,  447,  549,  251,  549,
1930       549,  251,  549,  549,  251,  549, 1880,  549,  251,  549,
1931       562,  251,  562,  550, 1882, 1884,  550,  895, 1650,  552,
1932
1933      1886,  447,  447,  552,  896,  453,  563,  653,  653,  653,
1934      1887, 1522,  454,  656, 1888,  455,  653,  653,  653,  653,
1935       653,  653,  456,  447,  448,  251,  448,  447,  447,  447,
1936       447,  447,  447,  447,  449,  447,  447,  447, 1890,  447,
1937       451,  447,  452,  447,  562,  251,  562,  576,  251,  576,
1938       576,  251,  576, 1897,  587,  251,  587,  587,  251,  587,
1939       563, 1901, 1902,  577,  657, 1904,  577, 1709,  447,  447,
1940       588,  903,  453,  588,  653,  653,  653, 1914, 1915,  454,
1941       656, 1916,  455,  653,  653,  653,  909,  909,  909,  456,
1942       461,  462,  251,  462,  461,  461,  461,  461,  461,  461,
1943
1944       461,  463,  461,  461,  461, 1917,  461,  465,  461,  466,
1945       461,  251,  251,  251,  251,  251,  251,  587,  251,  587,
1946      1918,  587,  251,  587,  587,  251,  587,  303, 1919, 1920,
1947       303,  952, 1921,  588, 1922,  461,  461,  588,  936, 1923,
1948       589,  467, 1924, 1925,  942,  910,  468,  461,  462,  251,
1949       462,  461,  461,  461,  461,  461,  461,  461,  463,  461,
1950       461,  461, 1926,  461,  465,  461,  466,  461,  587,  251,
1951       587,  599,  251,  599,  599,  251,  599, 1928,  612,  251,
1952       612,  612,  251,  612,  589, 1929, 1930,  600,  935,  952,
1953       600, 1931,  461,  461,  613,  936,  936,  613,  467, 1934,
1954
1955      1937, 1086, 1086,  468,  472,  473,  251,  473,  472,  472,
1956       472,  472,  472,  472,  472,  474,  472,  472,  472, 1938,
1957       472,  476,  472,  477,  472,  251,  251,  251,  251,  251,
1958       251,  612,  251,  612, 1939,  612,  251,  612,  612,  251,
1959       612,  286, 1270, 1940,  286, 1151, 1941,  613, 1942,  472,
1960       472,  613, 1271, 1943,  614,  612,  251,  612, 1946, 1272,
1961       478,  909,  909,  909, 1955, 1155, 1170, 1170, 1170, 1960,
1962      1911,  614, 1961,  479,  472,  473,  251,  473,  472,  472,
1963       472,  472,  472,  472,  472,  474,  472,  472,  472, 1978,
1964       472,  476,  472,  477,  472,  626,  251,  626,  626,  251,
1965
1966       626,  251,  251,  251, 1984,  251,  251,  251,  626,  251,
1967       626,  627, 1985, 1986,  627, 1992, 1993,  628, 1994,  472,
1968       472,  628, 1995, 1998,  627,  626,  251,  626, 1999, 2002,
1969       478, 1162, 1162, 1162, 2003, 1163, 2012, 2016, 1164, 2019,
1970      2020,  627, 2021,  479,  483,  484,  251,  484,  483,  483,
1971       483,  483,  483,  483,  483,  485,  483,  483,  483, 2025,
1972       483,  487,  483,  488,  483,  626,  251,  626,  626,  251,
1973       626, 2028,  651,  251,  651, 2034, 2039,  651,  251,  651,
1974      2045,  629,  264,  265,  629, 2049, 2052,  266,  652,  483,
1975       483,  264,  265,  652,  672, 2053,  266,  639, 2055,  789,
1976
1977      1170, 1170, 1170, 2056,  698,  489,  639, 2057, 2058,  790,
1978       490,  483,  484,  251,  484,  483,  483,  483,  483,  483,
1979       483,  483,  485,  483,  483,  483,  640,  483,  487,  483,
1980       488,  483,  699, 2059, 2060,  640, 2061, 2063,  676, 2069,
1981      2070,  917,  917,  917,  679, 2071,  700, 2073,  701, 2075,
1982       685,  686,  970,  970,  970,  685,  483,  483,  918,  984,
1983       984,  984, 2083, 2088, 1171, 1193, 1193, 1193, 2089,  971,
1984      2090, 2092,  489, 1193, 1193, 1193,  985,  490,  494,  495,
1985       251,  495,  494,  494,  494,  494,  494,  494,  494,  496,
1986       494,  494,  494, 2110,  494,  498,  494,  499,  494,  986,
1987
1988       986,  986,  997,  997,  997, 1000, 1000, 1000, 1015, 1015,
1989      1015, 1025, 1025, 1025, 2111, 2112,  987, 2115, 2116,  998,
1990      2093, 2118, 1001,  494,  494, 1016, 2094, 1151, 1026, 1194,
1991      2095, 1227, 1227, 1227, 2096, 1228, 2119, 1171, 1229,  500,
1992      1709, 1170, 1170, 1170, 2105,  501,  494,  495,  251,  495,
1993       494,  494,  494,  494,  494,  494,  494,  496,  494,  494,
1994       494, 1709,  494,  498,  494,  499,  494, 1035, 1035, 1035,
1995      1037, 1037, 1037, 1046, 1046, 1046, 1054, 1054, 1054, 1058,
1996      1058, 1058, 2106, 2120, 1036, 2121, 2113, 1038, 2122, 2123,
1997      1047,  494,  494, 1055, 2107, 2124, 1059, 1253, 1253, 1253,
1998
1999      2127, 1254, 2114, 2128, 1255, 1194, 2129,  500, 1507, 1507,
2000      1507, 2130, 2133,  501,  505,  506,  251,  506,  505,  505,
2001       505,  505,  505,  505,  505,  507,  505,  505,  505, 2134,
2002       505,  509,  505,  510,  505, 1074, 1074, 1074, 1096, 1096,
2003      1096, 1102, 1102, 1102, 1118, 1118, 1118, 2135, 1124, 1124,
2004      1124, 2136, 1075, 2138, 2139, 1097, 2131, 2146, 1103,  505,
2005       505, 1119,  511,  512,  513, 1125, 2148, 1256, 1256, 1256,
2006       514, 1257, 2132,  515, 1258, 2150, 2171,  516, 2175, 2176,
2007       517,  505,  506,  251,  506,  505,  505,  505,  505,  505,
2008       505,  505,  507,  505,  505,  505, 2177,  505,  509,  505,
2009
2010       510,  505, 1130, 1130, 1130, 1138, 1138, 1138,  917,  917,
2011       917, 1209, 1209, 1209, 1166, 1166, 1166, 2183, 2184, 1131,
2012      2185, 2189, 1139, 2190, 2193,  918,  505,  505, 1210,  511,
2013       512,  513, 1168, 2194, 1273, 1273, 1273,  514, 1274, 2198,
2014       515, 1275, 2199, 2200,  516, 2201, 2204,  517,  522,  523,
2015       251,  523,  522,  522,  522,  522,  522,  522,  522,  524,
2016       522,  522,  522, 2208,  522,  526,  522,  527,  522, 1166,
2017      1166, 1166, 1213, 1213, 1213, 2209, 2210, 1216, 1216, 1216,
2018      3465, 3465, 3465, 3465, 3465, 3465, 2211, 1168, 2212, 1214,
2019      1222, 1222, 1222,  522,  522, 1218, 2215, 3465, 2222, 2226,
2020
2021      3465, 2227, 2228, 1277, 1277, 1277, 1169, 1278, 1224, 2233,
2022      1279, 1193, 1193, 1193, 1528, 1528, 1528,  528,  522,  523,
2023       251,  523,  522,  522,  522,  522,  522,  522,  522,  524,
2024       522,  522,  522, 1211,  522,  526,  522,  527,  522, 1215,
2025      1216, 1216, 1216,  970,  970,  970, 2235, 2236, 1212, 1222,
2026      1222, 1222, 1231, 1231, 1231, 1235, 1235, 1235, 1218, 2097,
2027       971, 2237, 2238,  522,  522, 2098, 2240, 1224, 2241, 2099,
2028      1233, 2244, 1236, 2100, 1296, 1296, 1296, 1219, 1297, 2246,
2029      2249, 1298, 1507, 1507, 1507, 2265, 2266,  528,  537,  538,
2030       251,  538,  537,  537,  537,  537,  537,  537,  537,  539,
2031
2032       537,  537,  537, 2267,  537,  541,  537,  542,  537, 1239,
2033      1239, 1239, 2272, 1225, 1241, 1241, 1241, 1241, 1241, 1241,
2034      3465, 3465, 3465, 1245, 1245, 1245, 1240, 2273, 2274, 1231,
2035      1231, 1231, 1243,  537,  537, 1243, 2275, 3465, 2276, 2277,
2036      1246,  543, 2278,  544, 2281, 2290,  545, 1233, 2291, 2292,
2037       546, 1729, 1729, 1729,  547,  537,  538,  251,  538,  537,
2038       537,  537,  537,  537,  537,  537,  539,  537,  537,  537,
2039      1237,  537,  541,  537,  542,  537, 1234, 1247, 1247, 1247,
2040      1249, 1249, 1249, 2293, 2279, 1238, 2296, 1151, 1244, 1249,
2041      1249, 1249, 2280, 2283, 1248,  984,  984,  984, 1251, 2298,
2042
2043       537,  537,  986,  986,  986, 2299, 1709, 1251,  543, 2300,
2044       544, 2301,  985,  545, 1732, 1732, 1732,  546, 2305,  987,
2045      1709,  547,  553,  554,  251,  554,  553,  553,  553,  553,
2046       553,  553,  553,  555,  553,  553,  553, 2284,  553,  557,
2047       553,  558,  553, 2307, 1259, 1259, 1259, 1265, 1265, 1265,
2048      1737, 1737, 1737, 1528, 1528, 1528, 3465, 3465, 3465, 2308,
2049      1252, 1260, 3465, 3465, 3465, 1267, 2285,  553,  553, 3465,
2050      3465, 3465, 2309, 3465, 2312, 1721, 1721, 1721,  559, 3465,
2051      1311, 1311, 1311, 2316, 1312, 2317, 3465, 1313, 1724, 1724,
2052      1724,  560,  553,  554,  251,  554,  553,  553,  553,  553,
2053
2054       553,  553,  553,  555,  553,  553,  553, 1261,  553,  557,
2055       553,  558,  553, 2319, 1262,  997,  997,  997, 1000, 1000,
2056      1000, 1722, 2321, 2332, 1263, 3465, 3465, 3465, 1280, 1280,
2057      1280, 2333,  998, 2334, 1725, 1001, 2335,  553,  553, 1265,
2058      1265, 1265, 3465, 2339, 2340, 1281, 2341, 2342,  559, 1324,
2059      1324, 1324, 2348, 1325, 2349, 2354, 1326, 1267, 1747, 1747,
2060      1747,  560,  564,  565,  251,  565,  564,  564,  564,  564,
2061       564,  564,  564,  566,  564,  564,  564, 1264,  564,  568,
2062       564,  569,  564, 1292, 1292, 1292, 1268, 1015, 1015, 1015,
2063      2355, 2358, 1292, 1292, 1292, 1299, 1299, 1299, 1025, 1025,
2064
2065      1025, 1294, 2362, 2350, 1016, 2363, 2352,  564,  564, 2364,
2066      1294, 2351, 2368, 1301, 2353, 1026,  570, 2365,  571, 1327,
2067      1327, 1327,  572, 1328, 2369, 2372, 1329,  573,  574,  564,
2068       565,  251,  565,  564,  564,  564,  564,  564,  564,  564,
2069       566,  564,  564,  564, 2374,  564,  568,  564,  569,  564,
2070      1295, 1304, 1304, 1304, 2375, 1304, 1304, 1304, 1299, 1299,
2071      1299, 1317, 1317, 1317, 1317, 1317, 1317, 2376, 2377, 1306,
2072      1035, 1035, 1035, 1306,  564,  564, 1301, 2389, 2366, 1319,
2073      2390, 2394, 1319,  570, 2397,  571, 2367, 1036, 2398,  572,
2074      1743, 1743, 1743, 2404,  573,  574,  578,  579,  251,  579,
2075
2076       578,  578,  578,  578,  578,  578,  578,  580,  578,  578,
2077       578, 2409,  578,  582,  578,  583,  578, 1307, 2411, 1302,
2078      1037, 1037, 1037, 2412, 2413, 1320, 1330, 1330, 1330, 2417,
2079      1330, 1330, 1330, 1335, 1335, 1335, 1744, 1038, 1335, 1335,
2080      1335,  578,  578, 2418, 1332, 2419, 2420,  584, 1332, 2421,
2081      2422, 1337, 2423, 1340, 1340, 1340, 1337, 1341, 2424, 2425,
2082      1342, 2426,  585,  578,  579,  251,  579,  578,  578,  578,
2083       578,  578,  578,  578,  580,  578,  578,  578, 2443,  578,
2084       582,  578,  583,  578, 1046, 1046, 1046, 1346, 1346, 1346,
2085      2444, 1333, 2445, 1054, 1054, 1054, 2447, 2450, 1338, 2451,
2086
2087      2453, 1047, 1346, 1346, 1346, 1348, 2454, 2455,  578,  578,
2088      1055, 1351, 1351, 1351,  584, 1352, 1709, 2456, 1353, 2457,
2089      1348, 1358, 1358, 1358, 1709, 1359, 2458, 2470, 1360,  585,
2090       590,  591,  251,  591,  590,  590,  590,  590,  590,  590,
2091       590,  592,  590,  590,  590, 2471,  590,  594,  590,  595,
2092       590, 1354, 1354, 1354, 1354, 1354, 1354, 1349, 2472, 2429,
2093      1058, 1058, 1058, 1362, 1362, 1362, 1362, 1362, 1362, 1356,
2094      2477, 2430, 1356, 2473, 2478,  590,  590, 1059, 2479, 2485,
2095       596, 1364, 2486, 2474, 1364, 2487,  597,  590,  591,  251,
2096       591,  590,  590,  590,  590,  590,  590,  590,  592,  590,
2097
2098       590,  590, 2488,  590,  594,  590,  595,  590, 2489, 1357,
2099      1368, 1368, 1368, 1368, 1368, 1368, 1374, 1374, 1374, 2490,
2100      1374, 1374, 1374, 1074, 1074, 1074, 2491, 1365, 1370, 2501,
2101      2502, 1370,  590,  590, 1376, 2503, 2504,  596, 1376, 2513,
2102      1075, 2514, 2515,  597,  601,  602,  251,  602,  601,  601,
2103       601,  601,  601,  601,  601,  603,  601,  601,  601, 2531,
2104       601,  605,  601,  606,  601, 1382, 1382, 1382, 2532, 1383,
2105      2533, 2536, 1384, 2538, 1371, 2539, 1385, 1385, 1385, 1389,
2106      1389, 1389, 1096, 1096, 1096, 1377, 1389, 1389, 1389,  601,
2107       601, 2540,  607, 1386,  608, 2541, 2542, 1391, 2543, 1097,
2108
2109       609, 1412, 1412, 1412, 1391, 1413, 2544, 2545, 1414, 2546,
2110      2547,  610,  601,  602,  251,  602,  601,  601,  601,  601,
2111       601,  601,  601,  603,  601,  601,  601, 2548,  601,  605,
2112       601,  606,  601, 1395, 1395, 1395, 2549, 1392, 1407, 1407,
2113      1407, 1709, 2554, 1395, 1395, 1395, 1407, 1407, 1407, 2555,
2114      2556, 1397, 1416, 1416, 1416, 2558, 1409,  601,  601, 2557,
2115       607, 1397,  608, 2559, 1409, 1421, 1421, 1421,  609, 1422,
2116      1418, 2560, 1423, 2552, 1746, 1746, 1746, 2561, 2564,  610,
2117       615,  616,  251,  616,  615,  615,  615,  615,  615,  615,
2118       615,  617,  615,  615,  615, 2565,  615,  619,  615,  620,
2119
2120       615, 1398, 2566, 2567, 1416, 1416, 1416, 1102, 1102, 1102,
2121      1410, 1424, 1424, 1424, 1427, 1427, 1427, 1432, 1432, 1432,
2122      1725, 2569, 1418, 2570, 1103,  615,  615, 2571, 1425, 2572,
2123       621, 1428, 1721, 1721, 1721, 1434,  622, 1446, 1446, 1446,
2124       623, 1447, 2573, 1709, 1448, 2575,  624,  615,  616,  251,
2125       616,  615,  615,  615,  615,  615,  615,  615,  617,  615,
2126       615,  615, 2576,  615,  619,  615,  620,  615, 1419, 1436,
2127      1436, 1436, 1438, 1438, 1438, 2577, 2562, 3465, 3465, 3465,
2128      2553, 2587, 1432, 1432, 1432, 2563, 1437, 2588, 2589, 1439,
2129      2590, 2591,  615,  615, 3465, 2595, 2598,  621, 2603, 2599,
2130
2131      1434, 2604, 2605,  622, 1455, 1455, 1455,  623, 1456, 2606,
2132      2613, 1457, 2600,  624,  630,  631,  251,  631,  630,  630,
2133       630,  630,  630,  630,  630,  632,  630,  630,  630, 1435,
2134       630,  634,  630,  635,  630, 2614, 1440, 1441, 1441, 1441,
2135      1441, 1441, 1441, 2601, 1118, 1118, 1118, 1449, 1449, 1449,
2136      1449, 1449, 1449, 2615, 2616, 1443, 2602, 2617, 1443,  630,
2137       630, 1119, 1464, 1464, 1464, 1451, 1465,  636, 1451, 1466,
2138       637, 2631, 1746, 1746, 1746, 2632, 2648,  638,  630,  631,
2139       251,  631,  630,  630,  630,  630,  630,  630,  630,  632,
2140       630,  630,  630, 2649,  630,  634,  630,  635,  630, 2650,
2141
2142      2651, 1444, 1124, 1124, 1124, 2653, 2654, 1459, 1459, 1459,
2143      2655, 1452, 1459, 1459, 1459, 1130, 1130, 1130, 1757, 1125,
2144      1469, 1469, 1469,  630,  630, 1461, 1724, 1724, 1724, 2656,
2145      1461,  636, 1131, 2657,  637, 1927, 1927, 1927, 1471, 2658,
2146      2659,  638,  641,  642,  251,  642,  641,  641,  641,  641,
2147       641,  641,  641,  643,  641,  641,  641, 2660,  641,  645,
2148       641,  646,  641, 2661, 2662, 1469, 1469, 1469, 1138, 1138,
2149      1138, 2663, 1475, 1475, 1475, 2664, 1476, 2669, 1462, 1477,
2150      1480, 1480, 1480, 1471, 2670, 1139, 2671,  641,  641, 1480,
2151      1480, 1480, 2672, 2673,  647, 1162, 1162, 1162, 1482, 1163,
2152
2153       648, 2674, 1164, 1729, 1729, 1729, 1709, 1482, 1151,  649,
2154       641,  642,  251,  642,  641,  641,  641,  641,  641,  641,
2155       641,  643,  641,  641,  641, 2675,  641,  645,  641,  646,
2156       641, 1472, 1487, 1487, 1487, 1709, 1487, 1487, 1487, 1166,
2157      1166, 1166, 1166, 1166, 1166, 1498, 1498, 1498, 2666, 2668,
2158      1489, 2676, 2677, 1483, 1489,  641,  641, 1168, 2678, 2679,
2159      1168, 2680,  647, 1499, 1209, 1209, 1209, 2681,  648, 1538,
2160      1538, 1538, 2667, 1539, 2682, 2684, 1540,  649,  657, 2685,
2161      2686, 1210, 1213, 1213, 1213,  672, 1543, 1543, 1543, 2687,
2162      1544, 2688, 2689, 1545,  656,  673, 1216, 1216, 1216, 1214,
2163
2164      1490, 1216, 1216, 1216, 1235, 1235, 1235, 1216, 1216, 1216,
2165      2694, 1227, 1227, 1227, 1218, 1228, 2695, 2696, 1229, 1218,
2166      2699, 1236,  674,  675,  676, 1218, 2700, 2704,  677,  678,
2167       679, 2707, 2710,  680,  681, 2711, 2719,  682, 2720,  683,
2168       684,  685,  657, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
2169      1222, 1222, 1231, 1231, 1231, 1231, 1231, 1231,  656,  687,
2170      2721, 1224, 2732, 2755, 1224, 2756, 2761, 1224, 2762, 2705,
2171      1233, 1547, 2763, 1233, 1239, 1239, 1239, 1231, 1231, 1231,
2172      2706, 1241, 1241, 1241, 2764, 2708,  674,  688,  689, 2765,
2173      2766, 1240,  690,  691,  692, 1233, 2709,  693,  681, 1243,
2174
2175      2767,  694, 1550,  695,  696,  697, 1554, 1554, 1554, 2725,
2176      1555, 2768, 2769, 1556, 1559, 1559, 1559, 2770, 1560, 2726,
2177      2775, 1561, 1241, 1241, 1241, 2727, 1553, 1241, 1241, 1241,
2178      1245, 1245, 1245, 2776, 1563, 1563, 1563, 2777, 1564, 2778,
2179      1243, 1565, 1247, 1247, 1247, 1243, 2779, 1246, 1566, 1566,
2180      1566, 1151, 1567, 2780, 2781, 1568, 1249, 1249, 1249, 1248,
2181      1249, 1249, 1249, 1249, 1249, 1249, 1253, 1253, 1253, 2782,
2182      1254, 2783, 1709, 1255, 1251, 1256, 1256, 1256, 1251, 1257,
2183      2772, 1251, 1258, 1259, 1259, 1259, 1570, 1570, 1570, 1562,
2184      1571, 2784, 2785, 1572, 1265, 1265, 1265, 1265, 1265, 1265,
2185
2186      1260, 1265, 1265, 1265, 1273, 1273, 1273, 2786, 1274, 2787,
2187      2789, 1275, 1267, 2744, 2773, 1267, 1582, 1582, 1582, 1267,
2188      1277, 1277, 1277, 2745, 1278, 1569, 2746, 1279, 1280, 1280,
2189      1280, 2790, 2791, 1583, 1584, 1584, 1584, 2793, 1585, 1709,
2190      2794, 1586, 1292, 1292, 1292, 1281, 1292, 1292, 1292, 1577,
2191      1292, 1292, 1292, 2800, 1296, 1296, 1296, 2801, 1297, 2809,
2192      1294, 1298, 2810, 2811, 1294, 1299, 1299, 1299, 1294, 1299,
2193      1299, 1299, 1299, 1299, 1299, 1600, 1600, 1600, 1304, 1304,
2194      1304, 2774, 2812, 1301, 1304, 1304, 1304, 1301, 2813, 2814,
2195      1301, 2815, 1601, 1304, 1304, 1304, 1306, 1605, 1605, 1605,
2196
2197      2816, 2823, 1306, 1311, 1311, 1311, 2826, 1312, 2827, 2828,
2198      1313, 1306, 2829, 2830, 1606, 2831, 2832, 1598, 1317, 1317,
2199      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1613, 1613, 1613,
2200      2835, 2843, 1599, 1324, 1324, 1324, 1319, 1325, 2747, 1319,
2201      1326, 2844, 1319, 2847, 1614, 1327, 1327, 1327, 2748, 1328,
2202      2848, 2749, 1329, 1330, 1330, 1330, 1330, 1330, 1330, 2839,
2203      1602, 1330, 1330, 1330, 1616, 1616, 1616, 1335, 1335, 1335,
2204      2866, 1332, 2840, 2867, 1332, 1335, 1335, 1335, 2868, 1332,
2205      2869, 1617, 1335, 1335, 1335, 1337, 1346, 1346, 1346, 1610,
2206      1340, 1340, 1340, 1337, 1341, 2870, 2871, 1342, 2841, 2872,
2207
2208      1337, 1346, 1346, 1346, 1348, 1346, 1346, 1346, 1351, 1351,
2209      1351, 2842, 1352, 2873, 2728, 1353, 1354, 1354, 1354, 1348,
2210      1354, 1354, 1354, 1348, 2729, 2879, 1615, 1354, 1354, 1354,
2211      2730, 1618, 2880, 1709, 1356, 1358, 1358, 1358, 1356, 1359,
2212      2881, 2882, 1360, 2883, 1151, 1356, 1362, 1362, 1362, 1362,
2213      1362, 1362, 1362, 1362, 1362, 1628, 1628, 1628, 3465, 3465,
2214      3465, 1368, 1368, 1368, 1364, 1623, 2884, 1364, 2876, 2885,
2215      1364, 2886, 1629, 2845, 2887, 3465, 1368, 1368, 1368, 1370,
2216      1368, 1368, 1368, 1632, 1632, 1632, 2846, 1625, 2849, 3465,
2217      3465, 3465, 2875, 2888, 1370, 1374, 1374, 1374, 1370, 2889,
2218
2219      1633, 2850, 1627, 2890, 2891, 1630, 3465, 1374, 1374, 1374,
2220      1374, 1374, 1374, 1376, 1382, 1382, 1382, 1634, 1383, 2893,
2221      2894, 1384, 1385, 1385, 1385, 1376, 2896, 2897, 1376, 1640,
2222      1640, 1640, 2904, 1641, 2905, 2912, 1642, 2898, 2913, 1386,
2223      1389, 1389, 1389, 1389, 1389, 1389, 2914, 1631, 1389, 1389,
2224      1389, 1395, 1395, 1395, 1395, 1395, 1395, 2899, 1391, 2915,
2225      2916, 1391, 1395, 1395, 1395, 2917, 1391, 2900, 2918, 1397,
2226      2919, 2923, 1397, 1653, 1653, 1653, 1635, 1407, 1407, 1407,
2227      1397, 2924, 1407, 1407, 1407, 1407, 1407, 1407, 2928, 2929,
2228      1654, 2930, 1416, 1416, 1416, 1409, 1416, 1416, 1416, 1645,
2229
2230      1409, 2931, 2932, 1409, 1412, 1412, 1412, 2933, 1413, 1648,
2231      1418, 1414, 2934, 2935, 1418, 1416, 1416, 1416, 1421, 1421,
2232      1421, 2936, 1422, 2937, 2938, 1423, 1424, 1424, 1424, 2939,
2233      1663, 1663, 1663, 1418, 1664, 2940, 2941, 1665, 1666, 1666,
2234      1666, 2942, 2943, 1425, 2944, 2945, 1658, 1427, 1427, 1427,
2235      1668, 1668, 1668, 2946, 1669, 1667, 2947, 1670, 1672, 1672,
2236      1672, 1432, 1432, 1432, 1428, 1432, 1432, 1432, 1432, 1432,
2237      1432, 1436, 1436, 1436, 2961, 1673, 1661, 2962, 2963, 1434,
2238      1676, 1676, 1676, 1434, 1677, 2950, 1434, 1678, 1437, 1438,
2239      1438, 1438, 1679, 1679, 1679, 2951, 1680, 2964, 2965, 1681,
2240
2241      1441, 1441, 1441, 1441, 1441, 1441, 1439, 1441, 1441, 1441,
2242      1446, 1446, 1446, 2966, 1447, 2967, 2952, 1448, 1443, 2968,
2243      2976, 1443, 1449, 1449, 1449, 1443, 2953, 2977, 1675, 1449,
2244      1449, 1449, 1449, 1449, 1449, 1455, 1455, 1455, 2978, 1456,
2245      1451, 2979, 1457, 1459, 1459, 1459, 2980, 1451, 1151, 2981,
2246      1451, 1459, 1459, 1459, 1459, 1459, 1459, 2982, 1464, 1464,
2247      1464, 1461, 1465, 2983, 2988, 1466, 1692, 1692, 1692, 1461,
2248      2989, 2990, 1461, 2991, 1683, 1469, 1469, 1469, 1469, 1469,
2249      1469, 2993, 2970, 1693, 1469, 1469, 1469, 1696, 1696, 1696,
2250      1475, 1475, 1475, 1471, 1476, 2994, 1471, 1477, 2997, 1685,
2251
2252      2998, 2999, 1471, 3000, 1697, 3465, 3465, 3465, 1480, 1480,
2253      1480, 1480, 1480, 1480, 3001, 1689, 1480, 1480, 1480, 1702,
2254      1702, 1702, 3465, 1487, 1487, 1487, 1482, 3002, 3003, 1482,
2255      1487, 1487, 1487, 3004, 1482, 3009, 1703, 1487, 1487, 1487,
2256      3010, 1489, 1708, 1708, 1708, 1694, 3011, 3012, 1489, 1498,
2257      1498, 1498, 1538, 1538, 1538, 1489, 1539, 3013, 3014, 1540,
2258      1709, 1710, 3015, 1700, 3016, 3017, 1698, 1499, 1543, 1543,
2259      1543, 3018, 1544, 3019, 3020, 1545, 1216, 1216, 1216, 1758,
2260      1758, 1758, 3021, 3022, 1705, 1222, 1222, 1222, 1231, 1231,
2261      1231, 1554, 1554, 1554, 1218, 1555, 1759, 3023, 1556, 3024,
2262
2263      1559, 1559, 1559, 1224, 1560, 3025, 1233, 1561, 1241, 1241,
2264      1241, 1563, 1563, 1563, 3029, 1564, 3030, 3031, 1565, 3032,
2265      1566, 1566, 1566, 3035, 1567, 3036, 1243, 1568, 1249, 1249,
2266      1249, 1570, 1570, 1570, 3037, 1571, 3038, 1756, 1572, 1768,
2267      1768, 1768, 3465, 3465, 3465, 1763, 1251, 3465, 3465, 3465,
2268      3039, 3040, 1760, 3048, 3049, 1766, 1769, 3050, 3051, 3465,
2269      3465, 3465, 3465, 3052, 3465, 1265, 1265, 1265, 1775, 1775,
2270      1775, 1582, 1582, 1582, 1151, 1767, 3053, 3465, 3054, 3055,
2271      1779, 1779, 1779, 1267, 1780, 1776, 3056, 1781, 1583, 1584,
2272      1584, 1584, 3057, 1585, 1771, 3060, 1586, 1784, 1784, 1784,
2273
2274      1292, 1292, 1292, 1299, 1299, 1299, 1600, 1600, 1600, 1796,
2275      1796, 1796, 1770, 1797, 1785, 3061, 1798, 3042, 1294, 3067,
2276      1773, 1301, 3068, 1601, 1799, 1799, 1799, 1605, 1605, 1605,
2277      1772, 1803, 1803, 1803, 3069, 1804, 3070, 3071, 1805, 1806,
2278      1806, 1806, 1800, 3078, 1606, 1809, 1809, 1809, 1317, 1317,
2279      1317, 1613, 1613, 1613, 3079, 1795, 1807, 1815, 1815, 1815,
2280      3080, 1816, 1810, 3081, 1817, 1794, 1319, 3082, 1614, 1330,
2281      1330, 1330, 1616, 1616, 1616, 1819, 1819, 1819, 3083, 1820,
2282      3084, 3085, 1821, 1335, 1335, 1335, 3086, 1332, 3087, 1617,
2283      3088, 1811, 1826, 1826, 1826, 1346, 1346, 1346, 1354, 1354,
2284
2285      1354, 1337, 1832, 1832, 1832, 1362, 1362, 1362, 3089, 1827,
2286      1628, 1628, 1628, 1348, 1812, 3090, 1356, 3091, 3092, 1833,
2287      1632, 1632, 1632, 1364, 1835, 1835, 1835, 1629, 1836, 3093,
2288      3094, 1837, 1368, 1368, 1368, 1818, 3095, 1633, 1828, 3096,
2289      3097, 1822, 1840, 1840, 1840, 3098, 1841, 3099, 3100, 1842,
2290      1370, 3101, 1829, 3102, 3103, 1831, 1834, 1374, 1374, 1374,
2291      1846, 1846, 1846, 1640, 1640, 1640, 3104, 1641, 3116, 3114,
2292      1642, 1850, 1850, 1850, 3117, 1376, 3120, 1847, 1389, 1389,
2293      1389, 1395, 1395, 1395, 1653, 1653, 1653, 1151, 1851, 1407,
2294      1407, 1407, 1839, 1861, 1861, 1861, 1391, 1862, 3109, 1397,
2295
2296      1863, 1654, 1869, 1869, 1869, 3109, 3121, 1409, 1416, 1416,
2297      1416, 3115, 3110, 1663, 1663, 1663, 3112, 1664, 1844, 1870,
2298      1665, 3122, 1666, 1666, 1666, 3123, 1418, 1873, 1873, 1873,
2299      3118, 1874, 3124, 3107, 1875, 1672, 1672, 1672, 1867, 1667,
2300      3125, 3133, 1853, 3134, 1668, 1668, 1668, 1856, 1669, 3135,
2301      3140, 1670, 1673, 1877, 1877, 1877, 3141, 1878, 3142, 3143,
2302      1879, 1432, 1432, 1432, 1676, 1676, 1676, 3144, 1677, 3119,
2303      1871, 1678, 3145, 1679, 1679, 1679, 3146, 1680, 3147, 1434,
2304      1681, 1441, 1441, 1441, 1449, 1449, 1449, 1459, 1459, 1459,
2305      1891, 1891, 1891, 1692, 1692, 1692, 1893, 1893, 1893, 1443,
2306
2307      1894, 3148, 1451, 1895, 3149, 1461, 3150, 1892, 3151, 3126,
2308      1693, 1881, 1469, 1469, 1469, 1696, 1696, 1696, 1898, 1898,
2309      1898, 3127, 1899, 3152, 3155, 1900, 1480, 1480, 1480, 3128,
2310      1471, 3136, 1697, 3155, 3138, 1702, 1702, 1702, 1905, 1905,
2311      1905, 3129, 1906, 3137, 1482, 1907, 3139, 1883, 1709, 1710,
2312      1885, 1889, 1703, 1908, 1908, 1908, 1487, 1487, 1487, 1708,
2313      1708, 1708, 1732, 1732, 1732, 1932, 1932, 1932, 1151, 3172,
2314      1909, 1935, 1935, 1935, 1489, 1903, 1896, 1709, 1737, 1737,
2315      1737, 1743, 1743, 1743, 1746, 1746, 1746, 1747, 1747, 1747,
2316      1944, 1944, 1944, 1947, 1947, 1947, 1932, 1932, 1932, 1944,
2317
2318      1944, 1944, 1949, 1949, 1949, 1910, 1951, 1951, 1951, 3153,
2319      1912, 3465, 3465, 3465, 1216, 1216, 1216, 1936, 3164, 1950,
2320      1758, 1758, 1758, 1952, 1222, 1222, 1222, 1913, 3465, 1933,
2321      3175, 3176, 1218, 3165, 1956, 1956, 1956, 1759, 1957, 1948,
2322      3170, 1958, 1224, 1231, 1231, 1231, 3177, 1963, 1963, 1963,
2323      1965, 1965, 1965, 3182, 1945, 1241, 1241, 1241, 3109, 3171,
2324      1945, 1233, 3160, 1933, 1964, 3158, 3173, 1966, 1249, 1249,
2325      1249, 3109, 3110, 1243, 3185, 1953, 1768, 1768, 1768, 3159,
2326      3161, 1954, 3112, 1959, 3188, 3174, 1251, 3189, 1969, 1969,
2327      1969, 1962, 1970, 1769, 3190, 1971, 1972, 1972, 1972, 3465,
2328
2329      3465, 3465, 1975, 1975, 1975, 1265, 1265, 1265, 1775, 1775,
2330      1775, 3180, 3162, 1973, 3191, 3192, 3465, 3193, 3155, 1976,
2331      1967, 3195, 3183, 1267, 3155, 1776, 3163, 1979, 1979, 1979,
2332      3181, 1980, 3196, 1968, 1981, 1982, 1982, 1982, 1779, 1779,
2333      1779, 3184, 1780, 3197, 3198, 1781, 1784, 1784, 1784, 1987,
2334      1987, 1987, 1983, 1988, 3199, 3200, 1989, 1974, 1990, 1990,
2335      1990, 3201, 3208, 1785, 3209, 1977, 1996, 1996, 1996, 1292,
2336      1292, 1292, 1299, 1299, 1299, 1991, 3210, 1796, 1796, 1796,
2337      3211, 1797, 3212, 1997, 1798, 3213, 3214, 1294, 3215, 3219,
2338      1301, 1799, 1799, 1799, 1803, 1803, 1803, 3220, 1804, 3221,
2339
2340      3222, 1805, 1806, 1806, 1806, 3223, 2004, 2004, 2004, 1800,
2341      2005, 3224, 3228, 2006, 2007, 2007, 2007, 3229, 3230, 1807,
2342      1809, 1809, 1809, 2013, 2013, 2013, 3231, 2001, 2015, 2015,
2343      2015, 2008, 2009, 2009, 2009, 2000, 2010, 1810, 3232, 2011,
2344      3233, 2014, 1815, 1815, 1815, 3235, 1816, 3236, 3237, 1817,
2345      1330, 1330, 1330, 1819, 1819, 1819, 3238, 1820, 3239, 3240,
2346      1821, 1335, 1335, 1335, 1826, 1826, 1826, 3241, 1332, 2022,
2347      2022, 2022, 3246, 2023, 3247, 3248, 2024, 3249, 3250, 1337,
2348      3251, 1827, 2026, 2026, 2026, 1354, 1354, 1354, 1832, 1832,
2349      1832, 2030, 2030, 2030, 3252, 2031, 2017, 3253, 2032, 3254,
2350
2351      2027, 3255, 3242, 1356, 3256, 1833, 1362, 1362, 1362, 1835,
2352      1835, 1835, 3257, 1836, 3243, 3258, 1837, 1368, 1368, 1368,
2353      2036, 2036, 2036, 3259, 1364, 1840, 1840, 1840, 2018, 1841,
2354      3260, 2029, 1842, 3261, 3263, 1370, 3264, 2037, 1374, 1374,
2355      1374, 1846, 1846, 1846, 2040, 2040, 2040, 1151, 2041, 3265,
2356      3244, 2042, 2043, 2043, 2043, 3266, 1376, 3267, 1847, 1850,
2357      1850, 1850, 3245, 3268, 2033, 3269, 2046, 2046, 2046, 2044,
2358      2047, 3270, 3262, 2048, 3271, 3272, 1851, 2050, 2050, 2050,
2359      1395, 1395, 1395, 2035, 1861, 1861, 1861, 3273, 1862, 3274,
2360      3275, 1863, 1407, 1407, 1407, 2051, 3276, 3277, 1397, 1869,
2361
2362      1869, 1869, 2038, 3278, 2064, 2064, 2064, 3279, 2065, 3280,
2363      1409, 2066, 2067, 2067, 2067, 3281, 1870, 1873, 1873, 1873,
2364      3282, 1874, 3283, 3284, 1875, 3285, 3286, 1877, 1877, 1877,
2365      2068, 1878, 2054, 3288, 1879, 1432, 1432, 1432, 1441, 1441,
2366      1441, 1151, 3289, 2062, 1449, 1449, 1449, 2077, 2077, 2077,
2367      3465, 3465, 3465, 1434, 3290, 3291, 1443, 2080, 2080, 2080,
2368      3287, 3292, 1451, 3293, 2078, 3294, 3295, 3465, 1459, 1459,
2369      1459, 1891, 1891, 1891, 2081, 2084, 2084, 2084, 3296, 2085,
2370      3297, 3298, 2086, 1893, 1893, 1893, 1461, 1894, 1892, 2074,
2371      1895, 1469, 1469, 1469, 3299, 2076, 2072, 1898, 1898, 1898,
2372
2373      3300, 1899, 3301, 3302, 1900, 1480, 1480, 1480, 3303, 1471,
2374      1905, 1905, 1905, 3304, 1906, 2082, 2079, 1907, 1908, 1908,
2375      1908, 3305, 3306, 1482, 2101, 2101, 2101, 3307, 2102, 3308,
2376      3309, 2103, 1487, 1487, 1487, 1909, 3311, 3312, 2087, 3313,
2377      2108, 2108, 2108, 2117, 2117, 2117, 1927, 1927, 1927, 3314,
2378      1489, 2125, 2125, 2125, 3315, 3316, 2091, 2109, 1932, 1932,
2379      1932, 2126, 2126, 2126, 1935, 1935, 1935, 1944, 1944, 1944,
2380      2137, 2137, 2137, 1947, 1947, 1947, 1949, 1949, 1949, 1151,
2381      2140, 2140, 2140, 2104, 2141, 3317, 3318, 2142, 1951, 1951,
2382      1951, 3319, 3320, 1950, 2143, 2143, 2143, 3321, 2144, 3310,
2383
2384      3322, 2145, 1216, 1216, 1216, 1952, 1956, 1956, 1956, 3323,
2385      1957, 3324, 3325, 1958, 1222, 1222, 1222, 2151, 2151, 2151,
2386      1218, 1231, 1231, 1231, 1963, 1963, 1963, 3326, 3327, 2154,
2387      2154, 2154, 1224, 2155, 2152, 3328, 2156, 3329, 3330, 1233,
2388      3331, 1964, 1965, 1965, 1965, 2157, 2157, 2157, 3332, 2158,
2389      3334, 3335, 2159, 1241, 1241, 1241, 1249, 1249, 1249, 1966,
2390      1969, 1969, 1969, 1151, 1970, 2149, 3336, 1971, 2147, 3333,
2391      3337, 1243, 3338, 3339, 1251, 1972, 1972, 1972, 3340, 2162,
2392      2162, 2162, 2153, 2163, 3341, 3342, 2164, 2165, 2165, 2165,
2393      3343, 3344, 1973, 1975, 1975, 1975, 2167, 2167, 2167, 3345,
2394
2395      2168, 3346, 3347, 2169, 2166, 1265, 1265, 1265, 1151, 3349,
2396      1976, 3350, 1979, 1979, 1979, 3351, 1980, 3352, 2160, 1981,
2397      3353, 2161, 3348, 1267, 1982, 1982, 1982, 2172, 2172, 2172,
2398      3354, 2173, 3355, 3356, 2174, 1987, 1987, 1987, 3357, 1988,
2399      3358, 1983, 1989, 1990, 1990, 1990, 2178, 2178, 2178, 3360,
2400      2179, 3361, 3362, 2180, 3363, 3364, 2170, 2181, 2181, 2181,
2401      1991, 1996, 1996, 1996, 2186, 2186, 2186, 3365, 2187, 3366,
2402      3367, 2188, 3368, 3369, 2182, 1292, 1292, 1292, 1997, 1299,
2403      1299, 1299, 2004, 2004, 2004, 3372, 2005, 3373, 3374, 2006,
2404      2007, 2007, 2007, 1294, 2195, 2195, 2195, 1301, 2196, 3375,
2405
2406      3376, 2197, 2009, 2009, 2009, 3377, 2010, 2008, 1151, 2011,
2407      2013, 2013, 2013, 2015, 2015, 2015, 1330, 1330, 1330, 1335,
2408      1335, 1335, 2205, 2205, 2205, 1151, 2191, 1151, 2014, 2022,
2409      2022, 2022, 2192, 2023, 1332, 1151, 2024, 1337, 1720, 2206,
2410      2026, 2026, 2026, 1354, 1354, 1354, 2030, 2030, 2030, 3396,
2411      2031, 1151, 1151, 2032, 1362, 1362, 1362, 1151, 2027, 1151,
2412      1719, 1356, 2216, 2216, 2216, 2036, 2036, 2036, 2207, 2203,
2413      1151, 3378, 1364, 3380, 2202, 3381, 1151, 2218, 2218, 2218,
2414      2217, 2219, 2037, 1718, 2220, 1374, 1374, 1374, 3379, 2040,
2415      2040, 2040, 2213, 2041, 3388, 3384, 2042, 2043, 2043, 2043,
2416
2417      2214, 3385, 1151, 1376, 2223, 2223, 2223, 3382, 2224, 3386,
2418      3410, 2225, 3389, 1151, 2044, 2046, 2046, 2046, 3383, 2047,
2419      1151, 1151, 2048, 2050, 2050, 2050, 2229, 2229, 2229, 1395,
2420      1395, 1395, 2221, 2232, 2232, 2232, 2234, 2234, 2234, 1151,
2421      1717, 2051, 1151, 2230, 1407, 1407, 1407, 1397, 2064, 2064,
2422      2064, 1151, 2065, 3404, 1151, 2066, 2067, 2067, 2067, 2242,
2423      2242, 2242, 1409, 1432, 1432, 1432, 2247, 2247, 2247, 1449,
2424      1449, 1449, 3390, 1151, 2068, 3391, 2243, 2077, 2077, 2077,
2425      1151, 1434, 3387, 1151, 2248, 3400, 1151, 1451, 3394, 3392,
2426      2231, 2251, 2251, 2251, 2078, 2252, 3424, 1151, 2253, 2254,
2427
2428      2254, 2254, 2080, 2080, 2080, 1151, 2257, 2257, 2257, 2239,
2429      2258, 1151, 1151, 2259, 1716, 1715, 2255, 1151, 1151, 2081,
2430      3393, 1714, 2245, 1459, 1459, 1459, 2261, 2261, 2261, 3405,
2431      2084, 2084, 2084, 2250, 2085, 1151, 1151, 2086, 1469, 1469,
2432      1469, 1461, 3395, 2262, 1151, 2256, 2268, 2268, 2268, 2270,
2433      2270, 2270, 3397, 2101, 2101, 2101, 1471, 2102, 3401, 3425,
2434      2103, 1487, 1487, 1487, 2269, 3440, 2271, 2108, 2108, 2108,
2435      3398, 3399, 2263, 2286, 2286, 2286, 2260, 2287, 3411, 1489,
2436      2288, 2289, 2289, 2289, 2109, 2294, 2294, 2294, 2295, 2295,
2437      2295, 2264, 2117, 2117, 2117, 2297, 2297, 2297, 2302, 2302,
2438
2439      2302, 2125, 2125, 2125, 2126, 2126, 2126, 2282, 2303, 2303,
2440      2303, 2306, 2306, 2306, 2310, 2310, 2310, 2311, 2311, 2311,
2441      2313, 2313, 2313, 2137, 2137, 2137, 2314, 2314, 2314, 2140,
2442      2140, 2140, 1151, 2141, 3406, 1151, 2142, 2143, 2143, 2143,
2443      1151, 2144, 1151, 1151, 2145, 1216, 1216, 1216, 1222, 1222,
2444      1222, 2151, 2151, 2151, 2304, 2322, 2322, 2322, 1151, 2323,
2445      1151, 3430, 2324, 1218, 1151, 1151, 1224, 3407, 2152, 1231,
2446      1231, 1231, 2315, 2154, 2154, 2154, 1151, 2155, 3412, 3402,
2447      2156, 2157, 2157, 2157, 1151, 2158, 3414, 1233, 2159, 1241,
2448      1241, 1241, 1249, 1249, 1249, 3403, 2318, 2162, 2162, 2162,
2449
2450      3408, 2163, 1151, 3413, 2164, 3444, 1151, 1243, 2320, 2326,
2451      1251, 1151, 1151, 2165, 2165, 2165, 2328, 2328, 2328, 3409,
2452      2329, 1713, 1712, 2330, 1265, 1265, 1265, 3420, 2327, 2325,
2453      2166, 2167, 2167, 2167, 1151, 2168, 1151, 3416, 2169, 2172,
2454      2172, 2172, 1267, 2173, 3418, 3419, 2174, 2178, 2178, 2178,
2455      1151, 2179, 3415, 3438, 2180, 2181, 2181, 2181, 2336, 2336,
2456      2336, 1151, 2337, 3439, 1151, 2338, 2186, 2186, 2186, 3417,
2457      2187, 1151, 2182, 2188, 2343, 2343, 2343, 1292, 1292, 1292,
2458      2346, 2346, 2346, 3462, 3421, 2195, 2195, 2195, 1711, 2196,
2459      2331, 2344, 2197, 1151, 1151, 1294, 3426, 1151, 2347, 1330,
2460
2461      1330, 1330, 1335, 1335, 1335, 2205, 2205, 2205, 2359, 2359,
2462      2359, 3441, 2360, 1704, 1151, 2361, 1701, 1332, 1151, 1699,
2463      1337, 1151, 2206, 1151, 1354, 1354, 1354, 1362, 1362, 1362,
2464      2216, 2216, 2216, 2218, 2218, 2218, 1151, 2219, 1695, 1151,
2465      2220, 2345, 1356, 3427, 1691, 1364, 3452, 3431, 2217, 1374,
2466      1374, 1374, 3432, 2357, 2356, 2223, 2223, 2223, 3422, 2224,
2467      3423, 1151, 2225, 2229, 2229, 2229, 1690, 1376, 2378, 2378,
2468      2378, 1688, 2379, 3428, 3446, 2380, 1395, 1395, 1395, 3433,
2469      2230, 2232, 2232, 2232, 2382, 2382, 2382, 1151, 1151, 2371,
2470      2370, 2234, 2234, 2234, 1397, 2383, 2383, 2383, 3465, 3465,
2471
2472      3465, 1151, 2373, 3465, 3465, 3465, 3465, 3465, 3465, 1407,
2473      1407, 1407, 2384, 1151, 1151, 3465, 2242, 2242, 2242, 1151,
2474      3465, 3434, 1151, 3465, 2391, 2391, 2391, 1409, 2392, 1151,
2475      1687, 2393, 1151, 2243, 2395, 2395, 2395, 2247, 2247, 2247,
2476      2381, 2399, 2399, 2399, 2251, 2251, 2251, 3436, 2252, 2385,
2477      3429, 2253, 2396, 3435, 1151, 2248, 2254, 2254, 2254, 2400,
2478      3437, 3453, 2401, 2401, 2401, 2387, 2402, 2386, 3448, 2403,
2479      1459, 1459, 1459, 2255, 2388, 2257, 2257, 2257, 3449, 2258,
2480      1151, 1151, 2259, 2261, 2261, 2261, 1686, 1684, 1461, 2406,
2481      2406, 2406, 1682, 2407, 1674, 3445, 2408, 1469, 1469, 1469,
2482
2483      2262, 2268, 2268, 2268, 1671, 2270, 2270, 2270, 1151, 2414,
2484      2414, 2414, 1151, 2415, 1151, 1471, 2416, 3442, 3443, 2269,
2485      1662, 2405, 2271, 1487, 1487, 1487, 2428, 2428, 2428, 2286,
2486      2286, 2286, 3462, 2287, 2431, 2432, 2288, 2433, 3454, 2436,
2487      2437, 1489, 2438, 3447, 1151, 2434, 1151, 1151, 2410, 3450,
2488      2439, 3451, 2435, 2289, 2289, 2289, 1660, 2440, 2441, 2441,
2489      2441, 2442, 2442, 2442, 2294, 2294, 2294, 2295, 2295, 2295,
2490      1659, 1657, 2427, 2297, 2297, 2297, 2446, 2446, 2446, 2448,
2491      2448, 2448, 2449, 2449, 2449, 2302, 2302, 2302, 2303, 2303,
2492      2303, 2306, 2306, 2306, 2452, 2452, 2452, 2310, 2310, 2310,
2493
2494      2311, 2311, 2311, 2313, 2313, 2313, 2314, 2314, 2314, 2459,
2495      2459, 2459, 2461, 2461, 2461, 1222, 1222, 1222, 2463, 2463,
2496      2463, 2322, 2322, 2322, 1151, 2323, 1656, 2460, 2324, 1231,
2497      1231, 1231, 1655, 1224, 1151, 2464, 1241, 1241, 1241, 1249,
2498      1249, 1249, 2328, 2328, 2328, 1652, 2329, 1233, 1651, 2330,
2499      2468, 2468, 2468, 1649, 1243, 3455, 3456, 1251, 2336, 2336,
2500      2336, 1647, 2337, 1646, 1151, 2338, 3457, 1644, 2469, 2475,
2501      2475, 2475, 1151, 2466, 2343, 2343, 2343, 2483, 2483, 2483,
2502      2465, 2462, 1151, 2480, 2480, 2480, 2476, 2481, 1643, 1151,
2503      2482, 2344, 2346, 2346, 2346, 2484, 2492, 2492, 2492, 1151,
2504
2505      2467, 1330, 1330, 1330, 2494, 2494, 2494, 2496, 2496, 2496,
2506      2347, 2359, 2359, 2359, 3460, 2360, 1639, 1638, 2361, 1332,
2507      3458, 3461, 2495, 1637, 2497, 3465, 3465, 3465, 3465, 3465,
2508      3465, 3465, 3465, 3465, 2506, 2506, 2506, 1354, 1354, 1354,
2509      1636, 1626, 3465, 1624, 1622, 3465, 1621, 3459, 3465, 1620,
2510      1619, 2507, 1612, 2498, 1611, 1356, 1362, 1362, 1362, 1609,
2511      1608, 2493, 2510, 2510, 2510, 1374, 1374, 1374, 2516, 2516,
2512      2516, 2378, 2378, 2378, 1364, 2379, 1607, 1604, 2380, 2511,
2513      2499, 1603, 2505, 1376, 1395, 1395, 1395, 1595, 1594, 2500,
2514      2382, 2382, 2382, 2383, 2383, 2383, 1593, 2508, 1592, 2518,
2515
2516      2518, 2518, 1397, 2519, 1591, 1590, 2520, 2521, 2521, 2521,
2517      2384, 3465, 3465, 3465, 1589, 1588, 2512, 3465, 3465, 3465,
2518      2509, 2525, 2525, 2525, 2522, 2527, 2527, 2527, 3465, 2528,
2519      2528, 2528, 1587, 1581, 3465, 3465, 3465, 3465, 1580, 2526,
2520      2391, 2391, 2391, 2517, 2392, 1579, 2529, 2393, 2395, 2395,
2521      2395, 1578, 3465, 2399, 2399, 2399, 2401, 2401, 2401, 1576,
2522      2402, 1575, 2523, 2403, 1574, 1573, 2396, 1558, 2524, 1557,
2523      1552, 2400, 2534, 2534, 2534, 2406, 2406, 2406, 1551, 2407,
2524      1549, 1548, 2408, 1546, 1469, 1469, 1469, 2414, 2414, 2414,
2525      2535, 2415, 1542, 1541, 2416, 1487, 1487, 1487, 2428, 2428,
2526
2527      2428, 2530, 1471, 2441, 2441, 2441, 2442, 2442, 2442, 2568,
2528      2568, 2568, 1537, 1489, 1536, 1535, 1151, 2446, 2446, 2446,
2529      2448, 2448, 2448, 2449, 2449, 2449, 2452, 2452, 2452, 1534,
2530      2537, 2574, 2574, 2574, 2459, 2459, 2459, 2461, 2461, 2461,
2531      2578, 2578, 2578, 1533, 2463, 2463, 2463, 2580, 2580, 2580,
2532      1532, 2581, 2460, 1531, 2582, 1530, 2550, 1529, 2579, 1527,
2533      2551, 2464, 2583, 2583, 2583, 1241, 1241, 1241, 1249, 1249,
2534      1249, 2468, 2468, 2468, 2475, 2475, 2475, 2592, 2592, 2592,
2535      2584, 2593, 1526, 1243, 2594, 1525, 1251, 1524, 1523, 2469,
2536      1521, 2476, 2596, 2596, 2596, 2480, 2480, 2480, 1520, 2481,
2537
2538      1519, 1518, 2482, 2483, 2483, 2483, 2607, 2607, 2607, 2597,
2539      2492, 2492, 2492, 1330, 1330, 1330, 2494, 2494, 2494, 1515,
2540      1514, 2484, 1513, 2608, 2496, 2496, 2496, 1512, 1511, 2585,
2541      1510, 1332, 1509, 1508, 2495, 2586, 2610, 2610, 2610, 1506,
2542      2611, 2497, 1505, 2612, 2618, 2618, 2618, 2506, 2506, 2506,
2543      2620, 2620, 2620, 1504, 2621, 1503, 1502, 2622, 2623, 2623,
2544      2623, 2619, 1501, 1500, 2507, 1362, 1362, 1362, 1497, 1496,
2545      2609, 2510, 2510, 2510, 1495, 1494, 2624, 2626, 2626, 2626,
2546      1493, 2627, 1492, 1364, 2628, 2629, 2629, 2629, 2511, 2633,
2547      2633, 2633, 2516, 2516, 2516, 2635, 2635, 2635, 2518, 2518,
2548
2549      2518, 1151, 2519, 2630, 1486, 2520, 2634, 2521, 2521, 2521,
2550      2637, 2637, 2637, 2636, 2638, 1485, 1484, 2639, 2640, 2640,
2551      2640, 2642, 2642, 2642, 2522, 1479, 2625, 2525, 2525, 2525,
2552      2527, 2527, 2527, 1478, 1474, 2641, 1468, 1467, 2643, 2528,
2553      2528, 2528, 2644, 2644, 2644, 2526, 2645, 1463, 1458, 2646,
2554      3465, 3465, 3465, 2534, 2534, 2534, 2529, 1469, 1469, 1469,
2555      1487, 1487, 1487, 2568, 2568, 2568, 1454, 3465, 2683, 2683,
2556      2683, 2535, 2574, 2574, 2574, 1471, 1453, 1445, 1489, 2690,
2557      2690, 2690, 2578, 2578, 2578, 2580, 2580, 2580, 1431, 2581,
2558      1430, 1429, 2582, 2583, 2583, 2583, 2691, 1241, 1241, 1241,
2559
2560      2579, 1249, 1249, 1249, 1426, 2647, 1420, 2697, 2697, 2697,
2561      1415, 2584, 2717, 2717, 2717, 1243, 2596, 2596, 2596, 1251,
2562      2665, 1411, 1406, 2652, 2698, 2592, 2592, 2592, 1405, 2593,
2563      2718, 1404, 2594, 2597, 2701, 2701, 2701, 1403, 2702, 1402,
2564      1401, 2703, 2712, 2712, 2712, 2607, 2607, 2607, 2714, 2714,
2565      2714, 1400, 2715, 1399, 1394, 2716, 1393, 1388, 2692, 2713,
2566      1387, 1381, 2608, 1378, 2610, 2610, 2610, 2693, 2611, 1373,
2567      1372, 2612, 2618, 2618, 2618, 2722, 2722, 2722, 1367, 2723,
2568      1366, 1361, 2724, 2620, 2620, 2620, 1350, 2621, 1345, 2619,
2569      2622, 2623, 2623, 2623, 1362, 1362, 1362, 2626, 2626, 2626,
2570
2571      1344, 2627, 1343, 1339, 2628, 2629, 2629, 2629, 1334, 2624,
2572      1323, 1322, 1364, 2733, 2733, 2733, 2633, 2633, 2633, 1316,
2573      2735, 2735, 2735, 2630, 2736, 1315, 1314, 2737, 1310, 1309,
2574      2734, 1308, 1303, 2634, 2635, 2635, 2635, 2637, 2637, 2637,
2575      1291, 2638, 1290, 1289, 2639, 2640, 2640, 2640, 2642, 2642,
2576      2642, 1288, 2636, 2738, 2738, 2738, 2731, 2739, 1287, 1286,
2577      2740, 1285, 2641, 1284, 1283, 2643, 2741, 2741, 2741, 1282,
2578      2742, 1276, 1269, 2743, 2644, 2644, 2644, 1230, 2645, 1226,
2579      1221, 2646, 3465, 3465, 3465, 2751, 2751, 2751, 2753, 2753,
2580      2753, 1469, 1469, 1469, 2758, 2758, 2758, 1220, 1208, 3465,
2581
2582      1207, 1206, 2752, 1205, 1204, 2754, 2759, 2759, 2759, 1471,
2583      1487, 1487, 1487, 2788, 2788, 2788, 2683, 2683, 2683, 2792,
2584      2792, 2792, 1203, 2760, 2690, 2690, 2690, 1202, 1489, 2795,
2585      2795, 2795, 1201, 2796, 1200, 1199, 2797, 1241, 1241, 1241,
2586      1198, 2691, 1197, 2750, 1196, 1249, 1249, 1249, 2802, 2802,
2587      2802, 2697, 2697, 2697, 1195, 1243, 1192, 2804, 2804, 2804,
2588      1191, 2805, 2757, 1251, 2806, 2803, 1190, 1189, 2698, 1188,
2589      2771, 2807, 2807, 2807, 2701, 2701, 2701, 1187, 2702, 1186,
2590      1185, 2703, 2817, 2817, 2817, 2712, 2712, 2712, 2808, 1184,
2591      2820, 2820, 2820, 1181, 2821, 1180, 2799, 2822, 1179, 2818,
2592
2593      1178, 1177, 2713, 1176, 2798, 2714, 2714, 2714, 1175, 2715,
2594      1174, 1173, 2716, 2717, 2717, 2717, 2824, 2824, 2824, 2722,
2595      2722, 2722, 1172, 2723, 1165, 1161, 2724, 1160, 2819, 1159,
2596      1158, 2718, 1157, 2825, 2833, 2833, 2833, 2733, 2733, 2733,
2597      2836, 2836, 2836, 1154, 2837, 1152, 1151, 2838, 1149, 2735,
2598      2735, 2735, 2834, 2736, 2734, 1147, 2737, 2738, 2738, 2738,
2599      1146, 2739, 1145, 1144, 2740, 2741, 2741, 2741, 1143, 2742,
2600      1140, 1137, 2743, 3465, 3465, 3465, 2751, 2751, 2751, 2852,
2601      2852, 2852, 1135, 2853, 1133, 1132, 2854, 2753, 2753, 2753,
2602      3465, 1129, 1128, 2752, 2855, 2855, 2855, 1126, 2856, 1123,
2603
2604      1122, 2857, 1121, 1117, 2754, 2858, 2858, 2858, 2860, 2860,
2605      2860, 1469, 1469, 1469, 2758, 2758, 2758, 2759, 2759, 2759,
2606      1116, 1114, 2859, 1113, 1112, 2861, 1487, 1487, 1487, 1471,
2607      2877, 2877, 2877, 2851, 2760, 2863, 2863, 2863, 1111, 2864,
2608      1109, 1108, 2865, 1107, 1489, 1106, 1105, 2878, 1709, 2788,
2609      2788, 2788, 2892, 2892, 2892, 2792, 2792, 2792, 2895, 2895,
2610      2895, 2795, 2795, 2795, 1104, 2796, 1101, 1100, 2797, 1241,
2611      1241, 1241, 1098, 2862, 2902, 2902, 2902, 2874, 2802, 2802,
2612      2802, 2906, 2906, 2906, 1095, 2907, 1094, 1243, 2908, 2804,
2613      2804, 2804, 2903, 2805, 1092, 2803, 2806, 2807, 2807, 2807,
2614
2615      2909, 2909, 2909, 1091, 2910, 1090, 1089, 2911, 2817, 2817,
2616      2817, 2920, 2920, 2920, 2808, 2921, 1088, 1084, 2922, 2820,
2617      2820, 2820, 1082, 2821, 1081, 2818, 2822, 2824, 2824, 2824,
2618      2925, 2925, 2925, 1080, 2926, 2901, 1078, 2927, 2833, 2833,
2619      2833, 2836, 2836, 2836, 2825, 2837, 1077, 1076, 2838, 2948,
2620      2948, 2948, 1073, 2852, 2852, 2852, 2834, 2853, 1072, 1071,
2621      2854, 2855, 2855, 2855, 1070, 2856, 2949, 1068, 2857, 2858,
2622      2858, 2858, 2954, 2954, 2954, 1067, 2955, 1066, 1064, 2956,
2623      2860, 2860, 2860, 2957, 2957, 2957, 2859, 2958, 1063, 1062,
2624      2959, 1469, 1469, 1469, 2863, 2863, 2863, 2861, 2864, 1060,
2625
2626      1057, 2865, 1487, 1487, 1487, 2971, 2971, 2971, 1053, 1471,
2627      2877, 2877, 2877, 1052, 2973, 2973, 2973, 1050, 2974, 1049,
2628      1489, 2975, 2972, 1709, 2984, 2984, 2984, 2878, 1709, 2892,
2629      2892, 2892, 1709, 2985, 2985, 2985, 2986, 2986, 2986, 2895,
2630      2895, 2895, 2960, 2987, 2987, 2987, 1241, 1241, 1241, 1048,
2631      1045, 2969, 2902, 2902, 2902, 2906, 2906, 2906, 1044, 2907,
2632      1043, 1041, 2908, 1040, 1243, 2909, 2909, 2909, 1034, 2910,
2633      2903, 1031, 2911, 2995, 2995, 2995, 2920, 2920, 2920, 1029,
2634      2921, 1028, 1027, 2922, 3005, 3005, 3005, 2925, 2925, 2925,
2635      2996, 2926, 1022, 1021, 2927, 1019, 1018, 2992, 3007, 3007,
2636
2637      3007, 3006, 2948, 2948, 2948, 3026, 3026, 3026, 1014, 3027,
2638      1012, 1011, 3028, 1010, 1009, 3008, 2954, 2954, 2954, 2949,
2639      2955, 1008, 1007, 2956, 2957, 2957, 2957, 1006, 2958, 1005,
2640      1004, 2959, 3033, 3033, 3033, 1487, 1487, 1487, 2971, 2971,
2641      2971, 3043, 3043, 3043, 1003, 3044, 1002,  999, 3045,  996,
2642      3034,  995,  994, 1489,  992, 2972, 1709,  991,  990, 1709,
2643      2973, 2973, 2973,  989, 2974,  988,  983, 2975, 2984, 2984,
2644      2984, 2985, 2985, 2985, 2986, 2986, 2986,  981, 1709, 2987,
2645      2987, 2987, 3058, 3058, 3058, 3062, 3062, 3062,  980, 3063,
2646       979,  977, 3064,  976, 2995, 2995, 2995, 3065, 3065, 3065,
2647
2648      3059, 3041, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
2649      1707, 2996,  975, 1707, 3066, 3005, 3005, 3005, 1707, 1707,
2650      1707, 1709, 1707, 3072, 3072, 3072,  974, 3073,  972,  969,
2651      3074,  968, 3006, 3075, 3075, 3075,  966, 3076,  965,  964,
2652      3077, 3007, 3007, 3007, 3033, 3033, 3033, 1707, 1707, 1707,
2653      1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 3008,  962,
2654      1707,  961, 3034,  960,  959, 1707, 1707, 1707, 1709, 1707,
2655      3026, 3026, 3026,  956, 3027,  955,  954, 3028, 3105, 3105,
2656      3105, 3043, 3043, 3043,  951, 3044,  950,  949, 3045,  948,
2657       943, 3058, 3058, 3058, 1707, 1707, 3106,  941,  940, 1709,
2658
2659      1707, 1707, 1707, 1707, 1707, 3113, 1707, 1707, 1707, 3059,
2660       932, 1707, 3065, 3065, 3065,  931, 1707, 1707, 1707, 1709,
2661      1707, 3062, 3062, 3062,  930, 3063,  929,  923, 3064, 3066,
2662      3130, 3130, 3130,  922, 3131,  921,  919, 3132, 3105, 3105,
2663      3105, 3157, 3157, 3157,  916, 1707, 1707, 1707, 1707, 1707,
2664      1707, 1707, 1707, 1707, 1707, 3113, 3106,  915, 1707, 1709,
2665      1710,  914,  913, 1707, 1707, 1707, 1709, 1707, 3072, 3072,
2666      3072,  908, 3073,  905,  907, 3074, 3075, 3075, 3075,  902,
2667      3076,  901,  900, 3077, 3166, 3166, 3166, 3168, 3168, 3168,
2668       898,  897, 1707, 1707,  894, 3130, 3130, 3130,  893, 3131,
2669
2670       892, 3167, 3132,  890, 3169, 3178, 3178, 3178, 3186, 3186,
2671      3186, 3194, 3194, 3194, 3157, 3157, 3157, 3166, 3166, 3166,
2672       889,  887, 3179,  886,  885, 3187, 3202, 3202, 3202, 1151,
2673      3203,  884, 1709, 3204, 3167, 3168, 3168, 3168, 3205, 3205,
2674      3205,  882, 3206,  881,  880, 3207, 3178, 3178, 3178, 3216,
2675      3216, 3216, 3169, 3217,  879,  878, 3218, 3186, 3186, 3186,
2676      3225, 3225, 3225, 3179, 3226, 1912,  877, 3227, 3194, 3194,
2677      3194, 3202, 3202, 3202, 3187, 3203,  875,  873, 3204,  872,
2678      3205, 3205, 3205,  870, 3206,  866, 1151, 3207, 3216, 3216,
2679      3216,  864, 3217,  860,  856, 3218, 3225, 3225, 3225,  855,
2680
2681      3226,  853,  851, 3227,  850, 3234, 3359, 3359, 3359, 3359,
2682      3359, 3359,  848, 3370,  847,  845, 3371, 3463, 3463, 3463,
2683      3463, 3463, 3463,  844, 1151,  843,  842, 1151,  841,  839,
2684       838,  832,  830,  827,  826, 3464,  825,  824, 3464,  248,
2685       248,  248,  248,  248,  248,  248,  248,  248,  249,  249,
2686       249,  249,  249,  249,  249,  249,  249,  254,  254,  254,
2687       254,  254,  254,  254,  254,  254,  257,  257,  257,  257,
2688       257,  257,  257,  257,  257,  260,  260,  260,  260,  260,
2689       260,  260,  260,  260,  263,  263,  263,  263,  263,  263,
2690       263,  263,  263,  270,  270,  270,  270,  270,  270,  270,
2691
2692       270,  270,  277,  277,  277,  277,  277,  277,  277,  277,
2693       277,  282,  282,  282,  282,  282,  282,  282,  282,  282,
2694       294,  294,  294,  294,  294,  294,  294,  294,  294,  300,
2695       300,  300,  300,  300,  300,  300,  300,  300,  308,  308,
2696       308,  308,  308,  308,  308,  308,  308,  312,  312,  312,
2697       312,  312,  312,  312,  312,  312,  318,  318,  318,  318,
2698       318,  318,  318,  318,  318,  324,  324,  324,  324,  324,
2699       324,  324,  324,  324,  330,  330,  330,  330,  330,  330,
2700       330,  330,  330,  336,  336,  336,  336,  336,  336,  336,
2701       336,  336,  343,  343,  343,  343,  343,  343,  343,  343,
2702
2703       343,  348,  348,  348,  348,  348,  348,  348,  348,  348,
2704       355,  355,  355,  355,  355,  355,  355,  355,  355,  364,
2705       364,  364,  364,  364,  364,  364,  364,  364,  382,  382,
2706       382,  382,  382,  382,  382,  382,  382,  389,  389,  389,
2707       389,  389,  389,  389,  389,  389,  393,  393,  393,  393,
2708       393,  393,  393,  393,  393,  400,  400,  400,  400,  400,
2709       400,  400,  400,  400,  404,  404,  404,  404,  404,  404,
2710       404,  404,  404,  410,  410,  410,  410,  410,  410,  410,
2711       410,  410,  418,  418,  418,  418,  418,  418,  418,  418,
2712       418,  426,  426,  426,  426,  426,  426,  426,  426,  426,
2713
2714       432,  432,  432,  432,  432,  432,  432,  432,  432,  438,
2715       438,  438,  438,  438,  438,  438,  438,  438,  442,  442,
2716       442,  442,  442,  442,  442,  442,  442,  450,  450,  450,
2717       450,  450,  450,  450,  450,  450,  457,  457,  457,  457,
2718       457,  457,  457,  457,  457,  464,  464,  464,  464,  464,
2719       464,  464,  464,  464,  469,  469,  469,  469,  469,  469,
2720       469,  469,  469,  475,  475,  475,  475,  475,  475,  475,
2721       475,  475,  480,  480,  480,  480,  480,  480,  480,  480,
2722       480,  486,  486,  486,  486,  486,  486,  486,  486,  486,
2723       491,  491,  491,  491,  491,  491,  491,  491,  491,  497,
2724
2725       497,  497,  497,  497,  497,  497,  497,  497,  502,  502,
2726       502,  502,  502,  502,  502,  502,  502,  508,  508,  508,
2727       508,  508,  508,  508,  508,  508,  518,  518,  518,  518,
2728       518,  518,  518,  518,  518,  525,  525,  525,  525,  525,
2729       525,  525,  525,  525,  529,  529,  529,  529,  529,  529,
2730       529,  529,  529,  540,  540,  540,  540,  540,  540,  540,
2731       540,  540,  548,  548,  548,  548,  548,  548,  548,  548,
2732       548,  556,  556,  556,  556,  556,  556,  556,  556,  556,
2733       561,  561,  561,  561,  561,  561,  561,  561,  561,  567,
2734       567,  567,  567,  567,  567,  567,  567,  567,  575,  575,
2735
2736       575,  575,  575,  575,  575,  575,  575,  581,  581,  581,
2737       581,  581,  581,  581,  581,  581,  586,  586,  586,  586,
2738       586,  586,  586,  586,  586,  593,  593,  593,  593,  593,
2739       593,  593,  593,  593,  598,  598,  598,  598,  598,  598,
2740       598,  598,  598,  604,  604,  604,  604,  604,  604,  604,
2741       604,  604,  611,  611,  611,  611,  611,  611,  611,  611,
2742       611,  618,  618,  618,  618,  618,  618,  618,  618,  618,
2743       625,  625,  625,  625,  625,  625,  625,  625,  625,  633,
2744       633,  633,  633,  633,  633,  633,  633,  633,  263,  263,
2745       263,  263,  263,  263,  263,  263,  263,  644,  644,  644,
2746
2747       644,  644,  644,  644,  644,  644,  650,  650,  650,  650,
2748       650,  650,  650,  650,  650,  669,  669,  669,  823,  822,
2749       821,  669,  705,  705,  705,  819,  817,  816,  705,  713,
2750       713,  713,  814,  812,  811,  713,  717,  717,  717,  809,
2751       807,  806,  717,  723,  723,  723,  804,  802,  801,  723,
2752       729,  729,  729,  799,  798,  795,  729,  734,  734,  734,
2753       794,  793,  791,  734,  744,  744,  744, 3465,  788,  786,
2754       744,  763,  763,  763,  784,  783,  782,  763,  767,  767,
2755       767,  780,  779,  777,  767,  771,  771,  771,  774,  773,
2756       772,  771,  781,  781,  781,  770,  768,  766,  781,  787,
2757
2758       787,  787,  765,  764,  762,  787,  792,  792,  792,  761,
2759       760,  749,  792,  800,  800,  800,  748,  745,  743,  800,
2760       805,  805,  805,  741,  740,  737,  805,  810,  810,  810,
2761       736,  735,  733,  810,  815,  815,  815,  731,  730,  728,
2762       815,  820,  820,  820,  726,  725,  724,  820,  831,  831,
2763       831,  722,  720,  719,  831,  840,  840,  840,  718,  716,
2764       714,  840,  849,  849,  849,  712,  707,  706,  849,  854,
2765       854,  854,  704, 3465,  686,  854,  865,  865,  865,  671,
2766       670,  668,  865,  871,  871,  871,  667,  661,  660,  871,
2767       876,  876,  876,  661,  660,  659,  876,  883,  883,  883,
2768
2769       658, 3465, 3465,  883,  891,  891,  891, 3465, 3465, 3465,
2770       891,  899,  899,  899, 3465, 3465, 3465,  899,  904,  904,
2771       904,  904,  904,  904,  904, 3465,  904,  669,  669,  669,
2772      3465, 3465, 3465,  669,  920, 3465, 3465, 3465,  920,  705,
2773       705,  705, 3465, 3465, 3465,  705,  963, 3465, 3465, 3465,
2774       963,  713,  713,  713, 3465, 3465, 3465,  713,  967, 3465,
2775      3465, 3465,  967,  717,  717,  717, 3465, 3465, 3465,  717,
2776       973, 3465, 3465, 3465,  973,  723,  723,  723, 3465, 3465,
2777      3465,  723,  978, 3465, 3465, 3465,  978,  729,  729,  729,
2778      3465, 3465, 3465,  729,  982, 3465, 3465, 3465,  982,  734,
2779
2780       734,  734, 3465, 3465, 3465,  734,  993, 3465, 3465, 3465,
2781       993,  744,  744,  744, 3465, 3465, 3465,  744, 1013, 3465,
2782      3465, 3465, 1013,  763,  763,  763, 3465, 3465, 3465,  763,
2783      1017, 3465, 3465, 3465, 1017,  767,  767,  767, 3465, 3465,
2784      3465,  767, 1020, 3465, 3465, 3465, 1020,  771,  771,  771,
2785      3465, 3465, 3465,  771, 1030, 3465, 3465, 3465, 1030,  781,
2786       781,  781, 3465, 3465, 3465,  781, 1039, 3465, 3465, 3465,
2787      1039,  787,  787,  787, 3465, 3465, 3465,  787, 1042, 3465,
2788      3465, 3465, 1042,  792,  792,  792, 3465, 3465, 3465,  792,
2789      1051, 3465, 3465, 3465, 1051,  800,  800,  800, 3465, 3465,
2790
2791      3465,  800, 1056, 3465, 3465, 3465, 1056,  805,  805,  805,
2792      3465, 3465, 3465,  805, 1061, 3465, 3465, 3465, 1061,  810,
2793       810,  810, 3465, 3465, 3465,  810, 1065, 3465, 3465, 3465,
2794      1065,  815,  815,  815, 3465, 3465, 3465,  815, 1069, 3465,
2795      3465, 3465, 1069,  820,  820,  820, 3465, 3465, 3465,  820,
2796      1079, 3465, 3465, 3465, 1079,  831,  831,  831, 3465, 3465,
2797      3465,  831, 1083, 3465, 3465, 3465, 1083,  840,  840,  840,
2798      3465, 3465, 3465,  840, 1093, 3465, 3465, 3465, 1093,  849,
2799       849,  849, 3465, 3465, 3465,  849, 1099, 3465, 3465, 3465,
2800      1099,  854,  854,  854, 3465, 3465, 3465,  854, 1110, 3465,
2801
2802      3465, 3465, 1110,  865,  865,  865, 3465, 3465, 3465,  865,
2803      1115, 3465, 3465, 3465, 1115,  871,  871,  871, 3465, 3465,
2804      3465,  871, 1120, 3465, 3465, 3465, 1120,  876,  876,  876,
2805      3465, 3465, 3465,  876, 1127, 3465, 3465, 3465, 1127,  883,
2806       883,  883, 3465, 3465, 3465,  883, 1134, 3465, 3465, 3465,
2807      1134,  891,  891,  891, 3465, 3465, 3465,  891, 1142, 3465,
2808      3465, 3465, 1142,  899,  899,  899, 3465, 3465, 3465,  899,
2809      1148, 3465, 3465, 3465, 1148, 1150, 1150, 1150, 1150, 1150,
2810      1150, 1150, 1150, 1150, 1156, 3465, 3465, 3465, 3465, 1156,
2811       669,  669,  669, 3465, 3465, 3465,  669, 1167, 1167, 1167,
2812
2813      1167, 3465, 3465, 1167, 1167,  705,  705,  705,  705, 3465,
2814       705, 3465,  705, 1217, 1217, 1217, 1217, 3465, 3465, 1217,
2815      1217,  713,  713,  713, 3465, 3465, 3465,  713, 1223, 1223,
2816      1223, 1223, 3465, 3465, 1223, 1223,  717,  717,  717, 3465,
2817      3465, 3465,  717, 1232, 1232, 1232, 1232, 3465, 3465, 1232,
2818      1232,  723,  723,  723,  723, 3465,  723, 3465,  723, 1242,
2819      1242, 1242, 1242, 3465, 3465, 1242, 1242,  729,  729,  729,
2820       729, 3465,  729, 3465,  729, 1250, 1250, 1250, 1250, 3465,
2821      3465, 1250, 1250,  734,  734,  734,  734, 3465,  734, 3465,
2822       734, 1266, 1266, 1266, 1266, 3465, 3465, 1266, 1266,  744,
2823
2824       744,  744, 3465, 3465, 3465,  744, 1293, 1293, 1293, 1293,
2825      3465, 3465, 1293, 1293, 1300, 1300, 1300, 1300, 3465, 3465,
2826      1300, 1300,  767,  767,  767, 3465, 3465, 3465,  767, 1305,
2827      1305, 1305, 1305, 3465, 3465, 1305, 1305,  771,  771,  771,
2828      3465, 3465, 3465,  771, 1318, 1318, 1318, 1318, 3465, 3465,
2829      1318, 1318,  781,  781,  781, 3465, 3465, 3465,  781, 1331,
2830      1331, 1331, 1331, 3465, 3465, 1331, 1331,  787,  787,  787,
2831      3465, 3465, 3465,  787, 1336, 1336, 1336, 1336, 3465, 3465,
2832      1336, 1336,  792,  792,  792, 3465, 3465, 3465,  792, 1347,
2833      1347, 1347, 1347, 3465, 3465, 1347, 1347,  800,  800,  800,
2834
2835      3465, 3465, 3465,  800, 1355, 1355, 1355, 1355, 3465, 3465,
2836      1355, 1355,  805,  805,  805, 3465, 3465, 3465,  805, 1363,
2837      1363, 1363, 1363, 3465, 3465, 1363, 1363,  810,  810,  810,
2838      3465, 3465, 3465,  810, 1369, 1369, 1369, 1369, 3465, 3465,
2839      1369, 1369,  815,  815,  815, 3465, 3465, 3465,  815, 1375,
2840      1375, 1375, 1375, 3465, 3465, 1375, 1375,  820,  820,  820,
2841      3465, 3465, 3465,  820, 1390, 1390, 1390, 1390, 3465, 3465,
2842      1390, 1390,  831,  831,  831, 3465, 3465, 3465,  831, 1396,
2843      1396, 1396, 1396, 3465, 3465, 1396, 1396,  840,  840,  840,
2844      3465, 3465, 3465,  840, 1408, 1408, 1408, 1408, 3465, 3465,
2845
2846      1408, 1408,  849,  849,  849, 3465, 3465, 3465,  849, 1417,
2847      1417, 1417, 1417, 3465, 3465, 1417, 1417,  854,  854,  854,
2848      3465, 3465, 3465,  854, 1433, 1433, 1433, 1433, 3465, 3465,
2849      1433, 1433,  865,  865,  865,  865, 3465,  865, 3465,  865,
2850      1442, 1442, 1442, 1442, 3465, 3465, 1442, 1442,  871,  871,
2851       871, 3465, 3465, 3465,  871, 1450, 1450, 1450, 1450, 3465,
2852      3465, 1450, 1450,  876,  876,  876, 3465, 3465, 3465,  876,
2853      1460, 1460, 1460, 1460, 3465, 3465, 1460, 1460,  883,  883,
2854       883, 3465, 3465, 3465,  883, 1470, 1470, 1470, 1470, 3465,
2855      3465, 1470, 1470,  891,  891,  891, 3465, 3465, 3465,  891,
2856
2857      1481, 1481, 1481, 1481, 3465, 3465, 1481, 1481,  899,  899,
2858       899, 3465, 3465, 3465,  899, 1488, 1488, 1488, 1488, 3465,
2859      3465, 1488, 1488, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
2860      1150, 1150, 1156, 3465, 1156, 3465, 3465, 1156,  669,  669,
2861       669, 3465, 3465, 3465,  669, 1167, 1167, 1167, 1167, 3465,
2862      3465, 1167, 1167,  705,  705,  705, 3465, 3465, 3465,  705,
2863      1217, 1217, 1217, 1217, 3465, 3465, 1217, 1217,  713,  713,
2864       713, 3465, 3465, 3465,  713, 1223, 1223, 1223, 1223, 3465,
2865      3465, 1223, 1223,  717,  717,  717, 3465, 3465, 3465,  717,
2866      1232, 1232, 1232, 1232, 3465, 3465, 1232, 1232,  723,  723,
2867
2868       723, 3465, 3465, 3465,  723, 1242, 1242, 1242, 1242, 3465,
2869      3465, 1242, 1242, 1250, 1250, 1250, 1250, 3465, 3465, 1250,
2870      1250,  734,  734,  734, 3465, 3465, 3465,  734, 1266, 1266,
2871      1266, 1266, 3465, 3465, 1266, 1266,  744,  744,  744, 3465,
2872      3465, 3465,  744, 1293, 1293, 1293, 1293, 3465, 3465, 1293,
2873      1293, 1300, 1300, 1300, 1300, 3465, 3465, 1300, 1300,  767,
2874       767,  767,  767, 3465,  767, 3465,  767, 1305, 1305, 1305,
2875      1305, 3465, 3465, 1305, 1305,  771,  771,  771, 3465, 3465,
2876      3465,  771, 1318, 1318, 1318, 1318, 3465, 3465, 1318, 1318,
2877       781,  781,  781,  781, 3465,  781, 3465,  781, 1331, 1331,
2878
2879      1331, 1331, 3465, 3465, 1331, 1331,  787,  787,  787,  787,
2880      3465,  787, 3465,  787, 1336, 1336, 1336, 1336, 3465, 3465,
2881      1336, 1336,  792,  792,  792, 3465, 3465, 3465,  792, 1347,
2882      1347, 1347, 1347, 3465, 3465, 1347, 1347,  800,  800,  800,
2883      3465, 3465, 3465,  800, 1355, 1355, 1355, 1355, 3465, 3465,
2884      1355, 1355,  805,  805,  805, 3465, 3465, 3465,  805, 1363,
2885      1363, 1363, 1363, 3465, 3465, 1363, 1363,  810,  810,  810,
2886       810, 3465,  810, 3465,  810, 1369, 1369, 1369, 1369, 3465,
2887      3465, 1369, 1369,  815,  815,  815,  815, 3465,  815, 3465,
2888       815, 1375, 1375, 1375, 1375, 3465, 3465, 1375, 1375,  820,
2889
2890       820,  820, 3465, 3465, 3465,  820, 1390, 1390, 1390, 1390,
2891      3465, 3465, 1390, 1390,  831,  831,  831, 3465, 3465, 3465,
2892       831, 1396, 1396, 1396, 1396, 3465, 3465, 1396, 1396,  840,
2893       840,  840, 3465, 3465, 3465,  840, 1408, 1408, 1408, 1408,
2894      3465, 3465, 1408, 1408,  849,  849,  849, 3465, 3465, 3465,
2895       849, 1417, 1417, 1417, 1417, 3465, 3465, 1417, 1417,  854,
2896       854,  854, 3465, 3465, 3465,  854, 1433, 1433, 1433, 1433,
2897      3465, 3465, 1433, 1433,  865,  865,  865, 3465, 3465, 3465,
2898       865, 1442, 1442, 1442, 1442, 3465, 3465, 1442, 1442,  871,
2899       871,  871, 3465, 3465, 3465,  871, 1450, 1450, 1450, 1450,
2900
2901      3465, 3465, 1450, 1450,  876,  876,  876, 3465, 3465, 3465,
2902       876, 1460, 1460, 1460, 1460, 3465, 3465, 1460, 1460,  883,
2903       883,  883, 3465, 3465, 3465,  883, 1470, 1470, 1470, 1470,
2904      3465, 3465, 1470, 1470,  891,  891,  891,  891, 3465,  891,
2905      3465,  891, 1481, 1481, 1481, 1481, 3465, 3465, 1481, 1481,
2906       899,  899,  899, 3465, 3465, 3465,  899, 1488, 1488, 1488,
2907      1488, 3465, 3465, 1488, 1488, 1150, 1150, 1150, 1150, 1150,
2908      1150, 1150, 1150, 1150, 1707, 1707, 1707, 1707, 1707, 1707,
2909      1707, 1707, 1707,  669,  669,  669, 3465, 3465, 3465,  669,
2910       705,  705,  705, 3465, 3465, 3465,  705, 1217, 1217, 1217,
2911
2912      1217, 3465, 3465, 1217, 1217,  713,  713,  713,  713, 3465,
2913       713, 3465,  713, 1223, 1223, 1223, 1223, 3465, 3465, 1223,
2914      1223,  717,  717,  717, 3465, 3465, 3465,  717, 1232, 1232,
2915      1232, 1232, 3465, 3465, 1232, 1232,  723,  723,  723, 3465,
2916      3465, 3465,  723, 1242, 1242, 1242, 1242, 3465, 3465, 1242,
2917      1242, 1250, 1250, 1250, 1250, 3465, 3465, 1250, 1250,  734,
2918       734,  734,  734, 3465,  734, 3465,  734, 1266, 1266, 1266,
2919      1266, 3465, 3465, 1266, 1266,  744,  744,  744, 3465, 3465,
2920      3465,  744, 1293, 1293, 1293, 1293, 3465, 3465, 1293, 1293,
2921      1300, 1300, 1300, 1300, 3465, 3465, 1300, 1300, 1305, 1305,
2922
2923      1305, 1305, 3465, 3465, 1305, 1305,  771,  771,  771, 3465,
2924      3465, 3465,  771, 1318, 1318, 1318, 1318, 3465, 3465, 1318,
2925      1318, 1331, 1331, 1331, 1331, 3465, 3465, 1331, 1331, 1336,
2926      1336, 1336, 1336, 3465, 3465, 1336, 1336,  792,  792,  792,
2927      3465, 3465, 3465,  792, 1347, 1347, 1347, 1347, 3465, 3465,
2928      1347, 1347,  800,  800,  800, 3465, 3465, 3465,  800, 1355,
2929      1355, 1355, 1355, 3465, 3465, 1355, 1355,  805,  805,  805,
2930       805, 3465,  805, 3465,  805, 1363, 1363, 1363, 1363, 3465,
2931      3465, 1363, 1363,  810,  810,  810, 3465, 3465, 3465,  810,
2932      1369, 1369, 1369, 1369, 3465, 3465, 1369, 1369,  815,  815,
2933
2934       815, 3465, 3465, 3465,  815, 1375, 1375, 1375, 1375, 3465,
2935      3465, 1375, 1375,  820,  820,  820, 3465, 3465, 3465,  820,
2936      1390, 1390, 1390, 1390, 3465, 3465, 1390, 1390,  831,  831,
2937       831, 3465, 3465, 3465,  831, 1396, 1396, 1396, 1396, 3465,
2938      3465, 1396, 1396,  840,  840,  840, 3465, 3465, 3465,  840,
2939      1408, 1408, 1408, 1408, 3465, 3465, 1408, 1408,  849,  849,
2940       849,  849, 3465,  849, 3465,  849, 1417, 1417, 1417, 1417,
2941      3465, 3465, 1417, 1417,  854,  854,  854, 3465, 3465, 3465,
2942       854, 1433, 1433, 1433, 1433, 3465, 3465, 1433, 1433,  865,
2943       865,  865, 3465, 3465, 3465,  865, 1442, 1442, 1442, 1442,
2944
2945      3465, 3465, 1442, 1442,  871,  871,  871, 3465, 3465, 3465,
2946       871, 1450, 1450, 1450, 1450, 3465, 3465, 1450, 1450,  876,
2947       876,  876, 3465, 3465, 3465,  876, 1460, 1460, 1460, 1460,
2948      3465, 3465, 1460, 1460,  883,  883,  883, 3465, 3465, 3465,
2949       883, 1470, 1470, 1470, 1470, 3465, 3465, 1470, 1470,  891,
2950       891,  891, 3465, 3465, 3465,  891, 1481, 1481, 1481, 1481,
2951      3465, 3465, 1481, 1481,  899,  899,  899, 3465, 3465, 3465,
2952       899, 1488, 1488, 1488, 1488, 3465, 3465, 1488, 1488, 1150,
2953      1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1707, 1707,
2954      1707, 1707, 1707, 1707, 1707, 1707, 1707,  669,  669,  669,
2955
2956      3465, 3465, 3465,  669,  705,  705,  705,  705, 3465,  705,
2957      3465,  705, 1217, 1217, 1217, 1217, 3465, 3465, 1217, 1217,
2958      1223, 1223, 1223, 1223, 3465, 3465, 1223, 1223,  717,  717,
2959       717, 3465, 3465, 3465,  717, 1232, 1232, 1232, 1232, 3465,
2960      3465, 1232, 1232,  723,  723,  723,  723, 3465,  723, 3465,
2961       723, 1242, 1242, 1242, 1242, 3465, 3465, 1242, 1242, 1250,
2962      1250, 1250, 1250, 3465, 3465, 1250, 1250,  734,  734,  734,
2963       734, 3465,  734, 3465,  734, 1266, 1266, 1266, 1266, 3465,
2964      3465, 1266, 1266,  744,  744,  744, 3465, 3465, 3465,  744,
2965      1293, 1293, 1293, 1293, 3465, 3465, 1293, 1293, 1300, 1300,
2966
2967      1300, 1300, 3465, 3465, 1300, 1300,  771,  771,  771, 3465,
2968      3465, 3465,  771, 1318, 1318, 1318, 1318, 3465, 3465, 1318,
2969      1318, 1331, 1331, 1331, 1331, 3465, 3465, 1331, 1331, 1336,
2970      1336, 1336, 1336, 3465, 3465, 1336, 1336,  792,  792,  792,
2971      3465, 3465, 3465,  792, 1347, 1347, 1347, 1347, 3465, 3465,
2972      1347, 1347,  800,  800,  800, 3465, 3465, 3465,  800, 1355,
2973      1355, 1355, 1355, 3465, 3465, 1355, 1355, 1363, 1363, 1363,
2974      1363, 3465, 3465, 1363, 1363,  810,  810,  810, 3465, 3465,
2975      3465,  810, 1369, 1369, 1369, 1369, 3465, 3465, 1369, 1369,
2976       815,  815,  815,  815, 3465,  815, 3465,  815, 1375, 1375,
2977
2978      1375, 1375, 3465, 3465, 1375, 1375,  820,  820,  820, 3465,
2979      3465, 3465,  820, 1390, 1390, 1390, 1390, 3465, 3465, 1390,
2980      1390,  831,  831,  831, 3465, 3465, 3465,  831, 1396, 1396,
2981      1396, 1396, 3465, 3465, 1396, 1396,  840,  840,  840, 3465,
2982      3465, 3465,  840, 1408, 1408, 1408, 1408, 3465, 3465, 1408,
2983      1408, 1417, 1417, 1417, 1417, 3465, 3465, 1417, 1417,  854,
2984       854,  854, 3465, 3465, 3465,  854, 1433, 1433, 1433, 1433,
2985      3465, 3465, 1433, 1433,  865,  865,  865, 3465, 3465, 3465,
2986       865, 1442, 1442, 1442, 1442, 3465, 3465, 1442, 1442,  871,
2987       871,  871, 3465, 3465, 3465,  871, 1450, 1450, 1450, 1450,
2988
2989      3465, 3465, 1450, 1450,  876,  876,  876,  876, 3465,  876,
2990      3465,  876, 1460, 1460, 1460, 1460, 3465, 3465, 1460, 1460,
2991       883,  883,  883, 3465, 3465, 3465,  883, 1470, 1470, 1470,
2992      1470, 3465, 3465, 1470, 1470,  891,  891,  891, 3465, 3465,
2993      3465,  891, 1481, 1481, 1481, 1481, 3465, 3465, 1481, 1481,
2994       899,  899,  899, 3465, 3465, 3465,  899, 1488, 1488, 1488,
2995      1488, 3465, 3465, 1488, 1488, 1150, 1150, 1150, 1150, 1150,
2996      1150, 1150, 1150, 1150, 1707, 1707, 1707, 1707, 1707, 1707,
2997      1707, 1707, 1707,  669,  669,  669,  669, 3465,  669, 3465,
2998       669,  705,  705,  705, 3465, 3465, 3465,  705, 1217, 1217,
2999
3000      1217, 1217, 3465, 3465, 1217, 1217, 1223, 1223, 1223, 1223,
3001      3465, 3465, 1223, 1223,  717,  717,  717, 3465, 3465, 3465,
3002       717, 1232, 1232, 1232, 1232, 3465, 3465, 1232, 1232, 1242,
3003      1242, 1242, 1242, 3465, 3465, 1242, 1242, 1250, 1250, 1250,
3004      1250, 3465, 3465, 1250, 1250,  734,  734,  734,  734, 3465,
3005       734, 3465,  734, 1266, 1266, 1266, 1266, 3465, 3465, 1266,
3006      1266,  744,  744,  744, 3465, 3465, 3465,  744, 1293, 1293,
3007      1293, 1293, 3465, 3465, 1293, 1293, 1300, 1300, 1300, 1300,
3008      3465, 3465, 1300, 1300,  771,  771,  771, 3465, 3465, 3465,
3009       771, 1331, 1331, 1331, 1331, 3465, 3465, 1331, 1331, 1336,
3010
3011      1336, 1336, 1336, 3465, 3465, 1336, 1336,  792,  792,  792,
3012      3465, 3465, 3465,  792,  800,  800,  800, 3465, 3465, 3465,
3013       800, 1355, 1355, 1355, 1355, 3465, 3465, 1355, 1355, 1363,
3014      1363, 1363, 1363, 3465, 3465, 1363, 1363,  810,  810,  810,
3015      3465, 3465, 3465,  810, 1369, 1369, 1369, 1369, 3465, 3465,
3016      1369, 1369, 1375, 1375, 1375, 1375, 3465, 3465, 1375, 1375,
3017       820,  820,  820, 3465, 3465, 3465,  820,  831,  831,  831,
3018       831, 3465,  831, 3465,  831, 1396, 1396, 1396, 1396, 3465,
3019      3465, 1396, 1396,  840,  840,  840, 3465, 3465, 3465,  840,
3020      1408, 1408, 1408, 1408, 3465, 3465, 1408, 1408,  854,  854,
3021
3022       854, 3465, 3465, 3465,  854, 1433, 1433, 1433, 1433, 3465,
3023      3465, 1433, 1433,  865,  865,  865, 3465, 3465, 3465,  865,
3024      1442, 1442, 1442, 1442, 3465, 3465, 1442, 1442,  871,  871,
3025       871, 3465, 3465, 3465,  871, 1450, 1450, 1450, 1450, 3465,
3026      3465, 1450, 1450,  876,  876,  876,  876, 3465,  876, 3465,
3027       876, 1460, 1460, 1460, 1460, 3465, 3465, 1460, 1460,  883,
3028       883,  883,  883, 3465,  883, 3465,  883, 1470, 1470, 1470,
3029      1470, 3465, 3465, 1470, 1470,  891,  891,  891, 3465, 3465,
3030      3465,  891, 1481, 1481, 1481, 1481, 3465, 3465, 1481, 1481,
3031       899,  899,  899,  899, 3465,  899, 3465,  899, 1488, 1488,
3032
3033      1488, 1488, 3465, 3465, 1488, 1488, 1150, 1150, 1150, 1150,
3034      1150, 1150, 1150, 1150, 1150, 1707, 1707, 1707, 1707, 1707,
3035      1707, 1707, 1707, 1707,  705,  705,  705, 3465, 3465, 3465,
3036       705, 1217, 1217, 1217, 1217, 3465, 3465, 1217, 1217, 1223,
3037      1223, 1223, 1223, 3465, 3465, 1223, 1223,  717,  717,  717,
3038      3465, 3465, 3465,  717, 1232, 1232, 1232, 1232, 3465, 3465,
3039      1232, 1232, 1242, 1242, 1242, 1242, 3465, 3465, 1242, 1242,
3040      1250, 1250, 1250, 1250, 3465, 3465, 1250, 1250, 1266, 1266,
3041      1266, 1266, 3465, 3465, 1266, 1266,  744,  744,  744, 3465,
3042      3465, 3465,  744, 1293, 1293, 1293, 1293, 3465, 3465, 1293,
3043
3044      1293, 1300, 1300, 1300, 1300, 3465, 3465, 1300, 1300,  771,
3045       771,  771, 3465, 3465, 3465,  771, 1331, 1331, 1331, 1331,
3046      3465, 3465, 1331, 1331, 1336, 1336, 1336, 1336, 3465, 3465,
3047      1336, 1336,  792,  792,  792, 3465, 3465, 3465,  792,  800,
3048       800,  800, 3465, 3465, 3465,  800, 1355, 1355, 1355, 1355,
3049      3465, 3465, 1355, 1355, 1363, 1363, 1363, 1363, 3465, 3465,
3050      1363, 1363,  810,  810,  810, 3465, 3465, 3465,  810, 1375,
3051      1375, 1375, 1375, 3465, 3465, 1375, 1375,  820,  820,  820,
3052      3465, 3465, 3465,  820, 1396, 1396, 1396, 1396, 3465, 3465,
3053      1396, 1396,  840,  840,  840,  840, 3465,  840, 3465,  840,
3054
3055      1408, 1408, 1408, 1408, 3465, 3465, 1408, 1408,  854,  854,
3056       854, 3465, 3465, 3465,  854, 1433, 1433, 1433, 1433, 3465,
3057      3465, 1433, 1433,  865,  865,  865, 3465, 3465, 3465,  865,
3058       871,  871,  871, 3465, 3465, 3465,  871, 1450, 1450, 1450,
3059      1450, 3465, 3465, 1450, 1450,  876,  876,  876, 3465, 3465,
3060      3465,  876, 1460, 1460, 1460, 1460, 3465, 3465, 1460, 1460,
3061       883,  883,  883, 3465, 3465, 3465,  883, 1470, 1470, 1470,
3062      1470, 3465, 3465, 1470, 1470,  891,  891,  891, 3465, 3465,
3063      3465,  891, 1488, 1488, 1488, 1488, 3465, 3465, 1488, 1488,
3064      1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1707,
3065
3066      1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,  705,  705,
3067       705, 3465, 3465, 3465,  705, 1217, 1217, 1217, 1217, 3465,
3068      3465, 1217, 1217, 1223, 1223, 1223, 1223, 3465, 3465, 1223,
3069      1223,  717,  717,  717,  717, 3465,  717, 3465,  717, 1232,
3070      1232, 1232, 1232, 3465, 3465, 1232, 1232, 1242, 1242, 1242,
3071      1242, 3465, 3465, 1242, 1242, 1250, 1250, 1250, 1250, 3465,
3072      3465, 1250, 1250, 1266, 1266, 1266, 1266, 3465, 3465, 1266,
3073      1266,  744,  744,  744, 3465, 3465, 3465,  744, 1293, 1293,
3074      1293, 1293, 3465, 3465, 1293, 1293,  771,  771,  771, 3465,
3075      3465, 3465,  771, 1331, 1331, 1331, 1331, 3465, 3465, 1331,
3076
3077      1331, 1336, 1336, 1336, 1336, 3465, 3465, 1336, 1336,  792,
3078       792,  792,  792, 3465,  792, 3465,  792,  800,  800,  800,
3079       800, 3465,  800, 3465,  800, 1355, 1355, 1355, 1355, 3465,
3080      3465, 1355, 1355, 1363, 1363, 1363, 1363, 3465, 3465, 1363,
3081      1363,  810,  810,  810,  810, 3465,  810, 3465,  810, 1375,
3082      1375, 1375, 1375, 3465, 3465, 1375, 1375,  820,  820,  820,
3083      3465, 3465, 3465,  820, 1396, 1396, 1396, 1396, 3465, 3465,
3084      1396, 1396,  840,  840,  840,  840, 3465,  840, 3465,  840,
3085      1408, 1408, 1408, 1408, 3465, 3465, 1408, 1408,  854,  854,
3086       854,  854, 3465,  854, 3465,  854,  865,  865,  865, 3465,
3087
3088      3465, 3465,  865,  871,  871,  871, 3465, 3465, 3465,  871,
3089       876,  876,  876, 3465, 3465, 3465,  876, 1460, 1460, 1460,
3090      1460, 3465, 3465, 1460, 1460,  883,  883,  883, 3465, 3465,
3091      3465,  883, 1470, 1470, 1470, 1470, 3465, 3465, 1470, 1470,
3092       891,  891,  891, 3465, 3465, 3465,  891, 1488, 1488, 1488,
3093      1488, 3465, 3465, 1488, 1488, 1150, 1150, 1150, 1150, 1150,
3094      1150, 1150, 1150, 1150, 1707, 1707, 1707, 1707, 1707, 1707,
3095      1707, 1707, 1707,  705,  705,  705, 3465, 3465, 3465,  705,
3096      1223, 1223, 1223, 1223, 3465, 3465, 1223, 1223, 1232, 1232,
3097      1232, 1232, 3465, 3465, 1232, 1232, 1242, 1242, 1242, 1242,
3098
3099      3465, 3465, 1242, 1242, 1250, 1250, 1250, 1250, 3465, 3465,
3100      1250, 1250,  744,  744,  744, 3465, 3465, 3465,  744,  771,
3101       771,  771, 3465, 3465, 3465,  771, 1331, 1331, 1331, 1331,
3102      3465, 3465, 1331, 1331,  792,  792,  792, 3465, 3465, 3465,
3103       792, 1355, 1355, 1355, 1355, 3465, 3465, 1355, 1355, 1363,
3104      1363, 1363, 1363, 3465, 3465, 1363, 1363, 3046, 3046, 3046,
3105      3046, 3046, 3046, 3046, 3046, 3046, 3047, 3047, 3047, 3047,
3106      3047, 3047, 3047, 3047, 3047, 3108, 3108, 3108, 3108, 3108,
3107      3108, 3108, 3108, 3108, 3111, 3111, 3111, 3111, 3111, 3111,
3108      3111, 3111, 3111, 3154, 3154, 3154, 3154, 3154, 3154, 3154,
3109
3110      3154, 3154, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156,
3111      3156,  247, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
3112      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
3113      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
3114      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
3115      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
3116      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
3117      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
3118      3465, 3465, 3465, 3465, 3465, 3465
3119     } ;
3120
3121 static yyconst flex_int16_t yy_chk[12587] =
3122     {   0,
3123         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
3124         6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
3125         4,   10,  550,    5,    0,    9,    6,    0,   10,    7,
3126         8,    8,    8,  252,   11,   13,   13,   12,   14,   14,
3127        13,   13,  290,   14,   14,  253,    8,   17,   17,  252,
3128        13,   15,   15,   14,   15,  256,   15,   16,   16,  550,
3129        16,  253,   16,   18,   18,    0,   15,   21,   21,   21,
3130       456,  256,   16,   22,   22,   22,   23,   23,   23,   24,
3131        24,   24,  456,   21,   25,   25,   25,  361, 1509,   22,
3132       361,   17,   23, 1072,  290,   24,  250,  250,  250, 1072,
3133
3134        25,  251,  251,  251,  255,  255,  255,   18,   19,   19,
3135        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
3136        19,   19,   19,  574,   19,   19,   19,   19,   19,   26,
3137        26,   26,   27,   27,   27,   28,   28,   28,  574,   29,
3138        29,   29,   30,   30,   30,   26,  278,  295,   27,  299,
3139       374,   28,  304,   19,   19,   29,  299, 1291,   30,  275,
3140       275,  275,  278,  295,   19,  283,  283,  283,  303, 1291,
3141       266,  374,  303,   19,   20,   20,   20,   20,   20,   20,
3142        20,   20,   20,   20,   20,   20,   20,   20,   20, 1511,
3143        20,   20,   20,   20,   20,   31,   31,   31,   32,   32,
3144
3145        32,   33,   33,   33,  304,   34,   34,   34,   35,   35,
3146        35,   31,  266,  309,   32, 1512, 1513,   33,  266,   20,
3147        20,   34,  319,  266,   35,   36,   36,   36,  266,  309,
3148        20,   37,   37,   37,   38,   38,   38,  378,  319,   20,
3149       378,   36,   39,   39,   39, 1515,  331,   37,  654,  344,
3150        38,   40,   40,   40,  292,  292,  292,  339,   39,  301,
3151       301,  301,  331,  654,  302,  344, 1516,   40,   41,   41,
3152        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
3153        41,   41,   41,  420,   41,   41,   41,   41,   41,   43,
3154        43,   43,   44,   44,   44,   45,   45,   45,  351,   46,
3155
3156        46,   46,   47,   47,   47,   43,  379,  663,   44,  339,
3157       663,   45,  302,   41,   41,   46,  302,  356,   47,   41,
3158       379, 1518,   41,  306,  306,  306,  313,  313,  313,  316,
3159       316,  316,  420,  356,   41,   42,   42,   42,   42,   42,
3160        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
3161       351,   42,   42,   42,   42,   42,   48,   48,   48,   49,
3162        49,   49,   50,   50,   50,  377,   53,   53,   53,   54,
3163        54,   54,   48,  377,  371,   49,  314, 1519,   50,  377,
3164        42,   42,   53,  314,  326,   54,   42, 1520,  385,   42,
3165       371,  326,  314,  325,  325,  325,  328,  328,  328,  396,
3166
3167       326,   42,   51,   51,   51,   51,   51,   51,   51,   51,
3168        51,   51,   51,   51,   51,   51,   51,  675,   51,   51,
3169        51,   51,   51,   57,   57,   57,   58,   58,   58,   61,
3170        61,   61,  676,   62,   62,   62,   63,   63,   63,   57,
3171       385,  675,   58,  676, 1521,   61,  676,   51,   51,   62,
3172       390,  396,   63,   64,   64,   64,  337,  337,  337,  341,
3173       341,  341,  338,  349,  349,  349,  390,  773,  350,   64,
3174       773,   51,   52,   52,   52,   52,   52,   52,   52,   52,
3175        52,   52,   52,   52,   52,   52,   52,  688,   52,   52,
3176        52,   52,   52,   65,   65,   65,   66,   66,   66,   67,
3177
3178        67,   67,  895,   68,   68,   68,   71,   71,   71,   65,
3179       338,  688,   66, 1523,  338,   67,  350,   52,   52,   68,
3180       350, 1524,   71,   72,   72,   72,  353,  353,  353,  365,
3181       365,  365,  368,  368,  368,  383,  383,  383,  895,   72,
3182       933,   52,   55,   55,   55,   55,   55,   55,   55,   55,
3183        55,   55,   55,   55,   55,   55,   55,  933,   55,   55,
3184        55,   55,   55,   73,   73,   73,   74,   74,   74,   75,
3185        75,   75,  683,   76,   76,   76,   77,   77,   77,   73,
3186       422,  380,   74,  366,  401,   75,  683,   55,   55,   76,
3187       366,   55,   77,  380,  380,  387,  387,  387,   55,  366,
3188
3189       401,   55,   56,   56,   56,   56,   56,   56,   56,   56,
3190        56,   56,   56,   56,   56,   56,   56, 1525,   56,   56,
3191        56,   56,   56,   78,   78,   78,   81,   81,   81,   82,
3192        82,   82,  422,   85,   85,   85,   86,   86,   86,   78,
3193       411,  427,   81,  406,  439,   82, 1526,   56,   56,   85,
3194       406,   56,   86,  394,  394,  394,  411,  427,   56,  406,
3195       439,   56,   59,   59,   59,   59,   59,   59,   59,   59,
3196        59,   59,   59,   59,   59,   59,   59,  699,   59,   59,
3197        59,   59,   59,   87,   87,   87,   88,   88,   88,   89,
3198        89,   89,  446,   90,   90,   90,   91,   91,   91,   87,
3199
3200       416,  699,   88, 1527,  416,   89, 1530,   59,   59,   90,
3201       451,  465,   91,   59, 1533,  460,   59,  398,  398,  398,
3202       405,  405,  405,  408,  408,  408,  451,  465,   59,   60,
3203        60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
3204        60,   60,   60,   60,  446,   60,   60,   60,   60,   60,
3205        92,   92,   92,   95,   95,   95,   96,   96,   96,  532,
3206        97,   97,   97,   98,   98,   98,   92,  460, 1187,   95,
3207      1534, 1535,   96, 1536,   60,   60,   97,  476,  487,   98,
3208        60, 1187,  534,   60,  419,  419,  419,  424,  424,  424,
3209       433,  433,  433,  476,  487,   60,   69,   69,   69,   69,
3210
3211        69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
3212        69,  532,   69,   69,   69,   69,   69,   99,   99,   99,
3213       100,  100,  100,  101,  101,  101,  536,  102,  102,  102,
3214       105,  105,  105,   99,  534,  498,  100,  434, 1537,  101,
3215      1491,   69,   69,  102,  434,  471,  105,   69,  436,  436,
3216       436,  498,  471,  434,  443,  443,  443,  448,  448,  448,
3217      1491,  471,   69,   70,   70,   70,   70,   70,   70,   70,
3218        70,   70,   70,   70,   70,   70,   70,   70,  536,   70,
3219        70,   70,   70,   70,  106,  106,  106,  109,  109,  109,
3220       110,  110,  110,  552,  111,  111,  111,  112,  112,  112,
3221
3222       106,  681, 1541,  109, 1542,  681,  110, 1546,   70,   70,
3223       111,  509,  526,  112,   70,  458,  458,  458,  462,  462,
3224       462,  470,  470,  470,  473,  473,  473,  509,  526,   70,
3225        79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
3226        79,   79,   79,   79,   79,  552,   79,   79,   79,   79,
3227        79,  113,  113,  113,  114,  114,  114,  115,  115,  115,
3228       589,  116,  116,  116,  119,  119,  119,  113,  521,  541,
3229       114,  482,  557,  115, 1551,   79,   79,  116,  482,   79,
3230       119,  481,  481,  481,  521,  541,   79,  482,  557,   79,
3231       484,  484,  484,   79, 1552,   79,   79,   80,   80,   80,
3232
3233        80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
3234        80,   80,  589,   80,   80,   80,   80,   80,  120,  120,
3235       120,  123,  123,  123,  124,  124,  124,  521,  125,  125,
3236       125,  126,  126,  126,  120,  568,  582,  123,  493,  594,
3237       124, 1557,   80,   80,  125,  493,   80,  126,  492,  492,
3238       492,  568,  582,   80,  493,  594,   80,  495,  495,  495,
3239        80, 1558,   80,   80,   83,   83,   83,   83,   83,   83,
3240        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3241        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3242        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3243
3244        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3245        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3246        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3247        83,   83,   83,   83,   83,   83,   83,   83,   93,   93,
3248        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
3249        93,   93,   93, 1578,   93,   93,   93,   93,   93,  127,
3250       127,  127,  128,  128,  128,  129,  129,  129, 1580,  130,
3251       130,  130,  133,  133,  133,  127,  605,  619,  128,  585,
3252      1581,  129,  614,   93,   93,  130,  585,  627,  133,  503,
3253       503,  503,  605,  619,   93,   94,   94,   94,   94,   94,
3254
3255        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
3256      1587,   94,   94,   94,   94,   94,  134,  134,  134,  135,
3257       135,  135,  136,  136,  136, 1588,  137,  137,  137,  138,
3258       138,  138,  134,  634,  614,  135,  627,  682,  136,  629,
3259        94,   94,  137,  702,  682,  138,  506,  506,  506,  634,
3260       682,   94,  103,  103,  103,  103,  103,  103,  103,  103,
3261       103,  103,  103,  103,  103,  103,  103,  702,  103,  103,
3262       103,  103,  103,  139,  139,  139,  140,  140,  140,  143,
3263       143,  143, 1590,  144,  144,  144,  147,  147,  147,  139,
3264      1591,  629,  140,  504,  520,  143,  645,  103,  103,  144,
3265
3266       504,  520,  147,  519,  519,  519,  523,  523,  523,  504,
3267       520, 1592,  645,  103,  104,  104,  104,  104,  104,  104,
3268       104,  104,  104,  104,  104,  104,  104,  104,  104, 1593,
3269       104,  104,  104,  104,  104,  148,  148,  148,  151,  151,
3270       151,  152,  152,  152,  695,  155,  155,  155,  156,  156,
3271       156,  148, 1594,  906,  151,  533,  563,  152,  695,  104,
3272       104,  155, 1595,  563,  156,  530,  530,  530,  533,  906,
3273       533, 1596,  563,  288, 1032,  104,  107,  107,  107,  107,
3274       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
3275       107, 1032,  107,  107,  107,  107,  107,  159,  159,  159,
3276
3277       160,  160,  160,  161,  161,  161,  572,  162,  162,  162,
3278       572,  288, 1597,  159,  572, 1603,  160,  689, 1604,  161,
3279      1608,  107,  107,  162,  107,  288,  107,  288,  689,  288,
3280       588,  689,  107,  538,  538,  538,  549,  549,  549,  107,
3281       531, 1136,  107,  108,  108,  108,  108,  108,  108,  108,
3282       108,  108,  108,  108,  108,  108,  108,  108, 1136,  108,
3283       108,  108,  108,  108,  165,  165,  165,  166,  166,  166,
3284       167,  167,  167,  701,  168,  168,  168,  779,  588,  531,
3285       165,  779,  588,  166,  703, 1611,  167,  701,  108,  108,
3286       168,  108,  531,  108,  531,  554,  554,  554,  703,  108,
3287
3288       562,  562,  562,  565,  565,  565,  108, 1612, 1619,  108,
3289       117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
3290       117,  117,  117,  117,  117, 1620,  117,  117,  117,  117,
3291       117,  169,  169,  169,  170,  170,  170,  171,  171,  171,
3292       836,  172,  172,  172,  173,  173,  173,  169, 1621, 1624,
3293       170,  577,  686,  171,  836,  117,  117,  172,  577,  686,
3294       173,  117,  576,  576,  576,  686,  117,  577,  579,  579,
3295       579,  587,  587,  587,  591,  591,  591, 1630,  117,  118,
3296       118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
3297       118,  118,  118,  118, 1634,  118,  118,  118,  118,  118,
3298
3299       174,  174,  174,  175,  175,  175,  176,  176,  176, 1636,
3300       177,  177,  177,  178,  178,  178,  174, 1638, 1639,  175,
3301       600,  694,  176, 1644,  118,  118,  177,  600,  694,  178,
3302       118,  599,  599,  599,  694,  118,  600,  602,  602,  602,
3303       612,  612,  612,  616,  616,  616, 1646,  118,  121,  121,
3304       121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
3305       121,  121,  121, 1647,  121,  121,  121,  121,  121,  179,
3306       179,  179,  180,  180,  180,  181,  181,  181,  834,  182,
3307       182,  182,  183,  183,  183,  179,  837, 1649,  180,  834,
3308      1650,  181,  834,  121,  121,  182, 1651,  837,  183, 1652,
3309
3310       837,  121,  122,  122,  122,  122,  122,  122,  122,  122,
3311       122,  122,  122,  122,  122,  122,  122, 1655,  122,  122,
3312       122,  122,  122,  184,  184,  184,  187,  187,  187,  188,
3313       188,  188, 1656,  189,  189,  189,  190,  190,  190,  184,
3314       889, 1192,  187, 1657,  889,  188, 1153,  122,  122,  189,
3315      1153, 1659,  190, 1662, 1192,  122,  131,  131,  131,  131,
3316       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
3317       131, 1671,  131,  131,  131,  131,  131,  191,  191,  191,
3318       192,  192,  192,  193,  193,  193, 1674,  194,  194,  194,
3319       197,  197,  197,  191, 1682, 1684,  192,  639, 1400,  193,
3320
3321      1686,  131,  131,  194,  639,  131,  197,  626,  626,  626,
3322      1687, 1400,  131,  639, 1688,  131,  631,  631,  631,  642,
3323       642,  642,  131,  132,  132,  132,  132,  132,  132,  132,
3324       132,  132,  132,  132,  132,  132,  132,  132, 1690,  132,
3325       132,  132,  132,  132,  198,  198,  198,  201,  201,  201,
3326       202,  202,  202, 1695,  205,  205,  205,  206,  206,  206,
3327       198, 1698, 1699,  201,  652, 1701,  202, 1707,  132,  132,
3328       205,  652,  132,  206,  651,  651,  651, 1710, 1713,  132,
3329       652, 1714,  132,  653,  653,  653,  662,  662,  662,  132,
3330       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
3331
3332       141,  141,  141,  141,  141, 1715,  141,  141,  141,  141,
3333       141,  207,  207,  207,  208,  208,  208,  209,  209,  209,
3334      1716,  210,  210,  210,  211,  211,  211,  207, 1717, 1718,
3335       208,  700, 1719,  209, 1720,  141,  141,  210,  700, 1722,
3336       211,  141, 1723, 1725,  700,  662,  141,  142,  142,  142,
3337       142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
3338       142,  142, 1726,  142,  142,  142,  142,  142,  212,  212,
3339       212,  215,  215,  215,  216,  216,  216, 1728,  219,  219,
3340       219,  220,  220,  220,  212, 1730, 1731,  215,  835,  838,
3341       216, 1733,  142,  142,  219,  835,  838,  220,  142, 1735,
3342
3343      1738,  835,  838,  142,  145,  145,  145,  145,  145,  145,
3344       145,  145,  145,  145,  145,  145,  145,  145,  145, 1739,
3345       145,  145,  145,  145,  145,  221,  221,  221,  222,  222,
3346       222,  223,  223,  223, 1740,  224,  224,  224,  225,  225,
3347       225,  221,  996, 1741,  222, 1706, 1742,  223, 1744,  145,
3348       145,  224,  996, 1745,  225,  226,  226,  226, 1749,  996,
3349       145,  909,  909,  909, 1757,  909, 1170, 1170, 1170, 1761,
3350      1706,  226, 1762,  145,  146,  146,  146,  146,  146,  146,
3351       146,  146,  146,  146,  146,  146,  146,  146,  146, 1774,
3352       146,  146,  146,  146,  146,  229,  229,  229,  230,  230,
3353
3354       230,  231,  231,  231, 1778,  232,  232,  232,  233,  233,
3355       233,  229, 1782, 1783,  230, 1787, 1788,  231, 1789,  146,
3356       146,  232, 1790, 1792,  233,  234,  234,  234, 1793, 1801,
3357       146,  918,  918,  918, 1802,  918, 1811, 1814,  918, 1823,
3358      1824,  234, 1825,  146,  149,  149,  149,  149,  149,  149,
3359       149,  149,  149,  149,  149,  149,  149,  149,  149, 1828,
3360       149,  149,  149,  149,  149,  235,  235,  235,  236,  236,
3361       236, 1830,  243,  243,  243, 1838, 1845,  244,  244,  244,
3362      1849,  235,  239,  239,  236, 1852, 1854,  239,  243,  149,
3363       149,  240,  240,  244,  287, 1855,  240,  239, 1857,  444,
3364
3365       922,  922,  922, 1858,  287,  149,  240, 1859, 1860,  444,
3366       149,  150,  150,  150,  150,  150,  150,  150,  150,  150,
3367       150,  150,  150,  150,  150,  150,  239,  150,  150,  150,
3368       150,  150,  287, 1864, 1865,  240, 1866, 1868,  444, 1872,
3369      1876,  670,  670,  670,  444, 1880,  287, 1882,  287, 1884,
3370       287,  444,  719,  719,  719,  444,  150,  150,  670,  735,
3371       735,  735, 1890, 1897,  922,  943,  943,  943, 1901,  719,
3372      1902, 1904,  150,  956,  956,  956,  735,  150,  153,  153,
3373       153,  153,  153,  153,  153,  153,  153,  153,  153,  153,
3374       153,  153,  153, 1916,  153,  153,  153,  153,  153,  736,
3375
3376       736,  736,  747,  747,  747,  749,  749,  749,  764,  764,
3377       764,  774,  774,  774, 1917, 1918,  736, 1920, 1921,  747,
3378      1906, 1923,  749,  153,  153,  764, 1906, 1911,  774,  943,
3379      1906,  971,  971,  971, 1906,  971, 1924,  956,  971,  153,
3380      1912, 1044, 1044, 1044, 1911,  153,  154,  154,  154,  154,
3381       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
3382       154, 1913,  154,  154,  154,  154,  154,  783,  783,  783,
3383       784,  784,  784,  794,  794,  794,  802,  802,  802,  806,
3384       806,  806, 1912, 1925,  783, 1926, 1919,  784, 1928, 1929,
3385       794,  154,  154,  802, 1913, 1930,  806,  985,  985,  985,
3386
3387      1934,  985, 1919, 1936,  985, 1044, 1937,  154, 1178, 1178,
3388      1178, 1938, 1940,  154,  157,  157,  157,  157,  157,  157,
3389       157,  157,  157,  157,  157,  157,  157,  157,  157, 1941,
3390       157,  157,  157,  157,  157,  824,  824,  824,  850,  850,
3391       850,  856,  856,  856,  873,  873,  873, 1942,  879,  879,
3392       879, 1943,  824, 1946, 1948,  850, 1939, 1953,  856,  157,
3393       157,  873,  157,  157,  157,  879, 1955,  987,  987,  987,
3394       157,  987, 1939,  157,  987, 1960, 1978,  157, 1984, 1985,
3395       157,  158,  158,  158,  158,  158,  158,  158,  158,  158,
3396       158,  158,  158,  158,  158,  158, 1986,  158,  158,  158,
3397
3398       158,  158,  885,  885,  885,  893,  893,  893,  917,  917,
3399       917,  959,  959,  959,  920,  920,  920, 1993, 1994,  885,
3400      1995, 1998,  893, 1999, 2002,  917,  158,  158,  959,  158,
3401       158,  158,  920, 2003,  998,  998,  998,  158,  998, 2010,
3402       158,  998, 2011, 2012,  158, 2016, 2019,  158,  163,  163,
3403       163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
3404       163,  163,  163, 2021,  163,  163,  163,  163,  163,  921,
3405       921,  921,  961,  961,  961, 2023, 2024,  963,  963,  963,
3406       962,  962,  962,  960,  960,  960, 2025,  921, 2028,  961,
3407       967,  967,  967,  163,  163,  963, 2034,  962, 2039, 2045,
3408
3409       960, 2049, 2052, 1001, 1001, 1001,  921, 1001,  967, 2056,
3410      1001, 1193, 1193, 1193, 1199, 1199, 1199,  163,  164,  164,
3411       164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
3412       164,  164,  164,  960,  164,  164,  164,  164,  164,  962,
3413       964,  964,  964,  970,  970,  970, 2058, 2059,  960,  968,
3414       968,  968,  973,  973,  973,  975,  975,  975,  964, 1907,
3415       970, 2060, 2061,  164,  164, 1907, 2063,  968, 2069, 1907,
3416       973, 2071,  975, 1907, 1016, 1016, 1016,  964, 1016, 2073,
3417      2075, 1016, 1507, 1507, 1507, 2088, 2089,  164,  185,  185,
3418       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
3419
3420       185,  185,  185, 2090,  185,  185,  185,  185,  185,  977,
3421       977,  977, 2093,  968,  978,  978,  978,  979,  979,  979,
3422       976,  976,  976,  980,  980,  980,  977, 2094, 2095,  974,
3423       974,  974,  978,  185,  185,  979, 2095,  976, 2096, 2097,
3424       980,  185, 2098,  185, 2100, 2111,  185,  974, 2112, 2113,
3425       185, 1514, 1514, 1514,  185,  186,  186,  186,  186,  186,
3426       186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
3427       976,  186,  186,  186,  186,  186,  974,  981,  981,  981,
3428       982,  982,  982, 2114, 2099,  976, 2118, 2105,  979,  983,
3429       983,  983, 2099, 2105,  981,  984,  984,  984,  982, 2120,
3430
3431       186,  186,  986,  986,  986, 2121, 2106,  983,  186, 2122,
3432       186, 2123,  984,  186, 1517, 1517, 1517,  186, 2128,  986,
3433      2107,  186,  195,  195,  195,  195,  195,  195,  195,  195,
3434       195,  195,  195,  195,  195,  195,  195, 2106,  195,  195,
3435       195,  195,  195, 2130,  988,  988,  988,  993,  993,  993,
3436      1522, 1522, 1522, 1528, 1528, 1528,  989,  989,  989, 2131,
3437       983,  988,  990,  990,  990,  993, 2107,  195,  195,  991,
3438       991,  991, 2132,  989, 2135, 1508, 1508, 1508,  195,  990,
3439      1026, 1026, 1026, 2139, 1026, 2146,  991, 1026, 1510, 1510,
3440      1510,  195,  196,  196,  196,  196,  196,  196,  196,  196,
3441
3442       196,  196,  196,  196,  196,  196,  196,  989,  196,  196,
3443       196,  196,  196, 2148,  990,  997,  997,  997, 1000, 1000,
3444      1000, 1508, 2150, 2171,  991,  992,  992,  992, 1002, 1002,
3445      1002, 2175,  997, 2176, 1510, 1000, 2177,  196,  196,  994,
3446       994,  994,  992, 2183, 2184, 1002, 2185, 2189,  196, 1036,
3447      1036, 1036, 2193, 1036, 2194, 2200, 1036,  994, 1532, 1532,
3448      1532,  196,  199,  199,  199,  199,  199,  199,  199,  199,
3449       199,  199,  199,  199,  199,  199,  199,  992,  199,  199,
3450       199,  199,  199, 1013, 1013, 1013,  994, 1015, 1015, 1015,
3451      2201, 2204, 1014, 1014, 1014, 1017, 1017, 1017, 1025, 1025,
3452
3453      1025, 1013, 2207, 2198, 1015, 2208, 2199,  199,  199, 2209,
3454      1014, 2198, 2211, 1017, 2199, 1025,  199, 2209,  199, 1038,
3455      1038, 1038,  199, 1038, 2212, 2215, 1038,  199,  199,  200,
3456       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
3457       200,  200,  200,  200, 2222,  200,  200,  200,  200,  200,
3458      1014, 1020, 1020, 1020, 2226, 1021, 1021, 1021, 1018, 1018,
3459      1018, 1030, 1030, 1030, 1031, 1031, 1031, 2227, 2228, 1020,
3460      1035, 1035, 1035, 1021,  200,  200, 1018, 2240, 2210, 1030,
3461      2241, 2244, 1031,  200, 2246,  200, 2210, 1035, 2249,  200,
3462      1529, 1529, 1529, 2256,  200,  200,  203,  203,  203,  203,
3463
3464       203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
3465       203, 2263,  203,  203,  203,  203,  203, 1021, 2265, 1018,
3466      1037, 1037, 1037, 2266, 2267, 1031, 1039, 1039, 1039, 2272,
3467      1040, 1040, 1040, 1042, 1042, 1042, 1529, 1037, 1043, 1043,
3468      1043,  203,  203, 2273, 1039, 2274, 2275,  203, 1040, 2276,
3469      2277, 1042, 2278, 1047, 1047, 1047, 1043, 1047, 2279, 2280,
3470      1047, 2281,  203,  204,  204,  204,  204,  204,  204,  204,
3471       204,  204,  204,  204,  204,  204,  204,  204, 2292,  204,
3472       204,  204,  204,  204, 1046, 1046, 1046, 1051, 1051, 1051,
3473      2293, 1040, 2296, 1054, 1054, 1054, 2299, 2304, 1043, 2305,
3474
3475      2308, 1046, 1052, 1052, 1052, 1051, 2309, 2312,  204,  204,
3476      1054, 1055, 1055, 1055,  204, 1055, 2284, 2315, 1055, 2316,
3477      1052, 1059, 1059, 1059, 2285, 1059, 2317, 2332, 1059,  204,
3478       213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
3479       213,  213,  213,  213,  213, 2333,  213,  213,  213,  213,
3480       213, 1056, 1056, 1056, 1057, 1057, 1057, 1052, 2334, 2284,
3481      1058, 1058, 1058, 1061, 1061, 1061, 1062, 1062, 1062, 1056,
3482      2340, 2285, 1057, 2335, 2341,  213,  213, 1058, 2342, 2348,
3483       213, 1061, 2349, 2335, 1062, 2350,  213,  214,  214,  214,
3484       214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
3485
3486       214,  214, 2351,  214,  214,  214,  214,  214, 2352, 1057,
3487      1065, 1065, 1065, 1066, 1066, 1066, 1069, 1069, 1069, 2353,
3488      1070, 1070, 1070, 1074, 1074, 1074, 2354, 1062, 1065, 2364,
3489      2365, 1066,  214,  214, 1069, 2366, 2367,  214, 1070, 2374,
3490      1074, 2375, 2376,  214,  217,  217,  217,  217,  217,  217,
3491       217,  217,  217,  217,  217,  217,  217,  217,  217, 2397,
3492       217,  217,  217,  217,  217, 1075, 1075, 1075, 2398, 1075,
3493      2404, 2409, 1075, 2411, 1066, 2412, 1076, 1076, 1076, 1079,
3494      1079, 1079, 1096, 1096, 1096, 1070, 1080, 1080, 1080,  217,
3495       217, 2417,  217, 1076,  217, 2418, 2419, 1079, 2420, 1096,
3496
3497       217, 1097, 1097, 1097, 1080, 1097, 2421, 2422, 1097, 2423,
3498      2424,  217,  218,  218,  218,  218,  218,  218,  218,  218,
3499       218,  218,  218,  218,  218,  218,  218, 2425,  218,  218,
3500       218,  218,  218, 1083, 1083, 1083, 2426, 1080, 1093, 1093,
3501      1093, 2429, 2431, 1084, 1084, 1084, 1094, 1094, 1094, 2432,
3502      2433, 1083, 1099, 1099, 1099, 2434, 1093,  218,  218, 2433,
3503       218, 1084,  218, 2435, 1094, 1103, 1103, 1103,  218, 1103,
3504      1099, 2436, 1103, 2429, 1531, 1531, 1531, 2437, 2439,  218,
3505       227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
3506       227,  227,  227,  227,  227, 2440,  227,  227,  227,  227,
3507
3508       227, 1084, 2443, 2444, 1100, 1100, 1100, 1102, 1102, 1102,
3509      1094, 1104, 1104, 1104, 1106, 1106, 1106, 1110, 1110, 1110,
3510      1531, 2447, 1100, 2450, 1102,  227,  227, 2451, 1104, 2453,
3511       227, 1106, 1721, 1721, 1721, 1110,  227, 1119, 1119, 1119,
3512       227, 1119, 2454, 2430, 1119, 2456,  227,  228,  228,  228,
3513       228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
3514       228,  228, 2457,  228,  228,  228,  228,  228, 1100, 1112,
3515      1112, 1112, 1113, 1113, 1113, 2458, 2438, 1114, 1114, 1114,
3516      2430, 2470, 1111, 1111, 1111, 2438, 1112, 2471, 2472, 1113,
3517      2473, 2474,  228,  228, 1114, 2477, 2479,  228, 2485, 2481,
3518
3519      1111, 2486, 2487,  228, 1125, 1125, 1125,  228, 1125, 2489,
3520      2498, 1125, 2481,  228,  237,  237,  237,  237,  237,  237,
3521       237,  237,  237,  237,  237,  237,  237,  237,  237, 1111,
3522       237,  237,  237,  237,  237, 2499, 1114, 1115, 1115, 1115,
3523      1116, 1116, 1116, 2482, 1118, 1118, 1118, 1120, 1120, 1120,
3524      1121, 1121, 1121, 2500, 2501, 1115, 2482, 2503, 1116,  237,
3525       237, 1118, 1131, 1131, 1131, 1120, 1131,  237, 1121, 1131,
3526       237, 2513, 1548, 1548, 1548, 2514, 2531,  237,  238,  238,
3527       238,  238,  238,  238,  238,  238,  238,  238,  238,  238,
3528       238,  238,  238, 2532,  238,  238,  238,  238,  238, 2533,
3529
3530      2536, 1116, 1124, 1124, 1124, 2538, 2539, 1127, 1127, 1127,
3531      2540, 1121, 1128, 1128, 1128, 1130, 1130, 1130, 1548, 1124,
3532      1134, 1134, 1134,  238,  238, 1127, 1724, 1724, 1724, 2541,
3533      1128,  238, 1130, 2542,  238, 1727, 1727, 1727, 1134, 2543,
3534      2544,  238,  241,  241,  241,  241,  241,  241,  241,  241,
3535       241,  241,  241,  241,  241,  241,  241, 2545,  241,  241,
3536       241,  241,  241, 2546, 2547, 1135, 1135, 1135, 1138, 1138,
3537      1138, 2548, 1139, 1139, 1139, 2549, 1139, 2554, 1128, 1139,
3538      1142, 1142, 1142, 1135, 2555, 1138, 2556,  241,  241, 1143,
3539      1143, 1143, 2557, 2558,  241, 1162, 1162, 1162, 1142, 1162,
3540
3541       241, 2559, 1162, 1729, 1729, 1729, 2553, 1143, 2551,  241,
3542       242,  242,  242,  242,  242,  242,  242,  242,  242,  242,
3543       242,  242,  242,  242,  242, 2560,  242,  242,  242,  242,
3544       242, 1135, 1148, 1148, 1148, 2552, 1149, 1149, 1149, 1166,
3545      1166, 1166, 1167, 1167, 1167, 1169, 1169, 1169, 2551, 2553,
3546      1148, 2561, 2562, 1143, 1149,  242,  242, 1166, 2563, 2564,
3547      1167, 2565,  242, 1169, 1209, 1209, 1209, 2566,  242, 1210,
3548      1210, 1210, 2552, 1210, 2567, 2570, 1210,  242,  284, 2571,
3549      2572, 1209, 1213, 1213, 1213,  284, 1214, 1214, 1214, 2573,
3550      1214, 2575, 2576, 1214,  284,  284, 1216, 1216, 1216, 1213,
3551
3552      1149, 1217, 1217, 1217, 1235, 1235, 1235, 1219, 1219, 1219,
3553      2587, 1227, 1227, 1227, 1216, 1227, 2588, 2589, 1227, 1217,
3554      2591, 1235,  284,  284,  284, 1219, 2595, 2598,  284,  284,
3555       284, 2600, 2602,  284,  284, 2603, 2613,  284, 2614,  284,
3556       284,  284,  286, 1222, 1222, 1222, 1223, 1223, 1223, 1225,
3557      1225, 1225, 1231, 1231, 1231, 1232, 1232, 1232,  286,  286,
3558      2615, 1222, 2631, 2650, 1223, 2651, 2655, 1225, 2656, 2599,
3559      1231, 1219, 2657, 1232, 1239, 1239, 1239, 1234, 1234, 1234,
3560      2599, 1241, 1241, 1241, 2658, 2601,  286,  286,  286, 2659,
3561      2660, 1239,  286,  286,  286, 1234, 2601,  286,  286, 1241,
3562
3563      2661,  286, 1225,  286,  286,  286, 1236, 1236, 1236, 2621,
3564      1236, 2662, 2663, 1236, 1240, 1240, 1240, 2664, 1240, 2621,
3565      2669, 1240, 1242, 1242, 1242, 2621, 1234, 1244, 1244, 1244,
3566      1245, 1245, 1245, 2670, 1246, 1246, 1246, 2671, 1246, 2672,
3567      1242, 1246, 1247, 1247, 1247, 1244, 2673, 1245, 1248, 1248,
3568      1248, 2666, 1248, 2674, 2675, 1248, 1249, 1249, 1249, 1247,
3569      1250, 1250, 1250, 1252, 1252, 1252, 1253, 1253, 1253, 2676,
3570      1253, 2677, 2667, 1253, 1249, 1256, 1256, 1256, 1250, 1256,
3571      2666, 1252, 1256, 1259, 1259, 1259, 1260, 1260, 1260, 1244,
3572      1260, 2678, 2679, 1260, 1265, 1265, 1265, 1266, 1266, 1266,
3573
3574      1259, 1268, 1268, 1268, 1273, 1273, 1273, 2680, 1273, 2681,
3575      2684, 1273, 1265, 2645, 2667, 1266, 1276, 1276, 1276, 1268,
3576      1277, 1277, 1277, 2645, 1277, 1252, 2645, 1277, 1280, 1280,
3577      1280, 2685, 2686, 1276, 1281, 1281, 1281, 2688, 1281, 2668,
3578      2689, 1281, 1292, 1292, 1292, 1280, 1293, 1293, 1293, 1268,
3579      1295, 1295, 1295, 2694, 1296, 1296, 1296, 2695, 1296, 2700,
3580      1292, 1296, 2704, 2705, 1293, 1299, 1299, 1299, 1295, 1300,
3581      1300, 1300, 1302, 1302, 1302, 1303, 1303, 1303, 1304, 1304,
3582      1304, 2668, 2706, 1299, 1305, 1305, 1305, 1300, 2707, 2708,
3583      1302, 2709, 1303, 1307, 1307, 1307, 1304, 1310, 1310, 1310,
3584
3585      2710, 2719, 1305, 1311, 1311, 1311, 2721, 1311, 2725, 2726,
3586      1311, 1307, 2727, 2728, 1310, 2729, 2730, 1295, 1317, 1317,
3587      1317, 1318, 1318, 1318, 1320, 1320, 1320, 1323, 1323, 1323,
3588      2732, 2744, 1302, 1324, 1324, 1324, 1317, 1324, 2646, 1318,
3589      1324, 2745, 1320, 2747, 1323, 1327, 1327, 1327, 2646, 1327,
3590      2748, 2646, 1327, 1330, 1330, 1330, 1331, 1331, 1331, 2739,
3591      1307, 1333, 1333, 1333, 1334, 1334, 1334, 1335, 1335, 1335,
3592      2761, 1330, 2739, 2762, 1331, 1336, 1336, 1336, 2763, 1333,
3593      2764, 1334, 1338, 1338, 1338, 1335, 1346, 1346, 1346, 1320,
3594      1340, 1340, 1340, 1336, 1340, 2766, 2767, 1340, 2740, 2768,
3595
3596      1338, 1347, 1347, 1347, 1346, 1349, 1349, 1349, 1351, 1351,
3597      1351, 2740, 1351, 2769, 2622, 1351, 1354, 1354, 1354, 1347,
3598      1355, 1355, 1355, 1349, 2622, 2775, 1333, 1357, 1357, 1357,
3599      2622, 1338, 2776, 2773, 1354, 1358, 1358, 1358, 1355, 1358,
3600      2777, 2778, 1358, 2779, 2772, 1357, 1362, 1362, 1362, 1363,
3601      1363, 1363, 1365, 1365, 1365, 1366, 1366, 1366, 1367, 1367,
3602      1367, 1368, 1368, 1368, 1362, 1349, 2780, 1363, 2773, 2781,
3603      1365, 2782, 1366, 2746, 2783, 1367, 1369, 1369, 1369, 1368,
3604      1371, 1371, 1371, 1372, 1372, 1372, 2746, 1357, 2749, 1373,
3605      1373, 1373, 2772, 2784, 1369, 1374, 1374, 1374, 1371, 2785,
3606
3607      1372, 2749, 1365, 2786, 2787, 1367, 1373, 1375, 1375, 1375,
3608      1377, 1377, 1377, 1374, 1382, 1382, 1382, 1373, 1382, 2790,
3609      2791, 1382, 1385, 1385, 1385, 1375, 2794, 2796, 1377, 1386,
3610      1386, 1386, 2800, 1386, 2801, 2809, 1386, 2796, 2810, 1385,
3611      1389, 1389, 1389, 1390, 1390, 1390, 2811, 1371, 1392, 1392,
3612      1392, 1395, 1395, 1395, 1396, 1396, 1396, 2797, 1389, 2812,
3613      2813, 1390, 1398, 1398, 1398, 2814, 1392, 2797, 2815, 1395,
3614      2816, 2819, 1396, 1403, 1403, 1403, 1377, 1407, 1407, 1407,
3615      1398, 2823, 1408, 1408, 1408, 1410, 1410, 1410, 2826, 2827,
3616      1403, 2828, 1416, 1416, 1416, 1407, 1417, 1417, 1417, 1392,
3617
3618      1408, 2829, 2830, 1410, 1412, 1412, 1412, 2831, 1412, 1398,
3619      1416, 1412, 2832, 2835, 1417, 1419, 1419, 1419, 1421, 1421,
3620      1421, 2839, 1421, 2840, 2841, 1421, 1424, 1424, 1424, 2842,
3621      1425, 1425, 1425, 1419, 1425, 2843, 2844, 1425, 1426, 1426,
3622      1426, 2845, 2846, 1424, 2847, 2848, 1410, 1427, 1427, 1427,
3623      1428, 1428, 1428, 2849, 1428, 1426, 2850, 1428, 1430, 1430,
3624      1430, 1432, 1432, 1432, 1427, 1433, 1433, 1433, 1435, 1435,
3625      1435, 1436, 1436, 1436, 2866, 1430, 1419, 2867, 2868, 1432,
3626      1437, 1437, 1437, 1433, 1437, 2853, 1435, 1437, 1436, 1438,
3627      1438, 1438, 1439, 1439, 1439, 2853, 1439, 2869, 2870, 1439,
3628
3629      1441, 1441, 1441, 1442, 1442, 1442, 1438, 1444, 1444, 1444,
3630      1446, 1446, 1446, 2871, 1446, 2872, 2854, 1446, 1441, 2873,
3631      2879, 1442, 1449, 1449, 1449, 1444, 2854, 2880, 1435, 1450,
3632      1450, 1450, 1452, 1452, 1452, 1455, 1455, 1455, 2881, 1455,
3633      1449, 2884, 1455, 1459, 1459, 1459, 2885, 1450, 2875, 2886,
3634      1452, 1460, 1460, 1460, 1462, 1462, 1462, 2887, 1464, 1464,
3635      1464, 1459, 1464, 2890, 2897, 1464, 1468, 1468, 1468, 1460,
3636      2898, 2899, 1462, 2900, 1444, 1469, 1469, 1469, 1470, 1470,
3637      1470, 2904, 2875, 1468, 1472, 1472, 1472, 1474, 1474, 1474,
3638      1475, 1475, 1475, 1469, 1475, 2905, 1470, 1475, 2913, 1452,
3639
3640      2914, 2915, 1472, 2916, 1474, 1478, 1478, 1478, 1480, 1480,
3641      1480, 1481, 1481, 1481, 2917, 1462, 1483, 1483, 1483, 1485,
3642      1485, 1485, 1478, 1487, 1487, 1487, 1480, 2918, 2919, 1481,
3643      1488, 1488, 1488, 2923, 1483, 2929, 1485, 1490, 1490, 1490,
3644      2930, 1487, 1492, 1492, 1492, 1472, 2932, 2933, 1488, 1498,
3645      1498, 1498, 1538, 1538, 1538, 1490, 1538, 2935, 2936, 1538,
3646      1492, 1492, 2937, 1483, 2938, 2939, 1478, 1498, 1543, 1543,
3647      1543, 2940, 1543, 2941, 2942, 1543, 1547, 1547, 1547, 1549,
3648      1549, 1549, 2943, 2944, 1490, 1550, 1550, 1550, 1553, 1553,
3649      1553, 1554, 1554, 1554, 1547, 1554, 1549, 2945, 1554, 2946,
3650
3651      1559, 1559, 1559, 1550, 1559, 2947, 1553, 1559, 1562, 1562,
3652      1562, 1563, 1563, 1563, 2950, 1563, 2951, 2952, 1563, 2953,
3653      1566, 1566, 1566, 2961, 1566, 2962, 1562, 1566, 1569, 1569,
3654      1569, 1570, 1570, 1570, 2964, 1570, 2965, 1547, 1570, 1573,
3655      1573, 1573, 1574, 1574, 1574, 1553, 1569, 1575, 1575, 1575,
3656      2966, 2968, 1550, 2976, 2977, 1562, 1573, 2979, 2980, 1574,
3657      1576, 1576, 1576, 2981, 1575, 1577, 1577, 1577, 1579, 1579,
3658      1579, 1582, 1582, 1582, 2970, 1569, 2983, 1576, 2988, 2989,
3659      1583, 1583, 1583, 1577, 1583, 1579, 2990, 1583, 1582, 1584,
3660      1584, 1584, 2991, 1584, 1575, 2993, 1584, 1589, 1589, 1589,
3661
3662      1598, 1598, 1598, 1599, 1599, 1599, 1600, 1600, 1600, 1601,
3663      1601, 1601, 1574, 1601, 1589, 2994, 1601, 2970, 1598, 2998,
3664      1577, 1599, 3000, 1600, 1602, 1602, 1602, 1605, 1605, 1605,
3665      1576, 1606, 1606, 1606, 3001, 1606, 3003, 3004, 1606, 1607,
3666      1607, 1607, 1602, 3009, 1605, 1609, 1609, 1609, 1610, 1610,
3667      1610, 1613, 1613, 1613, 3010, 1599, 1607, 1614, 1614, 1614,
3668      3011, 1614, 1609, 3012, 1614, 1598, 1610, 3013, 1613, 1615,
3669      1615, 1615, 1616, 1616, 1616, 1617, 1617, 1617, 3014, 1617,
3670      3015, 3016, 1617, 1618, 1618, 1618, 3017, 1615, 3018, 1616,
3671      3019, 1609, 1622, 1622, 1622, 1623, 1623, 1623, 1625, 1625,
3672
3673      1625, 1618, 1626, 1626, 1626, 1627, 1627, 1627, 3020, 1622,
3674      1628, 1628, 1628, 1623, 1610, 3021, 1625, 3022, 3023, 1626,
3675      1632, 1632, 1632, 1627, 1629, 1629, 1629, 1628, 1629, 3024,
3676      3025, 1629, 1631, 1631, 1631, 1615, 3029, 1632, 1622, 3030,
3677      3031, 1618, 1633, 1633, 1633, 3032, 1633, 3035, 3036, 1633,
3678      1631, 3037, 1623, 3038, 3039, 1625, 1627, 1635, 1635, 1635,
3679      1637, 1637, 1637, 1640, 1640, 1640, 3040, 1640, 3049, 3048,
3680      1640, 1643, 1643, 1643, 3050, 1635, 3052, 1637, 1645, 1645,
3681      1645, 1648, 1648, 1648, 1653, 1653, 1653, 3042, 1643, 1658,
3682      1658, 1658, 1631, 1654, 1654, 1654, 1645, 1654, 3044, 1648,
3683
3684      1654, 1653, 1660, 1660, 1660, 3045, 3053, 1658, 1661, 1661,
3685      1661, 3048, 3044, 1663, 1663, 1663, 3045, 1663, 1635, 1660,
3686      1663, 3055, 1666, 1666, 1666, 3057, 1661, 1667, 1667, 1667,
3687      3051, 1667, 3060, 3042, 1667, 1672, 1672, 1672, 1658, 1666,
3688      3061, 3067, 1645, 3069, 1668, 1668, 1668, 1648, 1668, 3071,
3689      3082, 1668, 1672, 1673, 1673, 1673, 3084, 1673, 3086, 3087,
3690      1673, 1675, 1675, 1675, 1676, 1676, 1676, 3090, 1676, 3051,
3691      1661, 1676, 3091, 1679, 1679, 1679, 3094, 1679, 3096, 1675,
3692      1679, 1683, 1683, 1683, 1685, 1685, 1685, 1689, 1689, 1689,
3693      1691, 1691, 1691, 1692, 1692, 1692, 1693, 1693, 1693, 1683,
3694
3695      1693, 3098, 1685, 1693, 3100, 1689, 3101, 1691, 3103, 3063,
3696      1692, 1675, 1694, 1694, 1694, 1696, 1696, 1696, 1697, 1697,
3697      1697, 3063, 1697, 3104, 3110, 1697, 1700, 1700, 1700, 3064,
3698      1694, 3076, 1696, 3112, 3077, 1702, 1702, 1702, 1703, 1703,
3699      1703, 3064, 1703, 3076, 1700, 1703, 3077, 1683, 3109, 3109,
3700      1685, 1689, 1702, 1704, 1704, 1704, 1705, 1705, 1705, 1708,
3701      1708, 1708, 1732, 1732, 1732, 1734, 1734, 1734, 3107, 3127,
3702      1704, 1736, 1736, 1736, 1705, 1700, 1694, 1708, 1737, 1737,
3703      1737, 1743, 1743, 1743, 1746, 1746, 1746, 1747, 1747, 1747,
3704      1748, 1748, 1748, 1750, 1750, 1750, 1751, 1751, 1751, 1752,
3705
3706      1752, 1752, 1753, 1753, 1753, 1705, 1754, 1754, 1754, 3107,
3707      1708, 1755, 1755, 1755, 1756, 1756, 1756, 1736, 3120, 1753,
3708      1758, 1758, 1758, 1754, 1760, 1760, 1760, 1708, 1755, 1734,
3709      3129, 3133, 1756, 3120, 1759, 1759, 1759, 1758, 1759, 1750,
3710      3126, 1759, 1760, 1763, 1763, 1763, 3134, 1764, 1764, 1764,
3711      1765, 1765, 1765, 3137, 1748, 1766, 1766, 1766, 3108, 3126,
3712      1751, 1763, 3116, 1752, 1764, 3115, 3128, 1765, 1767, 1767,
3713      1767, 3111, 3108, 1766, 3139, 1755, 1768, 1768, 1768, 3115,
3714      3116, 1756, 3111, 1760, 3141, 3128, 1767, 3142, 1769, 1769,
3715      1769, 1763, 1769, 1768, 3143, 1769, 1770, 1770, 1770, 1771,
3716
3717      1771, 1771, 1772, 1772, 1772, 1773, 1773, 1773, 1775, 1775,
3718      1775, 3136, 3119, 1770, 3144, 3145, 1771, 3146, 3154, 1772,
3719      1766, 3155, 3138, 1773, 3156, 1775, 3119, 1776, 1776, 1776,
3720      3136, 1776, 3158, 1767, 1776, 1777, 1777, 1777, 1779, 1779,
3721      1779, 3138, 1779, 3159, 3161, 1779, 1784, 1784, 1784, 1785,
3722      1785, 1785, 1777, 1785, 3162, 3163, 1785, 1771, 1786, 1786,
3723      1786, 3165, 3170, 1784, 3171, 1773, 1791, 1791, 1791, 1794,
3724      1794, 1794, 1795, 1795, 1795, 1786, 3172, 1796, 1796, 1796,
3725      3173, 1796, 3174, 1791, 1796, 3175, 3176, 1794, 3177, 3180,
3726      1795, 1799, 1799, 1799, 1803, 1803, 1803, 3181, 1803, 3182,
3727
3728      3183, 1803, 1806, 1806, 1806, 3184, 1807, 1807, 1807, 1799,
3729      1807, 3185, 3188, 1807, 1808, 1808, 1808, 3189, 3190, 1806,
3730      1809, 1809, 1809, 1812, 1812, 1812, 3191, 1795, 1813, 1813,
3731      1813, 1808, 1810, 1810, 1810, 1794, 1810, 1809, 3192, 1810,
3732      3193, 1812, 1815, 1815, 1815, 3195, 1815, 3196, 3197, 1815,
3733      1818, 1818, 1818, 1819, 1819, 1819, 3198, 1819, 3199, 3200,
3734      1819, 1822, 1822, 1822, 1826, 1826, 1826, 3201, 1818, 1827,
3735      1827, 1827, 3208, 1827, 3209, 3210, 1827, 3211, 3212, 1822,
3736      3213, 1826, 1829, 1829, 1829, 1831, 1831, 1831, 1832, 1832,
3737      1832, 1833, 1833, 1833, 3219, 1833, 1818, 3220, 1833, 3221,
3738
3739      1829, 3222, 3206, 1831, 3223, 1832, 1834, 1834, 1834, 1835,
3740      1835, 1835, 3224, 1835, 3206, 3228, 1835, 1839, 1839, 1839,
3741      1843, 1843, 1843, 3229, 1834, 1840, 1840, 1840, 1822, 1840,
3742      3231, 1831, 1840, 3233, 3236, 1839, 3237, 1843, 1844, 1844,
3743      1844, 1846, 1846, 1846, 1847, 1847, 1847, 3234, 1847, 3238,
3744      3207, 1847, 1848, 1848, 1848, 3239, 1844, 3240, 1846, 1850,
3745      1850, 1850, 3207, 3241, 1834, 3242, 1851, 1851, 1851, 1848,
3746      1851, 3243, 3234, 1851, 3244, 3245, 1850, 1853, 1853, 1853,
3747      1856, 1856, 1856, 1839, 1861, 1861, 1861, 3246, 1861, 3247,
3748      3248, 1861, 1867, 1867, 1867, 1853, 3249, 3250, 1856, 1869,
3749
3750      1869, 1869, 1844, 3251, 1870, 1870, 1870, 3252, 1870, 3253,
3751      1867, 1870, 1871, 1871, 1871, 3254, 1869, 1873, 1873, 1873,
3752      3255, 1873, 3256, 3257, 1873, 3260, 3261, 1877, 1877, 1877,
3753      1871, 1877, 1856, 3263, 1877, 1881, 1881, 1881, 1883, 1883,
3754      1883, 3262, 3264, 1867, 1885, 1885, 1885, 1886, 1886, 1886,
3755      1887, 1887, 1887, 1881, 3265, 3266, 1883, 1888, 1888, 1888,
3756      3262, 3267, 1885, 3268, 1886, 3269, 3270, 1887, 1889, 1889,
3757      1889, 1891, 1891, 1891, 1888, 1892, 1892, 1892, 3271, 1892,
3758      3272, 3273, 1892, 1893, 1893, 1893, 1889, 1893, 1891, 1883,
3759      1893, 1896, 1896, 1896, 3274, 1885, 1881, 1898, 1898, 1898,
3760
3761      3275, 1898, 3276, 3277, 1898, 1903, 1903, 1903, 3278, 1896,
3762      1905, 1905, 1905, 3279, 1905, 1889, 1887, 1905, 1908, 1908,
3763      1908, 3280, 3281, 1903, 1909, 1909, 1909, 3282, 1909, 3283,
3764      3284, 1909, 1910, 1910, 1910, 1908, 3288, 3289, 1896, 3290,
3765      1915, 1915, 1915, 1922, 1922, 1922, 1927, 1927, 1927, 3291,
3766      1910, 1931, 1931, 1931, 3292, 3293, 1903, 1915, 1932, 1932,
3767      1932, 1933, 1933, 1933, 1935, 1935, 1935, 1944, 1944, 1944,
3768      1945, 1945, 1945, 1947, 1947, 1947, 1949, 1949, 1949, 3287,
3769      1950, 1950, 1950, 1910, 1950, 3294, 3295, 1950, 1951, 1951,
3770      1951, 3296, 3297, 1949, 1952, 1952, 1952, 3298, 1952, 3287,
3771
3772      3299, 1952, 1954, 1954, 1954, 1951, 1956, 1956, 1956, 3300,
3773      1956, 3301, 3302, 1956, 1959, 1959, 1959, 1961, 1961, 1961,
3774      1954, 1962, 1962, 1962, 1963, 1963, 1963, 3303, 3304, 1964,
3775      1964, 1964, 1959, 1964, 1961, 3305, 1964, 3306, 3307, 1962,
3776      3308, 1963, 1965, 1965, 1965, 1966, 1966, 1966, 3309, 1966,
3777      3311, 3314, 1966, 1967, 1967, 1967, 1968, 1968, 1968, 1965,
3778      1969, 1969, 1969, 3310, 1969, 1959, 3317, 1969, 1954, 3310,
3779      3318, 1967, 3319, 3320, 1968, 1972, 1972, 1972, 3321, 1973,
3780      1973, 1973, 1962, 1973, 3322, 3324, 1973, 1974, 1974, 1974,
3781      3325, 3327, 1972, 1975, 1975, 1975, 1976, 1976, 1976, 3328,
3782
3783      1976, 3330, 3331, 1976, 1974, 1977, 1977, 1977, 3333, 3334,
3784      1975, 3335, 1979, 1979, 1979, 3336, 1979, 3337, 1967, 1979,
3785      3338, 1968, 3333, 1977, 1982, 1982, 1982, 1983, 1983, 1983,
3786      3339, 1983, 3341, 3343, 1983, 1987, 1987, 1987, 3345, 1987,
3787      3347, 1982, 1987, 1990, 1990, 1990, 1991, 1991, 1991, 3349,
3788      1991, 3350, 3351, 1991, 3352, 3353, 1977, 1992, 1992, 1992,
3789      1990, 1996, 1996, 1996, 1997, 1997, 1997, 3354, 1997, 3355,
3790      3356, 1997, 3357, 3358, 1992, 2000, 2000, 2000, 1996, 2001,
3791      2001, 2001, 2004, 2004, 2004, 3362, 2004, 3364, 3366, 2004,
3792      2007, 2007, 2007, 2000, 2008, 2008, 2008, 2001, 2008, 3367,
3793
3794      3368, 2008, 2009, 2009, 2009, 3369, 2009, 2007, 3394, 2009,
3795      2013, 2013, 2013, 2015, 2015, 2015, 2017, 2017, 2017, 2018,
3796      2018, 2018, 2020, 2020, 2020, 3378, 2000, 3379, 2013, 2022,
3797      2022, 2022, 2001, 2022, 2017, 3370, 2022, 2018, 1506, 2020,
3798      2026, 2026, 2026, 2029, 2029, 2029, 2030, 2030, 2030, 3394,
3799      2030, 3382, 3371, 2030, 2033, 2033, 2033, 3383, 2026, 3380,
3800      1505, 2029, 2035, 2035, 2035, 2036, 2036, 2036, 2020, 2018,
3801      3381, 3370, 2033, 3378, 2017, 3379, 3408, 2037, 2037, 2037,
3802      2035, 2037, 2036, 1504, 2037, 2038, 2038, 2038, 3371, 2040,
3803      2040, 2040, 2029, 2040, 3386, 3382, 2040, 2043, 2043, 2043,
3804
3805      2033, 3383, 3386, 2038, 2044, 2044, 2044, 3380, 2044, 3384,
3806      3408, 2044, 3387, 3384, 2043, 2046, 2046, 2046, 3381, 2046,
3807      3387, 3402, 2046, 2050, 2050, 2050, 2053, 2053, 2053, 2054,
3808      2054, 2054, 2038, 2055, 2055, 2055, 2057, 2057, 2057, 3398,
3809      1503, 2050, 3390, 2053, 2062, 2062, 2062, 2054, 2064, 2064,
3810      2064, 3392, 2064, 3402, 3422, 2064, 2067, 2067, 2067, 2070,
3811      2070, 2070, 2062, 2072, 2072, 2072, 2074, 2074, 2074, 2076,
3812      2076, 2076, 3388, 3391, 2067, 3389, 2070, 2077, 2077, 2077,
3813      3388, 2072, 3385, 3389, 2074, 3398, 3385, 2076, 3392, 3390,
3814      2054, 2078, 2078, 2078, 2077, 2078, 3422, 3403, 2078, 2079,
3815
3816      2079, 2079, 2080, 2080, 2080, 3393, 2081, 2081, 2081, 2062,
3817      2081, 3395, 3399, 2081, 1502, 1501, 2079, 3423, 3438, 2080,
3818      3391, 1500, 2072, 2082, 2082, 2082, 2083, 2083, 2083, 3403,
3819      2084, 2084, 2084, 2076, 2084, 3396, 3397, 2084, 2087, 2087,
3820      2087, 2082, 3393, 2083, 3409, 2079, 2091, 2091, 2091, 2092,
3821      2092, 2092, 3395, 2101, 2101, 2101, 2087, 2101, 3399, 3423,
3822      2101, 2104, 2104, 2104, 2091, 3438, 2092, 2108, 2108, 2108,
3823      3396, 3397, 2083, 2109, 2109, 2109, 2082, 2109, 3409, 2104,
3824      2109, 2110, 2110, 2110, 2108, 2115, 2115, 2115, 2116, 2116,
3825      2116, 2087, 2117, 2117, 2117, 2119, 2119, 2119, 2124, 2124,
3826
3827      2124, 2125, 2125, 2125, 2126, 2126, 2126, 2104, 2127, 2127,
3828      2127, 2129, 2129, 2129, 2133, 2133, 2133, 2134, 2134, 2134,
3829      2136, 2136, 2136, 2137, 2137, 2137, 2138, 2138, 2138, 2140,
3830      2140, 2140, 3428, 2140, 3404, 3410, 2140, 2143, 2143, 2143,
3831      3412, 2143, 3400, 3404, 2143, 2147, 2147, 2147, 2149, 2149,
3832      2149, 2151, 2151, 2151, 2127, 2152, 2152, 2152, 3401, 2152,
3833      3411, 3428, 2152, 2147, 3442, 3406, 2149, 3405, 2151, 2153,
3834      2153, 2153, 2138, 2154, 2154, 2154, 3405, 2154, 3410, 3400,
3835      2154, 2157, 2157, 2157, 3407, 2157, 3412, 2153, 2157, 2160,
3836      2160, 2160, 2161, 2161, 2161, 3401, 2147, 2162, 2162, 2162,
3837
3838      3406, 2162, 3414, 3411, 2162, 3442, 3413, 2160, 2149, 2160,
3839      2161, 3416, 3417, 2165, 2165, 2165, 2166, 2166, 2166, 3407,
3840      2166, 1497, 1496, 2166, 2170, 2170, 2170, 3418, 2161, 2153,
3841      2165, 2167, 2167, 2167, 3415, 2167, 3418, 3414, 2167, 2172,
3842      2172, 2172, 2170, 2172, 3416, 3417, 2172, 2178, 2178, 2178,
3843      3424, 2178, 3413, 3436, 2178, 2181, 2181, 2181, 2182, 2182,
3844      2182, 3436, 2182, 3437, 3439, 2182, 2186, 2186, 2186, 3415,
3845      2186, 3437, 2181, 2186, 2190, 2190, 2190, 2191, 2191, 2191,
3846      2192, 2192, 2192, 3461, 3419, 2195, 2195, 2195, 1495, 2195,
3847      2170, 2190, 2195, 3419, 3461, 2191, 3424, 3425, 2192, 2202,
3848
3849      2202, 2202, 2203, 2203, 2203, 2205, 2205, 2205, 2206, 2206,
3850      2206, 3439, 2206, 1486, 3450, 2206, 1484, 2202, 3429, 1479,
3851      2203, 3420, 2205, 3421, 2213, 2213, 2213, 2214, 2214, 2214,
3852      2216, 2216, 2216, 2218, 2218, 2218, 3426, 2218, 1473, 3444,
3853      2218, 2191, 2213, 3425, 1467, 2214, 3450, 3429, 2216, 2221,
3854      2221, 2221, 3430, 2203, 2202, 2223, 2223, 2223, 3420, 2223,
3855      3421, 3430, 2223, 2229, 2229, 2229, 1463, 2221, 2230, 2230,
3856      2230, 1458, 2230, 3426, 3444, 2230, 2231, 2231, 2231, 3431,
3857      2229, 2232, 2232, 2232, 2233, 2233, 2233, 3432, 3431, 2214,
3858      2213, 2234, 2234, 2234, 2231, 2235, 2235, 2235, 2236, 2236,
3859
3860      2236, 3434, 2221, 2237, 2237, 2237, 2238, 2238, 2238, 2239,
3861      2239, 2239, 2235, 3427, 3435, 2236, 2242, 2242, 2242, 3433,
3862      2237, 3432, 3446, 2238, 2243, 2243, 2243, 2239, 2243, 3451,
3863      1454, 2243, 3447, 2242, 2245, 2245, 2245, 2247, 2247, 2247,
3864      2231, 2250, 2250, 2250, 2251, 2251, 2251, 3434, 2251, 2236,
3865      3427, 2251, 2245, 3433, 3443, 2247, 2254, 2254, 2254, 2250,
3866      3435, 3451, 2255, 2255, 2255, 2238, 2255, 2237, 3446, 2255,
3867      2260, 2260, 2260, 2254, 2239, 2257, 2257, 2257, 3447, 2257,
3868      3440, 3441, 2257, 2261, 2261, 2261, 1453, 1445, 2260, 2262,
3869      2262, 2262, 1440, 2262, 1431, 3443, 2262, 2264, 2264, 2264,
3870
3871      2261, 2268, 2268, 2268, 1429, 2270, 2270, 2270, 3445, 2271,
3872      2271, 2271, 3448, 2271, 3449, 2264, 2271, 3440, 3441, 2268,
3873      1420, 2260, 2270, 2282, 2282, 2282, 2283, 2283, 2283, 2286,
3874      2286, 2286, 3460, 2286, 2287, 2287, 2286, 2287, 3452, 2288,
3875      2288, 2282, 2288, 3445, 2283, 2287, 3460, 3452, 2264, 3448,
3876      2288, 3449, 2287, 2289, 2289, 2289, 1415, 2288, 2290, 2290,
3877      2290, 2291, 2291, 2291, 2294, 2294, 2294, 2295, 2295, 2295,
3878      1411, 1406, 2282, 2297, 2297, 2297, 2298, 2298, 2298, 2300,
3879      2300, 2300, 2301, 2301, 2301, 2302, 2302, 2302, 2303, 2303,
3880      2303, 2306, 2306, 2306, 2307, 2307, 2307, 2310, 2310, 2310,
3881
3882      2311, 2311, 2311, 2313, 2313, 2313, 2314, 2314, 2314, 2318,
3883      2318, 2318, 2319, 2319, 2319, 2320, 2320, 2320, 2321, 2321,
3884      2321, 2322, 2322, 2322, 3454, 2322, 1405, 2318, 2322, 2325,
3885      2325, 2325, 1404, 2320, 3455, 2321, 2326, 2326, 2326, 2327,
3886      2327, 2327, 2328, 2328, 2328, 1402, 2328, 2325, 1401, 2328,
3887      2331, 2331, 2331, 1399, 2326, 3453, 3454, 2327, 2336, 2336,
3888      2336, 1394, 2336, 1393, 3453, 2336, 3455, 1388, 2331, 2339,
3889      2339, 2339, 3456, 2326, 2343, 2343, 2343, 2345, 2345, 2345,
3890      2325, 2320, 3458, 2344, 2344, 2344, 2339, 2344, 1387, 3459,
3891      2344, 2343, 2346, 2346, 2346, 2345, 2355, 2355, 2355, 3457,
3892
3893      2327, 2356, 2356, 2356, 2357, 2357, 2357, 2358, 2358, 2358,
3894      2346, 2359, 2359, 2359, 3458, 2359, 1381, 1380, 2359, 2356,
3895      3456, 3459, 2357, 1379, 2358, 2362, 2362, 2362, 2363, 2363,
3896      2363, 2368, 2368, 2368, 2369, 2369, 2369, 2370, 2370, 2370,
3897      1378, 1361, 2362, 1350, 1345, 2363, 1344, 3457, 2368, 1343,
3898      1339, 2369, 1322, 2358, 1321, 2370, 2371, 2371, 2371, 1316,
3899      1315, 2356, 2372, 2372, 2372, 2373, 2373, 2373, 2377, 2377,
3900      2377, 2378, 2378, 2378, 2371, 2378, 1314, 1309, 2378, 2372,
3901      2362, 1308, 2368, 2373, 2381, 2381, 2381, 1290, 1289, 2363,
3902      2382, 2382, 2382, 2383, 2383, 2383, 1288, 2370, 1287, 2384,
3903
3904      2384, 2384, 2381, 2384, 1286, 1285, 2384, 2385, 2385, 2385,
3905      2383, 2386, 2386, 2386, 1284, 1283, 2373, 2387, 2387, 2387,
3906      2371, 2388, 2388, 2388, 2385, 2389, 2389, 2389, 2386, 2390,
3907      2390, 2390, 1282, 1272, 2387, 2394, 2394, 2394, 1271, 2388,
3908      2391, 2391, 2391, 2381, 2391, 1270, 2390, 2391, 2395, 2395,
3909      2395, 1269, 2394, 2399, 2399, 2399, 2401, 2401, 2401, 1264,
3910      2401, 1263, 2386, 2401, 1262, 1261, 2395, 1238, 2387, 1237,
3911      1230, 2399, 2405, 2405, 2405, 2406, 2406, 2406, 1226, 2406,
3912      1221, 1220, 2406, 1215, 2410, 2410, 2410, 2414, 2414, 2414,
3913      2405, 2414, 1212, 1211, 2414, 2427, 2427, 2427, 2428, 2428,
3914
3915      2428, 2394, 2410, 2441, 2441, 2441, 2442, 2442, 2442, 2445,
3916      2445, 2445, 1208, 2427, 1207, 1206, 2428, 2446, 2446, 2446,
3917      2448, 2448, 2448, 2449, 2449, 2449, 2452, 2452, 2452, 1205,
3918      2410, 2455, 2455, 2455, 2459, 2459, 2459, 2461, 2461, 2461,
3919      2462, 2462, 2462, 1204, 2463, 2463, 2463, 2464, 2464, 2464,
3920      1203, 2464, 2459, 1202, 2464, 1201, 2427, 1200, 2462, 1198,
3921      2428, 2463, 2465, 2465, 2465, 2466, 2466, 2466, 2467, 2467,
3922      2467, 2468, 2468, 2468, 2475, 2475, 2475, 2476, 2476, 2476,
3923      2465, 2476, 1197, 2466, 2476, 1196, 2467, 1195, 1194, 2468,
3924      1191, 2475, 2478, 2478, 2478, 2480, 2480, 2480, 1190, 2480,
3925
3926      1189, 1188, 2480, 2483, 2483, 2483, 2491, 2491, 2491, 2478,
3927      2492, 2492, 2492, 2493, 2493, 2493, 2494, 2494, 2494, 1186,
3928      1185, 2483, 1184, 2491, 2496, 2496, 2496, 1183, 1182, 2466,
3929      1181, 2493, 1180, 1179, 2494, 2467, 2497, 2497, 2497, 1177,
3930      2497, 2496, 1176, 2497, 2505, 2505, 2505, 2506, 2506, 2506,
3931      2507, 2507, 2507, 1175, 2507, 1174, 1173, 2507, 2508, 2508,
3932      2508, 2505, 1172, 1171, 2506, 2509, 2509, 2509, 1165, 1161,
3933      2493, 2510, 2510, 2510, 1158, 1157, 2508, 2511, 2511, 2511,
3934      1156, 2511, 1154, 2509, 2511, 2512, 2512, 2512, 2510, 2515,
3935      2515, 2515, 2516, 2516, 2516, 2517, 2517, 2517, 2518, 2518,
3936
3937      2518, 1150, 2518, 2512, 1147, 2518, 2515, 2521, 2521, 2521,
3938      2522, 2522, 2522, 2517, 2522, 1146, 1145, 2522, 2523, 2523,
3939      2523, 2524, 2524, 2524, 2521, 1141, 2509, 2525, 2525, 2525,
3940      2527, 2527, 2527, 1140, 1137, 2523, 1133, 1132, 2524, 2528,
3941      2528, 2528, 2529, 2529, 2529, 2525, 2529, 1129, 1126, 2529,
3942      2530, 2530, 2530, 2534, 2534, 2534, 2528, 2537, 2537, 2537,
3943      2550, 2550, 2550, 2568, 2568, 2568, 1123, 2530, 2569, 2569,
3944      2569, 2534, 2574, 2574, 2574, 2537, 1122, 1117, 2550, 2577,
3945      2577, 2577, 2578, 2578, 2578, 2580, 2580, 2580, 1109, 2580,
3946      1108, 1107, 2580, 2583, 2583, 2583, 2577, 2585, 2585, 2585,
3947
3948      2578, 2586, 2586, 2586, 1105, 2530, 1101, 2590, 2590, 2590,
3949      1098, 2583, 2609, 2609, 2609, 2585, 2596, 2596, 2596, 2586,
3950      2550, 1095, 1092, 2537, 2590, 2592, 2592, 2592, 1091, 2592,
3951      2609, 1090, 2592, 2596, 2597, 2597, 2597, 1089, 2597, 1088,
3952      1087, 2597, 2604, 2604, 2604, 2607, 2607, 2607, 2608, 2608,
3953      2608, 1086, 2608, 1085, 1082, 2608, 1081, 1078, 2585, 2604,
3954      1077, 1073, 2607, 1071, 2610, 2610, 2610, 2586, 2610, 1068,
3955      1067, 2610, 2618, 2618, 2618, 2619, 2619, 2619, 1064, 2619,
3956      1063, 1060, 2619, 2620, 2620, 2620, 1053, 2620, 1050, 2618,
3957      2620, 2623, 2623, 2623, 2625, 2625, 2625, 2626, 2626, 2626,
3958
3959      1049, 2626, 1048, 1045, 2626, 2629, 2629, 2629, 1041, 2623,
3960      1034, 1033, 2625, 2632, 2632, 2632, 2633, 2633, 2633, 1029,
3961      2634, 2634, 2634, 2629, 2634, 1028, 1027, 2634, 1024, 1023,
3962      2632, 1022, 1019, 2633, 2635, 2635, 2635, 2637, 2637, 2637,
3963      1012, 2637, 1011, 1010, 2637, 2640, 2640, 2640, 2642, 2642,
3964      2642, 1009, 2635, 2641, 2641, 2641, 2625, 2641, 1008, 1007,
3965      2641, 1006, 2640, 1005, 1004, 2642, 2643, 2643, 2643, 1003,
3966      2643,  999,  995, 2643, 2644, 2644, 2644,  972, 2644,  969,
3967       966, 2644, 2647, 2647, 2647, 2648, 2648, 2648, 2649, 2649,
3968      2649, 2652, 2652, 2652, 2653, 2653, 2653,  965,  958, 2647,
3969
3970       957,  955, 2648,  954,  953, 2649, 2654, 2654, 2654, 2652,
3971      2665, 2665, 2665, 2682, 2682, 2682, 2683, 2683, 2683, 2687,
3972      2687, 2687,  952, 2654, 2690, 2690, 2690,  951, 2665, 2691,
3973      2691, 2691,  950, 2691,  949,  948, 2691, 2692, 2692, 2692,
3974       947, 2690,  946, 2647,  945, 2693, 2693, 2693, 2696, 2696,
3975      2696, 2697, 2697, 2697,  944, 2692,  942, 2698, 2698, 2698,
3976       941, 2698, 2652, 2693, 2698, 2696,  940,  939, 2697,  938,
3977      2665, 2699, 2699, 2699, 2701, 2701, 2701,  937, 2701,  936,
3978       935, 2701, 2711, 2711, 2711, 2712, 2712, 2712, 2699,  934,
3979      2713, 2713, 2713,  932, 2713,  931, 2693, 2713,  930, 2711,
3980
3981       929,  928, 2712,  927, 2692, 2714, 2714, 2714,  926, 2714,
3982       925,  924, 2714, 2717, 2717, 2717, 2720, 2720, 2720, 2722,
3983      2722, 2722,  923, 2722,  919,  915, 2722,  914, 2711,  913,
3984       912, 2717,  911, 2720, 2731, 2731, 2731, 2733, 2733, 2733,
3985      2734, 2734, 2734,  907, 2734,  905,  904, 2734,  903, 2735,
3986      2735, 2735, 2731, 2735, 2733,  902, 2735, 2738, 2738, 2738,
3987       901, 2738,  900,  897, 2738, 2741, 2741, 2741,  896, 2741,
3988       894,  892, 2741, 2750, 2750, 2750, 2751, 2751, 2751, 2752,
3989      2752, 2752,  888, 2752,  887,  886, 2752, 2753, 2753, 2753,
3990      2750,  884,  881, 2751, 2754, 2754, 2754,  880, 2754,  878,
3991
3992       877, 2754,  874,  872, 2753, 2755, 2755, 2755, 2756, 2756,
3993      2756, 2757, 2757, 2757, 2758, 2758, 2758, 2759, 2759, 2759,
3994       869,  868, 2755,  867,  866, 2756, 2771, 2771, 2771, 2757,
3995      2774, 2774, 2774, 2750, 2759, 2760, 2760, 2760,  863, 2760,
3996       862,  861, 2760,  860, 2771,  859,  858, 2774, 2774, 2788,
3997      2788, 2788, 2789, 2789, 2789, 2792, 2792, 2792, 2793, 2793,
3998      2793, 2795, 2795, 2795,  857, 2795,  855,  852, 2795, 2798,
3999      2798, 2798,  851, 2757, 2799, 2799, 2799, 2771, 2802, 2802,
4000      2802, 2803, 2803, 2803,  847, 2803,  846, 2798, 2803, 2804,
4001      2804, 2804, 2799, 2804,  845, 2802, 2804, 2807, 2807, 2807,
4002
4003      2808, 2808, 2808,  844, 2808,  843,  842, 2808, 2817, 2817,
4004      2817, 2818, 2818, 2818, 2807, 2818,  841,  833, 2818, 2820,
4005      2820, 2820,  832, 2820,  829, 2817, 2820, 2824, 2824, 2824,
4006      2825, 2825, 2825,  828, 2825, 2798,  827, 2825, 2833, 2833,
4007      2833, 2836, 2836, 2836, 2824, 2836,  826,  825, 2836, 2851,
4008      2851, 2851,  823, 2852, 2852, 2852, 2833, 2852,  822,  821,
4009      2852, 2855, 2855, 2855,  818, 2855, 2851,  817, 2855, 2858,
4010      2858, 2858, 2859, 2859, 2859,  816, 2859,  813,  812, 2859,
4011      2860, 2860, 2860, 2861, 2861, 2861, 2858, 2861,  811,  808,
4012      2861, 2862, 2862, 2862, 2863, 2863, 2863, 2860, 2863,  807,
4013
4014       803, 2863, 2874, 2874, 2874, 2876, 2876, 2876,  801, 2862,
4015      2877, 2877, 2877,  798, 2878, 2878, 2878,  797, 2878,  796,
4016      2874, 2878, 2876, 2876, 2891, 2891, 2891, 2877, 2877, 2892,
4017      2892, 2892, 2878, 2893, 2893, 2893, 2894, 2894, 2894, 2895,
4018      2895, 2895, 2862, 2896, 2896, 2896, 2901, 2901, 2901,  795,
4019       793, 2874, 2902, 2902, 2902, 2906, 2906, 2906,  790, 2906,
4020       789,  788, 2906,  785, 2901, 2909, 2909, 2909,  782, 2909,
4021      2902,  778, 2909, 2912, 2912, 2912, 2920, 2920, 2920,  777,
4022      2920,  776,  775, 2920, 2924, 2924, 2924, 2925, 2925, 2925,
4023      2912, 2925,  772,  769, 2925,  768,  765, 2901, 2928, 2928,
4024
4025      2928, 2924, 2948, 2948, 2948, 2949, 2949, 2949,  761, 2949,
4026       760,  759, 2949,  758,  757, 2928, 2954, 2954, 2954, 2948,
4027      2954,  756,  755, 2954, 2957, 2957, 2957,  754, 2957,  753,
4028       752, 2957, 2960, 2960, 2960, 2969, 2969, 2969, 2971, 2971,
4029      2971, 2972, 2972, 2972,  751, 2972,  750,  748, 2972,  746,
4030      2960,  745,  742, 2969,  741, 2971, 2971,  740,  739, 2972,
4031      2973, 2973, 2973,  738, 2973,  737,  732, 2973, 2984, 2984,
4032      2984, 2985, 2985, 2985, 2986, 2986, 2986,  731, 2973, 2987,
4033      2987, 2987, 2992, 2992, 2992, 2996, 2996, 2996,  730, 2996,
4034       727,  726, 2996,  725, 2995, 2995, 2995, 2997, 2997, 2997,
4035
4036      2992, 2969, 2974, 2974, 2974, 2974, 2974, 2974, 2974, 2974,
4037      2974, 2995,  724, 2974, 2997, 3005, 3005, 3005, 2974, 2974,
4038      2974, 2974, 2974, 3006, 3006, 3006,  721, 3006,  720,  718,
4039      3006,  715, 3005, 3008, 3008, 3008,  714, 3008,  711,  710,
4040      3008, 3007, 3007, 3007, 3033, 3033, 3033, 2974, 2974, 2975,
4041      2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, 3007,  709,
4042      2975,  708, 3033,  707,  706, 2975, 2975, 2975, 2975, 2975,
4043      3026, 3026, 3026,  698, 3026,  697,  696, 3026, 3041, 3041,
4044      3041, 3043, 3043, 3043,  693, 3043,  692,  691, 3043,  690,
4045       687, 3058, 3058, 3058, 2975, 2975, 3041,  685,  684, 3043,
4046
4047      3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3058,
4048       680, 3046, 3065, 3065, 3065,  679, 3046, 3046, 3046, 3046,
4049      3046, 3062, 3062, 3062,  678, 3062,  677,  674, 3062, 3065,
4050      3066, 3066, 3066,  673, 3066,  672,  671, 3066, 3105, 3105,
4051      3105, 3113, 3113, 3113,  667, 3046, 3046, 3047, 3047, 3047,
4052      3047, 3047, 3047, 3047, 3047, 3047, 3105,  666, 3047, 3113,
4053      3113,  665,  664, 3047, 3047, 3047, 3047, 3047, 3072, 3072,
4054      3072,  658, 3072,  657,  655, 3072, 3075, 3075, 3075,  649,
4055      3075,  648,  647, 3075, 3124, 3124, 3124, 3125, 3125, 3125,
4056       643,  640, 3047, 3047,  638, 3130, 3130, 3130,  637, 3130,
4057
4058       636, 3124, 3130,  632, 3125, 3135, 3135, 3135, 3140, 3140,
4059      3140, 3153, 3153, 3153, 3157, 3157, 3157, 3166, 3166, 3166,
4060       628,  624, 3135,  623,  622, 3140, 3167, 3167, 3167, 3153,
4061      3167,  621, 3157, 3167, 3166, 3168, 3168, 3168, 3169, 3169,
4062      3169,  617, 3169,  613,  610, 3169, 3178, 3178, 3178, 3179,
4063      3179, 3179, 3168, 3179,  609,  608, 3179, 3186, 3186, 3186,
4064      3187, 3187, 3187, 3178, 3187, 3157,  607, 3187, 3194, 3194,
4065      3194, 3202, 3202, 3202, 3186, 3202,  603,  597, 3202,  596,
4066      3205, 3205, 3205,  592, 3205,  584, 3194, 3205, 3216, 3216,
4067      3216,  580, 3216,  573,  571, 3216, 3225, 3225, 3225,  570,
4068
4069      3225,  566,  560, 3225,  559, 3194, 3348, 3348, 3348, 3359,
4070      3359, 3359,  555, 3359,  551,  547, 3359, 3462, 3462, 3462,
4071      3463, 3463, 3463,  546, 3348,  545,  544, 3359,  543,  539,
4072       535,  528,  524,  517,  516, 3462,  515,  514, 3463, 3466,
4073      3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3467, 3467,
4074      3467, 3467, 3467, 3467, 3467, 3467, 3467, 3468, 3468, 3468,
4075      3468, 3468, 3468, 3468, 3468, 3468, 3469, 3469, 3469, 3469,
4076      3469, 3469, 3469, 3469, 3469, 3470, 3470, 3470, 3470, 3470,
4077      3470, 3470, 3470, 3470, 3471, 3471, 3471, 3471, 3471, 3471,
4078      3471, 3471, 3471, 3472, 3472, 3472, 3472, 3472, 3472, 3472,
4079
4080      3472, 3472, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473,
4081      3473, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
4082      3475, 3475, 3475, 3475, 3475, 3475, 3475, 3475, 3475, 3476,
4083      3476, 3476, 3476, 3476, 3476, 3476, 3476, 3476, 3477, 3477,
4084      3477, 3477, 3477, 3477, 3477, 3477, 3477, 3478, 3478, 3478,
4085      3478, 3478, 3478, 3478, 3478, 3478, 3479, 3479, 3479, 3479,
4086      3479, 3479, 3479, 3479, 3479, 3480, 3480, 3480, 3480, 3480,
4087      3480, 3480, 3480, 3480, 3481, 3481, 3481, 3481, 3481, 3481,
4088      3481, 3481, 3481, 3482, 3482, 3482, 3482, 3482, 3482, 3482,
4089      3482, 3482, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483,
4090
4091      3483, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484,
4092      3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3486,
4093      3486, 3486, 3486, 3486, 3486, 3486, 3486, 3486, 3487, 3487,
4094      3487, 3487, 3487, 3487, 3487, 3487, 3487, 3488, 3488, 3488,
4095      3488, 3488, 3488, 3488, 3488, 3488, 3489, 3489, 3489, 3489,
4096      3489, 3489, 3489, 3489, 3489, 3490, 3490, 3490, 3490, 3490,
4097      3490, 3490, 3490, 3490, 3491, 3491, 3491, 3491, 3491, 3491,
4098      3491, 3491, 3491, 3492, 3492, 3492, 3492, 3492, 3492, 3492,
4099      3492, 3492, 3493, 3493, 3493, 3493, 3493, 3493, 3493, 3493,
4100      3493, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494,
4101
4102      3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3496,
4103      3496, 3496, 3496, 3496, 3496, 3496, 3496, 3496, 3497, 3497,
4104      3497, 3497, 3497, 3497, 3497, 3497, 3497, 3498, 3498, 3498,
4105      3498, 3498, 3498, 3498, 3498, 3498, 3499, 3499, 3499, 3499,
4106      3499, 3499, 3499, 3499, 3499, 3500, 3500, 3500, 3500, 3500,
4107      3500, 3500, 3500, 3500, 3501, 3501, 3501, 3501, 3501, 3501,
4108      3501, 3501, 3501, 3502, 3502, 3502, 3502, 3502, 3502, 3502,
4109      3502, 3502, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503,
4110      3503, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504,
4111      3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3506,
4112
4113      3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3507, 3507,
4114      3507, 3507, 3507, 3507, 3507, 3507, 3507, 3508, 3508, 3508,
4115      3508, 3508, 3508, 3508, 3508, 3508, 3509, 3509, 3509, 3509,
4116      3509, 3509, 3509, 3509, 3509, 3510, 3510, 3510, 3510, 3510,
4117      3510, 3510, 3510, 3510, 3511, 3511, 3511, 3511, 3511, 3511,
4118      3511, 3511, 3511, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
4119      3512, 3512, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513,
4120      3513, 3514, 3514, 3514, 3514, 3514, 3514, 3514, 3514, 3514,
4121      3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3516,
4122      3516, 3516, 3516, 3516, 3516, 3516, 3516, 3516, 3517, 3517,
4123
4124      3517, 3517, 3517, 3517, 3517, 3517, 3517, 3518, 3518, 3518,
4125      3518, 3518, 3518, 3518, 3518, 3518, 3519, 3519, 3519, 3519,
4126      3519, 3519, 3519, 3519, 3519, 3520, 3520, 3520, 3520, 3520,
4127      3520, 3520, 3520, 3520, 3521, 3521, 3521, 3521, 3521, 3521,
4128      3521, 3521, 3521, 3522, 3522, 3522, 3522, 3522, 3522, 3522,
4129      3522, 3522, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523,
4130      3523, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524,
4131      3525, 3525, 3525, 3525, 3525, 3525, 3525, 3525, 3525, 3526,
4132      3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3527, 3527,
4133      3527, 3527, 3527, 3527, 3527, 3527, 3527, 3528, 3528, 3528,
4134
4135      3528, 3528, 3528, 3528, 3528, 3528, 3529, 3529, 3529, 3529,
4136      3529, 3529, 3529, 3529, 3529, 3530, 3530, 3530,  513,  512,
4137       511, 3530, 3531, 3531, 3531,  507,  501,  500, 3531, 3532,
4138      3532, 3532,  496,  490,  489, 3532, 3533, 3533, 3533,  485,
4139       479,  478, 3533, 3534, 3534, 3534,  474,  468,  467, 3534,
4140      3535, 3535, 3535,  463,  459,  455, 3535, 3536, 3536, 3536,
4141       454,  453,  449, 3536, 3537, 3537, 3537,  445,  441,  437,
4142      3537, 3538, 3538, 3538,  431,  430,  429, 3538, 3539, 3539,
4143      3539,  425,  421,  417, 3539, 3540, 3540, 3540,  415,  414,
4144       413, 3540, 3541, 3541, 3541,  409,  403,  399, 3541, 3542,
4145
4146      3542, 3542,  395,  392,  388, 3542, 3543, 3543, 3543,  384,
4147       381,  376, 3543, 3544, 3544, 3544,  375,  373,  369, 3544,
4148      3545, 3545, 3545,  363,  362,  360, 3545, 3546, 3546, 3546,
4149       359,  358,  354, 3546, 3547, 3547, 3547,  347,  346,  342,
4150      3547, 3548, 3548, 3548,  335,  334,  333, 3548, 3549, 3549,
4151      3549,  329,  323,  322, 3549, 3550, 3550, 3550,  321,  317,
4152       311, 3550, 3551, 3551, 3551,  307,  298,  297, 3551, 3552,
4153      3552, 3552,  293,  289,  285, 3552, 3553, 3553, 3553,  281,
4154       280,  276, 3553, 3554, 3554, 3554,  273,  272,  271, 3554,
4155      3555, 3555, 3555,  265,  264,  262, 3555, 3556, 3556, 3556,
4156
4157       259,  247,    0, 3556, 3557, 3557, 3557,    0,    0,    0,
4158      3557, 3558, 3558, 3558,    0,    0,    0, 3558, 3559, 3559,
4159      3559, 3559, 3559, 3559, 3559,    0, 3559, 3560, 3560, 3560,
4160         0,    0,    0, 3560, 3561,    0,    0,    0, 3561, 3562,
4161      3562, 3562,    0,    0,    0, 3562, 3563,    0,    0,    0,
4162      3563, 3564, 3564, 3564,    0,    0,    0, 3564, 3565,    0,
4163         0,    0, 3565, 3566, 3566, 3566,    0,    0,    0, 3566,
4164      3567,    0,    0,    0, 3567, 3568, 3568, 3568,    0,    0,
4165         0, 3568, 3569,    0,    0,    0, 3569, 3570, 3570, 3570,
4166         0,    0,    0, 3570, 3571,    0,    0,    0, 3571, 3572,
4167
4168      3572, 3572,    0,    0,    0, 3572, 3573,    0,    0,    0,
4169      3573, 3574, 3574, 3574,    0,    0,    0, 3574, 3575,    0,
4170         0,    0, 3575, 3576, 3576, 3576,    0,    0,    0, 3576,
4171      3577,    0,    0,    0, 3577, 3578, 3578, 3578,    0,    0,
4172         0, 3578, 3579,    0,    0,    0, 3579, 3580, 3580, 3580,
4173         0,    0,    0, 3580, 3581,    0,    0,    0, 3581, 3582,
4174      3582, 3582,    0,    0,    0, 3582, 3583,    0,    0,    0,
4175      3583, 3584, 3584, 3584,    0,    0,    0, 3584, 3585,    0,
4176         0,    0, 3585, 3586, 3586, 3586,    0,    0,    0, 3586,
4177      3587,    0,    0,    0, 3587, 3588, 3588, 3588,    0,    0,
4178
4179         0, 3588, 3589,    0,    0,    0, 3589, 3590, 3590, 3590,
4180         0,    0,    0, 3590, 3591,    0,    0,    0, 3591, 3592,
4181      3592, 3592,    0,    0,    0, 3592, 3593,    0,    0,    0,
4182      3593, 3594, 3594, 3594,    0,    0,    0, 3594, 3595,    0,
4183         0,    0, 3595, 3596, 3596, 3596,    0,    0,    0, 3596,
4184      3597,    0,    0,    0, 3597, 3598, 3598, 3598,    0,    0,
4185         0, 3598, 3599,    0,    0,    0, 3599, 3600, 3600, 3600,
4186         0,    0,    0, 3600, 3601,    0,    0,    0, 3601, 3602,
4187      3602, 3602,    0,    0,    0, 3602, 3603,    0,    0,    0,
4188      3603, 3604, 3604, 3604,    0,    0,    0, 3604, 3605,    0,
4189
4190         0,    0, 3605, 3606, 3606, 3606,    0,    0,    0, 3606,
4191      3607,    0,    0,    0, 3607, 3608, 3608, 3608,    0,    0,
4192         0, 3608, 3609,    0,    0,    0, 3609, 3610, 3610, 3610,
4193         0,    0,    0, 3610, 3611,    0,    0,    0, 3611, 3612,
4194      3612, 3612,    0,    0,    0, 3612, 3613,    0,    0,    0,
4195      3613, 3614, 3614, 3614,    0,    0,    0, 3614, 3615,    0,
4196         0,    0, 3615, 3616, 3616, 3616,    0,    0,    0, 3616,
4197      3617,    0,    0,    0, 3617, 3618, 3618, 3618, 3618, 3618,
4198      3618, 3618, 3618, 3618, 3619,    0,    0,    0,    0, 3619,
4199      3620, 3620, 3620,    0,    0,    0, 3620, 3621, 3621, 3621,
4200
4201      3621,    0,    0, 3621, 3621, 3622, 3622, 3622, 3622,    0,
4202      3622,    0, 3622, 3623, 3623, 3623, 3623,    0,    0, 3623,
4203      3623, 3624, 3624, 3624,    0,    0,    0, 3624, 3625, 3625,
4204      3625, 3625,    0,    0, 3625, 3625, 3626, 3626, 3626,    0,
4205         0,    0, 3626, 3627, 3627, 3627, 3627,    0,    0, 3627,
4206      3627, 3628, 3628, 3628, 3628,    0, 3628,    0, 3628, 3629,
4207      3629, 3629, 3629,    0,    0, 3629, 3629, 3630, 3630, 3630,
4208      3630,    0, 3630,    0, 3630, 3631, 3631, 3631, 3631,    0,
4209         0, 3631, 3631, 3632, 3632, 3632, 3632,    0, 3632,    0,
4210      3632, 3633, 3633, 3633, 3633,    0,    0, 3633, 3633, 3634,
4211
4212      3634, 3634,    0,    0,    0, 3634, 3635, 3635, 3635, 3635,
4213         0,    0, 3635, 3635, 3636, 3636, 3636, 3636,    0,    0,
4214      3636, 3636, 3637, 3637, 3637,    0,    0,    0, 3637, 3638,
4215      3638, 3638, 3638,    0,    0, 3638, 3638, 3639, 3639, 3639,
4216         0,    0,    0, 3639, 3640, 3640, 3640, 3640,    0,    0,
4217      3640, 3640, 3641, 3641, 3641,    0,    0,    0, 3641, 3642,
4218      3642, 3642, 3642,    0,    0, 3642, 3642, 3643, 3643, 3643,
4219         0,    0,    0, 3643, 3644, 3644, 3644, 3644,    0,    0,
4220      3644, 3644, 3645, 3645, 3645,    0,    0,    0, 3645, 3646,
4221      3646, 3646, 3646,    0,    0, 3646, 3646, 3647, 3647, 3647,
4222
4223         0,    0,    0, 3647, 3648, 3648, 3648, 3648,    0,    0,
4224      3648, 3648, 3649, 3649, 3649,    0,    0,    0, 3649, 3650,
4225      3650, 3650, 3650,    0,    0, 3650, 3650, 3651, 3651, 3651,
4226         0,    0,    0, 3651, 3652, 3652, 3652, 3652,    0,    0,
4227      3652, 3652, 3653, 3653, 3653,    0,    0,    0, 3653, 3654,
4228      3654, 3654, 3654,    0,    0, 3654, 3654, 3655, 3655, 3655,
4229         0,    0,    0, 3655, 3656, 3656, 3656, 3656,    0,    0,
4230      3656, 3656, 3657, 3657, 3657,    0,    0,    0, 3657, 3658,
4231      3658, 3658, 3658,    0,    0, 3658, 3658, 3659, 3659, 3659,
4232         0,    0,    0, 3659, 3660, 3660, 3660, 3660,    0,    0,
4233
4234      3660, 3660, 3661, 3661, 3661,    0,    0,    0, 3661, 3662,
4235      3662, 3662, 3662,    0,    0, 3662, 3662, 3663, 3663, 3663,
4236         0,    0,    0, 3663, 3664, 3664, 3664, 3664,    0,    0,
4237      3664, 3664, 3665, 3665, 3665, 3665,    0, 3665,    0, 3665,
4238      3666, 3666, 3666, 3666,    0,    0, 3666, 3666, 3667, 3667,
4239      3667,    0,    0,    0, 3667, 3668, 3668, 3668, 3668,    0,
4240         0, 3668, 3668, 3669, 3669, 3669,    0,    0,    0, 3669,
4241      3670, 3670, 3670, 3670,    0,    0, 3670, 3670, 3671, 3671,
4242      3671,    0,    0,    0, 3671, 3672, 3672, 3672, 3672,    0,
4243         0, 3672, 3672, 3673, 3673, 3673,    0,    0,    0, 3673,
4244
4245      3674, 3674, 3674, 3674,    0,    0, 3674, 3674, 3675, 3675,
4246      3675,    0,    0,    0, 3675, 3676, 3676, 3676, 3676,    0,
4247         0, 3676, 3676, 3677, 3677, 3677, 3677, 3677, 3677, 3677,
4248      3677, 3677, 3678,    0, 3678,    0,    0, 3678, 3679, 3679,
4249      3679,    0,    0,    0, 3679, 3680, 3680, 3680, 3680,    0,
4250         0, 3680, 3680, 3681, 3681, 3681,    0,    0,    0, 3681,
4251      3682, 3682, 3682, 3682,    0,    0, 3682, 3682, 3683, 3683,
4252      3683,    0,    0,    0, 3683, 3684, 3684, 3684, 3684,    0,
4253         0, 3684, 3684, 3685, 3685, 3685,    0,    0,    0, 3685,
4254      3686, 3686, 3686, 3686,    0,    0, 3686, 3686, 3687, 3687,
4255
4256      3687,    0,    0,    0, 3687, 3688, 3688, 3688, 3688,    0,
4257         0, 3688, 3688, 3689, 3689, 3689, 3689,    0,    0, 3689,
4258      3689, 3690, 3690, 3690,    0,    0,    0, 3690, 3691, 3691,
4259      3691, 3691,    0,    0, 3691, 3691, 3692, 3692, 3692,    0,
4260         0,    0, 3692, 3693, 3693, 3693, 3693,    0,    0, 3693,
4261      3693, 3694, 3694, 3694, 3694,    0,    0, 3694, 3694, 3695,
4262      3695, 3695, 3695,    0, 3695,    0, 3695, 3696, 3696, 3696,
4263      3696,    0,    0, 3696, 3696, 3697, 3697, 3697,    0,    0,
4264         0, 3697, 3698, 3698, 3698, 3698,    0,    0, 3698, 3698,
4265      3699, 3699, 3699, 3699,    0, 3699,    0, 3699, 3700, 3700,
4266
4267      3700, 3700,    0,    0, 3700, 3700, 3701, 3701, 3701, 3701,
4268         0, 3701,    0, 3701, 3702, 3702, 3702, 3702,    0,    0,
4269      3702, 3702, 3703, 3703, 3703,    0,    0,    0, 3703, 3704,
4270      3704, 3704, 3704,    0,    0, 3704, 3704, 3705, 3705, 3705,
4271         0,    0,    0, 3705, 3706, 3706, 3706, 3706,    0,    0,
4272      3706, 3706, 3707, 3707, 3707,    0,    0,    0, 3707, 3708,
4273      3708, 3708, 3708,    0,    0, 3708, 3708, 3709, 3709, 3709,
4274      3709,    0, 3709,    0, 3709, 3710, 3710, 3710, 3710,    0,
4275         0, 3710, 3710, 3711, 3711, 3711, 3711,    0, 3711,    0,
4276      3711, 3712, 3712, 3712, 3712,    0,    0, 3712, 3712, 3713,
4277
4278      3713, 3713,    0,    0,    0, 3713, 3714, 3714, 3714, 3714,
4279         0,    0, 3714, 3714, 3715, 3715, 3715,    0,    0,    0,
4280      3715, 3716, 3716, 3716, 3716,    0,    0, 3716, 3716, 3717,
4281      3717, 3717,    0,    0,    0, 3717, 3718, 3718, 3718, 3718,
4282         0,    0, 3718, 3718, 3719, 3719, 3719,    0,    0,    0,
4283      3719, 3720, 3720, 3720, 3720,    0,    0, 3720, 3720, 3721,
4284      3721, 3721,    0,    0,    0, 3721, 3722, 3722, 3722, 3722,
4285         0,    0, 3722, 3722, 3723, 3723, 3723,    0,    0,    0,
4286      3723, 3724, 3724, 3724, 3724,    0,    0, 3724, 3724, 3725,
4287      3725, 3725,    0,    0,    0, 3725, 3726, 3726, 3726, 3726,
4288
4289         0,    0, 3726, 3726, 3727, 3727, 3727,    0,    0,    0,
4290      3727, 3728, 3728, 3728, 3728,    0,    0, 3728, 3728, 3729,
4291      3729, 3729,    0,    0,    0, 3729, 3730, 3730, 3730, 3730,
4292         0,    0, 3730, 3730, 3731, 3731, 3731, 3731,    0, 3731,
4293         0, 3731, 3732, 3732, 3732, 3732,    0,    0, 3732, 3732,
4294      3733, 3733, 3733,    0,    0,    0, 3733, 3734, 3734, 3734,
4295      3734,    0,    0, 3734, 3734, 3735, 3735, 3735, 3735, 3735,
4296      3735, 3735, 3735, 3735, 3736, 3736, 3736, 3736, 3736, 3736,
4297      3736, 3736, 3736, 3737, 3737, 3737,    0,    0,    0, 3737,
4298      3738, 3738, 3738,    0,    0,    0, 3738, 3739, 3739, 3739,
4299
4300      3739,    0,    0, 3739, 3739, 3740, 3740, 3740, 3740,    0,
4301      3740,    0, 3740, 3741, 3741, 3741, 3741,    0,    0, 3741,
4302      3741, 3742, 3742, 3742,    0,    0,    0, 3742, 3743, 3743,
4303      3743, 3743,    0,    0, 3743, 3743, 3744, 3744, 3744,    0,
4304         0,    0, 3744, 3745, 3745, 3745, 3745,    0,    0, 3745,
4305      3745, 3746, 3746, 3746, 3746,    0,    0, 3746, 3746, 3747,
4306      3747, 3747, 3747,    0, 3747,    0, 3747, 3748, 3748, 3748,
4307      3748,    0,    0, 3748, 3748, 3749, 3749, 3749,    0,    0,
4308         0, 3749, 3750, 3750, 3750, 3750,    0,    0, 3750, 3750,
4309      3751, 3751, 3751, 3751,    0,    0, 3751, 3751, 3752, 3752,
4310
4311      3752, 3752,    0,    0, 3752, 3752, 3753, 3753, 3753,    0,
4312         0,    0, 3753, 3754, 3754, 3754, 3754,    0,    0, 3754,
4313      3754, 3755, 3755, 3755, 3755,    0,    0, 3755, 3755, 3756,
4314      3756, 3756, 3756,    0,    0, 3756, 3756, 3757, 3757, 3757,
4315         0,    0,    0, 3757, 3758, 3758, 3758, 3758,    0,    0,
4316      3758, 3758, 3759, 3759, 3759,    0,    0,    0, 3759, 3760,
4317      3760, 3760, 3760,    0,    0, 3760, 3760, 3761, 3761, 3761,
4318      3761,    0, 3761,    0, 3761, 3762, 3762, 3762, 3762,    0,
4319         0, 3762, 3762, 3763, 3763, 3763,    0,    0,    0, 3763,
4320      3764, 3764, 3764, 3764,    0,    0, 3764, 3764, 3765, 3765,
4321
4322      3765,    0,    0,    0, 3765, 3766, 3766, 3766, 3766,    0,
4323         0, 3766, 3766, 3767, 3767, 3767,    0,    0,    0, 3767,
4324      3768, 3768, 3768, 3768,    0,    0, 3768, 3768, 3769, 3769,
4325      3769,    0,    0,    0, 3769, 3770, 3770, 3770, 3770,    0,
4326         0, 3770, 3770, 3771, 3771, 3771,    0,    0,    0, 3771,
4327      3772, 3772, 3772, 3772,    0,    0, 3772, 3772, 3773, 3773,
4328      3773, 3773,    0, 3773,    0, 3773, 3774, 3774, 3774, 3774,
4329         0,    0, 3774, 3774, 3775, 3775, 3775,    0,    0,    0,
4330      3775, 3776, 3776, 3776, 3776,    0,    0, 3776, 3776, 3777,
4331      3777, 3777,    0,    0,    0, 3777, 3778, 3778, 3778, 3778,
4332
4333         0,    0, 3778, 3778, 3779, 3779, 3779,    0,    0,    0,
4334      3779, 3780, 3780, 3780, 3780,    0,    0, 3780, 3780, 3781,
4335      3781, 3781,    0,    0,    0, 3781, 3782, 3782, 3782, 3782,
4336         0,    0, 3782, 3782, 3783, 3783, 3783,    0,    0,    0,
4337      3783, 3784, 3784, 3784, 3784,    0,    0, 3784, 3784, 3785,
4338      3785, 3785,    0,    0,    0, 3785, 3786, 3786, 3786, 3786,
4339         0,    0, 3786, 3786, 3787, 3787, 3787,    0,    0,    0,
4340      3787, 3788, 3788, 3788, 3788,    0,    0, 3788, 3788, 3789,
4341      3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3790, 3790,
4342      3790, 3790, 3790, 3790, 3790, 3790, 3790, 3791, 3791, 3791,
4343
4344         0,    0,    0, 3791, 3792, 3792, 3792, 3792,    0, 3792,
4345         0, 3792, 3793, 3793, 3793, 3793,    0,    0, 3793, 3793,
4346      3794, 3794, 3794, 3794,    0,    0, 3794, 3794, 3795, 3795,
4347      3795,    0,    0,    0, 3795, 3796, 3796, 3796, 3796,    0,
4348         0, 3796, 3796, 3797, 3797, 3797, 3797,    0, 3797,    0,
4349      3797, 3798, 3798, 3798, 3798,    0,    0, 3798, 3798, 3799,
4350      3799, 3799, 3799,    0,    0, 3799, 3799, 3800, 3800, 3800,
4351      3800,    0, 3800,    0, 3800, 3801, 3801, 3801, 3801,    0,
4352         0, 3801, 3801, 3802, 3802, 3802,    0,    0,    0, 3802,
4353      3803, 3803, 3803, 3803,    0,    0, 3803, 3803, 3804, 3804,
4354
4355      3804, 3804,    0,    0, 3804, 3804, 3805, 3805, 3805,    0,
4356         0,    0, 3805, 3806, 3806, 3806, 3806,    0,    0, 3806,
4357      3806, 3807, 3807, 3807, 3807,    0,    0, 3807, 3807, 3808,
4358      3808, 3808, 3808,    0,    0, 3808, 3808, 3809, 3809, 3809,
4359         0,    0,    0, 3809, 3810, 3810, 3810, 3810,    0,    0,
4360      3810, 3810, 3811, 3811, 3811,    0,    0,    0, 3811, 3812,
4361      3812, 3812, 3812,    0,    0, 3812, 3812, 3813, 3813, 3813,
4362      3813,    0,    0, 3813, 3813, 3814, 3814, 3814,    0,    0,
4363         0, 3814, 3815, 3815, 3815, 3815,    0,    0, 3815, 3815,
4364      3816, 3816, 3816, 3816,    0, 3816,    0, 3816, 3817, 3817,
4365
4366      3817, 3817,    0,    0, 3817, 3817, 3818, 3818, 3818,    0,
4367         0,    0, 3818, 3819, 3819, 3819, 3819,    0,    0, 3819,
4368      3819, 3820, 3820, 3820,    0,    0,    0, 3820, 3821, 3821,
4369      3821, 3821,    0,    0, 3821, 3821, 3822, 3822, 3822,    0,
4370         0,    0, 3822, 3823, 3823, 3823, 3823,    0,    0, 3823,
4371      3823, 3824, 3824, 3824, 3824,    0,    0, 3824, 3824, 3825,
4372      3825, 3825,    0,    0,    0, 3825, 3826, 3826, 3826, 3826,
4373         0,    0, 3826, 3826, 3827, 3827, 3827,    0,    0,    0,
4374      3827, 3828, 3828, 3828, 3828,    0,    0, 3828, 3828, 3829,
4375      3829, 3829,    0,    0,    0, 3829, 3830, 3830, 3830, 3830,
4376
4377         0,    0, 3830, 3830, 3831, 3831, 3831, 3831,    0, 3831,
4378         0, 3831, 3832, 3832, 3832, 3832,    0,    0, 3832, 3832,
4379      3833, 3833, 3833,    0,    0,    0, 3833, 3834, 3834, 3834,
4380      3834,    0,    0, 3834, 3834, 3835, 3835, 3835,    0,    0,
4381         0, 3835, 3836, 3836, 3836, 3836,    0,    0, 3836, 3836,
4382      3837, 3837, 3837,    0,    0,    0, 3837, 3838, 3838, 3838,
4383      3838,    0,    0, 3838, 3838, 3839, 3839, 3839, 3839, 3839,
4384      3839, 3839, 3839, 3839, 3840, 3840, 3840, 3840, 3840, 3840,
4385      3840, 3840, 3840, 3841, 3841, 3841, 3841,    0, 3841,    0,
4386      3841, 3842, 3842, 3842,    0,    0,    0, 3842, 3843, 3843,
4387
4388      3843, 3843,    0,    0, 3843, 3843, 3844, 3844, 3844, 3844,
4389         0,    0, 3844, 3844, 3845, 3845, 3845,    0,    0,    0,
4390      3845, 3846, 3846, 3846, 3846,    0,    0, 3846, 3846, 3847,
4391      3847, 3847, 3847,    0,    0, 3847, 3847, 3848, 3848, 3848,
4392      3848,    0,    0, 3848, 3848, 3849, 3849, 3849, 3849,    0,
4393      3849,    0, 3849, 3850, 3850, 3850, 3850,    0,    0, 3850,
4394      3850, 3851, 3851, 3851,    0,    0,    0, 3851, 3852, 3852,
4395      3852, 3852,    0,    0, 3852, 3852, 3853, 3853, 3853, 3853,
4396         0,    0, 3853, 3853, 3854, 3854, 3854,    0,    0,    0,
4397      3854, 3855, 3855, 3855, 3855,    0,    0, 3855, 3855, 3856,
4398
4399      3856, 3856, 3856,    0,    0, 3856, 3856, 3857, 3857, 3857,
4400         0,    0,    0, 3857, 3858, 3858, 3858,    0,    0,    0,
4401      3858, 3859, 3859, 3859, 3859,    0,    0, 3859, 3859, 3860,
4402      3860, 3860, 3860,    0,    0, 3860, 3860, 3861, 3861, 3861,
4403         0,    0,    0, 3861, 3862, 3862, 3862, 3862,    0,    0,
4404      3862, 3862, 3863, 3863, 3863, 3863,    0,    0, 3863, 3863,
4405      3864, 3864, 3864,    0,    0,    0, 3864, 3865, 3865, 3865,
4406      3865,    0, 3865,    0, 3865, 3866, 3866, 3866, 3866,    0,
4407         0, 3866, 3866, 3867, 3867, 3867,    0,    0,    0, 3867,
4408      3868, 3868, 3868, 3868,    0,    0, 3868, 3868, 3869, 3869,
4409
4410      3869,    0,    0,    0, 3869, 3870, 3870, 3870, 3870,    0,
4411         0, 3870, 3870, 3871, 3871, 3871,    0,    0,    0, 3871,
4412      3872, 3872, 3872, 3872,    0,    0, 3872, 3872, 3873, 3873,
4413      3873,    0,    0,    0, 3873, 3874, 3874, 3874, 3874,    0,
4414         0, 3874, 3874, 3875, 3875, 3875, 3875,    0, 3875,    0,
4415      3875, 3876, 3876, 3876, 3876,    0,    0, 3876, 3876, 3877,
4416      3877, 3877, 3877,    0, 3877,    0, 3877, 3878, 3878, 3878,
4417      3878,    0,    0, 3878, 3878, 3879, 3879, 3879,    0,    0,
4418         0, 3879, 3880, 3880, 3880, 3880,    0,    0, 3880, 3880,
4419      3881, 3881, 3881, 3881,    0, 3881,    0, 3881, 3882, 3882,
4420
4421      3882, 3882,    0,    0, 3882, 3882, 3883, 3883, 3883, 3883,
4422      3883, 3883, 3883, 3883, 3883, 3884, 3884, 3884, 3884, 3884,
4423      3884, 3884, 3884, 3884, 3885, 3885, 3885,    0,    0,    0,
4424      3885, 3886, 3886, 3886, 3886,    0,    0, 3886, 3886, 3887,
4425      3887, 3887, 3887,    0,    0, 3887, 3887, 3888, 3888, 3888,
4426         0,    0,    0, 3888, 3889, 3889, 3889, 3889,    0,    0,
4427      3889, 3889, 3890, 3890, 3890, 3890,    0,    0, 3890, 3890,
4428      3891, 3891, 3891, 3891,    0,    0, 3891, 3891, 3892, 3892,
4429      3892, 3892,    0,    0, 3892, 3892, 3893, 3893, 3893,    0,
4430         0,    0, 3893, 3894, 3894, 3894, 3894,    0,    0, 3894,
4431
4432      3894, 3895, 3895, 3895, 3895,    0,    0, 3895, 3895, 3896,
4433      3896, 3896,    0,    0,    0, 3896, 3897, 3897, 3897, 3897,
4434         0,    0, 3897, 3897, 3898, 3898, 3898, 3898,    0,    0,
4435      3898, 3898, 3899, 3899, 3899,    0,    0,    0, 3899, 3900,
4436      3900, 3900,    0,    0,    0, 3900, 3901, 3901, 3901, 3901,
4437         0,    0, 3901, 3901, 3902, 3902, 3902, 3902,    0,    0,
4438      3902, 3902, 3903, 3903, 3903,    0,    0,    0, 3903, 3904,
4439      3904, 3904, 3904,    0,    0, 3904, 3904, 3905, 3905, 3905,
4440         0,    0,    0, 3905, 3906, 3906, 3906, 3906,    0,    0,
4441      3906, 3906, 3907, 3907, 3907, 3907,    0, 3907,    0, 3907,
4442
4443      3908, 3908, 3908, 3908,    0,    0, 3908, 3908, 3909, 3909,
4444      3909,    0,    0,    0, 3909, 3910, 3910, 3910, 3910,    0,
4445         0, 3910, 3910, 3911, 3911, 3911,    0,    0,    0, 3911,
4446      3912, 3912, 3912,    0,    0,    0, 3912, 3913, 3913, 3913,
4447      3913,    0,    0, 3913, 3913, 3914, 3914, 3914,    0,    0,
4448         0, 3914, 3915, 3915, 3915, 3915,    0,    0, 3915, 3915,
4449      3916, 3916, 3916,    0,    0,    0, 3916, 3917, 3917, 3917,
4450      3917,    0,    0, 3917, 3917, 3918, 3918, 3918,    0,    0,
4451         0, 3918, 3919, 3919, 3919, 3919,    0,    0, 3919, 3919,
4452      3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3921,
4453
4454      3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3922, 3922,
4455      3922,    0,    0,    0, 3922, 3923, 3923, 3923, 3923,    0,
4456         0, 3923, 3923, 3924, 3924, 3924, 3924,    0,    0, 3924,
4457      3924, 3925, 3925, 3925, 3925,    0, 3925,    0, 3925, 3926,
4458      3926, 3926, 3926,    0,    0, 3926, 3926, 3927, 3927, 3927,
4459      3927,    0,    0, 3927, 3927, 3928, 3928, 3928, 3928,    0,
4460         0, 3928, 3928, 3929, 3929, 3929, 3929,    0,    0, 3929,
4461      3929, 3930, 3930, 3930,    0,    0,    0, 3930, 3931, 3931,
4462      3931, 3931,    0,    0, 3931, 3931, 3932, 3932, 3932,    0,
4463         0,    0, 3932, 3933, 3933, 3933, 3933,    0,    0, 3933,
4464
4465      3933, 3934, 3934, 3934, 3934,    0,    0, 3934, 3934, 3935,
4466      3935, 3935, 3935,    0, 3935,    0, 3935, 3936, 3936, 3936,
4467      3936,    0, 3936,    0, 3936, 3937, 3937, 3937, 3937,    0,
4468         0, 3937, 3937, 3938, 3938, 3938, 3938,    0,    0, 3938,
4469      3938, 3939, 3939, 3939, 3939,    0, 3939,    0, 3939, 3940,
4470      3940, 3940, 3940,    0,    0, 3940, 3940, 3941, 3941, 3941,
4471         0,    0,    0, 3941, 3942, 3942, 3942, 3942,    0,    0,
4472      3942, 3942, 3943, 3943, 3943, 3943,    0, 3943,    0, 3943,
4473      3944, 3944, 3944, 3944,    0,    0, 3944, 3944, 3945, 3945,
4474      3945, 3945,    0, 3945,    0, 3945, 3946, 3946, 3946,    0,
4475
4476         0,    0, 3946, 3947, 3947, 3947,    0,    0,    0, 3947,
4477      3948, 3948, 3948,    0,    0,    0, 3948, 3949, 3949, 3949,
4478      3949,    0,    0, 3949, 3949, 3950, 3950, 3950,    0,    0,
4479         0, 3950, 3951, 3951, 3951, 3951,    0,    0, 3951, 3951,
4480      3952, 3952, 3952,    0,    0,    0, 3952, 3953, 3953, 3953,
4481      3953,    0,    0, 3953, 3953, 3954, 3954, 3954, 3954, 3954,
4482      3954, 3954, 3954, 3954, 3955, 3955, 3955, 3955, 3955, 3955,
4483      3955, 3955, 3955, 3956, 3956, 3956,    0,    0,    0, 3956,
4484      3957, 3957, 3957, 3957,    0,    0, 3957, 3957, 3958, 3958,
4485      3958, 3958,    0,    0, 3958, 3958, 3959, 3959, 3959, 3959,
4486
4487         0,    0, 3959, 3959, 3960, 3960, 3960, 3960,    0,    0,
4488      3960, 3960, 3961, 3961, 3961,    0,    0,    0, 3961, 3962,
4489      3962, 3962,    0,    0,    0, 3962, 3963, 3963, 3963, 3963,
4490         0,    0, 3963, 3963, 3964, 3964, 3964,    0,    0,    0,
4491      3964, 3965, 3965, 3965, 3965,    0,    0, 3965, 3965, 3966,
4492      3966, 3966, 3966,    0,    0, 3966, 3966, 3967, 3967, 3967,
4493      3967, 3967, 3967, 3967, 3967, 3967, 3968, 3968, 3968, 3968,
4494      3968, 3968, 3968, 3968, 3968, 3969, 3969, 3969, 3969, 3969,
4495      3969, 3969, 3969, 3969, 3970, 3970, 3970, 3970, 3970, 3970,
4496      3970, 3970, 3970, 3971, 3971, 3971, 3971, 3971, 3971, 3971,
4497
4498      3971, 3971, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972,
4499      3972, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
4500      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
4501      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
4502      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
4503      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
4504      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
4505      3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465,
4506      3465, 3465, 3465, 3465, 3465, 3465
4507     } ;
4508
4509 /* Table of booleans, true if rule could match eol. */
4510 static yyconst flex_int32_t yy_rule_can_match_eol[596] =
4511     {   0,
4512 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 
4513     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 
4514     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4515     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
4516     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
4517     0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4518     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
4519     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
4520     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 
4521     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4522     1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4523     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
4524     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
4525     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4526     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4527     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 
4528     1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 
4529     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
4530     0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
4531     1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4532     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 
4533     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 
4534     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 
4535     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
4536     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
4537     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
4538     0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 
4539     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
4540     0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 
4541     0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,     };
4542
4543 static yy_state_type yy_last_accepting_state;
4544 static char *yy_last_accepting_cpos;
4545
4546 extern int surf_parse__flex_debug;
4547 int surf_parse__flex_debug = 0;
4548
4549 /* The intent behind this definition is that it'll catch
4550  * any uses of REJECT which flex missed.
4551  */
4552 #define REJECT reject_used_but_not_detected
4553 #define yymore() yymore_used_but_not_detected
4554 #define YY_MORE_ADJ 0
4555 #define YY_RESTORE_YY_MORE_OFFSET
4556 char *surf_parse_text;
4557 /* Validating XML processor for src/surf/simgrid.dtd.
4558  *
4559  * This program was generated with the FleXML XML processor generator.
4560  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
4561  * FleXML is Copyright (C) 2003-2013 Martin Quinson.  All rights reserved.
4562  * (1.9.6).
4563  * 
4564  * There are two, intertwined parts to this program, part A and part B.
4565  *
4566  * Part A
4567  * ------
4568  * 
4569  * Some parts, here collectively called "Part A", are found in the 
4570  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
4571  * and Copyright (C) 2003-2013 Martin Quinson. All rights reserved.
4572  *
4573  * You can redistribute, use, perform, display and/or modify "Part A"
4574  * provided the following two conditions hold:
4575  *
4576  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
4577  *    FleXML; without even the implied warranty of MERCHANTABILITY or
4578  *    FITNESS FOR A PARTICULAR PURPOSE.
4579  *
4580  * 2. The program distribution conditions do not in any way affect the
4581  *    distribution conditions of the FleXML system used to generate this
4582  *    file or any version of FleXML derived from that system.
4583  *
4584  * Notice that these are explicit rights granted to you for files
4585  * generated by the FleXML system.  For your rights in connection with
4586  * the FleXML system itself please consult the GNU General Public License.
4587  * 
4588  * Part B
4589  * ------
4590  * 
4591  * The other parts, here collectively called "Part B", and which came 
4592  * from the DTD used by FleXML to generate this program, can be 
4593  * distributed (or not, as the case may be) under the terms of whoever
4594  * wrote them, provided these terms respect and obey the two conditions 
4595  * above under the heading "Part A".
4596  *
4597  * The author of and contributors to FleXML specifically disclaim
4598  * any copyright interest in "Part B", unless "Part B" was written 
4599  * by the author of or contributors to FleXML.
4600  * 
4601  */
4602
4603 /* Version strings. */
4604 const char surfxml_flexml_version[] = "1.9.6";
4605
4606 /* ANSI headers. */
4607 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
4608 #include <stdio.h>
4609 #include <string.h>
4610 #include <assert.h>
4611 #include <stdarg.h>
4612 #include <ctype.h>
4613      
4614 #if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
4615 # ifndef __STRICT_ANSI__
4616 #  include <io.h>
4617 #  include <process.h>
4618 # endif
4619 #else
4620 # include <unistd.h>
4621 #endif
4622      
4623 #ifndef FLEXML_INDEXSTACKSIZE
4624 #define FLEXML_INDEXSTACKSIZE 1000
4625 #endif
4626
4627 /* Generated definitions. */
4628 #define FLEXML_yylineno
4629 #ifndef FLEXML_BUFFERSTACKSIZE
4630 #define FLEXML_BUFFERSTACKSIZE 1000000
4631 #endif
4632 #define FLEXML_NEED_BUFFERLIT
4633
4634 /* XML processor api. */
4635 /* FleXML-provided data. */
4636 int surfxml_pcdata_ix;
4637 extern char *surfxml_bufferstack;
4638 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
4639 AT_surfxml_AS_id AX_surfxml_AS_id;
4640 #define A_surfxml_AS_id (surfxml_bufferstack + AX_surfxml_AS_id)
4641 short int surfxml_AS_id_isset;
4642 AT_surfxml_AS_routing AX_surfxml_AS_routing;
4643 #define A_surfxml_AS_routing AX_surfxml_AS_routing
4644 short int surfxml_AS_routing_isset;
4645 AT_surfxml_ASroute_dst AX_surfxml_ASroute_dst;
4646 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
4647 short int surfxml_ASroute_dst_isset;
4648 AT_surfxml_ASroute_gw___dst AX_surfxml_ASroute_gw___dst;
4649 #define A_surfxml_ASroute_gw___dst (surfxml_bufferstack + AX_surfxml_ASroute_gw___dst)
4650 short int surfxml_ASroute_gw___dst_isset;
4651 AT_surfxml_ASroute_gw___src AX_surfxml_ASroute_gw___src;
4652 #define A_surfxml_ASroute_gw___src (surfxml_bufferstack + AX_surfxml_ASroute_gw___src)
4653 short int surfxml_ASroute_gw___src_isset;
4654 AT_surfxml_ASroute_src AX_surfxml_ASroute_src;
4655 #define A_surfxml_ASroute_src (surfxml_bufferstack + AX_surfxml_ASroute_src)
4656 short int surfxml_ASroute_src_isset;
4657 AT_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical;
4658 #define A_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical
4659 short int surfxml_ASroute_symmetrical_isset;
4660 AT_surfxml_argument_value AX_surfxml_argument_value;
4661 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
4662 short int surfxml_argument_value_isset;
4663 AT_surfxml_backbone_bandwidth AX_surfxml_backbone_bandwidth;
4664 #define A_surfxml_backbone_bandwidth (surfxml_bufferstack + AX_surfxml_backbone_bandwidth)
4665 short int surfxml_backbone_bandwidth_isset;
4666 AT_surfxml_backbone_id AX_surfxml_backbone_id;
4667 #define A_surfxml_backbone_id (surfxml_bufferstack + AX_surfxml_backbone_id)
4668 short int surfxml_backbone_id_isset;
4669 AT_surfxml_backbone_latency AX_surfxml_backbone_latency;
4670 #define A_surfxml_backbone_latency (surfxml_bufferstack + AX_surfxml_backbone_latency)
4671 short int surfxml_backbone_latency_isset;
4672 AT_surfxml_bypassASroute_dst AX_surfxml_bypassASroute_dst;
4673 #define A_surfxml_bypassASroute_dst (surfxml_bufferstack + AX_surfxml_bypassASroute_dst)
4674 short int surfxml_bypassASroute_dst_isset;
4675 AT_surfxml_bypassASroute_gw___dst AX_surfxml_bypassASroute_gw___dst;
4676 #define A_surfxml_bypassASroute_gw___dst (surfxml_bufferstack + AX_surfxml_bypassASroute_gw___dst)
4677 short int surfxml_bypassASroute_gw___dst_isset;
4678 AT_surfxml_bypassASroute_gw___src AX_surfxml_bypassASroute_gw___src;
4679 #define A_surfxml_bypassASroute_gw___src (surfxml_bufferstack + AX_surfxml_bypassASroute_gw___src)
4680 short int surfxml_bypassASroute_gw___src_isset;
4681 AT_surfxml_bypassASroute_src AX_surfxml_bypassASroute_src;
4682 #define A_surfxml_bypassASroute_src (surfxml_bufferstack + AX_surfxml_bypassASroute_src)
4683 short int surfxml_bypassASroute_src_isset;
4684 AT_surfxml_bypassRoute_dst AX_surfxml_bypassRoute_dst;
4685 #define A_surfxml_bypassRoute_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_dst)
4686 short int surfxml_bypassRoute_dst_isset;
4687 AT_surfxml_bypassRoute_src AX_surfxml_bypassRoute_src;
4688 #define A_surfxml_bypassRoute_src (surfxml_bufferstack + AX_surfxml_bypassRoute_src)
4689 short int surfxml_bypassRoute_src_isset;
4690 AT_surfxml_cabinet_bw AX_surfxml_cabinet_bw;
4691 #define A_surfxml_cabinet_bw (surfxml_bufferstack + AX_surfxml_cabinet_bw)
4692 short int surfxml_cabinet_bw_isset;
4693 AT_surfxml_cabinet_id AX_surfxml_cabinet_id;
4694 #define A_surfxml_cabinet_id (surfxml_bufferstack + AX_surfxml_cabinet_id)
4695 short int surfxml_cabinet_id_isset;
4696 AT_surfxml_cabinet_lat AX_surfxml_cabinet_lat;
4697 #define A_surfxml_cabinet_lat (surfxml_bufferstack + AX_surfxml_cabinet_lat)
4698 short int surfxml_cabinet_lat_isset;
4699 AT_surfxml_cabinet_power AX_surfxml_cabinet_power;
4700 #define A_surfxml_cabinet_power (surfxml_bufferstack + AX_surfxml_cabinet_power)
4701 short int surfxml_cabinet_power_isset;
4702 AT_surfxml_cabinet_prefix AX_surfxml_cabinet_prefix;
4703 #define A_surfxml_cabinet_prefix (surfxml_bufferstack + AX_surfxml_cabinet_prefix)
4704 short int surfxml_cabinet_prefix_isset;
4705 AT_surfxml_cabinet_radical AX_surfxml_cabinet_radical;
4706 #define A_surfxml_cabinet_radical (surfxml_bufferstack + AX_surfxml_cabinet_radical)
4707 short int surfxml_cabinet_radical_isset;
4708 AT_surfxml_cabinet_suffix AX_surfxml_cabinet_suffix;
4709 #define A_surfxml_cabinet_suffix (surfxml_bufferstack + AX_surfxml_cabinet_suffix)
4710 short int surfxml_cabinet_suffix_isset;
4711 AT_surfxml_cluster_availability___file AX_surfxml_cluster_availability___file;
4712 #define A_surfxml_cluster_availability___file (surfxml_bufferstack + AX_surfxml_cluster_availability___file)
4713 short int surfxml_cluster_availability___file_isset;
4714 AT_surfxml_cluster_bb___bw AX_surfxml_cluster_bb___bw;
4715 #define A_surfxml_cluster_bb___bw (surfxml_bufferstack + AX_surfxml_cluster_bb___bw)
4716 short int surfxml_cluster_bb___bw_isset;
4717 AT_surfxml_cluster_bb___lat AX_surfxml_cluster_bb___lat;
4718 #define A_surfxml_cluster_bb___lat (surfxml_bufferstack + AX_surfxml_cluster_bb___lat)
4719 short int surfxml_cluster_bb___lat_isset;
4720 AT_surfxml_cluster_bb___sharing___policy AX_surfxml_cluster_bb___sharing___policy;
4721 #define A_surfxml_cluster_bb___sharing___policy AX_surfxml_cluster_bb___sharing___policy
4722 short int surfxml_cluster_bb___sharing___policy_isset;
4723 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
4724 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
4725 short int surfxml_cluster_bw_isset;
4726 AT_surfxml_cluster_core AX_surfxml_cluster_core;
4727 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
4728 short int surfxml_cluster_core_isset;
4729 AT_surfxml_cluster_id AX_surfxml_cluster_id;
4730 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
4731 short int surfxml_cluster_id_isset;
4732 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
4733 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
4734 short int surfxml_cluster_lat_isset;
4735 AT_surfxml_cluster_limiter___link AX_surfxml_cluster_limiter___link;
4736 #define A_surfxml_cluster_limiter___link (surfxml_bufferstack + AX_surfxml_cluster_limiter___link)
4737 short int surfxml_cluster_limiter___link_isset;
4738 AT_surfxml_cluster_loopback___bw AX_surfxml_cluster_loopback___bw;
4739 #define A_surfxml_cluster_loopback___bw (surfxml_bufferstack + AX_surfxml_cluster_loopback___bw)
4740 short int surfxml_cluster_loopback___bw_isset;
4741 AT_surfxml_cluster_loopback___lat AX_surfxml_cluster_loopback___lat;
4742 #define A_surfxml_cluster_loopback___lat (surfxml_bufferstack + AX_surfxml_cluster_loopback___lat)
4743 short int surfxml_cluster_loopback___lat_isset;
4744 AT_surfxml_cluster_power AX_surfxml_cluster_power;
4745 #define A_surfxml_cluster_power (surfxml_bufferstack + AX_surfxml_cluster_power)
4746 short int surfxml_cluster_power_isset;
4747 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
4748 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
4749 short int surfxml_cluster_prefix_isset;
4750 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
4751 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
4752 short int surfxml_cluster_radical_isset;
4753 AT_surfxml_cluster_router___id AX_surfxml_cluster_router___id;
4754 #define A_surfxml_cluster_router___id (surfxml_bufferstack + AX_surfxml_cluster_router___id)
4755 short int surfxml_cluster_router___id_isset;
4756 AT_surfxml_cluster_sharing___policy AX_surfxml_cluster_sharing___policy;
4757 #define A_surfxml_cluster_sharing___policy AX_surfxml_cluster_sharing___policy
4758 short int surfxml_cluster_sharing___policy_isset;
4759 AT_surfxml_cluster_state___file AX_surfxml_cluster_state___file;
4760 #define A_surfxml_cluster_state___file (surfxml_bufferstack + AX_surfxml_cluster_state___file)
4761 short int surfxml_cluster_state___file_isset;
4762 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
4763 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
4764 short int surfxml_cluster_suffix_isset;
4765 AT_surfxml_cluster_topo___parameters AX_surfxml_cluster_topo___parameters;
4766 #define A_surfxml_cluster_topo___parameters (surfxml_bufferstack + AX_surfxml_cluster_topo___parameters)
4767 short int surfxml_cluster_topo___parameters_isset;
4768 AT_surfxml_cluster_topology AX_surfxml_cluster_topology;
4769 #define A_surfxml_cluster_topology AX_surfxml_cluster_topology
4770 short int surfxml_cluster_topology_isset;
4771 AT_surfxml_config_id AX_surfxml_config_id;
4772 #define A_surfxml_config_id (surfxml_bufferstack + AX_surfxml_config_id)
4773 short int surfxml_config_id_isset;
4774 AT_surfxml_gpu_name AX_surfxml_gpu_name;
4775 #define A_surfxml_gpu_name (surfxml_bufferstack + AX_surfxml_gpu_name)
4776 short int surfxml_gpu_name_isset;
4777 AT_surfxml_host_availability AX_surfxml_host_availability;
4778 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
4779 short int surfxml_host_availability_isset;
4780 AT_surfxml_host_availability___file AX_surfxml_host_availability___file;
4781 #define A_surfxml_host_availability___file (surfxml_bufferstack + AX_surfxml_host_availability___file)
4782 short int surfxml_host_availability___file_isset;
4783 AT_surfxml_host_coordinates AX_surfxml_host_coordinates;
4784 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
4785 short int surfxml_host_coordinates_isset;
4786 AT_surfxml_host_core AX_surfxml_host_core;
4787 #define A_surfxml_host_core (surfxml_bufferstack + AX_surfxml_host_core)
4788 short int surfxml_host_core_isset;
4789 AT_surfxml_host_id AX_surfxml_host_id;
4790 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
4791 short int surfxml_host_id_isset;
4792 AT_surfxml_host_power AX_surfxml_host_power;
4793 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
4794 short int surfxml_host_power_isset;
4795 AT_surfxml_host_pstate AX_surfxml_host_pstate;
4796 #define A_surfxml_host_pstate (surfxml_bufferstack + AX_surfxml_host_pstate)
4797 short int surfxml_host_pstate_isset;
4798 AT_surfxml_host_state AX_surfxml_host_state;
4799 #define A_surfxml_host_state AX_surfxml_host_state
4800 short int surfxml_host_state_isset;
4801 AT_surfxml_host_state___file AX_surfxml_host_state___file;
4802 #define A_surfxml_host_state___file (surfxml_bufferstack + AX_surfxml_host_state___file)
4803 short int surfxml_host_state___file_isset;
4804 AT_surfxml_host___link_down AX_surfxml_host___link_down;
4805 #define A_surfxml_host___link_down (surfxml_bufferstack + AX_surfxml_host___link_down)
4806 short int surfxml_host___link_down_isset;
4807 AT_surfxml_host___link_id AX_surfxml_host___link_id;
4808 #define A_surfxml_host___link_id (surfxml_bufferstack + AX_surfxml_host___link_id)
4809 short int surfxml_host___link_id_isset;
4810 AT_surfxml_host___link_up AX_surfxml_host___link_up;
4811 #define A_surfxml_host___link_up (surfxml_bufferstack + AX_surfxml_host___link_up)
4812 short int surfxml_host___link_up_isset;
4813 AT_surfxml_include_file AX_surfxml_include_file;
4814 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
4815 short int surfxml_include_file_isset;
4816 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
4817 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
4818 short int surfxml_link_bandwidth_isset;
4819 AT_surfxml_link_bandwidth___file AX_surfxml_link_bandwidth___file;
4820 #define A_surfxml_link_bandwidth___file (surfxml_bufferstack + AX_surfxml_link_bandwidth___file)
4821 short int surfxml_link_bandwidth___file_isset;
4822 AT_surfxml_link_id AX_surfxml_link_id;
4823 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
4824 short int surfxml_link_id_isset;
4825 AT_surfxml_link_latency AX_surfxml_link_latency;
4826 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
4827 short int surfxml_link_latency_isset;
4828 AT_surfxml_link_latency___file AX_surfxml_link_latency___file;
4829 #define A_surfxml_link_latency___file (surfxml_bufferstack + AX_surfxml_link_latency___file)
4830 short int surfxml_link_latency___file_isset;
4831 AT_surfxml_link_sharing___policy AX_surfxml_link_sharing___policy;
4832 #define A_surfxml_link_sharing___policy AX_surfxml_link_sharing___policy
4833 short int surfxml_link_sharing___policy_isset;
4834 AT_surfxml_link_state AX_surfxml_link_state;
4835 #define A_surfxml_link_state AX_surfxml_link_state
4836 short int surfxml_link_state_isset;
4837 AT_surfxml_link_state___file AX_surfxml_link_state___file;
4838 #define A_surfxml_link_state___file (surfxml_bufferstack + AX_surfxml_link_state___file)
4839 short int surfxml_link_state___file_isset;
4840 AT_surfxml_link___ctn_direction AX_surfxml_link___ctn_direction;
4841 #define A_surfxml_link___ctn_direction AX_surfxml_link___ctn_direction
4842 short int surfxml_link___ctn_direction_isset;
4843 AT_surfxml_link___ctn_id AX_surfxml_link___ctn_id;
4844 #define A_surfxml_link___ctn_id (surfxml_bufferstack + AX_surfxml_link___ctn_id)
4845 short int surfxml_link___ctn_id_isset;
4846 AT_surfxml_model___prop_id AX_surfxml_model___prop_id;
4847 #define A_surfxml_model___prop_id (surfxml_bufferstack + AX_surfxml_model___prop_id)
4848 short int surfxml_model___prop_id_isset;
4849 AT_surfxml_model___prop_value AX_surfxml_model___prop_value;
4850 #define A_surfxml_model___prop_value (surfxml_bufferstack + AX_surfxml_model___prop_value)
4851 short int surfxml_model___prop_value_isset;
4852 AT_surfxml_mount_name AX_surfxml_mount_name;
4853 #define A_surfxml_mount_name (surfxml_bufferstack + AX_surfxml_mount_name)
4854 short int surfxml_mount_name_isset;
4855 AT_surfxml_mount_storageId AX_surfxml_mount_storageId;
4856 #define A_surfxml_mount_storageId (surfxml_bufferstack + AX_surfxml_mount_storageId)
4857 short int surfxml_mount_storageId_isset;
4858 AT_surfxml_mstorage_name AX_surfxml_mstorage_name;
4859 #define A_surfxml_mstorage_name (surfxml_bufferstack + AX_surfxml_mstorage_name)
4860 short int surfxml_mstorage_name_isset;
4861 AT_surfxml_mstorage_typeId AX_surfxml_mstorage_typeId;
4862 #define A_surfxml_mstorage_typeId (surfxml_bufferstack + AX_surfxml_mstorage_typeId)
4863 short int surfxml_mstorage_typeId_isset;
4864 AT_surfxml_peer_availability___file AX_surfxml_peer_availability___file;
4865 #define A_surfxml_peer_availability___file (surfxml_bufferstack + AX_surfxml_peer_availability___file)
4866 short int surfxml_peer_availability___file_isset;
4867 AT_surfxml_peer_bw___in AX_surfxml_peer_bw___in;
4868 #define A_surfxml_peer_bw___in (surfxml_bufferstack + AX_surfxml_peer_bw___in)
4869 short int surfxml_peer_bw___in_isset;
4870 AT_surfxml_peer_bw___out AX_surfxml_peer_bw___out;
4871 #define A_surfxml_peer_bw___out (surfxml_bufferstack + AX_surfxml_peer_bw___out)
4872 short int surfxml_peer_bw___out_isset;
4873 AT_surfxml_peer_coordinates AX_surfxml_peer_coordinates;
4874 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
4875 short int surfxml_peer_coordinates_isset;
4876 AT_surfxml_peer_id AX_surfxml_peer_id;
4877 #define A_surfxml_peer_id (surfxml_bufferstack + AX_surfxml_peer_id)
4878 short int surfxml_peer_id_isset;
4879 AT_surfxml_peer_lat AX_surfxml_peer_lat;
4880 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
4881 short int surfxml_peer_lat_isset;
4882 AT_surfxml_peer_power AX_surfxml_peer_power;
4883 #define A_surfxml_peer_power (surfxml_bufferstack + AX_surfxml_peer_power)
4884 short int surfxml_peer_power_isset;
4885 AT_surfxml_peer_state___file AX_surfxml_peer_state___file;
4886 #define A_surfxml_peer_state___file (surfxml_bufferstack + AX_surfxml_peer_state___file)
4887 short int surfxml_peer_state___file_isset;
4888 AT_surfxml_platform_version AX_surfxml_platform_version;
4889 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
4890 short int surfxml_platform_version_isset;
4891 AT_surfxml_process_function AX_surfxml_process_function;
4892 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
4893 short int surfxml_process_function_isset;
4894 AT_surfxml_process_host AX_surfxml_process_host;
4895 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
4896 short int surfxml_process_host_isset;
4897 AT_surfxml_process_kill___time AX_surfxml_process_kill___time;
4898 #define A_surfxml_process_kill___time (surfxml_bufferstack + AX_surfxml_process_kill___time)
4899 short int surfxml_process_kill___time_isset;
4900 AT_surfxml_process_on___failure AX_surfxml_process_on___failure;
4901 #define A_surfxml_process_on___failure AX_surfxml_process_on___failure
4902 short int surfxml_process_on___failure_isset;
4903 AT_surfxml_process_start___time AX_surfxml_process_start___time;
4904 #define A_surfxml_process_start___time (surfxml_bufferstack + AX_surfxml_process_start___time)
4905 short int surfxml_process_start___time_isset;
4906 AT_surfxml_prop_id AX_surfxml_prop_id;
4907 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
4908 short int surfxml_prop_id_isset;
4909 AT_surfxml_prop_value AX_surfxml_prop_value;
4910 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
4911 short int surfxml_prop_value_isset;
4912 AT_surfxml_random_generator AX_surfxml_random_generator;
4913 #define A_surfxml_random_generator AX_surfxml_random_generator
4914 short int surfxml_random_generator_isset;
4915 AT_surfxml_random_id AX_surfxml_random_id;
4916 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
4917 short int surfxml_random_id_isset;
4918 AT_surfxml_random_max AX_surfxml_random_max;
4919 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
4920 short int surfxml_random_max_isset;
4921 AT_surfxml_random_mean AX_surfxml_random_mean;
4922 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
4923 short int surfxml_random_mean_isset;
4924 AT_surfxml_random_min AX_surfxml_random_min;
4925 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
4926 short int surfxml_random_min_isset;
4927 AT_surfxml_random_radical AX_surfxml_random_radical;
4928 #define A_surfxml_random_radical (surfxml_bufferstack + AX_surfxml_random_radical)
4929 short int surfxml_random_radical_isset;
4930 AT_surfxml_random_seed AX_surfxml_random_seed;
4931 #define A_surfxml_random_seed (surfxml_bufferstack + AX_surfxml_random_seed)
4932 short int surfxml_random_seed_isset;
4933 AT_surfxml_random_std___deviation AX_surfxml_random_std___deviation;
4934 #define A_surfxml_random_std___deviation (surfxml_bufferstack + AX_surfxml_random_std___deviation)
4935 short int surfxml_random_std___deviation_isset;
4936 AT_surfxml_route_dst AX_surfxml_route_dst;
4937 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
4938 short int surfxml_route_dst_isset;
4939 AT_surfxml_route_src AX_surfxml_route_src;
4940 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
4941 short int surfxml_route_src_isset;
4942 AT_surfxml_route_symmetrical AX_surfxml_route_symmetrical;
4943 #define A_surfxml_route_symmetrical AX_surfxml_route_symmetrical
4944 short int surfxml_route_symmetrical_isset;
4945 AT_surfxml_router_coordinates AX_surfxml_router_coordinates;
4946 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
4947 short int surfxml_router_coordinates_isset;
4948 AT_surfxml_router_id AX_surfxml_router_id;
4949 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
4950 short int surfxml_router_id_isset;
4951 AT_surfxml_storage_attach AX_surfxml_storage_attach;
4952 #define A_surfxml_storage_attach (surfxml_bufferstack + AX_surfxml_storage_attach)
4953 short int surfxml_storage_attach_isset;
4954 AT_surfxml_storage_content AX_surfxml_storage_content;
4955 #define A_surfxml_storage_content (surfxml_bufferstack + AX_surfxml_storage_content)
4956 short int surfxml_storage_content_isset;
4957 AT_surfxml_storage_content___type AX_surfxml_storage_content___type;
4958 #define A_surfxml_storage_content___type (surfxml_bufferstack + AX_surfxml_storage_content___type)
4959 short int surfxml_storage_content___type_isset;
4960 AT_surfxml_storage_id AX_surfxml_storage_id;
4961 #define A_surfxml_storage_id (surfxml_bufferstack + AX_surfxml_storage_id)
4962 short int surfxml_storage_id_isset;
4963 AT_surfxml_storage_typeId AX_surfxml_storage_typeId;
4964 #define A_surfxml_storage_typeId (surfxml_bufferstack + AX_surfxml_storage_typeId)
4965 short int surfxml_storage_typeId_isset;
4966 AT_surfxml_storage___type_content AX_surfxml_storage___type_content;
4967 #define A_surfxml_storage___type_content (surfxml_bufferstack + AX_surfxml_storage___type_content)
4968 short int surfxml_storage___type_content_isset;
4969 AT_surfxml_storage___type_content___type AX_surfxml_storage___type_content___type;
4970 #define A_surfxml_storage___type_content___type (surfxml_bufferstack + AX_surfxml_storage___type_content___type)
4971 short int surfxml_storage___type_content___type_isset;
4972 AT_surfxml_storage___type_id AX_surfxml_storage___type_id;
4973 #define A_surfxml_storage___type_id (surfxml_bufferstack + AX_surfxml_storage___type_id)
4974 short int surfxml_storage___type_id_isset;
4975 AT_surfxml_storage___type_model AX_surfxml_storage___type_model;
4976 #define A_surfxml_storage___type_model (surfxml_bufferstack + AX_surfxml_storage___type_model)
4977 short int surfxml_storage___type_model_isset;
4978 AT_surfxml_storage___type_size AX_surfxml_storage___type_size;
4979 #define A_surfxml_storage___type_size (surfxml_bufferstack + AX_surfxml_storage___type_size)
4980 short int surfxml_storage___type_size_isset;
4981 AT_surfxml_trace_file AX_surfxml_trace_file;
4982 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
4983 short int surfxml_trace_file_isset;
4984 AT_surfxml_trace_id AX_surfxml_trace_id;
4985 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
4986 short int surfxml_trace_id_isset;
4987 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
4988 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
4989 short int surfxml_trace_periodicity_isset;
4990 AT_surfxml_trace___connect_element AX_surfxml_trace___connect_element;
4991 #define A_surfxml_trace___connect_element (surfxml_bufferstack + AX_surfxml_trace___connect_element)
4992 short int surfxml_trace___connect_element_isset;
4993 AT_surfxml_trace___connect_kind AX_surfxml_trace___connect_kind;
4994 #define A_surfxml_trace___connect_kind AX_surfxml_trace___connect_kind
4995 short int surfxml_trace___connect_kind_isset;
4996 AT_surfxml_trace___connect_trace AX_surfxml_trace___connect_trace;
4997 #define A_surfxml_trace___connect_trace (surfxml_bufferstack + AX_surfxml_trace___connect_trace)
4998 short int surfxml_trace___connect_trace_isset;
4999
5000 /* XML state. */
5001 #ifdef FLEX_DEBUG
5002 # define ENTER(state)   debug_enter(state,#state)
5003 # define LEAVE          debug_leave()
5004 # define SET(state)     debug_set(state,#state)
5005   static void debug_enter(int, const char*);
5006   static void debug_leave(void);
5007   static void debug_set(int, const char*);
5008 #else
5009 # define ENTER(state)   (yy_push_state(state))
5010 # define LEAVE          (yy_pop_state())
5011 # define SET(state)     BEGIN(state)
5012 #endif
5013
5014 /* Generic actions. */
5015 #define SKIP    /*skip*/
5016 #define SUCCEED        CLEANUP; return 0
5017
5018 #define FAIL    return fail
5019 static int fail(const char*, ...);
5020
5021 enum {flexml_max_err_msg_size = 512};
5022 static char flexml_err_msg[flexml_max_err_msg_size];
5023 const char * surfxml_parse_err_msg()
5024 {
5025     return flexml_err_msg;
5026 }
5027 static void reset_surfxml_parse_err_msg()
5028 {
5029     flexml_err_msg[0] = '\0';
5030 }
5031
5032 /* Cleanup */
5033 static void cleanup(void);
5034 #define CLEANUP  cleanup()
5035
5036 /* Text buffer stack handling. */
5037 char *surfxml_bufferstack = NULL;
5038 static int blimit = FLEXML_BUFFERSTACKSIZE;
5039 static int bnext = 1;
5040
5041 static int *indexstack = NULL;
5042 static int ilimit = FLEXML_INDEXSTACKSIZE;
5043 static int inext = 1;
5044
5045 #define BUFFERSET(P)  (P = bnext)
5046 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
5047 #define BUFFERDONE    (BUFFERPUTC('\0'))
5048
5049 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
5050
5051 /* after this is called, there are at least 2 slots left in the stack */
5052 static int ck_blimit()
5053 {
5054      if (bnext >= blimit) {
5055          blimit += FLEXML_BUFFERSTACKSIZE + 2;
5056          {
5057              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
5058              assert(temp);
5059              surfxml_bufferstack = temp;
5060          }
5061      }
5062      return 0;
5063 }
5064
5065 /* after this is called, there are at least 2 slots left in the stack */
5066 static int ck_ilimit()
5067 {
5068      if (inext >= ilimit) {
5069          ilimit += FLEXML_INDEXSTACKSIZE + 2;
5070          {
5071              int *temp = (int *) realloc(indexstack, ilimit);
5072              assert(temp);
5073              indexstack = temp;
5074          }
5075      }
5076      return 0;
5077 }
5078
5079 #ifdef FLEXML_NEED_BUFFERLIT
5080 static void surfxml_bufferliteral(char c, int* pp, const char* text)
5081 {
5082    BUFFERSET(*pp);
5083    if (c) {
5084       const char *s = strchr(text, c), *e = strrchr(text, c);
5085       assert(s && e && s <= e);
5086       ++s;
5087       while (s < e) {
5088          if (isspace(*s)) {
5089             BUFFERPUTC(' ');
5090             do ++s; while (s < e && isspace(*s));
5091          } else
5092            BUFFERPUTC(*s++);
5093       }
5094    } else {
5095       const char *s = text;
5096       while (*s)
5097         BUFFERPUTC(*s++);
5098    }
5099    BUFFERDONE;
5100 }
5101 #endif
5102
5103 static void pushbuffer(int p)
5104 {
5105     ck_ilimit();
5106     indexstack[inext++] = p;
5107     indexstack[inext++] = bnext;    
5108 }
5109
5110 static int popbuffer(void)
5111 {
5112     assert(inext >= 2);
5113     bnext = indexstack[--inext];
5114     return indexstack[--inext];
5115 }
5116
5117 /* General internal entities are `unput' back onto the input stream... */
5118 #define ENTITYTEXT(T) \
5119   { char *s = (T), *e = s+strlen(s);\
5120     while (--e >= s) { unput(*e); }}
5121
5122 /* Flex standard options. */
5123 #define YY_NO_INPUT 1
5124 /* Flex user-requested options. */
5125 /* XML character classes (currently restricted to ASCII). */
5126 /* "Common syntactic structures." */
5127 /* "Names and Tokens." */
5128 /* Miscellaneous. */
5129 /* Parser states (flex `exclusive start conditions'):
5130  *
5131  * PROLOG       the XML prolog of the document before <?xml...>
5132  * DOCTYPE      the XML prolog of the document after <?xml...>
5133  * EPILOG       after the root element
5134  * INCOMMENT    inside an XML comment <!--....-->
5135  * INPI         inside an XML PI <?...?>
5136  * VALUE1       inside a '...'-delimited literal
5137  * VALUE2       inside a "..."-delimited literal
5138  * CDATA        inside a <![CDATA[...] ]> section.
5139  * ROOT_<tag>   expect root element <tag>
5140  * AL_<tag>     inside the attribute list for <tag>
5141  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
5142  * IMPOSSIBLE   dummy to permit disabling rules; must be last
5143  */
5144
5145 /* State names. */
5146 const char* *surfxml_statenames=NULL;
5147
5148 #define INITIAL 0
5149 #define PROLOG 1
5150 #define DOCTYPE 2
5151 #define EPILOG 3
5152 #define INCOMMENT 4
5153 #define INPI 5
5154 #define VALUE1 6
5155 #define VALUE2 7
5156 #define CDATA 8
5157 #define AL_surfxml_AS 9
5158 #define S_surfxml_AS 10
5159 #define S_surfxml_AS_1 11
5160 #define S_surfxml_AS_2 12
5161 #define S_surfxml_AS_3 13
5162 #define S_surfxml_AS_4 14
5163 #define S_surfxml_AS_5 15
5164 #define S_surfxml_AS_6 16
5165 #define S_surfxml_AS_7 17
5166 #define S_surfxml_AS_8 18
5167 #define E_surfxml_AS 19
5168 #define AL_surfxml_ASroute 20
5169 #define S_surfxml_ASroute 21
5170 #define S_surfxml_ASroute_1 22
5171 #define S_surfxml_ASroute_2 23
5172 #define E_surfxml_ASroute 24
5173 #define AL_surfxml_argument 25
5174 #define E_surfxml_argument 26
5175 #define AL_surfxml_backbone 27
5176 #define E_surfxml_backbone 28
5177 #define AL_surfxml_bypassASroute 29
5178 #define S_surfxml_bypassASroute 30
5179 #define S_surfxml_bypassASroute_1 31
5180 #define S_surfxml_bypassASroute_2 32
5181 #define E_surfxml_bypassASroute 33
5182 #define AL_surfxml_bypassRoute 34
5183 #define S_surfxml_bypassRoute 35
5184 #define S_surfxml_bypassRoute_1 36
5185 #define S_surfxml_bypassRoute_2 37
5186 #define E_surfxml_bypassRoute 38
5187 #define AL_surfxml_cabinet 39
5188 #define E_surfxml_cabinet 40
5189 #define AL_surfxml_cluster 41
5190 #define S_surfxml_cluster 42
5191 #define S_surfxml_cluster_1 43
5192 #define S_surfxml_cluster_2 44
5193 #define E_surfxml_cluster 45
5194 #define AL_surfxml_config 46
5195 #define S_surfxml_config 47
5196 #define S_surfxml_config_1 48
5197 #define S_surfxml_config_2 49
5198 #define E_surfxml_config 50
5199 #define AL_surfxml_gpu 51
5200 #define E_surfxml_gpu 52
5201 #define AL_surfxml_host 53
5202 #define S_surfxml_host 54
5203 #define S_surfxml_host_1 55
5204 #define S_surfxml_host_2 56
5205 #define E_surfxml_host 57
5206 #define AL_surfxml_host___link 58
5207 #define E_surfxml_host___link 59
5208 #define AL_surfxml_include 60
5209 #define S_surfxml_include 61
5210 #define S_surfxml_include_1 62
5211 #define S_surfxml_include_2 63
5212 #define E_surfxml_include 64
5213 #define AL_surfxml_link 65
5214 #define S_surfxml_link 66
5215 #define S_surfxml_link_1 67
5216 #define S_surfxml_link_2 68
5217 #define E_surfxml_link 69
5218 #define AL_surfxml_link___ctn 70
5219 #define E_surfxml_link___ctn 71
5220 #define AL_surfxml_model___prop 72
5221 #define E_surfxml_model___prop 73
5222 #define AL_surfxml_mount 74
5223 #define E_surfxml_mount 75
5224 #define AL_surfxml_mstorage 76
5225 #define E_surfxml_mstorage 77
5226 #define AL_surfxml_peer 78
5227 #define E_surfxml_peer 79
5228 #define ROOT_surfxml_platform 80
5229 #define AL_surfxml_platform 81
5230 #define S_surfxml_platform 82
5231 #define S_surfxml_platform_1 83
5232 #define S_surfxml_platform_2 84
5233 #define S_surfxml_platform_3 85
5234 #define S_surfxml_platform_4 86
5235 #define S_surfxml_platform_5 87
5236 #define S_surfxml_platform_6 88
5237 #define S_surfxml_platform_7 89
5238 #define S_surfxml_platform_8 90
5239 #define E_surfxml_platform 91
5240 #define AL_surfxml_process 92
5241 #define S_surfxml_process 93
5242 #define S_surfxml_process_1 94
5243 #define S_surfxml_process_2 95
5244 #define E_surfxml_process 96
5245 #define AL_surfxml_prop 97
5246 #define E_surfxml_prop 98
5247 #define AL_surfxml_random 99
5248 #define E_surfxml_random 100
5249 #define AL_surfxml_route 101
5250 #define S_surfxml_route 102
5251 #define S_surfxml_route_1 103
5252 #define S_surfxml_route_2 104
5253 #define E_surfxml_route 105
5254 #define AL_surfxml_router 106
5255 #define E_surfxml_router 107
5256 #define AL_surfxml_storage 108
5257 #define S_surfxml_storage 109
5258 #define S_surfxml_storage_1 110
5259 #define S_surfxml_storage_2 111
5260 #define E_surfxml_storage 112
5261 #define AL_surfxml_storage___type 113
5262 #define S_surfxml_storage___type 114
5263 #define S_surfxml_storage___type_1 115
5264 #define S_surfxml_storage___type_2 116
5265 #define E_surfxml_storage___type 117
5266 #define AL_surfxml_trace 118
5267 #define IN_trace 119
5268 #define AL_surfxml_trace___connect 120
5269 #define E_surfxml_trace___connect 121
5270 #define IMPOSSIBLE 122
5271
5272 #ifndef YY_NO_UNISTD_H
5273 /* Special case for "unistd.h", since it is non-ANSI. We include it way
5274  * down here because we want the user's section 1 to have been scanned first.
5275  * The user has a chance to override it with an option.
5276  */
5277 #if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
5278 #  ifndef __STRICT_ANSI__
5279 #    include <io.h>
5280 #    include <process.h>
5281 #  endif
5282 #else
5283 #  include <unistd.h>
5284 #endif
5285 #endif
5286
5287 #ifndef YY_EXTRA_TYPE
5288 #define YY_EXTRA_TYPE void *
5289 #endif
5290
5291 static int yy_init_globals (void );
5292
5293 /* Accessor methods to globals.
5294    These are made visible to non-reentrant scanners for convenience. */
5295
5296 int surf_parse_lex_destroy (void );
5297
5298 int surf_parse_get_debug (void );
5299
5300 void surf_parse_set_debug (int debug_flag  );
5301
5302 YY_EXTRA_TYPE surf_parse_get_extra (void );
5303
5304 void surf_parse_set_extra (YY_EXTRA_TYPE user_defined  );
5305
5306 FILE *surf_parse_get_in (void );
5307
5308 void surf_parse_set_in  (FILE * in_str  );
5309
5310 FILE *surf_parse_get_out (void );
5311
5312 void surf_parse_set_out  (FILE * out_str  );
5313
5314 yy_size_t surf_parse_get_leng (void );
5315
5316 char *surf_parse_get_text (void );
5317
5318 int surf_parse_get_lineno (void );
5319
5320 void surf_parse_set_lineno (int line_number  );
5321
5322 /* Macros after this point can all be overridden by user definitions in
5323  * section 1.
5324  */
5325
5326 #ifndef YY_SKIP_YYWRAP
5327 #ifdef __cplusplus
5328 extern "C" int surf_parse_wrap (void );
5329 #else
5330 extern int surf_parse_wrap (void );
5331 #endif
5332 #endif
5333
5334 #ifndef yytext_ptr
5335 static void yy_flex_strncpy (char *,yyconst char *,int );
5336 #endif
5337
5338 #ifdef YY_NEED_STRLEN
5339 static int yy_flex_strlen (yyconst char * );
5340 #endif
5341
5342 #ifndef YY_NO_INPUT
5343
5344 #ifdef __cplusplus
5345 static int yyinput (void );
5346 #else
5347 static int input (void );
5348 #endif
5349
5350 #endif
5351
5352         static int yy_start_stack_ptr = 0;
5353         static int yy_start_stack_depth = 0;
5354         static int *yy_start_stack = NULL;
5355     
5356     static void yy_push_state (int new_state );
5357     
5358     static void yy_pop_state (void );
5359     
5360 /* Amount of stuff to slurp up with each read. */
5361 #ifndef YY_READ_BUF_SIZE
5362 #ifdef __ia64__
5363 /* On IA-64, the buffer size is 16k, not 8k */
5364 #define YY_READ_BUF_SIZE 16384
5365 #else
5366 #define YY_READ_BUF_SIZE 8192
5367 #endif /* __ia64__ */
5368 #endif
5369
5370 /* Copy whatever the last rule matched to the standard output. */
5371 #ifndef ECHO
5372 /* This used to be an fputs(), but since the string might contain NUL's,
5373  * we now use fwrite().
5374  */
5375 #define ECHO do { if (fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )) {} } while (0)
5376 #endif
5377
5378 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
5379  * is returned in "result".
5380  */
5381 #ifndef YY_INPUT
5382 #define YY_INPUT(buf,result,max_size) \
5383         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
5384                 { \
5385                 int c = '*'; \
5386                 size_t n; \
5387                 for ( n = 0; n < max_size && \
5388                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
5389                         buf[n] = (char) c; \
5390                 if ( c == '\n' ) \
5391                         buf[n++] = (char) c; \
5392                 if ( c == EOF && ferror( surf_parse_in ) ) \
5393                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
5394                 result = n; \
5395                 } \
5396         else \
5397                 { \
5398                 errno=0; \
5399                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
5400                         { \
5401                         if( errno != EINTR) \
5402                                 { \
5403                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
5404                                 break; \
5405                                 } \
5406                         errno=0; \
5407                         clearerr(surf_parse_in); \
5408                         } \
5409                 }\
5410 \
5411
5412 #endif
5413
5414 /* No semi-colon after return; correct usage is to write "yyterminate();" -
5415  * we don't want an extra ';' after the "return" because that will cause
5416  * some compilers to complain about unreachable statements.
5417  */
5418 #ifndef yyterminate
5419 #define yyterminate() return YY_NULL
5420 #endif
5421
5422 /* Number of entries by which start-condition stack grows. */
5423 #ifndef YY_START_STACK_INCR
5424 #define YY_START_STACK_INCR 25
5425 #endif
5426
5427 /* Report a fatal error. */
5428 #ifndef YY_FATAL_ERROR
5429 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
5430 #endif
5431
5432 /* end tables serialization structures and prototypes */
5433
5434 /* Default declaration of generated scanner - a define so the user can
5435  * easily add parameters.
5436  */
5437 #ifndef YY_DECL
5438 #define YY_DECL_IS_OURS 1
5439
5440 extern int surf_parse_lex (void);
5441
5442 #define YY_DECL int surf_parse_lex (void)
5443 #endif /* !YY_DECL */
5444
5445 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
5446  * have been set up.
5447  */
5448 #ifndef YY_USER_ACTION
5449 #define YY_USER_ACTION
5450 #endif
5451
5452 /* Code executed at the end of each rule. */
5453 #ifndef YY_BREAK
5454 #define YY_BREAK break;
5455 #endif
5456
5457 #define YY_RULE_SETUP \
5458         YY_USER_ACTION
5459
5460 /** The main scanner function which does all the work.
5461  */
5462 YY_DECL
5463 {
5464         register yy_state_type yy_current_state;
5465         register char *yy_cp, *yy_bp;
5466         register int yy_act;
5467     
5468         if ( !(yy_init) )
5469                 {
5470                 (yy_init) = 1;
5471
5472 #ifdef YY_USER_INIT
5473                 YY_USER_INIT;
5474 #endif
5475
5476                 if ( ! (yy_start) )
5477                         (yy_start) = 1; /* first start state */
5478
5479                 if ( ! surf_parse_in )
5480                         surf_parse_in = stdin;
5481
5482                 if ( ! surf_parse_out )
5483                         surf_parse_out = stdout;
5484
5485                 if ( ! YY_CURRENT_BUFFER ) {
5486                         surf_parse_ensure_buffer_stack ();
5487                         YY_CURRENT_BUFFER_LVALUE =
5488                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
5489                 }
5490
5491                 surf_parse__load_buffer_state( );
5492                 }
5493
5494         {
5495
5496  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
5497  SET(PROLOG);
5498  reset_surfxml_parse_err_msg();
5499  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
5500  assert(surfxml_bufferstack);
5501  #ifdef FLEX_DEBUG
5502  {
5503      int i;
5504      for (i = 0; i < blimit; i++) {
5505          surfxml_bufferstack[i] = '\377';
5506      }
5507  }
5508  #endif
5509  surfxml_bufferstack[0] = '\0';
5510  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
5511  assert(indexstack);
5512  indexstack[0] = 0;
5513
5514   /* FleXML_init */
5515   bnext = inext = 1;
5516   surfxml_bufferliteral('\0', &bnext, "0.0");
5517   surfxml_bufferliteral('\0', &bnext, "2147483647");
5518   surfxml_bufferliteral('\0', &bnext, "txt_unix");
5519   surfxml_bufferliteral('\0', &bnext, "1");
5520   surfxml_bufferliteral('\0', &bnext, "1.0");
5521   surfxml_bufferliteral('\0', &bnext, "0.0");
5522   surfxml_bufferliteral('\0', &bnext, "txt_unix");
5523   surfxml_bufferliteral('\0', &bnext, "1");
5524   surfxml_bufferliteral('\0', &bnext, "0.0");
5525   surfxml_bufferliteral('\0', &bnext, "-1.0");
5526   surfxml_bufferliteral('\0', &bnext, "-1.0");
5527   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
5528   surfxml_statenames[PROLOG] = NULL;
5529   surfxml_statenames[DOCTYPE] = NULL;
5530   surfxml_statenames[EPILOG] = NULL;
5531   surfxml_statenames[INCOMMENT] = NULL;
5532   surfxml_statenames[INPI] = NULL;
5533   surfxml_statenames[VALUE1] = NULL;
5534   surfxml_statenames[VALUE2] = NULL;
5535   surfxml_statenames[CDATA] = NULL;
5536   surfxml_statenames[ROOT_surfxml_platform] = NULL;
5537   surfxml_statenames[AL_surfxml_platform] = NULL;
5538   surfxml_statenames[E_surfxml_platform] = "platform";
5539   surfxml_statenames[S_surfxml_platform] = "platform";
5540   surfxml_statenames[S_surfxml_platform_1] = "platform";
5541   surfxml_statenames[S_surfxml_platform_2] = "platform";
5542   surfxml_statenames[S_surfxml_platform_3] = "platform";
5543   surfxml_statenames[S_surfxml_platform_4] = "platform";
5544   surfxml_statenames[S_surfxml_platform_5] = "platform";
5545   surfxml_statenames[S_surfxml_platform_6] = "platform";
5546   surfxml_statenames[S_surfxml_platform_7] = "platform";
5547   surfxml_statenames[S_surfxml_platform_8] = "platform";
5548   surfxml_statenames[AL_surfxml_include] = NULL;
5549   surfxml_statenames[E_surfxml_include] = "include";
5550   surfxml_statenames[S_surfxml_include] = "include";
5551   surfxml_statenames[S_surfxml_include_1] = "include";
5552   surfxml_statenames[S_surfxml_include_2] = "include";
5553   surfxml_statenames[AL_surfxml_trace] = NULL;
5554   surfxml_statenames[IN_trace] = "trace";
5555   surfxml_statenames[AL_surfxml_random] = NULL;
5556   surfxml_statenames[E_surfxml_random] = "random";
5557   surfxml_statenames[AL_surfxml_trace___connect] = NULL;
5558   surfxml_statenames[E_surfxml_trace___connect] = "trace_connect";
5559   surfxml_statenames[AL_surfxml_AS] = NULL;
5560   surfxml_statenames[E_surfxml_AS] = "AS";
5561   surfxml_statenames[S_surfxml_AS] = "AS";
5562   surfxml_statenames[S_surfxml_AS_1] = "AS";
5563   surfxml_statenames[S_surfxml_AS_2] = "AS";
5564   surfxml_statenames[S_surfxml_AS_3] = "AS";
5565   surfxml_statenames[S_surfxml_AS_4] = "AS";
5566   surfxml_statenames[S_surfxml_AS_5] = "AS";
5567   surfxml_statenames[S_surfxml_AS_6] = "AS";
5568   surfxml_statenames[S_surfxml_AS_7] = "AS";
5569   surfxml_statenames[S_surfxml_AS_8] = "AS";
5570   surfxml_statenames[AL_surfxml_storage___type] = NULL;
5571   surfxml_statenames[E_surfxml_storage___type] = "storage_type";
5572   surfxml_statenames[S_surfxml_storage___type] = "storage_type";
5573   surfxml_statenames[S_surfxml_storage___type_1] = "storage_type";
5574   surfxml_statenames[S_surfxml_storage___type_2] = "storage_type";
5575   surfxml_statenames[AL_surfxml_mount] = NULL;
5576   surfxml_statenames[E_surfxml_mount] = "mount";
5577   surfxml_statenames[AL_surfxml_mstorage] = NULL;
5578   surfxml_statenames[E_surfxml_mstorage] = "mstorage";
5579   surfxml_statenames[AL_surfxml_host] = NULL;
5580   surfxml_statenames[E_surfxml_host] = "host";
5581   surfxml_statenames[S_surfxml_host] = "host";
5582   surfxml_statenames[S_surfxml_host_1] = "host";
5583   surfxml_statenames[S_surfxml_host_2] = "host";
5584   surfxml_statenames[AL_surfxml_storage] = NULL;
5585   surfxml_statenames[E_surfxml_storage] = "storage";
5586   surfxml_statenames[S_surfxml_storage] = "storage";
5587   surfxml_statenames[S_surfxml_storage_1] = "storage";
5588   surfxml_statenames[S_surfxml_storage_2] = "storage";
5589   surfxml_statenames[AL_surfxml_gpu] = NULL;
5590   surfxml_statenames[E_surfxml_gpu] = "gpu";
5591   surfxml_statenames[AL_surfxml_host___link] = NULL;
5592   surfxml_statenames[E_surfxml_host___link] = "host_link";
5593   surfxml_statenames[AL_surfxml_cluster] = NULL;
5594   surfxml_statenames[E_surfxml_cluster] = "cluster";
5595   surfxml_statenames[S_surfxml_cluster] = "cluster";
5596   surfxml_statenames[S_surfxml_cluster_1] = "cluster";
5597   surfxml_statenames[S_surfxml_cluster_2] = "cluster";
5598   surfxml_statenames[AL_surfxml_cabinet] = NULL;
5599   surfxml_statenames[E_surfxml_cabinet] = "cabinet";
5600   surfxml_statenames[AL_surfxml_peer] = NULL;
5601   surfxml_statenames[E_surfxml_peer] = "peer";
5602   surfxml_statenames[AL_surfxml_router] = NULL;
5603   surfxml_statenames[E_surfxml_router] = "router";
5604   surfxml_statenames[AL_surfxml_backbone] = NULL;
5605   surfxml_statenames[E_surfxml_backbone] = "backbone";
5606   surfxml_statenames[AL_surfxml_link] = NULL;
5607   surfxml_statenames[E_surfxml_link] = "link";
5608   surfxml_statenames[S_surfxml_link] = "link";
5609   surfxml_statenames[S_surfxml_link_1] = "link";
5610   surfxml_statenames[S_surfxml_link_2] = "link";
5611   surfxml_statenames[AL_surfxml_route] = NULL;
5612   surfxml_statenames[E_surfxml_route] = "route";
5613   surfxml_statenames[S_surfxml_route] = "route";
5614   surfxml_statenames[S_surfxml_route_1] = "route";
5615   surfxml_statenames[S_surfxml_route_2] = "route";
5616   surfxml_statenames[AL_surfxml_ASroute] = NULL;
5617   surfxml_statenames[E_surfxml_ASroute] = "ASroute";
5618   surfxml_statenames[S_surfxml_ASroute] = "ASroute";
5619   surfxml_statenames[S_surfxml_ASroute_1] = "ASroute";
5620   surfxml_statenames[S_surfxml_ASroute_2] = "ASroute";
5621   surfxml_statenames[AL_surfxml_link___ctn] = NULL;
5622   surfxml_statenames[E_surfxml_link___ctn] = "link_ctn";
5623   surfxml_statenames[AL_surfxml_bypassRoute] = NULL;
5624   surfxml_statenames[E_surfxml_bypassRoute] = "bypassRoute";
5625   surfxml_statenames[S_surfxml_bypassRoute] = "bypassRoute";
5626   surfxml_statenames[S_surfxml_bypassRoute_1] = "bypassRoute";
5627   surfxml_statenames[S_surfxml_bypassRoute_2] = "bypassRoute";
5628   surfxml_statenames[AL_surfxml_bypassASroute] = NULL;
5629   surfxml_statenames[E_surfxml_bypassASroute] = "bypassASroute";
5630   surfxml_statenames[S_surfxml_bypassASroute] = "bypassASroute";
5631   surfxml_statenames[S_surfxml_bypassASroute_1] = "bypassASroute";
5632   surfxml_statenames[S_surfxml_bypassASroute_2] = "bypassASroute";
5633   surfxml_statenames[AL_surfxml_process] = NULL;
5634   surfxml_statenames[E_surfxml_process] = "process";
5635   surfxml_statenames[S_surfxml_process] = "process";
5636   surfxml_statenames[S_surfxml_process_1] = "process";
5637   surfxml_statenames[S_surfxml_process_2] = "process";
5638   surfxml_statenames[AL_surfxml_argument] = NULL;
5639   surfxml_statenames[E_surfxml_argument] = "argument";
5640   surfxml_statenames[AL_surfxml_config] = NULL;
5641   surfxml_statenames[E_surfxml_config] = "config";
5642   surfxml_statenames[S_surfxml_config] = "config";
5643   surfxml_statenames[S_surfxml_config_1] = "config";
5644   surfxml_statenames[S_surfxml_config_2] = "config";
5645   surfxml_statenames[AL_surfxml_prop] = NULL;
5646   surfxml_statenames[E_surfxml_prop] = "prop";
5647   surfxml_statenames[AL_surfxml_model___prop] = NULL;
5648   surfxml_statenames[E_surfxml_model___prop] = "model_prop";
5649   }
5650
5651  /* COMMENTS and PIs: handled uniformly for efficiency. */
5652
5653         while ( 1 )             /* loops until end-of-file is reached */
5654                 {
5655                 yy_cp = (yy_c_buf_p);
5656
5657                 /* Support of surf_parse_text. */
5658                 *yy_cp = (yy_hold_char);
5659
5660                 /* yy_bp points to the position in yy_ch_buf of the start of
5661                  * the current run.
5662                  */
5663                 yy_bp = yy_cp;
5664
5665                 yy_current_state = (yy_start);
5666 yy_match:
5667                 do
5668                         {
5669                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
5670                         if ( yy_accept[yy_current_state] )
5671                                 {
5672                                 (yy_last_accepting_state) = yy_current_state;
5673                                 (yy_last_accepting_cpos) = yy_cp;
5674                                 }
5675                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5676                                 {
5677                                 yy_current_state = (int) yy_def[yy_current_state];
5678                                 if ( yy_current_state >= 3466 )
5679                                         yy_c = yy_meta[(unsigned int) yy_c];
5680                                 }
5681                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5682                         ++yy_cp;
5683                         }
5684                 while ( yy_base[yy_current_state] != 12512 );
5685
5686 yy_find_action:
5687                 yy_act = yy_accept[yy_current_state];
5688                 if ( yy_act == 0 )
5689                         { /* have to back up */
5690                         yy_cp = (yy_last_accepting_cpos);
5691                         yy_current_state = (yy_last_accepting_state);
5692                         yy_act = yy_accept[yy_current_state];
5693                         }
5694
5695                 YY_DO_BEFORE_ACTION;
5696
5697                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
5698                         {
5699                         yy_size_t yyl;
5700                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
5701                                 if ( surf_parse_text[yyl] == '\n' )
5702                                            
5703     surf_parse_lineno++;
5704 ;
5705                         }
5706
5707 do_action:      /* This label is used only to access EOF actions. */
5708
5709                 switch ( yy_act )
5710         { /* beginning of action switch */
5711                         case 0: /* must back up */
5712                         /* undo the effects of YY_DO_BEFORE_ACTION */
5713                         *yy_cp = (yy_hold_char);
5714                         yy_cp = (yy_last_accepting_cpos);
5715                         yy_current_state = (yy_last_accepting_state);
5716                         goto yy_find_action;
5717
5718 case 1:
5719 YY_RULE_SETUP
5720 ENTER(INCOMMENT);
5721         YY_BREAK
5722 case 2:
5723 YY_RULE_SETUP
5724 ENTER(INPI);
5725         YY_BREAK
5726
5727 case 3:
5728 YY_RULE_SETUP
5729 LEAVE;
5730         YY_BREAK
5731 case 4:
5732 case 5:
5733 case 6:
5734 /* rule 6 can match eol */
5735 YY_RULE_SETUP
5736 SKIP;
5737         YY_BREAK
5738 case YY_STATE_EOF(INCOMMENT):
5739 FAIL("EOF in comment.");
5740         YY_BREAK
5741
5742 case 7:
5743 YY_RULE_SETUP
5744 LEAVE;
5745         YY_BREAK
5746 case 8:
5747 case 9:
5748 /* rule 9 can match eol */
5749 YY_RULE_SETUP
5750 SKIP;
5751         YY_BREAK
5752 case YY_STATE_EOF(INPI):
5753 FAIL("EOF in PI (processing instruction).");
5754         YY_BREAK
5755
5756 /* SPACES: skipped uniformly */
5757 case 10:
5758 /* rule 10 can match eol */
5759 YY_RULE_SETUP
5760 SKIP;
5761         YY_BREAK
5762 /* PROLOG: determine root element and process it. */
5763
5764 case 11:
5765 /* rule 11 can match eol */
5766 YY_RULE_SETUP
5767 SET(DOCTYPE); 
5768         YY_BREAK
5769 case 12:
5770 /* rule 12 can match eol */
5771 YY_RULE_SETUP
5772 FAIL("Bad declaration %s.",surf_parse_text);
5773         YY_BREAK
5774
5775 case 13:
5776 /* rule 13 can match eol */
5777 YY_RULE_SETUP
5778 SET(ROOT_surfxml_platform);
5779         YY_BREAK
5780 case 14:
5781 /* rule 14 can match eol */
5782 YY_RULE_SETUP
5783 FAIL("Bad declaration %s.",surf_parse_text);
5784         YY_BREAK
5785 case 15:
5786 YY_RULE_SETUP
5787 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
5788         YY_BREAK
5789 case YY_STATE_EOF(PROLOG):
5790 case YY_STATE_EOF(DOCTYPE):
5791 FAIL("EOF in prolog.");
5792         YY_BREAK
5793
5794 /* RULES DERIVED FROM DTD. */
5795 /* <!-- Small DTD for SURF based tools. -->  */
5796 case 16:
5797 /* rule 16 can match eol */
5798 YY_RULE_SETUP
5799 FAIL("Starting tag <platform> is not allowed here.");
5800         YY_BREAK
5801 case 17:
5802 /* rule 17 can match eol */
5803 YY_RULE_SETUP
5804 {
5805   AX_surfxml_platform_version = 1;
5806   surfxml_platform_version_isset = 0;
5807   ENTER(AL_surfxml_platform); pushbuffer(0);
5808   }
5809         YY_BREAK
5810
5811 case 18:
5812 /* rule 18 can match eol */
5813 YY_RULE_SETUP
5814 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);
5815         YY_BREAK
5816 case 19:
5817 /* rule 19 can match eol */
5818 YY_RULE_SETUP
5819 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);
5820         YY_BREAK
5821 case 20:
5822 YY_RULE_SETUP
5823 {
5824   LEAVE; STag_surfxml_platform();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform);
5825  }
5826         YY_BREAK
5827 case 21:
5828 YY_RULE_SETUP
5829 {
5830   LEAVE; STag_surfxml_platform(); surfxml_pcdata_ix = 0; ETag_surfxml_platform(); popbuffer(); /* attribute */
5831   switch (YY_START) {
5832    case ROOT_surfxml_platform: SET(EPILOG); break;
5833   }
5834  }
5835         YY_BREAK
5836 case 22:
5837 YY_RULE_SETUP
5838 FAIL("Unexpected character `%c' in attribute list of platform element.", surf_parse_text[0]);
5839         YY_BREAK
5840 case 23:
5841 YY_RULE_SETUP
5842 FAIL("Bad attribute `%s' in `platform' element start tag.",surf_parse_text);
5843         YY_BREAK
5844 case YY_STATE_EOF(AL_surfxml_platform):
5845 FAIL("EOF in attribute list of `platform' element.");
5846         YY_BREAK
5847
5848 case 24:
5849 /* rule 24 can match eol */
5850 YY_RULE_SETUP
5851 {
5852   LEAVE;
5853   ETag_surfxml_platform();
5854   popbuffer(); /* attribute */
5855   switch (YY_START) {
5856    case ROOT_surfxml_platform: SET(EPILOG); break;
5857   }
5858  }
5859         YY_BREAK
5860 case 25:
5861 /* rule 25 can match eol */
5862 YY_RULE_SETUP
5863 FAIL("Unexpected end-tag `%s': `</platform>' expected.",surf_parse_text);
5864         YY_BREAK
5865 case 26:
5866 YY_RULE_SETUP
5867 FAIL("Unexpected character `%c': `</platform>' expected.",surf_parse_text[0]);
5868         YY_BREAK
5869 case YY_STATE_EOF(S_surfxml_platform_1):
5870 case YY_STATE_EOF(S_surfxml_platform_6):
5871 case YY_STATE_EOF(S_surfxml_platform_4):
5872 case YY_STATE_EOF(S_surfxml_platform_3):
5873 case YY_STATE_EOF(S_surfxml_platform):
5874 case YY_STATE_EOF(E_surfxml_platform):
5875 case YY_STATE_EOF(S_surfxml_platform_8):
5876 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</platform>' expected.");
5877         YY_BREAK
5878
5879 case 27:
5880 /* rule 27 can match eol */
5881 YY_RULE_SETUP
5882 FAIL("Starting tag <include> is not allowed here.");
5883         YY_BREAK
5884 case 28:
5885 /* rule 28 can match eol */
5886 YY_RULE_SETUP
5887 {
5888   AX_surfxml_include_file = 0;
5889   surfxml_include_file_isset = 0;
5890   ENTER(AL_surfxml_include); pushbuffer(0);
5891   }
5892         YY_BREAK
5893
5894 case 29:
5895 /* rule 29 can match eol */
5896 YY_RULE_SETUP
5897 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);
5898         YY_BREAK
5899 case 30:
5900 /* rule 30 can match eol */
5901 YY_RULE_SETUP
5902 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);
5903         YY_BREAK
5904 case 31:
5905 YY_RULE_SETUP
5906 {
5907   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
5908   LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(S_surfxml_include);
5909  }
5910         YY_BREAK
5911 case 32:
5912 YY_RULE_SETUP
5913 {
5914   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
5915   LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
5916   switch (YY_START) {
5917    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;
5918    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
5919    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;
5920   }
5921  }
5922         YY_BREAK
5923 case 33:
5924 YY_RULE_SETUP
5925 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
5926         YY_BREAK
5927 case 34:
5928 YY_RULE_SETUP
5929 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
5930         YY_BREAK
5931 case YY_STATE_EOF(AL_surfxml_include):
5932 FAIL("EOF in attribute list of `include' element.");
5933         YY_BREAK
5934
5935 case 35:
5936 /* rule 35 can match eol */
5937 YY_RULE_SETUP
5938 {
5939   LEAVE;
5940   ETag_surfxml_include();
5941   popbuffer(); /* attribute */
5942   switch (YY_START) {
5943    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;
5944    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
5945    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;
5946   }
5947  }
5948         YY_BREAK
5949 case 36:
5950 /* rule 36 can match eol */
5951 YY_RULE_SETUP
5952 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
5953         YY_BREAK
5954 case 37:
5955 YY_RULE_SETUP
5956 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
5957         YY_BREAK
5958 case YY_STATE_EOF(S_surfxml_include_2):
5959 case YY_STATE_EOF(E_surfxml_include):
5960 case YY_STATE_EOF(S_surfxml_include):
5961 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</include>' expected.");
5962         YY_BREAK
5963
5964 case 38:
5965 /* rule 38 can match eol */
5966 YY_RULE_SETUP
5967 FAIL("Starting tag <trace> is not allowed here.");
5968         YY_BREAK
5969 case 39:
5970 /* rule 39 can match eol */
5971 YY_RULE_SETUP
5972 {
5973   AX_surfxml_trace_id = 0;
5974   surfxml_trace_id_isset = 0;
5975   AX_surfxml_trace_file = 0;
5976   surfxml_trace_file_isset = 0;
5977   AX_surfxml_trace_periodicity = 0;
5978   surfxml_trace_periodicity_isset = 0;
5979   ENTER(AL_surfxml_trace); pushbuffer(0);
5980   }
5981         YY_BREAK
5982
5983 case 40:
5984 /* rule 40 can match eol */
5985 YY_RULE_SETUP
5986 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);
5987         YY_BREAK
5988 case 41:
5989 /* rule 41 can match eol */
5990 YY_RULE_SETUP
5991 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);
5992         YY_BREAK
5993 case 42:
5994 /* rule 42 can match eol */
5995 YY_RULE_SETUP
5996 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);
5997         YY_BREAK
5998 case 43:
5999 /* rule 43 can match eol */
6000 YY_RULE_SETUP
6001 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);
6002         YY_BREAK
6003 case 44:
6004 /* rule 44 can match eol */
6005 YY_RULE_SETUP
6006 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);
6007         YY_BREAK
6008 case 45:
6009 /* rule 45 can match eol */
6010 YY_RULE_SETUP
6011 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);
6012         YY_BREAK
6013 case 46:
6014 YY_RULE_SETUP
6015 {
6016   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
6017   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
6018   LEAVE; STag_surfxml_trace();pushbuffer(surfxml_pcdata_ix); BUFFERSET(surfxml_pcdata_ix);; ENTER(IN_trace);
6019  }
6020         YY_BREAK
6021 case 47:
6022 YY_RULE_SETUP
6023 {
6024   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
6025   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
6026   LEAVE; STag_surfxml_trace(); surfxml_pcdata_ix = 0; ETag_surfxml_trace(); popbuffer(); /* attribute */
6027   switch (YY_START) {
6028    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;
6029    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6030    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;
6031   }
6032  }
6033         YY_BREAK
6034 case 48:
6035 YY_RULE_SETUP
6036 FAIL("Unexpected character `%c' in attribute list of trace element.", surf_parse_text[0]);
6037         YY_BREAK
6038 case 49:
6039 YY_RULE_SETUP
6040 FAIL("Bad attribute `%s' in `trace' element start tag.",surf_parse_text);
6041         YY_BREAK
6042 case YY_STATE_EOF(AL_surfxml_trace):
6043 FAIL("EOF in attribute list of `trace' element.");
6044         YY_BREAK
6045
6046 case 50:
6047 /* rule 50 can match eol */
6048 YY_RULE_SETUP
6049 {
6050   LEAVE;
6051   BUFFERDONE;
6052   ETag_surfxml_trace();
6053   surfxml_pcdata_ix = popbuffer();
6054   popbuffer(); /* attribute */
6055   switch (YY_START) {
6056    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;
6057    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6058    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;
6059   }
6060  }
6061         YY_BREAK
6062 case 51:
6063 /* rule 51 can match eol */
6064 YY_RULE_SETUP
6065 FAIL("Unexpected end-tag `%s': `</trace>' expected.",surf_parse_text);
6066         YY_BREAK
6067 case YY_STATE_EOF(IN_trace):
6068 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace>' expected.");
6069         YY_BREAK
6070
6071 case 52:
6072 /* rule 52 can match eol */
6073 YY_RULE_SETUP
6074 FAIL("Starting tag <random> is not allowed here.");
6075         YY_BREAK
6076 case 53:
6077 /* rule 53 can match eol */
6078 YY_RULE_SETUP
6079 {
6080   AX_surfxml_random_id = 0;
6081   surfxml_random_id_isset = 0;
6082   AX_surfxml_random_min = 0;
6083   surfxml_random_min_isset = 0;
6084   AX_surfxml_random_max = 0;
6085   surfxml_random_max_isset = 0;
6086   AX_surfxml_random_mean = 0;
6087   surfxml_random_mean_isset = 0;
6088   AX_surfxml_random_std___deviation = 0;
6089   surfxml_random_std___deviation_isset = 0;
6090   AX_surfxml_random_seed = 5;
6091   surfxml_random_seed_isset = 0;
6092   AX_surfxml_random_radical = 0;
6093   surfxml_random_radical_isset = 0;
6094   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
6095   surfxml_random_generator_isset = 0;
6096   ENTER(AL_surfxml_random); pushbuffer(0);
6097   }
6098         YY_BREAK
6099
6100 case 54:
6101 /* rule 54 can match eol */
6102 YY_RULE_SETUP
6103 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);
6104         YY_BREAK
6105 case 55:
6106 /* rule 55 can match eol */
6107 YY_RULE_SETUP
6108 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);
6109         YY_BREAK
6110 case 56:
6111 /* rule 56 can match eol */
6112 YY_RULE_SETUP
6113 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);
6114         YY_BREAK
6115 case 57:
6116 /* rule 57 can match eol */
6117 YY_RULE_SETUP
6118 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);
6119         YY_BREAK
6120 case 58:
6121 /* rule 58 can match eol */
6122 YY_RULE_SETUP
6123 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);
6124         YY_BREAK
6125 case 59:
6126 /* rule 59 can match eol */
6127 YY_RULE_SETUP
6128 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);
6129         YY_BREAK
6130 case 60:
6131 /* rule 60 can match eol */
6132 YY_RULE_SETUP
6133 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);
6134         YY_BREAK
6135 case 61:
6136 /* rule 61 can match eol */
6137 YY_RULE_SETUP
6138 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);
6139         YY_BREAK
6140 case 62:
6141 /* rule 62 can match eol */
6142 YY_RULE_SETUP
6143 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);
6144         YY_BREAK
6145 case 63:
6146 /* rule 63 can match eol */
6147 YY_RULE_SETUP
6148 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);
6149         YY_BREAK
6150 case 64:
6151 /* rule 64 can match eol */
6152 YY_RULE_SETUP
6153 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);
6154         YY_BREAK
6155 case 65:
6156 /* rule 65 can match eol */
6157 YY_RULE_SETUP
6158 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);
6159         YY_BREAK
6160 case 66:
6161 /* rule 66 can match eol */
6162 YY_RULE_SETUP
6163 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);
6164         YY_BREAK
6165 case 67:
6166 /* rule 67 can match eol */
6167 YY_RULE_SETUP
6168 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);
6169         YY_BREAK
6170 case 68:
6171 /* rule 68 can match eol */
6172 case 69:
6173 /* rule 69 can match eol */
6174 YY_RULE_SETUP
6175 A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
6176         YY_BREAK
6177 case 70:
6178 /* rule 70 can match eol */
6179 case 71:
6180 /* rule 71 can match eol */
6181 YY_RULE_SETUP
6182 A_surfxml_random_generator = A_surfxml_random_generator_RAND;
6183         YY_BREAK
6184 case 72:
6185 /* rule 72 can match eol */
6186 case 73:
6187 /* rule 73 can match eol */
6188 YY_RULE_SETUP
6189 A_surfxml_random_generator = A_surfxml_random_generator_RNGSTREAM;
6190         YY_BREAK
6191 case 74:
6192 /* rule 74 can match eol */
6193 case 75:
6194 /* rule 75 can match eol */
6195 YY_RULE_SETUP
6196 A_surfxml_random_generator = A_surfxml_random_generator_NONE;
6197         YY_BREAK
6198 case 76:
6199 YY_RULE_SETUP
6200 {
6201   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
6202   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
6203   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
6204   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
6205   if (!AX_surfxml_random_std___deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
6206   LEAVE; STag_surfxml_random();surfxml_pcdata_ix = 0; ENTER(E_surfxml_random);
6207  }
6208         YY_BREAK
6209 case 77:
6210 YY_RULE_SETUP
6211 {
6212   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
6213   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
6214   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
6215   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
6216   if (!AX_surfxml_random_std___deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
6217   LEAVE; STag_surfxml_random(); surfxml_pcdata_ix = 0; ETag_surfxml_random(); popbuffer(); /* attribute */
6218   switch (YY_START) {
6219    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
6220   }
6221  }
6222         YY_BREAK
6223 case 78:
6224 YY_RULE_SETUP
6225 FAIL("Unexpected character `%c' in attribute list of random element.", surf_parse_text[0]);
6226         YY_BREAK
6227 case 79:
6228 YY_RULE_SETUP
6229 FAIL("Bad attribute `%s' in `random' element start tag.",surf_parse_text);
6230         YY_BREAK
6231 case YY_STATE_EOF(AL_surfxml_random):
6232 FAIL("EOF in attribute list of `random' element.");
6233         YY_BREAK
6234
6235 case 80:
6236 /* rule 80 can match eol */
6237 YY_RULE_SETUP
6238 {
6239   LEAVE;
6240   ETag_surfxml_random();
6241   popbuffer(); /* attribute */
6242   switch (YY_START) {
6243    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
6244   }
6245  }
6246         YY_BREAK
6247 case 81:
6248 /* rule 81 can match eol */
6249 YY_RULE_SETUP
6250 FAIL("Unexpected end-tag `%s': `</random>' expected.",surf_parse_text);
6251         YY_BREAK
6252 case 82:
6253 YY_RULE_SETUP
6254 FAIL("Unexpected character `%c': `</random>' expected.",surf_parse_text[0]);
6255         YY_BREAK
6256 case YY_STATE_EOF(E_surfxml_random):
6257 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</random>' expected.");
6258         YY_BREAK
6259
6260 case 83:
6261 /* rule 83 can match eol */
6262 YY_RULE_SETUP
6263 FAIL("Starting tag <trace_connect> is not allowed here.");
6264         YY_BREAK
6265 case 84:
6266 /* rule 84 can match eol */
6267 YY_RULE_SETUP
6268 {
6269   AX_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_HOST___AVAIL;
6270   surfxml_trace___connect_kind_isset = 0;
6271   AX_surfxml_trace___connect_trace = 0;
6272   surfxml_trace___connect_trace_isset = 0;
6273   AX_surfxml_trace___connect_element = 0;
6274   surfxml_trace___connect_element_isset = 0;
6275   ENTER(AL_surfxml_trace___connect); pushbuffer(0);
6276   }
6277         YY_BREAK
6278
6279 case 85:
6280 /* rule 85 can match eol */
6281 case 86:
6282 /* rule 86 can match eol */
6283 YY_RULE_SETUP
6284 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_HOST___AVAIL;
6285         YY_BREAK
6286 case 87:
6287 /* rule 87 can match eol */
6288 case 88:
6289 /* rule 88 can match eol */
6290 YY_RULE_SETUP
6291 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_POWER;
6292         YY_BREAK
6293 case 89:
6294 /* rule 89 can match eol */
6295 case 90:
6296 /* rule 90 can match eol */
6297 YY_RULE_SETUP
6298 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_LINK___AVAIL;
6299         YY_BREAK
6300 case 91:
6301 /* rule 91 can match eol */
6302 case 92:
6303 /* rule 92 can match eol */
6304 YY_RULE_SETUP
6305 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_BANDWIDTH;
6306         YY_BREAK
6307 case 93:
6308 /* rule 93 can match eol */
6309 case 94:
6310 /* rule 94 can match eol */
6311 YY_RULE_SETUP
6312 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_LATENCY;
6313         YY_BREAK
6314 case 95:
6315 /* rule 95 can match eol */
6316 YY_RULE_SETUP
6317 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);
6318         YY_BREAK
6319 case 96:
6320 /* rule 96 can match eol */
6321 YY_RULE_SETUP
6322 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);
6323         YY_BREAK
6324 case 97:
6325 /* rule 97 can match eol */
6326 YY_RULE_SETUP
6327 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);
6328         YY_BREAK
6329 case 98:
6330 /* rule 98 can match eol */
6331 YY_RULE_SETUP
6332 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);
6333         YY_BREAK
6334 case 99:
6335 YY_RULE_SETUP
6336 {
6337   if (!AX_surfxml_trace___connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
6338   if (!AX_surfxml_trace___connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
6339   LEAVE; STag_surfxml_trace___connect();surfxml_pcdata_ix = 0; ENTER(E_surfxml_trace___connect);
6340  }
6341         YY_BREAK
6342 case 100:
6343 YY_RULE_SETUP
6344 {
6345   if (!AX_surfxml_trace___connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
6346   if (!AX_surfxml_trace___connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
6347   LEAVE; STag_surfxml_trace___connect(); surfxml_pcdata_ix = 0; ETag_surfxml_trace___connect(); popbuffer(); /* attribute */
6348   switch (YY_START) {
6349    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;
6350    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6351    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;
6352   }
6353  }
6354         YY_BREAK
6355 case 101:
6356 YY_RULE_SETUP
6357 FAIL("Unexpected character `%c' in attribute list of trace_connect element.", surf_parse_text[0]);
6358         YY_BREAK
6359 case 102:
6360 YY_RULE_SETUP
6361 FAIL("Bad attribute `%s' in `trace_connect' element start tag.",surf_parse_text);
6362         YY_BREAK
6363 case YY_STATE_EOF(AL_surfxml_trace___connect):
6364 FAIL("EOF in attribute list of `trace_connect' element.");
6365         YY_BREAK
6366
6367 case 103:
6368 /* rule 103 can match eol */
6369 YY_RULE_SETUP
6370 {
6371   LEAVE;
6372   ETag_surfxml_trace___connect();
6373   popbuffer(); /* attribute */
6374   switch (YY_START) {
6375    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;
6376    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6377    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;
6378   }
6379  }
6380         YY_BREAK
6381 case 104:
6382 /* rule 104 can match eol */
6383 YY_RULE_SETUP
6384 FAIL("Unexpected end-tag `%s': `</trace_connect>' expected.",surf_parse_text);
6385         YY_BREAK
6386 case 105:
6387 YY_RULE_SETUP
6388 FAIL("Unexpected character `%c': `</trace_connect>' expected.",surf_parse_text[0]);
6389         YY_BREAK
6390 case YY_STATE_EOF(E_surfxml_trace___connect):
6391 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace_connect>' expected.");
6392         YY_BREAK
6393
6394 case 106:
6395 /* rule 106 can match eol */
6396 YY_RULE_SETUP
6397 FAIL("Starting tag <AS> is not allowed here.");
6398         YY_BREAK
6399 case 107:
6400 /* rule 107 can match eol */
6401 YY_RULE_SETUP
6402 {
6403   AX_surfxml_AS_id = 0;
6404   surfxml_AS_id_isset = 0;
6405   AX_surfxml_AS_routing = AU_surfxml_AS_routing;
6406   surfxml_AS_routing_isset = 0;
6407   ENTER(AL_surfxml_AS); pushbuffer(0);
6408   }
6409         YY_BREAK
6410
6411 case 108:
6412 /* rule 108 can match eol */
6413 YY_RULE_SETUP
6414 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);
6415         YY_BREAK
6416 case 109:
6417 /* rule 109 can match eol */
6418 YY_RULE_SETUP
6419 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);
6420         YY_BREAK
6421 case 110:
6422 /* rule 110 can match eol */
6423 case 111:
6424 /* rule 111 can match eol */
6425 YY_RULE_SETUP
6426 A_surfxml_AS_routing = A_surfxml_AS_routing_Full;
6427         YY_BREAK
6428 case 112:
6429 /* rule 112 can match eol */
6430 case 113:
6431 /* rule 113 can match eol */
6432 YY_RULE_SETUP
6433 A_surfxml_AS_routing = A_surfxml_AS_routing_Floyd;
6434         YY_BREAK
6435 case 114:
6436 /* rule 114 can match eol */
6437 case 115:
6438 /* rule 115 can match eol */
6439 YY_RULE_SETUP
6440 A_surfxml_AS_routing = A_surfxml_AS_routing_Dijkstra;
6441         YY_BREAK
6442 case 116:
6443 /* rule 116 can match eol */
6444 case 117:
6445 /* rule 117 can match eol */
6446 YY_RULE_SETUP
6447 A_surfxml_AS_routing = A_surfxml_AS_routing_DijkstraCache;
6448         YY_BREAK
6449 case 118:
6450 /* rule 118 can match eol */
6451 case 119:
6452 /* rule 119 can match eol */
6453 YY_RULE_SETUP
6454 A_surfxml_AS_routing = A_surfxml_AS_routing_None;
6455         YY_BREAK
6456 case 120:
6457 /* rule 120 can match eol */
6458 case 121:
6459 /* rule 121 can match eol */
6460 YY_RULE_SETUP
6461 A_surfxml_AS_routing = A_surfxml_AS_routing_Vivaldi;
6462         YY_BREAK
6463 case 122:
6464 /* rule 122 can match eol */
6465 case 123:
6466 /* rule 123 can match eol */
6467 YY_RULE_SETUP
6468 A_surfxml_AS_routing = A_surfxml_AS_routing_Cluster;
6469         YY_BREAK
6470 case 124:
6471 /* rule 124 can match eol */
6472 case 125:
6473 /* rule 125 can match eol */
6474 YY_RULE_SETUP
6475 A_surfxml_AS_routing = A_surfxml_AS_routing_Cluster___torus;
6476         YY_BREAK
6477 case 126:
6478 /* rule 126 can match eol */
6479 case 127:
6480 /* rule 127 can match eol */
6481 YY_RULE_SETUP
6482 A_surfxml_AS_routing = A_surfxml_AS_routing_Cluster___fat___tree;
6483         YY_BREAK
6484 case 128:
6485 YY_RULE_SETUP
6486 {
6487   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
6488   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
6489   LEAVE; STag_surfxml_AS();surfxml_pcdata_ix = 0; ENTER(S_surfxml_AS);
6490  }
6491         YY_BREAK
6492 case 129:
6493 YY_RULE_SETUP
6494 {
6495   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
6496   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
6497   LEAVE; STag_surfxml_AS(); surfxml_pcdata_ix = 0; ETag_surfxml_AS(); popbuffer(); /* attribute */
6498   switch (YY_START) {
6499    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;
6500    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6501    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;
6502   }
6503  }
6504         YY_BREAK
6505 case 130:
6506 YY_RULE_SETUP
6507 FAIL("Unexpected character `%c' in attribute list of AS element.", surf_parse_text[0]);
6508         YY_BREAK
6509 case 131:
6510 YY_RULE_SETUP
6511 FAIL("Bad attribute `%s' in `AS' element start tag.",surf_parse_text);
6512         YY_BREAK
6513 case YY_STATE_EOF(AL_surfxml_AS):
6514 FAIL("EOF in attribute list of `AS' element.");
6515         YY_BREAK
6516
6517 case 132:
6518 /* rule 132 can match eol */
6519 YY_RULE_SETUP
6520 {
6521   LEAVE;
6522   ETag_surfxml_AS();
6523   popbuffer(); /* attribute */
6524   switch (YY_START) {
6525    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;
6526    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6527    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;
6528   }
6529  }
6530         YY_BREAK
6531 case 133:
6532 /* rule 133 can match eol */
6533 YY_RULE_SETUP
6534 FAIL("Unexpected end-tag `%s': `</AS>' expected.",surf_parse_text);
6535         YY_BREAK
6536 case 134:
6537 YY_RULE_SETUP
6538 FAIL("Unexpected character `%c': `</AS>' expected.",surf_parse_text[0]);
6539         YY_BREAK
6540 case YY_STATE_EOF(S_surfxml_AS_8):
6541 case YY_STATE_EOF(E_surfxml_AS):
6542 case YY_STATE_EOF(S_surfxml_AS):
6543 case YY_STATE_EOF(S_surfxml_AS_4):
6544 case YY_STATE_EOF(S_surfxml_AS_6):
6545 case YY_STATE_EOF(S_surfxml_AS_3):
6546 case YY_STATE_EOF(S_surfxml_AS_1):
6547 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</AS>' expected.");
6548         YY_BREAK
6549
6550 case 135:
6551 /* rule 135 can match eol */
6552 YY_RULE_SETUP
6553 FAIL("Starting tag <storage_type> is not allowed here.");
6554         YY_BREAK
6555 case 136:
6556 /* rule 136 can match eol */
6557 YY_RULE_SETUP
6558 {
6559   AX_surfxml_storage___type_id = 0;
6560   surfxml_storage___type_id_isset = 0;
6561   AX_surfxml_storage___type_model = 0;
6562   surfxml_storage___type_model_isset = 0;
6563   AX_surfxml_storage___type_size = 0;
6564   surfxml_storage___type_size_isset = 0;
6565   AX_surfxml_storage___type_content = 0;
6566   surfxml_storage___type_content_isset = 0;
6567   AX_surfxml_storage___type_content___type = 16;
6568   surfxml_storage___type_content___type_isset = 0;
6569   ENTER(AL_surfxml_storage___type); pushbuffer(0);
6570   }
6571         YY_BREAK
6572
6573 case 137:
6574 /* rule 137 can match eol */
6575 YY_RULE_SETUP
6576 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);
6577         YY_BREAK
6578 case 138:
6579 /* rule 138 can match eol */
6580 YY_RULE_SETUP
6581 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);
6582         YY_BREAK
6583 case 139:
6584 /* rule 139 can match eol */
6585 YY_RULE_SETUP
6586 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);
6587         YY_BREAK
6588 case 140:
6589 /* rule 140 can match eol */
6590 YY_RULE_SETUP
6591 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);
6592         YY_BREAK
6593 case 141:
6594 /* rule 141 can match eol */
6595 YY_RULE_SETUP
6596 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);
6597         YY_BREAK
6598 case 142:
6599 /* rule 142 can match eol */
6600 YY_RULE_SETUP
6601 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);
6602         YY_BREAK
6603 case 143:
6604 /* rule 143 can match eol */
6605 YY_RULE_SETUP
6606 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);
6607         YY_BREAK
6608 case 144:
6609 /* rule 144 can match eol */
6610 YY_RULE_SETUP
6611 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);
6612         YY_BREAK
6613 case 145:
6614 /* rule 145 can match eol */
6615 YY_RULE_SETUP
6616 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);
6617         YY_BREAK
6618 case 146:
6619 /* rule 146 can match eol */
6620 YY_RULE_SETUP
6621 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);
6622         YY_BREAK
6623 case 147:
6624 YY_RULE_SETUP
6625 {
6626   if (!AX_surfxml_storage___type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
6627   if (!AX_surfxml_storage___type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
6628   if (!AX_surfxml_storage___type_size) FAIL("Required attribute `size' not set for `storage_type' element.");
6629   LEAVE; STag_surfxml_storage___type();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage___type);
6630  }
6631         YY_BREAK
6632 case 148:
6633 YY_RULE_SETUP
6634 {
6635   if (!AX_surfxml_storage___type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
6636   if (!AX_surfxml_storage___type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
6637   if (!AX_surfxml_storage___type_size) FAIL("Required attribute `size' not set for `storage_type' element.");
6638   LEAVE; STag_surfxml_storage___type(); surfxml_pcdata_ix = 0; ETag_surfxml_storage___type(); popbuffer(); /* attribute */
6639   switch (YY_START) {
6640    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;
6641   }
6642  }
6643         YY_BREAK
6644 case 149:
6645 YY_RULE_SETUP
6646 FAIL("Unexpected character `%c' in attribute list of storage_type element.", surf_parse_text[0]);
6647         YY_BREAK
6648 case 150:
6649 YY_RULE_SETUP
6650 FAIL("Bad attribute `%s' in `storage_type' element start tag.",surf_parse_text);
6651         YY_BREAK
6652 case YY_STATE_EOF(AL_surfxml_storage___type):
6653 FAIL("EOF in attribute list of `storage_type' element.");
6654         YY_BREAK
6655
6656 case 151:
6657 /* rule 151 can match eol */
6658 YY_RULE_SETUP
6659 {
6660   LEAVE;
6661   ETag_surfxml_storage___type();
6662   popbuffer(); /* attribute */
6663   switch (YY_START) {
6664    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;
6665   }
6666  }
6667         YY_BREAK
6668 case 152:
6669 /* rule 152 can match eol */
6670 YY_RULE_SETUP
6671 FAIL("Unexpected end-tag `%s': `</storage_type>' expected.",surf_parse_text);
6672         YY_BREAK
6673 case 153:
6674 YY_RULE_SETUP
6675 FAIL("Unexpected character `%c': `</storage_type>' expected.",surf_parse_text[0]);
6676         YY_BREAK
6677 case YY_STATE_EOF(S_surfxml_storage___type_2):
6678 case YY_STATE_EOF(S_surfxml_storage___type):
6679 case YY_STATE_EOF(E_surfxml_storage___type):
6680 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage_type>' expected.");
6681         YY_BREAK
6682
6683 case 154:
6684 /* rule 154 can match eol */
6685 YY_RULE_SETUP
6686 FAIL("Starting tag <mount> is not allowed here.");
6687         YY_BREAK
6688 case 155:
6689 /* rule 155 can match eol */
6690 YY_RULE_SETUP
6691 {
6692   AX_surfxml_mount_storageId = 0;
6693   surfxml_mount_storageId_isset = 0;
6694   AX_surfxml_mount_name = 0;
6695   surfxml_mount_name_isset = 0;
6696   ENTER(AL_surfxml_mount); pushbuffer(0);
6697   }
6698         YY_BREAK
6699
6700 case 156:
6701 /* rule 156 can match eol */
6702 YY_RULE_SETUP
6703 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);
6704         YY_BREAK
6705 case 157:
6706 /* rule 157 can match eol */
6707 YY_RULE_SETUP
6708 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);
6709         YY_BREAK
6710 case 158:
6711 /* rule 158 can match eol */
6712 YY_RULE_SETUP
6713 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);
6714         YY_BREAK
6715 case 159:
6716 /* rule 159 can match eol */
6717 YY_RULE_SETUP
6718 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);
6719         YY_BREAK
6720 case 160:
6721 YY_RULE_SETUP
6722 {
6723   if (!AX_surfxml_mount_storageId) FAIL("Required attribute `storageId' not set for `mount' element.");
6724   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
6725   LEAVE; STag_surfxml_mount();surfxml_pcdata_ix = 0; ENTER(E_surfxml_mount);
6726  }
6727         YY_BREAK
6728 case 161:
6729 YY_RULE_SETUP
6730 {
6731   if (!AX_surfxml_mount_storageId) FAIL("Required attribute `storageId' not set for `mount' element.");
6732   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
6733   LEAVE; STag_surfxml_mount(); surfxml_pcdata_ix = 0; ETag_surfxml_mount(); popbuffer(); /* attribute */
6734   switch (YY_START) {
6735    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
6736   }
6737  }
6738         YY_BREAK
6739 case 162:
6740 YY_RULE_SETUP
6741 FAIL("Unexpected character `%c' in attribute list of mount element.", surf_parse_text[0]);
6742         YY_BREAK
6743 case 163:
6744 YY_RULE_SETUP
6745 FAIL("Bad attribute `%s' in `mount' element start tag.",surf_parse_text);
6746         YY_BREAK
6747 case YY_STATE_EOF(AL_surfxml_mount):
6748 FAIL("EOF in attribute list of `mount' element.");
6749         YY_BREAK
6750
6751 case 164:
6752 /* rule 164 can match eol */
6753 YY_RULE_SETUP
6754 {
6755   LEAVE;
6756   ETag_surfxml_mount();
6757   popbuffer(); /* attribute */
6758   switch (YY_START) {
6759    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
6760   }
6761  }
6762         YY_BREAK
6763 case 165:
6764 /* rule 165 can match eol */
6765 YY_RULE_SETUP
6766 FAIL("Unexpected end-tag `%s': `</mount>' expected.",surf_parse_text);
6767         YY_BREAK
6768 case 166:
6769 YY_RULE_SETUP
6770 FAIL("Unexpected character `%c': `</mount>' expected.",surf_parse_text[0]);
6771         YY_BREAK
6772 case YY_STATE_EOF(E_surfxml_mount):
6773 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</mount>' expected.");
6774         YY_BREAK
6775
6776 case 167:
6777 /* rule 167 can match eol */
6778 YY_RULE_SETUP
6779 FAIL("Starting tag <mstorage> is not allowed here.");
6780         YY_BREAK
6781 case 168:
6782 /* rule 168 can match eol */
6783 YY_RULE_SETUP
6784 {
6785   AX_surfxml_mstorage_typeId = 0;
6786   surfxml_mstorage_typeId_isset = 0;
6787   AX_surfxml_mstorage_name = 0;
6788   surfxml_mstorage_name_isset = 0;
6789   ENTER(AL_surfxml_mstorage); pushbuffer(0);
6790   }
6791         YY_BREAK
6792
6793 case 169:
6794 /* rule 169 can match eol */
6795 YY_RULE_SETUP
6796 if (surfxml_mstorage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_mstorage>");} surfxml_mstorage_typeId_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mstorage_typeId);
6797         YY_BREAK
6798 case 170:
6799 /* rule 170 can match eol */
6800 YY_RULE_SETUP
6801 if (surfxml_mstorage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_mstorage>");}  surfxml_mstorage_typeId_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mstorage_typeId);
6802         YY_BREAK
6803 case 171:
6804 /* rule 171 can match eol */
6805 YY_RULE_SETUP
6806 if (surfxml_mstorage_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mstorage>");} surfxml_mstorage_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mstorage_name);
6807         YY_BREAK
6808 case 172:
6809 /* rule 172 can match eol */
6810 YY_RULE_SETUP
6811 if (surfxml_mstorage_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mstorage>");}  surfxml_mstorage_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mstorage_name);
6812         YY_BREAK
6813 case 173:
6814 YY_RULE_SETUP
6815 {
6816   if (!AX_surfxml_mstorage_typeId) FAIL("Required attribute `typeId' not set for `mstorage' element.");
6817   if (!AX_surfxml_mstorage_name) FAIL("Required attribute `name' not set for `mstorage' element.");
6818   LEAVE; STag_surfxml_mstorage();surfxml_pcdata_ix = 0; ENTER(E_surfxml_mstorage);
6819  }
6820         YY_BREAK
6821 case 174:
6822 YY_RULE_SETUP
6823 {
6824   if (!AX_surfxml_mstorage_typeId) FAIL("Required attribute `typeId' not set for `mstorage' element.");
6825   if (!AX_surfxml_mstorage_name) FAIL("Required attribute `name' not set for `mstorage' element.");
6826   LEAVE; STag_surfxml_mstorage(); surfxml_pcdata_ix = 0; ETag_surfxml_mstorage(); popbuffer(); /* attribute */
6827   switch (YY_START) {
6828    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
6829   }
6830  }
6831         YY_BREAK
6832 case 175:
6833 YY_RULE_SETUP
6834 FAIL("Unexpected character `%c' in attribute list of mstorage element.", surf_parse_text[0]);
6835         YY_BREAK
6836 case 176:
6837 YY_RULE_SETUP
6838 FAIL("Bad attribute `%s' in `mstorage' element start tag.",surf_parse_text);
6839         YY_BREAK
6840 case YY_STATE_EOF(AL_surfxml_mstorage):
6841 FAIL("EOF in attribute list of `mstorage' element.");
6842         YY_BREAK
6843
6844 case 177:
6845 /* rule 177 can match eol */
6846 YY_RULE_SETUP
6847 {
6848   LEAVE;
6849   ETag_surfxml_mstorage();
6850   popbuffer(); /* attribute */
6851   switch (YY_START) {
6852    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
6853   }
6854  }
6855         YY_BREAK
6856 case 178:
6857 /* rule 178 can match eol */
6858 YY_RULE_SETUP
6859 FAIL("Unexpected end-tag `%s': `</mstorage>' expected.",surf_parse_text);
6860         YY_BREAK
6861 case 179:
6862 YY_RULE_SETUP
6863 FAIL("Unexpected character `%c': `</mstorage>' expected.",surf_parse_text[0]);
6864         YY_BREAK
6865 case YY_STATE_EOF(E_surfxml_mstorage):
6866 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</mstorage>' expected.");
6867         YY_BREAK
6868
6869 case 180:
6870 /* rule 180 can match eol */
6871 YY_RULE_SETUP
6872 FAIL("Starting tag <host> is not allowed here.");
6873         YY_BREAK
6874 case 181:
6875 /* rule 181 can match eol */
6876 YY_RULE_SETUP
6877 {
6878   AX_surfxml_host_id = 0;
6879   surfxml_host_id_isset = 0;
6880   AX_surfxml_host_power = 0;
6881   surfxml_host_power_isset = 0;
6882   AX_surfxml_host_core = 25;
6883   surfxml_host_core_isset = 0;
6884   AX_surfxml_host_availability = 27;
6885   surfxml_host_availability_isset = 0;
6886   AX_surfxml_host_availability___file = 0;
6887   surfxml_host_availability___file_isset = 0;
6888   AX_surfxml_host_state = A_surfxml_host_state_ON;
6889   surfxml_host_state_isset = 0;
6890   AX_surfxml_host_state___file = 0;
6891   surfxml_host_state___file_isset = 0;
6892   AX_surfxml_host_coordinates = 0;
6893   surfxml_host_coordinates_isset = 0;
6894   AX_surfxml_host_pstate = 31;
6895   surfxml_host_pstate_isset = 0;
6896   ENTER(AL_surfxml_host); pushbuffer(0);
6897   }
6898         YY_BREAK
6899
6900 case 182:
6901 /* rule 182 can match eol */
6902 YY_RULE_SETUP
6903 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);
6904         YY_BREAK
6905 case 183:
6906 /* rule 183 can match eol */
6907 YY_RULE_SETUP
6908 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);
6909         YY_BREAK
6910 case 184:
6911 /* rule 184 can match eol */
6912 YY_RULE_SETUP
6913 if (surfxml_host_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_host>");} surfxml_host_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_power);
6914         YY_BREAK
6915 case 185:
6916 /* rule 185 can match eol */
6917 YY_RULE_SETUP
6918 if (surfxml_host_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_host>");}  surfxml_host_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_power);
6919         YY_BREAK
6920 case 186:
6921 /* rule 186 can match eol */
6922 YY_RULE_SETUP
6923 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);
6924         YY_BREAK
6925 case 187:
6926 /* rule 187 can match eol */
6927 YY_RULE_SETUP
6928 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);
6929         YY_BREAK
6930 case 188:
6931 /* rule 188 can match eol */
6932 YY_RULE_SETUP
6933 if (surfxml_host_availability_isset != 0) {FAIL("Multiple definition of attribute availability in <surfxml_host>");} surfxml_host_availability_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability);
6934         YY_BREAK
6935 case 189:
6936 /* rule 189 can match eol */
6937 YY_RULE_SETUP
6938 if (surfxml_host_availability_isset != 0) {FAIL("Multiple definition of attribute availability in <surfxml_host>");}  surfxml_host_availability_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability);
6939         YY_BREAK
6940 case 190:
6941 /* rule 190 can match eol */
6942 YY_RULE_SETUP
6943 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);
6944         YY_BREAK
6945 case 191:
6946 /* rule 191 can match eol */
6947 YY_RULE_SETUP
6948 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);
6949         YY_BREAK
6950 case 192:
6951 /* rule 192 can match eol */
6952 case 193:
6953 /* rule 193 can match eol */
6954 YY_RULE_SETUP
6955 A_surfxml_host_state = A_surfxml_host_state_ON;
6956         YY_BREAK
6957 case 194:
6958 /* rule 194 can match eol */
6959 case 195:
6960 /* rule 195 can match eol */
6961 YY_RULE_SETUP
6962 A_surfxml_host_state = A_surfxml_host_state_OFF;
6963         YY_BREAK
6964 case 196:
6965 /* rule 196 can match eol */
6966 YY_RULE_SETUP
6967 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);
6968         YY_BREAK
6969 case 197:
6970 /* rule 197 can match eol */
6971 YY_RULE_SETUP
6972 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);
6973         YY_BREAK
6974 case 198:
6975 /* rule 198 can match eol */
6976 YY_RULE_SETUP
6977 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);
6978         YY_BREAK
6979 case 199:
6980 /* rule 199 can match eol */
6981 YY_RULE_SETUP
6982 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);
6983         YY_BREAK
6984 case 200:
6985 /* rule 200 can match eol */
6986 YY_RULE_SETUP
6987 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);
6988         YY_BREAK
6989 case 201:
6990 /* rule 201 can match eol */
6991 YY_RULE_SETUP
6992 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);
6993         YY_BREAK
6994 case 202:
6995 YY_RULE_SETUP
6996 {
6997   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
6998   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
6999   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
7000  }
7001         YY_BREAK
7002 case 203:
7003 YY_RULE_SETUP
7004 {
7005   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
7006   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
7007   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
7008   switch (YY_START) {
7009    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;
7010   }
7011  }
7012         YY_BREAK
7013 case 204:
7014 YY_RULE_SETUP
7015 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
7016         YY_BREAK
7017 case 205:
7018 YY_RULE_SETUP
7019 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
7020         YY_BREAK
7021 case YY_STATE_EOF(AL_surfxml_host):
7022 FAIL("EOF in attribute list of `host' element.");
7023         YY_BREAK
7024
7025 case 206:
7026 /* rule 206 can match eol */
7027 YY_RULE_SETUP
7028 {
7029   LEAVE;
7030   ETag_surfxml_host();
7031   popbuffer(); /* attribute */
7032   switch (YY_START) {
7033    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;
7034   }
7035  }
7036         YY_BREAK
7037 case 207:
7038 /* rule 207 can match eol */
7039 YY_RULE_SETUP
7040 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
7041         YY_BREAK
7042 case 208:
7043 YY_RULE_SETUP
7044 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
7045         YY_BREAK
7046 case YY_STATE_EOF(S_surfxml_host_2):
7047 case YY_STATE_EOF(S_surfxml_host):
7048 case YY_STATE_EOF(E_surfxml_host):
7049 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</host>' expected.");
7050         YY_BREAK
7051
7052 case 209:
7053 /* rule 209 can match eol */
7054 YY_RULE_SETUP
7055 FAIL("Starting tag <storage> is not allowed here.");
7056         YY_BREAK
7057 case 210:
7058 /* rule 210 can match eol */
7059 YY_RULE_SETUP
7060 {
7061   AX_surfxml_storage_id = 0;
7062   surfxml_storage_id_isset = 0;
7063   AX_surfxml_storage_typeId = 0;
7064   surfxml_storage_typeId_isset = 0;
7065   AX_surfxml_storage_content = 0;
7066   surfxml_storage_content_isset = 0;
7067   AX_surfxml_storage_content___type = 35;
7068   surfxml_storage_content___type_isset = 0;
7069   AX_surfxml_storage_attach = 0;
7070   surfxml_storage_attach_isset = 0;
7071   ENTER(AL_surfxml_storage); pushbuffer(0);
7072   }
7073         YY_BREAK
7074
7075 case 211:
7076 /* rule 211 can match eol */
7077 YY_RULE_SETUP
7078 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);
7079         YY_BREAK
7080 case 212:
7081 /* rule 212 can match eol */
7082 YY_RULE_SETUP
7083 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);
7084         YY_BREAK
7085 case 213:
7086 /* rule 213 can match eol */
7087 YY_RULE_SETUP
7088 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);
7089         YY_BREAK
7090 case 214:
7091 /* rule 214 can match eol */
7092 YY_RULE_SETUP
7093 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);
7094         YY_BREAK
7095 case 215:
7096 /* rule 215 can match eol */
7097 YY_RULE_SETUP
7098 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);
7099         YY_BREAK
7100 case 216:
7101 /* rule 216 can match eol */
7102 YY_RULE_SETUP
7103 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);
7104         YY_BREAK
7105 case 217:
7106 /* rule 217 can match eol */
7107 YY_RULE_SETUP
7108 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);
7109         YY_BREAK
7110 case 218:
7111 /* rule 218 can match eol */
7112 YY_RULE_SETUP
7113 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);
7114         YY_BREAK
7115 case 219:
7116 /* rule 219 can match eol */
7117 YY_RULE_SETUP
7118 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);
7119         YY_BREAK
7120 case 220:
7121 /* rule 220 can match eol */
7122 YY_RULE_SETUP
7123 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);
7124         YY_BREAK
7125 case 221:
7126 YY_RULE_SETUP
7127 {
7128   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
7129   if (!AX_surfxml_storage_typeId) FAIL("Required attribute `typeId' not set for `storage' element.");
7130   if (!AX_surfxml_storage_attach) FAIL("Required attribute `attach' not set for `storage' element.");
7131   LEAVE; STag_surfxml_storage();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage);
7132  }
7133         YY_BREAK
7134 case 222:
7135 YY_RULE_SETUP
7136 {
7137   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
7138   if (!AX_surfxml_storage_typeId) FAIL("Required attribute `typeId' not set for `storage' element.");
7139   if (!AX_surfxml_storage_attach) FAIL("Required attribute `attach' not set for `storage' element.");
7140   LEAVE; STag_surfxml_storage(); surfxml_pcdata_ix = 0; ETag_surfxml_storage(); popbuffer(); /* attribute */
7141   switch (YY_START) {
7142    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;
7143   }
7144  }
7145         YY_BREAK
7146 case 223:
7147 YY_RULE_SETUP
7148 FAIL("Unexpected character `%c' in attribute list of storage element.", surf_parse_text[0]);
7149         YY_BREAK
7150 case 224:
7151 YY_RULE_SETUP
7152 FAIL("Bad attribute `%s' in `storage' element start tag.",surf_parse_text);
7153         YY_BREAK
7154 case YY_STATE_EOF(AL_surfxml_storage):
7155 FAIL("EOF in attribute list of `storage' element.");
7156         YY_BREAK
7157
7158 case 225:
7159 /* rule 225 can match eol */
7160 YY_RULE_SETUP
7161 {
7162   LEAVE;
7163   ETag_surfxml_storage();
7164   popbuffer(); /* attribute */
7165   switch (YY_START) {
7166    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;
7167   }
7168  }
7169         YY_BREAK
7170 case 226:
7171 /* rule 226 can match eol */
7172 YY_RULE_SETUP
7173 FAIL("Unexpected end-tag `%s': `</storage>' expected.",surf_parse_text);
7174         YY_BREAK
7175 case 227:
7176 YY_RULE_SETUP
7177 FAIL("Unexpected character `%c': `</storage>' expected.",surf_parse_text[0]);
7178         YY_BREAK
7179 case YY_STATE_EOF(S_surfxml_storage_2):
7180 case YY_STATE_EOF(S_surfxml_storage):
7181 case YY_STATE_EOF(E_surfxml_storage):
7182 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage>' expected.");
7183         YY_BREAK
7184
7185 case 228:
7186 /* rule 228 can match eol */
7187 YY_RULE_SETUP
7188 FAIL("Starting tag <gpu> is not allowed here.");
7189         YY_BREAK
7190 case 229:
7191 /* rule 229 can match eol */
7192 YY_RULE_SETUP
7193 {
7194   AX_surfxml_gpu_name = 0;
7195   surfxml_gpu_name_isset = 0;
7196   ENTER(AL_surfxml_gpu); pushbuffer(0);
7197   }
7198         YY_BREAK
7199
7200 case 230:
7201 /* rule 230 can match eol */
7202 YY_RULE_SETUP
7203 if (surfxml_gpu_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_gpu>");} surfxml_gpu_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_gpu_name);
7204         YY_BREAK
7205 case 231:
7206 /* rule 231 can match eol */
7207 YY_RULE_SETUP
7208 if (surfxml_gpu_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_gpu>");}  surfxml_gpu_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_gpu_name);
7209         YY_BREAK
7210 case 232:
7211 YY_RULE_SETUP
7212 {
7213   if (!AX_surfxml_gpu_name) FAIL("Required attribute `name' not set for `gpu' element.");
7214   LEAVE; STag_surfxml_gpu();surfxml_pcdata_ix = 0; ENTER(E_surfxml_gpu);
7215  }
7216         YY_BREAK
7217 case 233:
7218 YY_RULE_SETUP
7219 {
7220   if (!AX_surfxml_gpu_name) FAIL("Required attribute `name' not set for `gpu' element.");
7221   LEAVE; STag_surfxml_gpu(); surfxml_pcdata_ix = 0; ETag_surfxml_gpu(); popbuffer(); /* attribute */
7222   switch (YY_START) {
7223    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;
7224   }
7225  }
7226         YY_BREAK
7227 case 234:
7228 YY_RULE_SETUP
7229 FAIL("Unexpected character `%c' in attribute list of gpu element.", surf_parse_text[0]);
7230         YY_BREAK
7231 case 235:
7232 YY_RULE_SETUP
7233 FAIL("Bad attribute `%s' in `gpu' element start tag.",surf_parse_text);
7234         YY_BREAK
7235 case YY_STATE_EOF(AL_surfxml_gpu):
7236 FAIL("EOF in attribute list of `gpu' element.");
7237         YY_BREAK
7238
7239 case 236:
7240 /* rule 236 can match eol */
7241 YY_RULE_SETUP
7242 {
7243   LEAVE;
7244   ETag_surfxml_gpu();
7245   popbuffer(); /* attribute */
7246   switch (YY_START) {
7247    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;
7248   }
7249  }
7250         YY_BREAK
7251 case 237:
7252 /* rule 237 can match eol */
7253 YY_RULE_SETUP
7254 FAIL("Unexpected end-tag `%s': `</gpu>' expected.",surf_parse_text);
7255         YY_BREAK
7256 case 238:
7257 YY_RULE_SETUP
7258 FAIL("Unexpected character `%c': `</gpu>' expected.",surf_parse_text[0]);
7259         YY_BREAK
7260 case YY_STATE_EOF(E_surfxml_gpu):
7261 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</gpu>' expected.");
7262         YY_BREAK
7263
7264 case 239:
7265 /* rule 239 can match eol */
7266 YY_RULE_SETUP
7267 FAIL("Starting tag <host_link> is not allowed here.");
7268         YY_BREAK
7269 case 240:
7270 /* rule 240 can match eol */
7271 YY_RULE_SETUP
7272 {
7273   AX_surfxml_host___link_id = 0;
7274   surfxml_host___link_id_isset = 0;
7275   AX_surfxml_host___link_up = 0;
7276   surfxml_host___link_up_isset = 0;
7277   AX_surfxml_host___link_down = 0;
7278   surfxml_host___link_down_isset = 0;
7279   ENTER(AL_surfxml_host___link); pushbuffer(0);
7280   }
7281         YY_BREAK
7282
7283 case 241:
7284 /* rule 241 can match eol */
7285 YY_RULE_SETUP
7286 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);
7287         YY_BREAK
7288 case 242:
7289 /* rule 242 can match eol */
7290 YY_RULE_SETUP
7291 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);
7292         YY_BREAK
7293 case 243:
7294 /* rule 243 can match eol */
7295 YY_RULE_SETUP
7296 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);
7297         YY_BREAK
7298 case 244:
7299 /* rule 244 can match eol */
7300 YY_RULE_SETUP
7301 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);
7302         YY_BREAK
7303 case 245:
7304 /* rule 245 can match eol */
7305 YY_RULE_SETUP
7306 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);
7307         YY_BREAK
7308 case 246:
7309 /* rule 246 can match eol */
7310 YY_RULE_SETUP
7311 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);
7312         YY_BREAK
7313 case 247:
7314 YY_RULE_SETUP
7315 {
7316   if (!AX_surfxml_host___link_id) FAIL("Required attribute `id' not set for `host_link' element.");
7317   if (!AX_surfxml_host___link_up) FAIL("Required attribute `up' not set for `host_link' element.");
7318   if (!AX_surfxml_host___link_down) FAIL("Required attribute `down' not set for `host_link' element.");
7319   LEAVE; STag_surfxml_host___link();surfxml_pcdata_ix = 0; ENTER(E_surfxml_host___link);
7320  }
7321         YY_BREAK
7322 case 248:
7323 YY_RULE_SETUP
7324 {
7325   if (!AX_surfxml_host___link_id) FAIL("Required attribute `id' not set for `host_link' element.");
7326   if (!AX_surfxml_host___link_up) FAIL("Required attribute `up' not set for `host_link' element.");
7327   if (!AX_surfxml_host___link_down) FAIL("Required attribute `down' not set for `host_link' element.");
7328   LEAVE; STag_surfxml_host___link(); surfxml_pcdata_ix = 0; ETag_surfxml_host___link(); popbuffer(); /* attribute */
7329   switch (YY_START) {
7330    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;
7331   }
7332  }
7333         YY_BREAK
7334 case 249:
7335 YY_RULE_SETUP
7336 FAIL("Unexpected character `%c' in attribute list of host_link element.", surf_parse_text[0]);
7337         YY_BREAK
7338 case 250:
7339 YY_RULE_SETUP
7340 FAIL("Bad attribute `%s' in `host_link' element start tag.",surf_parse_text);
7341         YY_BREAK
7342 case YY_STATE_EOF(AL_surfxml_host___link):
7343 FAIL("EOF in attribute list of `host_link' element.");
7344         YY_BREAK
7345
7346 case 251:
7347 /* rule 251 can match eol */
7348 YY_RULE_SETUP
7349 {
7350   LEAVE;
7351   ETag_surfxml_host___link();
7352   popbuffer(); /* attribute */
7353   switch (YY_START) {
7354    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;
7355   }
7356  }
7357         YY_BREAK
7358 case 252:
7359 /* rule 252 can match eol */
7360 YY_RULE_SETUP
7361 FAIL("Unexpected end-tag `%s': `</host_link>' expected.",surf_parse_text);
7362         YY_BREAK
7363 case 253:
7364 YY_RULE_SETUP
7365 FAIL("Unexpected character `%c': `</host_link>' expected.",surf_parse_text[0]);
7366         YY_BREAK
7367 case YY_STATE_EOF(E_surfxml_host___link):
7368 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</host_link>' expected.");
7369         YY_BREAK
7370
7371 case 254:
7372 /* rule 254 can match eol */
7373 YY_RULE_SETUP
7374 FAIL("Starting tag <cluster> is not allowed here.");
7375         YY_BREAK
7376 case 255:
7377 /* rule 255 can match eol */
7378 YY_RULE_SETUP
7379 {
7380   AX_surfxml_cluster_id = 0;
7381   surfxml_cluster_id_isset = 0;
7382   AX_surfxml_cluster_prefix = 0;
7383   surfxml_cluster_prefix_isset = 0;
7384   AX_surfxml_cluster_suffix = 0;
7385   surfxml_cluster_suffix_isset = 0;
7386   AX_surfxml_cluster_radical = 0;
7387   surfxml_cluster_radical_isset = 0;
7388   AX_surfxml_cluster_power = 0;
7389   surfxml_cluster_power_isset = 0;
7390   AX_surfxml_cluster_core = 44;
7391   surfxml_cluster_core_isset = 0;
7392   AX_surfxml_cluster_bw = 0;
7393   surfxml_cluster_bw_isset = 0;
7394   AX_surfxml_cluster_lat = 0;
7395   surfxml_cluster_lat_isset = 0;
7396   AX_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FULLDUPLEX;
7397   surfxml_cluster_sharing___policy_isset = 0;
7398   AX_surfxml_cluster_topology = A_surfxml_cluster_topology_FLAT;
7399   surfxml_cluster_topology_isset = 0;
7400   AX_surfxml_cluster_topo___parameters = 0;
7401   surfxml_cluster_topo___parameters_isset = 0;
7402   AX_surfxml_cluster_bb___bw = 0;
7403   surfxml_cluster_bb___bw_isset = 0;
7404   AX_surfxml_cluster_bb___lat = 0;
7405   surfxml_cluster_bb___lat_isset = 0;
7406   AX_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_SHARED;
7407   surfxml_cluster_bb___sharing___policy_isset = 0;
7408   AX_surfxml_cluster_availability___file = 0;
7409   surfxml_cluster_availability___file_isset = 0;
7410   AX_surfxml_cluster_state___file = 0;
7411   surfxml_cluster_state___file_isset = 0;
7412   AX_surfxml_cluster_router___id = 0;
7413   surfxml_cluster_router___id_isset = 0;
7414   AX_surfxml_cluster_limiter___link = 0;
7415   surfxml_cluster_limiter___link_isset = 0;
7416   AX_surfxml_cluster_loopback___bw = 0;
7417   surfxml_cluster_loopback___bw_isset = 0;
7418   AX_surfxml_cluster_loopback___lat = 0;
7419   surfxml_cluster_loopback___lat_isset = 0;
7420   ENTER(AL_surfxml_cluster); pushbuffer(0);
7421   }
7422         YY_BREAK
7423
7424 case 256:
7425 /* rule 256 can match eol */
7426 YY_RULE_SETUP
7427 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);
7428         YY_BREAK
7429 case 257:
7430 /* rule 257 can match eol */
7431 YY_RULE_SETUP
7432 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);
7433         YY_BREAK
7434 case 258:
7435 /* rule 258 can match eol */
7436 YY_RULE_SETUP
7437 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);
7438         YY_BREAK
7439 case 259:
7440 /* rule 259 can match eol */
7441 YY_RULE_SETUP
7442 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);
7443         YY_BREAK
7444 case 260:
7445 /* rule 260 can match eol */
7446 YY_RULE_SETUP
7447 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);
7448         YY_BREAK
7449 case 261:
7450 /* rule 261 can match eol */
7451 YY_RULE_SETUP
7452 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);
7453         YY_BREAK
7454 case 262:
7455 /* rule 262 can match eol */
7456 YY_RULE_SETUP
7457 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);
7458         YY_BREAK
7459 case 263:
7460 /* rule 263 can match eol */
7461 YY_RULE_SETUP
7462 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);
7463         YY_BREAK
7464 case 264:
7465 /* rule 264 can match eol */
7466 YY_RULE_SETUP
7467 if (surfxml_cluster_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cluster>");} surfxml_cluster_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_power);
7468         YY_BREAK
7469 case 265:
7470 /* rule 265 can match eol */
7471 YY_RULE_SETUP
7472 if (surfxml_cluster_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cluster>");}  surfxml_cluster_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_power);
7473         YY_BREAK
7474 case 266:
7475 /* rule 266 can match eol */
7476 YY_RULE_SETUP
7477 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);
7478         YY_BREAK
7479 case 267:
7480 /* rule 267 can match eol */
7481 YY_RULE_SETUP
7482 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);
7483         YY_BREAK
7484 case 268:
7485 /* rule 268 can match eol */
7486 YY_RULE_SETUP
7487 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);
7488         YY_BREAK
7489 case 269:
7490 /* rule 269 can match eol */
7491 YY_RULE_SETUP
7492 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);
7493         YY_BREAK
7494 case 270:
7495 /* rule 270 can match eol */
7496 YY_RULE_SETUP
7497 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);
7498         YY_BREAK
7499 case 271:
7500 /* rule 271 can match eol */
7501 YY_RULE_SETUP
7502 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);
7503         YY_BREAK
7504 case 272:
7505 /* rule 272 can match eol */
7506 case 273:
7507 /* rule 273 can match eol */
7508 YY_RULE_SETUP
7509 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_SHARED;
7510         YY_BREAK
7511 case 274:
7512 /* rule 274 can match eol */
7513 case 275:
7514 /* rule 275 can match eol */
7515 YY_RULE_SETUP
7516 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FULLDUPLEX;
7517         YY_BREAK
7518 case 276:
7519 /* rule 276 can match eol */
7520 case 277:
7521 /* rule 277 can match eol */
7522 YY_RULE_SETUP
7523 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FATPIPE;
7524         YY_BREAK
7525 case 278:
7526 /* rule 278 can match eol */
7527 case 279:
7528 /* rule 279 can match eol */
7529 YY_RULE_SETUP
7530 A_surfxml_cluster_topology = A_surfxml_cluster_topology_FLAT;
7531         YY_BREAK
7532 case 280:
7533 /* rule 280 can match eol */
7534 case 281:
7535 /* rule 281 can match eol */
7536 YY_RULE_SETUP
7537 A_surfxml_cluster_topology = A_surfxml_cluster_topology_TORUS;
7538         YY_BREAK
7539 case 282:
7540 /* rule 282 can match eol */
7541 case 283:
7542 /* rule 283 can match eol */
7543 YY_RULE_SETUP
7544 A_surfxml_cluster_topology = A_surfxml_cluster_topology_FAT___TREE;
7545         YY_BREAK
7546 case 284:
7547 /* rule 284 can match eol */
7548 YY_RULE_SETUP
7549 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);
7550         YY_BREAK
7551 case 285:
7552 /* rule 285 can match eol */
7553 YY_RULE_SETUP
7554 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);
7555         YY_BREAK
7556 case 286:
7557 /* rule 286 can match eol */
7558 YY_RULE_SETUP
7559 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);
7560         YY_BREAK
7561 case 287:
7562 /* rule 287 can match eol */
7563 YY_RULE_SETUP
7564 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);
7565         YY_BREAK
7566 case 288:
7567 /* rule 288 can match eol */
7568 YY_RULE_SETUP
7569 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);
7570         YY_BREAK
7571 case 289:
7572 /* rule 289 can match eol */
7573 YY_RULE_SETUP
7574 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);
7575         YY_BREAK
7576 case 290:
7577 /* rule 290 can match eol */
7578 case 291:
7579 /* rule 291 can match eol */
7580 YY_RULE_SETUP
7581 A_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_SHARED;
7582         YY_BREAK
7583 case 292:
7584 /* rule 292 can match eol */
7585 case 293:
7586 /* rule 293 can match eol */
7587 YY_RULE_SETUP
7588 A_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_FATPIPE;
7589         YY_BREAK
7590 case 294:
7591 /* rule 294 can match eol */
7592 YY_RULE_SETUP
7593 if (surfxml_cluster_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_cluster>");} surfxml_cluster_availability___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_availability___file);
7594         YY_BREAK
7595 case 295:
7596 /* rule 295 can match eol */
7597 YY_RULE_SETUP
7598 if (surfxml_cluster_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_cluster>");}  surfxml_cluster_availability___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_availability___file);
7599         YY_BREAK
7600 case 296:
7601 /* rule 296 can match eol */
7602 YY_RULE_SETUP
7603 if (surfxml_cluster_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_cluster>");} surfxml_cluster_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_state___file);
7604         YY_BREAK
7605 case 297:
7606 /* rule 297 can match eol */
7607 YY_RULE_SETUP
7608 if (surfxml_cluster_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_cluster>");}  surfxml_cluster_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_state___file);
7609         YY_BREAK
7610 case 298:
7611 /* rule 298 can match eol */
7612 YY_RULE_SETUP
7613 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);
7614         YY_BREAK
7615 case 299:
7616 /* rule 299 can match eol */
7617 YY_RULE_SETUP
7618 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);
7619         YY_BREAK
7620 case 300:
7621 /* rule 300 can match eol */
7622 YY_RULE_SETUP
7623 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);
7624         YY_BREAK
7625 case 301:
7626 /* rule 301 can match eol */
7627 YY_RULE_SETUP
7628 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);
7629         YY_BREAK
7630 case 302:
7631 /* rule 302 can match eol */
7632 YY_RULE_SETUP
7633 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);
7634         YY_BREAK
7635 case 303:
7636 /* rule 303 can match eol */
7637 YY_RULE_SETUP
7638 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);
7639         YY_BREAK
7640 case 304:
7641 /* rule 304 can match eol */
7642 YY_RULE_SETUP
7643 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);
7644         YY_BREAK
7645 case 305:
7646 /* rule 305 can match eol */
7647 YY_RULE_SETUP
7648 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);
7649         YY_BREAK
7650 case 306:
7651 YY_RULE_SETUP
7652 {
7653   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
7654   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
7655   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
7656   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
7657   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
7658   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
7659   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
7660   LEAVE; STag_surfxml_cluster();surfxml_pcdata_ix = 0; ENTER(S_surfxml_cluster);
7661  }
7662         YY_BREAK
7663 case 307:
7664 YY_RULE_SETUP
7665 {
7666   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
7667   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
7668   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
7669   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
7670   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
7671   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
7672   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
7673   LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
7674   switch (YY_START) {
7675    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;
7676    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7677    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;
7678   }
7679  }
7680         YY_BREAK
7681 case 308:
7682 YY_RULE_SETUP
7683 FAIL("Unexpected character `%c' in attribute list of cluster element.", surf_parse_text[0]);
7684         YY_BREAK
7685 case 309:
7686 YY_RULE_SETUP
7687 FAIL("Bad attribute `%s' in `cluster' element start tag.",surf_parse_text);
7688         YY_BREAK
7689 case YY_STATE_EOF(AL_surfxml_cluster):
7690 FAIL("EOF in attribute list of `cluster' element.");
7691         YY_BREAK
7692
7693 case 310:
7694 /* rule 310 can match eol */
7695 YY_RULE_SETUP
7696 {
7697   LEAVE;
7698   ETag_surfxml_cluster();
7699   popbuffer(); /* attribute */
7700   switch (YY_START) {
7701    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;
7702    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7703    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;
7704   }
7705  }
7706         YY_BREAK
7707 case 311:
7708 /* rule 311 can match eol */
7709 YY_RULE_SETUP
7710 FAIL("Unexpected end-tag `%s': `</cluster>' expected.",surf_parse_text);
7711         YY_BREAK
7712 case 312:
7713 YY_RULE_SETUP
7714 FAIL("Unexpected character `%c': `</cluster>' expected.",surf_parse_text[0]);
7715         YY_BREAK
7716 case YY_STATE_EOF(S_surfxml_cluster):
7717 case YY_STATE_EOF(S_surfxml_cluster_2):
7718 case YY_STATE_EOF(E_surfxml_cluster):
7719 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</cluster>' expected.");
7720         YY_BREAK
7721
7722 case 313:
7723 /* rule 313 can match eol */
7724 YY_RULE_SETUP
7725 FAIL("Starting tag <cabinet> is not allowed here.");
7726         YY_BREAK
7727 case 314:
7728 /* rule 314 can match eol */
7729 YY_RULE_SETUP
7730 {
7731   AX_surfxml_cabinet_id = 0;
7732   surfxml_cabinet_id_isset = 0;
7733   AX_surfxml_cabinet_prefix = 0;
7734   surfxml_cabinet_prefix_isset = 0;
7735   AX_surfxml_cabinet_suffix = 0;
7736   surfxml_cabinet_suffix_isset = 0;
7737   AX_surfxml_cabinet_radical = 0;
7738   surfxml_cabinet_radical_isset = 0;
7739   AX_surfxml_cabinet_power = 0;
7740   surfxml_cabinet_power_isset = 0;
7741   AX_surfxml_cabinet_bw = 0;
7742   surfxml_cabinet_bw_isset = 0;
7743   AX_surfxml_cabinet_lat = 0;
7744   surfxml_cabinet_lat_isset = 0;
7745   ENTER(AL_surfxml_cabinet); pushbuffer(0);
7746   }
7747         YY_BREAK
7748
7749 case 315:
7750 /* rule 315 can match eol */
7751 YY_RULE_SETUP
7752 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);
7753         YY_BREAK
7754 case 316:
7755 /* rule 316 can match eol */
7756 YY_RULE_SETUP
7757 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);
7758         YY_BREAK
7759 case 317:
7760 /* rule 317 can match eol */
7761 YY_RULE_SETUP
7762 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);
7763         YY_BREAK
7764 case 318:
7765 /* rule 318 can match eol */
7766 YY_RULE_SETUP
7767 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);
7768         YY_BREAK
7769 case 319:
7770 /* rule 319 can match eol */
7771 YY_RULE_SETUP
7772 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);
7773         YY_BREAK
7774 case 320:
7775 /* rule 320 can match eol */
7776 YY_RULE_SETUP
7777 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);
7778         YY_BREAK
7779 case 321:
7780 /* rule 321 can match eol */
7781 YY_RULE_SETUP
7782 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);
7783         YY_BREAK
7784 case 322:
7785 /* rule 322 can match eol */
7786 YY_RULE_SETUP
7787 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);
7788         YY_BREAK
7789 case 323:
7790 /* rule 323 can match eol */
7791 YY_RULE_SETUP
7792 if (surfxml_cabinet_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cabinet>");} surfxml_cabinet_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_power);
7793         YY_BREAK
7794 case 324:
7795 /* rule 324 can match eol */
7796 YY_RULE_SETUP
7797 if (surfxml_cabinet_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_cabinet>");}  surfxml_cabinet_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_power);
7798         YY_BREAK
7799 case 325:
7800 /* rule 325 can match eol */
7801 YY_RULE_SETUP
7802 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);
7803         YY_BREAK
7804 case 326:
7805 /* rule 326 can match eol */
7806 YY_RULE_SETUP
7807 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);
7808         YY_BREAK
7809 case 327:
7810 /* rule 327 can match eol */
7811 YY_RULE_SETUP
7812 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);
7813         YY_BREAK
7814 case 328:
7815 /* rule 328 can match eol */
7816 YY_RULE_SETUP
7817 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);
7818         YY_BREAK
7819 case 329:
7820 YY_RULE_SETUP
7821 {
7822   if (!AX_surfxml_cabinet_id) FAIL("Required attribute `id' not set for `cabinet' element.");
7823   if (!AX_surfxml_cabinet_prefix) FAIL("Required attribute `prefix' not set for `cabinet' element.");
7824   if (!AX_surfxml_cabinet_suffix) FAIL("Required attribute `suffix' not set for `cabinet' element.");
7825   if (!AX_surfxml_cabinet_radical) FAIL("Required attribute `radical' not set for `cabinet' element.");
7826   if (!AX_surfxml_cabinet_power) FAIL("Required attribute `power' not set for `cabinet' element.");
7827   if (!AX_surfxml_cabinet_bw) FAIL("Required attribute `bw' not set for `cabinet' element.");
7828   if (!AX_surfxml_cabinet_lat) FAIL("Required attribute `lat' not set for `cabinet' element.");
7829   LEAVE; STag_surfxml_cabinet();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cabinet);
7830  }
7831         YY_BREAK
7832 case 330:
7833 YY_RULE_SETUP
7834 {
7835   if (!AX_surfxml_cabinet_id) FAIL("Required attribute `id' not set for `cabinet' element.");
7836   if (!AX_surfxml_cabinet_prefix) FAIL("Required attribute `prefix' not set for `cabinet' element.");
7837   if (!AX_surfxml_cabinet_suffix) FAIL("Required attribute `suffix' not set for `cabinet' element.");
7838   if (!AX_surfxml_cabinet_radical) FAIL("Required attribute `radical' not set for `cabinet' element.");
7839   if (!AX_surfxml_cabinet_power) FAIL("Required attribute `power' not set for `cabinet' element.");
7840   if (!AX_surfxml_cabinet_bw) FAIL("Required attribute `bw' not set for `cabinet' element.");
7841   if (!AX_surfxml_cabinet_lat) FAIL("Required attribute `lat' not set for `cabinet' element.");
7842   LEAVE; STag_surfxml_cabinet(); surfxml_pcdata_ix = 0; ETag_surfxml_cabinet(); popbuffer(); /* attribute */
7843   switch (YY_START) {
7844    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;
7845    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7846    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;
7847   }
7848  }
7849         YY_BREAK
7850 case 331:
7851 YY_RULE_SETUP
7852 FAIL("Unexpected character `%c' in attribute list of cabinet element.", surf_parse_text[0]);
7853         YY_BREAK
7854 case 332:
7855 YY_RULE_SETUP
7856 FAIL("Bad attribute `%s' in `cabinet' element start tag.",surf_parse_text);
7857         YY_BREAK
7858 case YY_STATE_EOF(AL_surfxml_cabinet):
7859 FAIL("EOF in attribute list of `cabinet' element.");
7860         YY_BREAK
7861
7862 case 333:
7863 /* rule 333 can match eol */
7864 YY_RULE_SETUP
7865 {
7866   LEAVE;
7867   ETag_surfxml_cabinet();
7868   popbuffer(); /* attribute */
7869   switch (YY_START) {
7870    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;
7871    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7872    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;
7873   }
7874  }
7875         YY_BREAK
7876 case 334:
7877 /* rule 334 can match eol */
7878 YY_RULE_SETUP
7879 FAIL("Unexpected end-tag `%s': `</cabinet>' expected.",surf_parse_text);
7880         YY_BREAK
7881 case 335:
7882 YY_RULE_SETUP
7883 FAIL("Unexpected character `%c': `</cabinet>' expected.",surf_parse_text[0]);
7884         YY_BREAK
7885 case YY_STATE_EOF(E_surfxml_cabinet):
7886 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</cabinet>' expected.");
7887         YY_BREAK
7888
7889 case 336:
7890 /* rule 336 can match eol */
7891 YY_RULE_SETUP
7892 FAIL("Starting tag <peer> is not allowed here.");
7893         YY_BREAK
7894 case 337:
7895 /* rule 337 can match eol */
7896 YY_RULE_SETUP
7897 {
7898   AX_surfxml_peer_id = 0;
7899   surfxml_peer_id_isset = 0;
7900   AX_surfxml_peer_power = 0;
7901   surfxml_peer_power_isset = 0;
7902   AX_surfxml_peer_bw___in = 0;
7903   surfxml_peer_bw___in_isset = 0;
7904   AX_surfxml_peer_bw___out = 0;
7905   surfxml_peer_bw___out_isset = 0;
7906   AX_surfxml_peer_lat = 0;
7907   surfxml_peer_lat_isset = 0;
7908   AX_surfxml_peer_coordinates = 0;
7909   surfxml_peer_coordinates_isset = 0;
7910   AX_surfxml_peer_availability___file = 0;
7911   surfxml_peer_availability___file_isset = 0;
7912   AX_surfxml_peer_state___file = 0;
7913   surfxml_peer_state___file_isset = 0;
7914   ENTER(AL_surfxml_peer); pushbuffer(0);
7915   }
7916         YY_BREAK
7917
7918 case 338:
7919 /* rule 338 can match eol */
7920 YY_RULE_SETUP
7921 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);
7922         YY_BREAK
7923 case 339:
7924 /* rule 339 can match eol */
7925 YY_RULE_SETUP
7926 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);
7927         YY_BREAK
7928 case 340:
7929 /* rule 340 can match eol */
7930 YY_RULE_SETUP
7931 if (surfxml_peer_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_peer>");} surfxml_peer_power_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_power);
7932         YY_BREAK
7933 case 341:
7934 /* rule 341 can match eol */
7935 YY_RULE_SETUP
7936 if (surfxml_peer_power_isset != 0) {FAIL("Multiple definition of attribute power in <surfxml_peer>");}  surfxml_peer_power_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_power);
7937         YY_BREAK
7938 case 342:
7939 /* rule 342 can match eol */
7940 YY_RULE_SETUP
7941 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);
7942         YY_BREAK
7943 case 343:
7944 /* rule 343 can match eol */
7945 YY_RULE_SETUP
7946 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);
7947         YY_BREAK
7948 case 344:
7949 /* rule 344 can match eol */
7950 YY_RULE_SETUP
7951 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);
7952         YY_BREAK
7953 case 345:
7954 /* rule 345 can match eol */
7955 YY_RULE_SETUP
7956 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);
7957         YY_BREAK
7958 case 346:
7959 /* rule 346 can match eol */
7960 YY_RULE_SETUP
7961 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);
7962         YY_BREAK
7963 case 347:
7964 /* rule 347 can match eol */
7965 YY_RULE_SETUP
7966 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);
7967         YY_BREAK
7968 case 348:
7969 /* rule 348 can match eol */
7970 YY_RULE_SETUP
7971 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);
7972         YY_BREAK
7973 case 349:
7974 /* rule 349 can match eol */
7975 YY_RULE_SETUP
7976 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);
7977         YY_BREAK
7978 case 350:
7979 /* rule 350 can match eol */
7980 YY_RULE_SETUP
7981 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);
7982         YY_BREAK
7983 case 351:
7984 /* rule 351 can match eol */
7985 YY_RULE_SETUP
7986 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);
7987         YY_BREAK
7988 case 352:
7989 /* rule 352 can match eol */
7990 YY_RULE_SETUP
7991 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);
7992         YY_BREAK
7993 case 353:
7994 /* rule 353 can match eol */
7995 YY_RULE_SETUP
7996 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);
7997         YY_BREAK
7998 case 354:
7999 YY_RULE_SETUP
8000 {
8001   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
8002   if (!AX_surfxml_peer_power) FAIL("Required attribute `power' not set for `peer' element.");
8003   if (!AX_surfxml_peer_bw___in) FAIL("Required attribute `bw_in' not set for `peer' element.");
8004   if (!AX_surfxml_peer_bw___out) FAIL("Required attribute `bw_out' not set for `peer' element.");
8005   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
8006   LEAVE; STag_surfxml_peer();surfxml_pcdata_ix = 0; ENTER(E_surfxml_peer);
8007  }
8008         YY_BREAK
8009 case 355:
8010 YY_RULE_SETUP
8011 {
8012   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
8013   if (!AX_surfxml_peer_power) FAIL("Required attribute `power' not set for `peer' element.");
8014   if (!AX_surfxml_peer_bw___in) FAIL("Required attribute `bw_in' not set for `peer' element.");
8015   if (!AX_surfxml_peer_bw___out) FAIL("Required attribute `bw_out' not set for `peer' element.");
8016   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
8017   LEAVE; STag_surfxml_peer(); surfxml_pcdata_ix = 0; ETag_surfxml_peer(); popbuffer(); /* attribute */
8018   switch (YY_START) {
8019    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;
8020    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
8021    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;
8022   }
8023  }
8024         YY_BREAK
8025 case 356:
8026 YY_RULE_SETUP
8027 FAIL("Unexpected character `%c' in attribute list of peer element.", surf_parse_text[0]);
8028         YY_BREAK
8029 case 357:
8030 YY_RULE_SETUP
8031 FAIL("Bad attribute `%s' in `peer' element start tag.",surf_parse_text);
8032         YY_BREAK
8033 case YY_STATE_EOF(AL_surfxml_peer):
8034 FAIL("EOF in attribute list of `peer' element.");
8035         YY_BREAK
8036
8037 case 358:
8038 /* rule 358 can match eol */
8039 YY_RULE_SETUP
8040 {
8041   LEAVE;
8042   ETag_surfxml_peer();
8043   popbuffer(); /* attribute */
8044   switch (YY_START) {
8045    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;
8046    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
8047    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;
8048   }
8049  }
8050         YY_BREAK
8051 case 359:
8052 /* rule 359 can match eol */
8053 YY_RULE_SETUP
8054 FAIL("Unexpected end-tag `%s': `</peer>' expected.",surf_parse_text);
8055         YY_BREAK
8056 case 360:
8057 YY_RULE_SETUP
8058 FAIL("Unexpected character `%c': `</peer>' expected.",surf_parse_text[0]);
8059         YY_BREAK
8060 case YY_STATE_EOF(E_surfxml_peer):
8061 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</peer>' expected.");
8062         YY_BREAK
8063
8064 case 361:
8065 /* rule 361 can match eol */
8066 YY_RULE_SETUP
8067 FAIL("Starting tag <router> is not allowed here.");
8068         YY_BREAK
8069 case 362:
8070 /* rule 362 can match eol */
8071 YY_RULE_SETUP
8072 {
8073   AX_surfxml_router_id = 0;
8074   surfxml_router_id_isset = 0;
8075   AX_surfxml_router_coordinates = 0;
8076   surfxml_router_coordinates_isset = 0;
8077   ENTER(AL_surfxml_router); pushbuffer(0);
8078   }
8079         YY_BREAK
8080
8081 case 363:
8082 /* rule 363 can match eol */
8083 YY_RULE_SETUP
8084 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);
8085         YY_BREAK
8086 case 364:
8087 /* rule 364 can match eol */
8088 YY_RULE_SETUP
8089 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);
8090         YY_BREAK
8091 case 365:
8092 /* rule 365 can match eol */
8093 YY_RULE_SETUP
8094 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);
8095         YY_BREAK
8096 case 366:
8097 /* rule 366 can match eol */
8098 YY_RULE_SETUP
8099 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);
8100         YY_BREAK
8101 case 367:
8102 YY_RULE_SETUP
8103 {
8104   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
8105   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
8106  }
8107         YY_BREAK
8108 case 368:
8109 YY_RULE_SETUP
8110 {
8111   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
8112   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
8113   switch (YY_START) {
8114    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;
8115   }
8116  }
8117         YY_BREAK
8118 case 369:
8119 YY_RULE_SETUP
8120 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
8121         YY_BREAK
8122 case 370:
8123 YY_RULE_SETUP
8124 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
8125         YY_BREAK
8126 case YY_STATE_EOF(AL_surfxml_router):
8127 FAIL("EOF in attribute list of `router' element.");
8128         YY_BREAK
8129
8130 case 371:
8131 /* rule 371 can match eol */
8132 YY_RULE_SETUP
8133 {
8134   LEAVE;
8135   ETag_surfxml_router();
8136   popbuffer(); /* attribute */
8137   switch (YY_START) {
8138    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;
8139   }
8140  }
8141         YY_BREAK
8142 case 372:
8143 /* rule 372 can match eol */
8144 YY_RULE_SETUP
8145 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
8146         YY_BREAK
8147 case 373:
8148 YY_RULE_SETUP
8149 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
8150         YY_BREAK
8151 case YY_STATE_EOF(E_surfxml_router):
8152 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</router>' expected.");
8153         YY_BREAK
8154
8155 case 374:
8156 /* rule 374 can match eol */
8157 YY_RULE_SETUP
8158 FAIL("Starting tag <backbone> is not allowed here.");
8159         YY_BREAK
8160 case 375:
8161 /* rule 375 can match eol */
8162 YY_RULE_SETUP
8163 {
8164   AX_surfxml_backbone_id = 0;
8165   surfxml_backbone_id_isset = 0;
8166   AX_surfxml_backbone_bandwidth = 0;
8167   surfxml_backbone_bandwidth_isset = 0;
8168   AX_surfxml_backbone_latency = 0;
8169   surfxml_backbone_latency_isset = 0;
8170   ENTER(AL_surfxml_backbone); pushbuffer(0);
8171   }
8172         YY_BREAK
8173
8174 case 376:
8175 /* rule 376 can match eol */
8176 YY_RULE_SETUP
8177 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);
8178         YY_BREAK
8179 case 377:
8180 /* rule 377 can match eol */
8181 YY_RULE_SETUP
8182 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);
8183         YY_BREAK
8184 case 378:
8185 /* rule 378 can match eol */
8186 YY_RULE_SETUP
8187 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);
8188         YY_BREAK
8189 case 379:
8190 /* rule 379 can match eol */
8191 YY_RULE_SETUP
8192 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);
8193         YY_BREAK
8194 case 380:
8195 /* rule 380 can match eol */
8196 YY_RULE_SETUP
8197 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);
8198         YY_BREAK
8199 case 381:
8200 /* rule 381 can match eol */
8201 YY_RULE_SETUP
8202 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);
8203         YY_BREAK
8204 case 382:
8205 YY_RULE_SETUP
8206 {
8207   if (!AX_surfxml_backbone_id) FAIL("Required attribute `id' not set for `backbone' element.");
8208   if (!AX_surfxml_backbone_bandwidth) FAIL("Required attribute `bandwidth' not set for `backbone' element.");
8209   if (!AX_surfxml_backbone_latency) FAIL("Required attribute `latency' not set for `backbone' element.");
8210   LEAVE; STag_surfxml_backbone();surfxml_pcdata_ix = 0; ENTER(E_surfxml_backbone);
8211  }
8212         YY_BREAK
8213 case 383:
8214 YY_RULE_SETUP
8215 {
8216   if (!AX_surfxml_backbone_id) FAIL("Required attribute `id' not set for `backbone' element.");
8217   if (!AX_surfxml_backbone_bandwidth) FAIL("Required attribute `bandwidth' not set for `backbone' element.");
8218   if (!AX_surfxml_backbone_latency) FAIL("Required attribute `latency' not set for `backbone' element.");
8219   LEAVE; STag_surfxml_backbone(); surfxml_pcdata_ix = 0; ETag_surfxml_backbone(); popbuffer(); /* attribute */
8220   switch (YY_START) {
8221    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;
8222   }
8223  }
8224         YY_BREAK
8225 case 384:
8226 YY_RULE_SETUP
8227 FAIL("Unexpected character `%c' in attribute list of backbone element.", surf_parse_text[0]);
8228         YY_BREAK
8229 case 385:
8230 YY_RULE_SETUP
8231 FAIL("Bad attribute `%s' in `backbone' element start tag.",surf_parse_text);
8232         YY_BREAK
8233 case YY_STATE_EOF(AL_surfxml_backbone):
8234 FAIL("EOF in attribute list of `backbone' element.");
8235         YY_BREAK
8236
8237 case 386:
8238 /* rule 386 can match eol */
8239 YY_RULE_SETUP
8240 {
8241   LEAVE;
8242   ETag_surfxml_backbone();
8243   popbuffer(); /* attribute */
8244   switch (YY_START) {
8245    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;
8246   }
8247  }
8248         YY_BREAK
8249 case 387:
8250 /* rule 387 can match eol */
8251 YY_RULE_SETUP
8252 FAIL("Unexpected end-tag `%s': `</backbone>' expected.",surf_parse_text);
8253         YY_BREAK
8254 case 388:
8255 YY_RULE_SETUP
8256 FAIL("Unexpected character `%c': `</backbone>' expected.",surf_parse_text[0]);
8257         YY_BREAK
8258 case YY_STATE_EOF(E_surfxml_backbone):
8259 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</backbone>' expected.");
8260         YY_BREAK
8261
8262 case 389:
8263 /* rule 389 can match eol */
8264 YY_RULE_SETUP
8265 FAIL("Starting tag <link> is not allowed here.");
8266         YY_BREAK
8267 case 390:
8268 /* rule 390 can match eol */
8269 YY_RULE_SETUP
8270 {
8271   AX_surfxml_link_id = 0;
8272   surfxml_link_id_isset = 0;
8273   AX_surfxml_link_bandwidth = 0;
8274   surfxml_link_bandwidth_isset = 0;
8275   AX_surfxml_link_bandwidth___file = 0;
8276   surfxml_link_bandwidth___file_isset = 0;
8277   AX_surfxml_link_latency = 46;
8278   surfxml_link_latency_isset = 0;
8279   AX_surfxml_link_latency___file = 0;
8280   surfxml_link_latency___file_isset = 0;
8281   AX_surfxml_link_state = A_surfxml_link_state_ON;
8282   surfxml_link_state_isset = 0;
8283   AX_surfxml_link_state___file = 0;
8284   surfxml_link_state___file_isset = 0;
8285   AX_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_SHARED;
8286   surfxml_link_sharing___policy_isset = 0;
8287   ENTER(AL_surfxml_link); pushbuffer(0);
8288   }
8289         YY_BREAK
8290
8291 case 391:
8292 /* rule 391 can match eol */
8293 YY_RULE_SETUP
8294 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);
8295         YY_BREAK
8296 case 392:
8297 /* rule 392 can match eol */
8298 YY_RULE_SETUP
8299 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);
8300         YY_BREAK
8301 case 393:
8302 /* rule 393 can match eol */
8303 YY_RULE_SETUP
8304 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);
8305         YY_BREAK
8306 case 394:
8307 /* rule 394 can match eol */
8308 YY_RULE_SETUP
8309 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);
8310         YY_BREAK
8311 case 395:
8312 /* rule 395 can match eol */
8313 YY_RULE_SETUP
8314 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);
8315         YY_BREAK
8316 case 396:
8317 /* rule 396 can match eol */
8318 YY_RULE_SETUP
8319 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);
8320         YY_BREAK
8321 case 397:
8322 /* rule 397 can match eol */
8323 YY_RULE_SETUP
8324 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);
8325         YY_BREAK
8326 case 398:
8327 /* rule 398 can match eol */
8328 YY_RULE_SETUP
8329 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);
8330         YY_BREAK
8331 case 399:
8332 /* rule 399 can match eol */
8333 YY_RULE_SETUP
8334 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);
8335         YY_BREAK
8336 case 400:
8337 /* rule 400 can match eol */
8338 YY_RULE_SETUP
8339 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);
8340         YY_BREAK
8341 case 401:
8342 /* rule 401 can match eol */
8343 case 402:
8344 /* rule 402 can match eol */
8345 YY_RULE_SETUP
8346 A_surfxml_link_state = A_surfxml_link_state_ON;
8347         YY_BREAK
8348 case 403:
8349 /* rule 403 can match eol */
8350 case 404:
8351 /* rule 404 can match eol */
8352 YY_RULE_SETUP
8353 A_surfxml_link_state = A_surfxml_link_state_OFF;
8354         YY_BREAK
8355 case 405:
8356 /* rule 405 can match eol */
8357 YY_RULE_SETUP
8358 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);
8359         YY_BREAK
8360 case 406:
8361 /* rule 406 can match eol */
8362 YY_RULE_SETUP
8363 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);
8364         YY_BREAK
8365 case 407:
8366 /* rule 407 can match eol */
8367 case 408:
8368 /* rule 408 can match eol */
8369 YY_RULE_SETUP
8370 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_SHARED;
8371         YY_BREAK
8372 case 409:
8373 /* rule 409 can match eol */
8374 case 410:
8375 /* rule 410 can match eol */
8376 YY_RULE_SETUP
8377 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_FATPIPE;
8378         YY_BREAK
8379 case 411:
8380 /* rule 411 can match eol */
8381 case 412:
8382 /* rule 412 can match eol */
8383 YY_RULE_SETUP
8384 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_FULLDUPLEX;
8385         YY_BREAK
8386 case 413:
8387 YY_RULE_SETUP
8388 {
8389   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
8390   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
8391   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
8392  }
8393         YY_BREAK
8394 case 414:
8395 YY_RULE_SETUP
8396 {
8397   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
8398   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
8399   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
8400   switch (YY_START) {
8401    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;
8402   }
8403  }
8404         YY_BREAK
8405 case 415:
8406 YY_RULE_SETUP
8407 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
8408         YY_BREAK
8409 case 416:
8410 YY_RULE_SETUP
8411 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
8412         YY_BREAK
8413 case YY_STATE_EOF(AL_surfxml_link):
8414 FAIL("EOF in attribute list of `link' element.");
8415         YY_BREAK
8416
8417 case 417:
8418 /* rule 417 can match eol */
8419 YY_RULE_SETUP
8420 {
8421   LEAVE;
8422   ETag_surfxml_link();
8423   popbuffer(); /* attribute */
8424   switch (YY_START) {
8425    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;
8426   }
8427  }
8428         YY_BREAK
8429 case 418:
8430 /* rule 418 can match eol */
8431 YY_RULE_SETUP
8432 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
8433         YY_BREAK
8434 case 419:
8435 YY_RULE_SETUP
8436 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
8437         YY_BREAK
8438 case YY_STATE_EOF(S_surfxml_link):
8439 case YY_STATE_EOF(S_surfxml_link_2):
8440 case YY_STATE_EOF(E_surfxml_link):
8441 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link>' expected.");
8442         YY_BREAK
8443
8444 case 420:
8445 /* rule 420 can match eol */
8446 YY_RULE_SETUP
8447 FAIL("Starting tag <route> is not allowed here.");
8448         YY_BREAK
8449 case 421:
8450 /* rule 421 can match eol */
8451 YY_RULE_SETUP
8452 {
8453   AX_surfxml_route_src = 0;
8454   surfxml_route_src_isset = 0;
8455   AX_surfxml_route_dst = 0;
8456   surfxml_route_dst_isset = 0;
8457   AX_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
8458   surfxml_route_symmetrical_isset = 0;
8459   ENTER(AL_surfxml_route); pushbuffer(0);
8460   }
8461         YY_BREAK
8462
8463 case 422:
8464 /* rule 422 can match eol */
8465 YY_RULE_SETUP
8466 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);
8467         YY_BREAK
8468 case 423:
8469 /* rule 423 can match eol */
8470 YY_RULE_SETUP
8471 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);
8472         YY_BREAK
8473 case 424:
8474 /* rule 424 can match eol */
8475 YY_RULE_SETUP
8476 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);
8477         YY_BREAK
8478 case 425:
8479 /* rule 425 can match eol */
8480 YY_RULE_SETUP
8481 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);
8482         YY_BREAK
8483 case 426:
8484 /* rule 426 can match eol */
8485 case 427:
8486 /* rule 427 can match eol */
8487 YY_RULE_SETUP
8488 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
8489         YY_BREAK
8490 case 428:
8491 /* rule 428 can match eol */
8492 case 429:
8493 /* rule 429 can match eol */
8494 YY_RULE_SETUP
8495 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_NO;
8496         YY_BREAK
8497 case 430:
8498 YY_RULE_SETUP
8499 {
8500   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
8501   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
8502   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
8503  }
8504         YY_BREAK
8505 case 431:
8506 YY_RULE_SETUP
8507 {
8508   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
8509   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
8510   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
8511   switch (YY_START) {
8512    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;
8513   }
8514  }
8515         YY_BREAK
8516 case 432:
8517 YY_RULE_SETUP
8518 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
8519         YY_BREAK
8520 case 433:
8521 YY_RULE_SETUP
8522 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
8523         YY_BREAK
8524 case YY_STATE_EOF(AL_surfxml_route):
8525 FAIL("EOF in attribute list of `route' element.");
8526         YY_BREAK
8527
8528 case 434:
8529 /* rule 434 can match eol */
8530 YY_RULE_SETUP
8531 {
8532   LEAVE;
8533   ETag_surfxml_route();
8534   popbuffer(); /* attribute */
8535   switch (YY_START) {
8536    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;
8537   }
8538  }
8539         YY_BREAK
8540 case 435:
8541 /* rule 435 can match eol */
8542 YY_RULE_SETUP
8543 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
8544         YY_BREAK
8545 case 436:
8546 YY_RULE_SETUP
8547 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
8548         YY_BREAK
8549 case YY_STATE_EOF(S_surfxml_route_2):
8550 case YY_STATE_EOF(E_surfxml_route):
8551 case YY_STATE_EOF(S_surfxml_route):
8552 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</route>' expected.");
8553         YY_BREAK
8554
8555 case 437:
8556 /* rule 437 can match eol */
8557 YY_RULE_SETUP
8558 FAIL("Starting tag <ASroute> is not allowed here.");
8559         YY_BREAK
8560 case 438:
8561 /* rule 438 can match eol */
8562 YY_RULE_SETUP
8563 {
8564   AX_surfxml_ASroute_src = 0;
8565   surfxml_ASroute_src_isset = 0;
8566   AX_surfxml_ASroute_dst = 0;
8567   surfxml_ASroute_dst_isset = 0;
8568   AX_surfxml_ASroute_gw___src = 0;
8569   surfxml_ASroute_gw___src_isset = 0;
8570   AX_surfxml_ASroute_gw___dst = 0;
8571   surfxml_ASroute_gw___dst_isset = 0;
8572   AX_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
8573   surfxml_ASroute_symmetrical_isset = 0;
8574   ENTER(AL_surfxml_ASroute); pushbuffer(0);
8575   }
8576         YY_BREAK
8577
8578 case 439:
8579 /* rule 439 can match eol */
8580 YY_RULE_SETUP
8581 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);
8582         YY_BREAK
8583 case 440:
8584 /* rule 440 can match eol */
8585 YY_RULE_SETUP
8586 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);
8587         YY_BREAK
8588 case 441:
8589 /* rule 441 can match eol */
8590 YY_RULE_SETUP
8591 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);
8592         YY_BREAK
8593 case 442:
8594 /* rule 442 can match eol */
8595 YY_RULE_SETUP
8596 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);
8597         YY_BREAK
8598 case 443:
8599 /* rule 443 can match eol */
8600 YY_RULE_SETUP
8601 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);
8602         YY_BREAK
8603 case 444:
8604 /* rule 444 can match eol */
8605 YY_RULE_SETUP
8606 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);
8607         YY_BREAK
8608 case 445:
8609 /* rule 445 can match eol */
8610 YY_RULE_SETUP
8611 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);
8612         YY_BREAK
8613 case 446:
8614 /* rule 446 can match eol */
8615 YY_RULE_SETUP
8616 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);
8617         YY_BREAK
8618 case 447:
8619 /* rule 447 can match eol */
8620 case 448:
8621 /* rule 448 can match eol */
8622 YY_RULE_SETUP
8623 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
8624         YY_BREAK
8625 case 449:
8626 /* rule 449 can match eol */
8627 case 450:
8628 /* rule 450 can match eol */
8629 YY_RULE_SETUP
8630 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_NO;
8631         YY_BREAK
8632 case 451:
8633 YY_RULE_SETUP
8634 {
8635   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
8636   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
8637   if (!AX_surfxml_ASroute_gw___src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
8638   if (!AX_surfxml_ASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
8639   LEAVE; STag_surfxml_ASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_ASroute);
8640  }
8641         YY_BREAK
8642 case 452:
8643 YY_RULE_SETUP
8644 {
8645   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
8646   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
8647   if (!AX_surfxml_ASroute_gw___src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
8648   if (!AX_surfxml_ASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
8649   LEAVE; STag_surfxml_ASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_ASroute(); popbuffer(); /* attribute */
8650   switch (YY_START) {
8651    case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
8652    case S_surfxml_AS: 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;
8653   }
8654  }
8655         YY_BREAK
8656 case 453:
8657 YY_RULE_SETUP
8658 FAIL("Unexpected character `%c' in attribute list of ASroute element.", surf_parse_text[0]);
8659         YY_BREAK
8660 case 454:
8661 YY_RULE_SETUP
8662 FAIL("Bad attribute `%s' in `ASroute' element start tag.",surf_parse_text);
8663         YY_BREAK
8664 case YY_STATE_EOF(AL_surfxml_ASroute):
8665 FAIL("EOF in attribute list of `ASroute' element.");
8666         YY_BREAK
8667
8668 case 455:
8669 /* rule 455 can match eol */
8670 YY_RULE_SETUP
8671 {
8672   LEAVE;
8673   ETag_surfxml_ASroute();
8674   popbuffer(); /* attribute */
8675   switch (YY_START) {
8676    case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
8677    case S_surfxml_AS: 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;
8678   }
8679  }
8680         YY_BREAK
8681 case 456:
8682 /* rule 456 can match eol */
8683 YY_RULE_SETUP
8684 FAIL("Unexpected end-tag `%s': `</ASroute>' expected.",surf_parse_text);
8685         YY_BREAK
8686 case 457:
8687 YY_RULE_SETUP
8688 FAIL("Unexpected character `%c': `</ASroute>' expected.",surf_parse_text[0]);
8689         YY_BREAK
8690 case YY_STATE_EOF(S_surfxml_ASroute_2):
8691 case YY_STATE_EOF(S_surfxml_ASroute):
8692 case YY_STATE_EOF(E_surfxml_ASroute):
8693 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</ASroute>' expected.");
8694         YY_BREAK
8695
8696 case 458:
8697 /* rule 458 can match eol */
8698 YY_RULE_SETUP
8699 FAIL("Starting tag <link_ctn> is not allowed here.");
8700         YY_BREAK
8701 case 459:
8702 /* rule 459 can match eol */
8703 YY_RULE_SETUP
8704 {
8705   AX_surfxml_link___ctn_id = 0;
8706   surfxml_link___ctn_id_isset = 0;
8707   AX_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_NONE;
8708   surfxml_link___ctn_direction_isset = 0;
8709   ENTER(AL_surfxml_link___ctn); pushbuffer(0);
8710   }
8711         YY_BREAK
8712
8713 case 460:
8714 /* rule 460 can match eol */
8715 YY_RULE_SETUP
8716 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);
8717         YY_BREAK
8718 case 461:
8719 /* rule 461 can match eol */
8720 YY_RULE_SETUP
8721 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);
8722         YY_BREAK
8723 case 462:
8724 /* rule 462 can match eol */
8725 case 463:
8726 /* rule 463 can match eol */
8727 YY_RULE_SETUP
8728 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_UP;
8729         YY_BREAK
8730 case 464:
8731 /* rule 464 can match eol */
8732 case 465:
8733 /* rule 465 can match eol */
8734 YY_RULE_SETUP
8735 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_DOWN;
8736         YY_BREAK
8737 case 466:
8738 /* rule 466 can match eol */
8739 case 467:
8740 /* rule 467 can match eol */
8741 YY_RULE_SETUP
8742 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_NONE;
8743         YY_BREAK
8744 case 468:
8745 YY_RULE_SETUP
8746 {
8747   if (!AX_surfxml_link___ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
8748   LEAVE; STag_surfxml_link___ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link___ctn);
8749  }
8750         YY_BREAK
8751 case 469:
8752 YY_RULE_SETUP
8753 {
8754   if (!AX_surfxml_link___ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
8755   LEAVE; STag_surfxml_link___ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link___ctn(); popbuffer(); /* attribute */
8756   switch (YY_START) {
8757    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
8758    case S_surfxml_bypassASroute: case S_surfxml_bypassASroute_1: case S_surfxml_bypassASroute_2: SET(S_surfxml_bypassASroute_2); break;
8759    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_1: case S_surfxml_bypassRoute_2: SET(S_surfxml_bypassRoute_2); break;
8760    case S_surfxml_route: case S_surfxml_route_1: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
8761   }
8762  }
8763         YY_BREAK
8764 case 470:
8765 YY_RULE_SETUP
8766 FAIL("Unexpected character `%c' in attribute list of link_ctn element.", surf_parse_text[0]);
8767         YY_BREAK
8768 case 471:
8769 YY_RULE_SETUP
8770 FAIL("Bad attribute `%s' in `link_ctn' element start tag.",surf_parse_text);
8771         YY_BREAK
8772 case YY_STATE_EOF(AL_surfxml_link___ctn):
8773 FAIL("EOF in attribute list of `link_ctn' element.");
8774         YY_BREAK
8775
8776 case 472:
8777 /* rule 472 can match eol */
8778 YY_RULE_SETUP
8779 {
8780   LEAVE;
8781   ETag_surfxml_link___ctn();
8782   popbuffer(); /* attribute */
8783   switch (YY_START) {
8784    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
8785    case S_surfxml_bypassASroute: case S_surfxml_bypassASroute_1: case S_surfxml_bypassASroute_2: SET(S_surfxml_bypassASroute_2); break;
8786    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_1: case S_surfxml_bypassRoute_2: SET(S_surfxml_bypassRoute_2); break;
8787    case S_surfxml_route: case S_surfxml_route_1: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
8788   }
8789  }
8790         YY_BREAK
8791 case 473:
8792 /* rule 473 can match eol */
8793 YY_RULE_SETUP
8794 FAIL("Unexpected end-tag `%s': `</link_ctn>' expected.",surf_parse_text);
8795         YY_BREAK
8796 case 474:
8797 YY_RULE_SETUP
8798 FAIL("Unexpected character `%c': `</link_ctn>' expected.",surf_parse_text[0]);
8799         YY_BREAK
8800 case YY_STATE_EOF(E_surfxml_link___ctn):
8801 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link_ctn>' expected.");
8802         YY_BREAK
8803
8804 case 475:
8805 /* rule 475 can match eol */
8806 YY_RULE_SETUP
8807 FAIL("Starting tag <bypassRoute> is not allowed here.");
8808         YY_BREAK
8809 case 476:
8810 /* rule 476 can match eol */
8811 YY_RULE_SETUP
8812 {
8813   AX_surfxml_bypassRoute_src = 0;
8814   surfxml_bypassRoute_src_isset = 0;
8815   AX_surfxml_bypassRoute_dst = 0;
8816   surfxml_bypassRoute_dst_isset = 0;
8817   ENTER(AL_surfxml_bypassRoute); pushbuffer(0);
8818   }
8819         YY_BREAK
8820
8821 case 477:
8822 /* rule 477 can match eol */
8823 YY_RULE_SETUP
8824 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);
8825         YY_BREAK
8826 case 478:
8827 /* rule 478 can match eol */
8828 YY_RULE_SETUP
8829 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);
8830         YY_BREAK
8831 case 479:
8832 /* rule 479 can match eol */
8833 YY_RULE_SETUP
8834 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);
8835         YY_BREAK
8836 case 480:
8837 /* rule 480 can match eol */
8838 YY_RULE_SETUP
8839 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);
8840         YY_BREAK
8841 case 481:
8842 YY_RULE_SETUP
8843 {
8844   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
8845   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
8846   LEAVE; STag_surfxml_bypassRoute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassRoute);
8847  }
8848         YY_BREAK
8849 case 482:
8850 YY_RULE_SETUP
8851 {
8852   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
8853   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
8854   LEAVE; STag_surfxml_bypassRoute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassRoute(); popbuffer(); /* attribute */
8855   switch (YY_START) {
8856    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;
8857   }
8858  }
8859         YY_BREAK
8860 case 483:
8861 YY_RULE_SETUP
8862 FAIL("Unexpected character `%c' in attribute list of bypassRoute element.", surf_parse_text[0]);
8863         YY_BREAK
8864 case 484:
8865 YY_RULE_SETUP
8866 FAIL("Bad attribute `%s' in `bypassRoute' element start tag.",surf_parse_text);
8867         YY_BREAK
8868 case YY_STATE_EOF(AL_surfxml_bypassRoute):
8869 FAIL("EOF in attribute list of `bypassRoute' element.");
8870         YY_BREAK
8871
8872 case 485:
8873 /* rule 485 can match eol */
8874 YY_RULE_SETUP
8875 {
8876   LEAVE;
8877   ETag_surfxml_bypassRoute();
8878   popbuffer(); /* attribute */
8879   switch (YY_START) {
8880    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;
8881   }
8882  }
8883         YY_BREAK
8884 case 486:
8885 /* rule 486 can match eol */
8886 YY_RULE_SETUP
8887 FAIL("Unexpected end-tag `%s': `</bypassRoute>' expected.",surf_parse_text);
8888         YY_BREAK
8889 case 487:
8890 YY_RULE_SETUP
8891 FAIL("Unexpected character `%c': `</bypassRoute>' expected.",surf_parse_text[0]);
8892         YY_BREAK
8893 case YY_STATE_EOF(S_surfxml_bypassRoute_2):
8894 case YY_STATE_EOF(E_surfxml_bypassRoute):
8895 case YY_STATE_EOF(S_surfxml_bypassRoute):
8896 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</bypassRoute>' expected.");
8897         YY_BREAK
8898
8899 case 488:
8900 /* rule 488 can match eol */
8901 YY_RULE_SETUP
8902 FAIL("Starting tag <bypassASroute> is not allowed here.");
8903         YY_BREAK
8904 case 489:
8905 /* rule 489 can match eol */
8906 YY_RULE_SETUP
8907 {
8908   AX_surfxml_bypassASroute_src = 0;
8909   surfxml_bypassASroute_src_isset = 0;
8910   AX_surfxml_bypassASroute_dst = 0;
8911   surfxml_bypassASroute_dst_isset = 0;
8912   AX_surfxml_bypassASroute_gw___src = 0;
8913   surfxml_bypassASroute_gw___src_isset = 0;
8914   AX_surfxml_bypassASroute_gw___dst = 0;
8915   surfxml_bypassASroute_gw___dst_isset = 0;
8916   ENTER(AL_surfxml_bypassASroute); pushbuffer(0);
8917   }
8918         YY_BREAK
8919
8920 case 490:
8921 /* rule 490 can match eol */
8922 YY_RULE_SETUP
8923 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);
8924         YY_BREAK
8925 case 491:
8926 /* rule 491 can match eol */
8927 YY_RULE_SETUP
8928 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);
8929         YY_BREAK
8930 case 492:
8931 /* rule 492 can match eol */
8932 YY_RULE_SETUP
8933 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);
8934         YY_BREAK
8935 case 493:
8936 /* rule 493 can match eol */
8937 YY_RULE_SETUP
8938 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);
8939         YY_BREAK
8940 case 494:
8941 /* rule 494 can match eol */
8942 YY_RULE_SETUP
8943 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);
8944         YY_BREAK
8945 case 495:
8946 /* rule 495 can match eol */
8947 YY_RULE_SETUP
8948 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);
8949         YY_BREAK
8950 case 496:
8951 /* rule 496 can match eol */
8952 YY_RULE_SETUP
8953 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);
8954         YY_BREAK
8955 case 497:
8956 /* rule 497 can match eol */
8957 YY_RULE_SETUP
8958 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);
8959         YY_BREAK
8960 case 498:
8961 YY_RULE_SETUP
8962 {
8963   if (!AX_surfxml_bypassASroute_src) FAIL("Required attribute `src' not set for `bypassASroute' element.");
8964   if (!AX_surfxml_bypassASroute_dst) FAIL("Required attribute `dst' not set for `bypassASroute' element.");
8965   if (!AX_surfxml_bypassASroute_gw___src) FAIL("Required attribute `gw_src' not set for `bypassASroute' element.");
8966   if (!AX_surfxml_bypassASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `bypassASroute' element.");
8967   LEAVE; STag_surfxml_bypassASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassASroute);
8968  }
8969         YY_BREAK
8970 case 499:
8971 YY_RULE_SETUP
8972 {
8973   if (!AX_surfxml_bypassASroute_src) FAIL("Required attribute `src' not set for `bypassASroute' element.");
8974   if (!AX_surfxml_bypassASroute_dst) FAIL("Required attribute `dst' not set for `bypassASroute' element.");
8975   if (!AX_surfxml_bypassASroute_gw___src) FAIL("Required attribute `gw_src' not set for `bypassASroute' element.");
8976   if (!AX_surfxml_bypassASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `bypassASroute' element.");
8977   LEAVE; STag_surfxml_bypassASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassASroute(); popbuffer(); /* attribute */
8978   switch (YY_START) {
8979    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;
8980   }
8981  }
8982         YY_BREAK
8983 case 500:
8984 YY_RULE_SETUP
8985 FAIL("Unexpected character `%c' in attribute list of bypassASroute element.", surf_parse_text[0]);
8986         YY_BREAK
8987 case 501:
8988 YY_RULE_SETUP
8989 FAIL("Bad attribute `%s' in `bypassASroute' element start tag.",surf_parse_text);
8990         YY_BREAK
8991 case YY_STATE_EOF(AL_surfxml_bypassASroute):
8992 FAIL("EOF in attribute list of `bypassASroute' element.");
8993         YY_BREAK
8994
8995 case 502:
8996 /* rule 502 can match eol */
8997 YY_RULE_SETUP
8998 {
8999   LEAVE;
9000   ETag_surfxml_bypassASroute();
9001   popbuffer(); /* attribute */
9002   switch (YY_START) {
9003    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;
9004   }
9005  }
9006         YY_BREAK
9007 case 503:
9008 /* rule 503 can match eol */
9009 YY_RULE_SETUP
9010 FAIL("Unexpected end-tag `%s': `</bypassASroute>' expected.",surf_parse_text);
9011         YY_BREAK
9012 case 504:
9013 YY_RULE_SETUP
9014 FAIL("Unexpected character `%c': `</bypassASroute>' expected.",surf_parse_text[0]);
9015         YY_BREAK
9016 case YY_STATE_EOF(E_surfxml_bypassASroute):
9017 case YY_STATE_EOF(S_surfxml_bypassASroute_2):
9018 case YY_STATE_EOF(S_surfxml_bypassASroute):
9019 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</bypassASroute>' expected.");
9020         YY_BREAK
9021
9022 case 505:
9023 /* rule 505 can match eol */
9024 YY_RULE_SETUP
9025 FAIL("Starting tag <process> is not allowed here.");
9026         YY_BREAK
9027 case 506:
9028 /* rule 506 can match eol */
9029 YY_RULE_SETUP
9030 {
9031   AX_surfxml_process_host = 0;
9032   surfxml_process_host_isset = 0;
9033   AX_surfxml_process_function = 0;
9034   surfxml_process_function_isset = 0;
9035   AX_surfxml_process_start___time = 50;
9036   surfxml_process_start___time_isset = 0;
9037   AX_surfxml_process_kill___time = 55;
9038   surfxml_process_kill___time_isset = 0;
9039   AX_surfxml_process_on___failure = A_surfxml_process_on___failure_DIE;
9040   surfxml_process_on___failure_isset = 0;
9041   ENTER(AL_surfxml_process); pushbuffer(0);
9042   }
9043         YY_BREAK
9044
9045 case 507:
9046 /* rule 507 can match eol */
9047 YY_RULE_SETUP
9048 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);
9049         YY_BREAK
9050 case 508:
9051 /* rule 508 can match eol */
9052 YY_RULE_SETUP
9053 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);
9054         YY_BREAK
9055 case 509:
9056 /* rule 509 can match eol */
9057 YY_RULE_SETUP
9058 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);
9059         YY_BREAK
9060 case 510:
9061 /* rule 510 can match eol */
9062 YY_RULE_SETUP
9063 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);
9064         YY_BREAK
9065 case 511:
9066 /* rule 511 can match eol */
9067 YY_RULE_SETUP
9068 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);
9069         YY_BREAK
9070 case 512:
9071 /* rule 512 can match eol */
9072 YY_RULE_SETUP
9073 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);
9074         YY_BREAK
9075 case 513:
9076 /* rule 513 can match eol */
9077 YY_RULE_SETUP
9078 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);
9079         YY_BREAK
9080 case 514:
9081 /* rule 514 can match eol */
9082 YY_RULE_SETUP
9083 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);
9084         YY_BREAK
9085 case 515:
9086 /* rule 515 can match eol */
9087 case 516:
9088 /* rule 516 can match eol */
9089 YY_RULE_SETUP
9090 A_surfxml_process_on___failure = A_surfxml_process_on___failure_DIE;
9091         YY_BREAK
9092 case 517:
9093 /* rule 517 can match eol */
9094 case 518:
9095 /* rule 518 can match eol */
9096 YY_RULE_SETUP
9097 A_surfxml_process_on___failure = A_surfxml_process_on___failure_RESTART;
9098         YY_BREAK
9099 case 519:
9100 YY_RULE_SETUP
9101 {
9102   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
9103   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
9104   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
9105  }
9106         YY_BREAK
9107 case 520:
9108 YY_RULE_SETUP
9109 {
9110   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
9111   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
9112   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
9113   switch (YY_START) {
9114    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;
9115   }
9116  }
9117         YY_BREAK
9118 case 521:
9119 YY_RULE_SETUP
9120 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
9121         YY_BREAK
9122 case 522:
9123 YY_RULE_SETUP
9124 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
9125         YY_BREAK
9126 case YY_STATE_EOF(AL_surfxml_process):
9127 FAIL("EOF in attribute list of `process' element.");
9128         YY_BREAK
9129
9130 case 523:
9131 /* rule 523 can match eol */
9132 YY_RULE_SETUP
9133 {
9134   LEAVE;
9135   ETag_surfxml_process();
9136   popbuffer(); /* attribute */
9137   switch (YY_START) {
9138    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;
9139   }
9140  }
9141         YY_BREAK
9142 case 524:
9143 /* rule 524 can match eol */
9144 YY_RULE_SETUP
9145 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
9146         YY_BREAK
9147 case 525:
9148 YY_RULE_SETUP
9149 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
9150         YY_BREAK
9151 case YY_STATE_EOF(S_surfxml_process):
9152 case YY_STATE_EOF(E_surfxml_process):
9153 case YY_STATE_EOF(S_surfxml_process_2):
9154 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</process>' expected.");
9155         YY_BREAK
9156
9157 case 526:
9158 /* rule 526 can match eol */
9159 YY_RULE_SETUP
9160 FAIL("Starting tag <argument> is not allowed here.");
9161         YY_BREAK
9162 case 527:
9163 /* rule 527 can match eol */
9164 YY_RULE_SETUP
9165 {
9166   AX_surfxml_argument_value = 0;
9167   surfxml_argument_value_isset = 0;
9168   ENTER(AL_surfxml_argument); pushbuffer(0);
9169   }
9170         YY_BREAK
9171
9172 case 528:
9173 /* rule 528 can match eol */
9174 YY_RULE_SETUP
9175 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);
9176         YY_BREAK
9177 case 529:
9178 /* rule 529 can match eol */
9179 YY_RULE_SETUP
9180 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);
9181         YY_BREAK
9182 case 530:
9183 YY_RULE_SETUP
9184 {
9185   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
9186   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
9187  }
9188         YY_BREAK
9189 case 531:
9190 YY_RULE_SETUP
9191 {
9192   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
9193   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
9194   switch (YY_START) {
9195    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
9196   }
9197  }
9198         YY_BREAK
9199 case 532:
9200 YY_RULE_SETUP
9201 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
9202         YY_BREAK
9203 case 533:
9204 YY_RULE_SETUP
9205 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
9206         YY_BREAK
9207 case YY_STATE_EOF(AL_surfxml_argument):
9208 FAIL("EOF in attribute list of `argument' element.");
9209         YY_BREAK
9210
9211 case 534:
9212 /* rule 534 can match eol */
9213 YY_RULE_SETUP
9214 {
9215   LEAVE;
9216   ETag_surfxml_argument();
9217   popbuffer(); /* attribute */
9218   switch (YY_START) {
9219    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
9220   }
9221  }
9222         YY_BREAK
9223 case 535:
9224 /* rule 535 can match eol */
9225 YY_RULE_SETUP
9226 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
9227         YY_BREAK
9228 case 536:
9229 YY_RULE_SETUP
9230 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
9231         YY_BREAK
9232 case YY_STATE_EOF(E_surfxml_argument):
9233 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</argument>' expected.");
9234         YY_BREAK
9235
9236 case 537:
9237 /* rule 537 can match eol */
9238 YY_RULE_SETUP
9239 FAIL("Starting tag <config> is not allowed here.");
9240         YY_BREAK
9241 case 538:
9242 /* rule 538 can match eol */
9243 YY_RULE_SETUP
9244 {
9245   AX_surfxml_config_id = 0;
9246   surfxml_config_id_isset = 0;
9247   ENTER(AL_surfxml_config); pushbuffer(0);
9248   }
9249         YY_BREAK
9250
9251 case 539:
9252 /* rule 539 can match eol */
9253 YY_RULE_SETUP
9254 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);
9255         YY_BREAK
9256 case 540:
9257 /* rule 540 can match eol */
9258 YY_RULE_SETUP
9259 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);
9260         YY_BREAK
9261 case 541:
9262 YY_RULE_SETUP
9263 {
9264   LEAVE; STag_surfxml_config();surfxml_pcdata_ix = 0; ENTER(S_surfxml_config);
9265  }
9266         YY_BREAK
9267 case 542:
9268 YY_RULE_SETUP
9269 {
9270   LEAVE; STag_surfxml_config(); surfxml_pcdata_ix = 0; ETag_surfxml_config(); popbuffer(); /* attribute */
9271   switch (YY_START) {
9272    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
9273   }
9274  }
9275         YY_BREAK
9276 case 543:
9277 YY_RULE_SETUP
9278 FAIL("Unexpected character `%c' in attribute list of config element.", surf_parse_text[0]);
9279         YY_BREAK
9280 case 544:
9281 YY_RULE_SETUP
9282 FAIL("Bad attribute `%s' in `config' element start tag.",surf_parse_text);
9283         YY_BREAK
9284 case YY_STATE_EOF(AL_surfxml_config):
9285 FAIL("EOF in attribute list of `config' element.");
9286         YY_BREAK
9287
9288 case 545:
9289 /* rule 545 can match eol */
9290 YY_RULE_SETUP
9291 {
9292   LEAVE;
9293   ETag_surfxml_config();
9294   popbuffer(); /* attribute */
9295   switch (YY_START) {
9296    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
9297   }
9298  }
9299         YY_BREAK
9300 case 546:
9301 /* rule 546 can match eol */
9302 YY_RULE_SETUP
9303 FAIL("Unexpected end-tag `%s': `</config>' expected.",surf_parse_text);
9304         YY_BREAK
9305 case 547:
9306 YY_RULE_SETUP
9307 FAIL("Unexpected character `%c': `</config>' expected.",surf_parse_text[0]);
9308         YY_BREAK
9309 case YY_STATE_EOF(S_surfxml_config):
9310 case YY_STATE_EOF(S_surfxml_config_2):
9311 case YY_STATE_EOF(E_surfxml_config):
9312 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</config>' expected.");
9313         YY_BREAK
9314
9315 /* <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
9316   * <!-- <!ATTLIST prop key CDATA #REQUIRED> -->  */
9317 case 548:
9318 /* rule 548 can match eol */
9319 YY_RULE_SETUP
9320 FAIL("Starting tag <prop> is not allowed here.");
9321         YY_BREAK
9322 case 549:
9323 /* rule 549 can match eol */
9324 YY_RULE_SETUP
9325 {
9326   AX_surfxml_prop_id = 0;
9327   surfxml_prop_id_isset = 0;
9328   AX_surfxml_prop_value = 0;
9329   surfxml_prop_value_isset = 0;
9330   ENTER(AL_surfxml_prop); pushbuffer(0);
9331   }
9332         YY_BREAK
9333
9334 case 550:
9335 /* rule 550 can match eol */
9336 YY_RULE_SETUP
9337 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);
9338         YY_BREAK
9339 case 551:
9340 /* rule 551 can match eol */
9341 YY_RULE_SETUP
9342 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);
9343         YY_BREAK
9344 case 552:
9345 /* rule 552 can match eol */
9346 YY_RULE_SETUP
9347 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);
9348         YY_BREAK
9349 case 553:
9350 /* rule 553 can match eol */
9351 YY_RULE_SETUP
9352 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);
9353         YY_BREAK
9354 case 554:
9355 YY_RULE_SETUP
9356 {
9357   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
9358   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
9359   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
9360  }
9361         YY_BREAK
9362 case 555:
9363 YY_RULE_SETUP
9364 {
9365   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
9366   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
9367   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
9368   switch (YY_START) {
9369    case S_surfxml_AS: case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
9370    case S_surfxml_cluster: case S_surfxml_cluster_1: case S_surfxml_cluster_2: SET(S_surfxml_cluster_2); break;
9371    case S_surfxml_config: case S_surfxml_config_1: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
9372    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
9373    case S_surfxml_link: case S_surfxml_link_1: case S_surfxml_link_2: SET(S_surfxml_link_2); break;
9374    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
9375    case S_surfxml_storage: case S_surfxml_storage_1: case S_surfxml_storage_2: SET(S_surfxml_storage_2); break;
9376    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
9377   }
9378  }
9379         YY_BREAK
9380 case 556:
9381 YY_RULE_SETUP
9382 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
9383         YY_BREAK
9384 case 557:
9385 YY_RULE_SETUP
9386 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
9387         YY_BREAK
9388 case YY_STATE_EOF(AL_surfxml_prop):
9389 FAIL("EOF in attribute list of `prop' element.");
9390         YY_BREAK
9391
9392 case 558:
9393 /* rule 558 can match eol */
9394 YY_RULE_SETUP
9395 {
9396   LEAVE;
9397   ETag_surfxml_prop();
9398   popbuffer(); /* attribute */
9399   switch (YY_START) {
9400    case S_surfxml_AS: case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
9401    case S_surfxml_cluster: case S_surfxml_cluster_1: case S_surfxml_cluster_2: SET(S_surfxml_cluster_2); break;
9402    case S_surfxml_config: case S_surfxml_config_1: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
9403    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
9404    case S_surfxml_link: case S_surfxml_link_1: case S_surfxml_link_2: SET(S_surfxml_link_2); break;
9405    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
9406    case S_surfxml_storage: case S_surfxml_storage_1: case S_surfxml_storage_2: SET(S_surfxml_storage_2); break;
9407    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
9408   }
9409  }
9410         YY_BREAK
9411 case 559:
9412 /* rule 559 can match eol */
9413 YY_RULE_SETUP
9414 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
9415         YY_BREAK
9416 case 560:
9417 YY_RULE_SETUP
9418 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
9419         YY_BREAK
9420 case YY_STATE_EOF(E_surfxml_prop):
9421 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</prop>' expected.");
9422         YY_BREAK
9423
9424 /* <!-- <!ATTLIST model_prop key CDATA #REQUIRED> -->
9425   * <!-- <!ATTLIST model_prop key CDATA #REQUIRED> -->  */
9426 case 561:
9427 /* rule 561 can match eol */
9428 YY_RULE_SETUP
9429 FAIL("Starting tag <model_prop> is not allowed here.");
9430         YY_BREAK
9431 case 562:
9432 /* rule 562 can match eol */
9433 YY_RULE_SETUP
9434 {
9435   AX_surfxml_model___prop_id = 0;
9436   surfxml_model___prop_id_isset = 0;
9437   AX_surfxml_model___prop_value = 0;
9438   surfxml_model___prop_value_isset = 0;
9439   ENTER(AL_surfxml_model___prop); pushbuffer(0);
9440   }
9441         YY_BREAK
9442
9443 case 563:
9444 /* rule 563 can match eol */
9445 YY_RULE_SETUP
9446 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);
9447         YY_BREAK
9448 case 564:
9449 /* rule 564 can match eol */
9450 YY_RULE_SETUP
9451 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);
9452         YY_BREAK
9453 case 565:
9454 /* rule 565 can match eol */
9455 YY_RULE_SETUP
9456 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);
9457         YY_BREAK
9458 case 566:
9459 /* rule 566 can match eol */
9460 YY_RULE_SETUP
9461 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);
9462         YY_BREAK
9463 case 567:
9464 YY_RULE_SETUP
9465 {
9466   if (!AX_surfxml_model___prop_id) FAIL("Required attribute `id' not set for `model_prop' element.");
9467   if (!AX_surfxml_model___prop_value) FAIL("Required attribute `value' not set for `model_prop' element.");
9468   LEAVE; STag_surfxml_model___prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_model___prop);
9469  }
9470         YY_BREAK
9471 case 568:
9472 YY_RULE_SETUP
9473 {
9474   if (!AX_surfxml_model___prop_id) FAIL("Required attribute `id' not set for `model_prop' element.");
9475   if (!AX_surfxml_model___prop_value) FAIL("Required attribute `value' not set for `model_prop' element.");
9476   LEAVE; STag_surfxml_model___prop(); surfxml_pcdata_ix = 0; ETag_surfxml_model___prop(); popbuffer(); /* attribute */
9477   switch (YY_START) {
9478    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
9479   }
9480  }
9481         YY_BREAK
9482 case 569:
9483 YY_RULE_SETUP
9484 FAIL("Unexpected character `%c' in attribute list of model_prop element.", surf_parse_text[0]);
9485         YY_BREAK
9486 case 570:
9487 YY_RULE_SETUP
9488 FAIL("Bad attribute `%s' in `model_prop' element start tag.",surf_parse_text);
9489         YY_BREAK
9490 case YY_STATE_EOF(AL_surfxml_model___prop):
9491 FAIL("EOF in attribute list of `model_prop' element.");
9492         YY_BREAK
9493
9494 case 571:
9495 /* rule 571 can match eol */
9496 YY_RULE_SETUP
9497 {
9498   LEAVE;
9499   ETag_surfxml_model___prop();
9500   popbuffer(); /* attribute */
9501   switch (YY_START) {
9502    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
9503   }
9504  }
9505         YY_BREAK
9506 case 572:
9507 /* rule 572 can match eol */
9508 YY_RULE_SETUP
9509 FAIL("Unexpected end-tag `%s': `</model_prop>' expected.",surf_parse_text);
9510         YY_BREAK
9511 case 573:
9512 YY_RULE_SETUP
9513 FAIL("Unexpected character `%c': `</model_prop>' expected.",surf_parse_text[0]);
9514         YY_BREAK
9515 case YY_STATE_EOF(E_surfxml_model___prop):
9516 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</model_prop>' expected.");
9517         YY_BREAK
9518
9519 /* EPILOG: after the root element. */
9520
9521 case 574:
9522 YY_RULE_SETUP
9523 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
9524         YY_BREAK
9525 case YY_STATE_EOF(EPILOG):
9526 SUCCEED;
9527         YY_BREAK
9528
9529 /* CHARACTER DATA. */
9530
9531 /* Non-defined standard entities... */
9532 case 575:
9533 YY_RULE_SETUP
9534 BUFFERPUTC('&');
9535         YY_BREAK
9536 case 576:
9537 YY_RULE_SETUP
9538 BUFFERPUTC('<');
9539         YY_BREAK
9540 case 577:
9541 YY_RULE_SETUP
9542 BUFFERPUTC('>');
9543         YY_BREAK
9544 case 578:
9545 YY_RULE_SETUP
9546 BUFFERPUTC('\'');
9547         YY_BREAK
9548 case 579:
9549 YY_RULE_SETUP
9550 BUFFERPUTC('"');
9551         YY_BREAK
9552 /* Character entities. */
9553 case 580:
9554 YY_RULE_SETUP
9555 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
9556         YY_BREAK
9557 case 581:
9558 YY_RULE_SETUP
9559 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
9560         YY_BREAK
9561
9562 case 582:
9563 /* rule 582 can match eol */
9564 case 583:
9565 /* rule 583 can match eol */
9566 case 584:
9567 /* rule 584 can match eol */
9568 case 585:
9569 /* rule 585 can match eol */
9570 YY_RULE_SETUP
9571 BUFFERPUTC('\n');
9572         YY_BREAK
9573
9574 case 586:
9575 YY_RULE_SETUP
9576 ENTER(CDATA);
9577         YY_BREAK
9578 case 587:
9579 YY_RULE_SETUP
9580 FAIL("Unexpected `]""]>' in character data.");
9581         YY_BREAK
9582
9583 case 588:
9584 YY_RULE_SETUP
9585 BUFFERDONE; LEAVE;
9586         YY_BREAK
9587 case YY_STATE_EOF(VALUE1):
9588 FAIL("EOF in literal (\"'\" expected).");
9589         YY_BREAK
9590
9591 case 589:
9592 YY_RULE_SETUP
9593 BUFFERDONE; LEAVE;
9594         YY_BREAK
9595 case YY_STATE_EOF(VALUE2):
9596 FAIL("EOF in literal (`\"' expected).");
9597         YY_BREAK
9598
9599 case 590:
9600 /* rule 590 can match eol */
9601 YY_RULE_SETUP
9602 BUFFERPUTC(surf_parse_text[0]);
9603         YY_BREAK
9604 case 591:
9605 YY_RULE_SETUP
9606 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
9607         YY_BREAK
9608
9609 case 592:
9610 YY_RULE_SETUP
9611 LEAVE;
9612         YY_BREAK
9613 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
9614 case 593:
9615 YY_RULE_SETUP
9616 BUFFERPUTC(surf_parse_text[0]);
9617         YY_BREAK
9618 case YY_STATE_EOF(CDATA):
9619 FAIL("EOF in CDATA section.");
9620         YY_BREAK
9621
9622 /* Impossible rules to avoid warnings from flex(1). */
9623 /* Ideally, this should be replaced by code in flexml.pl that
9624     generates just the states not covered by other rules. */
9625
9626 case 594:
9627 /* rule 594 can match eol */
9628 YY_RULE_SETUP
9629 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
9630         YY_BREAK
9631
9632 case 595:
9633 YY_RULE_SETUP
9634 ECHO;
9635         YY_BREAK
9636 case YY_STATE_EOF(INITIAL):
9637 case YY_STATE_EOF(S_surfxml_AS_2):
9638 case YY_STATE_EOF(S_surfxml_AS_5):
9639 case YY_STATE_EOF(S_surfxml_AS_7):
9640 case YY_STATE_EOF(S_surfxml_ASroute_1):
9641 case YY_STATE_EOF(S_surfxml_bypassASroute_1):
9642 case YY_STATE_EOF(S_surfxml_bypassRoute_1):
9643 case YY_STATE_EOF(S_surfxml_cluster_1):
9644 case YY_STATE_EOF(S_surfxml_config_1):
9645 case YY_STATE_EOF(S_surfxml_host_1):
9646 case YY_STATE_EOF(S_surfxml_include_1):
9647 case YY_STATE_EOF(S_surfxml_link_1):
9648 case YY_STATE_EOF(ROOT_surfxml_platform):
9649 case YY_STATE_EOF(S_surfxml_platform_2):
9650 case YY_STATE_EOF(S_surfxml_platform_5):
9651 case YY_STATE_EOF(S_surfxml_platform_7):
9652 case YY_STATE_EOF(S_surfxml_process_1):
9653 case YY_STATE_EOF(S_surfxml_route_1):
9654 case YY_STATE_EOF(S_surfxml_storage_1):
9655 case YY_STATE_EOF(S_surfxml_storage___type_1):
9656 case YY_STATE_EOF(IMPOSSIBLE):
9657         yyterminate();
9658
9659         case YY_END_OF_BUFFER:
9660                 {
9661                 /* Amount of text matched not including the EOB char. */
9662                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
9663
9664                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
9665                 *yy_cp = (yy_hold_char);
9666                 YY_RESTORE_YY_MORE_OFFSET
9667
9668                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
9669                         {
9670                         /* We're scanning a new file or input source.  It's
9671                          * possible that this happened because the user
9672                          * just pointed surf_parse_in at a new source and called
9673                          * surf_parse_lex().  If so, then we have to assure
9674                          * consistency between YY_CURRENT_BUFFER and our
9675                          * globals.  Here is the right place to do so, because
9676                          * this is the first action (other than possibly a
9677                          * back-up) that will match for the new input source.
9678                          */
9679                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
9680                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
9681                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
9682                         }
9683
9684                 /* Note that here we test for yy_c_buf_p "<=" to the position
9685                  * of the first EOB in the buffer, since yy_c_buf_p will
9686                  * already have been incremented past the NUL character
9687                  * (since all states make transitions on EOB to the
9688                  * end-of-buffer state).  Contrast this with the test
9689                  * in input().
9690                  */
9691                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
9692                         { /* This was really a NUL. */
9693                         yy_state_type yy_next_state;
9694
9695                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
9696
9697                         yy_current_state = yy_get_previous_state(  );
9698
9699                         /* Okay, we're now positioned to make the NUL
9700                          * transition.  We couldn't have
9701                          * yy_get_previous_state() go ahead and do it
9702                          * for us because it doesn't know how to deal
9703                          * with the possibility of jamming (and we don't
9704                          * want to build jamming into it because then it
9705                          * will run more slowly).
9706                          */
9707
9708                         yy_next_state = yy_try_NUL_trans( yy_current_state );
9709
9710                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9711
9712                         if ( yy_next_state )
9713                                 {
9714                                 /* Consume the NUL. */
9715                                 yy_cp = ++(yy_c_buf_p);
9716                                 yy_current_state = yy_next_state;
9717                                 goto yy_match;
9718                                 }
9719
9720                         else
9721                                 {
9722                                 yy_cp = (yy_c_buf_p);
9723                                 goto yy_find_action;
9724                                 }
9725                         }
9726
9727                 else switch ( yy_get_next_buffer(  ) )
9728                         {
9729                         case EOB_ACT_END_OF_FILE:
9730                                 {
9731                                 (yy_did_buffer_switch_on_eof) = 0;
9732
9733                                 if ( surf_parse_wrap( ) )
9734                                         {
9735                                         /* Note: because we've taken care in
9736                                          * yy_get_next_buffer() to have set up
9737                                          * surf_parse_text, we can now set up
9738                                          * yy_c_buf_p so that if some total
9739                                          * hoser (like flex itself) wants to
9740                                          * call the scanner after we return the
9741                                          * YY_NULL, it'll still work - another
9742                                          * YY_NULL will get returned.
9743                                          */
9744                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
9745
9746                                         yy_act = YY_STATE_EOF(YY_START);
9747                                         goto do_action;
9748                                         }
9749
9750                                 else
9751                                         {
9752                                         if ( ! (yy_did_buffer_switch_on_eof) )
9753                                                 YY_NEW_FILE;
9754                                         }
9755                                 break;
9756                                 }
9757
9758                         case EOB_ACT_CONTINUE_SCAN:
9759                                 (yy_c_buf_p) =
9760                                         (yytext_ptr) + yy_amount_of_matched_text;
9761
9762                                 yy_current_state = yy_get_previous_state(  );
9763
9764                                 yy_cp = (yy_c_buf_p);
9765                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9766                                 goto yy_match;
9767
9768                         case EOB_ACT_LAST_MATCH:
9769                                 (yy_c_buf_p) =
9770                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
9771
9772                                 yy_current_state = yy_get_previous_state(  );
9773
9774                                 yy_cp = (yy_c_buf_p);
9775                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9776                                 goto yy_find_action;
9777                         }
9778                 break;
9779                 }
9780
9781         default:
9782                 YY_FATAL_ERROR(
9783                         "fatal flex scanner internal error--no action found" );
9784         } /* end of action switch */
9785                 } /* end of scanning one token */
9786         } /* end of user's declarations */
9787 } /* end of surf_parse_lex */
9788
9789 /* yy_get_next_buffer - try to read in a new buffer
9790  *
9791  * Returns a code representing an action:
9792  *      EOB_ACT_LAST_MATCH -
9793  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
9794  *      EOB_ACT_END_OF_FILE - end of file
9795  */
9796 static int yy_get_next_buffer (void)
9797 {
9798         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
9799         register char *source = (yytext_ptr);
9800         register int number_to_move, i;
9801         int ret_val;
9802
9803         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
9804                 YY_FATAL_ERROR(
9805                 "fatal flex scanner internal error--end of buffer missed" );
9806
9807         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
9808                 { /* Don't try to fill the buffer, so this is an EOF. */
9809                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
9810                         {
9811                         /* We matched a single character, the EOB, so
9812                          * treat this as a final EOF.
9813                          */
9814                         return EOB_ACT_END_OF_FILE;
9815                         }
9816
9817                 else
9818                         {
9819                         /* We matched some text prior to the EOB, first
9820                          * process it.
9821                          */
9822                         return EOB_ACT_LAST_MATCH;
9823                         }
9824                 }
9825
9826         /* Try to read more data. */
9827
9828         /* First move last chars to start of buffer. */
9829         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
9830
9831         for ( i = 0; i < number_to_move; ++i )
9832                 *(dest++) = *(source++);
9833
9834         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
9835                 /* don't do the read, it's not guaranteed to return an EOF,
9836                  * just force an EOF
9837                  */
9838                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
9839
9840         else
9841                 {
9842                         yy_size_t num_to_read =
9843                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
9844
9845                 while ( num_to_read <= 0 )
9846                         { /* Not enough room in the buffer - grow it. */
9847
9848                         /* just a shorter name for the current buffer */
9849                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
9850
9851                         int yy_c_buf_p_offset =
9852                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
9853
9854                         if ( b->yy_is_our_buffer )
9855                                 {
9856                                 yy_size_t new_size = b->yy_buf_size * 2;
9857
9858                                 if ( new_size <= 0 )
9859                                         b->yy_buf_size += b->yy_buf_size / 8;
9860                                 else
9861                                         b->yy_buf_size *= 2;
9862
9863                                 b->yy_ch_buf = (char *)
9864                                         /* Include room in for 2 EOB chars. */
9865                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
9866                                 }
9867                         else
9868                                 /* Can't grow it, we don't own it. */
9869                                 b->yy_ch_buf = 0;
9870
9871                         if ( ! b->yy_ch_buf )
9872                                 YY_FATAL_ERROR(
9873                                 "fatal error - scanner input buffer overflow" );
9874
9875                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
9876
9877                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
9878                                                 number_to_move - 1;
9879
9880                         }
9881
9882                 if ( num_to_read > YY_READ_BUF_SIZE )
9883                         num_to_read = YY_READ_BUF_SIZE;
9884
9885                 /* Read in more data. */
9886                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
9887                         (yy_n_chars), num_to_read );
9888
9889                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9890                 }
9891
9892         if ( (yy_n_chars) == 0 )
9893                 {
9894                 if ( number_to_move == YY_MORE_ADJ )
9895                         {
9896                         ret_val = EOB_ACT_END_OF_FILE;
9897                         surf_parse_restart(surf_parse_in  );
9898                         }
9899
9900                 else
9901                         {
9902                         ret_val = EOB_ACT_LAST_MATCH;
9903                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
9904                                 YY_BUFFER_EOF_PENDING;
9905                         }
9906                 }
9907
9908         else
9909                 ret_val = EOB_ACT_CONTINUE_SCAN;
9910
9911         if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
9912                 /* Extend the array by 50%, plus the number we really need. */
9913                 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
9914                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) surf_parse_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
9915                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
9916                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
9917         }
9918
9919         (yy_n_chars) += number_to_move;
9920         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
9921         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
9922
9923         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
9924
9925         return ret_val;
9926 }
9927
9928 /* yy_get_previous_state - get the state just before the EOB char was reached */
9929
9930     static yy_state_type yy_get_previous_state (void)
9931 {
9932         register yy_state_type yy_current_state;
9933         register char *yy_cp;
9934     
9935         yy_current_state = (yy_start);
9936
9937         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
9938                 {
9939                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
9940                 if ( yy_accept[yy_current_state] )
9941                         {
9942                         (yy_last_accepting_state) = yy_current_state;
9943                         (yy_last_accepting_cpos) = yy_cp;
9944                         }
9945                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
9946                         {
9947                         yy_current_state = (int) yy_def[yy_current_state];
9948                         if ( yy_current_state >= 3466 )
9949                                 yy_c = yy_meta[(unsigned int) yy_c];
9950                         }
9951                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
9952                 }
9953
9954         return yy_current_state;
9955 }
9956
9957 /* yy_try_NUL_trans - try to make a transition on the NUL character
9958  *
9959  * synopsis
9960  *      next_state = yy_try_NUL_trans( current_state );
9961  */
9962     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
9963 {
9964         register int yy_is_jam;
9965         register char *yy_cp = (yy_c_buf_p);
9966
9967         register YY_CHAR yy_c = 1;
9968         if ( yy_accept[yy_current_state] )
9969                 {
9970                 (yy_last_accepting_state) = yy_current_state;
9971                 (yy_last_accepting_cpos) = yy_cp;
9972                 }
9973         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
9974                 {
9975                 yy_current_state = (int) yy_def[yy_current_state];
9976                 if ( yy_current_state >= 3466 )
9977                         yy_c = yy_meta[(unsigned int) yy_c];
9978                 }
9979         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
9980         yy_is_jam = (yy_current_state == 3465);
9981
9982                 return yy_is_jam ? 0 : yy_current_state;
9983 }
9984
9985 #ifndef YY_NO_INPUT
9986 #ifdef __cplusplus
9987     static int yyinput (void)
9988 #else
9989     static int input  (void)
9990 #endif
9991
9992 {
9993         int c;
9994     
9995         *(yy_c_buf_p) = (yy_hold_char);
9996
9997         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
9998                 {
9999                 /* yy_c_buf_p now points to the character we want to return.
10000                  * If this occurs *before* the EOB characters, then it's a
10001                  * valid NUL; if not, then we've hit the end of the buffer.
10002                  */
10003                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
10004                         /* This was really a NUL. */
10005                         *(yy_c_buf_p) = '\0';
10006
10007                 else
10008                         { /* need more input */
10009                         yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
10010                         ++(yy_c_buf_p);
10011
10012                         switch ( yy_get_next_buffer(  ) )
10013                                 {
10014                                 case EOB_ACT_LAST_MATCH:
10015                                         /* This happens because yy_g_n_b()
10016                                          * sees that we've accumulated a
10017                                          * token and flags that we need to
10018                                          * try matching the token before
10019                                          * proceeding.  But for input(),
10020                                          * there's no matching to consider.
10021                                          * So convert the EOB_ACT_LAST_MATCH
10022                                          * to EOB_ACT_END_OF_FILE.
10023                                          */
10024
10025                                         /* Reset buffer status. */
10026                                         surf_parse_restart(surf_parse_in );
10027
10028                                         /*FALLTHROUGH*/
10029
10030                                 case EOB_ACT_END_OF_FILE:
10031                                         {
10032                                         if ( surf_parse_wrap( ) )
10033                                                 return EOF;
10034
10035                                         if ( ! (yy_did_buffer_switch_on_eof) )
10036                                                 YY_NEW_FILE;
10037 #ifdef __cplusplus
10038                                         return yyinput();
10039 #else
10040                                         return input();
10041 #endif
10042                                         }
10043
10044                                 case EOB_ACT_CONTINUE_SCAN:
10045                                         (yy_c_buf_p) = (yytext_ptr) + offset;
10046                                         break;
10047                                 }
10048                         }
10049                 }
10050
10051         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
10052         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
10053         (yy_hold_char) = *++(yy_c_buf_p);
10054
10055         if ( c == '\n' )
10056                    
10057     surf_parse_lineno++;
10058 ;
10059
10060         return c;
10061 }
10062 #endif  /* ifndef YY_NO_INPUT */
10063
10064 /** Immediately switch to a different input stream.
10065  * @param input_file A readable stream.
10066  * 
10067  * @note This function does not reset the start condition to @c INITIAL .
10068  */
10069     void surf_parse_restart  (FILE * input_file )
10070 {
10071     
10072         if ( ! YY_CURRENT_BUFFER ){
10073         surf_parse_ensure_buffer_stack ();
10074                 YY_CURRENT_BUFFER_LVALUE =
10075             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
10076         }
10077
10078         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
10079         surf_parse__load_buffer_state( );
10080 }
10081
10082 /** Switch to a different input buffer.
10083  * @param new_buffer The new input buffer.
10084  * 
10085  */
10086     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
10087 {
10088     
10089         /* TODO. We should be able to replace this entire function body
10090          * with
10091          *              surf_parse_pop_buffer_state();
10092          *              surf_parse_push_buffer_state(new_buffer);
10093      */
10094         surf_parse_ensure_buffer_stack ();
10095         if ( YY_CURRENT_BUFFER == new_buffer )
10096                 return;
10097
10098         if ( YY_CURRENT_BUFFER )
10099                 {
10100                 /* Flush out information for old buffer. */
10101                 *(yy_c_buf_p) = (yy_hold_char);
10102                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
10103                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
10104                 }
10105
10106         YY_CURRENT_BUFFER_LVALUE = new_buffer;
10107         surf_parse__load_buffer_state( );
10108
10109         /* We don't actually know whether we did this switch during
10110          * EOF (surf_parse_wrap()) processing, but the only time this flag
10111          * is looked at is after surf_parse_wrap() is called, so it's safe
10112          * to go ahead and always set it.
10113          */
10114         (yy_did_buffer_switch_on_eof) = 1;
10115 }
10116
10117 static void surf_parse__load_buffer_state  (void)
10118 {
10119         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
10120         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
10121         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
10122         (yy_hold_char) = *(yy_c_buf_p);
10123 }
10124
10125 /** Allocate and initialize an input buffer state.
10126  * @param file A readable stream.
10127  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
10128  * 
10129  * @return the allocated buffer state.
10130  */
10131     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
10132 {
10133         YY_BUFFER_STATE b;
10134     
10135         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
10136         if ( ! b )
10137                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
10138
10139         b->yy_buf_size = size;
10140
10141         /* yy_ch_buf has to be 2 characters longer than the size given because
10142          * we need to put in 2 end-of-buffer characters.
10143          */
10144         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
10145         if ( ! b->yy_ch_buf )
10146                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
10147
10148         b->yy_is_our_buffer = 1;
10149
10150         surf_parse__init_buffer(b,file );
10151
10152         return b;
10153 }
10154
10155 /** Destroy the buffer.
10156  * @param b a buffer created with surf_parse__create_buffer()
10157  * 
10158  */
10159     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
10160 {
10161     
10162         if ( ! b )
10163                 return;
10164
10165         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
10166                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
10167
10168         if ( b->yy_is_our_buffer )
10169                 surf_parse_free((void *) b->yy_ch_buf  );
10170
10171         surf_parse_free((void *) b  );
10172 }
10173
10174 /* Initializes or reinitializes a buffer.
10175  * This function is sometimes called more than once on the same buffer,
10176  * such as during a surf_parse_restart() or at EOF.
10177  */
10178     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
10179
10180 {
10181         int oerrno = errno;
10182     
10183         surf_parse__flush_buffer(b );
10184
10185         b->yy_input_file = file;
10186         b->yy_fill_buffer = 1;
10187
10188     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
10189      * called from surf_parse_restart() or through yy_get_next_buffer.
10190      * In that case, we don't want to reset the lineno or column.
10191      */
10192     if (b != YY_CURRENT_BUFFER){
10193         b->yy_bs_lineno = 1;
10194         b->yy_bs_column = 0;
10195     }
10196
10197         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
10198     
10199         errno = oerrno;
10200 }
10201
10202 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
10203  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
10204  * 
10205  */
10206     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
10207 {
10208         if ( ! b )
10209                 return;
10210
10211         b->yy_n_chars = 0;
10212
10213         /* We always need two end-of-buffer characters.  The first causes
10214          * a transition to the end-of-buffer state.  The second causes
10215          * a jam in that state.
10216          */
10217         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
10218         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
10219
10220         b->yy_buf_pos = &b->yy_ch_buf[0];
10221
10222         b->yy_at_bol = 1;
10223         b->yy_buffer_status = YY_BUFFER_NEW;
10224
10225         if ( b == YY_CURRENT_BUFFER )
10226                 surf_parse__load_buffer_state( );
10227 }
10228
10229 /** Pushes the new state onto the stack. The new state becomes
10230  *  the current state. This function will allocate the stack
10231  *  if necessary.
10232  *  @param new_buffer The new state.
10233  *  
10234  */
10235 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
10236 {
10237         if (new_buffer == NULL)
10238                 return;
10239
10240         surf_parse_ensure_buffer_stack();
10241
10242         /* This block is copied from surf_parse__switch_to_buffer. */
10243         if ( YY_CURRENT_BUFFER )
10244                 {
10245                 /* Flush out information for old buffer. */
10246                 *(yy_c_buf_p) = (yy_hold_char);
10247                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
10248                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
10249                 }
10250
10251         /* Only push if top exists. Otherwise, replace top. */
10252         if (YY_CURRENT_BUFFER)
10253                 (yy_buffer_stack_top)++;
10254         YY_CURRENT_BUFFER_LVALUE = new_buffer;
10255
10256         /* copied from surf_parse__switch_to_buffer. */
10257         surf_parse__load_buffer_state( );
10258         (yy_did_buffer_switch_on_eof) = 1;
10259 }
10260
10261 /** Removes and deletes the top of the stack, if present.
10262  *  The next element becomes the new top.
10263  *  
10264  */
10265 void surf_parse_pop_buffer_state (void)
10266 {
10267         if (!YY_CURRENT_BUFFER)
10268                 return;
10269
10270         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
10271         YY_CURRENT_BUFFER_LVALUE = NULL;
10272         if ((yy_buffer_stack_top) > 0)
10273                 --(yy_buffer_stack_top);
10274
10275         if (YY_CURRENT_BUFFER) {
10276                 surf_parse__load_buffer_state( );
10277                 (yy_did_buffer_switch_on_eof) = 1;
10278         }
10279 }
10280
10281 /* Allocates the stack if it does not exist.
10282  *  Guarantees space for at least one push.
10283  */
10284 static void surf_parse_ensure_buffer_stack (void)
10285 {
10286         yy_size_t num_to_alloc;
10287     
10288         if (!(yy_buffer_stack)) {
10289
10290                 /* First allocation is just for 2 elements, since we don't know if this
10291                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
10292                  * immediate realloc on the next call.
10293          */
10294                 num_to_alloc = 1;
10295                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
10296                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
10297                                                                 );
10298                 if ( ! (yy_buffer_stack) )
10299                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
10300                                                                   
10301                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
10302                                 
10303                 (yy_buffer_stack_max) = num_to_alloc;
10304                 (yy_buffer_stack_top) = 0;
10305                 return;
10306         }
10307
10308         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
10309
10310                 /* Increase the buffer to prepare for a possible push. */
10311                 int grow_size = 8 /* arbitrary grow size */;
10312
10313                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
10314                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
10315                                                                 ((yy_buffer_stack),
10316                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
10317                                                                 );
10318                 if ( ! (yy_buffer_stack) )
10319                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
10320
10321                 /* zero only the new slots.*/
10322                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
10323                 (yy_buffer_stack_max) = num_to_alloc;
10324         }
10325 }
10326
10327 /** Setup the input buffer state to scan directly from a user-specified character buffer.
10328  * @param base the character buffer
10329  * @param size the size in bytes of the character buffer
10330  * 
10331  * @return the newly allocated buffer state object. 
10332  */
10333 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
10334 {
10335         YY_BUFFER_STATE b;
10336     
10337         if ( size < 2 ||
10338              base[size-2] != YY_END_OF_BUFFER_CHAR ||
10339              base[size-1] != YY_END_OF_BUFFER_CHAR )
10340                 /* They forgot to leave room for the EOB's. */
10341                 return 0;
10342
10343         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
10344         if ( ! b )
10345                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
10346
10347         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
10348         b->yy_buf_pos = b->yy_ch_buf = base;
10349         b->yy_is_our_buffer = 0;
10350         b->yy_input_file = 0;
10351         b->yy_n_chars = b->yy_buf_size;
10352         b->yy_is_interactive = 0;
10353         b->yy_at_bol = 1;
10354         b->yy_fill_buffer = 0;
10355         b->yy_buffer_status = YY_BUFFER_NEW;
10356
10357         surf_parse__switch_to_buffer(b  );
10358
10359         return b;
10360 }
10361
10362 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
10363  * scan from a @e copy of @a str.
10364  * @param yystr a NUL-terminated string to scan
10365  * 
10366  * @return the newly allocated buffer state object.
10367  * @note If you want to scan bytes that may contain NUL values, then use
10368  *       surf_parse__scan_bytes() instead.
10369  */
10370 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
10371 {
10372     
10373         return surf_parse__scan_bytes(yystr,strlen(yystr) );
10374 }
10375
10376 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
10377  * scan from a @e copy of @a bytes.
10378  * @param yybytes the byte buffer to scan
10379  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
10380  * 
10381  * @return the newly allocated buffer state object.
10382  */
10383 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
10384 {
10385         YY_BUFFER_STATE b;
10386         char *buf;
10387         yy_size_t n;
10388         yy_size_t i;
10389     
10390         /* Get memory for full buffer, including space for trailing EOB's. */
10391         n = _yybytes_len + 2;
10392         buf = (char *) surf_parse_alloc(n  );
10393         if ( ! buf )
10394                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
10395
10396         for ( i = 0; i < _yybytes_len; ++i )
10397                 buf[i] = yybytes[i];
10398
10399         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
10400
10401         b = surf_parse__scan_buffer(buf,n );
10402         if ( ! b )
10403                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
10404
10405         /* It's okay to grow etc. this buffer, and we should throw it
10406          * away when we're done.
10407          */
10408         b->yy_is_our_buffer = 1;
10409
10410         return b;
10411 }
10412
10413     static void yy_push_state (int  new_state )
10414 {
10415         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
10416                 {
10417                 yy_size_t new_size;
10418
10419                 (yy_start_stack_depth) += YY_START_STACK_INCR;
10420                 new_size = (yy_start_stack_depth) * sizeof( int );
10421
10422                 if ( ! (yy_start_stack) )
10423                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
10424
10425                 else
10426                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
10427
10428                 if ( ! (yy_start_stack) )
10429                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
10430                 }
10431
10432         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
10433
10434         BEGIN(new_state);
10435 }
10436
10437     static void yy_pop_state  (void)
10438 {
10439         if ( --(yy_start_stack_ptr) < 0 )
10440                 YY_FATAL_ERROR( "start-condition stack underflow" );
10441
10442         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
10443 }
10444
10445 #ifndef YY_EXIT_FAILURE
10446 #define YY_EXIT_FAILURE 2
10447 #endif
10448
10449 static void yy_fatal_error (yyconst char* msg )
10450 {
10451         (void) fprintf( stderr, "%s\n", msg );
10452         exit( YY_EXIT_FAILURE );
10453 }
10454
10455 /* Redefine yyless() so it works in section 3 code. */
10456
10457 #undef yyless
10458 #define yyless(n) \
10459         do \
10460                 { \
10461                 /* Undo effects of setting up surf_parse_text. */ \
10462         int yyless_macro_arg = (n); \
10463         YY_LESS_LINENO(yyless_macro_arg);\
10464                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
10465                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
10466                 (yy_hold_char) = *(yy_c_buf_p); \
10467                 *(yy_c_buf_p) = '\0'; \
10468                 surf_parse_leng = yyless_macro_arg; \
10469                 } \
10470         while ( 0 )
10471
10472 /* Accessor  methods (get/set functions) to struct members. */
10473
10474 /** Get the current line number.
10475  * 
10476  */
10477 int surf_parse_get_lineno  (void)
10478 {
10479         
10480     return surf_parse_lineno;
10481 }
10482
10483 /** Get the input stream.
10484  * 
10485  */
10486 FILE *surf_parse_get_in  (void)
10487 {
10488         return surf_parse_in;
10489 }
10490
10491 /** Get the output stream.
10492  * 
10493  */
10494 FILE *surf_parse_get_out  (void)
10495 {
10496         return surf_parse_out;
10497 }
10498
10499 /** Get the length of the current token.
10500  * 
10501  */
10502 yy_size_t surf_parse_get_leng  (void)
10503 {
10504         return surf_parse_leng;
10505 }
10506
10507 /** Get the current token.
10508  * 
10509  */
10510
10511 char *surf_parse_get_text  (void)
10512 {
10513         return surf_parse_text;
10514 }
10515
10516 /** Set the current line number.
10517  * @param line_number
10518  * 
10519  */
10520 void surf_parse_set_lineno (int  line_number )
10521 {
10522     
10523     surf_parse_lineno = line_number;
10524 }
10525
10526 /** Set the input stream. This does not discard the current
10527  * input buffer.
10528  * @param in_str A readable stream.
10529  * 
10530  * @see surf_parse__switch_to_buffer
10531  */
10532 void surf_parse_set_in (FILE *  in_str )
10533 {
10534         surf_parse_in = in_str ;
10535 }
10536
10537 void surf_parse_set_out (FILE *  out_str )
10538 {
10539         surf_parse_out = out_str ;
10540 }
10541
10542 int surf_parse_get_debug  (void)
10543 {
10544         return surf_parse__flex_debug;
10545 }
10546
10547 void surf_parse_set_debug (int  bdebug )
10548 {
10549         surf_parse__flex_debug = bdebug ;
10550 }
10551
10552 static int yy_init_globals (void)
10553 {
10554         /* Initialization is the same as for the non-reentrant scanner.
10555      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
10556      */
10557
10558     /* We do not touch surf_parse_lineno unless the option is enabled. */
10559     surf_parse_lineno =  1;
10560     
10561     (yy_buffer_stack) = 0;
10562     (yy_buffer_stack_top) = 0;
10563     (yy_buffer_stack_max) = 0;
10564     (yy_c_buf_p) = (char *) 0;
10565     (yy_init) = 0;
10566     (yy_start) = 0;
10567
10568     (yy_start_stack_ptr) = 0;
10569     (yy_start_stack_depth) = 0;
10570     (yy_start_stack) =  NULL;
10571
10572 /* Defined in main.c */
10573 #ifdef YY_STDINIT
10574     surf_parse_in = stdin;
10575     surf_parse_out = stdout;
10576 #else
10577     surf_parse_in = (FILE *) 0;
10578     surf_parse_out = (FILE *) 0;
10579 #endif
10580
10581     /* For future reference: Set errno on error, since we are called by
10582      * surf_parse_lex_init()
10583      */
10584     return 0;
10585 }
10586
10587 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
10588 int surf_parse_lex_destroy  (void)
10589 {
10590     
10591     /* Pop the buffer stack, destroying each element. */
10592         while(YY_CURRENT_BUFFER){
10593                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
10594                 YY_CURRENT_BUFFER_LVALUE = NULL;
10595                 surf_parse_pop_buffer_state();
10596         }
10597
10598         /* Destroy the stack itself. */
10599         surf_parse_free((yy_buffer_stack) );
10600         (yy_buffer_stack) = NULL;
10601
10602     /* Destroy the start condition stack. */
10603         surf_parse_free((yy_start_stack)  );
10604         (yy_start_stack) = NULL;
10605
10606     /* Reset the globals. This is important in a non-reentrant scanner so the next time
10607      * surf_parse_lex() is called, initialization will occur. */
10608     yy_init_globals( );
10609
10610     return 0;
10611 }
10612
10613 /*
10614  * Internal utility routines.
10615  */
10616
10617 #ifndef yytext_ptr
10618 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
10619 {
10620         register int i;
10621         for ( i = 0; i < n; ++i )
10622                 s1[i] = s2[i];
10623 }
10624 #endif
10625
10626 #ifdef YY_NEED_STRLEN
10627 static int yy_flex_strlen (yyconst char * s )
10628 {
10629         register int n;
10630         for ( n = 0; s[n]; ++n )
10631                 ;
10632
10633         return n;
10634 }
10635 #endif
10636
10637 void *surf_parse_alloc (yy_size_t  size )
10638 {
10639         return (void *) malloc( size );
10640 }
10641
10642 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
10643 {
10644         /* The cast to (char *) in the following accommodates both
10645          * implementations that use char* generic pointers, and those
10646          * that use void* generic pointers.  It works with the latter
10647          * because both ANSI C and C++ allow castless assignment from
10648          * any pointer type to void*, and deal with argument conversions
10649          * as though doing an assignment.
10650          */
10651         return (void *) realloc( (char *) ptr, size );
10652 }
10653
10654 void surf_parse_free (void * ptr )
10655 {
10656         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
10657 }
10658
10659 #define YYTABLES_NAME "yytables"
10660
10661 /* Element context stack lookup. */
10662 int surfxml_element_context(int i)
10663 {
10664   return (0<i && i<yy_start_stack_depth
10665           ? yy_start_stack[yy_start_stack_ptr - i]
10666           : 0);
10667 }
10668
10669 #ifdef FLEX_DEBUG
10670 void print_yy_stack(char* fmt, ...)
10671 {
10672   int i = 0; va_list ap; va_start(ap, fmt);
10673   vfprintf(stderr, fmt, ap);
10674   if (surfxml_statenames) {
10675       for (i=1; i<yy_start_stack_ptr; i++) {
10676           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
10677       }
10678       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
10679   }
10680   va_end(ap);
10681 }
10682
10683 void print_surfxml_bufferstack()
10684 {
10685     int i;
10686     fputs("Buffer: ", stderr);
10687     for (i = 0; i < blimit; i++) {
10688        if ( surfxml_bufferstack[i] == '\377' ) break;
10689          putc(surfxml_bufferstack[i], stderr);
10690     }
10691     putc('\n', stderr);
10692 }
10693
10694 static void debug_enter(int state, const char* statename) {
10695   yy_push_state(state);
10696   if (surf_parse__flex_debug) {
10697        print_yy_stack("--ENTER(%s) : ",statename);
10698        print_surfxml_bufferstack();
10699   }
10700 }
10701
10702 static void debug_leave(void) {
10703     if (surf_parse__flex_debug) {
10704         print_yy_stack("--LEAVE : ");
10705         print_surfxml_bufferstack();
10706     }
10707   yy_pop_state();
10708 }
10709
10710 static void debug_set(int state, const char* statename) {
10711   BEGIN(state);
10712   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
10713 }
10714 #endif
10715
10716 static void cleanup(void)
10717 {
10718     if (surfxml_statenames) {
10719         free(surfxml_statenames);
10720         surfxml_statenames = NULL;
10721     }
10722     free(surfxml_bufferstack);
10723     surfxml_bufferstack = NULL;
10724
10725     free(indexstack);
10726     indexstack = NULL;
10727 }
10728
10729 static int fail(const char* fmt, ...)
10730 {
10731     int chars_left, used;
10732     va_list ap; va_start(ap, fmt);
10733 #ifdef FLEXML_yylineno
10734     used = sprintf(flexml_err_msg,
10735                    "Invalid XML (XML input line %d, state %d): ",
10736                    surf_parse_lineno, YY_START);
10737 #else
10738     used = sprintf(flexml_err_msg,
10739                    "Invalid XML (state %d): ",
10740                    YY_START);
10741 #endif
10742     chars_left = flexml_max_err_msg_size - used - 1;
10743     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
10744     va_end(ap);
10745
10746 #ifndef FLEXML_quiet_parser
10747     /* print directly to sdterr */
10748     fprintf(stderr, "%s\n", flexml_err_msg);
10749     flexml_err_msg[0] = '\0';
10750 #endif
10751
10752     cleanup();
10753
10754     return 1;
10755 }
10756