Merged revisions 83432 via svnmerge from
[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,   21,   22,   13,   23,   24,   24,
355        24,   24,   24,   24,   24,   24,   24,   24,   25,   13,
356        26,   27,   28,   29,   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,   30,    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,   21,   22,   13,   23,   24,   24,
373        24,   24,   24,   24,   24,   24,   24,   24,   25,   13,
374        26,   27,   28,   29,   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,   30,    8,    8,    8
381     },
382
383     {
384         7,   31,   31,   31,   31,   31,   31,   31,   31,   31,
385
386        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
387        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
388        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
389        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
390        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
391        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
392        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
393        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
394        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
395        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
396
397        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
398        31,   31,   31,   32,   31,   33,   31,   31
399     },
400
401     {
402         7,   31,   31,   31,   31,   31,   31,   31,   31,   31,
403        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
404        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
405        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
406        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
407        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
408        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
409        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
410
411        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
412        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
413        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
414        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
415        31,   31,   31,   32,   31,   33,   31,   31
416     },
417
418     {
419         7,   34,   34,   34,   34,   34,   34,   34,   34,   35,
420        35,   34,   34,   35,   34,   34,   34,   34,   34,   34,
421        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
422        34,   34,   35,   35,   34,   34,   36,   35,   35,   34,
423        35,   35,   35,   35,   34,   35,   34,   35,   34,   34,
424
425        34,   34,   34,   34,   34,   34,   34,   34,   35,   34,
426        35,   35,   35,   35,   34,   34,   34,   34,   34,   34,
427        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
428        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
429        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
430        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
431        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
432        34,   34,   34,   34,   35,   34,   34,   34
433     },
434
435     {
436         7,   34,   34,   34,   34,   34,   34,   34,   34,   35,
437        35,   34,   34,   35,   34,   34,   34,   34,   34,   34,
438
439        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
440        34,   34,   35,   35,   34,   34,   36,   35,   35,   34,
441        35,   35,   35,   35,   34,   35,   34,   35,   34,   34,
442        34,   34,   34,   34,   34,   34,   34,   34,   35,   34,
443        35,   35,   35,   35,   34,   34,   34,   34,   34,   34,
444        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
445        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
446        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
447        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
448        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
449
450        34,   34,   34,   34,   35,   34,   34,   34
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,   37,  -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,   38,   38,   38,   38,   38,   38,   38,   38,   38,
541        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
542        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
543        38,   38,   38,   38,   39,   38,   38,   38,   38,   38,
544
545        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
546        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
547        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
548        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
549        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
550        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
551        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
552        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
553        38,   38,   38,   38,   38,   38,   38,   38
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,   40,   40,  -13,  -13,   40,
562       -13,  -13,  -13,  -13,  -13,  -13,   40,  -13,   40,   40,
563        40,   40,   40,   40,   40,   40,   40,   40,  -13,   40,
564       -13,  -13,  -13,  -13,   40,   40,   40,   40,   40,   40,
565        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
566        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
567        40,  -13,   40,  -13,   40,   40,  -13,   40,   40,   40,
568        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
569
570        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
571        40,   40,   40,  -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,   40,   40,  -14,  -14,   40,
579       -14,  -14,  -14,  -14,  -14,  -14,   40,  -14,   40,   40,
580        40,   40,   40,   40,   40,   40,   40,   40,  -14,   40,
581       -14,  -14,  -14,  -14,   40,   40,   40,   40,   40,   40,
582        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
583
584        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
585        40,  -14,   40,  -14,   40,   40,  -14,   40,   40,   40,
586        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
587        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
588        40,   40,   40,   41,  -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,   42,  -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,  -23,  -23,  -23,  -23,  -23,
735       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
736       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
737       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
738       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
739       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
740       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
741       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
742
743       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
744       -23,  -23,  -23,  -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,   40,   40,  -24,  -24,   40,
752       -24,  -24,  -24,  -24,  -24,  -24,   43,  -24,   44,   44,
753        44,   44,   44,   44,   44,   44,   44,   44,  -24,   40,
754       -24,  -24,  -24,  -24,   40,   40,   40,   40,   40,   40,
755        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
756
757        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
758        40,  -24,   40,  -24,   40,   40,  -24,   40,   40,   40,
759        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
760        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
761        40,   40,   40,  -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,   45,  -25,
772       -25,  -25,  -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,   46,  -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,  -26,  -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,   48,  -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,   49,  -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,  -29,  -29,  -29,  -29
848
849     },
850
851     {
852         7,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
853       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
854       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
855       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
856       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
857       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
858       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
859       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
860       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
861       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
862
863       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
864       -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
865       -30,  -30,  -30,  -30,   50,  -30,  -30,  -30
866     },
867
868     {
869         7,   51,   51,   51,   51,   51,   51,   51,   51,   51,
870        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
871        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
872        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
873        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
874        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
875        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
876
877        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
878        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
879        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
880        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
881        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
882        51,   51,   51,   52,   51,   53,   51,   51
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,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
904
905       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
906       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
907       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
908       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
909       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
910       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
911       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
912       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
913       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
914       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
915
916       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
917       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33
918     },
919
920     {
921         7,   54,   54,   54,   54,   54,   54,   54,   54,  -34,
922       -34,   54,   54,  -34,   54,   54,   54,   54,   54,   54,
923        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
924        54,   54,  -34,  -34,   54,   54,  -34,  -34,  -34,   54,
925       -34,  -34,  -34,  -34,   54,  -34,   54,  -34,   54,   54,
926        54,   54,   54,   54,   54,   54,   54,   54,  -34,   54,
927       -34,  -34,  -34,  -34,   54,   54,   54,   54,   54,   54,
928        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
929
930        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
931        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
932        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
933        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
934        54,   54,   54,   54,  -34,   54,   54,   54
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,  -35,  -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,   55,  -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,  -37,  -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,   39,   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,  -42,  -42,  -42,  -42,  -42,
1063
1064       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1065       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1066       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1067       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1068       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1069       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1070       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1071       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1072       -42,  -42,  -42,  -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,   40,   40,  -43,  -43,   40,
1081       -43,  -43,  -43,  -43,  -43,  -43,   40,  -43,   56,   56,
1082        56,   56,   56,   56,   56,   56,   56,   56,  -43,   40,
1083       -43,  -43,  -43,  -43,   40,   40,   40,   40,   40,   40,
1084        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1085        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1086        40,  -43,   40,  -43,   40,   40,  -43,   40,   40,   40,
1087        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1088
1089        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1090        40,   40,   40,  -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,   40,   40,  -44,  -44,   40,
1098       -44,  -44,  -44,  -44,  -44,  -44,   43,  -44,   44,   44,
1099        44,   44,   44,   44,   44,   44,   44,   44,  -44,   40,
1100       -44,  -44,  -44,  -44,   40,   40,   40,   40,   40,   40,
1101        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1102
1103        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1104        40,  -44,   40,  -44,   40,   40,  -44,   40,   40,   40,
1105        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1106        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1107        40,   40,   40,  -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,  -49,  -49,  -49,  -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,   52,   51,   53,   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         7,   54,   54,   54,   54,   54,   54,   54,   54,  -54,
1268       -54,   54,   54,  -54,   54,   54,   54,   54,   54,   54,
1269        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1270        54,   54,  -54,  -54,   54,   54,  -54,  -54,  -54,   54,
1271       -54,  -54,  -54,  -54,   54,  -54,   54,  -54,   54,   54,
1272        54,   54,   54,   54,   54,   54,   54,   54,  -54,   54,
1273       -54,  -54,  -54,  -54,   54,   54,   54,   54,   54,   54,
1274        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1275
1276        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1277        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1278        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1279        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
1280        54,   54,   54,   54,  -54,   54,   54,   54
1281     },
1282
1283     {
1284         7,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1285       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1286       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1287       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1288       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1289
1290       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1291       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1292       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1293       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1294       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1295       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1296       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1297       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55
1298     },
1299
1300     {
1301         7,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
1302       -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
1303
1304       -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
1305       -56,  -56,  -56,  -56,  -56,   40,   40,  -56,  -56,   40,
1306       -56,  -56,  -56,  -56,  -56,  -56,   40,  -56,   56,   56,
1307        56,   56,   56,   56,   56,   56,   56,   56,  -56,   40,
1308       -56,  -56,  -56,  -56,   40,   40,   40,   40,   40,   40,
1309        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1310        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1311        40,  -56,   40,  -56,   40,   40,  -56,   40,   40,   40,
1312        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1313        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1314
1315        40,   40,   40,  -56,  -56,  -56,  -56,  -56
1316     },
1317
1318     } ;
1319
1320 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
1321 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
1322 static int yy_get_next_buffer (yyscan_t yyscanner );
1323 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
1324
1325 /* Done after the current pattern has been matched and before the
1326  * corresponding action - sets up yytext.
1327  */
1328 #define YY_DO_BEFORE_ACTION \
1329         yyg->yytext_ptr = yy_bp; \
1330         yyg->yytext_ptr -= yyg->yy_more_len; \
1331         yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
1332         yyg->yy_hold_char = *yy_cp; \
1333         *yy_cp = '\0'; \
1334         yyg->yy_c_buf_p = yy_cp;
1335
1336 #define YY_NUM_RULES 36
1337 #define YY_END_OF_BUFFER 37
1338 /* This struct is not used in this scanner,
1339    but its presence is necessary. */
1340 struct yy_trans_info
1341         {
1342         flex_int32_t yy_verify;
1343         flex_int32_t yy_nxt;
1344         };
1345 static yyconst flex_int16_t yy_accept[57] =
1346     {   0,
1347         0,    0,    0,    0,   33,   33,   37,   36,   26,   28,
1348        20,   36,   30,   30,   18,    2,   23,   24,   16,   13,
1349        14,   15,   17,   29,   21,    9,    3,    8,   19,    1,
1350        36,   32,   31,   33,   34,   34,   12,    0,   27,   30,
1351        25,    5,   30,   29,   22,   11,    6,    7,   10,    4,
1352         0,   32,   31,   33,   35,   29
1353     } ;
1354
1355 static yyconst yy_state_type yy_NUL_trans[57] =
1356     {   0,
1357         8,    8,   31,   31,   34,   34,    0,    0,    0,    0,
1358         0,   38,    0,    0,    0,    0,    0,    0,    0,    0,
1359         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1360        51,    0,    0,   54,    0,    0,    0,   38,    0,    0,
1361         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1362        51,    0,    0,   54,    0,    0
1363     } ;
1364
1365 /* The intent behind this definition is that it'll catch
1366  * any uses of REJECT which flex missed.
1367  */
1368 #define REJECT reject_used_but_not_detected
1369 #define yymore() (yyg->yy_more_flag = 1)
1370 #define YY_MORE_ADJ yyg->yy_more_len
1371 #define YY_RESTORE_YY_MORE_OFFSET
1372 #line 1 "ast_expr2.fl"
1373 #line 2 "ast_expr2.fl"
1374 /*
1375  * Asterisk -- An open source telephony toolkit.
1376  *
1377  * Copyright (C) 1999 - 2006, Digium, Inc.
1378  *
1379  * Mark Spencer <markster@digium.com>
1380  *
1381  * See http://www.asterisk.org for more information about
1382  * the Asterisk project. Please do not directly contact
1383  * any of the maintainers of this project for assistance;
1384  * the project provides a web site, mailing lists and IRC
1385  * channels for your use.
1386  *
1387  * This program is free software, distributed under the terms of
1388  * the GNU General Public License Version 2. See the LICENSE file
1389  * at the top of the source tree.
1390  */
1391
1392 /*! \file
1393  *
1394  * \brief Dialplan Expression Lexical Scanner
1395  */
1396
1397 #include "asterisk.h"
1398
1399 #include <sys/types.h>
1400 #include <stdio.h>
1401
1402 #ifndef STANDALONE
1403 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
1404 #else
1405 #ifndef __USE_ISOC99
1406 #define __USE_ISOC99 1
1407 #endif
1408 #endif
1409
1410 #ifdef __USE_ISOC99
1411 #define FP___PRINTF "%.18Lg"
1412 #define FP___FMOD   fmodl
1413 #define FP___STRTOD  strtold
1414 #define FP___TYPE    long double
1415 #else
1416 #define FP___PRINTF "%.16g"
1417 #define FP___FMOD   fmod
1418 #define FP___STRTOD  strtod
1419 #define FP___TYPE    double
1420 #endif
1421
1422 #include <stdlib.h>
1423 #include <string.h>
1424 #include <locale.h>
1425 #include <ctype.h>
1426 #if !defined(SOLARIS) && !defined(__CYGWIN__)
1427 /* #include <err.h> */
1428 #else
1429 #define quad_t int64_t
1430 #endif
1431 #include <errno.h>
1432 #include <regex.h>
1433 #include <limits.h>
1434
1435 #include "asterisk/ast_expr.h"
1436 #include "asterisk/logger.h"
1437 #ifndef STANDALONE
1438 #include "asterisk/strings.h"
1439 #include "asterisk/channel.h"
1440 #endif
1441
1442 enum valtype {
1443         AST_EXPR_number, AST_EXPR_numeric_string, AST_EXPR_string
1444 } ;
1445
1446 struct val {
1447         enum valtype type;
1448         union {
1449                 char *s;
1450                 FP___TYPE i; /* long double or just double if it's a bad day */
1451         } u;
1452 } ;
1453
1454 #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
1455
1456 #define SET_COLUMNS     do {            \
1457         yylloc_param->first_column = (int)(yyg->yytext_r - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf); \
1458         yylloc_param->last_column += yyleng - 1; \
1459         yylloc_param->first_line = yylloc_param->last_line = 1; \
1460         } while (0)
1461
1462 #define SET_STRING      do {            \
1463         yylval_param->val = calloc(1, sizeof(struct val));      \
1464         yylval_param->val->type = AST_EXPR_string;              \
1465         yylval_param->val->u.s = strdup(yytext);                \
1466         } while (0)
1467
1468 #define SET_NUMERIC_STRING      do {    \
1469         yylval_param->val = calloc(1, sizeof(struct val));      \
1470         yylval_param->val->type = AST_EXPR_numeric_string;      \
1471         yylval_param->val->u.s = strdup(yytext);        \
1472         } while (0)
1473
1474 struct parse_io
1475 {
1476         char *string;
1477         struct val *val;
1478         yyscan_t scanner;
1479         struct ast_channel *chan;
1480 };
1481  
1482 void ast_yyset_column(int column_no, yyscan_t yyscanner);
1483 int ast_yyget_column(yyscan_t yyscanner);
1484 static int curlycount = 0;
1485 static char *expr2_token_subst(const char *mess);
1486
1487 #line 1488 "ast_expr2f.c"
1488
1489 #define INITIAL 0
1490 #define var 1
1491 #define trail 2
1492
1493 #ifndef YY_NO_UNISTD_H
1494 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1495  * down here because we want the user's section 1 to have been scanned first.
1496  * The user has a chance to override it with an option.
1497  */
1498 #include <unistd.h>
1499 #endif
1500
1501 #ifndef YY_EXTRA_TYPE
1502 #define YY_EXTRA_TYPE void *
1503 #endif
1504
1505 /* Holds the entire state of the reentrant scanner. */
1506 struct yyguts_t
1507     {
1508
1509     /* User-defined. Not touched by flex. */
1510     YY_EXTRA_TYPE yyextra_r;
1511
1512     /* The rest are the same as the globals declared in the non-reentrant scanner. */
1513     FILE *yyin_r, *yyout_r;
1514     size_t yy_buffer_stack_top; /**< index of top of stack. */
1515     size_t yy_buffer_stack_max; /**< capacity of stack. */
1516     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1517     char yy_hold_char;
1518     int yy_n_chars;
1519     int yyleng_r;
1520     char *yy_c_buf_p;
1521     int yy_init;
1522     int yy_start;
1523     int yy_did_buffer_switch_on_eof;
1524     int yy_start_stack_ptr;
1525     int yy_start_stack_depth;
1526     int *yy_start_stack;
1527     yy_state_type yy_last_accepting_state;
1528     char* yy_last_accepting_cpos;
1529
1530     int yylineno_r;
1531     int yy_flex_debug_r;
1532
1533     char *yytext_r;
1534     int yy_more_flag;
1535     int yy_more_len;
1536
1537     YYSTYPE * yylval_r;
1538
1539     YYLTYPE * yylloc_r;
1540
1541     }; /* end struct yyguts_t */
1542
1543 static int yy_init_globals (yyscan_t yyscanner );
1544
1545     /* This must go here because YYSTYPE and YYLTYPE are included
1546      * from bison output in section 1.*/
1547     #    define yylval yyg->yylval_r
1548     
1549     #    define yylloc yyg->yylloc_r
1550     
1551 /* Accessor methods to globals.
1552    These are made visible to non-reentrant scanners for convenience. */
1553
1554 int ast_yylex_destroy (yyscan_t yyscanner );
1555
1556 int ast_yyget_debug (yyscan_t yyscanner );
1557
1558 void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
1559
1560 YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
1561
1562 void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1563
1564 FILE *ast_yyget_in (yyscan_t yyscanner );
1565
1566 void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
1567
1568 FILE *ast_yyget_out (yyscan_t yyscanner );
1569
1570 void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
1571
1572 int ast_yyget_leng (yyscan_t yyscanner );
1573
1574 char *ast_yyget_text (yyscan_t yyscanner );
1575
1576 int ast_yyget_lineno (yyscan_t yyscanner );
1577
1578 void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
1579
1580 YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
1581
1582 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1583
1584        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
1585     
1586         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
1587     
1588 /* Macros after this point can all be overridden by user definitions in
1589  * section 1.
1590  */
1591
1592 #ifndef YY_SKIP_YYWRAP
1593 #ifdef __cplusplus
1594 extern "C" int ast_yywrap (yyscan_t yyscanner );
1595 #else
1596 extern int ast_yywrap (yyscan_t yyscanner );
1597 #endif
1598 #endif
1599
1600     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
1601     
1602 #ifndef yytext_ptr
1603 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1604 #endif
1605
1606 #ifdef YY_NEED_STRLEN
1607 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1608 #endif
1609
1610 #ifndef YY_NO_INPUT
1611
1612 #ifdef __cplusplus
1613 static int yyinput (yyscan_t yyscanner );
1614 #else
1615 static int input (yyscan_t yyscanner );
1616 #endif
1617
1618 #endif
1619
1620 /* Amount of stuff to slurp up with each read. */
1621 #ifndef YY_READ_BUF_SIZE
1622 #define YY_READ_BUF_SIZE 8192
1623 #endif
1624
1625 /* Copy whatever the last rule matched to the standard output. */
1626 #ifndef ECHO
1627 /* This used to be an fputs(), but since the string might contain NUL's,
1628  * we now use fwrite().
1629  */
1630 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1631 #endif
1632
1633 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1634  * is returned in "result".
1635  */
1636 #ifndef YY_INPUT
1637 #define YY_INPUT(buf,result,max_size) \
1638         errno=0; \
1639         while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
1640         { \
1641                 if( errno != EINTR) \
1642                 { \
1643                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1644                         break; \
1645                 } \
1646                 errno=0; \
1647                 clearerr(yyin); \
1648         }\
1649 \
1650
1651 #endif
1652
1653 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1654  * we don't want an extra ';' after the "return" because that will cause
1655  * some compilers to complain about unreachable statements.
1656  */
1657 #ifndef yyterminate
1658 #define yyterminate() return YY_NULL
1659 #endif
1660
1661 /* Number of entries by which start-condition stack grows. */
1662 #ifndef YY_START_STACK_INCR
1663 #define YY_START_STACK_INCR 25
1664 #endif
1665
1666 /* Report a fatal error. */
1667 #ifndef YY_FATAL_ERROR
1668 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1669 #endif
1670
1671 /* end tables serialization structures and prototypes */
1672
1673 /* Default declaration of generated scanner - a define so the user can
1674  * easily add parameters.
1675  */
1676 #ifndef YY_DECL
1677 #define YY_DECL_IS_OURS 1
1678
1679 extern int ast_yylex \
1680                (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
1681
1682 #define YY_DECL int ast_yylex \
1683                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1684 #endif /* !YY_DECL */
1685
1686 /* Code executed at the beginning of each rule, after yytext and yyleng
1687  * have been set up.
1688  */
1689 #ifndef YY_USER_ACTION
1690 #define YY_USER_ACTION
1691 #endif
1692
1693 /* Code executed at the end of each rule. */
1694 #ifndef YY_BREAK
1695 #define YY_BREAK break;
1696 #endif
1697
1698 #define YY_RULE_SETUP \
1699         YY_USER_ACTION
1700
1701 /*!
1702  * \brief The main scanner function which does all the work.
1703  */
1704 YY_DECL
1705 {
1706         register yy_state_type yy_current_state;
1707         register char *yy_cp, *yy_bp;
1708         register int yy_act;
1709     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1710
1711 #line 125 "ast_expr2.fl"
1712
1713
1714 #line 1714 "ast_expr2f.c"
1715
1716     yylval = yylval_param;
1717
1718     yylloc = yylloc_param;
1719
1720         if ( yyg->yy_init )
1721                 {
1722                 yyg->yy_init = 0;
1723
1724 #ifdef YY_USER_INIT
1725                 YY_USER_INIT;
1726 #endif
1727
1728                 if ( ! yyg->yy_start )
1729                         yyg->yy_start = 1;      /* first start state */
1730
1731                 if ( ! yyin )
1732                         yyin = stdin;
1733
1734                 if ( ! yyout )
1735                         yyout = stdout;
1736
1737                 if ( ! YY_CURRENT_BUFFER ) {
1738                         ast_yyensure_buffer_stack (yyscanner);
1739                         YY_CURRENT_BUFFER_LVALUE =
1740                                 ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1741                 }
1742
1743                 ast_yy_load_buffer_state(yyscanner );
1744                 }
1745
1746         while ( 1 )             /* loops until end-of-file is reached */
1747                 {
1748                 yyg->yy_more_len = 0;
1749                 if ( yyg->yy_more_flag )
1750                         {
1751                         yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
1752                         yyg->yy_more_flag = 0;
1753                         }
1754                 yy_cp = yyg->yy_c_buf_p;
1755
1756                 /* Support of yytext. */
1757                 *yy_cp = yyg->yy_hold_char;
1758
1759                 /* yy_bp points to the position in yy_ch_buf of the start of
1760                  * the current run.
1761                  */
1762                 yy_bp = yy_cp;
1763
1764                 yy_current_state = yyg->yy_start;
1765 yy_match:
1766                 while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
1767                         {
1768                         if ( yy_accept[yy_current_state] )
1769                                 {
1770                                 yyg->yy_last_accepting_state = yy_current_state;
1771                                 yyg->yy_last_accepting_cpos = yy_cp;
1772                                 }
1773
1774                         ++yy_cp;
1775                         }
1776
1777                 yy_current_state = -yy_current_state;
1778
1779 yy_find_action:
1780                 yy_act = yy_accept[yy_current_state];
1781
1782                 YY_DO_BEFORE_ACTION;
1783
1784 do_action:      /* This label is used only to access EOF actions. */
1785
1786                 switch ( yy_act )
1787         { /* beginning of action switch */
1788                         case 0: /* must back up */
1789                         /* undo the effects of YY_DO_BEFORE_ACTION */
1790                         *yy_cp = yyg->yy_hold_char;
1791                         yy_cp = yyg->yy_last_accepting_cpos + 1;
1792                         yy_current_state = yyg->yy_last_accepting_state;
1793                         goto yy_find_action;
1794
1795 case 1:
1796 YY_RULE_SETUP
1797 #line 127 "ast_expr2.fl"
1798 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1799         YY_BREAK
1800 case 2:
1801 YY_RULE_SETUP
1802 #line 128 "ast_expr2.fl"
1803 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1804         YY_BREAK
1805 case 3:
1806 YY_RULE_SETUP
1807 #line 129 "ast_expr2.fl"
1808 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1809         YY_BREAK
1810 case 4:
1811 YY_RULE_SETUP
1812 #line 130 "ast_expr2.fl"
1813 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1814         YY_BREAK
1815 case 5:
1816 YY_RULE_SETUP
1817 #line 131 "ast_expr2.fl"
1818 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1819         YY_BREAK
1820 case 6:
1821 YY_RULE_SETUP
1822 #line 132 "ast_expr2.fl"
1823 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1824         YY_BREAK
1825 case 7:
1826 YY_RULE_SETUP
1827 #line 133 "ast_expr2.fl"
1828 { SET_COLUMNS; SET_STRING; return TOK_EQTILDE;}
1829         YY_BREAK
1830 case 8:
1831 YY_RULE_SETUP
1832 #line 134 "ast_expr2.fl"
1833 { SET_COLUMNS; SET_STRING; return TOK_GT;}
1834         YY_BREAK
1835 case 9:
1836 YY_RULE_SETUP
1837 #line 135 "ast_expr2.fl"
1838 { SET_COLUMNS; SET_STRING; return TOK_LT;}
1839         YY_BREAK
1840 case 10:
1841 YY_RULE_SETUP
1842 #line 136 "ast_expr2.fl"
1843 { SET_COLUMNS; SET_STRING; return TOK_GE;}
1844         YY_BREAK
1845 case 11:
1846 YY_RULE_SETUP
1847 #line 137 "ast_expr2.fl"
1848 { SET_COLUMNS; SET_STRING; return TOK_LE;}
1849         YY_BREAK
1850 case 12:
1851 YY_RULE_SETUP
1852 #line 138 "ast_expr2.fl"
1853 { SET_COLUMNS; SET_STRING; return TOK_NE;}
1854         YY_BREAK
1855 case 13:
1856 YY_RULE_SETUP
1857 #line 139 "ast_expr2.fl"
1858 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
1859         YY_BREAK
1860 case 14:
1861 YY_RULE_SETUP
1862 #line 140 "ast_expr2.fl"
1863 { SET_COLUMNS; SET_STRING; return TOK_COMMA;}
1864         YY_BREAK
1865 case 15:
1866 YY_RULE_SETUP
1867 #line 141 "ast_expr2.fl"
1868 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
1869         YY_BREAK
1870 case 16:
1871 YY_RULE_SETUP
1872 #line 142 "ast_expr2.fl"
1873 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
1874         YY_BREAK
1875 case 17:
1876 YY_RULE_SETUP
1877 #line 143 "ast_expr2.fl"
1878 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
1879         YY_BREAK
1880 case 18:
1881 YY_RULE_SETUP
1882 #line 144 "ast_expr2.fl"
1883 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
1884         YY_BREAK
1885 case 19:
1886 YY_RULE_SETUP
1887 #line 145 "ast_expr2.fl"
1888 { SET_COLUMNS; SET_STRING; return TOK_COND;}
1889         YY_BREAK
1890 case 20:
1891 YY_RULE_SETUP
1892 #line 146 "ast_expr2.fl"
1893 { SET_COLUMNS; SET_STRING; return TOK_COMPL;}
1894         YY_BREAK
1895 case 21:
1896 YY_RULE_SETUP
1897 #line 147 "ast_expr2.fl"
1898 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
1899         YY_BREAK
1900 case 22:
1901 YY_RULE_SETUP
1902 #line 148 "ast_expr2.fl"
1903 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
1904         YY_BREAK
1905 case 23:
1906 YY_RULE_SETUP
1907 #line 149 "ast_expr2.fl"
1908 { SET_COLUMNS; SET_STRING; return TOK_LP;}
1909         YY_BREAK
1910 case 24:
1911 YY_RULE_SETUP
1912 #line 150 "ast_expr2.fl"
1913 { SET_COLUMNS; SET_STRING; return TOK_RP;}
1914         YY_BREAK
1915 case 25:
1916 YY_RULE_SETUP
1917 #line 151 "ast_expr2.fl"
1918 {
1919                 /* gather the contents of ${} expressions, with trailing stuff,
1920                  * into a single TOKEN.
1921                  * They are much more complex now than they used to be
1922                  */
1923                 curlycount = 0;
1924                 BEGIN(var);
1925                 yymore();
1926         }
1927         YY_BREAK
1928 case 26:
1929 YY_RULE_SETUP
1930 #line 161 "ast_expr2.fl"
1931 {}
1932         YY_BREAK
1933 case 27:
1934 /* rule 27 can match eol */
1935 YY_RULE_SETUP
1936 #line 162 "ast_expr2.fl"
1937 {SET_COLUMNS; SET_STRING; return TOKEN;}
1938         YY_BREAK
1939 case 28:
1940 /* rule 28 can match eol */
1941 YY_RULE_SETUP
1942 #line 164 "ast_expr2.fl"
1943 {/* what to do with eol */}
1944         YY_BREAK
1945 case 29:
1946 YY_RULE_SETUP
1947 #line 165 "ast_expr2.fl"
1948 {
1949                 SET_COLUMNS;
1950                 /* the original behavior of the expression parser was
1951                  * to bring in numbers as a numeric string
1952                  */
1953                 SET_NUMERIC_STRING;
1954                 return TOKEN;
1955         }
1956         YY_BREAK
1957 case 30:
1958 YY_RULE_SETUP
1959 #line 174 "ast_expr2.fl"
1960 {
1961                 SET_COLUMNS;
1962                 SET_STRING;
1963                 return TOKEN;
1964         }
1965         YY_BREAK
1966 case 31:
1967 /* rule 31 can match eol */
1968 YY_RULE_SETUP
1969 #line 181 "ast_expr2.fl"
1970 {
1971                 curlycount--;
1972                 if (curlycount < 0) {
1973                         BEGIN(trail);
1974                         yymore();
1975                 } else {
1976                         yymore();
1977                 }
1978         }
1979         YY_BREAK
1980 case 32:
1981 /* rule 32 can match eol */
1982 YY_RULE_SETUP
1983 #line 191 "ast_expr2.fl"
1984 {
1985                 curlycount++;
1986                 yymore();
1987         }
1988         YY_BREAK
1989 case 33:
1990 YY_RULE_SETUP
1991 #line 197 "ast_expr2.fl"
1992 {
1993                 BEGIN(0);
1994                 SET_COLUMNS;
1995                 SET_STRING;
1996                 return TOKEN;
1997         }
1998         YY_BREAK
1999 case 34:
2000 /* rule 34 can match eol */
2001 YY_RULE_SETUP
2002 #line 204 "ast_expr2.fl"
2003 {
2004                 char c = yytext[yyleng-1];
2005                 BEGIN(0);
2006                 unput(c);
2007                 SET_COLUMNS;
2008                 SET_STRING;
2009                 return TOKEN;
2010         }
2011         YY_BREAK
2012 case 35:
2013 YY_RULE_SETUP
2014 #line 213 "ast_expr2.fl"
2015 {
2016                 curlycount = 0;
2017                 BEGIN(var);
2018                 yymore();
2019         }
2020         YY_BREAK
2021 case YY_STATE_EOF(trail):
2022 #line 219 "ast_expr2.fl"
2023 {
2024                 BEGIN(0);
2025                 SET_COLUMNS;
2026                 SET_STRING;
2027                 return TOKEN;
2028                 /*actually, if an expr is only a variable ref, this could happen a LOT */
2029         }
2030         YY_BREAK
2031 case 36:
2032 YY_RULE_SETUP
2033 #line 227 "ast_expr2.fl"
2034 ECHO;
2035         YY_BREAK
2036 #line 2036 "ast_expr2f.c"
2037 case YY_STATE_EOF(INITIAL):
2038 case YY_STATE_EOF(var):
2039         yyterminate();
2040
2041         case YY_END_OF_BUFFER:
2042                 {
2043                 /* Amount of text matched not including the EOB char. */
2044                 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
2045
2046                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2047                 *yy_cp = yyg->yy_hold_char;
2048                 YY_RESTORE_YY_MORE_OFFSET
2049
2050                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2051                         {
2052                         /* We're scanning a new file or input source.  It's
2053                          * possible that this happened because the user
2054                          * just pointed yyin at a new source and called
2055                          * ast_yylex().  If so, then we have to assure
2056                          * consistency between YY_CURRENT_BUFFER and our
2057                          * globals.  Here is the right place to do so, because
2058                          * this is the first action (other than possibly a
2059                          * back-up) that will match for the new input source.
2060                          */
2061                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2062                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2063                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2064                         }
2065
2066                 /* Note that here we test for yy_c_buf_p "<=" to the position
2067                  * of the first EOB in the buffer, since yy_c_buf_p will
2068                  * already have been incremented past the NUL character
2069                  * (since all states make transitions on EOB to the
2070                  * end-of-buffer state).  Contrast this with the test
2071                  * in input().
2072                  */
2073                 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2074                         { /* This was really a NUL. */
2075                         yy_state_type yy_next_state;
2076
2077                         yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
2078
2079                         yy_current_state = yy_get_previous_state( yyscanner );
2080
2081                         /* Okay, we're now positioned to make the NUL
2082                          * transition.  We couldn't have
2083                          * yy_get_previous_state() go ahead and do it
2084                          * for us because it doesn't know how to deal
2085                          * with the possibility of jamming (and we don't
2086                          * want to build jamming into it because then it
2087                          * will run more slowly).
2088                          */
2089
2090                         yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
2091
2092                         yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2093
2094                         if ( yy_next_state )
2095                                 {
2096                                 /* Consume the NUL. */
2097                                 yy_cp = ++yyg->yy_c_buf_p;
2098                                 yy_current_state = yy_next_state;
2099                                 goto yy_match;
2100                                 }
2101
2102                         else
2103                                 {
2104                                 yy_cp = yyg->yy_c_buf_p;
2105                                 goto yy_find_action;
2106                                 }
2107                         }
2108
2109                 else switch ( yy_get_next_buffer( yyscanner ) )
2110                         {
2111                         case EOB_ACT_END_OF_FILE:
2112                                 {
2113                                 yyg->yy_did_buffer_switch_on_eof = 0;
2114
2115                                 if ( ast_yywrap(yyscanner ) )
2116                                         {
2117                                         /* Note: because we've taken care in
2118                                          * yy_get_next_buffer() to have set up
2119                                          * yytext, we can now set up
2120                                          * yy_c_buf_p so that if some total
2121                                          * hoser (like flex itself) wants to
2122                                          * call the scanner after we return the
2123                                          * YY_NULL, it'll still work - another
2124                                          * YY_NULL will get returned.
2125                                          */
2126                                         yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
2127
2128                                         yy_act = YY_STATE_EOF(YY_START);
2129                                         goto do_action;
2130                                         }
2131
2132                                 else
2133                                         {
2134                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2135                                                 YY_NEW_FILE;
2136                                         }
2137                                 break;
2138                                 }
2139
2140                         case EOB_ACT_CONTINUE_SCAN:
2141                                 yyg->yy_c_buf_p =
2142                                         yyg->yytext_ptr + yy_amount_of_matched_text;
2143
2144                                 yy_current_state = yy_get_previous_state( yyscanner );
2145
2146                                 yy_cp = yyg->yy_c_buf_p;
2147                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2148                                 goto yy_match;
2149
2150                         case EOB_ACT_LAST_MATCH:
2151                                 yyg->yy_c_buf_p =
2152                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
2153
2154                                 yy_current_state = yy_get_previous_state( yyscanner );
2155
2156                                 yy_cp = yyg->yy_c_buf_p;
2157                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2158                                 goto yy_find_action;
2159                         }
2160                 break;
2161                 }
2162
2163         default:
2164                 YY_FATAL_ERROR(
2165                         "fatal flex scanner internal error--no action found" );
2166         } /* end of action switch */
2167                 } /* end of scanning one token */
2168 } /* end of ast_yylex */
2169
2170 /* yy_get_next_buffer - try to read in a new buffer
2171  *
2172  * Returns a code representing an action:
2173  *      EOB_ACT_LAST_MATCH -
2174  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2175  *      EOB_ACT_END_OF_FILE - end of file
2176  */
2177 static int yy_get_next_buffer (yyscan_t yyscanner)
2178 {
2179     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2180         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2181         register char *source = yyg->yytext_ptr;
2182         register int number_to_move, i;
2183         int ret_val;
2184
2185         if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
2186                 YY_FATAL_ERROR(
2187                 "fatal flex scanner internal error--end of buffer missed" );
2188
2189         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2190                 { /* Don't try to fill the buffer, so this is an EOF. */
2191                 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
2192                         {
2193                         /* We matched a single character, the EOB, so
2194                          * treat this as a final EOF.
2195                          */
2196                         return EOB_ACT_END_OF_FILE;
2197                         }
2198
2199                 else
2200                         {
2201                         /* We matched some text prior to the EOB, first
2202                          * process it.
2203                          */
2204                         return EOB_ACT_LAST_MATCH;
2205                         }
2206                 }
2207
2208         /* Try to read more data. */
2209
2210         /* First move last chars to start of buffer. */
2211         number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
2212
2213         for ( i = 0; i < number_to_move; ++i )
2214                 *(dest++) = *(source++);
2215
2216         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2217                 /* don't do the read, it's not guaranteed to return an EOF,
2218                  * just force an EOF
2219                  */
2220                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
2221
2222         else
2223                 {
2224                         int num_to_read =
2225                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2226
2227                 while ( num_to_read <= 0 )
2228                         { /* Not enough room in the buffer - grow it. */
2229
2230                         /* just a shorter name for the current buffer */
2231                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2232
2233                         int yy_c_buf_p_offset =
2234                                 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
2235
2236                         if ( b->yy_is_our_buffer )
2237                                 {
2238                                 int new_size = b->yy_buf_size * 2;
2239
2240                                 if ( new_size <= 0 )
2241                                         b->yy_buf_size += b->yy_buf_size / 8;
2242                                 else
2243                                         b->yy_buf_size *= 2;
2244
2245                                 b->yy_ch_buf = (char *)
2246                                         /* Include room in for 2 EOB chars. */
2247                                         ast_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
2248                                 }
2249                         else
2250                                 /* Can't grow it, we don't own it. */
2251                                 b->yy_ch_buf = 0;
2252
2253                         if ( ! b->yy_ch_buf )
2254                                 YY_FATAL_ERROR(
2255                                 "fatal error - scanner input buffer overflow" );
2256
2257                         yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2258
2259                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2260                                                 number_to_move - 1;
2261
2262                         }
2263
2264                 if ( num_to_read > YY_READ_BUF_SIZE )
2265                         num_to_read = YY_READ_BUF_SIZE;
2266
2267                 /* Read in more data. */
2268                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2269                         yyg->yy_n_chars, num_to_read );
2270
2271                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2272                 }
2273
2274         if ( yyg->yy_n_chars == 0 )
2275                 {
2276                 if ( number_to_move == YY_MORE_ADJ )
2277                         {
2278                         ret_val = EOB_ACT_END_OF_FILE;
2279                         ast_yyrestart(yyin  ,yyscanner);
2280                         }
2281
2282                 else
2283                         {
2284                         ret_val = EOB_ACT_LAST_MATCH;
2285                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2286                                 YY_BUFFER_EOF_PENDING;
2287                         }
2288                 }
2289
2290         else
2291                 ret_val = EOB_ACT_CONTINUE_SCAN;
2292
2293         yyg->yy_n_chars += number_to_move;
2294         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2295         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2296
2297         yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2298
2299         return ret_val;
2300 }
2301
2302 /* yy_get_previous_state - get the state just before the EOB char was reached */
2303
2304     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2305 {
2306         register yy_state_type yy_current_state;
2307         register char *yy_cp;
2308     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2309
2310         yy_current_state = yyg->yy_start;
2311
2312         for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2313                 {
2314                 if ( *yy_cp )
2315                         {
2316                         yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
2317                         }
2318                 else
2319                         yy_current_state = yy_NUL_trans[yy_current_state];
2320                 if ( yy_accept[yy_current_state] )
2321                         {
2322                         yyg->yy_last_accepting_state = yy_current_state;
2323                         yyg->yy_last_accepting_cpos = yy_cp;
2324                         }
2325                 }
2326
2327         return yy_current_state;
2328 }
2329
2330 /* yy_try_NUL_trans - try to make a transition on the NUL character
2331  *
2332  * synopsis
2333  *      next_state = yy_try_NUL_trans( current_state );
2334  */
2335     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
2336 {
2337         register int yy_is_jam;
2338     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2339         register char *yy_cp = yyg->yy_c_buf_p;
2340
2341         yy_current_state = yy_NUL_trans[yy_current_state];
2342         yy_is_jam = (yy_current_state == 0);
2343
2344         if ( ! yy_is_jam )
2345                 {
2346                 if ( yy_accept[yy_current_state] )
2347                         {
2348                         yyg->yy_last_accepting_state = yy_current_state;
2349                         yyg->yy_last_accepting_cpos = yy_cp;
2350                         }
2351                 }
2352
2353         return yy_is_jam ? 0 : yy_current_state;
2354 }
2355
2356     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
2357 {
2358         register char *yy_cp;
2359     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2360
2361     yy_cp = yyg->yy_c_buf_p;
2362
2363         /* undo effects of setting up yytext */
2364         *yy_cp = yyg->yy_hold_char;
2365
2366         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2367                 { /* need to shift things up to make room */
2368                 /* +2 for EOB chars. */
2369                 register int number_to_move = yyg->yy_n_chars + 2;
2370                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2371                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2372                 register char *source =
2373                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2374
2375                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2376                         *--dest = *--source;
2377
2378                 yy_cp += (int) (dest - source);
2379                 yy_bp += (int) (dest - source);
2380                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2381                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2382
2383                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2384                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2385                 }
2386
2387         *--yy_cp = (char) c;
2388
2389         yyg->yytext_ptr = yy_bp;
2390         yyg->yy_hold_char = *yy_cp;
2391         yyg->yy_c_buf_p = yy_cp;
2392 }
2393
2394 #ifndef YY_NO_INPUT
2395 #ifdef __cplusplus
2396     static int yyinput (yyscan_t yyscanner)
2397 #else
2398     static int input  (yyscan_t yyscanner)
2399 #endif
2400
2401 {
2402         int c;
2403     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2404
2405         *yyg->yy_c_buf_p = yyg->yy_hold_char;
2406
2407         if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2408                 {
2409                 /* yy_c_buf_p now points to the character we want to return.
2410                  * If this occurs *before* the EOB characters, then it's a
2411                  * valid NUL; if not, then we've hit the end of the buffer.
2412                  */
2413                 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2414                         /* This was really a NUL. */
2415                         *yyg->yy_c_buf_p = '\0';
2416
2417                 else
2418                         { /* need more input */
2419                         int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2420                         ++yyg->yy_c_buf_p;
2421
2422                         switch ( yy_get_next_buffer( yyscanner ) )
2423                                 {
2424                                 case EOB_ACT_LAST_MATCH:
2425                                         /* This happens because yy_g_n_b()
2426                                          * sees that we've accumulated a
2427                                          * token and flags that we need to
2428                                          * try matching the token before
2429                                          * proceeding.  But for input(),
2430                                          * there's no matching to consider.
2431                                          * So convert the EOB_ACT_LAST_MATCH
2432                                          * to EOB_ACT_END_OF_FILE.
2433                                          */
2434
2435                                         /* Reset buffer status. */
2436                                         ast_yyrestart(yyin ,yyscanner);
2437
2438                                         /*FALLTHROUGH*/
2439
2440                                 case EOB_ACT_END_OF_FILE:
2441                                         {
2442                                         if ( ast_yywrap(yyscanner ) )
2443                                                 return EOF;
2444
2445                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2446                                                 YY_NEW_FILE;
2447 #ifdef __cplusplus
2448                                         return yyinput(yyscanner);
2449 #else
2450                                         return input(yyscanner);
2451 #endif
2452                                         }
2453
2454                                 case EOB_ACT_CONTINUE_SCAN:
2455                                         yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2456                                         break;
2457                                 }
2458                         }
2459                 }
2460
2461         c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2462         *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
2463         yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2464
2465         return c;
2466 }
2467 #endif  /* ifndef YY_NO_INPUT */
2468
2469 /*!
2470  * \brief Immediately switch to a different input stream.
2471  * \param input_file A readable stream.
2472  * \param yyscanner The scanner object.
2473  * \note This function does not reset the start condition to \c INITIAL .
2474  */
2475     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
2476 {
2477     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2478
2479         if ( ! YY_CURRENT_BUFFER ){
2480         ast_yyensure_buffer_stack (yyscanner);
2481                 YY_CURRENT_BUFFER_LVALUE =
2482             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2483         }
2484
2485         ast_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2486         ast_yy_load_buffer_state(yyscanner );
2487 }
2488
2489 /*!
2490  * \brief Switch to a different input buffer.
2491  * \param new_buffer The new input buffer.
2492  * \param yyscanner The scanner object.
2493  */
2494     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
2495 {
2496     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2497
2498         /* TODO. We should be able to replace this entire function body
2499          * with
2500          *              ast_yypop_buffer_state();
2501          *              ast_yypush_buffer_state(new_buffer);
2502      */
2503         ast_yyensure_buffer_stack (yyscanner);
2504         if ( YY_CURRENT_BUFFER == new_buffer )
2505                 return;
2506
2507         if ( YY_CURRENT_BUFFER )
2508                 {
2509                 /* Flush out information for old buffer. */
2510                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2511                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2512                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2513                 }
2514
2515         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2516         ast_yy_load_buffer_state(yyscanner );
2517
2518         /* We don't actually know whether we did this switch during
2519          * EOF (ast_yywrap()) processing, but the only time this flag
2520          * is looked at is after ast_yywrap() is called, so it's safe
2521          * to go ahead and always set it.
2522          */
2523         yyg->yy_did_buffer_switch_on_eof = 1;
2524 }
2525
2526 static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
2527 {
2528     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2529         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2530         yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2531         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2532         yyg->yy_hold_char = *yyg->yy_c_buf_p;
2533 }
2534
2535 /*!
2536  * \brief Allocate and initialize an input buffer state.
2537  * \param file A readable stream.
2538  * \param size The character buffer size in bytes. When in doubt, use \c YY_BUF_SIZE.
2539  * \param yyscanner The scanner object.
2540  * \return the allocated buffer state.
2541  */
2542     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
2543 {
2544         YY_BUFFER_STATE b;
2545     
2546         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2547         if ( ! b )
2548                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2549
2550         b->yy_buf_size = size;
2551
2552         /* yy_ch_buf has to be 2 characters longer than the size given because
2553          * we need to put in 2 end-of-buffer characters.
2554          */
2555         b->yy_ch_buf = (char *) ast_yyalloc(b->yy_buf_size + 2 ,yyscanner );
2556         if ( ! b->yy_ch_buf )
2557                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2558
2559         b->yy_is_our_buffer = 1;
2560
2561         ast_yy_init_buffer(b,file ,yyscanner);
2562
2563         return b;
2564 }
2565
2566 /*!
2567  * \brief Destroy the buffer.
2568  * \param b a buffer created with ast_yy_create_buffer()
2569  * \param yyscanner The scanner object.
2570  */
2571     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2572 {
2573     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2574
2575         if ( ! b )
2576                 return;
2577
2578         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2579                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2580
2581         if ( b->yy_is_our_buffer )
2582                 ast_yyfree((void *) b->yy_ch_buf ,yyscanner );
2583
2584         ast_yyfree((void *) b ,yyscanner );
2585 }
2586
2587 #ifndef __cplusplus
2588 extern int isatty (int );
2589 #endif /* __cplusplus */
2590     
2591 /* Initializes or reinitializes a buffer.
2592  * This function is sometimes called more than once on the same buffer,
2593  * such as during a ast_yyrestart() or at EOF.
2594  */
2595     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
2596
2597 {
2598         int oerrno = errno;
2599     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2600
2601         ast_yy_flush_buffer(b ,yyscanner);
2602
2603         b->yy_input_file = file;
2604         b->yy_fill_buffer = 1;
2605
2606     /* If b is the current buffer, then ast_yy_init_buffer was _probably_
2607      * called from ast_yyrestart() or through yy_get_next_buffer.
2608      * In that case, we don't want to reset the lineno or column.
2609      */
2610     if (b != YY_CURRENT_BUFFER){
2611         b->yy_bs_lineno = 1;
2612         b->yy_bs_column = 0;
2613     }
2614
2615         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2616     
2617         errno = oerrno;
2618 }
2619
2620 /*!
2621  * \brief Discard all buffered characters. On the next scan, YY_INPUT will be called.
2622  * \param b the buffer state to be flushed, usually \c YY_CURRENT_BUFFER.
2623  * \param yyscanner The scanner object.
2624  */
2625     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2626 {
2627     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2628         if ( ! b )
2629                 return;
2630
2631         b->yy_n_chars = 0;
2632
2633         /* We always need two end-of-buffer characters.  The first causes
2634          * a transition to the end-of-buffer state.  The second causes
2635          * a jam in that state.
2636          */
2637         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2638         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2639
2640         b->yy_buf_pos = &b->yy_ch_buf[0];
2641
2642         b->yy_at_bol = 1;
2643         b->yy_buffer_status = YY_BUFFER_NEW;
2644
2645         if ( b == YY_CURRENT_BUFFER )
2646                 ast_yy_load_buffer_state(yyscanner );
2647 }
2648
2649 /*!
2650  * \brief Pushes the new state onto the stack. The new state becomes
2651  *  the current state. This function will allocate the stack if necessary.
2652  *  \param new_buffer The new state.
2653  *  \param yyscanner The scanner object.
2654  */
2655 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2656 {
2657     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2658         if (new_buffer == NULL)
2659                 return;
2660
2661         ast_yyensure_buffer_stack(yyscanner);
2662
2663         /* This block is copied from ast_yy_switch_to_buffer. */
2664         if ( YY_CURRENT_BUFFER )
2665                 {
2666                 /* Flush out information for old buffer. */
2667                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2668                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2669                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2670                 }
2671
2672         /* Only push if top exists. Otherwise, replace top. */
2673         if (YY_CURRENT_BUFFER)
2674                 yyg->yy_buffer_stack_top++;
2675         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2676
2677         /* copied from ast_yy_switch_to_buffer. */
2678         ast_yy_load_buffer_state(yyscanner );
2679         yyg->yy_did_buffer_switch_on_eof = 1;
2680 }
2681
2682 /*!
2683  * \brief Removes and deletes the top of the stack, if present.
2684  *  The next element becomes the new top.
2685  *  \param yyscanner The scanner object.
2686  */
2687 void ast_yypop_buffer_state (yyscan_t yyscanner)
2688 {
2689     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2690         if (!YY_CURRENT_BUFFER)
2691                 return;
2692
2693         ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2694         YY_CURRENT_BUFFER_LVALUE = NULL;
2695         if (yyg->yy_buffer_stack_top > 0)
2696                 --yyg->yy_buffer_stack_top;
2697
2698         if (YY_CURRENT_BUFFER) {
2699                 ast_yy_load_buffer_state(yyscanner );
2700                 yyg->yy_did_buffer_switch_on_eof = 1;
2701         }
2702 }
2703
2704 /*!
2705  * \brief Allocates the stack if it does not exist Guarantees space for at least one push.
2706  */
2707 static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
2708 {
2709         int num_to_alloc;
2710     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2711
2712         if (!yyg->yy_buffer_stack) {
2713
2714                 /* First allocation is just for 2 elements, since we don't know if this
2715                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2716                  * immediate realloc on the next call.
2717          */
2718                 num_to_alloc = 1;
2719                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyalloc
2720                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
2721                                                                 , yyscanner);
2722                 
2723                 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2724                                 
2725                 yyg->yy_buffer_stack_max = num_to_alloc;
2726                 yyg->yy_buffer_stack_top = 0;
2727                 return;
2728         }
2729
2730         if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2731
2732                 /* Increase the buffer to prepare for a possible push. */
2733                 int grow_size = 8 /* arbitrary grow size */;
2734
2735                 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2736                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyrealloc
2737                                                                 (yyg->yy_buffer_stack,
2738                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
2739                                                                 , yyscanner);
2740
2741                 /* zero only the new slots.*/
2742                 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2743                 yyg->yy_buffer_stack_max = num_to_alloc;
2744         }
2745 }
2746
2747 /*!
2748  * \brief Setup the input buffer state to scan directly from a user-specified character buffer.
2749  * \param base the character buffer
2750  * \param size the size in bytes of the character buffer
2751  * \param yyscanner The scanner object.
2752  * \return the newly allocated buffer state object. 
2753  */
2754 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
2755 {
2756         YY_BUFFER_STATE b;
2757     
2758         if ( size < 2 ||
2759              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2760              base[size-1] != YY_END_OF_BUFFER_CHAR )
2761                 /* They forgot to leave room for the EOB's. */
2762                 return 0;
2763
2764         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2765         if ( ! b )
2766                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_buffer()" );
2767
2768         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2769         b->yy_buf_pos = b->yy_ch_buf = base;
2770         b->yy_is_our_buffer = 0;
2771         b->yy_input_file = 0;
2772         b->yy_n_chars = b->yy_buf_size;
2773         b->yy_is_interactive = 0;
2774         b->yy_at_bol = 1;
2775         b->yy_fill_buffer = 0;
2776         b->yy_buffer_status = YY_BUFFER_NEW;
2777
2778         ast_yy_switch_to_buffer(b ,yyscanner );
2779
2780         return b;
2781 }
2782
2783 /*!
2784  * \brief Setup the input buffer state to scan a string. The next call to ast_yylex() will
2785  * scan from a \e copy of \a str.
2786  * \param yy_str a NUL-terminated string to scan
2787  * \param yyscanner The scanner object.
2788  * \return the newly allocated buffer state object.
2789  * \note If you want to scan bytes that may contain NUL values, then use
2790  *       ast_yy_scan_bytes() instead.
2791  */
2792 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
2793 {
2794     
2795         return ast_yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner);
2796 }
2797
2798 /*!
2799  * \brief Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
2800  * scan from a @e copy of @a bytes.
2801  * \param bytes the byte buffer to scan
2802  * \param len the number of bytes in the buffer pointed to by @a bytes.
2803  * \param yyscanner The scanner object.
2804  * \return the newly allocated buffer state object.
2805  */
2806 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * bytes, int  len , yyscan_t yyscanner)
2807 {
2808         YY_BUFFER_STATE b;
2809         char *buf;
2810         yy_size_t n;
2811         int i;
2812     
2813         /* Get memory for full buffer, including space for trailing EOB's. */
2814         n = len + 2;
2815         buf = (char *) ast_yyalloc(n ,yyscanner );
2816         if ( ! buf )
2817                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_bytes()" );
2818
2819         for ( i = 0; i < len; ++i )
2820                 buf[i] = bytes[i];
2821
2822         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2823
2824         b = ast_yy_scan_buffer(buf,n ,yyscanner);
2825         if ( ! b )
2826                 YY_FATAL_ERROR( "bad buffer in ast_yy_scan_bytes()" );
2827
2828         /* It's okay to grow etc. this buffer, and we should throw it
2829          * away when we're done.
2830          */
2831         b->yy_is_our_buffer = 1;
2832
2833         return b;
2834 }
2835
2836 #ifndef YY_EXIT_FAILURE
2837 #define YY_EXIT_FAILURE 2
2838 #endif
2839
2840 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2841 {
2842         (void) fprintf( stderr, "%s\n", msg );
2843         exit( YY_EXIT_FAILURE );
2844 }
2845
2846 /* Redefine yyless() so it works in section 3 code. */
2847
2848 #undef yyless
2849 #define yyless(n) \
2850         do \
2851                 { \
2852                 /* Undo effects of setting up yytext. */ \
2853         int yyless_macro_arg = (n); \
2854         YY_LESS_LINENO(yyless_macro_arg);\
2855                 yytext[yyleng] = yyg->yy_hold_char; \
2856                 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2857                 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2858                 *yyg->yy_c_buf_p = '\0'; \
2859                 yyleng = yyless_macro_arg; \
2860                 } \
2861         while ( 0 )
2862
2863 /* Accessor  methods (get/set functions) to struct members. */
2864
2865 /*!
2866  * \brief Get the user-defined data for this scanner.
2867  * \param yyscanner The scanner object.
2868  */
2869 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
2870 {
2871     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2872     return yyextra;
2873 }
2874
2875 /*!
2876  * \brief Get the current line number.
2877  * \param yyscanner The scanner object.
2878  */
2879 int ast_yyget_lineno  (yyscan_t yyscanner)
2880 {
2881     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2882     
2883         if (! YY_CURRENT_BUFFER)
2884             return 0;
2885     
2886     return yylineno;
2887 }
2888
2889 /*! 
2890  * \brief Get the current column number.
2891  * \param yyscanner The scanner object.
2892  */
2893 int ast_yyget_column  (yyscan_t yyscanner)
2894 {
2895     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2896     
2897         if (! YY_CURRENT_BUFFER)
2898             return 0;
2899     
2900     return yycolumn;
2901 }
2902
2903 /*!
2904  * \brief Get the input stream.
2905  * \param yyscanner The scanner object.
2906  */
2907 FILE *ast_yyget_in  (yyscan_t yyscanner)
2908 {
2909     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2910     return yyin;
2911 }
2912
2913 /*!
2914  * \brief Get the output stream.
2915  * \param yyscanner The scanner object.
2916  */
2917 FILE *ast_yyget_out  (yyscan_t yyscanner)
2918 {
2919     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2920     return yyout;
2921 }
2922
2923 /*!
2924  * \brief Get the length of the current token.
2925  * \param yyscanner The scanner object.
2926  */
2927 int ast_yyget_leng  (yyscan_t yyscanner)
2928 {
2929     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2930     return yyleng;
2931 }
2932
2933 /** Get the current token.
2934  * \param yyscanner The scanner object.
2935  */
2936
2937 char *ast_yyget_text  (yyscan_t yyscanner)
2938 {
2939     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2940     return yytext;
2941 }
2942
2943 /*!
2944  * \brief Set the user-defined data. This data is never touched by the scanner.
2945  * \param user_defined The data to be associated with this scanner.
2946  * \param yyscanner The scanner object.
2947  */
2948 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
2949 {
2950     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2951     yyextra = user_defined ;
2952 }
2953
2954 /*! 
2955  * \brief Set the current line number.
2956  * \param line_number
2957  * \param yyscanner The scanner object.
2958  */
2959 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
2960 {
2961     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2962
2963         /* lineno is only valid if an input buffer exists. */
2964         if (! YY_CURRENT_BUFFER )
2965            yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
2966     
2967     yylineno = line_number;
2968 }
2969
2970 /*!
2971  * \brief Set the current column.
2972  * \param column_no
2973  * \param yyscanner The scanner object.
2974  */
2975 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
2976 {
2977     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2978
2979         /* column is only valid if an input buffer exists. */
2980         if (! YY_CURRENT_BUFFER )
2981            yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
2982     
2983     yycolumn = column_no;
2984 }
2985
2986 /*!
2987  * \brief Set the input stream. This does not discard the current input buffer.
2988  * \param in_str A readable stream.
2989  * \param yyscanner The scanner object.
2990  * \see ast_yy_switch_to_buffer
2991  */
2992 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
2993 {
2994     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2995     yyin = in_str ;
2996 }
2997
2998 void ast_yyset_out (FILE *  out_str , yyscan_t yyscanner)
2999 {
3000     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3001     yyout = out_str ;
3002 }
3003
3004 int ast_yyget_debug  (yyscan_t yyscanner)
3005 {
3006     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3007     return yy_flex_debug;
3008 }
3009
3010 void ast_yyset_debug (int  bdebug , yyscan_t yyscanner)
3011 {
3012     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3013     yy_flex_debug = bdebug ;
3014 }
3015
3016 /* Accessor methods for yylval and yylloc */
3017
3018 YYSTYPE * ast_yyget_lval  (yyscan_t yyscanner)
3019 {
3020     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3021     return yylval;
3022 }
3023
3024 void ast_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
3025 {
3026     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3027     yylval = yylval_param;
3028 }
3029
3030 YYLTYPE *ast_yyget_lloc  (yyscan_t yyscanner)
3031 {
3032     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3033     return yylloc;
3034 }
3035     
3036 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
3037 {
3038     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3039     yylloc = yylloc_param;
3040 }
3041     
3042 static int yy_init_globals (yyscan_t yyscanner)
3043 {
3044     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3045     /* Initialization is the same as for the non-reentrant scanner.
3046        This function is called once per scanner lifetime. */
3047
3048     yyg->yy_buffer_stack = 0;
3049     yyg->yy_buffer_stack_top = 0;
3050     yyg->yy_buffer_stack_max = 0;
3051     yyg->yy_c_buf_p = (char *) 0;
3052     yyg->yy_init = 1;
3053     yyg->yy_start = 0;
3054     yyg->yy_start_stack_ptr = 0;
3055     yyg->yy_start_stack_depth = 0;
3056     yyg->yy_start_stack = (int *) 0;
3057
3058 /* Defined in main.c */
3059 #ifdef YY_STDINIT
3060     yyin = stdin;
3061     yyout = stdout;
3062 #else
3063     yyin = (FILE *) 0;
3064     yyout = (FILE *) 0;
3065 #endif
3066
3067     /* For future reference: Set errno on error, since we are called by
3068      * ast_yylex_init()
3069      */
3070     return 0;
3071 }
3072
3073 /* User-visible API */
3074
3075 /* ast_yylex_init is special because it creates the scanner itself, so it is
3076  * the ONLY reentrant function that doesn't take the scanner as the last argument.
3077  * That's why we explicitly handle the declaration, instead of using our macros.
3078  */
3079
3080 int ast_yylex_init(yyscan_t* ptr_yy_globals)
3081
3082 {
3083     if (ptr_yy_globals == NULL){
3084         errno = EINVAL;
3085         return 1;
3086     }
3087
3088     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), NULL );
3089
3090     if (*ptr_yy_globals == NULL){
3091         errno = ENOMEM;
3092         return 1;
3093     }
3094
3095     memset(*ptr_yy_globals,0,sizeof(struct yyguts_t));
3096
3097     return yy_init_globals ( *ptr_yy_globals );
3098 }
3099
3100 /* ast_yylex_destroy is for both reentrant and non-reentrant scanners. */
3101 int ast_yylex_destroy  (yyscan_t yyscanner)
3102 {
3103     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3104
3105     /* Pop the buffer stack, destroying each element. */
3106         while(YY_CURRENT_BUFFER){
3107                 ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
3108                 YY_CURRENT_BUFFER_LVALUE = NULL;
3109                 ast_yypop_buffer_state(yyscanner);
3110         }
3111
3112         /* Destroy the stack itself. */
3113         ast_yyfree(yyg->yy_buffer_stack ,yyscanner);
3114         yyg->yy_buffer_stack = NULL;
3115
3116     /* Destroy the start condition stack. */
3117         ast_yyfree(yyg->yy_start_stack ,yyscanner );
3118         yyg->yy_start_stack = NULL;
3119
3120     /* Destroy the main struct (reentrant only). */
3121     ast_yyfree ( yyscanner , yyscanner );
3122     return 0;
3123 }
3124
3125 /*
3126  * Internal utility routines.
3127  */
3128
3129 #ifndef yytext_ptr
3130 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
3131 {
3132         register int i;
3133     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3134         for ( i = 0; i < n; ++i )
3135                 s1[i] = s2[i];
3136 }
3137 #endif
3138
3139 #ifdef YY_NEED_STRLEN
3140 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
3141 {
3142         register int n;
3143     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3144         for ( n = 0; s[n]; ++n )
3145                 ;
3146
3147         return n;
3148 }
3149 #endif
3150
3151 void *ast_yyalloc (yy_size_t  size , yyscan_t yyscanner)
3152 {
3153         return (void *) malloc( size );
3154 }
3155
3156 void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
3157 {
3158         /* The cast to (char *) in the following accommodates both
3159          * implementations that use char* generic pointers, and those
3160          * that use void* generic pointers.  It works with the latter
3161          * because both ANSI C and C++ allow castless assignment from
3162          * any pointer type to void*, and deal with argument conversions
3163          * as though doing an assignment.
3164          */
3165         return (void *) realloc( (char *) ptr, size );
3166 }
3167
3168 void ast_yyfree (void * ptr , yyscan_t yyscanner)
3169 {
3170         free( (char *) ptr );   /* see ast_yyrealloc() for (char *) cast */
3171 }
3172
3173 #define YYTABLES_NAME "yytables"
3174
3175 #undef YY_NEW_FILE
3176 #undef YY_FLUSH_BUFFER
3177 #undef yy_set_bol
3178 #undef yy_new_buffer
3179 #undef yy_set_interactive
3180 #undef yytext_ptr
3181 #undef YY_DO_BEFORE_ACTION
3182
3183 #ifdef YY_DECL_IS_OURS
3184 #undef YY_DECL_IS_OURS
3185 #undef YY_DECL
3186 #endif
3187 #line 227 "ast_expr2.fl"
3188
3189
3190
3191 /* I'm putting the interface routine to the whole parse here in the flexer input file
3192    mainly because of all the flexer initialization that has to be done. Shouldn't matter
3193    where it is, as long as it's somewhere. I didn't want to define a prototype for the
3194    ast_yy_scan_string in the .y file, because then, I'd have to define YY_BUFFER_STATE there...
3195         UGH! that would be inappropriate. */
3196
3197 int ast_yyparse(void *); /* need to/should define this prototype for the call to yyparse */
3198 int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
3199
3200 int ast_expr(char *expr, char *buf, int length, struct ast_channel *chan)
3201 {
3202         struct parse_io io;
3203         int return_value = 0;
3204         
3205         memset(&io, 0, sizeof(io));
3206         io.string = expr;  /* to pass to the error routine */
3207         io.chan = chan;
3208         
3209         ast_yylex_init(&io.scanner);
3210         
3211         ast_yy_scan_string(expr, io.scanner);
3212         
3213         ast_yyparse ((void *) &io);
3214
3215         ast_yylex_destroy(io.scanner);
3216
3217         if (!io.val) {
3218                 if (length > 1) {
3219                         strcpy(buf, "0");
3220                         return_value = 1;
3221                 }
3222         } else {
3223                 if (io.val->type == AST_EXPR_number) {
3224                         int res_length;
3225
3226                         res_length = snprintf(buf, length, FP___PRINTF, io.val->u.i);
3227                         return_value = (res_length <= length) ? res_length : length;
3228                 } else {
3229 #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
3230                         strncpy(buf, io.val->u.s, length - 1);
3231 #else /* !STANDALONE && !LOW_MEMORY */
3232                         ast_copy_string(buf, io.val->u.s, length);
3233 #endif /* STANDALONE || LOW_MEMORY */
3234                         return_value = strlen(buf);
3235                         free(io.val->u.s);
3236                 }
3237                 free(io.val);
3238         }
3239         return return_value;
3240 }
3241
3242
3243 char extra_error_message[4095];
3244 int extra_error_message_supplied = 0;
3245 void  ast_expr_register_extra_error_info(char *message);
3246 void  ast_expr_clear_extra_error_info(void);
3247
3248 void  ast_expr_register_extra_error_info(char *message)
3249 {
3250        extra_error_message_supplied=1;
3251        strcpy(extra_error_message, message);
3252 }
3253
3254 void  ast_expr_clear_extra_error_info(void)
3255 {
3256        extra_error_message_supplied=0;
3257        extra_error_message[0] = 0;
3258 }
3259
3260 static char *expr2_token_equivs1[] = 
3261 {
3262         "TOKEN",
3263         "TOK_COND",
3264         "TOK_COLONCOLON",
3265         "TOK_OR",
3266         "TOK_AND",
3267         "TOK_EQ",
3268         "TOK_GT",
3269         "TOK_LT",
3270         "TOK_GE",
3271         "TOK_LE",
3272         "TOK_NE",
3273         "TOK_PLUS",
3274         "TOK_MINUS",
3275         "TOK_MULT",
3276         "TOK_DIV",
3277         "TOK_MOD",
3278         "TOK_COMPL",
3279         "TOK_COLON",
3280         "TOK_EQTILDE",
3281         "TOK_COMMA",
3282         "TOK_RP",
3283         "TOK_LP"
3284 };
3285
3286 static char *expr2_token_equivs2[] = 
3287 {
3288         "<token>",
3289         "?",
3290         "::",
3291         "|",
3292         "&",
3293         "=",
3294         ">",
3295         "<",
3296         ">=",
3297         "<=",
3298         "!=",
3299         "+",
3300         "-",
3301         "*",
3302         "/",
3303         "%",
3304         "!",
3305         ":",
3306         "=~",
3307         ",",
3308         ")",
3309         "("
3310 };
3311
3312
3313 static char *expr2_token_subst(const char *mess)
3314 {
3315         /* calc a length, malloc, fill, and return; yyerror had better free it! */
3316         int len=0,i;
3317         const char *p;
3318         char *res, *s,*t;
3319         int expr2_token_equivs_entries = sizeof(expr2_token_equivs1)/sizeof(char*);
3320
3321         for (p=mess; *p; p++) {
3322                 for (i=0; i<expr2_token_equivs_entries; i++) {
3323                         if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 )
3324                         {
3325                                 len+=strlen(expr2_token_equivs2[i])+2;
3326                                 p += strlen(expr2_token_equivs1[i])-1;
3327                                 break;
3328                         }
3329                 }
3330                 len++;
3331         }
3332         res = (char*)malloc(len+1);
3333         res[0] = 0;
3334         s = res;
3335         for (p=mess; *p;) {
3336                 int found = 0;
3337                 for (i=0; i<expr2_token_equivs_entries; i++) {
3338                         if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 ) {
3339                                 *s++ = '\'';
3340                                 for (t=expr2_token_equivs2[i]; *t;) {
3341                                         *s++ = *t++;
3342                                 }
3343                                 *s++ = '\'';
3344                                 p += strlen(expr2_token_equivs1[i]);
3345                                 found = 1;
3346                                 break;
3347                         }
3348                 }
3349                 if( !found )
3350                         *s++ = *p++;
3351         }
3352         *s++ = 0;
3353         return res;
3354 }
3355
3356 int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )
3357 {       
3358         struct yyguts_t * yyg = (struct yyguts_t*)(parseio->scanner);
3359         char spacebuf[8000]; /* best safe than sorry */
3360         char spacebuf2[8000]; /* best safe than sorry */
3361         int i=0;
3362         char *s2 = expr2_token_subst(s);
3363         spacebuf[0] = 0;
3364         
3365         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,
3366                                                                                                                                                                                                 which is the same thing as... get this:
3367                                                                                                         yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column
3368                                                                                                         I was tempted to just use yy_buf_pos in the STATE, but..., well:
3369                                                                                                                 a. the yy_buf_pos is the current position in the buffer, which
3370                                                                                                                         may not relate to the entire string/buffer because of the
3371                                                                                                                         buffering.
3372                                                                                                                 b. but, analysis of the situation is that when you use the
3373                                                                                                                         ast_yy_scan_string func, it creates a single buffer the size of
3374                                                                                                                         string, so the two would be the same... 
3375                                                                                                         so, in the end, the yycolumn macro is available, shorter, therefore easier. */
3376         spacebuf2[i++]='^';
3377         spacebuf2[i]= 0;
3378
3379 #ifdef STANDALONE3
3380         /* easier to read in the standalone version */
3381         printf("ast_yyerror(): %s syntax error: %s; Input:\n%s\n%s\n",  
3382                         (extra_error_message_supplied?extra_error_message:""), s2, parseio->string,spacebuf2);
3383 #else
3384         ast_log(LOG_WARNING,"ast_yyerror(): %s syntax error: %s; Input:\n%s\n%s\n",  
3385                         (extra_error_message_supplied?extra_error_message:""), s2, parseio->string,spacebuf2);
3386 #endif
3387 #ifndef STANDALONE
3388         ast_log(LOG_WARNING,"If you have questions, please refer to doc/channelvariables.txt in the asterisk source.\n");
3389 #endif
3390         free(s2);
3391         return(0);
3392 }
3393