simplify autoconfig include mechanism (make tholo happy he can use lint again :-)
[asterisk/asterisk.git] / ast_expr2f.c
1 #line 2 "ast_expr2f.c"
2
3 #line 4 "ast_expr2f.c"
4
5 #define  YY_INT_ALIGNED short int
6
7 /* A lexical scanner generated by flex */
8
9 #define FLEX_SCANNER
10 #define YY_FLEX_MAJOR_VERSION 2
11 #define YY_FLEX_MINOR_VERSION 5
12 #define YY_FLEX_SUBMINOR_VERSION 33
13 #if YY_FLEX_SUBMINOR_VERSION > 0
14 #define FLEX_BETA
15 #endif
16
17 /* First, we deal with  platform-specific or compiler-specific issues. */
18
19 /* begin standard C headers. */
20 #include <stdio.h>
21 #include <string.h>
22 #include <errno.h>
23 #include <stdlib.h>
24
25 /* end standard C headers. */
26
27 /* flex integer type definitions */
28
29 #ifndef FLEXINT_H
30 #define FLEXINT_H
31
32 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33
34 #if __STDC_VERSION__ >= 199901L
35
36 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
37  * if you want the limit (max/min) macros for int types. 
38  */
39 #ifndef __STDC_LIMIT_MACROS
40 #define __STDC_LIMIT_MACROS 1
41 #endif
42
43 #include <inttypes.h>
44 typedef int8_t flex_int8_t;
45 typedef uint8_t flex_uint8_t;
46 typedef int16_t flex_int16_t;
47 typedef uint16_t flex_uint16_t;
48 typedef int32_t flex_int32_t;
49 typedef uint32_t flex_uint32_t;
50 #else
51 typedef signed char flex_int8_t;
52 typedef short int flex_int16_t;
53 typedef int flex_int32_t;
54 typedef unsigned char flex_uint8_t; 
55 typedef unsigned short int flex_uint16_t;
56 typedef unsigned int flex_uint32_t;
57 #endif /* ! C99 */
58
59 /* Limits of integral types. */
60 #ifndef INT8_MIN
61 #define INT8_MIN               (-128)
62 #endif
63 #ifndef INT16_MIN
64 #define INT16_MIN              (-32767-1)
65 #endif
66 #ifndef INT32_MIN
67 #define INT32_MIN              (-2147483647-1)
68 #endif
69 #ifndef INT8_MAX
70 #define INT8_MAX               (127)
71 #endif
72 #ifndef INT16_MAX
73 #define INT16_MAX              (32767)
74 #endif
75 #ifndef INT32_MAX
76 #define INT32_MAX              (2147483647)
77 #endif
78 #ifndef UINT8_MAX
79 #define UINT8_MAX              (255U)
80 #endif
81 #ifndef UINT16_MAX
82 #define UINT16_MAX             (65535U)
83 #endif
84 #ifndef UINT32_MAX
85 #define UINT32_MAX             (4294967295U)
86 #endif
87
88 #endif /* ! FLEXINT_H */
89
90 #ifdef __cplusplus
91
92 /* The "const" storage-class-modifier is valid. */
93 #define YY_USE_CONST
94
95 #else   /* ! __cplusplus */
96
97 #if __STDC__
98
99 #define YY_USE_CONST
100
101 #endif  /* __STDC__ */
102 #endif  /* ! __cplusplus */
103
104 #ifdef YY_USE_CONST
105 #define yyconst const
106 #else
107 #define yyconst
108 #endif
109
110 /* Returned upon end-of-file. */
111 #define YY_NULL 0
112
113 /* Promotes a possibly negative, possibly signed char to an unsigned
114  * integer for use as an array index.  If the signed char is negative,
115  * we want to instead treat it as an 8-bit unsigned char, hence the
116  * double cast.
117  */
118 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
119
120 /* An opaque pointer. */
121 #ifndef YY_TYPEDEF_YY_SCANNER_T
122 #define YY_TYPEDEF_YY_SCANNER_T
123 typedef void* yyscan_t;
124 #endif
125
126 /* For convenience, these vars (plus the bison vars far below)
127    are macros in the reentrant scanner. */
128 #define yyin yyg->yyin_r
129 #define yyout yyg->yyout_r
130 #define yyextra yyg->yyextra_r
131 #define yyleng yyg->yyleng_r
132 #define yytext yyg->yytext_r
133 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
134 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
135 #define yy_flex_debug yyg->yy_flex_debug_r
136
137 int ast_yylex_init (yyscan_t* scanner);
138
139 /* Enter a start condition.  This macro really ought to take a parameter,
140  * but we do it the disgusting crufty way forced on us by the ()-less
141  * definition of BEGIN.
142  */
143 #define BEGIN yyg->yy_start = 1 + 2 *
144
145 /* Translate the current start state into a value that can be later handed
146  * to BEGIN to return to the state.  The YYSTATE alias is for lex
147  * compatibility.
148  */
149 #define YY_START ((yyg->yy_start - 1) / 2)
150 #define YYSTATE YY_START
151
152 /* Action number for EOF rule of a given start state. */
153 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
154
155 /* Special action meaning "start processing a new file". */
156 #define YY_NEW_FILE ast_yyrestart(yyin ,yyscanner )
157
158 #define YY_END_OF_BUFFER_CHAR 0
159
160 /* Size of default input buffer. */
161 #ifndef YY_BUF_SIZE
162 #define YY_BUF_SIZE 16384
163 #endif
164
165 /* The state buf must be large enough to hold one state per character in the main buffer.
166  */
167 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
168
169 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
170 #define YY_TYPEDEF_YY_BUFFER_STATE
171 typedef struct yy_buffer_state *YY_BUFFER_STATE;
172 #endif
173
174 #define EOB_ACT_CONTINUE_SCAN 0
175 #define EOB_ACT_END_OF_FILE 1
176 #define EOB_ACT_LAST_MATCH 2
177
178     #define YY_LESS_LINENO(n)
179     
180 /* Return all but the first "n" matched characters back to the input stream. */
181 #define yyless(n) \
182         do \
183                 { \
184                 /* Undo effects of setting up yytext. */ \
185         int yyless_macro_arg = (n); \
186         YY_LESS_LINENO(yyless_macro_arg);\
187                 *yy_cp = yyg->yy_hold_char; \
188                 YY_RESTORE_YY_MORE_OFFSET \
189                 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
190                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
191                 } \
192         while ( 0 )
193
194 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
195
196 /* The following is because we cannot portably get our hands on size_t
197  * (without autoconf's help, which isn't available because we want
198  * flex-generated scanners to compile on their own).
199  */
200
201 #ifndef YY_TYPEDEF_YY_SIZE_T
202 #define YY_TYPEDEF_YY_SIZE_T
203 typedef unsigned int yy_size_t;
204 #endif
205
206 #ifndef YY_STRUCT_YY_BUFFER_STATE
207 #define YY_STRUCT_YY_BUFFER_STATE
208 struct yy_buffer_state
209         {
210         FILE *yy_input_file;
211
212         char *yy_ch_buf;                /* input buffer */
213         char *yy_buf_pos;               /* current position in input buffer */
214
215         /* Size of input buffer in bytes, not including room for EOB
216          * characters.
217          */
218         yy_size_t yy_buf_size;
219
220         /* Number of characters read into yy_ch_buf, not including EOB
221          * characters.
222          */
223         int yy_n_chars;
224
225         /* Whether we "own" the buffer - i.e., we know we created it,
226          * and can realloc() it to grow it, and should free() it to
227          * delete it.
228          */
229         int yy_is_our_buffer;
230
231         /* Whether this is an "interactive" input source; if so, and
232          * if we're using stdio for input, then we want to use getc()
233          * instead of fread(), to make sure we stop fetching input after
234          * each newline.
235          */
236         int yy_is_interactive;
237
238         /* Whether we're considered to be at the beginning of a line.
239          * If so, '^' rules will be active on the next match, otherwise
240          * not.
241          */
242         int yy_at_bol;
243
244     int yy_bs_lineno; /**< The line count. */
245     int yy_bs_column; /**< The column count. */
246     
247         /* Whether to try to fill the input buffer when we reach the
248          * end of it.
249          */
250         int yy_fill_buffer;
251
252         int yy_buffer_status;
253
254 #define YY_BUFFER_NEW 0
255 #define YY_BUFFER_NORMAL 1
256         /* When an EOF's been seen but there's still some text to process
257          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
258          * shouldn't try reading from the input source any more.  We might
259          * still have a bunch of tokens to match, though, because of
260          * possible backing-up.
261          *
262          * When we actually see the EOF, we change the status to "new"
263          * (via ast_yyrestart()), so that the user can continue scanning by
264          * just pointing yyin at a new input file.
265          */
266 #define YY_BUFFER_EOF_PENDING 2
267
268         };
269 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
270
271 /* We provide macros for accessing buffer states in case in the
272  * future we want to put the buffer states in a more general
273  * "scanner state".
274  *
275  * Returns the top of the stack, or NULL.
276  */
277 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
278                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
279                           : NULL)
280
281 /* Same as previous macro, but useful when we know that the buffer stack is not
282  * NULL or when we need an lvalue. For internal use only.
283  */
284 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
285
286 void ast_yyrestart (FILE *input_file ,yyscan_t yyscanner );
287 void ast_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
288 YY_BUFFER_STATE ast_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
289 void ast_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
290 void ast_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
291 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
292 void ast_yypop_buffer_state (yyscan_t yyscanner );
293
294 static void ast_yyensure_buffer_stack (yyscan_t yyscanner );
295 static void ast_yy_load_buffer_state (yyscan_t yyscanner );
296 static void ast_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
297
298 #define YY_FLUSH_BUFFER ast_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
299
300 YY_BUFFER_STATE ast_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
301 YY_BUFFER_STATE ast_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
302 YY_BUFFER_STATE ast_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
303
304 void *ast_yyalloc (yy_size_t ,yyscan_t yyscanner );
305 void *ast_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
306 void ast_yyfree (void * ,yyscan_t yyscanner );
307
308 #define yy_new_buffer ast_yy_create_buffer
309
310 #define yy_set_interactive(is_interactive) \
311         { \
312         if ( ! YY_CURRENT_BUFFER ){ \
313         ast_yyensure_buffer_stack (yyscanner); \
314                 YY_CURRENT_BUFFER_LVALUE =    \
315             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
316         } \
317         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
318         }
319
320 #define yy_set_bol(at_bol) \
321         { \
322         if ( ! YY_CURRENT_BUFFER ){\
323         ast_yyensure_buffer_stack (yyscanner); \
324                 YY_CURRENT_BUFFER_LVALUE =    \
325             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
326         } \
327         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
328         }
329
330 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
331
332 /* Begin user sect3 */
333
334 #define ast_yywrap(n) 1
335 #define YY_SKIP_YYWRAP
336
337 typedef char YY_CHAR;
338
339 typedef int yy_state_type;
340
341 #define yytext_ptr yytext_r
342 static yyconst flex_int16_t yy_nxt[][128] =
343     {
344     {
345         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
346         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
347         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
348         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
349         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
350         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
351         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
352         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
353         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
354         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
355
356         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
357         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
358         0,    0,    0,    0,    0,    0,    0,    0
359     },
360
361     {
362         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
363        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
364         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
365         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
366        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
367        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
368        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
369
370        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
371        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
372        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
373        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
374        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
375        13,   13,   13,    8,   29,    8,    8,    8
376     },
377
378     {
379         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
380        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
381         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
382         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
383
384        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
385        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
386        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
387        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
388        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
389        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
390        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
391        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
392        13,   13,   13,    8,   29,    8,    8,    8
393     },
394
395     {
396         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
397
398        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
399        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
400        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
401        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
402        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
403        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
404        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
405        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
406        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
407        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
408
409        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
410        30,   30,   30,   31,   30,   32,   30,   30
411     },
412
413     {
414         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
415        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
416        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
417        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
418        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
419        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
420        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
421        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
422
423        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
424        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
425        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
426        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
427        30,   30,   30,   31,   30,   32,   30,   30
428     },
429
430     {
431         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
432        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
433        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
434        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
435        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
436
437        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
438        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
439        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
440        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
441        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
442        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
443        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
444        33,   33,   33,   33,   34,   33,   33,   33
445     },
446
447     {
448         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
449        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
450
451        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
452        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
453        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
454        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
455        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
456        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
457        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
458        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
459        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
460        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
461
462        33,   33,   33,   33,   34,   33,   33,   33
463     },
464
465     {
466        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
467        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
468        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
469        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
470        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
471        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
472        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
473        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
474        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
475
476        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
477        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
478        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
479        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7
480     },
481
482     {
483         7,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
484        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
485        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
486        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
487        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
488        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
489
490        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
491        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
492        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
493        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
494        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
495        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
496        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8
497     },
498
499     {
500         7,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
501        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
502        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
503
504        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
505        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
506        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
507        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
508        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
509        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
510        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
511        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
512        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
513        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9
514
515     },
516
517     {
518         7,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
519       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
520       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
521       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
522       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
523       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
524       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
525       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
526       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
527       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
528
529       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
530       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
531       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10
532     },
533
534     {
535         7,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
536       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
537       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
538       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
539       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
540       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
541       -11,   36,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
542
543       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
544       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
545       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
546       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
547       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
548       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11
549     },
550
551     {
552         7,   37,   37,   37,   37,   37,   37,   37,   37,   37,
553        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
554        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
555        37,   37,   37,   37,   38,   37,   37,   37,   37,   37,
556
557        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
558        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
559        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
560        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
561        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
562        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
563        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
564        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
565        37,   37,   37,   37,   37,   37,   37,   37
566     },
567
568     {
569         7,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
570
571       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
572       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
573       -13,  -13,  -13,  -13,  -13,   39,   39,  -13,  -13,   39,
574       -13,  -13,  -13,  -13,   39,  -13,   39,  -13,   39,   39,
575        39,   39,   39,   39,   39,   39,   39,   39,  -13,   39,
576       -13,  -13,  -13,  -13,   39,   39,   39,   39,   39,   39,
577        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
578        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
579        39,  -13,   39,  -13,   39,   39,  -13,   39,   39,   39,
580        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
581
582        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
583        39,   39,   39,  -13,  -13,  -13,  -13,  -13
584     },
585
586     {
587         7,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
588       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
589       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
590       -14,  -14,  -14,  -14,  -14,   39,   39,  -14,  -14,   39,
591       -14,  -14,  -14,  -14,   39,  -14,   39,  -14,   39,   39,
592        39,   39,   39,   39,   39,   39,   39,   39,  -14,   39,
593       -14,  -14,  -14,  -14,   39,   39,   39,   39,   39,   39,
594        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
595
596        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
597        39,  -14,   39,  -14,   39,   39,  -14,   39,   39,   39,
598        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
599        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
600        39,   39,   39,   40,  -14,  -14,  -14,  -14
601     },
602
603     {
604         7,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
605       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
606       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
607       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
608       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
609
610       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
611       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
612       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
613       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
614       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
615       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
616       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
617       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15
618     },
619
620     {
621         7,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
622       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
623
624       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
625       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,   41,  -16,
626       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
627       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
628       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
629       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
630       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
631       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
632       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
633       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
634
635       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16
636     },
637
638     {
639         7,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
640       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
641       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
642       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
643       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
644       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
645       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
646       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
647       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
648
649       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
650       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
651       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
652       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17
653     },
654
655     {
656         7,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
657       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
658       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
659       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
660       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
661       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
662
663       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
664       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
665       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
666       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
667       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
668       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
669       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18
670     },
671
672     {
673         7,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
674       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
675       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
676
677       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
678       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
679       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
680       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
681       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
682       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
683       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
684       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
685       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
686       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19
687
688     },
689
690     {
691         7,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
692       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
693       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
694       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
695       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
696       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
697       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
698       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
699       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
700       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
701
702       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
703       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
704       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20
705     },
706
707     {
708         7,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
709       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
710       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
711       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
712       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
713       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
714       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
715
716       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
717       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
718       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
719       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
720       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
721       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21
722     },
723
724     {
725         7,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
726       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
727       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
728       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
729
730       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
731       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
732       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
733       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
734       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
735       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
736       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
737       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
738       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22
739     },
740
741     {
742         7,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
743
744       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
745       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
746       -23,  -23,  -23,  -23,  -23,   39,   39,  -23,  -23,   39,
747       -23,  -23,  -23,  -23,   39,  -23,   39,  -23,   42,   42,
748        42,   42,   42,   42,   42,   42,   42,   42,  -23,   39,
749       -23,  -23,  -23,  -23,   39,   39,   39,   39,   39,   39,
750        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
751        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
752        39,  -23,   39,  -23,   39,   39,  -23,   39,   39,   39,
753        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
754
755        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
756        39,   39,   39,  -23,  -23,  -23,  -23,  -23
757     },
758
759     {
760         7,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
761       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
762       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
763       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
764       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
765       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,   43,  -24,
766       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
767       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
768
769       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
770       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
771       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
772       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
773       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24
774     },
775
776     {
777         7,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
778       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
779       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
780       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
781       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
782
783       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
784       -25,   44,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
785       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
786       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
787       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
788       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
789       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
790       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25
791     },
792
793     {
794         7,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
795       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
796
797       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
798       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
799       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
800       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
801       -26,   45,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
802       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
803       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
804       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
805       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
806       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
807
808       -26,  -26,  -26,  -26,  -26,  -26,   46,  -26
809     },
810
811     {
812         7,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
813       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
814       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
815       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
816       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
817       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
818       -27,   47,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
819       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
820       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
821
822       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
823       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
824       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
825       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27
826     },
827
828     {
829         7,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
830       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
831       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
832       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
833       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
834       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
835
836       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
837       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
838       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
839       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
840       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
841       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
842       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28
843     },
844
845     {
846         7,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
847       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
848       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
849
850       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
851       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
852       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
853       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
854       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
855       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
856       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
857       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
858       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
859       -29,  -29,  -29,  -29,   48,  -29,  -29,  -29
860
861     },
862
863     {
864         7,   49,   49,   49,   49,   49,   49,   49,   49,   49,
865        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
866        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
867        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
868        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
869        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
870        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
871        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
872        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
873        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
874
875        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
876        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
877        49,   49,   49,   50,   49,   51,   49,   49
878     },
879
880     {
881         7,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
882       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
883       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
884       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
885       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
886       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
887       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
888
889       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
890       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
891       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
892       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
893       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
894       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31
895     },
896
897     {
898         7,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
899       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
900       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
901       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
902
903       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
904       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
905       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
906       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
907       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
908       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
909       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
910       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
911       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
912     },
913
914     {
915         7,   52,   52,   52,   52,   52,   52,   52,   52,  -33,
916
917       -33,   52,   52,  -33,   52,   52,   52,   52,   52,   52,
918        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
919        52,   52,  -33,  -33,   52,   52,  -33,  -33,  -33,   52,
920       -33,  -33,  -33,  -33,   52,  -33,   52,  -33,   52,   52,
921        52,   52,   52,   52,   52,   52,   52,   52,  -33,   52,
922       -33,  -33,  -33,  -33,   52,   52,   52,   52,   52,   52,
923        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
924        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
925        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
926        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
927
928        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
929        52,   52,   52,   52,  -33,   52,   52,   52
930     },
931
932     {
933         7,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
934       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
935       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
936       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
937       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
938       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
939       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
940       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
941
942       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
943       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
944       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
945       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
946       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34
947     },
948
949     {
950         7,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
951       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
952       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
953       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
954       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
955
956       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
957       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
958       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
959       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
960       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
961       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
962       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
963       -35,  -35,  -35,   53,  -35,  -35,  -35,  -35
964     },
965
966     {
967         7,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
968       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
969
970       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
971       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
972       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
973       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
974       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
975       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
976       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
977       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
978       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
979       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
980
981       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36
982     },
983
984     {
985         7,   37,   37,   37,   37,   37,   37,   37,   37,   37,
986        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
987        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
988        37,   37,   37,   37,   38,   37,   37,   37,   37,   37,
989        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
990        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
991        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
992        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
993        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
994
995        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
996        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
997        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
998        37,   37,   37,   37,   37,   37,   37,   37
999     },
1000
1001     {
1002         7,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1003       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1004       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1005       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1006       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1007       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1008
1009       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1010       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1011       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1012       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1013       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1014       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1015       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38
1016     },
1017
1018     {
1019         7,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1020       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1021       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1022
1023       -39,  -39,  -39,  -39,  -39,   39,   39,  -39,  -39,   39,
1024       -39,  -39,  -39,  -39,   39,  -39,   39,  -39,   39,   39,
1025        39,   39,   39,   39,   39,   39,   39,   39,  -39,   39,
1026       -39,  -39,  -39,  -39,   39,   39,   39,   39,   39,   39,
1027        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1028        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1029        39,  -39,   39,  -39,   39,   39,  -39,   39,   39,   39,
1030        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1031        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1032        39,   39,   39,  -39,  -39,  -39,  -39,  -39
1033
1034     },
1035
1036     {
1037         7,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1038       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1039       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1040       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1041       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1042       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1043       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1044       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1045       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1046       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1047
1048       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1049       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1050       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40
1051     },
1052
1053     {
1054         7,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1055       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1056       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1057       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1058       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1059       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1060       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1061
1062       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1063       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1064       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1065       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1066       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1067       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41
1068     },
1069
1070     {
1071         7,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1072       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1073       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1074       -42,  -42,  -42,  -42,  -42,   39,   39,  -42,  -42,   39,
1075
1076       -42,  -42,  -42,  -42,   39,  -42,   39,  -42,   42,   42,
1077        42,   42,   42,   42,   42,   42,   42,   42,  -42,   39,
1078       -42,  -42,  -42,  -42,   39,   39,   39,   39,   39,   39,
1079        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1080        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1081        39,  -42,   39,  -42,   39,   39,  -42,   39,   39,   39,
1082        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1083        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1084        39,   39,   39,  -42,  -42,  -42,  -42,  -42
1085     },
1086
1087     {
1088         7,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1089
1090       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1091       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1092       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1093       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1094       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1095       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1096       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1097       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1098       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1099       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1100
1101       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1102       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43
1103     },
1104
1105     {
1106         7,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1107       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1108       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1109       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1110       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1111       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1112       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1113       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1114
1115       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1116       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1117       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1118       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1119       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44
1120     },
1121
1122     {
1123         7,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1124       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1125       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1126       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1127       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1128
1129       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1130       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1131       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1132       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1133       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1134       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1135       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1136       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45
1137     },
1138
1139     {
1140         7,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1141       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1142
1143       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1144       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1145       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1146       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1147       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1148       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1149       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1150       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1151       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1152       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1153
1154       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46
1155     },
1156
1157     {
1158         7,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1159       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1160       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1161       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1162       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1163       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1164       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1165       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1166       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1167
1168       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1169       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1170       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1171       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47
1172     },
1173
1174     {
1175         7,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1176       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1177       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1178       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1179       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1180       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1181
1182       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1183       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1184       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1185       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1186       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1187       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1188       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48
1189     },
1190
1191     {
1192         7,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1193        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1194        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1195
1196        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1197        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1198        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1199        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1200        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1201        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1202        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1203        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1204        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1205        49,   49,   49,   50,   49,   51,   49,   49
1206
1207     },
1208
1209     {
1210         7,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1211       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1212       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1213       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1214       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1215       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1216       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1217       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1218       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1219       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1220
1221       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1222       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
1223       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50
1224     },
1225
1226     {
1227         7,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1228       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1229       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1230       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1231       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1232       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1233       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1234
1235       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1236       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1237       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1238       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1239       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1240       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51
1241     },
1242
1243     {
1244         7,   52,   52,   52,   52,   52,   52,   52,   52,  -52,
1245       -52,   52,   52,  -52,   52,   52,   52,   52,   52,   52,
1246        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
1247        52,   52,  -52,  -52,   52,   52,  -52,  -52,  -52,   52,
1248
1249       -52,  -52,  -52,  -52,   52,  -52,   52,  -52,   52,   52,
1250        52,   52,   52,   52,   52,   52,   52,   52,  -52,   52,
1251       -52,  -52,  -52,  -52,   52,   52,   52,   52,   52,   52,
1252        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
1253        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
1254        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
1255        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
1256        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
1257        52,   52,   52,   52,  -52,   52,   52,   52
1258     },
1259
1260     {
1261         7,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1262
1263       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1264       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1265       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1266       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1267       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1268       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1269       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1270       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1271       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1272       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1273
1274       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
1275       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53
1276     },
1277
1278     } ;
1279
1280 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
1281 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
1282 static int yy_get_next_buffer (yyscan_t yyscanner );
1283 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
1284
1285 /* Done after the current pattern has been matched and before the
1286  * corresponding action - sets up yytext.
1287  */
1288 #define YY_DO_BEFORE_ACTION \
1289         yyg->yytext_ptr = yy_bp; \
1290         yyg->yytext_ptr -= yyg->yy_more_len; \
1291         yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
1292         yyg->yy_hold_char = *yy_cp; \
1293         *yy_cp = '\0'; \
1294         yyg->yy_c_buf_p = yy_cp;
1295
1296 #define YY_NUM_RULES 35
1297 #define YY_END_OF_BUFFER 36
1298 /* This struct is not used in this scanner,
1299    but its presence is necessary. */
1300 struct yy_trans_info
1301         {
1302         flex_int32_t yy_verify;
1303         flex_int32_t yy_nxt;
1304         };
1305 static yyconst flex_int16_t yy_accept[54] =
1306     {   0,
1307         0,    0,    0,    0,   32,   32,   36,   35,   25,   27,
1308        19,   35,   29,   29,   17,    2,   22,   23,   15,   13,
1309        14,   16,   28,   20,    9,    3,    8,   18,    1,   35,
1310        31,   30,   32,   33,   33,   12,    0,   26,   29,   24,
1311         5,   28,   21,   11,    6,    7,   10,    4,    0,   31,
1312        30,   32,   34
1313     } ;
1314
1315 static yyconst yy_state_type yy_NUL_trans[54] =
1316     {   0,
1317         8,    8,   30,   30,   33,   33,    0,    0,    0,    0,
1318         0,   37,    0,    0,    0,    0,    0,    0,    0,    0,
1319         0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
1320         0,    0,   52,    0,    0,    0,   37,    0,    0,    0,
1321         0,    0,    0,    0,    0,    0,    0,    0,   49,    0,
1322         0,   52,    0
1323     } ;
1324
1325 /* The intent behind this definition is that it'll catch
1326  * any uses of REJECT which flex missed.
1327  */
1328 #define REJECT reject_used_but_not_detected
1329 #define yymore() (yyg->yy_more_flag = 1)
1330 #define YY_MORE_ADJ yyg->yy_more_len
1331 #define YY_RESTORE_YY_MORE_OFFSET
1332 #line 1 "ast_expr2.fl"
1333 #line 2 "ast_expr2.fl"
1334 /*
1335  * Asterisk -- An open source telephony toolkit.
1336  *
1337  * Copyright (C) 1999 - 2006, Digium, Inc.
1338  *
1339  * Mark Spencer <markster@digium.com>
1340  *
1341  * See http://www.asterisk.org for more information about
1342  * the Asterisk project. Please do not directly contact
1343  * any of the maintainers of this project for assistance;
1344  * the project provides a web site, mailing lists and IRC
1345  * channels for your use.
1346  *
1347  * This program is free software, distributed under the terms of
1348  * the GNU General Public License Version 2. See the LICENSE file
1349  * at the top of the source tree.
1350  */
1351
1352 /*! \file
1353  *
1354  * \brief Dialplan Expression Lexical Scanner
1355  */
1356
1357 #include "asterisk.h"
1358
1359 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
1360
1361 #include <sys/types.h>
1362 #include <stdio.h>
1363 #include <stdlib.h>
1364 #include <string.h>
1365 #include <locale.h>
1366 #include <ctype.h>
1367 #if !defined(SOLARIS) && !defined(__CYGWIN__)
1368 #include <err.h>
1369 #else
1370 #define quad_t int64_t
1371 #endif
1372 #include <errno.h>
1373 #include <regex.h>
1374 #include <limits.h>
1375
1376 #include "asterisk/ast_expr.h"
1377 #include "asterisk/logger.h"
1378 #include "asterisk/strings.h"
1379
1380 enum valtype {
1381         AST_EXPR_integer, AST_EXPR_numeric_string, AST_EXPR_string
1382 } ;
1383
1384 struct val {
1385         enum valtype type;
1386         union {
1387                 char *s;
1388                 quad_t i;
1389         } u;
1390 } ;
1391
1392 #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
1393
1394 #define SET_COLUMNS     do {            \
1395         yylloc_param->first_column = (int)(yyg->yytext_r - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf); \
1396         yylloc_param->last_column += yyleng - 1; \
1397         yylloc_param->first_line = yylloc_param->last_line = 1; \
1398         } while (0)
1399
1400 #define SET_STRING      do {            \
1401         yylval_param->val = calloc(1, sizeof(struct val));      \
1402         yylval_param->val->type = AST_EXPR_string;              \
1403         yylval_param->val->u.s = strdup(yytext);                \
1404         } while (0)
1405
1406 #define SET_NUMERIC_STRING      do {    \
1407         yylval_param->val = calloc(1, sizeof(struct val));      \
1408         yylval_param->val->type = AST_EXPR_numeric_string;      \
1409         yylval_param->val->u.s = strdup(yytext);        \
1410         } while (0)
1411
1412 struct parse_io
1413 {
1414         char *string;
1415         struct val *val;
1416         yyscan_t scanner;
1417 };
1418  
1419 void ast_yyset_column(int column_no, yyscan_t yyscanner);
1420 int ast_yyget_column(yyscan_t yyscanner);
1421 static int curlycount = 0;
1422 static char *expr2_token_subst(char *mess);
1423
1424 #line 1425 "ast_expr2f.c"
1425
1426 #define INITIAL 0
1427 #define var 1
1428 #define trail 2
1429
1430 #ifndef YY_NO_UNISTD_H
1431 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1432  * down here because we want the user's section 1 to have been scanned first.
1433  * The user has a chance to override it with an option.
1434  */
1435 #include <unistd.h>
1436 #endif
1437
1438 #ifndef YY_EXTRA_TYPE
1439 #define YY_EXTRA_TYPE void *
1440 #endif
1441
1442 /* Holds the entire state of the reentrant scanner. */
1443 struct yyguts_t
1444     {
1445
1446     /* User-defined. Not touched by flex. */
1447     YY_EXTRA_TYPE yyextra_r;
1448
1449     /* The rest are the same as the globals declared in the non-reentrant scanner. */
1450     FILE *yyin_r, *yyout_r;
1451     size_t yy_buffer_stack_top; /**< index of top of stack. */
1452     size_t yy_buffer_stack_max; /**< capacity of stack. */
1453     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1454     char yy_hold_char;
1455     int yy_n_chars;
1456     int yyleng_r;
1457     char *yy_c_buf_p;
1458     int yy_init;
1459     int yy_start;
1460     int yy_did_buffer_switch_on_eof;
1461     int yy_start_stack_ptr;
1462     int yy_start_stack_depth;
1463     int *yy_start_stack;
1464     yy_state_type yy_last_accepting_state;
1465     char* yy_last_accepting_cpos;
1466
1467     int yylineno_r;
1468     int yy_flex_debug_r;
1469
1470     char *yytext_r;
1471     int yy_more_flag;
1472     int yy_more_len;
1473
1474     YYSTYPE * yylval_r;
1475
1476     YYLTYPE * yylloc_r;
1477
1478     }; /* end struct yyguts_t */
1479
1480 static int yy_init_globals (yyscan_t yyscanner );
1481
1482     /* This must go here because YYSTYPE and YYLTYPE are included
1483      * from bison output in section 1.*/
1484     #    define yylval yyg->yylval_r
1485     
1486     #    define yylloc yyg->yylloc_r
1487     
1488 /* Accessor methods to globals.
1489    These are made visible to non-reentrant scanners for convenience. */
1490
1491 int ast_yylex_destroy (yyscan_t yyscanner );
1492
1493 int ast_yyget_debug (yyscan_t yyscanner );
1494
1495 void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
1496
1497 YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
1498
1499 void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1500
1501 FILE *ast_yyget_in (yyscan_t yyscanner );
1502
1503 void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
1504
1505 FILE *ast_yyget_out (yyscan_t yyscanner );
1506
1507 void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
1508
1509 int ast_yyget_leng (yyscan_t yyscanner );
1510
1511 char *ast_yyget_text (yyscan_t yyscanner );
1512
1513 int ast_yyget_lineno (yyscan_t yyscanner );
1514
1515 void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
1516
1517 YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
1518
1519 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1520
1521        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
1522     
1523         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
1524     
1525 /* Macros after this point can all be overridden by user definitions in
1526  * section 1.
1527  */
1528
1529 #ifndef YY_SKIP_YYWRAP
1530 #ifdef __cplusplus
1531 extern "C" int ast_yywrap (yyscan_t yyscanner );
1532 #else
1533 extern int ast_yywrap (yyscan_t yyscanner );
1534 #endif
1535 #endif
1536
1537     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
1538     
1539 #ifndef yytext_ptr
1540 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1541 #endif
1542
1543 #ifdef YY_NEED_STRLEN
1544 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1545 #endif
1546
1547 #ifndef YY_NO_INPUT
1548
1549 #ifdef __cplusplus
1550 static int yyinput (yyscan_t yyscanner );
1551 #else
1552 static int input (yyscan_t yyscanner );
1553 #endif
1554
1555 #endif
1556
1557 /* Amount of stuff to slurp up with each read. */
1558 #ifndef YY_READ_BUF_SIZE
1559 #define YY_READ_BUF_SIZE 8192
1560 #endif
1561
1562 /* Copy whatever the last rule matched to the standard output. */
1563 #ifndef ECHO
1564 /* This used to be an fputs(), but since the string might contain NUL's,
1565  * we now use fwrite().
1566  */
1567 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1568 #endif
1569
1570 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1571  * is returned in "result".
1572  */
1573 #ifndef YY_INPUT
1574 #define YY_INPUT(buf,result,max_size) \
1575         errno=0; \
1576         while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
1577         { \
1578                 if( errno != EINTR) \
1579                 { \
1580                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1581                         break; \
1582                 } \
1583                 errno=0; \
1584                 clearerr(yyin); \
1585         }\
1586 \
1587
1588 #endif
1589
1590 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1591  * we don't want an extra ';' after the "return" because that will cause
1592  * some compilers to complain about unreachable statements.
1593  */
1594 #ifndef yyterminate
1595 #define yyterminate() return YY_NULL
1596 #endif
1597
1598 /* Number of entries by which start-condition stack grows. */
1599 #ifndef YY_START_STACK_INCR
1600 #define YY_START_STACK_INCR 25
1601 #endif
1602
1603 /* Report a fatal error. */
1604 #ifndef YY_FATAL_ERROR
1605 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1606 #endif
1607
1608 /* end tables serialization structures and prototypes */
1609
1610 /* Default declaration of generated scanner - a define so the user can
1611  * easily add parameters.
1612  */
1613 #ifndef YY_DECL
1614 #define YY_DECL_IS_OURS 1
1615
1616 extern int ast_yylex \
1617                (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
1618
1619 #define YY_DECL int ast_yylex \
1620                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1621 #endif /* !YY_DECL */
1622
1623 /* Code executed at the beginning of each rule, after yytext and yyleng
1624  * have been set up.
1625  */
1626 #ifndef YY_USER_ACTION
1627 #define YY_USER_ACTION
1628 #endif
1629
1630 /* Code executed at the end of each rule. */
1631 #ifndef YY_BREAK
1632 #define YY_BREAK break;
1633 #endif
1634
1635 #define YY_RULE_SETUP \
1636         YY_USER_ACTION
1637
1638 /** The main scanner function which does all the work.
1639  */
1640 YY_DECL
1641 {
1642         register yy_state_type yy_current_state;
1643         register char *yy_cp, *yy_bp;
1644         register int yy_act;
1645     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1646
1647 #line 102 "ast_expr2.fl"
1648
1649
1650 #line 1651 "ast_expr2f.c"
1651
1652     yylval = yylval_param;
1653
1654     yylloc = yylloc_param;
1655
1656         if ( !yyg->yy_init )
1657                 {
1658                 yyg->yy_init = 1;
1659
1660 #ifdef YY_USER_INIT
1661                 YY_USER_INIT;
1662 #endif
1663
1664                 if ( ! yyg->yy_start )
1665                         yyg->yy_start = 1;      /* first start state */
1666
1667                 if ( ! yyin )
1668                         yyin = stdin;
1669
1670                 if ( ! yyout )
1671                         yyout = stdout;
1672
1673                 if ( ! YY_CURRENT_BUFFER ) {
1674                         ast_yyensure_buffer_stack (yyscanner);
1675                         YY_CURRENT_BUFFER_LVALUE =
1676                                 ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1677                 }
1678
1679                 ast_yy_load_buffer_state(yyscanner );
1680                 }
1681
1682         while ( 1 )             /* loops until end-of-file is reached */
1683                 {
1684                 yyg->yy_more_len = 0;
1685                 if ( yyg->yy_more_flag )
1686                         {
1687                         yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
1688                         yyg->yy_more_flag = 0;
1689                         }
1690                 yy_cp = yyg->yy_c_buf_p;
1691
1692                 /* Support of yytext. */
1693                 *yy_cp = yyg->yy_hold_char;
1694
1695                 /* yy_bp points to the position in yy_ch_buf of the start of
1696                  * the current run.
1697                  */
1698                 yy_bp = yy_cp;
1699
1700                 yy_current_state = yyg->yy_start;
1701 yy_match:
1702                 while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
1703                         {
1704                         if ( yy_accept[yy_current_state] )
1705                                 {
1706                                 yyg->yy_last_accepting_state = yy_current_state;
1707                                 yyg->yy_last_accepting_cpos = yy_cp;
1708                                 }
1709
1710                         ++yy_cp;
1711                         }
1712
1713                 yy_current_state = -yy_current_state;
1714
1715 yy_find_action:
1716                 yy_act = yy_accept[yy_current_state];
1717
1718                 YY_DO_BEFORE_ACTION;
1719
1720 do_action:      /* This label is used only to access EOF actions. */
1721
1722                 switch ( yy_act )
1723         { /* beginning of action switch */
1724                         case 0: /* must back up */
1725                         /* undo the effects of YY_DO_BEFORE_ACTION */
1726                         *yy_cp = yyg->yy_hold_char;
1727                         yy_cp = yyg->yy_last_accepting_cpos + 1;
1728                         yy_current_state = yyg->yy_last_accepting_state;
1729                         goto yy_find_action;
1730
1731 case 1:
1732 YY_RULE_SETUP
1733 #line 104 "ast_expr2.fl"
1734 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1735         YY_BREAK
1736 case 2:
1737 YY_RULE_SETUP
1738 #line 105 "ast_expr2.fl"
1739 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1740         YY_BREAK
1741 case 3:
1742 YY_RULE_SETUP
1743 #line 106 "ast_expr2.fl"
1744 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1745         YY_BREAK
1746 case 4:
1747 YY_RULE_SETUP
1748 #line 107 "ast_expr2.fl"
1749 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1750         YY_BREAK
1751 case 5:
1752 YY_RULE_SETUP
1753 #line 108 "ast_expr2.fl"
1754 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1755         YY_BREAK
1756 case 6:
1757 YY_RULE_SETUP
1758 #line 109 "ast_expr2.fl"
1759 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1760         YY_BREAK
1761 case 7:
1762 YY_RULE_SETUP
1763 #line 110 "ast_expr2.fl"
1764 { SET_COLUMNS; SET_STRING; return TOK_EQTILDE;}
1765         YY_BREAK
1766 case 8:
1767 YY_RULE_SETUP
1768 #line 111 "ast_expr2.fl"
1769 { SET_COLUMNS; SET_STRING; return TOK_GT;}
1770         YY_BREAK
1771 case 9:
1772 YY_RULE_SETUP
1773 #line 112 "ast_expr2.fl"
1774 { SET_COLUMNS; SET_STRING; return TOK_LT;}
1775         YY_BREAK
1776 case 10:
1777 YY_RULE_SETUP
1778 #line 113 "ast_expr2.fl"
1779 { SET_COLUMNS; SET_STRING; return TOK_GE;}
1780         YY_BREAK
1781 case 11:
1782 YY_RULE_SETUP
1783 #line 114 "ast_expr2.fl"
1784 { SET_COLUMNS; SET_STRING; return TOK_LE;}
1785         YY_BREAK
1786 case 12:
1787 YY_RULE_SETUP
1788 #line 115 "ast_expr2.fl"
1789 { SET_COLUMNS; SET_STRING; return TOK_NE;}
1790         YY_BREAK
1791 case 13:
1792 YY_RULE_SETUP
1793 #line 116 "ast_expr2.fl"
1794 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
1795         YY_BREAK
1796 case 14:
1797 YY_RULE_SETUP
1798 #line 117 "ast_expr2.fl"
1799 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
1800         YY_BREAK
1801 case 15:
1802 YY_RULE_SETUP
1803 #line 118 "ast_expr2.fl"
1804 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
1805         YY_BREAK
1806 case 16:
1807 YY_RULE_SETUP
1808 #line 119 "ast_expr2.fl"
1809 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
1810         YY_BREAK
1811 case 17:
1812 YY_RULE_SETUP
1813 #line 120 "ast_expr2.fl"
1814 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
1815         YY_BREAK
1816 case 18:
1817 YY_RULE_SETUP
1818 #line 121 "ast_expr2.fl"
1819 { SET_COLUMNS; SET_STRING; return TOK_COND;}
1820         YY_BREAK
1821 case 19:
1822 YY_RULE_SETUP
1823 #line 122 "ast_expr2.fl"
1824 { SET_COLUMNS; SET_STRING; return TOK_COMPL;}
1825         YY_BREAK
1826 case 20:
1827 YY_RULE_SETUP
1828 #line 123 "ast_expr2.fl"
1829 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
1830         YY_BREAK
1831 case 21:
1832 YY_RULE_SETUP
1833 #line 124 "ast_expr2.fl"
1834 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
1835         YY_BREAK
1836 case 22:
1837 YY_RULE_SETUP
1838 #line 125 "ast_expr2.fl"
1839 { SET_COLUMNS; SET_STRING; return TOK_LP;}
1840         YY_BREAK
1841 case 23:
1842 YY_RULE_SETUP
1843 #line 126 "ast_expr2.fl"
1844 { SET_COLUMNS; SET_STRING; return TOK_RP;}
1845         YY_BREAK
1846 case 24:
1847 YY_RULE_SETUP
1848 #line 127 "ast_expr2.fl"
1849 {
1850                 /* gather the contents of ${} expressions, with trailing stuff,
1851                  * into a single TOKEN.
1852                  * They are much more complex now than they used to be
1853                  */
1854                 curlycount = 0;
1855                 BEGIN(var);
1856                 yymore();
1857         }
1858         YY_BREAK
1859 case 25:
1860 YY_RULE_SETUP
1861 #line 137 "ast_expr2.fl"
1862 {}
1863         YY_BREAK
1864 case 26:
1865 /* rule 26 can match eol */
1866 YY_RULE_SETUP
1867 #line 138 "ast_expr2.fl"
1868 {SET_COLUMNS; SET_STRING; return TOKEN;}
1869         YY_BREAK
1870 case 27:
1871 /* rule 27 can match eol */
1872 YY_RULE_SETUP
1873 #line 140 "ast_expr2.fl"
1874 {/* what to do with eol */}
1875         YY_BREAK
1876 case 28:
1877 YY_RULE_SETUP
1878 #line 141 "ast_expr2.fl"
1879 {
1880                 SET_COLUMNS;
1881                 /* the original behavior of the expression parser was
1882                  * to bring in numbers as a numeric string
1883                  */
1884                 SET_NUMERIC_STRING;
1885                 return TOKEN;
1886         }
1887         YY_BREAK
1888 case 29:
1889 YY_RULE_SETUP
1890 #line 150 "ast_expr2.fl"
1891 {
1892                 SET_COLUMNS;
1893                 SET_STRING;
1894                 return TOKEN;
1895         }
1896         YY_BREAK
1897 case 30:
1898 /* rule 30 can match eol */
1899 YY_RULE_SETUP
1900 #line 157 "ast_expr2.fl"
1901 {
1902                 curlycount--;
1903                 if (curlycount < 0) {
1904                         BEGIN(trail);
1905                         yymore();
1906                 } else {
1907                         yymore();
1908                 }
1909         }
1910         YY_BREAK
1911 case 31:
1912 /* rule 31 can match eol */
1913 YY_RULE_SETUP
1914 #line 167 "ast_expr2.fl"
1915 {
1916                 curlycount++;
1917                 yymore();
1918         }
1919         YY_BREAK
1920 case 32:
1921 YY_RULE_SETUP
1922 #line 173 "ast_expr2.fl"
1923 {
1924                 BEGIN(0);
1925                 SET_COLUMNS;
1926                 SET_STRING;
1927                 return TOKEN;
1928         }
1929         YY_BREAK
1930 case 33:
1931 /* rule 33 can match eol */
1932 YY_RULE_SETUP
1933 #line 180 "ast_expr2.fl"
1934 {
1935                 char c = yytext[yyleng-1];
1936                 BEGIN(0);
1937                 unput(c);
1938                 SET_COLUMNS;
1939                 SET_STRING;
1940                 return TOKEN;
1941         }
1942         YY_BREAK
1943 case 34:
1944 YY_RULE_SETUP
1945 #line 189 "ast_expr2.fl"
1946 {
1947                 curlycount = 0;
1948                 BEGIN(var);
1949                 yymore();
1950         }
1951         YY_BREAK
1952 case YY_STATE_EOF(trail):
1953 #line 195 "ast_expr2.fl"
1954 {
1955                 BEGIN(0);
1956                 SET_COLUMNS;
1957                 SET_STRING;
1958                 return TOKEN;
1959                 /*actually, if an expr is only a variable ref, this could happen a LOT */
1960         }
1961         YY_BREAK
1962 case 35:
1963 YY_RULE_SETUP
1964 #line 203 "ast_expr2.fl"
1965 ECHO;
1966         YY_BREAK
1967 #line 1968 "ast_expr2f.c"
1968 case YY_STATE_EOF(INITIAL):
1969 case YY_STATE_EOF(var):
1970         yyterminate();
1971
1972         case YY_END_OF_BUFFER:
1973                 {
1974                 /* Amount of text matched not including the EOB char. */
1975                 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
1976
1977                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1978                 *yy_cp = yyg->yy_hold_char;
1979                 YY_RESTORE_YY_MORE_OFFSET
1980
1981                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1982                         {
1983                         /* We're scanning a new file or input source.  It's
1984                          * possible that this happened because the user
1985                          * just pointed yyin at a new source and called
1986                          * ast_yylex().  If so, then we have to assure
1987                          * consistency between YY_CURRENT_BUFFER and our
1988                          * globals.  Here is the right place to do so, because
1989                          * this is the first action (other than possibly a
1990                          * back-up) that will match for the new input source.
1991                          */
1992                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1993                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1994                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1995                         }
1996
1997                 /* Note that here we test for yy_c_buf_p "<=" to the position
1998                  * of the first EOB in the buffer, since yy_c_buf_p will
1999                  * already have been incremented past the NUL character
2000                  * (since all states make transitions on EOB to the
2001                  * end-of-buffer state).  Contrast this with the test
2002                  * in input().
2003                  */
2004                 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2005                         { /* This was really a NUL. */
2006                         yy_state_type yy_next_state;
2007
2008                         yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
2009
2010                         yy_current_state = yy_get_previous_state( yyscanner );
2011
2012                         /* Okay, we're now positioned to make the NUL
2013                          * transition.  We couldn't have
2014                          * yy_get_previous_state() go ahead and do it
2015                          * for us because it doesn't know how to deal
2016                          * with the possibility of jamming (and we don't
2017                          * want to build jamming into it because then it
2018                          * will run more slowly).
2019                          */
2020
2021                         yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
2022
2023                         yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2024
2025                         if ( yy_next_state )
2026                                 {
2027                                 /* Consume the NUL. */
2028                                 yy_cp = ++yyg->yy_c_buf_p;
2029                                 yy_current_state = yy_next_state;
2030                                 goto yy_match;
2031                                 }
2032
2033                         else
2034                                 {
2035                                 yy_cp = yyg->yy_c_buf_p;
2036                                 goto yy_find_action;
2037                                 }
2038                         }
2039
2040                 else switch ( yy_get_next_buffer( yyscanner ) )
2041                         {
2042                         case EOB_ACT_END_OF_FILE:
2043                                 {
2044                                 yyg->yy_did_buffer_switch_on_eof = 0;
2045
2046                                 if ( ast_yywrap(yyscanner ) )
2047                                         {
2048                                         /* Note: because we've taken care in
2049                                          * yy_get_next_buffer() to have set up
2050                                          * yytext, we can now set up
2051                                          * yy_c_buf_p so that if some total
2052                                          * hoser (like flex itself) wants to
2053                                          * call the scanner after we return the
2054                                          * YY_NULL, it'll still work - another
2055                                          * YY_NULL will get returned.
2056                                          */
2057                                         yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
2058
2059                                         yy_act = YY_STATE_EOF(YY_START);
2060                                         goto do_action;
2061                                         }
2062
2063                                 else
2064                                         {
2065                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2066                                                 YY_NEW_FILE;
2067                                         }
2068                                 break;
2069                                 }
2070
2071                         case EOB_ACT_CONTINUE_SCAN:
2072                                 yyg->yy_c_buf_p =
2073                                         yyg->yytext_ptr + yy_amount_of_matched_text;
2074
2075                                 yy_current_state = yy_get_previous_state( yyscanner );
2076
2077                                 yy_cp = yyg->yy_c_buf_p;
2078                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2079                                 goto yy_match;
2080
2081                         case EOB_ACT_LAST_MATCH:
2082                                 yyg->yy_c_buf_p =
2083                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
2084
2085                                 yy_current_state = yy_get_previous_state( yyscanner );
2086
2087                                 yy_cp = yyg->yy_c_buf_p;
2088                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2089                                 goto yy_find_action;
2090                         }
2091                 break;
2092                 }
2093
2094         default:
2095                 YY_FATAL_ERROR(
2096                         "fatal flex scanner internal error--no action found" );
2097         } /* end of action switch */
2098                 } /* end of scanning one token */
2099 } /* end of ast_yylex */
2100
2101 /* yy_get_next_buffer - try to read in a new buffer
2102  *
2103  * Returns a code representing an action:
2104  *      EOB_ACT_LAST_MATCH -
2105  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2106  *      EOB_ACT_END_OF_FILE - end of file
2107  */
2108 static int yy_get_next_buffer (yyscan_t yyscanner)
2109 {
2110     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2111         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2112         register char *source = yyg->yytext_ptr;
2113         register int number_to_move, i;
2114         int ret_val;
2115
2116         if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
2117                 YY_FATAL_ERROR(
2118                 "fatal flex scanner internal error--end of buffer missed" );
2119
2120         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2121                 { /* Don't try to fill the buffer, so this is an EOF. */
2122                 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
2123                         {
2124                         /* We matched a single character, the EOB, so
2125                          * treat this as a final EOF.
2126                          */
2127                         return EOB_ACT_END_OF_FILE;
2128                         }
2129
2130                 else
2131                         {
2132                         /* We matched some text prior to the EOB, first
2133                          * process it.
2134                          */
2135                         return EOB_ACT_LAST_MATCH;
2136                         }
2137                 }
2138
2139         /* Try to read more data. */
2140
2141         /* First move last chars to start of buffer. */
2142         number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
2143
2144         for ( i = 0; i < number_to_move; ++i )
2145                 *(dest++) = *(source++);
2146
2147         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2148                 /* don't do the read, it's not guaranteed to return an EOF,
2149                  * just force an EOF
2150                  */
2151                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
2152
2153         else
2154                 {
2155                         int num_to_read =
2156                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2157
2158                 while ( num_to_read <= 0 )
2159                         { /* Not enough room in the buffer - grow it. */
2160
2161                         /* just a shorter name for the current buffer */
2162                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2163
2164                         int yy_c_buf_p_offset =
2165                                 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
2166
2167                         if ( b->yy_is_our_buffer )
2168                                 {
2169                                 int new_size = b->yy_buf_size * 2;
2170
2171                                 if ( new_size <= 0 )
2172                                         b->yy_buf_size += b->yy_buf_size / 8;
2173                                 else
2174                                         b->yy_buf_size *= 2;
2175
2176                                 b->yy_ch_buf = (char *)
2177                                         /* Include room in for 2 EOB chars. */
2178                                         ast_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
2179                                 }
2180                         else
2181                                 /* Can't grow it, we don't own it. */
2182                                 b->yy_ch_buf = 0;
2183
2184                         if ( ! b->yy_ch_buf )
2185                                 YY_FATAL_ERROR(
2186                                 "fatal error - scanner input buffer overflow" );
2187
2188                         yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2189
2190                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2191                                                 number_to_move - 1;
2192
2193                         }
2194
2195                 if ( num_to_read > YY_READ_BUF_SIZE )
2196                         num_to_read = YY_READ_BUF_SIZE;
2197
2198                 /* Read in more data. */
2199                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2200                         yyg->yy_n_chars, num_to_read );
2201
2202                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2203                 }
2204
2205         if ( yyg->yy_n_chars == 0 )
2206                 {
2207                 if ( number_to_move == YY_MORE_ADJ )
2208                         {
2209                         ret_val = EOB_ACT_END_OF_FILE;
2210                         ast_yyrestart(yyin  ,yyscanner);
2211                         }
2212
2213                 else
2214                         {
2215                         ret_val = EOB_ACT_LAST_MATCH;
2216                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2217                                 YY_BUFFER_EOF_PENDING;
2218                         }
2219                 }
2220
2221         else
2222                 ret_val = EOB_ACT_CONTINUE_SCAN;
2223
2224         yyg->yy_n_chars += number_to_move;
2225         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2226         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2227
2228         yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2229
2230         return ret_val;
2231 }
2232
2233 /* yy_get_previous_state - get the state just before the EOB char was reached */
2234
2235     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2236 {
2237         register yy_state_type yy_current_state;
2238         register char *yy_cp;
2239     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2240
2241         yy_current_state = yyg->yy_start;
2242
2243         for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2244                 {
2245                 if ( *yy_cp )
2246                         {
2247                         yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
2248                         }
2249                 else
2250                         yy_current_state = yy_NUL_trans[yy_current_state];
2251                 if ( yy_accept[yy_current_state] )
2252                         {
2253                         yyg->yy_last_accepting_state = yy_current_state;
2254                         yyg->yy_last_accepting_cpos = yy_cp;
2255                         }
2256                 }
2257
2258         return yy_current_state;
2259 }
2260
2261 /* yy_try_NUL_trans - try to make a transition on the NUL character
2262  *
2263  * synopsis
2264  *      next_state = yy_try_NUL_trans( current_state );
2265  */
2266     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
2267 {
2268         register int yy_is_jam;
2269     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
2270         register char *yy_cp = yyg->yy_c_buf_p;
2271
2272         yy_current_state = yy_NUL_trans[yy_current_state];
2273         yy_is_jam = (yy_current_state == 0);
2274
2275         if ( ! yy_is_jam )
2276                 {
2277                 if ( yy_accept[yy_current_state] )
2278                         {
2279                         yyg->yy_last_accepting_state = yy_current_state;
2280                         yyg->yy_last_accepting_cpos = yy_cp;
2281                         }
2282                 }
2283
2284         return yy_is_jam ? 0 : yy_current_state;
2285 }
2286
2287     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
2288 {
2289         register char *yy_cp;
2290     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2291
2292     yy_cp = yyg->yy_c_buf_p;
2293
2294         /* undo effects of setting up yytext */
2295         *yy_cp = yyg->yy_hold_char;
2296
2297         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2298                 { /* need to shift things up to make room */
2299                 /* +2 for EOB chars. */
2300                 register int number_to_move = yyg->yy_n_chars + 2;
2301                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2302                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2303                 register char *source =
2304                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2305
2306                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2307                         *--dest = *--source;
2308
2309                 yy_cp += (int) (dest - source);
2310                 yy_bp += (int) (dest - source);
2311                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2312                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2313
2314                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2315                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2316                 }
2317
2318         *--yy_cp = (char) c;
2319
2320         yyg->yytext_ptr = yy_bp;
2321         yyg->yy_hold_char = *yy_cp;
2322         yyg->yy_c_buf_p = yy_cp;
2323 }
2324
2325 #ifndef YY_NO_INPUT
2326 #ifdef __cplusplus
2327     static int yyinput (yyscan_t yyscanner)
2328 #else
2329     static int input  (yyscan_t yyscanner)
2330 #endif
2331
2332 {
2333         int c;
2334     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2335
2336         *yyg->yy_c_buf_p = yyg->yy_hold_char;
2337
2338         if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2339                 {
2340                 /* yy_c_buf_p now points to the character we want to return.
2341                  * If this occurs *before* the EOB characters, then it's a
2342                  * valid NUL; if not, then we've hit the end of the buffer.
2343                  */
2344                 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2345                         /* This was really a NUL. */
2346                         *yyg->yy_c_buf_p = '\0';
2347
2348                 else
2349                         { /* need more input */
2350                         int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2351                         ++yyg->yy_c_buf_p;
2352
2353                         switch ( yy_get_next_buffer( yyscanner ) )
2354                                 {
2355                                 case EOB_ACT_LAST_MATCH:
2356                                         /* This happens because yy_g_n_b()
2357                                          * sees that we've accumulated a
2358                                          * token and flags that we need to
2359                                          * try matching the token before
2360                                          * proceeding.  But for input(),
2361                                          * there's no matching to consider.
2362                                          * So convert the EOB_ACT_LAST_MATCH
2363                                          * to EOB_ACT_END_OF_FILE.
2364                                          */
2365
2366                                         /* Reset buffer status. */
2367                                         ast_yyrestart(yyin ,yyscanner);
2368
2369                                         /*FALLTHROUGH*/
2370
2371                                 case EOB_ACT_END_OF_FILE:
2372                                         {
2373                                         if ( ast_yywrap(yyscanner ) )
2374                                                 return EOF;
2375
2376                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2377                                                 YY_NEW_FILE;
2378 #ifdef __cplusplus
2379                                         return yyinput(yyscanner);
2380 #else
2381                                         return input(yyscanner);
2382 #endif
2383                                         }
2384
2385                                 case EOB_ACT_CONTINUE_SCAN:
2386                                         yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2387                                         break;
2388                                 }
2389                         }
2390                 }
2391
2392         c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2393         *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
2394         yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2395
2396         return c;
2397 }
2398 #endif  /* ifndef YY_NO_INPUT */
2399
2400 /** Immediately switch to a different input stream.
2401  * @param input_file A readable stream.
2402  * @param yyscanner The scanner object.
2403  * @note This function does not reset the start condition to @c INITIAL .
2404  */
2405     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
2406 {
2407     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2408
2409         if ( ! YY_CURRENT_BUFFER ){
2410         ast_yyensure_buffer_stack (yyscanner);
2411                 YY_CURRENT_BUFFER_LVALUE =
2412             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2413         }
2414
2415         ast_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2416         ast_yy_load_buffer_state(yyscanner );
2417 }
2418
2419 /** Switch to a different input buffer.
2420  * @param new_buffer The new input buffer.
2421  * @param yyscanner The scanner object.
2422  */
2423     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
2424 {
2425     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2426
2427         /* TODO. We should be able to replace this entire function body
2428          * with
2429          *              ast_yypop_buffer_state();
2430          *              ast_yypush_buffer_state(new_buffer);
2431      */
2432         ast_yyensure_buffer_stack (yyscanner);
2433         if ( YY_CURRENT_BUFFER == new_buffer )
2434                 return;
2435
2436         if ( YY_CURRENT_BUFFER )
2437                 {
2438                 /* Flush out information for old buffer. */
2439                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2440                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2441                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2442                 }
2443
2444         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2445         ast_yy_load_buffer_state(yyscanner );
2446
2447         /* We don't actually know whether we did this switch during
2448          * EOF (ast_yywrap()) processing, but the only time this flag
2449          * is looked at is after ast_yywrap() is called, so it's safe
2450          * to go ahead and always set it.
2451          */
2452         yyg->yy_did_buffer_switch_on_eof = 1;
2453 }
2454
2455 static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
2456 {
2457     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2458         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2459         yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2460         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2461         yyg->yy_hold_char = *yyg->yy_c_buf_p;
2462 }
2463
2464 /** Allocate and initialize an input buffer state.
2465  * @param file A readable stream.
2466  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2467  * @param yyscanner The scanner object.
2468  * @return the allocated buffer state.
2469  */
2470     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
2471 {
2472         YY_BUFFER_STATE b;
2473     
2474         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2475         if ( ! b )
2476                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2477
2478         b->yy_buf_size = size;
2479
2480         /* yy_ch_buf has to be 2 characters longer than the size given because
2481          * we need to put in 2 end-of-buffer characters.
2482          */
2483         b->yy_ch_buf = (char *) ast_yyalloc(b->yy_buf_size + 2 ,yyscanner );
2484         if ( ! b->yy_ch_buf )
2485                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2486
2487         b->yy_is_our_buffer = 1;
2488
2489         ast_yy_init_buffer(b,file ,yyscanner);
2490
2491         return b;
2492 }
2493
2494 /** Destroy the buffer.
2495  * @param b a buffer created with ast_yy_create_buffer()
2496  * @param yyscanner The scanner object.
2497  */
2498     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2499 {
2500     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2501
2502         if ( ! b )
2503                 return;
2504
2505         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2506                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2507
2508         if ( b->yy_is_our_buffer )
2509                 ast_yyfree((void *) b->yy_ch_buf ,yyscanner );
2510
2511         ast_yyfree((void *) b ,yyscanner );
2512 }
2513
2514 #ifndef __cplusplus
2515 extern int isatty (int );
2516 #endif /* __cplusplus */
2517     
2518 /* Initializes or reinitializes a buffer.
2519  * This function is sometimes called more than once on the same buffer,
2520  * such as during a ast_yyrestart() or at EOF.
2521  */
2522     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
2523
2524 {
2525         int oerrno = errno;
2526     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2527
2528         ast_yy_flush_buffer(b ,yyscanner);
2529
2530         b->yy_input_file = file;
2531         b->yy_fill_buffer = 1;
2532
2533     /* If b is the current buffer, then ast_yy_init_buffer was _probably_
2534      * called from ast_yyrestart() or through yy_get_next_buffer.
2535      * In that case, we don't want to reset the lineno or column.
2536      */
2537     if (b != YY_CURRENT_BUFFER){
2538         b->yy_bs_lineno = 1;
2539         b->yy_bs_column = 0;
2540     }
2541
2542         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2543     
2544         errno = oerrno;
2545 }
2546
2547 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2548  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2549  * @param yyscanner The scanner object.
2550  */
2551     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2552 {
2553     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2554         if ( ! b )
2555                 return;
2556
2557         b->yy_n_chars = 0;
2558
2559         /* We always need two end-of-buffer characters.  The first causes
2560          * a transition to the end-of-buffer state.  The second causes
2561          * a jam in that state.
2562          */
2563         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2564         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2565
2566         b->yy_buf_pos = &b->yy_ch_buf[0];
2567
2568         b->yy_at_bol = 1;
2569         b->yy_buffer_status = YY_BUFFER_NEW;
2570
2571         if ( b == YY_CURRENT_BUFFER )
2572                 ast_yy_load_buffer_state(yyscanner );
2573 }
2574
2575 /** Pushes the new state onto the stack. The new state becomes
2576  *  the current state. This function will allocate the stack
2577  *  if necessary.
2578  *  @param new_buffer The new state.
2579  *  @param yyscanner The scanner object.
2580  */
2581 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2582 {
2583     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2584         if (new_buffer == NULL)
2585                 return;
2586
2587         ast_yyensure_buffer_stack(yyscanner);
2588
2589         /* This block is copied from ast_yy_switch_to_buffer. */
2590         if ( YY_CURRENT_BUFFER )
2591                 {
2592                 /* Flush out information for old buffer. */
2593                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2594                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2595                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2596                 }
2597
2598         /* Only push if top exists. Otherwise, replace top. */
2599         if (YY_CURRENT_BUFFER)
2600                 yyg->yy_buffer_stack_top++;
2601         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2602
2603         /* copied from ast_yy_switch_to_buffer. */
2604         ast_yy_load_buffer_state(yyscanner );
2605         yyg->yy_did_buffer_switch_on_eof = 1;
2606 }
2607
2608 /** Removes and deletes the top of the stack, if present.
2609  *  The next element becomes the new top.
2610  *  @param yyscanner The scanner object.
2611  */
2612 void ast_yypop_buffer_state (yyscan_t yyscanner)
2613 {
2614     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2615         if (!YY_CURRENT_BUFFER)
2616                 return;
2617
2618         ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2619         YY_CURRENT_BUFFER_LVALUE = NULL;
2620         if (yyg->yy_buffer_stack_top > 0)
2621                 --yyg->yy_buffer_stack_top;
2622
2623         if (YY_CURRENT_BUFFER) {
2624                 ast_yy_load_buffer_state(yyscanner );
2625                 yyg->yy_did_buffer_switch_on_eof = 1;
2626         }
2627 }
2628
2629 /* Allocates the stack if it does not exist.
2630  *  Guarantees space for at least one push.
2631  */
2632 static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
2633 {
2634         int num_to_alloc;
2635     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2636
2637         if (!yyg->yy_buffer_stack) {
2638
2639                 /* First allocation is just for 2 elements, since we don't know if this
2640                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2641                  * immediate realloc on the next call.
2642          */
2643                 num_to_alloc = 1;
2644                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyalloc
2645                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
2646                                                                 , yyscanner);
2647                 
2648                 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2649                                 
2650                 yyg->yy_buffer_stack_max = num_to_alloc;
2651                 yyg->yy_buffer_stack_top = 0;
2652                 return;
2653         }
2654
2655         if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2656
2657                 /* Increase the buffer to prepare for a possible push. */
2658                 int grow_size = 8 /* arbitrary grow size */;
2659
2660                 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2661                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyrealloc
2662                                                                 (yyg->yy_buffer_stack,
2663                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
2664                                                                 , yyscanner);
2665
2666                 /* zero only the new slots.*/
2667                 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2668                 yyg->yy_buffer_stack_max = num_to_alloc;
2669         }
2670 }
2671
2672 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2673  * @param base the character buffer
2674  * @param size the size in bytes of the character buffer
2675  * @param yyscanner The scanner object.
2676  * @return the newly allocated buffer state object. 
2677  */
2678 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
2679 {
2680         YY_BUFFER_STATE b;
2681     
2682         if ( size < 2 ||
2683              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2684              base[size-1] != YY_END_OF_BUFFER_CHAR )
2685                 /* They forgot to leave room for the EOB's. */
2686                 return 0;
2687
2688         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2689         if ( ! b )
2690                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_buffer()" );
2691
2692         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2693         b->yy_buf_pos = b->yy_ch_buf = base;
2694         b->yy_is_our_buffer = 0;
2695         b->yy_input_file = 0;
2696         b->yy_n_chars = b->yy_buf_size;
2697         b->yy_is_interactive = 0;
2698         b->yy_at_bol = 1;
2699         b->yy_fill_buffer = 0;
2700         b->yy_buffer_status = YY_BUFFER_NEW;
2701
2702         ast_yy_switch_to_buffer(b ,yyscanner );
2703
2704         return b;
2705 }
2706
2707 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
2708  * scan from a @e copy of @a str.
2709  * @param yystr a NUL-terminated string to scan
2710  * @param yyscanner The scanner object.
2711  * @return the newly allocated buffer state object.
2712  * @note If you want to scan bytes that may contain NUL values, then use
2713  *       ast_yy_scan_bytes() instead.
2714  */
2715 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
2716 {
2717     
2718         return ast_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
2719 }
2720
2721 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
2722  * scan from a @e copy of @a bytes.
2723  * @param bytes the byte buffer to scan
2724  * @param len the number of bytes in the buffer pointed to by @a bytes.
2725  * @param yyscanner The scanner object.
2726  * @return the newly allocated buffer state object.
2727  */
2728 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
2729 {
2730         YY_BUFFER_STATE b;
2731         char *buf;
2732         yy_size_t n;
2733         int i;
2734     
2735         /* Get memory for full buffer, including space for trailing EOB's. */
2736         n = _yybytes_len + 2;
2737         buf = (char *) ast_yyalloc(n ,yyscanner );
2738         if ( ! buf )
2739                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_bytes()" );
2740
2741         for ( i = 0; i < _yybytes_len; ++i )
2742                 buf[i] = yybytes[i];
2743
2744         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2745
2746         b = ast_yy_scan_buffer(buf,n ,yyscanner);
2747         if ( ! b )
2748                 YY_FATAL_ERROR( "bad buffer in ast_yy_scan_bytes()" );
2749
2750         /* It's okay to grow etc. this buffer, and we should throw it
2751          * away when we're done.
2752          */
2753         b->yy_is_our_buffer = 1;
2754
2755         return b;
2756 }
2757
2758 #ifndef YY_EXIT_FAILURE
2759 #define YY_EXIT_FAILURE 2
2760 #endif
2761
2762 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2763 {
2764         (void) fprintf( stderr, "%s\n", msg );
2765         exit( YY_EXIT_FAILURE );
2766 }
2767
2768 /* Redefine yyless() so it works in section 3 code. */
2769
2770 #undef yyless
2771 #define yyless(n) \
2772         do \
2773                 { \
2774                 /* Undo effects of setting up yytext. */ \
2775         int yyless_macro_arg = (n); \
2776         YY_LESS_LINENO(yyless_macro_arg);\
2777                 yytext[yyleng] = yyg->yy_hold_char; \
2778                 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2779                 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2780                 *yyg->yy_c_buf_p = '\0'; \
2781                 yyleng = yyless_macro_arg; \
2782                 } \
2783         while ( 0 )
2784
2785 /* Accessor  methods (get/set functions) to struct members. */
2786
2787 /** Get the user-defined data for this scanner.
2788  * @param yyscanner The scanner object.
2789  */
2790 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
2791 {
2792     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2793     return yyextra;
2794 }
2795
2796 /** Get the current line number.
2797  * @param yyscanner The scanner object.
2798  */
2799 int ast_yyget_lineno  (yyscan_t yyscanner)
2800 {
2801     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2802     
2803         if (! YY_CURRENT_BUFFER)
2804             return 0;
2805     
2806     return yylineno;
2807 }
2808
2809 /** Get the current column number.
2810  * @param yyscanner The scanner object.
2811  */
2812 int ast_yyget_column  (yyscan_t yyscanner)
2813 {
2814     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2815     
2816         if (! YY_CURRENT_BUFFER)
2817             return 0;
2818     
2819     return yycolumn;
2820 }
2821
2822 /** Get the input stream.
2823  * @param yyscanner The scanner object.
2824  */
2825 FILE *ast_yyget_in  (yyscan_t yyscanner)
2826 {
2827     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2828     return yyin;
2829 }
2830
2831 /** Get the output stream.
2832  * @param yyscanner The scanner object.
2833  */
2834 FILE *ast_yyget_out  (yyscan_t yyscanner)
2835 {
2836     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2837     return yyout;
2838 }
2839
2840 /** Get the length of the current token.
2841  * @param yyscanner The scanner object.
2842  */
2843 int ast_yyget_leng  (yyscan_t yyscanner)
2844 {
2845     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2846     return yyleng;
2847 }
2848
2849 /** Get the current token.
2850  * @param yyscanner The scanner object.
2851  */
2852
2853 char *ast_yyget_text  (yyscan_t yyscanner)
2854 {
2855     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2856     return yytext;
2857 }
2858
2859 /** Set the user-defined data. This data is never touched by the scanner.
2860  * @param user_defined The data to be associated with this scanner.
2861  * @param yyscanner The scanner object.
2862  */
2863 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
2864 {
2865     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2866     yyextra = user_defined ;
2867 }
2868
2869 /** Set the current line number.
2870  * @param line_number
2871  * @param yyscanner The scanner object.
2872  */
2873 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
2874 {
2875     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2876
2877         /* lineno is only valid if an input buffer exists. */
2878         if (! YY_CURRENT_BUFFER )
2879            yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
2880     
2881     yylineno = line_number;
2882 }
2883
2884 /** Set the current column.
2885  * @param line_number
2886  * @param yyscanner The scanner object.
2887  */
2888 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
2889 {
2890     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2891
2892         /* column is only valid if an input buffer exists. */
2893         if (! YY_CURRENT_BUFFER )
2894            yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
2895     
2896     yycolumn = column_no;
2897 }
2898
2899 /** Set the input stream. This does not discard the current
2900  * input buffer.
2901  * @param in_str A readable stream.
2902  * @param yyscanner The scanner object.
2903  * @see ast_yy_switch_to_buffer
2904  */
2905 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
2906 {
2907     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2908     yyin = in_str ;
2909 }
2910
2911 void ast_yyset_out (FILE *  out_str , yyscan_t yyscanner)
2912 {
2913     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2914     yyout = out_str ;
2915 }
2916
2917 int ast_yyget_debug  (yyscan_t yyscanner)
2918 {
2919     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2920     return yy_flex_debug;
2921 }
2922
2923 void ast_yyset_debug (int  bdebug , yyscan_t yyscanner)
2924 {
2925     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2926     yy_flex_debug = bdebug ;
2927 }
2928
2929 /* Accessor methods for yylval and yylloc */
2930
2931 YYSTYPE * ast_yyget_lval  (yyscan_t yyscanner)
2932 {
2933     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2934     return yylval;
2935 }
2936
2937 void ast_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
2938 {
2939     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2940     yylval = yylval_param;
2941 }
2942
2943 YYLTYPE *ast_yyget_lloc  (yyscan_t yyscanner)
2944 {
2945     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2946     return yylloc;
2947 }
2948     
2949 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
2950 {
2951     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2952     yylloc = yylloc_param;
2953 }
2954     
2955 /* User-visible API */
2956
2957 /* ast_yylex_init is special because it creates the scanner itself, so it is
2958  * the ONLY reentrant function that doesn't take the scanner as the last argument.
2959  * That's why we explicitly handle the declaration, instead of using our macros.
2960  */
2961
2962 int ast_yylex_init(yyscan_t* ptr_yy_globals)
2963
2964 {
2965     if (ptr_yy_globals == NULL){
2966         errno = EINVAL;
2967         return 1;
2968     }
2969
2970     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), NULL );
2971
2972     if (*ptr_yy_globals == NULL){
2973         errno = ENOMEM;
2974         return 1;
2975     }
2976
2977     /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
2978     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2979
2980     return yy_init_globals ( *ptr_yy_globals );
2981 }
2982
2983 static int yy_init_globals (yyscan_t yyscanner)
2984 {
2985     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2986     /* Initialization is the same as for the non-reentrant scanner.
2987      * This function is called from ast_yylex_destroy(), so don't allocate here.
2988      */
2989
2990     yyg->yy_buffer_stack = 0;
2991     yyg->yy_buffer_stack_top = 0;
2992     yyg->yy_buffer_stack_max = 0;
2993     yyg->yy_c_buf_p = (char *) 0;
2994     yyg->yy_init = 0;
2995     yyg->yy_start = 0;
2996
2997     yyg->yy_start_stack_ptr = 0;
2998     yyg->yy_start_stack_depth = 0;
2999     yyg->yy_start_stack =  NULL;
3000
3001 /* Defined in main.c */
3002 #ifdef YY_STDINIT
3003     yyin = stdin;
3004     yyout = stdout;
3005 #else
3006     yyin = (FILE *) 0;
3007     yyout = (FILE *) 0;
3008 #endif
3009
3010     /* For future reference: Set errno on error, since we are called by
3011      * ast_yylex_init()
3012      */
3013     return 0;
3014 }
3015
3016 /* ast_yylex_destroy is for both reentrant and non-reentrant scanners. */
3017 int ast_yylex_destroy  (yyscan_t yyscanner)
3018 {
3019     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3020
3021     /* Pop the buffer stack, destroying each element. */
3022         while(YY_CURRENT_BUFFER){
3023                 ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
3024                 YY_CURRENT_BUFFER_LVALUE = NULL;
3025                 ast_yypop_buffer_state(yyscanner);
3026         }
3027
3028         /* Destroy the stack itself. */
3029         ast_yyfree(yyg->yy_buffer_stack ,yyscanner);
3030         yyg->yy_buffer_stack = NULL;
3031
3032     /* Destroy the start condition stack. */
3033         ast_yyfree(yyg->yy_start_stack ,yyscanner );
3034         yyg->yy_start_stack = NULL;
3035
3036     /* Reset the globals. This is important in a non-reentrant scanner so the next time
3037      * ast_yylex() is called, initialization will occur. */
3038     yy_init_globals( yyscanner);
3039
3040     /* Destroy the main struct (reentrant only). */
3041     ast_yyfree ( yyscanner , yyscanner );
3042     yyscanner = NULL;
3043     return 0;
3044 }
3045
3046 /*
3047  * Internal utility routines.
3048  */
3049
3050 #ifndef yytext_ptr
3051 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
3052 {
3053         register int i;
3054         for ( i = 0; i < n; ++i )
3055                 s1[i] = s2[i];
3056 }
3057 #endif
3058
3059 #ifdef YY_NEED_STRLEN
3060 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
3061 {
3062         register int n;
3063         for ( n = 0; s[n]; ++n )
3064                 ;
3065
3066         return n;
3067 }
3068 #endif
3069
3070 void *ast_yyalloc (yy_size_t  size , yyscan_t yyscanner)
3071 {
3072         return (void *) malloc( size );
3073 }
3074
3075 void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
3076 {
3077         /* The cast to (char *) in the following accommodates both
3078          * implementations that use char* generic pointers, and those
3079          * that use void* generic pointers.  It works with the latter
3080          * because both ANSI C and C++ allow castless assignment from
3081          * any pointer type to void*, and deal with argument conversions
3082          * as though doing an assignment.
3083          */
3084         return (void *) realloc( (char *) ptr, size );
3085 }
3086
3087 void ast_yyfree (void * ptr , yyscan_t yyscanner)
3088 {
3089         free( (char *) ptr );   /* see ast_yyrealloc() for (char *) cast */
3090 }
3091
3092 #define YYTABLES_NAME "yytables"
3093
3094 #line 203 "ast_expr2.fl"
3095
3096
3097
3098 /* I'm putting the interface routine to the whole parse here in the flexer input file
3099    mainly because of all the flexer initialization that has to be done. Shouldn't matter
3100    where it is, as long as it's somewhere. I didn't want to define a prototype for the
3101    ast_yy_scan_string in the .y file, because then, I'd have to define YY_BUFFER_STATE there...
3102         UGH! that would be inappropriate. */
3103
3104 int ast_yyparse(void *); /* need to/should define this prototype for the call to yyparse */
3105 int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
3106
3107 int ast_expr(char *expr, char *buf, int length)
3108 {
3109         struct parse_io io;
3110         int return_value = 0;
3111         
3112         memset(&io, 0, sizeof(io));
3113         io.string = expr;  /* to pass to the error routine */
3114         
3115         ast_yylex_init(&io.scanner);
3116         
3117         ast_yy_scan_string(expr, io.scanner);
3118         
3119         ast_yyparse ((void *) &io);
3120
3121         ast_yylex_destroy(io.scanner);
3122
3123         if (!io.val) {
3124                 if (length > 1) {
3125                         strcpy(buf, "0");
3126                         return_value = 1;
3127                 }
3128         } else {
3129                 if (io.val->type == AST_EXPR_integer) {
3130                         int res_length;
3131
3132                         res_length = snprintf(buf, length, "%ld", (long int) io.val->u.i);
3133                         return_value = (res_length <= length) ? res_length : length;
3134                 } else {
3135 #ifdef STANDALONE
3136                         strncpy(buf, io.val->u.s, length - 1);
3137 #else /* !STANDALONE */
3138                         ast_copy_string(buf, io.val->u.s, length);
3139 #endif /* STANDALONE */
3140                         return_value = strlen(buf);
3141                         free(io.val->u.s);
3142                 }
3143                 free(io.val);
3144         }
3145         return return_value;
3146 }
3147
3148
3149 char extra_error_message[4095];
3150 int extra_error_message_supplied = 0;
3151 void  ast_expr_register_extra_error_info(char *message);
3152 void  ast_expr_clear_extra_error_info(void);
3153
3154 void  ast_expr_register_extra_error_info(char *message)
3155 {
3156        extra_error_message_supplied=1;
3157        strcpy(extra_error_message, message);
3158 }
3159
3160 void  ast_expr_clear_extra_error_info(void)
3161 {
3162        extra_error_message_supplied=0;
3163        extra_error_message[0] = 0;
3164 }
3165
3166 static char *expr2_token_equivs1[] = 
3167 {
3168         "TOKEN",
3169         "TOK_COND",
3170         "TOK_COLONCOLON",
3171         "TOK_OR",
3172         "TOK_AND",
3173         "TOK_EQ",
3174         "TOK_GT",
3175         "TOK_LT",
3176         "TOK_GE",
3177         "TOK_LE",
3178         "TOK_NE",
3179         "TOK_PLUS",
3180         "TOK_MINUS",
3181         "TOK_MULT",
3182         "TOK_DIV",
3183         "TOK_MOD",
3184         "TOK_COMPL",
3185         "TOK_COLON",
3186         "TOK_EQTILDE",
3187         "TOK_RP",
3188         "TOK_LP"
3189 };
3190
3191 static char *expr2_token_equivs2[] = 
3192 {
3193         "<token>",
3194         "?",
3195         "::",
3196         "|",
3197         "&",
3198         "=",
3199         ">",
3200         "<",
3201         ">=",
3202         "<=",
3203         "!=",
3204         "+",
3205         "-",
3206         "*",
3207         "/",
3208         "%",
3209         "!",
3210         ":",
3211         "=~",
3212         ")",
3213         "("
3214 };
3215
3216
3217 static char *expr2_token_subst(char *mess)
3218 {
3219         /* calc a length, malloc, fill, and return; yyerror had better free it! */
3220         int len=0,i;
3221         char *p;
3222         char *res, *s,*t;
3223         int expr2_token_equivs_entries = sizeof(expr2_token_equivs1)/sizeof(char*);
3224
3225         for (p=mess; *p; p++) {
3226                 for (i=0; i<expr2_token_equivs_entries; i++) {
3227                         if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 )
3228                         {
3229                                 len+=strlen(expr2_token_equivs2[i])+2;
3230                                 p += strlen(expr2_token_equivs1[i])-1;
3231                                 break;
3232                         }
3233                 }
3234                 len++;
3235         }
3236         res = (char*)malloc(len+1);
3237         res[0] = 0;
3238         s = res;
3239         for (p=mess; *p;) {
3240                 int found = 0;
3241                 for (i=0; i<expr2_token_equivs_entries; i++) {
3242                         if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 ) {
3243                                 *s++ = '\'';
3244                                 for (t=expr2_token_equivs2[i]; *t;) {
3245                                         *s++ = *t++;
3246                                 }
3247                                 *s++ = '\'';
3248                                 p += strlen(expr2_token_equivs1[i]);
3249                                 found = 1;
3250                                 break;
3251                         }
3252                 }
3253                 if( !found )
3254                         *s++ = *p++;
3255         }
3256         *s++ = 0;
3257         return res;
3258 }
3259
3260 int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )
3261 {       
3262         struct yyguts_t * yyg = (struct yyguts_t*)(parseio->scanner);
3263         char spacebuf[8000]; /* best safe than sorry */
3264         char spacebuf2[8000]; /* best safe than sorry */
3265         int i=0;
3266         char *s2 = expr2_token_subst((char *)s);
3267         spacebuf[0] = 0;
3268         
3269         for(i=0;i< (int)(yytext - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);i++) spacebuf2[i] = ' ';  /* uh... assuming yyg is defined, then I can use the yycolumn macro,
3270                                                                                                                                                                                                 which is the same thing as... get this:
3271                                                                                                         yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column
3272                                                                                                         I was tempted to just use yy_buf_pos in the STATE, but..., well:
3273                                                                                                                 a. the yy_buf_pos is the current position in the buffer, which
3274                                                                                                                         may not relate to the entire string/buffer because of the
3275                                                                                                                         buffering.
3276                                                                                                                 b. but, analysis of the situation is that when you use the
3277                                                                                                                         ast_yy_scan_string func, it creates a single buffer the size of
3278                                                                                                  &nb