Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add totals
[simgrid.git] / src / surf / surfxml.c
1
2 #line 3 "surf/surfxml.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define FLEX_SCANNER
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 33
12 #if YY_FLEX_SUBMINOR_VERSION > 0
13 #define FLEX_BETA
14 #endif
15
16 /* First, we deal with  platform-specific or compiler-specific issues. */
17
18 /* begin standard C headers. */
19 #include <stdio.h>
20 #include <string.h>
21 #include <errno.h>
22 #include <stdlib.h>
23
24 /* end standard C headers. */
25
26 /* flex integer type definitions */
27
28 #ifndef FLEXINT_H
29 #define FLEXINT_H
30
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32
33 #if __STDC_VERSION__ >= 199901L
34
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36  * if you want the limit (max/min) macros for int types. 
37  */
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
40 #endif
41
42 #include <inttypes.h>
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
49 #else
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t; 
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
56 #endif /* ! C99 */
57
58 /* Limits of integral types. */
59 #ifndef INT8_MIN
60 #define INT8_MIN               (-128)
61 #endif
62 #ifndef INT16_MIN
63 #define INT16_MIN              (-32767-1)
64 #endif
65 #ifndef INT32_MIN
66 #define INT32_MIN              (-2147483647-1)
67 #endif
68 #ifndef INT8_MAX
69 #define INT8_MAX               (127)
70 #endif
71 #ifndef INT16_MAX
72 #define INT16_MAX              (32767)
73 #endif
74 #ifndef INT32_MAX
75 #define INT32_MAX              (2147483647)
76 #endif
77 #ifndef UINT8_MAX
78 #define UINT8_MAX              (255U)
79 #endif
80 #ifndef UINT16_MAX
81 #define UINT16_MAX             (65535U)
82 #endif
83 #ifndef UINT32_MAX
84 #define UINT32_MAX             (4294967295U)
85 #endif
86
87 #endif /* ! FLEXINT_H */
88
89 #ifdef __cplusplus
90
91 /* The "const" storage-class-modifier is valid. */
92 #define YY_USE_CONST
93
94 #else   /* ! __cplusplus */
95
96 #if __STDC__
97
98 #define YY_USE_CONST
99
100 #endif  /* __STDC__ */
101 #endif  /* ! __cplusplus */
102
103 #ifdef YY_USE_CONST
104 #define yyconst const
105 #else
106 #define yyconst
107 #endif
108
109 /* Returned upon end-of-file. */
110 #define YY_NULL 0
111
112 /* Promotes a possibly negative, possibly signed char to an unsigned
113  * integer for use as an array index.  If the signed char is negative,
114  * we want to instead treat it as an 8-bit unsigned char, hence the
115  * double cast.
116  */
117 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
118
119 /* Enter a start condition.  This macro really ought to take a parameter,
120  * but we do it the disgusting crufty way forced on us by the ()-less
121  * definition of BEGIN.
122  */
123 #define BEGIN (yy_start) = 1 + 2 *
124
125 /* Translate the current start state into a value that can be later handed
126  * to BEGIN to return to the state.  The YYSTATE alias is for lex
127  * compatibility.
128  */
129 #define YY_START (((yy_start) - 1) / 2)
130 #define YYSTATE YY_START
131
132 /* Action number for EOF rule of a given start state. */
133 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
134
135 /* Special action meaning "start processing a new file". */
136 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
137
138 #define YY_END_OF_BUFFER_CHAR 0
139
140 /* Size of default input buffer. */
141 #ifndef YY_BUF_SIZE
142 #define YY_BUF_SIZE 16384
143 #endif
144
145 /* The state buf must be large enough to hold one state per character in the main buffer.
146  */
147 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
148
149 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
150 #define YY_TYPEDEF_YY_BUFFER_STATE
151 typedef struct yy_buffer_state *YY_BUFFER_STATE;
152 #endif
153
154 extern int surf_parse_leng;
155
156 extern FILE *surf_parse_in, *surf_parse_out;
157
158 #define EOB_ACT_CONTINUE_SCAN 0
159 #define EOB_ACT_END_OF_FILE 1
160 #define EOB_ACT_LAST_MATCH 2
161
162     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
163      *       access to the local variable yy_act. Since yyless() is a macro, it would break
164      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
165      *       One obvious solution it to make yy_act a global. I tried that, and saw
166      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
167      *       normally declared as a register variable-- so it is not worth it.
168      */
169     #define  YY_LESS_LINENO(n) \
170             do { \
171                 int yyl;\
172                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
173                     if ( surf_parse_text[yyl] == '\n' )\
174                         --surf_parse_lineno;\
175             }while(0)
176     
177 /* Return all but the first "n" matched characters back to the input stream. */
178 #define yyless(n) \
179         do \
180                 { \
181                 /* Undo effects of setting up surf_parse_text. */ \
182         int yyless_macro_arg = (n); \
183         YY_LESS_LINENO(yyless_macro_arg);\
184                 *yy_cp = (yy_hold_char); \
185                 YY_RESTORE_YY_MORE_OFFSET \
186                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
187                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
188                 } \
189         while ( 0 )
190
191 #define unput(c) yyunput( c, (yytext_ptr)  )
192
193 /* The following is because we cannot portably get our hands on size_t
194  * (without autoconf's help, which isn't available because we want
195  * flex-generated scanners to compile on their own).
196  */
197
198 #ifndef YY_TYPEDEF_YY_SIZE_T
199 #define YY_TYPEDEF_YY_SIZE_T
200 typedef unsigned int yy_size_t;
201 #endif
202
203 #ifndef YY_STRUCT_YY_BUFFER_STATE
204 #define YY_STRUCT_YY_BUFFER_STATE
205 struct yy_buffer_state
206         {
207         FILE *yy_input_file;
208
209         char *yy_ch_buf;                /* input buffer */
210         char *yy_buf_pos;               /* current position in input buffer */
211
212         /* Size of input buffer in bytes, not including room for EOB
213          * characters.
214          */
215         yy_size_t yy_buf_size;
216
217         /* Number of characters read into yy_ch_buf, not including EOB
218          * characters.
219          */
220         int yy_n_chars;
221
222         /* Whether we "own" the buffer - i.e., we know we created it,
223          * and can realloc() it to grow it, and should free() it to
224          * delete it.
225          */
226         int yy_is_our_buffer;
227
228         /* Whether this is an "interactive" input source; if so, and
229          * if we're using stdio for input, then we want to use getc()
230          * instead of fread(), to make sure we stop fetching input after
231          * each newline.
232          */
233         int yy_is_interactive;
234
235         /* Whether we're considered to be at the beginning of a line.
236          * If so, '^' rules will be active on the next match, otherwise
237          * not.
238          */
239         int yy_at_bol;
240
241     int yy_bs_lineno; /**< The line count. */
242     int yy_bs_column; /**< The column count. */
243     
244         /* Whether to try to fill the input buffer when we reach the
245          * end of it.
246          */
247         int yy_fill_buffer;
248
249         int yy_buffer_status;
250
251 #define YY_BUFFER_NEW 0
252 #define YY_BUFFER_NORMAL 1
253         /* When an EOF's been seen but there's still some text to process
254          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
255          * shouldn't try reading from the input source any more.  We might
256          * still have a bunch of tokens to match, though, because of
257          * possible backing-up.
258          *
259          * When we actually see the EOF, we change the status to "new"
260          * (via surf_parse_restart()), so that the user can continue scanning by
261          * just pointing surf_parse_in at a new input file.
262          */
263 #define YY_BUFFER_EOF_PENDING 2
264
265         };
266 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
267
268 /* Stack of input buffers. */
269 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
270 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
271 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
272
273 /* We provide macros for accessing buffer states in case in the
274  * future we want to put the buffer states in a more general
275  * "scanner state".
276  *
277  * Returns the top of the stack, or NULL.
278  */
279 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
280                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
281                           : NULL)
282
283 /* Same as previous macro, but useful when we know that the buffer stack is not
284  * NULL or when we need an lvalue. For internal use only.
285  */
286 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
287
288 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
289 static char yy_hold_char;
290 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
291 int surf_parse_leng;
292
293 /* Points to current character in buffer. */
294 static char *yy_c_buf_p = (char *) 0;
295 static int yy_init = 0;         /* whether we need to initialize */
296 static int yy_start = 0;        /* start state number */
297
298 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
299  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
300  */
301 static int yy_did_buffer_switch_on_eof;
302
303 void surf_parse_restart (FILE *input_file  );
304 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
305 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
306 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
307 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
308 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
309 void surf_parse_pop_buffer_state (void );
310
311 static void surf_parse_ensure_buffer_stack (void );
312 static void surf_parse__load_buffer_state (void );
313 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
314
315 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
316
317 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
318 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
319 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,int len  );
320
321 void *surf_parse_alloc (yy_size_t  );
322 void *surf_parse_realloc (void *,yy_size_t  );
323 void surf_parse_free (void *  );
324
325 #define yy_new_buffer surf_parse__create_buffer
326
327 #define yy_set_interactive(is_interactive) \
328         { \
329         if ( ! YY_CURRENT_BUFFER ){ \
330         surf_parse_ensure_buffer_stack (); \
331                 YY_CURRENT_BUFFER_LVALUE =    \
332             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
333         } \
334         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
335         }
336
337 #define yy_set_bol(at_bol) \
338         { \
339         if ( ! YY_CURRENT_BUFFER ){\
340         surf_parse_ensure_buffer_stack (); \
341                 YY_CURRENT_BUFFER_LVALUE =    \
342             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
343         } \
344         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
345         }
346
347 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
348
349 /* Begin user sect3 */
350
351 #define surf_parse_wrap() 1
352 #define YY_SKIP_YYWRAP
353
354 typedef unsigned char YY_CHAR;
355
356 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
357
358 typedef int yy_state_type;
359
360 extern int surf_parse_lineno;
361
362 int surf_parse_lineno = 1;
363
364 extern char *surf_parse_text;
365 #define yytext_ptr surf_parse_text
366
367 static yy_state_type yy_get_previous_state (void );
368 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
369 static int yy_get_next_buffer (void );
370 static void yy_fatal_error (yyconst char msg[]  );
371
372 /* Done after the current pattern has been matched and before the
373  * corresponding action - sets up surf_parse_text.
374  */
375 #define YY_DO_BEFORE_ACTION \
376         (yytext_ptr) = yy_bp; \
377         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
378         (yy_hold_char) = *yy_cp; \
379         *yy_cp = '\0'; \
380         (yy_c_buf_p) = yy_cp;
381
382 #define YY_NUM_RULES 202
383 #define YY_END_OF_BUFFER 203
384 /* This struct is not used in this scanner,
385    but its presence is necessary. */
386 struct yy_trans_info
387         {
388         flex_int32_t yy_verify;
389         flex_int32_t yy_nxt;
390         };
391 static yyconst flex_int16_t yy_accept[1492] =
392     {   0,
393         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
394         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
395         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
396         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
397         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
398         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
399         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
400         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
401         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
402         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
403
404         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
405         0,    0,    0,    0,    0,    0,  203,  201,   24,   10,
406        10,   24,   24,  181,   10,  181,    5,    6,    5,    8,
407         9,    8,  197,  189,  190,  198,  195,  198,  196,  200,
408       189,  190,  200,  201,   30,   10,   30,   30,   30,   28,
409        30,   34,   10,   34,   34,  201,  201,   34,  201,   40,
410        10,   40,   40,   40,   38,   40,   44,   10,   44,  201,
411        70,   10,   70,   70,   70,   68,   70,   70,   70,   70,
412        70,   74,   10,   74,  201,   74,   82,   10,   82,   82,
413        82,   80,   82,   82,   86,   10,   86,  201,   92,   10,
414
415        92,   92,   92,   90,   92,   96,   10,   96,  201,  120,
416        10,  120,  120,  120,  118,  120,  120,  120,  120,  124,
417        10,  124,  124,  201,  140,   10,  140,  140,  140,  138,
418       140,  140,  140,  144,   10,  144,  201,  144,  150,   10,
419       150,  150,  150,  148,  150,  154,   10,  154,  201,  166,
420        10,  166,  166,  166,  164,  166,  166,  166,  166,  170,
421        10,  170,  201,  170,  201,  176,   10,  176,  176,  176,
422       174,  176,  180,   10,  180,  198,  197,   10,    0,    2,
423         2,    0,    4,    7,  192,  191,    0,    0,    0,    0,
424         0,    0,    0,   29,   31,   31,    0,    0,    0,    0,
425
426         0,    0,    0,    0,   39,   41,   41,    0,   69,   71,
427        71,   71,   71,   71,   71,   71,    0,    0,   81,   83,
428        83,   83,    0,   91,   93,   93,    0,  119,  121,  121,
429       121,  121,  121,  121,    0,  139,  141,  141,  141,  141,
430         0,    0,  149,  151,  151,    0,  165,  167,  167,  167,
431       167,  167,    0,    0,  175,  177,  177,    0,    0,    0,
432         0,    0,    0,    0,    3,    0,    0,    0,    0,    0,
433         0,    0,  199,    0,   31,    0,    0,    0,    0,    0,
434         0,    0,    0,    0,   41,    0,    0,   71,    0,    0,
435        71,   71,   71,   71,    0,    0,    0,    0,    0,   83,
436
437         0,    0,    0,    0,    0,    0,  121,    0,    0,  121,
438       121,  121,    0,    0,  141,  141,  141,    0,    0,    0,
439         0,    0,    0,    0,  167,  167,  167,  167,    0,    0,
440         0,  177,    0,    0,    0,  194,    0,   23,    1,    0,
441         0,  187,    0,    0,    0,  184,  183,    0,    0,   31,
442         0,    0,   33,    0,    0,    0,    0,    0,    0,    0,
443         0,   41,    0,    0,   43,    0,   71,    0,   47,   46,
444        71,   71,   71,   71,    0,    0,   73,    0,    0,    0,
445        77,   76,   83,    0,    0,   85,    0,    0,   89,   88,
446         0,    0,   95,    0,  121,    0,   99,   98,  121,  121,
447
448       121,    0,    0,  123,    0,    0,    0,  141,    0,    0,
449         0,    0,  143,    0,    0,    0,  147,  146,    0,    0,
450       153,    0,  167,  167,  167,  167,    0,    0,  169,    0,
451         0,  177,    0,    0,  179,    0,    0,    0,    0,  188,
452       182,    0,    0,    0,   31,    0,   45,    0,   97,    0,
453         0,    0,    0,    0,    0,    0,   71,   71,   71,   71,
454        71,    0,   75,   83,    0,    0,  121,  121,  121,  121,
455         0,    0,  129,  128,  141,    0,  127,  126,    0,    0,
456         0,  167,    0,    0,  167,  167,    0,    0,  177,    0,
457         0,    0,    0,    0,   12,    0,  185,  186,    0,   31,
458
459         0,   45,    0,   97,    0,  125,  125,    0,    0,   37,
460        36,    0,   71,   71,   71,    0,    0,    0,    0,   71,
461         0,   75,    0,    0,    0,    0,  121,  121,  121,    0,
462         0,  121,    0,  141,    0,    0,    0,  167,    0,  157,
463       156,  167,  167,    0,    0,    0,    0,    0,    0,    0,
464         0,    0,   11,    0,   31,    0,    0,    0,  125,   87,
465         0,   71,   71,   71,    0,   49,   48,    0,    0,    0,
466        71,    0,   72,    0,   79,   78,    0,   84,    0,  121,
467       121,  121,    0,    0,    0,  121,    0,  122,  141,    0,
468         0,    0,  167,  167,  167,    0,    0,    0,  173,  172,
469
470         0,    0,    0,    0,    0,    0,    0,    0,    0,   35,
471       155,   87,    0,   71,   71,   71,    0,    0,   71,    0,
472       121,    0,    0,  121,  121,    0,    0,  121,  141,    0,
473       142,    0,    0,  167,  167,  167,    0,    0,    0,    0,
474         0,    0,    0,    0,    0,   27,   26,    0,   35,  155,
475         0,   71,   71,   71,    0,    0,    0,    0,   71,    0,
476        94,  121,    0,  105,  104,  121,  121,    0,    0,    0,
477         0,  121,  141,  145,    0,    0,    0,  167,  167,    0,
478       171,    0,  193,    0,    0,    0,    0,    0,    0,   42,
479        71,   71,   71,    0,   55,    0,   54,   71,    0,    0,
480
481       121,  121,  121,    0,  109,    0,  108,  121,  141,  145,
482         0,    0,  159,  158,    0,    0,  167,    0,  168,  171,
483         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
484         0,   71,   71,   71,   57,   56,    0,    0,    0,  101,
485       100,  121,  121,  121,  111,  110,    0,    0,  141,  141,
486         0,  152,    0,  163,  162,    0,    0,    0,  178,    0,
487         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
488        71,   71,   71,    0,   59,   58,  121,  121,  121,    0,
489       113,  112,  141,  141,    0,  161,  160,    0,    0,    0,
490         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
491
492        71,   71,   71,  121,    0,    0,  121,  141,  141,    0,
493         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
494         0,    0,    0,   51,   50,   71,   71,   71,   71,  121,
495         0,  107,  106,  121,    0,    0,  141,    0,    0,  141,
496         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
497         0,    0,    0,    0,    0,    0,   71,   71,   71,   71,
498         0,    0,    0,    0,    0,  133,  132,  141,    0,  131,
499       130,  141,    0,    0,    0,    0,    0,    0,    0,    0,
500         0,    0,    0,    0,    0,    0,    0,    0,    0,   71,
501        71,   71,   71,    0,  103,  102,    0,    0,    0,  141,
502
503       141,    0,    0,    0,    0,    0,    0,    0,    0,    0,
504         0,    0,    0,   12,    0,   12,    0,    0,    0,   71,
505        71,   71,   71,    0,    0,    0,    0,  141,  141,    0,
506         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
507         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
508         0,   71,    0,    0,    0,    0,    0,    0,  141,  141,
509         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
510         0,    0,    0,    0,   53,   52,    0,   63,   62,    0,
511        61,   60,   71,    0,   67,   66,    0,    0,    0,    0,
512       141,  141,    0,    0,    0,    0,    0,    0,    0,    0,
513
514         0,    0,   11,    0,    0,   71,    0,    0,    0,    0,
515       141,  141,    0,    0,    0,    0,    0,    0,    0,    0,
516         0,    0,   25,    0,   71,    0,    0,    0,    0,  141,
517       141,    0,    0,    0,    0,    0,    0,    0,    0,    0,
518         0,   25,    0,   71,    0,    0,    0,    0,  141,  141,
519         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
520         0,    0,    0,    0,   32,    0,    0,    0,  115,    0,
521       114,  141,  141,    0,    0,    0,    0,    0,    0,    0,
522         0,    0,    0,    0,    0,    0,    0,    0,   65,   64,
523       117,  116,  141,  141,    0,    0,    0,    0,    0,    0,
524
525         0,    0,    0,    0,    0,    0,    0,    0,    0,  141,
526       141,    0,    0,    0,    0,    0,    0,    0,    0,    0,
527         0,    0,    0,    0,    0,    0,    0,    0,  141,  141,
528         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
529         0,    0,    0,    0,    0,    0,    0,    0,    0,  141,
530       141,    0,    0,    0,    0,    0,    0,    0,    0,    0,
531         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
532       141,  141,    0,    0,    0,    0,    0,    0,    0,    0,
533         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
534         0,  141,  141,    0,    0,    0,    0,    0,    0,    0,
535
536         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
537         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
538         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
539         0,    0,    0,    0,    0,    0,  137,  136,    0,  135,
540       134,    0,    0,    0,    0,    0,    0,    0,    0,    0,
541         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
542         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
543         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
544         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
545         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
546
547         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
548         0,    0,    0,    0,    0,    0,    0,   19,    0,    0,
549         0,   13,    0,    0,    0,    0,    0,    0,   21,    0,
550         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
551         0,    0,   15,    0,    0,    0,    0,    0,    0,    0,
552         0,    0,   18,    0,    0,   14,    0,    0,    0,    0,
553        16,    0,   20,    0,   17,    0,    0,    0,    0,    0,
554         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
555         0,    0,    0,    0,    0,    0,    0,    0,    0,   22,
556         0
557
558     } ;
559
560 static yyconst flex_int32_t yy_ec[256] =
561     {   0,
562         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
563         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
564         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
565         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
566         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
567        13,   13,   13,   13,   13,   13,   13,   14,   15,   16,
568        17,   18,   19,    1,   20,   21,   22,   23,   24,   25,
569        26,   27,   28,   26,   26,   26,   29,   30,   31,   32,
570        26,   33,   34,   35,   26,   26,   26,   26,   36,   26,
571        37,    1,   38,    1,   39,    1,   40,   41,   42,   43,
572
573        44,   45,   46,   47,   48,   26,   49,   50,   51,   52,
574        53,   54,   55,   56,   57,   58,   59,   60,   61,   62,
575        63,   26,    1,    1,    1,    1,    1,    1,    1,    1,
576         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
577         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
578         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
579         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
580         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
581         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
582         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
583
584         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
585         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
586         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
587         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
588         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
589         1,    1,    1,    1,    1
590     } ;
591
592 static yyconst flex_int32_t yy_meta[64] =
593     {   0,
594         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
595         3,    1,    4,    5,    1,    1,    1,    6,    1,    7,
596         7,    7,    7,    7,    7,    5,    5,    5,    5,    5,
597         5,    5,    5,    5,    5,    5,    1,    1,    5,    7,
598         7,    7,    7,    7,    7,    5,    5,    5,    5,    5,
599         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
600         5,    5,    5
601     } ;
602
603 static yyconst flex_int16_t yy_base[1560] =
604     {   0,
605         0,    0,    0,    3,    6,    9,   24,   27,   11,   14,
606        15,   17,   29,   38,   45,   52,   59,   61,   67,   70,
607        99,  159,   73,   76,  117,  122,  125,  128,  177,  182,
608       185,  188,  204,  207,  210,  213,  228,  231,  247,  292,
609       265,  270,  273,  310,  337,  394,  315,  318,  355,  360,
610       363,  366,  412,  417,  420,  423,  451,  511,  469,  474,
611       477,  480,  571,  619,  529,  534,  537,  540,  667,  724,
612       589,  594,  597,  600,  637,  642,  645,  648,  685,  690,
613       781,  838,  693,  696,  742,  747,  750,  753,  799,  804,
614       807,  810,  895,  943,  856,  861,  864,  867,  991, 1048,
615
616       913,  918,  921,  924,  961,  966,  969,  972, 1009, 1014,
617      1105, 1165, 1017, 1066, 1088, 1124, 4181, 4182, 4182,   91,
618       143,   47,   62, 4182,  146,   77, 4182, 4182, 4170, 4182,
619      4182, 4161, 4182, 4174, 4174, 1034, 4182, 4182, 4182, 4182,
620      4172, 4172, 4136,  217, 4182,  149, 4155,    0,   79, 4182,
621      4128, 4182,  152, 1139, 1027, 1083, 1140,  368,  222, 4182,
622       235, 4153,    0,  138, 4182, 4122, 4182,  276,  425,  487,
623      4182,  321, 4151,    0,  223, 4182, 4108,    7, 4127, 4113,
624      4107, 4182,  498, 1082,  541,  486, 4182,  505, 4146,    0,
625       367, 4182, 4120, 4122, 4182,  559,  546,  373, 4182,  564,
626
627      4143,    0,  430, 4182, 4117, 4182,  716,  702,  697, 4182,
628       773, 4141,    0,  550, 4182, 4118, 4114, 4116,   76, 4182,
629       776, 1136,  816,  817, 4182,  828, 4137,    0,  754, 4182,
630      4097, 4102, 4096, 4182,  885, 1141, 1026,  873, 4182, 1020,
631      4133,    0,  874, 4182, 4107, 4182, 1040, 1142, 1144, 4182,
632      1069, 4131,    0, 1133, 4182, 4089, 4094, 4098, 4087, 4182,
633      1075, 1145, 1187, 1192, 1195, 4182, 1096, 4126,    0, 1196,
634      4182, 4103, 4182, 1205, 1200, 4137, 4103, 1214,   34, 4078,
635      4182, 4129, 4120, 4182, 4182, 4182,   26,   36, 4079, 4078,
636      4076, 4116, 4083, 4182,    0, 4076, 4077, 4077, 4077, 4080,
637
638      4071, 4073, 4072, 4071, 4182,    0, 4073, 4074, 4182,    0,
639      4081, 1219, 4062, 4057, 4057, 4077, 4069, 4059, 4182,    0,
640      1226, 4064, 4059, 4182,    0, 1229, 4056, 4182,    0, 4059,
641      1235, 4052, 4069, 4068, 4057, 4182,    0, 4048, 4051, 4062,
642      4047, 4054, 4182,    0, 1245, 4051, 4182,    0, 4048, 4042,
643      4048, 4057, 4042, 4039, 4182,    0, 4044, 4053, 4055, 4073,
644      4072, 4079,  104, 4037, 4182,  127,    0, 4033, 4033, 4070,
645      4069, 4030, 4182, 4042, 4024, 1251, 1254, 4023, 4037, 4026,
646      4024, 4017, 4016, 4015, 4029, 1257, 1261, 4024, 1264, 1274,
647      4027, 4031, 4025, 4010, 1282, 1285, 4014, 1288, 1292, 4007,
648
649      1304, 1307, 1312, 1315, 1324, 1328, 4022, 1331, 1341, 4020,
650      4007, 4004, 1337, 1349, 1354, 4021, 1357, 1362, 1366, 4008,
651      1373, 1383, 1391, 1396, 4017, 4000, 4007, 4000, 1399, 1402,
652      4009, 3995, 1408, 1419, 4031, 4182, 4034, 4182, 4182,  177,
653      4001, 4182, 4035, 4034, 3991, 4182, 4182, 3989, 3988, 3997,
654      1425, 1428, 4182, 1431, 3986, 3993, 3993, 3999, 3982, 3981,
655      3980, 1436, 1448, 1452, 4182, 1458, 3987, 1475, 4182, 4182,
656      3980, 3982, 3978, 3989, 1465, 1470, 4182, 1483, 3978, 1487,
657      4182, 4182, 3987, 1495, 1500, 4182, 1503, 1506, 4182, 4182,
658      1520, 1523, 4182, 1526, 3969, 1530, 4182, 4182, 3977, 3980,
659
660      3983, 1543, 1546, 4182, 1549, 1555, 1567, 3984, 1575, 1578,
661      1586, 1591, 4182, 1594, 3976, 1604, 4182, 4182, 1612, 1615,
662      4182, 1618, 3966, 1621, 3984, 3964, 1624, 1637, 4182, 1641,
663      3962, 3976, 1644, 1647, 4182, 1654, 3996,  165, 1664, 4182,
664      4182, 4003, 4002, 3971, 3962, 1671, 1461, 3955, 1674, 3969,
665      3968, 3967, 3966, 1682, 1689, 1699, 3969, 3963, 3948, 1702,
666      1705, 1708, 1677, 1711, 1721, 1728, 3958, 3963, 3952, 1731,
667      1734, 1751, 4182, 4182, 3945, 1759, 4182, 4182, 1738, 3988,
668      1769, 3953, 1774, 1786, 3942, 3960, 1795, 3947, 1777, 1798,
669      3977,  185, 3978, 1801, 4182, 3977, 4182, 4182, 3941, 3941,
670
671      1804, 1807, 3949, 1821, 3934, 1824, 1827, 3934, 1830, 4182,
672      4182, 1838, 3948, 3944, 3929, 1848, 1860, 1851, 1868, 3941,
673      1880, 1844, 1856, 1883, 1891, 1897, 3942, 3921, 3937, 1900,
674      1904, 3937, 1916, 3942, 1919, 3938, 1922, 3926, 1926, 4182,
675      4182, 3930, 3919, 1940, 3932, 1943, 1946, 1962, 3940, 1192,
676       121,  243, 4182, 3918, 1965, 1968, 3929, 3915, 1971, 1974,
677      1985, 3923, 3914, 3923, 1988, 4182, 4182, 1996, 3937, 3936,
678      3918, 2004, 4182, 2008, 4182, 4182, 2016, 4182, 2021, 3907,
679      2027, 3925, 2034, 3932, 3931, 3913, 2043, 4182, 3907, 2046,
680      3901, 2049, 3906, 3906, 3908, 2052, 3903, 2056, 4182, 4182,
681
682      2069, 3934,   67,  140,  184, 3902, 2072, 2076, 2090, 2093,
683      2096, 2099, 2103, 3902, 3907, 3897,  258,  302, 3899, 2108,
684      3901, 2112, 2116, 3902, 3892,  303,  359, 3895, 3892, 2130,
685      4182, 3891, 2133, 2136, 3898, 3890, 2139, 3882, 2152, 3902,
686      2156,  298,  225, 3899, 2159, 4182, 4182, 2169, 2173, 2176,
687      2179, 3889, 3884, 3887, 3909, 3927, 3907, 3922, 3886, 2182,
688      4182, 2186, 2203, 4182, 4182, 3881, 3875, 3902, 3920, 3900,
689      3915, 3879, 3883, 2190, 2211, 2214, 2224, 2219, 3877, 2235,
690      2238, 2241, 4182, 2298,  272,  176, 3877, 2244, 2247, 4182,
691      3861, 3876, 3865, 3910, 4182, 3906, 4182, 2252, 2264, 2268,
692
693      3869, 3863, 3862, 3795, 4182, 3791, 4182, 2276, 1177, 2282,
694      2285, 2288, 4182, 4182, 2302, 2305, 2318, 2321, 4182, 2324,
695      2329,  390,  365,  422,  288,  447,  457,  342,  517, 3746,
696      2338, 3724, 3740, 3735, 4182, 4182, 2347, 2356, 2364, 4182,
697      4182, 3730, 3731, 3724, 4182, 4182, 2372, 2376, 3712, 3710,
698      2384, 4182, 2388, 4182, 4182, 2396, 2401, 2412, 4182,  200,
699       429,  375,  752,  507,  589,  596,  753,  809, 3706, 2415,
700      2418, 3721, 3714, 2422, 4182, 4182, 3698, 2434, 3701, 2437,
701      4182, 4182, 3680, 3691, 2446, 4182, 4182,  600,  187,  567,
702       594,  536,  876,  645,  644, 2458, 3686, 2461, 2464, 2468,
703
704      3678,  438, 3662, 3669, 2480, 2483, 3645, 2491, 2496,  615,
705      2499,  663, 2502,  693,  317, 2507,  647, 2519, 2524, 2541,
706      3451, 2530, 2549, 4182, 4182, 3458, 3461, 3460, 3462, 2558,
707      2561, 4182, 4182, 2574, 2577, 2580, 3440, 2593, 2596, 3439,
708       891, 2604,  705, 2609,  924,  742,  597, 2612, 2536, 2615,
709      2622, 2633, 2651, 2689, 3451, 2646, 3448, 3454, 3443, 3432,
710      2669, 2672, 2707, 2710, 2719, 4182, 4182, 3437, 2727, 4182,
711      4182, 3436, 1085,  798,  913,  969,  920,  834, 1072, 1208,
712      2681, 2735, 2738,   17,  432, 2756, 2794, 3423, 2774, 3374,
713      3335, 3333, 3153, 2746, 4182, 4182, 2777,  857, 1001, 3118,
714
715      3084,  921,  799, 2786,  949, 1161,  996, 2812, 1101, 1284,
716      2815,  546,  749, 3128, 1116, 3122, 2821, 2980, 2824, 2833,
717      2841, 2844, 2849, 2964, 2939, 2944, 2861, 2810, 2774, 2852,
718       469, 2861,  901, 2869, 1232, 2872, 1264, 1344, 1318, 2763,
719      2732, 2737, 2878, 2669, 2882, 2890, 2895, 2906, 2909, 2917,
720      2922, 2609, 2933, 2939, 2609, 2495, 2479, 2388, 2333, 2222,
721      2949,  966, 1355, 1227, 2952,  819, 1389, 1364, 1361, 1390,
722      2242, 2148, 2955, 2959, 4182, 4182, 2972, 4182, 4182, 2985,
723      4182, 4182, 2154, 2993, 4182, 4182, 2118, 2116, 2098, 2050,
724      1982, 1980, 1400, 1294, 1423, 1354, 1499,  971, 1477, 1430,
725
726      1496, 1519, 4182, 1980, 3002, 1919, 1931, 1909, 1868, 1867,
727      1754, 1706, 1557, 3005, 1525, 3008, 1565, 1462, 1568, 3011,
728      1513, 1544, 2865, 3014, 1571, 1597, 1577, 1484, 1471, 1445,
729      1369, 1617, 3031, 1587, 3039, 1619, 1255, 1645, 3050, 3058,
730      1537, 3061, 3067, 3070, 1325, 1150, 1010,  932,  840,  830,
731      1672, 1545, 1614, 1698, 1702, 1725, 1727, 1729, 1740, 1857,
732      1870, 3075, 3086, 3092, 4182, 3095, 3099,  819, 4182,  755,
733      4182,  657,  654, 1849,  968, 1756, 3111, 1817, 1820, 1887,
734      1222, 3114, 1872, 1894, 1936, 1938, 3117, 3134, 4182, 4182,
735      4182, 4182,  621,  572, 3142, 1825, 1986, 3145, 2068, 2072,
736
737      3153, 1643, 3163, 2113, 2146, 1920, 1967, 1939, 1944,  549,
738       501, 3171, 1397, 1642, 2066, 2070, 1775, 1799, 3181, 1893,
739      2177, 2201, 2023, 2099, 2217, 2239, 1998, 2045,  399,  394,
740      2258, 2280, 1275, 1921, 2149, 2193, 2148, 2295, 2312, 2326,
741      1616, 2294, 2318, 2299, 2383, 2366, 2378, 2278, 2337,  329,
742       249, 2353, 2388, 1670, 2181, 2424, 2435, 2292, 2478, 2414,
743      2460, 1429, 2451, 2513, 2506, 2550, 2426, 2494, 2409, 2411,
744       182,   53, 2531, 2548, 1224, 1395, 2528, 2575, 1700, 2345,
745      2553, 2567, 1963, 2616, 2700, 2440, 2627, 2570, 2611, 2585,
746      2725, 3189, 3192, 2789, 2844, 1803, 2134, 2767, 2841, 2264,
747
748      2669, 2884, 2887, 3198, 2898, 2909, 2773, 2928, 2682, 2685,
749      2716, 2787, 3201, 3208, 3217, 3220, 2915, 2920, 1019, 2391,
750      2790, 2896, 2926, 2982, 2931, 2962, 3228, 2980, 3029, 3001,
751      3003, 2961, 2974, 2972, 3032, 3233, 4182, 4182, 3241, 4182,
752      4182, 3040, 3049, 2206, 2802, 3033, 3057, 2859, 3104, 3074,
753      3088, 1991, 3091, 3109, 3106, 3110, 3068, 3115, 3168, 3197,
754      3132, 3207, 3135, 3170, 3222, 3230, 3209, 3210, 3220, 3231,
755      2556, 3240, 3243, 3237, 3241, 3112, 3238, 3242, 3245, 3253,
756      3254, 2063, 1556, 3248, 3249, 2748, 3018, 3257, 3258, 1749,
757      3255, 3256, 2764, 3021, 3259, 3260, 3261, 3264, 3265, 3268,
758
759      3291, 3269, 3271, 3302, 3272, 3282, 3283, 3279, 3292, 3310,
760      3312, 3143, 3298, 3299, 3303, 3305, 3329, 4182, 3306, 3308,
761      3336, 4182, 3316, 3317, 2300, 3325, 3326, 3353, 4182, 3362,
762      3330, 3189, 3327, 3334, 3340, 3344, 3341, 3342, 3379, 3361,
763      3369, 3386, 4182, 3389, 3380, 3385, 3397, 3390, 3393, 3410,
764      3418, 3421, 4182, 3427, 3430, 4182, 3438, 2873, 3387, 3447,
765      4182, 3450, 4182, 3455, 4182, 2623, 2661, 3354, 3391, 2983,
766      3417, 3355, 3408, 3409, 3420, 3419, 3425, 3456, 3461, 3437,
767      3443, 3388, 3445, 3446, 3448, 3470, 3469, 3479, 3490, 4182,
768      4182, 3508, 3515, 3522, 3529, 3536, 3543, 3550, 3557, 3564,
769
770      3571, 3578, 3585, 3592, 3599, 3606, 3613, 3620, 3627, 3634,
771      3641, 3648, 3655, 3662, 3669, 3676, 3683, 3690, 3697, 3702,
772      3707, 3712, 3717, 3722, 3727, 3732, 3737, 3742, 3747, 3754,
773      3757, 3760, 3763, 3766, 3769, 3772, 3775, 3778, 3781, 3784,
774      3791, 3795, 3801, 3807, 3813, 3819, 3825, 3831, 3837, 3843,
775      3849, 3855, 3862, 3869, 3876, 3883, 3890, 3897, 3904
776     } ;
777
778 static yyconst flex_int16_t yy_def[1560] =
779     {   0,
780      1492, 1492, 1493, 1493, 1493, 1493, 1494, 1494, 1495, 1495,
781      1496, 1496, 1497, 1497, 1497, 1497, 1498, 1498, 1492, 1492,
782      1499, 1499, 1500, 1500, 1500, 1500, 1492, 1492, 1500, 1500,
783      1492, 1492, 1500, 1500, 1500, 1500, 1492, 1492, 1501, 1501,
784      1502, 1502, 1492, 1492, 1503, 1503, 1504, 1504, 1492, 1492,
785      1504, 1504, 1504, 1504, 1492, 1492, 1505, 1505, 1506, 1506,
786      1492, 1492, 1507, 1507, 1508, 1508, 1492, 1492, 1509, 1509,
787      1510, 1510, 1492, 1492, 1510, 1510, 1510, 1510, 1492, 1492,
788      1511, 1511, 1512, 1512, 1492, 1492, 1512, 1512, 1512, 1512,
789      1492, 1492, 1513, 1513, 1514, 1514, 1492, 1492, 1515, 1515,
790
791      1516, 1516, 1492, 1492, 1516, 1516, 1516, 1516, 1492, 1492,
792      1517, 1517, 1518, 1518, 1519, 1519, 1491, 1491, 1491, 1491,
793      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
794      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
795      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1520, 1491, 1491,
796      1520, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
797      1491, 1491, 1521, 1491, 1491, 1521, 1491, 1491, 1491, 1491,
798      1491, 1491, 1491, 1522, 1491, 1491, 1522, 1522, 1522, 1522,
799      1522, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1523,
800      1491, 1491, 1523, 1523, 1491, 1491, 1491, 1491, 1491, 1491,
801
802      1491, 1524, 1491, 1491, 1524, 1491, 1491, 1491, 1491, 1491,
803      1491, 1491, 1525, 1491, 1491, 1525, 1525, 1525, 1525, 1491,
804      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1526, 1491, 1491,
805      1526, 1526, 1526, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
806      1491, 1527, 1491, 1491, 1527, 1491, 1491, 1491, 1491, 1491,
807      1491, 1491, 1528, 1491, 1491, 1528, 1528, 1528, 1528, 1491,
808      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1529, 1491,
809      1491, 1529, 1491, 1491, 1491, 1491, 1491, 1491, 1530, 1491,
810      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
811      1491, 1491, 1491, 1491, 1520, 1520, 1531, 1491, 1491, 1491,
812
813      1491, 1491, 1491, 1491, 1491, 1521, 1521, 1532, 1491, 1522,
814      1522, 1522, 1522, 1522, 1522, 1522, 1533, 1491, 1491, 1523,
815      1523, 1523, 1534, 1491, 1524, 1524, 1535, 1491, 1525, 1525,
816      1525, 1525, 1525, 1525, 1536, 1491, 1526, 1526, 1526, 1526,
817      1537, 1491, 1491, 1527, 1527, 1538, 1491, 1528, 1528, 1528,
818      1528, 1528, 1539, 1491, 1491, 1529, 1529, 1540, 1491, 1491,
819      1541, 1491, 1541, 1491, 1491, 1491, 1542, 1491, 1491, 1491,
820      1491, 1491, 1491, 1491, 1520, 1543, 1543, 1491, 1491, 1491,
821      1491, 1491, 1491, 1491, 1521, 1544, 1544, 1522, 1491, 1491,
822      1522, 1522, 1522, 1522, 1545, 1545, 1491, 1491, 1491, 1523,
823
824      1546, 1546, 1491, 1491, 1547, 1547, 1525, 1491, 1491, 1525,
825      1525, 1525, 1548, 1548, 1526, 1526, 1526, 1549, 1549, 1491,
826      1491, 1491, 1550, 1550, 1528, 1528, 1528, 1528, 1551, 1551,
827      1491, 1529, 1552, 1552, 1491, 1491, 1541, 1491, 1491, 1541,
828      1491, 1491, 1542, 1491, 1491, 1491, 1491, 1491, 1491, 1520,
829      1491, 1543, 1491, 1543, 1491, 1491, 1491, 1491, 1491, 1491,
830      1491, 1521, 1491, 1544, 1491, 1544, 1522, 1491, 1491, 1491,
831      1522, 1522, 1522, 1522, 1491, 1545, 1491, 1545, 1491, 1491,
832      1491, 1491, 1523, 1491, 1546, 1491, 1546, 1491, 1491, 1491,
833      1491, 1547, 1491, 1547, 1525, 1491, 1491, 1491, 1525, 1525,
834
835      1525, 1491, 1548, 1491, 1548, 1491, 1491, 1526, 1491, 1491,
836      1491, 1549, 1491, 1549, 1491, 1491, 1491, 1491, 1491, 1550,
837      1491, 1550, 1528, 1528, 1528, 1528, 1491, 1551, 1491, 1551,
838      1491, 1529, 1491, 1552, 1491, 1552, 1491, 1541, 1553, 1491,
839      1491, 1491, 1491, 1491, 1520, 1543, 1491, 1491, 1491, 1491,
840      1491, 1491, 1491, 1491, 1491, 1544, 1522, 1522, 1522, 1522,
841      1522, 1545, 1491, 1523, 1546, 1547, 1525, 1525, 1525, 1525,
842      1548, 1491, 1491, 1491, 1526, 1491, 1491, 1491, 1549, 1491,
843      1550, 1528, 1491, 1491, 1528, 1528, 1551, 1491, 1529, 1552,
844      1491, 1541, 1553, 1553, 1491, 1553, 1491, 1491, 1491, 1520,
845
846      1543, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
847      1491, 1544, 1522, 1522, 1522, 1491, 1491, 1491, 1491, 1522,
848      1545, 1491, 1491, 1491, 1546, 1547, 1525, 1525, 1525, 1491,
849      1491, 1525, 1548, 1526, 1549, 1491, 1550, 1528, 1491, 1491,
850      1491, 1528, 1528, 1551, 1491, 1491, 1491, 1552, 1491, 1541,
851      1553, 1553, 1491, 1491, 1520, 1543, 1491, 1491, 1491, 1491,
852      1544, 1522, 1522, 1522, 1491, 1491, 1491, 1491, 1491, 1491,
853      1522, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1547, 1525,
854      1525, 1525, 1491, 1491, 1491, 1525, 1491, 1491, 1526, 1549,
855      1491, 1550, 1528, 1528, 1528, 1551, 1491, 1491, 1491, 1491,
856
857      1552, 1491, 1541, 1553, 1553, 1491, 1491, 1491, 1543, 1491,
858      1491, 1491, 1544, 1522, 1522, 1522, 1491, 1491, 1522, 1547,
859      1525, 1491, 1491, 1525, 1525, 1491, 1491, 1525, 1526, 1491,
860      1491, 1491, 1550, 1528, 1528, 1528, 1551, 1491, 1552, 1491,
861      1541, 1553, 1553, 1491, 1491, 1491, 1491, 1543, 1491, 1491,
862      1544, 1522, 1522, 1522, 1491, 1491, 1491, 1491, 1522, 1491,
863      1491, 1525, 1491, 1491, 1491, 1525, 1525, 1491, 1491, 1491,
864      1491, 1525, 1526, 1491, 1550, 1491, 1491, 1528, 1528, 1551,
865      1491, 1552, 1491, 1541, 1553, 1553, 1491, 1543, 1491, 1491,
866      1522, 1522, 1522, 1491, 1491, 1491, 1491, 1522, 1491, 1491,
867
868      1525, 1525, 1525, 1491, 1491, 1491, 1491, 1525, 1526, 1491,
869      1550, 1491, 1491, 1491, 1491, 1491, 1528, 1491, 1491, 1491,
870      1552, 1541, 1541, 1541, 1541, 1541, 1541, 1553, 1553, 1491,
871      1543, 1522, 1522, 1522, 1491, 1491, 1491, 1491, 1491, 1491,
872      1491, 1525, 1525, 1525, 1491, 1491, 1491, 1491, 1526, 1526,
873      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1541,
874      1541, 1541, 1541, 1541, 1541, 1541, 1553, 1553, 1491, 1543,
875      1522, 1522, 1522, 1491, 1491, 1491, 1525, 1525, 1525, 1491,
876      1491, 1491, 1526, 1526, 1491, 1491, 1491, 1541, 1541, 1541,
877      1541, 1541, 1541, 1541, 1553, 1553, 1491, 1543, 1491, 1491,
878
879      1522, 1522, 1522, 1525, 1491, 1491, 1525, 1526, 1526, 1541,
880      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1553, 1553, 1553,
881      1491, 1543, 1491, 1491, 1491, 1522, 1522, 1522, 1522, 1525,
882      1491, 1491, 1491, 1525, 1491, 1491, 1526, 1491, 1491, 1526,
883      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1553,
884      1553, 1553, 1554, 1555, 1491, 1543, 1522, 1522, 1522, 1522,
885      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1526, 1491, 1491,
886      1491, 1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
887      1541, 1541, 1553, 1556, 1557, 1554, 1555, 1491, 1543, 1522,
888      1522, 1522, 1522, 1491, 1491, 1491, 1491, 1491, 1491, 1526,
889
890      1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
891      1541, 1556, 1553, 1558, 1557, 1559, 1553, 1491, 1543, 1522,
892      1522, 1522, 1522, 1491, 1491, 1491, 1491, 1526, 1526, 1541,
893      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1558,
894      1491, 1559, 1553, 1491, 1543, 1491, 1491, 1491, 1491, 1491,
895      1491, 1522, 1491, 1491, 1491, 1491, 1491, 1491, 1526, 1526,
896      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
897      1491, 1491, 1543, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
898      1491, 1491, 1522, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
899      1526, 1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
900
901      1541, 1541, 1491, 1491, 1543, 1522, 1491, 1491, 1491, 1491,
902      1526, 1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
903      1541, 1541, 1491, 1543, 1522, 1491, 1491, 1491, 1491, 1526,
904      1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
905      1541, 1491, 1543, 1522, 1491, 1491, 1491, 1491, 1526, 1526,
906      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
907      1541, 1541, 1541, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
908      1491, 1526, 1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
909      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1491, 1491, 1491,
910      1491, 1491, 1526, 1526, 1541, 1541, 1541, 1541, 1541, 1541,
911
912      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1526,
913      1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
914      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1526, 1526,
915      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
916      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1526,
917      1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
918      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
919      1526, 1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
920      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
921      1541, 1526, 1526, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
922
923      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
924      1541, 1541, 1491, 1491, 1491, 1491, 1541, 1541, 1541, 1541,
925      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
926      1541, 1541, 1541, 1541, 1541, 1491, 1491, 1491, 1491, 1491,
927      1491, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
928      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
929      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
930      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
931      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
932      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
933
934      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
935      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1491, 1541, 1541,
936      1541, 1491, 1541, 1541, 1541, 1541, 1541, 1541, 1491, 1541,
937      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
938      1541, 1541, 1491, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
939      1541, 1541, 1491, 1541, 1541, 1491, 1541, 1541, 1541, 1541,
940      1491, 1541, 1491, 1541, 1491, 1541, 1541, 1541, 1541, 1541,
941      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
942      1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1491,
943         0, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
944
945      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
946      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
947      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
948      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
949      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
950      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491
951     } ;
952
953 static yyconst flex_int16_t yy_nxt[4246] =
954     {   0,
955      1491,  120,  121,  120,  120,  121,  120,  120,  121,  120,
956       120,  121,  120,  128, 1491,  122,  128,  131,  122,  131,
957       129,  123, 1013,  129,  123,  125,  121,  125,  125,  121,
958       125,  134,  135,  132, 1014,  132,  136,  137,  366,  126,
959       134,  135,  126,  362,  138,  136,  137,  134,  135,  312,
960       139,  279,  136,  138,  134,  135,  363,  139,  313,  136,
961       138,  141,  142,  141,  142,  280,  279,  138,  121,  121,
962       121,  121,  121,  121,  153,  121,  153,  153,  121,  153,
963       281,  282,  144,  282,  438,  144,  368,  367,  154,  369,
964       741,  154,  278,  278,  278,  281,  143,  281,  143,  145,
965
966       146,  121,  146,  145,  145,  145,  145,  145,  145,  145,
967       147,  145, 1293,  145,  149,  145,  150,  145,  153,  121,
968       153,  438,  333,  153,  121,  153,  121,  121,  121,  121,
969       121,  121,  155,  334,  440,  145,  145,  155,  595,  366,
970       156,  442,  282,  156,  278,  278,  278,  278,  278,  278,
971       278,  278,  278,  278,  278,  278,  281,  595,  151,  145,
972       146,  121,  146,  145,  145,  145,  145,  145,  145,  145,
973       147,  145,  704,  145,  149,  145,  150,  145,  153,  121,
974       153,  742,  438,  153,  121,  153,  121,  121,  121,  121,
975       121,  121,  154,  595,  438,  145,  145,  154,  538,  592,
976
977       157,  595,  438,  157,  438,  153,  121,  153,  153,  121,
978       153,  153,  121,  153,  153,  121,  153,  438,  151,  155,
979       650,  282,  155,  829, 1292,  158,  282,  282,  158,  121,
980       121,  121,  121,  121,  121,  281,  278,  278,  278,  743,
981       281,  281,  595,  159,  911,  888,  159,  160,  161,  121,
982       161,  160,  160,  160,  160,  160,  160,  160,  162,  160,
983       595,  160,  164,  160,  165,  160,  168,  121,  168,  299,
984       293,  168,  121,  168,  121,  121,  121,  278,  278,  278,
985       169,  786,  755,  160,  160,  169,  705,  756,  170,  595,
986      1272,  166,  160,  161,  121,  161,  160,  160,  160,  160,
987
988       160,  160,  160,  162,  160,  438,  160,  164,  160,  165,
989       160,  121,  121,  121,  828,  595,  183,  121,  183,  183,
990       121,  183,  278,  278,  278,  170,  757,  768,  160,  160,
991       184,  758,  769,  184,  438,  863,  166,  171,  172,  121,
992       172,  171,  171,  171,  171,  171,  171,  171,  173,  171,
993       785,  171,  175,  171,  176,  171,  121,  121,  121,  595,
994       947,  121,  121,  121,  183,  121,  183,  183,  121,  183,
995       185,  282,  282,  171,  171,  185,  177,  282,  184,  297,
996      1271,  184,  438,  770,  178,  281,  281,  179,  771,  867,
997       180,  281,  438,  181,  171,  172,  121,  172,  171,  171,
998
999       171,  171,  171,  171,  171,  173,  171,  438,  171,  175,
1000       171,  176,  171,  183,  121,  183,  890,  861,  183,  121,
1001       183,  121,  121,  121,  121,  121,  121,  186,  304,  282,
1002       171,  171,  186,  177,  282,  185,  308, 1251,  185,  438,
1003      1013,  178, 1250,  281,  179,  860,  438,  180,  281, 1016,
1004       181,  187,  188,  121,  188,  187,  187,  187,  187,  187,
1005       187,  187,  189,  187,  438,  187,  191,  187,  192,  187,
1006       196,  121,  196,  862,  438,  196,  121,  196,  121,  121,
1007       121,  121,  121,  121,  197,  889,  438,  187,  187,  197,
1008       282,  282,  198,  927,  928,  198,  864,  317,  193,  278,
1009
1010       278,  278,  865, 1062,  281,  281,  278,  278,  278,  866,
1011       194,  187,  188,  121,  188,  187,  187,  187,  187,  187,
1012       187,  187,  189,  187,  438,  187,  191,  187,  192,  187,
1013       207,  121,  207,  298,  595,  207,  121,  207,  121,  121,
1014       121,  121,  121,  121,  208,  282,  892,  187,  187,  208,
1015       282, 1013,  209,  438,  282,  209, 1230,  323,  193,  281,
1016       278,  278,  278, 1014,  281,  278,  278,  278,  281,  868,
1017       194,  199,  200,  121,  200,  199,  199,  199,  199,  199,
1018       199,  199,  201,  199,  438,  199,  203,  199,  204,  199,
1019       221,  121,  221,  914,  318,  221,  121,  221,  121,  121,
1020
1021       121,  121,  121,  121,  222, 1229,  438,  199,  199,  222,
1022      1211,  438,  185,  438,  438,  185,  912,  438,  205,  199,
1023       200,  121,  200,  199,  199,  199,  199,  199,  199,  199,
1024       201,  199,  438,  199,  203,  199,  204,  199,  221,  121,
1025       221,  893,  913,  221,  121,  221,  221,  121,  221,  221,
1026       121,  221,  222,  979,  894,  199,  199,  222,  910, 1210,
1027       223,  595,  438,  223,  438,  941,  205,  210,  211,  121,
1028       211,  210,  210,  210,  210,  210,  210,  210,  212,  210,
1029       438,  210,  214,  210,  215,  210,  121,  121,  121,  918,
1030       949,  121,  121,  121,  235,  121,  235,  235,  121,  235,
1031
1032       224,  282,  917,  210,  210,  224,  282,  216,  236, 1194,
1033       438,  236, 1193,  327,  217,  281,  218,  278,  278,  278,
1034       281,  943,  438,  219,  210,  211,  121,  211,  210,  210,
1035       210,  210,  210,  210,  210,  212,  210,  946,  210,  214,
1036       210,  215,  210,  121,  121,  121,  300,  975,  121,  121,
1037       121,  235,  121,  235,  235,  121,  235,  237,  282,  438,
1038       210,  210,  237, 1192,  216,  236,  595,  596,  236,  438,
1039       595,  217,  281,  218,  278,  278,  278,  278,  278,  278,
1040       219,  225,  226,  121,  226,  225,  225,  225,  225,  225,
1041       225,  225,  227,  225,  978,  225,  229,  225,  230,  225,
1042
1043       235,  121,  235,  891,  895,  235,  121,  235,  121,  121,
1044       121,  121,  121,  121,  238,  438,  438,  225,  225,  238,
1045       282,  282,  237,  231, 1191,  237,  595,  335,  232,  278,
1046       278,  278, 1031, 1003,  281,  281,  438,  233,  225,  226,
1047       121,  226,  225,  225,  225,  225,  225,  225,  225,  227,
1048       225,  438,  225,  229,  225,  230,  225,  247,  121,  247,
1049       896, 1098,  247,  121,  247,  121,  121,  121,  121,  121,
1050       121,  248,  303, 1173,  225,  225,  248,  282,  282,  249,
1051       231, 1024,  249, 1172,  341,  232,  278,  278,  278, 1007,
1052      1025,  281,  281,  438,  233,  239,  240,  121,  240,  239,
1053
1054       239,  239,  239,  239,  239,  239,  241,  239,  438,  239,
1055       243,  239,  244,  239,  261,  121,  261,  915,  438,  261,
1056       121,  261,  121,  121,  121,  121,  121,  121,  262,  916,
1057       438,  239,  239,  262,  973, 1064,  263,  438,  438,  263,
1058      1171,  438,  245,  239,  240,  121,  240,  239,  239,  239,
1059       239,  239,  239,  239,  241,  239, 1004,  239,  243,  239,
1060       244,  239,  261,  121,  261,  977,  438,  261,  121,  261,
1061       261,  121,  261,  261,  121,  261,  262, 1006, 1030,  239,
1062       239,  262, 1033,  438,  264,  438,  438,  264,  438, 1094,
1063       245,  250,  251,  121,  251,  250,  250,  250,  250,  250,
1064
1065       250,  250,  252,  250, 1005,  250,  254,  250,  255,  250,
1066       121,  121,  121,  438, 1118,  121,  121,  121,  274,  121,
1067       274,  278,  278,  278,  265, 1026, 1196,  250,  250,  265,
1068       282,  282,  275, 1170, 1027,  256,  438,  257,  297,  258,
1069       287,  278,  278,  278,  281,  281, 1035,  259,  250,  251,
1070       121,  251,  250,  250,  250,  250,  250,  250,  250,  252,
1071       250, 1344,  250,  254,  250,  255,  250,  274,  121,  274,
1072       278,  278,  278,  288,  299,  342,  278,  278,  278,  289,
1073       301,  275,  303,  290,  250,  250,  282,  282,  291,  438,
1074       134,  135,  256,  317,  257,  136,  258,  278,  278,  278,
1075
1076       281,  281,  438,  276,  259,  266,  267,  121,  267,  266,
1077       266,  266,  266,  266,  266,  266,  268,  266,  438,  266,
1078       270,  266,  271,  266, 1013,  277,  134,  135, 1008,  298,
1079       299,  136,  300, 1016, 1037,  318, 1002,  282,  304,  276,
1080       282,  266,  266,  282,  282,  282,  282,  335,  282,  282,
1081       297,  281,  341,  346,  281, 1169,  353,  281,  281,  281,
1082       281,  277,  281,  281,  272,  266,  267,  121,  267,  266,
1083       266,  266,  266,  266,  266,  266,  268,  266,  438,  266,
1084       270,  266,  271,  266,  354,  298,  299,  299,  300,  318,
1085       342,  282,  301,  301,  302,  303,  282,  301,  318,  282,
1086
1087       282,  266,  266,  353,  282,  281,  278,  278,  278,  438,
1088       281,  358, 1034,  281,  281,  278,  278,  278,  281,  849,
1089       389,  389,  389,  703,  272,  438,  354,  398,  398,  398,
1090       403,  403,  403,  850,  354,  390,  408,  408,  408,  438,
1091       318,  438,  399, 1009,  438,  404,  421,  421,  421,  438,
1092      1096,  409,  451,  451,  451,  451,  451,  451,  463,  463,
1093       463,  422,  463,  463,  463,  389,  389,  389,  453, 1202,
1094      1066,  453,  438, 1296,  465,  468,  468,  468,  465,  469,
1095       390,  438,  470,  475,  475,  475,  475,  475,  475,  398,
1096       398,  398,  438,  480,  480,  480, 1158,  481, 1068,  477,
1097
1098       482,  438,  477,  454,  399,  484,  484,  484,  484,  484,
1099       484,  438,  466,  403,  403,  403,  488,  488,  488, 1038,
1100       489,  486, 1114,  490,  486,  491,  491,  491,  404,  491,
1101       491,  491,  408,  408,  408,  438, 1254,  478,  502,  502,
1102       502,  493,  496,  496,  496,  493,  497,  409, 1168,  498,
1103       502,  502,  502, 1070,  504,  506,  506,  506,  509,  509,
1104       509,  438,  487,  511,  511,  511,  504,  511,  511,  511,
1105       507,  438,  438,  510,  421,  421,  421, 1069,  438,  513,
1106       494,  438, 1116,  513,  516,  516,  516, 1100,  517,  422,
1107      1095,  518,  519,  519,  519, 1101,  505,  519,  519,  519,
1108
1109       527,  527,  527,  527,  527,  527,  438,  438,  521,  533,
1110       533,  533,  438,  521,  438, 1150,  529,  438,  514,  529,
1111       533,  533,  533, 1102, 1099,  535,  451,  451,  451,  451,
1112       451,  451,  451,  451,  451, 1113,  535,  554,  554,  554,
1113       438, 1233,  453,  522, 1297,  453,  438,  438,  453,  463,
1114       463,  463,  555,  463,  463,  463, 1115,  530, 1120,  463,
1115       463,  463,  602,  602,  602,  465,  475,  475,  475,  465,
1116       546,  475,  475,  475,  536,  465,  468,  468,  468,  438,
1117       469, 1283,  477,  470,  475,  475,  475,  477,  480,  480,
1118       480, 1149,  481, 1148,  438,  482,  484,  484,  484,  556,
1119
1120       477,  484,  484,  484,  484,  484,  484,  488,  488,  488,
1121      1119,  489,  486,  438,  490, 1147,  438,  486, 1137, 1121,
1122       486,  491,  491,  491,  491,  491,  491,  491,  491,  491,
1123       438,  496,  496,  496, 1117,  497,  438,  493,  498,  562,
1124       493, 1140,  438,  493,  502,  502,  502,  502,  502,  502,
1125       502,  502,  502, 1122,  438,  565,  506,  506,  506, 1134,
1126       504,  438,  438,  504, 1401, 1163,  504, 1141,  572,  572,
1127       572,  507,  573,  438,  438,  574,  509,  509,  509,  576,
1128       576,  576,  438,  577,  566,  438,  578,  511,  511,  511,
1129      1132,  510,  511,  511,  511,  511,  511,  511, 1136, 1146,
1130
1131       571, 1175, 1138,  513,  438,  516,  516,  516,  513,  517,
1132      1154,  513,  518,  519,  519,  519,  519,  519,  519,  519,
1133       519,  519,  583,  583,  583,  527,  527,  527, 1145,  521,
1134      1144,  438,  521,  438,  438,  521,  438,  584,  527,  527,
1135       527,  529,  527,  527,  527,  533,  533,  533,  533,  533,
1136       533, 1151,  579, 1157,  529,  533,  533,  533,  529,  438,
1137       438,  535,  438, 1262,  535,  594,  594,  594, 1159,  581,
1138      1176,  535,  451,  451,  451,  604,  604,  604,  622,  622,
1139       622,  595,  596,  554,  554,  554, 1234,  438,  453,  438,
1140       609,  609,  609,  587,  610, 1174, 1220,  611,  555,  590,
1141
1142       463,  463,  463,  616,  616,  616,  618,  618,  618,  475,
1143       475,  475,  623,  623,  623,  438,  465,  438,  617,  438,
1144      1275,  619,  484,  484,  484,  477, 1177,  624,  601,  491,
1145       491,  491,  630,  630,  630,  502,  502,  502,  486,  511,
1146       511,  511,  438,  620,  438,  493,  438,  631,  612, 1300,
1147      1180,  504,  572,  572,  572,  513,  573,  438, 1178,  574,
1148       576,  576,  576, 1131,  577,  621,  438,  578, 1182,  632,
1149       519,  519,  519,  438,  625,  583,  583,  583,  646,  646,
1150       646, 1179,  633, 1407, 1181,  626,  521,  639,  639,  639,
1151       584,  640,  438,  647,  641,  635,  527,  527,  527,  533,
1152
1153       533,  533,  594,  594,  594,  451,  451,  451,  602,  602,
1154       602, 1130,  529, 1319, 1197,  535,  438,  637,  595, 1237,
1155       438,  453,  604,  604,  604,  659,  659,  659,  659,  659,
1156       659,  609,  609,  609,  438,  610,  644,  438,  611,  463,
1157       463,  463,  438, 1238,  651,  622,  622,  622,  656,  616,
1158       616,  616,  618,  618,  618,  465,  648,  623,  623,  623,
1159       652,  665,  665,  665,  617,  666,  438,  619,  667,  668,
1160       668,  668,  624,  669,  438, 1199,  670, 1195, 1200,  660,
1161      1213,  672,  672,  672,  674,  674,  674,  438,  675,  438,
1162      1129,  676,  677,  677,  677, 1128,  661,  673,  491,  491,
1163
1164       491,  630,  630,  630,  438,  683,  683,  683,  678,  684,
1165       438,  438,  685, 1183,  493, 1201,  631,  687,  687,  687,
1166       511,  511,  511,  519,  519,  519, 1184,  639,  639,  639,
1167      1204,  640, 1127,  688,  641,  692,  513,  438,  438,  521,
1168       679,  527,  527,  527,  646,  646,  646,  698,  698,  698,
1169      1241,  699, 1205,  438,  700,  438,  438,  529, 1126,  647,
1170      1125,  438,  690,  533,  533,  533,  707,  707,  707,  451,
1171       451,  451,  659,  659,  659,  712,  712,  712, 1225,  535,
1172       438,  708, 1255,  696,  438,  453,  463,  463,  463,  665,
1173       665,  665, 1206,  666, 1207, 1227,  667,  668,  668,  668,
1174
1175      1228,  669,  465,  438,  670,  672,  672,  672,  438,  674,
1176       674,  674,  701,  675, 1304,  438,  676,  677,  677,  677,
1177       709,  673,  491,  491,  491, 1226, 1371,  713,  722,  722,
1178       722, 1123, 1112,  678, 1111,  683,  683,  683,  493,  684,
1179       438, 1214,  685,  723,  687,  687,  687,  730,  730,  730,
1180       519,  519,  519,  527,  527,  527, 1248,  698,  698,  698,
1181       688,  699,  438,  731,  700,  724,  521, 1244, 1401,  529,
1182       533,  533,  533,  707,  707,  707,  720,  745,  745,  745,
1183       438,  746, 1110,  438,  747,  438,  535,  438,  708,  438,
1184       733,  451,  451,  451,  749,  749,  749,  750,  750,  750,
1185
1186       712,  712,  712, 1249,  463,  463,  463,  453,  737,  760,
1187       760,  760,  739,  722,  722,  722,  438,  763,  763,  763,
1188       465,  764, 1235, 1217,  765,  761, 1236, 1218,  723, 1109,
1189       438,  730,  730,  730,  519,  519,  519,  776,  776,  776,
1190       527,  527,  527, 1245, 1320,  748,  751,  731, 1108, 1107,
1191       521,  438,  777,  533,  533,  533,  529,  784,  784,  784,
1192       745,  745,  745,  438,  746,  438,  438,  747, 1223,  535,
1193       451,  451,  451,  438,  749,  749,  749,  750,  750,  750,
1194       789,  789,  789,  760,  760,  760,  453,  799,  799,  799,
1195       775,  810,  810,  810,  438,  780,  790, 1106,  438,  761,
1196
1197      1104, 1224,  800,  782,  763,  763,  763, 1256,  764, 1258,
1198       438,  765,  519,  519,  519,  776,  776,  776,  438,  788,
1199       815,  815,  815,  438,  801,  812,  812,  812,  521,  813,
1200       777, 1276,  814, 1242,  438,  816,  818,  818,  818,  820,
1201       820,  820,  533,  533,  533,  451,  451,  451,  789,  789,
1202       789, 1257,  819,  837,  837,  837,  438, 1243,  535, 1103,
1203      1092,  453,  811, 1363,  790,  799,  799,  799,  838,  839,
1204       839,  839, 1246,  840, 1323,  438,  841,  847,  847,  847,
1205       800,  438,  831,  810,  810,  810,  851,  851,  851,  812,
1206       812,  812,  848,  813, 1247,  438,  814,  438,  821,  784,
1207
1208       784,  784,  852,  815,  815,  815,  853,  853,  853,  438,
1209       854,  438,  438,  855, 1252,  438,  438,  438,  816,  856,
1210       856,  856,  818,  818,  818,  820,  820,  820, 1439,  438,
1211       858,  858,  858, 1269,  857,  438, 1253,  822,  819,  451,
1212       451,  451, 1279,  438,  823,  824,  859,  825,  837,  837,
1213       837,  826, 1263,  827,  438,  453, 1259,  874,  874,  874,
1214      1265,  875,  438,  838,  876,  839,  839,  839, 1260,  840,
1215       438, 1091,  841,  847,  847,  847, 1264,  880,  880,  880,
1216       870,  881, 1261,  438,  882,  851,  851,  851,  848,  853,
1217       853,  853, 1270,  854, 1301,  438,  855,  856,  856,  856,
1218
1219       438,  852,  885,  885,  885,  438,  886, 1090,  438,  887,
1220      1267, 1273,  857,  858,  858,  858,  451,  451,  451,  899,
1221       899,  899, 1268,  874,  874,  874,  438,  875,  438,  859,
1222       876,  438,  453, 1345,  900,  905,  905,  905,  880,  880,
1223       880,  438,  881,  438, 1266,  882, 1274,  885,  885,  885,
1224       906,  886,  438, 1290,  887, 1291,  901,  438,  898,  919,
1225       919,  919,  451,  451,  451,  899,  899,  899,  438,  923,
1226       923,  923, 1281,  924,  920,  595,  925,  438,  453, 1277,
1227       900,  905,  905,  905,  931,  931,  931, 1288,  932, 1307,
1228      1278,  933,  935,  935,  935,  438,  906,  938,  938,  938,
1229
1230       942,  942,  942,  944,  944,  944, 1284,  936,  948,  948,
1231       948,  438,  939, 1089, 1088,  945,  438,  922, 1282,  438,
1232       950,  950,  950,  438,  438,  919,  919,  919, 1280,  937,
1233       438,  451,  451,  451,  940,  951,  595,  981,  981,  981,
1234       920,  595,  952,  952,  952,  438,  953,  453,  438,  954,
1235       923,  923,  923,  438,  924, 1289, 1286,  925,  595,  961,
1236       961,  961,  931,  931,  931,  438,  932,  438, 1285,  933,
1237       438,  956, 1298,  438,  962,  963,  963,  963,  935,  935,
1238       935,  965,  965,  965,  438,  966, 1294,  438,  967, 1390,
1239       964,  982,  438,  936,  938,  938,  938,  969,  969,  969,
1240
1241      1287,  970,  438, 1295,  971,  942,  942,  942, 1302,  939,
1242       944,  944,  944,  948,  948,  948,  950,  950,  950, 1299,
1243      1309,  438, 1303,  983,  983,  983,  438,  984,  438,  438,
1244       985,  951,  595,  438,  952,  952,  952,  974,  953,  595,
1245       438,  954,  976, 1087,  438,  980, 1311,  451,  451,  451,
1246       595,  593,  593,  593,  593,  593,  593,  593,  593,  593,
1247      1305, 1310,  593,  453, 1083,  593,  593,  593,  595,  593,
1248       961,  961,  961,  994,  994,  994, 1308,  995,  438, 1324,
1249       996, 1468,  981,  981,  981,  962,  438,  593,  593,  593,
1250       593,  593,  593,  593,  593,  593,  593,  593,  438,  438,
1251
1252       593,  989,  438,  593,  593,  593,  595,  593,  963,  963,
1253       963,  997,  997,  997, 1010,  998, 1072,  438,  999, 1469,
1254       965,  965,  965,  964,  966,  593,  593,  967,  969,  969,
1255       969, 1332,  970,  438, 1333,  971, 1011, 1011, 1011,  983,
1256       983,  983,  438,  984, 1306, 1041,  985,  994,  994,  994,
1257      1071,  995,  438, 1404,  996,  595,  593,  593,  593,  593,
1258       593, 1017,  593,  593,  593,  438, 1334,  593, 1041, 1410,
1259       593,  593,  593,  595,  593,  451,  451,  451,  997,  997,
1260       997,  438,  998, 1330,  438,  999, 1312, 1032, 1032, 1032,
1261       438,  453,  593,  593,  593,  593,  593,  593,  593,  593,
1262
1263       593,  593, 1017,  438,  438,  593,  438,  438,  593,  593,
1264       593,  595,  593, 1036, 1036, 1036, 1011, 1011, 1011,  438,
1265      1060, 1019, 1043, 1043, 1043,  451,  451,  451, 1321,  438,
1266       593,  593,  438, 1317, 1046, 1046, 1046, 1335,  595,  596,
1267      1346,  453, 1048, 1048, 1048, 1050, 1050, 1050, 1039, 1047,
1268      1053, 1053, 1053, 1061, 1061, 1061, 1059, 1049,  438, 1364,
1269      1051,  438, 1032, 1032, 1032, 1054, 1142, 1142, 1142,  438,
1270      1065, 1065, 1065, 1036, 1036, 1036,  438, 1045,  438, 1043,
1271      1043, 1043, 1052,  451,  451,  451,  438, 1058, 1318,  438,
1272       438, 1046, 1046, 1046, 1063,  595, 1074, 1074, 1074,  453,
1273
1274      1075,  438, 1322, 1076,  438, 1067, 1047, 1048, 1048, 1048,
1275      1077, 1077, 1077,  438, 1078,  438, 1367, 1079, 1050, 1050,
1276      1050,  651, 1049, 1080, 1080, 1080,  438, 1081, 1325, 1466,
1277      1082, 1326,  438, 1051, 1053, 1053, 1053,  438, 1331, 1073,
1278      1084, 1084, 1084,  438, 1085,  438, 1347, 1086,  438, 1054,
1279      1061, 1061, 1061, 1065, 1065, 1065,  451,  451,  451, 1328,
1280      1074, 1074, 1074, 1057, 1075, 1056,  438, 1076, 1348,  438,
1281      1329, 1357,  453, 1077, 1077, 1077, 1342, 1078,  438,  438,
1282      1079, 1343, 1093, 1055, 1358, 1097, 1080, 1080, 1080,  438,
1283      1081,  438, 1350, 1082, 1084, 1084, 1084,  438, 1085,  438,
1284
1285       438, 1086, 1105,  451,  451,  451, 1133, 1133, 1133, 1135,
1286      1135, 1135, 1139, 1139, 1139,  451,  451,  451,  438,  453,
1287       438, 1359,  438, 1351, 1349,  438, 1404, 1472,  438, 1410,
1288      1353,  453, 1133, 1133, 1133,  438, 1152, 1044,  438, 1153,
1289      1135, 1135, 1135, 1355, 1155, 1356,  438, 1156,  438,  438,
1290       438, 1139, 1139, 1139, 1124, 1160,  438,  438, 1161, 1162,
1291      1162, 1162, 1142, 1142, 1142, 1143,  438,  438, 1164, 1164,
1292      1164, 1166, 1166, 1166,  438,  438, 1162, 1162, 1162, 1354,
1293      1185, 1360, 1365, 1186, 1165,  438, 1167, 1187, 1187, 1187,
1294      1361,  438,  438, 1164, 1164, 1164, 1166, 1166, 1166, 1362,
1295
1296      1188, 1188, 1188,  438, 1189,  438, 1366, 1190,  438, 1165,
1297      1376, 1167, 1198, 1198, 1198, 1203, 1203, 1203, 1187, 1187,
1298      1187,  438, 1208,  438, 1369, 1209,  438,  438,  438,  438,
1299      1041,  438,  438, 1041,  438, 1188, 1188, 1188, 1370, 1189,
1300      1372, 1029, 1190, 1212, 1212, 1212, 1198, 1198, 1198,  438,
1301      1215, 1430,  438, 1216, 1219, 1219, 1219, 1377, 1373,  438,
1302       438, 1368,  438, 1374, 1203, 1203, 1203, 1375, 1221, 1395,
1303       438, 1222, 1212, 1212, 1212, 1028, 1231, 1382, 1378, 1232,
1304       438, 1380, 1219, 1219, 1219,  438, 1239,  438,  438, 1240,
1305      1313, 1313, 1313, 1315, 1315, 1315, 1023, 1444,  438, 1327,
1306
1307      1327, 1327, 1313, 1313, 1313, 1314,  438, 1379, 1316, 1336,
1308      1336, 1336, 1383, 1337,  438,  438, 1338, 1314, 1315, 1315,
1309      1315, 1339, 1339, 1339,  438, 1340,  438,  438, 1341, 1327,
1310      1327, 1327, 1384, 1316, 1336, 1336, 1336,  438, 1337,  438,
1311      1385, 1338, 1339, 1339, 1339,  438, 1340,  438,  438, 1341,
1312      1391, 1386, 1387, 1392,  438,  438, 1381,  438,  438,  438,
1313       438, 1352,  438, 1399, 1400,  438,  438, 1405, 1406, 1388,
1314       438,  438,  438,  438,  438,  438,  438,  438,  438, 1393,
1315      1389,  438,  438, 1394, 1397,  438,  438, 1398,  438,  438,
1316      1402, 1403, 1417, 1417, 1417, 1396,  438, 1408, 1409,  438,
1317
1318       438, 1411, 1412, 1421, 1421, 1421, 1425, 1415, 1418,  438,
1319      1416, 1428, 1428, 1428, 1423,  438,  438, 1430, 1413, 1422,
1320       438, 1414,  438,  438, 1424,  438, 1419, 1429, 1420,  438,
1321      1417, 1417, 1417,  438,  438, 1444, 1426, 1421, 1421, 1421,
1322      1431, 1432,  438,  438,  438, 1447, 1418,  438, 1435, 1427,
1323      1436,  438, 1447, 1422, 1428, 1428, 1428,  438,  438,  438,
1324      1433,  438, 1434, 1442, 1442, 1442, 1451, 1440, 1441, 1445,
1325      1429,  438,  438, 1437, 1438, 1022, 1446, 1451,  438, 1443,
1326      1450, 1450, 1450, 1448, 1449, 1454,  438, 1442, 1442, 1442,
1327      1452, 1452, 1452, 1454, 1021, 1457,  438,  438, 1455, 1455,
1328
1329      1455, 1457,  438, 1443,  438,  438, 1453,  438,  438, 1470,
1330       438, 1450, 1450, 1450, 1456, 1458, 1474, 1020, 1459, 1460,
1331      1460, 1460, 1452, 1452, 1452,  438,  438,  438, 1462, 1462,
1332      1462, 1455, 1455, 1455,  438, 1461,  438,  438, 1453, 1464,
1333      1464, 1464,  438, 1467, 1463, 1484, 1471, 1456, 1460, 1460,
1334      1460, 1462, 1462, 1462,  438, 1465, 1464, 1464, 1464, 1476,
1335       438, 1473,  438,  438, 1461,  438, 1480, 1463, 1478, 1475,
1336      1477, 1481, 1465,  438, 1479, 1488, 1018, 1488,  438, 1482,
1337      1489, 1489, 1489, 1001, 1000, 1483,  438,  438, 1486,  993,
1338      1487, 1489, 1489, 1489,  992,  991, 1490,  990,  988,  972,
1339
1340       968,  960, 1485,  959,  958,  957,  955, 1490,  118,  118,
1341       118,  118,  118,  118,  118,  119,  119,  119,  119,  119,
1342       119,  119,  124,  124,  124,  124,  124,  124,  124,  127,
1343       127,  127,  127,  127,  127,  127,  130,  130,  130,  130,
1344       130,  130,  130,  133,  133,  133,  133,  133,  133,  133,
1345       140,  140,  140,  140,  140,  140,  140,  148,  148,  148,
1346       148,  148,  148,  148,  152,  152,  152,  152,  152,  152,
1347       152,  163,  163,  163,  163,  163,  163,  163,  167,  167,
1348       167,  167,  167,  167,  167,  174,  174,  174,  174,  174,
1349       174,  174,  182,  182,  182,  182,  182,  182,  182,  190,
1350
1351       190,  190,  190,  190,  190,  190,  195,  195,  195,  195,
1352       195,  195,  195,  202,  202,  202,  202,  202,  202,  202,
1353       206,  206,  206,  206,  206,  206,  206,  213,  213,  213,
1354       213,  213,  213,  213,  220,  220,  220,  220,  220,  220,
1355       220,  228,  228,  228,  228,  228,  228,  228,  234,  234,
1356       234,  234,  234,  234,  234,  242,  242,  242,  242,  242,
1357       242,  242,  246,  246,  246,  246,  246,  246,  246,  253,
1358       253,  253,  253,  253,  253,  253,  260,  260,  260,  260,
1359       260,  260,  260,  269,  269,  269,  269,  269,  269,  269,
1360       273,  273,  273,  273,  273,  273,  273,  133,  133,  133,
1361
1362       133,  133,  133,  133,  295,  295,  295,  934,  295,  306,
1363       306,  306,  930,  306,  310,  310,  310,  929,  310,  320,
1364       320,  320,  926,  320,  325,  325,  325,  921,  325,  329,
1365       329,  329,  909,  329,  337,  337,  337,  908,  337,  344,
1366       344,  344,  907,  344,  348,  348,  348,  904,  348,  356,
1367       356,  356,  903,  356,  361,  361,  361,  361,  361,  902,
1368       361,  376,  897,  376,  386,  884,  386,  395,  883,  395,
1369       401,  879,  401,  405,  878,  405,  413,  877,  413,  418,
1370       873,  418,  423,  872,  423,  429,  871,  429,  433,  869,
1371       433,  437,  437,  437,  437,  437,  437,  437,  443,  846,
1372
1373       845,  443,  452,  452,  452,  452,  452,  452,  464,  464,
1374       464,  464,  464,  464,  476,  476,  476,  476,  476,  476,
1375       485,  485,  485,  485,  485,  485,  492,  492,  492,  492,
1376       492,  492,  503,  503,  503,  503,  503,  503,  512,  512,
1377       512,  512,  512,  512,  520,  520,  520,  520,  520,  520,
1378       528,  528,  528,  528,  528,  528,  534,  534,  534,  534,
1379       534,  534,  593,  593,  593,  593,  593,  593,  593,  986,
1380       986,  986,  986,  986,  986,  986,  987,  987,  987,  987,
1381       987,  987,  987, 1012, 1012, 1012, 1012, 1012, 1012, 1012,
1382      1015, 1015, 1015, 1015, 1015, 1015, 1015, 1040, 1040, 1040,
1383
1384      1040, 1040, 1040, 1040, 1042, 1042, 1042, 1042, 1042, 1042,
1385      1042,  844,  843,  842,  836,  835,  834,  833,  832,  830,
1386       817,  809,  808,  807,  806,  805,  804,  803,  802,  798,
1387       797,  796,  795,  794,  793,  792,  791,  787,  783,  781,
1388       779,  778,  774,  773,  772,  767,  766,  762,  759,  754,
1389       753,  752,  744,  740,  738,  736,  735,  734,  732,  729,
1390       728,  727,  726,  725,  721,  719,  718,  717,  716,  715,
1391       714,  711,  710,  706,  702,  697,  695,  694,  693,  691,
1392       689,  686,  682,  681,  680,  671,  664,  663,  662,  660,
1393       658,  657,  655,  654,  653,  595,  649,  645,  643,  642,
1394
1395       638,  636,  634,  629,  628,  627,  615,  614,  613,  608,
1396       607,  606,  605,  603,  600,  599,  598,  597,  591,  589,
1397       588,  586,  585,  582,  580,  575,  570,  569,  568,  567,
1398       564,  563,  561,  560,  559,  558,  557,  553,  552,  551,
1399       550,  549,  548,  547,  545,  544,  543,  542,  541,  540,
1400       539,  438,  537,  532,  531,  526,  525,  524,  523,  515,
1401       508,  501,  500,  499,  495,  483,  479,  474,  473,  472,
1402       471,  467,  462,  461,  460,  459,  458,  457,  456,  455,
1403       450,  449,  448,  447,  446,  445,  444,  441,  439,  438,
1404       436,  435,  434,  432,  431,  430,  428,  427,  426,  425,
1405
1406       424,  420,  419,  417,  416,  415,  414,  412,  411,  410,
1407       407,  406,  402,  400,  397,  396,  394,  393,  392,  391,
1408       388,  387,  385,  384,  383,  382,  381,  380,  379,  378,
1409       377,  375,  374,  373,  372,  371,  370,  365,  362,  364,
1410       360,  359,  357,  355,  352,  351,  350,  349,  347,  345,
1411       343,  340,  339,  338,  336,  332,  331,  330,  328,  326,
1412       324,  322,  321,  319,  316,  315,  314,  311,  309,  307,
1413       305,  296,  294,  292,  286,  285,  286,  285,  284,  283,
1414      1491,  117, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1415      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1416
1417      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1418      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1419      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1420      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1421      1491, 1491, 1491, 1491, 1491
1422     } ;
1423
1424 static yyconst flex_int16_t yy_chk[4246] =
1425     {   0,
1426         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
1427         6,    6,    6,    9,    0,    3,   10,   11,    4,   12,
1428         9,    5,  984,   10,    6,    7,    7,    7,    8,    8,
1429         8,   13,   13,   11,  984,   12,   13,   13,  287,    7,
1430        14,   14,    8,  279,   13,   14,   14,   15,   15,  178,
1431        15,  122,   15,   14,   16,   16,  279,   16,  178,   16,
1432        15,   17,   17,   18,   18,  122,  123,   16,   19,   19,
1433        19,   20,   20,   20,   23,   23,   23,   24,   24,   24,
1434       123,  126,   19,  149,  703,   20,  288,  287,   23,  288,
1435       703,   24,  120,  120,  120,  126,   17,  149,   18,   21,
1436
1437        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
1438        21,   21, 1272,   21,   21,   21,   21,   21,   25,   25,
1439        25,  363,  219,   26,   26,   26,   27,   27,   27,   28,
1440        28,   28,   25,  219,  363,   21,   21,   26,  651,  366,
1441        27,  366,  164,   28,  121,  121,  121,  125,  125,  125,
1442       146,  146,  146,  153,  153,  153,  164,  704,   21,   22,
1443        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
1444        22,   22,  651,   22,   22,   22,   22,   22,   29,   29,
1445        29,  704,  538,   30,   30,   30,   31,   31,   31,   32,
1446        32,   32,   29,  786,  440,   22,   22,   30,  440,  538,
1447
1448        31,  705,  592,   32,  889,   33,   33,   33,   34,   34,
1449        34,   35,   35,   35,   36,   36,   36,  860,   22,   33,
1450       592,  144,   34,  786, 1271,   35,  159,  175,   36,   37,
1451        37,   37,   38,   38,   38,  144,  161,  161,  161,  705,
1452       159,  175,  743,   37,  889,  860,   38,   39,   39,   39,
1453        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1454       652,   39,   39,   39,   39,   39,   41,   41,   41,  159,
1455       144,   42,   42,   42,   43,   43,   43,  168,  168,  168,
1456        41,  743,  717,   39,   39,   42,  652,  717,   43,  785,
1457      1251,   39,   40,   40,   40,   40,   40,   40,   40,   40,
1458
1459        40,   40,   40,   40,   40,  825,   40,   40,   40,   40,
1460        40,   44,   44,   44,  785,  742,   47,   47,   47,   48,
1461        48,   48,  172,  172,  172,   44,  718,  726,   40,   40,
1462        47,  718,  726,   48,  915,  825,   40,   45,   45,   45,
1463        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1464       742,   45,   45,   45,   45,   45,   49,   49,   49,  828,
1465       915,   50,   50,   50,   51,   51,   51,   52,   52,   52,
1466        49,  191,  158,   45,   45,   50,   45,  198,   51,  158,
1467      1250,   52,  823,  727,   45,  191,  158,   45,  727,  828,
1468        45,  198,  862,   45,   46,   46,   46,   46,   46,   46,
1469
1470        46,   46,   46,   46,   46,   46,   46,  822,   46,   46,
1471        46,   46,   46,   53,   53,   53,  862,  823,   54,   54,
1472        54,   55,   55,   55,   56,   56,   56,   53,  198,  169,
1473        46,   46,   54,   46,  203,   55,  169, 1230,   56,  824,
1474       985,   46, 1229,  169,   46,  822,  861,   46,  203,  985,
1475        46,   57,   57,   57,   57,   57,   57,   57,   57,   57,
1476        57,   57,   57,   57,  826,   57,   57,   57,   57,   57,
1477        59,   59,   59,  824,  827,   60,   60,   60,   61,   61,
1478        61,   62,   62,   62,   59,  861, 1031,   57,   57,   60,
1479       186,  170,   61,  902,  902,   62,  826,  186,   57,  183,
1480
1481       183,  183,  826, 1031,  186,  170,  188,  188,  188,  827,
1482        57,   58,   58,   58,   58,   58,   58,   58,   58,   58,
1483        58,   58,   58,   58,  864,   58,   58,   58,   58,   58,
1484        65,   65,   65,  170,  829,   66,   66,   66,   67,   67,
1485        67,   68,   68,   68,   65,  185,  864,   58,   58,   66,
1486       197, 1012,   67,  892,  214,   68, 1211,  197,   58,  185,
1487       196,  196,  196, 1012,  197,  200,  200,  200,  214,  829,
1488        58,   63,   63,   63,   63,   63,   63,   63,   63,   63,
1489        63,   63,   63,   63,  890,   63,   63,   63,   63,   63,
1490        71,   71,   71,  892,  185,   72,   72,   72,   73,   73,
1491
1492        73,   74,   74,   74,   71, 1210,  865,   63,   63,   72,
1493      1194,  891,   73,  866,  947,   74,  890,  888,   63,   64,
1494        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
1495        64,   64,  910,   64,   64,   64,   64,   64,   75,   75,
1496        75,  865,  891,   76,   76,   76,   77,   77,   77,   78,
1497        78,   78,   75,  947,  866,   64,   64,   76,  888, 1193,
1498        77,  895,  894,   78,  917,  910,   64,   69,   69,   69,
1499        69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
1500       912,   69,   69,   69,   69,   69,   79,   79,   79,  895,
1501       917,   80,   80,   80,   83,   83,   83,   84,   84,   84,
1502
1503        79,  209,  894,   69,   69,   80,  208,   69,   83, 1173,
1504       914,   84, 1172,  208,   69,  209,   69,  207,  207,  207,
1505       208,  912,  943,   69,   70,   70,   70,   70,   70,   70,
1506        70,   70,   70,   70,   70,   70,   70,  914,   70,   70,
1507        70,   70,   70,   85,   85,   85,  209,  943,   86,   86,
1508        86,   87,   87,   87,   88,   88,   88,   85,  229,  946,
1509        70,   70,   86, 1170,   70,   87, 1013, 1013,   88,  863,
1510       867,   70,  229,   70,  211,  211,  211,  221,  221,  221,
1511        70,   81,   81,   81,   81,   81,   81,   81,   81,   81,
1512        81,   81,   81,   81,  946,   81,   81,   81,   81,   81,
1513
1514        89,   89,   89,  863,  867,   90,   90,   90,   91,   91,
1515        91,   92,   92,   92,   89,  974, 1003,   81,   81,   90,
1516       223,  224,   91,   81, 1168,   92,  868,  223,   81,  226,
1517       226,  226, 1003,  974,  223,  224, 1066,   81,   82,   82,
1518        82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
1519        82,  978,   82,   82,   82,   82,   82,   95,   95,   95,
1520       868, 1066,   96,   96,   96,   97,   97,   97,   98,   98,
1521        98,   95,  224, 1150,   82,   82,   96,  238,  243,   97,
1522        82,  998,   98, 1149,  238,   82,  235,  235,  235,  978,
1523       998,  238,  243,  893,   82,   93,   93,   93,   93,   93,
1524
1525        93,   93,   93,   93,   93,   93,   93,   93,  941,   93,
1526        93,   93,   93,   93,  101,  101,  101,  893, 1033,  102,
1527       102,  102,  103,  103,  103,  104,  104,  104,  101,  893,
1528       975,   93,   93,  102,  941, 1033,  103,  977, 1002,  104,
1529      1148,  945,   93,   94,   94,   94,   94,   94,   94,   94,
1530        94,   94,   94,   94,   94,   94,  975,   94,   94,   94,
1531        94,   94,  105,  105,  105,  945, 1005,  106,  106,  106,
1532       107,  107,  107,  108,  108,  108,  105,  977, 1002,   94,
1533        94,  106, 1005, 1062,  107, 1175,  976,  108, 1098, 1062,
1534        94,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1535
1536        99,   99,   99,   99,  976,   99,   99,   99,   99,   99,
1537       109,  109,  109, 1007, 1098,  110,  110,  110,  113,  113,
1538       113,  240,  240,  240,  109,  999, 1175,   99,   99,  110,
1539       237,  155,  113, 1147,  999,   99, 1319,   99,  155,   99,
1540       136,  247,  247,  247,  237,  155, 1007,   99,  100,  100,
1541       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
1542       100, 1319,  100,  100,  100,  100,  100,  114,  114,  114,
1543       251,  251,  251,  136,  155,  237,  261,  261,  261,  136,
1544       155,  114,  155,  136,  100,  100,  184,  156,  136,  979,
1545       115,  115,  100,  184,  100,  115,  100,  267,  267,  267,
1546
1547       184,  156,  973,  115,  100,  111,  111,  111,  111,  111,
1548       111,  111,  111,  111,  111,  111,  111,  111, 1009,  111,
1549       111,  111,  111,  111, 1015,  115,  116,  116,  979,  156,
1550       156,  116,  156, 1015, 1009,  184,  973,  254,  156,  116,
1551       222,  111,  111,  154,  157,  236,  248,  222,  249,  262,
1552       154,  254,  236,  248,  222, 1146,  262,  154,  157,  236,
1553       248,  116,  249,  262,  111,  112,  112,  112,  112,  112,
1554       112,  112,  112,  112,  112,  112,  112,  112, 1006,  112,
1555       112,  112,  112,  112,  262,  154,  154,  157,  154,  222,
1556       236,  263,  154,  157,  154,  157,  264,  249,  262,  265,
1557
1558       270,  112,  112,  264,  275,  263,  274,  274,  274,  650,
1559       264,  275, 1006,  265,  270,  278,  278,  278,  275,  809,
1560       312,  312,  312,  650,  112,  980,  263,  321,  321,  321,
1561       326,  326,  326,  809,  265,  312,  331,  331,  331, 1181,
1562       263, 1275,  321,  980, 1064,  326,  345,  345,  345, 1035,
1563      1064,  331,  376,  376,  376,  377,  377,  377,  386,  386,
1564       386,  345,  387,  387,  387,  389,  389,  389,  376, 1181,
1565      1035,  377, 1137, 1275,  386,  390,  390,  390,  387,  390,
1566       389, 1037,  390,  395,  395,  395,  396,  396,  396,  398,
1567       398,  398, 1233,  399,  399,  399, 1137,  399, 1037,  395,
1568
1569       399, 1010,  396,  377,  398,  401,  401,  401,  402,  402,
1570       402, 1094,  387,  403,  403,  403,  404,  404,  404, 1010,
1571       404,  401, 1094,  404,  402,  405,  405,  405,  403,  406,
1572       406,  406,  408,  408,  408, 1039, 1233,  396,  413,  413,
1573       413,  405,  409,  409,  409,  406,  409,  408, 1145,  409,
1574       414,  414,  414, 1039,  413,  415,  415,  415,  417,  417,
1575       417, 1038,  402,  418,  418,  418,  414,  419,  419,  419,
1576       415, 1096, 1063,  417,  421,  421,  421, 1038, 1069,  418,
1577       406, 1068, 1096,  419,  422,  422,  422, 1068,  422,  421,
1578      1063,  422,  423,  423,  423, 1069,  414,  424,  424,  424,
1579
1580       429,  429,  429,  430,  430,  430, 1067, 1070,  423,  433,
1581       433,  433, 1276,  424, 1213, 1131,  429, 1093,  419,  430,
1582       434,  434,  434, 1070, 1067,  433,  451,  451,  451,  452,
1583       452,  452,  454,  454,  454, 1093,  434,  462,  462,  462,
1584      1095, 1213,  451,  424, 1276,  452, 1262, 1100,  454,  463,
1585       463,  463,  462,  464,  464,  464, 1095,  430, 1100,  466,
1586       466,  466,  547,  547,  547,  463,  475,  475,  475,  464,
1587       454,  476,  476,  476,  434,  466,  468,  468,  468, 1118,
1588       468, 1262,  475,  468,  478,  478,  478,  476,  480,  480,
1589       480, 1130,  480, 1129, 1099,  480,  484,  484,  484,  466,
1590
1591       478,  485,  485,  485,  487,  487,  487,  488,  488,  488,
1592      1099,  488,  484, 1101,  488, 1128, 1097,  485, 1118, 1101,
1593       487,  491,  491,  491,  492,  492,  492,  494,  494,  494,
1594      1121,  496,  496,  496, 1097,  496, 1102,  491,  496,  478,
1595       492, 1121, 1115,  494,  502,  502,  502,  503,  503,  503,
1596       505,  505,  505, 1102, 1141,  487,  506,  506,  506, 1115,
1597       502, 1122, 1152,  503, 1383, 1141,  505, 1122,  507,  507,
1598       507,  506,  507, 1383, 1113,  507,  509,  509,  509,  510,
1599       510,  510, 1117,  510,  494, 1119,  510,  511,  511,  511,
1600      1113,  509,  512,  512,  512,  514,  514,  514, 1117, 1127,
1601
1602       505, 1152, 1119,  511, 1134,  516,  516,  516,  512,  516,
1603      1134,  514,  516,  519,  519,  519,  520,  520,  520,  522,
1604       522,  522,  524,  524,  524,  527,  527,  527, 1126,  519,
1605      1125, 1153,  520, 1241, 1132,  522, 1136,  524,  528,  528,
1606       528,  527,  530,  530,  530,  533,  533,  533,  534,  534,
1607       534, 1132,  514, 1136,  528,  536,  536,  536,  530, 1214,
1608      1202,  533, 1138, 1241,  534,  539,  539,  539, 1138,  522,
1609      1153,  536,  546,  546,  546,  549,  549,  549,  563,  563,
1610       563,  539,  539,  554,  554,  554, 1214, 1254,  546, 1151,
1611       555,  555,  555,  530,  555, 1151, 1202,  555,  554,  536,
1612
1613       556,  556,  556,  560,  560,  560,  561,  561,  561,  562,
1614       562,  562,  564,  564,  564, 1154,  556, 1279,  560, 1155,
1615      1254,  561,  565,  565,  565,  562, 1154,  564,  546,  566,
1616       566,  566,  570,  570,  570,  571,  571,  571,  565,  579,
1617       579,  579, 1156,  561, 1157,  566, 1158,  570,  556, 1279,
1618      1157,  571,  572,  572,  572,  579,  572, 1159, 1155,  572,
1619       576,  576,  576, 1112,  576,  562, 1390,  576, 1159,  570,
1620       581,  581,  581, 1176,  565,  583,  583,  583,  589,  589,
1621       589, 1156,  571, 1390, 1158,  566,  581,  584,  584,  584,
1622       583,  584, 1217,  589,  584,  579,  587,  587,  587,  590,
1623
1624       590,  590,  594,  594,  594,  601,  601,  601,  602,  602,
1625       602, 1111,  587, 1296, 1176,  590, 1218,  581,  594, 1217,
1626      1296,  601,  604,  604,  604,  606,  606,  606,  607,  607,
1627       607,  609,  609,  609, 1178,  609,  587, 1179,  609,  612,
1628       612,  612, 1196, 1218,  594,  622,  622,  622,  601,  616,
1629       616,  616,  618,  618,  618,  612,  590,  623,  623,  623,
1630       594,  617,  617,  617,  616,  617, 1174,  618,  617,  619,
1631       619,  619,  623,  619, 1160, 1178,  619, 1174, 1179,  606,
1632      1196,  621,  621,  621,  624,  624,  624, 1161,  624, 1183,
1633      1110,  624,  625,  625,  625, 1109,  612,  621,  626,  626,
1634
1635       626,  630,  630,  630, 1180,  631,  631,  631,  625,  631,
1636      1220, 1184,  631, 1160,  626, 1180,  630,  633,  633,  633,
1637       635,  635,  635,  637,  637,  637, 1161,  639,  639,  639,
1638      1183,  639, 1108,  633,  639,  637,  635, 1206, 1234,  637,
1639       626,  644,  644,  644,  646,  646,  646,  647,  647,  647,
1640      1220,  647, 1184, 1185,  647, 1186, 1208,  644, 1107,  646,
1641      1106, 1209,  635,  648,  648,  648,  655,  655,  655,  656,
1642       656,  656,  659,  659,  659,  660,  660,  660, 1206,  648,
1643      1283,  655, 1234,  644, 1207,  656,  661,  661,  661,  665,
1644       665,  665, 1185,  665, 1186, 1208,  665,  668,  668,  668,
1645
1646      1209,  668,  661, 1197,  668,  672,  672,  672, 1352,  674,
1647       674,  674,  648,  674, 1283, 1227,  674,  677,  677,  677,
1648       656,  672,  679,  679,  679, 1207, 1352,  661,  681,  681,
1649       681, 1104, 1092,  677, 1091,  683,  683,  683,  679,  683,
1650      1223, 1197,  683,  681,  687,  687,  687,  690,  690,  690,
1651       692,  692,  692,  696,  696,  696, 1227,  698,  698,  698,
1652       687,  698, 1228,  690,  698,  681,  692, 1223, 1382,  696,
1653       701,  701,  701,  707,  707,  707,  679,  708,  708,  708,
1654      1382,  708, 1090, 1215,  708, 1199,  701, 1216,  707, 1200,
1655       692,  709,  709,  709,  710,  710,  710,  711,  711,  711,
1656
1657       712,  712,  712, 1228,  713,  713,  713,  709,  696,  720,
1658       720,  720,  701,  722,  722,  722, 1224,  723,  723,  723,
1659       713,  723, 1215, 1199,  723,  720, 1216, 1200,  722, 1089,
1660      1204,  730,  730,  730,  733,  733,  733,  734,  734,  734,
1661       737,  737,  737, 1224, 1297,  709,  713,  730, 1088, 1087,
1662       733, 1297,  734,  739,  739,  739,  737,  741,  741,  741,
1663       745,  745,  745, 1205,  745, 1237, 1235,  745, 1204,  739,
1664       748,  748,  748,  741,  749,  749,  749,  750,  750,  750,
1665       751,  751,  751,  760,  760,  760,  748,  762,  762,  762,
1666       733,  774,  774,  774, 1221,  737,  751, 1083, 1255,  760,
1667
1668      1072, 1205,  762,  739,  763,  763,  763, 1235,  763, 1237,
1669      1236,  763,  775,  775,  775,  776,  776,  776, 1222,  748,
1670       778,  778,  778, 1344,  762,  777,  777,  777,  775,  777,
1671       776, 1255,  777, 1221, 1225,  778,  780,  780,  780,  781,
1672       781,  781,  782,  782,  782,  788,  788,  788,  789,  789,
1673       789, 1236,  780,  798,  798,  798, 1226, 1222,  782, 1071,
1674      1060,  788,  775, 1344,  789,  799,  799,  799,  798,  800,
1675       800,  800, 1225,  800, 1300, 1231,  800,  808,  808,  808,
1676       799, 1300,  788,  810,  810,  810,  811,  811,  811,  812,
1677       812,  812,  808,  812, 1226, 1248,  812, 1232,  782,  784,
1678
1679       784,  784,  811,  815,  815,  815,  816,  816,  816, 1258,
1680       816, 1242, 1238,  816, 1231,  784, 1244, 1425,  815,  817,
1681       817,  817,  818,  818,  818,  820,  820,  820, 1425, 1239,
1682       821,  821,  821, 1248,  817, 1243, 1232,  784,  818,  831,
1683       831,  831, 1258, 1240,  784,  784,  821,  784,  837,  837,
1684       837,  784, 1242,  784, 1249,  831, 1238,  838,  838,  838,
1685      1244,  838, 1280,  837,  838,  839,  839,  839, 1239,  839,
1686      1252, 1059,  839,  847,  847,  847, 1243,  848,  848,  848,
1687       831,  848, 1240, 1246,  848,  851,  851,  851,  847,  853,
1688       853,  853, 1249,  853, 1280, 1247,  853,  856,  856,  856,
1689
1690      1245,  851,  857,  857,  857, 1253,  857, 1058, 1320,  857,
1691      1246, 1252,  856,  858,  858,  858,  870,  870,  870,  871,
1692       871,  871, 1247,  874,  874,  874, 1269,  874, 1270,  858,
1693       874, 1260,  870, 1320,  871,  878,  878,  878,  880,  880,
1694       880, 1256,  880, 1267, 1245,  880, 1253,  885,  885,  885,
1695       878,  885, 1257, 1269,  885, 1270,  871, 1286,  870,  896,
1696       896,  896,  898,  898,  898,  899,  899,  899, 1263,  900,
1697       900,  900, 1260,  900,  896,  896,  900, 1261,  898, 1256,
1698       899,  905,  905,  905,  906,  906,  906, 1267,  906, 1286,
1699      1257,  906,  908,  908,  908, 1259,  905,  909,  909,  909,
1700
1701       911,  911,  911,  913,  913,  913, 1263,  908,  916,  916,
1702       916, 1268,  909, 1057, 1056,  913,  911,  898, 1261,  913,
1703       918,  918,  918, 1265,  916,  919,  919,  919, 1259,  908,
1704      1264,  922,  922,  922,  909,  918,  918,  949,  949,  949,
1705       919,  919,  920,  920,  920, 1277,  920,  922, 1273,  920,
1706       923,  923,  923,  949,  923, 1268, 1265,  923,  920,  930,
1707       930,  930,  931,  931,  931, 1274,  931, 1266, 1264,  931,
1708      1281,  922, 1277, 1371,  930,  934,  934,  934,  935,  935,
1709       935,  936,  936,  936, 1282,  936, 1273, 1288,  936, 1371,
1710       934,  949, 1278,  935,  938,  938,  938,  939,  939,  939,
1711
1712      1266,  939, 1290, 1274,  939,  942,  942,  942, 1281,  938,
1713       944,  944,  944,  948,  948,  948,  950,  950,  950, 1278,
1714      1288,  942, 1282,  951,  951,  951,  944,  951, 1289,  948,
1715       951,  950,  950, 1284,  952,  952,  952,  942,  952,  951,
1716      1466,  952,  944, 1055, 1287,  948, 1290,  956,  956,  956,
1717       952,  953,  953,  953,  953,  953,  953,  953,  953,  953,
1718      1284, 1289,  953,  956, 1052,  953,  953,  953,  953,  953,
1719       961,  961,  961,  962,  962,  962, 1287,  962, 1467, 1301,
1720       962, 1466,  981,  981,  981,  961, 1301,  953,  953,  954,
1721       954,  954,  954,  954,  954,  954,  954,  954,  981, 1309,
1722
1723       954,  956, 1310,  954,  954,  954,  954,  954,  963,  963,
1724       963,  964,  964,  964,  981,  964, 1044, 1285,  964, 1467,
1725       965,  965,  965,  963,  965,  954,  954,  965,  969,  969,
1726       969, 1309,  969, 1311, 1310,  969,  982,  982,  982,  983,
1727       983,  983, 1291,  983, 1285, 1042,  983,  994,  994,  994,
1728      1041,  994,  982, 1386,  994,  983,  986,  986,  986,  986,
1729       986,  986,  986,  986,  986, 1386, 1311,  986, 1040, 1393,
1730       986,  986,  986,  986,  986,  989,  989,  989,  997,  997,
1731       997, 1393,  997, 1307, 1298,  997, 1291, 1004, 1004, 1004,
1732      1307,  989,  986,  986,  987,  987,  987,  987,  987,  987,
1733
1734       987,  987,  987, 1004, 1312,  987, 1294, 1321,  987,  987,
1735       987,  987,  987, 1008, 1008, 1008, 1011, 1011, 1011, 1345,
1736      1029,  989, 1017, 1017, 1017, 1019, 1019, 1019, 1298, 1008,
1737       987,  987, 1011, 1294, 1020, 1020, 1020, 1312, 1017, 1017,
1738      1321, 1019, 1021, 1021, 1021, 1022, 1022, 1022, 1011, 1020,
1739      1023, 1023, 1023, 1030, 1030, 1030, 1028, 1021, 1299, 1345,
1740      1022, 1295, 1032, 1032, 1032, 1023, 1123, 1123, 1123, 1030,
1741      1034, 1034, 1034, 1036, 1036, 1036, 1348, 1019, 1032, 1043,
1742      1043, 1043, 1022, 1045, 1045, 1045, 1034, 1027, 1295, 1036,
1743      1458, 1046, 1046, 1046, 1032, 1043, 1047, 1047, 1047, 1045,
1744
1745      1047, 1302, 1299, 1047, 1303, 1036, 1046, 1048, 1048, 1048,
1746      1049, 1049, 1049, 1322, 1049, 1305, 1348, 1049, 1050, 1050,
1747      1050, 1043, 1048, 1051, 1051, 1051, 1306, 1051, 1302, 1458,
1748      1051, 1303, 1317, 1050, 1053, 1053, 1053, 1318, 1308, 1045,
1749      1054, 1054, 1054, 1323, 1054, 1308, 1322, 1054, 1325, 1053,
1750      1061, 1061, 1061, 1065, 1065, 1065, 1073, 1073, 1073, 1305,
1751      1074, 1074, 1074, 1026, 1074, 1025, 1061, 1074, 1323, 1065,
1752      1306, 1332, 1073, 1077, 1077, 1077, 1317, 1077, 1332, 1326,
1753      1077, 1318, 1061, 1024, 1333, 1065, 1080, 1080, 1080, 1334,
1754      1080, 1333, 1325, 1080, 1084, 1084, 1084, 1328, 1084, 1324,
1755
1756      1470, 1084, 1073, 1105, 1105, 1105, 1114, 1114, 1114, 1116,
1757      1116, 1116, 1120, 1120, 1120, 1124, 1124, 1124, 1330, 1105,
1758      1331, 1334, 1114, 1326, 1324, 1116, 1387, 1470, 1120, 1394,
1759      1328, 1124, 1133, 1133, 1133, 1387, 1133, 1018, 1394, 1133,
1760      1135, 1135, 1135, 1330, 1135, 1331, 1329, 1135, 1133, 1335,
1761      1346, 1139, 1139, 1139, 1105, 1139, 1135, 1342, 1139, 1140,
1762      1140, 1140, 1142, 1142, 1142, 1124, 1343, 1139, 1143, 1143,
1763      1143, 1144, 1144, 1144, 1347, 1140, 1162, 1162, 1162, 1329,
1764      1162, 1335, 1346, 1162, 1143, 1357, 1144, 1163, 1163, 1163,
1765      1342, 1350, 1162, 1164, 1164, 1164, 1166, 1166, 1166, 1343,
1766
1767      1167, 1167, 1167, 1163, 1167, 1351, 1347, 1167, 1353, 1164,
1768      1357, 1166, 1177, 1177, 1177, 1182, 1182, 1182, 1187, 1187,
1769      1187, 1349, 1187, 1355, 1350, 1187, 1354, 1356, 1177, 1376,
1770      1016, 1182, 1358, 1014, 1187, 1188, 1188, 1188, 1351, 1188,
1771      1353, 1001, 1188, 1195, 1195, 1195, 1198, 1198, 1198, 1361,
1772      1198, 1412, 1363, 1198, 1201, 1201, 1201, 1358, 1354, 1195,
1773      1412, 1349, 1198, 1355, 1203, 1203, 1203, 1356, 1203, 1376,
1774      1201, 1203, 1212, 1212, 1212, 1000, 1212, 1363, 1359, 1212,
1775      1203, 1361, 1219, 1219, 1219, 1359, 1219, 1364, 1212, 1219,
1776      1292, 1292, 1292, 1293, 1293, 1293,  993, 1432, 1219, 1304,
1777
1778      1304, 1304, 1313, 1313, 1313, 1292, 1432, 1360, 1293, 1314,
1779      1314, 1314, 1364, 1314, 1360, 1304, 1314, 1313, 1315, 1315,
1780      1315, 1316, 1316, 1316, 1362, 1316, 1367, 1368, 1316, 1327,
1781      1327, 1327, 1365, 1315, 1336, 1336, 1336, 1369, 1336, 1365,
1782      1366, 1336, 1339, 1339, 1339, 1327, 1339, 1366, 1370, 1339,
1783      1372, 1367, 1368, 1373, 1374, 1377, 1362, 1372, 1375, 1378,
1784      1373, 1327, 1379, 1380, 1381, 1384, 1385, 1388, 1389, 1369,
1785      1380, 1381, 1391, 1392, 1388, 1389, 1395, 1396, 1397, 1374,
1786      1370, 1398, 1399, 1375, 1378, 1400, 1402, 1379, 1403, 1405,
1787      1384, 1385, 1401, 1401, 1401, 1377, 1408, 1391, 1392, 1406,
1788
1789      1407, 1395, 1396, 1404, 1404, 1404, 1407, 1399, 1401, 1409,
1790      1400, 1410, 1410, 1410, 1405, 1413, 1414, 1411, 1397, 1404,
1791      1415, 1398, 1416, 1419, 1406, 1420, 1402, 1410, 1403, 1411,
1792      1417, 1417, 1417, 1423, 1424, 1431, 1408, 1421, 1421, 1421,
1793      1413, 1414, 1426, 1427, 1433, 1435, 1417, 1431, 1419, 1409,
1794      1420, 1434, 1436, 1421, 1428, 1428, 1428, 1435, 1437, 1438,
1795      1415, 1436, 1416, 1430, 1430, 1430, 1440, 1426, 1427, 1433,
1796      1428, 1468, 1472, 1423, 1424,  992, 1434, 1441, 1440, 1430,
1797      1439, 1439, 1439, 1437, 1438, 1445, 1441, 1442, 1442, 1442,
1798      1444, 1444, 1444, 1446,  991, 1448, 1439, 1445, 1447, 1447,
1799
1800      1447, 1449, 1446, 1442, 1459, 1482, 1444, 1448, 1469, 1468,
1801      1449, 1450, 1450, 1450, 1447, 1450, 1472,  990, 1450, 1451,
1802      1451, 1451, 1452, 1452, 1452, 1473, 1474, 1450, 1454, 1454,
1803      1454, 1455, 1455, 1455, 1471, 1451, 1476, 1475, 1452, 1457,
1804      1457, 1457, 1477, 1459, 1454, 1482, 1469, 1455, 1460, 1460,
1805      1460, 1462, 1462, 1462, 1480, 1457, 1464, 1464, 1464, 1474,
1806      1481, 1471, 1483, 1484, 1460, 1485, 1478, 1462, 1476, 1473,
1807      1475, 1479, 1464, 1478, 1477, 1486,  988, 1487, 1479, 1480,
1808      1488, 1488, 1488,  972,  968, 1481, 1487, 1486, 1484,  960,
1809      1485, 1489, 1489, 1489,  959,  958, 1488,  957,  955,  940,
1810
1811       937,  929, 1483,  928,  927,  926,  921, 1489, 1492, 1492,
1812      1492, 1492, 1492, 1492, 1492, 1493, 1493, 1493, 1493, 1493,
1813      1493, 1493, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1495,
1814      1495, 1495, 1495, 1495, 1495, 1495, 1496, 1496, 1496, 1496,
1815      1496, 1496, 1496, 1497, 1497, 1497, 1497, 1497, 1497, 1497,
1816      1498, 1498, 1498, 1498, 1498, 1498, 1498, 1499, 1499, 1499,
1817      1499, 1499, 1499, 1499, 1500, 1500, 1500, 1500, 1500, 1500,
1818      1500, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1502, 1502,
1819      1502, 1502, 1502, 1502, 1502, 1503, 1503, 1503, 1503, 1503,
1820      1503, 1503, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1505,
1821
1822      1505, 1505, 1505, 1505, 1505, 1505, 1506, 1506, 1506, 1506,
1823      1506, 1506, 1506, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
1824      1508, 1508, 1508, 1508, 1508, 1508, 1508, 1509, 1509, 1509,
1825      1509, 1509, 1509, 1509, 1510, 1510, 1510, 1510, 1510, 1510,
1826      1510, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1512, 1512,
1827      1512, 1512, 1512, 1512, 1512, 1513, 1513, 1513, 1513, 1513,
1828      1513, 1513, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1515,
1829      1515, 1515, 1515, 1515, 1515, 1515, 1516, 1516, 1516, 1516,
1830      1516, 1516, 1516, 1517, 1517, 1517, 1517, 1517, 1517, 1517,
1831      1518, 1518, 1518, 1518, 1518, 1518, 1518, 1519, 1519, 1519,
1832
1833      1519, 1519, 1519, 1519, 1520, 1520, 1520,  907, 1520, 1521,
1834      1521, 1521,  904, 1521, 1522, 1522, 1522,  903, 1522, 1523,
1835      1523, 1523,  901, 1523, 1524, 1524, 1524,  897, 1524, 1525,
1836      1525, 1525,  884, 1525, 1526, 1526, 1526,  883, 1526, 1527,
1837      1527, 1527,  879, 1527, 1528, 1528, 1528,  877, 1528, 1529,
1838      1529, 1529,  873, 1529, 1530, 1530, 1530, 1530, 1530,  872,
1839      1530, 1531,  869, 1531, 1532,  850, 1532, 1533,  849, 1533,
1840      1534,  844, 1534, 1535,  843, 1535, 1536,  842, 1536, 1537,
1841       834, 1537, 1538,  833, 1538, 1539,  832, 1539, 1540,  830,
1842      1540, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1542,  806,
1843
1844       804, 1542, 1543, 1543, 1543, 1543, 1543, 1543, 1544, 1544,
1845      1544, 1544, 1544, 1544, 1545, 1545, 1545, 1545, 1545, 1545,
1846      1546, 1546, 1546, 1546, 1546, 1546, 1547, 1547, 1547, 1547,
1847      1547, 1547, 1548, 1548, 1548, 1548, 1548, 1548, 1549, 1549,
1848      1549, 1549, 1549, 1549, 1550, 1550, 1550, 1550, 1550, 1550,
1849      1551, 1551, 1551, 1551, 1551, 1551, 1552, 1552, 1552, 1552,
1850      1552, 1552, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1554,
1851      1554, 1554, 1554, 1554, 1554, 1554, 1555, 1555, 1555, 1555,
1852      1555, 1555, 1555, 1556, 1556, 1556, 1556, 1556, 1556, 1556,
1853      1557, 1557, 1557, 1557, 1557, 1557, 1557, 1558, 1558, 1558,
1854
1855      1558, 1558, 1558, 1558, 1559, 1559, 1559, 1559, 1559, 1559,
1856      1559,  803,  802,  801,  796,  794,  793,  792,  791,  787,
1857       779,  773,  772,  771,  770,  769,  768,  767,  766,  759,
1858       758,  757,  756,  755,  754,  753,  752,  744,  740,  738,
1859       736,  735,  732,  729,  728,  725,  724,  721,  719,  716,
1860       715,  714,  706,  702,  697,  695,  694,  693,  691,  689,
1861       686,  685,  684,  682,  680,  671,  670,  669,  664,  663,
1862       662,  658,  657,  654,  649,  645,  643,  642,  638,  636,
1863       634,  632,  629,  628,  627,  620,  615,  614,  613,  608,
1864       605,  603,  600,  599,  596,  593,  591,  588,  586,  585,
1865
1866       582,  580,  575,  569,  568,  567,  559,  558,  557,  553,
1867       552,  551,  550,  548,  545,  544,  543,  542,  537,  532,
1868       531,  526,  525,  523,  515,  508,  501,  500,  499,  495,
1869       483,  479,  474,  473,  472,  471,  467,  461,  460,  459,
1870       458,  457,  456,  455,  450,  449,  448,  445,  444,  443,
1871       441,  437,  435,  432,  431,  428,  427,  426,  425,  420,
1872       416,  412,  411,  410,  407,  400,  397,  394,  393,  392,
1873       391,  388,  385,  384,  383,  382,  381,  380,  379,  378,
1874       375,  374,  372,  371,  370,  369,  368,  364,  362,  361,
1875       360,  359,  358,  357,  354,  353,  352,  351,  350,  349,
1876
1877       346,  342,  341,  340,  339,  338,  335,  334,  333,  332,
1878       330,  327,  323,  322,  318,  317,  316,  315,  314,  313,
1879       311,  308,  307,  304,  303,  302,  301,  300,  299,  298,
1880       297,  296,  293,  292,  291,  290,  289,  283,  282,  280,
1881       277,  276,  272,  268,  259,  258,  257,  256,  252,  245,
1882       241,  233,  232,  231,  227,  218,  217,  216,  212,  205,
1883       201,  194,  193,  189,  181,  180,  179,  177,  173,  166,
1884       162,  151,  147,  143,  142,  141,  135,  134,  132,  129,
1885       117, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1886      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1887
1888      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1889      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1890      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1891      1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491,
1892      1491, 1491, 1491, 1491, 1491
1893     } ;
1894
1895 /* Table of booleans, true if rule could match eol. */
1896 static yyconst flex_int32_t yy_rule_can_match_eol[203] =
1897     {   0,
1898 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1899     1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 
1900     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1901     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
1902     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 
1903     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
1904     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
1905     0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
1906     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
1907     0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 
1908     0, 1, 0,     };
1909
1910 static yy_state_type yy_last_accepting_state;
1911 static char *yy_last_accepting_cpos;
1912
1913 extern int surf_parse__flex_debug;
1914 int surf_parse__flex_debug = 0;
1915
1916 /* The intent behind this definition is that it'll catch
1917  * any uses of REJECT which flex missed.
1918  */
1919 #define REJECT reject_used_but_not_detected
1920 #define yymore() yymore_used_but_not_detected
1921 #define YY_MORE_ADJ 0
1922 #define YY_RESTORE_YY_MORE_OFFSET
1923 char *surf_parse_text;
1924 /* Validating XML processor for surf/surfxml.dtd.
1925  * Generated 2007/10/26 19:58:25.
1926  *
1927  * This program was generated with the FleXML XML processor generator.
1928  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
1929  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
1930  * (Id: flexml.pl,v 1.61 2006/09/13 16:34:33 wdowling Exp).
1931  * 
1932  * There are two, intertwined parts to this program, part A and part B.
1933  *
1934  * Part A
1935  * ------
1936  * 
1937  * Some parts, here collectively called "Part A", are found in the 
1938  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
1939  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
1940  *
1941  * You can redistribute, use, perform, display and/or modify "Part A"
1942  * provided the following two conditions hold:
1943  *
1944  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
1945  *    FleXML; without even the implied warranty of MERCHANTABILITY or
1946  *    FITNESS FOR A PARTICULAR PURPOSE.
1947  *
1948  * 2. The program distribution conditions do not in any way affect the
1949  *    distribution conditions of the FleXML system used to generate this
1950  *    file or any version of FleXML derived from that system.
1951  *
1952  * Notice that these are explicit rights granted to you for files
1953  * generated by the FleXML system.  For your rights in connection with
1954  * the FleXML system itself please consult the GNU General Public License.
1955  * 
1956  * Part B
1957  * ------
1958  * 
1959  * The other parts, here collectively called "Part B", and which came 
1960  * from the DTD used by FleXML to generate this program, can be 
1961  * distributed (or not, as the case may be) under the terms of whoever
1962  * wrote them, provided these terms respect and obey the two conditions 
1963  * above under the heading "Part A".
1964  *
1965  * The author of and contributors to FleXML specifically disclaim
1966  * any copyright interest in "Part B", unless "Part B" was written 
1967  * by the author of or contributors to FleXML.
1968  * 
1969  */
1970
1971 /* Version strings. */
1972 const char rcs_surfxml_flexml_skeleton[] =
1973  "$" "Id: skel,v 1.38 2006/09/12 18:05:45 wdowling Exp $";
1974 const char rcs_surfxml_flexml[] =
1975  "$" "Id: flexml.pl,v 1.61 2006/09/13 16:34:33 wdowling Exp $";
1976
1977 /* ANSI headers. */
1978 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
1979 #  ifndef __STRICT_ANSI__
1980 #    include <io.h>
1981 #    include <process.h>
1982 #  endif
1983 #else
1984 #  include <unistd.h>
1985 #endif
1986 #include <stdio.h>
1987 #include <string.h>
1988 #include <assert.h>
1989 #include <stdarg.h>
1990 #include <ctype.h>
1991
1992 #ifndef FLEXML_INDEXSTACKSIZE
1993 #define FLEXML_INDEXSTACKSIZE 1000
1994 #endif
1995
1996 /* Generated definitions. */
1997 #define FLEXML_yylineno
1998 #ifndef FLEXML_BUFFERSTACKSIZE
1999 #define FLEXML_BUFFERSTACKSIZE 1000000
2000 #endif
2001 #define FLEXML_NEED_BUFFERLIT
2002
2003 /* XML processor api. */
2004 /* FleXML-provided data. */
2005 int surfxml_pcdata_ix;
2006 extern char *surfxml_bufferstack;
2007 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
2008 AT_surfxml_link_id AX_surfxml_link_id;
2009 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
2010 AT_surfxml_prop_id AX_surfxml_prop_id;
2011 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
2012 AT_surfxml_host_interference_recv AX_surfxml_host_interference_recv;
2013 #define A_surfxml_host_interference_recv (surfxml_bufferstack + AX_surfxml_host_interference_recv)
2014 AT_surfxml_host_id AX_surfxml_host_id;
2015 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
2016 AT_surfxml_link_latency_file AX_surfxml_link_latency_file;
2017 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
2018 AT_surfxml_process_host AX_surfxml_process_host;
2019 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
2020 AT_surfxml_host_availability_file AX_surfxml_host_availability_file;
2021 #define A_surfxml_host_availability_file (surfxml_bufferstack + AX_surfxml_host_availability_file)
2022 AT_surfxml_host_state AX_surfxml_host_state;
2023 #define A_surfxml_host_state AX_surfxml_host_state
2024 AT_surfxml_host_interference_send_recv AX_surfxml_host_interference_send_recv;
2025 #define A_surfxml_host_interference_send_recv (surfxml_bufferstack + AX_surfxml_host_interference_send_recv)
2026 AT_surfxml_route_impact_on_dst_with_other_send AX_surfxml_route_impact_on_dst_with_other_send;
2027 #define A_surfxml_route_impact_on_dst_with_other_send (surfxml_bufferstack + AX_surfxml_route_impact_on_dst_with_other_send)
2028 AT_surfxml_host_interference_send AX_surfxml_host_interference_send;
2029 #define A_surfxml_host_interference_send (surfxml_bufferstack + AX_surfxml_host_interference_send)
2030 AT_surfxml_route_impact_on_dst AX_surfxml_route_impact_on_dst;
2031 #define A_surfxml_route_impact_on_dst (surfxml_bufferstack + AX_surfxml_route_impact_on_dst)
2032 AT_surfxml_platform_description_version AX_surfxml_platform_description_version;
2033 #define A_surfxml_platform_description_version (surfxml_bufferstack + AX_surfxml_platform_description_version)
2034 AT_surfxml_prop_value AX_surfxml_prop_value;
2035 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
2036 AT_surfxml_route_impact_on_src_with_other_recv AX_surfxml_route_impact_on_src_with_other_recv;
2037 #define A_surfxml_route_impact_on_src_with_other_recv (surfxml_bufferstack + AX_surfxml_route_impact_on_src_with_other_recv)
2038 AT_surfxml_host_power AX_surfxml_host_power;
2039 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
2040 AT_surfxml_link_state_file AX_surfxml_link_state_file;
2041 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
2042 AT_surfxml_router_id AX_surfxml_router_id;
2043 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
2044 AT_surfxml_process_start_time AX_surfxml_process_start_time;
2045 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
2046 AT_surfxml_process_function AX_surfxml_process_function;
2047 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
2048 AT_surfxml_host_max_outgoing_rate AX_surfxml_host_max_outgoing_rate;
2049 #define A_surfxml_host_max_outgoing_rate (surfxml_bufferstack + AX_surfxml_host_max_outgoing_rate)
2050 AT_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy;
2051 #define A_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy
2052 AT_surfxml_link_c_ctn_id AX_surfxml_link_c_ctn_id;
2053 #define A_surfxml_link_c_ctn_id (surfxml_bufferstack + AX_surfxml_link_c_ctn_id)
2054 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
2055 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
2056 AT_surfxml_host_availability AX_surfxml_host_availability;
2057 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
2058 AT_surfxml_argument_value AX_surfxml_argument_value;
2059 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
2060 AT_surfxml_link_state AX_surfxml_link_state;
2061 #define A_surfxml_link_state AX_surfxml_link_state
2062 AT_surfxml_route_src AX_surfxml_route_src;
2063 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
2064 AT_surfxml_route_impact_on_src AX_surfxml_route_impact_on_src;
2065 #define A_surfxml_route_impact_on_src (surfxml_bufferstack + AX_surfxml_route_impact_on_src)
2066 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
2067 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
2068 AT_surfxml_link_latency AX_surfxml_link_latency;
2069 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
2070 AT_surfxml_include_file AX_surfxml_include_file;
2071 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
2072 AT_surfxml_link_bandwidth_file AX_surfxml_link_bandwidth_file;
2073 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
2074 AT_surfxml_host_state_file AX_surfxml_host_state_file;
2075 #define A_surfxml_host_state_file (surfxml_bufferstack + AX_surfxml_host_state_file)
2076 AT_surfxml_route_dst AX_surfxml_route_dst;
2077 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
2078
2079 /* XML state. */
2080 #ifdef FLEX_DEBUG
2081 # define ENTER(state)   debug_enter(state,#state)
2082 # define LEAVE          debug_leave()
2083 # define SET(state)     debug_set(state,#state)
2084   static void debug_enter(int, const char*);
2085   static void debug_leave(void);
2086   static void debug_set(int, const char*);
2087 #else
2088 # define ENTER(state)   (yy_push_state(state))
2089 # define LEAVE          (yy_pop_state())
2090 # define SET(state)     BEGIN(state)
2091 #endif
2092
2093 /* Generic actions. */
2094 #define SKIP    /*skip*/
2095 #define SUCCEED        CLEANUP; return 0
2096
2097 #define FAIL    return fail
2098 static int fail(const char*, ...);
2099
2100 enum {flexml_max_err_msg_size = 512};
2101 static char flexml_err_msg[flexml_max_err_msg_size];
2102 const char * surfxml_parse_err_msg()
2103 {
2104     return flexml_err_msg;
2105 }
2106 static void reset_surfxml_parse_err_msg()
2107 {
2108     flexml_err_msg[0] = '\0';
2109 }
2110
2111 /* Cleanup */
2112 static void cleanup(void);
2113 #define CLEANUP  cleanup()
2114
2115 /* Text buffer stack handling. */
2116 char *surfxml_bufferstack = NULL;
2117 static int blimit = FLEXML_BUFFERSTACKSIZE;
2118 static int bnext = 1;
2119
2120 static int *indexstack = NULL;
2121 static int ilimit = FLEXML_INDEXSTACKSIZE;
2122 static int inext = 1;
2123
2124 #define BUFFERSET(P)  (P = bnext)
2125 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
2126 #define BUFFERDONE    (BUFFERPUTC('\0'))
2127
2128 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
2129
2130 /* after this is called, there are at least 2 slots left in the stack */
2131 static int ck_blimit()
2132 {
2133      if (bnext >= blimit) {
2134          blimit += FLEXML_BUFFERSTACKSIZE + 2;
2135          {
2136              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
2137              assert(temp);
2138              surfxml_bufferstack = temp;
2139          }
2140      }
2141      return 0;
2142 }
2143
2144 /* after this is called, there are at least 2 slots left in the stack */
2145 static int ck_ilimit()
2146 {
2147      if (inext >= ilimit) {
2148          ilimit += FLEXML_INDEXSTACKSIZE + 2;
2149          {
2150              int *temp = (int *) realloc(indexstack, ilimit);
2151              assert(temp);
2152              indexstack = temp;
2153          }
2154      }
2155      return 0;
2156 }
2157
2158 #ifdef FLEXML_NEED_BUFFERLIT
2159 static void surfxml_bufferliteral(char c, int* pp, const char* text)
2160 {
2161   const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
2162   assert(s <= e); BUFFERSET(*pp);
2163   while (++s<e) {
2164     if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
2165     else BUFFERPUTC(*s);
2166   }
2167   BUFFERDONE;
2168 }
2169 #endif
2170
2171 static void pushbuffer(int p)
2172 {
2173     ck_ilimit();
2174     indexstack[inext++] = p;
2175     indexstack[inext++] = bnext;    
2176 }
2177
2178 static int popbuffer(void)
2179 {
2180     assert(inext >= 2);
2181     bnext = indexstack[--inext];
2182     return indexstack[--inext];
2183 }
2184
2185 /* General internal entities are `unput' back onto the input stream... */
2186 #define ENTITYTEXT(T) \
2187   { char *s = (T), *e = s+strlen(s);\
2188     while (--e >= s) { unput(*e); }}
2189
2190 /* Flex standard options. */
2191 #define YY_NO_INPUT 1
2192 /* Flex user-requested options. */
2193 /* XML character classes (currently restricted to ASCII). */
2194 /* "Common syntactic structures." */
2195 /* "Names and Tokens." */
2196 /* Miscellaneous. */
2197 /* Parser states (flex `exclusive start conditions'):
2198  *
2199  * PROLOG       the XML prolog of the document before <?xml...>
2200  * DOCTYPE      the XML prolog of the document after <?xml...>
2201  * EPILOG       after the root element
2202  * INCOMMENT    inside an XML comment <!--....-->
2203  * INPI         inside an XML PI <?...?>
2204  * VALUE1       inside a '...'-delimited literal
2205  * VALUE2       inside a "..."-delimited literal
2206  * CDATA        inside a <![CDATA[...] ]> section.
2207  * ROOT_<tag>   expect root element <tag>
2208  * AL_<tag>     inside the attribute list for <tag>
2209  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
2210  * IMPOSSIBLE   dummy to permit disabling rules; must be last
2211  */
2212
2213 /* State names. */
2214 const char* *surfxml_statenames=NULL;
2215
2216 #define INITIAL 0
2217 #define PROLOG 1
2218 #define DOCTYPE 2
2219 #define EPILOG 3
2220 #define INCOMMENT 4
2221 #define INPI 5
2222 #define VALUE1 6
2223 #define VALUE2 7
2224 #define CDATA 8
2225 #define ROOT_surfxml_platform_description 9
2226 #define AL_surfxml_platform_description 10
2227 #define S_surfxml_platform_description 11
2228 #define S_surfxml_platform_description_1 12
2229 #define S_surfxml_platform_description_2 13
2230 #define S_surfxml_platform_description_3 14
2231 #define S_surfxml_platform_description_4 15
2232 #define S_surfxml_platform_description_5 16
2233 #define E_surfxml_platform_description 17
2234 #define ROOT_surfxml_include 18
2235 #define AL_surfxml_include 19
2236 #define E_surfxml_include 20
2237 #define ROOT_surfxml_host 21
2238 #define AL_surfxml_host 22
2239 #define S_surfxml_host 23
2240 #define S_surfxml_host_1 24
2241 #define S_surfxml_host_2 25
2242 #define E_surfxml_host 26
2243 #define ROOT_surfxml_prop 27
2244 #define AL_surfxml_prop 28
2245 #define E_surfxml_prop 29
2246 #define ROOT_surfxml_router 30
2247 #define AL_surfxml_router 31
2248 #define E_surfxml_router 32
2249 #define ROOT_surfxml_link 33
2250 #define AL_surfxml_link 34
2251 #define S_surfxml_link 35
2252 #define S_surfxml_link_1 36
2253 #define S_surfxml_link_2 37
2254 #define E_surfxml_link 38
2255 #define ROOT_surfxml_route 39
2256 #define AL_surfxml_route 40
2257 #define S_surfxml_route 41
2258 #define S_surfxml_route_1 42
2259 #define S_surfxml_route_2 43
2260 #define E_surfxml_route 44
2261 #define ROOT_surfxml_link_c_ctn 45
2262 #define AL_surfxml_link_c_ctn 46
2263 #define E_surfxml_link_c_ctn 47
2264 #define ROOT_surfxml_process 48
2265 #define AL_surfxml_process 49
2266 #define S_surfxml_process 50
2267 #define S_surfxml_process_1 51
2268 #define S_surfxml_process_2 52
2269 #define E_surfxml_process 53
2270 #define ROOT_surfxml_argument 54
2271 #define AL_surfxml_argument 55
2272 #define E_surfxml_argument 56
2273 #define IMPOSSIBLE 57
2274
2275 #ifndef YY_NO_UNISTD_H
2276 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2277  * down here because we want the user's section 1 to have been scanned first.
2278  * The user has a chance to override it with an option.
2279  */
2280 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
2281 #  ifndef __STRICT_ANSI__
2282 #    include <io.h>
2283 #    include <process.h>
2284 #  endif
2285 #else
2286 #  include <unistd.h>
2287 #endif
2288 #endif
2289
2290 #ifndef YY_EXTRA_TYPE
2291 #define YY_EXTRA_TYPE void *
2292 #endif
2293
2294 static int yy_init_globals (void );
2295
2296 /* Macros after this point can all be overridden by user definitions in
2297  * section 1.
2298  */
2299
2300 #ifndef YY_SKIP_YYWRAP
2301 #ifdef __cplusplus
2302 extern "C" int surf_parse_wrap (void );
2303 #else
2304 extern int surf_parse_wrap (void );
2305 #endif
2306 #endif
2307
2308 #ifndef yytext_ptr
2309 static void yy_flex_strncpy (char *,yyconst char *,int );
2310 #endif
2311
2312 #ifdef YY_NEED_STRLEN
2313 static int yy_flex_strlen (yyconst char * );
2314 #endif
2315
2316 #ifndef YY_NO_INPUT
2317
2318 #ifdef __cplusplus
2319 static int yyinput (void );
2320 #else
2321 static int input (void );
2322 #endif
2323
2324 #endif
2325
2326         static int yy_start_stack_ptr = 0;
2327         static int yy_start_stack_depth = 0;
2328         static int *yy_start_stack = NULL;
2329     
2330     static void yy_push_state (int new_state );
2331     
2332     static void yy_pop_state (void );
2333     
2334 /* Amount of stuff to slurp up with each read. */
2335 #ifndef YY_READ_BUF_SIZE
2336 #define YY_READ_BUF_SIZE 8192
2337 #endif
2338
2339 /* Copy whatever the last rule matched to the standard output. */
2340 #ifndef ECHO
2341 /* This used to be an fputs(), but since the string might contain NUL's,
2342  * we now use fwrite().
2343  */
2344 #define ECHO (void) fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )
2345 #endif
2346
2347 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
2348  * is returned in "result".
2349  */
2350 #ifndef YY_INPUT
2351 #define YY_INPUT(buf,result,max_size) \
2352         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2353                 { \
2354                 int c = '*'; \
2355                 size_t n; \
2356                 for ( n = 0; n < max_size && \
2357                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
2358                         buf[n] = (char) c; \
2359                 if ( c == '\n' ) \
2360                         buf[n++] = (char) c; \
2361                 if ( c == EOF && ferror( surf_parse_in ) ) \
2362                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
2363                 result = n; \
2364                 } \
2365         else \
2366                 { \
2367                 errno=0; \
2368                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
2369                         { \
2370                         if( errno != EINTR) \
2371                                 { \
2372                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2373                                 break; \
2374                                 } \
2375                         errno=0; \
2376                         clearerr(surf_parse_in); \
2377                         } \
2378                 }\
2379 \
2380
2381 #endif
2382
2383 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2384  * we don't want an extra ';' after the "return" because that will cause
2385  * some compilers to complain about unreachable statements.
2386  */
2387 #ifndef yyterminate
2388 #define yyterminate() return YY_NULL
2389 #endif
2390
2391 /* Number of entries by which start-condition stack grows. */
2392 #ifndef YY_START_STACK_INCR
2393 #define YY_START_STACK_INCR 25
2394 #endif
2395
2396 /* Report a fatal error. */
2397 #ifndef YY_FATAL_ERROR
2398 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2399 #endif
2400
2401 /* end tables serialization structures and prototypes */
2402
2403 /* Default declaration of generated scanner - a define so the user can
2404  * easily add parameters.
2405  */
2406 #ifndef YY_DECL
2407 #define YY_DECL_IS_OURS 1
2408
2409 extern int surf_parse_lex (void);
2410
2411 #define YY_DECL int surf_parse_lex (void)
2412 #endif /* !YY_DECL */
2413
2414 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
2415  * have been set up.
2416  */
2417 #ifndef YY_USER_ACTION
2418 #define YY_USER_ACTION
2419 #endif
2420
2421 /* Code executed at the end of each rule. */
2422 #ifndef YY_BREAK
2423 #define YY_BREAK break;
2424 #endif
2425
2426 #define YY_RULE_SETUP \
2427         YY_USER_ACTION
2428
2429 /** The main scanner function which does all the work.
2430  */
2431 YY_DECL
2432 {
2433         register yy_state_type yy_current_state;
2434         register char *yy_cp, *yy_bp;
2435         register int yy_act;
2436     
2437  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
2438  SET(PROLOG);
2439  reset_surfxml_parse_err_msg();
2440  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
2441  assert(surfxml_bufferstack);
2442  #ifdef FLEX_DEBUG
2443  {
2444      int i;
2445      for (i = 0; i < blimit; i++) {
2446          surfxml_bufferstack[i] = '\377';
2447      }
2448  }
2449  #endif
2450  surfxml_bufferstack[0] = '\0';
2451  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
2452  assert(indexstack);
2453  indexstack[0] = 0;
2454
2455   /* FleXML_init */
2456   bnext = inext = 1;
2457   surfxml_bufferliteral('\0', &bnext, "0.0");
2458   surfxml_bufferliteral('\0', &bnext, "1.0");
2459   surfxml_bufferliteral('\0', &bnext, "1.0");
2460   surfxml_bufferliteral('\0', &bnext, "1.0");
2461   surfxml_bufferliteral('\0', &bnext, "1.0");
2462   surfxml_bufferliteral('\0', &bnext, "-1.0");
2463   surfxml_bufferliteral('\0', &bnext, "0.0");
2464   surfxml_bufferliteral('\0', &bnext, "0.0");
2465   surfxml_bufferliteral('\0', &bnext, "0.0");
2466   surfxml_bufferliteral('\0', &bnext, "0.0");
2467   surfxml_bufferliteral('\0', &bnext, "0.0");
2468   surfxml_bufferliteral('\0', &bnext, "-1.0");
2469   surfxml_bufferliteral('\0', &bnext, "-1.0");
2470   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
2471   surfxml_statenames[PROLOG] = NULL;
2472   surfxml_statenames[DOCTYPE] = NULL;
2473   surfxml_statenames[EPILOG] = NULL;
2474   surfxml_statenames[INCOMMENT] = NULL;
2475   surfxml_statenames[INPI] = NULL;
2476   surfxml_statenames[VALUE1] = NULL;
2477   surfxml_statenames[VALUE2] = NULL;
2478   surfxml_statenames[CDATA] = NULL;
2479   surfxml_statenames[ROOT_surfxml_platform_description] = NULL;
2480   surfxml_statenames[AL_surfxml_platform_description] = NULL;
2481   surfxml_statenames[S_surfxml_platform_description] = "platform_description";
2482   surfxml_statenames[S_surfxml_platform_description_1] = "platform_description";
2483   surfxml_statenames[S_surfxml_platform_description_2] = "platform_description";
2484   surfxml_statenames[S_surfxml_platform_description_3] = "platform_description";
2485   surfxml_statenames[S_surfxml_platform_description_4] = "platform_description";
2486   surfxml_statenames[S_surfxml_platform_description_5] = "platform_description";
2487   surfxml_statenames[E_surfxml_platform_description] = "platform_description";
2488   surfxml_statenames[ROOT_surfxml_include] = NULL;
2489   surfxml_statenames[AL_surfxml_include] = NULL;
2490   surfxml_statenames[E_surfxml_include] = "include";
2491   surfxml_statenames[ROOT_surfxml_host] = NULL;
2492   surfxml_statenames[AL_surfxml_host] = NULL;
2493   surfxml_statenames[S_surfxml_host] = "host";
2494   surfxml_statenames[S_surfxml_host_1] = "host";
2495   surfxml_statenames[S_surfxml_host_2] = "host";
2496   surfxml_statenames[E_surfxml_host] = "host";
2497   surfxml_statenames[ROOT_surfxml_prop] = NULL;
2498   surfxml_statenames[AL_surfxml_prop] = NULL;
2499   surfxml_statenames[E_surfxml_prop] = "prop";
2500   surfxml_statenames[ROOT_surfxml_router] = NULL;
2501   surfxml_statenames[AL_surfxml_router] = NULL;
2502   surfxml_statenames[E_surfxml_router] = "router";
2503   surfxml_statenames[ROOT_surfxml_link] = NULL;
2504   surfxml_statenames[AL_surfxml_link] = NULL;
2505   surfxml_statenames[S_surfxml_link] = "link";
2506   surfxml_statenames[S_surfxml_link_1] = "link";
2507   surfxml_statenames[S_surfxml_link_2] = "link";
2508   surfxml_statenames[E_surfxml_link] = "link";
2509   surfxml_statenames[ROOT_surfxml_route] = NULL;
2510   surfxml_statenames[AL_surfxml_route] = NULL;
2511   surfxml_statenames[S_surfxml_route] = "route";
2512   surfxml_statenames[S_surfxml_route_1] = "route";
2513   surfxml_statenames[S_surfxml_route_2] = "route";
2514   surfxml_statenames[E_surfxml_route] = "route";
2515   surfxml_statenames[ROOT_surfxml_link_c_ctn] = NULL;
2516   surfxml_statenames[AL_surfxml_link_c_ctn] = NULL;
2517   surfxml_statenames[E_surfxml_link_c_ctn] = "link:ctn";
2518   surfxml_statenames[ROOT_surfxml_process] = NULL;
2519   surfxml_statenames[AL_surfxml_process] = NULL;
2520   surfxml_statenames[S_surfxml_process] = "process";
2521   surfxml_statenames[S_surfxml_process_1] = "process";
2522   surfxml_statenames[S_surfxml_process_2] = "process";
2523   surfxml_statenames[E_surfxml_process] = "process";
2524   surfxml_statenames[ROOT_surfxml_argument] = NULL;
2525   surfxml_statenames[AL_surfxml_argument] = NULL;
2526   surfxml_statenames[E_surfxml_argument] = "argument";
2527   }
2528
2529  /* COMMENTS and PIs: handled uniformly for efficiency. */
2530
2531         if ( !(yy_init) )
2532                 {
2533                 (yy_init) = 1;
2534
2535 #ifdef YY_USER_INIT
2536                 YY_USER_INIT;
2537 #endif
2538
2539                 if ( ! (yy_start) )
2540                         (yy_start) = 1; /* first start state */
2541
2542                 if ( ! surf_parse_in )
2543                         surf_parse_in = stdin;
2544
2545                 if ( ! surf_parse_out )
2546                         surf_parse_out = stdout;
2547
2548                 if ( ! YY_CURRENT_BUFFER ) {
2549                         surf_parse_ensure_buffer_stack ();
2550                         YY_CURRENT_BUFFER_LVALUE =
2551                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
2552                 }
2553
2554                 surf_parse__load_buffer_state( );
2555                 }
2556
2557         while ( 1 )             /* loops until end-of-file is reached */
2558                 {
2559                 yy_cp = (yy_c_buf_p);
2560
2561                 /* Support of surf_parse_text. */
2562                 *yy_cp = (yy_hold_char);
2563
2564                 /* yy_bp points to the position in yy_ch_buf of the start of
2565                  * the current run.
2566                  */
2567                 yy_bp = yy_cp;
2568
2569                 yy_current_state = (yy_start);
2570 yy_match:
2571                 do
2572                         {
2573                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2574                         if ( yy_accept[yy_current_state] )
2575                                 {
2576                                 (yy_last_accepting_state) = yy_current_state;
2577                                 (yy_last_accepting_cpos) = yy_cp;
2578                                 }
2579                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2580                                 {
2581                                 yy_current_state = (int) yy_def[yy_current_state];
2582                                 if ( yy_current_state >= 1492 )
2583                                         yy_c = yy_meta[(unsigned int) yy_c];
2584                                 }
2585                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2586                         ++yy_cp;
2587                         }
2588                 while ( yy_base[yy_current_state] != 4182 );
2589
2590 yy_find_action:
2591                 yy_act = yy_accept[yy_current_state];
2592                 if ( yy_act == 0 )
2593                         { /* have to back up */
2594                         yy_cp = (yy_last_accepting_cpos);
2595                         yy_current_state = (yy_last_accepting_state);
2596                         yy_act = yy_accept[yy_current_state];
2597                         }
2598
2599                 YY_DO_BEFORE_ACTION;
2600
2601                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
2602                         {
2603                         int yyl;
2604                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
2605                                 if ( surf_parse_text[yyl] == '\n' )
2606                                            
2607     surf_parse_lineno++;
2608 ;
2609                         }
2610
2611 do_action:      /* This label is used only to access EOF actions. */
2612
2613                 switch ( yy_act )
2614         { /* beginning of action switch */
2615                         case 0: /* must back up */
2616                         /* undo the effects of YY_DO_BEFORE_ACTION */
2617                         *yy_cp = (yy_hold_char);
2618                         yy_cp = (yy_last_accepting_cpos);
2619                         yy_current_state = (yy_last_accepting_state);
2620                         goto yy_find_action;
2621
2622 case 1:
2623 YY_RULE_SETUP
2624 ENTER(INCOMMENT);
2625         YY_BREAK
2626 case 2:
2627 YY_RULE_SETUP
2628 ENTER(INPI);
2629         YY_BREAK
2630
2631 case 3:
2632 YY_RULE_SETUP
2633 LEAVE;
2634         YY_BREAK
2635 case 4:
2636 case 5:
2637 case 6:
2638 /* rule 6 can match eol */
2639 YY_RULE_SETUP
2640 SKIP;
2641         YY_BREAK
2642 case YY_STATE_EOF(INCOMMENT):
2643 FAIL("EOF in comment.");
2644         YY_BREAK
2645
2646 case 7:
2647 YY_RULE_SETUP
2648 LEAVE;
2649         YY_BREAK
2650 case 8:
2651 case 9:
2652 /* rule 9 can match eol */
2653 YY_RULE_SETUP
2654 SKIP;
2655         YY_BREAK
2656 case YY_STATE_EOF(INPI):
2657 FAIL("EOF in PI (processing instruction).");
2658         YY_BREAK
2659
2660 /* SPACES: skipped uniformly */
2661 case 10:
2662 /* rule 10 can match eol */
2663 YY_RULE_SETUP
2664 SKIP;
2665         YY_BREAK
2666 /* PROLOG: determine root element and process it. */
2667
2668 case 11:
2669 /* rule 11 can match eol */
2670 YY_RULE_SETUP
2671 SET(DOCTYPE); 
2672         YY_BREAK
2673 case 12:
2674 /* rule 12 can match eol */
2675 YY_RULE_SETUP
2676 FAIL("Bad declaration %s.",surf_parse_text);
2677         YY_BREAK
2678
2679 case 13:
2680 /* rule 13 can match eol */
2681 YY_RULE_SETUP
2682 SET(ROOT_surfxml_link);
2683         YY_BREAK
2684 case 14:
2685 /* rule 14 can match eol */
2686 YY_RULE_SETUP
2687 SET(ROOT_surfxml_include);
2688         YY_BREAK
2689 case 15:
2690 /* rule 15 can match eol */
2691 YY_RULE_SETUP
2692 SET(ROOT_surfxml_route);
2693         YY_BREAK
2694 case 16:
2695 /* rule 16 can match eol */
2696 YY_RULE_SETUP
2697 SET(ROOT_surfxml_process);
2698         YY_BREAK
2699 case 17:
2700 /* rule 17 can match eol */
2701 YY_RULE_SETUP
2702 SET(ROOT_surfxml_link_c_ctn);
2703         YY_BREAK
2704 case 18:
2705 /* rule 18 can match eol */
2706 YY_RULE_SETUP
2707 SET(ROOT_surfxml_router);
2708         YY_BREAK
2709 case 19:
2710 /* rule 19 can match eol */
2711 YY_RULE_SETUP
2712 SET(ROOT_surfxml_host);
2713         YY_BREAK
2714 case 20:
2715 /* rule 20 can match eol */
2716 YY_RULE_SETUP
2717 SET(ROOT_surfxml_argument);
2718         YY_BREAK
2719 case 21:
2720 /* rule 21 can match eol */
2721 YY_RULE_SETUP
2722 SET(ROOT_surfxml_prop);
2723         YY_BREAK
2724 case 22:
2725 /* rule 22 can match eol */
2726 YY_RULE_SETUP
2727 SET(ROOT_surfxml_platform_description);
2728         YY_BREAK
2729 case 23:
2730 /* rule 23 can match eol */
2731 YY_RULE_SETUP
2732 FAIL("Bad declaration %s.",surf_parse_text);
2733         YY_BREAK
2734 case 24:
2735 YY_RULE_SETUP
2736 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
2737         YY_BREAK
2738 case YY_STATE_EOF(PROLOG):
2739 case YY_STATE_EOF(DOCTYPE):
2740 FAIL("EOF in prolog.");
2741         YY_BREAK
2742
2743 /* RULES DERIVED FROM DTD. */
2744 /* <!-- Small DTD for SURF based tools. -->  */
2745 case 25:
2746 /* rule 25 can match eol */
2747 YY_RULE_SETUP
2748 {
2749   AX_surfxml_platform_description_version = 1;
2750   ENTER(AL_surfxml_platform_description); pushbuffer(0);
2751   }
2752         YY_BREAK
2753
2754 case 26:
2755 /* rule 26 can match eol */
2756 YY_RULE_SETUP
2757 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_description_version);
2758         YY_BREAK
2759 case 27:
2760 /* rule 27 can match eol */
2761 YY_RULE_SETUP
2762 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_description_version);
2763         YY_BREAK
2764 case 28:
2765 YY_RULE_SETUP
2766 {
2767   LEAVE; STag_surfxml_platform_description();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform_description);
2768  }
2769         YY_BREAK
2770 case 29:
2771 YY_RULE_SETUP
2772 {
2773   LEAVE; STag_surfxml_platform_description(); surfxml_pcdata_ix = 0; ETag_surfxml_platform_description(); popbuffer(); /* attribute */
2774   switch (YY_START) {
2775    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2776   }
2777  }
2778         YY_BREAK
2779 case 30:
2780 YY_RULE_SETUP
2781 FAIL("Unexpected character `%c' in attribute list of platform_description element.", surf_parse_text[0]);
2782         YY_BREAK
2783 case 31:
2784 YY_RULE_SETUP
2785 FAIL("Bad attribute `%s' in `platform_description' element start tag.",surf_parse_text);
2786         YY_BREAK
2787 case YY_STATE_EOF(AL_surfxml_platform_description):
2788 FAIL("EOF in attribute list of `platform_description' element.");
2789         YY_BREAK
2790
2791 case 32:
2792 /* rule 32 can match eol */
2793 YY_RULE_SETUP
2794 {
2795   LEAVE;
2796   ETag_surfxml_platform_description();
2797   popbuffer(); /* attribute */
2798   switch (YY_START) {
2799    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2800   }
2801  }
2802         YY_BREAK
2803 case 33:
2804 /* rule 33 can match eol */
2805 YY_RULE_SETUP
2806 FAIL("Unexpected end-tag `%s': `</platform_description>' expected.",surf_parse_text);
2807         YY_BREAK
2808 case 34:
2809 YY_RULE_SETUP
2810 FAIL("Unexpected character `%c': `</platform_description>' expected.",surf_parse_text[0]);
2811         YY_BREAK
2812 case YY_STATE_EOF(E_surfxml_platform_description):
2813 case YY_STATE_EOF(S_surfxml_platform_description_5):
2814 case YY_STATE_EOF(S_surfxml_platform_description_3):
2815 case YY_STATE_EOF(S_surfxml_platform_description_1):
2816 case YY_STATE_EOF(S_surfxml_platform_description):
2817 FAIL("Premature EOF: `</platform_description>' expected.");
2818         YY_BREAK
2819
2820 case 35:
2821 /* rule 35 can match eol */
2822 YY_RULE_SETUP
2823 {
2824   AX_surfxml_include_file = 0;
2825   ENTER(AL_surfxml_include); pushbuffer(0);
2826   }
2827         YY_BREAK
2828
2829 case 36:
2830 /* rule 36 can match eol */
2831 YY_RULE_SETUP
2832 ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
2833         YY_BREAK
2834 case 37:
2835 /* rule 37 can match eol */
2836 YY_RULE_SETUP
2837 ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
2838         YY_BREAK
2839 case 38:
2840 YY_RULE_SETUP
2841 {
2842   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2843   LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(E_surfxml_include);
2844  }
2845         YY_BREAK
2846 case 39:
2847 YY_RULE_SETUP
2848 {
2849   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2850   LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
2851   switch (YY_START) {
2852    case S_surfxml_platform_description_2: SET(S_surfxml_platform_description_3); break;
2853    case ROOT_surfxml_include: SET(EPILOG); break;
2854    case S_surfxml_platform_description_5: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: case S_surfxml_platform_description_4: SET(S_surfxml_platform_description_5); break;
2855   }
2856  }
2857         YY_BREAK
2858 case 40:
2859 YY_RULE_SETUP
2860 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
2861         YY_BREAK
2862 case 41:
2863 YY_RULE_SETUP
2864 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
2865         YY_BREAK
2866 case YY_STATE_EOF(AL_surfxml_include):
2867 FAIL("EOF in attribute list of `include' element.");
2868         YY_BREAK
2869
2870 case 42:
2871 /* rule 42 can match eol */
2872 YY_RULE_SETUP
2873 {
2874   LEAVE;
2875   ETag_surfxml_include();
2876   popbuffer(); /* attribute */
2877   switch (YY_START) {
2878    case S_surfxml_platform_description_2: SET(S_surfxml_platform_description_3); break;
2879    case ROOT_surfxml_include: SET(EPILOG); break;
2880    case S_surfxml_platform_description_5: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: case S_surfxml_platform_description_4: SET(S_surfxml_platform_description_5); break;
2881   }
2882  }
2883         YY_BREAK
2884 case 43:
2885 /* rule 43 can match eol */
2886 YY_RULE_SETUP
2887 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
2888         YY_BREAK
2889 case 44:
2890 YY_RULE_SETUP
2891 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
2892         YY_BREAK
2893 case YY_STATE_EOF(E_surfxml_include):
2894 FAIL("Premature EOF: `</include>' expected.");
2895         YY_BREAK
2896
2897 case 45:
2898 /* rule 45 can match eol */
2899 YY_RULE_SETUP
2900 {
2901   AX_surfxml_host_id = 0;
2902   AX_surfxml_host_power = 0;
2903   AX_surfxml_host_availability = 5;
2904   AX_surfxml_host_availability_file = 0;
2905   AX_surfxml_host_state = A_surfxml_host_state_ON;
2906   AX_surfxml_host_state_file = 0;
2907   AX_surfxml_host_interference_send = 9;
2908   AX_surfxml_host_interference_recv = 13;
2909   AX_surfxml_host_interference_send_recv = 17;
2910   AX_surfxml_host_max_outgoing_rate = 21;
2911   ENTER(AL_surfxml_host); pushbuffer(0);
2912   }
2913         YY_BREAK
2914
2915 case 46:
2916 /* rule 46 can match eol */
2917 YY_RULE_SETUP
2918 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
2919         YY_BREAK
2920 case 47:
2921 /* rule 47 can match eol */
2922 YY_RULE_SETUP
2923 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
2924         YY_BREAK
2925 case 48:
2926 /* rule 48 can match eol */
2927 YY_RULE_SETUP
2928 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_power);
2929         YY_BREAK
2930 case 49:
2931 /* rule 49 can match eol */
2932 YY_RULE_SETUP
2933 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_power);
2934         YY_BREAK
2935 case 50:
2936 /* rule 50 can match eol */
2937 YY_RULE_SETUP
2938 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability);
2939         YY_BREAK
2940 case 51:
2941 /* rule 51 can match eol */
2942 YY_RULE_SETUP
2943 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability);
2944         YY_BREAK
2945 case 52:
2946 /* rule 52 can match eol */
2947 YY_RULE_SETUP
2948 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability_file);
2949         YY_BREAK
2950 case 53:
2951 /* rule 53 can match eol */
2952 YY_RULE_SETUP
2953 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability_file);
2954         YY_BREAK
2955 case 54:
2956 /* rule 54 can match eol */
2957 case 55:
2958 /* rule 55 can match eol */
2959 YY_RULE_SETUP
2960 A_surfxml_host_state = A_surfxml_host_state_ON;
2961         YY_BREAK
2962 case 56:
2963 /* rule 56 can match eol */
2964 case 57:
2965 /* rule 57 can match eol */
2966 YY_RULE_SETUP
2967 A_surfxml_host_state = A_surfxml_host_state_OFF;
2968         YY_BREAK
2969 case 58:
2970 /* rule 58 can match eol */
2971 YY_RULE_SETUP
2972 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state_file);
2973         YY_BREAK
2974 case 59:
2975 /* rule 59 can match eol */
2976 YY_RULE_SETUP
2977 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state_file);
2978         YY_BREAK
2979 case 60:
2980 /* rule 60 can match eol */
2981 YY_RULE_SETUP
2982 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_interference_send);
2983         YY_BREAK
2984 case 61:
2985 /* rule 61 can match eol */
2986 YY_RULE_SETUP
2987 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_interference_send);
2988         YY_BREAK
2989 case 62:
2990 /* rule 62 can match eol */
2991 YY_RULE_SETUP
2992 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_interference_recv);
2993         YY_BREAK
2994 case 63:
2995 /* rule 63 can match eol */
2996 YY_RULE_SETUP
2997 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_interference_recv);
2998         YY_BREAK
2999 case 64:
3000 /* rule 64 can match eol */
3001 YY_RULE_SETUP
3002 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_interference_send_recv);
3003         YY_BREAK
3004 case 65:
3005 /* rule 65 can match eol */
3006 YY_RULE_SETUP
3007 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_interference_send_recv);
3008         YY_BREAK
3009 case 66:
3010 /* rule 66 can match eol */
3011 YY_RULE_SETUP
3012 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_max_outgoing_rate);
3013         YY_BREAK
3014 case 67:
3015 /* rule 67 can match eol */
3016 YY_RULE_SETUP
3017 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_max_outgoing_rate);
3018         YY_BREAK
3019 case 68:
3020 YY_RULE_SETUP
3021 {
3022   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
3023   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
3024   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
3025  }
3026         YY_BREAK
3027 case 69:
3028 YY_RULE_SETUP
3029 {
3030   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
3031   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
3032   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
3033   switch (YY_START) {
3034    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3035    case ROOT_surfxml_host: SET(EPILOG); break;
3036   }
3037  }
3038         YY_BREAK
3039 case 70:
3040 YY_RULE_SETUP
3041 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
3042         YY_BREAK
3043 case 71:
3044 YY_RULE_SETUP
3045 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
3046         YY_BREAK
3047 case YY_STATE_EOF(AL_surfxml_host):
3048 FAIL("EOF in attribute list of `host' element.");
3049         YY_BREAK
3050
3051 case 72:
3052 /* rule 72 can match eol */
3053 YY_RULE_SETUP
3054 {
3055   LEAVE;
3056   ETag_surfxml_host();
3057   popbuffer(); /* attribute */
3058   switch (YY_START) {
3059    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3060    case ROOT_surfxml_host: SET(EPILOG); break;
3061   }
3062  }
3063         YY_BREAK
3064 case 73:
3065 /* rule 73 can match eol */
3066 YY_RULE_SETUP
3067 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
3068         YY_BREAK
3069 case 74:
3070 YY_RULE_SETUP
3071 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
3072         YY_BREAK
3073 case YY_STATE_EOF(S_surfxml_host):
3074 case YY_STATE_EOF(E_surfxml_host):
3075 case YY_STATE_EOF(S_surfxml_host_2):
3076 FAIL("Premature EOF: `</host>' expected.");
3077         YY_BREAK
3078
3079 case 75:
3080 /* rule 75 can match eol */
3081 YY_RULE_SETUP
3082 {
3083   AX_surfxml_prop_id = 0;
3084   AX_surfxml_prop_value = 0;
3085   ENTER(AL_surfxml_prop); pushbuffer(0);
3086   }
3087         YY_BREAK
3088
3089 case 76:
3090 /* rule 76 can match eol */
3091 YY_RULE_SETUP
3092 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
3093         YY_BREAK
3094 case 77:
3095 /* rule 77 can match eol */
3096 YY_RULE_SETUP
3097 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
3098         YY_BREAK
3099 case 78:
3100 /* rule 78 can match eol */
3101 YY_RULE_SETUP
3102 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
3103         YY_BREAK
3104 case 79:
3105 /* rule 79 can match eol */
3106 YY_RULE_SETUP
3107 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
3108         YY_BREAK
3109 case 80:
3110 YY_RULE_SETUP
3111 {
3112   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
3113   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
3114   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
3115  }
3116         YY_BREAK
3117 case 81:
3118 YY_RULE_SETUP
3119 {
3120   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
3121   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
3122   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
3123   switch (YY_START) {
3124    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3125    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
3126    case ROOT_surfxml_prop: SET(EPILOG); break;
3127    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
3128   }
3129  }
3130         YY_BREAK
3131 case 82:
3132 YY_RULE_SETUP
3133 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
3134         YY_BREAK
3135 case 83:
3136 YY_RULE_SETUP
3137 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
3138         YY_BREAK
3139 case YY_STATE_EOF(AL_surfxml_prop):
3140 FAIL("EOF in attribute list of `prop' element.");
3141         YY_BREAK
3142
3143 case 84:
3144 /* rule 84 can match eol */
3145 YY_RULE_SETUP
3146 {
3147   LEAVE;
3148   ETag_surfxml_prop();
3149   popbuffer(); /* attribute */
3150   switch (YY_START) {
3151    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3152    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
3153    case ROOT_surfxml_prop: SET(EPILOG); break;
3154    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
3155   }
3156  }
3157         YY_BREAK
3158 case 85:
3159 /* rule 85 can match eol */
3160 YY_RULE_SETUP
3161 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
3162         YY_BREAK
3163 case 86:
3164 YY_RULE_SETUP
3165 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
3166         YY_BREAK
3167 case YY_STATE_EOF(E_surfxml_prop):
3168 FAIL("Premature EOF: `</prop>' expected.");
3169         YY_BREAK
3170
3171 case 87:
3172 /* rule 87 can match eol */
3173 YY_RULE_SETUP
3174 {
3175   AX_surfxml_router_id = 0;
3176   ENTER(AL_surfxml_router); pushbuffer(0);
3177   }
3178         YY_BREAK
3179
3180 case 88:
3181 /* rule 88 can match eol */
3182 YY_RULE_SETUP
3183 ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
3184         YY_BREAK
3185 case 89:
3186 /* rule 89 can match eol */
3187 YY_RULE_SETUP
3188 ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
3189         YY_BREAK
3190 case 90:
3191 YY_RULE_SETUP
3192 {
3193   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
3194   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
3195  }
3196         YY_BREAK
3197 case 91:
3198 YY_RULE_SETUP
3199 {
3200   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
3201   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
3202   switch (YY_START) {
3203    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3204    case ROOT_surfxml_router: SET(EPILOG); break;
3205   }
3206  }
3207         YY_BREAK
3208 case 92:
3209 YY_RULE_SETUP
3210 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
3211         YY_BREAK
3212 case 93:
3213 YY_RULE_SETUP
3214 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
3215         YY_BREAK
3216 case YY_STATE_EOF(AL_surfxml_router):
3217 FAIL("EOF in attribute list of `router' element.");
3218         YY_BREAK
3219
3220 case 94:
3221 /* rule 94 can match eol */
3222 YY_RULE_SETUP
3223 {
3224   LEAVE;
3225   ETag_surfxml_router();
3226   popbuffer(); /* attribute */
3227   switch (YY_START) {
3228    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3229    case ROOT_surfxml_router: SET(EPILOG); break;
3230   }
3231  }
3232         YY_BREAK
3233 case 95:
3234 /* rule 95 can match eol */
3235 YY_RULE_SETUP
3236 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
3237         YY_BREAK
3238 case 96:
3239 YY_RULE_SETUP
3240 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
3241         YY_BREAK
3242 case YY_STATE_EOF(E_surfxml_router):
3243 FAIL("Premature EOF: `</router>' expected.");
3244         YY_BREAK
3245
3246 case 97:
3247 /* rule 97 can match eol */
3248 YY_RULE_SETUP
3249 {
3250   AX_surfxml_link_id = 0;
3251   AX_surfxml_link_bandwidth = 0;
3252   AX_surfxml_link_bandwidth_file = 0;
3253   AX_surfxml_link_latency = 26;
3254   AX_surfxml_link_latency_file = 0;
3255   AX_surfxml_link_state = A_surfxml_link_state_ON;
3256   AX_surfxml_link_state_file = 0;
3257   AX_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
3258   ENTER(AL_surfxml_link); pushbuffer(0);
3259   }
3260         YY_BREAK
3261
3262 case 98:
3263 /* rule 98 can match eol */
3264 YY_RULE_SETUP
3265 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
3266         YY_BREAK
3267 case 99:
3268 /* rule 99 can match eol */
3269 YY_RULE_SETUP
3270 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
3271         YY_BREAK
3272 case 100:
3273 /* rule 100 can match eol */
3274 YY_RULE_SETUP
3275 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
3276         YY_BREAK
3277 case 101:
3278 /* rule 101 can match eol */
3279 YY_RULE_SETUP
3280 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
3281         YY_BREAK
3282 case 102:
3283 /* rule 102 can match eol */
3284 YY_RULE_SETUP
3285 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth_file);
3286         YY_BREAK
3287 case 103:
3288 /* rule 103 can match eol */
3289 YY_RULE_SETUP
3290 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth_file);
3291         YY_BREAK
3292 case 104:
3293 /* rule 104 can match eol */
3294 YY_RULE_SETUP
3295 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
3296         YY_BREAK
3297 case 105:
3298 /* rule 105 can match eol */
3299 YY_RULE_SETUP
3300 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
3301         YY_BREAK
3302 case 106:
3303 /* rule 106 can match eol */
3304 YY_RULE_SETUP
3305 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency_file);
3306         YY_BREAK
3307 case 107:
3308 /* rule 107 can match eol */
3309 YY_RULE_SETUP
3310 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency_file);
3311         YY_BREAK
3312 case 108:
3313 /* rule 108 can match eol */
3314 case 109:
3315 /* rule 109 can match eol */
3316 YY_RULE_SETUP
3317 A_surfxml_link_state = A_surfxml_link_state_ON;
3318         YY_BREAK
3319 case 110:
3320 /* rule 110 can match eol */
3321 case 111:
3322 /* rule 111 can match eol */
3323 YY_RULE_SETUP
3324 A_surfxml_link_state = A_surfxml_link_state_OFF;
3325         YY_BREAK
3326 case 112:
3327 /* rule 112 can match eol */
3328 YY_RULE_SETUP
3329 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state_file);
3330         YY_BREAK
3331 case 113:
3332 /* rule 113 can match eol */
3333 YY_RULE_SETUP
3334 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state_file);
3335         YY_BREAK
3336 case 114:
3337 /* rule 114 can match eol */
3338 case 115:
3339 /* rule 115 can match eol */
3340 YY_RULE_SETUP
3341 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
3342         YY_BREAK
3343 case 116:
3344 /* rule 116 can match eol */
3345 case 117:
3346 /* rule 117 can match eol */
3347 YY_RULE_SETUP
3348 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FATPIPE;
3349         YY_BREAK
3350 case 118:
3351 YY_RULE_SETUP
3352 {
3353   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
3354   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
3355   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
3356  }
3357         YY_BREAK
3358 case 119:
3359 YY_RULE_SETUP
3360 {
3361   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
3362   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
3363   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
3364   switch (YY_START) {
3365    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3366    case ROOT_surfxml_link: SET(EPILOG); break;
3367   }
3368  }
3369         YY_BREAK
3370 case 120:
3371 YY_RULE_SETUP
3372 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
3373         YY_BREAK
3374 case 121:
3375 YY_RULE_SETUP
3376 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
3377         YY_BREAK
3378 case YY_STATE_EOF(AL_surfxml_link):
3379 FAIL("EOF in attribute list of `link' element.");
3380         YY_BREAK
3381
3382 case 122:
3383 /* rule 122 can match eol */
3384 YY_RULE_SETUP
3385 {
3386   LEAVE;
3387   ETag_surfxml_link();
3388   popbuffer(); /* attribute */
3389   switch (YY_START) {
3390    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3391    case ROOT_surfxml_link: SET(EPILOG); break;
3392   }
3393  }
3394         YY_BREAK
3395 case 123:
3396 /* rule 123 can match eol */
3397 YY_RULE_SETUP
3398 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
3399         YY_BREAK
3400 case 124:
3401 YY_RULE_SETUP
3402 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
3403         YY_BREAK
3404 case YY_STATE_EOF(S_surfxml_link_2):
3405 case YY_STATE_EOF(E_surfxml_link):
3406 case YY_STATE_EOF(S_surfxml_link):
3407 FAIL("Premature EOF: `</link>' expected.");
3408         YY_BREAK
3409
3410 case 125:
3411 /* rule 125 can match eol */
3412 YY_RULE_SETUP
3413 {
3414   AX_surfxml_route_src = 0;
3415   AX_surfxml_route_dst = 0;
3416   AX_surfxml_route_impact_on_src = 30;
3417   AX_surfxml_route_impact_on_dst = 34;
3418   AX_surfxml_route_impact_on_src_with_other_recv = 38;
3419   AX_surfxml_route_impact_on_dst_with_other_send = 42;
3420   ENTER(AL_surfxml_route); pushbuffer(0);
3421   }
3422         YY_BREAK
3423
3424 case 126:
3425 /* rule 126 can match eol */
3426 YY_RULE_SETUP
3427 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
3428         YY_BREAK
3429 case 127:
3430 /* rule 127 can match eol */
3431 YY_RULE_SETUP
3432 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
3433         YY_BREAK
3434 case 128:
3435 /* rule 128 can match eol */
3436 YY_RULE_SETUP
3437 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
3438         YY_BREAK
3439 case 129:
3440 /* rule 129 can match eol */
3441 YY_RULE_SETUP
3442 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
3443         YY_BREAK
3444 case 130:
3445 /* rule 130 can match eol */
3446 YY_RULE_SETUP
3447 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_src);
3448         YY_BREAK
3449 case 131:
3450 /* rule 131 can match eol */
3451 YY_RULE_SETUP
3452 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_src);
3453         YY_BREAK
3454 case 132:
3455 /* rule 132 can match eol */
3456 YY_RULE_SETUP
3457 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_dst);
3458         YY_BREAK
3459 case 133:
3460 /* rule 133 can match eol */
3461 YY_RULE_SETUP
3462 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_dst);
3463         YY_BREAK
3464 case 134:
3465 /* rule 134 can match eol */
3466 YY_RULE_SETUP
3467 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
3468         YY_BREAK
3469 case 135:
3470 /* rule 135 can match eol */
3471 YY_RULE_SETUP
3472 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
3473         YY_BREAK
3474 case 136:
3475 /* rule 136 can match eol */
3476 YY_RULE_SETUP
3477 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
3478         YY_BREAK
3479 case 137:
3480 /* rule 137 can match eol */
3481 YY_RULE_SETUP
3482 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
3483         YY_BREAK
3484 case 138:
3485 YY_RULE_SETUP
3486 {
3487   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3488   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3489   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
3490  }
3491         YY_BREAK
3492 case 139:
3493 YY_RULE_SETUP
3494 {
3495   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3496   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3497   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
3498   switch (YY_START) {
3499    case S_surfxml_platform_description_5: case S_surfxml_platform_description_4: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_5); break;
3500    case ROOT_surfxml_route: SET(EPILOG); break;
3501   }
3502  }
3503         YY_BREAK
3504 case 140:
3505 YY_RULE_SETUP
3506 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
3507         YY_BREAK
3508 case 141:
3509 YY_RULE_SETUP
3510 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
3511         YY_BREAK
3512 case YY_STATE_EOF(AL_surfxml_route):
3513 FAIL("EOF in attribute list of `route' element.");
3514         YY_BREAK
3515
3516 case 142:
3517 /* rule 142 can match eol */
3518 YY_RULE_SETUP
3519 {
3520   LEAVE;
3521   ETag_surfxml_route();
3522   popbuffer(); /* attribute */
3523   switch (YY_START) {
3524    case S_surfxml_platform_description_5: case S_surfxml_platform_description_4: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_5); break;
3525    case ROOT_surfxml_route: SET(EPILOG); break;
3526   }
3527  }
3528         YY_BREAK
3529 case 143:
3530 /* rule 143 can match eol */
3531 YY_RULE_SETUP
3532 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
3533         YY_BREAK
3534 case 144:
3535 YY_RULE_SETUP
3536 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
3537         YY_BREAK
3538 case YY_STATE_EOF(S_surfxml_route):
3539 case YY_STATE_EOF(S_surfxml_route_2):
3540 case YY_STATE_EOF(E_surfxml_route):
3541 FAIL("Premature EOF: `</route>' expected.");
3542         YY_BREAK
3543
3544 case 145:
3545 /* rule 145 can match eol */
3546 YY_RULE_SETUP
3547 {
3548   AX_surfxml_link_c_ctn_id = 0;
3549   ENTER(AL_surfxml_link_c_ctn); pushbuffer(0);
3550   }
3551         YY_BREAK
3552
3553 case 146:
3554 /* rule 146 can match eol */
3555 YY_RULE_SETUP
3556 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_c_ctn_id);
3557         YY_BREAK
3558 case 147:
3559 /* rule 147 can match eol */
3560 YY_RULE_SETUP
3561 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_c_ctn_id);
3562         YY_BREAK
3563 case 148:
3564 YY_RULE_SETUP
3565 {
3566   if (!AX_surfxml_link_c_ctn_id) FAIL("Required attribute `id' not set for `link:ctn' element.");
3567   LEAVE; STag_surfxml_link_c_ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link_c_ctn);
3568  }
3569         YY_BREAK
3570 case 149:
3571 YY_RULE_SETUP
3572 {
3573   if (!AX_surfxml_link_c_ctn_id) FAIL("Required attribute `id' not set for `link:ctn' element.");
3574   LEAVE; STag_surfxml_link_c_ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link_c_ctn(); popbuffer(); /* attribute */
3575   switch (YY_START) {
3576    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3577    case ROOT_surfxml_link_c_ctn: SET(EPILOG); break;
3578   }
3579  }
3580         YY_BREAK
3581 case 150:
3582 YY_RULE_SETUP
3583 FAIL("Unexpected character `%c' in attribute list of link:ctn element.", surf_parse_text[0]);
3584         YY_BREAK
3585 case 151:
3586 YY_RULE_SETUP
3587 FAIL("Bad attribute `%s' in `link:ctn' element start tag.",surf_parse_text);
3588         YY_BREAK
3589 case YY_STATE_EOF(AL_surfxml_link_c_ctn):
3590 FAIL("EOF in attribute list of `link:ctn' element.");
3591         YY_BREAK
3592
3593 case 152:
3594 /* rule 152 can match eol */
3595 YY_RULE_SETUP
3596 {
3597   LEAVE;
3598   ETag_surfxml_link_c_ctn();
3599   popbuffer(); /* attribute */
3600   switch (YY_START) {
3601    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3602    case ROOT_surfxml_link_c_ctn: SET(EPILOG); break;
3603   }
3604  }
3605         YY_BREAK
3606 case 153:
3607 /* rule 153 can match eol */
3608 YY_RULE_SETUP
3609 FAIL("Unexpected end-tag `%s': `</link:ctn>' expected.",surf_parse_text);
3610         YY_BREAK
3611 case 154:
3612 YY_RULE_SETUP
3613 FAIL("Unexpected character `%c': `</link:ctn>' expected.",surf_parse_text[0]);
3614         YY_BREAK
3615 case YY_STATE_EOF(E_surfxml_link_c_ctn):
3616 FAIL("Premature EOF: `</link:ctn>' expected.");
3617         YY_BREAK
3618
3619 case 155:
3620 /* rule 155 can match eol */
3621 YY_RULE_SETUP
3622 {
3623   AX_surfxml_process_host = 0;
3624   AX_surfxml_process_function = 0;
3625   AX_surfxml_process_start_time = 46;
3626   AX_surfxml_process_kill_time = 51;
3627   ENTER(AL_surfxml_process); pushbuffer(0);
3628   }
3629         YY_BREAK
3630
3631 case 156:
3632 /* rule 156 can match eol */
3633 YY_RULE_SETUP
3634 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
3635         YY_BREAK
3636 case 157:
3637 /* rule 157 can match eol */
3638 YY_RULE_SETUP
3639 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
3640         YY_BREAK
3641 case 158:
3642 /* rule 158 can match eol */
3643 YY_RULE_SETUP
3644 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
3645         YY_BREAK
3646 case 159:
3647 /* rule 159 can match eol */
3648 YY_RULE_SETUP
3649 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
3650         YY_BREAK
3651 case 160:
3652 /* rule 160 can match eol */
3653 YY_RULE_SETUP
3654 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start_time);
3655         YY_BREAK
3656 case 161:
3657 /* rule 161 can match eol */
3658 YY_RULE_SETUP
3659 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start_time);
3660         YY_BREAK
3661 case 162:
3662 /* rule 162 can match eol */
3663 YY_RULE_SETUP
3664 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill_time);
3665         YY_BREAK
3666 case 163:
3667 /* rule 163 can match eol */
3668 YY_RULE_SETUP
3669 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill_time);
3670         YY_BREAK
3671 case 164:
3672 YY_RULE_SETUP
3673 {
3674   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3675   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3676   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
3677  }
3678         YY_BREAK
3679 case 165:
3680 YY_RULE_SETUP
3681 {
3682   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3683   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3684   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
3685   switch (YY_START) {
3686    case S_surfxml_platform_description_5: case S_surfxml_platform_description_4: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_5); break;
3687    case ROOT_surfxml_process: SET(EPILOG); break;
3688   }
3689  }
3690         YY_BREAK
3691 case 166:
3692 YY_RULE_SETUP
3693 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
3694         YY_BREAK
3695 case 167:
3696 YY_RULE_SETUP
3697 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
3698         YY_BREAK
3699 case YY_STATE_EOF(AL_surfxml_process):
3700 FAIL("EOF in attribute list of `process' element.");
3701         YY_BREAK
3702
3703 case 168:
3704 /* rule 168 can match eol */
3705 YY_RULE_SETUP
3706 {
3707   LEAVE;
3708   ETag_surfxml_process();
3709   popbuffer(); /* attribute */
3710   switch (YY_START) {
3711    case S_surfxml_platform_description_5: case S_surfxml_platform_description_4: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_5); break;
3712    case ROOT_surfxml_process: SET(EPILOG); break;
3713   }
3714  }
3715         YY_BREAK
3716 case 169:
3717 /* rule 169 can match eol */
3718 YY_RULE_SETUP
3719 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
3720         YY_BREAK
3721 case 170:
3722 YY_RULE_SETUP
3723 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
3724         YY_BREAK
3725 case YY_STATE_EOF(S_surfxml_process):
3726 case YY_STATE_EOF(E_surfxml_process):
3727 case YY_STATE_EOF(S_surfxml_process_2):
3728 FAIL("Premature EOF: `</process>' expected.");
3729         YY_BREAK
3730
3731 case 171:
3732 /* rule 171 can match eol */
3733 YY_RULE_SETUP
3734 {
3735   AX_surfxml_argument_value = 0;
3736   ENTER(AL_surfxml_argument); pushbuffer(0);
3737   }
3738         YY_BREAK
3739
3740 case 172:
3741 /* rule 172 can match eol */
3742 YY_RULE_SETUP
3743 ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
3744         YY_BREAK
3745 case 173:
3746 /* rule 173 can match eol */
3747 YY_RULE_SETUP
3748 ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
3749         YY_BREAK
3750 case 174:
3751 YY_RULE_SETUP
3752 {
3753   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3754   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
3755  }
3756         YY_BREAK
3757 case 175:
3758 YY_RULE_SETUP
3759 {
3760   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3761   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
3762   switch (YY_START) {
3763    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3764    case ROOT_surfxml_argument: SET(EPILOG); break;
3765   }
3766  }
3767         YY_BREAK
3768 case 176:
3769 YY_RULE_SETUP
3770 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
3771         YY_BREAK
3772 case 177:
3773 YY_RULE_SETUP
3774 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
3775         YY_BREAK
3776 case YY_STATE_EOF(AL_surfxml_argument):
3777 FAIL("EOF in attribute list of `argument' element.");
3778         YY_BREAK
3779
3780 case 178:
3781 /* rule 178 can match eol */
3782 YY_RULE_SETUP
3783 {
3784   LEAVE;
3785   ETag_surfxml_argument();
3786   popbuffer(); /* attribute */
3787   switch (YY_START) {
3788    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3789    case ROOT_surfxml_argument: SET(EPILOG); break;
3790   }
3791  }
3792         YY_BREAK
3793 case 179:
3794 /* rule 179 can match eol */
3795 YY_RULE_SETUP
3796 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
3797         YY_BREAK
3798 case 180:
3799 YY_RULE_SETUP
3800 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
3801         YY_BREAK
3802 case YY_STATE_EOF(E_surfxml_argument):
3803 FAIL("Premature EOF: `</argument>' expected.");
3804         YY_BREAK
3805
3806 /* EPILOG: after the root element. */
3807
3808 case 181:
3809 YY_RULE_SETUP
3810 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
3811         YY_BREAK
3812 case YY_STATE_EOF(EPILOG):
3813 SUCCEED;
3814         YY_BREAK
3815
3816 /* CHARACTER DATA. */
3817
3818 /* Non-defined standard entities... */
3819 case 182:
3820 YY_RULE_SETUP
3821 BUFFERPUTC('&');
3822         YY_BREAK
3823 case 183:
3824 YY_RULE_SETUP
3825 BUFFERPUTC('<');
3826         YY_BREAK
3827 case 184:
3828 YY_RULE_SETUP
3829 BUFFERPUTC('>');
3830         YY_BREAK
3831 case 185:
3832 YY_RULE_SETUP
3833 BUFFERPUTC('\'');
3834         YY_BREAK
3835 case 186:
3836 YY_RULE_SETUP
3837 BUFFERPUTC('"');
3838         YY_BREAK
3839 /* Character entities. */
3840 case 187:
3841 YY_RULE_SETUP
3842 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
3843         YY_BREAK
3844 case 188:
3845 YY_RULE_SETUP
3846 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
3847         YY_BREAK
3848
3849 case 189:
3850 /* rule 189 can match eol */
3851 case 190:
3852 /* rule 190 can match eol */
3853 case 191:
3854 /* rule 191 can match eol */
3855 case 192:
3856 /* rule 192 can match eol */
3857 YY_RULE_SETUP
3858 BUFFERPUTC('\n');
3859         YY_BREAK
3860
3861 case 193:
3862 YY_RULE_SETUP
3863 ENTER(CDATA);
3864         YY_BREAK
3865 case 194:
3866 YY_RULE_SETUP
3867 FAIL("Unexpected `]""]>' in character data.");
3868         YY_BREAK
3869
3870 case 195:
3871 YY_RULE_SETUP
3872 BUFFERDONE; LEAVE;
3873         YY_BREAK
3874 case YY_STATE_EOF(VALUE1):
3875 FAIL("EOF in literal (\"'\" expected).");
3876         YY_BREAK
3877
3878 case 196:
3879 YY_RULE_SETUP
3880 BUFFERDONE; LEAVE;
3881         YY_BREAK
3882 case YY_STATE_EOF(VALUE2):
3883 FAIL("EOF in literal (`\"' expected).");
3884         YY_BREAK
3885
3886 case 197:
3887 /* rule 197 can match eol */
3888 YY_RULE_SETUP
3889 BUFFERPUTC(surf_parse_text[0]);
3890         YY_BREAK
3891 case 198:
3892 YY_RULE_SETUP
3893 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
3894         YY_BREAK
3895
3896 case 199:
3897 YY_RULE_SETUP
3898 LEAVE;
3899         YY_BREAK
3900 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
3901 case 200:
3902 YY_RULE_SETUP
3903 BUFFERPUTC(surf_parse_text[0]);
3904         YY_BREAK
3905 case YY_STATE_EOF(CDATA):
3906 FAIL("EOF in CDATA section.");
3907         YY_BREAK
3908
3909 /* Impossible rules to avoid warnings from flex(1). */
3910 /* Ideally, this should be replaced by code in flexml.pl that
3911     generates just the states not covered by other rules. */
3912
3913 case 201:
3914 /* rule 201 can match eol */
3915 YY_RULE_SETUP
3916 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
3917         YY_BREAK
3918
3919 case 202:
3920 YY_RULE_SETUP
3921 ECHO;
3922         YY_BREAK
3923 case YY_STATE_EOF(INITIAL):
3924 case YY_STATE_EOF(ROOT_surfxml_platform_description):
3925 case YY_STATE_EOF(S_surfxml_platform_description_2):
3926 case YY_STATE_EOF(S_surfxml_platform_description_4):
3927 case YY_STATE_EOF(ROOT_surfxml_include):
3928 case YY_STATE_EOF(ROOT_surfxml_host):
3929 case YY_STATE_EOF(S_surfxml_host_1):
3930 case YY_STATE_EOF(ROOT_surfxml_prop):
3931 case YY_STATE_EOF(ROOT_surfxml_router):
3932 case YY_STATE_EOF(ROOT_surfxml_link):
3933 case YY_STATE_EOF(S_surfxml_link_1):
3934 case YY_STATE_EOF(ROOT_surfxml_route):
3935 case YY_STATE_EOF(S_surfxml_route_1):
3936 case YY_STATE_EOF(ROOT_surfxml_link_c_ctn):
3937 case YY_STATE_EOF(ROOT_surfxml_process):
3938 case YY_STATE_EOF(S_surfxml_process_1):
3939 case YY_STATE_EOF(ROOT_surfxml_argument):
3940 case YY_STATE_EOF(IMPOSSIBLE):
3941         yyterminate();
3942
3943         case YY_END_OF_BUFFER:
3944                 {
3945                 /* Amount of text matched not including the EOB char. */
3946                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3947
3948                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3949                 *yy_cp = (yy_hold_char);
3950                 YY_RESTORE_YY_MORE_OFFSET
3951
3952                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3953                         {
3954                         /* We're scanning a new file or input source.  It's
3955                          * possible that this happened because the user
3956                          * just pointed surf_parse_in at a new source and called
3957                          * surf_parse_lex().  If so, then we have to assure
3958                          * consistency between YY_CURRENT_BUFFER and our
3959                          * globals.  Here is the right place to do so, because
3960                          * this is the first action (other than possibly a
3961                          * back-up) that will match for the new input source.
3962                          */
3963                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3964                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
3965                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3966                         }
3967
3968                 /* Note that here we test for yy_c_buf_p "<=" to the position
3969                  * of the first EOB in the buffer, since yy_c_buf_p will
3970                  * already have been incremented past the NUL character
3971                  * (since all states make transitions on EOB to the
3972                  * end-of-buffer state).  Contrast this with the test
3973                  * in input().
3974                  */
3975                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3976                         { /* This was really a NUL. */
3977                         yy_state_type yy_next_state;
3978
3979                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3980
3981                         yy_current_state = yy_get_previous_state(  );
3982
3983                         /* Okay, we're now positioned to make the NUL
3984                          * transition.  We couldn't have
3985                          * yy_get_previous_state() go ahead and do it
3986                          * for us because it doesn't know how to deal
3987                          * with the possibility of jamming (and we don't
3988                          * want to build jamming into it because then it
3989                          * will run more slowly).
3990                          */
3991
3992                         yy_next_state = yy_try_NUL_trans( yy_current_state );
3993
3994                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3995
3996                         if ( yy_next_state )
3997                                 {
3998                                 /* Consume the NUL. */
3999                                 yy_cp = ++(yy_c_buf_p);
4000                                 yy_current_state = yy_next_state;
4001                                 goto yy_match;
4002                                 }
4003
4004                         else
4005                                 {
4006                                 yy_cp = (yy_c_buf_p);
4007                                 goto yy_find_action;
4008                                 }
4009                         }
4010
4011                 else switch ( yy_get_next_buffer(  ) )
4012                         {
4013                         case EOB_ACT_END_OF_FILE:
4014                                 {
4015                                 (yy_did_buffer_switch_on_eof) = 0;
4016
4017                                 if ( surf_parse_wrap( ) )
4018                                         {
4019                                         /* Note: because we've taken care in
4020                                          * yy_get_next_buffer() to have set up
4021                                          * surf_parse_text, we can now set up
4022                                          * yy_c_buf_p so that if some total
4023                                          * hoser (like flex itself) wants to
4024                                          * call the scanner after we return the
4025                                          * YY_NULL, it'll still work - another
4026                                          * YY_NULL will get returned.
4027                                          */
4028                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
4029
4030                                         yy_act = YY_STATE_EOF(YY_START);
4031                                         goto do_action;
4032                                         }
4033
4034                                 else
4035                                         {
4036                                         if ( ! (yy_did_buffer_switch_on_eof) )
4037                                                 YY_NEW_FILE;
4038                                         }
4039                                 break;
4040                                 }
4041
4042                         case EOB_ACT_CONTINUE_SCAN:
4043                                 (yy_c_buf_p) =
4044                                         (yytext_ptr) + yy_amount_of_matched_text;
4045
4046                                 yy_current_state = yy_get_previous_state(  );
4047
4048                                 yy_cp = (yy_c_buf_p);
4049                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4050                                 goto yy_match;
4051
4052                         case EOB_ACT_LAST_MATCH:
4053                                 (yy_c_buf_p) =
4054                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
4055
4056                                 yy_current_state = yy_get_previous_state(  );
4057
4058                                 yy_cp = (yy_c_buf_p);
4059                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4060                                 goto yy_find_action;
4061                         }
4062                 break;
4063                 }
4064
4065         default:
4066                 YY_FATAL_ERROR(
4067                         "fatal flex scanner internal error--no action found" );
4068         } /* end of action switch */
4069                 } /* end of scanning one token */
4070 } /* end of surf_parse_lex */
4071
4072 /* yy_get_next_buffer - try to read in a new buffer
4073  *
4074  * Returns a code representing an action:
4075  *      EOB_ACT_LAST_MATCH -
4076  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4077  *      EOB_ACT_END_OF_FILE - end of file
4078  */
4079 static int yy_get_next_buffer (void)
4080 {
4081         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4082         register char *source = (yytext_ptr);
4083         register int number_to_move, i;
4084         int ret_val;
4085
4086         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
4087                 YY_FATAL_ERROR(
4088                 "fatal flex scanner internal error--end of buffer missed" );
4089
4090         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4091                 { /* Don't try to fill the buffer, so this is an EOF. */
4092                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
4093                         {
4094                         /* We matched a single character, the EOB, so
4095                          * treat this as a final EOF.
4096                          */
4097                         return EOB_ACT_END_OF_FILE;
4098                         }
4099
4100                 else
4101                         {
4102                         /* We matched some text prior to the EOB, first
4103                          * process it.
4104                          */
4105                         return EOB_ACT_LAST_MATCH;
4106                         }
4107                 }
4108
4109         /* Try to read more data. */
4110
4111         /* First move last chars to start of buffer. */
4112         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
4113
4114         for ( i = 0; i < number_to_move; ++i )
4115                 *(dest++) = *(source++);
4116
4117         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4118                 /* don't do the read, it's not guaranteed to return an EOF,
4119                  * just force an EOF
4120                  */
4121                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
4122
4123         else
4124                 {
4125                         int num_to_read =
4126                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4127
4128                 while ( num_to_read <= 0 )
4129                         { /* Not enough room in the buffer - grow it. */
4130
4131                         /* just a shorter name for the current buffer */
4132                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
4133
4134                         int yy_c_buf_p_offset =
4135                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
4136
4137                         if ( b->yy_is_our_buffer )
4138                                 {
4139                                 int new_size = b->yy_buf_size * 2;
4140
4141                                 if ( new_size <= 0 )
4142                                         b->yy_buf_size += b->yy_buf_size / 8;
4143                                 else
4144                                         b->yy_buf_size *= 2;
4145
4146                                 b->yy_ch_buf = (char *)
4147                                         /* Include room in for 2 EOB chars. */
4148                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
4149                                 }
4150                         else
4151                                 /* Can't grow it, we don't own it. */
4152                                 b->yy_ch_buf = 0;
4153
4154                         if ( ! b->yy_ch_buf )
4155                                 YY_FATAL_ERROR(
4156                                 "fatal error - scanner input buffer overflow" );
4157
4158                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
4159
4160                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4161                                                 number_to_move - 1;
4162
4163                         }
4164
4165                 if ( num_to_read > YY_READ_BUF_SIZE )
4166                         num_to_read = YY_READ_BUF_SIZE;
4167
4168                 /* Read in more data. */
4169                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4170                         (yy_n_chars), (size_t) num_to_read );
4171
4172                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4173                 }
4174
4175         if ( (yy_n_chars) == 0 )
4176                 {
4177                 if ( number_to_move == YY_MORE_ADJ )
4178                         {
4179                         ret_val = EOB_ACT_END_OF_FILE;
4180                         surf_parse_restart(surf_parse_in  );
4181                         }
4182
4183                 else
4184                         {
4185                         ret_val = EOB_ACT_LAST_MATCH;
4186                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4187                                 YY_BUFFER_EOF_PENDING;
4188                         }
4189                 }
4190
4191         else
4192                 ret_val = EOB_ACT_CONTINUE_SCAN;
4193
4194         (yy_n_chars) += number_to_move;
4195         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
4196         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
4197
4198         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4199
4200         return ret_val;
4201 }
4202
4203 /* yy_get_previous_state - get the state just before the EOB char was reached */
4204
4205     static yy_state_type yy_get_previous_state (void)
4206 {
4207         register yy_state_type yy_current_state;
4208         register char *yy_cp;
4209     
4210         yy_current_state = (yy_start);
4211
4212         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
4213                 {
4214                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4215                 if ( yy_accept[yy_current_state] )
4216                         {
4217                         (yy_last_accepting_state) = yy_current_state;
4218                         (yy_last_accepting_cpos) = yy_cp;
4219                         }
4220                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4221                         {
4222                         yy_current_state = (int) yy_def[yy_current_state];
4223                         if ( yy_current_state >= 1492 )
4224                                 yy_c = yy_meta[(unsigned int) yy_c];
4225                         }
4226                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4227                 }
4228
4229         return yy_current_state;
4230 }
4231
4232 /* yy_try_NUL_trans - try to make a transition on the NUL character
4233  *
4234  * synopsis
4235  *      next_state = yy_try_NUL_trans( current_state );
4236  */
4237     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
4238 {
4239         register int yy_is_jam;
4240         register char *yy_cp = (yy_c_buf_p);
4241
4242         register YY_CHAR yy_c = 1;
4243         if ( yy_accept[yy_current_state] )
4244                 {
4245                 (yy_last_accepting_state) = yy_current_state;
4246                 (yy_last_accepting_cpos) = yy_cp;
4247                 }
4248         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4249                 {
4250                 yy_current_state = (int) yy_def[yy_current_state];
4251                 if ( yy_current_state >= 1492 )
4252                         yy_c = yy_meta[(unsigned int) yy_c];
4253                 }
4254         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4255         yy_is_jam = (yy_current_state == 1491);
4256
4257         return yy_is_jam ? 0 : yy_current_state;
4258 }
4259
4260 #ifndef YY_NO_INPUT
4261 #ifdef __cplusplus
4262     static int yyinput (void)
4263 #else
4264     static int input  (void)
4265 #endif
4266
4267 {
4268         int c;
4269     
4270         *(yy_c_buf_p) = (yy_hold_char);
4271
4272         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
4273                 {
4274                 /* yy_c_buf_p now points to the character we want to return.
4275                  * If this occurs *before* the EOB characters, then it's a
4276                  * valid NUL; if not, then we've hit the end of the buffer.
4277                  */
4278                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4279                         /* This was really a NUL. */
4280                         *(yy_c_buf_p) = '\0';
4281
4282                 else
4283                         { /* need more input */
4284                         int offset = (yy_c_buf_p) - (yytext_ptr);
4285                         ++(yy_c_buf_p);
4286
4287                         switch ( yy_get_next_buffer(  ) )
4288                                 {
4289                                 case EOB_ACT_LAST_MATCH:
4290                                         /* This happens because yy_g_n_b()
4291                                          * sees that we've accumulated a
4292                                          * token and flags that we need to
4293                                          * try matching the token before
4294                                          * proceeding.  But for input(),
4295                                          * there's no matching to consider.
4296                                          * So convert the EOB_ACT_LAST_MATCH
4297                                          * to EOB_ACT_END_OF_FILE.
4298                                          */
4299
4300                                         /* Reset buffer status. */
4301                                         surf_parse_restart(surf_parse_in );
4302
4303                                         /*FALLTHROUGH*/
4304
4305                                 case EOB_ACT_END_OF_FILE:
4306                                         {
4307                                         if ( surf_parse_wrap( ) )
4308                                                 return EOF;
4309
4310                                         if ( ! (yy_did_buffer_switch_on_eof) )
4311                                                 YY_NEW_FILE;
4312 #ifdef __cplusplus
4313                                         return yyinput();
4314 #else
4315                                         return input();
4316 #endif
4317                                         }
4318
4319                                 case EOB_ACT_CONTINUE_SCAN:
4320                                         (yy_c_buf_p) = (yytext_ptr) + offset;
4321                                         break;
4322                                 }
4323                         }
4324                 }
4325
4326         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
4327         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
4328         (yy_hold_char) = *++(yy_c_buf_p);
4329
4330         if ( c == '\n' )
4331                    
4332     surf_parse_lineno++;
4333 ;
4334
4335         return c;
4336 }
4337 #endif  /* ifndef YY_NO_INPUT */
4338
4339 /** Immediately switch to a different input stream.
4340  * @param input_file A readable stream.
4341  * 
4342  * @note This function does not reset the start condition to @c INITIAL .
4343  */
4344     void surf_parse_restart  (FILE * input_file )
4345 {
4346     
4347         if ( ! YY_CURRENT_BUFFER ){
4348         surf_parse_ensure_buffer_stack ();
4349                 YY_CURRENT_BUFFER_LVALUE =
4350             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
4351         }
4352
4353         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
4354         surf_parse__load_buffer_state( );
4355 }
4356
4357 /** Switch to a different input buffer.
4358  * @param new_buffer The new input buffer.
4359  * 
4360  */
4361     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
4362 {
4363     
4364         /* TODO. We should be able to replace this entire function body
4365          * with
4366          *              surf_parse_pop_buffer_state();
4367          *              surf_parse_push_buffer_state(new_buffer);
4368      */
4369         surf_parse_ensure_buffer_stack ();
4370         if ( YY_CURRENT_BUFFER == new_buffer )
4371                 return;
4372
4373         if ( YY_CURRENT_BUFFER )
4374                 {
4375                 /* Flush out information for old buffer. */
4376                 *(yy_c_buf_p) = (yy_hold_char);
4377                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4378                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4379                 }
4380
4381         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4382         surf_parse__load_buffer_state( );
4383
4384         /* We don't actually know whether we did this switch during
4385          * EOF (surf_parse_wrap()) processing, but the only time this flag
4386          * is looked at is after surf_parse_wrap() is called, so it's safe
4387          * to go ahead and always set it.
4388          */
4389         (yy_did_buffer_switch_on_eof) = 1;
4390 }
4391
4392 static void surf_parse__load_buffer_state  (void)
4393 {
4394         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4395         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4396         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4397         (yy_hold_char) = *(yy_c_buf_p);
4398 }
4399
4400 /** Allocate and initialize an input buffer state.
4401  * @param file A readable stream.
4402  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4403  * 
4404  * @return the allocated buffer state.
4405  */
4406     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
4407 {
4408         YY_BUFFER_STATE b;
4409     
4410         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4411         if ( ! b )
4412                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4413
4414         b->yy_buf_size = size;
4415
4416         /* yy_ch_buf has to be 2 characters longer than the size given because
4417          * we need to put in 2 end-of-buffer characters.
4418          */
4419         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
4420         if ( ! b->yy_ch_buf )
4421                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4422
4423         b->yy_is_our_buffer = 1;
4424
4425         surf_parse__init_buffer(b,file );
4426
4427         return b;
4428 }
4429
4430 /** Destroy the buffer.
4431  * @param b a buffer created with surf_parse__create_buffer()
4432  * 
4433  */
4434     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
4435 {
4436     
4437         if ( ! b )
4438                 return;
4439
4440         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4441                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4442
4443         if ( b->yy_is_our_buffer )
4444                 surf_parse_free((void *) b->yy_ch_buf  );
4445
4446         surf_parse_free((void *) b  );
4447 }
4448
4449 #ifndef __cplusplus
4450 extern int isatty (int );
4451 #endif /* __cplusplus */
4452     
4453 /* Initializes or reinitializes a buffer.
4454  * This function is sometimes called more than once on the same buffer,
4455  * such as during a surf_parse_restart() or at EOF.
4456  */
4457     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
4458
4459 {
4460         int oerrno = errno;
4461     
4462         surf_parse__flush_buffer(b );
4463
4464         b->yy_input_file = file;
4465         b->yy_fill_buffer = 1;
4466
4467     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
4468      * called from surf_parse_restart() or through yy_get_next_buffer.
4469      * In that case, we don't want to reset the lineno or column.
4470      */
4471     if (b != YY_CURRENT_BUFFER){
4472         b->yy_bs_lineno = 1;
4473         b->yy_bs_column = 0;
4474     }
4475
4476         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4477     
4478         errno = oerrno;
4479 }
4480
4481 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4482  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4483  * 
4484  */
4485     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
4486 {
4487         if ( ! b )
4488                 return;
4489
4490         b->yy_n_chars = 0;
4491
4492         /* We always need two end-of-buffer characters.  The first causes
4493          * a transition to the end-of-buffer state.  The second causes
4494          * a jam in that state.
4495          */
4496         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4497         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4498
4499         b->yy_buf_pos = &b->yy_ch_buf[0];
4500
4501         b->yy_at_bol = 1;
4502         b->yy_buffer_status = YY_BUFFER_NEW;
4503
4504         if ( b == YY_CURRENT_BUFFER )
4505                 surf_parse__load_buffer_state( );
4506 }
4507
4508 /** Pushes the new state onto the stack. The new state becomes
4509  *  the current state. This function will allocate the stack
4510  *  if necessary.
4511  *  @param new_buffer The new state.
4512  *  
4513  */
4514 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
4515 {
4516         if (new_buffer == NULL)
4517                 return;
4518
4519         surf_parse_ensure_buffer_stack();
4520
4521         /* This block is copied from surf_parse__switch_to_buffer. */
4522         if ( YY_CURRENT_BUFFER )
4523                 {
4524                 /* Flush out information for old buffer. */
4525                 *(yy_c_buf_p) = (yy_hold_char);
4526                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4527                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4528                 }
4529
4530         /* Only push if top exists. Otherwise, replace top. */
4531         if (YY_CURRENT_BUFFER)
4532                 (yy_buffer_stack_top)++;
4533         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4534
4535         /* copied from surf_parse__switch_to_buffer. */
4536         surf_parse__load_buffer_state( );
4537         (yy_did_buffer_switch_on_eof) = 1;
4538 }
4539
4540 /** Removes and deletes the top of the stack, if present.
4541  *  The next element becomes the new top.
4542  *  
4543  */
4544 void surf_parse_pop_buffer_state (void)
4545 {
4546         if (!YY_CURRENT_BUFFER)
4547                 return;
4548
4549         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
4550         YY_CURRENT_BUFFER_LVALUE = NULL;
4551         if ((yy_buffer_stack_top) > 0)
4552                 --(yy_buffer_stack_top);
4553
4554         if (YY_CURRENT_BUFFER) {
4555                 surf_parse__load_buffer_state( );
4556                 (yy_did_buffer_switch_on_eof) = 1;
4557         }
4558 }
4559
4560 /* Allocates the stack if it does not exist.
4561  *  Guarantees space for at least one push.
4562  */
4563 static void surf_parse_ensure_buffer_stack (void)
4564 {
4565         int num_to_alloc;
4566     
4567         if (!(yy_buffer_stack)) {
4568
4569                 /* First allocation is just for 2 elements, since we don't know if this
4570                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
4571                  * immediate realloc on the next call.
4572          */
4573                 num_to_alloc = 1;
4574                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
4575                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
4576                                                                 );
4577                 
4578                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4579                                 
4580                 (yy_buffer_stack_max) = num_to_alloc;
4581                 (yy_buffer_stack_top) = 0;
4582                 return;
4583         }
4584
4585         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4586
4587                 /* Increase the buffer to prepare for a possible push. */
4588                 int grow_size = 8 /* arbitrary grow size */;
4589
4590                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
4591                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
4592                                                                 ((yy_buffer_stack),
4593                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
4594                                                                 );
4595
4596                 /* zero only the new slots.*/
4597                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4598                 (yy_buffer_stack_max) = num_to_alloc;
4599         }
4600 }
4601
4602 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4603  * @param base the character buffer
4604  * @param size the size in bytes of the character buffer
4605  * 
4606  * @return the newly allocated buffer state object. 
4607  */
4608 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
4609 {
4610         YY_BUFFER_STATE b;
4611     
4612         if ( size < 2 ||
4613              base[size-2] != YY_END_OF_BUFFER_CHAR ||
4614              base[size-1] != YY_END_OF_BUFFER_CHAR )
4615                 /* They forgot to leave room for the EOB's. */
4616                 return 0;
4617
4618         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4619         if ( ! b )
4620                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
4621
4622         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
4623         b->yy_buf_pos = b->yy_ch_buf = base;
4624         b->yy_is_our_buffer = 0;
4625         b->yy_input_file = 0;
4626         b->yy_n_chars = b->yy_buf_size;
4627         b->yy_is_interactive = 0;
4628         b->yy_at_bol = 1;
4629         b->yy_fill_buffer = 0;
4630         b->yy_buffer_status = YY_BUFFER_NEW;
4631
4632         surf_parse__switch_to_buffer(b  );
4633
4634         return b;
4635 }
4636
4637 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
4638  * scan from a @e copy of @a str.
4639  * @param yystr a NUL-terminated string to scan
4640  * 
4641  * @return the newly allocated buffer state object.
4642  * @note If you want to scan bytes that may contain NUL values, then use
4643  *       surf_parse__scan_bytes() instead.
4644  */
4645 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
4646 {
4647     
4648         return surf_parse__scan_bytes(yystr,strlen(yystr) );
4649 }
4650
4651 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
4652  * scan from a @e copy of @a bytes.
4653  * @param bytes the byte buffer to scan
4654  * @param len the number of bytes in the buffer pointed to by @a bytes.
4655  * 
4656  * @return the newly allocated buffer state object.
4657  */
4658 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
4659 {
4660         YY_BUFFER_STATE b;
4661         char *buf;
4662         yy_size_t n;
4663         int i;
4664     
4665         /* Get memory for full buffer, including space for trailing EOB's. */
4666         n = _yybytes_len + 2;
4667         buf = (char *) surf_parse_alloc(n  );
4668         if ( ! buf )
4669                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
4670
4671         for ( i = 0; i < _yybytes_len; ++i )
4672                 buf[i] = yybytes[i];
4673
4674         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4675
4676         b = surf_parse__scan_buffer(buf,n );
4677         if ( ! b )
4678                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
4679
4680         /* It's okay to grow etc. this buffer, and we should throw it
4681          * away when we're done.
4682          */
4683         b->yy_is_our_buffer = 1;
4684
4685         return b;
4686 }
4687
4688     static void yy_push_state (int  new_state )
4689 {
4690         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
4691                 {
4692                 yy_size_t new_size;
4693
4694                 (yy_start_stack_depth) += YY_START_STACK_INCR;
4695                 new_size = (yy_start_stack_depth) * sizeof( int );
4696
4697                 if ( ! (yy_start_stack) )
4698                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
4699
4700                 else
4701                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
4702
4703                 if ( ! (yy_start_stack) )
4704                         YY_FATAL_ERROR(
4705                         "out of memory expanding start-condition stack" );
4706                 }
4707
4708         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
4709
4710         BEGIN(new_state);
4711 }
4712
4713     static void yy_pop_state  (void)
4714 {
4715         if ( --(yy_start_stack_ptr) < 0 )
4716                 YY_FATAL_ERROR( "start-condition stack underflow" );
4717
4718         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
4719 }
4720
4721 #ifndef YY_EXIT_FAILURE
4722 #define YY_EXIT_FAILURE 2
4723 #endif
4724
4725 static void yy_fatal_error (yyconst char* msg )
4726 {
4727         (void) fprintf( stderr, "%s\n", msg );
4728         exit( YY_EXIT_FAILURE );
4729 }
4730
4731 /* Redefine yyless() so it works in section 3 code. */
4732
4733 #undef yyless
4734 #define yyless(n) \
4735         do \
4736                 { \
4737                 /* Undo effects of setting up surf_parse_text. */ \
4738         int yyless_macro_arg = (n); \
4739         YY_LESS_LINENO(yyless_macro_arg);\
4740                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
4741                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
4742                 (yy_hold_char) = *(yy_c_buf_p); \
4743                 *(yy_c_buf_p) = '\0'; \
4744                 surf_parse_leng = yyless_macro_arg; \
4745                 } \
4746         while ( 0 )
4747
4748 /* Accessor  methods (get/set functions) to struct members. */
4749
4750 /** Get the current line number.
4751  * 
4752  */
4753 int surf_parse_get_lineno  (void)
4754 {
4755         
4756     return surf_parse_lineno;
4757 }
4758
4759 /** Get the input stream.
4760  * 
4761  */
4762 FILE *surf_parse_get_in  (void)
4763 {
4764         return surf_parse_in;
4765 }
4766
4767 /** Get the output stream.
4768  * 
4769  */
4770 FILE *surf_parse_get_out  (void)
4771 {
4772         return surf_parse_out;
4773 }
4774
4775 /** Get the length of the current token.
4776  * 
4777  */
4778 int surf_parse_get_leng  (void)
4779 {
4780         return surf_parse_leng;
4781 }
4782
4783 /** Get the current token.
4784  * 
4785  */
4786
4787 char *surf_parse_get_text  (void)
4788 {
4789         return surf_parse_text;
4790 }
4791
4792 /** Set the current line number.
4793  * @param line_number
4794  * 
4795  */
4796 void surf_parse_set_lineno (int  line_number )
4797 {
4798     
4799     surf_parse_lineno = line_number;
4800 }
4801
4802 /** Set the input stream. This does not discard the current
4803  * input buffer.
4804  * @param in_str A readable stream.
4805  * 
4806  * @see surf_parse__switch_to_buffer
4807  */
4808 void surf_parse_set_in (FILE *  in_str )
4809 {
4810         surf_parse_in = in_str ;
4811 }
4812
4813 void surf_parse_set_out (FILE *  out_str )
4814 {
4815         surf_parse_out = out_str ;
4816 }
4817
4818 int surf_parse_get_debug  (void)
4819 {
4820         return surf_parse__flex_debug;
4821 }
4822
4823 void surf_parse_set_debug (int  bdebug )
4824 {
4825         surf_parse__flex_debug = bdebug ;
4826 }
4827
4828 static int yy_init_globals (void)
4829 {
4830         /* Initialization is the same as for the non-reentrant scanner.
4831      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
4832      */
4833
4834     /* We do not touch surf_parse_lineno unless the option is enabled. */
4835     surf_parse_lineno =  1;
4836     
4837     (yy_buffer_stack) = 0;
4838     (yy_buffer_stack_top) = 0;
4839     (yy_buffer_stack_max) = 0;
4840     (yy_c_buf_p) = (char *) 0;
4841     (yy_init) = 0;
4842     (yy_start) = 0;
4843
4844     (yy_start_stack_ptr) = 0;
4845     (yy_start_stack_depth) = 0;
4846     (yy_start_stack) =  NULL;
4847
4848 /* Defined in main.c */
4849 #ifdef YY_STDINIT
4850     surf_parse_in = stdin;
4851     surf_parse_out = stdout;
4852 #else
4853     surf_parse_in = (FILE *) 0;
4854     surf_parse_out = (FILE *) 0;
4855 #endif
4856
4857     /* For future reference: Set errno on error, since we are called by
4858      * surf_parse_lex_init()
4859      */
4860     return 0;
4861 }
4862
4863 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
4864 int surf_parse_lex_destroy  (void)
4865 {
4866     
4867     /* Pop the buffer stack, destroying each element. */
4868         while(YY_CURRENT_BUFFER){
4869                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
4870                 YY_CURRENT_BUFFER_LVALUE = NULL;
4871                 surf_parse_pop_buffer_state();
4872         }
4873
4874         /* Destroy the stack itself. */
4875         surf_parse_free((yy_buffer_stack) );
4876         (yy_buffer_stack) = NULL;
4877
4878     /* Destroy the start condition stack. */
4879         surf_parse_free((yy_start_stack)  );
4880         (yy_start_stack) = NULL;
4881
4882     /* Reset the globals. This is important in a non-reentrant scanner so the next time
4883      * surf_parse_lex() is called, initialization will occur. */
4884     yy_init_globals( );
4885
4886     return 0;
4887 }
4888
4889 /*
4890  * Internal utility routines.
4891  */
4892
4893 #ifndef yytext_ptr
4894 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4895 {
4896         register int i;
4897         for ( i = 0; i < n; ++i )
4898                 s1[i] = s2[i];
4899 }
4900 #endif
4901
4902 #ifdef YY_NEED_STRLEN
4903 static int yy_flex_strlen (yyconst char * s )
4904 {
4905         register int n;
4906         for ( n = 0; s[n]; ++n )
4907                 ;
4908
4909         return n;
4910 }
4911 #endif
4912
4913 void *surf_parse_alloc (yy_size_t  size )
4914 {
4915         return (void *) malloc( size );
4916 }
4917
4918 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
4919 {
4920         /* The cast to (char *) in the following accommodates both
4921          * implementations that use char* generic pointers, and those
4922          * that use void* generic pointers.  It works with the latter
4923          * because both ANSI C and C++ allow castless assignment from
4924          * any pointer type to void*, and deal with argument conversions
4925          * as though doing an assignment.
4926          */
4927         return (void *) realloc( (char *) ptr, size );
4928 }
4929
4930 void surf_parse_free (void * ptr )
4931 {
4932         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
4933 }
4934
4935 #define YYTABLES_NAME "yytables"
4936
4937 /* Element context stack lookup. */
4938 int surfxml_element_context(int i)
4939 {
4940   return (0<i && i<yy_start_stack_depth
4941           ? yy_start_stack[yy_start_stack_ptr - i]
4942           : 0);
4943 }
4944
4945 #ifdef FLEX_DEBUG
4946 void print_yy_stack(char* fmt, ...)
4947 {
4948   int i = 0; va_list ap; va_start(ap, fmt);
4949   vfprintf(stderr, fmt, ap);
4950   if (surfxml_statenames) {
4951       for (i=1; i<yy_start_stack_ptr; i++) {
4952           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
4953       }
4954       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
4955   }
4956   va_end(ap);
4957 }
4958
4959 void print_surfxml_bufferstack()
4960 {
4961     int i;
4962     fputs("Buffer: ", stderr);
4963     for (i = 0; i < blimit; i++) {
4964        if ( surfxml_bufferstack[i] == '\377' ) break;
4965          putc(surfxml_bufferstack[i], stderr);
4966     }
4967     putc('\n', stderr);
4968 }
4969
4970 static void debug_enter(int state, const char* statename) {
4971   yy_push_state(state);
4972   if (surf_parse__flex_debug) {
4973        print_yy_stack("--ENTER(%s) : ",statename);
4974        print_surfxml_bufferstack();
4975   }
4976 }
4977
4978 static void debug_leave(void) {
4979     if (surf_parse__flex_debug) {
4980         print_yy_stack("--LEAVE : ");
4981         print_surfxml_bufferstack();
4982     }
4983   yy_pop_state();
4984 }
4985
4986 static void debug_set(int state, const char* statename) {
4987   BEGIN(state);
4988   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
4989 }
4990 #endif
4991
4992 static void cleanup(void)
4993 {
4994     if (surfxml_statenames) {
4995         free(surfxml_statenames);
4996         surfxml_statenames = NULL;
4997     }
4998     free(surfxml_bufferstack);
4999     surfxml_bufferstack = NULL;
5000
5001     free(indexstack);
5002     indexstack = NULL;
5003 }
5004
5005 static int fail(const char* fmt, ...)
5006 {
5007     int chars_left, used;
5008     va_list ap; va_start(ap, fmt);
5009 #ifdef FLEXML_yylineno
5010     used = sprintf(flexml_err_msg,
5011                    "Invalid XML (XML input line %d, state %d): ",
5012                    surf_parse_lineno, YY_START);
5013 #else
5014     used = sprintf(flexml_err_msg,
5015                    "Invalid XML (state %d): ",
5016                    YY_START);
5017 #endif
5018     chars_left = flexml_max_err_msg_size - used - 1;
5019     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
5020     va_end(ap);
5021
5022 #ifndef FLEXML_quiet_parser
5023     /* print directly to sdterr */
5024     fprintf(stderr, "%s\n", flexml_err_msg);
5025     flexml_err_msg[0] = '\0';
5026 #endif
5027
5028     cleanup();
5029
5030     return 1;
5031 }
5032