torc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Scanner.cc
Go to the documentation of this file.
1 
2 #include <cstdio>
3 
4 #line 3 "lex.Edif.cc"
5 
6 #define YY_INT_ALIGNED short int
7 
8 /* A lexical scanner generated by flex */
9 
10 /* %not-for-header */
11 
12 /* %if-c-only */
13 /* %if-not-reentrant */
14 /* %endif */
15 /* %endif */
16 /* %ok-for-header */
17 
18 #define FLEX_SCANNER
19 #define YY_FLEX_MAJOR_VERSION 2
20 #define YY_FLEX_MINOR_VERSION 5
21 #define YY_FLEX_SUBMINOR_VERSION 35
22 #if YY_FLEX_SUBMINOR_VERSION > 0
23 #define FLEX_BETA
24 #endif
25 
26 /* %if-c++-only */
27  /* The c++ scanner is a mess. The FlexLexer.h header file relies on the
28  * following macro. This is required in order to pass the c++-multiple-scanners
29  * test in the regression suite. We get reports that it breaks inheritance.
30  * We will address this in a future release of flex, or omit the C++ scanner
31  * altogether.
32  */
33  #define yyFlexLexer EdifFlexLexer
34 /* %endif */
35 
36 /* %if-c-only */
37 /* %endif */
38 
39 /* %if-c-only */
40 /* %endif */
41 
42 /* First, we deal with platform-specific or compiler-specific issues. */
43 
44 /* begin standard C headers. */
45 /* %if-c-only */
46 /* %endif */
47 
48 /* %if-tables-serialization */
49 /* %endif */
50 /* end standard C headers. */
51 
52 /* %if-c-or-c++ */
53 /* flex integer type definitions */
54 
55 #ifndef FLEXINT_H
56 #define FLEXINT_H
57 
58 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
59 
60 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
61 
62 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
63  * if you want the limit (max/min) macros for int types.
64  */
65 #ifndef __STDC_LIMIT_MACROS
66 #define __STDC_LIMIT_MACROS 1
67 #endif
68 
69 #include <inttypes.h>
70 typedef int8_t flex_int8_t;
71 typedef uint8_t flex_uint8_t;
72 typedef int16_t flex_int16_t;
73 typedef uint16_t flex_uint16_t;
74 typedef int32_t flex_int32_t;
75 typedef uint32_t flex_uint32_t;
76 #else
77 typedef signed char flex_int8_t;
78 typedef short int flex_int16_t;
79 typedef int flex_int32_t;
80 typedef unsigned char flex_uint8_t;
81 typedef unsigned short int flex_uint16_t;
82 typedef unsigned int flex_uint32_t;
83 #endif /* ! C99 */
84 
85 /* Limits of integral types. */
86 #ifndef INT8_MIN
87 #define INT8_MIN (-128)
88 #endif
89 #ifndef INT16_MIN
90 #define INT16_MIN (-32767-1)
91 #endif
92 #ifndef INT32_MIN
93 #define INT32_MIN (-2147483647-1)
94 #endif
95 #ifndef INT8_MAX
96 #define INT8_MAX (127)
97 #endif
98 #ifndef INT16_MAX
99 #define INT16_MAX (32767)
100 #endif
101 #ifndef INT32_MAX
102 #define INT32_MAX (2147483647)
103 #endif
104 #ifndef UINT8_MAX
105 #define UINT8_MAX (255U)
106 #endif
107 #ifndef UINT16_MAX
108 #define UINT16_MAX (65535U)
109 #endif
110 #ifndef UINT32_MAX
111 #define UINT32_MAX (4294967295U)
112 #endif
113 
114 #endif /* ! FLEXINT_H */
115 
116 /* %endif */
117 
118 /* %if-c++-only */
119 /* begin standard C++ headers. */
120 #include <iostream>
121 #include <errno.h>
122 #include <cstdlib>
123 #include <cstring>
124 /* end standard C++ headers. */
125 /* %endif */
126 
127 #ifdef __cplusplus
128 
129 /* The "const" storage-class-modifier is valid. */
130 #define YY_USE_CONST
131 
132 #else /* ! __cplusplus */
133 
134 /* C99 requires __STDC__ to be defined as 1. */
135 #if defined (__STDC__)
136 
137 #define YY_USE_CONST
138 
139 #endif /* defined (__STDC__) */
140 #endif /* ! __cplusplus */
141 
142 #ifdef YY_USE_CONST
143 #define yyconst const
144 #else
145 #define yyconst
146 #endif
147 
148 /* %not-for-header */
149 
150 /* Returned upon end-of-file. */
151 #define YY_NULL 0
152 /* %ok-for-header */
153 
154 /* %not-for-header */
155 
156 /* Promotes a possibly negative, possibly signed char to an unsigned
157  * integer for use as an array index. If the signed char is negative,
158  * we want to instead treat it as an 8-bit unsigned char, hence the
159  * double cast.
160  */
161 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
162 /* %ok-for-header */
163 
164 /* %if-reentrant */
165 /* %endif */
166 
167 /* %if-not-reentrant */
168 
169 /* %endif */
170 
171 /* Enter a start condition. This macro really ought to take a parameter,
172  * but we do it the disgusting crufty way forced on us by the ()-less
173  * definition of BEGIN.
174  */
175 #define BEGIN (yy_start) = 1 + 2 *
176 
177 /* Translate the current start state into a value that can be later handed
178  * to BEGIN to return to the state. The YYSTATE alias is for lex
179  * compatibility.
180  */
181 #define YY_START (((yy_start) - 1) / 2)
182 #define YYSTATE YY_START
183 
184 /* Action number for EOF rule of a given start state. */
185 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
186 
187 /* Special action meaning "start processing a new file". */
188 #define YY_NEW_FILE yyrestart(yyin)
189 
190 #define YY_END_OF_BUFFER_CHAR 0
191 
192 /* Size of default input buffer. */
193 #ifndef YY_BUF_SIZE
194 #define YY_BUF_SIZE 16384
195 #endif
196 
197 /* The state buf must be large enough to hold one state per character in the main buffer.
198  */
199 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
200 
201 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
202 #define YY_TYPEDEF_YY_BUFFER_STATE
204 #endif
205 
206 /* %if-not-reentrant */
207 extern int yyleng;
208 /* %endif */
209 
210 /* %if-c-only */
211 /* %if-not-reentrant */
212 /* %endif */
213 /* %endif */
214 
215 #define EOB_ACT_CONTINUE_SCAN 0
216 #define EOB_ACT_END_OF_FILE 1
217 #define EOB_ACT_LAST_MATCH 2
218 
219  #define YY_LESS_LINENO(n)
220 
221 /* Return all but the first "n" matched characters back to the input stream. */
222 #define yyless(n) \
223  do \
224  { \
225  /* Undo effects of setting up yytext. */ \
226  int yyless_macro_arg = (n); \
227  YY_LESS_LINENO(yyless_macro_arg);\
228  *yy_cp = (yy_hold_char); \
229  YY_RESTORE_YY_MORE_OFFSET \
230  (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
231  YY_DO_BEFORE_ACTION; /* set up yytext again */ \
232  } \
233  while (0)
234 
235 #define unput(c) yyunput(c, (yytext_ptr))
236 
237 #ifndef YY_TYPEDEF_YY_SIZE_T
238 #define YY_TYPEDEF_YY_SIZE_T
239 typedef size_t yy_size_t;
240 #endif
241 
242 #ifndef YY_STRUCT_YY_BUFFER_STATE
243 #define YY_STRUCT_YY_BUFFER_STATE
244 struct yy_buffer_state
245  {
246 /* %if-c-only */
247 /* %endif */
248 
249 /* %if-c++-only */
250  std::istream* yy_input_file;
251 /* %endif */
252 
253  char *yy_ch_buf; /* input buffer */
254  char *yy_buf_pos; /* current position in input buffer */
255 
256  /* Size of input buffer in bytes, not including room for EOB
257  * characters.
258  */
260 
261  /* Number of characters read into yy_ch_buf, not including EOB
262  * characters.
263  */
264  int yy_n_chars;
265 
266  /* Whether we "own" the buffer - i.e., we know we created it,
267  * and can realloc() it to grow it, and should free() it to
268  * delete it.
269  */
270  int yy_is_our_buffer;
271 
272  /* Whether this is an "interactive" input source; if so, and
273  * if we're using stdio for input, then we want to use getc()
274  * instead of fread(), to make sure we stop fetching input after
275  * each newline.
276  */
277  int yy_is_interactive;
278 
279  /* Whether we're considered to be at the beginning of a line.
280  * If so, '^' rules will be active on the next match, otherwise
281  * not.
282  */
283  int yy_at_bol;
284 
285  int yy_bs_lineno; /**< The line count. */
286  int yy_bs_column; /**< The column count. */
287 
288  /* Whether to try to fill the input buffer when we reach the
289  * end of it.
290  */
291  int yy_fill_buffer;
292 
293  int yy_buffer_status;
294 
295 #define YY_BUFFER_NEW 0
296 #define YY_BUFFER_NORMAL 1
297  /* When an EOF's been seen but there's still some text to process
298  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
299  * shouldn't try reading from the input source any more. We might
300  * still have a bunch of tokens to match, though, because of
301  * possible backing-up.
302  *
303  * When we actually see the EOF, we change the status to "new"
304  * (via yyrestart()), so that the user can continue scanning by
305  * just pointing yyin at a new input file.
306  */
307 #define YY_BUFFER_EOF_PENDING 2
308 
309  };
310 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
311 
312 /* %if-c-only Standard (non-C++) definition */
313 /* %not-for-header */
314 
315 /* %if-not-reentrant */
316 /* %endif */
317 /* %ok-for-header */
318 
319 /* %endif */
320 
321 /* We provide macros for accessing buffer states in case in the
322  * future we want to put the buffer states in a more general
323  * "scanner state".
324  *
325  * Returns the top of the stack, or NULL.
326  */
327 #define YY_CURRENT_BUFFER ((yy_buffer_stack) \
328  ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
329  : NULL)
330 
331 /* Same as previous macro, but useful when we know that the buffer stack is not
332  * NULL or when we need an lvalue. For internal use only.
333  */
334 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
335 
336 /* %if-c-only Standard (non-C++) definition */
337 /* %if-not-reentrant */
338 /* %not-for-header */
339 
340 /* %ok-for-header */
341 
342 /* %endif */
343 /* %endif */
344 
345 void *Edifalloc (yy_size_t );
346 void *Edifrealloc (void *,yy_size_t );
347 void Ediffree (void * );
348 
349 #define yy_new_buffer yy_create_buffer
350 
351 #define yy_set_interactive(is_interactive) \
352  { \
353  if (! YY_CURRENT_BUFFER){ \
354  yyensure_buffer_stack (); \
355  YY_CURRENT_BUFFER_LVALUE = \
356  yy_create_buffer(yyin, YY_BUF_SIZE); \
357  } \
358  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
359  }
360 
361 #define yy_set_bol(at_bol) \
362  { \
363  if (! YY_CURRENT_BUFFER){\
364  yyensure_buffer_stack (); \
365  YY_CURRENT_BUFFER_LVALUE = \
366  yy_create_buffer(yyin, YY_BUF_SIZE); \
367  } \
368  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
369  }
370 
371 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
372 
373 /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
374 /* Begin user sect3 */
375 
376 #define FLEX_DEBUG
377 
378 typedef unsigned char YY_CHAR;
379 
380 #define yytext_ptr yytext
381 
382 #include <FlexLexer.h>
383 
384 /* %if-c-only Standard (non-C++) definition */
385 /* %endif */
386 
387 /* Done after the current pattern has been matched and before the
388  * corresponding action - sets up yytext.
389  */
390 #define YY_DO_BEFORE_ACTION \
391  (yytext_ptr) = yy_bp; \
392 /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
393  yyleng = (size_t) (yy_cp - yy_bp); \
394  (yy_hold_char) = *yy_cp; \
395  *yy_cp = '\0'; \
396 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
397  (yy_c_buf_p) = yy_cp;
398 
399 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
400 #define YY_NUM_RULES 298
401 #define YY_END_OF_BUFFER 299
402 /* This struct is not used in this scanner,
403  but its presence is necessary. */
404 struct yy_trans_info
405  {
408  };
410  { 0,
411  299, 297, 298, 295, 297, 298, 296, 298, 297, 298,
412  297, 298, 1, 297, 298, 2, 297, 298, 297, 298,
413  297, 298, 297, 298, 292, 297, 298, 291, 297, 298,
414  291, 297, 298, 291, 297, 298, 291, 297, 298, 111,
415  291, 297, 298, 291, 297, 298, 291, 297, 298, 291,
416  297, 298, 291, 297, 298, 291, 297, 298, 291, 297,
417  298, 291, 297, 298, 291, 297, 298, 291, 297, 298,
418  291, 297, 298, 291, 297, 298, 291, 297, 298, 291,
419  297, 298, 291, 297, 298, 291, 297, 298, 291, 297,
420  298, 291, 297, 298, 295, 294, 291, 292, 292, 293,
421 
422  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
423  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
424  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
425  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
426  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
427  291, 31, 291, 33, 291, 291, 291, 291, 291, 291,
428  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
429  291, 291, 237, 291, 39, 291, 291, 291, 291, 291,
430  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
431  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
432 
433  291, 291, 291, 291, 291, 291, 291, 291, 291, 62,
434  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
435  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
436  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
437  291, 291, 291, 291, 291, 291, 109, 291, 291, 291,
438  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
439  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
440  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
441  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
442  291, 291, 291, 291, 291, 180, 291, 291, 291, 291,
443 
444  291, 291, 184, 291, 291, 291, 291, 291, 291, 291,
445  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
446  291, 291, 291, 291, 291, 291, 291, 291, 42, 291,
447  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
448  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
449  291, 291, 291, 51, 291, 291, 291, 291, 291, 291,
450  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
451  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
452  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
453  291, 79, 291, 291, 291, 291, 291, 291, 291, 291,
454 
455  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
456  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
457  291, 291, 112, 291, 291, 291, 291, 291, 291, 291,
458  291, 291, 291, 291, 291, 17, 291, 291, 291, 291,
459  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
460  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
461  291, 291, 291, 291, 291, 291, 291, 29, 291, 291,
462  291, 291, 291, 291, 291, 291, 291, 183, 291, 291,
463  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
464  291, 291, 291, 291, 291, 291, 291, 291, 207, 291,
465 
466  291, 212, 291, 291, 291, 291, 217, 291, 291, 291,
467  222, 291, 291, 291, 291, 291, 40, 291, 41, 291,
468  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
469  291, 291, 291, 291, 251, 291, 291, 291, 291, 291,
470  291, 291, 291, 291, 291, 291, 291, 291, 52, 291,
471  291, 291, 291, 271, 291, 291, 291, 291, 291, 275,
472  291, 291, 291, 291, 291, 279, 291, 291, 291, 291,
473  287, 291, 289, 291, 291, 291, 59, 291, 3, 291,
474  291, 61, 291, 63, 291, 291, 291, 291, 291, 291,
475  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
476 
477  291, 291, 291, 84, 291, 291, 291, 291, 291, 291,
478  291, 291, 291, 93, 291, 94, 291, 291, 291, 291,
479  100, 291, 101, 291, 291, 291, 291, 291, 291, 291,
480  291, 291, 291, 291, 291, 291, 291, 291, 117, 291,
481  118, 291, 291, 291, 291, 291, 122, 291, 291, 291,
482  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
483  291, 291, 22, 291, 23, 291, 291, 291, 291, 291,
484  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
485  291, 291, 291, 176, 291, 291, 291, 291, 291, 291,
486  32, 291, 34, 291, 291, 291, 291, 291, 291, 291,
487 
488  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
489  291, 291, 291, 291, 291, 206, 291, 291, 291, 291,
490  291, 291, 291, 291, 218, 291, 291, 291, 291, 291,
491  291, 291, 291, 291, 38, 291, 291, 291, 291, 291,
492  291, 291, 291, 291, 291, 291, 46, 291, 243, 291,
493  291, 291, 247, 291, 291, 291, 291, 291, 291, 291,
494  291, 291, 291, 291, 261, 291, 291, 291, 291, 291,
495  291, 291, 291, 291, 291, 291, 291, 274, 291, 291,
496  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
497  291, 291, 58, 291, 291, 291, 291, 291, 291, 68,
498 
499  291, 69, 291, 291, 291, 291, 291, 291, 291, 291,
500  291, 291, 291, 291, 291, 82, 291, 10, 291, 83,
501  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
502  291, 291, 291, 291, 103, 291, 291, 291, 291, 291,
503  291, 291, 291, 291, 291, 291, 291, 15, 291, 291,
504  16, 291, 291, 291, 123, 291, 291, 132, 291, 291,
505  291, 291, 291, 291, 291, 291, 137, 291, 291, 291,
506  291, 291, 291, 291, 291, 291, 291, 291, 153, 291,
507  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
508  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
509 
510  291, 177, 291, 291, 291, 291, 291, 291, 291, 291,
511  291, 189, 291, 190, 291, 291, 291, 291, 291, 195,
512  291, 291, 291, 291, 291, 202, 291, 36, 291, 291,
513  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
514  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
515  291, 291, 291, 291, 291, 291, 241, 291, 291, 291,
516  291, 45, 291, 244, 291, 245, 291, 291, 291, 291,
517  291, 252, 291, 254, 291, 255, 291, 291, 256, 291,
518  258, 291, 259, 291, 291, 291, 291, 291, 291, 291,
519  291, 267, 291, 291, 291, 291, 291, 291, 291, 276,
520 
521  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
522  291, 291, 291, 291, 291, 291, 291, 291, 291, 67,
523  291, 291, 71, 291, 291, 72, 291, 73, 291, 291,
524  291, 291, 291, 291, 80, 291, 291, 291, 291, 291,
525  85, 291, 291, 291, 291, 291, 291, 291, 12, 291,
526  291, 291, 291, 291, 291, 291, 291, 291, 107, 291,
527  291, 291, 291, 291, 291, 291, 291, 116, 291, 119,
528  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
529  19, 291, 291, 20, 291, 291, 136, 291, 291, 291,
530  139, 291, 291, 145, 291, 291, 291, 291, 291, 151,
531 
532  291, 291, 154, 291, 291, 291, 159, 291, 291, 291,
533  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
534  291, 291, 291, 291, 291, 291, 291, 291, 178, 291,
535  291, 291, 291, 291, 291, 291, 35, 291, 291, 291,
536  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
537  291, 291, 291, 291, 291, 291, 291, 291, 291, 221,
538  291, 291, 291, 291, 291, 291, 291, 291, 231, 291,
539  232, 291, 233, 291, 291, 291, 291, 291, 291, 291,
540  291, 291, 246, 291, 291, 291, 291, 291, 291, 291,
541  291, 291, 291, 291, 291, 291, 291, 291, 291, 270,
542 
543  291, 291, 291, 291, 291, 291, 291, 291, 278, 291,
544  291, 281, 291, 282, 291, 291, 284, 291, 57, 291,
545  291, 291, 290, 291, 60, 291, 291, 291, 291, 291,
546  4, 291, 291, 291, 291, 291, 291, 291, 291, 81,
547  291, 291, 291, 291, 291, 87, 291, 291, 291, 89,
548  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
549  291, 291, 13, 291, 14, 291, 291, 110, 291, 291,
550  291, 291, 120, 291, 291, 291, 291, 291, 291, 291,
551  291, 291, 291, 291, 291, 291, 140, 291, 291, 291,
552  291, 291, 291, 152, 291, 291, 291, 291, 158, 291,
553 
554  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
555  291, 291, 172, 291, 291, 291, 291, 291, 291, 175,
556  291, 291, 30, 291, 291, 291, 182, 291, 291, 291,
557  187, 291, 188, 291, 191, 291, 291, 291, 291, 291,
558  291, 291, 291, 291, 291, 291, 291, 205, 291, 208,
559  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
560  291, 291, 291, 291, 291, 229, 291, 234, 291, 291,
561  291, 291, 43, 291, 291, 242, 291, 291, 248, 291,
562  291, 291, 291, 48, 291, 291, 49, 291, 260, 291,
563  291, 291, 291, 291, 291, 291, 291, 291, 53, 291,
564 
565  291, 291, 291, 291, 291, 277, 291, 280, 291, 283,
566  291, 291, 291, 291, 291, 291, 66, 291, 70, 291,
567  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
568  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
569  291, 291, 291, 291, 106, 291, 108, 291, 113, 291,
570  291, 291, 121, 291, 291, 291, 291, 291, 291, 291,
571  18, 291, 291, 291, 291, 291, 291, 291, 291, 291,
572  291, 147, 291, 291, 291, 291, 291, 291, 291, 291,
573  291, 291, 163, 291, 291, 291, 166, 291, 291, 291,
574  291, 291, 291, 171, 291, 291, 291, 291, 26, 291,
575 
576  291, 291, 291, 291, 291, 186, 291, 291, 291, 291,
577  291, 291, 291, 291, 200, 291, 291, 291, 291, 209,
578  291, 213, 291, 214, 291, 37, 291, 291, 291, 291,
579  220, 291, 291, 291, 225, 291, 226, 291, 291, 291,
580  291, 291, 291, 291, 239, 291, 291, 47, 291, 291,
581  291, 253, 291, 291, 291, 291, 291, 291, 291, 266,
582  291, 268, 291, 291, 291, 273, 291, 291, 55, 291,
583  291, 291, 286, 291, 291, 64, 291, 291, 291, 75,
584  291, 291, 291, 291, 5, 291, 291, 291, 8, 291,
585  291, 291, 291, 291, 90, 291, 291, 92, 291, 95,
586 
587  291, 291, 291, 98, 291, 291, 102, 291, 104, 291,
588  105, 291, 291, 291, 124, 291, 291, 291, 291, 291,
589  291, 291, 291, 291, 21, 291, 291, 291, 291, 291,
590  291, 291, 291, 291, 291, 291, 157, 291, 160, 291,
591  161, 291, 291, 291, 165, 291, 291, 291, 24, 291,
592  169, 291, 291, 173, 291, 291, 291, 27, 291, 28,
593  291, 291, 291, 291, 291, 193, 291, 291, 291, 291,
594  291, 291, 291, 291, 291, 291, 291, 215, 291, 291,
595  291, 291, 224, 291, 291, 291, 291, 291, 291, 291,
596  291, 44, 291, 291, 291, 291, 291, 263, 291, 291,
597 
598  264, 291, 291, 269, 291, 291, 291, 56, 291, 285,
599  291, 288, 291, 291, 291, 291, 77, 291, 78, 291,
600  6, 291, 291, 9, 291, 291, 11, 291, 291, 91,
601  291, 96, 291, 291, 99, 291, 114, 291, 291, 125,
602  291, 291, 130, 291, 131, 291, 291, 291, 135, 291,
603  291, 291, 291, 143, 291, 144, 291, 291, 291, 291,
604  291, 291, 291, 162, 291, 164, 291, 291, 291, 170,
605  291, 291, 25, 291, 291, 291, 291, 291, 291, 291,
606  291, 291, 199, 291, 201, 291, 291, 291, 291, 291,
607  291, 291, 291, 291, 291, 291, 291, 291, 238, 291,
608 
609  291, 291, 291, 291, 291, 50, 291, 291, 291, 54,
610  291, 291, 291, 291, 7, 291, 291, 291, 97, 291,
611  291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
612  291, 149, 291, 291, 291, 156, 291, 291, 291, 291,
613  291, 291, 291, 291, 194, 291, 291, 291, 291, 291,
614  291, 291, 291, 291, 219, 291, 291, 291, 228, 291,
615  291, 291, 291, 291, 291, 291, 291, 262, 291, 265,
616  291, 291, 291, 291, 76, 291, 291, 291, 291, 291,
617  291, 291, 291, 291, 134, 291, 291, 291, 142, 291,
618  291, 291, 291, 291, 167, 291, 291, 174, 291, 291,
619 
620  291, 291, 192, 291, 291, 197, 291, 291, 291, 291,
621  291, 291, 291, 291, 291, 230, 291, 291, 291, 240,
622  291, 291, 291, 257, 291, 272, 291, 291, 74, 291,
623  291, 291, 291, 291, 291, 128, 291, 291, 133, 291,
624  291, 291, 146, 291, 291, 291, 155, 291, 168, 291,
625  179, 291, 291, 291, 291, 291, 291, 291, 291, 291,
626  291, 291, 291, 291, 291, 249, 291, 250, 291, 291,
627  86, 291, 88, 291, 291, 291, 291, 129, 291, 291,
628  291, 291, 291, 291, 185, 291, 291, 291, 291, 204,
629  291, 210, 291, 291, 291, 291, 291, 235, 291, 236,
630 
631  291, 65, 291, 291, 291, 291, 291, 291, 291, 291,
632  181, 291, 196, 291, 198, 291, 203, 291, 211, 291,
633  291, 223, 291, 291, 115, 291, 126, 291, 291, 291,
634  291, 291, 291, 291, 291, 291, 138, 291, 291, 291,
635  291, 216, 291, 227, 291, 127, 291, 291, 291, 291,
636  141, 291, 291, 291, 291, 291, 291, 291, 148, 291,
637  150, 291
638  } ;
639 
641  { 0,
642  1, 1, 1, 2, 4, 7, 9, 11, 13, 16,
643  19, 21, 23, 25, 28, 31, 34, 37, 40, 44,
644  47, 50, 53, 56, 59, 62, 65, 68, 71, 74,
645  77, 80, 83, 86, 89, 92, 95, 96, 96, 97,
646  98, 99, 99, 100, 101, 102, 103, 104, 105, 106,
647  107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
648  117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
649  127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
650  137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
651  147, 148, 149, 150, 151, 152, 154, 156, 157, 158,
652 
653  159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
654  169, 170, 171, 172, 173, 175, 177, 178, 179, 180,
655  181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
656  191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
657  201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
658  212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
659  222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
660  232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
661  242, 243, 244, 245, 246, 247, 249, 250, 251, 252,
662  253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
663 
664  263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
665  273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
666  283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
667  293, 294, 295, 296, 298, 299, 300, 301, 302, 303,
668  305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
669  315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
670  325, 326, 327, 328, 329, 331, 332, 333, 334, 335,
671  336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
672  346, 347, 348, 349, 350, 351, 352, 353, 354, 356,
673  357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
674 
675  367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
676  377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
677  387, 388, 389, 390, 391, 392, 394, 395, 396, 397,
678  398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
679  408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
680  418, 419, 420, 421, 422, 423, 425, 426, 427, 428,
681  429, 430, 431, 432, 433, 434, 435, 436, 438, 439,
682  440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
683  450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
684  460, 461, 462, 463, 464, 465, 466, 467, 468, 470,
685 
686  471, 472, 473, 474, 475, 476, 477, 478, 480, 481,
687  482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
688  492, 493, 494, 495, 496, 497, 498, 499, 501, 502,
689  504, 505, 506, 507, 509, 510, 511, 513, 514, 515,
690  516, 517, 519, 521, 522, 523, 524, 525, 526, 527,
691  528, 529, 530, 531, 532, 533, 534, 535, 537, 538,
692  539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
693  549, 551, 552, 553, 554, 556, 557, 558, 559, 560,
694  562, 563, 564, 565, 566, 568, 569, 570, 571, 573,
695  575, 576, 577, 579, 581, 582, 584, 586, 587, 588,
696 
697  589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
698  599, 600, 601, 602, 603, 604, 606, 607, 608, 609,
699  610, 611, 612, 613, 614, 616, 618, 619, 620, 621,
700  623, 625, 626, 627, 628, 629, 630, 631, 632, 633,
701  634, 635, 636, 637, 638, 639, 641, 643, 644, 645,
702  646, 647, 649, 650, 651, 652, 653, 654, 655, 656,
703  657, 658, 659, 660, 661, 662, 663, 665, 667, 668,
704  669, 670, 671, 672, 673, 674, 675, 676, 677, 678,
705  679, 680, 681, 682, 683, 684, 686, 687, 688, 689,
706  690, 691, 693, 695, 696, 697, 698, 699, 700, 701,
707 
708  702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
709  712, 713, 714, 715, 716, 718, 719, 720, 721, 722,
710  723, 724, 725, 727, 728, 729, 730, 731, 732, 733,
711  734, 735, 737, 738, 739, 740, 741, 742, 743, 744,
712  745, 746, 747, 749, 751, 752, 753, 755, 756, 757,
713  758, 759, 760, 761, 762, 763, 764, 765, 767, 768,
714  769, 770, 771, 772, 773, 774, 775, 776, 777, 778,
715  780, 781, 782, 783, 784, 785, 786, 787, 788, 789,
716  790, 791, 792, 793, 795, 796, 797, 798, 799, 800,
717  802, 804, 805, 806, 807, 808, 809, 810, 811, 812,
718 
719  813, 814, 815, 816, 818, 820, 822, 823, 824, 825,
720  826, 827, 828, 829, 830, 831, 832, 833, 834, 835,
721  837, 838, 839, 840, 841, 842, 843, 844, 845, 846,
722  847, 848, 850, 851, 853, 854, 855, 857, 858, 860,
723  861, 862, 863, 864, 865, 866, 867, 869, 870, 871,
724  872, 873, 874, 875, 876, 877, 878, 879, 881, 882,
725  883, 884, 885, 886, 887, 888, 889, 890, 891, 892,
726  893, 894, 895, 896, 897, 898, 899, 900, 901, 902,
727  904, 905, 906, 907, 908, 909, 910, 911, 912, 914,
728  916, 917, 918, 919, 920, 922, 923, 924, 925, 926,
729 
730  928, 930, 931, 932, 933, 934, 935, 936, 937, 938,
731  939, 940, 941, 942, 943, 944, 945, 946, 947, 948,
732  949, 950, 951, 952, 953, 954, 955, 956, 957, 959,
733  960, 961, 962, 964, 966, 968, 969, 970, 971, 972,
734  974, 976, 978, 979, 981, 983, 985, 986, 987, 988,
735  989, 990, 991, 992, 994, 995, 996, 997, 998, 999,
736  1000, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
737  1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020,
738  1022, 1023, 1025, 1026, 1028, 1030, 1031, 1032, 1033, 1034,
739  1035, 1037, 1038, 1039, 1040, 1041, 1043, 1044, 1045, 1046,
740 
741  1047, 1048, 1049, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
742  1058, 1059, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
743  1070, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080,
744  1081, 1083, 1084, 1086, 1087, 1089, 1090, 1091, 1093, 1094,
745  1096, 1097, 1098, 1099, 1100, 1102, 1103, 1105, 1106, 1107,
746  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118,
747  1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128,
748  1129, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1139, 1140,
749  1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150,
750  1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160,
751 
752  1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1173,
753  1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1185,
754  1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
755  1196, 1197, 1198, 1199, 1200, 1202, 1203, 1204, 1205, 1206,
756  1207, 1208, 1209, 1211, 1212, 1214, 1216, 1217, 1219, 1221,
757  1222, 1223, 1225, 1227, 1228, 1229, 1230, 1231, 1233, 1234,
758  1235, 1236, 1237, 1238, 1239, 1240, 1242, 1243, 1244, 1245,
759  1246, 1248, 1249, 1250, 1252, 1253, 1254, 1255, 1256, 1257,
760  1258, 1259, 1260, 1261, 1262, 1263, 1265, 1267, 1268, 1270,
761  1271, 1272, 1273, 1275, 1276, 1277, 1278, 1279, 1280, 1281,
762 
763  1282, 1283, 1284, 1285, 1286, 1287, 1289, 1290, 1291, 1292,
764  1293, 1294, 1296, 1297, 1298, 1299, 1301, 1302, 1303, 1304,
765  1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1315,
766  1316, 1317, 1318, 1319, 1320, 1322, 1323, 1325, 1326, 1327,
767  1329, 1330, 1331, 1333, 1335, 1337, 1338, 1339, 1340, 1341,
768  1342, 1343, 1344, 1345, 1346, 1347, 1348, 1350, 1352, 1353,
769  1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363,
770  1364, 1365, 1366, 1368, 1370, 1371, 1372, 1373, 1375, 1376,
771  1378, 1379, 1381, 1382, 1383, 1384, 1386, 1387, 1389, 1391,
772  1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1401, 1402,
773 
774  1403, 1404, 1405, 1406, 1408, 1410, 1412, 1413, 1414, 1415,
775  1416, 1417, 1419, 1421, 1422, 1423, 1424, 1425, 1426, 1427,
776  1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
777  1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1447, 1449,
778  1451, 1452, 1453, 1455, 1456, 1457, 1458, 1459, 1460, 1461,
779  1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472,
780  1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483,
781  1485, 1486, 1487, 1489, 1490, 1491, 1492, 1493, 1494, 1496,
782  1497, 1498, 1499, 1501, 1502, 1503, 1504, 1505, 1506, 1508,
783  1509, 1510, 1511, 1512, 1513, 1514, 1515, 1517, 1518, 1519,
784 
785  1520, 1522, 1524, 1526, 1528, 1529, 1530, 1531, 1533, 1534,
786  1535, 1537, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1547,
787  1548, 1550, 1551, 1552, 1554, 1555, 1556, 1557, 1558, 1559,
788  1560, 1562, 1564, 1565, 1566, 1568, 1569, 1571, 1572, 1573,
789  1575, 1576, 1578, 1579, 1580, 1582, 1583, 1584, 1585, 1587,
790  1588, 1589, 1591, 1592, 1593, 1594, 1595, 1597, 1598, 1600,
791  1602, 1603, 1604, 1606, 1607, 1609, 1611, 1613, 1614, 1615,
792  1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1627,
793  1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637,
794  1639, 1641, 1643, 1644, 1645, 1647, 1648, 1649, 1651, 1653,
795 
796  1654, 1656, 1657, 1658, 1660, 1662, 1663, 1664, 1665, 1666,
797  1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677,
798  1678, 1680, 1681, 1682, 1683, 1685, 1686, 1687, 1688, 1689,
799  1690, 1691, 1692, 1694, 1695, 1696, 1697, 1698, 1700, 1701,
800  1703, 1704, 1706, 1707, 1708, 1710, 1712, 1714, 1715, 1716,
801  1717, 1719, 1721, 1723, 1724, 1726, 1727, 1729, 1730, 1732,
802  1734, 1735, 1737, 1739, 1740, 1742, 1743, 1745, 1747, 1748,
803  1749, 1751, 1752, 1753, 1754, 1756, 1758, 1759, 1760, 1761,
804  1762, 1763, 1764, 1766, 1768, 1769, 1770, 1772, 1773, 1775,
805  1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1785, 1787,
806 
807  1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797,
808  1798, 1799, 1801, 1802, 1803, 1804, 1805, 1806, 1808, 1809,
809  1810, 1812, 1813, 1814, 1815, 1817, 1818, 1819, 1821, 1822,
810  1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832,
811  1834, 1835, 1836, 1838, 1839, 1840, 1841, 1842, 1843, 1844,
812  1845, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855,
813  1857, 1858, 1859, 1861, 1862, 1863, 1864, 1865, 1866, 1867,
814  1868, 1870, 1872, 1873, 1874, 1875, 1877, 1878, 1879, 1880,
815  1881, 1882, 1883, 1884, 1885, 1887, 1888, 1889, 1891, 1892,
816  1893, 1894, 1895, 1897, 1898, 1900, 1901, 1902, 1903, 1905,
817 
818  1906, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916,
819  1918, 1919, 1920, 1922, 1923, 1924, 1926, 1928, 1929, 1931,
820  1932, 1933, 1934, 1935, 1936, 1938, 1939, 1941, 1942, 1943,
821  1945, 1946, 1947, 1949, 1951, 1953, 1954, 1955, 1956, 1957,
822  1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1968,
823  1970, 1971, 1973, 1975, 1976, 1977, 1978, 1980, 1981, 1982,
824  1983, 1984, 1985, 1987, 1988, 1989, 1990, 1992, 1994, 1995,
825  1996, 1997, 1998, 2000, 2002, 2004, 2005, 2006, 2007, 2008,
826  2009, 2010, 2011, 2013, 2015, 2017, 2019, 2021, 2022, 2024,
827  2025, 2027, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036,
828 
829  2037, 2039, 2040, 2041, 2042, 2044, 2046, 2048, 2049, 2050,
830  2051, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2061, 2063,
831  2063
832  } ;
833 
835  { 0,
836  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
837  1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
838  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
839  1, 2, 1, 4, 1, 1, 1, 5, 1, 6,
840  7, 1, 8, 1, 9, 10, 1, 11, 12, 13,
841  14, 14, 14, 14, 15, 16, 17, 1, 1, 1,
842  1, 1, 1, 1, 18, 19, 20, 21, 22, 23,
843  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
844  34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
845  1, 1, 1, 1, 44, 1, 45, 46, 47, 48,
846 
847  49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
848  59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
849  69, 70, 1, 1, 1, 1, 1, 1, 1, 1,
850  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
851  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
852  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
853  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
854  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
855  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
856  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
857 
858  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
859  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
860  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
861  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
862  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
863  1, 1, 1, 1, 1
864  } ;
865 
867  { 0,
868  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
869  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
870  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
871  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
872  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
873  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
874  2, 2, 2, 2, 2, 2, 2, 2, 2, 2
875  } ;
876 
878  { 0,
879  0, 0, 272, 3532, 254, 3532, 240, 0, 3532, 3532,
880  60, 68, 75, 83, 81, 85, 129, 181, 84, 130,
881  131, 0, 166, 70, 84, 147, 229, 193, 276, 326,
882  380, 420, 192, 217, 190, 241, 231, 219, 3532, 0,
883  306, 316, 403, 353, 0, 80, 73, 233, 78, 248,
884  128, 76, 86, 288, 315, 176, 325, 150, 142, 365,
885  182, 226, 242, 228, 378, 374, 408, 404, 234, 247,
886  427, 257, 441, 330, 283, 307, 370, 335, 329, 330,
887  459, 380, 493, 421, 429, 420, 418, 427, 474, 476,
888  470, 479, 434, 458, 482, 460, 466, 487, 494, 529,
889 
890  505, 519, 525, 522, 513, 529, 523, 547, 542, 528,
891  522, 527, 554, 536, 0, 0, 205, 205, 165, 539,
892  565, 540, 541, 590, 566, 584, 587, 583, 614, 574,
893  595, 607, 603, 620, 636, 587, 612, 604, 631, 614,
894  611, 637, 646, 643, 639, 650, 649, 647, 652, 0,
895  668, 665, 656, 665, 669, 660, 675, 657, 671, 681,
896  672, 684, 689, 680, 673, 681, 691, 689, 692, 714,
897  692, 689, 693, 704, 722, 723, 724, 726, 720, 721,
898  731, 734, 724, 720, 738, 0, 747, 743, 741, 738,
899  741, 742, 748, 760, 760, 751, 751, 751, 765, 754,
900 
901  767, 779, 765, 778, 782, 772, 790, 789, 779, 783,
902  777, 780, 780, 781, 783, 808, 802, 800, 800, 796,
903  794, 800, 805, 804, 827, 823, 828, 821, 826, 833,
904  819, 840, 832, 0, 828, 829, 155, 153, 847, 878,
905  846, 840, 865, 855, 851, 847, 866, 861, 860, 881,
906  882, 888, 884, 887, 888, 883, 896, 892, 883, 890,
907  906, 920, 152, 116, 0, 908, 900, 920, 901, 916,
908  908, 918, 922, 934, 921, 927, 923, 938, 941, 939,
909  933, 954, 974, 963, 945, 952, 948, 949, 0, 969,
910  965, 974, 980, 971, 983, 975, 974, 992, 980, 980,
911 
912  977, 995, 987, 1004, 1000, 1000, 998, 1018, 1005, 1023,
913  1009, 1005, 1007, 1032, 1016, 1022, 1038, 1027, 1020, 1038,
914  1039, 1042, 1044, 1028, 1048, 1034, 1048, 1051, 1054, 1051,
915  1047, 1063, 1057, 1052, 1072, 1077, 1078, 1075, 1081, 1082,
916  1084, 1076, 1079, 1070, 1071, 1096, 1076, 1094, 1097, 1100,
917  1093, 1105, 1094, 1094, 1092, 1105, 1100, 1094, 1115, 1101,
918  1111, 1116, 1123, 1129, 1135, 1125, 1129, 0, 1132, 1139,
919  1129, 1133, 1151, 1147, 1136, 1144, 1141, 1139, 1158, 1153,
920  1146, 1149, 1170, 1173, 1172, 1158, 1180, 1180, 1181, 1177,
921  1174, 1194, 1182, 1195, 1198, 1184, 1184, 1193, 0, 1198,
922 
923  1188, 1205, 1198, 1204, 1204, 115, 113, 0, 1214, 1211,
924  1202, 1214, 1224, 1222, 1229, 1229, 1227, 1236, 1240, 1245,
925  1243, 1230, 1237, 1244, 1234, 1248, 1240, 1240, 1250, 1261,
926  1263, 1247, 1260, 0, 1250, 1267, 1310, 1259, 1261, 1276,
927  1283, 0, 0, 1284, 1292, 1285, 1290, 1281, 1290, 1298,
928  1301, 1302, 1296, 1301, 1308, 1306, 1309, 0, 1319, 1310,
929  1329, 1321, 1324, 1328, 1328, 1342, 1347, 1339, 1349, 1348,
930  1348, 1345, 1342, 1356, 0, 1361, 1352, 1362, 1357, 0,
931  1367, 1355, 1371, 1367, 1392, 1380, 1386, 1367, 1382, 0,
932  1376, 1393, 0, 0, 1400, 0, 1402, 1387, 1387, 1390,
933 
934  1393, 1408, 1408, 1413, 1421, 1407, 1417, 1415, 1420, 1425,
935  1411, 1423, 1438, 1441, 1445, 0, 1437, 1434, 1455, 1456,
936  1446, 1443, 1459, 1450, 0, 0, 1447, 1457, 1461, 0,
937  0, 1468, 1457, 1456, 1455, 1475, 1465, 1475, 1480, 1474,
938  1479, 1485, 1476, 1481, 1475, 0, 0, 1492, 1501, 1495,
939  1509, 0, 1508, 1513, 1492, 1512, 1513, 1510, 1508, 1512,
940  1518, 1524, 1521, 1524, 1509, 1529, 0, 0, 1519, 1529,
941  1532, 1529, 1518, 1524, 1545, 1548, 1540, 1551, 1545, 1560,
942  1562, 1594, 1584, 1569, 1571, 0, 1555, 1556, 1576, 1568,
943  1573, 0, 0, 1588, 1578, 1586, 1590, 1589, 1597, 1614,
944 
945  1607, 1606, 1614, 1608, 1610, 1624, 1618, 1633, 1622, 1631,
946  1626, 1648, 1649, 1643, 0, 1647, 1652, 1654, 1651, 1636,
947  1642, 1660, 1662, 1649, 1674, 1662, 1652, 1667, 1662, 1677,
948  1677, 0, 1684, 1674, 1693, 1677, 1686, 1698, 1686, 1686,
949  1688, 1693, 0, 1689, 1714, 1701, 0, 1716, 1713, 1700,
950  1702, 1699, 1718, 1721, 1722, 1720, 1714, 1731, 1721, 1721,
951  1741, 1735, 1730, 1746, 1748, 1753, 1759, 1745, 1756, 0,
952  1763, 1771, 1767, 1754, 1761, 1770, 1767, 1750, 1766, 1772,
953  1781, 1771, 1783, 0, 1770, 1792, 1795, 1794, 1784, 0,
954  0, 1789, 1789, 1796, 1798, 1800, 1802, 1805, 1820, 1802,
955 
956  1817, 1808, 1825, 0, 0, 0, 1806, 1815, 1812, 1813,
957  1816, 1820, 1841, 1824, 1838, 1840, 1836, 1857, 1841, 1861,
958  1860, 1857, 1843, 1869, 1859, 1855, 1861, 1855, 1860, 1858,
959  1875, 0, 1857, 0, 1882, 1885, 1907, 1870, 0, 1887,
960  1880, 1894, 1882, 1898, 1893, 1896, 0, 1910, 1915, 1907,
961  1917, 1904, 1925, 1922, 1920, 1926, 1927, 0, 1908, 1932,
962  1936, 1915, 1952, 1932, 1926, 1934, 1942, 1954, 1956, 1937,
963  1957, 1964, 1972, 1969, 1971, 1971, 1972, 1958, 1979, 0,
964  1961, 1974, 1978, 1977, 1986, 1990, 1973, 1978, 0, 0,
965  1992, 1989, 1990, 1990, 2005, 2011, 2014, 2019, 2021, 0,
966 
967  0, 2009, 2008, 2001, 2002, 2010, 2019, 2030, 2020, 2036,
968  2037, 2030, 2031, 2027, 2039, 2030, 2033, 2033, 2036, 2034,
969  2037, 2043, 2054, 2050, 2050, 2053, 2069, 2069, 0, 2072,
970  2077, 2076, 0, 0, 0, 2062, 2070, 2065, 2066, 2070,
971  0, 0, 2086, 2088, 0, 2084, 2076, 2090, 2084, 2097,
972  2090, 2082, 2105, 0, 2092, 2090, 2095, 2094, 2097, 2110,
973  0, 2122, 2123, 2121, 2111, 2118, 2116, 2120, 2132, 2123,
974  2137, 2138, 2133, 2137, 2133, 2143, 2146, 2138, 2132, 0,
975  2152, 0, 2138, 0, 2174, 2160, 2155, 2160, 2148, 2170,
976  0, 2176, 2177, 2179, 2176, 2179, 2185, 2189, 2180, 2174,
977 
978  2171, 2185, 2186, 2193, 2189, 2182, 2189, 2195, 2186, 2193,
979  2195, 0, 2210, 2198, 2216, 2208, 2220, 2213, 2217, 0,
980  0, 2224, 2218, 2221, 2222, 2236, 2234, 2224, 2241, 2244,
981  0, 2235, 0, 2231, 0, 2247, 2240, 0, 2250, 2252,
982  2254, 2251, 2257, 2254, 0, 2260, 0, 2282, 2255, 2254,
983  2270, 2261, 2278, 2270, 2274, 2273, 2277, 2293, 2293, 2280,
984  2283, 2298, 2293, 2285, 2294, 2303, 2303, 2297, 2297, 2310,
985  2311, 2313, 2309, 2325, 2317, 2305, 2317, 0, 2335, 2322,
986  2321, 2345, 2342, 2345, 2327, 2336, 2334, 2348, 2354, 2354,
987  2356, 2357, 2362, 2344, 2344, 2364, 2356, 2350, 2353, 0,
988 
989  2366, 2376, 2382, 2363, 2375, 2374, 2377, 0, 0, 0,
990  2373, 2391, 2398, 2390, 2399, 2391, 2387, 2399, 0, 2404,
991  2411, 2410, 2398, 2408, 2415, 2394, 2414, 2407, 2403, 2419,
992  2426, 2421, 2419, 2429, 0, 2436, 2430, 2446, 2438, 2448,
993  2448, 2455, 0, 2437, 0, 0, 2454, 0, 2447, 2441,
994  2449, 0, 0, 2448, 2466, 2464, 2445, 0, 2462, 2471,
995  2453, 2470, 2474, 2472, 2466, 0, 2471, 2482, 2484, 2474,
996  0, 2481, 2487, 0, 2489, 2497, 2507, 2500, 2495, 2499,
997  2505, 2498, 2501, 2514, 2507, 0, 0, 2504, 0, 2512,
998  2516, 2521, 0, 2522, 2523, 2515, 2513, 2530, 2534, 2528,
999 
1000  2520, 2528, 2541, 2547, 2556, 2561, 2551, 2557, 2543, 2545,
1001  2546, 0, 2561, 2566, 2574, 0, 2572, 2558, 2562, 2556,
1002  2573, 2563, 2565, 2584, 2583, 2581, 2584, 2583, 0, 2589,
1003  2608, 2594, 2596, 2609, 0, 2597, 0, 2610, 2599, 0,
1004  2608, 2619, 0, 0, 0, 2605, 2623, 2626, 2625, 2613,
1005  2618, 2629, 2630, 2627, 2634, 2630, 0, 0, 2624, 2622,
1006  2642, 2633, 2642, 2653, 2648, 2647, 2667, 2658, 2646, 2656,
1007  2668, 2674, 2675, 2674, 2664, 2662, 2678, 0, 2682, 0,
1008  2683, 0, 2672, 2676, 2669, 0, 2671, 0, 0, 2691,
1009  2686, 2675, 2693, 2686, 2691, 2695, 2696, 0, 2717, 2717,
1010 
1011  2702, 2704, 2717, 0, 0, 0, 2725, 2722, 2724, 2715,
1012  2712, 0, 0, 2714, 2720, 2717, 2719, 2725, 2737, 2739,
1013  2723, 2724, 2738, 2746, 2747, 2752, 2753, 2741, 2746, 2751,
1014  2771, 2760, 2762, 2757, 2765, 2762, 2776, 0, 0, 0,
1015  2768, 2780, 0, 2785, 2766, 2781, 2771, 2775, 2789, 0,
1016  2775, 2795, 2790, 2793, 2799, 2783, 2803, 2804, 2793, 0,
1017  2797, 2807, 2801, 2807, 2807, 2814, 2826, 2814, 2814, 0,
1018  2828, 2817, 0, 2824, 2819, 2829, 2838, 2824, 0, 2842,
1019  2842, 2844, 0, 2830, 2831, 2833, 2853, 2841, 0, 2857,
1020  2859, 2857, 2860, 2854, 2859, 2866, 0, 2868, 2875, 2867,
1021 
1022  2887, 0, 0, 0, 2882, 2884, 2880, 0, 2880, 2890,
1023  0, 0, 2885, 2885, 2889, 2893, 2889, 2889, 2886, 2901,
1024  0, 2894, 2888, 0, 2896, 2896, 2895, 2905, 2904, 2905,
1025  0, 0, 2920, 2928, 0, 2933, 0, 2920, 2925, 0,
1026  2938, 0, 2938, 2929, 0, 2941, 2940, 2925, 0, 2947,
1027  2948, 0, 2935, 2940, 2952, 2957, 0, 2934, 0, 0,
1028  2956, 2961, 0, 2943, 0, 0, 0, 2952, 2962, 0,
1029  2958, 2964, 2970, 2967, 2966, 2973, 2978, 2973, 0, 2992,
1030  2981, 2981, 2993, 2984, 2997, 2988, 3001, 2991, 3004, 0,
1031  0, 0, 2991, 2997, 0, 2996, 2993, 0, 0, 2994,
1032 
1033  0, 3001, 2999, 0, 0, 3004, 3013, 3013, 3029, 0,
1034  3018, 3021, 3030, 3031, 3026, 3034, 3030, 3030, 3032, 3044,
1035  0, 3035, 3055, 3043, 0, 3055, 3058, 3054, 3045, 3059,
1036  3048, 3058, 0, 3059, 3065, 3059, 3062, 0, 3074, 0,
1037  3081, 0, 3071, 3068, 0, 0, 0, 3085, 3084, 3081,
1038  0, 0, 0, 3082, 0, 3094, 0, 3083, 0, 0,
1039  3100, 0, 0, 3086, 3092, 3103, 0, 0, 3106, 3109,
1040  0, 3097, 3106, 3097, 0, 0, 3107, 3113, 3107, 3115,
1041  3112, 3113, 0, 0, 3107, 3117, 0, 3118, 0, 3127,
1042  3119, 3123, 3138, 3146, 3145, 3155, 3152, 0, 0, 3138,
1043 
1044  3158, 3142, 3143, 3155, 3140, 3153, 3155, 3166, 3171, 3157,
1045  3156, 0, 3149, 3162, 3159, 3178, 3162, 0, 3175, 3185,
1046  0, 3184, 3193, 3183, 0, 3195, 3198, 0, 3188, 3208,
1047  3206, 3192, 3199, 3209, 3211, 3217, 3203, 3221, 3205, 0,
1048  3207, 3225, 0, 3207, 3207, 3216, 3231, 3228, 3235, 3236,
1049  0, 3224, 3222, 3245, 3250, 3244, 3252, 3246, 3257, 0,
1050  3245, 3246, 0, 3248, 3257, 3269, 3267, 3267, 3271, 3252,
1051  0, 0, 3275, 3266, 3256, 0, 3279, 3268, 3283, 3276,
1052  3282, 3284, 3290, 3278, 0, 3294, 3288, 0, 3280, 3297,
1053  3300, 3291, 0, 3298, 0, 3294, 3301, 3301, 0, 3314,
1054 
1055  0, 3304, 3312, 3324, 3323, 3319, 3319, 3333, 3334, 0,
1056  3335, 3324, 0, 3323, 3320, 0, 0, 3335, 0, 3325,
1057  3335, 3338, 3350, 3338, 0, 3341, 0, 3348, 3355, 0,
1058  3349, 3351, 0, 0, 0, 3368, 3369, 3360, 3362, 3375,
1059  3375, 3367, 3383, 3367, 3367, 3368, 3364, 3385, 0, 0,
1060  3376, 0, 0, 3389, 3391, 3377, 0, 3383, 3388, 3390,
1061  3393, 3390, 0, 3399, 3402, 3418, 0, 0, 3399, 3405,
1062  3422, 3419, 0, 0, 0, 3424, 3411, 3423, 3413, 3415,
1063  3419, 3420, 0, 0, 0, 0, 0, 3429, 0, 3427,
1064  0, 0, 3439, 3428, 3444, 3430, 3432, 3444, 3438, 3452,
1065 
1066  0, 3440, 3462, 3463, 0, 0, 0, 3462, 3471, 3474,
1067  0, 3469, 3471, 3467, 3468, 3476, 3478, 0, 0, 3532,
1068  3529, 119, 118
1069  } ;
1070 
1072  { 0,
1073  1720, 1, 1720, 1720, 1720, 1720, 1721, 1722, 1720, 1720,
1074  1720, 1720, 1720, 1720, 1723, 1723, 1723, 1723, 1723, 1723,
1075  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1076  1723, 1723, 1723, 1723, 1723, 1723, 1720, 1721, 1720, 1722,
1077  1720, 1720, 1720, 1720, 1723, 1723, 1723, 1723, 1723, 1723,
1078  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1079  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1080  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1081  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1082  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1083 
1084  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1085  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1086  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1087  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1088  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1089  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1090  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1091  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1092  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1093  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1094 
1095  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1096  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1097  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1098  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1099  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1100  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1101  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1102  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1103  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1104  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1105 
1106  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1107  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1108  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1109  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1110  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1111  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1112  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1113  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1114  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1115  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1116 
1117  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1118  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1119  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1120  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1121  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1122  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1123  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1124  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1125  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1126  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1127 
1128  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1129  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1130  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1131  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1132  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1133  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1134  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1135  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1136  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1137  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1138 
1139  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1140  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1141  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1142  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1143  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1144  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1145  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1146  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1147  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1148  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1149 
1150  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1151  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1152  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1153  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1154  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1155  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1156  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1157  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1158  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1159  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1160 
1161  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1162  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1163  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1164  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1165  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1166  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1167  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1168  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1169  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1170  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1171 
1172  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1173  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1174  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1175  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1176  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1177  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1178  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1179  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1180  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1181  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1182 
1183  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1184  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1185  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1186  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1187  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1188  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1189  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1190  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1191  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1192  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1193 
1194  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1195  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1196  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1197  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1198  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1199  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1200  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1201  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1202  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1203  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1204 
1205  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1206  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1207  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1208  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1209  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1210  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1211  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1212  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1213  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1214  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1215 
1216  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1217  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1218  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1219  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1220  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1221  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1222  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1223  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1224  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1225  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1226 
1227  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1228  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1229  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1230  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1231  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1232  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1233  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1234  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1235  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1236  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1237 
1238  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1239  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1240  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1241  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1242  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1243  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1244  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1245  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1246  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1247  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1248 
1249  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1250  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1251  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1252  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1253  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1254  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1255  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1256  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1257  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1258  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1259 
1260  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
1261  1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 0,
1262  1720, 1720, 1720
1263  } ;
1264 
1266  { 0,
1267  4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
1268  14, 14, 14, 14, 14, 14, 14, 15, 16, 17,
1269  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1270  28, 29, 30, 22, 31, 32, 33, 34, 35, 36,
1271  22, 22, 22, 4, 15, 16, 17, 18, 19, 20,
1272  21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1273  22, 31, 32, 33, 34, 35, 36, 22, 22, 22,
1274  41, 41, 41, 41, 41, 41, 41, 42, 43, 43,
1275  43, 43, 43, 43, 43, 44, 44, 44, 44, 44,
1276  44, 44, 42, 43, 43, 43, 43, 43, 43, 43,
1277 
1278  46, 85, 53, 47, 70, 87, 54, 86, 145, 146,
1279  149, 48, 154, 49, 71, 50, 55, 51, 52, 45,
1280  40, 155, 72, 593, 73, 592, 443, 46, 85, 53,
1281  47, 70, 87, 54, 86, 145, 146, 149, 48, 154,
1282  49, 71, 50, 55, 51, 52, 56, 74, 155, 72,
1283  57, 73, 79, 58, 59, 75, 152, 153, 76, 80,
1284  60, 77, 442, 61, 78, 81, 62, 166, 88, 407,
1285  63, 406, 89, 56, 74, 265, 167, 57, 90, 79,
1286  58, 59, 75, 152, 153, 76, 80, 60, 77, 82,
1287  61, 78, 81, 62, 166, 88, 83, 63, 64, 89,
1288 
1289  65, 84, 66, 167, 162, 90, 67, 172, 163, 131,
1290  98, 138, 68, 132, 99, 139, 82, 133, 69, 264,
1291  263, 140, 39, 83, 100, 64, 134, 65, 84, 66,
1292  101, 162, 37, 67, 172, 163, 131, 98, 138, 68,
1293  132, 99, 139, 39, 133, 69, 91, 135, 140, 136,
1294  92, 100, 137, 134, 93, 37, 147, 101, 141, 94,
1295  173, 174, 142, 148, 175, 143, 95, 150, 187, 96,
1296  97, 1720, 188, 91, 135, 144, 136, 92, 193, 137,
1297  1720, 93, 151, 147, 1720, 141, 94, 173, 174, 142,
1298  148, 175, 143, 95, 150, 187, 96, 97, 102, 188,
1299 
1300  1720, 1720, 144, 1720, 1720, 193, 198, 156, 103, 151,
1301  104, 199, 157, 105, 106, 107, 41, 41, 41, 41,
1302  41, 41, 41, 1720, 158, 102, 44, 44, 44, 44,
1303  44, 44, 44, 198, 156, 103, 1720, 104, 199, 157,
1304  105, 106, 107, 108, 200, 109, 159, 110, 196, 160,
1305  111, 158, 161, 164, 112, 165, 203, 113, 197, 204,
1306  114, 205, 115, 44, 44, 44, 44, 44, 44, 44,
1307  108, 200, 109, 159, 110, 196, 160, 111, 1720, 161,
1308  164, 112, 165, 203, 113, 197, 204, 114, 205, 115,
1309  116, 117, 118, 168, 169, 170, 119, 120, 201, 171,
1310 
1311  176, 121, 178, 1720, 202, 122, 1720, 177, 179, 180,
1312  209, 123, 42, 43, 43, 43, 43, 43, 43, 43,
1313  168, 169, 170, 184, 120, 201, 171, 176, 121, 178,
1314  181, 202, 122, 185, 177, 179, 180, 209, 123, 124,
1315  186, 125, 182, 183, 126, 127, 189, 190, 191, 1720,
1316  184, 128, 218, 1720, 219, 220, 129, 181, 194, 221,
1317  185, 130, 222, 192, 233, 1720, 124, 186, 125, 182,
1318  183, 126, 127, 189, 190, 191, 206, 195, 128, 218,
1319  207, 219, 220, 129, 208, 194, 221, 234, 130, 222,
1320  192, 233, 223, 225, 237, 228, 231, 1720, 1720, 226,
1321 
1322  238, 1720, 1720, 206, 195, 229, 230, 207, 232, 224,
1323  235, 208, 210, 211, 234, 227, 239, 236, 212, 223,
1324  225, 237, 228, 231, 213, 214, 226, 238, 215, 216,
1325  240, 217, 229, 230, 244, 232, 224, 235, 1720, 210,
1326  211, 245, 227, 239, 236, 212, 246, 247, 241, 248,
1327  249, 213, 214, 250, 1720, 215, 216, 240, 217, 242,
1328  254, 244, 255, 256, 257, 243, 1720, 262, 245, 266,
1329  251, 1720, 271, 246, 247, 241, 248, 249, 272, 258,
1330  250, 252, 259, 253, 267, 275, 242, 254, 260, 255,
1331  256, 257, 243, 261, 262, 268, 266, 251, 269, 271,
1332 
1333  270, 276, 280, 284, 1720, 272, 258, 273, 252, 259,
1334  253, 267, 275, 285, 274, 260, 277, 278, 1720, 298,
1335  261, 1720, 268, 279, 289, 269, 286, 270, 276, 280,
1336  284, 281, 290, 299, 273, 282, 287, 291, 300, 1720,
1337  285, 274, 303, 277, 278, 292, 298, 288, 283, 304,
1338  279, 289, 301, 286, 305, 294, 295, 293, 281, 290,
1339  299, 296, 282, 287, 291, 300, 302, 306, 307, 303,
1340  308, 309, 292, 297, 288, 283, 304, 310, 311, 301,
1341  312, 305, 294, 295, 293, 313, 314, 315, 296, 316,
1342  317, 318, 319, 302, 306, 307, 320, 308, 309, 321,
1343 
1344  297, 322, 323, 324, 310, 311, 325, 312, 326, 327,
1345  330, 328, 313, 314, 315, 329, 316, 317, 318, 319,
1346  331, 332, 337, 320, 333, 338, 321, 339, 322, 323,
1347  324, 340, 341, 325, 334, 326, 327, 330, 328, 342,
1348  343, 344, 329, 345, 335, 347, 348, 331, 332, 337,
1349  336, 333, 338, 349, 339, 350, 351, 353, 340, 341,
1350  352, 334, 346, 354, 355, 356, 342, 343, 344, 357,
1351  345, 335, 347, 348, 358, 359, 360, 336, 361, 362,
1352  349, 363, 350, 351, 353, 364, 365, 352, 366, 346,
1353  354, 355, 356, 367, 368, 369, 357, 370, 371, 372,
1354 
1355  373, 358, 359, 360, 374, 361, 362, 375, 363, 376,
1356  377, 378, 364, 365, 379, 366, 380, 381, 382, 383,
1357  367, 368, 369, 386, 370, 371, 372, 373, 387, 384,
1358  388, 374, 389, 390, 375, 391, 376, 377, 378, 392,
1359  393, 379, 385, 380, 381, 382, 383, 394, 395, 396,
1360  386, 397, 400, 398, 401, 387, 384, 388, 402, 389,
1361  390, 399, 391, 403, 404, 405, 392, 393, 408, 385,
1362  415, 1720, 416, 419, 394, 395, 396, 422, 397, 400,
1363  398, 401, 417, 420, 418, 402, 421, 423, 399, 424,
1364  403, 404, 405, 425, 426, 408, 409, 415, 410, 416,
1365 
1366  419, 411, 427, 428, 422, 429, 412, 413, 430, 417,
1367  420, 418, 414, 421, 423, 431, 424, 432, 433, 434,
1368  425, 426, 435, 409, 436, 410, 437, 438, 411, 427,
1369  428, 444, 429, 412, 413, 430, 445, 446, 447, 414,
1370  450, 448, 431, 439, 432, 433, 434, 449, 451, 435,
1371  452, 436, 440, 437, 438, 453, 441, 454, 444, 455,
1372  456, 457, 458, 445, 446, 447, 459, 450, 448, 460,
1373  439, 461, 1720, 467, 449, 451, 468, 452, 1720, 440,
1374  469, 465, 453, 441, 454, 470, 455, 456, 457, 458,
1375  471, 462, 466, 459, 472, 473, 460, 474, 461, 463,
1376 
1377  467, 475, 477, 468, 478, 464, 479, 469, 465, 481,
1378  476, 480, 470, 482, 483, 484, 485, 471, 462, 466,
1379  486, 472, 473, 487, 474, 488, 463, 489, 475, 477,
1380  490, 478, 464, 479, 491, 492, 481, 476, 480, 493,
1381  482, 483, 484, 485, 494, 495, 496, 486, 497, 498,
1382  487, 499, 488, 500, 489, 501, 502, 490, 503, 504,
1383  505, 491, 492, 506, 507, 508, 493, 509, 510, 512,
1384  511, 494, 495, 496, 513, 497, 498, 514, 499, 515,
1385  500, 516, 501, 502, 517, 503, 504, 505, 518, 519,
1386  506, 507, 508, 520, 509, 510, 512, 511, 521, 522,
1387 
1388  523, 513, 524, 525, 514, 526, 515, 527, 516, 528,
1389  529, 517, 530, 531, 532, 518, 519, 533, 534, 535,
1390  520, 536, 537, 538, 539, 521, 522, 523, 540, 524,
1391  525, 543, 526, 541, 527, 544, 528, 529, 545, 530,
1392  531, 532, 546, 542, 533, 534, 535, 547, 536, 537,
1393  538, 539, 548, 549, 551, 540, 552, 550, 543, 553,
1394  541, 554, 544, 555, 556, 545, 557, 558, 559, 546,
1395  542, 560, 561, 562, 547, 563, 564, 565, 566, 548,
1396  549, 551, 567, 552, 550, 568, 553, 569, 554, 572,
1397  555, 556, 573, 557, 558, 559, 570, 574, 560, 561,
1398 
1399  562, 575, 563, 564, 565, 566, 576, 571, 577, 567,
1400  578, 579, 568, 580, 569, 581, 572, 582, 583, 573,
1401  584, 585, 586, 570, 574, 587, 588, 589, 575, 590,
1402  591, 594, 596, 576, 571, 577, 597, 578, 579, 598,
1403  580, 599, 581, 600, 582, 583, 601, 584, 585, 586,
1404  602, 595, 587, 588, 589, 603, 590, 591, 594, 596,
1405  604, 605, 606, 597, 607, 608, 598, 609, 599, 610,
1406  600, 611, 612, 601, 615, 616, 613, 602, 595, 617,
1407  620, 618, 603, 614, 621, 622, 623, 604, 605, 606,
1408  624, 607, 608, 632, 609, 633, 610, 634, 611, 612,
1409 
1410  619, 615, 616, 613, 635, 636, 617, 620, 618, 637,
1411  614, 621, 622, 623, 638, 639, 640, 624, 641, 642,
1412  632, 643, 633, 644, 634, 645, 646, 619, 625, 647,
1413  626, 635, 636, 627, 648, 628, 637, 649, 629, 630,
1414  650, 638, 639, 640, 631, 641, 642, 651, 643, 652,
1415  644, 653, 645, 646, 654, 625, 647, 626, 655, 656,
1416  627, 648, 628, 657, 649, 629, 630, 650, 658, 659,
1417  660, 631, 661, 662, 651, 664, 652, 665, 653, 666,
1418  667, 654, 668, 663, 669, 655, 656, 670, 671, 672,
1419  657, 673, 674, 1720, 1720, 658, 659, 660, 679, 661,
1420 
1421  662, 1720, 664, 680, 665, 681, 666, 667, 682, 668,
1422  663, 669, 683, 684, 670, 671, 672, 685, 673, 674,
1423  675, 676, 689, 690, 691, 679, 677, 692, 678, 693,
1424  680, 686, 681, 694, 695, 682, 687, 688, 696, 683,
1425  684, 697, 698, 699, 685, 700, 701, 675, 676, 689,
1426  690, 691, 702, 677, 692, 678, 693, 703, 686, 704,
1427  694, 695, 705, 687, 688, 696, 706, 707, 697, 698,
1428  699, 708, 700, 701, 709, 710, 711, 712, 713, 702,
1429  714, 715, 716, 718, 703, 719, 704, 720, 717, 705,
1430  721, 722, 723, 706, 707, 724, 725, 726, 708, 727,
1431 
1432  728, 709, 710, 711, 712, 713, 729, 714, 715, 716,
1433  718, 730, 719, 731, 720, 717, 732, 721, 722, 723,
1434  733, 734, 724, 725, 726, 735, 727, 728, 736, 737,
1435  738, 739, 740, 729, 741, 742, 743, 744, 730, 745,
1436  731, 746, 747, 732, 748, 749, 750, 733, 734, 751,
1437  752, 755, 735, 756, 753, 736, 737, 738, 739, 740,
1438  757, 741, 742, 743, 744, 758, 745, 754, 746, 747,
1439  759, 748, 749, 750, 760, 761, 751, 752, 755, 762,
1440  756, 753, 763, 764, 1720, 1720, 777, 757, 778, 779,
1441  780, 1720, 758, 781, 754, 1720, 1720, 759, 1720, 1720,
1442 
1443  782, 760, 761, 774, 783, 1720, 762, 784, 785, 763,
1444  764, 765, 775, 777, 786, 778, 779, 780, 776, 766,
1445  781, 787, 767, 768, 788, 769, 770, 782, 771, 789,
1446  774, 783, 772, 773, 784, 785, 790, 791, 765, 775,
1447  792, 786, 793, 794, 795, 776, 766, 796, 787, 767,
1448  768, 788, 769, 770, 797, 771, 789, 798, 799, 772,
1449  773, 800, 801, 790, 791, 802, 803, 792, 804, 793,
1450  794, 795, 805, 806, 796, 807, 808, 809, 810, 811,
1451  814, 797, 812, 817, 798, 799, 818, 821, 800, 801,
1452  813, 815, 802, 803, 822, 804, 819, 820, 823, 805,
1453 
1454  806, 824, 807, 808, 809, 810, 811, 814, 825, 812,
1455  817, 816, 826, 818, 821, 827, 828, 813, 815, 829,
1456  830, 822, 831, 819, 820, 823, 832, 833, 824, 834,
1457  835, 836, 837, 838, 839, 825, 840, 841, 816, 826,
1458  842, 843, 827, 828, 844, 845, 829, 830, 846, 831,
1459  847, 848, 849, 832, 833, 850, 834, 835, 836, 837,
1460  838, 839, 851, 840, 841, 852, 853, 842, 843, 854,
1461  855, 844, 845, 856, 857, 846, 858, 847, 848, 849,
1462  859, 860, 850, 861, 865, 866, 867, 868, 869, 851,
1463  862, 870, 852, 853, 871, 872, 854, 855, 873, 863,
1464 
1465  856, 857, 874, 858, 875, 864, 876, 859, 860, 877,
1466  861, 865, 866, 867, 868, 869, 878, 862, 870, 879,
1467  880, 871, 872, 881, 882, 873, 863, 883, 884, 874,
1468  885, 875, 864, 876, 886, 888, 877, 889, 890, 891,
1469  892, 887, 896, 878, 893, 897, 879, 880, 898, 899,
1470  881, 882, 900, 894, 883, 884, 901, 885, 902, 895,
1471  903, 886, 888, 904, 889, 890, 891, 892, 887, 896,
1472  905, 893, 897, 906, 907, 898, 899, 908, 909, 900,
1473  894, 910, 911, 901, 912, 902, 895, 903, 913, 914,
1474  904, 915, 916, 917, 918, 919, 920, 905, 921, 922,
1475 
1476  906, 907, 923, 1720, 908, 909, 928, 929, 910, 911,
1477  930, 912, 1720, 931, 932, 913, 914, 933, 915, 916,
1478  917, 918, 919, 920, 924, 921, 922, 934, 935, 923,
1479  925, 936, 937, 928, 929, 938, 939, 930, 940, 926,
1480  931, 932, 941, 943, 933, 944, 927, 945, 946, 947,
1481  942, 924, 948, 949, 934, 935, 950, 925, 936, 937,
1482  953, 954, 938, 939, 955, 940, 926, 956, 961, 941,
1483  943, 957, 944, 927, 945, 946, 947, 942, 962, 948,
1484  949, 963, 951, 950, 952, 958, 959, 953, 954, 964,
1485  965, 955, 966, 960, 956, 961, 967, 968, 957, 969,
1486 
1487  970, 971, 972, 973, 974, 962, 975, 976, 963, 951,
1488  977, 952, 958, 959, 978, 979, 964, 965, 980, 966,
1489  960, 981, 982, 967, 968, 983, 969, 970, 971, 972,
1490  973, 974, 984, 975, 976, 985, 986, 977, 987, 988,
1491  989, 978, 979, 990, 991, 980, 992, 993, 981, 982,
1492  994, 995, 983, 996, 997, 998, 999, 1000, 1001, 984,
1493  1002, 1003, 985, 986, 1004, 987, 988, 989, 1005, 1006,
1494  990, 991, 1007, 992, 993, 1008, 1009, 994, 995, 1010,
1495  996, 997, 998, 999, 1000, 1001, 1011, 1002, 1003, 1012,
1496  1013, 1004, 1014, 1015, 1016, 1005, 1006, 1017, 1018, 1007,
1497 
1498  1019, 1020, 1008, 1009, 1021, 1022, 1010, 1023, 1024, 1025,
1499  1026, 1027, 1028, 1011, 1029, 1030, 1012, 1013, 1031, 1014,
1500  1015, 1016, 1032, 1033, 1017, 1018, 1034, 1019, 1020, 1035,
1501  1036, 1021, 1022, 1037, 1023, 1024, 1025, 1026, 1027, 1028,
1502  1038, 1029, 1030, 1039, 1040, 1031, 1041, 1042, 1043, 1032,
1503  1033, 1044, 1045, 1034, 1046, 1047, 1035, 1036, 1048, 1049,
1504  1037, 1050, 1051, 1052, 1053, 1054, 1055, 1038, 1056, 1057,
1505  1039, 1040, 1058, 1041, 1042, 1043, 1720, 1061, 1044, 1045,
1506  1062, 1046, 1047, 1063, 1064, 1048, 1049, 1065, 1050, 1051,
1507  1052, 1053, 1054, 1055, 1059, 1056, 1057, 1066, 1067, 1058,
1508 
1509  1068, 1069, 1070, 1060, 1061, 1071, 1072, 1062, 1073, 1074,
1510  1063, 1064, 1075, 1076, 1065, 1077, 1078, 1079, 1080, 1081,
1511  1082, 1059, 1083, 1084, 1066, 1067, 1085, 1068, 1069, 1070,
1512  1060, 1086, 1071, 1072, 1087, 1073, 1074, 1088, 1089, 1075,
1513  1076, 1090, 1077, 1078, 1079, 1080, 1081, 1082, 1091, 1083,
1514  1084, 1092, 1093, 1085, 1094, 1095, 1096, 1097, 1086, 1098,
1515  1099, 1087, 1100, 1101, 1088, 1089, 1102, 1103, 1090, 1104,
1516  1105, 1106, 1107, 1108, 1109, 1091, 1110, 1111, 1092, 1093,
1517  1112, 1094, 1095, 1096, 1097, 1116, 1098, 1099, 1117, 1100,
1518  1101, 1118, 1119, 1102, 1103, 1120, 1104, 1105, 1106, 1107,
1519 
1520  1108, 1109, 1113, 1110, 1111, 1121, 1122, 1112, 1123, 1124,
1521  1114, 1115, 1116, 1125, 1126, 1117, 1127, 1128, 1118, 1119,
1522  1129, 1130, 1120, 1131, 1132, 1133, 1134, 1135, 1136, 1113,
1523  1137, 1138, 1121, 1122, 1139, 1123, 1124, 1114, 1115, 1140,
1524  1125, 1126, 1141, 1127, 1128, 1142, 1143, 1129, 1130, 1144,
1525  1131, 1132, 1133, 1134, 1135, 1136, 1145, 1137, 1138, 1146,
1526  1147, 1139, 1148, 1149, 1151, 1152, 1140, 1150, 1153, 1141,
1527  1154, 1155, 1142, 1143, 1156, 1157, 1144, 1158, 1159, 1160,
1528  1161, 1162, 1163, 1145, 1164, 1165, 1146, 1147, 1166, 1148,
1529  1149, 1151, 1152, 1167, 1150, 1153, 1168, 1154, 1155, 1169,
1530 
1531  1170, 1156, 1157, 1171, 1158, 1159, 1160, 1161, 1162, 1163,
1532  1172, 1164, 1165, 1173, 1174, 1166, 1175, 1176, 1177, 1178,
1533  1167, 1179, 1180, 1168, 1181, 1182, 1169, 1170, 1184, 1183,
1534  1171, 1185, 1186, 1187, 1188, 1189, 1190, 1172, 1191, 1192,
1535  1173, 1174, 1193, 1175, 1176, 1177, 1178, 1194, 1179, 1180,
1536  1195, 1181, 1182, 1196, 1197, 1184, 1183, 1198, 1185, 1186,
1537  1187, 1188, 1189, 1190, 1199, 1191, 1192, 1200, 1201, 1193,
1538  1202, 1203, 1204, 1205, 1194, 1206, 1207, 1195, 1208, 1209,
1539  1196, 1197, 1210, 1211, 1198, 1212, 1213, 1214, 1215, 1216,
1540  1217, 1199, 1218, 1219, 1200, 1201, 1220, 1202, 1203, 1204,
1541 
1542  1205, 1221, 1206, 1207, 1222, 1208, 1209, 1223, 1224, 1210,
1543  1211, 1225, 1212, 1213, 1214, 1215, 1216, 1217, 1226, 1218,
1544  1219, 1227, 1228, 1220, 1229, 1230, 1231, 1232, 1221, 1235,
1545  1233, 1222, 1236, 1237, 1223, 1224, 1234, 1238, 1225, 1239,
1546  1240, 1241, 1242, 1243, 1244, 1226, 1245, 1246, 1227, 1228,
1547  1247, 1229, 1230, 1231, 1232, 1248, 1235, 1233, 1249, 1236,
1548  1237, 1250, 1251, 1234, 1238, 1252, 1239, 1240, 1241, 1242,
1549  1243, 1244, 1253, 1245, 1246, 1254, 1259, 1247, 1260, 1255,
1550  1261, 1262, 1248, 1263, 1256, 1249, 1264, 1265, 1250, 1251,
1551  1257, 1266, 1252, 1267, 1268, 1258, 1269, 1270, 1271, 1253,
1552 
1553  1272, 1273, 1254, 1259, 1276, 1260, 1255, 1261, 1262, 1274,
1554  1263, 1256, 1277, 1264, 1265, 1275, 1278, 1257, 1266, 1279,
1555  1267, 1268, 1258, 1269, 1270, 1271, 1280, 1272, 1273, 1281,
1556  1282, 1276, 1283, 1284, 1285, 1286, 1274, 1287, 1288, 1277,
1557  1289, 1290, 1275, 1278, 1291, 1292, 1279, 1293, 1294, 1295,
1558  1296, 1297, 1298, 1280, 1299, 1300, 1281, 1282, 1301, 1283,
1559  1284, 1285, 1286, 1302, 1287, 1288, 1303, 1289, 1290, 1304,
1560  1305, 1291, 1292, 1306, 1293, 1294, 1295, 1296, 1297, 1298,
1561  1307, 1299, 1300, 1308, 1309, 1301, 1310, 1311, 1312, 1313,
1562  1302, 1314, 1315, 1303, 1316, 1317, 1304, 1305, 1318, 1319,
1563 
1564  1306, 1320, 1321, 1322, 1323, 1324, 1325, 1307, 1326, 1327,
1565  1308, 1309, 1328, 1310, 1311, 1312, 1313, 1329, 1314, 1315,
1566  1330, 1316, 1317, 1331, 1332, 1318, 1319, 1333, 1320, 1321,
1567  1322, 1323, 1324, 1325, 1334, 1326, 1327, 1335, 1336, 1328,
1568  1337, 1338, 1339, 1340, 1329, 1341, 1342, 1330, 1343, 1344,
1569  1331, 1332, 1345, 1346, 1333, 1347, 1348, 1349, 1350, 1351,
1570  1352, 1334, 1353, 1354, 1335, 1336, 1355, 1337, 1338, 1339,
1571  1340, 1356, 1341, 1342, 1357, 1343, 1344, 1358, 1359, 1345,
1572  1346, 1360, 1347, 1348, 1349, 1350, 1351, 1352, 1361, 1353,
1573  1354, 1362, 1363, 1355, 1364, 1365, 1366, 1367, 1356, 1368,
1574 
1575  1369, 1357, 1370, 1371, 1358, 1359, 1372, 1373, 1360, 1374,
1576  1375, 1376, 1377, 1378, 1379, 1361, 1380, 1381, 1362, 1363,
1577  1382, 1364, 1365, 1366, 1367, 1383, 1368, 1369, 1384, 1370,
1578  1371, 1385, 1386, 1372, 1373, 1387, 1374, 1375, 1376, 1377,
1579  1378, 1379, 1388, 1380, 1381, 1389, 1390, 1382, 1391, 1392,
1580  1393, 1394, 1383, 1395, 1396, 1384, 1397, 1398, 1385, 1386,
1581  1399, 1400, 1387, 1401, 1402, 1403, 1404, 1405, 1406, 1388,
1582  1407, 1408, 1389, 1390, 1409, 1391, 1392, 1393, 1394, 1410,
1583  1395, 1396, 1411, 1397, 1398, 1412, 1413, 1399, 1400, 1414,
1584  1401, 1402, 1403, 1404, 1405, 1406, 1415, 1407, 1408, 1416,
1585 
1586  1417, 1409, 1418, 1421, 1419, 1422, 1410, 1420, 1423, 1411,
1587  1424, 1425, 1412, 1413, 1426, 1427, 1414, 1428, 1429, 1430,
1588  1431, 1432, 1433, 1415, 1434, 1435, 1416, 1417, 1436, 1418,
1589  1421, 1419, 1422, 1437, 1420, 1423, 1438, 1424, 1425, 1439,
1590  1440, 1426, 1427, 1441, 1428, 1429, 1430, 1431, 1432, 1433,
1591  1442, 1434, 1435, 1443, 1444, 1436, 1445, 1446, 1447, 1448,
1592  1437, 1449, 1450, 1438, 1451, 1452, 1439, 1440, 1453, 1454,
1593  1441, 1455, 1456, 1457, 1458, 1459, 1460, 1442, 1461, 1462,
1594  1443, 1444, 1463, 1445, 1446, 1447, 1448, 1464, 1449, 1450,
1595  1465, 1451, 1452, 1466, 1467, 1453, 1454, 1468, 1455, 1456,
1596 
1597  1457, 1458, 1459, 1460, 1469, 1461, 1462, 1470, 1471, 1463,
1598  1472, 1473, 1474, 1475, 1464, 1476, 1477, 1465, 1478, 1479,
1599  1466, 1467, 1480, 1481, 1468, 1482, 1483, 1484, 1485, 1486,
1600  1487, 1469, 1488, 1489, 1470, 1471, 1490, 1472, 1473, 1474,
1601  1475, 1491, 1476, 1477, 1492, 1478, 1479, 1493, 1494, 1480,
1602  1481, 1495, 1482, 1483, 1484, 1485, 1486, 1487, 1496, 1488,
1603  1489, 1497, 1498, 1490, 1499, 1500, 1501, 1502, 1491, 1503,
1604  1504, 1492, 1505, 1506, 1493, 1494, 1507, 1508, 1495, 1509,
1605  1510, 1511, 1512, 1513, 1514, 1496, 1515, 1516, 1497, 1498,
1606  1517, 1499, 1500, 1501, 1502, 1518, 1503, 1504, 1519, 1505,
1607 
1608  1506, 1520, 1521, 1507, 1508, 1522, 1509, 1510, 1511, 1512,
1609  1513, 1514, 1523, 1515, 1516, 1524, 1525, 1517, 1526, 1527,
1610  1528, 1529, 1518, 1530, 1532, 1519, 1531, 1533, 1520, 1521,
1611  1534, 1535, 1522, 1536, 1537, 1538, 1539, 1540, 1541, 1523,
1612  1542, 1543, 1524, 1525, 1544, 1526, 1527, 1528, 1529, 1545,
1613  1530, 1532, 1546, 1531, 1533, 1547, 1548, 1534, 1535, 1549,
1614  1536, 1537, 1538, 1539, 1540, 1541, 1550, 1542, 1543, 1551,
1615  1552, 1544, 1553, 1554, 1555, 1556, 1545, 1557, 1558, 1546,
1616  1559, 1560, 1547, 1548, 1561, 1562, 1549, 1563, 1564, 1565,
1617  1566, 1567, 1568, 1550, 1569, 1570, 1551, 1552, 1571, 1553,
1618 
1619  1554, 1555, 1556, 1572, 1557, 1558, 1573, 1559, 1560, 1574,
1620  1575, 1561, 1562, 1576, 1563, 1564, 1565, 1566, 1567, 1568,
1621  1577, 1569, 1570, 1578, 1579, 1571, 1580, 1582, 1583, 1584,
1622  1572, 1585, 1586, 1573, 1587, 1588, 1574, 1575, 1589, 1590,
1623  1576, 1591, 1592, 1593, 1594, 1595, 1581, 1577, 1596, 1597,
1624  1578, 1579, 1598, 1580, 1582, 1583, 1584, 1599, 1585, 1586,
1625  1600, 1587, 1588, 1601, 1602, 1589, 1590, 1603, 1591, 1592,
1626  1593, 1594, 1595, 1581, 1604, 1596, 1597, 1605, 1606, 1598,
1627  1607, 1608, 1609, 1610, 1599, 1611, 1612, 1600, 1613, 1614,
1628  1601, 1602, 1615, 1616, 1603, 1617, 1618, 1619, 1620, 1621,
1629 
1630  1622, 1604, 1623, 1624, 1605, 1606, 1625, 1607, 1608, 1609,
1631  1610, 1626, 1611, 1612, 1627, 1613, 1614, 1628, 1629, 1615,
1632  1616, 1630, 1617, 1618, 1619, 1620, 1621, 1622, 1631, 1623,
1633  1624, 1632, 1633, 1625, 1634, 1635, 1636, 1637, 1626, 1638,
1634  1639, 1627, 1640, 1641, 1628, 1629, 1642, 1643, 1630, 1644,
1635  1645, 1646, 1647, 1648, 1649, 1631, 1650, 1651, 1632, 1633,
1636  1652, 1634, 1635, 1636, 1637, 1653, 1638, 1639, 1654, 1640,
1637  1641, 1655, 1656, 1642, 1643, 1657, 1644, 1645, 1646, 1647,
1638  1648, 1649, 1658, 1650, 1651, 1659, 1660, 1652, 1661, 1662,
1639  1663, 1664, 1653, 1665, 1666, 1654, 1667, 1668, 1655, 1656,
1640 
1641  1669, 1670, 1657, 1671, 1672, 1673, 1674, 1675, 1676, 1658,
1642  1677, 1678, 1659, 1660, 1679, 1661, 1662, 1663, 1664, 1680,
1643  1665, 1666, 1681, 1667, 1668, 1682, 1683, 1669, 1670, 1684,
1644  1671, 1672, 1673, 1674, 1675, 1676, 1685, 1677, 1678, 1686,
1645  1687, 1679, 1688, 1689, 1690, 1691, 1680, 1692, 1693, 1681,
1646  1694, 1695, 1682, 1683, 1696, 1697, 1684, 1698, 1699, 1700,
1647  1701, 1702, 1703, 1685, 1704, 1705, 1686, 1687, 1706, 1688,
1648  1689, 1690, 1691, 1707, 1692, 1693, 1708, 1694, 1695, 1709,
1649  1710, 1696, 1697, 1711, 1698, 1699, 1700, 1701, 1702, 1703,
1650  1712, 1704, 1705, 1713, 1714, 1706, 1715, 1716, 1717, 1718,
1651 
1652  1707, 1719, 1720, 1708, 1720, 1720, 1709, 1710, 1720, 1720,
1653  1711, 1720, 1720, 1720, 1720, 1720, 1720, 1712, 1720, 1720,
1654  1713, 1714, 1720, 1715, 1716, 1717, 1718, 1720, 1719, 38,
1655  38, 3, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
1656  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
1657  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
1658  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
1659  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
1660  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
1661  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
1662 
1663  1720, 1720
1664  } ;
1665 
1667  { 0,
1668  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1669  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1670  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1671  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1672  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1673  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1674  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1675  11, 11, 11, 11, 11, 11, 11, 12, 12, 12,
1676  12, 12, 12, 12, 12, 13, 13, 13, 13, 13,
1677  13, 13, 14, 14, 14, 14, 14, 14, 14, 14,
1678 
1679  15, 24, 16, 15, 19, 25, 16, 24, 46, 47,
1680  49, 15, 52, 15, 19, 15, 16, 15, 15, 1723,
1681  1722, 53, 19, 407, 19, 406, 264, 15, 24, 16,
1682  15, 19, 25, 16, 24, 46, 47, 49, 15, 52,
1683  15, 19, 15, 16, 15, 15, 17, 20, 53, 19,
1684  17, 19, 21, 17, 17, 20, 51, 51, 20, 21,
1685  17, 20, 263, 17, 20, 21, 17, 58, 26, 238,
1686  17, 237, 26, 17, 20, 119, 59, 17, 26, 21,
1687  17, 17, 20, 51, 51, 20, 21, 17, 20, 23,
1688  17, 20, 21, 17, 58, 26, 23, 17, 18, 26,
1689 
1690  18, 23, 18, 59, 56, 26, 18, 61, 56, 33,
1691  28, 35, 18, 33, 28, 35, 23, 33, 18, 118,
1692  117, 35, 38, 23, 28, 18, 33, 18, 23, 18,
1693  28, 56, 37, 18, 61, 56, 33, 28, 35, 18,
1694  33, 28, 35, 7, 33, 18, 27, 34, 35, 34,
1695  27, 28, 34, 33, 27, 5, 48, 28, 36, 27,
1696  62, 63, 36, 48, 64, 36, 27, 50, 69, 27,
1697  27, 3, 70, 27, 34, 36, 34, 27, 72, 34,
1698  0, 27, 50, 48, 0, 36, 27, 62, 63, 36,
1699  48, 64, 36, 27, 50, 69, 27, 27, 29, 70,
1700 
1701  0, 0, 36, 0, 0, 72, 75, 54, 29, 50,
1702  29, 75, 54, 29, 29, 29, 41, 41, 41, 41,
1703  41, 41, 41, 0, 54, 29, 42, 42, 42, 42,
1704  42, 42, 42, 75, 54, 29, 0, 29, 75, 54,
1705  29, 29, 29, 30, 76, 30, 55, 30, 74, 55,
1706  30, 54, 55, 57, 30, 57, 78, 30, 74, 79,
1707  30, 80, 30, 44, 44, 44, 44, 44, 44, 44,
1708  30, 76, 30, 55, 30, 74, 55, 30, 0, 55,
1709  57, 30, 57, 78, 30, 74, 79, 30, 80, 30,
1710  31, 31, 31, 60, 60, 60, 31, 31, 77, 60,
1711 
1712  65, 31, 66, 0, 77, 31, 0, 65, 66, 66,
1713  82, 31, 43, 43, 43, 43, 43, 43, 43, 43,
1714  60, 60, 60, 68, 31, 77, 60, 65, 31, 66,
1715  67, 77, 31, 68, 65, 66, 66, 82, 31, 32,
1716  68, 32, 67, 67, 32, 32, 71, 71, 71, 0,
1717  68, 32, 84, 0, 85, 86, 32, 67, 73, 87,
1718  68, 32, 88, 71, 93, 0, 32, 68, 32, 67,
1719  67, 32, 32, 71, 71, 71, 81, 73, 32, 84,
1720  81, 85, 86, 32, 81, 73, 87, 94, 32, 88,
1721  71, 93, 89, 90, 96, 91, 92, 0, 0, 90,
1722 
1723  97, 0, 0, 81, 73, 91, 91, 81, 92, 89,
1724  95, 81, 83, 83, 94, 90, 98, 95, 83, 89,
1725  90, 96, 91, 92, 83, 83, 90, 97, 83, 83,
1726  99, 83, 91, 91, 101, 92, 89, 95, 0, 83,
1727  83, 102, 90, 98, 95, 83, 103, 104, 100, 105,
1728  106, 83, 83, 107, 0, 83, 83, 99, 83, 100,
1729  109, 101, 110, 111, 112, 100, 0, 114, 102, 120,
1730  108, 0, 122, 103, 104, 100, 105, 106, 123, 113,
1731  107, 108, 113, 108, 121, 125, 100, 109, 113, 110,
1732  111, 112, 100, 113, 114, 121, 120, 108, 121, 122,
1733 
1734  121, 126, 128, 130, 0, 123, 113, 124, 108, 113,
1735  108, 121, 125, 131, 124, 113, 127, 127, 0, 136,
1736  113, 0, 121, 127, 133, 121, 132, 121, 126, 128,
1737  130, 129, 133, 137, 124, 129, 132, 134, 138, 0,
1738  131, 124, 140, 127, 127, 134, 136, 132, 129, 141,
1739  127, 133, 139, 132, 142, 135, 135, 134, 129, 133,
1740  137, 135, 129, 132, 134, 138, 139, 143, 144, 140,
1741  145, 146, 134, 135, 132, 129, 141, 147, 148, 139,
1742  149, 142, 135, 135, 134, 151, 152, 153, 135, 154,
1743  155, 156, 157, 139, 143, 144, 158, 145, 146, 159,
1744 
1745  135, 160, 161, 162, 147, 148, 163, 149, 164, 165,
1746  167, 166, 151, 152, 153, 166, 154, 155, 156, 157,
1747  168, 169, 171, 158, 169, 172, 159, 173, 160, 161,
1748  162, 173, 174, 163, 170, 164, 165, 167, 166, 175,
1749  176, 177, 166, 178, 170, 179, 180, 168, 169, 171,
1750  170, 169, 172, 181, 173, 182, 183, 184, 173, 174,
1751  183, 170, 178, 185, 187, 188, 175, 176, 177, 189,
1752  178, 170, 179, 180, 190, 191, 192, 170, 193, 194,
1753  181, 195, 182, 183, 184, 196, 197, 183, 198, 178,
1754  185, 187, 188, 199, 200, 201, 189, 202, 203, 204,
1755 
1756  205, 190, 191, 192, 206, 193, 194, 207, 195, 208,
1757  209, 210, 196, 197, 211, 198, 212, 213, 214, 215,
1758  199, 200, 201, 217, 202, 203, 204, 205, 218, 216,
1759  219, 206, 220, 221, 207, 222, 208, 209, 210, 223,
1760  224, 211, 216, 212, 213, 214, 215, 225, 226, 227,
1761  217, 228, 230, 229, 231, 218, 216, 219, 232, 220,
1762  221, 229, 222, 233, 235, 236, 223, 224, 239, 216,
1763  241, 0, 242, 244, 225, 226, 227, 246, 228, 230,
1764  229, 231, 243, 245, 243, 232, 245, 247, 229, 247,
1765  233, 235, 236, 248, 249, 239, 240, 241, 240, 242,
1766 
1767  244, 240, 250, 251, 246, 252, 240, 240, 253, 243,
1768  245, 243, 240, 245, 247, 254, 247, 255, 256, 257,
1769  248, 249, 258, 240, 259, 240, 260, 261, 240, 250,
1770  251, 266, 252, 240, 240, 253, 267, 268, 269, 240,
1771  271, 270, 254, 262, 255, 256, 257, 270, 272, 258,
1772  273, 259, 262, 260, 261, 274, 262, 275, 266, 276,
1773  277, 278, 279, 267, 268, 269, 280, 271, 270, 281,
1774  262, 282, 0, 285, 270, 272, 286, 273, 0, 262,
1775  287, 284, 274, 262, 275, 288, 276, 277, 278, 279,
1776  290, 283, 284, 280, 290, 291, 281, 292, 282, 283,
1777 
1778  285, 293, 294, 286, 295, 283, 296, 287, 284, 297,
1779  293, 296, 288, 298, 299, 300, 301, 290, 283, 284,
1780  302, 290, 291, 303, 292, 304, 283, 305, 293, 294,
1781  306, 295, 283, 296, 307, 308, 297, 293, 296, 309,
1782  298, 299, 300, 301, 310, 311, 312, 302, 313, 314,
1783  303, 315, 304, 316, 305, 317, 318, 306, 319, 320,
1784  321, 307, 308, 322, 323, 324, 309, 325, 326, 327,
1785  326, 310, 311, 312, 328, 313, 314, 329, 315, 330,
1786  316, 331, 317, 318, 332, 319, 320, 321, 333, 334,
1787  322, 323, 324, 335, 325, 326, 327, 326, 336, 337,
1788 
1789  338, 328, 339, 340, 329, 341, 330, 342, 331, 343,
1790  344, 332, 345, 346, 347, 333, 334, 348, 349, 350,
1791  335, 351, 352, 353, 354, 336, 337, 338, 355, 339,
1792  340, 357, 341, 356, 342, 358, 343, 344, 359, 345,
1793  346, 347, 360, 356, 348, 349, 350, 361, 351, 352,
1794  353, 354, 362, 363, 364, 355, 365, 363, 357, 366,
1795  356, 367, 358, 369, 370, 359, 371, 372, 373, 360,
1796  356, 374, 375, 376, 361, 377, 378, 379, 380, 362,
1797  363, 364, 381, 365, 363, 382, 366, 383, 367, 385,
1798  369, 370, 386, 371, 372, 373, 384, 387, 374, 375,
1799 
1800  376, 388, 377, 378, 379, 380, 389, 384, 390, 381,
1801  391, 392, 382, 393, 383, 394, 385, 395, 396, 386,
1802  397, 398, 400, 384, 387, 401, 402, 403, 388, 404,
1803  405, 409, 410, 389, 384, 390, 411, 391, 392, 412,
1804  393, 413, 394, 414, 395, 396, 415, 397, 398, 400,
1805  416, 409, 401, 402, 403, 417, 404, 405, 409, 410,
1806  418, 419, 420, 411, 421, 422, 412, 423, 413, 424,
1807  414, 425, 426, 415, 427, 428, 426, 416, 409, 429,
1808  431, 430, 417, 426, 432, 433, 435, 418, 419, 420,
1809  436, 421, 422, 438, 423, 439, 424, 440, 425, 426,
1810 
1811  430, 427, 428, 426, 441, 444, 429, 431, 430, 445,
1812  426, 432, 433, 435, 446, 447, 448, 436, 449, 450,
1813  438, 451, 439, 452, 440, 453, 454, 430, 437, 455,
1814  437, 441, 444, 437, 456, 437, 445, 457, 437, 437,
1815  459, 446, 447, 448, 437, 449, 450, 460, 451, 461,
1816  452, 462, 453, 454, 463, 437, 455, 437, 464, 465,
1817  437, 456, 437, 466, 457, 437, 437, 459, 467, 468,
1818  469, 437, 470, 471, 460, 472, 461, 473, 462, 474,
1819  476, 463, 477, 471, 478, 464, 465, 479, 481, 482,
1820  466, 483, 484, 0, 0, 467, 468, 469, 486, 470,
1821 
1822  471, 0, 472, 487, 473, 488, 474, 476, 489, 477,
1823  471, 478, 491, 492, 479, 481, 482, 495, 483, 484,
1824  485, 485, 498, 499, 500, 486, 485, 501, 485, 502,
1825  487, 497, 488, 503, 504, 489, 497, 497, 505, 491,
1826  492, 506, 507, 508, 495, 509, 510, 485, 485, 498,
1827  499, 500, 511, 485, 501, 485, 502, 512, 497, 513,
1828  503, 504, 514, 497, 497, 505, 515, 517, 506, 507,
1829  508, 518, 509, 510, 519, 520, 521, 522, 523, 511,
1830  524, 527, 528, 529, 512, 532, 513, 533, 528, 514,
1831  534, 535, 536, 515, 517, 537, 538, 539, 518, 540,
1832 
1833  541, 519, 520, 521, 522, 523, 542, 524, 527, 528,
1834  529, 543, 532, 544, 533, 528, 545, 534, 535, 536,
1835  548, 549, 537, 538, 539, 550, 540, 541, 551, 553,
1836  554, 555, 556, 542, 557, 558, 559, 560, 543, 561,
1837  544, 562, 563, 545, 564, 565, 566, 548, 549, 569,
1838  570, 572, 550, 573, 571, 551, 553, 554, 555, 556,
1839  574, 557, 558, 559, 560, 575, 561, 571, 562, 563,
1840  576, 564, 565, 566, 577, 578, 569, 570, 572, 579,
1841  573, 571, 580, 581, 0, 0, 584, 574, 585, 587,
1842  588, 0, 575, 589, 571, 0, 0, 576, 0, 0,
1843 
1844  590, 577, 578, 583, 591, 0, 579, 594, 595, 580,
1845  581, 582, 583, 584, 596, 585, 587, 588, 583, 582,
1846  589, 597, 582, 582, 598, 582, 582, 590, 582, 599,
1847  583, 591, 582, 582, 594, 595, 600, 601, 582, 583,
1848  602, 596, 603, 604, 605, 583, 582, 606, 597, 582,
1849  582, 598, 582, 582, 607, 582, 599, 608, 609, 582,
1850  582, 610, 611, 600, 601, 612, 613, 602, 614, 603,
1851  604, 605, 616, 617, 606, 618, 619, 620, 621, 622,
1852  624, 607, 623, 626, 608, 609, 627, 629, 610, 611,
1853  623, 625, 612, 613, 630, 614, 628, 628, 631, 616,
1854 
1855  617, 633, 618, 619, 620, 621, 622, 624, 634, 623,
1856  626, 625, 635, 627, 629, 636, 637, 623, 625, 638,
1857  639, 630, 640, 628, 628, 631, 641, 642, 633, 644,
1858  644, 645, 646, 648, 649, 634, 650, 651, 625, 635,
1859  652, 653, 636, 637, 654, 655, 638, 639, 656, 640,
1860  657, 658, 659, 641, 642, 660, 644, 644, 645, 646,
1861  648, 649, 661, 650, 651, 662, 663, 652, 653, 664,
1862  665, 654, 655, 665, 666, 656, 667, 657, 658, 659,
1863  668, 669, 660, 671, 673, 674, 675, 676, 677, 661,
1864  672, 678, 662, 663, 679, 680, 664, 665, 681, 672,
1865 
1866  665, 666, 682, 667, 683, 672, 685, 668, 669, 686,
1867  671, 673, 674, 675, 676, 677, 687, 672, 678, 688,
1868  689, 679, 680, 692, 693, 681, 672, 694, 695, 682,
1869  696, 683, 672, 685, 697, 698, 686, 699, 700, 701,
1870  702, 697, 707, 687, 703, 708, 688, 689, 709, 710,
1871  692, 693, 711, 703, 694, 695, 712, 696, 713, 703,
1872  714, 697, 698, 715, 699, 700, 701, 702, 697, 707,
1873  716, 703, 708, 717, 718, 709, 710, 719, 720, 711,
1874  703, 721, 722, 712, 723, 713, 703, 714, 724, 725,
1875  715, 726, 727, 728, 729, 730, 731, 716, 733, 735,
1876 
1877  717, 718, 736, 0, 719, 720, 738, 740, 721, 722,
1878  741, 723, 0, 742, 743, 724, 725, 744, 726, 727,
1879  728, 729, 730, 731, 737, 733, 735, 745, 746, 736,
1880  737, 748, 749, 738, 740, 750, 751, 741, 752, 737,
1881  742, 743, 753, 754, 744, 755, 737, 756, 757, 759,
1882  753, 737, 760, 761, 745, 746, 762, 737, 748, 749,
1883  764, 765, 750, 751, 766, 752, 737, 767, 770, 753,
1884  754, 768, 755, 737, 756, 757, 759, 753, 771, 760,
1885  761, 772, 763, 762, 763, 768, 769, 764, 765, 773,
1886  774, 766, 775, 769, 767, 770, 776, 777, 768, 778,
1887 
1888  779, 781, 782, 783, 784, 771, 785, 786, 772, 763,
1889  787, 763, 768, 769, 788, 791, 773, 774, 792, 775,
1890  769, 793, 794, 776, 777, 795, 778, 779, 781, 782,
1891  783, 784, 796, 785, 786, 797, 798, 787, 799, 802,
1892  803, 788, 791, 804, 805, 792, 806, 807, 793, 794,
1893  808, 809, 795, 810, 811, 812, 813, 814, 815, 796,
1894  816, 817, 797, 798, 818, 799, 802, 803, 819, 820,
1895  804, 805, 821, 806, 807, 822, 823, 808, 809, 824,
1896  810, 811, 812, 813, 814, 815, 825, 816, 817, 826,
1897  827, 818, 828, 830, 831, 819, 820, 832, 836, 821,
1898 
1899  837, 838, 822, 823, 839, 840, 824, 843, 844, 846,
1900  847, 848, 849, 825, 850, 851, 826, 827, 852, 828,
1901  830, 831, 853, 855, 832, 836, 856, 837, 838, 857,
1902  858, 839, 840, 859, 843, 844, 846, 847, 848, 849,
1903  860, 850, 851, 862, 863, 852, 864, 865, 866, 853,
1904  855, 867, 868, 856, 869, 870, 857, 858, 871, 872,
1905  859, 873, 874, 875, 876, 877, 878, 860, 879, 881,
1906  862, 863, 883, 864, 865, 866, 0, 886, 867, 868,
1907  887, 869, 870, 888, 889, 871, 872, 890, 873, 874,
1908  875, 876, 877, 878, 885, 879, 881, 892, 893, 883,
1909 
1910  894, 895, 896, 885, 886, 897, 898, 887, 899, 900,
1911  888, 889, 901, 902, 890, 903, 904, 905, 906, 907,
1912  908, 885, 909, 910, 892, 893, 911, 894, 895, 896,
1913  885, 913, 897, 898, 914, 899, 900, 915, 916, 901,
1914  902, 917, 903, 904, 905, 906, 907, 908, 918, 909,
1915  910, 919, 922, 911, 923, 924, 925, 926, 913, 927,
1916  928, 914, 929, 930, 915, 916, 932, 934, 917, 936,
1917  937, 939, 940, 941, 942, 918, 943, 944, 919, 922,
1918  946, 923, 924, 925, 926, 949, 927, 928, 950, 929,
1919  930, 951, 952, 932, 934, 953, 936, 937, 939, 940,
1920 
1921  941, 942, 948, 943, 944, 954, 955, 946, 956, 957,
1922  948, 948, 949, 958, 959, 950, 960, 961, 951, 952,
1923  962, 963, 953, 964, 965, 966, 967, 968, 969, 948,
1924  970, 971, 954, 955, 972, 956, 957, 948, 948, 973,
1925  958, 959, 974, 960, 961, 975, 976, 962, 963, 977,
1926  964, 965, 966, 967, 968, 969, 979, 970, 971, 980,
1927  981, 972, 982, 983, 984, 985, 973, 983, 986, 974,
1928  987, 988, 975, 976, 989, 990, 977, 991, 992, 993,
1929  994, 995, 996, 979, 997, 998, 980, 981, 999, 982,
1930  983, 984, 985, 1001, 983, 986, 1002, 987, 988, 1003,
1931 
1932  1004, 989, 990, 1005, 991, 992, 993, 994, 995, 996,
1933  1006, 997, 998, 1007, 1011, 999, 1012, 1013, 1014, 1015,
1934  1001, 1016, 1017, 1002, 1018, 1020, 1003, 1004, 1021, 1020,
1935  1005, 1022, 1023, 1024, 1025, 1026, 1027, 1006, 1028, 1029,
1936  1007, 1011, 1030, 1012, 1013, 1014, 1015, 1031, 1016, 1017,
1937  1032, 1018, 1020, 1033, 1034, 1021, 1020, 1036, 1022, 1023,
1938  1024, 1025, 1026, 1027, 1037, 1028, 1029, 1038, 1039, 1030,
1939  1040, 1041, 1042, 1044, 1031, 1047, 1049, 1032, 1050, 1051,
1940  1033, 1034, 1054, 1055, 1036, 1056, 1057, 1059, 1060, 1061,
1941  1062, 1037, 1063, 1064, 1038, 1039, 1065, 1040, 1041, 1042,
1942 
1943  1044, 1067, 1047, 1049, 1068, 1050, 1051, 1069, 1070, 1054,
1944  1055, 1072, 1056, 1057, 1059, 1060, 1061, 1062, 1073, 1063,
1945  1064, 1075, 1076, 1065, 1077, 1078, 1079, 1080, 1067, 1082,
1946  1081, 1068, 1083, 1084, 1069, 1070, 1081, 1085, 1072, 1088,
1947  1090, 1091, 1092, 1094, 1095, 1073, 1096, 1097, 1075, 1076,
1948  1098, 1077, 1078, 1079, 1080, 1099, 1082, 1081, 1100, 1083,
1949  1084, 1101, 1102, 1081, 1085, 1103, 1088, 1090, 1091, 1092,
1950  1094, 1095, 1104, 1096, 1097, 1105, 1107, 1098, 1108, 1106,
1951  1109, 1110, 1099, 1111, 1106, 1100, 1113, 1114, 1101, 1102,
1952  1106, 1115, 1103, 1117, 1118, 1106, 1119, 1120, 1121, 1104,
1953 
1954  1122, 1123, 1105, 1107, 1125, 1108, 1106, 1109, 1110, 1124,
1955  1111, 1106, 1126, 1113, 1114, 1124, 1127, 1106, 1115, 1128,
1956  1117, 1118, 1106, 1119, 1120, 1121, 1130, 1122, 1123, 1131,
1957  1132, 1125, 1133, 1134, 1136, 1138, 1124, 1139, 1141, 1126,
1958  1142, 1146, 1124, 1127, 1147, 1148, 1128, 1149, 1150, 1151,
1959  1152, 1153, 1154, 1130, 1155, 1156, 1131, 1132, 1159, 1133,
1960  1134, 1136, 1138, 1160, 1139, 1141, 1161, 1142, 1146, 1162,
1961  1163, 1147, 1148, 1164, 1149, 1150, 1151, 1152, 1153, 1154,
1962  1165, 1155, 1156, 1166, 1167, 1159, 1168, 1169, 1170, 1171,
1963  1160, 1172, 1173, 1161, 1174, 1175, 1162, 1163, 1176, 1177,
1964 
1965  1164, 1179, 1181, 1183, 1184, 1185, 1187, 1165, 1190, 1191,
1966  1166, 1167, 1192, 1168, 1169, 1170, 1171, 1193, 1172, 1173,
1967  1194, 1174, 1175, 1195, 1196, 1176, 1177, 1197, 1179, 1181,
1968  1183, 1184, 1185, 1187, 1199, 1190, 1191, 1200, 1201, 1192,
1969  1202, 1203, 1207, 1208, 1193, 1209, 1210, 1194, 1211, 1214,
1970  1195, 1196, 1215, 1216, 1197, 1217, 1218, 1219, 1220, 1221,
1971  1222, 1199, 1223, 1224, 1200, 1201, 1225, 1202, 1203, 1207,
1972  1208, 1226, 1209, 1210, 1227, 1211, 1214, 1228, 1229, 1215,
1973  1216, 1230, 1217, 1218, 1219, 1220, 1221, 1222, 1231, 1223,
1974  1224, 1232, 1233, 1225, 1234, 1235, 1236, 1237, 1226, 1241,
1975 
1976  1242, 1227, 1244, 1245, 1228, 1229, 1246, 1247, 1230, 1248,
1977  1249, 1251, 1252, 1253, 1254, 1231, 1255, 1256, 1232, 1233,
1978  1257, 1234, 1235, 1236, 1237, 1258, 1241, 1242, 1259, 1244,
1979  1245, 1261, 1262, 1246, 1247, 1263, 1248, 1249, 1251, 1252,
1980  1253, 1254, 1264, 1255, 1256, 1265, 1266, 1257, 1267, 1268,
1981  1269, 1271, 1258, 1272, 1274, 1259, 1275, 1276, 1261, 1262,
1982  1277, 1278, 1263, 1280, 1281, 1282, 1284, 1285, 1286, 1264,
1983  1287, 1288, 1265, 1266, 1290, 1267, 1268, 1269, 1271, 1291,
1984  1272, 1274, 1292, 1275, 1276, 1293, 1294, 1277, 1278, 1295,
1985  1280, 1281, 1282, 1284, 1285, 1286, 1296, 1287, 1288, 1298,
1986 
1987  1299, 1290, 1300, 1305, 1301, 1306, 1291, 1301, 1307, 1292,
1988  1309, 1310, 1293, 1294, 1313, 1314, 1295, 1315, 1316, 1317,
1989  1318, 1319, 1320, 1296, 1322, 1323, 1298, 1299, 1325, 1300,
1990  1305, 1301, 1306, 1326, 1301, 1307, 1327, 1309, 1310, 1328,
1991  1329, 1313, 1314, 1330, 1315, 1316, 1317, 1318, 1319, 1320,
1992  1333, 1322, 1323, 1334, 1336, 1325, 1338, 1339, 1341, 1343,
1993  1326, 1344, 1346, 1327, 1347, 1348, 1328, 1329, 1350, 1351,
1994  1330, 1353, 1354, 1355, 1356, 1358, 1361, 1333, 1362, 1364,
1995  1334, 1336, 1368, 1338, 1339, 1341, 1343, 1369, 1344, 1346,
1996  1371, 1347, 1348, 1372, 1373, 1350, 1351, 1374, 1353, 1354,
1997 
1998  1355, 1356, 1358, 1361, 1375, 1362, 1364, 1376, 1377, 1368,
1999  1378, 1380, 1381, 1382, 1369, 1383, 1384, 1371, 1385, 1386,
2000  1372, 1373, 1387, 1388, 1374, 1389, 1393, 1394, 1396, 1397,
2001  1400, 1375, 1402, 1403, 1376, 1377, 1406, 1378, 1380, 1381,
2002  1382, 1407, 1383, 1384, 1408, 1385, 1386, 1409, 1411, 1387,
2003  1388, 1412, 1389, 1393, 1394, 1396, 1397, 1400, 1413, 1402,
2004  1403, 1414, 1415, 1406, 1416, 1417, 1418, 1419, 1407, 1420,
2005  1422, 1408, 1423, 1424, 1409, 1411, 1426, 1427, 1412, 1428,
2006  1429, 1430, 1431, 1432, 1434, 1413, 1435, 1436, 1414, 1415,
2007  1437, 1416, 1417, 1418, 1419, 1439, 1420, 1422, 1441, 1423,
2008 
2009  1424, 1443, 1444, 1426, 1427, 1448, 1428, 1429, 1430, 1431,
2010  1432, 1434, 1449, 1435, 1436, 1450, 1454, 1437, 1456, 1458,
2011  1461, 1464, 1439, 1465, 1466, 1441, 1465, 1469, 1443, 1444,
2012  1470, 1472, 1448, 1473, 1474, 1477, 1478, 1479, 1480, 1449,
2013  1481, 1482, 1450, 1454, 1485, 1456, 1458, 1461, 1464, 1486,
2014  1465, 1466, 1488, 1465, 1469, 1490, 1491, 1470, 1472, 1492,
2015  1473, 1474, 1477, 1478, 1479, 1480, 1493, 1481, 1482, 1494,
2016  1495, 1485, 1496, 1497, 1500, 1501, 1486, 1502, 1503, 1488,
2017  1504, 1505, 1490, 1491, 1506, 1507, 1492, 1508, 1509, 1510,
2018  1511, 1513, 1514, 1493, 1515, 1516, 1494, 1495, 1517, 1496,
2019 
2020  1497, 1500, 1501, 1519, 1502, 1503, 1520, 1504, 1505, 1522,
2021  1523, 1506, 1507, 1524, 1508, 1509, 1510, 1511, 1513, 1514,
2022  1526, 1515, 1516, 1527, 1529, 1517, 1530, 1531, 1532, 1533,
2023  1519, 1534, 1535, 1520, 1536, 1537, 1522, 1523, 1538, 1539,
2024  1524, 1541, 1542, 1544, 1545, 1546, 1530, 1526, 1547, 1548,
2025  1527, 1529, 1549, 1530, 1531, 1532, 1533, 1550, 1534, 1535,
2026  1552, 1536, 1537, 1553, 1554, 1538, 1539, 1555, 1541, 1542,
2027  1544, 1545, 1546, 1530, 1556, 1547, 1548, 1557, 1558, 1549,
2028  1559, 1561, 1562, 1564, 1550, 1565, 1566, 1552, 1567, 1568,
2029  1553, 1554, 1569, 1570, 1555, 1573, 1574, 1575, 1577, 1578,
2030 
2031  1579, 1556, 1580, 1581, 1557, 1558, 1582, 1559, 1561, 1562,
2032  1564, 1583, 1565, 1566, 1584, 1567, 1568, 1586, 1587, 1569,
2033  1570, 1589, 1573, 1574, 1575, 1577, 1578, 1579, 1590, 1580,
2034  1581, 1591, 1592, 1582, 1594, 1596, 1597, 1598, 1583, 1600,
2035  1602, 1584, 1603, 1604, 1586, 1587, 1605, 1606, 1589, 1607,
2036  1608, 1609, 1611, 1612, 1614, 1590, 1615, 1618, 1591, 1592,
2037  1620, 1594, 1596, 1597, 1598, 1621, 1600, 1602, 1622, 1603,
2038  1604, 1623, 1624, 1605, 1606, 1626, 1607, 1608, 1609, 1611,
2039  1612, 1614, 1628, 1615, 1618, 1629, 1631, 1620, 1632, 1636,
2040  1637, 1638, 1621, 1639, 1640, 1622, 1641, 1642, 1623, 1624,
2041 
2042  1643, 1644, 1626, 1645, 1646, 1647, 1648, 1651, 1654, 1628,
2043  1655, 1656, 1629, 1631, 1658, 1632, 1636, 1637, 1638, 1659,
2044  1639, 1640, 1660, 1641, 1642, 1661, 1662, 1643, 1644, 1664,
2045  1645, 1646, 1647, 1648, 1651, 1654, 1665, 1655, 1656, 1666,
2046  1669, 1658, 1670, 1671, 1672, 1676, 1659, 1677, 1678, 1660,
2047  1679, 1680, 1661, 1662, 1681, 1682, 1664, 1688, 1690, 1693,
2048  1694, 1695, 1696, 1665, 1697, 1698, 1666, 1669, 1699, 1670,
2049  1671, 1672, 1676, 1700, 1677, 1678, 1702, 1679, 1680, 1703,
2050  1704, 1681, 1682, 1708, 1688, 1690, 1693, 1694, 1695, 1696,
2051  1709, 1697, 1698, 1710, 1712, 1699, 1713, 1714, 1715, 1716,
2052 
2053  1700, 1717, 0, 1702, 0, 0, 1703, 1704, 0, 0,
2054  1708, 0, 0, 0, 0, 0, 0, 1709, 0, 0,
2055  1710, 1712, 0, 1713, 1714, 1715, 1716, 0, 1717, 1721,
2056  1721, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
2057  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
2058  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
2059  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
2060  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
2061  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
2062  1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
2063 
2064  1720, 1720
2065  } ;
2066 
2068  { 0,
2069  88, 92, 93, 101, 109, 117, 125, 133, 141, 149,
2070  157, 165, 173, 181, 189, 197, 205, 213, 221, 229,
2071  237, 245, 253, 261, 269, 277, 285, 293, 301, 309,
2072  317, 325, 333, 341, 349, 358, 366, 374, 382, 390,
2073  398, 406, 414, 422, 430, 438, 446, 454, 462, 470,
2074  478, 486, 494, 502, 510, 518, 526, 535, 543, 551,
2075  559, 567, 575, 584, 592, 600, 608, 616, 624, 632,
2076  640, 648, 656, 664, 672, 680, 688, 696, 704, 713,
2077  722, 730, 738, 746, 754, 762, 770, 778, 786, 794,
2078  802, 810, 818, 826, 834, 842, 850, 858, 866, 874,
2079 
2080  882, 890, 898, 906, 914, 922, 930, 938, 946, 954,
2081  962, 970, 978, 986, 994, 1002, 1010, 1018, 1027, 1035,
2082  1044, 1052, 1060, 1068, 1076, 1084, 1092, 1100, 1108, 1116,
2083  1124, 1132, 1140, 1148, 1156, 1164, 1172, 1180, 1188, 1196,
2084  1205, 1213, 1221, 1229, 1238, 1246, 1254, 1262, 1270, 1278,
2085  1286, 1294, 1302, 1310, 1318, 1327, 1335, 1343, 1351, 1360,
2086  1369, 1377, 1385, 1393, 1401, 1410, 1418, 1426, 1434, 1442,
2087  1451, 1459, 1467, 1476, 1484, 1492, 1500, 1509, 1517, 1525,
2088  1533, 1541, 1549, 1558, 1567, 1575, 1584, 1592, 1600, 1608,
2089  1617, 1625, 1633, 1641, 1649, 1657, 1665, 1673, 1681, 1689,
2090 
2091  1697, 1705, 1713, 1721, 1729, 1737, 1745, 1753, 1761, 1770,
2092  1779, 1787, 1795, 1803, 1811, 1819, 1827, 1835, 1843, 1851,
2093  1859, 1867, 1876, 1884, 1893, 1901, 1909, 1917, 1925, 1934,
2094  1943, 1951, 1960, 1968, 1977, 1985, 1993, 2001, 2009, 2017,
2095  2025, 2034, 2042, 2050, 2058, 2066, 2074, 2082, 2091, 2099,
2096  2107, 2115, 2123, 2131, 2139, 2147, 2155, 2163, 2171, 2179,
2097  2187, 2195, 2203, 2211, 2219, 2227, 2235, 2243, 2251, 2259,
2098  2267, 2275, 2283, 2291, 2299, 2307, 2315, 2324, 2332, 2341,
2099  2349, 2357, 2366, 2374, 2382, 2390, 2399, 2407, 2415, 2423,
2100  2433, 2439, 2443, 2447, 2454, 2459, 2465
2101 
2102  } ;
2103 
2104 #define REJECT \
2105 { \
2106 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \
2107 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
2108 ++(yy_lp); \
2109 goto find_rule; \
2110 }
2111 
2112 #define yymore() yymore_used_but_not_detected
2113 #define YY_MORE_ADJ 0
2114 #define YY_RESTORE_YY_MORE_OFFSET
2115 #line 1 "Scanner.ll"
2116 /*******************************************************************************
2117 * TORC - Copyright 2010 University of Southern California. All Rights Reserved.
2118 *
2119 * FILE : Scanner.ll
2120 *
2121 * DATE : 08-July-2010
2122 *
2123 * DESCRIPTION : Define the EDIF Flex lexical scanner
2124 *
2125 * REVISION HISTORY:
2126 *
2127 * SI REVISION AUTHOR CHANGES PRs
2128 *[0] Initial Version Niladri
2129 *
2130 *******************************************************************************/
2131 #line 18 "Scanner.ll"
2132 
2133 #include <string>
2134 
2138 #include "torc/generic/edif/Parser.h"
2142 
2143 /* import the parser's Token type into a local typedef */
2146 
2147 /* By default yylex returns int, we use TokenType. Unfortunately yyterminate
2148  * by default returns 0, which is not of TokenType. */
2149 #define yyterminate() return Token::END
2150 
2151 /* This disables inclusion of unistd.h, which is not available under Visual C++
2152  * on Win32. The C++ scanner uses STL streams instead. */
2153 #define YY_NO_UNISTD_H
2154 
2155 /*** Flex Declarations and Options ***/
2156 /* enable c++ scanner class generation */
2157 /* the manual says "somewhat more optimized" */
2158 /* enable scanner to generate debug output. disable this for release
2159  * versions. */
2160 /* no support for include files is planned */
2161 /* enables the use of start condition stacks */
2162 /* instructs flex to generate a case-insensitive scanner */
2163 /* The following paragraph suffices to track locations accurately. Each time
2164  * yylex is invoked, the begin position is moved onto the end position. */
2165 #line 68 "Scanner.ll"
2166 #define YY_USER_ACTION { yylloc->columns(yyleng); addToBuffer(yytext); \
2167  yylloc->columns(yyleng); addToUserDataBuffer(yytext); \
2168  }
2169 #line 2168 "lex.Edif.cc"
2170 
2171 #define INITIAL 0
2172 
2173 #ifndef YY_NO_UNISTD_H
2174 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2175  * down here because we want the user's section 1 to have been scanned first.
2176  * The user has a chance to override it with an option.
2177  */
2178 /* %if-c-only */
2179 /* %endif */
2180 /* %if-c++-only */
2181 #include <unistd.h>
2182 /* %endif */
2183 #endif
2184 
2185 #ifndef YY_EXTRA_TYPE
2186 #define YY_EXTRA_TYPE void *
2187 #endif
2188 
2189 /* %if-c-only Reentrant structure and macros (non-C++). */
2190 /* %if-reentrant */
2191 /* %if-c-only */
2192 /* %endif */
2193 /* %if-reentrant */
2194 /* %endif */
2195 /* %endif End reentrant structures and macros. */
2196 /* %if-bison-bridge */
2197 /* %endif */
2198 /* %not-for-header */
2199 
2200 /* %ok-for-header */
2201 
2202 /* %endif */
2203 
2204 #ifndef yytext_ptr
2205 static void yy_flex_strncpy (char *,yyconst char *,int );
2206 #endif
2207 
2208 #ifdef YY_NEED_STRLEN
2209 static int yy_flex_strlen (yyconst char * );
2210 #endif
2211 
2212 #ifndef YY_NO_INPUT
2213 /* %if-c-only Standard (non-C++) definition */
2214 /* %not-for-header */
2215 
2216 /* %ok-for-header */
2217 
2218 /* %endif */
2219 #endif
2220 
2221 /* %if-c-only */
2222 /* %endif */
2223 
2224 /* Amount of stuff to slurp up with each read. */
2225 #ifndef YY_READ_BUF_SIZE
2226 #define YY_READ_BUF_SIZE 8192
2227 #endif
2228 
2229 /* Copy whatever the last rule matched to the standard output. */
2230 #ifndef ECHO
2231 /* %if-c-only Standard (non-C++) definition */
2232 /* %endif */
2233 /* %if-c++-only C++ definition */
2234 #define ECHO LexerOutput(yytext, yyleng)
2235 /* %endif */
2236 #endif
2237 
2238 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2239  * is returned in "result".
2240  */
2241 #ifndef YY_INPUT
2242 #define YY_INPUT(buf,result,max_size) \
2243 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
2244 \
2245 /* %if-c++-only C++ definition \ */\
2246  if ((result = LexerInput((char *) buf, max_size)) < 0 ) \
2247  YY_FATAL_ERROR("input in flex scanner failed");
2248 /* %endif */
2249 
2250 #endif
2251 
2252 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2253  * we don't want an extra ';' after the "return" because that will cause
2254  * some compilers to complain about unreachable statements.
2255  */
2256 #ifndef yyterminate
2257 #define yyterminate() return YY_NULL
2258 #endif
2259 
2260 /* Number of entries by which start-condition stack grows. */
2261 #ifndef YY_START_STACK_INCR
2262 #define YY_START_STACK_INCR 25
2263 #endif
2264 
2265 /* Report a fatal error. */
2266 #ifndef YY_FATAL_ERROR
2267 /* %if-c-only */
2268 /* %endif */
2269 /* %if-c++-only */
2270 #define YY_FATAL_ERROR(msg) LexerError(msg)
2271 /* %endif */
2272 #endif
2273 
2274 /* %if-tables-serialization structures and prototypes */
2275 /* %not-for-header */
2276 
2277 /* %ok-for-header */
2278 
2279 /* %not-for-header */
2280 
2281 /* %tables-yydmap generated elements */
2282 /* %endif */
2283 /* end tables serialization structures and prototypes */
2284 
2285 /* %ok-for-header */
2286 
2287 /* Default declaration of generated scanner - a define so the user can
2288  * easily add parameters.
2289  */
2290 #ifndef YY_DECL
2291 #define YY_DECL_IS_OURS 1
2292 /* %if-c-only Standard (non-C++) definition */
2293 /* %endif */
2294 /* %if-c++-only C++ definition */
2295 #define YY_DECL int yyFlexLexer::yylex()
2296 /* %endif */
2297 #endif /* !YY_DECL */
2298 
2299 /* Code executed at the beginning of each rule, after yytext and yyleng
2300  * have been set up.
2301  */
2302 #ifndef YY_USER_ACTION
2303 #define YY_USER_ACTION
2304 #endif
2305 
2306 /* Code executed at the end of each rule. */
2307 #ifndef YY_BREAK
2308 #define YY_BREAK break;
2309 #endif
2310 
2311 /* %% [6.0] YY_RULE_SETUP definition goes here */
2312 #define YY_RULE_SETUP \
2313  YY_USER_ACTION
2314 
2315 /* %not-for-header */
2316 
2317 /** The main scanner function which does all the work.
2318  */
2319 YY_DECL
2320 {
2322  register char *yy_cp, *yy_bp;
2323  register int yy_act;
2324 
2325 /* %% [7.0] user's declarations go here */
2326 #line 80 "Scanner.ll"
2327 
2328 
2329  /* code to place at the beginning of yylex() */
2330 
2331  // reset location
2332  yylloc->step();
2333 
2334 
2335 #line 2334 "lex.Edif.cc"
2336 
2337  if (!(yy_init))
2338  {
2339  (yy_init) = 1;
2340 
2341 #ifdef YY_USER_INIT
2342  YY_USER_INIT;
2343 #endif
2344 
2345  /* Create the reject buffer large enough to save one state per allowed character. */
2346  if (! (yy_state_buf))
2347  (yy_state_buf) = (yy_state_type *)Edifalloc(YY_STATE_BUF_SIZE );
2348  if (! (yy_state_buf))
2349  YY_FATAL_ERROR("out of dynamic memory in yylex()");
2350 
2351  if (! (yy_start))
2352  (yy_start) = 1; /* first start state */
2353 
2354  if (! yyin)
2355 /* %if-c-only */
2356 /* %endif */
2357 /* %if-c++-only */
2358  yyin = & std::cin;
2359 /* %endif */
2360 
2361  if (! yyout)
2362 /* %if-c-only */
2363 /* %endif */
2364 /* %if-c++-only */
2365  yyout = & std::cout;
2366 /* %endif */
2367 
2368  if (! YY_CURRENT_BUFFER) {
2369  yyensure_buffer_stack ();
2371  yy_create_buffer(yyin, YY_BUF_SIZE);
2372  }
2373 
2374  yy_load_buffer_state();
2375  }
2376 
2377  while (1) /* loops until end-of-file is reached */
2378  {
2379 /* %% [8.0] yymore()-related code goes here */
2380  yy_cp = (yy_c_buf_p);
2381 
2382  /* Support of yytext. */
2383  *yy_cp = (yy_hold_char);
2384 
2385  /* yy_bp points to the position in yy_ch_buf of the start of
2386  * the current run.
2387  */
2388  yy_bp = yy_cp;
2389 
2390 /* %% [9.0] code to set up and find next match goes here */
2391  yy_current_state = (yy_start);
2392 
2393  (yy_state_ptr) = (yy_state_buf);
2394  *(yy_state_ptr)++ = yy_current_state;
2395 
2396 yy_match:
2397  do
2398  {
2399  register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2400  while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state)
2401  {
2402  yy_current_state = (int) yy_def[yy_current_state];
2403  if (yy_current_state >= 1721)
2404  yy_c = yy_meta[(unsigned int) yy_c];
2405  }
2406  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2407  *(yy_state_ptr)++ = yy_current_state;
2408  ++yy_cp;
2409  }
2410  while (yy_current_state != 1720);
2411 
2412 yy_find_action:
2413 /* %% [10.0] code to find the action number goes here */
2414  yy_current_state = *--(yy_state_ptr);
2415  (yy_lp) = yy_accept[yy_current_state];
2416 find_rule: /* we branch to this label when backing up */
2417  for (; ;) /* until we find what rule we matched */
2418  {
2419  if ((yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1])
2420  {
2421  yy_act = yy_acclist[(yy_lp)];
2422  {
2423  (yy_full_match) = yy_cp;
2424  break;
2425  }
2426  }
2427  --yy_cp;
2428  yy_current_state = *--(yy_state_ptr);
2429  (yy_lp) = yy_accept[yy_current_state];
2430  }
2431 
2433 
2434 /* %% [11.0] code for yylineno update goes here */
2435 
2436 do_action: /* This label is used only to access EOF actions. */
2437 
2438 /* %% [12.0] debug code goes here */
2439  if (yy_flex_debug)
2440  {
2441  if (yy_act == 0)
2442  std::cerr << "--scanner backing up\n";
2443  else if (yy_act < 298)
2444  std::cerr << "--accepting rule at line " << yy_rule_linenum[yy_act] <<
2445  "(\"" << yytext << "\")\n";
2446  else if (yy_act == 298)
2447  std::cerr << "--accepting default rule (\"" << yytext << "\")\n";
2448  else if (yy_act == 299)
2449  std::cerr << "--(end of buffer or a NUL)\n";
2450  else
2451  std::cerr << "--EOF (start condition " << YY_START << ")\n";
2452  }
2453 
2454  switch (yy_act)
2455  { /* beginning of action switch */
2456 /* %% [13.0] actions go here */
2457 case 1:
2459 #line 88 "Scanner.ll"
2460 {
2461  setIsIdContext(false);
2462  return Token::LBKT;
2463  }
2464  YY_BREAK
2465 case 2:
2467 #line 92 "Scanner.ll"
2468 { return Token::RBKT; }
2469  YY_BREAK
2470 case 3:
2472 #line 93 "Scanner.ll"
2473 {
2474  if(getIsIdContext())
2475  {
2476  mIsIdAlreadyAdded = true;
2477  REJECT;
2478  }
2479  return Token::ANGLE;
2480  }
2481  YY_BREAK
2482 case 4:
2484 #line 101 "Scanner.ll"
2485 {
2486  if(getIsIdContext())
2487  {
2488  mIsIdAlreadyAdded = true;
2489  REJECT;
2490  }
2491  return Token::BEHAVIOR;
2492  }
2493  YY_BREAK
2494 case 5:
2496 #line 109 "Scanner.ll"
2497 {
2498  if(getIsIdContext())
2499  {
2500  mIsIdAlreadyAdded = true;
2501  REJECT;
2502  }
2503  return Token::CALCULATED;
2504  }
2505  YY_BREAK
2506 case 6:
2508 #line 117 "Scanner.ll"
2509 {
2510  if(getIsIdContext())
2511  {
2512  mIsIdAlreadyAdded = true;
2513  REJECT;
2514  }
2515  return Token::CAPACITANCE;
2516  }
2517  YY_BREAK
2518 case 7:
2520 #line 125 "Scanner.ll"
2521 {
2522  if(getIsIdContext())
2523  {
2524  mIsIdAlreadyAdded = true;
2525  REJECT;
2526  }
2527  return Token::CENTERCENTER;
2528  }
2529  YY_BREAK
2530 case 8:
2532 #line 133 "Scanner.ll"
2533 {
2534  if(getIsIdContext())
2535  {
2536  mIsIdAlreadyAdded = true;
2537  REJECT;
2538  }
2539  return Token::CENTERLEFT;
2540  }
2541  YY_BREAK
2542 case 9:
2544 #line 141 "Scanner.ll"
2545 {
2546  if(getIsIdContext())
2547  {
2548  mIsIdAlreadyAdded = true;
2549  REJECT;
2550  }
2551  return Token::CENTERRIGHT;
2552  }
2553  YY_BREAK
2554 case 10:
2556 #line 149 "Scanner.ll"
2557 {
2558  if(getIsIdContext())
2559  {
2560  mIsIdAlreadyAdded = true;
2561  REJECT;
2562  }
2563  return Token::CHARGE;
2564  }
2565  YY_BREAK
2566 case 11:
2568 #line 157 "Scanner.ll"
2569 {
2570  if(getIsIdContext())
2571  {
2572  mIsIdAlreadyAdded = true;
2573  REJECT;
2574  }
2575  return Token::CONDUCTANCE;
2576  }
2577  YY_BREAK
2578 case 12:
2580 #line 165 "Scanner.ll"
2581 {
2582  if(getIsIdContext())
2583  {
2584  mIsIdAlreadyAdded = true;
2585  REJECT;
2586  }
2587  return Token::CURRENT;
2588  }
2589  YY_BREAK
2590 case 13:
2592 #line 173 "Scanner.ll"
2593 {
2594  if(getIsIdContext())
2595  {
2596  mIsIdAlreadyAdded = true;
2597  REJECT;
2598  }
2599  return Token::DISTANCE;
2600  }
2601  YY_BREAK
2602 case 14:
2604 #line 181 "Scanner.ll"
2605 {
2606  if(getIsIdContext())
2607  {
2608  mIsIdAlreadyAdded = true;
2609  REJECT;
2610  }
2611  return Token::DOCUMENT;
2612  }
2613  YY_BREAK
2614 case 15:
2616 #line 189 "Scanner.ll"
2617 {
2618  if(getIsIdContext())
2619  {
2620  mIsIdAlreadyAdded = true;
2621  REJECT;
2622  }
2623  return Token::ENERGY;
2624  }
2625  YY_BREAK
2626 case 16:
2628 #line 197 "Scanner.ll"
2629 {
2630  if(getIsIdContext())
2631  {
2632  mIsIdAlreadyAdded = true;
2633  REJECT;
2634  }
2635  return Token::EXTEND;
2636  }
2637  YY_BREAK
2638 case 17:
2640 #line 205 "Scanner.ll"
2641 {
2642  if(getIsIdContext())
2643  {
2644  mIsIdAlreadyAdded = true;
2645  REJECT;
2646  }
2647  return Token::FLUX;
2648  }
2649  YY_BREAK
2650 case 18:
2652 #line 213 "Scanner.ll"
2653 {
2654  if(getIsIdContext())
2655  {
2656  mIsIdAlreadyAdded = true;
2657  REJECT;
2658  }
2659  return Token::FREQUENCY;
2660  }
2661  YY_BREAK
2662 case 19:
2664 #line 221 "Scanner.ll"
2665 {
2666  if(getIsIdContext())
2667  {
2668  mIsIdAlreadyAdded = true;
2669  REJECT;
2670  }
2671  return Token::GENERIC;
2672  }
2673  YY_BREAK
2674 case 20:
2676 #line 229 "Scanner.ll"
2677 {
2678  if(getIsIdContext())
2679  {
2680  mIsIdAlreadyAdded = true;
2681  REJECT;
2682  }
2683  return Token::GRAPHIC;
2684  }
2685  YY_BREAK
2686 case 21:
2688 #line 237 "Scanner.ll"
2689 {
2690  if(getIsIdContext())
2691  {
2692  mIsIdAlreadyAdded = true;
2693  REJECT;
2694  }
2695  return Token::INDUCTANCE;
2696  }
2697  YY_BREAK
2698 case 22:
2700 #line 245 "Scanner.ll"
2701 {
2702  if(getIsIdContext())
2703  {
2704  mIsIdAlreadyAdded = true;
2705  REJECT;
2706  }
2707  return Token::INOUT;
2708  }
2709  YY_BREAK
2710 case 23:
2712 #line 253 "Scanner.ll"
2713 {
2714  if(getIsIdContext())
2715  {
2716  mIsIdAlreadyAdded = true;
2717  REJECT;
2718  }
2719  return Token::INPUT;
2720  }
2721  YY_BREAK
2722 case 24:
2724 #line 261 "Scanner.ll"
2725 {
2726  if(getIsIdContext())
2727  {
2728  mIsIdAlreadyAdded = true;
2729  REJECT;
2730  }
2731  return Token::LOGICMODEL;
2732  }
2733  YY_BREAK
2734 case 25:
2736 #line 269 "Scanner.ll"
2737 {
2738  if(getIsIdContext())
2739  {
2740  mIsIdAlreadyAdded = true;
2741  REJECT;
2742  }
2743  return Token::LOWERCENTER;
2744  }
2745  YY_BREAK
2746 case 26:
2748 #line 277 "Scanner.ll"
2749 {
2750  if(getIsIdContext())
2751  {
2752  mIsIdAlreadyAdded = true;
2753  REJECT;
2754  }
2755  return Token::LOWERLEFT;
2756  }
2757  YY_BREAK
2758 case 27:
2760 #line 285 "Scanner.ll"
2761 {
2762  if(getIsIdContext())
2763  {
2764  mIsIdAlreadyAdded = true;
2765  REJECT;
2766  }
2767  return Token::LOWERRIGHT;
2768  }
2769  YY_BREAK
2770 case 28:
2772 #line 293 "Scanner.ll"
2773 {
2774  if(getIsIdContext())
2775  {
2776  mIsIdAlreadyAdded = true;
2777  REJECT;
2778  }
2779  return Token::MASKLAYOUT;
2780  }
2781  YY_BREAK
2782 case 29:
2784 #line 301 "Scanner.ll"
2785 {
2786  if(getIsIdContext())
2787  {
2788  mIsIdAlreadyAdded = true;
2789  REJECT;
2790  }
2791  return Token::MASS;
2792  }
2793  YY_BREAK
2794 case 30:
2796 #line 309 "Scanner.ll"
2797 {
2798  if(getIsIdContext())
2799  {
2800  mIsIdAlreadyAdded = true;
2801  REJECT;
2802  }
2803  return Token::MEASURED;
2804  }
2805  YY_BREAK
2806 case 31:
2808 #line 317 "Scanner.ll"
2809 {
2810  if(getIsIdContext())
2811  {
2812  mIsIdAlreadyAdded = true;
2813  REJECT;
2814  }
2815  return Token::MX;
2816  }
2817  YY_BREAK
2818 case 32:
2820 #line 325 "Scanner.ll"
2821 {
2822  if(getIsIdContext())
2823  {
2824  mIsIdAlreadyAdded = true;
2825  REJECT;
2826  }
2827  return Token::MXR90;
2828  }
2829  YY_BREAK
2830 case 33:
2832 #line 333 "Scanner.ll"
2833 {
2834  if(getIsIdContext())
2835  {
2836  mIsIdAlreadyAdded = true;
2837  REJECT;
2838  }
2839  return Token::MY;
2840  }
2841  YY_BREAK
2842 case 34:
2844 #line 341 "Scanner.ll"
2845 {
2846  if(getIsIdContext())
2847  {
2848  mIsIdAlreadyAdded = true;
2849  REJECT;
2850  }
2851  return Token::MYR90;
2852  }
2853  YY_BREAK
2854 case 35:
2856 #line 349 "Scanner.ll"
2857 {
2858  if(getIsIdContext())
2859  {
2860  mIsIdAlreadyAdded = true;
2861  REJECT;
2862  }
2863  setIsIdContext(true);
2864  return Token::NETLIST;
2865  }
2866  YY_BREAK
2867 case 36:
2869 #line 358 "Scanner.ll"
2870 {
2871  if(getIsIdContext())
2872  {
2873  mIsIdAlreadyAdded = true;
2874  REJECT;
2875  }
2876  return Token::OUTPUT;
2877  }
2878  YY_BREAK
2879 case 37:
2881 #line 366 "Scanner.ll"
2882 {
2883  if(getIsIdContext())
2884  {
2885  mIsIdAlreadyAdded = true;
2886  REJECT;
2887  }
2888  return Token::PCBLAYOUT;
2889  }
2890  YY_BREAK
2891 case 38:
2893 #line 374 "Scanner.ll"
2894 {
2895  if(getIsIdContext())
2896  {
2897  mIsIdAlreadyAdded = true;
2898  REJECT;
2899  }
2900  return Token::POWER;
2901  }
2902  YY_BREAK
2903 case 39:
2905 #line 382 "Scanner.ll"
2906 {
2907  if(getIsIdContext())
2908  {
2909  mIsIdAlreadyAdded = true;
2910  REJECT;
2911  }
2912  return Token::R0;
2913  }
2914  YY_BREAK
2915 case 40:
2917 #line 390 "Scanner.ll"
2918 {
2919  if(getIsIdContext())
2920  {
2921  mIsIdAlreadyAdded = true;
2922  REJECT;
2923  }
2924  return Token::R180;
2925  }
2926  YY_BREAK
2927 case 41:
2929 #line 398 "Scanner.ll"
2930 {
2931  if(getIsIdContext())
2932  {
2933  mIsIdAlreadyAdded = true;
2934  REJECT;
2935  }
2936  return Token::R270;
2937  }
2938  YY_BREAK
2939 case 42:
2941 #line 406 "Scanner.ll"
2942 {
2943  if(getIsIdContext())
2944  {
2945  mIsIdAlreadyAdded = true;
2946  REJECT;
2947  }
2948  return Token::R90;
2949  }
2950  YY_BREAK
2951 case 43:
2953 #line 414 "Scanner.ll"
2954 {
2955  if(getIsIdContext())
2956  {
2957  mIsIdAlreadyAdded = true;
2958  REJECT;
2959  }
2960  return Token::REQUIRED;
2961  }
2962  YY_BREAK
2963 case 44:
2965 #line 422 "Scanner.ll"
2966 {
2967  if(getIsIdContext())
2968  {
2969  mIsIdAlreadyAdded = true;
2970  REJECT;
2971  }
2972  return Token::RESISTANCE;
2973  }
2974  YY_BREAK
2975 case 45:
2977 #line 430 "Scanner.ll"
2978 {
2979  if(getIsIdContext())
2980  {
2981  mIsIdAlreadyAdded = true;
2982  REJECT;
2983  }
2984  return Token::RIPPER;
2985  }
2986  YY_BREAK
2987 case 46:
2989 #line 438 "Scanner.ll"
2990 {
2991  if(getIsIdContext())
2992  {
2993  mIsIdAlreadyAdded = true;
2994  REJECT;
2995  }
2996  return Token::ROUND;
2997  }
2998  YY_BREAK
2999 case 47:
3001 #line 446 "Scanner.ll"
3002 {
3003  if(getIsIdContext())
3004  {
3005  mIsIdAlreadyAdded = true;
3006  REJECT;
3007  }
3008  return Token::SCHEMATIC;
3009  }
3010  YY_BREAK
3011 case 48:
3013 #line 454 "Scanner.ll"
3014 {
3015  if(getIsIdContext())
3016  {
3017  mIsIdAlreadyAdded = true;
3018  REJECT;
3019  }
3020  return Token::STRANGER;
3021  }
3022  YY_BREAK
3023 case 49:
3025 #line 462 "Scanner.ll"
3026 {
3027  if(getIsIdContext())
3028  {
3029  mIsIdAlreadyAdded = true;
3030  REJECT;
3031  }
3032  return Token::SYMBOLIC;
3033  }
3034  YY_BREAK
3035 case 50:
3037 #line 470 "Scanner.ll"
3038 {
3039  if(getIsIdContext())
3040  {
3041  mIsIdAlreadyAdded = true;
3042  REJECT;
3043  }
3044  return Token::TEMPERATURE;
3045  }
3046  YY_BREAK
3047 case 51:
3049 #line 478 "Scanner.ll"
3050 {
3051  if(getIsIdContext())
3052  {
3053  mIsIdAlreadyAdded = true;
3054  REJECT;
3055  }
3056  return Token::TIE;
3057  }
3058  YY_BREAK
3059 case 52:
3061 #line 486 "Scanner.ll"
3062 {
3063  if(getIsIdContext())
3064  {
3065  mIsIdAlreadyAdded = true;
3066  REJECT;
3067  }
3068  return Token::TIME;
3069  }
3070  YY_BREAK
3071 case 53:
3073 #line 494 "Scanner.ll"
3074 {
3075  if(getIsIdContext())
3076  {
3077  mIsIdAlreadyAdded = true;
3078  REJECT;
3079  }
3080  return Token::TRUNCATE;
3081  }
3082  YY_BREAK
3083 case 54:
3085 #line 502 "Scanner.ll"
3086 {
3087  if(getIsIdContext())
3088  {
3089  mIsIdAlreadyAdded = true;
3090  REJECT;
3091  }
3092  return Token::UPPERCENTER;
3093  }
3094  YY_BREAK
3095 case 55:
3097 #line 510 "Scanner.ll"
3098 {
3099  if(getIsIdContext())
3100  {
3101  mIsIdAlreadyAdded = true;
3102  REJECT;
3103  }
3104  return Token::UPPERLEFT;
3105  }
3106  YY_BREAK
3107 case 56:
3109 #line 518 "Scanner.ll"
3110 {
3111  if(getIsIdContext())
3112  {
3113  mIsIdAlreadyAdded = true;
3114  REJECT;
3115  }
3116  return Token::UPPERRIGHT;
3117  }
3118  YY_BREAK
3119 case 57:
3121 #line 526 "Scanner.ll"
3122 {
3123  if(getIsIdContext())
3124  {
3125  mIsIdAlreadyAdded = true;
3126  REJECT;
3127  }
3128  return Token::VOLTAGE;
3129  }
3130  YY_BREAK
3131 case 58:
3133 #line 535 "Scanner.ll"
3134 {
3135  if(getIsIdContext())
3136  {
3137  mIsIdAlreadyAdded = true;
3138  REJECT;
3139  }
3140  return Token::ACLOAD;
3141  }
3142  YY_BREAK
3143 case 59:
3145 #line 543 "Scanner.ll"
3146 {
3147  if(getIsIdContext())
3148  {
3149  mIsIdAlreadyAdded = true;
3150  REJECT;
3151  }
3152  return Token::AFTER;
3153  }
3154  YY_BREAK
3155 case 60:
3157 #line 551 "Scanner.ll"
3158 {
3159  if(getIsIdContext())
3160  {
3161  mIsIdAlreadyAdded = true;
3162  REJECT;
3163  }
3164  return Token::ANNOTATE;
3165  }
3166  YY_BREAK
3167 case 61:
3169 #line 559 "Scanner.ll"
3170 {
3171  if(getIsIdContext())
3172  {
3173  mIsIdAlreadyAdded = true;
3174  REJECT;
3175  }
3176  return Token::APPLY;
3177  }
3178  YY_BREAK
3179 case 62:
3181 #line 567 "Scanner.ll"
3182 {
3183  if(getIsIdContext())
3184  {
3185  mIsIdAlreadyAdded = true;
3186  REJECT;
3187  }
3188  return Token::ARC;
3189  }
3190  YY_BREAK
3191 case 63:
3193 #line 575 "Scanner.ll"
3194 {
3195  if(getIsIdContext())
3196  {
3197  mIsIdAlreadyAdded = true;
3198  REJECT;
3199  }
3200  setIsIdContext(true);
3201  return Token::ARRAY;
3202  }
3203  YY_BREAK
3204 case 64:
3206 #line 584 "Scanner.ll"
3207 {
3208  if(getIsIdContext())
3209  {
3210  mIsIdAlreadyAdded = true;
3211  REJECT;
3212  }
3213  return Token::ARRAYMACRO;
3214  }
3215  YY_BREAK
3216 case 65:
3218 #line 592 "Scanner.ll"
3219 {
3220  if(getIsIdContext())
3221  {
3222  mIsIdAlreadyAdded = true;
3223  REJECT;
3224  }
3225  return Token::ARRAYRELATEDINFO;
3226  }
3227  YY_BREAK
3228 case 66:
3230 #line 600 "Scanner.ll"
3231 {
3232  if(getIsIdContext())
3233  {
3234  mIsIdAlreadyAdded = true;
3235  REJECT;
3236  }
3237  return Token::ARRAYSITE;
3238  }
3239  YY_BREAK
3240 case 67:
3242 #line 608 "Scanner.ll"
3243 {
3244  if(getIsIdContext())
3245  {
3246  mIsIdAlreadyAdded = true;
3247  REJECT;
3248  }
3249  return Token::ATLEAST;
3250  }
3251  YY_BREAK
3252 case 68:
3254 #line 616 "Scanner.ll"
3255 {
3256  if(getIsIdContext())
3257  {
3258  mIsIdAlreadyAdded = true;
3259  REJECT;
3260  }
3261  return Token::ATMOST;
3262  }
3263  YY_BREAK
3264 case 69:
3266 #line 624 "Scanner.ll"
3267 {
3268  if(getIsIdContext())
3269  {
3270  mIsIdAlreadyAdded = true;
3271  REJECT;
3272  }
3273  return Token::AUTHOR;
3274  }
3275  YY_BREAK
3276 case 70:
3278 #line 632 "Scanner.ll"
3279 {
3280  if(getIsIdContext())
3281  {
3282  mIsIdAlreadyAdded = true;
3283  REJECT;
3284  }
3285  return Token::BASEARRAY;
3286  }
3287  YY_BREAK
3288 case 71:
3290 #line 640 "Scanner.ll"
3291 {
3292  if(getIsIdContext())
3293  {
3294  mIsIdAlreadyAdded = true;
3295  REJECT;
3296  }
3297  return Token::BECOMES;
3298  }
3299  YY_BREAK
3300 case 72:
3302 #line 648 "Scanner.ll"
3303 {
3304  if(getIsIdContext())
3305  {
3306  mIsIdAlreadyAdded = true;
3307  REJECT;
3308  }
3309  return Token::BETWEEN;
3310  }
3311  YY_BREAK
3312 case 73:
3314 #line 656 "Scanner.ll"
3315 {
3316  if(getIsIdContext())
3317  {
3318  mIsIdAlreadyAdded = true;
3319  REJECT;
3320  }
3321  return Token::BOOLEAN;
3322  }
3323  YY_BREAK
3324 case 74:
3326 #line 664 "Scanner.ll"
3327 {
3328  if(getIsIdContext())
3329  {
3330  mIsIdAlreadyAdded = true;
3331  REJECT;
3332  }
3333  return Token::BOOLEANDISPLAY;
3334  }
3335  YY_BREAK
3336 case 75:
3338 #line 672 "Scanner.ll"
3339 {
3340  if(getIsIdContext())
3341  {
3342  mIsIdAlreadyAdded = true;
3343  REJECT;
3344  }
3345  return Token::BOOLEANMAP;
3346  }
3347  YY_BREAK
3348 case 76:
3350 #line 680 "Scanner.ll"
3351 {
3352  if(getIsIdContext())
3353  {
3354  mIsIdAlreadyAdded = true;
3355  REJECT;
3356  }
3357  return Token::BORDERPATTERN;
3358  }
3359  YY_BREAK
3360 case 77:
3362 #line 688 "Scanner.ll"
3363 {
3364  if(getIsIdContext())
3365  {
3366  mIsIdAlreadyAdded = true;
3367  REJECT;
3368  }
3369  return Token::BORDERWIDTH;
3370  }
3371  YY_BREAK
3372 case 78:
3374 #line 696 "Scanner.ll"
3375 {
3376  if(getIsIdContext())
3377  {
3378  mIsIdAlreadyAdded = true;
3379  REJECT;
3380  }
3381  return Token::BOUNDINGBOX;
3382  }
3383  YY_BREAK
3384 case 79:
3386 #line 704 "Scanner.ll"
3387 {
3388  if(getIsIdContext())
3389  {
3390  mIsIdAlreadyAdded = true;
3391  REJECT;
3392  }
3393  setIsIdContext(true);
3394  return Token::CELL;
3395  }
3396  YY_BREAK
3397 case 80:
3399 #line 713 "Scanner.ll"
3400 {
3401  if(getIsIdContext())
3402  {
3403  mIsIdAlreadyAdded = true;
3404  REJECT;
3405  }
3406  setIsIdContext(true);
3407  return Token::CELLREF;
3408  }
3409  YY_BREAK
3410 case 81:
3412 #line 722 "Scanner.ll"
3413 {
3414  if(getIsIdContext())
3415  {
3416  mIsIdAlreadyAdded = true;
3417  REJECT;
3418  }
3419  return Token::CELLTYPE;
3420  }
3421  YY_BREAK
3422 case 82:
3424 #line 730 "Scanner.ll"
3425 {
3426  if(getIsIdContext())
3427  {
3428  mIsIdAlreadyAdded = true;
3429  REJECT;
3430  }
3431  return Token::CHANGE;
3432  }
3433  YY_BREAK
3434 case 83:
3436 #line 738 "Scanner.ll"
3437 {
3438  if(getIsIdContext())
3439  {
3440  mIsIdAlreadyAdded = true;
3441  REJECT;
3442  }
3443  return Token::CIRCLE;
3444  }
3445  YY_BREAK
3446 case 84:
3448 #line 746 "Scanner.ll"
3449 {
3450  if(getIsIdContext())
3451  {
3452  mIsIdAlreadyAdded = true;
3453  REJECT;
3454  }
3455  return Token::COLOR;
3456  }
3457  YY_BREAK
3458 case 85:
3460 #line 754 "Scanner.ll"
3461 {
3462  if(getIsIdContext())
3463  {
3464  mIsIdAlreadyAdded = true;
3465  REJECT;
3466  }
3467  return Token::COMMENT;
3468  }
3469  YY_BREAK
3470 case 86:
3472 #line 762 "Scanner.ll"
3473 {
3474  if(getIsIdContext())
3475  {
3476  mIsIdAlreadyAdded = true;
3477  REJECT;
3478  }
3479  return Token::COMMENTGRAPHICS;
3480  }
3481  YY_BREAK
3482 case 87:
3484 #line 770 "Scanner.ll"
3485 {
3486  if(getIsIdContext())
3487  {
3488  mIsIdAlreadyAdded = true;
3489  REJECT;
3490  }
3491  return Token::COMPOUND;
3492  }
3493  YY_BREAK
3494 case 88:
3496 #line 778 "Scanner.ll"
3497 {
3498  if(getIsIdContext())
3499  {
3500  mIsIdAlreadyAdded = true;
3501  REJECT;
3502  }
3503  return Token::CONNECTLOCATION;
3504  }
3505  YY_BREAK
3506 case 89:
3508 #line 786 "Scanner.ll"
3509 {
3510  if(getIsIdContext())
3511  {
3512  mIsIdAlreadyAdded = true;
3513  REJECT;
3514  }
3515  return Token::CONTENTS;
3516  }
3517  YY_BREAK
3518 case 90:
3520 #line 794 "Scanner.ll"
3521 {
3522  if(getIsIdContext())
3523  {
3524  mIsIdAlreadyAdded = true;
3525  REJECT;
3526  }
3527  return Token::CORNERTYPE;
3528  }
3529  YY_BREAK
3530 case 91:
3532 #line 802 "Scanner.ll"
3533 {
3534  if(getIsIdContext())
3535  {
3536  mIsIdAlreadyAdded = true;
3537  REJECT;
3538  }
3539  return Token::CRITICALITY;
3540  }
3541  YY_BREAK
3542 case 92:
3544 #line 810 "Scanner.ll"
3545 {
3546  if(getIsIdContext())
3547  {
3548  mIsIdAlreadyAdded = true;
3549  REJECT;
3550  }
3551  return Token::CURRENTMAP;
3552  }
3553  YY_BREAK
3554 case 93:
3556 #line 818 "Scanner.ll"
3557 {
3558  if(getIsIdContext())
3559  {
3560  mIsIdAlreadyAdded = true;
3561  REJECT;
3562  }
3563  return Token::CURVE;
3564  }
3565  YY_BREAK
3566 case 94:
3568 #line 826 "Scanner.ll"
3569 {
3570  if(getIsIdContext())
3571  {
3572  mIsIdAlreadyAdded = true;
3573  REJECT;
3574  }
3575  return Token::CYCLE;
3576  }
3577  YY_BREAK
3578 case 95:
3580 #line 834 "Scanner.ll"
3581 {
3582  if(getIsIdContext())
3583  {
3584  mIsIdAlreadyAdded = true;
3585  REJECT;
3586  }
3587  return Token::DATAORIGIN;
3588  }
3589  YY_BREAK
3590 case 96:
3592 #line 842 "Scanner.ll"
3593 {
3594  if(getIsIdContext())
3595  {
3596  mIsIdAlreadyAdded = true;
3597  REJECT;
3598  }
3599  return Token::DCFANINLOAD;
3600  }
3601  YY_BREAK
3602 case 97:
3604 #line 850 "Scanner.ll"
3605 {
3606  if(getIsIdContext())
3607  {
3608  mIsIdAlreadyAdded = true;
3609  REJECT;
3610  }
3611  return Token::DCFANOUTLOAD;
3612  }
3613  YY_BREAK
3614 case 98:
3616 #line 858 "Scanner.ll"
3617 {
3618  if(getIsIdContext())
3619  {
3620  mIsIdAlreadyAdded = true;
3621  REJECT;
3622  }
3623  return Token::DCMAXFANIN;
3624  }
3625  YY_BREAK
3626 case 99:
3628 #line 866 "Scanner.ll"
3629 {
3630  if(getIsIdContext())
3631  {
3632  mIsIdAlreadyAdded = true;
3633  REJECT;
3634  }
3635  return Token::DCMAXFANOUT;
3636  }
3637  YY_BREAK
3638 case 100:
3640 #line 874 "Scanner.ll"
3641 {
3642  if(getIsIdContext())
3643  {
3644  mIsIdAlreadyAdded = true;
3645  REJECT;
3646  }
3647  return Token::DELAY;
3648  }
3649  YY_BREAK
3650 case 101:
3652 #line 882 "Scanner.ll"
3653 {
3654  if(getIsIdContext())
3655  {
3656  mIsIdAlreadyAdded = true;
3657  REJECT;
3658  }
3659  return Token::DELTA;
3660  }
3661  YY_BREAK
3662 case 102:
3664 #line 890 "Scanner.ll"
3665 {
3666  if(getIsIdContext())
3667  {
3668  mIsIdAlreadyAdded = true;
3669  REJECT;
3670  }
3671  return Token::DERIVATION;
3672  }
3673  YY_BREAK
3674 case 103:
3676 #line 898 "Scanner.ll"
3677 {
3678  if(getIsIdContext())
3679  {
3680  mIsIdAlreadyAdded = true;
3681  REJECT;
3682  }
3683  return Token::DESIGN;
3684  }
3685  YY_BREAK
3686 case 104:
3688 #line 906 "Scanner.ll"
3689 {
3690  if(getIsIdContext())
3691  {
3692  mIsIdAlreadyAdded = true;
3693  REJECT;
3694  }
3695  return Token::DESIGNATOR;
3696  }
3697  YY_BREAK
3698 case 105:
3700 #line 914 "Scanner.ll"
3701 {
3702  if(getIsIdContext())
3703  {
3704  mIsIdAlreadyAdded = true;
3705  REJECT;
3706  }
3707  return Token::DIFFERENCE;
3708  }
3709  YY_BREAK
3710 case 106:
3712 #line 922 "Scanner.ll"
3713 {
3714  if(getIsIdContext())
3715  {
3716  mIsIdAlreadyAdded = true;
3717  REJECT;
3718  }
3719  return Token::DIRECTION;
3720  }
3721  YY_BREAK
3722 case 107:
3724 #line 930 "Scanner.ll"
3725 {
3726  if(getIsIdContext())
3727  {
3728  mIsIdAlreadyAdded = true;
3729  REJECT;
3730  }
3731  return Token::DISPLAY;
3732  }
3733  YY_BREAK
3734 case 108:
3736 #line 938 "Scanner.ll"
3737 {
3738  if(getIsIdContext())
3739  {
3740  mIsIdAlreadyAdded = true;
3741  REJECT;
3742  }
3743  return Token::DOMINATES;
3744  }
3745  YY_BREAK
3746 case 109:
3748 #line 946 "Scanner.ll"
3749 {
3750  if(getIsIdContext())
3751  {
3752  mIsIdAlreadyAdded = true;
3753  REJECT;
3754  }
3755  return Token::DOT;
3756  }
3757  YY_BREAK
3758 case 110:
3760 #line 954 "Scanner.ll"
3761 {
3762  if(getIsIdContext())
3763  {
3764  mIsIdAlreadyAdded = true;
3765  REJECT;
3766  }
3767  return Token::DURATION;
3768  }
3769  YY_BREAK
3770 case 111:
3772 #line 962 "Scanner.ll"
3773 {
3774  if(getIsIdContext())
3775  {
3776  mIsIdAlreadyAdded = true;
3777  REJECT;
3778  }
3779  return Token::E;
3780  }
3781  YY_BREAK
3782 case 112:
3784 #line 970 "Scanner.ll"
3785 {
3786  if(getIsIdContext())
3787  {
3788  mIsIdAlreadyAdded = true;
3789  REJECT;
3790  }
3791  return Token::EDIF;
3792  }
3793  YY_BREAK
3794 case 113:
3796 #line 978 "Scanner.ll"
3797 {
3798  if(getIsIdContext())
3799  {
3800  mIsIdAlreadyAdded = true;
3801  REJECT;
3802  }
3803  return Token::EDIFLEVEL;
3804  }
3805  YY_BREAK
3806 case 114:
3808 #line 986 "Scanner.ll"
3809 {
3810  if(getIsIdContext())
3811  {
3812  mIsIdAlreadyAdded = true;
3813  REJECT;
3814  }
3815  return Token::EDIFVERSION;
3816  }
3817  YY_BREAK
3818 case 115:
3820 #line 994 "Scanner.ll"
3821 {
3822  if(getIsIdContext())
3823  {
3824  mIsIdAlreadyAdded = true;
3825  REJECT;
3826  }
3827  return Token::ENCLOSUREDISTANCE;
3828  }
3829  YY_BREAK
3830 case 116:
3832 #line 1002 "Scanner.ll"
3833 {
3834  if(getIsIdContext())
3835  {
3836  mIsIdAlreadyAdded = true;
3837  REJECT;
3838  }
3839  return Token::ENDTYPE;
3840  }
3841  YY_BREAK
3842 case 117:
3844 #line 1010 "Scanner.ll"
3845 {
3846  if(getIsIdContext())
3847  {
3848  mIsIdAlreadyAdded = true;
3849  REJECT;
3850  }
3851  return Token::ENTRY;
3852  }
3853  YY_BREAK
3854 case 118:
3856 #line 1018 "Scanner.ll"
3857 {
3858  if(getIsIdContext())
3859  {
3860  mIsIdAlreadyAdded = true;
3861  REJECT;
3862  }
3863  return Token::EVENT;
3864  }
3865  YY_BREAK
3866 case 119:
3868 #line 1027 "Scanner.ll"
3869 {
3870  if(getIsIdContext())
3871  {
3872  mIsIdAlreadyAdded = true;
3873  REJECT;
3874  }
3875  return Token::EXACTLY;
3876  }
3877  YY_BREAK
3878 case 120:
3880 #line 1035 "Scanner.ll"
3881 {
3882  if(getIsIdContext())
3883  {
3884  mIsIdAlreadyAdded = true;
3885  REJECT;
3886  }
3887  setIsIdContext(true);
3888  return Token::EXTERNAL;
3889  }
3890  YY_BREAK
3891 case 121:
3893 #line 1044 "Scanner.ll"
3894 {
3895  if(getIsIdContext())
3896  {
3897  mIsIdAlreadyAdded = true;
3898  REJECT;
3899  }
3900  return Token::FABRICATE;
3901  }
3902  YY_BREAK
3903 case 122:
3905 #line 1052 "Scanner.ll"
3906 {
3907  if(getIsIdContext())
3908  {
3909  mIsIdAlreadyAdded = true;
3910  REJECT;
3911  }
3912  return Token::FALSE;
3913  }
3914  YY_BREAK
3915 case 123:
3917 #line 1060 "Scanner.ll"
3918 {
3919  if(getIsIdContext())
3920  {
3921  mIsIdAlreadyAdded = true;
3922  REJECT;
3923  }
3924  return Token::FIGURE;
3925  }
3926  YY_BREAK
3927 case 124:
3929 #line 1068 "Scanner.ll"
3930 {
3931  if(getIsIdContext())
3932  {
3933  mIsIdAlreadyAdded = true;
3934  REJECT;
3935  }
3936  return Token::FIGUREAREA;
3937  }
3938  YY_BREAK
3939 case 125:
3941 #line 1076 "Scanner.ll"
3942 {
3943  if(getIsIdContext())
3944  {
3945  mIsIdAlreadyAdded = true;
3946  REJECT;
3947  }
3948  return Token::FIGUREGROUP;
3949  }
3950  YY_BREAK
3951 case 126:
3953 #line 1084 "Scanner.ll"
3954 {
3955  if(getIsIdContext())
3956  {
3957  mIsIdAlreadyAdded = true;
3958  REJECT;
3959  }
3960  return Token::FIGUREGROUPOBJECT;
3961  }
3962  YY_BREAK
3963 case 127:
3965 #line 1092 "Scanner.ll"
3966 {
3967  if(getIsIdContext())
3968  {
3969  mIsIdAlreadyAdded = true;
3970  REJECT;
3971  }
3973  }
3974  YY_BREAK
3975 case 128:
3977 #line 1100 "Scanner.ll"
3978 {
3979  if(getIsIdContext())
3980  {
3981  mIsIdAlreadyAdded = true;
3982  REJECT;
3983  }
3984  return Token::FIGUREGROUPREF;
3985  }
3986  YY_BREAK
3987 case 129:
3989 #line 1108 "Scanner.ll"
3990 {
3991  if(getIsIdContext())
3992  {
3993  mIsIdAlreadyAdded = true;
3994  REJECT;
3995  }
3996  return Token::FIGUREPERIMETER;
3997  }
3998  YY_BREAK
3999 case 130:
4001 #line 1116 "Scanner.ll"
4002 {
4003  if(getIsIdContext())
4004  {
4005  mIsIdAlreadyAdded = true;
4006  REJECT;
4007  }
4008  return Token::FIGUREWIDTH;
4009  }
4010  YY_BREAK
4011 case 131:
4013 #line 1124 "Scanner.ll"
4014 {
4015  if(getIsIdContext())
4016  {
4017  mIsIdAlreadyAdded = true;
4018  REJECT;
4019  }
4020  return Token::FILLPATTERN;
4021  }
4022  YY_BREAK
4023 case 132:
4025 #line 1132 "Scanner.ll"
4026 {
4027  if(getIsIdContext())
4028  {
4029  mIsIdAlreadyAdded = true;
4030  REJECT;
4031  }
4032  return Token::FOLLOW;
4033  }
4034  YY_BREAK
4035 case 133:
4037 #line 1140 "Scanner.ll"
4038 {
4039  if(getIsIdContext())
4040  {
4041  mIsIdAlreadyAdded = true;
4042  REJECT;
4043  }
4044  return Token::FORBIDDENEVENT;
4045  }
4046  YY_BREAK
4047 case 134:
4049 #line 1148 "Scanner.ll"
4050 {
4051  if(getIsIdContext())
4052  {
4053  mIsIdAlreadyAdded = true;
4054  REJECT;
4055  }
4056  return Token::GLOBALPORTREF;
4057  }
4058  YY_BREAK
4059 case 135:
4061 #line 1156 "Scanner.ll"
4062 {
4063  if(getIsIdContext())
4064  {
4065  mIsIdAlreadyAdded = true;
4066  REJECT;
4067  }
4068  return Token::GREATERTHAN;
4069  }
4070  YY_BREAK
4071 case 136:
4073 #line 1164 "Scanner.ll"
4074 {
4075  if(getIsIdContext())
4076  {
4077  mIsIdAlreadyAdded = true;
4078  REJECT;
4079  }
4080  return Token::GRIDMAP;
4081  }
4082  YY_BREAK
4083 case 137:
4085 #line 1172 "Scanner.ll"
4086 {
4087  if(getIsIdContext())
4088  {
4089  mIsIdAlreadyAdded = true;
4090  REJECT;
4091  }
4092  return Token::IGNORE;
4093  }
4094  YY_BREAK
4095 case 138:
4097 #line 1180 "Scanner.ll"
4098 {
4099  if(getIsIdContext())
4100  {
4101  mIsIdAlreadyAdded = true;
4102  REJECT;
4103  }
4104  return Token::INCLUDEFIGUREGROUP;
4105  }
4106  YY_BREAK
4107 case 139:
4109 #line 1188 "Scanner.ll"
4110 {
4111  if(getIsIdContext())
4112  {
4113  mIsIdAlreadyAdded = true;
4114  REJECT;
4115  }
4116  return Token::INITIAL_KW;
4117  }
4118  YY_BREAK
4119 case 140:
4121 #line 1196 "Scanner.ll"
4122 {
4123  if(getIsIdContext())
4124  {
4125  mIsIdAlreadyAdded = true;
4126  REJECT;
4127  }
4128  setIsIdContext(true);
4129  return Token::INSTANCE;
4130  }
4131  YY_BREAK
4132 case 141:
4134 #line 1205 "Scanner.ll"
4135 {
4136  if(getIsIdContext())
4137  {
4138  mIsIdAlreadyAdded = true;
4139  REJECT;
4140  }
4142  }
4143  YY_BREAK
4144 case 142:
4146 #line 1213 "Scanner.ll"
4147 {
4148  if(getIsIdContext())
4149  {
4150  mIsIdAlreadyAdded = true;
4151  REJECT;
4152  }
4153  return Token::INSTANCEGROUP;
4154  }
4155  YY_BREAK
4156 case 143:
4158 #line 1221 "Scanner.ll"
4159 {
4160  if(getIsIdContext())
4161  {
4162  mIsIdAlreadyAdded = true;
4163  REJECT;
4164  }
4165  return Token::INSTANCEMAP;
4166  }
4167  YY_BREAK
4168 case 144:
4170 #line 1229 "Scanner.ll"
4171 {
4172  if(getIsIdContext())
4173  {
4174  mIsIdAlreadyAdded = true;
4175  REJECT;
4176  }
4177  setIsIdContext(true);
4178  return Token::INSTANCEREF;
4179  }
4180  YY_BREAK
4181 case 145:
4183 #line 1238 "Scanner.ll"
4184 {
4185  if(getIsIdContext())
4186  {
4187  mIsIdAlreadyAdded = true;
4188  REJECT;
4189  }
4190  return Token::INTEGER;
4191  }
4192  YY_BREAK
4193 case 146:
4195 #line 1246 "Scanner.ll"
4196 {
4197  if(getIsIdContext())
4198  {
4199  mIsIdAlreadyAdded = true;
4200  REJECT;
4201  }
4202  return Token::INTEGERDISPLAY;
4203  }
4204  YY_BREAK
4205 case 147:
4207 #line 1254 "Scanner.ll"
4208 {
4209  if(getIsIdContext())
4210  {
4211  mIsIdAlreadyAdded = true;
4212  REJECT;
4213  }
4214  return Token::INTERFACE;
4215  }
4216  YY_BREAK
4217 case 148:
4219 #line 1262 "Scanner.ll"
4220 {
4221  if(getIsIdContext())
4222  {
4223  mIsIdAlreadyAdded = true;
4224  REJECT;
4225  }
4227  }
4228  YY_BREAK
4229 case 149:
4231 #line 1270 "Scanner.ll"
4232 {
4233  if(getIsIdContext())
4234  {
4235  mIsIdAlreadyAdded = true;
4236  REJECT;
4237  }
4238  return Token::INTERSECTION;
4239  }
4240  YY_BREAK
4241 case 150:
4243 #line 1278 "Scanner.ll"
4244 {
4245  if(getIsIdContext())
4246  {
4247  mIsIdAlreadyAdded = true;
4248  REJECT;
4249  }
4251  }
4252  YY_BREAK
4253 case 151:
4255 #line 1286 "Scanner.ll"
4256 {
4257  if(getIsIdContext())
4258  {
4259  mIsIdAlreadyAdded = true;
4260  REJECT;
4261  }
4262  return Token::INVERSE;
4263  }
4264  YY_BREAK
4265 case 152:
4267 #line 1294 "Scanner.ll"
4268 {
4269  if(getIsIdContext())
4270  {
4271  mIsIdAlreadyAdded = true;
4272  REJECT;
4273  }
4274  return Token::ISOLATED;
4275  }
4276  YY_BREAK
4277 case 153:
4279 #line 1302 "Scanner.ll"
4280 {
4281  if(getIsIdContext())
4282  {
4283  mIsIdAlreadyAdded = true;
4284  REJECT;
4285  }
4286  return Token::JOINED;
4287  }
4288  YY_BREAK
4289 case 154:
4291 #line 1310 "Scanner.ll"
4292 {
4293  if(getIsIdContext())
4294  {
4295  mIsIdAlreadyAdded = true;
4296  REJECT;
4297  }
4298  return Token::JUSTIFY;
4299  }
4300  YY_BREAK
4301 case 155:
4303 #line 1318 "Scanner.ll"
4304 {
4305  if(getIsIdContext())
4306  {
4307  mIsIdAlreadyAdded = true;
4308  REJECT;
4309  }
4310  setIsIdContext(true);
4311  return Token::KEYWORDDISPLAY;
4312  }
4313  YY_BREAK
4314 case 156:
4316 #line 1327 "Scanner.ll"
4317 {
4318  if(getIsIdContext())
4319  {
4320  mIsIdAlreadyAdded = true;
4321  REJECT;
4322  }
4323  return Token::KEYWORDLEVEL;
4324  }
4325  YY_BREAK
4326 case 157:
4328 #line 1335 "Scanner.ll"
4329 {
4330  if(getIsIdContext())
4331  {
4332  mIsIdAlreadyAdded = true;
4333  REJECT;
4334  }
4335  return Token::KEYWORDMAP;
4336  }
4337  YY_BREAK
4338 case 158:
4340 #line 1343 "Scanner.ll"
4341 {
4342  if(getIsIdContext())
4343  {
4344  mIsIdAlreadyAdded = true;
4345  REJECT;
4346  }
4347  return Token::LESSTHAN;
4348  }
4349  YY_BREAK
4350 case 159:
4352 #line 1351 "Scanner.ll"
4353 {
4354  if(getIsIdContext())
4355  {
4356  mIsIdAlreadyAdded = true;
4357  REJECT;
4358  }
4359  setIsIdContext(true);
4360  return Token::LIBRARY;
4361  }
4362  YY_BREAK
4363 case 160:
4365 #line 1360 "Scanner.ll"
4366 {
4367  if(getIsIdContext())
4368  {
4369  mIsIdAlreadyAdded = true;
4370  REJECT;
4371  }
4372  setIsIdContext(true);
4373  return Token::LIBRARYREF;
4374  }
4375  YY_BREAK
4376 case 161:
4378 #line 1369 "Scanner.ll"
4379 {
4380  if(getIsIdContext())
4381  {
4382  mIsIdAlreadyAdded = true;
4383  REJECT;
4384  }
4385  return Token::LISTOFNETS;
4386  }
4387  YY_BREAK
4388 case 162:
4390 #line 1377 "Scanner.ll"
4391 {
4392  if(getIsIdContext())
4393  {
4394  mIsIdAlreadyAdded = true;
4395  REJECT;
4396  }
4397  return Token::LISTOFPORTS;
4398  }
4399  YY_BREAK
4400 case 163:
4402 #line 1385 "Scanner.ll"
4403 {
4404  if(getIsIdContext())
4405  {
4406  mIsIdAlreadyAdded = true;
4407  REJECT;
4408  }
4409  return Token::LOADDELAY;
4410  }
4411  YY_BREAK
4412 case 164:
4414 #line 1393 "Scanner.ll"
4415 {
4416  if(getIsIdContext())
4417  {
4418  mIsIdAlreadyAdded = true;
4419  REJECT;
4420  }
4421  return Token::LOGICASSIGN;
4422  }
4423  YY_BREAK
4424 case 165:
4426 #line 1401 "Scanner.ll"
4427 {
4428  if(getIsIdContext())
4429  {
4430  mIsIdAlreadyAdded = true;
4431  REJECT;
4432  }
4433  setIsIdContext(true);
4434  return Token::LOGICINPUT;
4435  }
4436  YY_BREAK
4437 case 166:
4439 #line 1410 "Scanner.ll"
4440 {
4441  if(getIsIdContext())
4442  {
4443  mIsIdAlreadyAdded = true;
4444  REJECT;
4445  }
4446  return Token::LOGICLIST;
4447  }
4448  YY_BREAK
4449 case 167:
4451 #line 1418 "Scanner.ll"
4452 {
4453  if(getIsIdContext())
4454  {
4455  mIsIdAlreadyAdded = true;
4456  REJECT;
4457  }
4458  return Token::LOGICMAPINPUT;
4459  }
4460  YY_BREAK
4461 case 168:
4463 #line 1426 "Scanner.ll"
4464 {
4465  if(getIsIdContext())
4466  {
4467  mIsIdAlreadyAdded = true;
4468  REJECT;
4469  }
4470  return Token::LOGICMAPOUTPUT;
4471  }
4472  YY_BREAK
4473 case 169:
4475 #line 1434 "Scanner.ll"
4476 {
4477  if(getIsIdContext())
4478  {
4479  mIsIdAlreadyAdded = true;
4480  REJECT;
4481  }
4482  return Token::LOGICONEOF;
4483  }
4484  YY_BREAK
4485 case 170:
4487 #line 1442 "Scanner.ll"
4488 {
4489  if(getIsIdContext())
4490  {
4491  mIsIdAlreadyAdded = true;
4492  REJECT;
4493  }
4494  setIsIdContext(true);
4495  return Token::LOGICOUTPUT;
4496  }
4497  YY_BREAK
4498 case 171:
4500 #line 1451 "Scanner.ll"
4501 {
4502  if(getIsIdContext())
4503  {
4504  mIsIdAlreadyAdded = true;
4505  REJECT;
4506  }
4507  return Token::LOGICPORT;
4508  }
4509  YY_BREAK
4510 case 172:
4512 #line 1459 "Scanner.ll"
4513 {
4514  if(getIsIdContext())
4515  {
4516  mIsIdAlreadyAdded = true;
4517  REJECT;
4518  }
4519  return Token::LOGICREF;
4520  }
4521  YY_BREAK
4522 case 173:
4524 #line 1467 "Scanner.ll"
4525 {
4526  if(getIsIdContext())
4527  {
4528  mIsIdAlreadyAdded = true;
4529  REJECT;
4530  }
4531  setIsIdContext(true);
4532  return Token::LOGICVALUE;
4533  }
4534  YY_BREAK
4535 case 174:
4537 #line 1476 "Scanner.ll"
4538 {
4539  if(getIsIdContext())
4540  {
4541  mIsIdAlreadyAdded = true;
4542  REJECT;
4543  }
4544  return Token::LOGICWAVEFORM;
4545  }
4546  YY_BREAK
4547 case 175:
4549 #line 1484 "Scanner.ll"
4550 {
4551  if(getIsIdContext())
4552  {
4553  mIsIdAlreadyAdded = true;
4554  REJECT;
4555  }
4556  return Token::MAINTAIN;
4557  }
4558  YY_BREAK
4559 case 176:
4561 #line 1492 "Scanner.ll"
4562 {
4563  if(getIsIdContext())
4564  {
4565  mIsIdAlreadyAdded = true;
4566  REJECT;
4567  }
4568  return Token::MATCH;
4569  }
4570  YY_BREAK
4571 case 177:
4573 #line 1500 "Scanner.ll"
4574 {
4575  if(getIsIdContext())
4576  {
4577  mIsIdAlreadyAdded = true;
4578  REJECT;
4579  }
4580  setIsIdContext(true);
4581  return Token::MEMBER;
4582  }
4583  YY_BREAK
4584 case 178:
4586 #line 1509 "Scanner.ll"
4587 {
4588  if(getIsIdContext())
4589  {
4590  mIsIdAlreadyAdded = true;
4591  REJECT;
4592  }
4593  return Token::MINOMAX;
4594  }
4595  YY_BREAK
4596 case 179:
4598 #line 1517 "Scanner.ll"
4599 {
4600  if(getIsIdContext())
4601  {
4602  mIsIdAlreadyAdded = true;
4603  REJECT;
4604  }
4605  return Token::MINOMAXDISPLAY;
4606  }
4607  YY_BREAK
4608 case 180:
4610 #line 1525 "Scanner.ll"
4611 {
4612  if(getIsIdContext())
4613  {
4614  mIsIdAlreadyAdded = true;
4615  REJECT;
4616  }
4617  return Token::MNM;
4618  }
4619  YY_BREAK
4620 case 181:
4622 #line 1533 "Scanner.ll"
4623 {
4624  if(getIsIdContext())
4625  {
4626  mIsIdAlreadyAdded = true;
4627  REJECT;
4628  }
4629  return Token::MULTIPLEVALUESET;
4630  }
4631  YY_BREAK
4632 case 182:
4634 #line 1541 "Scanner.ll"
4635 {
4636  if(getIsIdContext())
4637  {
4638  mIsIdAlreadyAdded = true;
4639  REJECT;
4640  }
4641  return Token::MUSTJOIN;
4642  }
4643  YY_BREAK
4644 case 183:
4646 #line 1549 "Scanner.ll"
4647 {
4648  if(getIsIdContext())
4649  {
4650  mIsIdAlreadyAdded = true;
4651  REJECT;
4652  }
4653  setIsIdContext(true);
4654  return Token::NAME;
4655  }
4656  YY_BREAK
4657 case 184:
4659 #line 1558 "Scanner.ll"
4660 {
4661  if(getIsIdContext())
4662  {
4663  mIsIdAlreadyAdded = true;
4664  REJECT;
4665  }
4666  setIsIdContext(true);
4667  return Token::NET;
4668  }
4669  YY_BREAK
4670 case 185:
4672 #line 1567 "Scanner.ll"
4673 {
4674  if(getIsIdContext())
4675  {
4676  mIsIdAlreadyAdded = true;
4677  REJECT;
4678  }
4679  return Token::NETBACKANNOTATE;
4680  }
4681  YY_BREAK
4682 case 186:
4684 #line 1575 "Scanner.ll"
4685 {
4686  if(getIsIdContext())
4687  {
4688  mIsIdAlreadyAdded = true;
4689  REJECT;
4690  }
4691  setIsIdContext(true);
4692  return Token::NETBUNDLE;
4693  }
4694  YY_BREAK
4695 case 187:
4697 #line 1584 "Scanner.ll"
4698 {
4699  if(getIsIdContext())
4700  {
4701  mIsIdAlreadyAdded = true;
4702  REJECT;
4703  }
4704  return Token::NETDELAY;
4705  }
4706  YY_BREAK
4707 case 188:
4709 #line 1592 "Scanner.ll"
4710 {
4711  if(getIsIdContext())
4712  {
4713  mIsIdAlreadyAdded = true;
4714  REJECT;
4715  }
4716  return Token::NETGROUP;
4717  }
4718  YY_BREAK
4719 case 189:
4721 #line 1600 "Scanner.ll"
4722 {
4723  if(getIsIdContext())
4724  {
4725  mIsIdAlreadyAdded = true;
4726  REJECT;
4727  }
4728  return Token::NETMAP;
4729  }
4730  YY_BREAK
4731 case 190:
4733 #line 1608 "Scanner.ll"
4734 {
4735  if(getIsIdContext())
4736  {
4737  mIsIdAlreadyAdded = true;
4738  REJECT;
4739  }
4740  setIsIdContext(true);
4741  return Token::NETREF;
4742  }
4743  YY_BREAK
4744 case 191:
4746 #line 1617 "Scanner.ll"
4747 {
4748  if(getIsIdContext())
4749  {
4750  mIsIdAlreadyAdded = true;
4751  REJECT;
4752  }
4753  return Token::NOCHANGE;
4754  }
4755  YY_BREAK
4756 case 192:
4758 #line 1625 "Scanner.ll"
4759 {
4760  if(getIsIdContext())
4761  {
4762  mIsIdAlreadyAdded = true;
4763  REJECT;
4764  }
4765  return Token::NONPERMUTABLE;
4766  }
4767  YY_BREAK
4768 case 193:
4770 #line 1633 "Scanner.ll"
4771 {
4772  if(getIsIdContext())
4773  {
4774  mIsIdAlreadyAdded = true;
4775  REJECT;
4776  }
4777  return Token::NOTALLOWED;
4778  }
4779  YY_BREAK
4780 case 194:
4782 #line 1641 "Scanner.ll"
4783 {
4784  if(getIsIdContext())
4785  {
4786  mIsIdAlreadyAdded = true;
4787  REJECT;
4788  }
4789  return Token::NOTCHSPACING;
4790  }
4791  YY_BREAK
4792 case 195:
4794 #line 1649 "Scanner.ll"
4795 {
4796  if(getIsIdContext())
4797  {
4798  mIsIdAlreadyAdded = true;
4799  REJECT;
4800  }
4801  return Token::NUMBER;
4802  }
4803  YY_BREAK
4804 case 196:
4806 #line 1657 "Scanner.ll"
4807 {
4808  if(getIsIdContext())
4809  {
4810  mIsIdAlreadyAdded = true;
4811  REJECT;
4812  }
4813  return Token::NUMBERDEFINITION;
4814  }
4815  YY_BREAK
4816 case 197:
4818 #line 1665 "Scanner.ll"
4819 {
4820  if(getIsIdContext())
4821  {
4822  mIsIdAlreadyAdded = true;
4823  REJECT;
4824  }
4825  return Token::NUMBERDISPLAY;
4826  }
4827  YY_BREAK
4828 case 198:
4830 #line 1673 "Scanner.ll"
4831 {
4832  if(getIsIdContext())
4833  {
4834  mIsIdAlreadyAdded = true;
4835  REJECT;
4836  }
4837  return Token::OFFPAGECONNECTOR;
4838  }
4839  YY_BREAK
4840 case 199:
4842 #line 1681 "Scanner.ll"
4843 {
4844  if(getIsIdContext())
4845  {
4846  mIsIdAlreadyAdded = true;
4847  REJECT;
4848  }
4849  return Token::OFFSETEVENT;
4850  }
4851  YY_BREAK
4852 case 200:
4854 #line 1689 "Scanner.ll"
4855 {
4856  if(getIsIdContext())
4857  {
4858  mIsIdAlreadyAdded = true;
4859  REJECT;
4860  }
4861  return Token::OPENSHAPE;
4862  }
4863  YY_BREAK
4864 case 201:
4866 #line 1697 "Scanner.ll"
4867 {
4868  if(getIsIdContext())
4869  {
4870  mIsIdAlreadyAdded = true;
4871  REJECT;
4872  }
4873  return Token::ORIENTATION;
4874  }
4875  YY_BREAK
4876 case 202:
4878 #line 1705 "Scanner.ll"
4879 {
4880  if(getIsIdContext())
4881  {
4882  mIsIdAlreadyAdded = true;
4883  REJECT;
4884  }
4885  return Token::ORIGIN;
4886  }
4887  YY_BREAK
4888 case 203:
4890 #line 1713 "Scanner.ll"
4891 {
4892  if(getIsIdContext())
4893  {
4894  mIsIdAlreadyAdded = true;
4895  REJECT;
4896  }
4897  return Token::OVERHANGDISTANCE;
4898  }
4899  YY_BREAK
4900 case 204:
4902 #line 1721 "Scanner.ll"
4903 {
4904  if(getIsIdContext())
4905  {
4906  mIsIdAlreadyAdded = true;
4907  REJECT;
4908  }
4909  return Token::OVERLAPDISTANCE;
4910  }
4911  YY_BREAK
4912 case 205:
4914 #line 1729 "Scanner.ll"
4915 {
4916  if(getIsIdContext())
4917  {
4918  mIsIdAlreadyAdded = true;
4919  REJECT;
4920  }
4921  return Token::OVERSIZE;
4922  }
4923  YY_BREAK
4924 case 206:
4926 #line 1737 "Scanner.ll"
4927 {
4928  if(getIsIdContext())
4929  {
4930  mIsIdAlreadyAdded = true;
4931  REJECT;
4932  }
4933  return Token::OWNER;
4934  }
4935  YY_BREAK
4936 case 207:
4938 #line 1745 "Scanner.ll"
4939 {
4940  if(getIsIdContext())
4941  {
4942  mIsIdAlreadyAdded = true;
4943  REJECT;
4944  }
4945  return Token::PAGE;
4946  }
4947  YY_BREAK
4948 case 208:
4950 #line 1753 "Scanner.ll"
4951 {
4952  if(getIsIdContext())
4953  {
4954  mIsIdAlreadyAdded = true;
4955  REJECT;
4956  }
4957  return Token::PAGESIZE_EDIF;
4958  }
4959  YY_BREAK
4960 case 209:
4962 #line 1761 "Scanner.ll"
4963 {
4964  if(getIsIdContext())
4965  {
4966  mIsIdAlreadyAdded = true;
4967  REJECT;
4968  }
4969  setIsIdContext(true);
4970  return Token::PARAMETER;
4971  }
4972  YY_BREAK
4973 case 210:
4975 #line 1770 "Scanner.ll"
4976 {
4977  if(getIsIdContext())
4978  {
4979  mIsIdAlreadyAdded = true;
4980  REJECT;
4981  }
4982  setIsIdContext(true);
4983  return Token::PARAMETERASSIGN;
4984  }
4985  YY_BREAK
4986 case 211:
4988 #line 1779 "Scanner.ll"
4989 {
4990  if(getIsIdContext())
4991  {
4992  mIsIdAlreadyAdded = true;
4993  REJECT;
4994  }
4995  return Token::PARAMETERDISPLAY;
4996  }
4997  YY_BREAK
4998 case 212:
5000 #line 1787 "Scanner.ll"
5001 {
5002  if(getIsIdContext())
5003  {
5004  mIsIdAlreadyAdded = true;
5005  REJECT;
5006  }
5007  return Token::PATH;
5008  }
5009  YY_BREAK
5010 case 213:
5012 #line 1795 "Scanner.ll"
5013 {
5014  if(getIsIdContext())
5015  {
5016  mIsIdAlreadyAdded = true;
5017  REJECT;
5018  }
5019  return Token::PATHDELAY;
5020  }
5021  YY_BREAK
5022 case 214:
5024 #line 1803 "Scanner.ll"
5025 {
5026  if(getIsIdContext())
5027  {
5028  mIsIdAlreadyAdded = true;
5029  REJECT;
5030  }
5031  return Token::PATHWIDTH;
5032  }
5033  YY_BREAK
5034 case 215:
5036 #line 1811 "Scanner.ll"
5037 {
5038  if(getIsIdContext())
5039  {
5040  mIsIdAlreadyAdded = true;
5041  REJECT;
5042  }
5043  return Token::PERMUTABLE;
5044  }
5045  YY_BREAK
5046 case 216:
5048 #line 1819 "Scanner.ll"
5049 {
5050  if(getIsIdContext())
5051  {
5052  mIsIdAlreadyAdded = true;
5053  REJECT;
5054  }
5055  return Token::PHYSICALDESIGNRULE;
5056  }
5057  YY_BREAK
5058 case 217:
5060 #line 1827 "Scanner.ll"
5061 {
5062  if(getIsIdContext())
5063  {
5064  mIsIdAlreadyAdded = true;
5065  REJECT;
5066  }
5067  return Token::PLUG;
5068  }
5069  YY_BREAK
5070 case 218:
5072 #line 1835 "Scanner.ll"
5073 {
5074  if(getIsIdContext())
5075  {
5076  mIsIdAlreadyAdded = true;
5077  REJECT;
5078  }
5079  return Token::POINT;
5080  }
5081  YY_BREAK
5082 case 219:
5084 #line 1843 "Scanner.ll"
5085 {
5086  if(getIsIdContext())
5087  {
5088  mIsIdAlreadyAdded = true;
5089  REJECT;
5090  }
5091  return Token::POINTDISPLAY;
5092  }
5093  YY_BREAK
5094 case 220:
5096 #line 1851 "Scanner.ll"
5097 {
5098  if(getIsIdContext())
5099  {
5100  mIsIdAlreadyAdded = true;
5101  REJECT;
5102  }
5103  return Token::POINTLIST;
5104  }
5105  YY_BREAK
5106 case 221:
5108 #line 1859 "Scanner.ll"
5109 {
5110  if(getIsIdContext())
5111  {
5112  mIsIdAlreadyAdded = true;
5113  REJECT;
5114  }
5115  return Token::POLYGON;
5116  }
5117  YY_BREAK
5118 case 222:
5120 #line 1867 "Scanner.ll"
5121 {
5122  if(getIsIdContext())
5123  {
5124  mIsIdAlreadyAdded = true;
5125  REJECT;
5126  }
5127  setIsIdContext(true);
5128  return Token::PORT;
5129  }
5130  YY_BREAK
5131 case 223:
5133 #line 1876 "Scanner.ll"
5134 {
5135  if(getIsIdContext())
5136  {
5137  mIsIdAlreadyAdded = true;
5138  REJECT;
5139  }
5140  return Token::PORTBACKANNOTATE;
5141  }
5142  YY_BREAK
5143 case 224:
5145 #line 1884 "Scanner.ll"
5146 {
5147  if(getIsIdContext())
5148  {
5149  mIsIdAlreadyAdded = true;
5150  REJECT;
5151  }
5152  setIsIdContext(true);
5153  return Token::PORTBUNDLE;
5154  }
5155  YY_BREAK
5156 case 225:
5158 #line 1893 "Scanner.ll"
5159 {
5160  if(getIsIdContext())
5161  {
5162  mIsIdAlreadyAdded = true;
5163  REJECT;
5164  }
5165  return Token::PORTDELAY;
5166  }
5167  YY_BREAK
5168 case 226:
5170 #line 1901 "Scanner.ll"
5171 {
5172  if(getIsIdContext())
5173  {
5174  mIsIdAlreadyAdded = true;
5175  REJECT;
5176  }
5177  return Token::PORTGROUP;
5178  }
5179  YY_BREAK
5180 case 227:
5182 #line 1909 "Scanner.ll"
5183 {
5184  if(getIsIdContext())
5185  {
5186  mIsIdAlreadyAdded = true;
5187  REJECT;
5188  }
5189  return Token::PORTIMPLEMENTATION;
5190  }
5191  YY_BREAK
5192 case 228:
5194 #line 1917 "Scanner.ll"
5195 {
5196  if(getIsIdContext())
5197  {
5198  mIsIdAlreadyAdded = true;
5199  REJECT;
5200  }
5201  return Token::PORTINSTANCE;
5202  }
5203  YY_BREAK
5204 case 229:
5206 #line 1925 "Scanner.ll"
5207 {
5208  if(getIsIdContext())
5209  {
5210  mIsIdAlreadyAdded = true;
5211  REJECT;
5212  }
5213  setIsIdContext(true);
5214  return Token::PORTLIST;
5215  }
5216  YY_BREAK
5217 case 230:
5219 #line 1934 "Scanner.ll"
5220 {
5221  if(getIsIdContext())
5222  {
5223  mIsIdAlreadyAdded = true;
5224  REJECT;
5225  }
5226  setIsIdContext(true);
5227  return Token::PORTLISTALIAS;
5228  }
5229  YY_BREAK
5230 case 231:
5232 #line 1943 "Scanner.ll"
5233 {
5234  if(getIsIdContext())
5235  {
5236  mIsIdAlreadyAdded = true;
5237  REJECT;
5238  }
5239  return Token::PORTMAP;
5240  }
5241  YY_BREAK
5242 case 232:
5244 #line 1951 "Scanner.ll"
5245 {
5246  if(getIsIdContext())
5247  {
5248  mIsIdAlreadyAdded = true;
5249  REJECT;
5250  }
5251  setIsIdContext(true);
5252  return Token::PORTREF;
5253  }
5254  YY_BREAK
5255 case 233:
5257 #line 1960 "Scanner.ll"
5258 {
5259  if(getIsIdContext())
5260  {
5261  mIsIdAlreadyAdded = true;
5262  REJECT;
5263  }
5264  return Token::PROGRAM;
5265  }
5266  YY_BREAK
5267 case 234:
5269 #line 1968 "Scanner.ll"
5270 {
5271  if(getIsIdContext())
5272  {
5273  mIsIdAlreadyAdded = true;
5274  REJECT;
5275  }
5276  setIsIdContext(true);
5277  return Token::PROPERTY;
5278  }
5279  YY_BREAK
5280 case 235:
5282 #line 1977 "Scanner.ll"
5283 {
5284  if(getIsIdContext())
5285  {
5286  mIsIdAlreadyAdded = true;
5287  REJECT;
5288  }
5289  return Token::PROPERTYDISPLAY;
5290  }
5291  YY_BREAK
5292 case 236:
5294 #line 1985 "Scanner.ll"
5295 {
5296  if(getIsIdContext())
5297  {
5298  mIsIdAlreadyAdded = true;
5299  REJECT;
5300  }
5301  return Token::PROTECTIONFRAME;
5302  }
5303  YY_BREAK
5304 case 237:
5306 #line 1993 "Scanner.ll"
5307 {
5308  if(getIsIdContext())
5309  {
5310  mIsIdAlreadyAdded = true;
5311  REJECT;
5312  }
5313  return Token::PT;
5314  }
5315  YY_BREAK
5316 case 238:
5318 #line 2001 "Scanner.ll"
5319 {
5320  if(getIsIdContext())
5321  {
5322  mIsIdAlreadyAdded = true;
5323  REJECT;
5324  }
5325  return Token::RANGEVECTOR;
5326  }
5327  YY_BREAK
5328 case 239:
5330 #line 2009 "Scanner.ll"
5331 {
5332  if(getIsIdContext())
5333  {
5334  mIsIdAlreadyAdded = true;
5335  REJECT;
5336  }
5337  return Token::RECTANGLE;
5338  }
5339  YY_BREAK
5340 case 240:
5342 #line 2017 "Scanner.ll"
5343 {
5344  if(getIsIdContext())
5345  {
5346  mIsIdAlreadyAdded = true;
5347  REJECT;
5348  }
5349  return Token::RECTANGLESIZE;
5350  }
5351  YY_BREAK
5352 case 241:
5354 #line 2025 "Scanner.ll"
5355 {
5356  if(getIsIdContext())
5357  {
5358  mIsIdAlreadyAdded = true;
5359  REJECT;
5360  }
5361  setIsIdContext(true);
5362  return Token::RENAME;
5363  }
5364  YY_BREAK
5365 case 242:
5367 #line 2034 "Scanner.ll"
5368 {
5369  if(getIsIdContext())
5370  {
5371  mIsIdAlreadyAdded = true;
5372  REJECT;
5373  }
5374  return Token::RESOLVES;
5375  }
5376  YY_BREAK
5377 case 243:
5379 #line 2042 "Scanner.ll"
5380 {
5381  if(getIsIdContext())
5382  {
5383  mIsIdAlreadyAdded = true;
5384  REJECT;
5385  }
5386  return Token::SCALE;
5387  }
5388  YY_BREAK
5389 case 244:
5391 #line 2050 "Scanner.ll"
5392 {
5393  if(getIsIdContext())
5394  {
5395  mIsIdAlreadyAdded = true;
5396  REJECT;
5397  }
5398  return Token::SCALEX;
5399  }
5400  YY_BREAK
5401 case 245:
5403 #line 2058 "Scanner.ll"
5404 {
5405  if(getIsIdContext())
5406  {
5407  mIsIdAlreadyAdded = true;
5408  REJECT;
5409  }
5410  return Token::SCALEY;
5411  }
5412  YY_BREAK
5413 case 246:
5415 #line 2066 "Scanner.ll"
5416 {
5417  if(getIsIdContext())
5418  {
5419  mIsIdAlreadyAdded = true;
5420  REJECT;
5421  }
5422  return Token::SECTION;
5423  }
5424  YY_BREAK
5425 case 247:
5427 #line 2074 "Scanner.ll"
5428 {
5429  if(getIsIdContext())
5430  {
5431  mIsIdAlreadyAdded = true;
5432  REJECT;
5433  }
5434  return Token::SHAPE;
5435  }
5436  YY_BREAK
5437 case 248:
5439 #line 2082 "Scanner.ll"
5440 {
5441  if(getIsIdContext())
5442  {
5443  mIsIdAlreadyAdded = true;
5444  REJECT;
5445  }
5446  setIsIdContext(true);
5447  return Token::SIMULATE;
5448  }
5449  YY_BREAK
5450 case 249:
5452 #line 2091 "Scanner.ll"
5453 {
5454  if(getIsIdContext())
5455  {
5456  mIsIdAlreadyAdded = true;
5457  REJECT;
5458  }
5459  return Token::SIMULATIONINFO;
5460  }
5461  YY_BREAK
5462 case 250:
5464 #line 2099 "Scanner.ll"
5465 {
5466  if(getIsIdContext())
5467  {
5468  mIsIdAlreadyAdded = true;
5469  REJECT;
5470  }
5471  return Token::SINGLEVALUESET;
5472  }
5473  YY_BREAK
5474 case 251:
5476 #line 2107 "Scanner.ll"
5477 {
5478  if(getIsIdContext())
5479  {
5480  mIsIdAlreadyAdded = true;
5481  REJECT;
5482  }
5483  return Token::SITE;
5484  }
5485  YY_BREAK
5486 case 252:
5488 #line 2115 "Scanner.ll"
5489 {
5490  if(getIsIdContext())
5491  {
5492  mIsIdAlreadyAdded = true;
5493  REJECT;
5494  }
5495  return Token::SOCKET;
5496  }
5497  YY_BREAK
5498 case 253:
5500 #line 2123 "Scanner.ll"
5501 {
5502  if(getIsIdContext())
5503  {
5504  mIsIdAlreadyAdded = true;
5505  REJECT;
5506  }
5507  return Token::SOCKETSET;
5508  }
5509  YY_BREAK
5510 case 254:
5512 #line 2131 "Scanner.ll"
5513 {
5514  if(getIsIdContext())
5515  {
5516  mIsIdAlreadyAdded = true;
5517  REJECT;
5518  }
5519  return Token::STATUS;
5520  }
5521  YY_BREAK
5522 case 255:
5524 #line 2139 "Scanner.ll"
5525 {
5526  if(getIsIdContext())
5527  {
5528  mIsIdAlreadyAdded = true;
5529  REJECT;
5530  }
5531  return Token::STEADY;
5532  }
5533  YY_BREAK
5534 case 256:
5536 #line 2147 "Scanner.ll"
5537 {
5538  if(getIsIdContext())
5539  {
5540  mIsIdAlreadyAdded = true;
5541  REJECT;
5542  }
5543  return Token::STRING;
5544  }
5545  YY_BREAK
5546 case 257:
5548 #line 2155 "Scanner.ll"
5549 {
5550  if(getIsIdContext())
5551  {
5552  mIsIdAlreadyAdded = true;
5553  REJECT;
5554  }
5555  return Token::STRINGDISPLAY;
5556  }
5557  YY_BREAK
5558 case 258:
5560 #line 2163 "Scanner.ll"
5561 {
5562  if(getIsIdContext())
5563  {
5564  mIsIdAlreadyAdded = true;
5565  REJECT;
5566  }
5567  return Token::STRONG;
5568  }
5569  YY_BREAK
5570 case 259:
5572 #line 2171 "Scanner.ll"
5573 {
5574  if(getIsIdContext())
5575  {
5576  mIsIdAlreadyAdded = true;
5577  REJECT;
5578  }
5579  return Token::SYMBOL;
5580  }
5581  YY_BREAK
5582 case 260:
5584 #line 2179 "Scanner.ll"
5585 {
5586  if(getIsIdContext())
5587  {
5588  mIsIdAlreadyAdded = true;
5589  REJECT;
5590  }
5591  return Token::SYMMETRY;
5592  }
5593  YY_BREAK
5594 case 261:
5596 #line 2187 "Scanner.ll"
5597 {
5598  if(getIsIdContext())
5599  {
5600  mIsIdAlreadyAdded = true;
5601  REJECT;
5602  }
5603  return Token::TABLE;
5604  }
5605  YY_BREAK
5606 case 262:
5608 #line 2195 "Scanner.ll"
5609 {
5610  if(getIsIdContext())
5611  {
5612  mIsIdAlreadyAdded = true;
5613  REJECT;
5614  }
5615  return Token::TABLEDEFAULT;
5616  }
5617  YY_BREAK
5618 case 263:
5620 #line 2203 "Scanner.ll"
5621 {
5622  if(getIsIdContext())
5623  {
5624  mIsIdAlreadyAdded = true;
5625  REJECT;
5626  }
5627  return Token::TECHNOLOGY;
5628  }
5629  YY_BREAK
5630 case 264:
5632 #line 2211 "Scanner.ll"
5633 {
5634  if(getIsIdContext())
5635  {
5636  mIsIdAlreadyAdded = true;
5637  REJECT;
5638  }
5639  return Token::TEXTHEIGHT;
5640  }
5641  YY_BREAK
5642 case 265:
5644 #line 2219 "Scanner.ll"
5645 {
5646  if(getIsIdContext())
5647  {
5648  mIsIdAlreadyAdded = true;
5649  REJECT;
5650  }
5651  return Token::TIMEINTERVAL;
5652  }
5653  YY_BREAK
5654 case 266:
5656 #line 2227 "Scanner.ll"
5657 {
5658  if(getIsIdContext())
5659  {
5660  mIsIdAlreadyAdded = true;
5661  REJECT;
5662  }
5663  return Token::TIMESTAMP;
5664  }
5665  YY_BREAK
5666 case 267:
5668 #line 2235 "Scanner.ll"
5669 {
5670  if(getIsIdContext())
5671  {
5672  mIsIdAlreadyAdded = true;
5673  REJECT;
5674  }
5675  return Token::TIMING;
5676  }
5677  YY_BREAK
5678 case 268:
5680 #line 2243 "Scanner.ll"
5681 {
5682  if(getIsIdContext())
5683  {
5684  mIsIdAlreadyAdded = true;
5685  REJECT;
5686  }
5687  return Token::TRANSFORM;
5688  }
5689  YY_BREAK
5690 case 269:
5692 #line 2251 "Scanner.ll"
5693 {
5694  if(getIsIdContext())
5695  {
5696  mIsIdAlreadyAdded = true;
5697  REJECT;
5698  }
5699  return Token::TRANSITION;
5700  }
5701  YY_BREAK
5702 case 270:
5704 #line 2259 "Scanner.ll"
5705 {
5706  if(getIsIdContext())
5707  {
5708  mIsIdAlreadyAdded = true;
5709  REJECT;
5710  }
5711  return Token::TRIGGER;
5712  }
5713  YY_BREAK
5714 case 271:
5716 #line 2267 "Scanner.ll"
5717 {
5718  if(getIsIdContext())
5719  {
5720  mIsIdAlreadyAdded = true;
5721  REJECT;
5722  }
5723  return Token::TRUE;
5724  }
5725  YY_BREAK
5726 case 272:
5728 #line 2275 "Scanner.ll"
5729 {
5730  if(getIsIdContext())
5731  {
5732  mIsIdAlreadyAdded = true;
5733  REJECT;
5734  }
5735  return Token::UNCONSTRAINED;
5736  }
5737  YY_BREAK
5738 case 273:
5740 #line 2283 "Scanner.ll"
5741 {
5742  if(getIsIdContext())
5743  {
5744  mIsIdAlreadyAdded = true;
5745  REJECT;
5746  }
5747  return Token::UNDEFINED;
5748  }
5749  YY_BREAK
5750 case 274:
5752 #line 2291 "Scanner.ll"
5753 {
5754  if(getIsIdContext())
5755  {
5756  mIsIdAlreadyAdded = true;
5757  REJECT;
5758  }
5759  return Token::UNION;
5760  }
5761  YY_BREAK
5762 case 275:
5764 #line 2299 "Scanner.ll"
5765 {
5766  if(getIsIdContext())
5767  {
5768  mIsIdAlreadyAdded = true;
5769  REJECT;
5770  }
5771  return Token::UNIT;
5772  }
5773  YY_BREAK
5774 case 276:
5776 #line 2307 "Scanner.ll"
5777 {
5778  if(getIsIdContext())
5779  {
5780  mIsIdAlreadyAdded = true;
5781  REJECT;
5782  }
5783  return Token::UNUSED;
5784  }
5785  YY_BREAK
5786 case 277:
5788 #line 2315 "Scanner.ll"
5789 {
5790  if(getIsIdContext())
5791  {
5792  mIsIdAlreadyAdded = true;
5793  REJECT;
5794  }
5795  setIsIdContext(true);
5796  return Token::USERDATA;
5797  }
5798  YY_BREAK
5799 case 278:
5801 #line 2324 "Scanner.ll"
5802 {
5803  if(getIsIdContext())
5804  {
5805  mIsIdAlreadyAdded = true;
5806  REJECT;
5807  }
5808  return Token::VERSION;
5809  }
5810  YY_BREAK
5811 case 279:
5813 #line 2332 "Scanner.ll"
5814 {
5815  if(getIsIdContext())
5816  {
5817  mIsIdAlreadyAdded = true;
5818  REJECT;
5819  }
5820  setIsIdContext(true);
5821  return Token::VIEW;
5822  }
5823  YY_BREAK
5824 case 280:
5826 #line 2341 "Scanner.ll"
5827 {
5828  if(getIsIdContext())
5829  {
5830  mIsIdAlreadyAdded = true;
5831  REJECT;
5832  }
5833  return Token::VIEWLIST;
5834  }
5835  YY_BREAK
5836 case 281:
5838 #line 2349 "Scanner.ll"
5839 {
5840  if(getIsIdContext())
5841  {
5842  mIsIdAlreadyAdded = true;
5843  REJECT;
5844  }
5845  return Token::VIEWMAP;
5846  }
5847  YY_BREAK
5848 case 282:
5850 #line 2357 "Scanner.ll"
5851 {
5852  if(getIsIdContext())
5853  {
5854  mIsIdAlreadyAdded = true;
5855  REJECT;
5856  }
5857  setIsIdContext(true);
5858  return Token::VIEWREF;
5859  }
5860  YY_BREAK
5861 case 283:
5863 #line 2366 "Scanner.ll"
5864 {
5865  if(getIsIdContext())
5866  {
5867  mIsIdAlreadyAdded = true;
5868  REJECT;
5869  }
5870  return Token::VIEWTYPE;
5871  }
5872  YY_BREAK
5873 case 284:
5875 #line 2374 "Scanner.ll"
5876 {
5877  if(getIsIdContext())
5878  {
5879  mIsIdAlreadyAdded = true;
5880  REJECT;
5881  }
5882  return Token::VISIBLE;
5883  }
5884  YY_BREAK
5885 case 285:
5887 #line 2382 "Scanner.ll"
5888 {
5889  if(getIsIdContext())
5890  {
5891  mIsIdAlreadyAdded = true;
5892  REJECT;
5893  }
5894  return Token::VOLTAGEMAP;
5895  }
5896  YY_BREAK
5897 case 286:
5899 #line 2390 "Scanner.ll"
5900 {
5901  if(getIsIdContext())
5902  {
5903  mIsIdAlreadyAdded = true;
5904  REJECT;
5905  }
5906  setIsIdContext(true);
5907  return Token::WAVEVALUE;
5908  }
5909  YY_BREAK
5910 case 287:
5912 #line 2399 "Scanner.ll"
5913 {
5914  if(getIsIdContext())
5915  {
5916  mIsIdAlreadyAdded = true;
5917  REJECT;
5918  }
5919  return Token::WEAK;
5920  }
5921  YY_BREAK
5922 case 288:
5924 #line 2407 "Scanner.ll"
5925 {
5926  if(getIsIdContext())
5927  {
5928  mIsIdAlreadyAdded = true;
5929  REJECT;
5930  }
5931  return Token::WEAKJOINED;
5932  }
5933  YY_BREAK
5934 case 289:
5936 #line 2415 "Scanner.ll"
5937 {
5938  if(getIsIdContext())
5939  {
5940  mIsIdAlreadyAdded = true;
5941  REJECT;
5942  }
5943  return Token::WHEN;
5944  }
5945  YY_BREAK
5946 case 290:
5948 #line 2423 "Scanner.ll"
5949 {
5950  if(getIsIdContext())
5951  {
5952  mIsIdAlreadyAdded = true;
5953  REJECT;
5954  }
5955  return Token::WRITTEN;
5956  }
5957  YY_BREAK
5958 case 291:
5960 #line 2433 "Scanner.ll"
5961 {
5962  yylval->stringVal = new std::string(yytext, yyleng);
5963  setIsIdContext(false);
5964  return Token::IDENTIFIER;
5965  }
5966  YY_BREAK
5967 case 292:
5969 #line 2439 "Scanner.ll"
5970 { yylval->integerVal = atoi(yytext);
5971  return Token::INTEGER;
5972  }
5973  YY_BREAK
5974 case 293:
5976 #line 2443 "Scanner.ll"
5977 { yylval->doubleVal = atof(yytext);
5978  return Token::DOUBLE;
5979  }
5980  YY_BREAK
5981 case 294:
5982 /* rule 294 can match eol */
5984 #line 2447 "Scanner.ll"
5985 {
5986  yylval->stringVal = new std::string(yytext +1, yyleng -2);
5987  return Token::STRING;
5988  }
5989  YY_BREAK
5990 /* gobble up white-spaces */
5991 case 295:
5993 #line 2454 "Scanner.ll"
5994 {
5995  yylloc->step();
5996 }
5997  YY_BREAK
5998 /* gobble up end-of-lines */
5999 case 296:
6000 /* rule 296 can match eol */
6002 #line 2459 "Scanner.ll"
6003 {
6004  yylloc->lines(yyleng); yylloc->step();
6005  /* return Token::EOL; */
6006 }
6007  YY_BREAK
6008 /* pass all other characters up to bison */
6009 case 297:
6011 #line 2465 "Scanner.ll"
6012 {
6013  return static_cast<TokenType>(*yytext);
6014 }
6015  YY_BREAK
6016 case 298:
6018 #line 2470 "Scanner.ll"
6019 ECHO;
6020  YY_BREAK
6021 #line 6020 "lex.Edif.cc"
6022  case YY_STATE_EOF(INITIAL):
6023  yyterminate();
6024 
6025  case YY_END_OF_BUFFER:
6026  {
6027  /* Amount of text matched not including the EOB char. */
6028  int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
6029 
6030  /* Undo the effects of YY_DO_BEFORE_ACTION. */
6031  *yy_cp = (yy_hold_char);
6033 
6034  if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW)
6035  {
6036  /* We're scanning a new file or input source. It's
6037  * possible that this happened because the user
6038  * just pointed yyin at a new source and called
6039  * yylex(). If so, then we have to assure
6040  * consistency between YY_CURRENT_BUFFER and our
6041  * globals. Here is the right place to do so, because
6042  * this is the first action (other than possibly a
6043  * back-up) that will match for the new input source.
6044  */
6045  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6046  YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
6047  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
6048  }
6049 
6050  /* Note that here we test for yy_c_buf_p "<=" to the position
6051  * of the first EOB in the buffer, since yy_c_buf_p will
6052  * already have been incremented past the NUL character
6053  * (since all states make transitions on EOB to the
6054  * end-of-buffer state). Contrast this with the test
6055  * in input().
6056  */
6057  if ((yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)])
6058  { /* This was really a NUL. */
6059  yy_state_type yy_next_state;
6060 
6061  (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
6062 
6063  yy_current_state = yy_get_previous_state();
6064 
6065  /* Okay, we're now positioned to make the NUL
6066  * transition. We couldn't have
6067  * yy_get_previous_state() go ahead and do it
6068  * for us because it doesn't know how to deal
6069  * with the possibility of jamming (and we don't
6070  * want to build jamming into it because then it
6071  * will run more slowly).
6072  */
6073 
6074  yy_next_state = yy_try_NUL_trans(yy_current_state);
6075 
6076  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6077 
6078  if (yy_next_state)
6079  {
6080  /* Consume the NUL. */
6081  yy_cp = ++(yy_c_buf_p);
6082  yy_current_state = yy_next_state;
6083  goto yy_match;
6084  }
6085 
6086  else
6087  {
6088 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
6089  yy_cp = (yy_c_buf_p);
6090  goto yy_find_action;
6091  }
6092  }
6093 
6094  else switch (yy_get_next_buffer() )
6095  {
6096  case EOB_ACT_END_OF_FILE:
6097  {
6098  (yy_did_buffer_switch_on_eof) = 0;
6099 
6100  if (yywrap() )
6101  {
6102  /* Note: because we've taken care in
6103  * yy_get_next_buffer() to have set up
6104  * yytext, we can now set up
6105  * yy_c_buf_p so that if some total
6106  * hoser (like flex itself) wants to
6107  * call the scanner after we return the
6108  * YY_NULL, it'll still work - another
6109  * YY_NULL will get returned.
6110  */
6111  (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
6112 
6113  yy_act = YY_STATE_EOF(YY_START);
6114  goto do_action;
6115  }
6116 
6117  else
6118  {
6119  if (! (yy_did_buffer_switch_on_eof))
6120  YY_NEW_FILE;
6121  }
6122  break;
6123  }
6124 
6125  case EOB_ACT_CONTINUE_SCAN:
6126  (yy_c_buf_p) =
6127  (yytext_ptr) + yy_amount_of_matched_text;
6128 
6129  yy_current_state = yy_get_previous_state();
6130 
6131  yy_cp = (yy_c_buf_p);
6132  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6133  goto yy_match;
6134 
6135  case EOB_ACT_LAST_MATCH:
6136  (yy_c_buf_p) =
6137  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
6138 
6139  yy_current_state = yy_get_previous_state();
6140 
6141  yy_cp = (yy_c_buf_p);
6142  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6143  goto yy_find_action;
6144  }
6145  break;
6146  }
6147 
6148  default:
6150  "fatal flex scanner internal error--no action found" );
6151  } /* end of action switch */
6152  } /* end of scanning one token */
6153 } /* end of yylex */
6154 /* %ok-for-header */
6155 
6156 /* %if-c++-only */
6157 /* %not-for-header */
6158 
6159 /* The contents of this function are C++ specific, so the () macro is not used.
6160  */
6161 yyFlexLexer::yyFlexLexer(std::istream* arg_yyin, std::ostream* arg_yyout)
6162 {
6163  yyin = arg_yyin;
6164  yyout = arg_yyout;
6165  yy_c_buf_p = 0;
6166  yy_init = 0;
6167  yy_start = 0;
6168  yy_flex_debug = 0;
6169  yylineno = 1; // this will only get updated if %option yylineno
6170 
6172 
6174  yy_more_flag = 0;
6175  yy_more_len = 0;
6177 
6179  yy_start_stack = NULL;
6180 
6181  yy_buffer_stack = 0;
6182  yy_buffer_stack_top = 0;
6183  yy_buffer_stack_max = 0;
6184 
6186 
6187 }
6188 
6189 /* The contents of this function are C++ specific, so the () macro is not used.
6190  */
6192 {
6193  delete [] yy_state_buf;
6197 }
6198 
6199 /* The contents of this function are C++ specific, so the () macro is not used.
6200  */
6201 void yyFlexLexer::switch_streams(std::istream* new_in, std::ostream* new_out)
6202 {
6203  if (new_in)
6204  {
6207  }
6208 
6209  if (new_out)
6210  yyout = new_out;
6211 }
6212 
6213 #ifdef YY_INTERACTIVE
6214 int yyFlexLexer::LexerInput(char* buf, int /* max_size */)
6215 #else
6216 int yyFlexLexer::LexerInput(char* buf, int max_size)
6217 #endif
6218 {
6219  if (yyin->eof() || yyin->fail())
6220  return 0;
6221 
6222 #ifdef YY_INTERACTIVE
6223  yyin->get(buf[0]);
6224 
6225  if (yyin->eof())
6226  return 0;
6227 
6228  if (yyin->bad())
6229  return -1;
6230 
6231  return 1;
6232 
6233 #else
6234  (void) yyin->read(buf, max_size);
6235 
6236  if (yyin->bad())
6237  return -1;
6238  else
6239  return yyin->gcount();
6240 #endif
6241 }
6242 
6243 void yyFlexLexer::LexerOutput(const char* buf, int size)
6244 {
6245  (void) yyout->write(buf, size);
6246 }
6247 /* %ok-for-header */
6248 
6249 /* %endif */
6250 
6251 /* yy_get_next_buffer - try to read in a new buffer
6252  *
6253  * Returns a code representing an action:
6254  * EOB_ACT_LAST_MATCH -
6255  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
6256  * EOB_ACT_END_OF_FILE - end of file
6257  */
6258 /* %if-c-only */
6259 /* %endif */
6260 /* %if-c++-only */
6262 /* %endif */
6263 {
6264  register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
6265  register char *source = (yytext_ptr);
6266  register int number_to_move, i;
6267  int ret_val;
6268 
6269  if ((yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1])
6271  "fatal flex scanner internal error--end of buffer missed" );
6272 
6273  if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0)
6274  { /* Don't try to fill the buffer, so this is an EOF. */
6275  if ((yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1)
6276  {
6277  /* We matched a single character, the EOB, so
6278  * treat this as a final EOF.
6279  */
6280  return EOB_ACT_END_OF_FILE;
6281  }
6282 
6283  else
6284  {
6285  /* We matched some text prior to the EOB, first
6286  * process it.
6287  */
6288  return EOB_ACT_LAST_MATCH;
6289  }
6290  }
6291 
6292  /* Try to read more data. */
6293 
6294  /* First move last chars to start of buffer. */
6295  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
6296 
6297  for (i = 0; i < number_to_move; ++i)
6298  *(dest++) = *(source++);
6299 
6300  if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING)
6301  /* don't do the read, it's not guaranteed to return an EOF,
6302  * just force an EOF
6303  */
6304  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
6305 
6306  else
6307  {
6308  int num_to_read =
6309  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
6310 
6311  while (num_to_read <= 0)
6312  { /* Not enough room in the buffer - grow it. */
6313 
6315 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
6316 
6317  }
6318 
6319  if (num_to_read > YY_READ_BUF_SIZE)
6320  num_to_read = YY_READ_BUF_SIZE;
6321 
6322  /* Read in more data. */
6323  YY_INPUT((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
6324  (yy_n_chars), (size_t) num_to_read );
6325 
6326  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6327  }
6328 
6329  if ((yy_n_chars) == 0)
6330  {
6331  if (number_to_move == YY_MORE_ADJ)
6332  {
6333  ret_val = EOB_ACT_END_OF_FILE;
6334  yyrestart(yyin);
6335  }
6336 
6337  else
6338  {
6339  ret_val = EOB_ACT_LAST_MATCH;
6340  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
6342  }
6343  }
6344 
6345  else
6346  ret_val = EOB_ACT_CONTINUE_SCAN;
6347 
6348  if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
6349  /* Extend the array by 50%, plus the number we really need. */
6350  yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
6351  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) Edifrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
6352  if (! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf)
6353  YY_FATAL_ERROR("out of dynamic memory in yy_get_next_buffer()");
6354  }
6355 
6356  (yy_n_chars) += number_to_move;
6359 
6360  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
6361 
6362  return ret_val;
6363 }
6364 
6365 /* yy_get_previous_state - get the state just before the EOB char was reached */
6366 
6367 /* %if-c-only */
6368 /* %not-for-header */
6369 
6370 /* %endif */
6371 /* %if-c++-only */
6373 /* %endif */
6374 {
6376  register char *yy_cp;
6377 
6378 /* %% [15.0] code to get the start state into yy_current_state goes here */
6379  yy_current_state = (yy_start);
6380 
6381  (yy_state_ptr) = (yy_state_buf);
6382  *(yy_state_ptr)++ = yy_current_state;
6383 
6384  for (yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp)
6385  {
6386 /* %% [16.0] code to find the next state goes here */
6387  register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
6388  while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state)
6389  {
6390  yy_current_state = (int) yy_def[yy_current_state];
6391  if (yy_current_state >= 1721)
6392  yy_c = yy_meta[(unsigned int) yy_c];
6393  }
6394  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6395  *(yy_state_ptr)++ = yy_current_state;
6396  }
6397 
6398  return yy_current_state;
6399 }
6400 
6401 /* yy_try_NUL_trans - try to make a transition on the NUL character
6402  *
6403  * synopsis
6404  * next_state = yy_try_NUL_trans(current_state);
6405  */
6406 /* %if-c-only */
6407 /* %endif */
6408 /* %if-c++-only */
6410 /* %endif */
6411 {
6412  register int yy_is_jam;
6413  /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
6414 
6415  register YY_CHAR yy_c = 1;
6416  while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state)
6417  {
6418  yy_current_state = (int) yy_def[yy_current_state];
6419  if (yy_current_state >= 1721)
6420  yy_c = yy_meta[(unsigned int) yy_c];
6421  }
6422  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6423  yy_is_jam = (yy_current_state == 1720);
6424  if (! yy_is_jam)
6425  *(yy_state_ptr)++ = yy_current_state;
6426 
6427  return yy_is_jam ? 0 : yy_current_state;
6428 }
6429 
6430 /* %if-c-only */
6431 /* %endif */
6432 /* %if-c++-only */
6433  void yyFlexLexer::yyunput(int c, register char* yy_bp)
6434 /* %endif */
6435 {
6436  register char *yy_cp;
6437 
6438  yy_cp = (yy_c_buf_p);
6439 
6440  /* undo effects of setting up yytext */
6441  *yy_cp = (yy_hold_char);
6442 
6443  if (yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2)
6444  { /* need to shift things up to make room */
6445  /* +2 for EOB chars. */
6446  register int number_to_move = (yy_n_chars) + 2;
6447  register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
6448  YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
6449  register char *source =
6450  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
6451 
6452  while (source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf)
6453  *--dest = *--source;
6454 
6455  yy_cp += (int) (dest - source);
6456  yy_bp += (int) (dest - source);
6457  YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
6458  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
6459 
6460  if (yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2)
6461  YY_FATAL_ERROR("flex scanner push-back overflow");
6462  }
6463 
6464  *--yy_cp = (char) c;
6465 
6466 /* %% [18.0] update yylineno here */
6467 
6468  (yytext_ptr) = yy_bp;
6469  (yy_hold_char) = *yy_cp;
6470  (yy_c_buf_p) = yy_cp;
6471 }
6472 /* %if-c-only */
6473 /* %endif */
6474 
6475 /* %if-c-only */
6476 /* %endif */
6477 /* %if-c++-only */
6478  int yyFlexLexer::yyinput()
6479 /* %endif */
6480 {
6481  int c;
6482 
6483  *(yy_c_buf_p) = (yy_hold_char);
6484 
6486  {
6487  /* yy_c_buf_p now points to the character we want to return.
6488  * If this occurs *before* the EOB characters, then it's a
6489  * valid NUL; if not, then we've hit the end of the buffer.
6490  */
6491  if ((yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)])
6492  /* This was really a NUL. */
6493  *(yy_c_buf_p) = '\0';
6494 
6495  else
6496  { /* need more input */
6497  int offset = (yy_c_buf_p) - (yytext_ptr);
6498  ++(yy_c_buf_p);
6499 
6500  switch (yy_get_next_buffer() )
6501  {
6502  case EOB_ACT_LAST_MATCH:
6503  /* This happens because yy_g_n_b()
6504  * sees that we've accumulated a
6505  * token and flags that we need to
6506  * try matching the token before
6507  * proceeding. But for input(),
6508  * there's no matching to consider.
6509  * So convert the EOB_ACT_LAST_MATCH
6510  * to EOB_ACT_END_OF_FILE.
6511  */
6512 
6513  /* Reset buffer status. */
6514  yyrestart(yyin);
6515 
6516  /*FALLTHROUGH*/
6517 
6518  case EOB_ACT_END_OF_FILE:
6519  {
6520  if (yywrap() )
6521  return EOF;
6522 
6524  YY_NEW_FILE;
6525 #ifdef __cplusplus
6526  return yyinput();
6527 #else
6528  return input();
6529 #endif
6530  }
6531 
6532  case EOB_ACT_CONTINUE_SCAN:
6533  (yy_c_buf_p) = (yytext_ptr) + offset;
6534  break;
6535  }
6536  }
6537  }
6538 
6539  c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
6540  *(yy_c_buf_p) = '\0'; /* preserve yytext */
6541  (yy_hold_char) = *++(yy_c_buf_p);
6542 
6543 /* %% [19.0] update BOL and yylineno */
6544 
6545  return c;
6546 }
6547 /* %if-c-only */
6548 /* %endif */
6549 
6550 /** Immediately switch to a different input stream.
6551  * @param input_file A readable stream.
6552  *
6553  * @note This function does not reset the start condition to @c INITIAL .
6554  */
6555 /* %if-c-only */
6556 /* %endif */
6557 /* %if-c++-only */
6558  void yyFlexLexer::yyrestart(std::istream* input_file)
6559 /* %endif */
6560 {
6561 
6562  if (! YY_CURRENT_BUFFER){
6566  }
6567 
6568  yy_init_buffer(YY_CURRENT_BUFFER, input_file);
6570 }
6571 
6572 /** Switch to a different input buffer.
6573  * @param new_buffer The new input buffer.
6574  *
6575  */
6576 /* %if-c-only */
6577 /* %endif */
6578 /* %if-c++-only */
6579  void yyFlexLexer::yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)
6580 /* %endif */
6581 {
6582 
6583  /* TODO. We should be able to replace this entire function body
6584  * with
6585  * yypop_buffer_state();
6586  * yypush_buffer_state(new_buffer);
6587  */
6589  if (YY_CURRENT_BUFFER == new_buffer)
6590  return;
6591 
6592  if (YY_CURRENT_BUFFER)
6593  {
6594  /* Flush out information for old buffer. */
6595  *(yy_c_buf_p) = (yy_hold_char);
6596  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6597  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6598  }
6599 
6600  YY_CURRENT_BUFFER_LVALUE = new_buffer;
6602 
6603  /* We don't actually know whether we did this switch during
6604  * EOF (yywrap()) processing, but the only time this flag
6605  * is looked at is after yywrap() is called, so it's safe
6606  * to go ahead and always set it.
6607  */
6609 }
6610 
6611 /* %if-c-only */
6612 /* %endif */
6613 /* %if-c++-only */
6615 /* %endif */
6616 {
6617  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6618  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6619  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6620  (yy_hold_char) = *(yy_c_buf_p);
6621 }
6622 
6623 /** Allocate and initialize an input buffer state.
6624  * @param file A readable stream.
6625  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
6626  *
6627  * @return the allocated buffer state.
6628  */
6629 /* %if-c-only */
6630 /* %endif */
6631 /* %if-c++-only */
6632  YY_BUFFER_STATE yyFlexLexer::yy_create_buffer(std::istream* file, int size)
6633 /* %endif */
6634 {
6635  YY_BUFFER_STATE b;
6636 
6637  b = (YY_BUFFER_STATE) Edifalloc(sizeof(struct yy_buffer_state) );
6638  if (! b)
6639  YY_FATAL_ERROR("out of dynamic memory in yy_create_buffer()");
6640 
6641  b->yy_buf_size = size;
6642 
6643  /* yy_ch_buf has to be 2 characters longer than the size given because
6644  * we need to put in 2 end-of-buffer characters.
6645  */
6646  b->yy_ch_buf = (char *) Edifalloc(b->yy_buf_size + 2 );
6647  if (! b->yy_ch_buf)
6648  YY_FATAL_ERROR("out of dynamic memory in yy_create_buffer()");
6649 
6650  b->yy_is_our_buffer = 1;
6651 
6652  yy_init_buffer(b, file);
6653 
6654  return b;
6655 }
6656 
6657 /** Destroy the buffer.
6658  * @param b a buffer created with yy_create_buffer()
6659  *
6660  */
6661 /* %if-c-only */
6662 /* %endif */
6663 /* %if-c++-only */
6664  void yyFlexLexer::yy_delete_buffer(YY_BUFFER_STATE b)
6665 /* %endif */
6666 {
6667 
6668  if (! b)
6669  return;
6670 
6671  if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */
6673 
6674  if (b->yy_is_our_buffer)
6675  Ediffree((void *) b->yy_ch_buf );
6676 
6677  Ediffree((void *) b );
6678 }
6679 
6680 /* %if-c-only */
6681 /* %endif */
6682 
6683 /* %if-c++-only */
6684 
6685 extern "C" int isatty (int );
6686 
6687 /* %endif */
6688 
6689 /* Initializes or reinitializes a buffer.
6690  * This function is sometimes called more than once on the same buffer,
6691  * such as during a yyrestart() or at EOF.
6692  */
6693 /* %if-c-only */
6694 /* %endif */
6695 /* %if-c++-only */
6696  void yyFlexLexer::yy_init_buffer(YY_BUFFER_STATE b, std::istream* file)
6697 /* %endif */
6698 
6699 {
6700  int oerrno = errno;
6701 
6702  yy_flush_buffer(b);
6703 
6704  b->yy_input_file = file;
6705  b->yy_fill_buffer = 1;
6706 
6707  /* If b is the current buffer, then yy_init_buffer was _probably_
6708  * called from yyrestart() or through yy_get_next_buffer.
6709  * In that case, we don't want to reset the lineno or column.
6710  */
6711  if (b != YY_CURRENT_BUFFER){
6712  b->yy_bs_lineno = 1;
6713  b->yy_bs_column = 0;
6714  }
6715 
6716 /* %if-c-only */
6717 /* %endif */
6718 /* %if-c++-only */
6719  b->yy_is_interactive = 0;
6720 /* %endif */
6721  errno = oerrno;
6722 }
6723 
6724 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
6725  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
6726  *
6727  */
6728 /* %if-c-only */
6729 /* %endif */
6730 /* %if-c++-only */
6731  void yyFlexLexer::yy_flush_buffer(YY_BUFFER_STATE b)
6732 /* %endif */
6733 {
6734  if (! b)
6735  return;
6736 
6737  b->yy_n_chars = 0;
6738 
6739  /* We always need two end-of-buffer characters. The first causes
6740  * a transition to the end-of-buffer state. The second causes
6741  * a jam in that state.
6742  */
6745 
6746  b->yy_buf_pos = &b->yy_ch_buf[0];
6747 
6748  b->yy_at_bol = 1;
6750 
6751  if (b == YY_CURRENT_BUFFER)
6753 }
6754 
6755 /* %if-c-or-c++ */
6756 /** Pushes the new state onto the stack. The new state becomes
6757  * the current state. This function will allocate the stack
6758  * if necessary.
6759  * @param new_buffer The new state.
6760  *
6761  */
6762 /* %if-c-only */
6763 /* %endif */
6764 /* %if-c++-only */
6765 void yyFlexLexer::yypush_buffer_state (YY_BUFFER_STATE new_buffer)
6766 /* %endif */
6767 {
6768  if (new_buffer == NULL)
6769  return;
6770 
6772 
6773  /* This block is copied from yy_switch_to_buffer. */
6774  if (YY_CURRENT_BUFFER)
6775  {
6776  /* Flush out information for old buffer. */
6777  *(yy_c_buf_p) = (yy_hold_char);
6778  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6779  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6780  }
6781 
6782  /* Only push if top exists. Otherwise, replace top. */
6783  if (YY_CURRENT_BUFFER)
6784  (yy_buffer_stack_top)++;
6785  YY_CURRENT_BUFFER_LVALUE = new_buffer;
6786 
6787  /* copied from yy_switch_to_buffer. */
6790 }
6791 /* %endif */
6792 
6793 /* %if-c-or-c++ */
6794 /** Removes and deletes the top of the stack, if present.
6795  * The next element becomes the new top.
6796  *
6797  */
6798 /* %if-c-only */
6799 /* %endif */
6800 /* %if-c++-only */
6802 /* %endif */
6803 {
6804  if (!YY_CURRENT_BUFFER)
6805  return;
6806 
6808  YY_CURRENT_BUFFER_LVALUE = NULL;
6809  if ((yy_buffer_stack_top) > 0)
6810  --(yy_buffer_stack_top);
6811 
6812  if (YY_CURRENT_BUFFER) {
6815  }
6816 }
6817 /* %endif */
6818 
6819 /* %if-c-or-c++ */
6820 /* Allocates the stack if it does not exist.
6821  * Guarantees space for at least one push.
6822  */
6823 /* %if-c-only */
6824 /* %endif */
6825 /* %if-c++-only */
6827 /* %endif */
6828 {
6829  int num_to_alloc;
6830 
6831  if (!(yy_buffer_stack)) {
6832 
6833  /* First allocation is just for 2 elements, since we don't know if this
6834  * scanner will even need a stack. We use 2 instead of 1 to avoid an
6835  * immediate realloc on the next call.
6836  */
6837  num_to_alloc = 1;
6839  (num_to_alloc * sizeof(struct yy_buffer_state*)
6840  );
6841  if (! (yy_buffer_stack))
6842  YY_FATAL_ERROR("out of dynamic memory in yyensure_buffer_stack()");
6843 
6844  memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
6845 
6846  (yy_buffer_stack_max) = num_to_alloc;
6847  (yy_buffer_stack_top) = 0;
6848  return;
6849  }
6850 
6851  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
6852 
6853  /* Increase the buffer to prepare for a possible push. */
6854  int grow_size = 8 /* arbitrary grow size */;
6855 
6856  num_to_alloc = (yy_buffer_stack_max) + grow_size;
6858  ((yy_buffer_stack),
6859  num_to_alloc * sizeof(struct yy_buffer_state*)
6860  );
6861  if (! (yy_buffer_stack))
6862  YY_FATAL_ERROR("out of dynamic memory in yyensure_buffer_stack()");
6863 
6864  /* zero only the new slots.*/
6865  memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
6866  (yy_buffer_stack_max) = num_to_alloc;
6867  }
6868 }
6869 /* %endif */
6870 
6871 /* %if-c-only */
6872 /* %endif */
6873 
6874 /* %if-c-only */
6875 /* %endif */
6876 
6877 /* %if-c-only */
6878 /* %endif */
6879 
6880 /* %if-c-only */
6881 /* %endif */
6882 /* %if-c++-only */
6883  void yyFlexLexer::yy_push_state(int new_state)
6884 /* %endif */
6885 {
6887  {
6888  yy_size_t new_size;
6889 
6891  new_size = (yy_start_stack_depth) * sizeof(int);
6892 
6893  if (! (yy_start_stack))
6894  (yy_start_stack) = (int *) Edifalloc(new_size );
6895 
6896  else
6897  (yy_start_stack) = (int *) Edifrealloc((void *) (yy_start_stack),new_size );
6898 
6899  if (! (yy_start_stack))
6900  YY_FATAL_ERROR("out of memory expanding start-condition stack");
6901  }
6902 
6904 
6905  BEGIN(new_state);
6906 }
6907 
6908 /* %if-c-only */
6909 /* %endif */
6910 /* %if-c++-only */
6912 /* %endif */
6913 {
6914  if (--(yy_start_stack_ptr) < 0)
6915  YY_FATAL_ERROR("start-condition stack underflow");
6916 
6918 }
6919 
6920 /* %if-c-only */
6921 /* %endif */
6922 /* %if-c++-only */
6924 /* %endif */
6925 {
6926  return (yy_start_stack)[(yy_start_stack_ptr) - 1];
6927 }
6928 
6929 #ifndef YY_EXIT_FAILURE
6930 #define YY_EXIT_FAILURE 2
6931 #endif
6932 
6933 /* %if-c-only */
6934 /* %endif */
6935 /* %if-c++-only */
6936 void yyFlexLexer::LexerError(yyconst char msg[])
6937 {
6938  std::cerr << msg << std::endl;
6939  exit(YY_EXIT_FAILURE);
6940 }
6941 /* %endif */
6942 
6943 /* Redefine yyless() so it works in section 3 code. */
6944 
6945 #undef yyless
6946 #define yyless(n) \
6947  do \
6948  { \
6949  /* Undo effects of setting up yytext. */ \
6950  int yyless_macro_arg = (n); \
6951  YY_LESS_LINENO(yyless_macro_arg);\
6952  yytext[yyleng] = (yy_hold_char); \
6953  (yy_c_buf_p) = yytext + yyless_macro_arg; \
6954  (yy_hold_char) = *(yy_c_buf_p); \
6955  *(yy_c_buf_p) = '\0'; \
6956  yyleng = yyless_macro_arg; \
6957  } \
6958  while (0)
6959 
6960 /* Accessor methods (get/set functions) to struct members. */
6961 
6962 /* %if-c-only */
6963 /* %if-reentrant */
6964 /* %endif */
6965 /* %if-reentrant */
6966 /* %endif */
6967 /* %endif */
6968 
6969 /* %if-reentrant */
6970 /* %if-bison-bridge */
6971 /* %endif */
6972 /* %endif if-c-only */
6973 
6974 /* %if-c-only */
6975 /* %endif */
6976 
6977 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
6978 /* %if-reentrant */
6979 /* %endif */
6980 /* %endif */
6981 
6982 /*
6983  * Internal utility routines.
6984  */
6985 
6986 #ifndef yytext_ptr
6987 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
6988 {
6989  register int i;
6990  for (i = 0; i < n; ++i)
6991  s1[i] = s2[i];
6992 }
6993 #endif
6994 
6995 #ifdef YY_NEED_STRLEN
6996 static int yy_flex_strlen (yyconst char * s )
6997 {
6998  register int n;
6999  for (n = 0; s[n]; ++n)
7000  ;
7001 
7002  return n;
7003 }
7004 #endif
7005 
7006 void *Edifalloc (yy_size_t size )
7007 {
7008  return (void *) malloc(size);
7009 }
7010 
7011 void *Edifrealloc (void * ptr, yy_size_t size )
7012 {
7013  /* The cast to (char *) in the following accommodates both
7014  * implementations that use char* generic pointers, and those
7015  * that use void* generic pointers. It works with the latter
7016  * because both ANSI C and C++ allow castless assignment from
7017  * any pointer type to void*, and deal with argument conversions
7018  * as though doing an assignment.
7019  */
7020  return (void *) realloc((char *) ptr, size);
7021 }
7022 
7023 void Ediffree (void * ptr )
7024 {
7025  free((char *) ptr); /* see Edifrealloc() for (char *) cast */
7026 }
7027 
7028 /* %if-tables-serialization definitions */
7029 /* %define-yytables The name for this specific scanner's tables. */
7030 #define YYTABLES_NAME "yytables"
7031 /* %endif */
7032 
7033 /* %ok-for-header */
7034 
7035 #line 2470 "Scanner.ll"
7036 
7037 
7038 
7039 namespace torc {
7040 namespace generic {
7041 
7042 Scanner::Scanner(std::istream* in,
7043  std::ostream* out)
7044 : EdifFlexLexer(in, out),
7045  mIsIdContext(false),
7046  mAppendToBuffer(false),
7047  mAppendToUserDataBuffer(false),
7048  mBuffer(),
7049  mUserDataBuffer(),
7050  mIsIdAlreadyAdded(false)
7051 {}
7052 
7054 {}
7055 
7056 void
7057 Scanner::skipThisRule(char *yytext) {
7058  unsigned char c;
7059  int scope = 0;
7060  while(true)
7061  {
7062  c=yyinput();
7063  switch(c)
7064  {
7065  case '(':
7066  {
7067  scope++;
7068  break;
7069  }
7070  case ')':
7071  {
7072  if(-1 == scope)
7073  {
7074  yyunput(c, yytext);
7075  return;
7076  }
7077  scope--;
7078  break;
7079  }
7080  default:
7081  {
7082  }
7083  }
7084  }
7085 }
7086 
7087 void
7088 Scanner::setAppendToBuffer(bool inAppendToBuffer) {
7089  mAppendToBuffer = inAppendToBuffer;
7090 }
7091 
7092 void
7094  mBuffer = "";
7095 }
7096 
7097 void
7098 Scanner::setAppendToUserDataBuffer(bool inAppendToBuffer) {
7099  mAppendToUserDataBuffer = inAppendToBuffer;
7100 }
7101 
7102 void
7104  mUserDataBuffer = "";
7105 }
7106 
7107 void
7108 Scanner::addToBuffer(const char *str) {
7109  if(getAppendToBuffer())
7110  {
7111  mBuffer += str;
7112  }
7113 }
7114 
7115 void
7117  if(getAppendToUserDataBuffer() && (mIsIdAlreadyAdded == false))
7118  {
7119  mUserDataBuffer += str;
7120  }
7121  mIsIdAlreadyAdded = false;
7122 }
7123 
7124 void
7126 {
7127  yy_flex_debug = b;
7128 }
7129 
7130 } // namespace generic
7131 } // namespace torc
7132 
7133 /* This implementation of EdifFlexLexer::yylex() is required to fill the
7134  * vtable of the class EdifFlexLexer. We define the scanner's main yylex
7135  * function via YY_DECL to reside in the Scanner class instead. */
7136 
7137 #ifdef yylex
7138 #undef yylex
7139 #endif
7140 
7142 {
7143  std::cerr << "in EdifFlexLexer::yylex() !" << std::endl;
7144  return 0;
7145 }
7146 
7147 /* When the scanner receives an end-of-file indication from YY_INPUT, it then
7148  * checks the yywrap() function. If yywrap() returns false (zero), then it is
7149  * assumed that the function has gone ahead and set up `yyin' to point to
7150  * another input file, and scanning continues. If it returns true (non-zero),
7151  * then the scanner terminates, returning 0 to its caller. */
7152 
7153 int EdifFlexLexer::yywrap()
7154 {
7155  return 1;
7156 }
7157 
static yyconst flex_int16_t yy_acclist[2063]
Definition: Scanner.cc:409
void yy_switch_to_buffer(struct yy_buffer_state *new_buffer)
std::string mBuffer
Definition: Scanner.hpp:103
void yypush_buffer_state(struct yy_buffer_state *new_buffer)
#define YY_BUFFER_EOF_PENDING
Definition: Scanner.cc:307
char * yy_buf_pos
Bison lexer internals.
Definition: LutScanner.cpp:204
#define yylex
Definition: LutParser.cpp:36
int yy_n_chars
Bison lexer internals.
Definition: LutScanner.cpp:214
size_t yy_size_t
Definition: Scanner.cc:239
#define BEGIN
Definition: Scanner.cc:175
#define INITIAL
Definition: Scanner.cc:2171
#define YY_MORE_ADJ
Definition: Scanner.cc:2113
void yy_push_state(int new_state)
#define YY_INPUT(buf, result, max_size)
Definition: Scanner.cc:2242
#define EOB_ACT_LAST_MATCH
Definition: Scanner.cc:217
yy_state_type yy_try_NUL_trans(yy_state_type current_state)
int yy_fill_buffer
Bison lexer internals.
Definition: LutScanner.cpp:241
#define YY_RESTORE_YY_MORE_OFFSET
Definition: Scanner.cc:2114
int isatty(int)
size_t yy_size_t
Bison lexer internals.
Definition: LutScanner.cpp:193
void yy_flush_buffer(struct yy_buffer_state *b)
int yy_bs_lineno
Bison lexer internals.
Definition: LutScanner.cpp:235
std::string mUserDataBuffer
Definition: Scanner.hpp:104
#define YY_END_OF_BUFFER
Definition: Scanner.cc:401
struct yy_buffer_state * yy_create_buffer(FLEX_STD istream *s, int size)
#define YY_BUFFER_NORMAL
Definition: Scanner.cc:296
yy_size_t yy_buf_size
Bison lexer internals.
Definition: LutScanner.cpp:209
#define YY_DO_BEFORE_ACTION
Definition: Scanner.cc:390
#define YY_START_STACK_INCR
Definition: Scanner.cc:2262
#define YY_SC_TO_UI(c)
Definition: Scanner.cc:161
static yyconst flex_int16_t yy_nxt[3603]
Definition: Scanner.cc:1265
if(!(yy_init))
Definition: Scanner.cc:2337
void setAppendToUserDataBuffer(bool inAppendToBuffer)
Definition: Scanner.cc:7098
void yyunput(int c, char *buf_ptr)
void Ediffree(void *)
Definition: Scanner.cc:7023
void setAppendToBuffer(bool inAppendToBuffer)
Definition: Scanner.cc:7088
#define yyterminate()
Definition: Scanner.cc:2149
std::string string
void yypop_buffer_state()
virtual void LexerError(const char *msg)
#define YY_FATAL_ERROR(msg)
Definition: Scanner.cc:2270
register int yy_act
Definition: Scanner.cc:2323
int yy_at_bol
Bison lexer internals.
Definition: LutScanner.cpp:233
#define EOB_ACT_CONTINUE_SCAN
Definition: Scanner.cc:215
void yy_load_buffer_state()
void addToUserDataBuffer(const char *str)
Definition: Scanner.cc:7116
void * Edifalloc(yy_size_t)
Definition: Scanner.cc:7006
yyFlexLexer(FLEX_STD istream *arg_yyin=0, FLEX_STD ostream *arg_yyout=0)
unsigned int flex_uint32_t
Definition: Scanner.cc:82
int yy_bs_column
Bison lexer internals.
Definition: LutScanner.cpp:236
short int flex_int16_t
Bison lexer internals.
Definition: LutScanner.cpp:56
struct yy_buffer_state ** yy_buffer_stack
virtual int LexerInput(char *buf, int max_size)
Definition: LutScanner.cpp:930
#define YY_EXIT_FAILURE
Definition: Scanner.cc:6930
#define YY_CURRENT_BUFFER
Definition: Scanner.cc:327
torc::generic::Parser::token_type TokenType
Definition: Scanner.cc:2145
#define YY_END_OF_BUFFER_CHAR
Definition: Scanner.cc:190
void * Edifrealloc(void *, yy_size_t)
Definition: Scanner.cc:7011
#define YY_BREAK
Definition: Scanner.cc:2308
#define YY_BUFFER_NEW
Definition: Scanner.cc:295
unsigned short int flex_uint16_t
Definition: Scanner.cc:81
static yyconst flex_int16_t yy_rule_linenum[298]
Definition: Scanner.cc:2067
#define yytext_ptr
Definition: Scanner.cc:380
int yyleng
struct yy_buffer_state * YY_BUFFER_STATE
Definition: Scanner.cc:203
std::istream * yy_input_file
Bison lexer internals.
Definition: LutScanner.cpp:201
static yyconst flex_int32_t yy_ec[256]
Definition: Scanner.cc:834
char * yy_ch_buf
Bison lexer internals.
Definition: LutScanner.cpp:203
static yyconst flex_int16_t yy_def[1724]
Definition: Scanner.cc:1071
virtual void LexerOutput(const char *buf, int size)
Definition: LutScanner.cpp:957
Bison parser internals.
Definition: LutScanner.cpp:198
int yy_get_next_buffer()
Definition: LutScanner.cpp:969
int yy_is_our_buffer
Bison lexer internals.
Definition: LutScanner.cpp:220
void addToBuffer(const char *str)
Definition: Scanner.cc:7108
void yyensure_buffer_stack(void)
void set_debug(bool b)
Definition: Scanner.cc:7125
int flex_int32_t
Definition: Scanner.cc:79
static yyconst flex_int16_t yy_base[1724]
Definition: Scanner.cc:877
void skipThisRule(char *yytext)
Definition: Scanner.cc:7057
#define YY_BUF_SIZE
Definition: Scanner.cc:194
void yyrestart(FLEX_STD istream *s)
flex_int32_t yy_verify
Bison lexer internals.
Definition: LutScanner.cpp:329
#define YY_STATE_BUF_SIZE
Definition: Scanner.cc:199
void yy_delete_buffer(struct yy_buffer_state *b)
torc::generic::Parser::token Token
Definition: Scanner.cc:2144
static yyconst flex_int32_t yy_meta[71]
Definition: Scanner.cc:866
#define REJECT
Definition: Scanner.cc:2104
register char * yy_cp
Definition: Scanner.cc:2322
int yy_top_state()
virtual void switch_streams(FLEX_STD istream *new_in, FLEX_STD ostream *new_out)
#define YY_READ_BUF_SIZE
Definition: Scanner.cc:2226
#define EOB_ACT_END_OF_FILE
Definition: Scanner.cc:216
Scanner(std::istream *arg_yyin=0, std::ostream *arg_yyout=0)
Definition: Scanner.cc:7042
static yyconst flex_int16_t yy_accept[1722]
Definition: Scanner.cc:640
flex_int32_t yy_nxt
Bison lexer internals.
Definition: LutScanner.cpp:330
#define YY_NEW_FILE
Definition: Scanner.cc:188
void yy_pop_state()
void yy_init_buffer(struct yy_buffer_state *b, FLEX_STD istream *s)
int yy_is_interactive
Bison lexer internals.
Definition: LutScanner.cpp:227
short int flex_int16_t
Definition: Scanner.cc:78
YY_DECL register yy_state_type yy_current_state
Definition: Scanner.cc:2321
#define yyconst
Definition: Scanner.cc:145
unsigned char YY_CHAR
Definition: Scanner.cc:378
#define YY_CURRENT_BUFFER_LVALUE
Definition: Scanner.cc:334
signed char flex_int8_t
Definition: Scanner.cc:77
yy_state_type yy_get_previous_state()
virtual int yywrap()
int flex_int32_t
Bison lexer internals.
Definition: LutScanner.cpp:57
#define YY_STATE_EOF(state)
Definition: Scanner.cc:185
static yyconst flex_int16_t yy_chk[3603]
Definition: Scanner.cc:1666
#define YY_DECL
Definition: Scanner.cc:2295
unsigned char YY_CHAR
Bison lexer internals.
Definition: LutScanner.cpp:307
Bison parser internals.
Definition: LutScanner.cpp:327
int yy_buffer_status
Bison lexer internals.
Definition: LutScanner.cpp:243
bool getAppendToUserDataBuffer()
Definition: Scanner.hpp:124
register char * yy_bp
Definition: Scanner.cc:2322
#define ECHO
Definition: Scanner.cc:2234
#define YY_START
Definition: Scanner.cc:181
unsigned char flex_uint8_t
Definition: Scanner.cc:80
#define YY_RULE_SETUP
Definition: Scanner.cc:2312
virtual ~yyFlexLexer()
Definition: LutScanner.cpp:905