Logo AND Algorithmique Numérique Distribuée

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