Logo AND Algorithmique Numérique Distribuée

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