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