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