Logo AND Algorithmique Numérique Distribuée

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