#line 3 "lex.yy.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart(yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart (FILE *input_file ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); void yy_delete_buffer (YY_BUFFER_STATE b ); void yy_flush_buffer (YY_BUFFER_STATE b ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); void yypop_buffer_state (void ); static void yyensure_buffer_stack (void ); static void yy_load_buffer_state (void ); static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); void yyfree (void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef unsigned char YY_CHAR; FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 2167 #define YY_END_OF_BUFFER 2168 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[7228] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2168, 2166, 2161, 2163, 2164, 205, 2166, 2166, 2166, 2166, 202, 2166, 187, 188, 183, 185, 197, 186, 198, 184, 2141, 195, 196, 193, 199, 194, 2120, 201, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 191, 192, 204, 2166, 189, 203, 190, 2118, 2129, 2128, 2132, 2130, 2131, 248, 247, 242, 241, 125, 2127, 2126, 2125, 2124, 2123, 2122, 2121, 2119, 2111, 2165, 3, 4, 3, 33, 34, 33, 86, 87, 86, 29, 30, 29, 29, 29, 26, 24, 22, 28, 82, 83, 82, 82, 82, 79, 81, 71, 72, 71, 71, 71, 58, 59, 57, 71, 71, 55, 55, 63, 64, 61, 62, 70, 75, 76, 75, 42, 43, 42, 42, 42, 51, 52, 51, 2167, 60, 46, 47, 46, 102, 100, 102, 102, 102, 102, 101, 116, 114, 116, 116, 116, 116, 115, 107, 108, 107, 121, 122, 121, 156, 157, 156, 156, 156, 156, 155, 160, 161, 160, 179, 180, 179, 178, 2140, 2140, 2135, 2135, 166, 167, 166, 170, 171, 170, 174, 175, 174, 144, 141, 142, 143, 150, 147, 148, 150, 146, 145, 132, 133, 132, 132, 132, 132, 131, 136, 137, 136, 8, 7, 12, 11, 2167, 9, 201, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2161, 2162, 213, 0, 2159, 221, 0, 0, 2156, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 219, 2145, 2146, 206, 0, 0, 216, 217, 218, 2, 1, 2147, 2143, 0, 0, 214, 215, 208, 210, 212, 200, 211, 209, 2117, 691, 695, 683, 2117, 707, 2117, 703, 2117, 2117, 699, 2117, 2117, 687, 711, 2117, 2117, 685, 2117, 2117, 2117, 2117, 2117, 689, 2138, 2138, 2138, 2138, 632, 631, 2138, 2138, 633, 2138, 636, 635, 2138, 651, 2138, 2138, 728, 637, 2138, 2138, 2138, 2138, 640, 639, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 641, 2138, 2138, 644, 649, 643, 374, 2138, 2138, 2138, 2138, 645, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 364, 2138, 794, 2138, 2138, 808, 810, 812, 813, 362, 814, 816, 2138, 2138, 832, 833, 836, 363, 837, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 877, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 647, 2138, 2138, 653, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 278, 2138, 2138, 0, 0, 0, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 0, 2137, 207, 220, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 5, 35, 88, 0, 27, 0, 0, 0, 0, 32, 31, 0, 80, 0, 85, 84, 0, 65, 69, 38, 0, 0, 74, 73, 56, 56, 56, 55, 0, 0, 77, 39, 45, 44, 0, 0, 0, 48, 0, 103, 0, 0, 106, 105, 0, 0, 117, 0, 0, 120, 119, 0, 109, 123, 0, 153, 0, 0, 159, 158, 0, 162, 0, 2139, 2134, 0, 0, 0, 144, 141, 147, 0, 149, 0, 129, 0, 0, 135, 134, 0, 138, 7, 11, 0, 9, 707, 703, 2117, 0, 2113, 2113, 2113, 2113, 632, 631, 2113, 2113, 633, 2113, 636, 635, 2113, 651, 2113, 2113, 728, 637, 2113, 2113, 2113, 2113, 640, 639, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 641, 2113, 2113, 644, 649, 643, 374, 2113, 2113, 2113, 2113, 645, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 364, 2113, 794, 2113, 2113, 808, 810, 812, 813, 362, 814, 816, 2113, 2113, 832, 833, 836, 363, 837, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 877, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 647, 2113, 2113, 653, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 278, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2154, 2152, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 92, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2145, 0, 2146, 0, 2150, 2150, 1, 2142, 2147, 2147, 0, 2147, 2117, 693, 2117, 2117, 2045, 2117, 697, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 705, 2117, 2117, 2117, 2117, 2117, 701, 2117, 2117, 2117, 2117, 2117, 2117, 692, 696, 684, 708, 704, 700, 688, 712, 686, 2117, 690, 2117, 2117, 2117, 2117, 2117, 2117, 709, 710, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2042, 2117, 2117, 2117, 713, 714, 715, 716, 2138, 717, 719, 2138, 721, 2138, 2138, 2138, 2138, 2138, 2138, 725, 726, 2138, 729, 731, 733, 2138, 2138, 2138, 736, 737, 2138, 2138, 738, 739, 2138, 740, 2138, 742, 2138, 773, 2138, 2138, 2138, 599, 600, 601, 602, 603, 604, 605, 606, 2138, 2138, 781, 783, 784, 785, 2138, 787, 2138, 615, 616, 617, 618, 619, 620, 621, 622, 2138, 222, 2138, 0, 634, 652, 638, 642, 650, 646, 2138, 2138, 227, 2138, 2138, 2138, 648, 654, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 1299, 2138, 2138, 2138, 2138, 2138, 379, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 1302, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 789, 2138, 2138, 2138, 2138, 795, 2138, 2138, 800, 2138, 2138, 2138, 809, 811, 2138, 2138, 815, 817, 838, 818, 820, 822, 823, 824, 826, 828, 829, 830, 831, 834, 835, 2138, 2138, 840, 2138, 2138, 2138, 843, 841, 844, 2138, 845, 2138, 846, 2138, 2138, 2138, 2138, 2138, 2138, 848, 847, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 555, 556, 557, 558, 559, 560, 561, 562, 223, 2138, 865, 871, 2138, 2138, 872, 874, 875, 2138, 2138, 879, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 883, 1532, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 895, 2138, 896, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 939, 940, 941, 900, 2138, 2138, 943, 944, 945, 2138, 2138, 2138, 2138, 2138, 980, 982, 2138, 2138, 2138, 2138, 2138, 2138, 539, 540, 541, 542, 543, 544, 545, 546, 2138, 984, 985, 986, 2138, 2138, 2138, 990, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 390, 2138, 0, 2160, 0, 0, 2157, 0, 0, 2138, 1001, 2138, 2138, 2138, 2138, 255, 260, 2138, 276, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 999, 2138, 0, 2137, 2118, 2118, 2118, 658, 657, 2118, 2118, 659, 2118, 662, 661, 2118, 677, 2118, 2118, 1021, 663, 2118, 2118, 2118, 2118, 666, 665, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 667, 2118, 2118, 670, 675, 669, 408, 2118, 2118, 2118, 2118, 671, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 398, 2118, 1087, 2118, 2118, 1101, 1103, 1105, 1106, 396, 1107, 1109, 2118, 2118, 1125, 1126, 1129, 397, 1130, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1170, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 673, 2118, 2118, 679, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 315, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 0, 0, 0, 0, 31, 0, 84, 0, 67, 73, 56, 56, 56, 0, 66, 0, 44, 0, 0, 0, 0, 0, 96, 105, 0, 104, 0, 0, 110, 119, 0, 118, 0, 0, 158, 0, 154, 0, 2139, 2134, 0, 0, 0, 0, 0, 134, 0, 130, 2117, 2117, 2117, 2113, 713, 714, 715, 716, 2113, 717, 719, 2113, 721, 2113, 2113, 2113, 2113, 2113, 2113, 725, 726, 2113, 729, 731, 733, 2113, 2113, 2113, 736, 737, 2113, 2113, 738, 739, 2113, 740, 2113, 742, 2113, 773, 2113, 2113, 2113, 599, 600, 601, 602, 603, 604, 605, 606, 2113, 2113, 781, 783, 784, 785, 2113, 787, 2113, 615, 616, 617, 618, 619, 620, 621, 622, 2113, 222, 2113, 634, 652, 638, 642, 650, 646, 2113, 2113, 227, 2113, 2113, 2113, 648, 654, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 1299, 2113, 2113, 2113, 2113, 2113, 379, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 1302, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 789, 2113, 2113, 2113, 2113, 795, 2113, 2113, 800, 2113, 2113, 2113, 809, 811, 2113, 2113, 815, 817, 838, 818, 820, 822, 823, 824, 826, 828, 829, 830, 831, 834, 835, 2113, 2113, 840, 2113, 2113, 2113, 843, 841, 844, 2113, 845, 2113, 846, 2113, 2113, 2113, 2113, 2113, 2113, 848, 847, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 555, 556, 557, 558, 559, 560, 561, 562, 223, 2113, 865, 871, 2113, 2113, 872, 874, 875, 2113, 2113, 879, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 883, 1532, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 895, 2113, 896, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 939, 940, 941, 900, 2113, 2113, 943, 944, 945, 2113, 2113, 2113, 2113, 2113, 980, 982, 2113, 2113, 2113, 2113, 2113, 2113, 539, 540, 541, 542, 543, 544, 545, 546, 2113, 984, 985, 986, 2113, 2113, 2113, 990, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 390, 2113, 2113, 1001, 2113, 2113, 2113, 2113, 255, 260, 2113, 276, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 999, 2113, 2152, 0, 2158, 177, 2158, 2158, 2158, 2158, 2158, 124, 0, 6, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 0, 10, 2158, 2158, 2158, 2158, 2158, 2158, 2148, 2147, 0, 2144, 1948, 2117, 2043, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 1950, 2117, 2117, 2117, 2117, 2117, 2117, 2079, 2117, 2117, 2117, 2117, 2117, 1952, 2041, 2117, 2117, 2117, 1953, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2076, 2117, 2117, 1963, 2117, 2117, 2117, 1965, 1966, 2117, 694, 2117, 698, 706, 702, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 1967, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2046, 2117, 2117, 2117, 2117, 2056, 2117, 2117, 2117, 1970, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2044, 1974, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 336, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 723, 2138, 2138, 2138, 2138, 2138, 456, 735, 370, 490, 2138, 2138, 741, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 587, 533, 2138, 2138, 2138, 2138, 782, 2138, 2138, 2138, 2138, 588, 2138, 0, 0, 367, 1553, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 268, 589, 2138, 388, 2138, 2138, 1337, 1310, 1301, 2138, 1338, 2138, 2138, 1328, 1354, 2138, 1322, 2138, 2138, 2138, 2138, 2138, 1300, 2138, 2138, 2138, 1304, 2138, 1346, 2138, 2138, 2138, 2138, 1345, 1313, 2138, 2138, 1378, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 590, 1353, 2138, 2138, 2138, 1303, 2138, 1316, 1339, 2138, 2138, 1309, 1308, 2138, 2138, 2138, 2138, 591, 2138, 2138, 790, 791, 792, 2138, 797, 798, 799, 2138, 2138, 2138, 475, 2138, 801, 802, 2138, 804, 2138, 806, 2138, 819, 821, 825, 827, 2138, 839, 353, 2138, 2138, 2138, 2138, 849, 850, 853, 902, 2138, 2138, 858, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 1551, 2138, 2138, 2138, 2138, 1552, 2138, 2138, 2138, 2138, 2138, 2138, 350, 360, 1740, 1741, 2138, 2138, 2138, 2138, 1530, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 884, 886, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 888, 1533, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 0, 2138, 2138, 2138, 2138, 2138, 2138, 942, 2138, 2138, 950, 952, 954, 955, 956, 958, 2138, 974, 975, 978, 979, 2138, 851, 981, 983, 2138, 852, 854, 901, 2138, 592, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 992, 537, 365, 2133, 2138, 257, 2155, 2153, 2151, 2151, 2138, 2138, 232, 2138, 2138, 2138, 2138, 2138, 507, 2138, 2138, 1002, 1003, 993, 2138, 2138, 2138, 2138, 459, 2138, 2138, 994, 996, 998, 571, 572, 573, 574, 575, 576, 577, 578, 2138, 2138, 0, 1006, 1007, 1008, 1009, 2118, 1010, 1012, 2118, 1014, 2118, 2118, 2118, 2118, 2118, 2118, 1018, 1019, 2118, 1022, 1024, 1026, 2118, 2118, 2118, 1029, 1030, 2118, 2118, 1031, 1032, 2118, 1033, 2118, 1035, 2118, 1066, 2118, 2118, 2118, 607, 608, 609, 610, 611, 612, 613, 614, 2118, 2118, 1074, 1076, 1077, 1078, 2118, 1080, 2118, 623, 624, 625, 626, 627, 628, 629, 630, 2118, 224, 2118, 0, 660, 678, 664, 668, 676, 672, 2118, 2118, 234, 2118, 2118, 2118, 674, 680, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1396, 2118, 2118, 2118, 2118, 2118, 413, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1399, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1082, 2118, 2118, 2118, 2118, 1088, 2118, 2118, 1093, 2118, 2118, 2118, 1102, 1104, 2118, 2118, 1108, 1110, 1131, 1111, 1113, 1115, 1116, 1117, 1119, 1121, 1122, 1123, 1124, 1127, 1128, 2118, 2118, 1133, 2118, 2118, 2118, 1136, 1134, 1137, 2118, 1138, 2118, 1139, 2118, 2118, 2118, 2118, 2118, 2118, 1141, 1140, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 563, 564, 565, 566, 567, 568, 569, 570, 225, 2118, 1158, 1164, 2118, 2118, 1165, 1167, 1168, 2118, 2118, 1172, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1176, 1593, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1188, 2118, 1189, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1232, 1233, 1234, 1193, 2118, 2118, 1236, 1237, 1238, 2118, 2118, 2118, 2118, 2118, 1273, 1275, 2118, 2118, 2118, 2118, 2118, 2118, 547, 548, 549, 550, 551, 552, 553, 554, 2118, 1277, 1278, 1279, 2118, 2118, 2118, 1283, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 424, 2118, 2118, 1294, 2118, 2118, 2118, 2118, 292, 297, 2118, 313, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1292, 2118, 0, 0, 0, 0, 0, 0, 56, 56, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 2117, 2117, 2117, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 723, 2113, 2113, 2113, 2113, 2113, 430, 735, 370, 442, 2113, 2113, 741, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 587, 455, 2113, 2113, 2113, 2113, 782, 2113, 2113, 2113, 2113, 588, 2113, 367, 1553, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 268, 589, 2113, 388, 2113, 2113, 1337, 1310, 1301, 2113, 1338, 2113, 2113, 1328, 1354, 2113, 1322, 2113, 2113, 2113, 2113, 2113, 1300, 2113, 2113, 2113, 1304, 2113, 1346, 2113, 2113, 2113, 2113, 1345, 1313, 2113, 2113, 1378, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 590, 1353, 2113, 2113, 2113, 1303, 2113, 1316, 1339, 2113, 2113, 1309, 1308, 2113, 2113, 2113, 2113, 591, 2113, 2113, 790, 791, 792, 2113, 797, 798, 799, 2113, 2113, 2113, 437, 2113, 801, 802, 2113, 804, 2113, 806, 2113, 819, 821, 825, 827, 2113, 839, 353, 2113, 2113, 2113, 2113, 849, 850, 853, 902, 2113, 2113, 858, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 1551, 2113, 2113, 2113, 2113, 1552, 2113, 2113, 2113, 2113, 2113, 2113, 350, 360, 1740, 1741, 2113, 2113, 2113, 2113, 1530, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 884, 886, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 888, 1533, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 0, 2113, 2113, 2113, 2113, 2113, 2113, 942, 2113, 2113, 950, 952, 954, 955, 956, 958, 2113, 974, 975, 978, 979, 2113, 851, 981, 983, 2113, 852, 854, 901, 2113, 592, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 992, 537, 365, 2113, 2113, 257, 2113, 2113, 232, 2113, 2113, 2113, 2113, 2113, 448, 2113, 2113, 1002, 1003, 993, 2113, 2113, 2113, 2113, 431, 2113, 2113, 994, 996, 998, 571, 572, 573, 574, 575, 576, 577, 578, 2113, 2113, 2158, 2158, 94, 182, 2158, 2158, 2158, 2158, 2158, 2158, 6, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 10, 2158, 2158, 2158, 165, 2158, 2158, 2147, 2117, 2117, 2117, 2117, 2117, 458, 2117, 1949, 492, 2117, 535, 2117, 2117, 2117, 1951, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 37, 2117, 2117, 2117, 2117, 325, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 349, 2117, 2117, 2117, 2117, 2117, 477, 2104, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2063, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 18, 2117, 2117, 2117, 2057, 2117, 2117, 2117, 2070, 1971, 1972, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2110, 1975, 2117, 2117, 2117, 1987, 2064, 2117, 2117, 2117, 509, 2117, 2117, 2117, 2117, 461, 2117, 2117, 2117, 2117, 2117, 2117, 2138, 1616, 1617, 1615, 1618, 2138, 259, 2138, 1623, 1624, 2138, 226, 2138, 724, 384, 727, 273, 2138, 743, 745, 747, 748, 749, 751, 2138, 767, 768, 771, 772, 2138, 2138, 2138, 2138, 2138, 2138, 1626, 1627, 774, 775, 1628, 776, 2138, 2138, 2138, 253, 2138, 780, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 1685, 1686, 1687, 1688, 2138, 462, 655, 0, 2138, 2138, 2138, 2138, 368, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 788, 2138, 2138, 2138, 1352, 1311, 1307, 1366, 2138, 1392, 1329, 2138, 1323, 1324, 383, 1379, 1312, 1331, 1326, 1315, 2138, 1360, 1305, 2138, 1320, 1363, 2138, 2138, 2138, 2138, 1347, 1314, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 1341, 1356, 2138, 2138, 1371, 2138, 2138, 1336, 1364, 2138, 1374, 1317, 1318, 1333, 1362, 2138, 2138, 2138, 1358, 2138, 2138, 2138, 2138, 478, 481, 484, 2138, 2138, 805, 2138, 807, 251, 1697, 2138, 842, 2138, 0, 855, 856, 857, 859, 2138, 860, 863, 470, 2138, 1700, 1701, 1702, 1703, 2138, 2138, 1705, 1706, 1707, 1708, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 866, 867, 2138, 2138, 1732, 868, 869, 2138, 870, 1735, 1736, 1738, 1737, 1739, 2138, 880, 881, 882, 2138, 2138, 2138, 1493, 1495, 1496, 2138, 2138, 1494, 1531, 1742, 1513, 1514, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 885, 887, 2138, 2138, 2138, 2138, 2138, 1535, 1536, 1534, 1541, 1540, 1538, 1539, 1537, 1501, 1503, 1504, 2138, 2138, 1502, 2138, 889, 891, 892, 894, 465, 395, 1755, 1756, 897, 898, 899, 2138, 2138, 2138, 2138, 2138, 2138, 531, 0, 0, 0, 0, 0, 2138, 2138, 2138, 0, 2138, 2138, 2138, 947, 948, 949, 2138, 951, 953, 957, 959, 960, 962, 964, 965, 966, 968, 970, 971, 972, 973, 976, 977, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 987, 988, 989, 864, 2138, 1768, 1767, 1769, 1770, 2138, 2138, 2138, 468, 354, 2153, 0, 2149, 2138, 271, 2138, 2138, 2138, 510, 513, 516, 378, 2138, 2138, 493, 376, 373, 1005, 2138, 1779, 1780, 2138, 2136, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1016, 2118, 2118, 2118, 2118, 2118, 457, 1028, 404, 491, 2118, 2118, 1034, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 593, 534, 2118, 2118, 2118, 2118, 1075, 2118, 2118, 2118, 2118, 594, 2118, 0, 0, 401, 1614, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 305, 595, 2118, 422, 2118, 2118, 1434, 1407, 1398, 2118, 1435, 2118, 2118, 1425, 1451, 2118, 1419, 2118, 2118, 2118, 2118, 2118, 1397, 2118, 2118, 2118, 1401, 2118, 1443, 2118, 2118, 2118, 2118, 1442, 1410, 2118, 2118, 1475, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 596, 1450, 2118, 2118, 2118, 1400, 2118, 1413, 1436, 2118, 2118, 1406, 1405, 2118, 2118, 2118, 2118, 597, 2118, 2118, 1083, 1084, 1085, 2118, 1090, 1091, 1092, 2118, 2118, 2118, 476, 2118, 1094, 1095, 2118, 1097, 2118, 1099, 2118, 1112, 1114, 1118, 1120, 2118, 1132, 358, 2118, 2118, 2118, 2118, 1142, 1143, 1146, 1195, 2118, 2118, 1151, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1612, 2118, 2118, 2118, 2118, 1613, 2118, 2118, 2118, 2118, 2118, 2118, 355, 361, 1906, 1907, 2118, 2118, 2118, 2118, 1591, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1177, 1179, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1181, 1594, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 0, 2118, 2118, 2118, 2118, 2118, 2118, 1235, 2118, 2118, 1243, 1245, 1247, 1248, 1249, 1251, 2118, 1267, 1268, 1271, 1272, 2118, 1144, 1274, 1276, 2118, 1145, 1147, 1194, 2118, 598, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1285, 538, 399, 2118, 294, 2118, 2118, 239, 2118, 2118, 2118, 2118, 2118, 508, 2118, 2118, 1295, 1296, 1286, 2118, 2118, 2118, 2118, 460, 2118, 2118, 1287, 1289, 1291, 579, 580, 581, 582, 583, 584, 585, 586, 2118, 2118, 0, 0, 0, 0, 0, 49, 53, 54, 40, 41, 0, 98, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 36, 2117, 2109, 2113, 1616, 1617, 1615, 1618, 2113, 259, 2113, 1623, 1624, 2113, 226, 2113, 724, 384, 727, 273, 2113, 743, 745, 747, 748, 749, 751, 2113, 767, 768, 771, 772, 2113, 2113, 2113, 2113, 2113, 2113, 1626, 1627, 774, 775, 1628, 776, 2113, 2113, 2113, 253, 2113, 780, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 1685, 1686, 1687, 1688, 2113, 432, 2113, 2113, 2113, 2113, 368, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 788, 2113, 2113, 2113, 1352, 1311, 1307, 1366, 2113, 1392, 1329, 2113, 1323, 1324, 383, 1379, 1312, 1331, 1326, 1315, 2113, 1360, 1305, 2113, 1320, 1363, 2113, 2113, 2113, 2113, 1347, 1314, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 1341, 1356, 2113, 2113, 1371, 2113, 2113, 1336, 1364, 2113, 1374, 1317, 1318, 1333, 1362, 2113, 2113, 2113, 1358, 2113, 2113, 2113, 2113, 438, 439, 440, 2113, 2113, 805, 2113, 807, 251, 1697, 2113, 842, 2113, 0, 855, 856, 857, 859, 2113, 860, 863, 435, 2113, 1700, 1701, 1702, 1703, 2113, 2113, 1705, 1706, 1707, 1708, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 866, 867, 2113, 2113, 1732, 868, 869, 2113, 870, 1735, 1736, 1738, 1737, 1739, 2113, 880, 881, 882, 2113, 2113, 2113, 1493, 1495, 1496, 2113, 2113, 1494, 1531, 1742, 1513, 1514, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 885, 887, 2113, 2113, 2113, 2113, 2113, 1535, 1536, 1534, 1541, 1540, 1538, 1539, 1537, 1501, 1503, 1504, 2113, 2113, 1502, 2113, 889, 891, 892, 894, 433, 395, 1755, 1756, 897, 898, 899, 2113, 2113, 2113, 2113, 2113, 2113, 531, 2113, 2113, 2113, 2113, 0, 2113, 2113, 2113, 0, 2113, 2113, 2113, 947, 948, 949, 2113, 951, 953, 957, 959, 960, 962, 964, 965, 966, 968, 970, 971, 972, 973, 976, 977, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 987, 988, 989, 864, 2113, 1768, 1767, 1769, 1770, 2113, 2113, 2113, 434, 354, 2113, 271, 2113, 2113, 2113, 449, 450, 451, 378, 2113, 2113, 443, 376, 373, 1005, 2113, 1779, 1780, 2113, 2158, 2158, 2158, 2158, 95, 2158, 2158, 2158, 89, 2158, 2158, 240, 173, 2158, 2158, 91, 246, 2158, 2158, 2158, 2158, 139, 15, 2117, 334, 2078, 2117, 2117, 2117, 2103, 343, 2069, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 464, 2117, 337, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 1955, 2117, 2117, 327, 2117, 1977, 2117, 2117, 480, 483, 486, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2084, 2087, 2117, 2117, 2117, 2117, 2117, 339, 2117, 2117, 2117, 1964, 2117, 472, 2028, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2074, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2066, 467, 2117, 2117, 2117, 2117, 2058, 2059, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2105, 2117, 2117, 512, 515, 518, 2117, 2117, 2117, 2117, 2117, 495, 2117, 2117, 2117, 2117, 2117, 2117, 2138, 2138, 1621, 1622, 2138, 2138, 2138, 2138, 744, 746, 750, 752, 753, 755, 757, 758, 759, 761, 763, 764, 765, 766, 769, 770, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 1661, 1662, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 279, 0, 366, 2138, 2138, 382, 2138, 2138, 2138, 2138, 2138, 2138, 394, 2138, 2138, 256, 261, 2138, 2138, 389, 2138, 1380, 1382, 1384, 2138, 1391, 1393, 1330, 2138, 1325, 1332, 1327, 2138, 1306, 1321, 1368, 1349, 1348, 1350, 1351, 1367, 1361, 1372, 1365, 2138, 1375, 2138, 2138, 2138, 1357, 1342, 2138, 1373, 1340, 2138, 1369, 1319, 1394, 1334, 2138, 1689, 2138, 2138, 1691, 1692, 1693, 1694, 2138, 487, 793, 803, 2138, 2138, 1696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 861, 862, 2138, 230, 1704, 2138, 1710, 1711, 2138, 2138, 1713, 1714, 2138, 1717, 1718, 2138, 1719, 1720, 2138, 2138, 1724, 2138, 1727, 2138, 2138, 2138, 1733, 1734, 2138, 2138, 2138, 2138, 1497, 1498, 2138, 2138, 2138, 1547, 1548, 2138, 1542, 1543, 1544, 1545, 2138, 2138, 1510, 1511, 2138, 2138, 2138, 2138, 2138, 1546, 1744, 2138, 2138, 1550, 1751, 1752, 1505, 1506, 2138, 2138, 890, 893, 2138, 2138, 496, 499, 502, 269, 0, 0, 0, 0, 0, 0, 377, 0, 0, 0, 0, 351, 2138, 2138, 2138, 2138, 961, 963, 967, 969, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 262, 2138, 2138, 522, 369, 2138, 2138, 2138, 2138, 2138, 2138, 519, 352, 1004, 2138, 2138, 2136, 2118, 1782, 1783, 1781, 1784, 2118, 296, 2118, 1789, 1790, 2118, 233, 2118, 1017, 418, 1020, 310, 2118, 1036, 1038, 1040, 1041, 1042, 1044, 2118, 1060, 1061, 1064, 1065, 2118, 2118, 2118, 2118, 2118, 2118, 1792, 1793, 1067, 1068, 1794, 1069, 2118, 2118, 2118, 290, 2118, 1073, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1851, 1852, 1853, 1854, 2118, 463, 681, 0, 2118, 2118, 2118, 2118, 402, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1081, 2118, 2118, 2118, 1449, 1408, 1404, 1463, 2118, 1489, 1426, 2118, 1420, 1421, 417, 1476, 1409, 1428, 1423, 1412, 2118, 1457, 1402, 2118, 1417, 1460, 2118, 2118, 2118, 2118, 1444, 1411, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1438, 1453, 2118, 2118, 1468, 2118, 2118, 1433, 1461, 2118, 1471, 1414, 1415, 1430, 1459, 2118, 2118, 2118, 1455, 2118, 2118, 2118, 2118, 479, 482, 485, 2118, 2118, 1098, 2118, 1100, 288, 1863, 2118, 1135, 2118, 0, 1148, 1149, 1150, 1152, 2118, 1153, 1156, 471, 2118, 1866, 1867, 1868, 1869, 2118, 2118, 1871, 1872, 1873, 1874, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1159, 1160, 2118, 2118, 1898, 1161, 1162, 2118, 1163, 1901, 1902, 1904, 1903, 1905, 2118, 1173, 1174, 1175, 2118, 2118, 2118, 1554, 1556, 1557, 2118, 2118, 1555, 1592, 1908, 1574, 1575, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1178, 1180, 2118, 2118, 2118, 2118, 2118, 1596, 1597, 1595, 1602, 1601, 1599, 1600, 1598, 1562, 1564, 1565, 2118, 2118, 1563, 2118, 1182, 1184, 1185, 1187, 466, 429, 1921, 1922, 1190, 1191, 1192, 2118, 2118, 2118, 2118, 2118, 2118, 532, 0, 0, 0, 0, 0, 2118, 2118, 2118, 0, 2118, 2118, 2118, 1240, 1241, 1242, 2118, 1244, 1246, 1250, 1252, 1253, 1255, 1257, 1258, 1259, 1261, 1263, 1264, 1265, 1266, 1269, 1270, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1280, 1281, 1282, 1157, 2118, 1934, 1933, 1935, 1936, 2118, 2118, 2118, 469, 359, 2118, 308, 2118, 2118, 2118, 511, 514, 517, 412, 2118, 2118, 494, 410, 407, 1298, 2118, 1945, 1946, 2118, 0, 0, 20, 0, 0, 0, 0, 99, 0, 113, 0, 152, 0, 0, 0, 0, 0, 2117, 2113, 2113, 1621, 1622, 2113, 2113, 2113, 2113, 744, 746, 750, 752, 753, 755, 757, 758, 759, 761, 763, 764, 765, 766, 769, 770, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 1661, 1662, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 279, 366, 2113, 2113, 382, 2113, 2113, 2113, 2113, 2113, 2113, 394, 2113, 2113, 256, 261, 2113, 2113, 389, 2113, 1380, 1382, 1384, 2113, 1391, 1393, 1330, 2113, 1325, 1332, 1327, 2113, 1306, 1321, 1368, 1349, 1348, 1350, 1351, 1367, 1361, 1372, 1365, 2113, 1375, 2113, 2113, 2113, 1357, 1342, 2113, 1373, 1340, 2113, 1369, 1319, 1394, 1334, 2113, 1689, 2113, 2113, 1691, 1692, 1693, 1694, 2113, 441, 793, 803, 2113, 2113, 1696, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 861, 862, 2113, 230, 1704, 2113, 1710, 1711, 2113, 2113, 1713, 1714, 2113, 1717, 1718, 2113, 1719, 1720, 2113, 2113, 1724, 2113, 1727, 2113, 2113, 2113, 1733, 1734, 2113, 2113, 2113, 2113, 1497, 1498, 2113, 2113, 2113, 1547, 1548, 2113, 1542, 1543, 1544, 1545, 2113, 2113, 1510, 1511, 2113, 2113, 2113, 2113, 2113, 1546, 1744, 2113, 2113, 1550, 1751, 1752, 1505, 1506, 2113, 2113, 890, 893, 2113, 2113, 444, 445, 446, 269, 2113, 2113, 2113, 2113, 2113, 2113, 377, 0, 0, 2113, 2113, 351, 2113, 2113, 2113, 2113, 961, 963, 967, 969, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 262, 2113, 2113, 453, 369, 2113, 2113, 2113, 2113, 2113, 2113, 452, 352, 1004, 2113, 2113, 14, 2158, 2158, 93, 126, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 250, 169, 90, 2158, 2117, 2117, 2117, 2117, 2117, 2094, 2092, 2117, 2117, 2117, 2117, 1976, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2060, 2117, 1978, 489, 2117, 2117, 2117, 2117, 2117, 2091, 2117, 2117, 2117, 2088, 2117, 2085, 2117, 2117, 2117, 1979, 2117, 2117, 2117, 2117, 2029, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2061, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2072, 2117, 2117, 2117, 2117, 2117, 2117, 342, 2082, 2117, 2117, 2117, 2117, 2117, 2040, 2117, 1968, 498, 501, 504, 2117, 1981, 2117, 2117, 2117, 2117, 1982, 524, 1983, 2117, 1985, 1973, 2117, 2117, 2117, 521, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2062, 2117, 2117, 2138, 2138, 2138, 473, 385, 1625, 754, 756, 760, 762, 1653, 1645, 1637, 1629, 1655, 1647, 1639, 1631, 1654, 1646, 1638, 1630, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 777, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 371, 656, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 258, 2138, 2138, 2138, 2138, 1381, 1383, 1385, 1387, 1389, 1390, 1377, 1376, 1370, 381, 380, 284, 1343, 1355, 1395, 1335, 1690, 1344, 1359, 2138, 2138, 1695, 0, 0, 0, 0, 0, 0, 0, 0, 878, 0, 0, 0, 0, 0, 2138, 1709, 1712, 1715, 1716, 1721, 2138, 1728, 1725, 1726, 1729, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 1499, 1500, 1515, 1517, 1516, 1518, 1520, 1519, 1512, 2138, 1509, 1743, 277, 2138, 2138, 231, 1745, 1746, 1507, 1508, 2138, 2138, 2138, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, 1757, 1758, 287, 1766, 264, 2138, 1772, 1773, 1774, 2138, 2138, 2138, 528, 525, 2118, 2118, 1787, 1788, 2118, 2118, 2118, 2118, 1037, 1039, 1043, 1045, 1046, 1048, 1050, 1051, 1052, 1054, 1056, 1057, 1058, 1059, 1062, 1063, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1827, 1828, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 316, 0, 400, 2118, 2118, 416, 2118, 2118, 2118, 2118, 2118, 2118, 428, 2118, 2118, 293, 298, 2118, 2118, 423, 2118, 1477, 1479, 1481, 2118, 1488, 1490, 1427, 2118, 1422, 1429, 1424, 2118, 1403, 1418, 1465, 1446, 1445, 1447, 1448, 1464, 1458, 1469, 1462, 2118, 1472, 2118, 2118, 2118, 1454, 1439, 2118, 1470, 1437, 2118, 1466, 1416, 1491, 1431, 2118, 1855, 2118, 2118, 1857, 1858, 1859, 1860, 2118, 488, 1086, 1096, 2118, 2118, 1862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1154, 1155, 2118, 237, 1870, 2118, 1876, 1877, 2118, 2118, 1879, 1880, 2118, 1883, 1884, 2118, 1885, 1886, 2118, 2118, 1890, 2118, 1893, 2118, 2118, 2118, 1899, 1900, 2118, 2118, 2118, 2118, 1558, 1559, 2118, 2118, 2118, 1608, 1609, 2118, 1603, 1604, 1605, 1606, 2118, 2118, 1571, 1572, 2118, 2118, 2118, 2118, 2118, 1607, 1910, 2118, 2118, 1611, 1917, 1918, 1566, 1567, 2118, 2118, 1183, 1186, 2118, 2118, 497, 500, 503, 306, 0, 0, 0, 0, 0, 0, 411, 0, 0, 0, 0, 356, 2118, 2118, 2118, 2118, 1254, 1256, 1260, 1262, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 299, 2118, 2118, 523, 403, 2118, 2118, 2118, 2118, 2118, 2118, 520, 357, 1297, 2118, 2118, 0, 0, 0, 0, 0, 97, 111, 0, 181, 0, 0, 0, 127, 2117, 2113, 2113, 2113, 436, 385, 1625, 754, 756, 760, 762, 1653, 1645, 1637, 1629, 1655, 1647, 1639, 1631, 1654, 1646, 1638, 1630, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 777, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 371, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 258, 2113, 2113, 2113, 2113, 1381, 1383, 1385, 1387, 1389, 1390, 1377, 1376, 1370, 381, 380, 284, 1343, 1355, 1395, 1335, 1690, 1344, 1359, 2113, 2113, 1695, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 878, 2113, 2113, 2113, 2113, 2113, 2113, 1709, 1712, 1715, 1716, 1721, 2113, 1728, 1725, 1726, 1729, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 1499, 1500, 1515, 1517, 1516, 1518, 1520, 1519, 1512, 2113, 1509, 1743, 277, 2113, 2113, 231, 1745, 1746, 1507, 1508, 2113, 2113, 2113, 447, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 285, 1757, 1758, 287, 1766, 264, 2113, 1772, 1773, 1774, 2113, 2113, 2113, 454, 525, 2158, 2158, 2158, 2158, 2158, 163, 244, 2158, 2158, 2158, 2117, 2117, 2117, 2108, 2117, 2117, 2117, 2117, 2081, 329, 2117, 2117, 2117, 2117, 2117, 1954, 2117, 2117, 2117, 346, 0, 1956, 2083, 2086, 1958, 2117, 1959, 2089, 2090, 1960, 1961, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2051, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 338, 326, 340, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2003, 1990, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2047, 536, 2117, 345, 2099, 2117, 2117, 344, 0, 1984, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2032, 2117, 2038, 2117, 530, 2117, 2117, 527, 281, 1619, 1620, 2138, 1656, 1648, 1640, 1632, 1658, 1650, 1642, 1634, 1657, 1649, 1641, 1633, 1659, 1651, 1643, 1635, 2138, 2138, 386, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1677, 1674, 1675, 1676, 1678, 2138, 2138, 2138, 2138, 2138, 2138, 274, 254, 252, 2138, 2138, 2138, 2138, 2138, 272, 375, 2138, 280, 1386, 1388, 275, 229, 718, 720, 722, 730, 732, 734, 0, 786, 796, 873, 876, 946, 991, 0, 0, 1000, 2138, 1699, 1722, 1723, 1730, 1731, 2138, 282, 1523, 1522, 1521, 1549, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 266, 906, 908, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1771, 1775, 1776, 1777, 1778, 2138, 2118, 2118, 2118, 474, 419, 1791, 1047, 1049, 1053, 1055, 1819, 1811, 1803, 1795, 1821, 1813, 1805, 1797, 1820, 1812, 1804, 1796, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1070, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 405, 682, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 295, 2118, 2118, 2118, 2118, 1478, 1480, 1482, 1484, 1486, 1487, 1474, 1473, 1467, 415, 414, 321, 1440, 1452, 1492, 1432, 1856, 1441, 1456, 2118, 2118, 1861, 0, 0, 0, 0, 0, 0, 0, 0, 1171, 0, 0, 0, 0, 0, 2118, 1875, 1878, 1881, 1882, 1887, 2118, 1894, 1891, 1892, 1895, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 1560, 1561, 1576, 1578, 1577, 1579, 1581, 1580, 1573, 2118, 1570, 1909, 314, 2118, 2118, 238, 1911, 1912, 1568, 1569, 2118, 2118, 2118, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 1923, 1924, 324, 1932, 301, 2118, 1938, 1939, 1940, 2118, 2118, 2118, 529, 526, 0, 21, 0, 0, 50, 0, 168, 0, 0, 0, 281, 1619, 1620, 2113, 1656, 1648, 1640, 1632, 1658, 1650, 1642, 1634, 1657, 1649, 1641, 1633, 1659, 1651, 1643, 1635, 2113, 2113, 386, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1677, 1674, 1675, 1676, 1678, 2113, 2113, 2113, 2113, 2113, 2113, 274, 254, 252, 2113, 2113, 2113, 2113, 2113, 272, 375, 2113, 280, 1386, 1388, 275, 229, 718, 720, 722, 730, 732, 734, 2113, 786, 796, 873, 876, 946, 991, 2113, 2113, 1000, 2113, 1699, 1722, 1723, 1730, 1731, 2113, 282, 1523, 1522, 1521, 1549, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 266, 906, 908, 907, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 1771, 1775, 1776, 1777, 1778, 2113, 2158, 2158, 245, 249, 140, 2158, 17, 2158, 2158, 348, 2117, 2117, 2068, 2117, 2117, 1947, 2080, 2102, 2117, 2117, 347, 2098, 2117, 2117, 2117, 2116, 2117, 2117, 1962, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2030, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2013, 2000, 2117, 2016, 2117, 2117, 2117, 2002, 1989, 2117, 2048, 2117, 2117, 2117, 2114, 1986, 2117, 2065, 2117, 2005, 1992, 2117, 2033, 341, 2117, 2117, 2117, 2138, 2138, 2138, 779, 2138, 1680, 1679, 1681, 1682, 1683, 1684, 2138, 270, 263, 2138, 372, 392, 0, 995, 997, 2138, 286, 283, 2138, 2138, 228, 1527, 1529, 2138, 1528, 1524, 1526, 2138, 1525, 903, 905, 904, 909, 911, 910, 912, 914, 913, 0, 0, 0, 0, 0, 0, 0, 0, 2138, 318, 1785, 1786, 2118, 1822, 1814, 1806, 1798, 1824, 1816, 1808, 1800, 1823, 1815, 1807, 1799, 1825, 1817, 1809, 1801, 2118, 2118, 420, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1843, 1840, 1841, 1842, 1844, 2118, 2118, 2118, 2118, 2118, 2118, 311, 291, 289, 2118, 2118, 2118, 2118, 2118, 309, 409, 2118, 317, 1483, 1485, 312, 236, 1011, 1013, 1015, 1023, 1025, 1027, 0, 1079, 1089, 1166, 1169, 1239, 1284, 0, 0, 1293, 2118, 1865, 1888, 1889, 1896, 1897, 2118, 319, 1584, 1583, 1582, 1610, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 303, 1199, 1201, 1200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1937, 1941, 1942, 1943, 1944, 2118, 25, 0, 78, 151, 0, 176, 2112, 2113, 2113, 2113, 779, 2113, 1680, 1679, 1681, 1682, 1683, 1684, 2113, 270, 263, 2113, 372, 392, 2113, 995, 997, 2113, 286, 283, 2113, 2113, 228, 1527, 1529, 2113, 1528, 1524, 1526, 2113, 1525, 903, 905, 904, 909, 911, 910, 912, 914, 913, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 19, 2158, 2158, 13, 2158, 2117, 2067, 2096, 2093, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2116, 2117, 2117, 2117, 2117, 2117, 2073, 1980, 2004, 1991, 2117, 2117, 2031, 2117, 2117, 2117, 2117, 2117, 2117, 2049, 2117, 328, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 335, 2026, 2117, 2117, 2117, 2015, 1969, 2117, 2117, 2114, 0, 1988, 2018, 2039, 2117, 2117, 2138, 1660, 1652, 1644, 1636, 387, 2138, 265, 0, 1698, 2138, 1747, 1748, 1749, 1753, 1754, 915, 917, 916, 918, 920, 919, 0, 0, 0, 0, 921, 923, 922, 924, 926, 925, 2138, 2118, 2118, 2118, 1072, 2118, 1846, 1845, 1847, 1848, 1849, 1850, 2118, 307, 300, 2118, 406, 426, 0, 1288, 1290, 2118, 323, 320, 2118, 2118, 235, 1588, 1590, 2118, 1589, 1585, 1587, 2118, 1586, 1196, 1198, 1197, 1202, 1204, 1203, 1205, 1207, 1206, 0, 0, 0, 0, 0, 0, 0, 0, 2118, 0, 172, 2112, 2112, 2113, 1660, 1652, 1644, 1636, 387, 2113, 265, 2113, 1698, 2113, 1747, 1748, 1749, 1753, 1754, 915, 917, 916, 918, 920, 919, 2113, 2113, 2113, 2113, 921, 923, 922, 924, 926, 925, 2113, 16, 2158, 243, 331, 2117, 2117, 2117, 2117, 2117, 2106, 2010, 1997, 2117, 1957, 2077, 2095, 2097, 2117, 2017, 2117, 2050, 2117, 2117, 2117, 2117, 2034, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2107, 2100, 333, 2075, 2115, 2117, 2117, 2117, 2138, 267, 0, 1750, 927, 929, 928, 930, 932, 931, 933, 935, 934, 936, 938, 937, 391, 2118, 1826, 1818, 1810, 1802, 421, 2118, 302, 0, 1864, 2118, 1913, 1914, 1915, 1919, 1920, 1208, 1210, 1209, 1211, 1213, 1212, 0, 0, 0, 0, 1214, 1216, 1215, 1217, 1219, 1218, 2118, 23, 2113, 267, 2113, 1750, 927, 929, 928, 930, 932, 931, 933, 935, 934, 936, 938, 937, 391, 164, 2071, 2117, 2117, 2117, 2117, 2023, 2101, 2117, 2117, 2117, 2117, 2035, 2117, 2011, 1998, 2117, 2012, 1999, 2117, 2117, 2117, 2117, 2117, 2037, 2115, 2117, 2117, 2117, 2117, 2117, 2117, 393, 778, 2118, 304, 0, 1916, 1220, 1222, 1221, 1223, 1225, 1224, 1226, 1228, 1227, 1229, 1231, 1230, 425, 393, 778, 2009, 1996, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 330, 2024, 2025, 332, 2117, 2117, 2117, 2117, 2117, 2117, 2036, 2117, 2117, 2117, 427, 1071, 2022, 2117, 2117, 2117, 2052, 2117, 2117, 2055, 2008, 1995, 2117, 2117, 2117, 2117, 2006, 1993, 2117, 2117, 2117, 2117, 2117, 2053, 2021, 2007, 1994, 2117, 2019, 2014, 2001, 2117, 2117, 2020, 2027, 2117, 2054, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 1, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 1, 107, 1, 1, 1, 1, 1, 1, 1, 108, 109, 110, 111, 112, 113, 114, 115, 1, 116, 117, 118, 119, 1, 120 } ; static yyconst flex_int32_t yy_meta[121] = { 0, 1, 2, 3, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 5, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 10, 1, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int16_t yy_base[7372] = { 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 135, 141, 143, 263, 0, 125, 126, 142, 150, 149, 161, 17312,17311, 156, 162, 381, 383, 0, 0, 388, 390, 163, 168, 169, 170, 398, 405, 171, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 403, 0, 0,17305,17304,17303,17302, 184, 185, 186, 191, 192, 193, 155, 199, 201, 203, 416, 423, 194, 207, 543, 0, 663, 0, 215, 217, 783, 0,17319,17326, 17316,17326,17314,17283,17309, 897, 0, 160,17304,17302, 17326,17326,17326,17279,17326,17278,17292, 208, 974, 193, 17326, 199,17276, 191,17326, 1027, 406, 1080, 1136, 1191, 1246, 1318, 174, 384, 1248, 1375, 0, 1432, 1479, 400, 407, 1533, 326, 1138, 1605, 1522, 1142, 1088, 1662, 1192, 363,17326,17326,17326,17300,17326,17212,17299, 1729,17326, 17326,17326,17326,17326,17326,17326,17326,17326,17326,17326, 17326,17326,17326,17326,17326,17326,17326,17326,17326,17326, 17326,17286,17326,17326,17285,17326,17326,17284,17326,17326, 17296, 1445, 221,17326,17326,17326,17326,17326,17326,17295, 386, 222,17326,17326,17326,17326,17294, 1004, 0,17326, 17326,17326, 228, 442, 0, 240,17326,17326,17326,17326, 17326,17326,17326,17280,17326,17326,17291, 238, 443,17326, 17326, 387,17326,17326,17326,17326,17278,17326,17326,17290, 461, 239,17289,17326,17326,17326,17288, 888, 240,17287, 17326,17326,17326,17273,17326,17326,17272,17326,17326,17284, 448, 401,17283,17326,17326,17326,17269,17326,17326, 395, 17326,17326, 0,17326, 0,17326,17326, 407,17326,17326, 449,17326,17326, 459, 0,17285,17326,17326,17326,17284, 17326,17279,17326,17326,17326,17326,17278, 889, 498,17277, 17326,17326,17326,17263,17326, 0,17326, 0, 1004,17326, 1803, 1879, 1953, 2028, 2102, 2176, 2250, 975, 1416, 1882, 2326,17263, 2402, 1900, 1938, 1180, 2475, 1000, 2023, 2549, 2083, 2340, 1509, 2625, 2171, 1008,17278,17326,17326,17273, 17272,17326, 0, 393, 887, 953, 0, 461, 1660, 953, 1249, 969, 975, 961, 960, 1246, 1077, 986, 1249,17326, 17211, 1137,17326,17265,17264,17326,17326,17326,17326, 0, 2030, 2177, 1884, 1698,17326,17326,17326,17326,17326,17326, 17326,17326, 0, 2377, 1378, 2462, 1670, 2596, 1948, 1082, 990, 1194, 2418, 1383, 2675, 2320, 2315, 1080, 1503, 2664, 2718, 2083, 1132, 1427, 1137, 1192, 0, 2105, 1144, 1311, 0, 1216, 1470, 1248, 0, 1280, 0, 0, 1529, 0, 1311, 1944, 2030, 0, 1365, 1478, 1377, 1412, 1439, 2736, 2097, 1588, 1441, 2793, 1493, 1481, 1514, 0, 1555, 1663, 0, 1550, 0, 1645, 2804, 1671, 1676, 1710,17244, 1702, 1883, 1703, 1870, 1710, 1786, 2171, 2396, 2036, 1776, 1799, 1936, 2474, 2176, 1855, 1867, 2795, 1941, 1930, 2476, 1938, 2398, 2179, 2614, 1956, 2028, 2036, 2799, 2084, 2099, 2101, 2095, 2150, 2164, 0, 2304, 2802, 2182, 2189, 2191, 2192, 2175, 2243, 0, 2242, 2243, 2234, 2855, 0, 2456, 0, 0, 0, 2857, 2725, 2613, 2617, 2425, 2313, 2333, 2374, 2800, 2674, 2382, 2389, 2597, 2449, 2468, 2531, 2931, 2847, 2534, 2546, 2536, 2617, 2609, 2625, 2656, 2663, 2692, 2920, 2686, 2707, 2720, 2924, 2919, 2796, 2928, 2849, 2720, 2726, 2746, 2860, 2931, 2978, 2794, 2860, 2975, 2783, 2796, 2859, 2808, 2819, 2974, 2860, 2876, 2907, 0, 2909, 2925, 3046, 2929, 2923, 2919, 2918, 2965, 3033, 0, 2963, 2974,17267, 3115,17261, 2976,17249, 3032, 3027, 2978, 2989, 3004, 3034, 3038, 3041, 3049, 3042, 3049, 3043, 3061, 3058, 3066, 3096, 3092, 3091, 0, 0,17326,17326, 0, 3111, 3162, 3218, 3273, 3328, 3400, 3095, 3115, 3155, 3457, 3514, 3561, 3223, 3099, 3615, 3095, 3576, 3687, 3743, 3180, 3222, 3751, 3305, 3103,17326,17326,17326,17264,17263, 3110, 3121, 3130, 3127, 17326, 0,17262,17261, 3119,17326, 0,17260,17259,17326, 17326, 3166,17253,17326, 0, 0, 3150, 3171, 0,17257, 0,17326,17326,17326, 0, 3157, 3180, 3207,17326,17256, 17255, 3234, 3223,17326, 0,17254,17253,17252, 3281, 3226, 17326, 0,17251,17326,17326,17250,17249, 3225, 3237,17326, 0,17248,17326, 3235, 0, 0, 3242, 3269, 3270, 0, 17251,17250,17245,17244,17243,17242, 3276, 3287,17326, 0, 17241,17326, 0, 0, 1019,17326, 3750, 3331, 3793, 0, 17228, 3809, 3316, 3393,17227, 3325, 3505, 3322,17226, 3479, 17225,17224, 3517,17223, 3363, 3565, 3635,17222, 3447, 3493, 3377, 3329, 3484, 3834, 3842, 3497, 3492, 3017, 3573, 3502, 3524,17221, 3833, 3775,17220, 3328,17219, 3549, 3908, 3591, 3574, 3610, 504, 3605, 3832, 3607, 3764, 3618, 3622, 3880, 3898, 3899, 3659, 3909, 3893, 3939, 3944, 3563, 3700, 3955, 3869, 3734, 3988, 3868, 3928, 3943, 4010, 3890, 3844, 3835, 4034, 3953, 3825, 3959, 3612, 3934, 3641,17218, 3993, 4067, 3841, 3990, 4019, 4020, 4024, 4030,17217, 4027, 4035, 3994, 4139,17216, 4054,17215,17214,17213, 4090, 4061, 4075, 4109, 4069, 4078, 4095, 4113, 4133, 4145, 4085, 4120, 4168, 4111, 4144, 4156, 4218, 4208, 4140, 4142, 4065, 3768, 4178, 4199, 4194, 4196, 4179, 4217, 4211, 4209, 4231, 4235, 4250, 4258, 4290, 4264, 4267, 4278, 4245, 4289, 4276, 4334, 4313, 4304, 4337, 3362, 4283, 4344, 4252, 4244, 4375, 4324, 4330, 4321, 17212, 4328, 4362, 4446, 4361, 4365, 4388, 3948, 4391, 4408, 17211, 4336, 4393, 4376, 506, 4457, 4439, 4396, 4434, 4443, 4444, 4460, 4481, 4461, 4438, 4476, 4480, 4487, 4490, 4387, 4483, 4485, 4489, 0, 1287, 0, 3449, 3819, 4066, 4178, 4465, 4471, 4461, 4476, 1017, 0, 4499, 4486, 4510, 4507, 4505, 4508, 1021, 4498, 4498, 4508, 4509, 4510,17162,17161, 1469, 2721,17326,17215, 0,17326, 4580, 4602, 4590, 4612, 4502, 0, 4514, 4604, 0, 4589, 0, 4588, 4591, 4607, 4605, 4614, 4616, 4599, 4614, 4602, 4601, 4620, 4610, 4609, 4620, 4613, 4608, 4627, 4666, 4611, 4629, 4616, 4650, 4649, 4670, 0, 4658, 4656, 4671, 4722, 4657, 4715, 4663, 4729, 4664, 4660, 4667, 4659, 4725, 4682, 0, 0, 4683, 4684, 4774, 0, 0, 4678, 0, 4727, 4727, 4732, 4725, 4732, 4741, 4780, 4778, 4763, 4774, 4776, 4793, 4777, 4792, 4782, 4780, 4781, 4831, 4800, 4784, 4834, 4783, 4799, 4826, 4841, 4799, 4821, 4831, 4836, 4840, 4845, 4836, 4840, 4843, 4839, 4838, 0, 0, 0, 0, 4839, 0, 4845, 4855, 4861, 4860, 4857, 4861, 4862, 4880, 4896, 0, 0, 4897, 0, 0, 0, 4894, 4890, 4898, 0, 0, 4886, 4888, 0, 0, 4897, 0, 4891, 0, 4889, 4931, 4904, 4898, 4911, 0, 0, 0, 0, 0, 0, 0, 0, 4919, 4949, 4918, 0, 0, 0, 4926, 4940, 4917, 0, 0, 0, 0, 0, 0, 0, 0, 4925, 0, 4942, 4960, 0, 0, 0, 0, 0,17195, 4959, 4947, 4998, 4966, 4959, 4968, 0, 0, 4975, 4962, 4988, 4981, 4979, 5001, 5004, 4989, 4993, 5009, 5000, 5009, 5020, 5004, 5008, 5025, 5027, 5018, 5025, 5033, 5021, 5057, 5035, 5078, 5032, 5055, 5055, 5054, 5073, 5066, 5052, 5071, 5076, 5074, 5059, 5058, 5081, 5077, 5071, 5070, 5123, 5090, 5076, 5084, 5097, 5104, 5110, 5103, 5128, 5113,17202, 5125, 5129, 0, 5132, 5114, 5134, 5128, 0, 5136, 5143, 5190, 5146, 5123, 5134, 0, 0, 5128, 5131, 0, 0, 0, 5151, 5156, 0, 0, 5163, 5174, 0, 0, 0, 0, 0, 0, 5179, 5182, 0, 5165, 5174, 5169, 0, 5172, 0, 5181, 0, 5176, 0, 5178, 5180, 5178, 5191, 5185, 5190, 0, 0, 5202, 5190, 5198, 5195, 5204, 5199, 5201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5207, 5251, 5234, 5209, 5218, 0, 0, 0, 5218, 5252, 5238, 5240, 5249, 5258, 5262, 5248, 5262, 5257, 5254, 5256, 5288, 5262, 5256, 5267, 5266, 5312, 0, 5279, 5312, 5310, 5296, 5308, 5320, 5320, 5308, 5317, 5308, 5309, 5309, 0, 5314, 0, 5310, 5318, 5315, 5335, 5320, 5331, 5372, 5316, 5317, 0, 0, 0, 5322, 5335, 0, 0, 0, 5323, 5361, 5429, 5361, 5356, 5375, 5376, 5375, 5362, 5363, 5361, 5365, 5380, 0, 0, 0, 0, 0, 0, 0, 0, 5368, 0, 0, 0, 5365, 5372, 5387, 5378, 5373, 5390, 5382, 5384, 5389, 5423, 5419, 5425, 0, 5437,17217,17216, 0, 413, 5503,17210,17209, 5433, 0, 5432, 5448, 1412, 5440, 5432, 0, 5480, 0, 5433, 5440, 5470, 5480, 5488, 5497, 5485, 5487, 5502, 5500, 5488, 5525, 5501, 5500,17189, 0, 5539, 5500, 5519, 0, 5511, 5520, 5509, 0, 5519, 0, 0, 5526, 0, 5523, 5557, 5543, 0, 5513, 5548, 5519, 5548, 5565, 5581, 5592, 5555, 5558, 5656, 5576, 5566, 5584, 0, 5601, 5619, 0, 5581, 0, 5581, 5673, 5600, 5607, 5609,17188, 5613, 5649, 5624, 5643, 5630, 5637, 5665, 5661, 5669, 5647, 5672, 5663, 5679, 5679, 5678, 5675, 5725, 5695, 5689, 5731, 5693, 5713, 5713, 5771, 5693, 5732, 5735, 5781, 5735, 5743, 5748, 5734, 5734, 5747, 0, 5774, 5790, 5768, 5785, 5789, 5791, 5773, 5799, 0, 5801, 5803, 5798, 5845, 0, 5829, 0, 0, 0, 5854, 5850, 5817, 5854, 5847, 5849, 5851, 5839, 5895, 5889, 5856, 5861, 5890, 5876, 5901, 5898, 5931, 5909, 5912, 5924, 5913, 5921, 5918, 5921, 5919, 5916, 5937, 5949, 5933, 5923, 5934, 5959, 5972, 5946, 5985, 5981, 5943, 5961, 5976, 5992, 6002, 6035, 6015, 5996, 6044, 5996, 6013, 6023, 6027, 6043, 6047, 6044, 6046, 6038, 0, 6042, 6061, 6116, 6075, 6071, 6065, 6067, 6090, 6105, 0, 6087, 6097, 6101,17195, 6119, 6106, 6103, 6102, 6118, 6121, 6124, 6121, 6127, 6119, 6129, 6126, 6150, 6163, 6171, 6161, 6157, 6156, 6174, 6154, 6177, 6163, 0, 6178, 0, 6159,17326, 0, 0, 6183, 6162, 17210,17209,17203, 0, 6186, 6164, 6185, 6171, 6187,17326, 0,17207,17206, 6173, 6189,17326, 0,17205,17204, 6190, 6186, 0,17203,17202, 6192, 0, 0, 6193, 6194, 6195, 6196, 6183, 0,17198,17193, 6203, 6193, 6192,17172,17166, 17161,17147,17142, 6251,17136, 6254, 6252, 6258, 6255, 6256, 6260, 6263, 6262, 6261,17131,17126, 6264,17121,17113,17107, 6259, 6266, 6272,17102,17096, 6267, 6268,17091,17086, 6269, 17081, 6270,17075, 6275, 6310, 6271, 6316, 6273,17069,17060, 17050,17044,17039,17030,17020,17010, 6312, 6355, 6274,17000, 16990,16980, 6285, 6332, 6356,16970,16960,16954,16945,16935, 16925,16919,16914, 6345,16908, 6351,16899,16893,16884,16880, 16878, 509, 6359, 6339, 6425, 6363, 6341, 6365,16873,16870, 6379, 6357, 6391, 6367, 6362, 6394, 6405, 6404, 6406, 6415, 6411, 6422, 6435, 6396, 6431, 6428, 6432, 6437, 6471, 6450, 6409, 6481, 6476, 6488, 6489, 6500, 6478, 6504, 6505, 6513, 6506, 6512, 6507, 6525, 6520, 6516, 6551, 6523, 6527, 6528, 6560, 6517, 6534, 6565, 6573, 6531, 6576, 6571, 6577, 6552, 910, 6580, 6582,16865, 6586, 6584, 6591, 6592,16856, 6607, 6618, 6642, 6621, 6610, 6620,16852,16848, 6616, 6599,16839, 16829,16819, 6609, 6611,16809,16799, 6623, 6626,16798,16793, 16788,16779,16769,16759, 6658, 6654,16749, 6657, 6662, 6666, 16739, 6667,16729, 6664,16719, 6676,16709, 6683, 6684, 6670, 6686, 6668, 6685,16699,16689, 6693, 6688, 6689, 6692, 6694, 6698, 6703,16679,16669,16663,16658,16649,16639,16629,16619, 16609, 6717, 6776, 6725, 6743, 6710,16599,16593,16588, 6702, 6766, 6741, 6756, 6754, 6765, 6769, 6748, 6772, 6796, 6735, 6780, 6799, 6800, 6734, 6782, 6824, 6831,16585, 6825, 6845, 6835, 6836, 6810, 6854, 6827, 6858, 6853, 6859, 6860, 6862, 16576, 6868,16566, 6874, 6867, 6876, 6890, 6883, 6877, 6909, 6864, 6869,16560,16555,16546, 6882, 6893,16542,16540,16535, 6891, 6894, 6985, 6889, 6907, 6924, 6935, 6914, 6922, 6940, 6954, 6955, 6958,16532,16523,16517,16512,16508,16499,16489, 16479, 6961,16478,16463,16453, 6950, 6964, 6967, 6979, 6965, 6966, 6973, 6974, 7002, 6975, 6996, 7027,16443, 7028, 7045, 16437, 7054, 7052, 7058, 7056, 7055,16425, 7057,16415, 7062, 7065, 7067, 7069, 7072, 7074, 7075, 7077, 7079, 7070, 7078, 7146, 7105, 7089, 7082, 7118, 6387, 0, 6721, 6914, 7042, 7133, 7070, 0, 2347, 539, 7079, 7069, 7100, 7121, 7113, 7126, 7136, 7122, 2414, 1035, 7135, 7125, 7134, 7130, 7141, 7134,17326, 7175, 7204,17326, 7149, 7172, 0, 7163, 7181, 7184, 7194, 7198, 7190, 7186, 7187, 0, 7187, 7204, 7204, 7191, 7204, 7210, 0, 7202, 7202, 7208, 7217, 7210, 0, 0, 7212, 7222, 7221, 0, 7223, 7207, 7226, 7217, 7227, 7222, 7230, 7247, 7259, 7258, 7259, 7260, 7290, 7254, 7256, 7260, 7246, 7260, 7266, 7278, 7279, 7269, 7261, 7271, 7284, 7269, 7268, 7286, 0, 7293, 7302,16402, 7299, 7288, 7304, 0, 0, 7290, 0, 7305, 0, 0, 0, 7299, 7304, 7308, 7305, 7320, 7314, 7308, 7317, 0, 7312, 7337, 7313, 7320, 7340, 7344, 7336, 7334, 0, 7333, 7332, 7347, 7356, 1122, 7334, 7361, 7346, 0, 7362, 7349, 7350, 7369, 7370, 7383, 7356, 7364, 0, 0, 7367, 7383, 7385, 7373, 7391, 7382, 7400, 4412, 7402, 7393, 0, 7408, 7409, 7407, 7394, 7409, 7395, 7399, 7404, 7410, 7427, 7428, 7415, 7414, 7431, 7410, 0, 7423, 7446, 7448, 7443, 7439, 0, 0, 0, 0, 7437, 7436, 0, 7488, 7450, 7474, 7487, 7452, 7492, 7513, 7460, 7472, 7478, 7488, 7500, 7508, 0, 0, 7496, 7543, 7545, 7534, 0, 7508, 7537, 7547, 7517, 0, 7551, 7533, 7553, 7550, 0, 7558, 7546, 7559, 7568, 7566, 7554, 7573, 7561, 7575, 7571, 7576, 0, 0, 7583, 7594, 7591, 16392, 0, 7595, 0, 7596, 0, 7589, 7592, 7607, 0, 7596, 7601, 7613, 7615, 7617, 7611, 7604, 0, 7615, 7609, 7611, 7616, 7631, 0, 7612, 7623, 7667, 7629, 0, 7623, 7636, 7647, 0, 7638, 7670, 7660, 7664, 7670, 7663, 7663, 7669, 7664, 7675, 7671, 0, 7681, 7665, 7663, 7674, 0, 7667, 7677, 0, 7681, 7677, 0, 0, 7678, 7677, 7699, 7677, 0, 7687, 7702, 0, 0, 0, 7704, 0, 0, 0, 1100,16385,16382, 0, 7702, 0, 0, 7711, 7729, 7734, 0, 7710, 0, 0, 0, 0, 7725, 0, 0, 7717, 7736, 7735, 7738, 0, 0, 0, 0,16387, 7740, 7751, 7736, 7741, 7734, 7776, 7778, 7733, 7747, 7779, 7780, 7735, 7741, 7785, 7788, 7777, 7740, 7740,16378, 7815, 7745, 7777, 7802, 7806, 7785, 7790, 0, 0, 0, 7840, 7794, 7826, 7860, 7804, 7817, 7849, 7850, 7841, 7842, 7857, 7847, 7866, 7854, 7888, 7851, 7870, 7876, 7879, 7884, 7883, 7902, 7900, 7913, 7903, 7924, 7941, 7910, 7945, 0, 7915, 7916, 7903, 7904, 7906, 7922, 7931, 7924, 4416, 7924, 7939, 7966, 7987, 7961,16373, 7959, 7965, 7964, 0, 7988, 7981, 7991, 7993, 0, 0, 7995, 7996, 8042, 0, 8019, 0, 0, 8001, 0, 0, 0, 7989, 0, 0, 0, 8006, 0, 7998, 8005, 8008, 8044, 8013, 8014, 8062, 8065, 8030, 8038, 8036, 0, 0, 0, 0, 8049, 0, 0, 7488,17326, 16376, 8054, 8056, 0, 8060, 8058, 1120,16356,16090, 0, 8070, 8081, 0, 0, 0, 8065, 8072, 8090, 8091, 0, 8085, 8096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8103, 8097, 0, 0, 0, 0, 0, 8088, 0, 8095, 8102, 8109, 8105, 8104, 8110, 8108, 8110, 8127, 0, 0, 8128, 0, 0, 0, 8125, 8119, 8127, 0, 0, 8115, 8116, 0, 0, 8131, 0, 8125, 0, 8124, 8164, 8149, 8148, 8156, 0, 0, 0, 0, 0, 0, 0, 0, 8164, 8201, 8165, 0, 0, 0, 8171, 8175, 8159, 0, 0, 0, 0, 0, 0, 0, 0, 8174, 0, 8164, 8186, 0, 0, 0, 0, 0,16080, 8187, 8174, 8250, 8190, 8184, 8199, 0, 0, 8203, 8207, 8224, 8217, 8213, 8229, 8230, 8215, 8224, 8239, 8230, 8236, 8243, 8225, 8231, 8249, 8253, 8252, 8270, 8278, 8262, 8286, 8271, 8312, 8282, 8284, 8291, 8290, 8310, 8311, 8288, 8304, 8311, 8314, 8299, 8299, 8328, 8324, 8318, 8315, 8351, 8333, 8321, 8329, 8336, 8338, 8345, 8338, 8357, 8350,16086, 8364, 8369, 0, 8372, 8355, 8374, 8367, 0, 8375, 8389, 8405, 8382, 8363, 8378, 0, 0, 8374, 8379, 0, 0, 0, 8401, 8402, 0, 0, 8408, 8410, 0, 0, 0, 0, 0, 0, 8411, 8413, 0, 8396, 8406, 8402, 0, 8406, 0, 8415, 0, 8410, 0, 8412, 8413, 8412, 8425, 8420, 8424, 0, 0, 8436, 8424, 8434, 8437, 8440, 8441, 8446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8449, 8496, 8464, 8459, 8469, 0, 0, 0, 8463, 8484, 8462, 8467, 8479, 8488, 8490, 8476, 8491, 8485, 8482, 8488, 8523, 8504, 8498, 8512, 8516, 8536, 0, 8530, 8547, 8539, 8524, 8540, 8558, 8554, 8541, 8552, 8544, 8545, 8545, 0, 8550, 0, 8546, 8558, 8553, 8580, 8560, 8572, 8600, 8558, 8559, 0, 0, 0, 8568, 8583, 0, 0, 0, 8579, 8586, 8657, 8590, 8587, 8605, 8608, 8607, 8596, 8598, 8596, 8601, 8615, 0, 0, 0, 0, 0, 0, 0, 0, 8604, 0, 0, 0, 8601, 8647, 8658, 8632, 8617, 8634, 8626, 8634, 8641, 8660, 8661, 0, 8673, 8667, 0, 8666, 8681, 4566, 8678, 8670, 0, 8690, 0, 8681, 8696, 8715, 8701, 8709, 8718, 8704, 8706, 8721, 8719, 8707, 8775, 8720, 8719, 8725, 8717, 8724, 8730, 8727, 8726, 8736, 8729,17326, 8738, 8750, 8752, 8770, 8769, 8777, 8774, 8761, 8773, 8785, 8767, 8769, 8776, 8784,17326, 8779, 8790, 8773,16089, 8812, 8822, 8823, 8814, 8813, 8828, 8815,16088, 8817, 8820, 8829, 8825, 8818,16087,16083,16081,16079, 8816, 8830,16078, 8901, 8826, 8871, 8887, 8863, 8886, 8936, 8866, 8895, 8906, 8873, 8870, 8915,16077,16075, 8914, 8959, 8961, 8960,16073, 8905, 8963, 8970, 8946,16071, 8950, 8978,16070, 8991, 8993, 8982, 8990, 8979, 9001, 9010, 8967, 9013, 9018, 9011,16069,16068, 9020, 9022, 9035, 514,15916, 9034,15843, 9045,15811, 9041, 9048, 9059,15808, 9050, 9056, 9043, 9051, 9060, 9058, 9061,15800, 9064, 9067, 9062, 9069, 9076,15703, 9065, 9098, 9108, 9095, 15701, 9081, 9116, 9109,15607, 9111, 9126, 9129, 9141, 9143, 9128, 9142, 9145, 9144, 9150, 9154,15575, 9155, 9157, 9156, 9166,15571, 9158, 9152,15566, 9165, 9168,15564,15554, 9175, 9181, 9183, 9189,15550, 9201, 9209,15539,15481,15479, 9187, 15251,15200,15198, 1527, 1129, 238,15197, 9185,15182,15178, 9211, 9210, 9220,15177, 9192,15137,15136,15117,15110, 9212, 15108,15008, 9214, 9225, 9218, 9238,15002,14991,14989,14882, 14869, 9258, 9256, 9240, 9249, 9250, 9260, 9261, 9268, 9264, 9269, 9286, 9251, 9287, 9303, 9315, 9307, 9305, 9257, 1179, 9340, 9293, 9275, 9346, 9353, 9336, 9318,14863,14817,14813, 9343, 9335, 9350, 9403, 9347, 9334, 9378, 9407, 9359, 9392, 9400, 9404, 9409, 9385, 9452, 9411, 9417, 9433, 9434, 9435, 9431, 9445, 9460, 9483, 9485, 9490, 9482, 9476, 9510,14810, 9492, 9493, 9427, 9462, 9501, 9487, 9506, 9511, 9561, 9540, 9500, 9547, 9553, 9570,14809, 9559, 9541, 9579,14808, 9590, 9581, 9583, 9595,14780,14765, 9596, 9598, 9663,14764, 9600, 14762,14536, 9592,14521,14486,14483, 9567,14466,14464,14423, 9588,14401, 9599, 9638, 9597, 9651, 9602, 9628, 9672, 9679, 9646, 9676, 9666,14324,14309,14264,14263, 9639,14247, 9678, 9674,14213, 9681, 9670, 1580, 1234, 374,13917, 9665, 9712, 13815,13681,13675, 9640, 9594, 9721, 9722,13627, 9729, 9730, 13625,13498,13404,13268,13191,13178,13044,13019,13018,13015, 13008, 9733, 9742, 8826, 8849, 9189, 0, 9404, 9719, 9727, 9725, 9724, 9715, 1251, 9713, 9720, 9721, 9730, 9722, 9721, 9718, 9725, 1255, 9730, 9741, 9740, 0, 9745, 9748, 9801, 9761, 9781, 9771, 9781, 9794, 0, 9790, 0, 0, 9784, 0, 9795, 9800, 9805, 0, 9801, 9795, 9792, 9801, 9810, 9810, 9798, 9798, 0, 9798, 9803, 9802, 9820, 0, 9808, 9803, 9806, 9824, 9836, 9852, 9857, 0, 9835, 9842, 1287, 13002,12998, 0, 0, 9845, 9861, 9849, 9857, 9845, 9861, 9844, 9855, 9862, 9869, 9855, 9857, 9865, 9860, 9871, 9857, 9864, 9867,12993, 9862, 9877, 9874, 9878, 0, 9875, 9866, 9866, 9886, 9902, 9914, 9905, 9920, 9919, 9918, 9917, 9921, 9908, 9907, 9914, 9929, 9912, 9960, 9917, 9934, 9936, 9926, 0, 2102,12733,12714, 0, 9924, 9938, 9935, 0, 0, 0, 9934, 9937, 9946, 9931, 9951, 9976, 9962, 9979, 0, 0, 9971, 9968, 9982, 0, 9974, 1517,12711,12707, 0, 9971, 9988, 9970, 9975, 0, 9990, 9993, 9990, 9996, 9987, 9994,10003, 0, 0, 0, 0,10003, 0,10021, 0, 0,10003, 0,10007, 0,10002, 0, 0,10008,10026, 10036, 0, 0,10038,10039,10075, 0,10049, 0, 0, 10034,10036,10049,10031,10068,10057, 0, 0, 0, 0, 0, 0,10051,10059,10096, 0,10075, 0,12705,12704, 12699,12694,12692,12691,12583,10098,10108,10081, 0, 0, 0, 0,10088, 0,17326,10104,10100,10109,10100,10098, 0,10121,10125,10129,10120,10110,10122,10130,10137,10131, 0,10122,10144,10137, 0, 0, 0, 0,10151,10146, 10147,10144, 0,10151, 0, 0, 0,10152,10156, 0, 10156, 0, 0,10161,10160, 0,10157,10180,12498,12488, 0, 0,10164,10169,10185,10168,10178,10174,10198,10197, 10186,10192,12488, 0,10197,10194, 0,10208,10199, 0, 0,10193, 0, 0,10201,10209, 0,10209,10221,10224, 10213,10232,10234,10221,12473, 0, 0, 0,10222,10232, 0,10220, 0, 0, 0,10222, 0,10242,10272, 0, 0, 0, 0,10254, 0, 0, 0,10237, 0, 0, 0, 0,10250,10257, 0, 0, 0, 0,10248,10260, 10245,10302,10252,10294,10261,10296,10278,10321,10297, 0, 0,10298,10305, 0, 0, 0,10317, 0, 0, 0, 0, 0, 0,10298, 0, 0, 0,10307,10300,10305, 0, 0, 0,10326,10307, 0, 0, 0, 0, 0, 10318,10319,10318,10319,10320,10325,10349,10330,10356,10341, 10341,10340,10361,10366, 0, 0,10355,10372,10376,10355, 10393,10364, 0, 0, 0, 0,10366, 0, 0, 0, 0, 0,10388,10367, 0,10376,10384, 0,10388, 0, 0, 0, 0, 0, 0, 0, 0,10384,12474,12402, 12339,12161,10395, 0,10386,10388,10383,10390,10419,10393, 12161,12150,10421,10395,10406,10429, 0, 0, 0,10411, 0, 0, 0, 0,10421,10422, 0, 0,10428,10432, 0, 0, 0, 0, 0, 0,10434,10446,10448,10455, 10446,10435,10453, 0, 0, 0, 0,10454, 0, 0, 0, 0,10454,10443,10457, 0, 0, 8865, 9770,17326, 10453, 0,10465,10455,11998, 0, 0, 0, 0,10459, 10478, 0, 0, 0, 0,10470, 0, 0,10472, 0, 10469,10491,10495,10474,10473,10503,10476, 0,10487,10497, 10507,10501,10505, 0, 0, 0, 0,10504,10503, 0, 10555,10511,10529,10532,10517,10542,10580,10534,10560,10545, 10553,10567,10574, 0, 0,10566,10602,10613,10600, 0, 10575,10604,10606,10577, 0,10614,10596,10619,10617, 0, 10621,10614,10625,10634,10633,10620,10640,10630,10644,10638, 10641, 0, 0,10645,10659,10652,12002, 0,10656, 0, 10657, 0,10654,10657,10671, 0,10662,10666,10678,10680, 10682,10675,10669, 0,10681,10675,10675,10682,10695, 0, 10677,10691,10720,10698, 0,10692,10715,10712, 0,10701, 10727,10734,10736,10739,10728,10728,10734,10729,10740,10735, 0,10745,10729,10727,10739, 0,10732,10741, 0,10747, 10742, 0, 0,10744,10745,10768,10746, 0,10766,10767, 0, 0, 0,10767, 0, 0, 0, 1573,12000,11993, 0,10768, 0, 0,10776,10790,10795, 0,10771, 0, 0, 0, 0,10787, 0, 0,10781,10800,10799,10802, 0, 0, 0, 0,11855,10806,10812,10799,10805,10798, 10827,10828,10797,10815,10840,10846,10801,10806,10841,10839, 10848,10835,10841,11847,10889,10851,10844,10869,10875,10851, 10853, 0, 0, 0,10903,10862,10895,10929,10870,10901, 10907,10913,10905,10909,10925,10934,10944,10922,10959,10921, 10938,10952,10954,10963,10951,10968,10968,10972,10974,10987, 11004,10979,11011, 0,10981,10983,10974,10995,11000,11026, 11027,11016, 4929,11014,11009,11038,11054,11033,11787,11028, 11024,11024, 0,11064,11045,11062,11065, 0, 0,11067, 11069,11118, 0,11078, 0, 0,11073, 0, 0, 0, 11061, 0, 0, 0,11093, 0,11070,11077,11084,11113, 11084,11081,11123,11128,11097,11114,11099, 0, 0, 0, 11118, 0,11130,11127, 0,11134,11134, 1574,11756,11673, 0,11141,11150, 0, 0, 0,11135,11144,11161,11166, 0,11156,11168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11175,11172,11181,11168,11170,11178, 11184,17326, 0, 0,17326,17326,11185,11182,11186,11186, 11190,11190,11194,11181,11196,11183,11203,11191, 0,11206, 0,11227,11658,11617,11558,11548,11237,11536,11229,11468, 11464,11233,11315,11242,11311,11235,11302,11300,11258,11260, 11263,11289,11278,11264,11267,11308,11274,11268,11272,11270, 11269,11271,11275,11259,11281,11298,11131,11124,11120,11114, 11112,11110,11280,11273,11324,11107,11284,11021, 1594, 1618, 1816, 1880, 1922, 2025, 2104,11348,11349,11323,11010,10993, 10952,10939,11354,10935,11355,11356,11357,11363,10918,11368, 11374,11378,11367,11365,11366,11380,11391,11382,10901,11396, 11381,11390,10892,10888,10884,10842,11437,11398,11412,11403, 10837,11413,10833,10825,10608,11414,11415,10604,11423,10603, 10590,11433,11435,10569,11404,11443, 2263, 2405,10568,10558, 11454,11445,11450,11429,11462,11449,11459,11485,11474,11484, 1007,10557,11486,11493,10554,11499,11495,10547,10545,11503, 10543,10461,11455,11506,10403,11505,11509,11513,11517,11515, 11524,11523, 2168,10310,10268,10088,11526,11519,10087,11535, 10081,10078,10077,11530,10075,11531,11569,10069,10067,10065, 10064,11555,10063,10027, 9966,11562, 9956, 9950, 9780, 9778, 11557,11570, 9687, 9685, 9677, 9675,11572,11586,11545,11612, 11542,11603,11580,11613,11600,11641,11643, 9669, 9655,11647, 11648, 9642, 9636, 9634,11652, 9629, 9591, 9587, 9586, 9585, 9546,11594, 9520, 9503, 9494,11634,11618,11646, 9481, 9466, 9451,11644,11653, 9436, 9424, 9367, 9361, 9351,11638,11649, 11657,11667,11672,11678,11677,11684,11691,11680,11693,11702, 11688,11703, 9344, 9324,11709,11715,11712,11723,11745,11724, 9304, 9294, 9292, 9248,11735, 9234, 9222, 9091, 9072, 8995, 11738,11736, 8971,11722,11727, 8932,11730, 8927, 8919, 8918, 8912, 8907, 8904, 8902, 8864,11740, 2406, 2412, 407, 1182, 11754, 8856,11753,11733,11755,11746,11740,11781, 8855, 8753, 11772,11788,11791,11796, 8752, 8751, 8749,11799, 8747, 8746, 8660, 8659,11805,11811, 8652, 8646,11812,11813, 8645, 8509, 8500, 8496, 8495, 8487,11814,11821,11838,11841,11818,11832, 11820, 8399, 8325, 8249, 8208,11827, 8204, 8175, 8170, 133, 11822,11842,11829, 157, 194,11844, 216,11847,11846, 2404, 435, 476, 487, 495,11849,11871, 501, 508, 909, 991, 11853, 1016, 1024,11882,11243,11854,11252,11243, 0,11545, 11744,11845, 0,11866,11856, 0, 0,11873,11861, 0, 0,11866,11874,11870,11870, 0, 0,11886,11870, 0, 11872,11890,11875, 0, 0, 0,11884,11880,11897,11907, 11908,11912,11914,11920, 0,11908, 0,11915,11913,11908, 11915,11927,11931,11920, 0,11918,11930, 0,11927, 0, 11920, 1029, 0, 0, 0,11933,11923,11924,11936,11941, 11942,11946, 0, 2761,11951,11952,11953,11955,11962, 0, 11958,11948,11960, 0,11975, 0,11998,11976,11984,11976, 11989,11983,11976,11980,11984,12000,11986,12000,12002,11991, 12012,12010,12012,12011,12008,12022, 0,12019,12018,12037, 12050,12020,12022,12049, 0, 0,12045, 1070, 1103, 1124, 0, 0,12046,12037,12048,12063,12062,12054,12056,12063, 12053,12073,12057,12064,12069,12070, 0,12079, 1227, 0, 0, 0,12078,12074,12080,12066,12079, 0,12075,12088, 12089,12100,12097,12102,12115,12104, 0, 0,12117,12109, 12119,12118, 0, 0, 0, 0,12122,12123, 0, 0, 12124,12126, 0, 0, 0, 0, 0, 0,12131,12133, 12136,12144,12157,12161,12120,12125,12158,12166,12124,12157, 0, 0,12148,12162,12183,12168,12185,12169,12171,12172, 1288, 1289, 1290, 1326,12173, 0,12173, 0,12179,12183, 0,12198,12200,12191,12190,12194,12194, 0,12212,12208, 0, 0,12213,12217, 0,12226,12226,12231, 0,12245, 0, 0, 0,12222, 0, 0, 0,12223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12218, 0,12234,12226,12245, 0, 0,12231, 0, 0,12233, 0, 0,12237,12239,12241, 0,12240, 1328, 0, 0, 0, 0,12241, 0, 0, 0,12248,12246, 0,12275, 12245,12255,12267,12260,12283,12258,12283,12299, 0, 0, 12265, 0, 0,12275, 0, 0,12285,12289, 0, 0, 12289, 0, 0,12290, 0, 0,12295,12295, 0,12309, 0,12298,12296,12300, 0, 0,12321,12319,12326,12302, 0, 0,12324,12332,12356, 0, 0,12334, 0, 0, 0, 0,12330,12327, 0, 0,12334,12344,12360,12343, 12353, 0, 0,12345,12347, 0, 0, 0, 0, 0, 12369,12365, 0, 0,12362, 1357, 0, 0, 0, 0, 12356,12354,12363,12369,12372,12384, 0,12393,12400,12377, 12395, 0,12381,12390,12392,12393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12399,12415, 0, 0,12417,12404,12422,12409,12412,12425, 0, 0, 0,12425,12426, 0,12434, 0, 0, 0, 0,12434, 0,12433, 0, 0,12435, 0,12438, 0,12436, 0, 0,12427,12442,12444, 0, 0,12449,12453,12489, 0, 12466, 0, 0,12463,12479,12481,12445,12483,12471, 0, 0, 0, 0, 0, 0,12471,12479,12495, 0,12493, 0, 1400, 1419, 1420, 1457, 1463, 1471, 1477,12505,12529, 12499, 0, 0, 0, 0,12501, 0,17326,12519,12531, 12540,12529,12526, 0,12547,12549,12552,12545,12531,12541, 12549,12547,12551, 0,12541,12556,12549, 0, 0, 0, 0,12598,12550,12554,12551, 0,12557, 0, 0, 0, 12560,12559, 0,12558, 0, 0,12566,12568, 0,12573, 12600, 1493, 1520, 0, 0,12582,12590,12606,12591,12601, 12593,12615,12616,12604,12609, 1535, 0,12610,12607, 0, 12622,12613, 0, 0,12607, 0, 0,12616,12624, 0, 12620,12633,12636,12628,12653,12657,12639, 1592, 0, 0, 0,12650,12658, 0,12647, 0, 0, 0,12649, 0, 12668,12707, 0, 0, 0, 0,12676, 0, 0, 0, 12659, 0, 0, 0, 0,12678,12678, 0, 0, 0, 0,12669,12682,12666,12733,12673,12724,12678,12725,12695, 12747,12720, 0, 0,12723,12726, 0, 0, 0,12731, 0, 0, 0, 0, 0, 0,12720, 0, 0, 0, 12729,12726,12727, 0, 0, 0,12747,12729, 0, 0, 0, 0, 0,12751,12751,12749,12750,12755,12760,12782, 12763,12786,12770,12769,12768,12789,12791, 0, 0,12777, 12794,12799,12782,12822,12789, 0, 0, 0, 0,12790, 0, 0, 0, 0, 0,12809,12789, 0,12799,12808, 0,12809, 0, 0, 0, 0, 0, 0, 0, 0, 12802, 1600, 1613, 1646, 1652,12814, 0,12811,12818,12814, 12820,12843,12828, 1815, 1896,12848,12830,12838,12839, 0, 0, 0,12839, 0, 0, 0, 0,12849,12854, 0, 0,12855,12863, 0, 0, 0, 0, 0, 0,12864, 12868,12869,12876,12867,12855,12868, 0, 0, 0, 0, 12871, 0, 0, 0, 0,12884,12874,12887, 0, 0, 12878, 0,12900,12882, 1892, 0, 0, 0, 0,12888, 12906, 0, 0, 0, 0,12899, 0, 0,12900,12912, 12898,17326,12903,12913,12897,12916,17326,12918,17326,12920, 17326,12917,12907,12914,12914,12917,12924,12955,12958, 1907, 1908,12967,12968,12972,12960, 1910, 1947, 1959, 1960,12974, 12975, 1965, 2001,12982,12987, 2003, 2019, 2031, 2043, 2052, 2071,12977,12989,13002,13003,13012,13013,13009,13038,13048, 13052,13001,12991, 2072, 2111,12993,12988,13054,13033,13061, 13059,13060,13062, 2469, 2477, 2546, 2562,13064, 2113, 2165, 13073,13078, 2194,13069,13079,13058,13087,13093,13100, 2219, 13108,13104, 2251, 2262,13094,13084, 2327,13090,13112,13121, 2330,13134, 2339, 2371, 2396,13105, 2420, 2480, 2483,13118, 2486, 2521, 2524, 2541, 2547, 2561, 2627, 2630, 2631, 2656, 2688,13136, 2706,12994,13143,13145, 2710, 2714,13148, 2716, 2720,13150, 2765, 2767,13147,13158,13159, 2770,13151, 2968, 2775, 2777, 2779, 2781,13161, 2838, 2843, 2844,13149,13164, 2865,13171,13163,13165,13174,13177,13202,13172,13194,13222, 2902, 2903,13206, 2904, 2931,13180, 2966, 2970,13215,13219, 3018, 3029,13205, 3074, 3075,13211, 3086, 3089,13229,13236, 3093,13238, 3146,13252,13237,13244, 3148, 3154,13250,13259, 13262,13251, 3155, 3156,13258,13288,13297, 3157, 3206,13267, 3207, 3209, 3211, 3213,13253,13270, 3214, 3215,13261,13257, 13295,13265,13290, 3261, 3265,13305,13322, 3304, 3307, 3317, 3318, 3319,13325,13328, 3321, 3371,13301, 3388, 3372, 3373, 3374, 3375,13333,13332,13298,13326,13337,13340, 3376,13328, 13334,13343,13357, 3394,13344,13351,13356,13353, 3397, 3400, 3412, 3416, 3486, 3496, 3498, 3499, 3500, 3506, 3510, 3515, 13364,13375, 3542, 3543,13383,13373,13395,13379,13382,13384, 3553, 3557, 3566,13408,13410, 0,13167,13351, 0, 0, 13378,13392,13390,13398,13401,13406,13399, 0, 0, 0, 13408,13407,13392,13391,13411,13405, 0, 0,13417,13404, 13413,13427, 0,13407,13415,13411,13417,13435,13449,13431, 13442,13455,13453, 0, 3591, 0, 0,13458,13441,13441, 13445,13449, 0,13451, 3596, 3613, 0,13465, 0,13453, 13463,13464, 0,13463,13471,13453,13478, 0,13475,13508, 13463,13480,13467,13478,13482, 0,13485,13492,13488,13508, 13512,13500,13515,13510,13522,13525,13524,13524, 0,13515, 13514,13535,13523,13530,13534, 0, 0,13540,13540,13538, 13527,13531, 0,13537,13547, 0, 0, 0,13540, 0, 13547,13554,13554,13561, 0, 3646, 0,13560, 0, 0, 13549,13565,13568, 0,13581,13582,13579,13577,13568,13571, 13579,13574,13589,13588, 0,13583,13593,13581,13598,13587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13604, 13617,13624,13626,13631,13634,13636,13637,13607, 3650,13613, 13643,13620,13651,13654,13627,13642,13671,13660,13679,13681, 13690,13646,13673, 0,17326,13679,13679,13688,13687,13685, 13696,13706,13705, 0,13695,13707,13698,13703, 0, 0, 13712,13713, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13701,13704, 0, 13723,13720,13742,13716,13732,13738,13735,13727,17326,13748, 13750,13750,13748,13741,13758, 0, 0, 0, 0, 0, 13760, 0, 0, 0, 0,13749,13751,13765,13764,13747, 13769,13772, 0, 0, 0, 0, 0, 0, 0, 0, 0,13775, 0, 0, 0,13772,13764, 0, 0, 0, 0, 0,13805,13810,13759, 0,13814,13767,13769,13770, 13778,13802,13791,13818,13810,13821,13810,13828, 0, 0, 0, 0, 0, 0,13812, 0, 0, 0,13827,13832, 13829, 0, 0,13836,13825, 0, 0,13837,13830,13842, 13842, 0, 0, 0, 0,13851,13860, 0, 0,13861, 13864, 0, 0, 0, 0, 0, 0,13867,13870,13872, 13874,13876,13879,13869,13885,13887,13894,13866,13883, 0, 0,13871,13878,13914,13892,13924,13893,13908,13912, 3657, 3658, 3659, 3660,13913, 0,13912, 0,13919,13923, 0, 13940,13942,13932,13928,13932,13931, 0,13947,13938, 0, 0,13942,13946, 0,13955,13952,13955, 0,13988, 0, 0, 0,13947, 0, 0, 0,13949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13944, 0, 13960,13952,13968, 0, 0,13954, 0, 0,13956, 0, 0,13964,13976,13977, 0,13978, 3663, 0, 0, 0, 0,13980, 0, 0, 0,13987,13986, 0,14003,13988, 13997,14007,13999,14010,13996,14016,14027, 0, 0,13994, 0, 0,14001, 0, 0,14006,14010, 0, 0,14013, 0, 0,14015, 0, 0,14020,14034, 0,14050, 0, 14035,14034,14036, 0, 0,14059,14058,14066,14041, 0, 0,14064,14073,14076, 0, 0,14067, 0, 0, 0, 0,14061,14051, 0, 0,14059,14061,14078,14063,14077, 0, 0,14069,14071, 0, 0, 0, 0, 0,14096, 14105, 0, 0,14092, 3660, 0, 0, 0, 0,14095, 14094,14102,14109,14113,14125, 0,14130,14133,14118,14129, 0,14115,14118,14119,14119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14122,14136, 0, 0,14137,14123,14142,14135,14138,14151, 0, 0, 0, 14151,14153,14148,14171,14175,14173,14159,17326,17326,14169, 17326,14164,14177,14185,17326, 3663,14208,14212,14211, 3676, 3704, 3705, 3733, 3765, 3778, 3781, 3785, 3789, 3795, 3798, 3838, 3839, 3845, 3849, 3873, 3878, 3882, 3888,14214,14216, 14217,14218,14219,14220,14221,14222,14226, 3936,14229,14278, 14231,14223,14292,14261,14294,14268,14298,14301,14303,14308, 14302,14304, 3900,14306,14310,14232,14299,14313,14307,14319, 14312, 3924,14318,14317,14311,14353, 3938, 3940,14355,14362, 3941, 3942, 3945, 3979, 3982, 3984, 3989, 3999, 4036, 4038, 4039, 4041, 4047, 4115, 4128,14357,14322, 4151,14376,14377, 14367,14384,14386,14387,14390,14382, 4171,14391,14392,14395, 14396,14400,14402, 4174, 4187, 4232, 4237, 4253,14410, 4255, 4292, 4295, 4298,14393,14406,14405,14421,14413,14441,14445, 4318, 4348, 4378, 4397, 4401, 4407, 4418, 4429, 4430,14450, 4441, 4553, 4554,14433,14452, 4555, 4556, 4557, 4559, 4573, 14462,14469,14431, 4578,14473,14472,14479,14480,14460,14481, 14456,14477,14476,14502,14499,14508, 4580, 4654, 4703, 4710, 4712, 4713,14506, 4714, 4715, 4721,14530,14537,14511, 4727, 4762,14493,14512,14511,14504,14526,14517, 0,14529,14515, 14517,14518,14538,14526, 0,14538,14541,14542,14547, 0, 0,14531,14546,14539,14539,14546, 0,14555,14569,14558, 0, 0,14553, 0, 0, 0,14557, 0, 0, 0, 0, 0,14556,14578,14584,14584,14580,14575,14594,14591, 14589, 0,14579,14580,14586,14590,14603,14587,14597,14591, 14591,14610, 0, 0, 0,14609,14620,14612,14608,14602, 14602,14632, 0, 0,14620,14621,14631,14629,14632,14632, 14654,14638, 0, 0,14631, 0, 0,14649,14658, 0, 0, 0,14656,14655,14658,14646,14648,14647,14667,14653, 0,14667, 0,14658, 0,14659,14661, 0, 0, 0, 0,14657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14666,14676, 14671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14667,14682,14678, 14691,14692,14698, 0, 0, 0,14696,14708,14711,14710, 14710, 0, 0,14705, 0, 0, 0, 0, 0,17326, 17326,17326,17326,17326,17326,14696,17326,17326,17326,17326, 17326,17326,14717,14716,17326,14707, 0, 0, 0, 0, 0,14720,14708, 0, 0, 0, 0,14714,14724,14707, 14716,14731,14732,14714,14722,14736,14738, 0,17326,17326, 17326,14770,14773,14774,14734,14738,14747,14768,14763,14779, 14762,14763, 0, 0, 0, 0, 0,14763,14765,14782, 14771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14785,14811,14815,14817,14818,14819,14821,14822,14794, 4756, 14797,14839,14814,14830,14840,14825,14851,14857,14844,14873, 14877,14879,14828,14865, 0,17326,14866,14867,14876,14877, 14878,14889,14898,14897, 0,14887,14897,14888,14892, 0, 0,14900,14901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14890,14892, 0,14917,14907,14925,14901,14919,14922,14931,14919,17326, 14943,14944,14943,14941,14932,14950, 0, 0, 0, 0, 0,14953, 0, 0, 0, 0,14939,14942,14957,14956, 14939,14961,14962, 0, 0, 0, 0, 0, 0, 0, 0, 0,14963, 0, 0, 0,14958,14950, 0, 0, 0, 0, 0,14998,15002,14954, 0,15003,14963,14964, 14968,14985,15007,14996,15008,14999,15013,15001,15019, 0, 0, 0, 0, 0, 0,15004, 0, 0, 0,15025, 15026,15020, 0, 0,15009,17326,15007,15004,17326,15029, 17326,15027,15041, 0, 4767, 4773, 4819,15080, 4822, 4823, 4832, 4930, 4933, 4940, 4942, 4955, 4991, 4997, 5003, 5006, 5007, 5113, 5162, 5164,15082,15081,15084, 5169, 5246, 5259, 5264, 5300, 5417, 5418, 5419, 5421, 5474, 5475, 5476, 5477, 5478, 5482, 5539,15085,15086,15087,15088,15096,15097, 5545, 5562, 5588,15089,15092,15091,15100,15102, 5627, 5632,15095, 5645, 5646, 5647, 5648, 5649, 5713, 5767, 5769, 5771, 5779, 5834,15099, 5835, 5853, 5856, 5860, 5886, 5888,15104,15105, 5967,15103, 5968, 5990, 5993, 6005, 6014,15106,15131, 6038, 6041, 6043, 6088,15133,15139,15107,15135,15163,15164,15134, 15173,15166,15167, 6089, 6090, 6093, 6094,15183,15187,15190, 15174,15176,15180,15204,15181,15218,15184,15192, 6107, 6112, 6113, 6116, 6276,15194,15087,15153, 0, 0, 0,15163, 0,15202,15194, 0,15209,15210, 0,15197,15209, 0, 15221, 0,15244,15217, 0, 0,15231,15230,15231, 0, 15228,15250, 0,15249,15249,15236,15237,15252,15240,15239, 15264,15264,15250,15251,15266,15260,15270,15255,15255,15272, 15257,15254,15273,15288,15301,15290,15282,15292, 0, 0, 15283, 0,15306,15306,15309, 0, 0,15297, 0,15311, 15310,15305, 0, 0, 6267, 0,15314, 0, 0,15303, 0, 0,15307,15309,15324,15321,15334,15335, 0,15325, 0, 0, 0, 0, 0, 0,15321, 0, 0,15329, 0, 0,15332,17326,17326,15315, 0, 0,15317, 6978, 0, 0, 0,15324, 0, 0, 0,15326, 0,17326, 17326,17326,17326,17326,17326,17326,17326,17326,15369,15373, 15336,15337,15340,15344,15374,15377,15375, 0, 0, 0, 15362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15372,15381,15380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15376,15386,15381,15390, 15392,15394, 0, 0, 0,15391,15411,15413,15410,15410, 0, 0,15407, 0, 0, 0, 0, 0,17326,17326, 17326,17326,17326,17326,15401,17326,17326,17326,17326,17326, 17326,15429,15428,17326,15420, 0, 0, 0, 0, 0, 15433,15420, 0, 0, 0, 0,15430,15435,15418,15425, 15439,15441,15428,15436,15450,15451, 0,17326,17326,17326, 15455,15456,15490,15443,15446,15451,15476,15464,15482,15468, 15476, 0, 0, 0, 0, 0,15477,17326,15484,17326, 17326,15493,17326, 6281,15520,15523,15530, 6284,15533, 6301, 6302, 6306, 6348, 6358, 6360,15521, 6361, 6412,15519, 6434, 6439,15534, 6440, 6457,15522, 6460, 6521,15525, 8256, 6615, 6617, 6695,15524, 6699, 6701, 6713,15535, 6723, 6767, 6777, 6779, 6781, 6784, 6786, 6794, 6865, 6885,15565,15580,15537, 15540,15556,15558,15589,15597,15581, 0,15515,15532, 0, 15532,15543, 0, 0, 0,15535,15586,15575,15580,15577, 15579,15582,15603, 0,15594,15598,15591,15596,15611, 0, 0, 0, 0,15600,15606, 0,15619,15611,15628,15622, 15619,15622, 0,15643, 0,15645,15643,15642,15652,15650, 15648,15648, 0, 0,15655,15640,15641, 0, 0,15649, 15660, 0, 0, 0, 0, 0,15661,15664,15654, 0, 0, 0, 0, 0,15647, 0,15666, 0,15675, 0, 0, 0, 0, 0,17326,17326,17326,17326,17326,17326, 15678,15689,15704,15712,17326,17326,17326,17326,17326,17326, 15695,15693,15706,15715, 0,15709, 0, 0, 0, 0, 0, 0,15705, 0, 0,15713, 0, 0,15717,17326, 17326,15700, 0, 0,15703, 8647, 0, 0, 0,15709, 0, 0, 0,15711, 0,17326,17326,17326,17326,17326, 17326,17326,17326,17326,15738,15751,15710,15712,15717,15719, 15766,15773,15758,15746,17326, 0, 6919,15794, 6962, 6970, 6971, 6986, 6987,15762, 6997,15790, 6998,15796, 7081, 7094, 7099, 7108, 7115, 7135, 7138, 7175, 7221, 7292, 7482,15798, 15809,15822,15833, 7487, 7489, 7494, 7502, 7534, 7537,15799, 0,15774, 0, 0,15778,15784,15783,15799,15799, 0, 0, 0,15799, 0, 0, 0, 0,15802, 0,15809, 0,15821,15821,15825,15823, 0,15843,15829,15829,15849, 15833,15838,15858,15853,15854,15861,15846, 0, 0, 0, 0, 0,15876,15867,15866,15857, 0,15867, 0,17326, 17326,17326,17326,17326,17326,17326,17326,17326,17326,17326, 17326, 0,15868, 0, 0, 0, 0, 0,15859, 0, 15880, 0,15891, 0, 0, 0, 0, 0,17326,17326, 17326,17326,17326,17326,15899,15905,15916,15922,17326,17326, 17326,17326,17326,17326,15890,17326,15915, 7764,15926, 7769, 7770, 7780, 7821, 7825, 7864, 7947, 7951, 8021, 8031, 8044, 8048, 8055, 8068, 0, 0,15893,15892,15912,15918, 0, 0,15912,15932,15922,15918, 0,15930, 0, 0,15928, 0, 0,15929,15934,15949,15949,15948, 0, 0,15955, 15958,15946,15968,15966,15965, 0,17326,15961, 0,15973, 0,17326,17326,17326,17326,17326,17326,17326,17326,17326, 17326,17326,17326, 0, 8166, 8167, 0, 0,15964,15976, 15980,15966,15985,15970,15970, 0, 0, 0, 0,15973, 15973,15996,15997,15994,15993, 0,15985,15987,16007, 0, 17326, 0,16008,16005,16004, 0,16001,15998, 0, 0, 0,16005,16007,16007,16030, 0, 0,16015,16017,16016, 16036,16028, 0, 0, 0, 0,16026, 0, 0, 0, 16027,16027, 0, 0,16028, 0,17326,16115,16125,16135, 16145,16155,16165,16175,16185,16195,16205,16215,16225,16235, 16245,16255,16265,16275,16285,16295,16305,16315,16325,16335, 16345,16355,16365,16375,16380,16388,16393,16400,16410,16420, 16430,16440,16443,16448,16458,16468,16478,16481,16484,16494, 16504,16514,16519,16523,16528,16538,16543,16546,16551,16561, 16566,16571,16581,16591,16596,16599,16604,16614,16624,16634, 16644,16654,16664,16669,16674,16684,16694,16704,16714,16724, 16734,16744,16754,16764,16774,16784,16794,16799,16804,16814, 16824,16834,16844,16854,16859,16863,16867,16870,16876,16881, 16884,16889,16899,16904,16914,16919,16922,16925,16930,16940, 16950,16960,16965,16975,16985,16995,17005,17015,17025,17035, 17045,17050,17055,17065,17075,17080,17086,17092,17097,17102, 17107,17108,17113,17118,17124,17127,17132,17137,17142,17147, 17153,17158,17161,17164,17167,17172,17177,17183,17186,17192, 17197 } ; static yyconst flex_int16_t yy_def[7372] = { 0, 7227, 1, 7228, 7228, 7229, 7229, 7230, 7230, 7231, 7231, 7232, 7232, 7227, 13, 7233, 7233, 7234, 7234, 7235, 7235, 7236, 7236, 7237, 7237, 7238, 7238, 7236, 7236, 7239, 7239, 7240, 7240, 7241, 7241, 7242, 7242, 7243, 7243, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7244, 7244, 7236, 7236, 7245, 7245, 7246, 7246, 7247, 7247, 7248, 7248, 7249, 7249, 7250, 7250, 7251, 7251, 7252, 7252, 7253, 7253, 7227, 81, 7227, 83, 7236, 7236, 7227, 87, 7227, 7227, 7227, 7227, 7227, 7227, 7254, 7227, 7255, 7227, 7227, 7256, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7257, 7257, 7257, 7257, 7257, 7227, 7257, 7257, 7257, 7257, 7257, 7257, 7257, 7257, 7257, 7257, 7257, 7257, 7227, 7257, 7257, 7257, 7257, 7257, 7257, 7227, 7227, 7227, 7258, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7259, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7260, 7227, 7227, 7227, 7227, 7227, 7227, 7261, 7227, 7262, 7227, 7227, 7227, 7227, 7263, 7264, 7264, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7265, 7227, 7227, 7227, 7227, 7227, 7227, 7266, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7267, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7268, 7227, 7269, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7270, 7227, 7227, 7227, 7227, 7227, 7227, 7271, 7227, 7227, 7227, 7227, 7272, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7273, 7227, 7274, 7227, 7227, 7227, 7275, 7275, 7275, 7275, 7275, 7227, 7275, 7275, 7275, 7275, 7275, 7275, 7275, 7275, 7275, 7275, 7275, 7275, 7227, 7275, 7275, 7275, 7275, 7275, 7275, 7227, 7227, 7227, 7276, 7227, 7227, 7277, 7227, 7227, 7278, 7278, 7278, 7278, 7278, 7278, 7278, 7278, 7278, 7278, 7278, 7278, 7278, 7278, 7227, 7279, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7280, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7281, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7283, 7227, 7284, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7282, 7285, 7286, 7227, 7227, 7287, 7287, 7287, 7287, 7287, 7287, 7227, 7287, 7287, 7287, 7287, 7287, 7287, 7287, 7287, 7287, 7287, 7287, 7227, 7287, 7287, 7287, 7287, 7287, 7287, 7227, 7227, 7227, 7288, 7227, 7227, 7227, 7227, 7227, 7227, 7289, 7290, 7227, 7227, 7227, 7291, 7292, 7227, 7227, 7227, 7227, 7227, 7227, 7293, 7294, 7294, 7294, 7295, 7296, 7297, 7227, 7227, 7227, 7298, 7227, 7227, 7227, 7227, 7299, 7227, 7227, 7227, 7227, 7300, 7301, 7302, 7227, 7227, 7227, 7227, 7303, 7304, 7227, 7227, 7305, 7227, 7227, 7227, 7227, 7306, 7307, 7227, 7227, 7308, 7309, 7227, 7227, 7227, 7310, 7227, 7227, 7311, 7227, 7312, 7227, 7227, 7227, 7227, 7313, 7314, 7227, 7315, 7316, 7227, 7227, 7317, 7317, 7317, 7318, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7319, 7320, 7227, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7321, 7322, 7322, 7227, 7227, 7227, 7227, 7323, 7227, 7227, 7227, 7227, 7227, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7317, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7227, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7325, 7227, 7326, 7227, 7227, 7227, 7227, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7324, 7327, 7328, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7329, 7227, 7227, 7227, 7227, 7330, 7227, 7331, 7227, 7227, 7332, 7333, 7333, 7333, 7334, 7227, 7227, 7335, 7227, 7227, 7227, 7227, 7227, 7227, 7336, 7337, 7227, 7227, 7227, 7227, 7338, 7339, 7227, 7227, 7227, 7340, 7341, 7227, 7227, 7342, 7343, 7227, 7227, 7227, 7227, 7227, 7344, 7345, 7227, 7346, 7346, 7346, 7347, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7227, 7227, 7349, 7349, 7349, 7349, 7349, 7349, 7349, 7349, 7227, 7227, 7349, 7349, 7349, 7349, 7349, 7349, 7349, 7349, 7227, 7227, 7349, 7349, 7349, 7349, 7349, 7349, 7227, 7227, 7227, 7227, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7227, 7227, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7227, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7351, 7227, 7227, 7227, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7350, 7352, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7354, 7354, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7346, 7346, 7346, 7355, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 2934, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7356, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7357, 7357, 7357, 7357, 7357, 7357, 7357, 7357, 7357, 7357, 7227, 7357, 7357, 7357, 7357, 7357, 7357, 7357, 7357, 7227, 7357, 7357, 7357, 7357, 7357, 7357, 7227, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7227, 7227, 7358, 7358, 7358, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7359, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7360, 7360, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7346, 7346, 7346, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 2988, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7356, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7361, 7356, 7348, 7348, 7348, 7356, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7227, 7227, 7227, 7358, 7227, 7227, 7227, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7359, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7353, 7353, 7353, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7346, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7361, 7361, 7361, 7348, 7356, 7356, 7361, 7361, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7353, 7227, 7227, 7227, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7346, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7363, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7364, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7365, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7348, 7348, 7348, 7348, 7348, 7348, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7362, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7366, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7367, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7358, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7368, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7348, 7362, 7362, 7362, 7362, 7362, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7366, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7367, 7369, 7346, 7346, 7346, 7346, 7346, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7358, 7358, 7358, 7358, 7358, 7358, 7358, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7358, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7353, 7227, 7227, 7370, 7368, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7348, 7348, 7348, 7348, 7348, 7348, 7348, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7348, 7362, 7362, 7362, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7371, 7346, 7346, 7346, 7358, 7358, 7227, 7358, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7358, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7353, 7353, 7353, 7353, 7353, 7353, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7353, 7227, 7348, 7348, 7361, 7348, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7361, 7348, 7362, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7371, 7346, 7346, 7346, 7346, 7346, 7346, 7358, 7227, 7353, 7353, 7227, 7353, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7353, 7348, 7361, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7353, 7227, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 7346, 0, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227 } ; static yyconst flex_int16_t yy_nxt[17447] = { 0, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 127, 141, 142, 143, 144, 127, 145, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 127, 141, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 90, 90, 90, 165, 166, 167, 168, 169, 171, 171, 174, 174, 177, 177, 180, 213, 213, 181, 182, 172, 172, 175, 175, 178, 178, 180, 214, 214, 181, 182, 183, 189, 216, 189, 190, 191, 190, 191, 700, 221, 216, 183, 217, 222, 276, 277, 226, 192, 218, 192, 217, 221, 226, 243, 278, 222, 218, 227, 243, 246, 246, 256, 700, 227, 244, 219, 256, 352, 352, 244, 247, 247, 257, 219, 267, 267, 270, 257, 268, 268, 271, 270, 273, 273, 293, 271, 274, 274, 276, 277, 280, 281, 280, 281, 282, 294, 282, 293, 278, 700, 283, 284, 283, 284, 299, 299, 299, 299, 294, 359, 365, 371, 372, 366, 360, 300, 469, 300, 367, 368, 369, 700, 621, 626, 184, 185, 186, 622, 627, 634, 193, 187, 193, 640, 635, 184, 185, 186, 641, 644, 654, 661, 187, 700, 645, 655, 662, 469, 194, 4046, 194, 195, 195, 196, 195, 195, 197, 198, 195, 195, 195, 199, 200, 201, 195, 195, 202, 195, 195, 203, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 204, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 206, 205, 205, 205, 205, 205, 207, 208, 195, 205, 195, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 206, 205, 205, 205, 205, 205, 209, 195, 210, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 211, 229, 530, 229, 230, 231, 230, 231, 236, 700, 236, 237, 238, 237, 238, 4233, 259, 232, 249, 232, 260, 250, 251, 259, 239, 249, 239, 260, 250, 251, 885, 885, 670, 530, 252, 582, 286, 671, 470, 287, 288, 252, 700, 286, 625, 648, 287, 288, 5210, 471, 2349, 2349, 289, 674, 513, 233, 472, 233, 514, 289, 398, 399, 240, 400, 240, 677, 582, 401, 515, 470, 700, 402, 253, 403, 516, 625, 648, 404, 517, 253, 471, 518, 519, 405, 674, 513, 233, 472, 233, 514, 290, 398, 399, 240, 400, 240, 677, 290, 401, 515, 637, 646, 402, 253, 403, 516, 668, 678, 404, 517, 253, 700, 518, 519, 405, 638, 647, 679, 234, 652, 234, 290, 700, 653, 669, 241, 889, 241, 290, 689, 700, 637, 646, 261, 690, 254, 700, 668, 678, 700, 261, 700, 254, 700, 700, 1881, 638, 647, 679, 700, 652, 1079, 3983, 291, 653, 669, 2112, 889, 3064, 3064, 291, 295, 295, 223, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 295, 295, 295, 295, 295, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 297, 223, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 297, 297, 297, 297, 297, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 110, 111, 112, 113, 114, 115, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 312, 326, 142, 143, 144, 312, 145, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 312, 326, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 90, 90, 90, 165, 166, 167, 168, 169, 332, 333, 334, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 700, 700, 659, 687, 688, 2863, 660, 336, 337, 338, 337, 339, 340, 337, 337, 341, 337, 342, 337, 343, 337, 344, 345, 337, 346, 347, 348, 337, 337, 349, 337, 337, 337, 659, 687, 688, 337, 660, 336, 337, 338, 337, 339, 340, 337, 337, 341, 337, 342, 337, 343, 337, 344, 345, 337, 346, 347, 348, 337, 337, 349, 337, 337, 337, 350, 361, 700, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 894, 887, 695, 695, 888, 700, 898, 630, 899, 900, 901, 363, 631, 696, 700, 1914, 1914, 695, 695, 1924, 1924, 700, 700, 906, 5108, 1915, 773, 954, 696, 1925, 700, 894, 887, 3073, 3073, 888, 364, 898, 700, 899, 900, 901, 363, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 5297, 906, 834, 632, 773, 954, 883, 374, 375, 376, 377, 378, 379, 380, 381, 382, 373, 373, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 373, 396, 834, 632, 5356, 373, 883, 374, 375, 376, 377, 378, 379, 380, 381, 382, 373, 373, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 373, 396, 406, 3355, 952, 407, 566, 3356, 5357, 408, 567, 953, 409, 410, 904, 411, 412, 413, 568, 905, 985, 414, 415, 3545, 3173, 5358, 3174, 3546, 700, 560, 561, 3175, 4045, 406, 562, 952, 407, 566, 911, 911, 408, 567, 953, 409, 410, 904, 411, 412, 413, 568, 905, 985, 414, 415, 416, 417, 531, 418, 532, 533, 534, 419, 563, 564, 1005, 420, 421, 1009, 422, 423, 535, 424, 425, 565, 536, 426, 427, 428, 700, 700, 1016, 700, 4087, 5211, 912, 416, 417, 531, 418, 532, 533, 534, 419, 563, 564, 1005, 420, 421, 1009, 422, 423, 535, 424, 425, 565, 536, 426, 427, 428, 429, 577, 1016, 578, 430, 1010, 821, 431, 432, 822, 823, 433, 579, 580, 434, 581, 955, 435, 436, 1011, 437, 956, 438, 439, 700, 3064, 3064, 5374, 4232, 3073, 3073, 429, 577, 1019, 578, 430, 1010, 821, 431, 432, 822, 823, 433, 579, 580, 434, 581, 955, 435, 436, 1011, 437, 956, 438, 439, 440, 441, 442, 443, 902, 473, 895, 474, 896, 1019, 907, 444, 445, 446, 475, 476, 897, 1022, 447, 477, 908, 478, 903, 448, 1904, 1904, 4302, 5430, 5431, 5432, 4303, 440, 441, 442, 443, 902, 473, 895, 474, 896, 1023, 907, 444, 445, 446, 475, 476, 897, 1022, 447, 477, 908, 478, 903, 448, 397, 397, 449, 397, 397, 397, 397, 397, 397, 397, 5433, 5467, 1017, 1018, 1026, 1905, 1023, 450, 451, 452, 453, 454, 455, 397, 397, 456, 397, 397, 457, 458, 459, 460, 461, 397, 462, 463, 464, 465, 397, 466, 467, 468, 397, 1017, 1018, 1026, 397, 5526, 450, 451, 452, 453, 454, 455, 397, 397, 456, 397, 397, 457, 458, 459, 460, 461, 397, 462, 463, 464, 465, 397, 466, 467, 468, 397, 479, 480, 481, 926, 482, 483, 484, 927, 962, 1033, 5593, 485, 486, 487, 488, 489, 963, 928, 490, 491, 964, 2357, 700, 2358, 1036, 492, 2359, 929, 2360, 5594, 5595, 479, 480, 481, 926, 482, 483, 484, 927, 962, 1033, 774, 485, 486, 487, 488, 489, 963, 928, 490, 491, 964, 775, 1037, 1006, 1036, 492, 493, 929, 776, 494, 495, 496, 497, 1038, 498, 1007, 5596, 499, 500, 1008, 501, 774, 5597, 617, 502, 503, 911, 911, 504, 618, 5598, 619, 775, 1037, 1006, 1050, 5599, 493, 620, 776, 494, 495, 496, 497, 1038, 498, 1007, 1020, 499, 500, 1008, 501, 5643, 505, 617, 502, 503, 506, 507, 504, 618, 508, 619, 1034, 700, 509, 1050, 510, 1021, 620, 1035, 1059, 912, 511, 1060, 512, 4379, 986, 1020, 5644, 4380, 987, 700, 867, 505, 988, 4043, 868, 506, 507, 4044, 1061, 508, 5655, 1034, 869, 509, 554, 510, 1021, 555, 1035, 1059, 556, 511, 1060, 512, 520, 986, 521, 557, 522, 987, 558, 867, 523, 988, 1024, 868, 524, 559, 525, 1061, 1025, 526, 527, 869, 528, 554, 1062, 529, 555, 4788, 4975, 556, 700, 4789, 4976, 520, 4230, 521, 557, 522, 4231, 558, 1066, 523, 1063, 1024, 700, 524, 559, 525, 5047, 1025, 526, 527, 5673, 528, 5755, 1062, 529, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 5756, 700, 1048, 1049, 1066, 5048, 1063, 537, 538, 539, 397, 540, 541, 542, 543, 544, 397, 397, 545, 546, 397, 397, 547, 548, 397, 549, 550, 551, 397, 552, 397, 553, 397, 1048, 1049, 5757, 397, 5758, 537, 538, 539, 397, 540, 541, 542, 543, 544, 397, 397, 545, 546, 397, 397, 547, 548, 397, 549, 550, 551, 397, 552, 397, 553, 397, 569, 570, 571, 1064, 572, 1067, 1065, 573, 937, 890, 891, 892, 938, 1076, 574, 893, 939, 575, 576, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 1077, 940, 569, 570, 571, 1064, 572, 1067, 1065, 573, 937, 890, 891, 892, 938, 1076, 574, 893, 939, 575, 576, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 1077, 940, 1078, 1080, 1083, 364, 1086, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 587, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 587, 611, 1078, 1080, 1083, 587, 1086, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 587, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 587, 611, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 5767, 700, 1087, 1097, 1098, 5049, 1099, 374, 375, 376, 377, 697, 379, 698, 381, 382, 373, 373, 383, 384, 385, 386, 387, 388, 389, 390, 699, 392, 393, 394, 395, 373, 396, 1087, 1097, 1098, 373, 1099, 374, 375, 376, 377, 697, 379, 698, 381, 382, 373, 373, 383, 384, 385, 386, 387, 388, 389, 390, 699, 392, 393, 394, 395, 373, 396, 700, 700, 919, 700, 919, 5050, 1108, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 5768, 1084, 702, 703, 700, 704, 5798, 1109, 777, 705, 778, 700, 700, 706, 700, 707, 1085, 779, 780, 708, 1108, 1081, 781, 809, 782, 709, 700, 810, 811, 1082, 5051, 812, 1084, 702, 703, 813, 704, 814, 1109, 777, 705, 778, 700, 815, 706, 816, 707, 1085, 779, 780, 708, 700, 1081, 781, 809, 782, 709, 700, 810, 811, 1082, 817, 812, 700, 700, 818, 813, 1117, 814, 700, 1100, 946, 1027, 1118, 815, 819, 816, 1101, 1123, 947, 710, 820, 948, 711, 1028, 949, 950, 712, 951, 1029, 713, 714, 817, 715, 716, 717, 818, 1136, 1117, 718, 719, 1100, 946, 1027, 1118, 700, 819, 700, 1101, 1123, 947, 710, 820, 948, 711, 1028, 949, 950, 712, 951, 1029, 713, 714, 700, 715, 716, 717, 700, 1136, 700, 718, 719, 700, 5052, 916, 700, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 835, 700, 836, 837, 838, 720, 721, 1137, 722, 1030, 700, 363, 723, 1138, 839, 1094, 724, 725, 840, 726, 727, 1095, 728, 729, 1031, 1032, 730, 731, 732, 700, 700, 835, 1096, 836, 837, 838, 720, 721, 1137, 722, 1030, 700, 363, 723, 1138, 839, 1094, 724, 725, 840, 726, 727, 1095, 728, 729, 1031, 1032, 730, 731, 732, 700, 858, 700, 1096, 859, 4358, 5053, 860, 4359, 700, 4360, 700, 1144, 1002, 861, 1003, 1045, 862, 1004, 733, 1145, 1146, 1012, 734, 863, 1013, 735, 736, 1046, 1047, 737, 1147, 858, 738, 1014, 859, 739, 740, 860, 741, 1015, 742, 743, 1144, 1002, 861, 1003, 1045, 862, 1004, 733, 1145, 1146, 1012, 734, 863, 1013, 735, 736, 1046, 1047, 737, 1147, 700, 738, 1014, 700, 739, 740, 700, 741, 1015, 742, 743, 700, 918, 5126, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 1148, 878, 1149, 879, 1088, 700, 744, 745, 746, 747, 1106, 363, 880, 881, 1107, 882, 1157, 748, 749, 750, 1089, 1090, 1127, 1158, 751, 1159, 1160, 1128, 1161, 752, 700, 1148, 878, 1149, 879, 1088, 364, 744, 745, 746, 747, 1106, 363, 880, 881, 1107, 882, 1157, 748, 749, 750, 1089, 1090, 1127, 1158, 751, 1159, 1160, 1128, 1161, 752, 700, 700, 701, 701, 753, 701, 701, 701, 701, 701, 701, 701, 700, 700, 1162, 1163, 1164, 5096, 1165, 754, 755, 756, 757, 758, 759, 701, 701, 760, 701, 701, 761, 762, 763, 764, 765, 701, 766, 767, 768, 769, 701, 770, 771, 772, 701, 1162, 1163, 1164, 701, 1165, 754, 755, 756, 757, 758, 759, 701, 701, 760, 701, 701, 761, 762, 763, 764, 765, 701, 766, 767, 768, 769, 701, 770, 771, 772, 701, 700, 700, 560, 561, 700, 1914, 1914, 562, 980, 1191, 981, 1150, 982, 700, 700, 1915, 976, 1151, 977, 783, 784, 785, 983, 786, 787, 788, 978, 984, 979, 1192, 789, 790, 791, 792, 793, 864, 865, 794, 795, 980, 1191, 981, 1150, 982, 796, 700, 866, 976, 1151, 977, 783, 784, 785, 983, 786, 787, 788, 978, 984, 979, 1192, 789, 790, 791, 792, 793, 864, 865, 794, 795, 700, 921, 1924, 1924, 922, 796, 700, 866, 700, 700, 700, 923, 1925, 5097, 5208, 1193, 700, 924, 5251, 925, 5209, 1124, 1199, 1091, 700, 797, 1200, 1092, 798, 799, 800, 801, 921, 802, 1093, 922, 803, 804, 1125, 805, 1126, 957, 923, 806, 807, 958, 1193, 808, 924, 959, 925, 1189, 1124, 1199, 1091, 960, 797, 1200, 1092, 798, 799, 800, 801, 961, 802, 1093, 1190, 803, 804, 1125, 805, 1126, 957, 700, 806, 807, 958, 5859, 808, 700, 959, 700, 1189, 1176, 700, 5860, 960, 700, 930, 931, 700, 1203, 932, 1177, 961, 1204, 933, 1190, 824, 934, 825, 1119, 826, 935, 1102, 936, 827, 1120, 1103, 1104, 828, 1105, 829, 1121, 1176, 830, 831, 1122, 832, 930, 931, 833, 1203, 932, 1177, 700, 1204, 933, 700, 824, 934, 825, 1119, 826, 935, 1102, 936, 827, 1120, 1103, 1104, 828, 1105, 829, 1121, 700, 830, 831, 1122, 832, 700, 700, 833, 700, 5861, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 700, 700, 1205, 1217, 1218, 5862, 1219, 841, 842, 843, 701, 844, 845, 846, 847, 848, 701, 701, 849, 850, 701, 701, 851, 852, 701, 853, 854, 855, 701, 856, 701, 857, 701, 1205, 1217, 1218, 701, 1219, 841, 842, 843, 701, 844, 845, 846, 847, 848, 701, 701, 849, 850, 701, 701, 851, 852, 701, 853, 854, 855, 701, 856, 701, 857, 701, 700, 941, 700, 942, 943, 700, 700, 1185, 1129, 1201, 1130, 944, 1131, 945, 1202, 1187, 1132, 1220, 1221, 870, 871, 872, 1222, 873, 1133, 1186, 874, 1134, 1135, 1188, 1223, 700, 941, 875, 942, 943, 876, 877, 1185, 1129, 1201, 1130, 944, 1131, 945, 1202, 1187, 1132, 1220, 1221, 870, 871, 872, 1222, 873, 1133, 1186, 874, 1134, 1135, 1188, 1223, 989, 700, 875, 1224, 990, 876, 877, 965, 966, 967, 991, 968, 992, 969, 1225, 993, 994, 1197, 970, 700, 995, 971, 972, 700, 1198, 973, 974, 700, 1226, 700, 1232, 989, 975, 700, 1224, 990, 911, 911, 965, 966, 967, 991, 968, 992, 969, 1225, 993, 994, 1197, 970, 996, 995, 971, 972, 997, 1198, 973, 974, 998, 1226, 1182, 1232, 1233, 975, 999, 1234, 1251, 1000, 1039, 1183, 1040, 1041, 1252, 1042, 1001, 1184, 1043, 5305, 700, 5306, 700, 996, 912, 700, 5307, 997, 1253, 1044, 700, 998, 700, 1182, 700, 1233, 700, 999, 1234, 1251, 1000, 1039, 1183, 1040, 1041, 1252, 1042, 1001, 1184, 1043, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1273, 1253, 1044, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1110, 1274, 1111, 1112, 1139, 1242, 1140, 1194, 1195, 1152, 1266, 1113, 1114, 1115, 1153, 1243, 1267, 1277, 1116, 1196, 1273, 1141, 1142, 1143, 700, 1154, 1155, 1278, 1156, 700, 700, 1110, 1274, 1111, 1112, 1139, 1242, 1140, 1194, 1195, 1152, 1266, 1113, 1114, 1115, 1153, 1243, 1267, 1277, 1116, 1196, 700, 1141, 1142, 1143, 1214, 1154, 1155, 1278, 1156, 1166, 1167, 1168, 1178, 1169, 1215, 1170, 1249, 1282, 1179, 1275, 1171, 1250, 1216, 1172, 1173, 1254, 1268, 1174, 1180, 1255, 1269, 1256, 1276, 1283, 1175, 1214, 1181, 700, 700, 700, 1166, 1167, 1168, 1178, 1169, 1215, 1170, 1249, 1282, 1179, 1275, 1171, 1250, 1216, 1172, 1173, 1254, 1268, 1174, 1180, 1255, 1269, 1256, 1276, 1283, 1175, 700, 1181, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1227, 1228, 1235, 1284, 1285, 1239, 1244, 1286, 1302, 1303, 1236, 1229, 1240, 1245, 1241, 1304, 1237, 1246, 1230, 1231, 1305, 1257, 1238, 1247, 1258, 700, 1248, 700, 1259, 700, 5895, 1227, 1228, 1235, 1284, 1285, 1239, 1244, 1286, 1302, 1303, 1236, 1229, 1240, 1245, 1241, 1304, 1237, 1246, 1230, 1231, 1305, 1257, 1238, 1247, 1258, 1260, 1248, 1261, 1259, 1270, 1306, 1262, 1279, 1271, 1311, 1307, 1312, 1320, 1280, 1272, 1263, 1281, 1328, 1264, 1265, 700, 700, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1329, 1260, 700, 1261, 1330, 1270, 1306, 1262, 1279, 1271, 1311, 1307, 1312, 1320, 1280, 1272, 1263, 1281, 1328, 1264, 1265, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1308, 1326, 1329, 1322, 1309, 1331, 1330, 1327, 1332, 1295, 1323, 1296, 1297, 1324, 1325, 1333, 1310, 1298, 700, 700, 1334, 1299, 1335, 1300, 1336, 1337, 1301, 1338, 1339, 1340, 700, 1308, 1326, 700, 1322, 1309, 1331, 700, 1327, 1332, 1295, 1323, 1296, 1297, 1324, 1325, 1333, 1310, 1298, 1315, 1316, 1334, 1299, 1335, 1300, 1336, 1337, 1301, 1338, 1339, 1340, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1341, 1342, 1343, 1346, 1347, 1417, 1348, 1418, 1465, 1478, 1349, 1466, 1467, 1527, 1350, 1528, 1351, 1529, 1419, 700, 1352, 700, 1530, 1531, 1533, 1420, 1353, 700, 700, 700, 700, 1341, 1342, 1343, 1346, 1347, 1417, 1348, 1418, 1465, 1478, 1349, 1466, 1467, 1527, 1350, 1528, 1351, 1529, 1419, 1421, 1352, 1422, 1530, 1531, 1533, 1420, 1353, 1354, 1423, 1424, 1355, 1535, 1539, 1425, 1356, 1426, 1540, 1357, 1358, 1545, 1359, 1360, 1361, 1508, 1509, 1546, 1362, 1363, 700, 700, 1421, 700, 1422, 700, 1510, 700, 700, 700, 1354, 1423, 1424, 1355, 1535, 1539, 1425, 1356, 1426, 1540, 1357, 1358, 1545, 1359, 1360, 1361, 1508, 1509, 1546, 1362, 1363, 1364, 1365, 1547, 1366, 1511, 1461, 1510, 1367, 1512, 1462, 1550, 1368, 1369, 1556, 1370, 1371, 1513, 1372, 1373, 1463, 1560, 1374, 1375, 1376, 700, 1464, 1561, 1548, 700, 1549, 1565, 1364, 1365, 1547, 1366, 1511, 1461, 1568, 1367, 1512, 1462, 1550, 1368, 1369, 1556, 1370, 1371, 1513, 1372, 1373, 1463, 1560, 1374, 1375, 1376, 1377, 1464, 1561, 1548, 1378, 1549, 1565, 1379, 1380, 1569, 1570, 1381, 700, 1568, 1382, 700, 1571, 1383, 1384, 1554, 1385, 1555, 1386, 1387, 700, 700, 700, 700, 1572, 700, 700, 1377, 1522, 700, 1523, 1378, 700, 700, 1379, 1380, 1569, 1570, 1381, 1524, 1525, 1382, 1526, 1571, 1383, 1384, 1554, 1385, 1555, 1386, 1387, 1388, 1389, 1390, 1391, 1572, 1587, 1584, 952, 1522, 1590, 1523, 1392, 1393, 1394, 1577, 700, 700, 1605, 1395, 1524, 1525, 1634, 1526, 1396, 700, 700, 700, 700, 700, 700, 700, 1388, 1389, 1390, 1391, 1840, 1587, 1584, 952, 1594, 1590, 700, 1392, 1393, 1394, 1577, 700, 700, 1605, 1395, 700, 5954, 1634, 700, 1396, 587, 587, 1397, 587, 587, 587, 587, 587, 587, 587, 700, 1840, 1585, 1586, 700, 1594, 1604, 1398, 1399, 1400, 1401, 1402, 1403, 587, 587, 1404, 587, 587, 1405, 1406, 1407, 1408, 1409, 587, 1410, 1411, 1412, 1413, 587, 1414, 1415, 1416, 587, 1585, 1586, 700, 587, 1604, 1398, 1399, 1400, 1401, 1402, 1403, 587, 587, 1404, 587, 587, 1405, 1406, 1407, 1408, 1409, 587, 1410, 1411, 1412, 1413, 587, 1414, 1415, 1416, 587, 1427, 1428, 1429, 700, 1430, 1431, 1432, 1906, 700, 1601, 700, 1433, 1434, 1435, 1436, 1437, 700, 700, 1438, 1439, 700, 700, 700, 700, 700, 1440, 700, 1606, 1591, 700, 700, 1427, 1428, 1429, 700, 1430, 1431, 1432, 1906, 700, 1601, 700, 1433, 1434, 1435, 1436, 1437, 1602, 700, 1438, 1439, 1588, 1616, 1617, 1603, 1618, 1440, 1441, 1606, 1591, 1442, 1443, 1444, 1445, 1628, 1446, 700, 700, 1447, 1448, 1629, 1449, 1589, 700, 1592, 1450, 1451, 700, 1602, 1452, 1593, 700, 1588, 1616, 1617, 1603, 1618, 700, 1441, 700, 700, 1442, 1443, 1444, 1445, 1628, 1446, 700, 700, 1447, 1448, 1629, 1449, 1589, 1453, 1592, 1450, 1451, 1454, 1455, 1452, 1593, 1456, 1595, 1635, 700, 1457, 1675, 1458, 1479, 1627, 1480, 1481, 1482, 1459, 1596, 1460, 6012, 6019, 700, 1597, 700, 1645, 1483, 700, 1453, 700, 1484, 1644, 1454, 1455, 6020, 700, 1456, 1595, 1635, 700, 1457, 1675, 1458, 1479, 1627, 1480, 1481, 1482, 1459, 1596, 1460, 1468, 700, 1469, 1597, 1470, 1645, 1483, 700, 1471, 1646, 1484, 1644, 1472, 1647, 1473, 1650, 1714, 1474, 1475, 1654, 1476, 1653, 1598, 1477, 6071, 700, 6110, 6251, 6252, 6253, 6254, 1468, 6288, 1469, 1716, 1470, 6347, 1599, 1600, 1471, 1646, 6384, 700, 1472, 1647, 1473, 1650, 1714, 1474, 1475, 1654, 1476, 1653, 1598, 1477, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 1716, 700, 1664, 1599, 1600, 700, 700, 1485, 1486, 1487, 587, 1488, 1489, 1490, 1491, 1492, 587, 587, 1493, 1494, 587, 587, 1495, 1496, 587, 1497, 1498, 1499, 587, 1500, 587, 1501, 587, 1664, 700, 700, 587, 1676, 1485, 1486, 1487, 587, 1488, 1489, 1490, 1491, 1492, 587, 587, 1493, 1494, 587, 587, 1495, 1496, 587, 1497, 1498, 1499, 587, 1500, 587, 1501, 587, 1502, 700, 700, 1503, 1676, 700, 1504, 1514, 1515, 1516, 1685, 1517, 700, 1505, 1518, 700, 1506, 941, 700, 942, 943, 1519, 700, 1507, 1520, 1521, 700, 1576, 1651, 945, 1787, 1502, 700, 1632, 1503, 700, 1633, 1504, 1514, 1515, 1516, 1685, 1517, 1652, 1505, 1518, 700, 1506, 941, 996, 942, 943, 1519, 1578, 1507, 1520, 1521, 998, 1576, 1651, 945, 1787, 700, 999, 1632, 1580, 1000, 1633, 1581, 700, 700, 700, 700, 1001, 1652, 700, 700, 1582, 700, 700, 996, 700, 700, 1583, 1578, 1712, 700, 1907, 998, 1630, 1607, 1705, 1608, 1609, 999, 1610, 1580, 1000, 1611, 1581, 1613, 1724, 1704, 1648, 1001, 700, 700, 1631, 1582, 1612, 700, 1649, 1614, 1615, 1583, 700, 1712, 700, 1907, 700, 1630, 1607, 1705, 1608, 1609, 700, 1610, 700, 1684, 1611, 700, 1613, 1724, 1704, 1648, 700, 700, 700, 1631, 1655, 1612, 1690, 1649, 1614, 1615, 700, 700, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1656, 1657, 1661, 1658, 1684, 1667, 700, 1659, 1662, 1703, 700, 1665, 1668, 1666, 1660, 1655, 700, 1690, 700, 1663, 700, 700, 700, 700, 700, 700, 700, 700, 6406, 1691, 700, 1656, 1657, 1661, 1658, 700, 1667, 700, 1659, 1662, 1703, 700, 1665, 1668, 1666, 1660, 1692, 1669, 1693, 1673, 1663, 1670, 1671, 1674, 1672, 1715, 1677, 1694, 1678, 1679, 1691, 700, 1695, 1713, 700, 1711, 700, 1680, 1681, 1682, 700, 700, 700, 1872, 1683, 700, 700, 1692, 1669, 1693, 1673, 700, 1670, 1671, 1674, 1672, 1715, 1677, 1694, 1678, 1679, 1686, 700, 1695, 1713, 1725, 1711, 1687, 1680, 1681, 1682, 700, 700, 1688, 1872, 1683, 700, 1689, 1717, 700, 1732, 1696, 700, 1697, 1718, 1698, 700, 700, 700, 1699, 700, 700, 1686, 700, 1726, 1727, 1725, 1700, 1687, 700, 1701, 1702, 1730, 1729, 1688, 1706, 700, 1707, 1689, 1717, 1731, 1732, 1696, 700, 1697, 1718, 1698, 700, 1728, 700, 1699, 700, 1708, 1709, 1710, 1726, 1727, 700, 1700, 1743, 700, 1701, 1702, 1730, 1729, 1749, 1706, 700, 1707, 1744, 1719, 1731, 700, 1756, 1750, 1720, 1752, 700, 1786, 1728, 1751, 1908, 1758, 1708, 1709, 1710, 1721, 1722, 1757, 1723, 1743, 700, 1745, 700, 1753, 700, 1749, 700, 1746, 1759, 1744, 1719, 700, 1766, 1756, 1750, 1720, 1752, 1747, 1786, 700, 1751, 1908, 1758, 1754, 700, 1748, 1721, 1722, 1757, 1723, 700, 700, 1745, 700, 1753, 700, 700, 1755, 1746, 1759, 1770, 1760, 700, 1766, 1767, 1761, 1762, 700, 1747, 1733, 1734, 1735, 1785, 1736, 1754, 1737, 1748, 1763, 1771, 700, 1738, 1784, 700, 1739, 1740, 700, 1764, 1741, 1755, 700, 700, 1770, 1760, 1765, 1742, 1767, 1761, 1762, 700, 1772, 1733, 1734, 1735, 1785, 1736, 700, 1737, 700, 1763, 1771, 700, 1738, 1784, 1793, 1739, 1740, 1768, 1764, 1741, 700, 700, 1769, 700, 1788, 1765, 1742, 1909, 1789, 700, 700, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1791, 1790, 1781, 700, 700, 1793, 1792, 700, 1768, 700, 1794, 1795, 1782, 1769, 1799, 1788, 700, 700, 1909, 1789, 1783, 1796, 700, 1800, 700, 700, 1802, 700, 1797, 1798, 700, 1791, 1790, 1781, 1803, 1801, 700, 1792, 1845, 700, 1804, 1794, 1795, 1782, 1820, 1799, 1805, 1844, 700, 1806, 700, 1783, 1796, 1809, 1800, 700, 1807, 1802, 1808, 1797, 1798, 700, 700, 1810, 700, 1803, 1801, 700, 1816, 1845, 700, 1804, 1818, 1817, 1841, 1820, 700, 1805, 1844, 1824, 1806, 1811, 1825, 1819, 1809, 700, 1826, 1807, 1812, 1808, 700, 1821, 1813, 700, 1810, 1822, 700, 1823, 1814, 1816, 700, 1815, 700, 1818, 1817, 1841, 700, 1835, 700, 700, 1824, 1836, 1811, 1825, 1819, 1833, 700, 1826, 1849, 1812, 700, 1834, 1821, 1813, 1850, 1827, 1822, 1828, 1823, 1814, 1851, 1829, 1815, 700, 700, 1837, 1852, 700, 1835, 1838, 1830, 1842, 1836, 1831, 1832, 1839, 1833, 700, 700, 1849, 700, 1878, 1834, 1869, 1843, 1850, 1827, 1853, 1828, 700, 700, 1851, 1829, 700, 1870, 700, 1837, 1852, 700, 700, 1838, 1830, 1842, 700, 1831, 1832, 1839, 1846, 1900, 700, 700, 1880, 1878, 1847, 1869, 1843, 1848, 3197, 1853, 3198, 700, 3479, 3199, 3480, 3200, 1870, 3481, 1871, 3482, 1879, 1873, 700, 700, 1875, 1888, 1874, 700, 1876, 1846, 1900, 700, 700, 1880, 700, 1847, 700, 700, 1848, 700, 1877, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1871, 700, 1879, 1873, 700, 700, 1875, 1888, 1874, 1862, 1876, 1863, 1864, 1886, 1890, 1891, 1889, 1865, 1895, 1887, 700, 1866, 1877, 1867, 700, 700, 1868, 700, 1882, 700, 1892, 700, 1894, 700, 700, 1883, 1910, 1911, 1884, 1885, 1862, 1912, 1863, 1864, 1886, 1890, 1891, 1889, 1865, 1895, 1887, 1896, 1866, 1898, 1867, 1893, 1913, 1868, 1901, 1882, 1899, 1892, 1897, 1894, 1916, 1902, 1883, 1910, 1911, 1884, 1885, 1903, 1912, 1917, 1920, 1918, 1921, 1922, 1926, 1927, 1930, 1931, 1896, 1936, 1898, 1937, 1893, 1913, 1928, 1901, 1923, 1899, 1919, 1897, 1929, 1916, 1902, 700, 700, 700, 700, 700, 1903, 700, 1917, 1920, 1918, 1921, 1922, 1926, 1927, 1930, 1931, 3848, 1936, 3849, 1937, 700, 3850, 1928, 3851, 1923, 700, 1919, 700, 1929, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 1935, 363, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 1938, 363, 1940, 1941, 1934, 1942, 1943, 1939, 1944, 1945, 363, 1946, 1947, 1948, 1949, 1950, 1951, 1954, 1956, 1957, 1952, 1961, 1962, 1955, 1967, 1970, 1953, 1958, 1959, 1960, 700, 1938, 363, 1940, 1941, 1968, 1942, 1943, 1939, 1944, 1945, 1969, 1946, 1947, 1948, 1949, 1950, 1951, 1954, 1956, 1957, 1952, 1961, 1962, 1955, 1967, 1970, 1953, 1958, 1959, 1960, 1963, 1971, 1964, 1972, 1973, 1968, 1974, 1975, 1976, 1991, 1995, 1969, 1999, 2000, 2002, 1965, 2003, 2001, 700, 1966, 2006, 2007, 2008, 1977, 1978, 700, 2016, 700, 700, 700, 700, 1963, 1971, 1964, 1972, 1973, 700, 1974, 1975, 1976, 1991, 1995, 700, 1999, 2000, 2002, 1965, 2003, 2001, 1992, 1966, 2006, 2007, 2008, 1977, 1978, 1979, 2016, 1980, 1981, 1982, 1983, 1993, 2004, 2017, 1996, 2018, 1984, 1985, 1997, 2019, 2005, 1994, 1986, 1987, 1988, 1989, 700, 2020, 1990, 1992, 6659, 700, 2021, 2022, 1998, 2023, 1979, 700, 1980, 1981, 1982, 1983, 1993, 2004, 2017, 1996, 2018, 1984, 1985, 1997, 2019, 2005, 1994, 1986, 1987, 1988, 1989, 2009, 2020, 1990, 2010, 2011, 2012, 2021, 2022, 1998, 2023, 2024, 2013, 2025, 2027, 2028, 2029, 2033, 2014, 2015, 2030, 2034, 2035, 2026, 2037, 2038, 2031, 700, 2042, 2043, 700, 700, 2009, 2046, 2036, 2010, 2011, 2012, 2047, 2032, 700, 2052, 2024, 2013, 2025, 2027, 2028, 2029, 2033, 2014, 2015, 2030, 2034, 2035, 2026, 2037, 2038, 2031, 2039, 2042, 2043, 2040, 2044, 2048, 2046, 2036, 2053, 2056, 2050, 2047, 2032, 2049, 2052, 2054, 2045, 2041, 2051, 2055, 2057, 2058, 2059, 2060, 2062, 2063, 2064, 2065, 2061, 2066, 2068, 2039, 2067, 2071, 2040, 2044, 2048, 2072, 2073, 2053, 2056, 2050, 2074, 2069, 2049, 2070, 2054, 2045, 2041, 2051, 2055, 2057, 2058, 2059, 2060, 2062, 2063, 2064, 2065, 2061, 2066, 2068, 2075, 2067, 2071, 2076, 2077, 2078, 2072, 2073, 2079, 2080, 2081, 2074, 2069, 2082, 2070, 2083, 2084, 2085, 700, 2094, 4912, 700, 4913, 2095, 2096, 4914, 2097, 4915, 700, 2104, 700, 2075, 2098, 2105, 2076, 2077, 2078, 2108, 2109, 2079, 2080, 2081, 2086, 700, 2082, 2099, 2083, 2084, 2085, 2087, 2094, 2088, 2089, 2090, 2095, 2096, 2091, 2097, 2092, 2100, 2104, 2093, 2106, 2098, 2105, 2107, 2110, 2111, 2108, 2109, 2113, 2101, 2114, 2086, 2102, 2103, 2099, 2125, 2126, 700, 2087, 2127, 2088, 2089, 2090, 700, 2128, 2091, 2129, 2092, 2100, 700, 2093, 2106, 700, 700, 2107, 2110, 2111, 2130, 2131, 2113, 2101, 2114, 2132, 2102, 2103, 2115, 2125, 2126, 2116, 2133, 2127, 2117, 2134, 2135, 2118, 2128, 2136, 2129, 2137, 2138, 2119, 2120, 2121, 2122, 2123, 2124, 2139, 2141, 2130, 2131, 2142, 2143, 2140, 2132, 2144, 2145, 2115, 2146, 2147, 2116, 2133, 2148, 2117, 2134, 2135, 2118, 2149, 2136, 2160, 2137, 2138, 2119, 2120, 2121, 2122, 2123, 2124, 2139, 2141, 2152, 2153, 2142, 2143, 2140, 2150, 2144, 2145, 2154, 2146, 2147, 2151, 2161, 2148, 2162, 2163, 2166, 2168, 2149, 2164, 2160, 2169, 2170, 2171, 2172, 2173, 2155, 2174, 2156, 2175, 2176, 2152, 2153, 2177, 2167, 2157, 2150, 2182, 2165, 2158, 700, 2183, 2151, 2161, 2184, 2162, 2163, 2166, 2168, 2159, 2164, 2185, 2169, 2170, 2171, 2172, 2173, 2155, 2174, 2156, 2175, 2176, 2186, 2187, 2177, 2167, 2157, 2188, 2182, 2165, 2158, 2178, 2183, 2179, 2189, 2184, 2190, 2192, 2193, 2194, 2159, 2195, 2185, 2196, 2180, 2197, 2198, 2181, 2210, 700, 2199, 700, 2200, 2186, 2187, 2208, 700, 2211, 2188, 2212, 2213, 2214, 2178, 2209, 2179, 2189, 2215, 2190, 2192, 2193, 2194, 2201, 2195, 2216, 2196, 2180, 2197, 2198, 2181, 2210, 2202, 2199, 2203, 2200, 2217, 2204, 2208, 2205, 2211, 2218, 2212, 2213, 2214, 2219, 2209, 2220, 2221, 2215, 2222, 2223, 2224, 2225, 2201, 2226, 2216, 2227, 2228, 2229, 2206, 2230, 2207, 2231, 2232, 2233, 2234, 2217, 2235, 2237, 2238, 2236, 2218, 2241, 2239, 2254, 2219, 2240, 2220, 2221, 2255, 2222, 2223, 2224, 2225, 700, 2226, 2256, 2227, 2228, 2229, 2206, 2230, 2207, 2231, 2232, 2233, 2234, 700, 2235, 2237, 2238, 2236, 700, 2241, 2239, 2254, 2252, 2240, 2242, 2253, 2255, 2243, 2257, 2259, 2260, 2244, 2261, 2256, 2262, 2245, 2246, 2247, 2263, 2264, 2248, 2265, 2249, 2258, 2250, 2266, 2267, 2268, 2271, 2251, 2272, 2273, 2274, 2252, 700, 2242, 2253, 2277, 2243, 2257, 2259, 2260, 2244, 2261, 2269, 2262, 2245, 2246, 2247, 2263, 2264, 2248, 2265, 2249, 2258, 2250, 2266, 2267, 2268, 2271, 2251, 2272, 2273, 2274, 2270, 2275, 2280, 2278, 2277, 2281, 2276, 2279, 2282, 2283, 2285, 2269, 2286, 2287, 2288, 2289, 2290, 2293, 2291, 2294, 2284, 2292, 2295, 2298, 2299, 2304, 2305, 2296, 2306, 2307, 2308, 2270, 2275, 2280, 2278, 2297, 2281, 2276, 2279, 2282, 2283, 2285, 2300, 2286, 2287, 2288, 2289, 2290, 2293, 2291, 2294, 2284, 2292, 2295, 2298, 2299, 2304, 2305, 2296, 2306, 2307, 2308, 2309, 2321, 2322, 2301, 2297, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2302, 2330, 2331, 2332, 2333, 2334, 2335, 2339, 2337, 2340, 2336, 2338, 2303, 700, 700, 700, 2341, 700, 2342, 2309, 2321, 2322, 2301, 2343, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2302, 2330, 2331, 2332, 2333, 2334, 2335, 2339, 2337, 2340, 2336, 2338, 2303, 2310, 2311, 2312, 2341, 2313, 2342, 2314, 2344, 2345, 2346, 2343, 2315, 2347, 2316, 2317, 2318, 2352, 2353, 2319, 2361, 2362, 2355, 2354, 2365, 2366, 2320, 700, 700, 700, 700, 700, 2310, 2311, 2312, 700, 2313, 2356, 2314, 2344, 2345, 2346, 2367, 2315, 2347, 2316, 2317, 2318, 2352, 2353, 2319, 2361, 2362, 2355, 2354, 2365, 2366, 2320, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 2356, 2363, 2368, 2369, 2370, 2367, 2364, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2391, 2394, 700, 2392, 2393, 2395, 2397, 2398, 700, 2401, 2363, 2368, 2369, 2370, 2408, 2364, 2371, 2372, 2373, 2374, 2375, 2387, 2399, 2411, 2388, 700, 2396, 2405, 2400, 2384, 2385, 2391, 2394, 2389, 2392, 2393, 2395, 2397, 2398, 2390, 2401, 2409, 2406, 2407, 2402, 2408, 2412, 2413, 2410, 2423, 2424, 700, 2387, 2399, 2411, 2388, 2403, 2396, 2405, 2400, 2425, 2404, 2434, 2414, 2389, 2415, 2416, 2435, 2417, 2436, 2390, 2418, 2409, 2406, 2407, 2402, 2420, 2412, 2413, 2410, 2423, 2424, 2419, 2437, 2441, 2442, 2451, 2403, 2421, 2422, 700, 2425, 2404, 2434, 2414, 700, 2415, 2416, 2435, 2417, 2436, 2438, 2418, 2439, 2452, 2453, 2440, 2420, 700, 700, 700, 700, 700, 2419, 2437, 2441, 2442, 2451, 2455, 2421, 2422, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2458, 2461, 2462, 2438, 2459, 2439, 2452, 2453, 2440, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2456, 2466, 2460, 2455, 2463, 2467, 2472, 2469, 2457, 2473, 2475, 2474, 2468, 2470, 2458, 2461, 2462, 2476, 2459, 2481, 2464, 2465, 2477, 2482, 2471, 2483, 2478, 2479, 2484, 2480, 700, 2456, 2466, 2460, 2492, 2463, 2467, 2472, 2469, 2457, 2473, 2475, 2474, 2468, 2470, 2493, 2498, 2511, 2476, 2499, 2481, 2464, 2465, 2477, 2482, 2471, 2483, 2478, 2479, 2484, 2480, 2485, 2502, 2486, 2487, 2492, 2500, 2503, 2501, 2494, 2512, 2513, 2488, 2489, 2490, 2495, 2493, 2498, 2511, 2491, 2499, 2496, 2519, 2520, 700, 2497, 700, 2521, 700, 2522, 2523, 2524, 2485, 2502, 2486, 2487, 700, 2500, 2503, 2501, 2494, 2512, 2513, 2488, 2489, 2490, 2495, 2504, 2532, 2505, 2491, 2506, 2496, 2519, 2520, 2507, 2497, 2514, 2521, 2515, 2522, 2523, 2524, 2508, 2525, 2533, 2509, 2510, 2527, 2534, 2526, 2535, 2536, 2528, 2516, 2517, 2518, 2537, 2504, 2532, 2505, 2538, 2506, 2539, 2529, 2530, 2507, 2531, 2514, 2540, 2515, 700, 700, 2560, 2508, 2525, 2533, 2509, 2510, 2527, 2534, 2526, 2535, 2536, 2528, 2516, 2517, 2518, 2537, 2551, 700, 2561, 2538, 700, 2539, 2529, 2530, 700, 2531, 2552, 2540, 2541, 2542, 2543, 2560, 2544, 2564, 2545, 2566, 2557, 2567, 2553, 2546, 2568, 2562, 2547, 2548, 2554, 2558, 2549, 2551, 2565, 2561, 700, 2559, 700, 2550, 2555, 2563, 2574, 2552, 2575, 2541, 2542, 2543, 2556, 2544, 2564, 2545, 2566, 2557, 2567, 2553, 2546, 2568, 2562, 2547, 2548, 2554, 2558, 2549, 2578, 2565, 2569, 2570, 2559, 2572, 2550, 2555, 2563, 2574, 2579, 2575, 2573, 2576, 2571, 2556, 2580, 2589, 2577, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2590, 2592, 2593, 2594, 2578, 2595, 2569, 2570, 2591, 2572, 2598, 2596, 2599, 2600, 2579, 2597, 2573, 2576, 2571, 2601, 2580, 2589, 2577, 2607, 2608, 2609, 700, 700, 2617, 2602, 2603, 2590, 2592, 2593, 2594, 2626, 2595, 2610, 2618, 2591, 2604, 2598, 2596, 2599, 2600, 2611, 2597, 2605, 2606, 700, 2601, 2612, 700, 2627, 2607, 2608, 2609, 2613, 2614, 2617, 2602, 2603, 2628, 2619, 700, 2615, 2626, 2616, 2610, 2618, 2620, 2604, 2624, 700, 2621, 2648, 2611, 2625, 2605, 2606, 2622, 2629, 2612, 2623, 2627, 2630, 2643, 2631, 2613, 2614, 2644, 2649, 2632, 2628, 2619, 2633, 2615, 700, 2616, 2634, 700, 2620, 700, 2624, 2641, 2621, 2648, 2650, 2625, 2652, 2642, 2622, 2629, 2635, 2623, 2636, 2630, 2643, 2631, 2637, 2651, 2644, 2649, 2632, 2653, 2657, 2633, 2658, 2638, 2645, 2634, 2639, 2640, 2646, 2659, 2641, 2654, 2660, 2650, 2647, 2652, 2642, 2655, 2661, 2635, 2656, 2636, 700, 700, 700, 2637, 2651, 700, 700, 2677, 2653, 2657, 2678, 2658, 2638, 2645, 2679, 2639, 2640, 2646, 2659, 700, 2654, 2660, 2680, 2647, 700, 700, 2655, 2661, 700, 2656, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2677, 2681, 2683, 2678, 2685, 2686, 2682, 2679, 2687, 2670, 2693, 2671, 2672, 2695, 2696, 2680, 2694, 2673, 2684, 2697, 2689, 2674, 2698, 2675, 2699, 2700, 2676, 2690, 2701, 2702, 2691, 2692, 2681, 2683, 2703, 2685, 2686, 2682, 2704, 2687, 2670, 2693, 2671, 2672, 2695, 2696, 2705, 2694, 2673, 2684, 2697, 2689, 2674, 2698, 2675, 2699, 2700, 2676, 2690, 2701, 2702, 2691, 2692, 2706, 2707, 2703, 2708, 2709, 2710, 2704, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2705, 2718, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2706, 2707, 2735, 2708, 2709, 2710, 2736, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2737, 2718, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 700, 700, 2735, 700, 700, 700, 2736, 700, 700, 700, 700, 700, 700, 700, 2737, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 2742, 2745, 6873, 2750, 6966, 2752, 2751, 700, 700, 2746, 2747, 2740, 2739, 2743, 2741, 2744, 2748, 2749, 2754, 2753, 2778, 2768, 2757, 2771, 700, 700, 2755, 2779, 2756, 700, 2758, 2742, 2745, 700, 2750, 700, 2752, 2751, 2759, 700, 2746, 2747, 2740, 2739, 2743, 2741, 2744, 2748, 2749, 2754, 2753, 2778, 2768, 2757, 2771, 700, 2760, 2755, 2779, 2756, 2772, 2758, 700, 2761, 700, 2762, 2763, 2764, 700, 2759, 2765, 700, 2766, 2773, 700, 2767, 2769, 2770, 700, 700, 700, 700, 700, 700, 700, 700, 700, 2760, 700, 2780, 700, 2772, 2781, 2783, 2761, 2798, 2762, 2763, 2764, 2786, 2774, 2765, 700, 2766, 2773, 2785, 2767, 2769, 2770, 2797, 2784, 2782, 2775, 2799, 700, 2776, 2777, 700, 2801, 700, 2780, 2803, 2804, 2781, 2783, 2800, 2798, 700, 700, 700, 2786, 2774, 700, 3054, 700, 700, 2785, 2802, 700, 2805, 2797, 2784, 2782, 2775, 2799, 700, 2776, 2777, 700, 2801, 2806, 700, 2803, 2804, 700, 700, 2800, 700, 700, 2814, 700, 2809, 700, 700, 3054, 2807, 2808, 2810, 2802, 2787, 2805, 2821, 2788, 700, 2816, 2789, 2811, 2817, 2790, 2813, 700, 2806, 2812, 700, 2791, 2792, 2793, 2794, 2795, 2796, 2814, 2815, 2809, 2818, 700, 2820, 2807, 2808, 2810, 700, 2787, 700, 2821, 2788, 700, 2816, 2789, 2811, 2817, 2790, 2813, 700, 700, 2812, 2826, 2791, 2792, 2793, 2794, 2795, 2796, 2819, 2815, 700, 2818, 2822, 2820, 700, 700, 700, 700, 2823, 2827, 2834, 2828, 700, 700, 2824, 2825, 700, 700, 2829, 2832, 700, 700, 2830, 700, 2836, 700, 2842, 700, 700, 2819, 2833, 700, 2831, 2822, 700, 2841, 2838, 2854, 2835, 2823, 2827, 2834, 2828, 2837, 2840, 2824, 2825, 2843, 2847, 2829, 2832, 700, 700, 2830, 2839, 2836, 2845, 2842, 2844, 2848, 700, 2833, 2858, 2831, 2849, 700, 2841, 2838, 2854, 2835, 2846, 700, 2855, 700, 2837, 2840, 700, 700, 2843, 2847, 700, 2850, 700, 2851, 700, 2839, 700, 2845, 2862, 2844, 2848, 700, 700, 2858, 2852, 2849, 2861, 2853, 2856, 700, 2857, 2846, 2859, 2855, 2865, 2864, 2866, 700, 2860, 700, 700, 700, 2850, 2868, 2851, 700, 700, 700, 700, 2862, 700, 700, 2869, 700, 2867, 2852, 700, 2861, 2853, 2856, 2870, 2857, 2886, 2859, 2887, 2865, 2864, 2866, 2871, 2860, 2872, 2885, 700, 2880, 2868, 2874, 2888, 2875, 2882, 2889, 2876, 2881, 2877, 2869, 700, 2867, 2883, 700, 700, 2873, 2884, 2870, 700, 2886, 700, 2887, 700, 700, 700, 2871, 700, 2872, 2885, 2878, 2880, 2879, 700, 2888, 2891, 2882, 2889, 2890, 2881, 700, 700, 700, 700, 2883, 700, 700, 2873, 2884, 700, 700, 700, 700, 2896, 2893, 700, 700, 2892, 700, 700, 700, 2878, 2902, 2879, 2895, 2894, 2891, 700, 2900, 2890, 700, 2897, 2901, 2904, 700, 2906, 2903, 2909, 2898, 2899, 700, 2905, 700, 2907, 2896, 2893, 2908, 2910, 2892, 2928, 2927, 700, 700, 2902, 2911, 2895, 2894, 2912, 700, 2900, 700, 2913, 2897, 2901, 2904, 700, 2906, 2903, 2909, 2898, 2899, 700, 2905, 700, 2907, 3055, 2924, 2908, 2910, 2925, 2928, 2927, 700, 700, 700, 2911, 700, 2926, 2912, 700, 2939, 2944, 2913, 700, 700, 2931, 700, 700, 700, 700, 2933, 700, 2936, 700, 2934, 2929, 3055, 2924, 2935, 2932, 2925, 700, 2914, 700, 2937, 2915, 700, 700, 2926, 2916, 2930, 2939, 2944, 2917, 2918, 2919, 2931, 700, 2920, 2945, 2921, 2933, 2922, 2936, 2940, 2934, 2929, 2923, 2941, 2935, 2932, 700, 700, 2914, 700, 2937, 2915, 2938, 700, 2943, 2916, 2930, 700, 700, 2917, 2918, 2919, 2954, 2942, 2920, 2945, 2921, 700, 2922, 2957, 2940, 2949, 2947, 2923, 2941, 700, 700, 2948, 2946, 2952, 700, 700, 700, 2938, 700, 2943, 700, 700, 2950, 700, 700, 700, 2951, 2954, 2942, 2955, 700, 2953, 700, 700, 2957, 2959, 2949, 2947, 700, 700, 2956, 700, 2948, 2946, 2952, 700, 700, 700, 2958, 700, 700, 2960, 2961, 2950, 2966, 2962, 2971, 2951, 2963, 2976, 2955, 2964, 2953, 700, 2977, 2972, 2959, 2965, 2968, 2967, 700, 2956, 2970, 2979, 2978, 6966, 2969, 2993, 700, 2958, 700, 2981, 2960, 2961, 2980, 2966, 2962, 2971, 2973, 2963, 2976, 700, 2964, 3056, 2997, 2977, 700, 2974, 2965, 2968, 2967, 2994, 2995, 2970, 2979, 2978, 700, 2969, 2993, 2975, 700, 700, 2981, 2996, 700, 2980, 2998, 700, 700, 2973, 700, 700, 700, 700, 3056, 2997, 700, 700, 2974, 700, 700, 700, 2994, 2995, 2999, 700, 6890, 6891, 6892, 3002, 2975, 700, 700, 700, 2996, 3012, 3007, 2998, 3004, 3001, 3008, 3000, 700, 700, 700, 3003, 3005, 3006, 700, 3011, 2982, 2983, 2984, 3016, 2985, 2999, 2986, 3013, 3014, 3009, 3002, 2987, 3010, 2988, 2989, 2990, 3012, 3007, 2991, 3004, 3001, 3008, 3000, 700, 700, 2992, 3003, 3005, 3006, 3017, 3011, 2982, 2983, 2984, 3016, 2985, 3015, 2986, 3013, 3014, 3009, 700, 2987, 3010, 2988, 2989, 2990, 3019, 700, 2991, 700, 700, 700, 700, 700, 3018, 2992, 3025, 700, 3026, 3017, 700, 3027, 700, 3028, 700, 700, 3015, 700, 3023, 700, 700, 3020, 700, 700, 700, 3057, 700, 3019, 3029, 1904, 1904, 3035, 3021, 3024, 700, 3018, 3030, 3022, 3031, 700, 3042, 3038, 3034, 3032, 700, 3033, 3041, 3037, 3063, 3023, 700, 3036, 3020, 700, 3065, 3066, 3057, 3039, 3040, 3029, 700, 3043, 3035, 3021, 3024, 1904, 1904, 3030, 3022, 3031, 3053, 3042, 3038, 3034, 3032, 1905, 3033, 3041, 3037, 3063, 700, 3067, 3036, 700, 3052, 3065, 3066, 3068, 3039, 3040, 3069, 700, 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3053, 3058, 3070, 3071, 3059, 3072, 3074, 3075, 3060, 3076, 1905, 3067, 3077, 3061, 3052, 3078, 3079, 3068, 3062, 700, 3069, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 3081, 3058, 3070, 3071, 3059, 3072, 3074, 3075, 3060, 3076, 3082, 363, 3077, 3061, 3083, 3078, 3079, 3084, 3062, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3085, 3086, 3081, 3087, 3088, 700, 3089, 1934, 3090, 3091, 3092, 3095, 3082, 363, 3096, 3097, 3083, 3098, 3093, 3084, 3099, 3094, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3109, 3107, 3085, 3086, 3110, 3087, 3088, 1934, 3089, 3111, 3090, 3091, 3092, 3095, 3108, 3112, 3096, 3097, 3113, 3098, 3093, 3114, 3099, 3094, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3109, 3107, 3115, 3116, 3110, 3117, 3118, 3119, 3125, 3111, 3126, 3128, 3129, 3127, 3108, 3112, 700, 3120, 3113, 3121, 3130, 3114, 3122, 3131, 3123, 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3139, 3115, 3116, 3140, 3117, 3118, 3119, 3125, 3141, 3126, 3128, 3129, 3127, 3142, 3144, 3124, 3145, 3146, 3147, 3130, 3148, 3149, 3131, 3150, 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3139, 3151, 3152, 3140, 3153, 3154, 3155, 3156, 3141, 3157, 3158, 3162, 3163, 3142, 3144, 3124, 3145, 3146, 3147, 3159, 3148, 3149, 3164, 3150, 3165, 3160, 3166, 3167, 3168, 3169, 3170, 3161, 3151, 3152, 3176, 3153, 3154, 3155, 3156, 3171, 3157, 3158, 3162, 3163, 3177, 3178, 3179, 3172, 3180, 3181, 3159, 3182, 3184, 3164, 3188, 3165, 3160, 3166, 3167, 3168, 3169, 3170, 3161, 3189, 3185, 3176, 3190, 3191, 3183, 3192, 3171, 3186, 3193, 3194, 3195, 3177, 3178, 3179, 3172, 3180, 3181, 3187, 3182, 3184, 3196, 3188, 3201, 3202, 3203, 3204, 3205, 3206, 3209, 3210, 3189, 3185, 3207, 3190, 3191, 3183, 3192, 3211, 3186, 3193, 3194, 3195, 3208, 3212, 3218, 3219, 3213, 3215, 3187, 3222, 3220, 3196, 3223, 3201, 3202, 3203, 3204, 3205, 3206, 3209, 3210, 3214, 3216, 3207, 3217, 3221, 3224, 3225, 3211, 3226, 3227, 3228, 3229, 3208, 3212, 3218, 3219, 3213, 3215, 700, 3222, 3220, 3241, 3223, 700, 3246, 700, 3538, 3538, 3253, 3254, 700, 3214, 3216, 3242, 3217, 3221, 3224, 3225, 700, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3244, 3233, 3243, 3234, 3247, 3255, 3241, 3245, 3235, 3246, 3236, 3237, 3238, 3253, 3254, 3239, 3256, 3257, 3242, 3248, 3258, 3259, 3240, 3249, 700, 3250, 3539, 700, 3230, 3231, 3232, 3244, 3233, 3243, 3234, 3247, 3255, 3268, 3245, 3235, 3251, 3236, 3237, 3238, 3252, 3273, 3239, 3256, 3257, 3269, 3248, 3258, 3259, 3240, 3249, 3260, 3250, 3263, 3266, 3271, 3261, 3267, 3264, 3274, 3270, 3275, 3276, 3277, 3268, 3280, 3262, 3251, 3265, 3281, 3272, 3252, 3273, 3282, 3278, 3283, 3269, 3279, 3284, 3288, 3289, 3285, 3260, 3290, 3263, 3266, 3271, 3261, 3267, 3264, 3274, 3270, 3275, 3276, 3277, 3286, 3280, 3262, 3291, 3265, 3281, 3272, 3287, 3292, 3282, 3278, 3283, 3293, 3279, 3284, 3288, 3289, 3285, 3294, 3290, 3296, 3297, 3298, 3299, 3302, 3300, 3303, 3305, 3304, 3306, 3307, 3286, 3301, 3308, 3291, 3309, 3310, 3311, 3287, 3292, 3312, 3313, 3315, 3293, 3316, 3314, 3317, 3321, 3322, 3294, 3323, 3296, 3297, 3298, 3299, 3302, 3300, 3303, 3305, 3304, 3306, 3307, 3318, 3301, 3308, 3324, 3309, 3310, 3311, 3325, 3329, 3312, 3313, 3315, 3331, 3316, 3314, 3317, 3321, 3322, 3332, 3323, 3326, 3319, 3327, 3333, 3334, 3335, 3336, 3337, 3320, 3330, 3338, 3339, 3340, 3341, 3324, 3342, 3328, 3343, 3325, 3329, 3344, 3346, 3345, 3331, 3347, 3348, 3349, 3350, 3351, 3332, 3352, 3326, 3319, 3327, 3333, 3334, 3335, 3336, 3337, 3320, 3330, 3338, 3339, 3340, 3341, 3353, 3342, 3328, 3343, 3354, 3359, 3344, 3346, 3345, 3360, 3347, 3348, 3349, 3350, 3351, 3361, 3352, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3370, 3376, 3371, 3377, 700, 3378, 3383, 3353, 3384, 700, 700, 3354, 3359, 3389, 3373, 3390, 3360, 3397, 3398, 3407, 700, 3372, 3361, 3374, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3370, 3376, 3371, 3377, 3375, 3378, 3383, 3379, 3384, 3381, 3385, 3387, 3395, 3389, 3373, 3390, 3391, 3397, 3398, 3407, 3396, 3372, 3380, 3374, 3382, 3386, 3388, 3393, 3408, 3392, 700, 3394, 3413, 3409, 700, 3375, 3414, 3411, 3379, 3418, 3381, 3385, 3387, 3395, 3400, 3427, 3401, 3391, 3410, 3428, 3402, 3396, 3412, 3380, 3403, 3382, 3386, 3388, 3393, 3408, 3392, 3404, 3394, 3413, 3409, 3405, 3406, 3414, 3411, 3415, 3418, 3416, 3419, 700, 3420, 3400, 3427, 3401, 3429, 3410, 3428, 3402, 3431, 3412, 3432, 3403, 3433, 3434, 3435, 3421, 3417, 3422, 3404, 3436, 3440, 3437, 3405, 3406, 3444, 3430, 3415, 3445, 3416, 3419, 3423, 3420, 3424, 3446, 3425, 3429, 3426, 3447, 3438, 3431, 3439, 3432, 3448, 3433, 3434, 3435, 3421, 3417, 3422, 3441, 3436, 3440, 3437, 3442, 3449, 3444, 3430, 3450, 3445, 3451, 3455, 3423, 3443, 3424, 3446, 3425, 3466, 3426, 3447, 3438, 3452, 3439, 3471, 3448, 3472, 3473, 3474, 3475, 3476, 3456, 3441, 3457, 700, 3453, 3442, 3449, 700, 3477, 3450, 3454, 3451, 3455, 3478, 3443, 3458, 3483, 3460, 3466, 3461, 3467, 3459, 3452, 3468, 3471, 3469, 3472, 3473, 3474, 3475, 3476, 3456, 3462, 3457, 3463, 3453, 3464, 3484, 3465, 3477, 3491, 3454, 3470, 3489, 3478, 3494, 3458, 3483, 3460, 3485, 3461, 3467, 3459, 3486, 3468, 3487, 3469, 3495, 3496, 3488, 3500, 3492, 3490, 3462, 3497, 3463, 3498, 3464, 3484, 3465, 3501, 3491, 3502, 3470, 3503, 3504, 3494, 700, 3517, 3518, 3485, 3521, 3522, 3523, 3486, 3499, 3487, 700, 3495, 3496, 3488, 3500, 3492, 3490, 3527, 3497, 3519, 3498, 3515, 3520, 700, 3501, 3528, 3502, 700, 3503, 3504, 3533, 3516, 3517, 3518, 700, 3521, 3522, 3523, 3536, 3499, 3505, 3506, 3507, 3524, 3508, 3525, 3509, 700, 3527, 3534, 3519, 3510, 3515, 3520, 3511, 3512, 3528, 3537, 3513, 3535, 3541, 3533, 3516, 3529, 3526, 3514, 3531, 3542, 3543, 3536, 3544, 3505, 3506, 3507, 3524, 3508, 3525, 3509, 3530, 3549, 3534, 3532, 3510, 3550, 3551, 3511, 3512, 3552, 3537, 3513, 3535, 3541, 3553, 3554, 3529, 3526, 3514, 3531, 3542, 3543, 3555, 3544, 3556, 3559, 3557, 3561, 3564, 3567, 3562, 3530, 3549, 3563, 3532, 3568, 3550, 3551, 3569, 3570, 3552, 3558, 3565, 3571, 3566, 3553, 3554, 3572, 3573, 3574, 3575, 3576, 3577, 3555, 3578, 3556, 3559, 3557, 3561, 3564, 3567, 3562, 3579, 3580, 3563, 3581, 3568, 700, 700, 3569, 3570, 700, 3558, 3565, 3571, 3566, 700, 3590, 3572, 3573, 3574, 3575, 3576, 3577, 3593, 3578, 3591, 3592, 3582, 3600, 3594, 3601, 3604, 3579, 3580, 3583, 3581, 3584, 3585, 3586, 3605, 3606, 3587, 3595, 3588, 700, 3607, 3589, 3590, 700, 3602, 3609, 3610, 3603, 3621, 3593, 3622, 3591, 3592, 3582, 3600, 3594, 3601, 3604, 3596, 3623, 3583, 3624, 3584, 3585, 3586, 3605, 3606, 3587, 3595, 3588, 3597, 3607, 3589, 3598, 3599, 3602, 3609, 3610, 3603, 3621, 3625, 3622, 3626, 3627, 700, 3628, 3629, 3630, 3631, 3596, 3623, 700, 3624, 6979, 6980, 6981, 3632, 3633, 3634, 3637, 3638, 3597, 3635, 3639, 3598, 3599, 3611, 3640, 3636, 3612, 3641, 3625, 3613, 3626, 3627, 3614, 3628, 3629, 3630, 3631, 3642, 3615, 3616, 3617, 3618, 3619, 3620, 3632, 3633, 3634, 3637, 3638, 3643, 3635, 3639, 3644, 3645, 3611, 3640, 3636, 3612, 3641, 3646, 3613, 3648, 3649, 3614, 3656, 3647, 3657, 3650, 3642, 3615, 3616, 3617, 3618, 3619, 3620, 3658, 3659, 700, 3664, 3665, 3643, 3660, 3666, 3644, 3645, 3651, 3662, 3652, 3667, 3668, 3646, 3669, 3648, 3649, 3653, 3656, 3647, 3657, 3654, 3670, 3661, 3671, 3672, 3673, 3663, 3678, 3658, 3659, 3655, 3664, 3665, 3679, 3660, 3666, 3680, 3681, 3651, 3662, 3652, 3667, 3668, 3682, 3669, 3683, 3674, 3653, 3675, 3684, 3685, 3654, 3670, 3661, 3671, 3672, 3673, 3663, 3678, 3676, 3686, 3655, 3677, 3688, 3679, 3689, 3690, 3680, 3681, 3691, 3692, 3693, 3694, 700, 3682, 3706, 3683, 3674, 3704, 3675, 3684, 3685, 3698, 3695, 3699, 3696, 3705, 3700, 3707, 3701, 3676, 3686, 3708, 3677, 3688, 3709, 3689, 3690, 3710, 3711, 3691, 3692, 3693, 3694, 3697, 3712, 3706, 3713, 3714, 3704, 3702, 3715, 3703, 3716, 3695, 3717, 3696, 3705, 3718, 3707, 3719, 3720, 3721, 3708, 3722, 3723, 3709, 3724, 3725, 3710, 3711, 3726, 3727, 3728, 3729, 3697, 3712, 3730, 3713, 3714, 3733, 3702, 3715, 3703, 3716, 3731, 3717, 3734, 3732, 3718, 3737, 3719, 3720, 3721, 3735, 3722, 3723, 3736, 3724, 3725, 3750, 700, 3726, 3727, 3728, 3729, 3751, 3752, 3730, 700, 700, 3733, 3748, 3755, 700, 3749, 3731, 3756, 3734, 3732, 3753, 3737, 3757, 700, 3758, 3735, 3759, 3760, 3736, 3738, 3761, 3750, 3739, 3762, 3763, 3754, 3740, 3751, 3752, 3764, 3741, 3742, 3743, 3748, 3755, 3744, 3749, 3745, 3756, 3746, 3767, 3753, 3768, 3757, 3747, 3758, 3769, 3759, 3760, 3765, 3738, 3761, 3770, 3739, 3762, 3763, 3754, 3740, 3773, 3771, 3764, 3741, 3742, 3743, 3772, 3776, 3744, 3777, 3745, 3766, 3746, 3767, 3774, 3768, 3778, 3747, 3775, 3769, 3781, 3782, 3765, 3779, 3783, 3770, 3784, 3785, 3786, 3789, 3787, 3773, 3771, 3788, 3780, 3790, 3791, 3772, 3776, 3794, 3777, 3795, 3766, 3800, 3801, 3774, 3796, 3778, 3792, 3775, 3802, 3781, 3782, 3803, 3779, 3783, 3793, 3784, 3785, 3786, 3789, 3787, 3804, 3805, 3788, 3780, 3790, 3791, 3817, 3797, 3794, 3818, 3795, 3819, 3800, 3801, 3820, 3821, 3798, 3792, 3822, 3802, 3823, 3824, 3803, 3825, 3826, 3793, 3827, 3828, 3799, 700, 700, 3804, 3805, 7074, 7075, 7076, 700, 3817, 3797, 3835, 3818, 3836, 3819, 700, 700, 3820, 3821, 3798, 3837, 3822, 3833, 3823, 3824, 3834, 3825, 3826, 3838, 3827, 3828, 3799, 3806, 3807, 3808, 3839, 3809, 3831, 3810, 3829, 3830, 3832, 3835, 3811, 3836, 3812, 3813, 3814, 3840, 3841, 3815, 3837, 3842, 3833, 3843, 3844, 3834, 3816, 3846, 3838, 3845, 3852, 3853, 3806, 3807, 3808, 3839, 3809, 3831, 3810, 3829, 3830, 3832, 3847, 3811, 3856, 3812, 3813, 3814, 3840, 3841, 3815, 3854, 3842, 3857, 3843, 3844, 3855, 3816, 3846, 3858, 3845, 3852, 3853, 3859, 3860, 3861, 3862, 3863, 3864, 3865, 3866, 700, 700, 3847, 700, 3856, 700, 700, 5221, 3875, 3876, 3877, 3854, 3878, 3857, 3879, 3880, 3855, 3881, 3882, 3858, 3883, 3884, 3885, 3859, 3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3868, 3869, 3870, 3871, 3872, 3873, 3874, 3875, 3876, 3877, 3886, 3878, 3887, 3879, 3880, 3888, 3881, 3882, 3889, 3883, 3884, 3885, 3890, 3891, 3892, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, 3901, 700, 700, 700, 700, 700, 700, 700, 3886, 700, 3887, 700, 700, 3888, 700, 700, 3889, 700, 700, 700, 3890, 3891, 3892, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, 3901, 3914, 3903, 3905, 3908, 3909, 3902, 3913, 3910, 3915, 3917, 3918, 3916, 5220, 700, 3912, 4245, 3904, 3906, 3931, 3907, 700, 700, 3911, 700, 3538, 3538, 3919, 700, 700, 4246, 700, 3914, 3903, 3905, 3908, 3909, 3902, 3913, 3910, 3915, 3917, 3918, 3916, 700, 700, 3912, 4245, 3904, 3906, 3931, 3907, 3932, 700, 3911, 3947, 3943, 3936, 3919, 700, 700, 4246, 700, 700, 700, 700, 3937, 3933, 3934, 3946, 700, 3539, 700, 700, 3944, 3935, 700, 700, 3920, 3921, 3922, 3938, 3923, 3932, 3924, 700, 3947, 3943, 3936, 3925, 700, 3926, 3927, 3928, 700, 3948, 3929, 3937, 3933, 3934, 3946, 3945, 3958, 3930, 700, 3944, 3935, 3949, 700, 3920, 3921, 3922, 3938, 3923, 3939, 3924, 3940, 700, 700, 700, 3925, 700, 3926, 3927, 3928, 700, 3948, 3929, 700, 700, 3964, 3941, 3945, 3958, 3930, 3942, 700, 700, 3949, 3950, 700, 3953, 3963, 3959, 3951, 3939, 3954, 3940, 700, 700, 3961, 700, 3956, 700, 3952, 3957, 3955, 3976, 3960, 700, 3971, 3964, 3941, 3965, 3969, 3962, 3942, 3970, 700, 700, 3950, 700, 3953, 3963, 3959, 3951, 700, 3954, 700, 3966, 700, 3961, 3967, 3956, 3968, 3952, 3957, 3955, 3976, 3960, 3977, 3971, 700, 700, 3965, 3969, 3962, 3972, 3970, 700, 3973, 700, 3978, 700, 3974, 3979, 700, 3981, 700, 700, 3966, 3975, 3980, 3967, 700, 3968, 700, 700, 700, 700, 700, 3977, 700, 700, 3993, 700, 3984, 700, 3972, 3982, 700, 3973, 3994, 3978, 700, 3974, 3979, 3985, 3981, 700, 3995, 3986, 3975, 3980, 3988, 3990, 3987, 3996, 3991, 700, 3992, 3989, 3998, 700, 4003, 3993, 700, 3984, 4000, 3997, 3982, 4001, 3999, 3994, 4004, 4002, 700, 700, 3985, 700, 4006, 3995, 3986, 4010, 700, 3988, 3990, 3987, 3996, 3991, 4009, 3992, 3989, 3998, 700, 4003, 700, 700, 4005, 4000, 3997, 4007, 4001, 3999, 4012, 4004, 4002, 4011, 4008, 700, 700, 700, 700, 700, 4010, 4014, 4017, 4015, 700, 4013, 700, 4009, 700, 700, 700, 700, 700, 4021, 4019, 4005, 4020, 4016, 4007, 700, 700, 4012, 700, 4018, 4011, 4008, 4023, 4025, 4022, 700, 4027, 4024, 4014, 4017, 4015, 700, 4013, 700, 4026, 700, 4032, 700, 4033, 700, 4021, 4019, 700, 4020, 4016, 4028, 4034, 4029, 4030, 4031, 4018, 700, 4038, 4023, 4025, 4022, 4035, 4027, 4024, 700, 700, 700, 700, 4036, 700, 4026, 4247, 4032, 700, 4033, 700, 4037, 700, 4042, 4047, 700, 4028, 4034, 4029, 4030, 4031, 4039, 4049, 4038, 700, 4040, 4051, 4035, 700, 4050, 700, 4055, 4052, 4041, 4036, 4048, 4054, 4247, 700, 700, 700, 700, 4037, 4053, 4042, 4047, 700, 700, 700, 4056, 700, 700, 4039, 4049, 700, 4064, 4040, 4051, 700, 700, 4050, 4065, 4055, 4052, 4041, 700, 4048, 4054, 4058, 4061, 4059, 4066, 4067, 4069, 4053, 4072, 700, 700, 4062, 4077, 4056, 4073, 700, 700, 700, 4086, 4064, 4068, 4070, 4060, 4063, 4071, 4065, 700, 700, 700, 4074, 700, 4075, 4058, 4061, 4059, 4066, 4067, 4069, 700, 4072, 4096, 700, 4062, 4077, 4078, 4073, 4076, 700, 4079, 4086, 4095, 4068, 4070, 4060, 4063, 4071, 4083, 700, 700, 700, 4074, 4080, 4075, 700, 4084, 4085, 700, 700, 4081, 700, 700, 4096, 4082, 700, 700, 4078, 700, 4076, 4102, 4079, 4116, 4095, 700, 4088, 700, 4089, 4103, 4083, 4104, 4090, 700, 4097, 4080, 4091, 4106, 4084, 4085, 4101, 4099, 4081, 4092, 700, 4115, 4082, 4093, 4094, 4098, 4105, 700, 4102, 4107, 4116, 4108, 4100, 4088, 700, 4089, 4103, 4121, 4104, 4090, 4117, 4097, 700, 4091, 4106, 700, 700, 4101, 4099, 700, 4092, 700, 4115, 700, 4093, 4094, 4098, 4105, 4128, 700, 4107, 4118, 4108, 4100, 4123, 4109, 700, 4110, 4121, 700, 4122, 4117, 4119, 700, 4120, 700, 700, 700, 700, 4248, 4111, 4133, 4112, 4124, 4113, 4125, 4114, 700, 4126, 4128, 4127, 4132, 4118, 700, 700, 4123, 4109, 4134, 4110, 4135, 4136, 4122, 700, 4119, 700, 4120, 4161, 4138, 700, 4137, 4248, 4111, 4133, 4112, 4124, 4113, 4125, 4114, 700, 4126, 4129, 4127, 4132, 700, 4130, 700, 4139, 700, 4134, 700, 4135, 4136, 700, 4131, 700, 700, 700, 4161, 4138, 4154, 4137, 4162, 700, 700, 4148, 700, 4149, 4140, 700, 4143, 4164, 4129, 700, 700, 4145, 4130, 4159, 4139, 4160, 4150, 4141, 4151, 700, 4152, 4131, 4153, 4142, 4146, 4144, 4165, 4154, 4155, 4162, 4147, 4156, 4148, 4157, 4149, 4140, 4163, 4143, 4164, 700, 700, 4172, 4145, 4166, 4159, 700, 4160, 4150, 4141, 4151, 4158, 4152, 4177, 4153, 4142, 4146, 4144, 4165, 700, 4155, 700, 4147, 4156, 4167, 4157, 4168, 700, 4163, 4169, 700, 4170, 4178, 4172, 4173, 4166, 4171, 4183, 4174, 700, 4175, 700, 4158, 700, 4176, 700, 700, 700, 700, 4182, 700, 700, 700, 4179, 700, 700, 700, 700, 700, 700, 700, 4206, 700, 4178, 4188, 4173, 4189, 4171, 4183, 4174, 4185, 4175, 4186, 4205, 4180, 4176, 4211, 4184, 4190, 4191, 4182, 4192, 4207, 4203, 4179, 4208, 4209, 4215, 700, 700, 4237, 4187, 4206, 4204, 700, 4188, 700, 4189, 700, 700, 700, 4185, 700, 4186, 4205, 4180, 700, 4211, 4184, 4190, 4191, 700, 4192, 4207, 4203, 700, 4208, 4209, 4215, 4210, 4216, 4237, 4187, 700, 4204, 700, 700, 4221, 4225, 700, 700, 4212, 700, 4213, 700, 700, 700, 700, 700, 700, 4236, 700, 4193, 4194, 4195, 700, 4196, 700, 4197, 4224, 4210, 4216, 4214, 4198, 4217, 4234, 4199, 4200, 4221, 4225, 4201, 4219, 4212, 4229, 4213, 4226, 4227, 4202, 4222, 4218, 4228, 4236, 700, 4193, 4194, 4195, 4220, 4196, 4223, 4197, 4224, 700, 700, 4214, 4198, 4217, 4234, 4199, 4200, 700, 700, 4201, 4219, 700, 4229, 4235, 4226, 4227, 4202, 4222, 4218, 4228, 700, 4249, 4238, 4239, 4250, 4220, 4251, 4223, 4252, 4253, 4254, 4255, 4256, 4242, 4257, 4241, 4258, 4260, 4261, 4262, 4263, 4259, 4264, 4240, 4235, 4265, 4266, 4244, 4243, 4267, 3538, 3538, 4249, 4238, 4239, 4250, 700, 4251, 700, 4252, 4253, 4254, 4255, 4256, 4242, 4257, 4241, 4258, 4260, 4261, 4262, 4263, 4259, 4264, 4240, 4268, 4265, 4266, 4244, 4243, 4267, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 4269, 4270, 4271, 4274, 4272, 3539, 4273, 4275, 4276, 4277, 4278, 363, 4279, 4281, 4282, 4268, 4280, 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295, 4296, 4269, 4270, 4271, 4274, 4272, 1934, 4273, 4275, 4276, 4277, 4278, 363, 4279, 4281, 4282, 4297, 4280, 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295, 4296, 4298, 4299, 4300, 4301, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4297, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4298, 4299, 4300, 4301, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4333, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4334, 4335, 4336, 4338, 4340, 4343, 4341, 4344, 4345, 4339, 4346, 4348, 4349, 700, 4347, 4333, 4337, 4342, 4354, 700, 4355, 4356, 4357, 4363, 4364, 4365, 4366, 4367, 4368, 700, 4369, 4334, 4335, 4336, 4338, 4340, 4343, 4341, 4344, 4345, 4339, 4346, 4348, 4349, 4350, 4347, 4370, 4337, 4342, 4354, 4351, 4355, 4356, 4357, 4363, 4364, 4365, 4366, 4367, 4368, 4352, 4369, 4371, 4373, 4353, 4374, 4375, 4376, 4377, 4378, 4383, 4387, 4384, 4372, 4388, 4350, 4389, 4370, 4385, 4390, 4391, 4351, 4392, 4393, 4394, 4395, 4396, 4399, 4386, 4400, 700, 4352, 4401, 4371, 4373, 4353, 4374, 4375, 4376, 4377, 4378, 4383, 4387, 4384, 4372, 4388, 4397, 4389, 4402, 4385, 4390, 4391, 4403, 4392, 4393, 4394, 4395, 4396, 4399, 4386, 4400, 4398, 4404, 4401, 4405, 4406, 700, 700, 700, 4425, 700, 4419, 700, 4421, 4420, 4417, 4422, 4397, 700, 4402, 700, 700, 4428, 4403, 700, 4418, 4423, 4429, 4430, 4424, 700, 700, 4398, 4404, 4426, 4405, 4406, 4407, 4408, 4409, 4425, 4410, 4419, 4411, 4421, 4420, 4417, 4422, 4412, 4427, 4433, 4413, 4414, 4428, 4445, 4415, 4418, 4423, 4429, 4430, 4424, 4431, 4416, 4441, 4446, 4426, 4447, 4448, 4407, 4408, 4409, 4449, 4410, 4443, 4411, 4450, 4432, 4451, 4442, 4412, 4427, 4433, 4413, 4414, 4452, 4445, 4415, 4453, 4444, 4454, 4457, 4455, 4431, 4416, 4441, 4446, 4458, 4447, 4448, 4459, 4460, 4463, 4449, 4464, 4443, 4456, 4450, 4432, 4451, 4442, 4461, 4465, 4466, 4467, 4468, 4452, 4462, 4469, 4453, 4444, 4454, 4457, 4455, 4472, 4473, 4474, 4470, 4458, 4475, 4476, 4459, 4460, 4463, 4471, 4464, 4477, 4456, 4478, 4479, 4480, 4481, 4461, 4465, 4466, 4467, 4468, 4482, 4462, 4469, 4486, 4487, 4488, 4489, 4490, 4472, 4473, 4474, 4470, 4491, 4475, 4476, 4483, 4492, 4493, 4471, 4494, 4477, 4495, 4478, 4479, 4480, 4481, 4497, 4498, 4499, 4500, 4501, 4482, 4502, 4503, 4486, 4487, 4488, 4489, 4490, 4505, 4504, 4506, 4507, 4491, 4508, 4513, 4483, 4492, 4493, 4515, 4494, 4509, 4495, 4511, 4516, 4517, 4518, 4497, 4498, 4499, 4500, 4501, 4519, 4502, 4503, 700, 4510, 4531, 4512, 4532, 4505, 4504, 4506, 4507, 4529, 4508, 4513, 4533, 4534, 4535, 4515, 4537, 4509, 4541, 4511, 4516, 4517, 4518, 4520, 4521, 4522, 4523, 4544, 4519, 4536, 4530, 4524, 4510, 4531, 4512, 4532, 4525, 4526, 4538, 4547, 4529, 4527, 700, 4533, 4534, 4535, 4528, 4537, 4542, 4541, 4545, 4552, 4553, 4539, 4520, 4521, 4522, 4523, 4544, 4554, 4536, 4530, 4524, 4543, 4557, 4546, 4558, 4525, 4526, 4559, 4547, 4555, 4527, 4540, 4560, 4548, 4563, 4528, 4561, 4542, 4549, 4545, 4552, 4553, 4539, 4564, 4556, 4550, 4551, 4565, 4554, 4566, 4567, 4568, 4543, 4557, 4546, 4558, 4569, 4562, 4559, 4570, 4555, 4571, 4540, 4560, 4548, 4563, 4572, 4561, 4573, 4549, 4574, 4576, 4575, 4577, 4564, 4556, 4550, 4551, 4565, 4578, 4566, 4567, 4568, 4579, 4580, 4581, 4582, 4569, 4562, 4587, 4570, 4588, 4571, 700, 4591, 4592, 4593, 4572, 4589, 4573, 4594, 4574, 4576, 4575, 4577, 4583, 4595, 4600, 4601, 4584, 4578, 4602, 4603, 4585, 4579, 4580, 4581, 4582, 4604, 4590, 4587, 4607, 4588, 4612, 4586, 4591, 4592, 4593, 4613, 4589, 4605, 4594, 4610, 4616, 4617, 4618, 4583, 4595, 4600, 4601, 4584, 4619, 4602, 4603, 4585, 4620, 4606, 4621, 4611, 4604, 4590, 700, 4607, 4614, 4612, 4586, 4615, 4628, 4622, 4613, 4624, 4605, 4629, 4610, 4616, 4617, 4618, 4626, 4630, 4631, 4632, 4633, 4619, 4623, 4634, 4625, 4620, 4606, 4621, 4611, 4635, 4636, 4627, 4638, 4614, 4637, 4640, 4615, 4628, 4622, 4641, 4624, 4642, 4629, 4643, 4645, 4651, 4652, 4626, 4630, 4631, 4632, 4633, 4646, 4623, 4634, 4625, 4648, 4655, 4656, 4657, 4635, 4636, 4627, 4638, 4653, 4637, 4640, 4647, 4658, 4659, 4641, 4649, 4642, 4650, 4643, 4645, 4651, 4652, 4660, 4654, 4661, 4662, 700, 4646, 700, 4674, 700, 4648, 4655, 4656, 4657, 4675, 4679, 700, 4677, 4653, 700, 700, 4647, 4658, 4659, 4678, 4649, 4680, 4650, 4686, 4676, 700, 700, 4660, 4654, 4661, 4662, 4663, 4664, 4665, 4674, 4666, 4681, 4667, 4687, 4688, 4675, 4679, 4668, 4677, 4669, 4670, 4671, 700, 4689, 4672, 4678, 4690, 4680, 4691, 4686, 4676, 4673, 4682, 4692, 4683, 700, 700, 4663, 4664, 4665, 700, 4666, 4681, 4667, 4687, 4688, 4701, 4706, 4668, 4684, 4669, 4670, 4671, 4685, 4689, 4672, 4693, 4690, 4702, 4691, 4704, 4694, 4673, 4682, 4692, 4683, 4699, 4696, 4707, 4700, 4708, 4695, 4697, 4703, 4709, 4705, 4710, 4701, 4706, 4713, 4684, 4714, 4698, 4711, 4685, 4715, 4712, 4693, 4716, 4702, 4717, 4704, 4694, 4718, 4721, 4722, 4723, 4699, 4696, 4707, 4700, 4708, 4695, 4697, 4703, 4709, 4705, 4710, 4719, 4724, 4713, 4725, 4714, 4698, 4711, 4720, 4715, 4712, 4726, 4716, 4727, 4717, 4729, 4730, 4718, 4721, 4722, 4723, 4731, 4732, 4733, 4735, 4736, 4738, 4737, 4739, 4740, 4734, 4741, 4719, 4724, 4742, 4725, 4743, 4744, 4745, 4720, 4748, 4746, 4726, 4749, 4727, 4747, 4729, 4730, 4750, 4751, 4754, 4755, 4731, 4732, 4733, 4735, 4736, 4738, 4737, 4739, 4740, 4734, 4741, 4756, 4757, 4742, 4758, 4743, 4744, 4745, 4752, 4748, 4746, 4759, 4749, 4760, 4747, 4753, 4762, 4750, 4764, 4754, 4755, 4765, 4766, 4767, 4768, 4769, 4770, 4761, 4771, 4772, 4773, 4774, 4756, 4757, 4775, 4758, 4776, 4763, 4777, 4752, 4778, 4779, 4759, 4780, 4760, 4781, 4753, 4762, 4782, 4764, 4783, 4784, 4765, 4766, 4767, 4768, 4769, 4770, 4761, 4771, 4772, 4773, 4774, 4785, 4786, 4775, 4787, 4776, 4763, 4777, 4792, 4778, 4779, 4793, 4780, 4794, 4781, 4795, 4796, 4782, 4797, 4783, 4784, 4798, 4799, 4800, 4801, 4809, 700, 4803, 4810, 4804, 4811, 4816, 4785, 4786, 700, 4787, 4806, 4817, 700, 4792, 4822, 4823, 4793, 700, 4794, 4807, 4795, 4796, 4805, 4797, 4812, 4814, 4798, 4799, 4800, 4801, 4809, 4808, 4803, 4810, 4804, 4811, 4816, 4818, 4824, 4813, 4815, 4806, 4817, 4820, 4826, 4822, 4823, 4830, 4827, 4828, 4807, 4825, 4819, 4805, 4831, 4812, 4814, 4829, 4821, 700, 4840, 4841, 4808, 700, 4846, 4847, 4842, 700, 4818, 4824, 4813, 4815, 4844, 4851, 4820, 4826, 700, 4860, 4830, 4827, 4828, 4843, 4825, 4819, 4833, 4831, 4834, 4845, 4829, 4821, 4835, 4840, 4841, 700, 4836, 4846, 4847, 4842, 4848, 4861, 4849, 4837, 4862, 4844, 4851, 4838, 4839, 4852, 4860, 4853, 700, 4864, 4843, 4865, 700, 4833, 4866, 4834, 4845, 4850, 4867, 4835, 4868, 4863, 4854, 4836, 4855, 700, 4873, 4848, 4861, 4849, 4837, 4862, 4877, 4878, 4838, 4839, 4852, 4856, 4853, 4857, 4864, 4858, 4865, 4859, 4869, 4866, 4870, 4879, 4850, 4867, 4880, 4868, 4863, 4854, 4871, 4855, 4872, 4873, 4874, 4881, 4882, 4883, 4875, 4877, 4878, 4884, 700, 4885, 4856, 4888, 4857, 4876, 4858, 4899, 4859, 4869, 4904, 4870, 4879, 4905, 4886, 4880, 4890, 700, 4906, 4871, 4887, 4872, 4889, 4874, 4881, 4882, 4883, 4875, 700, 4891, 4884, 4893, 4885, 4894, 4888, 4892, 4876, 4900, 4899, 4907, 4901, 4904, 4902, 4908, 4905, 4886, 4895, 4890, 4896, 4906, 4897, 4887, 4898, 4889, 4909, 4910, 4911, 4916, 4917, 4903, 4891, 4922, 4893, 4924, 4894, 4927, 4892, 4928, 4900, 4929, 4907, 4901, 4918, 4902, 4908, 4933, 4919, 4895, 4920, 4896, 4923, 4897, 4921, 4898, 4925, 4909, 4910, 4911, 4916, 4917, 4903, 4930, 4934, 4931, 4924, 4935, 4927, 4936, 4928, 4937, 4929, 4950, 4951, 4918, 4954, 4955, 4933, 4919, 4948, 4920, 4956, 4923, 4932, 4921, 700, 4925, 4960, 700, 4949, 700, 4961, 700, 4930, 4934, 4931, 4966, 4935, 700, 4936, 4969, 4937, 700, 4950, 4951, 4952, 4954, 4955, 4953, 700, 4948, 4957, 4956, 4958, 4932, 4938, 4939, 4940, 4960, 4941, 4949, 4942, 4961, 4962, 4967, 4970, 4943, 4966, 4964, 4944, 4945, 4969, 4959, 4946, 4968, 4971, 4952, 4972, 4963, 4953, 4947, 4973, 4957, 4965, 4958, 4974, 4938, 4939, 4940, 4979, 4941, 4980, 4942, 4981, 4962, 4967, 4970, 4943, 4982, 4964, 4944, 4945, 4983, 4959, 4946, 4968, 4971, 4984, 4972, 4963, 4985, 4947, 4973, 4986, 4965, 4987, 4974, 4989, 4990, 4991, 4979, 4992, 4980, 4993, 4981, 4994, 4995, 4996, 4997, 4982, 4988, 4998, 4999, 4983, 5000, 5001, 5002, 5003, 4984, 5004, 5005, 4985, 5006, 5007, 4986, 700, 4987, 700, 4989, 4990, 4991, 700, 4992, 700, 4993, 700, 4994, 4995, 4996, 4997, 700, 4988, 4998, 4999, 5008, 5000, 5001, 5002, 5003, 5010, 5004, 5005, 5012, 5006, 5007, 5009, 700, 700, 700, 5013, 5014, 700, 700, 5256, 5011, 700, 700, 700, 700, 700, 700, 700, 700, 700, 5259, 5008, 700, 5260, 700, 700, 5010, 5016, 700, 5012, 5017, 5018, 5009, 700, 5019, 5030, 5013, 5014, 5038, 5015, 5256, 5011, 700, 5043, 700, 5031, 700, 5032, 5039, 5034, 5033, 5259, 5035, 5036, 5260, 700, 5037, 5042, 5016, 700, 5046, 5017, 5018, 5040, 5041, 5019, 5030, 700, 700, 5038, 5015, 5020, 5021, 5022, 5043, 5023, 5031, 5024, 5032, 5039, 5034, 5033, 5025, 5035, 5036, 5026, 5027, 5037, 5042, 5028, 5044, 5046, 700, 700, 5040, 5041, 5029, 5058, 700, 700, 700, 700, 5020, 5021, 5022, 5045, 5023, 700, 5024, 700, 700, 700, 700, 5025, 5054, 5056, 5026, 5027, 700, 5061, 5028, 5044, 700, 5060, 700, 700, 700, 5029, 5058, 5055, 5057, 5059, 5064, 5062, 700, 700, 5045, 5065, 5069, 5066, 700, 5067, 700, 5063, 5071, 5054, 5056, 700, 700, 5077, 5061, 5072, 5070, 5075, 5060, 5068, 700, 700, 700, 700, 5055, 5057, 5059, 5064, 5062, 5073, 5078, 700, 5065, 5069, 5066, 5074, 5067, 700, 5063, 5071, 5084, 700, 5076, 700, 5077, 700, 5072, 5070, 5075, 5086, 5068, 700, 5093, 700, 5085, 5087, 5088, 700, 700, 5089, 5073, 5078, 700, 700, 5079, 5080, 5074, 700, 5081, 5090, 700, 5084, 700, 5076, 5094, 5091, 700, 5082, 5101, 5092, 5086, 5100, 700, 5093, 5083, 5085, 5087, 5088, 5104, 5095, 5089, 5099, 700, 700, 700, 5079, 5080, 5114, 5103, 5081, 5090, 700, 5102, 700, 5098, 5094, 5091, 700, 5082, 5101, 5092, 700, 5100, 700, 700, 5083, 5105, 700, 5106, 5104, 5095, 700, 5099, 700, 5107, 700, 5109, 700, 5114, 5103, 5111, 700, 700, 5102, 700, 5098, 5112, 5110, 700, 700, 5118, 5115, 5119, 700, 700, 5121, 5117, 5105, 5116, 5106, 700, 5113, 5128, 700, 5123, 5107, 700, 5109, 5125, 5120, 5122, 5111, 5131, 700, 5127, 700, 700, 5112, 5110, 5124, 700, 5118, 5115, 5119, 5261, 5130, 5121, 5117, 700, 5116, 700, 5129, 5113, 5128, 5153, 5123, 5141, 5144, 700, 5125, 5120, 5122, 5149, 5131, 700, 5127, 5132, 5133, 5134, 5135, 5124, 5145, 700, 5143, 5136, 5261, 5130, 5142, 700, 5137, 5138, 700, 5129, 5146, 5139, 5153, 5147, 5141, 5144, 5140, 700, 700, 5156, 5149, 5150, 700, 700, 5132, 5133, 5134, 5135, 5148, 5145, 5154, 5143, 5136, 5169, 5159, 5142, 5151, 5137, 5138, 700, 5157, 5146, 5139, 700, 5147, 5155, 700, 5140, 700, 700, 5156, 700, 700, 700, 700, 5158, 5152, 700, 700, 5148, 5171, 5154, 700, 700, 5169, 5159, 5170, 5151, 5160, 5173, 5164, 5157, 700, 5161, 5165, 5166, 5155, 700, 5176, 5167, 5162, 5163, 700, 700, 4978, 700, 5158, 5152, 5172, 700, 5174, 5171, 5177, 700, 5168, 5175, 700, 5170, 700, 5160, 5173, 5164, 5182, 5178, 5161, 5165, 5166, 700, 700, 5176, 5167, 5162, 5163, 5179, 700, 5189, 5184, 700, 5180, 5172, 700, 5174, 5185, 5177, 5181, 5168, 5175, 700, 700, 700, 5183, 5190, 700, 5182, 5178, 700, 5193, 5186, 700, 5187, 700, 700, 5192, 700, 5179, 700, 5189, 5184, 5188, 5180, 700, 700, 5191, 5185, 5205, 5181, 5204, 5206, 700, 700, 700, 5183, 5190, 5201, 5199, 4977, 5217, 5193, 5186, 5194, 5187, 5214, 5195, 5192, 5262, 5200, 5196, 5207, 5203, 5188, 5197, 5212, 5218, 5191, 5202, 5205, 700, 5204, 5206, 5216, 5213, 5198, 4926, 700, 5201, 5199, 700, 5217, 5222, 5215, 5194, 700, 5214, 5195, 700, 5262, 5200, 5196, 5207, 5203, 700, 5197, 5212, 5218, 5223, 5202, 700, 700, 700, 700, 5216, 5213, 5198, 700, 5219, 700, 700, 700, 5225, 5222, 5215, 5224, 700, 5229, 700, 5226, 5228, 700, 5227, 5230, 5231, 5232, 5233, 700, 5240, 5223, 700, 700, 5234, 700, 5242, 700, 700, 5244, 700, 5219, 4832, 5243, 700, 5225, 4802, 5246, 5224, 5235, 5229, 5236, 5226, 5228, 5238, 5227, 5230, 5231, 5232, 5233, 5241, 5240, 700, 5263, 5248, 5234, 5237, 5242, 5249, 5239, 5244, 5245, 5247, 700, 5243, 5250, 5254, 5252, 5246, 5264, 5235, 5257, 5236, 5265, 5253, 5238, 5258, 5266, 5267, 5268, 5269, 5241, 5270, 5271, 5263, 5248, 5272, 5237, 5273, 5249, 5239, 5274, 5245, 5247, 5275, 5255, 5250, 5254, 5252, 5276, 5264, 5277, 5257, 5278, 5265, 5253, 5279, 5258, 5266, 5267, 5268, 5269, 5280, 5270, 5271, 5281, 5282, 5272, 5283, 5273, 5284, 5285, 5274, 5286, 5287, 5275, 5255, 5288, 5289, 5290, 5276, 5291, 5277, 5292, 5278, 5293, 5294, 5279, 5295, 5296, 5298, 5299, 5300, 5280, 5301, 5302, 5281, 5282, 5303, 5283, 5304, 5284, 5285, 5308, 5286, 5287, 5309, 5310, 5288, 5289, 5290, 5311, 5291, 5312, 5292, 5313, 5293, 5294, 5314, 5295, 5296, 5298, 5299, 5300, 5315, 5301, 5302, 5317, 5316, 5303, 4791, 5304, 5326, 5318, 5308, 4790, 4728, 5309, 5310, 4639, 5327, 5328, 5311, 5329, 5312, 5330, 5313, 5331, 5332, 5314, 5319, 5333, 5334, 5335, 5338, 5315, 5320, 5336, 5317, 5316, 5339, 5321, 5340, 5326, 5341, 5322, 5323, 5324, 5337, 5342, 5325, 5327, 5328, 5343, 5329, 5344, 5330, 5345, 5331, 5332, 5346, 5319, 5333, 5334, 5335, 5338, 5347, 5320, 5336, 5352, 5353, 5339, 5321, 5340, 5348, 5341, 5322, 5323, 5324, 5337, 5342, 5325, 5350, 5354, 5343, 5349, 5344, 5355, 5345, 5359, 5360, 5346, 5361, 5362, 5363, 5364, 5365, 5347, 5351, 5366, 5352, 5353, 5367, 5368, 5369, 5348, 5370, 5371, 5372, 5373, 5375, 5376, 5378, 5350, 5354, 5380, 5349, 5381, 5355, 5382, 5359, 5360, 5377, 5361, 5362, 5363, 5364, 5365, 5379, 5351, 5366, 5383, 5384, 5367, 5368, 5369, 5385, 5370, 5371, 5372, 5373, 5375, 5376, 5378, 5386, 5387, 5380, 5388, 5381, 5389, 5382, 5390, 5391, 5377, 5392, 5393, 5394, 5395, 5396, 5379, 5397, 4609, 5383, 5384, 5398, 5410, 5400, 5385, 5411, 5402, 5412, 5418, 4608, 5413, 4599, 5386, 5387, 5404, 5388, 5399, 5389, 5401, 5390, 5391, 5403, 5392, 5393, 5394, 5395, 5396, 5406, 5397, 5405, 5419, 5408, 5398, 5410, 5400, 5420, 5411, 5402, 5412, 5418, 5414, 5413, 5407, 5415, 5421, 5404, 5409, 5399, 5416, 5401, 5424, 5417, 5403, 5422, 5427, 5425, 5428, 5429, 5406, 5434, 5405, 5419, 5408, 5435, 5436, 5423, 5420, 5426, 5437, 5438, 5439, 5414, 5440, 5407, 5415, 5421, 5441, 5409, 5442, 5416, 5443, 5424, 5417, 5444, 5422, 5427, 5425, 5428, 5429, 5445, 5434, 5446, 5447, 5448, 5435, 5436, 5423, 5449, 5426, 5437, 5438, 5439, 5450, 5440, 5455, 5456, 5457, 5441, 5458, 5442, 5459, 5443, 5451, 5452, 5444, 5460, 5453, 5461, 5462, 5463, 5445, 5464, 5446, 5447, 5448, 5465, 5466, 5468, 5449, 5469, 5470, 5473, 5454, 5450, 5474, 5455, 5456, 5457, 5475, 5458, 5476, 5459, 5479, 5451, 5452, 5471, 5460, 5453, 5461, 5462, 5463, 5480, 5464, 5485, 5477, 5472, 5465, 5466, 5468, 5486, 5469, 5470, 5473, 5454, 5478, 5474, 5482, 5487, 5483, 5475, 5481, 5476, 5488, 5479, 5489, 5490, 5471, 5491, 5492, 5493, 5484, 5495, 5480, 5496, 5485, 5477, 5472, 5497, 5498, 5499, 5486, 5502, 5503, 4598, 5494, 5478, 5500, 5482, 5487, 5483, 5505, 5481, 5506, 5488, 5511, 5489, 5490, 5512, 5491, 5492, 5493, 5484, 5495, 5504, 5496, 5501, 5513, 5514, 5497, 5498, 5499, 5507, 5502, 5503, 5508, 5494, 5509, 5500, 5515, 5516, 5517, 5505, 5518, 5506, 5519, 5511, 5520, 5521, 5512, 5523, 5525, 5527, 5528, 5524, 5504, 5510, 5501, 5513, 5514, 5529, 5530, 5531, 5507, 5532, 4597, 5508, 5537, 5509, 5522, 5515, 5516, 5517, 5533, 5518, 5538, 5519, 5539, 5520, 5521, 5535, 5523, 5525, 5527, 5528, 5524, 5540, 5510, 5541, 5534, 5542, 5529, 5530, 5531, 5543, 5532, 5536, 5544, 5537, 5545, 5522, 5546, 5549, 5547, 5533, 5550, 5538, 5551, 5539, 5552, 5553, 5535, 5554, 5555, 5556, 5558, 5559, 5540, 5548, 5541, 5534, 5542, 5560, 5561, 5562, 5543, 5563, 5536, 5544, 5557, 5545, 5564, 5546, 5549, 5547, 5565, 5550, 4596, 5551, 5584, 5552, 5553, 4514, 5554, 5555, 5556, 5558, 5559, 5576, 5548, 4496, 4485, 5587, 5560, 5561, 5562, 5578, 5563, 5577, 5579, 5557, 4484, 5564, 5588, 5589, 5585, 5565, 5566, 5567, 5568, 5584, 5569, 5580, 5570, 5582, 5581, 5590, 5583, 5571, 5576, 5586, 5572, 5573, 5587, 5592, 5574, 5600, 5578, 5604, 5577, 5579, 5591, 5575, 5605, 5588, 5589, 5585, 5606, 5566, 5567, 5568, 5601, 5569, 5580, 5570, 5582, 5581, 5590, 5583, 5571, 5602, 5586, 5572, 5573, 5607, 5592, 5574, 5600, 5608, 5604, 5609, 5610, 5591, 5575, 5605, 5603, 5611, 5612, 5606, 5613, 5614, 5616, 5601, 5617, 5618, 5619, 5620, 5622, 5623, 5624, 5625, 5602, 5621, 5631, 5615, 5607, 4440, 5632, 5633, 5608, 5634, 5609, 5610, 5635, 5636, 5637, 5603, 5611, 5612, 5638, 5613, 5614, 5616, 5639, 5617, 5618, 5619, 5620, 5622, 5623, 5624, 5625, 5640, 5621, 5631, 5615, 5626, 5627, 5632, 5633, 5628, 5634, 5641, 5645, 5635, 5636, 5637, 5646, 5647, 5629, 5638, 5648, 5649, 5650, 5639, 5651, 5630, 5642, 5652, 5653, 5654, 5656, 5657, 5640, 5658, 5659, 5660, 5626, 5627, 5661, 5662, 5628, 5664, 5641, 5645, 5665, 5666, 5663, 5646, 5647, 5629, 5667, 5648, 5649, 5650, 5672, 5651, 5630, 5642, 5652, 5653, 5654, 5656, 5657, 5668, 5658, 5659, 5660, 5670, 5674, 5661, 5662, 5675, 5664, 5676, 5677, 5665, 5666, 5663, 5669, 5678, 5690, 5667, 5671, 4439, 4438, 5672, 4437, 5688, 5691, 5692, 5693, 4436, 5694, 5696, 5668, 5700, 4435, 4434, 5670, 5674, 5703, 4382, 5675, 4381, 5676, 5677, 4362, 5695, 5689, 5669, 5678, 5690, 5706, 5671, 5679, 5680, 5681, 5682, 5688, 5691, 5692, 5693, 5683, 5694, 5696, 5697, 5700, 5684, 5685, 4361, 5711, 5703, 5686, 5712, 5701, 5704, 5713, 5687, 5695, 5689, 5698, 5714, 5716, 5706, 5717, 5679, 5680, 5681, 5682, 5702, 5705, 5718, 5719, 5683, 5722, 5720, 5715, 5707, 5684, 5685, 5699, 5711, 5708, 5686, 5712, 5701, 5704, 5713, 5687, 5709, 5710, 5698, 5714, 5716, 5723, 5717, 5721, 5724, 5725, 5726, 5702, 5705, 5718, 5719, 5727, 5722, 5720, 5715, 5707, 5728, 5729, 5699, 5730, 5708, 5731, 5732, 5733, 5735, 5734, 5736, 5709, 5710, 5737, 5738, 5739, 5723, 5740, 5721, 5724, 5725, 5726, 5741, 5746, 5747, 5750, 5727, 5751, 5748, 5752, 5753, 5728, 5729, 5754, 5730, 5759, 5731, 5732, 5733, 5735, 5734, 5736, 5760, 5742, 5737, 5738, 5739, 5743, 5740, 5749, 5761, 5744, 5762, 5741, 5746, 5747, 5750, 5763, 5751, 5748, 5752, 5753, 5745, 5764, 5754, 5766, 5759, 5771, 5769, 5772, 5775, 5776, 5773, 5760, 5742, 5774, 5777, 5778, 5743, 5765, 5749, 5761, 5744, 5762, 5770, 5779, 5780, 5787, 5763, 5781, 5783, 5788, 5789, 5745, 5764, 5790, 5766, 5785, 5771, 5769, 5772, 5775, 5776, 5773, 5782, 5784, 5774, 5777, 5778, 5791, 5765, 5792, 5786, 5793, 5794, 5770, 5779, 5780, 5787, 5797, 5781, 5783, 5788, 5789, 5799, 5795, 5790, 5800, 5785, 5796, 5801, 5802, 5803, 5804, 5805, 5782, 5784, 5806, 5807, 5808, 5791, 5809, 5792, 5786, 5793, 5794, 5810, 5811, 5812, 5813, 5797, 5814, 5815, 5816, 700, 5799, 5795, 700, 5800, 700, 5796, 5801, 5802, 5803, 5804, 5805, 700, 700, 5806, 5807, 5808, 700, 5809, 700, 700, 5817, 700, 5810, 5811, 5812, 5813, 700, 5814, 5815, 5816, 5822, 700, 700, 700, 5819, 700, 5818, 700, 700, 4324, 5821, 5823, 5824, 5827, 5820, 700, 700, 700, 4305, 5825, 4304, 5817, 700, 700, 5826, 5829, 700, 700, 5828, 700, 5848, 5822, 700, 700, 5886, 5819, 5850, 5818, 5831, 5833, 5830, 5821, 5823, 5824, 5827, 5820, 5849, 700, 5835, 5837, 5825, 5847, 700, 5832, 5834, 5826, 5829, 5839, 700, 5828, 5840, 5848, 700, 5836, 5838, 5886, 700, 5850, 700, 5831, 5833, 5830, 700, 700, 700, 700, 700, 5849, 700, 5835, 5837, 5853, 5847, 700, 5832, 5834, 5841, 700, 5839, 5842, 5851, 5840, 700, 700, 5836, 5838, 5843, 5854, 700, 5844, 5845, 700, 5852, 5846, 700, 5868, 5866, 700, 700, 5855, 5856, 5857, 5853, 5858, 700, 5867, 5863, 5841, 700, 700, 5842, 5851, 700, 5876, 5864, 5875, 700, 5843, 5854, 5865, 5844, 5845, 700, 5852, 5846, 700, 5868, 5866, 5874, 5869, 5855, 5856, 5857, 5870, 5858, 5872, 5867, 5863, 700, 5877, 700, 5873, 5871, 5883, 5876, 5864, 5875, 700, 5878, 700, 5865, 700, 700, 700, 700, 700, 5884, 5879, 5880, 5874, 5869, 5881, 700, 700, 5870, 700, 5872, 700, 700, 700, 5877, 5888, 5873, 5871, 5883, 700, 700, 5882, 700, 5878, 5885, 700, 700, 5887, 700, 5891, 5897, 5884, 5879, 5880, 5889, 5890, 5881, 5894, 5982, 700, 5892, 5899, 700, 5893, 5902, 5903, 5888, 5896, 5898, 5901, 700, 5900, 5882, 700, 700, 5885, 5907, 5904, 5887, 700, 5891, 5897, 5908, 700, 5914, 5889, 5890, 700, 5894, 5982, 700, 5892, 5899, 5905, 5893, 5902, 5903, 700, 5896, 5898, 5901, 5909, 5900, 5906, 700, 700, 700, 5907, 5904, 5910, 5917, 5911, 700, 5908, 5913, 5914, 5918, 5915, 700, 700, 700, 700, 5916, 5912, 5905, 700, 700, 700, 5921, 700, 700, 5919, 5909, 700, 5906, 700, 700, 5926, 700, 5920, 5910, 5917, 5911, 5922, 5924, 5913, 5931, 5918, 5915, 5927, 5940, 5925, 5928, 5916, 5912, 5923, 700, 5939, 700, 5921, 5930, 5943, 5919, 700, 5942, 700, 700, 5932, 5926, 700, 5920, 5929, 5945, 700, 5922, 5924, 5933, 5931, 5934, 5941, 5927, 5940, 5925, 5928, 5944, 5936, 5923, 5937, 5939, 5946, 700, 5930, 5943, 700, 700, 5942, 700, 5935, 5932, 5953, 700, 700, 5929, 5945, 5957, 700, 5938, 5933, 700, 5934, 5941, 700, 700, 5949, 5947, 5944, 5936, 5961, 5937, 700, 5946, 700, 5951, 5963, 700, 700, 5952, 5958, 5935, 5960, 5953, 5948, 700, 5962, 5950, 5957, 5959, 5938, 5955, 5964, 5956, 700, 5965, 700, 5949, 5947, 5966, 700, 5961, 5967, 700, 700, 700, 5951, 5963, 5983, 5968, 5952, 5958, 5970, 5960, 5969, 5948, 700, 5962, 5950, 5972, 5959, 5971, 5955, 5964, 5956, 700, 5965, 5973, 5979, 700, 5966, 700, 5974, 5967, 5977, 5984, 5985, 5978, 5975, 5983, 5968, 5986, 5987, 5970, 5988, 5969, 5989, 5990, 5991, 5992, 5972, 5993, 5971, 5976, 5980, 5994, 5981, 5995, 5973, 5979, 5996, 5997, 5998, 5974, 5999, 5977, 5984, 5985, 5978, 5975, 6000, 6001, 5986, 5987, 6002, 5988, 6003, 5989, 5990, 5991, 5992, 6004, 5993, 6005, 5976, 5980, 5994, 5981, 5995, 6006, 6007, 5996, 5997, 5998, 6008, 5999, 6011, 6009, 6013, 6014, 6015, 6000, 6001, 6010, 6016, 6002, 6017, 6003, 6018, 6021, 6022, 6023, 6004, 6024, 6005, 6025, 6026, 6027, 6028, 700, 6006, 6007, 6029, 6036, 6037, 6008, 6038, 6011, 6009, 6013, 6014, 6015, 6039, 6030, 6010, 6016, 6040, 6017, 6041, 6018, 6021, 6022, 6023, 6042, 6024, 6043, 6025, 6026, 6027, 6028, 6031, 6032, 6044, 6029, 6036, 6037, 6045, 6038, 6046, 6047, 6048, 6033, 6049, 6039, 6030, 6050, 6034, 6040, 6051, 6041, 6035, 6052, 6053, 6054, 6042, 6055, 6043, 6056, 6057, 6058, 6059, 6031, 6032, 6044, 6060, 6061, 6062, 6045, 6063, 6046, 6047, 6048, 6033, 6049, 6064, 6065, 6050, 6034, 6066, 6051, 6067, 6035, 6052, 6053, 6054, 6068, 6055, 6069, 6056, 6057, 6058, 6059, 6070, 6072, 6073, 6060, 6061, 6062, 6074, 6063, 6075, 6076, 6077, 6078, 6079, 6064, 6065, 6080, 6081, 6066, 6082, 6067, 6083, 6084, 6085, 6086, 6068, 6087, 6069, 6088, 6089, 6090, 6092, 6070, 6072, 6073, 700, 6093, 700, 6074, 6109, 6075, 6076, 6077, 6078, 6079, 6091, 6111, 6080, 6081, 6095, 6082, 6094, 6083, 6084, 6085, 6086, 6097, 6087, 6099, 6088, 6089, 6090, 6092, 6101, 6096, 6114, 6103, 6093, 6105, 6107, 6109, 6098, 6119, 6100, 6120, 6112, 6091, 6111, 6102, 6121, 6095, 6104, 6094, 6106, 6108, 700, 6117, 6097, 6115, 6099, 6113, 700, 6124, 6132, 6101, 6096, 6114, 6103, 6116, 6105, 6107, 6118, 6098, 6119, 6100, 6120, 6112, 6125, 6122, 6102, 6121, 6126, 6104, 6128, 6106, 6108, 6127, 6117, 6123, 6115, 6133, 6113, 6130, 6124, 6132, 6129, 6134, 6135, 6136, 6116, 6137, 6138, 6118, 6139, 6131, 6140, 6141, 6142, 6125, 6122, 6143, 6144, 6126, 6145, 6128, 6146, 6147, 6127, 6148, 6123, 6149, 6133, 6152, 6130, 6150, 6151, 6129, 6134, 6135, 6136, 6156, 6137, 6138, 6157, 6139, 6131, 6140, 6141, 6142, 6158, 6159, 6143, 6144, 6153, 6145, 6160, 6146, 6147, 6161, 6148, 6162, 6149, 6163, 6152, 6164, 6150, 6151, 6165, 6154, 6155, 6166, 6156, 6168, 6170, 6157, 6171, 6172, 6173, 6174, 6175, 6158, 6159, 6176, 6167, 6153, 6177, 6160, 6169, 6178, 6161, 6179, 6162, 6188, 6163, 6192, 6164, 6193, 6194, 6165, 6154, 6155, 6166, 6195, 6168, 6170, 700, 6171, 6172, 6173, 6174, 6175, 6196, 6197, 6176, 6167, 6180, 6177, 6181, 6169, 6178, 6184, 6179, 6185, 6188, 6189, 6192, 6190, 6193, 6194, 6198, 6182, 6199, 6200, 6195, 6201, 6186, 6183, 6202, 6203, 6204, 6208, 6187, 6196, 6197, 6206, 6191, 6180, 6209, 6181, 6210, 6211, 6184, 6212, 6185, 6205, 6189, 6213, 6190, 6214, 6207, 6198, 6182, 6199, 6200, 6215, 6201, 6186, 6183, 6202, 6203, 6204, 6208, 6187, 6216, 6217, 6206, 6191, 6218, 6209, 6219, 6210, 6211, 6221, 6212, 6223, 6205, 6225, 6213, 6227, 6214, 6207, 6229, 6239, 6231, 6220, 6215, 6232, 6222, 6240, 6224, 6241, 6226, 6242, 6228, 6216, 6217, 6230, 700, 6218, 6233, 6219, 6235, 6234, 6221, 6236, 6223, 6245, 6225, 6237, 6227, 6248, 6238, 6229, 6239, 6231, 6220, 6243, 6232, 6222, 6240, 6224, 6241, 6226, 6242, 6228, 6249, 6246, 6230, 6244, 6250, 6233, 6255, 6235, 6234, 6256, 6236, 6257, 6245, 6247, 6237, 6258, 6248, 6238, 6259, 6260, 6261, 6262, 6243, 6263, 6264, 6265, 6266, 6267, 6268, 6269, 6270, 6249, 6246, 6271, 6244, 6250, 6276, 6255, 6277, 6278, 6256, 6279, 6257, 6280, 6247, 6281, 6258, 6282, 6283, 6259, 6260, 6261, 6262, 6284, 6263, 6264, 6265, 6266, 6267, 6268, 6269, 6270, 6272, 6273, 6271, 6285, 6274, 6276, 6286, 6277, 6278, 6287, 6279, 6289, 6280, 6290, 6281, 6291, 6282, 6283, 6292, 6294, 6275, 6295, 6284, 6296, 6297, 6300, 6298, 6306, 6293, 6301, 6307, 6272, 6273, 6308, 6285, 6274, 6299, 6286, 6309, 6303, 6287, 6304, 6289, 6310, 6290, 6311, 6291, 6312, 6302, 6292, 6294, 6275, 6295, 6305, 6296, 6297, 6300, 6298, 6306, 6293, 6301, 6307, 6313, 6316, 6308, 6314, 6317, 6299, 6318, 6309, 6303, 6319, 6304, 6320, 6310, 6323, 6311, 6324, 6312, 6302, 6315, 6321, 6332, 6333, 6305, 6334, 6326, 6335, 6327, 6329, 6336, 6330, 6337, 6313, 6316, 6338, 6314, 6317, 6325, 6318, 6322, 6339, 6319, 6340, 6320, 6341, 6323, 6328, 6324, 6342, 6331, 6315, 6321, 6332, 6333, 6346, 6334, 6326, 6335, 6327, 6329, 6336, 6330, 6337, 6344, 6348, 6338, 6349, 6345, 6325, 6343, 6322, 6339, 6350, 6340, 6351, 6341, 6352, 6328, 6353, 6342, 6331, 6358, 6359, 6354, 6360, 6346, 6356, 6361, 6362, 6363, 6364, 6365, 6366, 6367, 6344, 6348, 6368, 6349, 6345, 6355, 6343, 6370, 6357, 6350, 6371, 6351, 6372, 6352, 6373, 6353, 6374, 6369, 6358, 6359, 6354, 6360, 6375, 6356, 6361, 6362, 6363, 6364, 6365, 6366, 6367, 6376, 6377, 6368, 6378, 6379, 6355, 6380, 6370, 6357, 6381, 6371, 6382, 6372, 6383, 6373, 700, 6374, 6369, 700, 700, 700, 700, 6375, 700, 700, 700, 700, 700, 700, 700, 700, 6376, 6377, 700, 6378, 6379, 700, 6380, 700, 700, 6381, 6386, 6382, 6389, 6383, 6391, 6393, 6395, 6397, 6399, 6401, 6403, 6388, 6385, 700, 6405, 6387, 6411, 6390, 6407, 6392, 6394, 6396, 6398, 6400, 6402, 6404, 6412, 700, 6432, 700, 700, 6386, 6410, 6389, 700, 6391, 6393, 6395, 6397, 6399, 6401, 6403, 6388, 6385, 700, 6405, 6387, 6411, 6390, 6407, 6392, 6394, 6396, 6398, 6400, 6402, 6404, 6412, 700, 6432, 700, 6418, 6415, 6410, 700, 700, 6408, 700, 700, 700, 700, 6419, 700, 700, 700, 700, 700, 700, 700, 700, 6413, 6409, 6416, 700, 700, 700, 6420, 6417, 700, 6422, 700, 6424, 6418, 6415, 6423, 6414, 6426, 6408, 6433, 6437, 6435, 6421, 6419, 6425, 6436, 6428, 6439, 6429, 6427, 6430, 6440, 6413, 6409, 6416, 6431, 6434, 6438, 6420, 6417, 700, 6422, 700, 6424, 700, 6445, 6423, 6414, 6426, 700, 6433, 6437, 6435, 6421, 700, 6425, 6436, 6428, 6439, 6429, 6427, 6430, 6440, 700, 700, 6442, 6431, 6434, 6438, 700, 6441, 700, 6443, 700, 700, 6449, 6445, 700, 700, 700, 700, 6444, 700, 700, 6446, 6447, 6448, 700, 700, 700, 6450, 6451, 700, 700, 6453, 6454, 6442, 700, 6457, 6458, 700, 6441, 6455, 6443, 6459, 6452, 6449, 6456, 700, 6460, 700, 6462, 6444, 6468, 6466, 6446, 6447, 6448, 700, 6464, 700, 6450, 6451, 6461, 6463, 6453, 6454, 6467, 700, 6457, 6458, 6469, 700, 6455, 6465, 6459, 6452, 700, 6456, 700, 6460, 6470, 6462, 700, 6468, 6466, 6474, 700, 6471, 700, 6464, 700, 6472, 700, 6461, 6463, 700, 6473, 6467, 700, 700, 6484, 6469, 700, 700, 6465, 700, 700, 700, 6476, 700, 6477, 6470, 700, 6493, 6475, 6480, 6474, 6481, 6471, 6485, 6491, 6486, 6472, 6478, 6494, 700, 6492, 6473, 700, 6479, 6482, 6484, 700, 6495, 700, 6488, 6483, 700, 6505, 6476, 6487, 6477, 6489, 6490, 6493, 6475, 6480, 700, 6481, 6496, 6485, 6491, 6486, 6498, 6478, 6494, 700, 6492, 6504, 6497, 6479, 6482, 700, 700, 6495, 6506, 6488, 6483, 6499, 6505, 6507, 6487, 6508, 6489, 6490, 6509, 6510, 6511, 6500, 6512, 6496, 6513, 6514, 6515, 6498, 6502, 6516, 6517, 6518, 6504, 6497, 6519, 6520, 6501, 6521, 6522, 6506, 6523, 6524, 6499, 6503, 6507, 6525, 6508, 6526, 6529, 6509, 6510, 6511, 6500, 6512, 6531, 6513, 6514, 6515, 6532, 6502, 6516, 6517, 6518, 6533, 6527, 6519, 6520, 6501, 6521, 6522, 6534, 6523, 6524, 6535, 6503, 6528, 6525, 6536, 6526, 6529, 6537, 6538, 6539, 6540, 6541, 6531, 6542, 6543, 6544, 6532, 6545, 6546, 6547, 6548, 6533, 6527, 6550, 6551, 6552, 6553, 6557, 6534, 6558, 6549, 6535, 6554, 6528, 6559, 6536, 6560, 6555, 6537, 6538, 6539, 6540, 6541, 6556, 6542, 6543, 6544, 6561, 6545, 6546, 6547, 6548, 6562, 6563, 6550, 6551, 6552, 6553, 6557, 6564, 6558, 6549, 6565, 6554, 6566, 6559, 6567, 6560, 6555, 6568, 6569, 6570, 6571, 6572, 6556, 6574, 6575, 6576, 6561, 6577, 6578, 6579, 6580, 6562, 6563, 6581, 6582, 6583, 6584, 6585, 6564, 6586, 6589, 6565, 6590, 6566, 6587, 6567, 6591, 6588, 6568, 6569, 6570, 6571, 6572, 6592, 6574, 6575, 6576, 6593, 6577, 6578, 6579, 6580, 6594, 6595, 6581, 6582, 6583, 6584, 6585, 6596, 6586, 6589, 6597, 6590, 6598, 6587, 6599, 6591, 6588, 6600, 6601, 6602, 6603, 6604, 6592, 6605, 6606, 6607, 6593, 6608, 6609, 6611, 6612, 6594, 6595, 6613, 6610, 6614, 6615, 6616, 6596, 6617, 6618, 6597, 6619, 6598, 700, 6599, 700, 700, 6600, 6601, 6602, 6603, 6604, 6629, 6605, 6606, 6607, 6630, 6608, 6609, 6611, 6612, 700, 6631, 6613, 6610, 6614, 6615, 6616, 6632, 6617, 6618, 6620, 6619, 6621, 6623, 6626, 6624, 6627, 6633, 6634, 6635, 6636, 6637, 6629, 6638, 6639, 6641, 6630, 6642, 700, 4181, 700, 6622, 6631, 700, 6625, 6628, 6658, 700, 6632, 6640, 6660, 6620, 6643, 6621, 6623, 6626, 6624, 6627, 6633, 6634, 6635, 6636, 6637, 6644, 6638, 6639, 6641, 6646, 6642, 6648, 6650, 6652, 6622, 6654, 6656, 6625, 6628, 6658, 6645, 6663, 6640, 6660, 6647, 6643, 6649, 6651, 6653, 6664, 6655, 6657, 6668, 6661, 6666, 700, 6644, 6681, 6673, 6665, 6646, 4057, 6648, 6650, 6652, 6669, 6654, 6656, 6662, 6667, 6670, 6645, 6663, 6674, 700, 6647, 6671, 6649, 6651, 6653, 6664, 6655, 6657, 6668, 6661, 6666, 6672, 6675, 6681, 6673, 6665, 6677, 6676, 6679, 6682, 6683, 6669, 6684, 6685, 6662, 6667, 6670, 6686, 6678, 6674, 6680, 6687, 6671, 6688, 6689, 6690, 6691, 6692, 6693, 6694, 6695, 6696, 6672, 6675, 6697, 6698, 6701, 6677, 6676, 6679, 6682, 6683, 6705, 6684, 6685, 6699, 6700, 6706, 6686, 6678, 6707, 6680, 6687, 6702, 6688, 6689, 6690, 6691, 6692, 6693, 6694, 6695, 6696, 6708, 6709, 6697, 6698, 6701, 6703, 6704, 6710, 6711, 6712, 6705, 6713, 6714, 6699, 6700, 6706, 6715, 6719, 6707, 6717, 6720, 6702, 6721, 6722, 6723, 6724, 6725, 6726, 6727, 6716, 6728, 6708, 6709, 700, 6718, 700, 6703, 6704, 6710, 6711, 6712, 6737, 6713, 6714, 6741, 6742, 700, 6715, 6719, 6743, 6717, 6720, 700, 6721, 6722, 6723, 6724, 6725, 6726, 6727, 6716, 6728, 6729, 6744, 6730, 6718, 6733, 6738, 6734, 6739, 6745, 6746, 6737, 6747, 6748, 6741, 6742, 6731, 6749, 6750, 6743, 6735, 6751, 6732, 6752, 6757, 6758, 6736, 6740, 6759, 6760, 6753, 6755, 6729, 6744, 6730, 6761, 6733, 6738, 6734, 6739, 6745, 6746, 6762, 6747, 6748, 6754, 6756, 6731, 6749, 6750, 6763, 6735, 6751, 6732, 6752, 6757, 6758, 6736, 6740, 6759, 6760, 6753, 6755, 700, 700, 700, 6761, 700, 700, 700, 700, 700, 700, 6762, 700, 700, 6754, 6756, 700, 700, 700, 6763, 700, 700, 6768, 700, 700, 700, 700, 700, 700, 700, 6817, 700, 6769, 6778, 6771, 6777, 6773, 6766, 700, 6765, 6767, 6770, 6776, 6772, 6774, 6775, 6779, 6783, 6781, 6780, 6786, 6784, 700, 6768, 700, 700, 700, 700, 700, 6785, 700, 6817, 6782, 6769, 6778, 6771, 6777, 6773, 6766, 6791, 6765, 6767, 6770, 6776, 6772, 6774, 6775, 6779, 6783, 6781, 6780, 6786, 6784, 6790, 700, 700, 6788, 700, 700, 6787, 6785, 6792, 6789, 6782, 700, 700, 6795, 700, 700, 700, 6791, 700, 700, 700, 700, 700, 6793, 6794, 700, 6797, 6798, 700, 6818, 700, 6790, 700, 6819, 6788, 700, 700, 6787, 700, 6792, 6789, 6799, 700, 6800, 6795, 6802, 6796, 6803, 6805, 6808, 6806, 6809, 6810, 6812, 6793, 6794, 700, 6797, 6798, 6814, 6818, 6811, 6801, 6820, 6819, 6821, 6804, 6815, 6822, 6807, 6816, 6823, 6799, 6824, 6800, 6813, 6802, 6796, 6803, 6805, 6808, 6806, 6809, 6810, 6812, 6825, 6826, 6830, 6831, 700, 6814, 6832, 6811, 6801, 6820, 6833, 6821, 6804, 6815, 6822, 6807, 6816, 6823, 6827, 6824, 6835, 6813, 6836, 6837, 6828, 6838, 6839, 6840, 6841, 6842, 6843, 6825, 6826, 6830, 6831, 6829, 6844, 6832, 6845, 6846, 6847, 6833, 6848, 6849, 6850, 6851, 6852, 6853, 6854, 6827, 6855, 6835, 6856, 6836, 6837, 6828, 6838, 6839, 6840, 6841, 6842, 6843, 6858, 6857, 6861, 6862, 6829, 6844, 6863, 6845, 6846, 6847, 6864, 6848, 6849, 6850, 6851, 6852, 6853, 6854, 6859, 6855, 6865, 6856, 6866, 6867, 6868, 6869, 6870, 6871, 6874, 6860, 6875, 6858, 6857, 6861, 6862, 6876, 6877, 6863, 6878, 6879, 6884, 6864, 6885, 6886, 6887, 6888, 6889, 6880, 6882, 6859, 6893, 6865, 6894, 6866, 6867, 6868, 6869, 6870, 6871, 6874, 6860, 6875, 6881, 6883, 6901, 6902, 6876, 6877, 6903, 6878, 6879, 6884, 6904, 6885, 6886, 6887, 6888, 6889, 6880, 6882, 6895, 6893, 6896, 6894, 6898, 6905, 6899, 6906, 6908, 6911, 6909, 6912, 6915, 6881, 6883, 6901, 6902, 6913, 6916, 6903, 6914, 6897, 6917, 6904, 6918, 6900, 6907, 6919, 6920, 6910, 6921, 6895, 6922, 6896, 6923, 6898, 6905, 6899, 6906, 6908, 6911, 6909, 6912, 6915, 6924, 6925, 6926, 6927, 6913, 6916, 6928, 6914, 6897, 6917, 6929, 6918, 6900, 6907, 6919, 6920, 6910, 6921, 6930, 6922, 6931, 6923, 6932, 6933, 6934, 6937, 6938, 6939, 6940, 6935, 6941, 6924, 6925, 6926, 6927, 6936, 6942, 6928, 6943, 6944, 6945, 6929, 6946, 6949, 6947, 6950, 700, 6955, 700, 6930, 6956, 6931, 6957, 6932, 6933, 6934, 6937, 6938, 6939, 6940, 6935, 6941, 6958, 6948, 6951, 6959, 6936, 6942, 6960, 6943, 6944, 6945, 6961, 6946, 6949, 6947, 6950, 6952, 6955, 6953, 6962, 6956, 6963, 6957, 6964, 6965, 700, 700, 700, 700, 700, 700, 700, 6958, 6948, 6951, 6959, 700, 6954, 6960, 700, 700, 700, 6961, 700, 7001, 700, 700, 6952, 6975, 6953, 6962, 6969, 6963, 6968, 6964, 6965, 700, 6974, 6971, 7002, 700, 6976, 700, 6973, 700, 6982, 6970, 6977, 6954, 6978, 700, 700, 700, 6972, 7003, 7001, 6983, 700, 7004, 6975, 6990, 700, 6969, 6991, 6968, 7005, 700, 700, 6974, 6971, 7002, 6984, 6976, 6985, 6973, 700, 6982, 6970, 6977, 6992, 6978, 6993, 7008, 700, 6972, 7003, 6987, 6983, 6988, 7004, 7000, 6990, 6986, 700, 6991, 6994, 7005, 6995, 7006, 7009, 7010, 7011, 6984, 6997, 6985, 6998, 7012, 6989, 7013, 7007, 6992, 7014, 6993, 7008, 7015, 7016, 6996, 6987, 7017, 6988, 7018, 7000, 7019, 6986, 6999, 7020, 6994, 7021, 6995, 7006, 7009, 7010, 7011, 7022, 6997, 7023, 6998, 7012, 6989, 7013, 7007, 7024, 7014, 7025, 7026, 7015, 7016, 6996, 7027, 7017, 7028, 7018, 7029, 7019, 7030, 6999, 7020, 7031, 7021, 7032, 7033, 7034, 7035, 7038, 7022, 7039, 7023, 7040, 7036, 7041, 7043, 7044, 7024, 7046, 7025, 7026, 7047, 7045, 7048, 7027, 7049, 7028, 7037, 7029, 7050, 7030, 7051, 700, 7031, 700, 7032, 7033, 7034, 7035, 7038, 7053, 7039, 7054, 7040, 7036, 7041, 7043, 7044, 7062, 7046, 7052, 7063, 7047, 7045, 7048, 7056, 7049, 7057, 7037, 7064, 7050, 7055, 7051, 7059, 7068, 7060, 7069, 7070, 7066, 7071, 7072, 7053, 7073, 7054, 7065, 7077, 7058, 7078, 7085, 7062, 7086, 7052, 7063, 7067, 7061, 7087, 7056, 7088, 7057, 7079, 7064, 7080, 7055, 700, 7059, 7068, 7060, 7069, 7070, 7066, 7071, 7072, 7082, 7073, 7083, 7065, 7077, 7058, 7078, 7085, 7081, 7086, 7095, 7096, 7067, 7061, 7087, 7089, 7088, 7090, 7079, 700, 7080, 7084, 7092, 700, 7093, 700, 7114, 700, 700, 700, 7115, 7082, 7116, 7083, 7098, 7117, 7091, 700, 700, 7081, 700, 7095, 7096, 7094, 7100, 7099, 7089, 7101, 7090, 7102, 7113, 700, 7084, 7092, 7118, 7093, 7097, 7114, 7104, 7119, 7105, 7115, 700, 7116, 7120, 7098, 7117, 7091, 7103, 7121, 7122, 7107, 700, 7108, 7094, 7100, 7099, 7123, 7101, 7106, 7102, 7113, 7110, 7124, 7111, 7118, 7125, 7097, 7126, 7104, 7119, 7105, 7109, 7127, 7128, 7120, 7129, 7130, 7131, 7103, 7121, 7122, 7107, 7112, 7108, 7132, 7133, 7134, 7123, 7135, 7106, 7137, 7138, 7110, 7124, 7111, 7145, 7125, 7146, 7126, 7136, 7147, 7143, 7109, 7127, 7128, 7140, 7129, 7130, 7131, 7148, 7149, 7141, 7144, 7112, 7150, 7132, 7133, 7134, 7151, 7135, 7164, 7137, 7138, 700, 700, 7142, 7145, 7152, 7146, 7153, 7136, 7147, 7143, 7155, 700, 7156, 7140, 7167, 7168, 7169, 7148, 7149, 7141, 7144, 7158, 7150, 7159, 7170, 7154, 7151, 7161, 7164, 7162, 7171, 7157, 7165, 7142, 7172, 7152, 7166, 7153, 7173, 7174, 7175, 7155, 7160, 7156, 7176, 7167, 7168, 7169, 7163, 7177, 7178, 7179, 7158, 7180, 7159, 7170, 7154, 7181, 7161, 7182, 7162, 7171, 7157, 7165, 7185, 7172, 7183, 7166, 7186, 7173, 7174, 7175, 7187, 7160, 7188, 7176, 7189, 7184, 7190, 7163, 7177, 7178, 7179, 7191, 7180, 7192, 7195, 7193, 7181, 7196, 7182, 7197, 7198, 7199, 7200, 7185, 7201, 7183, 7194, 7186, 7202, 7203, 7204, 7187, 7205, 7188, 7206, 7189, 7184, 7190, 7207, 7208, 7209, 7210, 7191, 7211, 7192, 7195, 7193, 7212, 7196, 7213, 7197, 7198, 7199, 7200, 7214, 7201, 7215, 7194, 7216, 7202, 7203, 7204, 7217, 7205, 7218, 7206, 7219, 7220, 7221, 7207, 7208, 7209, 7210, 7222, 7211, 7223, 7224, 7225, 7212, 7226, 7213, 700, 700, 700, 700, 7214, 700, 7215, 700, 7216, 700, 700, 700, 7217, 700, 7218, 700, 7219, 7220, 7221, 700, 700, 700, 3687, 7222, 3608, 7223, 7224, 7225, 3548, 7226, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 330, 330, 3547, 330, 330, 330, 330, 330, 330, 330, 351, 3540, 351, 354, 354, 3493, 354, 354, 354, 354, 354, 354, 354, 397, 3399, 397, 397, 397, 584, 3369, 3358, 3357, 584, 584, 584, 615, 615, 3295, 615, 615, 615, 615, 615, 615, 615, 623, 623, 3143, 623, 623, 623, 623, 623, 623, 623, 628, 628, 700, 628, 628, 628, 628, 628, 628, 628, 633, 633, 700, 633, 633, 633, 633, 633, 633, 633, 636, 636, 636, 639, 700, 639, 639, 639, 650, 650, 700, 650, 650, 650, 650, 650, 650, 650, 657, 657, 700, 657, 657, 657, 657, 657, 657, 657, 666, 666, 700, 666, 666, 666, 666, 666, 666, 666, 675, 675, 675, 676, 676, 676, 680, 700, 700, 680, 680, 680, 680, 680, 680, 680, 683, 683, 700, 683, 683, 683, 683, 683, 683, 683, 685, 685, 700, 685, 685, 685, 685, 685, 685, 685, 693, 700, 693, 693, 694, 700, 694, 694, 701, 701, 700, 701, 701, 701, 330, 330, 700, 330, 330, 330, 330, 330, 330, 330, 884, 700, 884, 886, 700, 886, 886, 886, 909, 700, 909, 700, 909, 915, 915, 700, 915, 915, 915, 915, 915, 915, 915, 373, 700, 373, 373, 373, 397, 700, 397, 397, 397, 1313, 1313, 700, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1318, 1318, 700, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1344, 700, 1344, 1345, 700, 1345, 1345, 1345, 587, 700, 587, 587, 587, 615, 615, 700, 615, 615, 615, 615, 615, 615, 615, 1532, 1532, 700, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 623, 623, 700, 623, 623, 623, 623, 623, 623, 623, 1534, 1534, 700, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 628, 628, 700, 628, 628, 628, 628, 628, 628, 628, 1537, 1537, 700, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1538, 700, 1538, 1538, 1538, 639, 700, 639, 639, 639, 1541, 1541, 700, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1543, 1543, 700, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1544, 1544, 700, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 650, 650, 700, 650, 650, 650, 650, 650, 650, 650, 1551, 1551, 700, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1552, 1552, 700, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 657, 657, 700, 657, 657, 657, 657, 657, 657, 657, 1557, 1557, 700, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1558, 1558, 700, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 666, 666, 700, 666, 666, 666, 666, 666, 666, 666, 1562, 1562, 700, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1563, 1563, 700, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1566, 700, 1566, 1566, 1566, 1567, 700, 1567, 1567, 1567, 680, 700, 700, 680, 680, 680, 680, 680, 680, 680, 683, 683, 700, 683, 683, 683, 683, 683, 683, 683, 685, 685, 700, 685, 685, 685, 685, 685, 685, 685, 1573, 1573, 700, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1574, 1574, 700, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 693, 700, 693, 693, 694, 700, 694, 694, 373, 700, 373, 373, 373, 1579, 1579, 1579, 701, 701, 700, 701, 701, 701, 884, 700, 884, 886, 700, 886, 886, 886, 909, 700, 909, 700, 909, 915, 915, 700, 915, 915, 915, 915, 915, 915, 915, 397, 700, 397, 397, 397, 1313, 1313, 700, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 2348, 700, 2348, 1344, 1344, 1344, 1345, 700, 1345, 1345, 1345, 587, 700, 587, 587, 587, 1532, 1532, 700, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1534, 1534, 700, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1537, 1537, 700, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1538, 700, 1538, 1538, 1538, 1541, 1541, 700, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1544, 1544, 700, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1551, 1551, 700, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1552, 1552, 700, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1557, 1557, 700, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1558, 1558, 700, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1562, 1562, 700, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1563, 1563, 700, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1566, 700, 1566, 1566, 1566, 1567, 700, 1567, 1567, 1567, 1573, 1573, 700, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1574, 1574, 700, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 373, 700, 373, 373, 373, 2738, 2738, 700, 2738, 2738, 2738, 701, 701, 700, 701, 701, 701, 886, 700, 886, 886, 886, 397, 700, 397, 397, 397, 2348, 700, 2348, 3560, 3560, 3560, 587, 700, 587, 587, 587, 1538, 700, 1538, 1538, 1538, 2738, 2738, 700, 2738, 2738, 2738, 1579, 1579, 1579, 886, 700, 886, 886, 886, 397, 700, 397, 397, 397, 4644, 700, 4644, 4644, 4644, 1538, 700, 1538, 1538, 1538, 2738, 2738, 700, 2738, 2738, 2738, 886, 700, 886, 886, 886, 6530, 6530, 6530, 6573, 6573, 6573, 6764, 6764, 6764, 6834, 700, 6834, 6834, 6834, 6872, 700, 6872, 6872, 6872, 6967, 6967, 700, 6967, 6967, 6967, 7042, 7042, 7042, 6966, 6966, 1574, 6966, 6966, 6966, 7139, 1575, 7139, 7139, 7139, 1563, 1564, 1558, 1559, 1552, 1553, 2719, 1541, 1542, 2688, 2454, 2386, 2351, 2350, 1313, 1314, 2191, 2112, 1932, 910, 910, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 1575, 685, 686, 683, 684, 682, 681, 1564, 666, 667, 1559, 657, 658, 1553, 650, 651, 1542, 1536, 628, 629, 623, 624, 615, 616, 1321, 1319, 1314, 1079, 914, 913, 910, 330, 331, 327, 700, 692, 691, 686, 684, 682, 681, 673, 672, 667, 665, 664, 663, 658, 656, 651, 649, 643, 642, 629, 624, 616, 614, 613, 612, 586, 585, 583, 370, 358, 357, 356, 355, 353, 331, 329, 328, 327, 7227, 265, 265, 263, 263, 224, 224, 89, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227 } ; static yyconst flex_int16_t yy_chk[17447] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, 7, 8, 9, 15, 16, 9, 9, 3, 4, 5, 6, 7, 8, 10, 15, 16, 10, 10, 9, 11, 17, 12, 11, 11, 12, 12, 4220, 19, 18, 10, 17, 19, 73, 73, 23, 11, 17, 12, 18, 20, 24, 31, 73, 20, 18, 23, 32, 33, 34, 37, 4224, 24, 31, 17, 38, 98, 98, 32, 33, 34, 37, 18, 67, 68, 69, 38, 67, 68, 69, 70, 71, 72, 79, 70, 71, 72, 74, 74, 75, 75, 76, 76, 75, 79, 76, 80, 74, 4225, 75, 75, 76, 76, 85, 85, 86, 86, 80, 108, 110, 114, 114, 110, 108, 85, 123, 86, 112, 112, 112, 4227, 183, 192, 9, 9, 9, 183, 192, 203, 11, 9, 12, 206, 203, 10, 10, 10, 206, 218, 232, 239, 10, 2876, 218, 232, 239, 123, 11, 2876, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 25, 133, 26, 25, 25, 26, 26, 29, 3027, 30, 29, 29, 30, 30, 3027, 59, 25, 35, 26, 59, 35, 35, 60, 29, 36, 30, 60, 36, 36, 334, 334, 252, 133, 35, 141, 77, 252, 124, 77, 77, 36, 4169, 78, 191, 222, 78, 78, 4169, 124, 1316, 1316, 77, 260, 130, 25, 124, 26, 130, 78, 117, 117, 29, 117, 30, 268, 141, 117, 130, 124, 4231, 117, 35, 117, 130, 191, 222, 117, 131, 36, 124, 131, 131, 117, 260, 130, 25, 124, 26, 130, 77, 117, 117, 29, 117, 30, 268, 78, 117, 130, 204, 219, 117, 35, 117, 130, 251, 271, 117, 131, 36, 4232, 131, 131, 117, 204, 219, 274, 25, 231, 26, 77, 4233, 231, 251, 29, 338, 30, 78, 289, 4234, 204, 219, 59, 289, 35, 4237, 251, 271, 743, 60, 865, 36, 4238, 1652, 865, 204, 219, 274, 2803, 231, 743, 2803, 77, 231, 251, 1652, 338, 1915, 1915, 78, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 96, 96, 96, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 4239, 1711, 238, 288, 288, 1711, 238, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 238, 288, 288, 96, 238, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 109, 308, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 340, 336, 299, 299, 336, 4240, 342, 198, 343, 344, 345, 109, 198, 299, 318, 895, 895, 695, 695, 903, 903, 4021, 326, 348, 4021, 895, 308, 381, 695, 903, 4242, 340, 336, 1925, 1925, 336, 109, 342, 4243, 343, 344, 345, 109, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 4302, 348, 318, 198, 308, 381, 326, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 318, 198, 4358, 116, 326, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 2202, 380, 118, 138, 2202, 4359, 118, 138, 380, 118, 118, 347, 118, 118, 118, 138, 347, 388, 118, 118, 2357, 2031, 4360, 2031, 2357, 2875, 137, 137, 2031, 2875, 118, 137, 380, 118, 138, 352, 352, 118, 138, 380, 118, 118, 347, 118, 118, 118, 138, 347, 388, 118, 118, 119, 119, 134, 119, 134, 134, 134, 119, 137, 137, 393, 119, 119, 395, 119, 119, 134, 119, 119, 137, 134, 119, 119, 119, 2920, 316, 399, 4170, 2920, 4170, 352, 119, 119, 134, 119, 134, 134, 134, 119, 137, 137, 393, 119, 119, 395, 119, 119, 134, 119, 119, 137, 134, 119, 119, 119, 120, 140, 399, 140, 120, 396, 316, 120, 120, 316, 316, 120, 140, 140, 120, 140, 382, 120, 120, 396, 120, 382, 120, 120, 3026, 3064, 3064, 4379, 3026, 3073, 3073, 120, 140, 402, 140, 120, 396, 316, 120, 120, 316, 316, 120, 140, 140, 120, 140, 382, 120, 120, 396, 120, 382, 120, 120, 121, 121, 121, 121, 346, 125, 341, 125, 341, 402, 349, 121, 121, 121, 125, 125, 341, 404, 121, 125, 349, 125, 346, 121, 885, 885, 3120, 4441, 4442, 4443, 3120, 121, 121, 121, 121, 346, 125, 341, 125, 341, 406, 349, 121, 121, 121, 125, 125, 341, 404, 121, 125, 349, 125, 346, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 4444, 4508, 400, 400, 411, 885, 406, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 400, 400, 411, 122, 4596, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 126, 126, 126, 375, 126, 126, 126, 375, 384, 415, 4692, 126, 126, 126, 126, 126, 384, 375, 126, 126, 384, 1324, 309, 1324, 417, 126, 1324, 375, 1324, 4693, 4694, 126, 126, 126, 375, 126, 126, 126, 375, 384, 415, 309, 126, 126, 126, 126, 126, 384, 375, 126, 126, 384, 309, 418, 394, 417, 126, 128, 375, 309, 128, 128, 128, 128, 419, 128, 394, 4695, 128, 128, 394, 128, 309, 4696, 182, 128, 128, 911, 911, 128, 182, 4697, 182, 309, 418, 394, 423, 4698, 128, 182, 309, 128, 128, 128, 128, 419, 128, 394, 403, 128, 128, 394, 128, 4752, 129, 182, 128, 128, 129, 129, 128, 182, 129, 182, 416, 323, 129, 423, 129, 403, 182, 416, 425, 911, 129, 426, 129, 3197, 389, 403, 4753, 3197, 389, 2874, 323, 129, 389, 2874, 323, 129, 129, 2874, 427, 129, 4766, 416, 323, 129, 136, 129, 403, 136, 416, 425, 136, 129, 426, 129, 132, 389, 132, 136, 132, 389, 136, 323, 132, 389, 409, 323, 132, 136, 132, 427, 409, 132, 132, 323, 132, 136, 429, 132, 136, 3698, 3848, 136, 3025, 3698, 3848, 132, 3025, 132, 136, 132, 3025, 136, 432, 132, 429, 409, 3949, 132, 136, 132, 3949, 409, 132, 132, 4788, 132, 4912, 429, 132, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 4913, 3950, 422, 422, 432, 3950, 429, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 422, 422, 4914, 135, 4915, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 139, 139, 139, 430, 139, 434, 430, 139, 377, 339, 339, 339, 377, 436, 139, 339, 377, 139, 139, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 437, 377, 139, 139, 139, 430, 139, 434, 430, 139, 377, 339, 339, 339, 377, 436, 139, 339, 377, 139, 139, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 437, 377, 438, 440, 442, 364, 444, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 438, 440, 442, 149, 444, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 4924, 3951, 445, 449, 450, 3951, 450, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 445, 449, 450, 301, 450, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 302, 3952, 363, 310, 363, 3952, 454, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 4925, 443, 302, 302, 314, 302, 4975, 455, 310, 302, 310, 5010, 5011, 302, 5016, 302, 443, 310, 310, 302, 454, 441, 310, 314, 310, 302, 3953, 314, 314, 441, 3953, 314, 443, 302, 302, 314, 302, 314, 455, 310, 302, 310, 315, 314, 302, 314, 302, 443, 310, 310, 302, 5017, 441, 310, 314, 310, 302, 303, 314, 314, 441, 315, 314, 5018, 5019, 315, 314, 457, 314, 5022, 451, 379, 412, 458, 314, 315, 314, 451, 460, 379, 303, 315, 379, 303, 412, 379, 379, 303, 379, 412, 303, 303, 315, 303, 303, 303, 315, 464, 457, 303, 303, 451, 379, 412, 458, 5023, 315, 5026, 451, 460, 379, 303, 315, 379, 303, 412, 379, 379, 303, 379, 412, 303, 303, 5027, 303, 303, 303, 319, 464, 3954, 303, 303, 304, 3954, 361, 5028, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 319, 5029, 319, 319, 319, 304, 304, 465, 304, 413, 5030, 361, 304, 466, 319, 448, 304, 304, 319, 304, 304, 448, 304, 304, 413, 413, 304, 304, 304, 5031, 5044, 319, 448, 319, 319, 319, 304, 304, 465, 304, 413, 321, 361, 304, 466, 319, 448, 304, 304, 319, 304, 304, 448, 304, 304, 413, 413, 304, 304, 304, 305, 321, 3955, 448, 321, 3172, 3955, 321, 3172, 5045, 3172, 5059, 468, 392, 321, 392, 421, 321, 392, 305, 469, 470, 398, 305, 321, 398, 305, 305, 421, 421, 305, 471, 321, 305, 398, 321, 305, 305, 321, 305, 398, 305, 305, 468, 392, 321, 392, 421, 321, 392, 305, 469, 470, 398, 305, 321, 398, 305, 305, 421, 421, 305, 471, 5060, 305, 398, 4043, 305, 305, 325, 305, 398, 305, 305, 306, 362, 4043, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 472, 325, 473, 325, 446, 5063, 306, 306, 306, 306, 453, 362, 325, 325, 453, 325, 477, 306, 306, 306, 446, 446, 462, 478, 306, 479, 480, 462, 481, 306, 5070, 472, 325, 473, 325, 446, 362, 306, 306, 306, 306, 453, 362, 325, 325, 453, 325, 477, 306, 306, 306, 446, 446, 462, 478, 306, 479, 480, 462, 481, 306, 307, 5073, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 5074, 4007, 482, 484, 485, 4007, 486, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 482, 484, 485, 307, 486, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 311, 5077, 322, 322, 5081, 1914, 1914, 322, 387, 498, 387, 475, 387, 5083, 322, 1914, 386, 475, 386, 311, 311, 311, 387, 311, 311, 311, 386, 387, 386, 499, 311, 311, 311, 311, 311, 322, 322, 311, 311, 387, 498, 387, 475, 387, 311, 5084, 322, 386, 475, 386, 311, 311, 311, 387, 311, 311, 311, 386, 387, 386, 499, 311, 311, 311, 311, 311, 322, 322, 311, 311, 5085, 374, 1924, 1924, 374, 311, 313, 322, 4230, 4008, 4167, 374, 1924, 4008, 4167, 500, 4168, 374, 4230, 374, 4168, 461, 503, 447, 5087, 313, 504, 447, 313, 313, 313, 313, 374, 313, 447, 374, 313, 313, 461, 313, 461, 383, 374, 313, 313, 383, 500, 313, 374, 383, 374, 497, 461, 503, 447, 383, 313, 504, 447, 313, 313, 313, 313, 383, 313, 447, 497, 313, 313, 461, 313, 461, 383, 5054, 313, 313, 383, 5054, 313, 317, 383, 5055, 497, 489, 5088, 5055, 383, 5089, 376, 376, 5091, 506, 376, 489, 383, 507, 376, 497, 317, 376, 317, 459, 317, 376, 452, 376, 317, 459, 452, 452, 317, 452, 317, 459, 489, 317, 317, 459, 317, 376, 376, 317, 506, 376, 489, 5092, 507, 376, 5093, 317, 376, 317, 459, 317, 376, 452, 376, 317, 459, 452, 452, 317, 452, 317, 459, 5094, 317, 317, 459, 317, 5056, 5095, 317, 320, 5056, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 5096, 5057, 508, 511, 512, 5057, 513, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 508, 511, 512, 320, 513, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 324, 378, 5097, 378, 378, 5098, 5099, 495, 463, 505, 463, 378, 463, 378, 505, 496, 463, 514, 515, 324, 324, 324, 515, 324, 463, 495, 324, 463, 463, 496, 516, 5100, 378, 324, 378, 378, 324, 324, 495, 463, 505, 463, 378, 463, 378, 505, 496, 463, 514, 515, 324, 324, 324, 515, 324, 463, 495, 324, 463, 463, 496, 516, 390, 5101, 324, 517, 390, 324, 324, 385, 385, 385, 390, 385, 390, 385, 518, 390, 390, 502, 385, 5103, 390, 385, 385, 5107, 502, 385, 385, 5108, 519, 5110, 521, 390, 385, 5111, 517, 390, 912, 912, 385, 385, 385, 390, 385, 390, 385, 518, 390, 390, 502, 385, 391, 390, 385, 385, 391, 502, 385, 385, 391, 519, 494, 521, 522, 385, 391, 523, 529, 391, 420, 494, 420, 420, 530, 420, 391, 494, 420, 4314, 5113, 4314, 5114, 391, 912, 5118, 4314, 391, 531, 420, 5121, 391, 5122, 494, 5123, 522, 5124, 391, 523, 529, 391, 420, 494, 420, 420, 530, 420, 391, 494, 420, 424, 424, 424, 424, 424, 424, 424, 424, 538, 531, 420, 435, 435, 435, 435, 435, 435, 435, 435, 456, 539, 456, 456, 467, 526, 467, 501, 501, 476, 535, 456, 456, 456, 476, 526, 535, 541, 456, 501, 538, 467, 467, 467, 5126, 476, 476, 542, 476, 5127, 5128, 456, 539, 456, 456, 467, 526, 467, 501, 501, 476, 535, 456, 456, 456, 476, 526, 535, 541, 456, 501, 5131, 467, 467, 467, 510, 476, 476, 542, 476, 487, 487, 487, 493, 487, 510, 487, 528, 544, 493, 540, 487, 528, 510, 487, 487, 532, 536, 487, 493, 532, 536, 532, 540, 545, 487, 510, 493, 5141, 5142, 5144, 487, 487, 487, 493, 487, 510, 487, 528, 544, 493, 540, 487, 528, 510, 487, 487, 532, 536, 487, 493, 532, 536, 532, 540, 545, 487, 5145, 493, 509, 509, 509, 509, 509, 509, 509, 509, 520, 520, 524, 546, 548, 525, 527, 549, 551, 552, 524, 520, 525, 527, 525, 553, 524, 527, 520, 520, 554, 533, 524, 527, 533, 5147, 527, 5120, 533, 5148, 5120, 520, 520, 524, 546, 548, 525, 527, 549, 551, 552, 524, 520, 525, 527, 525, 553, 524, 527, 520, 520, 554, 533, 524, 527, 533, 534, 527, 534, 533, 537, 555, 534, 543, 537, 558, 555, 559, 563, 543, 537, 534, 543, 567, 534, 534, 728, 5151, 728, 728, 728, 728, 728, 728, 728, 728, 568, 534, 5152, 534, 569, 537, 555, 534, 543, 537, 558, 555, 559, 563, 543, 537, 534, 543, 567, 534, 534, 550, 550, 550, 550, 550, 550, 550, 550, 556, 566, 568, 565, 556, 570, 569, 566, 571, 550, 565, 550, 550, 565, 565, 572, 556, 550, 5154, 5155, 573, 550, 574, 550, 575, 576, 550, 577, 578, 579, 5157, 556, 566, 5158, 565, 556, 570, 5161, 566, 571, 550, 565, 550, 550, 565, 565, 572, 556, 550, 561, 561, 573, 550, 574, 550, 575, 576, 550, 577, 578, 579, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 580, 581, 582, 588, 588, 594, 588, 595, 601, 603, 588, 601, 601, 611, 588, 617, 588, 618, 595, 5163, 588, 5167, 619, 620, 625, 595, 588, 5168, 5173, 5174, 5178, 580, 581, 582, 588, 588, 594, 588, 595, 601, 603, 588, 601, 601, 611, 588, 617, 588, 618, 595, 596, 588, 596, 619, 620, 625, 595, 588, 589, 596, 596, 589, 632, 637, 596, 589, 596, 638, 589, 589, 646, 589, 589, 589, 607, 607, 647, 589, 589, 5179, 5181, 596, 5182, 596, 5183, 607, 5184, 5187, 5188, 589, 596, 596, 589, 632, 637, 596, 589, 596, 638, 589, 589, 646, 589, 589, 589, 607, 607, 647, 589, 589, 590, 590, 648, 590, 608, 600, 607, 590, 608, 600, 653, 590, 590, 660, 590, 590, 608, 590, 590, 600, 668, 590, 590, 590, 5194, 600, 669, 652, 5195, 652, 674, 590, 590, 648, 590, 608, 600, 677, 590, 608, 600, 653, 590, 590, 660, 590, 590, 608, 590, 590, 600, 668, 590, 590, 590, 591, 600, 669, 652, 591, 652, 674, 591, 591, 678, 679, 591, 5198, 677, 591, 5199, 687, 591, 591, 659, 591, 659, 591, 591, 703, 5200, 5201, 5202, 688, 5205, 708, 591, 610, 706, 610, 591, 736, 722, 591, 591, 678, 679, 591, 610, 610, 591, 610, 687, 591, 591, 659, 591, 659, 591, 591, 592, 592, 592, 592, 688, 706, 703, 698, 610, 708, 610, 592, 592, 592, 698, 842, 715, 722, 592, 610, 610, 736, 610, 592, 5206, 5209, 5210, 5211, 5212, 5219, 721, 592, 592, 592, 592, 842, 706, 703, 698, 715, 708, 5208, 592, 592, 592, 698, 704, 5224, 722, 592, 5229, 5208, 736, 5230, 592, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 5231, 842, 704, 704, 5232, 715, 721, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 704, 704, 719, 593, 721, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 597, 597, 597, 710, 597, 597, 597, 887, 723, 719, 5233, 597, 597, 597, 597, 597, 727, 720, 597, 597, 5234, 726, 5235, 5236, 5237, 597, 730, 723, 710, 707, 5238, 597, 597, 597, 5239, 597, 597, 597, 887, 5240, 719, 713, 597, 597, 597, 597, 597, 720, 731, 597, 597, 707, 726, 726, 720, 727, 597, 598, 723, 710, 598, 598, 598, 598, 730, 598, 5243, 5244, 598, 598, 731, 598, 707, 738, 713, 598, 598, 5251, 720, 598, 713, 5252, 707, 726, 726, 720, 727, 758, 598, 716, 5253, 598, 598, 598, 598, 730, 598, 729, 741, 598, 598, 731, 598, 707, 599, 713, 598, 598, 599, 599, 598, 713, 599, 716, 738, 740, 599, 758, 599, 604, 729, 604, 604, 604, 599, 716, 599, 5295, 5305, 744, 716, 746, 741, 604, 742, 599, 775, 604, 740, 599, 599, 5306, 748, 599, 716, 738, 749, 599, 758, 599, 604, 729, 604, 604, 604, 599, 716, 599, 602, 717, 602, 716, 602, 741, 604, 777, 602, 742, 604, 740, 602, 744, 602, 746, 775, 602, 602, 749, 602, 748, 717, 602, 5366, 753, 5419, 5600, 5601, 5602, 5603, 602, 5667, 602, 777, 602, 5755, 717, 717, 602, 742, 5816, 5820, 602, 744, 602, 746, 775, 602, 602, 749, 602, 748, 717, 602, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 777, 759, 753, 717, 717, 5821, 5822, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 753, 5823, 762, 605, 759, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 606, 747, 5824, 606, 759, 818, 606, 609, 609, 609, 762, 609, 734, 606, 609, 5825, 606, 697, 5826, 697, 697, 609, 5827, 606, 609, 609, 5828, 697, 747, 697, 818, 606, 5829, 734, 606, 5830, 734, 606, 609, 609, 609, 762, 609, 747, 606, 609, 702, 606, 697, 699, 697, 697, 609, 699, 606, 609, 609, 699, 697, 747, 697, 818, 773, 699, 734, 702, 699, 734, 702, 745, 733, 724, 770, 699, 747, 5831, 5832, 702, 781, 725, 699, 769, 5833, 702, 699, 773, 5834, 888, 699, 733, 724, 770, 724, 724, 699, 724, 702, 699, 724, 702, 725, 781, 769, 745, 699, 764, 761, 733, 702, 724, 5835, 745, 725, 725, 702, 5836, 773, 750, 888, 5837, 733, 724, 770, 724, 724, 5838, 724, 768, 761, 724, 755, 725, 781, 769, 745, 751, 752, 5863, 733, 750, 724, 764, 745, 725, 725, 739, 754, 739, 739, 739, 739, 739, 739, 739, 739, 750, 750, 752, 751, 761, 755, 5872, 751, 752, 768, 765, 754, 755, 754, 751, 750, 776, 764, 5848, 752, 5877, 756, 5878, 5881, 5882, 766, 757, 5883, 5848, 765, 858, 750, 750, 752, 751, 772, 755, 760, 751, 752, 768, 774, 754, 755, 754, 751, 765, 756, 765, 757, 752, 756, 756, 757, 756, 776, 760, 766, 760, 760, 765, 5884, 766, 774, 5885, 772, 5886, 760, 760, 760, 763, 5887, 782, 858, 760, 779, 790, 765, 756, 765, 757, 5888, 756, 756, 757, 756, 776, 760, 766, 760, 760, 763, 767, 766, 774, 782, 772, 763, 760, 760, 760, 783, 784, 763, 858, 760, 785, 763, 779, 788, 790, 767, 786, 767, 779, 767, 771, 789, 5889, 767, 5890, 5891, 763, 5892, 783, 784, 782, 767, 763, 5893, 767, 767, 788, 786, 763, 771, 793, 771, 763, 779, 789, 790, 767, 798, 767, 779, 767, 817, 785, 780, 767, 801, 771, 771, 771, 783, 784, 799, 767, 793, 802, 767, 767, 788, 786, 798, 771, 807, 771, 793, 780, 789, 797, 801, 798, 780, 799, 803, 817, 785, 798, 889, 802, 771, 771, 771, 780, 780, 801, 780, 793, 800, 797, 810, 799, 804, 798, 5894, 797, 803, 793, 780, 808, 807, 801, 798, 780, 799, 797, 817, 5895, 798, 889, 802, 800, 805, 797, 780, 780, 801, 780, 791, 815, 797, 816, 799, 811, 806, 800, 797, 803, 810, 804, 5898, 807, 808, 805, 805, 812, 797, 791, 791, 791, 816, 791, 800, 791, 797, 805, 811, 809, 791, 815, 5907, 791, 791, 5914, 806, 791, 800, 819, 823, 810, 804, 806, 791, 808, 805, 805, 5915, 812, 791, 791, 791, 816, 791, 821, 791, 822, 805, 811, 820, 791, 815, 823, 791, 791, 809, 806, 791, 814, 826, 809, 825, 819, 806, 791, 890, 819, 824, 813, 812, 813, 813, 813, 813, 813, 813, 813, 813, 821, 820, 814, 827, 5916, 823, 822, 828, 809, 5917, 824, 824, 814, 809, 825, 819, 846, 835, 890, 819, 814, 824, 829, 826, 845, 5918, 828, 5920, 824, 824, 830, 821, 820, 814, 828, 827, 832, 822, 846, 833, 828, 824, 824, 814, 835, 825, 828, 845, 837, 829, 834, 814, 824, 830, 826, 843, 829, 828, 829, 824, 824, 836, 831, 830, 5921, 828, 827, 5922, 832, 846, 5923, 828, 833, 832, 843, 835, 840, 828, 845, 837, 829, 831, 837, 834, 830, 839, 837, 829, 831, 829, 5931, 836, 831, 850, 830, 836, 848, 836, 831, 832, 852, 831, 849, 833, 832, 843, 838, 840, 862, 841, 837, 840, 831, 837, 834, 839, 844, 837, 848, 831, 5932, 839, 836, 831, 849, 838, 836, 838, 836, 831, 850, 838, 831, 855, 853, 841, 852, 856, 840, 841, 838, 844, 840, 838, 838, 841, 839, 847, 864, 848, 5933, 862, 839, 855, 844, 849, 838, 853, 838, 880, 857, 850, 838, 859, 856, 863, 841, 852, 868, 5934, 841, 838, 844, 5935, 838, 838, 841, 847, 880, 5936, 860, 864, 862, 847, 855, 844, 847, 2053, 853, 2053, 5937, 2297, 2053, 2297, 2053, 856, 2297, 857, 2297, 863, 859, 5938, 5939, 860, 868, 859, 869, 860, 847, 880, 875, 867, 864, 5941, 847, 870, 871, 847, 854, 860, 854, 854, 854, 854, 854, 854, 854, 854, 857, 866, 863, 859, 872, 874, 860, 868, 859, 854, 860, 854, 854, 867, 870, 871, 869, 854, 875, 867, 876, 854, 860, 854, 877, 873, 854, 881, 866, 882, 872, 878, 874, 883, 879, 866, 891, 892, 866, 866, 854, 893, 854, 854, 867, 870, 871, 869, 854, 875, 867, 876, 854, 878, 854, 873, 894, 854, 881, 866, 879, 872, 877, 874, 897, 882, 866, 891, 892, 866, 866, 883, 893, 898, 900, 899, 901, 902, 904, 905, 907, 908, 876, 921, 878, 923, 873, 894, 906, 881, 902, 879, 899, 877, 906, 897, 882, 5942, 5943, 5946, 5947, 5948, 883, 5949, 898, 900, 899, 901, 902, 904, 905, 907, 908, 2691, 921, 2691, 923, 5950, 2691, 906, 2691, 902, 5954, 899, 5967, 906, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 918, 917, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 924, 918, 926, 928, 917, 929, 930, 924, 931, 932, 917, 933, 934, 935, 936, 937, 938, 939, 940, 941, 938, 943, 944, 939, 946, 948, 938, 942, 942, 942, 5968, 924, 918, 926, 928, 947, 929, 930, 924, 931, 932, 947, 933, 934, 935, 936, 937, 938, 939, 940, 941, 938, 943, 944, 939, 946, 948, 938, 942, 942, 942, 945, 949, 945, 950, 951, 947, 953, 954, 955, 957, 959, 947, 961, 962, 963, 945, 964, 962, 5969, 945, 966, 969, 970, 955, 955, 5970, 974, 5971, 5972, 5974, 5975, 945, 949, 945, 950, 951, 5976, 953, 954, 955, 957, 959, 5980, 961, 962, 963, 945, 964, 962, 958, 945, 966, 969, 970, 955, 955, 956, 974, 956, 956, 956, 956, 958, 965, 976, 960, 977, 956, 956, 960, 978, 965, 958, 956, 956, 956, 956, 5981, 979, 956, 958, 6240, 6385, 980, 980, 960, 981, 956, 6386, 956, 956, 956, 956, 958, 965, 976, 960, 977, 956, 956, 960, 978, 965, 958, 956, 956, 956, 956, 971, 979, 956, 971, 971, 971, 980, 980, 960, 981, 982, 971, 983, 984, 985, 986, 988, 971, 971, 987, 989, 990, 983, 991, 992, 987, 6387, 994, 995, 6389, 6390, 971, 997, 990, 971, 971, 971, 998, 987, 6391, 1001, 982, 971, 983, 984, 985, 986, 988, 971, 971, 987, 989, 990, 983, 991, 992, 987, 993, 994, 995, 993, 996, 999, 997, 990, 1002, 1004, 1000, 998, 987, 999, 1001, 1003, 996, 993, 1000, 1003, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1016, 1008, 1018, 1019, 993, 1018, 1021, 993, 996, 999, 1022, 1023, 1002, 1004, 1000, 1024, 1020, 999, 1020, 1003, 996, 993, 1000, 1003, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1016, 1008, 1018, 1019, 1025, 1018, 1021, 1026, 1029, 1033, 1022, 1023, 1034, 1035, 1038, 1024, 1020, 1039, 1020, 1042, 1044, 1046, 6392, 1048, 3793, 6393, 3793, 1049, 1049, 3793, 1050, 3793, 6394, 1061, 6395, 1025, 1059, 1065, 1026, 1029, 1033, 1067, 1076, 1034, 1035, 1038, 1047, 6396, 1039, 1059, 1042, 1044, 1046, 1047, 1048, 1047, 1047, 1047, 1049, 1049, 1047, 1050, 1047, 1060, 1061, 1047, 1066, 1059, 1065, 1066, 1078, 1079, 1067, 1076, 1086, 1060, 1087, 1047, 1060, 1060, 1059, 1089, 1090, 6397, 1047, 1091, 1047, 1047, 1047, 6398, 1094, 1047, 1095, 1047, 1060, 6399, 1047, 1066, 6400, 6401, 1066, 1078, 1079, 1096, 1097, 1086, 1060, 1087, 1098, 1060, 1060, 1088, 1089, 1090, 1088, 1099, 1091, 1088, 1100, 1101, 1088, 1094, 1102, 1095, 1103, 1104, 1088, 1088, 1088, 1088, 1088, 1088, 1105, 1106, 1096, 1097, 1107, 1108, 1105, 1098, 1109, 1110, 1088, 1111, 1112, 1088, 1099, 1113, 1088, 1100, 1101, 1088, 1114, 1102, 1118, 1103, 1104, 1088, 1088, 1088, 1088, 1088, 1088, 1105, 1106, 1116, 1116, 1107, 1108, 1105, 1115, 1109, 1110, 1117, 1111, 1112, 1115, 1119, 1113, 1120, 1121, 1123, 1124, 1114, 1122, 1118, 1125, 1126, 1127, 1128, 1129, 1117, 1130, 1117, 1131, 1132, 1116, 1116, 1133, 1123, 1117, 1115, 1135, 1122, 1117, 6402, 1136, 1115, 1119, 1137, 1120, 1121, 1123, 1124, 1117, 1122, 1138, 1125, 1126, 1127, 1128, 1129, 1117, 1130, 1117, 1131, 1132, 1139, 1140, 1133, 1123, 1117, 1141, 1135, 1122, 1117, 1134, 1136, 1134, 1142, 1137, 1143, 1145, 1146, 1148, 1117, 1149, 1138, 1150, 1134, 1151, 1153, 1134, 1157, 6403, 1154, 6404, 1154, 1139, 1140, 1156, 6408, 1158, 1141, 1161, 1162, 1166, 1134, 1156, 1134, 1142, 1167, 1143, 1145, 1146, 1148, 1154, 1149, 1170, 1150, 1134, 1151, 1153, 1134, 1157, 1155, 1154, 1155, 1154, 1171, 1155, 1156, 1155, 1158, 1178, 1161, 1162, 1166, 1179, 1156, 1181, 1182, 1167, 1183, 1185, 1187, 1189, 1154, 1191, 1170, 1192, 1193, 1194, 1155, 1195, 1155, 1196, 1199, 1200, 1201, 1171, 1202, 1203, 1204, 1202, 1178, 1215, 1205, 1218, 1179, 1205, 1181, 1182, 1219, 1183, 1185, 1187, 1189, 6409, 1191, 1223, 1192, 1193, 1194, 1155, 1195, 1155, 1196, 1199, 1200, 1201, 6410, 1202, 1203, 1204, 1202, 6411, 1215, 1205, 1218, 1217, 1205, 1216, 1217, 1219, 1216, 1224, 1225, 1226, 1216, 1227, 1223, 1228, 1216, 1216, 1216, 1229, 1230, 1216, 1231, 1216, 1224, 1216, 1232, 1233, 1234, 1236, 1216, 1237, 1238, 1239, 1217, 6412, 1216, 1217, 1242, 1216, 1224, 1225, 1226, 1216, 1227, 1235, 1228, 1216, 1216, 1216, 1229, 1230, 1216, 1231, 1216, 1224, 1216, 1232, 1233, 1234, 1236, 1216, 1237, 1238, 1239, 1235, 1240, 1244, 1243, 1242, 1245, 1240, 1243, 1246, 1247, 1248, 1235, 1249, 1250, 1251, 1252, 1253, 1257, 1255, 1258, 1247, 1255, 1259, 1261, 1262, 1264, 1265, 1260, 1269, 1270, 1274, 1235, 1240, 1244, 1243, 1260, 1245, 1240, 1243, 1246, 1247, 1248, 1263, 1249, 1250, 1251, 1252, 1253, 1257, 1255, 1258, 1247, 1255, 1259, 1261, 1262, 1264, 1265, 1260, 1269, 1270, 1274, 1275, 1277, 1278, 1263, 1260, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1263, 1286, 1295, 1299, 1300, 1300, 1301, 1303, 1302, 1304, 1301, 1302, 1263, 6413, 6414, 6415, 1305, 6416, 1306, 1275, 1277, 1278, 1263, 1307, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1263, 1286, 1295, 1299, 1300, 1300, 1301, 1303, 1302, 1304, 1301, 1302, 1263, 1276, 1276, 1276, 1305, 1276, 1306, 1276, 1308, 1309, 1310, 1307, 1276, 1312, 1276, 1276, 1276, 1320, 1322, 1276, 1325, 1326, 1323, 1322, 1330, 1331, 1276, 6417, 6418, 6419, 6420, 6421, 1276, 1276, 1276, 6422, 1276, 1323, 1276, 1308, 1309, 1310, 1332, 1276, 1312, 1276, 1276, 1276, 1320, 1322, 1276, 1325, 1326, 1323, 1322, 1330, 1331, 1276, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1323, 1328, 1333, 1334, 1335, 1332, 1328, 1336, 1337, 1338, 1339, 1340, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1342, 1343, 1347, 1350, 6423, 1348, 1348, 1351, 1352, 1354, 6430, 1359, 1328, 1333, 1334, 1335, 1363, 1328, 1336, 1337, 1338, 1339, 1340, 1346, 1357, 1365, 1346, 6431, 1351, 1361, 1357, 1342, 1343, 1347, 1350, 1346, 1348, 1348, 1351, 1352, 1354, 1346, 1359, 1364, 1361, 1361, 1360, 1363, 1366, 1367, 1364, 1370, 1370, 6432, 1346, 1357, 1365, 1346, 1360, 1351, 1361, 1357, 1371, 1360, 1373, 1368, 1346, 1368, 1368, 1374, 1368, 1375, 1346, 1368, 1364, 1361, 1361, 1360, 1369, 1366, 1367, 1364, 1370, 1370, 1368, 1377, 1380, 1382, 1384, 1360, 1369, 1369, 6438, 1371, 1360, 1373, 1368, 6439, 1368, 1368, 1374, 1368, 1375, 1377, 1368, 1378, 1385, 1386, 1378, 1369, 6441, 6442, 6443, 6444, 6445, 1368, 1377, 1380, 1382, 1384, 1388, 1369, 1369, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1390, 1392, 1393, 1377, 1391, 1378, 1385, 1386, 1378, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1389, 1395, 1391, 1388, 1394, 1395, 1397, 1396, 1389, 1398, 1399, 1398, 1395, 1396, 1390, 1392, 1393, 1399, 1391, 1401, 1394, 1394, 1400, 1401, 1396, 1402, 1400, 1400, 1403, 1400, 6446, 1389, 1395, 1391, 1405, 1394, 1395, 1397, 1396, 1389, 1398, 1399, 1398, 1395, 1396, 1406, 1408, 1412, 1399, 1409, 1401, 1394, 1394, 1400, 1401, 1396, 1402, 1400, 1400, 1403, 1400, 1404, 1410, 1404, 1404, 1405, 1409, 1410, 1409, 1407, 1413, 1414, 1404, 1404, 1404, 1407, 1406, 1408, 1412, 1404, 1409, 1407, 1416, 1417, 6447, 1407, 6448, 1418, 6449, 1419, 1420, 1421, 1404, 1410, 1404, 1404, 6450, 1409, 1410, 1409, 1407, 1413, 1414, 1404, 1404, 1404, 1407, 1411, 1425, 1411, 1404, 1411, 1407, 1416, 1417, 1411, 1407, 1415, 1418, 1415, 1419, 1420, 1421, 1411, 1423, 1426, 1411, 1411, 1424, 1427, 1423, 1428, 1429, 1424, 1415, 1415, 1415, 1430, 1411, 1425, 1411, 1432, 1411, 1433, 1424, 1424, 1411, 1424, 1415, 1434, 1415, 6451, 6453, 1443, 1411, 1423, 1426, 1411, 1411, 1424, 1427, 1423, 1428, 1429, 1424, 1415, 1415, 1415, 1430, 1437, 6454, 1443, 1432, 6455, 1433, 1424, 1424, 6456, 1424, 1437, 1434, 1435, 1435, 1435, 1443, 1435, 1445, 1435, 1446, 1442, 1447, 1441, 1435, 1448, 1444, 1435, 1435, 1441, 1442, 1435, 1437, 1445, 1443, 6457, 1442, 6458, 1435, 1441, 1444, 1451, 1437, 1452, 1435, 1435, 1435, 1441, 1435, 1445, 1435, 1446, 1442, 1447, 1441, 1435, 1448, 1444, 1435, 1435, 1441, 1442, 1435, 1454, 1445, 1449, 1449, 1442, 1450, 1435, 1441, 1444, 1451, 1455, 1452, 1450, 1453, 1449, 1441, 1456, 1458, 1453, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1458, 1459, 1460, 1461, 1454, 1462, 1449, 1449, 1458, 1450, 1464, 1463, 1465, 1466, 1455, 1463, 1450, 1453, 1449, 1467, 1456, 1458, 1453, 1469, 1470, 1471, 6461, 6463, 1474, 1468, 1468, 1458, 1459, 1460, 1461, 1477, 1462, 1472, 1474, 1458, 1468, 1464, 1463, 1465, 1466, 1472, 1463, 1468, 1468, 6464, 1467, 1472, 6465, 1478, 1469, 1470, 1471, 1472, 1473, 1474, 1468, 1468, 1479, 1475, 6466, 1473, 1477, 1473, 1472, 1474, 1475, 1468, 1476, 6467, 1475, 1486, 1472, 1476, 1468, 1468, 1475, 1480, 1472, 1475, 1478, 1480, 1484, 1480, 1472, 1473, 1484, 1487, 1481, 1479, 1475, 1481, 1473, 6470, 1473, 1481, 6471, 1475, 6472, 1476, 1483, 1475, 1486, 1488, 1476, 1489, 1483, 1475, 1480, 1482, 1475, 1482, 1480, 1484, 1480, 1482, 1488, 1484, 1487, 1481, 1490, 1492, 1481, 1493, 1482, 1485, 1481, 1482, 1482, 1485, 1494, 1483, 1491, 1496, 1488, 1485, 1489, 1483, 1491, 1497, 1482, 1491, 1482, 6473, 6484, 6485, 1482, 1488, 6486, 6487, 1499, 1490, 1492, 1500, 1493, 1482, 1485, 1501, 1482, 1482, 1485, 1494, 6499, 1491, 1496, 1502, 1485, 6500, 6501, 1491, 1497, 6502, 1491, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1499, 1503, 1504, 1500, 1506, 1507, 1503, 1501, 1508, 1498, 1511, 1498, 1498, 1512, 1513, 1502, 1511, 1498, 1504, 1514, 1510, 1498, 1515, 1498, 1516, 1517, 1498, 1510, 1518, 1519, 1510, 1510, 1503, 1504, 1520, 1506, 1507, 1503, 1521, 1508, 1498, 1511, 1498, 1498, 1512, 1513, 1522, 1511, 1498, 1504, 1514, 1510, 1498, 1515, 1498, 1516, 1517, 1498, 1510, 1518, 1519, 1510, 1510, 1523, 1524, 1520, 1525, 1526, 1527, 1521, 1528, 1529, 1530, 1531, 1533, 1535, 1539, 1522, 1540, 1545, 1546, 1547, 1548, 1549, 1554, 1555, 1560, 1561, 1565, 1568, 1569, 1570, 1571, 1572, 1523, 1524, 1576, 1525, 1526, 1527, 1577, 1528, 1529, 1530, 1531, 1533, 1535, 1539, 1578, 1540, 1545, 1546, 1547, 1548, 1549, 1554, 1555, 1560, 1561, 1565, 1568, 1569, 1570, 1571, 1572, 1584, 1587, 1576, 1586, 1589, 1590, 1577, 1588, 1601, 1591, 1594, 1593, 1592, 1597, 1578, 1602, 1606, 1607, 1610, 1612, 1616, 1603, 1618, 1629, 1614, 6503, 1587, 1589, 6575, 1594, 6764, 1601, 1597, 6768, 1633, 1590, 1591, 1586, 1584, 1588, 1586, 1588, 1592, 1593, 1603, 1602, 1629, 1616, 1610, 1618, 6770, 6771, 1606, 1633, 1607, 6772, 1612, 1587, 1589, 1615, 1594, 1627, 1601, 1597, 1614, 1617, 1590, 1591, 1586, 1584, 1588, 1586, 1588, 1592, 1593, 1603, 1602, 1629, 1616, 1610, 1618, 1634, 1615, 1606, 1633, 1607, 1627, 1612, 1654, 1615, 1657, 1615, 1615, 1615, 1644, 1614, 1615, 6773, 1615, 1627, 1646, 1615, 1617, 1617, 1628, 1635, 1662, 6774, 1653, 6775, 6777, 1665, 1656, 1615, 1658, 1634, 1664, 1627, 1634, 1644, 1615, 1657, 1615, 1615, 1615, 1654, 1628, 1615, 1661, 1615, 1627, 1653, 1615, 1617, 1617, 1656, 1646, 1635, 1628, 1658, 1663, 1628, 1628, 1666, 1662, 1674, 1634, 1664, 1665, 1634, 1644, 1661, 1657, 1668, 1667, 1669, 1654, 1628, 1681, 1906, 1671, 6778, 1653, 1663, 1670, 1666, 1656, 1646, 1635, 1628, 1658, 1672, 1628, 1628, 1655, 1662, 1667, 1676, 1664, 1665, 1675, 1677, 1661, 6780, 1673, 1674, 1678, 1670, 6781, 6783, 1906, 1668, 1669, 1671, 1663, 1655, 1666, 1681, 1655, 1680, 1676, 1655, 1672, 1677, 1655, 1673, 6784, 1667, 1672, 6786, 1655, 1655, 1655, 1655, 1655, 1655, 1674, 1675, 1670, 1678, 1679, 1680, 1668, 1669, 1671, 1683, 1655, 1687, 1681, 1655, 1682, 1676, 1655, 1672, 1677, 1655, 1673, 1684, 1685, 1672, 1684, 1655, 1655, 1655, 1655, 1655, 1655, 1679, 1675, 1686, 1678, 1682, 1680, 1688, 1689, 1691, 1693, 1682, 1684, 1687, 1684, 1692, 1690, 1683, 1683, 1696, 1702, 1684, 1685, 1695, 6787, 1684, 1698, 1689, 1694, 1693, 1699, 1700, 1679, 1686, 1706, 1684, 1682, 1703, 1692, 1690, 1702, 1688, 1682, 1684, 1687, 1684, 1689, 1691, 1683, 1683, 1694, 1698, 1684, 1685, 1697, 1710, 1684, 1690, 1689, 1696, 1693, 1695, 1699, 1701, 1686, 1706, 1684, 1700, 1704, 1692, 1690, 1702, 1688, 1697, 1708, 1703, 1705, 1689, 1691, 1707, 1709, 1694, 1698, 1712, 1701, 1713, 1701, 1716, 1690, 1715, 1696, 1710, 1695, 1699, 1717, 1718, 1706, 1701, 1700, 1709, 1701, 1704, 1729, 1705, 1697, 1707, 1703, 1713, 1712, 1715, 1720, 1708, 1733, 1724, 1734, 1701, 1717, 1701, 6790, 1728, 6791, 1721, 1710, 1725, 1723, 1718, 1737, 1716, 1701, 1738, 1709, 1701, 1704, 1720, 1705, 1733, 1707, 1734, 1713, 1712, 1715, 1721, 1708, 1721, 1729, 1722, 1723, 1717, 1722, 1737, 1722, 1724, 1738, 1722, 1723, 1722, 1718, 1746, 1716, 1725, 1748, 1745, 1721, 1728, 1720, 1749, 1733, 1754, 1734, 1750, 1752, 1762, 1721, 1760, 1721, 1729, 1722, 1723, 1722, 1756, 1737, 1746, 1724, 1738, 1745, 1723, 1758, 1759, 1763, 1761, 1725, 1767, 1768, 1721, 1728, 1769, 1766, 1770, 6792, 1754, 1749, 1771, 6794, 1748, 6795, 1790, 1772, 1722, 1762, 1722, 1752, 1750, 1746, 1786, 1760, 1745, 6796, 1756, 1761, 1766, 1782, 1768, 1763, 1770, 1758, 1759, 6798, 1767, 1784, 1769, 1754, 1749, 1769, 1771, 1748, 1790, 1786, 1804, 1800, 1762, 1772, 1752, 1750, 1772, 1792, 1760, 1785, 1782, 1756, 1761, 1766, 1797, 1768, 1763, 1770, 1758, 1759, 1794, 1767, 1793, 1769, 1908, 1784, 1769, 1771, 1784, 1790, 1786, 1795, 1791, 6799, 1772, 1796, 1785, 1772, 1798, 1800, 1804, 1782, 1783, 6800, 1792, 6801, 1801, 6802, 1805, 1794, 6803, 1797, 6804, 1795, 1791, 1908, 1784, 1796, 1793, 1784, 6805, 1783, 1799, 1798, 1783, 1802, 1803, 1785, 1783, 1791, 1800, 1804, 1783, 1783, 1783, 1792, 1813, 1783, 1805, 1783, 1794, 1783, 1797, 1801, 1795, 1791, 1783, 1802, 1796, 1793, 1806, 1809, 1783, 1815, 1798, 1783, 1799, 1807, 1803, 1783, 1791, 1811, 1812, 1783, 1783, 1783, 1813, 1802, 1783, 1805, 1783, 1810, 1783, 1815, 1801, 1809, 1807, 1783, 1802, 1817, 1814, 1807, 1806, 1811, 1816, 1818, 1819, 1799, 1820, 1803, 1831, 6806, 1810, 1825, 1822, 1832, 1810, 1813, 1802, 1814, 1824, 1812, 1826, 1829, 1815, 1817, 1809, 1807, 1836, 1828, 1814, 6807, 1807, 1806, 1811, 1844, 1827, 1841, 1816, 1837, 1842, 1818, 1819, 1810, 1825, 1820, 1829, 1810, 1822, 1831, 1814, 1822, 1812, 1845, 1832, 1830, 1817, 1824, 1827, 1826, 1848, 1814, 1828, 1837, 1836, 6967, 1827, 1844, 1849, 1816, 1846, 1842, 1818, 1819, 1841, 1825, 1820, 1829, 1830, 1822, 1831, 1847, 1822, 1909, 1848, 1832, 1850, 1830, 1824, 1827, 1826, 1845, 1846, 1828, 1837, 1836, 1866, 1827, 1844, 1830, 1851, 1852, 1842, 1847, 1853, 1841, 1849, 1862, 6969, 1830, 1867, 1870, 1871, 1868, 1909, 1848, 6970, 6971, 1830, 1872, 1873, 1875, 1845, 1846, 1850, 1869, 6610, 6610, 6610, 1853, 1830, 1843, 6972, 6973, 1847, 1871, 1868, 1849, 1866, 1852, 1868, 1851, 1876, 6975, 6977, 1862, 1867, 1867, 1874, 1870, 1843, 1843, 1843, 1875, 1843, 1850, 1843, 1872, 1873, 1869, 1853, 1843, 1869, 1843, 1843, 1843, 1871, 1868, 1843, 1866, 1852, 1868, 1851, 1877, 1879, 1843, 1862, 1867, 1867, 1876, 1870, 1843, 1843, 1843, 1875, 1843, 1874, 1843, 1872, 1873, 1869, 1880, 1843, 1869, 1843, 1843, 1843, 1879, 1883, 1843, 1882, 1886, 1885, 1888, 1884, 1877, 1843, 1884, 1890, 1884, 1876, 1891, 1884, 1892, 1884, 1893, 1899, 1874, 1894, 1883, 1895, 1896, 1880, 1897, 1900, 1898, 1910, 6979, 1879, 1885, 1904, 1904, 1892, 1882, 1883, 1903, 1877, 1886, 1882, 1888, 6980, 1899, 1895, 1891, 1888, 6981, 1890, 1898, 1894, 1912, 1883, 1902, 1893, 1880, 6982, 1916, 1917, 1910, 1896, 1897, 1885, 6983, 1900, 1892, 1882, 1883, 1905, 1905, 1886, 1882, 1888, 1903, 1899, 1895, 1891, 1888, 1904, 1890, 1898, 1894, 1912, 6984, 1918, 1893, 6985, 1902, 1916, 1917, 1919, 1896, 1897, 1920, 1901, 1900, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1903, 1911, 1921, 1922, 1911, 1923, 1926, 1927, 1911, 1928, 1905, 1918, 1929, 1911, 1902, 1930, 1931, 1919, 1911, 6986, 1920, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1936, 1911, 1921, 1922, 1911, 1923, 1926, 1927, 1911, 1928, 1937, 1933, 1929, 1911, 1939, 1930, 1931, 1940, 1911, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1941, 1942, 1936, 1943, 1944, 6987, 1945, 1933, 1946, 1948, 1949, 1950, 1937, 1933, 1951, 1952, 1939, 1953, 1949, 1940, 1955, 1949, 1956, 1957, 1958, 1959, 1962, 1963, 1964, 1967, 1966, 1941, 1942, 1968, 1943, 1944, 1934, 1945, 1969, 1946, 1948, 1949, 1950, 1966, 1970, 1951, 1952, 1971, 1953, 1949, 1972, 1955, 1949, 1956, 1957, 1958, 1959, 1962, 1963, 1964, 1967, 1966, 1973, 1974, 1968, 1975, 1976, 1977, 1979, 1969, 1980, 1981, 1982, 1980, 1966, 1970, 6988, 1978, 1971, 1978, 1983, 1972, 1978, 1984, 1978, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1973, 1974, 1993, 1975, 1976, 1977, 1979, 1995, 1980, 1981, 1982, 1980, 1996, 1998, 1978, 1999, 2000, 2003, 1983, 2005, 2009, 1984, 2010, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 2011, 2012, 1993, 2013, 2014, 2014, 2015, 1995, 2016, 2018, 2020, 2021, 1996, 1998, 1978, 1999, 2000, 2003, 2019, 2005, 2009, 2022, 2010, 2023, 2019, 2024, 2025, 2027, 2028, 2029, 2019, 2011, 2012, 2032, 2013, 2014, 2014, 2015, 2030, 2016, 2018, 2020, 2021, 2033, 2034, 2036, 2030, 2037, 2038, 2019, 2039, 2040, 2022, 2042, 2023, 2019, 2024, 2025, 2027, 2028, 2029, 2019, 2043, 2041, 2032, 2046, 2047, 2039, 2048, 2030, 2041, 2049, 2050, 2051, 2033, 2034, 2036, 2030, 2037, 2038, 2041, 2039, 2040, 2052, 2042, 2054, 2055, 2057, 2058, 2059, 2060, 2062, 2063, 2043, 2041, 2061, 2046, 2047, 2039, 2048, 2064, 2041, 2049, 2050, 2051, 2061, 2065, 2068, 2069, 2066, 2067, 2041, 2071, 2070, 2052, 2073, 2054, 2055, 2057, 2058, 2059, 2060, 2062, 2063, 2066, 2067, 2061, 2067, 2070, 2074, 2075, 2064, 2076, 2077, 2082, 2083, 2061, 2065, 2068, 2069, 2066, 2067, 6989, 2071, 2070, 2086, 2073, 6994, 2089, 6995, 2349, 2349, 2092, 2093, 6996, 2066, 2067, 2087, 2067, 2070, 2074, 2075, 6997, 2076, 2077, 2082, 2083, 2085, 2085, 2085, 2088, 2085, 2087, 2085, 2090, 2094, 2086, 2088, 2085, 2089, 2085, 2085, 2085, 2092, 2093, 2085, 2095, 2096, 2087, 2090, 2097, 2100, 2085, 2091, 6998, 2091, 2349, 6999, 2085, 2085, 2085, 2088, 2085, 2087, 2085, 2090, 2094, 2105, 2088, 2085, 2091, 2085, 2085, 2085, 2091, 2108, 2085, 2095, 2096, 2106, 2090, 2097, 2100, 2085, 2091, 2101, 2091, 2102, 2103, 2107, 2101, 2103, 2102, 2110, 2106, 2111, 2112, 2113, 2105, 2116, 2101, 2091, 2102, 2117, 2107, 2091, 2108, 2118, 2115, 2119, 2106, 2115, 2120, 2122, 2123, 2120, 2101, 2124, 2102, 2103, 2107, 2101, 2103, 2102, 2110, 2106, 2111, 2112, 2113, 2121, 2116, 2101, 2125, 2102, 2117, 2107, 2121, 2128, 2118, 2115, 2119, 2129, 2115, 2120, 2122, 2123, 2120, 2130, 2124, 2133, 2135, 2137, 2138, 2141, 2139, 2142, 2143, 2142, 2144, 2145, 2121, 2139, 2146, 2125, 2147, 2149, 2150, 2121, 2128, 2151, 2152, 2153, 2129, 2155, 2152, 2156, 2158, 2160, 2130, 2161, 2133, 2135, 2137, 2138, 2141, 2139, 2142, 2143, 2142, 2144, 2145, 2157, 2139, 2146, 2162, 2147, 2149, 2150, 2164, 2166, 2151, 2152, 2153, 2167, 2155, 2152, 2156, 2158, 2160, 2168, 2161, 2165, 2157, 2165, 2169, 2170, 2171, 2172, 2173, 2157, 2166, 2174, 2176, 2177, 2178, 2162, 2179, 2165, 2181, 2164, 2166, 2182, 2184, 2182, 2167, 2185, 2188, 2189, 2190, 2191, 2168, 2193, 2165, 2157, 2165, 2169, 2170, 2171, 2172, 2173, 2157, 2166, 2174, 2176, 2177, 2178, 2194, 2179, 2165, 2181, 2198, 2206, 2182, 2184, 2182, 2209, 2185, 2188, 2189, 2190, 2191, 2210, 2193, 2211, 2213, 2218, 2221, 2222, 2223, 2224, 2230, 2232, 2230, 2233, 7098, 2234, 2237, 2194, 2238, 7100, 7101, 2198, 2206, 2241, 2231, 2242, 2209, 2246, 2247, 2250, 7102, 2230, 2210, 2231, 2211, 2213, 2218, 2221, 2222, 2223, 2224, 2230, 2232, 2230, 2233, 2231, 2234, 2237, 2235, 2238, 2236, 2239, 2240, 2245, 2241, 2231, 2242, 2243, 2246, 2247, 2250, 2245, 2230, 2235, 2231, 2236, 2239, 2240, 2244, 2251, 2243, 7103, 2244, 2254, 2252, 7104, 2231, 2255, 2253, 2235, 2260, 2236, 2239, 2240, 2245, 2249, 2263, 2249, 2243, 2252, 2264, 2249, 2245, 2253, 2235, 2249, 2236, 2239, 2240, 2244, 2251, 2243, 2249, 2244, 2254, 2252, 2249, 2249, 2255, 2253, 2259, 2260, 2259, 2261, 7105, 2261, 2249, 2263, 2249, 2265, 2252, 2264, 2249, 2266, 2253, 2266, 2249, 2267, 2268, 2269, 2262, 2259, 2262, 2249, 2270, 2272, 2270, 2249, 2249, 2274, 2265, 2259, 2275, 2259, 2261, 2262, 2261, 2262, 2276, 2262, 2265, 2262, 2277, 2271, 2266, 2271, 2266, 2278, 2267, 2268, 2269, 2262, 2259, 2262, 2273, 2270, 2272, 2270, 2273, 2279, 2274, 2265, 2280, 2275, 2281, 2283, 2262, 2273, 2262, 2276, 2262, 2286, 2262, 2277, 2271, 2282, 2271, 2289, 2278, 2290, 2291, 2292, 2293, 2294, 2283, 2273, 2284, 7106, 2282, 2273, 2279, 7107, 2295, 2280, 2282, 2281, 2283, 2296, 2273, 2284, 2298, 2285, 2286, 2285, 2287, 2284, 2282, 2287, 2289, 2287, 2290, 2291, 2292, 2293, 2294, 2283, 2285, 2284, 2285, 2282, 2285, 2299, 2285, 2295, 2302, 2282, 2287, 2301, 2296, 2304, 2284, 2298, 2285, 2300, 2285, 2287, 2284, 2300, 2287, 2300, 2287, 2305, 2306, 2300, 2309, 2302, 2301, 2285, 2308, 2285, 2308, 2285, 2299, 2285, 2310, 2302, 2311, 2287, 2314, 2315, 2304, 7108, 2321, 2325, 2300, 2331, 2332, 2333, 2300, 2308, 2300, 7109, 2305, 2306, 2300, 2309, 2302, 2301, 2335, 2308, 2329, 2308, 2318, 2329, 7110, 2310, 2336, 2311, 7111, 2314, 2315, 2339, 2318, 2321, 2325, 7112, 2331, 2332, 2333, 2341, 2308, 2316, 2316, 2316, 2334, 2316, 2334, 2316, 7113, 2335, 2340, 2329, 2316, 2318, 2329, 2316, 2316, 2336, 2346, 2316, 2340, 2352, 2339, 2318, 2337, 2334, 2316, 2338, 2353, 2355, 2341, 2356, 2316, 2316, 2316, 2334, 2316, 2334, 2316, 2337, 2361, 2340, 2338, 2316, 2362, 2366, 2316, 2316, 2367, 2346, 2316, 2340, 2352, 2368, 2369, 2337, 2334, 2316, 2338, 2353, 2355, 2371, 2356, 2372, 2385, 2384, 2391, 2394, 2396, 2393, 2337, 2361, 2393, 2338, 2397, 2362, 2366, 2398, 2399, 2367, 2384, 2395, 2400, 2395, 2368, 2369, 2401, 2404, 2408, 2409, 2410, 2413, 2371, 2414, 2372, 2385, 2384, 2391, 2394, 2396, 2393, 2417, 2419, 2393, 2421, 2397, 7165, 7166, 2398, 2399, 4219, 2384, 2395, 2400, 2395, 4218, 2423, 2401, 2404, 2408, 2409, 2410, 2413, 2425, 2414, 2424, 2424, 2422, 2436, 2434, 2440, 2442, 2417, 2419, 2422, 2421, 2422, 2422, 2422, 2451, 2453, 2422, 2434, 2422, 4217, 2454, 2422, 2423, 4215, 2441, 2461, 2462, 2441, 2464, 2425, 2465, 2424, 2424, 2422, 2436, 2434, 2440, 2442, 2435, 2466, 2422, 2469, 2422, 2422, 2422, 2451, 2453, 2422, 2434, 2422, 2435, 2454, 2422, 2435, 2435, 2441, 2461, 2462, 2441, 2464, 2470, 2465, 2471, 2472, 4214, 2473, 2474, 2475, 2476, 2435, 2466, 6789, 2469, 6789, 6789, 6789, 2477, 2478, 2479, 2481, 2482, 2435, 2480, 2483, 2435, 2435, 2463, 2484, 2480, 2463, 2485, 2470, 2463, 2471, 2472, 2463, 2473, 2474, 2475, 2476, 2486, 2463, 2463, 2463, 2463, 2463, 2463, 2477, 2478, 2479, 2481, 2482, 2487, 2480, 2483, 2488, 2489, 2463, 2484, 2480, 2463, 2485, 2490, 2463, 2491, 2491, 2463, 2493, 2490, 2494, 2492, 2486, 2463, 2463, 2463, 2463, 2463, 2463, 2495, 2496, 4213, 2499, 2500, 2487, 2497, 2501, 2488, 2489, 2492, 2498, 2492, 2502, 2503, 2490, 2504, 2491, 2491, 2492, 2493, 2490, 2494, 2492, 2505, 2497, 2506, 2507, 2508, 2498, 2510, 2495, 2496, 2492, 2499, 2500, 2511, 2497, 2501, 2512, 2513, 2492, 2498, 2492, 2502, 2503, 2514, 2504, 2515, 2509, 2492, 2509, 2516, 2517, 2492, 2505, 2497, 2506, 2507, 2508, 2498, 2510, 2509, 2518, 2492, 2509, 2520, 2511, 2521, 2523, 2512, 2513, 2524, 2525, 2526, 2528, 4212, 2514, 2532, 2515, 2509, 2531, 2509, 2516, 2517, 2530, 2529, 2530, 2529, 2531, 2530, 2533, 2530, 2509, 2518, 2536, 2509, 2520, 2537, 2521, 2523, 2541, 2542, 2524, 2525, 2526, 2528, 2529, 2545, 2532, 2546, 2553, 2531, 2530, 2554, 2530, 2556, 2529, 2557, 2529, 2531, 2558, 2533, 2560, 2562, 2564, 2536, 2566, 2567, 2537, 2568, 2569, 2541, 2542, 2570, 2571, 2574, 2575, 2529, 2545, 2576, 2546, 2553, 2578, 2530, 2554, 2530, 2556, 2577, 2557, 2579, 2577, 2558, 2590, 2560, 2562, 2564, 2580, 2566, 2567, 2580, 2568, 2569, 2593, 4204, 2570, 2571, 2574, 2575, 2594, 2598, 2576, 4203, 4202, 2578, 2592, 2600, 4201, 2592, 2577, 2601, 2579, 2577, 2599, 2590, 2602, 4200, 2603, 2580, 2604, 2605, 2580, 2591, 2606, 2593, 2591, 2607, 2608, 2599, 2591, 2594, 2598, 2609, 2591, 2591, 2591, 2592, 2600, 2591, 2592, 2591, 2601, 2591, 2611, 2599, 2612, 2602, 2591, 2603, 2613, 2604, 2605, 2610, 2591, 2606, 2614, 2591, 2607, 2608, 2599, 2591, 2617, 2615, 2609, 2591, 2591, 2591, 2615, 2619, 2591, 2620, 2591, 2610, 2591, 2611, 2618, 2612, 2621, 2591, 2618, 2613, 2623, 2624, 2610, 2622, 2625, 2614, 2626, 2627, 2628, 2632, 2630, 2617, 2615, 2630, 2622, 2633, 2634, 2615, 2619, 2636, 2620, 2637, 2610, 2639, 2640, 2618, 2638, 2621, 2635, 2618, 2644, 2623, 2624, 2645, 2622, 2625, 2635, 2626, 2627, 2628, 2632, 2630, 2649, 2650, 2630, 2622, 2633, 2634, 2652, 2638, 2636, 2653, 2637, 2654, 2639, 2640, 2655, 2656, 2638, 2635, 2657, 2644, 2658, 2659, 2645, 2660, 2661, 2635, 2670, 2674, 2638, 4199, 4196, 2649, 2650, 6936, 6936, 6936, 4195, 2652, 2638, 2678, 2653, 2679, 2654, 4192, 4191, 2655, 2656, 2638, 2680, 2657, 2677, 2658, 2659, 2677, 2660, 2661, 2681, 2670, 2674, 2638, 2651, 2651, 2651, 2682, 2651, 2676, 2651, 2675, 2675, 2676, 2678, 2651, 2679, 2651, 2651, 2651, 2683, 2684, 2651, 2680, 2686, 2677, 2687, 2689, 2677, 2651, 2690, 2681, 2689, 2692, 2693, 2651, 2651, 2651, 2682, 2651, 2676, 2651, 2675, 2675, 2676, 2690, 2651, 2697, 2651, 2651, 2651, 2683, 2684, 2651, 2695, 2686, 2698, 2687, 2689, 2695, 2651, 2690, 2699, 2689, 2692, 2693, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 4190, 4189, 2690, 4187, 2697, 4186, 4185, 4180, 2709, 2710, 2711, 2695, 2712, 2698, 2713, 2714, 2695, 2715, 2716, 2699, 2717, 2718, 2720, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2709, 2710, 2711, 2721, 2712, 2722, 2713, 2714, 2723, 2715, 2716, 2724, 2717, 2718, 2720, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2735, 2736, 2737, 2739, 2743, 2742, 2745, 2756, 2747, 2751, 2721, 2748, 2722, 2740, 2741, 2723, 2750, 2760, 2724, 2744, 2749, 2757, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2735, 2736, 2737, 2748, 2740, 2741, 2742, 2743, 2739, 2747, 2744, 2749, 2751, 2756, 2750, 4179, 4172, 2745, 3054, 2740, 2741, 2760, 2741, 2763, 4165, 2744, 2766, 3538, 3538, 2757, 2770, 2761, 3055, 2769, 2748, 2740, 2741, 2742, 2743, 2739, 2747, 2744, 2749, 2751, 2756, 2750, 2764, 2762, 2745, 3054, 2740, 2741, 2760, 2741, 2761, 2767, 2744, 2770, 2766, 2763, 2757, 2759, 4164, 3055, 4163, 2779, 2768, 4162, 2764, 2761, 2762, 2769, 4161, 3538, 2774, 2771, 2767, 2762, 4160, 4159, 2759, 2759, 2759, 2764, 2759, 2761, 2759, 4158, 2770, 2766, 2763, 2759, 4156, 2759, 2759, 2759, 2765, 2771, 2759, 2764, 2761, 2762, 2769, 2768, 2779, 2759, 2782, 2767, 2762, 2774, 2784, 2759, 2759, 2759, 2764, 2759, 2765, 2759, 2765, 2775, 2777, 2776, 2759, 2780, 2759, 2759, 2759, 2794, 2771, 2759, 2781, 4153, 2784, 2765, 2768, 2779, 2759, 2765, 2785, 2791, 2774, 2775, 2789, 2776, 2782, 2780, 2775, 2765, 2776, 2765, 2790, 2787, 2781, 2788, 2777, 4150, 2775, 2777, 2776, 2794, 2780, 2792, 2791, 2784, 2765, 2785, 2789, 2781, 2765, 2790, 2793, 2797, 2775, 2795, 2776, 2782, 2780, 2775, 2796, 2776, 2800, 2787, 2801, 2781, 2787, 2777, 2788, 2775, 2777, 2776, 2794, 2780, 2795, 2791, 2805, 2802, 2785, 2789, 2781, 2792, 2790, 2809, 2792, 2815, 2796, 2807, 2793, 2797, 2810, 2801, 2813, 2816, 2787, 2793, 2800, 2787, 2814, 2788, 2818, 2811, 2817, 2819, 2823, 2795, 2821, 2827, 2815, 2822, 2805, 2824, 2792, 2802, 4149, 2792, 2816, 2796, 2825, 2793, 2797, 2807, 2801, 2832, 2817, 2809, 2793, 2800, 2811, 2813, 2810, 2818, 2814, 4148, 2814, 2811, 2821, 2830, 2825, 2815, 2828, 2805, 2823, 2819, 2802, 2824, 2822, 2816, 2827, 2824, 2829, 2834, 2807, 2836, 2829, 2817, 2809, 2832, 2833, 2811, 2813, 2810, 2818, 2814, 2830, 2814, 2811, 2821, 2837, 2825, 2841, 2838, 2828, 2823, 2819, 2829, 2824, 2822, 2834, 2827, 2824, 2833, 2829, 2839, 2842, 2840, 2844, 2843, 2832, 2837, 2838, 2837, 2845, 2836, 2854, 2830, 2846, 2848, 2850, 2849, 2853, 2841, 2839, 2828, 2840, 2837, 2829, 2856, 2851, 2834, 2857, 2838, 2833, 2829, 2843, 2845, 2842, 2860, 2848, 2844, 2837, 2838, 2837, 2861, 2836, 2862, 2846, 2878, 2854, 2870, 2854, 2863, 2841, 2839, 2885, 2840, 2837, 2849, 2856, 2850, 2851, 2853, 2838, 2865, 2862, 2843, 2845, 2842, 2857, 2848, 2844, 2866, 2882, 2881, 2890, 2860, 2893, 2846, 3056, 2854, 2895, 2854, 2883, 2861, 4147, 2870, 2878, 2894, 2849, 2856, 2850, 2851, 2853, 2863, 2882, 2862, 4146, 2865, 2885, 2857, 2896, 2883, 2904, 2895, 2890, 2866, 2860, 2881, 2894, 3056, 4144, 2905, 2906, 2913, 2861, 2893, 2870, 2878, 2903, 2919, 2902, 2896, 2907, 2908, 2863, 2882, 2910, 2904, 2865, 2885, 2909, 2911, 2883, 2905, 2895, 2890, 2866, 2923, 2881, 2894, 2902, 2903, 2902, 2906, 2907, 2908, 2893, 2910, 2912, 2914, 2903, 2913, 2896, 2911, 4143, 2922, 4142, 2919, 2904, 2907, 2908, 2902, 2903, 2909, 2905, 2915, 4141, 2918, 2911, 2917, 2912, 2902, 2903, 2902, 2906, 2907, 2908, 2916, 2910, 2923, 2927, 2903, 2913, 2914, 2911, 2912, 4134, 2915, 2919, 2922, 2907, 2908, 2902, 2903, 2909, 2917, 2936, 2932, 2926, 2911, 2915, 2912, 2921, 2917, 2918, 2931, 4133, 2916, 2924, 2935, 2923, 2916, 2933, 4118, 2914, 2925, 2912, 2927, 2915, 2936, 2922, 2939, 2921, 4117, 2921, 2931, 2917, 2931, 2921, 4116, 2924, 2915, 2921, 2932, 2917, 2918, 2926, 2925, 2916, 2921, 2937, 2935, 2916, 2921, 2921, 2924, 2931, 2944, 2927, 2933, 2936, 2933, 2925, 2921, 2940, 2921, 2931, 2939, 2931, 2921, 2937, 2924, 2941, 2921, 2932, 2934, 2942, 2926, 2925, 2938, 2921, 2943, 2935, 2946, 2921, 2921, 2924, 2931, 2944, 2947, 2933, 2937, 2933, 2925, 2941, 2934, 4115, 2934, 2939, 2963, 2940, 2937, 2938, 2951, 2938, 2948, 2949, 2950, 4114, 3058, 2934, 2947, 2934, 2942, 2934, 2942, 2934, 2952, 2943, 2944, 2943, 2946, 2937, 4111, 2945, 2941, 2934, 2948, 2934, 2949, 2950, 2940, 2953, 2938, 2964, 2938, 2963, 2952, 4110, 2951, 3058, 2934, 2947, 2934, 2942, 2934, 2942, 2934, 2958, 2943, 2945, 2943, 2946, 4109, 2945, 2954, 2953, 2955, 2948, 2966, 2949, 2950, 2956, 2945, 2961, 2962, 4105, 2963, 2952, 2958, 2951, 2964, 2971, 2965, 2957, 4104, 2957, 2954, 2967, 2955, 2966, 2945, 2959, 2968, 2956, 2945, 2961, 2953, 2962, 2957, 2954, 2957, 4103, 2957, 2945, 2957, 2954, 2956, 2955, 2967, 2958, 2959, 2964, 2956, 2959, 2957, 2959, 2957, 2954, 2965, 2955, 2966, 2970, 2977, 2971, 2956, 2968, 2961, 4101, 2962, 2957, 2954, 2957, 2959, 2957, 2973, 2957, 2954, 2956, 2955, 2967, 2976, 2959, 2969, 2956, 2959, 2969, 2959, 2969, 2997, 2965, 2969, 2974, 2969, 2973, 2971, 2972, 2968, 2970, 2977, 2972, 2978, 2972, 2981, 2959, 2982, 2972, 4100, 4099, 4098, 3001, 2976, 2980, 4097, 2993, 2974, 3035, 2983, 2986, 3005, 2987, 3003, 2990, 2997, 3007, 2973, 2981, 2972, 2982, 2970, 2977, 2972, 2980, 2972, 2980, 2993, 2974, 2972, 3005, 2978, 2983, 2986, 2976, 2987, 3001, 2990, 2974, 3001, 3003, 3007, 3008, 4096, 3035, 2980, 2997, 2990, 4094, 2981, 4093, 2982, 3004, 3018, 3034, 2980, 4092, 2980, 2993, 2974, 3011, 3005, 2978, 2983, 2986, 3006, 2987, 3001, 2990, 4089, 3001, 3003, 3007, 3004, 3008, 3035, 2980, 2988, 2990, 3029, 3013, 3011, 3018, 4088, 3024, 3006, 3009, 3006, 3021, 4076, 3012, 4075, 3020, 3010, 3034, 3023, 2988, 2988, 2988, 4074, 2988, 4073, 2988, 3013, 3004, 3008, 3006, 2988, 3009, 3029, 2988, 2988, 3011, 3018, 2988, 3010, 3006, 3024, 3006, 3020, 3021, 2988, 3012, 3009, 3023, 3034, 3030, 2988, 2988, 2988, 3010, 2988, 3012, 2988, 3013, 3036, 3037, 3006, 2988, 3009, 3029, 2988, 2988, 3039, 3040, 2988, 3010, 3052, 3024, 3030, 3020, 3021, 2988, 3012, 3009, 3023, 3053, 3059, 3036, 3037, 3060, 3010, 3061, 3012, 3062, 3063, 3065, 3066, 3067, 3052, 3068, 3040, 3069, 3070, 3071, 3072, 3074, 3069, 3075, 3039, 3030, 3076, 3078, 3053, 3052, 3079, 3539, 3539, 3059, 3036, 3037, 3060, 4070, 3061, 4069, 3062, 3063, 3065, 3066, 3067, 3052, 3068, 3040, 3069, 3070, 3071, 3072, 3074, 3069, 3075, 3039, 3081, 3076, 3078, 3053, 3052, 3079, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3082, 3083, 3084, 3085, 3084, 3539, 3084, 3087, 3090, 3092, 3093, 3080, 3094, 3096, 3097, 3081, 3094, 3098, 3099, 3100, 3101, 3102, 3103, 3105, 3106, 3107, 3108, 3110, 3111, 3112, 3113, 3082, 3083, 3084, 3085, 3084, 3080, 3084, 3087, 3090, 3092, 3093, 3080, 3094, 3096, 3097, 3114, 3094, 3098, 3099, 3100, 3101, 3102, 3103, 3105, 3106, 3107, 3108, 3110, 3111, 3112, 3113, 3115, 3116, 3118, 3119, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3114, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3144, 3145, 3146, 3147, 3149, 3150, 3151, 3152, 3115, 3116, 3118, 3119, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3153, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3144, 3145, 3146, 3147, 3149, 3150, 3151, 3152, 3154, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3157, 3163, 3164, 3165, 4068, 3163, 3153, 3156, 3159, 3167, 4067, 3168, 3169, 3170, 3176, 3177, 3178, 3182, 3183, 3184, 4065, 3185, 3154, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3157, 3163, 3164, 3165, 3166, 3163, 3186, 3156, 3159, 3167, 3166, 3168, 3169, 3170, 3176, 3177, 3178, 3182, 3183, 3184, 3166, 3185, 3187, 3188, 3166, 3189, 3192, 3193, 3194, 3196, 3201, 3203, 3202, 3187, 3204, 3166, 3206, 3186, 3202, 3207, 3208, 3166, 3209, 3210, 3211, 3212, 3217, 3222, 3202, 3224, 4064, 3166, 3226, 3187, 3188, 3166, 3189, 3192, 3193, 3194, 3196, 3201, 3203, 3202, 3187, 3204, 3219, 3206, 3229, 3202, 3207, 3208, 3230, 3209, 3210, 3211, 3212, 3217, 3222, 3202, 3224, 3219, 3231, 3226, 3234, 3235, 4063, 4061, 4060, 3244, 4059, 3241, 4058, 3242, 3241, 3238, 3242, 3219, 4055, 3229, 4053, 4052, 3246, 3230, 4051, 3238, 3243, 3253, 3254, 3243, 4049, 4046, 3219, 3231, 3245, 3234, 3235, 3236, 3236, 3236, 3244, 3236, 3241, 3236, 3242, 3241, 3238, 3242, 3236, 3245, 3257, 3236, 3236, 3246, 3268, 3236, 3238, 3243, 3253, 3254, 3243, 3255, 3236, 3266, 3273, 3245, 3276, 3277, 3236, 3236, 3236, 3278, 3236, 3267, 3236, 3279, 3255, 3280, 3266, 3236, 3245, 3257, 3236, 3236, 3282, 3268, 3236, 3283, 3267, 3283, 3285, 3284, 3255, 3236, 3266, 3273, 3286, 3276, 3277, 3287, 3288, 3290, 3278, 3292, 3267, 3284, 3279, 3255, 3280, 3266, 3289, 3293, 3294, 3299, 3299, 3282, 3289, 3299, 3283, 3267, 3283, 3285, 3284, 3300, 3301, 3302, 3299, 3286, 3304, 3308, 3287, 3288, 3290, 3299, 3292, 3309, 3284, 3311, 3314, 3315, 3317, 3289, 3293, 3294, 3299, 3299, 3318, 3289, 3299, 3323, 3324, 3325, 3326, 3327, 3300, 3301, 3302, 3299, 3328, 3304, 3308, 3318, 3329, 3330, 3299, 3331, 3309, 3332, 3311, 3314, 3315, 3317, 3335, 3336, 3338, 3339, 3342, 3318, 3345, 3346, 3323, 3324, 3325, 3326, 3327, 3348, 3346, 3349, 3350, 3328, 3351, 3354, 3318, 3329, 3330, 3359, 3331, 3352, 3332, 3353, 3360, 3362, 3366, 3335, 3336, 3338, 3339, 3342, 3368, 3345, 3346, 4045, 3352, 3378, 3353, 3383, 3348, 3346, 3349, 3350, 3374, 3351, 3354, 3384, 3389, 3390, 3359, 3391, 3352, 3393, 3353, 3360, 3362, 3366, 3369, 3369, 3369, 3369, 3395, 3368, 3390, 3374, 3369, 3352, 3378, 3353, 3383, 3369, 3369, 3392, 3397, 3374, 3369, 4044, 3384, 3389, 3390, 3369, 3391, 3394, 3393, 3396, 3399, 3402, 3392, 3369, 3369, 3369, 3369, 3395, 3403, 3390, 3374, 3369, 3394, 3414, 3396, 3418, 3369, 3369, 3419, 3397, 3407, 3369, 3392, 3420, 3398, 3425, 3369, 3424, 3394, 3398, 3396, 3399, 3402, 3392, 3431, 3407, 3398, 3398, 3432, 3403, 3433, 3434, 3435, 3394, 3414, 3396, 3418, 3436, 3424, 3419, 3437, 3407, 3438, 3392, 3420, 3398, 3425, 3439, 3424, 3440, 3398, 3441, 3442, 3441, 3443, 3431, 3407, 3398, 3398, 3432, 3444, 3433, 3434, 3435, 3447, 3448, 3449, 3450, 3436, 3424, 3452, 3437, 3457, 3438, 4035, 3464, 3466, 3467, 3439, 3463, 3440, 3469, 3441, 3442, 3441, 3443, 3451, 3478, 3483, 3485, 3451, 3444, 3486, 3487, 3451, 3447, 3448, 3449, 3450, 3488, 3463, 3452, 3490, 3457, 3494, 3451, 3464, 3466, 3467, 3495, 3463, 3489, 3469, 3493, 3500, 3505, 3506, 3451, 3478, 3483, 3485, 3451, 3509, 3486, 3487, 3451, 3510, 3489, 3517, 3493, 3488, 3463, 4032, 3490, 3496, 3494, 3451, 3496, 3521, 3518, 3495, 3519, 3489, 3522, 3493, 3500, 3505, 3506, 3520, 3523, 3528, 3533, 3534, 3509, 3518, 3535, 3519, 3510, 3489, 3517, 3493, 3541, 3543, 3520, 3544, 3496, 3543, 3550, 3496, 3521, 3518, 3551, 3519, 3556, 3522, 3559, 3561, 3564, 3565, 3520, 3523, 3528, 3533, 3534, 3562, 3518, 3535, 3519, 3563, 3567, 3569, 3570, 3541, 3543, 3520, 3544, 3566, 3543, 3550, 3562, 3571, 3572, 3551, 3563, 3556, 3563, 3559, 3561, 3564, 3565, 3573, 3566, 3578, 3579, 4031, 3562, 4029, 3582, 4028, 3563, 3567, 3569, 3570, 3583, 3585, 4025, 3584, 3566, 4022, 4010, 3562, 3571, 3572, 3584, 3563, 3586, 3563, 3588, 3583, 4009, 4004, 3573, 3566, 3578, 3579, 3581, 3581, 3581, 3582, 3581, 3586, 3581, 3589, 3590, 3583, 3585, 3581, 3584, 3581, 3581, 3581, 4001, 3591, 3581, 3584, 3592, 3586, 3593, 3588, 3583, 3581, 3587, 3596, 3587, 4000, 3998, 3581, 3581, 3581, 3995, 3581, 3586, 3581, 3589, 3590, 3601, 3604, 3581, 3587, 3581, 3581, 3581, 3587, 3591, 3581, 3597, 3592, 3602, 3593, 3603, 3597, 3581, 3587, 3596, 3587, 3599, 3598, 3606, 3599, 3607, 3597, 3598, 3602, 3608, 3603, 3609, 3601, 3604, 3612, 3587, 3613, 3598, 3611, 3587, 3614, 3611, 3597, 3615, 3602, 3616, 3603, 3597, 3616, 3618, 3619, 3620, 3599, 3598, 3606, 3599, 3607, 3597, 3598, 3602, 3608, 3603, 3609, 3617, 3621, 3612, 3624, 3613, 3598, 3611, 3617, 3614, 3611, 3625, 3615, 3626, 3616, 3629, 3631, 3616, 3618, 3619, 3620, 3633, 3634, 3635, 3637, 3638, 3639, 3638, 3640, 3641, 3635, 3642, 3617, 3621, 3643, 3624, 3645, 3646, 3647, 3617, 3649, 3648, 3625, 3651, 3626, 3648, 3629, 3631, 3652, 3653, 3654, 3656, 3633, 3634, 3635, 3637, 3638, 3639, 3638, 3640, 3641, 3635, 3642, 3657, 3658, 3643, 3660, 3645, 3646, 3647, 3653, 3649, 3648, 3661, 3651, 3661, 3648, 3653, 3662, 3652, 3663, 3654, 3656, 3664, 3665, 3666, 3667, 3668, 3669, 3661, 3670, 3672, 3673, 3674, 3657, 3658, 3675, 3660, 3677, 3662, 3678, 3653, 3678, 3680, 3661, 3681, 3661, 3684, 3653, 3662, 3685, 3663, 3686, 3687, 3664, 3665, 3666, 3667, 3668, 3669, 3661, 3670, 3672, 3673, 3674, 3689, 3690, 3675, 3694, 3677, 3662, 3678, 3702, 3678, 3680, 3705, 3681, 3706, 3684, 3707, 3709, 3685, 3714, 3686, 3687, 3717, 3718, 3719, 3720, 3728, 3994, 3726, 3729, 3726, 3730, 3733, 3689, 3690, 3993, 3694, 3727, 3734, 3991, 3702, 3737, 3738, 3705, 3986, 3706, 3727, 3707, 3709, 3726, 3714, 3731, 3732, 3717, 3718, 3719, 3720, 3728, 3727, 3726, 3729, 3726, 3730, 3733, 3735, 3739, 3731, 3732, 3727, 3734, 3736, 3740, 3737, 3738, 3742, 3740, 3741, 3727, 3739, 3735, 3726, 3743, 3731, 3732, 3741, 3736, 3985, 3746, 3747, 3727, 3984, 3750, 3751, 3748, 3983, 3735, 3739, 3731, 3732, 3749, 3756, 3736, 3740, 3979, 3759, 3742, 3740, 3741, 3748, 3739, 3735, 3745, 3743, 3745, 3749, 3741, 3736, 3745, 3746, 3747, 3969, 3745, 3750, 3751, 3748, 3755, 3760, 3755, 3745, 3761, 3749, 3756, 3745, 3745, 3757, 3759, 3757, 3964, 3762, 3748, 3762, 3962, 3745, 3763, 3745, 3749, 3755, 3764, 3745, 3765, 3761, 3758, 3745, 3758, 3961, 3768, 3755, 3760, 3755, 3745, 3761, 3770, 3771, 3745, 3745, 3757, 3758, 3757, 3758, 3762, 3758, 3762, 3758, 3766, 3763, 3766, 3772, 3755, 3764, 3773, 3765, 3761, 3758, 3767, 3758, 3767, 3768, 3769, 3774, 3775, 3776, 3769, 3770, 3771, 3777, 3960, 3778, 3758, 3779, 3758, 3769, 3758, 3782, 3758, 3766, 3785, 3766, 3772, 3786, 3778, 3773, 3780, 3959, 3787, 3767, 3778, 3767, 3779, 3769, 3774, 3775, 3776, 3769, 3948, 3780, 3777, 3781, 3778, 3781, 3779, 3780, 3769, 3783, 3782, 3788, 3783, 3785, 3783, 3789, 3786, 3778, 3781, 3780, 3781, 3787, 3781, 3778, 3781, 3779, 3790, 3791, 3792, 3794, 3795, 3783, 3780, 3797, 3781, 3798, 3781, 3800, 3780, 3801, 3783, 3802, 3788, 3783, 3796, 3783, 3789, 3805, 3796, 3781, 3796, 3781, 3797, 3781, 3796, 3781, 3798, 3790, 3791, 3792, 3794, 3795, 3783, 3804, 3806, 3804, 3798, 3807, 3800, 3810, 3801, 3811, 3802, 3817, 3821, 3796, 3827, 3828, 3805, 3796, 3814, 3796, 3829, 3797, 3804, 3796, 3946, 3798, 3831, 3942, 3814, 3941, 3832, 3940, 3804, 3806, 3804, 3835, 3807, 3939, 3810, 3837, 3811, 3938, 3817, 3821, 3825, 3827, 3828, 3825, 3937, 3814, 3830, 3829, 3830, 3804, 3812, 3812, 3812, 3831, 3812, 3814, 3812, 3832, 3833, 3836, 3841, 3812, 3835, 3834, 3812, 3812, 3837, 3830, 3812, 3836, 3843, 3825, 3844, 3833, 3825, 3812, 3846, 3830, 3834, 3830, 3847, 3812, 3812, 3812, 3852, 3812, 3853, 3812, 3857, 3833, 3836, 3841, 3812, 3858, 3834, 3812, 3812, 3859, 3830, 3812, 3836, 3843, 3860, 3844, 3833, 3862, 3812, 3846, 3863, 3834, 3875, 3847, 3876, 3877, 3878, 3852, 3879, 3853, 3880, 3857, 3881, 3887, 3888, 3889, 3858, 3875, 3890, 3891, 3859, 3892, 3893, 3894, 3895, 3860, 3896, 3897, 3862, 3898, 3900, 3863, 3902, 3875, 3909, 3876, 3877, 3878, 3912, 3879, 3916, 3880, 3907, 3881, 3887, 3888, 3889, 3914, 3875, 3890, 3891, 3902, 3892, 3893, 3894, 3895, 3909, 3896, 3897, 3912, 3898, 3900, 3907, 3919, 3934, 3920, 3914, 3916, 3921, 3924, 4245, 3909, 3925, 3928, 3931, 3930, 3932, 3929, 3944, 3927, 3933, 4247, 3902, 3923, 4248, 3943, 3935, 3909, 3920, 3947, 3912, 3921, 3924, 3907, 3922, 3925, 3928, 3914, 3916, 3934, 3919, 4245, 3909, 3936, 3944, 3918, 3928, 3917, 3931, 3935, 3932, 3931, 4247, 3932, 3933, 4248, 3915, 3933, 3943, 3920, 3913, 3947, 3921, 3924, 3935, 3936, 3925, 3928, 3958, 3945, 3934, 3919, 3926, 3926, 3926, 3944, 3926, 3928, 3926, 3931, 3935, 3932, 3931, 3926, 3932, 3933, 3926, 3926, 3933, 3943, 3926, 3945, 3947, 3956, 3957, 3935, 3936, 3926, 3958, 3963, 3965, 3966, 3967, 3926, 3926, 3926, 3945, 3926, 3968, 3926, 3974, 3975, 3973, 3970, 3926, 3956, 3957, 3926, 3926, 3971, 3966, 3926, 3945, 3972, 3965, 3976, 3981, 3978, 3926, 3958, 3956, 3957, 3963, 3970, 3967, 3982, 3977, 3945, 3971, 3973, 3971, 3980, 3972, 3988, 3968, 3975, 3956, 3957, 3990, 4005, 3981, 3966, 3976, 3974, 3978, 3965, 3972, 3989, 3992, 3996, 3997, 3956, 3957, 3963, 3970, 3967, 3977, 3982, 3999, 3971, 3973, 3971, 3977, 3972, 4014, 3968, 3975, 3988, 4002, 3980, 4003, 3981, 3987, 3976, 3974, 3978, 3990, 3972, 4006, 4005, 4012, 3989, 3992, 3996, 4016, 4013, 3997, 3977, 3982, 4011, 4033, 3987, 3987, 3977, 4017, 3987, 3999, 4015, 3988, 3911, 3980, 4006, 4002, 3910, 3987, 4014, 4003, 3990, 4013, 4019, 4005, 3987, 3989, 3992, 3996, 4017, 4006, 3997, 4012, 4020, 4018, 4023, 3987, 3987, 4033, 4016, 3987, 3999, 4024, 4015, 4027, 4011, 4006, 4002, 4026, 3987, 4014, 4003, 4030, 4013, 4036, 4034, 3987, 4018, 4037, 4019, 4017, 4006, 4038, 4012, 4040, 4020, 4039, 4023, 4048, 4033, 4016, 4026, 4042, 4041, 4015, 4047, 4011, 4027, 4024, 4054, 4056, 4037, 4034, 4038, 4050, 3908, 4040, 4036, 4018, 4034, 4019, 4081, 4030, 4048, 4079, 4041, 4020, 3906, 4023, 4042, 4039, 4040, 4026, 4056, 4062, 4047, 4071, 3905, 4027, 4024, 4041, 4066, 4037, 4034, 4038, 4250, 4054, 4040, 4036, 4072, 4034, 4077, 4050, 4030, 4048, 4081, 4041, 4062, 4071, 4083, 4042, 4039, 4040, 4079, 4056, 4078, 4047, 4057, 4057, 4057, 4057, 4041, 4072, 4102, 4066, 4057, 4250, 4054, 4062, 4085, 4057, 4057, 4082, 4050, 4077, 4057, 4081, 4078, 4062, 4071, 4057, 4080, 4084, 4083, 4079, 4080, 3904, 4107, 4057, 4057, 4057, 4057, 4078, 4072, 4082, 4066, 4057, 4102, 4085, 4062, 4080, 4057, 4057, 4106, 4084, 4077, 4057, 4119, 4078, 4082, 4086, 4057, 4087, 4112, 4083, 4108, 4090, 4091, 4120, 4084, 4080, 4095, 4113, 4078, 4107, 4082, 4121, 3903, 4102, 4085, 4106, 4080, 4086, 4112, 4087, 4084, 4122, 4086, 4090, 4091, 4082, 4123, 4119, 4095, 4086, 4086, 4125, 4124, 3850, 4128, 4084, 4080, 4108, 4126, 4112, 4107, 4120, 4131, 4095, 4113, 4127, 4106, 4129, 4086, 4112, 4087, 4125, 4121, 4086, 4090, 4091, 4130, 4132, 4119, 4095, 4086, 4086, 4122, 4135, 4131, 4127, 4137, 4123, 4108, 4136, 4112, 4128, 4120, 4124, 4095, 4113, 4154, 4138, 4140, 4126, 4132, 4155, 4125, 4121, 4157, 4137, 4129, 4174, 4129, 4145, 4152, 4136, 4151, 4122, 4166, 4131, 4127, 4130, 4123, 4139, 4176, 4135, 4128, 4155, 4124, 4154, 4157, 4173, 4171, 4175, 4126, 4132, 4151, 4140, 3849, 4177, 4137, 4129, 4138, 4129, 4174, 4139, 4136, 4251, 4145, 4139, 4166, 4152, 4130, 4139, 4171, 4177, 4135, 4151, 4155, 4178, 4154, 4157, 4176, 4173, 4139, 3799, 4182, 4151, 4140, 4183, 4177, 4181, 4175, 4138, 4184, 4174, 4139, 4188, 4251, 4145, 4139, 4166, 4152, 4193, 4139, 4171, 4177, 4181, 4151, 4194, 4197, 4198, 4205, 4176, 4173, 4139, 4209, 4178, 4211, 4206, 4221, 4183, 4181, 4175, 4182, 4216, 4193, 4223, 4184, 4188, 4210, 4184, 4194, 4197, 4198, 4205, 4207, 4209, 4181, 4208, 4222, 4206, 4226, 4211, 4229, 4228, 4221, 4235, 4178, 3744, 4216, 4241, 4183, 3725, 4223, 4182, 4206, 4193, 4207, 4184, 4188, 4208, 4184, 4194, 4197, 4198, 4205, 4210, 4209, 4236, 4252, 4228, 4206, 4207, 4211, 4228, 4208, 4221, 4222, 4226, 4244, 4216, 4229, 4241, 4235, 4223, 4254, 4206, 4246, 4207, 4255, 4236, 4208, 4246, 4258, 4259, 4262, 4263, 4210, 4264, 4265, 4252, 4228, 4268, 4207, 4269, 4228, 4208, 4271, 4222, 4226, 4272, 4244, 4229, 4241, 4235, 4273, 4254, 4277, 4246, 4278, 4255, 4236, 4279, 4246, 4258, 4259, 4262, 4263, 4280, 4264, 4265, 4281, 4282, 4268, 4283, 4269, 4284, 4286, 4271, 4288, 4289, 4272, 4244, 4290, 4291, 4292, 4273, 4293, 4277, 4294, 4278, 4296, 4297, 4279, 4299, 4301, 4306, 4307, 4308, 4280, 4309, 4310, 4281, 4282, 4311, 4283, 4312, 4284, 4286, 4315, 4288, 4289, 4316, 4317, 4290, 4291, 4292, 4318, 4293, 4319, 4294, 4321, 4296, 4297, 4322, 4299, 4301, 4306, 4307, 4308, 4323, 4309, 4310, 4325, 4323, 4311, 3700, 4312, 4328, 4327, 4315, 3699, 3627, 4316, 4317, 3545, 4329, 4330, 4318, 4331, 4319, 4332, 4321, 4333, 4334, 4322, 4327, 4335, 4336, 4337, 4339, 4323, 4327, 4338, 4325, 4323, 4340, 4327, 4341, 4328, 4342, 4327, 4327, 4327, 4338, 4343, 4327, 4329, 4330, 4344, 4331, 4345, 4332, 4346, 4333, 4334, 4348, 4327, 4335, 4336, 4337, 4339, 4349, 4327, 4338, 4352, 4353, 4340, 4327, 4341, 4350, 4342, 4327, 4327, 4327, 4338, 4343, 4327, 4351, 4354, 4344, 4350, 4345, 4357, 4346, 4363, 4364, 4348, 4365, 4366, 4367, 4368, 4369, 4349, 4351, 4370, 4352, 4353, 4371, 4372, 4373, 4350, 4374, 4375, 4376, 4378, 4383, 4384, 4385, 4351, 4354, 4386, 4350, 4387, 4357, 4389, 4363, 4364, 4384, 4365, 4366, 4367, 4368, 4369, 4385, 4351, 4370, 4390, 4391, 4371, 4372, 4373, 4392, 4374, 4375, 4376, 4378, 4383, 4384, 4385, 4393, 4394, 4386, 4395, 4387, 4396, 4389, 4399, 4400, 4384, 4401, 4402, 4407, 4408, 4411, 4385, 4412, 3492, 4390, 4391, 4419, 4425, 4420, 4392, 4425, 4421, 4426, 4429, 3491, 4426, 3482, 4393, 4394, 4422, 4395, 4419, 4396, 4420, 4399, 4400, 4421, 4401, 4402, 4407, 4408, 4411, 4423, 4412, 4422, 4430, 4424, 4419, 4425, 4420, 4433, 4425, 4421, 4426, 4429, 4427, 4426, 4423, 4427, 4434, 4422, 4424, 4419, 4428, 4420, 4436, 4428, 4421, 4435, 4438, 4437, 4439, 4440, 4423, 4445, 4422, 4430, 4424, 4447, 4449, 4435, 4433, 4437, 4450, 4452, 4453, 4427, 4454, 4423, 4427, 4434, 4455, 4424, 4456, 4428, 4457, 4436, 4428, 4459, 4435, 4438, 4437, 4439, 4440, 4460, 4445, 4463, 4464, 4466, 4447, 4449, 4435, 4467, 4437, 4450, 4452, 4453, 4468, 4454, 4474, 4478, 4490, 4455, 4492, 4456, 4493, 4457, 4470, 4470, 4459, 4494, 4470, 4497, 4500, 4503, 4460, 4504, 4463, 4464, 4466, 4505, 4507, 4513, 4467, 4517, 4518, 4521, 4470, 4468, 4522, 4474, 4478, 4490, 4523, 4492, 4524, 4493, 4526, 4470, 4470, 4520, 4494, 4470, 4497, 4500, 4503, 4527, 4504, 4531, 4525, 4520, 4505, 4507, 4513, 4534, 4517, 4518, 4521, 4470, 4525, 4522, 4528, 4537, 4528, 4523, 4527, 4524, 4538, 4526, 4541, 4544, 4520, 4547, 4548, 4550, 4528, 4552, 4527, 4553, 4531, 4525, 4520, 4554, 4557, 4558, 4534, 4560, 4563, 3481, 4550, 4525, 4559, 4528, 4537, 4528, 4564, 4527, 4564, 4538, 4568, 4541, 4544, 4573, 4547, 4548, 4550, 4528, 4552, 4563, 4553, 4559, 4574, 4577, 4554, 4557, 4558, 4564, 4560, 4563, 4565, 4550, 4565, 4559, 4578, 4579, 4580, 4564, 4581, 4564, 4584, 4568, 4585, 4591, 4573, 4592, 4595, 4601, 4602, 4592, 4563, 4565, 4559, 4574, 4577, 4603, 4604, 4605, 4564, 4606, 3480, 4565, 4610, 4565, 4591, 4578, 4579, 4580, 4608, 4581, 4611, 4584, 4613, 4585, 4591, 4609, 4592, 4595, 4601, 4602, 4592, 4614, 4565, 4615, 4608, 4616, 4603, 4604, 4605, 4629, 4606, 4609, 4630, 4610, 4633, 4591, 4634, 4636, 4635, 4608, 4637, 4611, 4638, 4613, 4642, 4643, 4609, 4645, 4650, 4652, 4655, 4657, 4614, 4635, 4615, 4608, 4616, 4659, 4662, 4663, 4629, 4664, 4609, 4630, 4652, 4633, 4667, 4634, 4636, 4635, 4668, 4637, 3479, 4638, 4677, 4642, 4643, 3355, 4645, 4650, 4652, 4655, 4657, 4671, 4635, 3333, 3320, 4679, 4659, 4662, 4663, 4674, 4664, 4671, 4674, 4652, 3319, 4667, 4686, 4687, 4678, 4668, 4669, 4669, 4669, 4677, 4669, 4675, 4669, 4676, 4675, 4688, 4676, 4669, 4671, 4678, 4669, 4669, 4679, 4690, 4669, 4699, 4674, 4701, 4671, 4674, 4688, 4669, 4706, 4686, 4687, 4678, 4709, 4669, 4669, 4669, 4699, 4669, 4675, 4669, 4676, 4675, 4688, 4676, 4669, 4700, 4678, 4669, 4669, 4710, 4690, 4669, 4699, 4711, 4701, 4712, 4713, 4688, 4669, 4706, 4700, 4715, 4716, 4709, 4716, 4717, 4718, 4699, 4719, 4720, 4721, 4722, 4723, 4725, 4726, 4727, 4700, 4722, 4733, 4717, 4710, 3265, 4734, 4735, 4711, 4737, 4712, 4713, 4741, 4742, 4744, 4700, 4715, 4716, 4747, 4716, 4717, 4718, 4748, 4719, 4720, 4721, 4722, 4723, 4725, 4726, 4727, 4750, 4722, 4733, 4717, 4732, 4732, 4734, 4735, 4732, 4737, 4751, 4756, 4741, 4742, 4744, 4757, 4758, 4732, 4747, 4759, 4760, 4761, 4748, 4762, 4732, 4751, 4763, 4764, 4765, 4768, 4769, 4750, 4771, 4772, 4775, 4732, 4732, 4778, 4779, 4732, 4781, 4751, 4756, 4782, 4783, 4779, 4757, 4758, 4732, 4784, 4759, 4760, 4761, 4787, 4762, 4732, 4751, 4763, 4764, 4765, 4768, 4769, 4785, 4771, 4772, 4775, 4786, 4792, 4778, 4779, 4793, 4781, 4795, 4799, 4782, 4783, 4779, 4785, 4801, 4811, 4784, 4786, 3264, 3263, 4787, 3262, 4807, 4816, 4817, 4822, 3261, 4823, 4824, 4785, 4826, 3260, 3259, 4786, 4792, 4828, 3199, 4793, 3198, 4795, 4799, 3174, 4823, 4807, 4785, 4801, 4811, 4830, 4786, 4802, 4802, 4802, 4802, 4807, 4816, 4817, 4822, 4802, 4823, 4824, 4825, 4826, 4802, 4802, 3173, 4832, 4828, 4802, 4835, 4827, 4829, 4836, 4802, 4823, 4807, 4825, 4840, 4847, 4830, 4851, 4802, 4802, 4802, 4802, 4827, 4829, 4852, 4853, 4802, 4858, 4857, 4840, 4831, 4802, 4802, 4825, 4832, 4831, 4802, 4835, 4827, 4829, 4836, 4802, 4831, 4831, 4825, 4840, 4847, 4864, 4851, 4857, 4865, 4866, 4867, 4827, 4829, 4852, 4853, 4868, 4858, 4857, 4840, 4831, 4869, 4870, 4825, 4871, 4831, 4872, 4873, 4874, 4875, 4874, 4876, 4831, 4831, 4877, 4880, 4881, 4864, 4882, 4857, 4865, 4866, 4867, 4883, 4885, 4890, 4897, 4868, 4899, 4896, 4900, 4902, 4869, 4870, 4911, 4871, 4916, 4872, 4873, 4874, 4875, 4874, 4876, 4918, 4884, 4877, 4880, 4881, 4884, 4882, 4896, 4919, 4884, 4920, 4883, 4885, 4890, 4897, 4921, 4899, 4896, 4900, 4902, 4884, 4922, 4911, 4923, 4916, 4927, 4926, 4928, 4933, 4938, 4929, 4918, 4884, 4929, 4939, 4942, 4884, 4922, 4896, 4919, 4884, 4920, 4926, 4943, 4950, 4954, 4921, 4951, 4952, 4955, 4956, 4884, 4922, 4961, 4923, 4953, 4927, 4926, 4928, 4933, 4938, 4929, 4951, 4952, 4929, 4939, 4942, 4966, 4922, 4967, 4953, 4968, 4971, 4926, 4943, 4950, 4954, 4974, 4951, 4952, 4955, 4956, 4980, 4973, 4961, 4981, 4953, 4973, 4986, 4989, 4990, 4991, 4993, 4951, 4952, 4994, 4995, 4996, 4966, 4998, 4967, 4953, 4968, 4971, 5000, 5002, 5003, 5004, 4974, 5005, 5006, 5007, 5008, 4980, 4973, 5009, 4981, 5015, 4973, 4986, 4989, 4990, 4991, 4993, 5012, 5013, 4994, 4995, 4996, 5014, 4998, 5020, 5021, 5008, 5032, 5000, 5002, 5003, 5004, 5024, 5005, 5006, 5007, 5015, 5025, 5047, 5033, 5012, 5043, 5009, 5046, 5104, 3143, 5014, 5020, 5021, 5032, 5013, 5042, 5034, 5035, 3122, 5024, 3121, 5008, 3051, 5038, 5025, 5033, 5036, 5037, 5032, 3050, 5043, 5015, 3049, 3048, 5104, 5012, 5047, 5009, 5034, 5035, 5033, 5014, 5020, 5021, 5032, 5013, 5046, 5049, 5036, 5037, 5024, 5042, 5039, 5034, 5035, 5025, 5033, 5038, 3047, 5032, 5038, 5043, 5040, 5036, 5037, 5104, 5041, 5047, 5048, 5034, 5035, 5033, 5066, 5051, 5052, 5050, 5053, 5046, 5058, 5036, 5037, 5049, 5042, 5064, 5034, 5035, 5039, 5061, 5038, 5039, 5048, 5038, 5062, 5065, 5036, 5037, 5040, 5050, 5076, 5040, 5041, 5067, 5048, 5041, 5078, 5066, 5064, 5068, 5075, 5050, 5051, 5052, 5049, 5053, 5069, 5065, 5058, 5039, 5072, 5086, 5039, 5048, 5071, 5078, 5061, 5076, 5079, 5040, 5050, 5062, 5040, 5041, 5090, 5048, 5041, 5080, 5066, 5064, 5075, 5067, 5050, 5051, 5052, 5068, 5053, 5071, 5065, 5058, 5082, 5079, 5102, 5072, 5069, 5086, 5078, 5061, 5076, 5105, 5080, 5106, 5062, 5115, 5109, 5129, 5112, 5119, 5090, 5082, 5082, 5075, 5067, 5082, 5116, 5117, 5068, 5125, 5071, 5133, 5130, 5134, 5079, 5106, 5072, 5069, 5086, 5132, 5138, 5082, 5135, 5080, 5102, 5136, 3046, 5105, 5146, 5115, 5129, 5090, 5082, 5082, 5109, 5112, 5082, 5119, 5257, 3045, 5116, 5132, 5139, 5117, 5134, 5135, 5106, 5125, 5130, 5133, 5137, 5132, 5082, 5153, 5143, 5102, 5138, 5136, 5105, 5156, 5115, 5129, 5139, 5149, 5146, 5109, 5112, 5150, 5119, 5257, 5140, 5116, 5132, 5137, 5117, 5134, 5135, 5159, 5125, 5130, 5133, 5139, 5132, 5137, 5160, 5165, 5162, 5138, 5136, 5140, 5153, 5140, 5166, 5139, 5143, 5146, 5156, 5149, 5169, 5172, 5164, 5185, 5150, 5140, 5137, 5190, 5175, 5170, 5162, 5189, 5171, 5159, 5139, 5192, 5137, 5180, 3044, 5169, 5186, 5160, 5140, 5153, 5140, 5162, 5165, 5143, 5175, 5156, 5149, 5170, 5185, 5166, 5171, 5150, 5140, 5164, 5176, 5180, 5193, 5162, 5172, 5190, 5159, 5191, 5189, 5177, 5215, 5175, 5169, 5207, 5160, 5171, 5192, 5196, 5162, 5165, 5176, 5175, 5176, 5186, 5170, 5185, 5166, 5171, 5191, 5177, 5164, 5177, 5180, 5193, 5197, 5172, 5190, 5203, 5216, 5189, 5204, 5176, 5175, 5207, 5214, 5213, 5171, 5192, 5215, 5217, 5177, 5176, 5218, 5176, 5186, 5222, 5225, 5203, 5196, 5191, 5177, 5220, 5177, 5226, 5193, 5228, 5204, 5221, 5227, 5223, 5204, 5216, 5176, 5218, 5207, 5197, 5241, 5220, 5203, 5215, 5217, 5177, 5213, 5221, 5214, 5246, 5222, 5242, 5203, 5196, 5223, 5248, 5220, 5225, 5249, 5245, 5250, 5204, 5221, 5258, 5226, 5204, 5216, 5228, 5218, 5227, 5197, 5247, 5220, 5203, 5242, 5217, 5241, 5213, 5221, 5214, 3043, 5222, 5245, 5250, 5254, 5223, 5255, 5246, 5225, 5248, 5261, 5262, 5249, 5247, 5258, 5226, 5263, 5264, 5228, 5265, 5227, 5266, 5267, 5271, 5272, 5242, 5273, 5241, 5247, 5254, 5274, 5255, 5275, 5245, 5250, 5276, 5279, 5280, 5246, 5281, 5248, 5261, 5262, 5249, 5247, 5282, 5284, 5263, 5264, 5285, 5265, 5286, 5266, 5267, 5271, 5272, 5287, 5273, 5288, 5247, 5254, 5274, 5255, 5275, 5289, 5290, 5276, 5279, 5280, 5291, 5281, 5293, 5292, 5298, 5299, 5300, 5282, 5284, 5292, 5301, 5285, 5302, 5286, 5304, 5308, 5310, 5311, 5287, 5312, 5288, 5314, 5315, 5316, 5317, 3042, 5289, 5290, 5319, 5321, 5322, 5291, 5323, 5293, 5292, 5298, 5299, 5300, 5324, 5319, 5292, 5301, 5325, 5302, 5327, 5304, 5308, 5310, 5311, 5328, 5312, 5329, 5314, 5315, 5316, 5317, 5320, 5320, 5330, 5319, 5321, 5322, 5331, 5323, 5332, 5333, 5334, 5320, 5335, 5324, 5319, 5336, 5320, 5325, 5337, 5327, 5320, 5338, 5340, 5341, 5328, 5342, 5329, 5343, 5344, 5345, 5348, 5320, 5320, 5330, 5349, 5350, 5351, 5331, 5352, 5332, 5333, 5334, 5320, 5335, 5354, 5355, 5336, 5320, 5359, 5337, 5361, 5320, 5338, 5340, 5341, 5362, 5342, 5363, 5343, 5344, 5345, 5348, 5364, 5368, 5371, 5349, 5350, 5351, 5372, 5352, 5373, 5375, 5376, 5377, 5378, 5354, 5355, 5379, 5380, 5359, 5381, 5361, 5382, 5383, 5384, 5386, 5362, 5386, 5363, 5387, 5388, 5389, 5390, 5364, 5368, 5371, 3041, 5410, 3038, 5372, 5418, 5373, 5375, 5376, 5377, 5378, 5389, 5420, 5379, 5380, 5411, 5381, 5410, 5382, 5383, 5384, 5386, 5412, 5386, 5413, 5387, 5388, 5389, 5390, 5414, 5411, 5422, 5415, 5410, 5416, 5417, 5418, 5412, 5425, 5413, 5426, 5421, 5389, 5420, 5414, 5426, 5411, 5415, 5410, 5416, 5417, 3033, 5424, 5412, 5423, 5413, 5421, 3032, 5428, 5432, 5414, 5411, 5422, 5415, 5423, 5416, 5417, 5424, 5412, 5425, 5413, 5426, 5421, 5428, 5427, 5414, 5426, 5429, 5415, 5430, 5416, 5417, 5429, 5424, 5427, 5423, 5433, 5421, 5431, 5428, 5432, 5430, 5436, 5437, 5438, 5423, 5439, 5440, 5424, 5441, 5431, 5442, 5443, 5445, 5428, 5427, 5446, 5447, 5429, 5448, 5430, 5451, 5452, 5429, 5468, 5427, 5469, 5433, 5472, 5431, 5471, 5471, 5430, 5436, 5437, 5438, 5474, 5439, 5440, 5475, 5441, 5431, 5442, 5443, 5445, 5476, 5477, 5446, 5447, 5473, 5448, 5478, 5451, 5452, 5480, 5468, 5481, 5469, 5482, 5472, 5483, 5471, 5471, 5484, 5473, 5473, 5485, 5474, 5491, 5496, 5475, 5497, 5498, 5499, 5500, 5501, 5476, 5477, 5502, 5485, 5473, 5512, 5478, 5491, 5516, 5480, 5517, 5481, 5525, 5482, 5528, 5483, 5529, 5530, 5484, 5473, 5473, 5485, 5531, 5491, 5496, 3031, 5497, 5498, 5499, 5500, 5501, 5532, 5533, 5502, 5485, 5523, 5512, 5523, 5491, 5516, 5524, 5517, 5524, 5525, 5527, 5528, 5527, 5529, 5530, 5534, 5523, 5535, 5536, 5531, 5537, 5524, 5523, 5538, 5545, 5549, 5551, 5524, 5532, 5533, 5550, 5527, 5523, 5554, 5523, 5555, 5558, 5524, 5559, 5524, 5549, 5527, 5560, 5527, 5561, 5550, 5534, 5523, 5535, 5536, 5566, 5537, 5524, 5523, 5538, 5545, 5549, 5551, 5524, 5567, 5570, 5550, 5527, 5571, 5554, 5578, 5555, 5558, 5579, 5559, 5580, 5549, 5581, 5560, 5582, 5561, 5550, 5583, 5588, 5584, 5578, 5566, 5584, 5579, 5589, 5580, 5592, 5581, 5593, 5582, 5567, 5570, 5583, 3028, 5571, 5585, 5578, 5586, 5585, 5579, 5586, 5580, 5595, 5581, 5587, 5582, 5597, 5587, 5583, 5588, 5584, 5578, 5594, 5584, 5579, 5589, 5580, 5592, 5581, 5593, 5582, 5598, 5596, 5583, 5594, 5599, 5585, 5604, 5586, 5585, 5606, 5586, 5608, 5595, 5596, 5587, 5609, 5597, 5587, 5611, 5612, 5613, 5614, 5594, 5615, 5616, 5618, 5619, 5622, 5623, 5625, 5626, 5598, 5596, 5627, 5594, 5599, 5633, 5604, 5637, 5649, 5606, 5651, 5608, 5652, 5596, 5653, 5609, 5656, 5659, 5611, 5612, 5613, 5614, 5662, 5615, 5616, 5618, 5619, 5622, 5623, 5625, 5626, 5629, 5629, 5627, 5663, 5629, 5633, 5664, 5637, 5649, 5666, 5651, 5672, 5652, 5676, 5653, 5677, 5656, 5659, 5679, 5680, 5629, 5681, 5662, 5682, 5683, 5685, 5684, 5690, 5679, 5686, 5693, 5629, 5629, 5696, 5663, 5629, 5684, 5664, 5697, 5687, 5666, 5687, 5672, 5700, 5676, 5703, 5677, 5706, 5686, 5679, 5680, 5629, 5681, 5687, 5682, 5683, 5685, 5684, 5690, 5679, 5686, 5693, 5707, 5711, 5696, 5709, 5712, 5684, 5713, 5697, 5687, 5716, 5687, 5717, 5700, 5719, 5703, 5722, 5706, 5686, 5709, 5718, 5727, 5732, 5687, 5733, 5723, 5736, 5723, 5724, 5737, 5724, 5738, 5707, 5711, 5739, 5709, 5712, 5722, 5713, 5718, 5740, 5716, 5743, 5717, 5744, 5719, 5723, 5722, 5750, 5724, 5709, 5718, 5727, 5732, 5754, 5733, 5723, 5736, 5723, 5724, 5737, 5724, 5738, 5751, 5760, 5739, 5761, 5751, 5722, 5750, 5718, 5740, 5762, 5743, 5763, 5744, 5764, 5723, 5765, 5750, 5724, 5769, 5770, 5767, 5772, 5754, 5768, 5773, 5774, 5775, 5788, 5789, 5792, 5793, 5751, 5760, 5794, 5761, 5751, 5767, 5750, 5795, 5768, 5762, 5796, 5763, 5797, 5764, 5801, 5765, 5802, 5794, 5769, 5770, 5767, 5772, 5803, 5768, 5773, 5774, 5775, 5788, 5789, 5792, 5793, 5804, 5805, 5794, 5806, 5807, 5767, 5810, 5795, 5768, 5812, 5796, 5813, 5797, 5814, 5801, 5817, 5802, 5794, 5819, 5818, 3022, 5839, 5803, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5852, 5804, 5805, 5847, 5806, 5807, 5849, 5810, 5851, 5866, 5812, 5818, 5813, 5839, 5814, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5819, 5817, 3019, 5847, 5818, 5852, 5839, 5849, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5852, 5854, 5866, 3017, 3016, 5818, 5851, 5839, 5856, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5819, 5817, 5850, 5847, 5818, 5852, 5839, 5849, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5852, 5853, 5866, 5855, 5856, 5854, 5851, 5857, 5867, 5850, 5858, 5861, 5859, 5862, 5856, 5864, 5869, 5860, 3015, 5865, 5875, 5871, 5868, 5853, 5850, 5855, 5874, 5873, 5870, 5857, 5855, 5897, 5858, 3014, 5859, 5856, 5854, 5858, 5853, 5860, 5850, 5867, 5871, 5869, 5857, 5856, 5859, 5870, 5861, 5874, 5862, 5860, 5864, 5875, 5853, 5850, 5855, 5865, 5868, 5873, 5857, 5855, 5876, 5858, 5879, 5859, 5896, 5897, 5858, 5853, 5860, 5880, 5867, 5871, 5869, 5857, 5901, 5859, 5870, 5861, 5874, 5862, 5860, 5864, 5875, 5899, 5900, 5879, 5865, 5868, 5873, 5906, 5876, 5902, 5880, 5903, 5904, 5901, 5897, 5905, 5908, 5909, 5924, 5896, 5910, 5911, 5899, 5899, 5900, 5912, 3002, 5913, 5901, 5901, 5926, 5925, 5903, 5904, 5879, 5919, 5908, 5909, 5928, 5876, 5905, 5880, 5910, 5902, 5901, 5906, 5927, 5911, 3000, 5913, 5896, 5926, 5924, 5899, 5899, 5900, 5953, 5919, 5944, 5901, 5901, 5912, 5913, 5903, 5904, 5925, 5929, 5908, 5909, 5927, 5930, 5905, 5919, 5910, 5902, 5940, 5906, 5945, 5911, 5928, 5913, 5961, 5926, 5924, 5944, 5959, 5929, 5951, 5919, 2999, 5930, 2998, 5912, 5913, 5952, 5940, 5925, 5956, 5955, 5953, 5927, 5963, 5962, 5919, 5957, 5958, 5960, 5951, 2996, 5951, 5928, 2995, 5961, 5945, 5952, 5944, 5952, 5929, 5955, 5959, 5955, 5930, 5951, 5962, 5965, 5960, 5940, 5964, 5951, 5952, 5953, 5973, 5963, 5966, 5956, 5952, 5979, 5982, 5951, 5955, 5951, 5957, 5958, 5961, 5945, 5952, 2994, 5952, 5964, 5955, 5959, 5955, 5966, 5951, 5962, 5977, 5960, 5979, 5965, 5951, 5952, 2992, 5978, 5963, 5983, 5956, 5952, 5973, 5982, 5984, 5955, 5985, 5957, 5958, 5986, 5987, 5989, 5977, 5990, 5964, 5991, 5992, 5993, 5966, 5978, 5994, 5996, 5997, 5979, 5965, 5998, 5999, 5977, 6002, 6003, 5983, 6004, 6005, 5973, 5978, 5984, 6006, 5985, 6008, 6010, 5986, 5987, 5989, 5977, 5990, 6013, 5991, 5992, 5993, 6017, 5978, 5994, 5996, 5997, 6023, 6009, 5998, 5999, 5977, 6002, 6003, 6024, 6004, 6005, 6025, 5978, 6009, 6006, 6026, 6008, 6010, 6027, 6028, 6029, 6030, 6031, 6013, 6033, 6034, 6035, 6017, 6036, 6037, 6038, 6039, 6023, 6009, 6040, 6041, 6042, 6046, 6048, 6024, 6049, 6039, 6025, 6046, 6009, 6050, 6026, 6051, 6047, 6027, 6028, 6029, 6030, 6031, 6047, 6033, 6034, 6035, 6052, 6036, 6037, 6038, 6039, 6055, 6056, 6040, 6041, 6042, 6046, 6048, 6057, 6049, 6039, 6058, 6046, 6059, 6050, 6060, 6051, 6047, 6061, 6062, 6065, 6068, 6069, 6047, 6073, 6074, 6075, 6052, 6076, 6077, 6078, 6079, 6055, 6056, 6080, 6082, 6084, 6086, 6087, 6057, 6092, 6110, 6058, 6111, 6059, 6109, 6060, 6128, 6109, 6061, 6062, 6065, 6068, 6069, 6129, 6073, 6074, 6075, 6130, 6076, 6077, 6078, 6079, 6131, 6132, 6080, 6082, 6084, 6086, 6087, 6133, 6092, 6110, 6137, 6111, 6138, 6109, 6139, 6128, 6109, 6140, 6141, 6144, 6156, 6163, 6129, 6164, 6166, 6172, 6130, 6173, 6178, 6179, 6180, 6131, 6132, 6181, 6178, 6182, 6183, 6184, 6133, 6185, 6186, 6137, 6187, 6138, 2991, 6139, 2989, 2985, 6140, 6141, 6144, 6156, 6163, 6195, 6164, 6166, 6172, 6196, 6173, 6178, 6179, 6180, 2984, 6197, 6181, 6178, 6182, 6183, 6184, 6198, 6185, 6186, 6192, 6187, 6192, 6193, 6194, 6193, 6194, 6199, 6200, 6201, 6202, 6208, 6195, 6209, 6210, 6211, 6196, 6231, 2979, 2975, 2960, 6192, 6197, 2930, 6193, 6194, 6239, 2929, 6198, 6210, 6241, 6192, 6231, 6192, 6193, 6194, 6193, 6194, 6199, 6200, 6201, 6202, 6208, 6232, 6209, 6210, 6211, 6233, 6231, 6234, 6235, 6236, 6192, 6237, 6238, 6193, 6194, 6239, 6232, 6243, 6210, 6241, 6233, 6231, 6234, 6235, 6236, 6244, 6237, 6238, 6246, 6242, 6245, 2928, 6232, 6253, 6249, 6244, 6233, 2901, 6234, 6235, 6236, 6247, 6237, 6238, 6242, 6245, 6247, 6232, 6243, 6249, 2900, 6233, 6248, 6234, 6235, 6236, 6244, 6237, 6238, 6246, 6242, 6245, 6248, 6250, 6253, 6249, 6244, 6251, 6250, 6252, 6254, 6257, 6247, 6258, 6259, 6242, 6245, 6247, 6260, 6251, 6249, 6252, 6261, 6248, 6262, 6263, 6264, 6266, 6267, 6268, 6269, 6272, 6273, 6248, 6250, 6289, 6290, 6293, 6251, 6250, 6252, 6254, 6257, 6295, 6258, 6259, 6292, 6292, 6296, 6260, 6251, 6297, 6252, 6261, 6294, 6262, 6263, 6264, 6266, 6267, 6268, 6269, 6272, 6273, 6298, 6299, 6289, 6290, 6293, 6294, 6294, 6301, 6302, 6303, 6295, 6304, 6305, 6292, 6292, 6296, 6306, 6317, 6297, 6312, 6318, 6294, 6319, 6320, 6321, 6322, 6323, 6333, 6337, 6306, 6338, 6298, 6299, 2899, 6312, 2898, 6294, 6294, 6301, 6302, 6303, 6346, 6304, 6305, 6349, 6350, 2897, 6306, 6317, 6351, 6312, 6318, 2892, 6319, 6320, 6321, 6322, 6323, 6333, 6337, 6306, 6338, 6344, 6352, 6344, 6312, 6345, 6348, 6345, 6348, 6353, 6354, 6346, 6355, 6356, 6349, 6350, 6344, 6357, 6358, 6351, 6345, 6359, 6344, 6366, 6372, 6375, 6345, 6348, 6377, 6378, 6370, 6371, 6344, 6352, 6344, 6380, 6345, 6348, 6345, 6348, 6353, 6354, 6382, 6355, 6356, 6370, 6371, 6344, 6357, 6358, 6383, 6345, 6359, 6344, 6366, 6372, 6375, 6345, 6348, 6377, 6378, 6370, 6371, 6388, 6406, 6405, 6380, 6407, 6424, 6425, 6426, 6427, 6433, 6382, 6435, 6434, 6370, 6371, 6440, 6428, 6429, 6383, 6452, 6436, 6406, 6437, 6462, 6459, 6460, 6468, 6476, 2891, 6505, 2889, 6407, 6435, 6425, 6434, 6427, 6405, 2888, 6388, 6405, 6424, 6433, 6426, 6428, 6429, 6436, 6459, 6440, 6437, 6468, 6460, 6469, 6406, 6474, 6480, 6477, 2887, 2886, 6462, 6475, 6505, 6452, 6407, 6435, 6425, 6434, 6427, 6405, 6476, 6388, 6405, 6424, 6433, 6426, 6428, 6429, 6436, 6459, 6440, 6437, 6468, 6460, 6475, 6478, 6479, 6474, 6482, 6483, 6469, 6462, 6477, 6474, 6452, 6481, 6491, 6480, 6492, 2884, 2880, 6476, 6493, 6495, 2879, 6488, 6497, 6478, 6479, 6489, 6482, 6483, 6490, 6506, 6498, 6475, 6504, 6510, 6474, 2877, 2873, 6469, 2872, 6477, 6474, 6488, 6494, 6488, 6480, 6489, 6481, 6489, 6490, 6491, 6490, 6492, 6493, 6495, 6478, 6479, 6496, 6482, 6483, 6497, 6506, 6494, 6488, 6512, 6510, 6513, 6489, 6498, 6515, 6490, 6504, 6516, 6488, 6518, 6488, 6496, 6489, 6481, 6489, 6490, 6491, 6490, 6492, 6493, 6495, 6519, 6521, 6524, 6527, 2871, 6497, 6528, 6494, 6488, 6512, 6529, 6513, 6489, 6498, 6515, 6490, 6504, 6516, 6523, 6518, 6531, 6496, 6532, 6534, 6523, 6535, 6536, 6537, 6538, 6539, 6540, 6519, 6521, 6524, 6527, 6523, 6541, 6528, 6542, 6543, 6544, 6529, 6545, 6546, 6547, 6548, 6549, 6550, 6551, 6523, 6552, 6531, 6553, 6532, 6534, 6523, 6535, 6536, 6537, 6538, 6539, 6540, 6554, 6553, 6556, 6557, 6523, 6541, 6558, 6542, 6543, 6544, 6561, 6545, 6546, 6547, 6548, 6549, 6550, 6551, 6555, 6552, 6563, 6553, 6564, 6565, 6568, 6570, 6571, 6572, 6577, 6555, 6580, 6554, 6553, 6556, 6557, 6583, 6584, 6558, 6585, 6586, 6590, 6561, 6597, 6600, 6603, 6606, 6609, 6587, 6588, 6555, 6614, 6563, 6618, 6564, 6565, 6568, 6570, 6571, 6572, 6577, 6555, 6580, 6587, 6588, 6631, 6632, 6583, 6584, 6633, 6585, 6586, 6590, 6634, 6597, 6600, 6603, 6606, 6609, 6587, 6588, 6629, 6614, 6629, 6618, 6630, 6635, 6630, 6635, 6636, 6637, 6636, 6641, 6659, 6587, 6588, 6631, 6632, 6658, 6660, 6633, 6658, 6629, 6677, 6634, 6678, 6630, 6635, 6679, 6680, 6636, 6681, 6629, 6682, 6629, 6686, 6630, 6635, 6630, 6635, 6636, 6637, 6636, 6641, 6659, 6687, 6688, 6689, 6690, 6658, 6660, 6693, 6658, 6629, 6677, 6705, 6678, 6630, 6635, 6679, 6680, 6636, 6681, 6712, 6682, 6713, 6686, 6715, 6721, 6722, 6728, 6729, 6730, 6731, 6727, 6732, 6687, 6688, 6689, 6690, 6727, 6733, 6693, 6734, 6735, 6736, 6705, 6741, 6742, 6741, 6742, 2869, 6744, 2868, 6712, 6745, 6713, 6746, 6715, 6721, 6722, 6728, 6729, 6730, 6731, 6727, 6732, 6747, 6741, 6742, 6748, 6727, 6733, 6749, 6734, 6735, 6736, 6750, 6741, 6742, 6741, 6742, 6743, 6744, 6743, 6751, 6745, 6757, 6746, 6759, 6762, 6779, 6765, 6776, 6785, 6766, 6793, 6788, 6747, 6741, 6742, 6748, 6767, 6743, 6749, 6769, 6782, 6797, 6750, 6810, 6818, 2867, 6811, 6743, 6779, 6743, 6751, 6766, 6757, 6765, 6759, 6762, 2864, 6776, 6767, 6819, 2859, 6782, 6812, 6769, 6813, 6793, 6766, 6785, 6743, 6788, 2858, 6808, 2855, 6767, 6821, 6818, 6797, 2852, 6822, 6779, 6810, 2847, 6766, 6811, 6765, 6826, 6809, 6816, 6776, 6767, 6819, 6808, 6782, 6808, 6769, 6814, 6793, 6766, 6785, 6812, 6788, 6813, 6828, 6815, 6767, 6821, 6809, 6797, 6809, 6822, 6816, 6810, 6808, 2835, 6811, 6814, 6826, 6814, 6827, 6829, 6830, 6831, 6808, 6815, 6808, 6815, 6832, 6809, 6833, 6827, 6812, 6835, 6813, 6828, 6836, 6837, 6814, 6809, 6838, 6809, 6839, 6816, 6844, 6808, 6815, 6845, 6814, 6847, 6814, 6827, 6829, 6830, 6831, 6848, 6815, 6849, 6815, 6832, 6809, 6833, 6827, 6850, 6835, 6851, 6852, 6836, 6837, 6814, 6854, 6838, 6856, 6839, 6857, 6844, 6858, 6815, 6845, 6859, 6847, 6860, 6861, 6862, 6865, 6866, 6848, 6867, 6849, 6870, 6865, 6871, 6877, 6878, 6850, 6879, 6851, 6852, 6885, 6878, 6887, 6854, 6889, 6856, 6865, 6857, 6901, 6858, 6901, 2831, 6859, 2826, 6860, 6861, 6862, 6865, 6866, 6902, 6867, 6902, 6870, 6865, 6871, 6877, 6878, 6911, 6879, 6901, 6912, 6885, 6878, 6887, 6903, 6889, 6903, 6865, 6913, 6901, 6902, 6901, 6904, 6916, 6904, 6923, 6926, 6914, 6929, 6932, 6902, 6935, 6902, 6913, 6940, 6903, 6944, 6957, 6911, 6958, 6901, 6912, 6914, 6904, 6959, 6903, 6960, 6903, 6955, 6913, 6955, 6902, 6974, 6904, 6916, 6904, 6923, 6926, 6914, 6929, 6932, 6956, 6935, 6956, 6913, 6940, 6903, 6944, 6957, 6955, 6958, 6963, 6964, 6914, 6904, 6959, 6961, 6960, 6961, 6955, 6976, 6955, 6956, 6962, 6968, 6962, 6978, 7002, 6990, 7000, 2820, 7005, 6956, 7006, 6956, 6974, 7007, 6961, 2812, 6991, 6955, 2808, 6963, 6964, 6962, 6978, 6976, 6961, 6990, 6961, 6990, 7000, 6992, 6956, 6962, 7008, 6962, 6968, 7002, 6991, 7009, 6991, 7005, 6993, 7006, 7013, 6974, 7007, 6961, 6990, 7018, 7020, 6992, 2806, 6992, 6962, 6978, 6976, 7022, 6990, 6991, 6990, 7000, 6993, 7023, 6993, 7008, 7024, 6968, 7025, 6991, 7009, 6991, 6992, 7027, 7028, 7013, 7029, 7030, 7031, 6990, 7018, 7020, 6992, 6993, 6992, 7032, 7033, 7034, 7022, 7035, 6991, 7036, 7037, 6993, 7023, 6993, 7045, 7024, 7046, 7025, 7035, 7048, 7044, 6992, 7027, 7028, 7043, 7029, 7030, 7031, 7063, 7069, 7043, 7044, 6993, 7071, 7032, 7033, 7034, 7073, 7035, 7095, 7036, 7037, 7097, 2804, 7043, 7045, 7085, 7046, 7085, 7035, 7048, 7044, 7086, 7099, 7086, 7043, 7116, 7117, 7118, 7063, 7069, 7043, 7044, 7087, 7071, 7087, 7119, 7085, 7073, 7088, 7095, 7088, 7119, 7086, 7097, 7043, 7122, 7085, 7099, 7085, 7123, 7124, 7125, 7086, 7087, 7086, 7127, 7116, 7117, 7118, 7088, 7130, 7133, 7134, 7087, 7135, 7087, 7119, 7085, 7136, 7088, 7137, 7088, 7119, 7086, 7097, 7141, 7122, 7140, 7099, 7142, 7123, 7124, 7125, 7143, 7087, 7144, 7127, 7145, 7140, 7148, 7088, 7130, 7133, 7134, 7150, 7135, 7169, 7171, 7170, 7136, 7172, 7137, 7173, 7174, 7175, 7180, 7141, 7181, 7140, 7170, 7142, 7182, 7183, 7184, 7143, 7185, 7144, 7187, 7145, 7140, 7148, 7188, 7189, 7193, 7194, 7150, 7195, 7169, 7171, 7170, 7197, 7172, 7198, 7173, 7174, 7175, 7180, 7202, 7181, 7203, 7170, 7204, 7182, 7183, 7184, 7205, 7185, 7208, 7187, 7209, 7210, 7211, 7188, 7189, 7193, 7194, 7212, 7195, 7217, 7221, 7222, 7197, 7225, 7198, 2799, 2798, 2786, 2783, 7202, 2778, 7203, 2773, 7204, 2772, 2758, 2755, 7205, 2754, 7208, 2753, 7209, 7210, 7211, 2752, 2746, 2738, 2519, 7212, 2460, 7217, 7221, 7222, 2359, 7225, 7228, 7228, 7228, 7228, 7228, 7228, 7228, 7228, 7228, 7228, 7229, 7229, 7229, 7229, 7229, 7229, 7229, 7229, 7229, 7229, 7230, 7230, 7230, 7230, 7230, 7230, 7230, 7230, 7230, 7230, 7231, 7231, 7231, 7231, 7231, 7231, 7231, 7231, 7231, 7231, 7232, 7232, 7232, 7232, 7232, 7232, 7232, 7232, 7232, 7232, 7233, 7233, 7233, 7233, 7233, 7233, 7233, 7233, 7233, 7233, 7234, 7234, 7234, 7234, 7234, 7234, 7234, 7234, 7234, 7234, 7235, 7235, 7235, 7235, 7235, 7235, 7235, 7235, 7235, 7235, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7236, 7237, 7237, 7237, 7237, 7237, 7237, 7237, 7237, 7237, 7237, 7238, 7238, 7238, 7238, 7238, 7238, 7238, 7238, 7238, 7238, 7239, 7239, 7239, 7239, 7239, 7239, 7239, 7239, 7239, 7239, 7240, 7240, 7240, 7240, 7240, 7240, 7240, 7240, 7240, 7240, 7241, 7241, 7241, 7241, 7241, 7241, 7241, 7241, 7241, 7241, 7242, 7242, 7242, 7242, 7242, 7242, 7242, 7242, 7242, 7242, 7243, 7243, 7243, 7243, 7243, 7243, 7243, 7243, 7243, 7243, 7244, 7244, 7244, 7244, 7244, 7244, 7244, 7244, 7244, 7244, 7245, 7245, 7245, 7245, 7245, 7245, 7245, 7245, 7245, 7245, 7246, 7246, 7246, 7246, 7246, 7246, 7246, 7246, 7246, 7246, 7247, 7247, 7247, 7247, 7247, 7247, 7247, 7247, 7247, 7247, 7248, 7248, 7248, 7248, 7248, 7248, 7248, 7248, 7248, 7248, 7249, 7249, 7249, 7249, 7249, 7249, 7249, 7249, 7249, 7249, 7250, 7250, 7250, 7250, 7250, 7250, 7250, 7250, 7250, 7250, 7251, 7251, 7251, 7251, 7251, 7251, 7251, 7251, 7251, 7251, 7252, 7252, 7252, 7252, 7252, 7252, 7252, 7252, 7252, 7252, 7253, 7253, 7253, 7253, 7253, 7253, 7253, 7253, 7253, 7253, 7254, 7254, 2358, 7254, 7254, 7254, 7254, 7254, 7254, 7254, 7255, 2351, 7255, 7256, 7256, 2303, 7256, 7256, 7256, 7256, 7256, 7256, 7256, 7257, 2248, 7257, 7257, 7257, 7258, 2229, 2204, 2203, 7258, 7258, 7258, 7259, 7259, 2131, 7259, 7259, 7259, 7259, 7259, 7259, 7259, 7260, 7260, 1997, 7260, 7260, 7260, 7260, 7260, 7260, 7260, 7261, 7261, 1889, 7261, 7261, 7261, 7261, 7261, 7261, 7261, 7262, 7262, 1887, 7262, 7262, 7262, 7262, 7262, 7262, 7262, 7263, 7263, 7263, 7264, 1881, 7264, 7264, 7264, 7265, 7265, 1878, 7265, 7265, 7265, 7265, 7265, 7265, 7265, 7266, 7266, 1865, 7266, 7266, 7266, 7266, 7266, 7266, 7266, 7267, 7267, 1864, 7267, 7267, 7267, 7267, 7267, 7267, 7267, 7268, 7268, 7268, 7269, 7269, 7269, 7270, 1863, 1861, 7270, 7270, 7270, 7270, 7270, 7270, 7270, 7271, 7271, 1860, 7271, 7271, 7271, 7271, 7271, 7271, 7271, 7272, 7272, 1859, 7272, 7272, 7272, 7272, 7272, 7272, 7272, 7273, 1858, 7273, 7273, 7274, 1857, 7274, 7274, 7275, 7275, 1856, 7275, 7275, 7275, 7276, 7276, 1855, 7276, 7276, 7276, 7276, 7276, 7276, 7276, 7277, 1854, 7277, 7278, 1840, 7278, 7278, 7278, 7279, 1839, 7279, 1838, 7279, 7280, 7280, 1835, 7280, 7280, 7280, 7280, 7280, 7280, 7280, 7281, 1834, 7281, 7281, 7281, 7282, 1833, 7282, 7282, 7282, 7283, 7283, 1823, 7283, 7283, 7283, 7283, 7283, 7283, 7283, 7284, 7284, 1821, 7284, 7284, 7284, 7284, 7284, 7284, 7284, 7285, 1808, 7285, 7286, 1789, 7286, 7286, 7286, 7287, 1788, 7287, 7287, 7287, 7288, 7288, 1787, 7288, 7288, 7288, 7288, 7288, 7288, 7288, 7289, 7289, 1781, 7289, 7289, 7289, 7289, 7289, 7289, 7289, 7290, 7290, 1780, 7290, 7290, 7290, 7290, 7290, 7290, 7290, 7291, 7291, 1779, 7291, 7291, 7291, 7291, 7291, 7291, 7291, 7292, 7292, 1778, 7292, 7292, 7292, 7292, 7292, 7292, 7292, 7293, 7293, 1777, 7293, 7293, 7293, 7293, 7293, 7293, 7293, 7294, 1776, 7294, 7294, 7294, 7295, 1775, 7295, 7295, 7295, 7296, 7296, 1774, 7296, 7296, 7296, 7296, 7296, 7296, 7296, 7297, 7297, 1773, 7297, 7297, 7297, 7297, 7297, 7297, 7297, 7298, 7298, 1765, 7298, 7298, 7298, 7298, 7298, 7298, 7298, 7299, 7299, 1764, 7299, 7299, 7299, 7299, 7299, 7299, 7299, 7300, 7300, 1757, 7300, 7300, 7300, 7300, 7300, 7300, 7300, 7301, 7301, 1755, 7301, 7301, 7301, 7301, 7301, 7301, 7301, 7302, 7302, 1753, 7302, 7302, 7302, 7302, 7302, 7302, 7302, 7303, 7303, 1751, 7303, 7303, 7303, 7303, 7303, 7303, 7303, 7304, 7304, 1747, 7304, 7304, 7304, 7304, 7304, 7304, 7304, 7305, 7305, 1744, 7305, 7305, 7305, 7305, 7305, 7305, 7305, 7306, 7306, 1743, 7306, 7306, 7306, 7306, 7306, 7306, 7306, 7307, 7307, 1742, 7307, 7307, 7307, 7307, 7307, 7307, 7307, 7308, 1741, 7308, 7308, 7308, 7309, 1740, 7309, 7309, 7309, 7310, 1739, 1736, 7310, 7310, 7310, 7310, 7310, 7310, 7310, 7311, 7311, 1735, 7311, 7311, 7311, 7311, 7311, 7311, 7311, 7312, 7312, 1732, 7312, 7312, 7312, 7312, 7312, 7312, 7312, 7313, 7313, 1731, 7313, 7313, 7313, 7313, 7313, 7313, 7313, 7314, 7314, 1730, 7314, 7314, 7314, 7314, 7314, 7314, 7314, 7315, 1727, 7315, 7315, 7316, 1726, 7316, 7316, 7317, 1719, 7317, 7317, 7317, 7318, 7318, 7318, 7319, 7319, 1714, 7319, 7319, 7319, 7320, 1660, 7320, 7321, 1659, 7321, 7321, 7321, 7322, 1651, 7322, 1650, 7322, 7323, 7323, 1649, 7323, 7323, 7323, 7323, 7323, 7323, 7323, 7324, 1648, 7324, 7324, 7324, 7325, 7325, 1647, 7325, 7325, 7325, 7325, 7325, 7325, 7325, 7326, 1645, 7326, 7327, 7327, 7327, 7328, 1643, 7328, 7328, 7328, 7329, 1642, 7329, 7329, 7329, 7330, 7330, 1641, 7330, 7330, 7330, 7330, 7330, 7330, 7330, 7331, 7331, 1640, 7331, 7331, 7331, 7331, 7331, 7331, 7331, 7332, 7332, 1639, 7332, 7332, 7332, 7332, 7332, 7332, 7332, 7333, 1638, 7333, 7333, 7333, 7334, 7334, 1637, 7334, 7334, 7334, 7334, 7334, 7334, 7334, 7335, 7335, 1636, 7335, 7335, 7335, 7335, 7335, 7335, 7335, 7336, 7336, 1632, 7336, 7336, 7336, 7336, 7336, 7336, 7336, 7337, 7337, 1631, 7337, 7337, 7337, 7337, 7337, 7337, 7337, 7338, 7338, 1630, 7338, 7338, 7338, 7338, 7338, 7338, 7338, 7339, 7339, 1626, 7339, 7339, 7339, 7339, 7339, 7339, 7339, 7340, 7340, 1625, 7340, 7340, 7340, 7340, 7340, 7340, 7340, 7341, 7341, 1624, 7341, 7341, 7341, 7341, 7341, 7341, 7341, 7342, 1623, 7342, 7342, 7342, 7343, 1622, 7343, 7343, 7343, 7344, 7344, 1621, 7344, 7344, 7344, 7344, 7344, 7344, 7344, 7345, 7345, 1620, 7345, 7345, 7345, 7345, 7345, 7345, 7345, 7346, 1619, 7346, 7346, 7346, 7347, 7347, 1613, 7347, 7347, 7347, 7348, 7348, 1611, 7348, 7348, 7348, 7349, 1609, 7349, 7349, 7349, 7350, 1608, 7350, 7350, 7350, 7351, 1605, 7351, 7352, 7352, 7352, 7353, 1604, 7353, 7353, 7353, 7354, 1600, 7354, 7354, 7354, 7355, 7355, 1599, 7355, 7355, 7355, 7356, 7356, 7356, 7357, 1598, 7357, 7357, 7357, 7358, 1596, 7358, 7358, 7358, 7359, 1595, 7359, 7359, 7359, 7360, 1585, 7360, 7360, 7360, 7361, 7361, 1583, 7361, 7361, 7361, 7362, 1582, 7362, 7362, 7362, 7363, 7363, 7363, 7364, 7364, 7364, 7365, 7365, 7365, 7366, 1581, 7366, 7366, 7366, 7367, 1580, 7367, 7367, 7367, 7368, 7368, 1579, 7368, 7368, 7368, 7369, 7369, 7369, 7370, 7370, 1575, 7370, 7370, 7370, 7371, 1574, 7371, 7371, 7371, 1564, 1563, 1559, 1558, 1553, 1552, 1543, 1542, 1541, 1509, 1387, 1344, 1319, 1318, 1314, 1313, 1144, 1085, 914, 910, 909, 861, 851, 796, 795, 794, 792, 787, 778, 737, 735, 732, 718, 714, 712, 711, 709, 705, 701, 691, 686, 685, 684, 683, 682, 681, 672, 667, 666, 663, 658, 657, 656, 651, 650, 640, 633, 629, 628, 624, 623, 616, 615, 564, 562, 560, 439, 355, 354, 351, 331, 330, 327, 312, 294, 290, 287, 282, 280, 276, 257, 253, 250, 247, 244, 240, 237, 233, 230, 227, 217, 214, 197, 190, 181, 178, 175, 172, 148, 147, 145, 113, 107, 106, 104, 100, 99, 95, 94, 93, 91, 89, 66, 65, 64, 63, 22, 21, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227, 7227 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "hla.flx" #line 2 "hla.flx" /* ** Allow for a recursive version of Bison parser. */ #undef YY_DECL #define YY_DECL int yylex(YYSTYPE *yylval,YYLTYPE *yylloc) #define YY_NO_UNISTD_H // For some reason, freeBSD chokes on "getc", so the following // redefines the FLEX YY_INPUT macro to use fgetc, instead. #ifdef freeBSD_c #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER->yy_is_interactive ) \ { \ int c = '*', n; \ for ( n = 0; n < max_size && \ (c = fgetc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); #endif /* ** "Magic" token values in use: ** ** 255/FF - Terminates a macro expansion. ** ** 253/FD - This token is returned to grab a string expression for @text ** 252/FC - This token instructs bison to process macro parameters. ** 251/FB - Recursive call to process "?" operator. ** 250/FA - Recursive call to process expressions. ** 249/F9 - unused (used to be used for fetching lines for #while expansion). ** 248/F8 - return a #keyword token on the next call. ** 247/F7 - return a #terminator token on the next call. ** 246/F6 - return an #endmacro token on the next call. ** 245/F5 - recursive call to process an HLA identifier (usually an object). ** 244/F4 - recursive call to process an HLA class identifier + dot name. ** 243/F3 - Marks the end of an _Initialize_ or _Finalize_ string. ** 242/F2 - Process a list of items for the #print token. ** 241/F1 - Process #text( id ) .. #endtext block. ** 240/F0 - Used when processing the @memory function. ** 239/EF - Also used when processing the @memory function. ** 238/EE - Used to handle #CODE (no longer used!) ** 237/ED - Used to handle #STATIC (no longer used!) ** 236/EC - Used to handle #READONLY (no longer used!) ** 235/EB - Used to handle #STORAGE (no longer used!) ** 234/EA - Used to handle #CONST (no longer used!) ** 233/E9 - This token leads off a #for statement ** 232/E8 - Fetch a new line of text from the #FOR list. ** 231/E7 - Handle #Macro declaration. ** 230/E6 - Also for handling #macro declaration. ** 229/E5 - Handle #RegEx declaration. ** 228/E4 - Also for handling #RegEx declaration. ** 227/E3 - Return a #endregex token on the next call. ** 226/E2 - Used to inform the parser that we have a regex to compile. ** 225/E1 - Used to inform the lexer that it needs to record a #return expr. ** 240/E0 - Process #string( id ) .. #endstring block. ** 239/DF - Process #match( id ) .. #endmatch block. */ #include "debug.h" /* Must be first! */ /* ** Note that this file must include "common.h" before ** "hla.h". hla.h is generated automatically by bison, ** and it uses symbols defined in "common.h", so the ** following sequence must be maintained manually. */ #include "common.h" #ifdef DEBUGFLX #define PathLogging /*#define TestStmtCoverage*/ #define LogFuncCalls #endif #define _nameDefault "HLAFlex" #include "ratc.h" #include "symbol.h" #include "asm.h" #include "hlaparse.h" #include "output.h" #ifndef YYLTYPE typedef struct yyltype { int timestamp; int first_line; int first_column; int last_line; int last_column; char *text; } yyltype; #define YYLTYPE yyltype #endif #define YYACCEPT return(0) #define YYABORT return(1) #define YYERROR goto yyerrlab extern union YYSTYPE *yylval; int LineCnt = 1; int TotalLines = 1; int SkipLookup = 0; static int StartParm; static char numstr[256]; /* ** The following array determines whether a reserved word is ** treated as a reserved word or an ID: */ static int doID( YYSTYPE *yylval ); unsigned char ReservedWords[ 2048 ]; #define testRW(rw) \ do{ \ int Token; \ _returnif( ReservedWords[ rw ] ) rw; \ Token = doID( yylval ); \ _returnif( Token >= 0 ) Token; \ }while(0) /* ** Variables used to process input buffers (macros, text objects, ** include files, pushback strings, etc.) */ #define maxBuffers 8192 int BufSP = -1; struct SourceBuf BufferStack[ maxBuffers ]; void deleteSourceBuf( void ); /* ** Variables used to process include files and pushback strings. */ #define maxIncStack 4096 #define maxInputLineLen 4096 static int IncFilesCnt = 0; static char *IncFilesList[ maxIncStack ]; /* ** Variables used to record macro objects. */ typedef struct { char *text; int len; } MacroHead_t; MacroHead_t *macroHead; int MacroIndex = 0; int NestedMacroCnt; char CurLine[ maxInputLineLen+104 ]; MacroHead_t *regexHead; int RegexIndex = 0; /* ** Variables used to play back macros: */ int MacroSP = -1; struct MacroStkType MacroStack[ maxNestedMacros ]; int W4TermSP = -1; struct SymNode *Wait4Term[ maxNestedMacros ]; struct SymNode *ActiveMacros = NULL; ParmLine_t *ParmLine; static struct SymNode *yySymbol; static int MacroCntr = 0; static void EndMacroExpansion( void ); #define appendChParmLine(ch) \ do{ \ _here; \ assert( ParmLine != NULL ); \ if( ParmLine->Line == NULL ){ \ ParmLine->Line = malloc2( 256 ); \ ParmLine->LineSize = 256; \ ParmLine->Index = 0; \ }else if( (ParmLine->Index + 1) >= ParmLine->LineSize ){ \ ParmLine->LineSize *= 2; \ ParmLine->Line = \ realloc2( ParmLine->Line, ParmLine->LineSize ); \ } \ ParmLine->Line[ ParmLine->Index++ ] = (ch); \ }while(0) #define appendStrParmLine(s,l) \ do{ \ _here; \ assert( ParmLine != NULL ); \ if( ParmLine->Line == NULL ){ \ ParmLine->Line = malloc2( 256 ); \ ParmLine->LineSize = 256; \ ParmLine->Index = 0; \ }else if( (ParmLine->Index + (l)) >= ParmLine->LineSize ){ \ ParmLine->LineSize *= 2; \ ParmLine->Line = \ realloc2( ParmLine->Line, ParmLine->LineSize ); \ } \ memcpy \ ( \ &ParmLine->Line[ ParmLine->Index ], \ s, \ l \ ); \ ParmLine->Index += (l); \ }while(0) /* ** Variables used to process #WHILE loops. */ int WhileSP = -1; static int WhileIndex = 0; static int WhileLen = 0; static int WhileLineCnt = 0; static int NestedWhileCnt = 0; static char *WhileHead; static struct WhlListType WhileStack[ maxNestedMacros ]; static void AppendWhileLine( void ); /* ** Variables used to process #FOR loops. */ int ForSP = -1; static int ForIndex = 0; static int ForLen = 0; static int NestedForCnt = 0; static char *ForHead; static struct ForListType ForStack[ maxNestedMacros ]; /* ** Variables used to process #text..#endtext blocks. */ struct TextList { struct TextList *next; char *line; }; static char TextCurLine[ maxInputLineLen ]; static int TextCurIndex; static struct TextList *TextHead; static struct TextList *TextTail; /* ** Variable used to process #string..#endstring blocks */ static char *stringBody; static int stringBodySize; static int stringBodyIndex; /* ** Variable used to process #match..#endmatch blocks */ static char *matchBody; static int matchBodySize; static int matchBodyIndex; /* ** Variables used to process conditional assembly statements */ static int ifcnt; static int NestedIfCnt; static int IfState; /* ** The following are needed to process namespace and class objects; */ struct SymNode *LastMacroObject = NULL; static struct SymNode *CurSymTbl = NULL; static struct SymNode *CurObject = NULL; struct SymNode *LastRefdObject = NULL; static char ClassID[ maxInputLineLen ]; /* ** The parser returns ConstExpr values in d1ceReturnVal, ** it returns "dotName" values in d1dnReturnVal. */ extern union YYSTYPE d1ceReturnVal; extern union YYSTYPE d1dnReturnVal; extern union YYSTYPE forReturnVal; /* ** Prototypes for local functions. */ static void strip_( void ); static char* MakeStr( void ); static char* MakeUStr( void ); static void SetArray( YYSTYPE *, struct SymNode * ); static void AppendMacroLine( void ); static void AppendRegexLine( void ); static void AppendForLine( void ); static void CleanUpWhile( void ); static void CleanUpFor( void ); static char* trim( char *, int ); static int ParmTooLong( union YYSTYPE *); static void RsvdWordErr( char *RW ); static int ProcessID ( char *ID, int symLexLevel, struct SymNode *symbol, YYSTYPE *yylval ); static int ProcessMacro( struct SymNode *symbol ); static void prefixName( char *filename, char *result ); /* ** Here are the (negative) constants that ProcessID returns to indicate ** the need for further processing. If ProcessID returns a positive ** value, the return result is a token value that needs no further ** processing by the lexer. */ #define PIDtext -1 #define PIDMacro -2 #define PIDNameSpace -3 #define PIDClassName -4 #define PIDIgnore -5 /* ** The following function adds include file names to ** the IncFilesList array. */ int AddIncFilesList( char *filename ); //cmnt0 cmnt1 cmnt2 cmnt3 cmnt4 cmnt5 cmnt6 cmnt7 cmnt8 cmnt9 //RMcmnt0 RMcmnt1 RMcmnt2 RMcmnt3 RMcmnt4 RMcmnt5 RMcmnt6 //%x RMcmnt7 RMcmnt8 RMcmnt9 //MPcmnt0 MPcmnt1 MPcmnt2 MPcmnt3 MPcmnt4 MPcmnt5 MPcmnt6 //%x MPcmnt7 MPcmnt8 MPcmnt9 /* ** create definitions for the reserved words so we can put ** them all in one spot (easier to extract them for documentation ** purposes this way). */ #line 7155 "lex.yy.c" #define INITIAL 0 #define comment 1 #define RMcomment 2 #define RRcomment 3 #define RecordMacro 4 #define RecordRegex 5 #define MacroParm 6 #define MPcomment 7 #define GetAllOfParm 8 #define GetAllOfParm2 9 #define EndMacroParm 10 #define GAoPcomment 11 #define SkipToNext 12 #define SkippingELSEIFs 13 #define SkipToEndif 14 #define SIcomment 15 #define SEcomment 16 #define RecordWhile 17 #define RWcomment 18 #define RWcmnt0 19 #define RWcmnt1 20 #define RWcmnt2 21 #define RWcmnt3 22 #define RWcmnt4 23 #define RWcmnt5 24 #define RWcmnt6 25 #define RWcmnt7 26 #define RWcmnt8 27 #define RWcmnt9 28 #define InASM 29 #define recASM 30 #define NameSpace 31 #define ThisID 32 #define InText 33 #define InString 34 #define InMatch 35 #define RecordWhileExpr 36 #define RecordWhileExpr2 37 #define For_Record 38 #define RFcomment 39 #define poundID 40 #define poundRW 41 #define endIDRW 42 #define UnprocessedID 43 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (void ); int yyget_debug (void ); void yyset_debug (int debug_flag ); YY_EXTRA_TYPE yyget_extra (void ); void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); void yyset_in (FILE * in_str ); FILE *yyget_out (void ); void yyset_out (FILE * out_str ); int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); void yyset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (void ); #else extern int yywrap (void ); #endif #endif static void yyunput (int c,char *buf_ptr ); #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; #line 1566 "hla.flx" #line 7383 "lex.yy.c" if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 7228 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 17326 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 1568 "hla.flx" {} YY_BREAK case 2: YY_RULE_SETUP #line 1571 "hla.flx" { BEGIN comment; } YY_BREAK case 3: YY_RULE_SETUP #line 1572 "hla.flx" {} YY_BREAK case 4: /* rule 4 can match eol */ YY_RULE_SETUP #line 1573 "hla.flx" { ++LineCnt; ++TotalLines; } YY_BREAK case 5: YY_RULE_SETUP #line 1574 "hla.flx" { BEGIN 0; } YY_BREAK /* ** Handle the #ID and #RW items here */ case 6: /* rule 6 can match eol */ YY_RULE_SETUP #line 1582 "hla.flx" { BEGIN poundID; } YY_BREAK case 7: YY_RULE_SETUP #line 1584 "hla.flx" { int Token; char theRW[128]; _here; BEGIN 0; theRW[0] = '~'; strcpy( &theRW[1], yytext ); PushBackStr( theRW ); Token = yylex(yylval,yylloc ); _if ( Token >= 256 && Token <= 2047 ) ReservedWords[ Token ] = 0; _else yyerror( "#ID requires a reserved word" ); _endif BEGIN endIDRW; } YY_BREAK case 8: YY_RULE_SETUP #line 1610 "hla.flx" { yyerror( "Syntax error in #ID directive" ); BEGIN 0; } YY_BREAK case 9: /* rule 9 can match eol */ YY_RULE_SETUP #line 1615 "hla.flx" { BEGIN 0; } YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP #line 1618 "hla.flx" { BEGIN poundRW; } YY_BREAK case 11: YY_RULE_SETUP #line 1620 "hla.flx" { int Token; char theRW[128]; _here; BEGIN 0; theRW[0] = '~'; strcpy( &theRW[1], yytext ); PushBackStr( theRW ); Token = yylex(yylval,yylloc ); _if ( Token >= 256 && Token <= 2047 ) ReservedWords[ Token ] = 1; _else yyerror( "#RW requires a reserved word" ); _endif BEGIN endIDRW; } YY_BREAK case 12: YY_RULE_SETUP #line 1646 "hla.flx" { yyerror( "Syntax error in #RW directive" ); BEGIN 0; } YY_BREAK /* ** Compile-time file I/O directives: */ case 13: YY_RULE_SETUP #line 1657 "hla.flx" { /* ** Call the parser to read a string constant ** expression surrounded by parentheses. The ** return value comes back in d1ceReturnVal */ _here; PushBackStr( "\xFA" ); yyparse(); _if( !IsStr( d1ceReturnVal.v.pType )) yyerror( "#openwrite requires a string expression" ); _elseif( writeHandle != NULL ) yyerror( "There is already an output file open" ); _else writeHandle = fopen( d1ceReturnVal.v.u.strval, "w" ); _if( writeHandle == NULL ) yyerror( "Could not open file for writing" ); _endif _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK case 14: YY_RULE_SETUP #line 1692 "hla.flx" { /* ** Call the parser to read a string constant ** expression surrounded by parentheses. The ** return value comes back in d1ceReturnVal */ _here; PushBackStr( "\xFA" ); yyparse(); _if( !IsStr( d1ceReturnVal.v.pType )) yyerror( "#append requires a string expression" ); _elseif( writeHandle != NULL ) yyerror( "There is already an output file open" ); _else writeHandle = fopen( d1ceReturnVal.v.u.strval, "a" ); _if( writeHandle == NULL ) yyerror( "Could not open file for writing" ); _endif _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK case 15: YY_RULE_SETUP #line 1727 "hla.flx" { FILE *SavePrintOut; _here; _if( writeHandle == NULL ) yyerror( "Attempted #write without open file" ); _else /* ** We're going to cheat big time here and ** just set SavePrintOut to writeHandle and then ** let #print do all the work. */ SavePrintOut = PrintOut; PrintOut = writeHandle; /* ** Call the parser to read a string constant ** expression surrounded by parentheses. The ** return value comes back in d1ceReturnVal */ PushBackStr( "\xF2" ); yyparse(); PrintOut = SavePrintOut; _endif _here; } YY_BREAK case 16: YY_RULE_SETUP #line 1762 "hla.flx" { _if( writeHandle == NULL ) yyerror( "Write file is not open" ); _else fclose( writeHandle ); writeHandle = NULL; _endif; } YY_BREAK case 17: YY_RULE_SETUP #line 1780 "hla.flx" { /* ** Call the parser to read a string constant ** expression surrounded by parentheses. The ** return value comes back in d1ceReturnVal */ _here; PushBackStr( "\xFA" ); yyparse(); _if( !IsStr( d1ceReturnVal.v.pType )) yyerror( "#openread requires a string expression" ); _elseif( readHandle != NULL ) yyerror( "There is already an input file open" ); _else readHandle = fopen( d1ceReturnVal.v.u.strval, "r" ); _if( readHandle == NULL ) yyerror( "Could not open file for reading" ); _endif _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK case 18: YY_RULE_SETUP #line 1815 "hla.flx" { _return readTkn; } YY_BREAK case 19: YY_RULE_SETUP #line 1817 "hla.flx" { _if( readHandle == NULL ) yyerror( "Read file is not open" ); _else fclose( readHandle ); readHandle = NULL; _endif; } YY_BREAK /* ** Regular expressions that record text for a user-defined macro ** ** RE: macro ** ** This regular expression notes that we have a nested macro ** definition (that is, a macro expansion will define a new ** macro). It is important that we note how many nested macro ** definitions we encounter because we need count off this same ** number of "endmacros" before we terminate recording the current ** macro. ** ** RE: endmacro ** ** This regular expression finds the end of the macro we are ** recording. However, if there are any nested macro definitions, ** we need to record the endmacro unless this is the final endmacro ** for our current definition. */ case 20: YY_RULE_SETUP #line 1854 "hla.flx" { strcpy ( &CurLine[ MacroIndex ], " #macro " ); MacroIndex += 8; ++NestedMacroCnt; _if( MacroIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Macro definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); MacroIndex = 0; _endif } YY_BREAK case 21: YY_RULE_SETUP #line 1880 "hla.flx" { _if( NestedMacroCnt == 1 ) AppendMacroLine(); yylval->m.Text = macroHead->text; free2( (void**) ¯oHead ); PushBackStr( "\xF8" ); _return endMacDefTkn; _else strcpy ( &CurLine[ MacroIndex ], " #keyword " ); MacroIndex += 10; _if( MacroIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Macro definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); MacroIndex = 0; _endif _endif } YY_BREAK case 22: YY_RULE_SETUP #line 1916 "hla.flx" { BEGIN 0; _return keywordTkn; } YY_BREAK case 23: YY_RULE_SETUP #line 1919 "hla.flx" { _if( NestedMacroCnt == 1 ) AppendMacroLine(); yylval->m.Text = macroHead->text; free2( (void **) ¯oHead ); PushBackStr( "\xF7" ); _return endMacDefTkn; _else strcpy ( &CurLine[ MacroIndex ], " #terminator " ); MacroIndex += 13; _if( MacroIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Macro definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); MacroIndex = 0; _endif _endif } YY_BREAK case 24: YY_RULE_SETUP #line 1956 "hla.flx" { BEGIN 0; _return terminatorTkn; } YY_BREAK case 25: YY_RULE_SETUP #line 1959 "hla.flx" { _here; --NestedMacroCnt; _if( NestedMacroCnt == 0 ) AppendMacroLine(); yylval->m.Text = macroHead->text; free2( (void **) ¯oHead ); PushBackStr( "\xF6" ); _return endMacDefTkn; _else strcpy ( &CurLine[ MacroIndex ], " #endmacro " ); MacroIndex += 11; _if( MacroIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Macro definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); MacroIndex = 0; _endif _endif _here; } YY_BREAK case 26: YY_RULE_SETUP #line 1999 "hla.flx" { BEGIN 0; _return endmacroTkn; } YY_BREAK /* ** We need to process strings here. This prevents accidentally ** treating the words "#macro" and "#endmacro" inside strings as ** new macro definitions or as the end of the current macro definition. */ case 27: YY_RULE_SETUP #line 2012 "hla.flx" { _here; strcpy ( &CurLine[ MacroIndex ], yytext ); MacroIndex += yyleng; _if( MacroIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Macro definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); MacroIndex = 0; _endif _here; } YY_BREAK /* ** If EOF occurs while recording a macro, switch buffers: */ case YY_STATE_EOF(RecordMacro): #line 2043 "hla.flx" { _returnif( BufSP < 0 ) -1; deleteSourceBuf(); } YY_BREAK case 28: YY_RULE_SETUP #line 2048 "hla.flx" { EndMacroExpansion(); } YY_BREAK /* ** If none of the above REs process the current ** character(s), then the next two REs will record the characters ** as part of the current macro (exception: comments inside macro ** defintions which are handled a little later). */ case 29: YY_RULE_SETUP #line 2064 "hla.flx" { CurLine[ MacroIndex++ ] = *yytext; _if( MacroIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Macro definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); MacroIndex = 0; _endif } YY_BREAK case 30: /* rule 30 can match eol */ YY_RULE_SETUP #line 2083 "hla.flx" { int SaveLine = LineCnt; _here; CurLine[ MacroIndex++ ] = '\n'; AppendMacroLine(); LineCnt = SaveLine + 1; _if( MacroIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Macro definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); MacroIndex = 0; _endif } YY_BREAK /* ** If a comment appears within a macro definition, don't bother ** recording the macro text. Besides saving space, this prevents ** problems with the words "macro" and "endmacro" appearing within ** the body of the comment. */ case 31: YY_RULE_SETUP #line 2115 "hla.flx" {} YY_BREAK case 32: YY_RULE_SETUP #line 2118 "hla.flx" { BEGIN RMcomment; } YY_BREAK case 33: YY_RULE_SETUP #line 2119 "hla.flx" {} YY_BREAK case 34: /* rule 34 can match eol */ YY_RULE_SETUP #line 2120 "hla.flx" { ++LineCnt; ++TotalLines; } YY_BREAK case 35: YY_RULE_SETUP #line 2121 "hla.flx" { BEGIN RecordMacro; } YY_BREAK /* ** Handle the @eval(--) function here. This function ** evaluates its parameter as a constant expression, ** translates the result to a string, and then pushes ** the string back onto the lexer input. ** ** Note: this code was stuck in this unusual spot ** because the context generates ** some warnings (in certain versions of FLEX) ** if it follows the other @eval items appearing ** in this file. */ case 36: YY_RULE_SETUP #line 2141 "hla.flx" { union YYSTYPE strResult; _here; BEGIN 0; PushBackStr( "\xFA" ); yyparse(); StrFunc( &strResult, &d1ceReturnVal ); PushBackStr( strResult.v.u.strval ); FreeValue( &d1ceReturnVal ); FreeValue( &strResult ); BEGIN UnprocessedID; _here; } YY_BREAK case 37: YY_RULE_SETUP #line 2158 "hla.flx" { union YYSTYPE strResult; _here; PushBackStr( "\xFA" ); yyparse(); StrFunc( &strResult, &d1ceReturnVal ); PushBackStr( strResult.v.u.strval ); FreeValue( &d1ceReturnVal ); FreeValue( &strResult ); _here; } YY_BREAK /* ** Grand Kludge Ahead! ** ** Regular expressions to record actual macro parameter text. ** ** The following regular expressions process actual (vs formal) macro ** parameters. Unfortunately, it is not possible to come up with a ** grammar that handles macro parameters that works within the confines ** of the HLA grammar. The solution is to switch context upon encountering ** a macro identifier and use a special lexical analyzer/parser combo ** to recognize and record the text of the macro parameters. ** ** HLA macro parameters consist of a sequence of characters that end with ** either a comma or a closing parentheses subject to the following rules: ** ** (1) If an opening parenthesis is encountered, all text (including ** matched parentheses and commas) is included as part of the ** parameter until HLA encounters the corresponding closing paren. ** ** (2) All text between the "#(" and ")#" symbols is included as part ** of a macro parameter, including commas and unmatched parentheses. ** ** (3) All text enclosed within quotes or apostrophes (including commas, ** parentheses, and the "#(" and ")#" symbols) is included as part ** of the macro parameter text. ** ** Note that HLA eliminates any leading and trailing white space and ** control characters from a macro parameter (even if you enclose the ** text with "#(" and ")#"). ** ** HLA also eliminates any comment text appearing inside a macro ** parameter. ** */ /* ** Capture all text enclosed by "#(" and ")#". */ case 38: YY_RULE_SETUP #line 2217 "hla.flx" { _here; BEGIN GetAllOfParm; StartParm = LineCnt; _here; } YY_BREAK case 39: YY_RULE_SETUP #line 2224 "hla.flx" { _here; BEGIN MacroParm; } YY_BREAK /* ** If we encounter the @eval(--) function within the macro ** parameter enclosed by #( and )#, then evaluate the expression ** and translate it to a string for emission as the macro parameter. */ case 40: YY_RULE_SETUP #line 2236 "hla.flx" { union YYSTYPE strResult; _here; PushBackStr( "\xFA" ); BEGIN 0; yyparse(); BEGIN GetAllOfParm; StrFunc( &strResult, &d1ceReturnVal ); PushBackStr( strResult.v.u.strval ); FreeValue( &d1ceReturnVal ); FreeValue( &strResult ); _here; } YY_BREAK /* ** If we encounter a "@text" function within the parameter list surrounded ** by #( and )#, immediately expand the text. */ case 41: YY_RULE_SETUP #line 2259 "hla.flx" { _here; PushBackStr( "\xFD" ); BEGIN 0; yyparse(); BEGIN GetAllOfParm; _here; } YY_BREAK case 42: YY_RULE_SETUP #line 2269 "hla.flx" { _here; appendChParmLine( *yytext ); _here; } YY_BREAK case 43: /* rule 43 can match eol */ YY_RULE_SETUP #line 2276 "hla.flx" { _here; ++LineCnt; ++TotalLines; appendChParmLine( ' ' ); _here; } YY_BREAK case 44: YY_RULE_SETUP #line 2284 "hla.flx" {} YY_BREAK case 45: YY_RULE_SETUP #line 2285 "hla.flx" { BEGIN GAoPcomment; } YY_BREAK case 46: YY_RULE_SETUP #line 2286 "hla.flx" {} YY_BREAK case 47: /* rule 47 can match eol */ YY_RULE_SETUP #line 2287 "hla.flx" { ++LineCnt; ++TotalLines; } YY_BREAK case 48: YY_RULE_SETUP #line 2288 "hla.flx" { BEGIN GetAllOfParm; } YY_BREAK /* ** #text..#endtext inside a macro parameter maintains *all* text between ** the #text and #endtext. */ case 49: YY_RULE_SETUP #line 2297 "hla.flx" { _here; BEGIN GetAllOfParm2; StartParm = LineCnt; _here; } YY_BREAK case 50: YY_RULE_SETUP #line 2304 "hla.flx" { _here; BEGIN MacroParm; } YY_BREAK case 51: YY_RULE_SETUP #line 2312 "hla.flx" { _here; appendChParmLine( *yytext ); _here; } YY_BREAK case 52: /* rule 52 can match eol */ YY_RULE_SETUP #line 2319 "hla.flx" { _here; ++LineCnt; ++TotalLines; appendChParmLine( '\n' ); _here; } YY_BREAK /* ** If we encounter an @eval(expr) within the macro parameter, ** immediately evaluate the constant expression and expand the ** result as a TEXT string. */ case 53: YY_RULE_SETUP #line 2337 "hla.flx" { union YYSTYPE strResult; ParmLine_t *pl; _here; PushBackStr( "\xFA" ); pl = ParmLine; ParmLine = NULL; BEGIN 0; yyparse(); BEGIN MacroParm; ParmLine = pl; StrFunc( &strResult, &d1ceReturnVal ); PushBackStr( strResult.v.u.strval ); FreeValue( &d1ceReturnVal ); FreeValue( &strResult ); _here; } YY_BREAK /* ** If we encounter a "{a_text}" function within the parameter list, ** immediately expand the text. */ case 54: YY_RULE_SETUP #line 2365 "hla.flx" { ParmLine_t *pl; _here; pl = ParmLine; ParmLine = NULL; PushBackStr( "\xFD" ); BEGIN 0; yyparse(); ParmLine = pl; BEGIN MacroParm; _here; } YY_BREAK /* ** If we encounter an identifier in the actual parameter list, ** we need to look it up. If it is a text ID, we need to expand it ** on the spot. */ case 55: YY_RULE_SETUP #line 2387 "hla.flx" { struct SymNode *symbol; _here; symbol = lookup( yytext, 1 ); yylval->s = symbol; _if ( symbol != NULL && symbol->pType == tText && ( symbol->SymClass == cConstant || symbol->SymClass == cValue ) ) PushBackStr( symbol->u.strval ); _else appendStrParmLine( yytext, yyleng ); _endif } YY_BREAK /* ** To prevent problems with built-in functions, we need to parse ** those right here. Otherwise, the identifier code above will ** treat a string like "@linenumber" as though it were "@" followed ** by the identifier "linenumber". This creates problems if the ** program already contains an identifier like "LineNumber". */ case 56: YY_RULE_SETUP #line 2421 "hla.flx" { _here; appendStrParmLine( yytext, yyleng ); _here; } YY_BREAK /* ** A comma (that isn't inside a string or a "#(" / ")#" pair) marks the ** end of the current macro parameter. ** ** Note, however, that if we are inside a pair of braces ("{".."}") or ** a pair of brackets, then we treat the comma just like any other ** character. */ case 57: YY_RULE_SETUP #line 2439 "hla.flx" { ParmLine_t *prev; _if ( ParmLine->BraceCnt == 0 && ParmLine->BracketCnt == 0 && ParmLine->ParenCnt == 0 ) appendChParmLine( '\0' ); yylval->v.u.strval = trim( ParmLine->Line, ParmLine->Index-1 ); PushBackStr( "," ); BEGIN 0; free2( (void **) &ParmLine->Line ); prev = ParmLine->prev; free2( (void **) &ParmLine ); ParmLine = prev; ParmLine = NULL; _return MacroParmTkn; _else appendChParmLine( ',' ); _endif } YY_BREAK /* ** We need to count parentheses. Once the number of right parens ** exceeds the number of left parens seen thus far, we're done ** processing the macro parameter list. */ case 58: YY_RULE_SETUP #line 2477 "hla.flx" { _here; ++ParmLine->ParenCnt; appendChParmLine( '(' ); _here; } YY_BREAK case 59: YY_RULE_SETUP #line 2484 "hla.flx" { ParmLine_t *prev; _here; --ParmLine->ParenCnt; _if( ParmLine->ParenCnt >= 0 ) appendChParmLine( ')' ); _else int IsEmpty = 1; char *s; int slen; appendChParmLine( '\0' ); s = trim( ParmLine->Line, ParmLine->Index - 1 ); slen = strlen( s ); free2( (void **) &ParmLine->Line ); prev = ParmLine->prev; free2( (void **) &ParmLine ); ParmLine = prev; _for( int i=0, i < slen, ++i ) IsEmpty = IsEmpty && ( s[i] == ' ' ); _endfor _if( IsEmpty ) BEGIN 0; _return ')'; _endif PushBackStr( ")" ); yylval->v.u.strval = s; BEGIN EndMacroParm; _return LastMacroParmTkn; _endif } YY_BREAK case 60: YY_RULE_SETUP #line 2527 "hla.flx" { _here; BEGIN 0; _return ')'; } YY_BREAK /* ** We need to count braces. ** Between braces we don't use commas to separate macro ** parameters (since we're processing a set constant). */ case 61: YY_RULE_SETUP #line 2542 "hla.flx" { _here; ++ParmLine->BraceCnt; appendChParmLine( '{' ); // ParmLine[ ParmIndex++ ] = *yytext; // _returnif( ParmTooLong( yylval ) ) MacroParmTkn; _here; } YY_BREAK case 62: YY_RULE_SETUP #line 2551 "hla.flx" { _here; appendChParmLine( '}' ); _if( ParmLine->BraceCnt > 0 ) --ParmLine->BraceCnt; _endif // ParmLine[ ParmIndex++ ] = *yytext; _here; } YY_BREAK /* ** We need to count brackets. ** Between braces we don't use commas to separate macro ** parameters (since we're processing a set constant). */ case 63: YY_RULE_SETUP #line 2570 "hla.flx" { _here; ++ParmLine->BracketCnt; appendChParmLine( '[' ); // ParmLine[ ParmIndex++ ] = *yytext; // _returnif( ParmTooLong( yylval ) ) MacroParmTkn; _here; } YY_BREAK case 64: YY_RULE_SETUP #line 2579 "hla.flx" { _here; appendChParmLine( ']' ); _if( ParmLine->BracketCnt > 0 ) --ParmLine->BracketCnt; _endif // ParmLine[ ParmIndex++ ] = *yytext; _here; } YY_BREAK /* ** We need to process strings here. This prevents accidentally ** treating commas and other objects inside strings as ** parameter delimiters. */ case 65: YY_RULE_SETUP #line 2598 "hla.flx" { _here; appendStrParmLine( yytext, yyleng ); _here; } YY_BREAK case 66: YY_RULE_SETUP #line 2605 "hla.flx" { _here; appendStrParmLine( yytext, yyleng ); _here; } YY_BREAK case 67: YY_RULE_SETUP #line 2612 "hla.flx" { _here; appendStrParmLine( yytext, yyleng ); _here; } YY_BREAK case 68: YY_RULE_SETUP #line 2618 "hla.flx" { _here; appendStrParmLine( yytext, yyleng ); _here; } YY_BREAK /* ** If we encounter ## inside a macro parameter list, ** immediately substitute the current macro counter value ** so that we get the correct value (if we were to substitute ** on macro parameter expansion, we wouldn't get the semantically ** correct value, ## always needs to expand immediately). */ case 69: YY_RULE_SETUP #line 2634 "hla.flx" { char macNumber[32]; int len; _here; _if( MacroSP >= 0 ) len = sprintf ( macNumber, "%d", MacroStack[ MacroSP ].cnt ); appendStrParmLine( macNumber, len ); _else appendChParmLine( '0' ); _endif _here; } YY_BREAK /* ** If we hit EOF, end of macro, end of..., while processing parms, ** switch buffers. */ case YY_STATE_EOF(MacroParm): #line 2666 "hla.flx" { _returnif( BufSP < 0 ) -1; deleteSourceBuf(); } YY_BREAK case 70: YY_RULE_SETUP #line 2671 "hla.flx" { EndMacroExpansion(); } YY_BREAK /* ** If none of the above REs process the current ** character(s), then the next two REs will record the characters ** as part of the current macro (exception: comments inside macro ** defintions which are handled a little later). */ case 71: YY_RULE_SETUP #line 2683 "hla.flx" { _here; appendChParmLine( *yytext ); _here; } YY_BREAK case 72: /* rule 72 can match eol */ YY_RULE_SETUP #line 2689 "hla.flx" { _here; appendChParmLine( ' ' ); ++LineCnt; ++TotalLines; _here; } YY_BREAK /* ** If a comment appears within a macro definition, don't bother ** recording the macro text. Besides saving space, this prevents ** problems with the words "macro" and "endmacro" appearing within ** the body of the comment. */ case 73: YY_RULE_SETUP #line 2705 "hla.flx" { _here; } YY_BREAK case 74: YY_RULE_SETUP #line 2708 "hla.flx" { _here; BEGIN MPcomment; } YY_BREAK case 75: YY_RULE_SETUP #line 2709 "hla.flx" {} YY_BREAK case 76: /* rule 76 can match eol */ YY_RULE_SETUP #line 2710 "hla.flx" { ++LineCnt; ++TotalLines; _here; } YY_BREAK case 77: YY_RULE_SETUP #line 2711 "hla.flx" { _here; BEGIN MacroParm; } YY_BREAK /******************************************************************************/ /******************************************************************************/ /* ** Regular expressions that record text for a user-defined regular expression ** ** RE: #regex ** ** This regular expression notes that we have a nested macro ** definition (that is, a macro expansion will define a new ** macro). It is important that we note how many nested macro ** definitions we encounter because we need count off this same ** number of "endmacros" before we terminate recording the current ** macro. ** ** RE: #endregex ** ** This regular expression finds the end of the macro we are ** recording. However, if there are any nested macro definitions, ** we need to record the endmacro unless this is the final endmacro ** for our current definition. */ case 78: YY_RULE_SETUP #line 2741 "hla.flx" { _here; CurLine[ RegexIndex ] = '\xE3'; ++RegexIndex; _if( RegexIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Regex definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); RegexIndex = 0; _endif // Okay, save a pointer to the "returns" // string expression in the m.returns field: AppendRegexLine(); yylval->m.Text = regexHead->text; free2( (void **) ®exHead ); PushBackStr( "\xE3" ); _return endRegexDefTkn; } YY_BREAK case 79: YY_RULE_SETUP #line 2772 "hla.flx" { BEGIN 0; _return endregexTkn; } YY_BREAK /* ** We need to process strings here. This prevents accidentally ** treating the word "#endregex" inside strings as ** the end of the current macro definition. */ case 80: YY_RULE_SETUP #line 2785 "hla.flx" { _here; strcpy ( &CurLine[ RegexIndex ], yytext ); RegexIndex += yyleng; _if( RegexIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Regex definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); RegexIndex = 0; _endif _here; } YY_BREAK /* ** If EOF occurs while recording a regular expression, switch buffers: */ case YY_STATE_EOF(RecordRegex): #line 2816 "hla.flx" { _returnif( BufSP < 0 ) -1; deleteSourceBuf(); } YY_BREAK case 81: YY_RULE_SETUP #line 2821 "hla.flx" { EndMacroExpansion(); } YY_BREAK /* ** If none of the above REs process the current ** character(s), then the next two REs will record the characters ** as part of the current regular expression (exception: comments inside ** regular expression definitions which are handled a little later). */ case 82: YY_RULE_SETUP #line 2837 "hla.flx" { CurLine[ RegexIndex++ ] = *yytext; _if( RegexIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Regex definition is too long " "(starts on line %d)", StartParm ); yyerror( msg ); RegexIndex = 0; _endif } YY_BREAK case 83: /* rule 83 can match eol */ YY_RULE_SETUP #line 2856 "hla.flx" { int SaveLine = LineCnt; _here; CurLine[ RegexIndex++ ] = '\n'; AppendRegexLine(); LineCnt = SaveLine + 1; _if( RegexIndex >= maxInputLineLen ) char msg[256]; sprintf ( msg, "Regex definition is too " "long (starts on line %d)", StartParm ); yyerror( msg ); RegexIndex = 0; _endif } YY_BREAK /* ** If a comment appears within a regex definition, don't bother ** recording the ergex text. Besides saving space, this prevents ** problems with the word "#endregex" appearing within ** the body of the comment. */ case 84: YY_RULE_SETUP #line 2888 "hla.flx" {} YY_BREAK case 85: YY_RULE_SETUP #line 2891 "hla.flx" { BEGIN RRcomment; } YY_BREAK case 86: YY_RULE_SETUP #line 2892 "hla.flx" {} YY_BREAK case 87: /* rule 87 can match eol */ YY_RULE_SETUP #line 2893 "hla.flx" { ++LineCnt; ++TotalLines; } YY_BREAK case 88: YY_RULE_SETUP #line 2894 "hla.flx" { BEGIN RecordRegex; } YY_BREAK /******************************************************************************/ /******************************************************************************/ /* ** Handle the "#error" directive here. */ case 89: YY_RULE_SETUP #line 2910 "hla.flx" { /* ** Call the parser to read a string constant ** expression surrounded by parentheses. The ** return value comes back in d1ceReturnVal */ _here; PushBackStr( "\xFA" ); yyparse(); _if( !IsStr( d1ceReturnVal.v.pType )) yyerror( "#error requires a string expression" ); _else yyerror( d1ceReturnVal.v.u.strval ); _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK /* ** Handle the "#system" directive here. */ case 90: YY_RULE_SETUP #line 2947 "hla.flx" { /* ** Call the parser to read a string constant ** expression surrounded by parentheses. The ** return value comes back in d1ceReturnVal */ _here; PushBackStr( "\xFA" ); yyparse(); _if( !IsStr( d1ceReturnVal.v.pType )) yyerror( "#system requires a string expression" ); _else system( d1ceReturnVal.v.u.strval ); _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK /* ** Handle the "#print" directive here. */ case 91: YY_RULE_SETUP #line 2984 "hla.flx" { FILE *savePrintOut; savePrintOut = PrintOut; PrintOut = MsgOut; /* ** Call the parser to read a string constant ** expression surrounded by parentheses. The ** return value comes back in d1ceReturnVal */ _here; PushBackStr( "\xF2" ); yyparse(); PrintOut = savePrintOut; _here; } YY_BREAK /* ** Handle conditional assembly stuff here. ** ** Notes: "ifcnt" counts the number of #if statements ** we've encountered while actually processing statements ** (i.e., #if statements *not* appearing in code we're ** skipping over due to a false conditional). ** ** "NestedIfCnt" counts the number of nested #if statements ** appearing inside code we are skipping over (i.e., code ** within a false conditional section). */ case 92: YY_RULE_SETUP #line 3029 "hla.flx" { /* ** First, call the parser to read a constant ** expression surrounded by parentheses. Return ** value comes back in d1ceReturnVal. */ _here; PushBackStr( "\xFA" ); yyparse(); _if( d1ceReturnVal.v.pType != tBoolean ) yyerror( "#if requires a boolean expression" ); _endif _if( d1ceReturnVal.v.u.unsval == 0 ) /* ** Okay, it's a false expression. Begin skipping ** statements until we hit an #ELSEIF, #ELSE, or ** #ENDIF. */ BEGIN SkipToNext; NestedIfCnt = 0; /* Just starting false conditional */ _endif ++ifcnt; /* Need a matching #endif */ /* ** If the boolean expression was true, ignore all following ** #elseif statement. If it was false, then we need to ** consider the #elseifs connected to this #if. */ IfState = d1ceReturnVal.v.u.unsval; FreeValue( &d1ceReturnVal ); _here; } YY_BREAK case 93: YY_RULE_SETUP #line 3075 "hla.flx" { /* ** If "ifcnt" is zero, then this #elseif came out of the ** blue, we're not inside a #if..#endif sequence. */ _here; _if( ifcnt <= 0 ) yyerror( "Unexpected #ELSEIF" ); ifcnt = 0; NestedIfCnt = 0; _else /* ** If we get to this point, then we've been ** processing statements in an #if sequence or ** an #elseif sequence. In either case, we need ** to ignore all further statements through to the ** #endif. */ BEGIN SkipToEndif; NestedIfCnt = 0; _endif _here; } YY_BREAK case 94: YY_RULE_SETUP #line 3107 "hla.flx" { /* ** If "ifcnt" is zero, then this #else came out of the ** blue, we're not inside a #if..#endif sequence. */ _here; _if( ifcnt <= 0 || IfState == 2 ) ErrorNear ( "Unexpected #ELSE", "#ELSE", __LINE__, __FILE__ ); ifcnt = 0; NestedIfCnt = 0; _else /* ** If we get to this point, then we've been ** processing the statements inside an #if (or ** #elseif) statement and we've got to start ** ignoring statements until we hit the #endif. */ BEGIN SkipToEndif; NestedIfCnt = 0; _endif _here; } YY_BREAK case 95: YY_RULE_SETUP #line 3145 "hla.flx" { _here; _if( ifcnt <= 0 ) yyerror( "Unexpected #ENDIF" ); ifcnt = 0; NestedIfCnt = 0; _else /* ** If we've been processing statements ** inside an #if or #elseif, decrement the ** ifcnt variable. If there are nested ** #if statements, we will continue ** looking for #else or #elseif statements. ** If not, we're done and "ifcnt" will contain zero. */ --ifcnt; _endif IfState = 1; _here; } YY_BREAK /* ** At this point, we are skipping statements in the code until we find ** the next #if, #elseif, #else, or #endif directive. */ case 96: YY_RULE_SETUP #line 3179 "hla.flx" { /* ** If we encounter a #if at this point, it must ** be a nested conditional compilation statement. ** Note that fact and skip over all statements ** (through to the corresponding #endif) associated ** with this #if. */ _here; ++NestedIfCnt; } YY_BREAK case 97: YY_RULE_SETUP #line 3197 "hla.flx" { /* ** We just encountered a #elseif statement. ** If we're not in a nested #if (false) statement ** process the expression to determine if we ** need to compile the statements following this. */ _here; _if( NestedIfCnt == 0 ) BEGIN 0; PushBackStr( "\xFA" ); yyparse(); _if( d1ceReturnVal.v.pType != tBoolean ) yyerror ( "#ELSEIF requires a boolean expression" ); BEGIN SkipToEndif; IfState = 1; _else _if( d1ceReturnVal.v.u.unsval == 0 ) /* ** If the expression is false, then ** skip over the statements in this ** #elseif section. */ BEGIN SkipToNext; NestedIfCnt = 0; _else /* ** If the expression is true, then begin ** processing the statements in this ** section. */ BEGIN 0; NestedIfCnt = 0; IfState = 1; _endif _endif _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK case 98: YY_RULE_SETUP #line 3260 "hla.flx" { /* ** If we aren't skipping #else ** statements attached to a nested ** #if (with a false expression), ** begin processing the statements ** after the #else. (Note: NestedIfCnt ** is greater than zero if we are in the ** false portion of an #if statement ** and there were nested #if statements ** in this false section). */ _here; _if( NestedIfCnt == 0 ) BEGIN 0; IfState = 2; _endif _here; } YY_BREAK case 99: YY_RULE_SETUP #line 3287 "hla.flx" { /* ** If we encounter an #endif while skipping ** statements after a false #if, then one ** of two situations exists: (1) This #endif ** matches the false #if statement, so we ** need to decrement "ifcnt" and begin ** processing the statements after the #endif; ** or, (2) this #endif matches a #if that was ** nested inside the original #if with the ** false expression. In this later case, ** NestedIfCnt will be greater than zero. */ _here; _if( NestedIfCnt == 0 ) --ifcnt; BEGIN 0; _else /* ** We've just finished processing a nested ** #if inside a false conditional section. ** Adjust for this by decrementing NestedIfCnt. */ --NestedIfCnt; _endif IfState = 1; _here; } YY_BREAK case 100: /* rule 100 can match eol */ YY_RULE_SETUP #line 3322 "hla.flx" { ++LineCnt; ++TotalLines; _here; } YY_BREAK /* ** End of macro, file, etc., causes a buffer switch. */ case YY_STATE_EOF(SkipToNext): #line 3329 "hla.flx" { _returnif( BufSP < 0 ) -1; deleteSourceBuf(); } YY_BREAK case 101: YY_RULE_SETUP #line 3334 "hla.flx" { EndMacroExpansion(); } YY_BREAK case 102: YY_RULE_SETUP #line 3340 "hla.flx" { /* ** Since this is a false conditional, we throw ** away all characters we're not directly interested ** in. */ } YY_BREAK /* ** We need to process strings here. This prevents accidentally ** treating the words "#if", "#else", and "#endif" inside strings as ** the (in)appropriate reserved words. */ case 103: YY_RULE_SETUP #line 3355 "hla.flx" { _here; } YY_BREAK case 104: YY_RULE_SETUP #line 3358 "hla.flx" { _here; } YY_BREAK /* ** If a comment appears within a conditional assembly sequence, ** don't bother processing it. This prevents problems with ** conditional assembly keywords appearing within ** the body of the comment. */ case 105: YY_RULE_SETUP #line 3369 "hla.flx" { _here; } YY_BREAK case 106: YY_RULE_SETUP #line 3372 "hla.flx" { BEGIN SIcomment; _here; } YY_BREAK case 107: YY_RULE_SETUP #line 3373 "hla.flx" {} YY_BREAK case 108: /* rule 108 can match eol */ YY_RULE_SETUP #line 3374 "hla.flx" { ++LineCnt; ++TotalLines; _here; } YY_BREAK case 109: YY_RULE_SETUP #line 3375 "hla.flx" { BEGIN SkipToNext; _here; } YY_BREAK /* ** If the following RE is matched, then we've been processing statements ** inside an #if because of a true expression. If this isn't a nested ** if, let's skip the following asm stmts. */ case 110: YY_RULE_SETUP #line 3414 "hla.flx" { ++NestedIfCnt; _here; } YY_BREAK case 111: YY_RULE_SETUP #line 3417 "hla.flx" { } YY_BREAK case 112: YY_RULE_SETUP #line 3422 "hla.flx" { _here; } YY_BREAK case 113: YY_RULE_SETUP #line 3426 "hla.flx" { _here; _if( NestedIfCnt <= 0 ) --ifcnt; BEGIN 0; _else --NestedIfCnt; _endif IfState = 1; _here; } YY_BREAK case 114: /* rule 114 can match eol */ YY_RULE_SETUP #line 3443 "hla.flx" { ++LineCnt; ++TotalLines; _here; } YY_BREAK case YY_STATE_EOF(SkipToEndif): #line 3446 "hla.flx" { _returnif( BufSP < 0 ) -1; deleteSourceBuf(); } YY_BREAK case 115: YY_RULE_SETUP #line 3451 "hla.flx" { EndMacroExpansion(); } YY_BREAK case 116: YY_RULE_SETUP #line 3458 "hla.flx" {} YY_BREAK /* ** We need to process strings here. This prevents accidentally ** treating the words "#if", "#else", and "#endif" inside strings as ** the (in)appropriate reserved words. */ case 117: YY_RULE_SETUP #line 3467 "hla.flx" { _here; } YY_BREAK case 118: YY_RULE_SETUP #line 3468 "hla.flx" { _here; } YY_BREAK /* ** If a comment appears within a conditional assembly sequence, ** don't bother processing it. This prevents problems with ** conditional assembly keywords appearing within ** the body of the comment. */ case 119: YY_RULE_SETUP #line 3482 "hla.flx" { _here; } YY_BREAK case 120: YY_RULE_SETUP #line 3485 "hla.flx" { BEGIN SEcomment; _here; } YY_BREAK case 121: YY_RULE_SETUP #line 3486 "hla.flx" {} YY_BREAK case 122: /* rule 122 can match eol */ YY_RULE_SETUP #line 3487 "hla.flx" { ++LineCnt; ++TotalLines; _here; } YY_BREAK case 123: YY_RULE_SETUP #line 3488 "hla.flx" { BEGIN SkipToEndif; _here; } YY_BREAK /**********************************************************************/ /* ** Process the #for loop here. */ case 124: YY_RULE_SETUP #line 3500 "hla.flx" { _here; PushBackStr( "\xe9" ); yyparse(); ForIndex = 0; ForLen = 0; ForHead = NULL; NestedForCnt = 1; ++ForSP; _if( ForSP >= maxNestedMacros ) yyerror( "#FOR stack overflow" ); --ForSP; _endif ForStack[ ForSP ].loopControlVar = forReturnVal.forInfo.ControlVar; ForStack[ ForSP ].endVal = forReturnVal.forInfo.endVal; ForStack[ ForSP ].byVal = forReturnVal.forInfo.byVal; ForStack[ ForSP ].index = 0; ForStack[ ForSP ].LineCnt = LineCnt; ForStack[ ForSP ].inVal = (struct SymNode *)forReturnVal.forInfo.inVal; ForStack[ ForSP ].pType = forReturnVal.forInfo.pType; BEGIN( For_Record ); _here; } YY_BREAK case 125: YY_RULE_SETUP #line 3538 "hla.flx" { _here; _return ctforTkn; } YY_BREAK case 126: YY_RULE_SETUP #line 3544 "hla.flx" { int doLoop; _here; _if( ForSP >= 0 ) // Bump up the loop control variable by one: ForStack[ ForSP ].loopControlVar->u.intval += ForStack[ ForSP ].byVal; // See if the loop is done: _if( ForStack[ ForSP ].byVal < 0 ) doLoop = ForStack[ ForSP ].loopControlVar->u.intval >= ForStack[ ForSP ].endVal; _elseif( ForStack[ ForSP ].byVal > 0 ) doLoop = ForStack[ ForSP ].loopControlVar->u.intval <= ForStack[ ForSP ].endVal; _else // We got a #for( var in expr ) loop: union YYSTYPE v; _switch( ForStack[ ForSP ].pType ) _case( tString ) _case( tZString ) v.v.u.charval = ForStack[ ForSP ].inVal->u.strval [ ForStack[ ForSP ].index ]; SetSym ( ForStack[ ForSP ].loopControlVar, &char_ste, // Type tChar, // pType 0, // Arity NULL, // Dimensions 0, // NumElements YYS &v, // Value 1, // ObjectSize 0, // CurOffset NULL, // StaticName NULL, // Base NULL, // Fields 0, // FieldCnt NULL, // CurField 0 // CurIndex ); doLoop = ForStack[ ForSP ].loopControlVar->u.charval != '\0'; ForStack[ ForSP ].index += doLoop; _endcase _case( tCset ) { int byteIndex; int bitPosition; // Extract a character from the character // set: _while( ForStack[ ForSP ].index < 128 ) byteIndex = ForStack[ ForSP ].index >> 3; bitPosition = 1 << (ForStack[ ForSP ].index & 0x7); _breakif ( ForStack[ ForSP ].inVal->u.csetval [ byteIndex ] & bitPosition ); ++ForStack[ ForSP ].index; _endwhile doLoop = ForStack[ ForSP ].index < 128; _if( doLoop ) v.v.u.charval = ForStack[ ForSP ].index; SetSym ( ForStack[ ForSP ].loopControlVar, &char_ste, // Type tChar, // pType 0, // Arity NULL, // Dimensions 0, // NumElements YYS &v, // Value 1, // ObjectSize 0, // CurOffset NULL, // StaticName NULL, // Base NULL, // Fields 0, // FieldCnt NULL, // CurField 0 // CurIndex ); ++ForStack[ ForSP ].index; _endif } _endcase _case( tArray ) // Extract an element from the array: doLoop = ForStack[ ForSP ].index < ForStack [ ForSP ].inVal->NumElements; _if( doLoop ) SetSym ( ForStack[ ForSP ].loopControlVar, ForStack[ ForSP ].inVal->Type, ForStack[ ForSP ].inVal->Type->pType, 0, // Arity NULL, // Dimensions 0, // NumElements YYS &ForStack[ ForSP ].inVal-> u.ArrayOfValues [ ForStack[ ForSP ].index ], 1, // ObjectSize 0, // CurOffset NULL, // StaticName ForStack[ ForSP ].inVal-> u.ArrayOfValues [ ForStack[ ForSP ].index ].Base, ForStack[ ForSP ].inVal-> u.ArrayOfValues [ ForStack[ ForSP ].index ].Fields, ForStack[ ForSP ].inVal-> u.ArrayOfValues [ ForStack[ ForSP ].index ].FieldCnt, NULL, // CurField 0 // CurIndex ); ++ForStack[ ForSP ].index; _endif _endcase _case( tRecord ) { struct SymNode *f; // Extract a field from the record: doLoop = ForStack[ ForSP ].index >= 0; _if( doLoop ) // First, find the field: f = &ForStack[ ForSP ].inVal->u.FieldValues [ ForStack[ ForSP ].index ]; SetSym ( ForStack[ ForSP ].loopControlVar, f->Type, f->pType, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].Arity, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].Dimensions, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].NumElements, YYS f, 1, // ObjectSize 0, // CurOffset NULL, // StaticName ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].Base, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].Fields, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].FieldCnt, NULL, // CurField 0 // CurIndex ); --ForStack[ ForSP ].index; _endif } _endcase _default doLoop = 0; _endswitch _endif _if( !doLoop ) // Clean up after the #for loop, 'cause we're done. CleanUpFor(); _else // Reset to the beginning of the #FOR loop: LineCnt = ForStack[ ForSP ].LineCnt; // Tell the scanner to fetch the next line from // the beginning of the #FOR text: //PushBackChar( '\xe8' ); yy_delete_buffer(YY_CURRENT_BUFFER ); FileName = BufferStack[ BufSP ].FileName; yy_scan_string(ForStack[ ForSP ].line ); _endif _else yyerror( "Unexpected #endfor" ); _endif _here; } YY_BREAK /* ** The following statements handle all the text in the ** #for loop after the expression. ** ** Handle the end of the for loop here. */ case 127: YY_RULE_SETUP #line 3857 "hla.flx" { int doLoop; _here; --NestedForCnt; strcpy ( &CurLine[ ForIndex ], yytext ); ForIndex += yyleng; _if( ForIndex >= maxInputLineLen ) yyerror ( "#FOR loop is too long" ); ForIndex = 0; _endif _if( NestedForCnt <= 0 ) AppendForLine(); ForStack[ ForSP ].line = ForHead; /* ** Okay, tell the system to begin ** processing the #FOR text. */ BEGIN 0; _if( ForStack[ ForSP ].byVal < 0 ) doLoop = ForStack[ ForSP ].loopControlVar->u.intval >= ForStack[ ForSP ].endVal; _elseif( ForStack[ ForSP ].byVal > 0 ) doLoop = ForStack[ ForSP ].loopControlVar->u.intval <= ForStack[ ForSP ].endVal; _else // We got a #for( var in expr ) loop: struct SymNode *s; union YYSTYPE v; _switch( ForStack[ ForSP ].pType ) _case( tString ) _case( tZString ) // Extract a character from the string: v.v.u.charval = ForStack[ ForSP ].inVal->u.strval [ ForStack[ ForSP ].index ]; SetSym ( ForStack[ ForSP ].loopControlVar, &char_ste, // Type tChar, // pType 0, // Arity NULL, // Dimensions 0, // NumElements YYS &v, // Value 1, // ObjectSize 0, // CurOffset NULL, // StaticName NULL, // Base NULL, // Fields 0, // FieldCnt NULL, // CurField 0 // CurIndex ); doLoop = ForStack[ ForSP ].loopControlVar->u.charval != '\0'; ForStack[ ForSP ].index += doLoop; _endcase _case( tCset ) { int byteIndex; int bitPosition; // Extract a character from the character // set: _while( ForStack[ ForSP ].index < 128 ) byteIndex = ForStack[ ForSP ].index >> 3; bitPosition = 1 << (ForStack[ ForSP ].index & 0x7); _breakif ( ForStack[ ForSP ].inVal->u.csetval [ byteIndex ] & bitPosition ); ++ForStack[ ForSP ].index; _endwhile doLoop = ForStack[ ForSP ].index < 128; _if( doLoop ) v.v.u.charval = ForStack[ ForSP ].index; SetSym ( ForStack[ ForSP ].loopControlVar, &char_ste, // Type tChar, // pType 0, // Arity NULL, // Dimensions 0, // NumElements YYS &v, // Value 1, // ObjectSize 0, // CurOffset NULL, // StaticName NULL, // Base NULL, // Fields 0, // FieldCnt NULL, // CurField 0 // CurIndex ); ++ForStack[ ForSP ].index; _endif } _endcase _case( tArray ) // Extract an element from the array: doLoop = ForStack[ ForSP ].index < ForStack [ ForSP ].inVal->NumElements; _if( doLoop ) SetSym ( ForStack[ ForSP ].loopControlVar, ForStack[ ForSP ].inVal->Type, ForStack[ ForSP ].inVal->Type->pType, 0, // Arity NULL, // Dimensions 0, // NumElements YYS &ForStack[ ForSP ].inVal-> u.ArrayOfValues [ ForStack[ ForSP ].index ], 1, // ObjectSize 0, // CurOffset NULL, // StaticName ForStack[ ForSP ].inVal-> u.ArrayOfValues [ ForStack[ ForSP ].index ].Base, ForStack[ ForSP ].inVal-> u.ArrayOfValues [ ForStack[ ForSP ].index ].Fields, ForStack[ ForSP ].inVal-> u.ArrayOfValues [ ForStack[ ForSP ].index ].FieldCnt, NULL, // CurField 0 // CurIndex ); ++ForStack[ ForSP ].index; _endif _endcase _case( tRecord ) { struct SymNode *f; // Extract a field from the record: doLoop = ForStack[ ForSP ].inVal->FieldCnt > 0; _if( doLoop ) // First, find the field: ForStack[ ForSP ].index = ForStack[ ForSP ].inVal->FieldCnt - 1; f = &ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ]; SetSym ( ForStack[ ForSP ].loopControlVar, f->Type, f->pType, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].Arity, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].Dimensions, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].NumElements, YYS f, 1, // ObjectSize 0, // CurOffset NULL, // StaticName ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].Base, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].Fields, ForStack[ ForSP ].inVal-> u.FieldValues [ ForStack[ ForSP ].index ].FieldCnt, NULL, // CurField 0 // CurIndex ); --ForStack[ ForSP ].index; _endif } _endcase _default doLoop = 0; _endswitch _endif _if( !doLoop ) --ForSP; _else pushBufStack( FileName, LineCnt, NULL, 0 ); LineCnt = ForStack[ ForSP ].LineCnt; yy_scan_string(ForStack[ ForSP ].line ); _endif _endif _here; } YY_BREAK /* ** Look for nested #FOR loops here. */ case 128: YY_RULE_SETUP #line 4172 "hla.flx" { _here; ++NestedForCnt; strcpy ( &CurLine[ ForIndex ], yytext ); ForIndex += yyleng; _if( ForIndex >= maxInputLineLen ) yyerror ( "#FOR loop is too long" ); ForIndex = 0; _endif _here; } YY_BREAK /* ** We need to process strings here. This prevents accidentally ** treating the words "#For" and "#endFor" inside strings as ** new For definitions or as the end of the current For loop. */ case 129: YY_RULE_SETUP #line 4201 "hla.flx" { _here; strcpy ( &CurLine[ ForIndex ], yytext ); ForIndex += yyleng; _if( ForIndex >= maxInputLineLen ) yyerror ( "#FOR loop is too long" ); ForIndex = 0; _endif _here; } YY_BREAK case 130: YY_RULE_SETUP #line 4222 "hla.flx" { _here; strcpy ( &CurLine[ ForIndex ], yytext ); ForIndex += yyleng; _if( ForIndex >= maxInputLineLen ) yyerror ( "#FOR loop is too long" ); ForIndex = 0; _endif _here; } YY_BREAK case YY_STATE_EOF(For_Record): #line 4246 "hla.flx" { _returnif( BufSP < 0 ) -1; deleteSourceBuf(); } YY_BREAK case 131: YY_RULE_SETUP #line 4251 "hla.flx" { EndMacroExpansion(); } YY_BREAK /* ** If none of the above REs process the current ** character(s), then the next two REs will record the characters ** as part of the current For loop (exception: comments inside loop ** definitions are handled a little later). */ case 132: YY_RULE_SETUP #line 4266 "hla.flx" { _here; CurLine[ ForIndex++ ] = *yytext; _if( ForIndex >= maxInputLineLen ) yyerror( "#FOR loop is too long" ); ForIndex = 0; _endif _here; } YY_BREAK case 133: /* rule 133 can match eol */ YY_RULE_SETUP #line 4278 "hla.flx" { _here; CurLine[ ForIndex++ ] = '\n'; AppendForLine(); ++LineCnt; ++TotalLines; _if( ForIndex >= maxInputLineLen ) yyerror( "#FOR loop is too long" ); ForIndex = 0; _endif _here; } YY_BREAK /* ** If a comment appears within a For loop, don't bother ** recording the comment text. Besides saving space, this prevents ** problems with the words "#For" and "#endFor" appearing within ** the body of the comment. */ case 134: YY_RULE_SETUP #line 4302 "hla.flx" { _here; } YY_BREAK case 135: YY_RULE_SETUP #line 4305 "hla.flx" { BEGIN RFcomment; _here; } YY_BREAK case 136: YY_RULE_SETUP #line 4306 "hla.flx" {} YY_BREAK case 137: /* rule 137 can match eol */ YY_RULE_SETUP #line 4307 "hla.flx" { ++LineCnt; ++TotalLines; _here; } YY_BREAK case 138: YY_RULE_SETUP #line 4308 "hla.flx" { BEGIN For_Record; _here; } YY_BREAK /**********************************************************************/ /* ** Record the body of a while loop here. */ case 139: YY_RULE_SETUP #line 4325 "hla.flx" { _here; WhileIndex = 0; WhileLen = 0; WhileHead = NULL; NestedWhileCnt = 1; ++WhileSP; _if( WhileSP >= maxNestedMacros ) yyerror( "While stack overflow" ); --WhileSP; _endif WhileStack[ WhileSP ].StartingLineNum = LineCnt; BEGIN( RecordWhileExpr ); _here; } YY_BREAK case 140: YY_RULE_SETUP #line 4345 "hla.flx" { _here; _if( WhileSP >= 0 ) yy_delete_buffer(YY_CURRENT_BUFFER ); LineCnt = WhileStack[ WhileSP ].StartingLineNum; FileName = BufferStack[ BufSP ].FileName; yy_scan_string(WhileStack[ WhileSP ].line ); yyparse(); _if( d1ceReturnVal.v.pType != tBoolean ) yyerror ( "#while requires a boolean expression" ); CleanUpWhile(); _elseif( d1ceReturnVal.v.u.unsval == 0 ) CleanUpWhile(); _endif _else yyerror( "Unexpected #endwhile" ); _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK /* ** Record a #while expression here. ** This is a sequence of characters between a pair of balanced ** parentheses. ** ** Okay, granted this is really ugly and kludgy. ** The idea is this: an expression surrounded by parentheses ** must immediately follow the "#while". There may, however, ** be whitespace (including newlines) sprinkled before and ** in the middle of this expression. Unfortunately, the expression ** parsing algorithm for #while expressions requires the expression ** to appear within a single string object. The following ** (context-sensitive) regular expressions capture everything ** between the opening parenthesis and the matching closing paren ** and stick all of this data into a single string. No check is ** done at this point to verify that the expression is correct (the ** parser will do that later). ** ** Step 1 (RecordWhileExpr): throw away any leading white space ** up to the opening parenthesis. If the first non-white space ** character is not an open paren, we've got an error. */ case 141: YY_RULE_SETUP #line 4404 "hla.flx" {} YY_BREAK case 142: /* rule 142 can match eol */ YY_RULE_SETUP #line 4405 "hla.flx" { ++LineCnt; ++TotalLines; } YY_BREAK case 143: YY_RULE_SETUP #line 4407 "hla.flx" { _here; CurLine[ WhileIndex++ ] = '('; WhileStack[ WhileSP ].ParenCnt = 1; WhileStack[ WhileSP ].LineCnt = 0; BEGIN RecordWhileExpr2; _here; } YY_BREAK case 144: YY_RULE_SETUP #line 4418 "hla.flx" { yyerror( "Illegal character(s) in #while expression" ); BEGIN RecordWhile; } YY_BREAK /* ** Step 2: Capture all characters until we encounter ** the matching closing parenthesis. Note that this code ** replaces any newlines it finds by a single space since ** the parser chokes if there is a new line in the middle ** of a #while expression. */ case 145: YY_RULE_SETUP #line 4434 "hla.flx" { /* ** Okay, we've got a closing parenthesis, add ** it to the end of the string we are building. */ int LinesInExpr; _here; CurLine[ WhileIndex++ ] = ')'; _if( WhileIndex >= maxInputLineLen ) yyerror( "While loop is too long" ); WhileIndex = 0; _endif /* ** If this is the matching parenthesis, then ** we're done collecting the expression. Otherwise ** we treat this parenthesis just like any other ** character. */ _if( --WhileStack[ WhileSP ].ParenCnt == 0 ) LinesInExpr = WhileStack[ WhileSP ].LineCnt; _for( int i=0, i < LinesInExpr, ++i ) CurLine[ WhileIndex++ ] = '\n'; _endfor BEGIN RecordWhile; _endif _here; } YY_BREAK /* ** If we encounter an opening parenthesis, we need to bump ** our counter up by one so we stop on the balanced paren. */ case 146: YY_RULE_SETUP #line 4481 "hla.flx" { _here; CurLine[ WhileIndex++ ] = '('; ++WhileStack[ WhileSP ].ParenCnt; _here; } YY_BREAK /* ** To save space in the CurLine array, compress all adjacent ** whitespace characters to a single space: */ case 147: YY_RULE_SETUP #line 4494 "hla.flx" { _here; CurLine[ WhileIndex++ ] = ' '; _here; } YY_BREAK /* ** Convert newlines to a space, but count the newlines ** so we can insert a sufficient number of blank lines ** into the #while list to make up for the newlines ** we've removed (so line numbers in error messages will ** roughly match the line the error is on). */ case 148: /* rule 148 can match eol */ YY_RULE_SETUP #line 4509 "hla.flx" { _here; CurLine[ WhileIndex++ ] = ' '; ++WhileStack[ WhileSP ].LineCnt; ++LineCnt; ++TotalLines; _here; } YY_BREAK /* ** If a string appears in an expression, handle it specially ** because we don't want to stop on a parenthesis inside a string */ case 149: YY_RULE_SETUP #line 4524 "hla.flx" { _here; CurLine[ WhileIndex] = 0; strcpy( &CurLine[ WhileIndex ], yytext ); WhileIndex += yyleng; _here; } YY_BREAK /* ** If it's some other character, just add it to the current line. */ case 150: YY_RULE_SETUP #line 4537 "hla.flx" { _here; CurLine[ WhileIndex++ ] = *yytext; _if( WhileIndex >= maxInputLineLen ) yyerror( "While loop is too long" ); WhileIndex = 0; _endif _here; } YY_BREAK /* ** The following statements handle all the text in the ** #while loop after the boolean expression. ** ** Handle the end of the while loop here. */ case 151: YY_RULE_SETUP #line 4560 "hla.flx" { _here; --NestedWhileCnt; strcpy ( &CurLine[ WhileIndex ], yytext ); WhileIndex += yyleng; _if( WhileIndex >= maxInputLineLen ) yyerror ( "While loop is too long" ); WhileIndex = 0; _endif _if( NestedWhileCnt <= 0 ) AppendWhileLine(); WhileStack[ WhileSP ].line = WhileHead; pushBufStack( FileName, LineCnt, NULL, 0 ); LineCnt = WhileStack[ WhileSP ].StartingLineNum; /* ** Okay, tell the system to begin ** processing the while text and ** recursively calling the parser in order ** to process the boolean expression. */ BEGIN 0; yy_scan_string(WhileHead ); // Note: first character of the WhileHead string // is 0xFA, which forces evaluation of the expression: //PushBackChar( '\xFA' ); yyparse(); _if( d1ceReturnVal.v.pType != tBoolean ) yyerror ( "Boolean expression required by #while" ); CleanUpWhile(); _elseif( d1ceReturnVal.v.u.unsval == 0 ) CleanUpWhile(); _endif FreeValue( &d1ceReturnVal ); _endif _here; } YY_BREAK case 152: YY_RULE_SETUP #line 4623 "hla.flx" { _here; ++NestedWhileCnt; strcpy ( &CurLine[ WhileIndex ], yytext ); WhileIndex += yyleng; _if( WhileIndex >= maxInputLineLen ) yyerror ( "While loop is too long" ); WhileIndex = 0; _endif _here; } YY_BREAK /* ** We need to process strings here. This prevents accidentally ** treating the words "#while" and "#endwhile" inside strings as ** new while definitions or as the end of the current while loop. */ case 153: YY_RULE_SETUP #line 4652 "hla.flx" { _here; strcpy ( &CurLine[ WhileIndex ], yytext ); WhileIndex += yyleng; _if( WhileIndex >= maxInputLineLen ) yyerror ( "While loop is too long" ); WhileIndex = 0; _endif _here; } YY_BREAK case 154: YY_RULE_SETUP #line 4673 "hla.flx" { _here; strcpy ( &CurLine[ WhileIndex ], yytext ); WhileIndex += yyleng; _if( WhileIndex >= maxInputLineLen ) yyerror ( "While loop is too long" ); WhileIndex = 0; _endif _here; } YY_BREAK case YY_STATE_EOF(RecordWhile): #line 4695 "hla.flx" { _returnif( BufSP < 0 ) -1; deleteSourceBuf(); } YY_BREAK case 155: YY_RULE_SETUP #line 4700 "hla.flx" { EndMacroExpansion(); } YY_BREAK /* ** If none of the above REs process the current ** character(s), then the next two REs will record the characters ** as part of the current while loop (exception: comments inside loop ** definitions are handled a little later). */ case 156: YY_RULE_SETUP #line 4715 "hla.flx" { _here; CurLine[ WhileIndex++ ] = *yytext; _if( WhileIndex >= maxInputLineLen ) yyerror( "While loop is too long" ); WhileIndex = 0; _endif _here; } YY_BREAK case 157: /* rule 157 can match eol */ YY_RULE_SETUP #line 4727 "hla.flx" { _here; CurLine[ WhileIndex++ ] = '\n'; AppendWhileLine(); ++LineCnt; ++TotalLines; _if( WhileIndex >= maxInputLineLen ) yyerror( "While loop is too long" ); WhileIndex = 0; _endif _here; } YY_BREAK /* ** If a comment appears within a while loop, don't bother ** recording the comment text. Besides saving space, this prevents ** problems with the words "#while" and "#endwhile" appearing within ** the body of the comment. */ case 158: YY_RULE_SETUP #line 4751 "hla.flx" { _here; } YY_BREAK case 159: YY_RULE_SETUP #line 4754 "hla.flx" { BEGIN RWcomment; _here; } YY_BREAK case 160: YY_RULE_SETUP #line 4755 "hla.flx" {} YY_BREAK case 161: /* rule 161 can match eol */ YY_RULE_SETUP #line 4756 "hla.flx" { ++LineCnt; ++TotalLines; _here; } YY_BREAK case 162: YY_RULE_SETUP #line 4757 "hla.flx" { BEGIN RecordWhile; _here; } YY_BREAK /* ** Code to handle include files goes here. */ case 163: YY_RULE_SETUP #line 4774 "hla.flx" { FILE *theFile; char prefix[256]; char path[ 256]; /* ** Get the string expression that follows #include ** (the expression must be surrounded by parens). */ _here; PushBackStr( "\xFA" ); yyparse(); _if( !IsStr( d1ceReturnVal.v.pType )) yyerror ( "#include requires a string expression" ); _else theFile = fopen( d1ceReturnVal.v.u.strval, "r" ); strcpy( path, d1ceReturnVal.v.u.strval ); // If we couldn't open the file, try looking // in the same directory containing the .hla file: _if( theFile == NULL ) int len; prefixName( FileName, prefix ); len = strlen( prefix ); strcpy( path, prefix ); _if ( path[ len - 1 ] != '/' && path[ len - 1 ] != '\\' ) path[ len ] = DIR_SEP_CHAR; path[ len+1 ] = '\0'; _endif strcat( path, d1ceReturnVal.v.u.strval ); theFile = fopen( path, "r" ); _endif _if( theFile == NULL && hlainc != NULL ) int len; len = strlen( hlainc ); strcpy( path, hlainc ); _if ( path[ len - 1 ] != '/' && path[ len - 1 ] != '\\' ) path[ len ] = DIR_SEP_CHAR; path[ len+1 ] = '\0'; _endif strcat( path, d1ceReturnVal.v.u.strval ); theFile = fopen( path, "r" ); _endif AddIncFilesList( path ); _if( theFile == NULL ) char msg[256]; sprintf ( msg, "Could not open include file \"%s\"\n(path=\"%s\")", d1ceReturnVal.v.u.strval, path ); yyerror( msg ); exit(1); _endif pushBufStack( FileName, LineCnt, theFile, 1 ); yy_switch_to_buffer ( yy_create_buffer ( theFile, YY_BUF_SIZE ) ); LineCnt = 1; FileName = hlastrdup2( path ); _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK case 164: YY_RULE_SETUP #line 4883 "hla.flx" { FILE *theFile; char prefix[256]; char path[ 256]; /* ** Get the string expression that follows #include ** (the expression must be surrounded by parens). */ _here; PushBackStr( "\xFA" ); yyparse(); _if( !IsStr( d1ceReturnVal.v.pType )) yyerror ( "#includeonce requires a string expression" ); _elseif( AddIncFilesList( d1ceReturnVal.v.u.strval ) ) theFile = fopen( d1ceReturnVal.v.u.strval, "r" ); // If we couldn't open the file, try looking // in the same directory containing the .hla file: _if( theFile == NULL ) int len; prefixName( FileName, prefix ); len = strlen( prefix ); strcpy( path, prefix ); _if ( prefix[ len - 1 ] != '/' && prefix[ len - 1 ] != '\\' ) prefix[ len ] = DIR_SEP_CHAR; prefix[ len+1 ] = '\0'; _endif strcat( prefix, d1ceReturnVal.v.u.strval ); theFile = fopen( prefix, "r" ); _endif _if( theFile == NULL && hlainc != NULL ) int len; len = strlen( hlainc ); strcpy( path, hlainc ); _if ( path[ len - 1 ] != '/' && path[ len - 1 ] != '\\' ) path[ len ] = DIR_SEP_CHAR; path[ len+1 ] = '\0'; _endif strcat( path, d1ceReturnVal.v.u.strval ); theFile = fopen( path, "r" ); _else strcpy( path, d1ceReturnVal.v.u.strval ); _endif _if( theFile == NULL ) char msg[256]; sprintf ( msg, "Could not open include file \"%s\"", d1ceReturnVal.v.u.strval ); yyerror( msg ); _else pushBufStack( FileName, LineCnt, theFile, 1 ); yy_switch_to_buffer ( yy_create_buffer ( theFile, YY_BUF_SIZE ) ); LineCnt = 1; FileName = hlastrdup2( path ); _endif _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK /* ** Code to handle the #TEXT..#ENDTEXT directives goes here. */ case 165: YY_RULE_SETUP #line 4998 "hla.flx" { _here; PushBackStr( "\xF1" ); TextCurIndex = 0; TextHead = NULL; TextTail = NULL; BEGIN 0; yyparse(); _here; } YY_BREAK case 166: YY_RULE_SETUP #line 5009 "hla.flx" { _here; TextCurLine[ TextCurIndex ] = *yytext; _if( TextCurIndex < 4095 ) ++TextCurIndex; _endif _here; } YY_BREAK case 167: /* rule 167 can match eol */ YY_RULE_SETUP #line 5020 "hla.flx" { struct TextList *temp; _here; ++LineCnt; ++TotalLines; TextCurLine[ TextCurIndex ] = '\0'; temp = malloc2( sizeof( struct TextList )); temp->next = NULL; temp->line = hlastrdup2( TextCurLine ); _if( TextTail == NULL ) TextHead = temp; TextTail = temp; _else TextTail->next = temp; TextTail = temp; _endif TextCurIndex = 0; _here; } YY_BREAK case 168: YY_RULE_SETUP #line 5046 "hla.flx" { struct TextList *temp; int cnt = 0; int i; _here; /* ** Grab the text up to, but not including ** the "#endtext" directive: */ TextCurLine[ TextCurIndex ] = '\0'; temp = malloc2( sizeof( struct TextList )); temp->next = NULL; temp->line = hlastrdup2( TextCurLine ); _if( TextTail == NULL ) TextHead = temp; TextTail = temp; _else TextTail->next = temp; TextTail = temp; _endif TextCurIndex = 0; /* ** Count the number of lines ** in the text block. */ temp = TextHead; _while( temp != NULL ) temp = temp->next; ++cnt; _endwhile /* ** Construct the $$ object for the parser. ** Begin by clearing out unimportant fields. */ yylval->v.Name = ""; yylval->v.TrueName = yylval->v.Name; yylval->v.StaticName = NULL; yylval->v.Offset = 0; yylval->v.Base = NULL; yylval->v.Fields = NULL; yylval->v.FieldCnt = 0; /* ** For an yylval constant, here are the important ** assignments. */ yylval->v.pType = tArray; yylval->v.SymClass = cConstant; yylval->v.Type = &string_ste; yylval->v.Arity = 1; yylval->v.Dimensions = malloc2( sizeof( int )); yylval->v.Dimensions[0] = cnt; yylval->v.NumElements = cnt; yylval->v.u.ArrayOfValues = malloc2( cnt * sizeofSymNode ); yylval->v.ObjectSize = cnt * sizeof( char* ); _for( i=0, iv.u.ArrayOfValues[i].Name = hlastrdup2( "" ); yylval->v.u.ArrayOfValues[i].TrueName = hlastrdup2( "" ); yylval->v.u.ArrayOfValues[i].SymClass = cConstant; yylval->v.u.ArrayOfValues[i].StaticName = NULL; yylval->v.u.ArrayOfValues[i].Base = NULL; yylval->v.u.ArrayOfValues[i].Fields = NULL; yylval->v.u.ArrayOfValues[i].FieldCnt = 0; yylval->v.u.ArrayOfValues[i].pType = tString; yylval->v.u.ArrayOfValues[i].Type = &string_ste; yylval->v.u.ArrayOfValues[i].Arity = 0; yylval->v.u.ArrayOfValues[i].Dimensions = NULL; yylval->v.u.ArrayOfValues[i].NumElements = 0; yylval->v.u.ArrayOfValues[i].u.strval = TextHead->line; temp = TextHead->next; free2( vss TextHead ); TextHead = temp; _endfor BEGIN 0; _here; _return endtextTkn; } YY_BREAK /* ** Code to handle the #STRING..#ENDSTRING directives goes here. */ case 169: YY_RULE_SETUP #line 5156 "hla.flx" { _here; stringBodySize = 256; stringBodyIndex = 0; stringBody = malloc2( 256 ); BEGIN 0; // Go process the string name parameter: PushBackStr( "\xE0" ); yyparse(); _here; } YY_BREAK case 170: YY_RULE_SETUP #line 5171 "hla.flx" { _here; stringBody[ stringBodyIndex ] = *yytext; ++stringBodyIndex; _if( stringBodyIndex >= stringBodySize ) stringBodySize += stringBodySize; stringBody = realloc( stringBody, stringBodySize ); _endif _here; } YY_BREAK case 171: /* rule 171 can match eol */ YY_RULE_SETUP #line 5184 "hla.flx" { _here; ++LineCnt; ++TotalLines; stringBody[ stringBodyIndex ] = *yytext; ++stringBodyIndex; _if( stringBodyIndex >= stringBodySize ) stringBodySize += stringBodySize; stringBody = realloc( stringBody, stringBodySize ); assert( stringBody != NULL ); _endif _here; } YY_BREAK case 172: YY_RULE_SETUP #line 5200 "hla.flx" { struct TextList *temp; int cnt = 0; int i; _here; stringBody[ stringBodyIndex ] = '\0'; /* ** Construct the $$ object for the parser. ** Begin by clearing out unimportant fields. */ yylval->v.Name = hlastrdup(""); yylval->v.TrueName = yylval->v.Name; yylval->v.StaticName = NULL; yylval->v.Offset = 0; yylval->v.Base = NULL; yylval->v.Fields = NULL; yylval->v.FieldCnt = 0; /* ** For an yylval constant, here are the important ** assignments. */ yylval->v.pType = tString; yylval->v.SymClass = cConstant; yylval->v.Type = &string_ste; yylval->v.Arity = 0; yylval->v.Dimensions = NULL; yylval->v.NumElements = 0; yylval->v.u.strval = realloc( stringBody, stringBodyIndex+2 ); yylval->v.ObjectSize = cnt * sizeof( char* ); BEGIN 0; _here; _return endstringTkn; } YY_BREAK /* ** Code to handle the #MATCH..#ENDMATCH directives goes here. */ case 173: YY_RULE_SETUP #line 5253 "hla.flx" { _here; matchBodySize = 256; matchBodyIndex = 0; matchBody = malloc2( 256 ); BEGIN 0; // Go process the string name parameter: PushBackStr( "\xDF" ); yyparse(); _here; } YY_BREAK case 174: YY_RULE_SETUP #line 5268 "hla.flx" { _here; matchBody[ matchBodyIndex ] = *yytext; ++matchBodyIndex; _if( matchBodyIndex >= matchBodySize ) matchBodySize += matchBodySize; matchBody = realloc( matchBody, matchBodySize ); _endif _here; } YY_BREAK case 175: /* rule 175 can match eol */ YY_RULE_SETUP #line 5281 "hla.flx" { _here; ++LineCnt; ++TotalLines; matchBody[ matchBodyIndex ] = *yytext; ++matchBodyIndex; _if( matchBodyIndex >= matchBodySize ) matchBodySize += matchBodySize; matchBody = realloc( matchBody, matchBodySize ); assert( matchBody != NULL ); _endif _here; } YY_BREAK case 176: YY_RULE_SETUP #line 5297 "hla.flx" { struct TextList *temp; int cnt = 0; int i; _here; matchBody[ matchBodyIndex ] = '\0'; /* ** Construct the $$ object for the parser. ** Begin by clearing out unimportant fields. */ yylval->v.Name = hlastrdup(""); yylval->v.TrueName = yylval->v.Name; yylval->v.StaticName = NULL; yylval->v.Offset = 0; yylval->v.Base = NULL; yylval->v.Fields = NULL; yylval->v.FieldCnt = 0; /* ** For an yylval constant, here are the important ** assignments. */ yylval->v.pType = tString; yylval->v.SymClass = cConstant; yylval->v.Type = &string_ste; yylval->v.Arity = 0; yylval->v.Dimensions = NULL; yylval->v.NumElements = 0; yylval->v.u.strval = matchBody; yylval->v.ObjectSize = cnt * sizeof( char* ); BEGIN 0; _here; _return endmatchTkn; } YY_BREAK /* ** Code to handle the #asm and #endasm directives goes here. */ case 177: YY_RULE_SETUP #line 5344 "hla.flx" { _here; BEGIN InASM; } YY_BREAK case YY_STATE_EOF(InASM): #line 5349 "hla.flx" { _returnif( BufSP < 0 ) -1; deleteSourceBuf(); } YY_BREAK case 178: YY_RULE_SETUP #line 5354 "hla.flx" { EndMacroExpansion(); } YY_BREAK /* ** Emit the text between #asm and #endasm: */ case 179: YY_RULE_SETUP #line 5365 "hla.flx" { asmPutc( *yytext ); } YY_BREAK case 180: /* rule 180 can match eol */ YY_RULE_SETUP #line 5366 "hla.flx" { asmPuts( "\n" ); ++LineCnt; ++TotalLines; } YY_BREAK case 181: YY_RULE_SETUP #line 5367 "hla.flx" { _here; BEGIN 0; } YY_BREAK /* ** Handle the "#emit" directive here. */ case 182: YY_RULE_SETUP #line 5375 "hla.flx" { /* ** Call the parser to read a string constant ** expression surrounded by parentheses. The ** return value comes back in d1ceReturnVal */ _here; PushBackStr( "\xFA" ); yyparse(); _if( !IsStr( d1ceReturnVal.v.pType )) yyerror( "#emit requires a string expression" ); _else asmPuts( d1ceReturnVal.v.u.strval ); asmPuts( "\n" ); _endif FreeValue( &d1ceReturnVal ); _here; } YY_BREAK /* "Normal" lexical analyzer stuff. ** ** These are the normal terminal symbols that HLA uses: */ case 183: YY_RULE_SETUP #line 5411 "hla.flx" { _return '*'; } YY_BREAK case 184: YY_RULE_SETUP #line 5412 "hla.flx" { _return '/'; } YY_BREAK case 185: YY_RULE_SETUP #line 5413 "hla.flx" { _return '+'; } YY_BREAK case 186: YY_RULE_SETUP #line 5414 "hla.flx" { _return '-'; } YY_BREAK case 187: YY_RULE_SETUP #line 5415 "hla.flx" { _return '('; } YY_BREAK case 188: YY_RULE_SETUP #line 5416 "hla.flx" { _return ')'; } YY_BREAK case 189: YY_RULE_SETUP #line 5417 "hla.flx" { _return '{'; } YY_BREAK case 190: YY_RULE_SETUP #line 5418 "hla.flx" { _return '}'; } YY_BREAK case 191: YY_RULE_SETUP #line 5419 "hla.flx" { _return '['; } YY_BREAK case 192: YY_RULE_SETUP #line 5420 "hla.flx" { _return ']'; } YY_BREAK case 193: YY_RULE_SETUP #line 5421 "hla.flx" { _return '<'; } YY_BREAK case 194: YY_RULE_SETUP #line 5422 "hla.flx" { _return '>'; } YY_BREAK case 195: YY_RULE_SETUP #line 5423 "hla.flx" { _return ':'; } YY_BREAK case 196: YY_RULE_SETUP #line 5424 "hla.flx" { _return ';'; } YY_BREAK case 197: YY_RULE_SETUP #line 5425 "hla.flx" { _return ','; } YY_BREAK case 198: YY_RULE_SETUP #line 5426 "hla.flx" { _return '.'; } YY_BREAK case 199: YY_RULE_SETUP #line 5427 "hla.flx" { _return '='; } YY_BREAK case 200: YY_RULE_SETUP #line 5428 "hla.flx" { _return '='; } YY_BREAK case 201: YY_RULE_SETUP #line 5429 "hla.flx" { _return '@'; } YY_BREAK case 202: YY_RULE_SETUP #line 5430 "hla.flx" { _return '&'; } YY_BREAK case 203: YY_RULE_SETUP #line 5431 "hla.flx" { _return '|'; } YY_BREAK case 204: YY_RULE_SETUP #line 5432 "hla.flx" { _return '^'; } YY_BREAK case 205: YY_RULE_SETUP #line 5433 "hla.flx" { _return '!'; } YY_BREAK case 206: YY_RULE_SETUP #line 5435 "hla.flx" { _return landTkn; } YY_BREAK case 207: YY_RULE_SETUP #line 5436 "hla.flx" { _return lorTkn; } YY_BREAK case 208: YY_RULE_SETUP #line 5437 "hla.flx" { _return shlopTkn; } YY_BREAK case 209: YY_RULE_SETUP #line 5438 "hla.flx" { _return shropTkn; } YY_BREAK case 210: YY_RULE_SETUP #line 5439 "hla.flx" { _return leTkn; } YY_BREAK case 211: YY_RULE_SETUP #line 5440 "hla.flx" { _return geTkn; } YY_BREAK case 212: YY_RULE_SETUP #line 5441 "hla.flx" { _return neTkn; } YY_BREAK case 213: YY_RULE_SETUP #line 5442 "hla.flx" { _return neTkn; } YY_BREAK case 214: YY_RULE_SETUP #line 5443 "hla.flx" { _return coloncolonTkn;} YY_BREAK case 215: YY_RULE_SETUP #line 5444 "hla.flx" { _return assignTkn; } YY_BREAK case 216: YY_RULE_SETUP #line 5445 "hla.flx" { _return addassignTkn; } YY_BREAK case 217: YY_RULE_SETUP #line 5446 "hla.flx" { _return subassignTkn; } YY_BREAK case 218: YY_RULE_SETUP #line 5447 "hla.flx" { _return DotDot; } YY_BREAK case 219: YY_RULE_SETUP #line 5448 "hla.flx" { _return stmtsTkn; } YY_BREAK case 220: YY_RULE_SETUP #line 5449 "hla.flx" { _return endstmtsTkn; } YY_BREAK case 221: YY_RULE_SETUP #line 5450 "hla.flx" { _here; _if( MacroSP >= 0 ) yylval->v.u.unsval = MacroStack[ MacroSP ].cnt; _else yylval->v.u.unsval = 0; _endif _here; _return intconst; } YY_BREAK /* ** Operator keywords */ case 222: YY_RULE_SETUP #line 5471 "hla.flx" { testRW(dupTkn); } YY_BREAK case 223: YY_RULE_SETUP #line 5472 "hla.flx" { testRW(modTkn); } YY_BREAK case 224: YY_RULE_SETUP #line 5473 "hla.flx" { _return dupTkn; } YY_BREAK case 225: YY_RULE_SETUP #line 5474 "hla.flx" { _return modTkn; } YY_BREAK /* ** Program structure keywords */ case 226: YY_RULE_SETUP #line 5481 "hla.flx" { testRW( beginTkn ); } YY_BREAK case 227: YY_RULE_SETUP #line 5482 "hla.flx" { testRW( endTkn ); } YY_BREAK case 228: YY_RULE_SETUP #line 5483 "hla.flx" { testRW( procedureTkn ); } YY_BREAK case 229: YY_RULE_SETUP #line 5484 "hla.flx" { testRW( iteratorTkn ); } YY_BREAK case 230: YY_RULE_SETUP #line 5485 "hla.flx" { testRW( methodTkn ); } YY_BREAK case 231: YY_RULE_SETUP #line 5486 "hla.flx" { testRW( programTkn ); } YY_BREAK case 232: YY_RULE_SETUP #line 5487 "hla.flx" { testRW( unitTkn ); } YY_BREAK case 233: YY_RULE_SETUP #line 5489 "hla.flx" { _return beginTkn; } YY_BREAK case 234: YY_RULE_SETUP #line 5490 "hla.flx" { _return endTkn; } YY_BREAK case 235: YY_RULE_SETUP #line 5491 "hla.flx" { _return procedureTkn; } YY_BREAK case 236: YY_RULE_SETUP #line 5492 "hla.flx" { _return iteratorTkn; } YY_BREAK case 237: YY_RULE_SETUP #line 5493 "hla.flx" { _return methodTkn; } YY_BREAK case 238: YY_RULE_SETUP #line 5494 "hla.flx" { _return programTkn; } YY_BREAK case 239: YY_RULE_SETUP #line 5495 "hla.flx" { _return unitTkn; } YY_BREAK case 240: YY_RULE_SETUP #line 5497 "hla.flx" { _here; PushBackStr( "\xe7\xe6" ); yyparse(); _here; } YY_BREAK case 241: YY_RULE_SETUP #line 5504 "hla.flx" { _here; _return DoMacroDclTkn; } YY_BREAK case 242: YY_RULE_SETUP #line 5508 "hla.flx" { _return macroTkn; } YY_BREAK case 243: YY_RULE_SETUP #line 5510 "hla.flx" { yyerror( "Unexpected #terminator" ); } YY_BREAK case 244: YY_RULE_SETUP #line 5511 "hla.flx" { yyerror( "Unexpected #keyword" ); } YY_BREAK case 245: YY_RULE_SETUP #line 5512 "hla.flx" { yyerror( "Unexpected #endmacro" ); } YY_BREAK case 246: YY_RULE_SETUP #line 5516 "hla.flx" { _here; PushBackStr( "\xe5\xe4" ); yyparse(); _here; } YY_BREAK case 247: YY_RULE_SETUP #line 5523 "hla.flx" { _here; _return DoRegexDclTkn; } YY_BREAK case 248: YY_RULE_SETUP #line 5527 "hla.flx" { _return regexMacroTkn; } YY_BREAK case 249: YY_RULE_SETUP #line 5529 "hla.flx" { yyerror( "Unexpected #endregex" ); } YY_BREAK case 250: YY_RULE_SETUP #line 5530 "hla.flx" { _return regexReturnTkn; } YY_BREAK /* ** Declaration keywords */ case 251: YY_RULE_SETUP #line 5536 "hla.flx" { testRW( labelTkn ); } YY_BREAK case 252: YY_RULE_SETUP #line 5537 "hla.flx" { testRW( endlabelTkn ); } YY_BREAK case 253: YY_RULE_SETUP #line 5538 "hla.flx" { testRW( constTkn ); } YY_BREAK case 254: YY_RULE_SETUP #line 5539 "hla.flx" { testRW( endconstTkn ); } YY_BREAK case 255: YY_RULE_SETUP #line 5540 "hla.flx" { testRW( valTkn ); } YY_BREAK case 256: YY_RULE_SETUP #line 5541 "hla.flx" { testRW( endvalTkn ); } YY_BREAK case 257: YY_RULE_SETUP #line 5542 "hla.flx" { testRW( typeTkn ); } YY_BREAK case 258: YY_RULE_SETUP #line 5543 "hla.flx" { testRW( endtypeTkn ); } YY_BREAK case 259: YY_RULE_SETUP #line 5544 "hla.flx" { testRW( alignTkn ); } YY_BREAK case 260: YY_RULE_SETUP #line 5545 "hla.flx" { testRW( varTkn ); } YY_BREAK case 261: YY_RULE_SETUP #line 5546 "hla.flx" { testRW( endvarTkn ); } YY_BREAK case 262: YY_RULE_SETUP #line 5547 "hla.flx" { testRW( staticTkn ); } YY_BREAK case 263: YY_RULE_SETUP #line 5548 "hla.flx" { testRW( endstaticTkn ); } YY_BREAK case 264: YY_RULE_SETUP #line 5549 "hla.flx" { testRW( uninitializedTkn ); } YY_BREAK case 265: YY_RULE_SETUP #line 5550 "hla.flx" { testRW( endstorageTkn ); } YY_BREAK case 266: YY_RULE_SETUP #line 5551 "hla.flx" { testRW( readonlyTkn ); } YY_BREAK case 267: YY_RULE_SETUP #line 5552 "hla.flx" { testRW( endreadonlyTkn ); } YY_BREAK case 268: YY_RULE_SETUP #line 5553 "hla.flx" { testRW( enumTkn ); } YY_BREAK case 269: YY_RULE_SETUP #line 5554 "hla.flx" { testRW( recordTkn ); } YY_BREAK case 270: YY_RULE_SETUP #line 5555 "hla.flx" { testRW( endrecordTkn ); } YY_BREAK case 271: YY_RULE_SETUP #line 5556 "hla.flx" { testRW( unionTkn ); } YY_BREAK case 272: YY_RULE_SETUP #line 5557 "hla.flx" { testRW( endunionTkn ); } YY_BREAK case 273: YY_RULE_SETUP #line 5558 "hla.flx" { testRW( classTkn ); } YY_BREAK case 274: YY_RULE_SETUP #line 5559 "hla.flx" { testRW( endclassTkn ); } YY_BREAK case 275: YY_RULE_SETUP #line 5560 "hla.flx" { testRW( inheritsTkn ); } YY_BREAK case 276: YY_RULE_SETUP #line 5561 "hla.flx" { testRW( vmtTkn ); } YY_BREAK case 277: YY_RULE_SETUP #line 5562 "hla.flx" { testRW( pointerTkn ); } YY_BREAK case 278: YY_RULE_SETUP #line 5563 "hla.flx" { testRW( toTkn ); } YY_BREAK case 279: YY_RULE_SETUP #line 5564 "hla.flx" { testRW( downtoTkn ); } YY_BREAK case 280: YY_RULE_SETUP #line 5565 "hla.flx" { testRW( externalTkn ); } YY_BREAK case 281: YY_RULE_SETUP #line 5566 "hla.flx" { testRW( abstractTkn ); } YY_BREAK case 282: YY_RULE_SETUP #line 5567 "hla.flx" { testRW( overrideTkn ); } YY_BREAK case 283: YY_RULE_SETUP #line 5568 "hla.flx" { testRW( overridesTkn ); } YY_BREAK case 284: YY_RULE_SETUP #line 5569 "hla.flx" { testRW( forwardTkn ); } YY_BREAK case 285: YY_RULE_SETUP #line 5570 "hla.flx" { testRW( returnsTkn ); } YY_BREAK case 286: YY_RULE_SETUP #line 5571 "hla.flx" { testRW( namespaceTkn ); } YY_BREAK case 287: YY_RULE_SETUP #line 5572 "hla.flx" { testRW( segmentTkn ); } YY_BREAK case 288: YY_RULE_SETUP #line 5574 "hla.flx" { _return labelTkn; } YY_BREAK case 289: YY_RULE_SETUP #line 5575 "hla.flx" { _return endlabelTkn; } YY_BREAK case 290: YY_RULE_SETUP #line 5576 "hla.flx" { _return constTkn; } YY_BREAK case 291: YY_RULE_SETUP #line 5577 "hla.flx" { _return endconstTkn; } YY_BREAK case 292: YY_RULE_SETUP #line 5578 "hla.flx" { _return valTkn; } YY_BREAK case 293: YY_RULE_SETUP #line 5579 "hla.flx" { _return endvalTkn; } YY_BREAK case 294: YY_RULE_SETUP #line 5580 "hla.flx" { _return typeTkn; } YY_BREAK case 295: YY_RULE_SETUP #line 5581 "hla.flx" { _return endtypeTkn; } YY_BREAK case 296: YY_RULE_SETUP #line 5582 "hla.flx" { _return alignTkn; } YY_BREAK case 297: YY_RULE_SETUP #line 5583 "hla.flx" { _return varTkn; } YY_BREAK case 298: YY_RULE_SETUP #line 5584 "hla.flx" { _return endvarTkn; } YY_BREAK case 299: YY_RULE_SETUP #line 5585 "hla.flx" { _return staticTkn; } YY_BREAK case 300: YY_RULE_SETUP #line 5586 "hla.flx" { _return endstaticTkn; } YY_BREAK case 301: YY_RULE_SETUP #line 5587 "hla.flx" { _return uninitializedTkn; } YY_BREAK case 302: YY_RULE_SETUP #line 5588 "hla.flx" { _return endstorageTkn; } YY_BREAK case 303: YY_RULE_SETUP #line 5589 "hla.flx" { _return readonlyTkn; } YY_BREAK case 304: YY_RULE_SETUP #line 5590 "hla.flx" { _return endreadonlyTkn; } YY_BREAK case 305: YY_RULE_SETUP #line 5591 "hla.flx" { _return enumTkn; } YY_BREAK case 306: YY_RULE_SETUP #line 5592 "hla.flx" { _return recordTkn; } YY_BREAK case 307: YY_RULE_SETUP #line 5593 "hla.flx" { _return endrecordTkn; } YY_BREAK case 308: YY_RULE_SETUP #line 5594 "hla.flx" { _return unionTkn; } YY_BREAK case 309: YY_RULE_SETUP #line 5595 "hla.flx" { _return endunionTkn; } YY_BREAK case 310: YY_RULE_SETUP #line 5596 "hla.flx" { _return classTkn; } YY_BREAK case 311: YY_RULE_SETUP #line 5597 "hla.flx" { _return endclassTkn; } YY_BREAK case 312: YY_RULE_SETUP #line 5598 "hla.flx" { _return inheritsTkn; } YY_BREAK case 313: YY_RULE_SETUP #line 5599 "hla.flx" { _return vmtTkn; } YY_BREAK case 314: YY_RULE_SETUP #line 5600 "hla.flx" { _return pointerTkn; } YY_BREAK case 315: YY_RULE_SETUP #line 5601 "hla.flx" { _return toTkn; } YY_BREAK case 316: YY_RULE_SETUP #line 5602 "hla.flx" { _return downtoTkn; } YY_BREAK case 317: YY_RULE_SETUP #line 5603 "hla.flx" { _return externalTkn; } YY_BREAK case 318: YY_RULE_SETUP #line 5604 "hla.flx" { _return abstractTkn; } YY_BREAK case 319: YY_RULE_SETUP #line 5605 "hla.flx" { _return overrideTkn; } YY_BREAK case 320: YY_RULE_SETUP #line 5606 "hla.flx" { _return overridesTkn; } YY_BREAK case 321: YY_RULE_SETUP #line 5607 "hla.flx" { _return forwardTkn; } YY_BREAK case 322: YY_RULE_SETUP #line 5608 "hla.flx" { _return returnsTkn; } YY_BREAK case 323: YY_RULE_SETUP #line 5609 "hla.flx" { _return namespaceTkn; } YY_BREAK case 324: YY_RULE_SETUP #line 5610 "hla.flx" { _return segmentTkn; } YY_BREAK case 325: YY_RULE_SETUP #line 5612 "hla.flx" { _return fastTkn; } YY_BREAK case 326: YY_RULE_SETUP #line 5613 "hla.flx" { _return noframeTkn; } YY_BREAK case 327: YY_RULE_SETUP #line 5614 "hla.flx" { _return frameTkn; } YY_BREAK case 328: YY_RULE_SETUP #line 5615 "hla.flx" { _return nodisplayTkn; } YY_BREAK case 329: YY_RULE_SETUP #line 5616 "hla.flx" { _return displayTkn; } YY_BREAK case 330: YY_RULE_SETUP #line 5617 "hla.flx" { _return noalignstkTkn; } YY_BREAK case 331: YY_RULE_SETUP #line 5618 "hla.flx" { _return alignstkTkn; } YY_BREAK case 332: YY_RULE_SETUP #line 5619 "hla.flx" { _return noalignstkTkn; } YY_BREAK case 333: YY_RULE_SETUP #line 5620 "hla.flx" { _return alignstkTkn; } YY_BREAK case 334: YY_RULE_SETUP #line 5621 "hla.flx" { _return alignprocTkn; } YY_BREAK case 335: YY_RULE_SETUP #line 5622 "hla.flx" { _return nostorageTkn; } YY_BREAK case 336: YY_RULE_SETUP #line 5623 "hla.flx" { _return useTkn; } YY_BREAK case 337: YY_RULE_SETUP #line 5624 "hla.flx" { _return useenterTkn; } YY_BREAK case 338: YY_RULE_SETUP #line 5625 "hla.flx" { _return noenterTkn; } YY_BREAK case 339: YY_RULE_SETUP #line 5626 "hla.flx" { _return useleaveTkn; } YY_BREAK case 340: YY_RULE_SETUP #line 5627 "hla.flx" { _return noleaveTkn; } YY_BREAK case 341: YY_RULE_SETUP #line 5628 "hla.flx" { _return volatileTkn; } YY_BREAK case 342: YY_RULE_SETUP #line 5629 "hla.flx" { _return pascalTkn; } YY_BREAK case 343: YY_RULE_SETUP #line 5630 "hla.flx" { _return cdeclTkn; } YY_BREAK case 344: YY_RULE_SETUP #line 5631 "hla.flx" { _return stdcallTkn; } YY_BREAK case 345: YY_RULE_SETUP #line 5632 "hla.flx" { _return returnsTkn; } YY_BREAK case 346: YY_RULE_SETUP #line 5633 "hla.flx" { _return forwardTkn; } YY_BREAK case 347: YY_RULE_SETUP #line 5634 "hla.flx" { _return externalTkn; } YY_BREAK case 348: YY_RULE_SETUP #line 5635 "hla.flx" { _return abstractTkn; } YY_BREAK case 349: YY_RULE_SETUP #line 5636 "hla.flx" { _return hereTkn; } YY_BREAK /* ** Parameter passing mechanism keywords */ case 350: YY_RULE_SETUP #line 5643 "hla.flx" { testRW( nameTkn ); } YY_BREAK case 351: YY_RULE_SETUP #line 5644 "hla.flx" { testRW( resultTkn ); } YY_BREAK case 352: YY_RULE_SETUP #line 5645 "hla.flx" { testRW( valresTkn ); } YY_BREAK case 353: YY_RULE_SETUP #line 5646 "hla.flx" { testRW( lazyTkn ); } YY_BREAK case 354: YY_RULE_SETUP #line 5647 "hla.flx" { testRW( thunkTkn ); } YY_BREAK case 355: YY_RULE_SETUP #line 5649 "hla.flx" { _return nameTkn; } YY_BREAK case 356: YY_RULE_SETUP #line 5650 "hla.flx" { _return resultTkn; } YY_BREAK case 357: YY_RULE_SETUP #line 5651 "hla.flx" { _return valresTkn; } YY_BREAK case 358: YY_RULE_SETUP #line 5652 "hla.flx" { _return lazyTkn; } YY_BREAK case 359: YY_RULE_SETUP #line 5653 "hla.flx" { _return thunkTkn; } YY_BREAK /* ** NULL is the reserved word that corresponds to the NULL pointer. */ case 360: YY_RULE_SETUP #line 5660 "hla.flx" { testRW( nullTkn ); } YY_BREAK case 361: YY_RULE_SETUP #line 5661 "hla.flx" { _return nullTkn; } YY_BREAK /* ** High level language tokens. */ case 362: YY_RULE_SETUP #line 5669 "hla.flx" { testRW( jfTkn ); } YY_BREAK case 363: YY_RULE_SETUP #line 5670 "hla.flx" { testRW( jtTkn ); } YY_BREAK case 364: YY_RULE_SETUP #line 5671 "hla.flx" { testRW( ifTkn ); } YY_BREAK case 365: YY_RULE_SETUP #line 5672 "hla.flx" { testRW( thenTkn ); } YY_BREAK case 366: YY_RULE_SETUP #line 5673 "hla.flx" { testRW( elseifTkn ); } YY_BREAK case 367: YY_RULE_SETUP #line 5674 "hla.flx" { testRW( elseTkn ); } YY_BREAK case 368: YY_RULE_SETUP #line 5675 "hla.flx" { testRW( endifTkn ); } YY_BREAK case 369: YY_RULE_SETUP #line 5676 "hla.flx" { testRW( switchTkn ); } YY_BREAK case 370: YY_RULE_SETUP #line 5677 "hla.flx" { testRW( caseTkn ); } YY_BREAK case 371: YY_RULE_SETUP #line 5678 "hla.flx" { testRW( defaultTkn ); } YY_BREAK case 372: YY_RULE_SETUP #line 5679 "hla.flx" { testRW( endswitchTkn ); } YY_BREAK case 373: YY_RULE_SETUP #line 5680 "hla.flx" { testRW( whileTkn ); } YY_BREAK case 374: YY_RULE_SETUP #line 5681 "hla.flx" { testRW( doTkn ); } YY_BREAK case 375: YY_RULE_SETUP #line 5682 "hla.flx" { testRW( endwhileTkn ); } YY_BREAK case 376: YY_RULE_SETUP #line 5683 "hla.flx" { testRW( welseTkn ); } YY_BREAK case 377: YY_RULE_SETUP #line 5684 "hla.flx" { testRW( repeatTkn ); } YY_BREAK case 378: YY_RULE_SETUP #line 5685 "hla.flx" { testRW( untilTkn ); } YY_BREAK case 379: YY_RULE_SETUP #line 5686 "hla.flx" { testRW( forTkn ); } YY_BREAK case 380: YY_RULE_SETUP #line 5687 "hla.flx" { testRW( foreverTkn ); } YY_BREAK case 381: YY_RULE_SETUP #line 5688 "hla.flx" { testRW( foreachTkn ); } YY_BREAK case 382: YY_RULE_SETUP #line 5689 "hla.flx" { testRW( endforTkn ); } YY_BREAK case 383: YY_RULE_SETUP #line 5690 "hla.flx" { testRW( felseTkn ); } YY_BREAK case 384: YY_RULE_SETUP #line 5691 "hla.flx" { testRW( breakTkn ); } YY_BREAK case 385: YY_RULE_SETUP #line 5692 "hla.flx" { testRW( breakifTkn ); } YY_BREAK case 386: YY_RULE_SETUP #line 5693 "hla.flx" { testRW( continueTkn ); } YY_BREAK case 387: YY_RULE_SETUP #line 5694 "hla.flx" { testRW( continueifTkn ); } YY_BREAK case 388: YY_RULE_SETUP #line 5695 "hla.flx" { testRW( exitTkn ); } YY_BREAK case 389: YY_RULE_SETUP #line 5696 "hla.flx" { testRW( exitifTkn ); } YY_BREAK case 390: YY_RULE_SETUP #line 5697 "hla.flx" { testRW( tryTkn ); } YY_BREAK case 391: YY_RULE_SETUP #line 5698 "hla.flx" { testRW( unprotectedTkn ); } YY_BREAK case 392: YY_RULE_SETUP #line 5699 "hla.flx" { testRW( exceptionTkn ); } YY_BREAK case 393: YY_RULE_SETUP #line 5700 "hla.flx" { testRW( anyexceptionTkn );} YY_BREAK case 394: YY_RULE_SETUP #line 5701 "hla.flx" { testRW( endtryTkn ); } YY_BREAK case 395: YY_RULE_SETUP #line 5702 "hla.flx" { testRW( raiseTkn ); } YY_BREAK case 396: YY_RULE_SETUP #line 5707 "hla.flx" { _return jfTkn; } YY_BREAK case 397: YY_RULE_SETUP #line 5708 "hla.flx" { _return jtTkn; } YY_BREAK case 398: YY_RULE_SETUP #line 5709 "hla.flx" { _return ifTkn; } YY_BREAK case 399: YY_RULE_SETUP #line 5710 "hla.flx" { _return thenTkn; } YY_BREAK case 400: YY_RULE_SETUP #line 5711 "hla.flx" { _return elseifTkn; } YY_BREAK case 401: YY_RULE_SETUP #line 5712 "hla.flx" { _return elseTkn; } YY_BREAK case 402: YY_RULE_SETUP #line 5713 "hla.flx" { _return endifTkn; } YY_BREAK case 403: YY_RULE_SETUP #line 5714 "hla.flx" { _return switchTkn; } YY_BREAK case 404: YY_RULE_SETUP #line 5715 "hla.flx" { _return caseTkn; } YY_BREAK case 405: YY_RULE_SETUP #line 5716 "hla.flx" { _return defaultTkn; } YY_BREAK case 406: YY_RULE_SETUP #line 5717 "hla.flx" { _return endswitchTkn; } YY_BREAK case 407: YY_RULE_SETUP #line 5718 "hla.flx" { _return whileTkn; } YY_BREAK case 408: YY_RULE_SETUP #line 5719 "hla.flx" { _return doTkn; } YY_BREAK case 409: YY_RULE_SETUP #line 5720 "hla.flx" { _return endwhileTkn; } YY_BREAK case 410: YY_RULE_SETUP #line 5721 "hla.flx" { _return welseTkn; } YY_BREAK case 411: YY_RULE_SETUP #line 5722 "hla.flx" { _return repeatTkn; } YY_BREAK case 412: YY_RULE_SETUP #line 5723 "hla.flx" { _return untilTkn; } YY_BREAK case 413: YY_RULE_SETUP #line 5724 "hla.flx" { _return forTkn; } YY_BREAK case 414: YY_RULE_SETUP #line 5725 "hla.flx" { _return foreverTkn; } YY_BREAK case 415: YY_RULE_SETUP #line 5726 "hla.flx" { _return foreachTkn; } YY_BREAK case 416: YY_RULE_SETUP #line 5727 "hla.flx" { _return endforTkn; } YY_BREAK case 417: YY_RULE_SETUP #line 5728 "hla.flx" { _return felseTkn; } YY_BREAK case 418: YY_RULE_SETUP #line 5729 "hla.flx" { _return breakTkn; } YY_BREAK case 419: YY_RULE_SETUP #line 5730 "hla.flx" { _return breakifTkn; } YY_BREAK case 420: YY_RULE_SETUP #line 5731 "hla.flx" { _return continueTkn; } YY_BREAK case 421: YY_RULE_SETUP #line 5732 "hla.flx" { _return continueifTkn; } YY_BREAK case 422: YY_RULE_SETUP #line 5733 "hla.flx" { _return exitTkn; } YY_BREAK case 423: YY_RULE_SETUP #line 5734 "hla.flx" { _return exitifTkn; } YY_BREAK case 424: YY_RULE_SETUP #line 5735 "hla.flx" { _return tryTkn; } YY_BREAK case 425: YY_RULE_SETUP #line 5736 "hla.flx" { _return unprotectedTkn; } YY_BREAK case 426: YY_RULE_SETUP #line 5737 "hla.flx" { _return exceptionTkn; } YY_BREAK case 427: YY_RULE_SETUP #line 5738 "hla.flx" { _return anyexceptionTkn; } YY_BREAK case 428: YY_RULE_SETUP #line 5739 "hla.flx" { _return endtryTkn; } YY_BREAK case 429: YY_RULE_SETUP #line 5740 "hla.flx" { _return raiseTkn; } YY_BREAK /* ** Data type reserved words */ case 430: YY_RULE_SETUP #line 5751 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 431: YY_RULE_SETUP #line 5756 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 432: YY_RULE_SETUP #line 5761 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 433: YY_RULE_SETUP #line 5766 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 434: YY_RULE_SETUP #line 5771 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 435: YY_RULE_SETUP #line 5777 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 436: YY_RULE_SETUP #line 5782 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 437: YY_RULE_SETUP #line 5787 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 438: YY_RULE_SETUP #line 5792 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 439: YY_RULE_SETUP #line 5797 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 440: YY_RULE_SETUP #line 5802 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 441: YY_RULE_SETUP #line 5807 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 442: YY_RULE_SETUP #line 5812 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 443: YY_RULE_SETUP #line 5817 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 444: YY_RULE_SETUP #line 5822 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 445: YY_RULE_SETUP #line 5827 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 446: YY_RULE_SETUP #line 5832 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 447: YY_RULE_SETUP #line 5837 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 448: YY_RULE_SETUP #line 5842 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 449: YY_RULE_SETUP #line 5847 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 450: YY_RULE_SETUP #line 5852 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 451: YY_RULE_SETUP #line 5857 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 452: YY_RULE_SETUP #line 5862 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 453: YY_RULE_SETUP #line 5867 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 454: YY_RULE_SETUP #line 5872 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 455: YY_RULE_SETUP #line 5877 "hla.flx" { yylval->idStr = hlastrdup2( yytext ); _return UndefID; } YY_BREAK case 456: YY_RULE_SETUP #line 5886 "hla.flx" { _here; yylval->v.Type= &byte_ste; yylval->v.pType = tByte; _here; testRW( byteTkn ); } YY_BREAK case 457: YY_RULE_SETUP #line 5894 "hla.flx" { _here; yylval->v.Type= &byte_ste; yylval->v.pType = tByte; _here; _return byteTkn; } YY_BREAK case 458: YY_RULE_SETUP #line 5902 "hla.flx" { _here; _return atbyteTkn; } YY_BREAK case 459: YY_RULE_SETUP #line 5907 "hla.flx" { _here; yylval->v.Type= &word_ste; yylval->v.pType = tWord; _here; testRW( wordTkn ); } YY_BREAK case 460: YY_RULE_SETUP #line 5915 "hla.flx" { _here; yylval->v.Type= &word_ste; yylval->v.pType = tWord; _here; _return wordTkn; } YY_BREAK case 461: YY_RULE_SETUP #line 5923 "hla.flx" { _here; _return atwordTkn; } YY_BREAK case 462: YY_RULE_SETUP #line 5928 "hla.flx" { _here; yylval->v.Type= &dword_ste; yylval->v.pType = tDWord; _here; testRW( dwordTkn ); } YY_BREAK case 463: YY_RULE_SETUP #line 5936 "hla.flx" { _here; yylval->v.Type= &dword_ste; yylval->v.pType = tDWord; _here; _return dwordTkn; } YY_BREAK case 464: YY_RULE_SETUP #line 5944 "hla.flx" { _here; _return atdwordTkn; } YY_BREAK case 465: YY_RULE_SETUP #line 5949 "hla.flx" { _here; yylval->v.Type= &qword_ste; yylval->v.pType = tQWord; _here; testRW( qwordTkn ); } YY_BREAK case 466: YY_RULE_SETUP #line 5957 "hla.flx" { _here; yylval->v.Type= &qword_ste; yylval->v.pType = tQWord; _here; _return qwordTkn; } YY_BREAK case 467: YY_RULE_SETUP #line 5965 "hla.flx" { _here; _return atqwordTkn; } YY_BREAK case 468: YY_RULE_SETUP #line 5970 "hla.flx" { _here; yylval->v.Type= &tbyte_ste; yylval->v.pType = tTByte; _here; testRW( tbyteTkn ); } YY_BREAK case 469: YY_RULE_SETUP #line 5978 "hla.flx" { _here; yylval->v.Type= &tbyte_ste; yylval->v.pType = tTByte; _here; _return tbyteTkn; } YY_BREAK case 470: YY_RULE_SETUP #line 5986 "hla.flx" { _here; yylval->v.Type= &lword_ste; yylval->v.pType = tLWord; _here; testRW( lwordTkn ); } YY_BREAK case 471: YY_RULE_SETUP #line 5995 "hla.flx" { _here; yylval->v.Type= &lword_ste; yylval->v.pType = tLWord; _here; _return lwordTkn; } YY_BREAK case 472: YY_RULE_SETUP #line 6004 "hla.flx" { _here; _return atlwordTkn; } YY_BREAK case 473: YY_RULE_SETUP #line 6009 "hla.flx" { _here; yylval->v.Type= &boolean_ste; yylval->v.pType = tBoolean; _here; testRW( booleanTkn ); } YY_BREAK case 474: YY_RULE_SETUP #line 6017 "hla.flx" { _here; yylval->v.Type= &boolean_ste; yylval->v.pType = tBoolean; _here; _return booleanTkn; } YY_BREAK case 475: YY_RULE_SETUP #line 6026 "hla.flx" { _here; yylval->v.Type= &int8_ste; yylval->v.pType = tInt8; _here; testRW( int8Tkn ); } YY_BREAK case 476: YY_RULE_SETUP #line 6034 "hla.flx" { _here; yylval->v.Type= &int8_ste; yylval->v.pType = tInt8; _here; _return int8Tkn; } YY_BREAK case 477: YY_RULE_SETUP #line 6042 "hla.flx" { _here; _return atint8Tkn; } YY_BREAK case 478: YY_RULE_SETUP #line 6047 "hla.flx" { _here; yylval->v.Type= &int16_ste; yylval->v.pType = tInt16; _here; testRW( int16Tkn ); } YY_BREAK case 479: YY_RULE_SETUP #line 6055 "hla.flx" { _here; yylval->v.Type= &int16_ste; yylval->v.pType = tInt16; _here; _return int16Tkn; } YY_BREAK case 480: YY_RULE_SETUP #line 6063 "hla.flx" { _here; _return atint16Tkn; } YY_BREAK case 481: YY_RULE_SETUP #line 6068 "hla.flx" { _here; yylval->v.Type= &int32_ste; yylval->v.pType = tInt32; _here; testRW( int32Tkn ); } YY_BREAK case 482: YY_RULE_SETUP #line 6076 "hla.flx" { _here; yylval->v.Type= &int32_ste; yylval->v.pType = tInt32; _here; _return int32Tkn; } YY_BREAK case 483: YY_RULE_SETUP #line 6084 "hla.flx" { _here; _return atint32Tkn; } YY_BREAK case 484: YY_RULE_SETUP #line 6089 "hla.flx" { _here; yylval->v.Type= &int64_ste; yylval->v.pType = tInt64; _here; testRW( int64Tkn ); } YY_BREAK case 485: YY_RULE_SETUP #line 6097 "hla.flx" { _here; yylval->v.Type= &int64_ste; yylval->v.pType = tInt64; _here; _return int64Tkn; } YY_BREAK case 486: YY_RULE_SETUP #line 6105 "hla.flx" { _here; _return atint64Tkn; } YY_BREAK case 487: YY_RULE_SETUP #line 6110 "hla.flx" { _here; yylval->v.Type= &int128_ste; yylval->v.pType = tInt128; _here; testRW( int128Tkn ); } YY_BREAK case 488: YY_RULE_SETUP #line 6118 "hla.flx" { _here; yylval->v.Type= &int128_ste; yylval->v.pType = tInt128; _here; _return int128Tkn; } YY_BREAK case 489: YY_RULE_SETUP #line 6127 "hla.flx" { _here; _return atint128Tkn; } YY_BREAK case 490: YY_RULE_SETUP #line 6132 "hla.flx" { _here; yylval->v.Type= &char_ste; yylval->v.pType = tChar; _here; testRW( charTkn ); } YY_BREAK case 491: YY_RULE_SETUP #line 6140 "hla.flx" { _here; yylval->v.Type= &char_ste; yylval->v.pType = tChar; _here; _return charTkn; } YY_BREAK case 492: YY_RULE_SETUP #line 6148 "hla.flx" { _here; _return atcharTkn; } YY_BREAK case 493: YY_RULE_SETUP #line 6153 "hla.flx" { _here; yylval->v.Type= &wchar_ste; yylval->v.pType = tWChar; _here; testRW( wcharTkn ); } YY_BREAK case 494: YY_RULE_SETUP #line 6161 "hla.flx" { _here; yylval->v.Type= &wchar_ste; yylval->v.pType = tWChar; _here; _return wcharTkn; } YY_BREAK case 495: YY_RULE_SETUP #line 6169 "hla.flx" { _here; _return atwcharTkn; } YY_BREAK case 496: YY_RULE_SETUP #line 6174 "hla.flx" { _here; yylval->v.Type= &real32_ste; yylval->v.pType = tReal32; _here; testRW( real32Tkn ); } YY_BREAK case 497: YY_RULE_SETUP #line 6182 "hla.flx" { _here; yylval->v.Type= &real32_ste; yylval->v.pType = tReal32; _here; _return real32Tkn; } YY_BREAK case 498: YY_RULE_SETUP #line 6190 "hla.flx" { _here; _return atreal32Tkn; } YY_BREAK case 499: YY_RULE_SETUP #line 6195 "hla.flx" { _here; yylval->v.Type= &real64_ste; yylval->v.pType = tReal64; _here; testRW( real64Tkn ); } YY_BREAK case 500: YY_RULE_SETUP #line 6203 "hla.flx" { _here; yylval->v.Type= &real64_ste; yylval->v.pType = tReal64; _here; _return real64Tkn; } YY_BREAK case 501: YY_RULE_SETUP #line 6211 "hla.flx" { _here; _return atreal64Tkn; } YY_BREAK case 502: YY_RULE_SETUP #line 6216 "hla.flx" { _here; yylval->v.Type= &real80_ste; yylval->v.pType = tReal80; _here; testRW( real80Tkn ); } YY_BREAK case 503: YY_RULE_SETUP #line 6224 "hla.flx" { _here; yylval->v.Type= &real80_ste; yylval->v.pType = tReal80; _here; _return real80Tkn; } YY_BREAK case 504: YY_RULE_SETUP #line 6232 "hla.flx" { _here; _return atreal80Tkn; } YY_BREAK case 505: YY_RULE_SETUP #line 6237 "hla.flx" { _here; yylval->v.Type= &real128_ste; yylval->v.pType = tReal128; _here; testRW( real128Tkn ); } YY_BREAK case 506: YY_RULE_SETUP #line 6246 "hla.flx" { _here; yylval->v.Type= &real128_ste; yylval->v.pType = tReal128; _here; _return real128Tkn; } YY_BREAK case 507: YY_RULE_SETUP #line 6256 "hla.flx" { _here; yylval->v.Type= &uns8_ste; yylval->v.pType = tUns8; _here; testRW( uns8Tkn ); } YY_BREAK case 508: YY_RULE_SETUP #line 6264 "hla.flx" { _here; yylval->v.Type= &uns8_ste; yylval->v.pType = tUns8; _here; _return uns8Tkn; } YY_BREAK case 509: YY_RULE_SETUP #line 6272 "hla.flx" { _here; _return atuns8Tkn; } YY_BREAK case 510: YY_RULE_SETUP #line 6277 "hla.flx" { _here; yylval->v.Type= &uns16_ste; yylval->v.pType = tUns16; _here; testRW( uns16Tkn ); } YY_BREAK case 511: YY_RULE_SETUP #line 6285 "hla.flx" { _here; yylval->v.Type= &uns16_ste; yylval->v.pType = tUns16; _here; _return uns16Tkn; } YY_BREAK case 512: YY_RULE_SETUP #line 6293 "hla.flx" { _here; _return atuns16Tkn; } YY_BREAK case 513: YY_RULE_SETUP #line 6298 "hla.flx" { _here; yylval->v.Type= &uns32_ste; yylval->v.pType = tUns32; _here; testRW( uns32Tkn ); } YY_BREAK case 514: YY_RULE_SETUP #line 6306 "hla.flx" { _here; yylval->v.Type= &uns32_ste; yylval->v.pType = tUns32; _here; _return uns32Tkn; } YY_BREAK case 515: YY_RULE_SETUP #line 6314 "hla.flx" { _here; _return atuns32Tkn; } YY_BREAK case 516: YY_RULE_SETUP #line 6319 "hla.flx" { _here; yylval->v.Type= &uns64_ste; yylval->v.pType = tUns64; _here; testRW( uns64Tkn ); } YY_BREAK case 517: YY_RULE_SETUP #line 6327 "hla.flx" { _here; yylval->v.Type= &uns64_ste; yylval->v.pType = tUns64; _here; _return uns64Tkn; } YY_BREAK case 518: YY_RULE_SETUP #line 6335 "hla.flx" { _here; _return atuns64Tkn; } YY_BREAK case 519: YY_RULE_SETUP #line 6340 "hla.flx" { _here; yylval->v.Type= &uns128_ste; yylval->v.pType = tUns128; _here; testRW( uns128Tkn ); } YY_BREAK case 520: YY_RULE_SETUP #line 6348 "hla.flx" { _here; yylval->v.Type= &uns128_ste; yylval->v.pType = tUns128; _here; _return uns128Tkn; } YY_BREAK case 521: YY_RULE_SETUP #line 6356 "hla.flx" { _here; _return atuns128Tkn; } YY_BREAK case 522: YY_RULE_SETUP #line 6361 "hla.flx" { _here; yylval->v.Type= &string_ste; yylval->v.pType = tString; _here; testRW( stringTkn ); } YY_BREAK case 523: YY_RULE_SETUP #line 6369 "hla.flx" { _here; yylval->v.Type= &string_ste; yylval->v.pType = tString; _here; _return stringTkn; } YY_BREAK case 524: YY_RULE_SETUP #line 6377 "hla.flx" { _here; _return atstringTkn; } YY_BREAK case 525: YY_RULE_SETUP #line 6382 "hla.flx" { _here; yylval->v.Type= &zstring_ste; yylval->v.pType = tZString; _here; testRW( zstringTkn ); } YY_BREAK case 526: YY_RULE_SETUP #line 6390 "hla.flx" { _here; yylval->v.Type= &zstring_ste; yylval->v.pType = tZString; _here; _return zstringTkn; } YY_BREAK case 527: YY_RULE_SETUP #line 6398 "hla.flx" { _here; _return atstringTkn; } YY_BREAK case 528: YY_RULE_SETUP #line 6403 "hla.flx" { _here; yylval->v.Type= &wstring_ste; yylval->v.pType = tWString; _here; testRW( wstringTkn ); } YY_BREAK case 529: YY_RULE_SETUP #line 6411 "hla.flx" { _here; yylval->v.Type= &wstring_ste; yylval->v.pType = tWString; _here; _return wstringTkn; } YY_BREAK case 530: YY_RULE_SETUP #line 6419 "hla.flx" { _here; _return atwstringTkn; } YY_BREAK case 531: YY_RULE_SETUP #line 6424 "hla.flx" { _here; yylval->v.Type= ®ex_ste; yylval->v.pType = tRegex; _here; testRW( regexTkn ); } YY_BREAK case 532: YY_RULE_SETUP #line 6432 "hla.flx" { _here; yylval->v.Type= ®ex_ste; yylval->v.pType = tRegex; _here; _return regexTkn; } YY_BREAK case 533: YY_RULE_SETUP #line 6440 "hla.flx" { _here; yylval->v.Type= &cset_ste; yylval->v.pType = tCset; _here; testRW( csetTkn ); } YY_BREAK case 534: YY_RULE_SETUP #line 6448 "hla.flx" { _here; yylval->v.Type= &cset_ste; yylval->v.pType = tCset; _here; _return csetTkn; } YY_BREAK case 535: YY_RULE_SETUP #line 6456 "hla.flx" { _here; _return atcsetTkn; } YY_BREAK case 536: YY_RULE_SETUP #line 6461 "hla.flx" { _here; _return atpointerTkn; } YY_BREAK case 537: YY_RULE_SETUP #line 6466 "hla.flx" { _here; yylval->v.Type= &text_ste; yylval->v.pType = tText; _here; testRW( textTkn ); } YY_BREAK case 538: YY_RULE_SETUP #line 6474 "hla.flx" { _here; yylval->v.Type= &text_ste; yylval->v.pType = tText; _here; _return textTkn; } YY_BREAK /* ** Machine Registers */ /* FPU registers */ case 539: YY_RULE_SETUP #line 6488 "hla.flx" { testRW( st0Tkn ); } YY_BREAK case 540: YY_RULE_SETUP #line 6489 "hla.flx" { testRW( st1Tkn ); } YY_BREAK case 541: YY_RULE_SETUP #line 6490 "hla.flx" { testRW( st2Tkn ); } YY_BREAK case 542: YY_RULE_SETUP #line 6491 "hla.flx" { testRW( st3Tkn ); } YY_BREAK case 543: YY_RULE_SETUP #line 6492 "hla.flx" { testRW( st4Tkn ); } YY_BREAK case 544: YY_RULE_SETUP #line 6493 "hla.flx" { testRW( st5Tkn ); } YY_BREAK case 545: YY_RULE_SETUP #line 6494 "hla.flx" { testRW( st6Tkn ); } YY_BREAK case 546: YY_RULE_SETUP #line 6495 "hla.flx" { testRW( st7Tkn ); } YY_BREAK case 547: YY_RULE_SETUP #line 6497 "hla.flx" { _return st0Tkn; } YY_BREAK case 548: YY_RULE_SETUP #line 6498 "hla.flx" { _return st1Tkn; } YY_BREAK case 549: YY_RULE_SETUP #line 6499 "hla.flx" { _return st2Tkn; } YY_BREAK case 550: YY_RULE_SETUP #line 6500 "hla.flx" { _return st3Tkn; } YY_BREAK case 551: YY_RULE_SETUP #line 6501 "hla.flx" { _return st4Tkn; } YY_BREAK case 552: YY_RULE_SETUP #line 6502 "hla.flx" { _return st5Tkn; } YY_BREAK case 553: YY_RULE_SETUP #line 6503 "hla.flx" { _return st6Tkn; } YY_BREAK case 554: YY_RULE_SETUP #line 6504 "hla.flx" { _return st7Tkn; } YY_BREAK /* MMX Registers */ case 555: YY_RULE_SETUP #line 6508 "hla.flx" { testRW( mm0Tkn ); } YY_BREAK case 556: YY_RULE_SETUP #line 6509 "hla.flx" { testRW( mm1Tkn ); } YY_BREAK case 557: YY_RULE_SETUP #line 6510 "hla.flx" { testRW( mm2Tkn ); } YY_BREAK case 558: YY_RULE_SETUP #line 6511 "hla.flx" { testRW( mm3Tkn ); } YY_BREAK case 559: YY_RULE_SETUP #line 6512 "hla.flx" { testRW( mm4Tkn ); } YY_BREAK case 560: YY_RULE_SETUP #line 6513 "hla.flx" { testRW( mm5Tkn ); } YY_BREAK case 561: YY_RULE_SETUP #line 6514 "hla.flx" { testRW( mm6Tkn ); } YY_BREAK case 562: YY_RULE_SETUP #line 6515 "hla.flx" { testRW( mm7Tkn ); } YY_BREAK case 563: YY_RULE_SETUP #line 6517 "hla.flx" { _return mm0Tkn; } YY_BREAK case 564: YY_RULE_SETUP #line 6518 "hla.flx" { _return mm1Tkn; } YY_BREAK case 565: YY_RULE_SETUP #line 6519 "hla.flx" { _return mm2Tkn; } YY_BREAK case 566: YY_RULE_SETUP #line 6520 "hla.flx" { _return mm3Tkn; } YY_BREAK case 567: YY_RULE_SETUP #line 6521 "hla.flx" { _return mm4Tkn; } YY_BREAK case 568: YY_RULE_SETUP #line 6522 "hla.flx" { _return mm5Tkn; } YY_BREAK case 569: YY_RULE_SETUP #line 6523 "hla.flx" { _return mm6Tkn; } YY_BREAK case 570: YY_RULE_SETUP #line 6524 "hla.flx" { _return mm7Tkn; } YY_BREAK /* SIMD Registers */ case 571: YY_RULE_SETUP #line 6529 "hla.flx" { testRW( xmm0Tkn ); } YY_BREAK case 572: YY_RULE_SETUP #line 6530 "hla.flx" { testRW( xmm1Tkn ); } YY_BREAK case 573: YY_RULE_SETUP #line 6531 "hla.flx" { testRW( xmm2Tkn ); } YY_BREAK case 574: YY_RULE_SETUP #line 6532 "hla.flx" { testRW( xmm3Tkn ); } YY_BREAK case 575: YY_RULE_SETUP #line 6533 "hla.flx" { testRW( xmm4Tkn ); } YY_BREAK case 576: YY_RULE_SETUP #line 6534 "hla.flx" { testRW( xmm5Tkn ); } YY_BREAK case 577: YY_RULE_SETUP #line 6535 "hla.flx" { testRW( xmm6Tkn ); } YY_BREAK case 578: YY_RULE_SETUP #line 6536 "hla.flx" { testRW( xmm7Tkn ); } YY_BREAK case 579: YY_RULE_SETUP #line 6538 "hla.flx" { _return xmm0Tkn; } YY_BREAK case 580: YY_RULE_SETUP #line 6539 "hla.flx" { _return xmm1Tkn; } YY_BREAK case 581: YY_RULE_SETUP #line 6540 "hla.flx" { _return xmm2Tkn; } YY_BREAK case 582: YY_RULE_SETUP #line 6541 "hla.flx" { _return xmm3Tkn; } YY_BREAK case 583: YY_RULE_SETUP #line 6542 "hla.flx" { _return xmm4Tkn; } YY_BREAK case 584: YY_RULE_SETUP #line 6543 "hla.flx" { _return xmm5Tkn; } YY_BREAK case 585: YY_RULE_SETUP #line 6544 "hla.flx" { _return xmm6Tkn; } YY_BREAK case 586: YY_RULE_SETUP #line 6545 "hla.flx" { _return xmm7Tkn; } YY_BREAK /* Segment Registers */ case 587: YY_RULE_SETUP #line 6549 "hla.flx" { testRW( csTkn ); } YY_BREAK case 588: YY_RULE_SETUP #line 6550 "hla.flx" { testRW( dsTkn ); } YY_BREAK case 589: YY_RULE_SETUP #line 6551 "hla.flx" { testRW( esTkn ); } YY_BREAK case 590: YY_RULE_SETUP #line 6552 "hla.flx" { testRW( fsTkn ); } YY_BREAK case 591: YY_RULE_SETUP #line 6553 "hla.flx" { testRW( gsTkn ); } YY_BREAK case 592: YY_RULE_SETUP #line 6554 "hla.flx" { testRW( ssTkn ); } YY_BREAK case 593: YY_RULE_SETUP #line 6556 "hla.flx" { _return csTkn; } YY_BREAK case 594: YY_RULE_SETUP #line 6557 "hla.flx" { _return dsTkn; } YY_BREAK case 595: YY_RULE_SETUP #line 6558 "hla.flx" { _return esTkn; } YY_BREAK case 596: YY_RULE_SETUP #line 6559 "hla.flx" { _return fsTkn; } YY_BREAK case 597: YY_RULE_SETUP #line 6560 "hla.flx" { _return gsTkn; } YY_BREAK case 598: YY_RULE_SETUP #line 6561 "hla.flx" { _return ssTkn; } YY_BREAK /* Control and Debug Registers */ case 599: YY_RULE_SETUP #line 6565 "hla.flx" { testRW( cr0Tkn ); } YY_BREAK case 600: YY_RULE_SETUP #line 6566 "hla.flx" { testRW( cr1Tkn ); } YY_BREAK case 601: YY_RULE_SETUP #line 6567 "hla.flx" { testRW( cr2Tkn ); } YY_BREAK case 602: YY_RULE_SETUP #line 6568 "hla.flx" { testRW( cr3Tkn ); } YY_BREAK case 603: YY_RULE_SETUP #line 6569 "hla.flx" { testRW( cr4Tkn ); } YY_BREAK case 604: YY_RULE_SETUP #line 6570 "hla.flx" { testRW( cr5Tkn ); } YY_BREAK case 605: YY_RULE_SETUP #line 6571 "hla.flx" { testRW( cr6Tkn ); } YY_BREAK case 606: YY_RULE_SETUP #line 6572 "hla.flx" { testRW( cr7Tkn ); } YY_BREAK case 607: YY_RULE_SETUP #line 6574 "hla.flx" { _return cr0Tkn; } YY_BREAK case 608: YY_RULE_SETUP #line 6575 "hla.flx" { _return cr1Tkn; } YY_BREAK case 609: YY_RULE_SETUP #line 6576 "hla.flx" { _return cr2Tkn; } YY_BREAK case 610: YY_RULE_SETUP #line 6577 "hla.flx" { _return cr3Tkn; } YY_BREAK case 611: YY_RULE_SETUP #line 6578 "hla.flx" { _return cr4Tkn; } YY_BREAK case 612: YY_RULE_SETUP #line 6579 "hla.flx" { _return cr5Tkn; } YY_BREAK case 613: YY_RULE_SETUP #line 6580 "hla.flx" { _return cr6Tkn; } YY_BREAK case 614: YY_RULE_SETUP #line 6581 "hla.flx" { _return cr7Tkn; } YY_BREAK case 615: YY_RULE_SETUP #line 6583 "hla.flx" { testRW( dr0Tkn ); } YY_BREAK case 616: YY_RULE_SETUP #line 6584 "hla.flx" { testRW( dr1Tkn ); } YY_BREAK case 617: YY_RULE_SETUP #line 6585 "hla.flx" { testRW( dr2Tkn ); } YY_BREAK case 618: YY_RULE_SETUP #line 6586 "hla.flx" { testRW( dr3Tkn ); } YY_BREAK case 619: YY_RULE_SETUP #line 6587 "hla.flx" { testRW( dr4Tkn ); } YY_BREAK case 620: YY_RULE_SETUP #line 6588 "hla.flx" { testRW( dr5Tkn ); } YY_BREAK case 621: YY_RULE_SETUP #line 6589 "hla.flx" { testRW( dr6Tkn ); } YY_BREAK case 622: YY_RULE_SETUP #line 6590 "hla.flx" { testRW( dr7Tkn ); } YY_BREAK case 623: YY_RULE_SETUP #line 6592 "hla.flx" { _return dr0Tkn; } YY_BREAK case 624: YY_RULE_SETUP #line 6593 "hla.flx" { _return dr1Tkn; } YY_BREAK case 625: YY_RULE_SETUP #line 6594 "hla.flx" { _return dr2Tkn; } YY_BREAK case 626: YY_RULE_SETUP #line 6595 "hla.flx" { _return dr3Tkn; } YY_BREAK case 627: YY_RULE_SETUP #line 6596 "hla.flx" { _return dr4Tkn; } YY_BREAK case 628: YY_RULE_SETUP #line 6597 "hla.flx" { _return dr5Tkn; } YY_BREAK case 629: YY_RULE_SETUP #line 6598 "hla.flx" { _return dr6Tkn; } YY_BREAK case 630: YY_RULE_SETUP #line 6599 "hla.flx" { _return dr7Tkn; } YY_BREAK /* Integer registers */ case 631: YY_RULE_SETUP #line 6605 "hla.flx" { testRW( alTkn ); } YY_BREAK case 632: YY_RULE_SETUP #line 6606 "hla.flx" { testRW( ahTkn ); } YY_BREAK case 633: YY_RULE_SETUP #line 6607 "hla.flx" { testRW( axTkn ); } YY_BREAK case 634: YY_RULE_SETUP #line 6608 "hla.flx" { testRW( eaxTkn ); } YY_BREAK case 635: YY_RULE_SETUP #line 6609 "hla.flx" { testRW( blTkn ); } YY_BREAK case 636: YY_RULE_SETUP #line 6610 "hla.flx" { testRW( bhTkn ); } YY_BREAK case 637: YY_RULE_SETUP #line 6611 "hla.flx" { testRW( bxTkn ); } YY_BREAK case 638: YY_RULE_SETUP #line 6612 "hla.flx" { testRW( ebxTkn ); } YY_BREAK case 639: YY_RULE_SETUP #line 6613 "hla.flx" { testRW( clTkn ); } YY_BREAK case 640: YY_RULE_SETUP #line 6614 "hla.flx" { testRW( chTkn ); } YY_BREAK case 641: YY_RULE_SETUP #line 6615 "hla.flx" { testRW( cxTkn ); } YY_BREAK case 642: YY_RULE_SETUP #line 6616 "hla.flx" { testRW( ecxTkn ); } YY_BREAK case 643: YY_RULE_SETUP #line 6617 "hla.flx" { testRW( dlTkn ); } YY_BREAK case 644: YY_RULE_SETUP #line 6618 "hla.flx" { testRW( dhTkn ); } YY_BREAK case 645: YY_RULE_SETUP #line 6619 "hla.flx" { testRW( dxTkn ); } YY_BREAK case 646: YY_RULE_SETUP #line 6620 "hla.flx" { testRW( edxTkn ); } YY_BREAK case 647: YY_RULE_SETUP #line 6621 "hla.flx" { testRW( siTkn ); } YY_BREAK case 648: YY_RULE_SETUP #line 6622 "hla.flx" { testRW( esiTkn ); } YY_BREAK case 649: YY_RULE_SETUP #line 6623 "hla.flx" { testRW( diTkn ); } YY_BREAK case 650: YY_RULE_SETUP #line 6624 "hla.flx" { testRW( ediTkn ); } YY_BREAK case 651: YY_RULE_SETUP #line 6625 "hla.flx" { testRW( bpTkn ); } YY_BREAK case 652: YY_RULE_SETUP #line 6626 "hla.flx" { testRW( ebpTkn ); } YY_BREAK case 653: YY_RULE_SETUP #line 6627 "hla.flx" { testRW( spTkn ); } YY_BREAK case 654: YY_RULE_SETUP #line 6628 "hla.flx" { testRW( espTkn ); } YY_BREAK case 655: YY_RULE_SETUP #line 6629 "hla.flx" { testRW( dxaxTkn ); } YY_BREAK case 656: YY_RULE_SETUP #line 6630 "hla.flx" { testRW( edxeaxTkn ); } YY_BREAK case 657: YY_RULE_SETUP #line 6633 "hla.flx" { _return alTkn; } YY_BREAK case 658: YY_RULE_SETUP #line 6634 "hla.flx" { _return ahTkn; } YY_BREAK case 659: YY_RULE_SETUP #line 6635 "hla.flx" { _return axTkn; } YY_BREAK case 660: YY_RULE_SETUP #line 6636 "hla.flx" { _return eaxTkn; } YY_BREAK case 661: YY_RULE_SETUP #line 6637 "hla.flx" { _return blTkn; } YY_BREAK case 662: YY_RULE_SETUP #line 6638 "hla.flx" { _return bhTkn; } YY_BREAK case 663: YY_RULE_SETUP #line 6639 "hla.flx" { _return bxTkn; } YY_BREAK case 664: YY_RULE_SETUP #line 6640 "hla.flx" { _return ebxTkn; } YY_BREAK case 665: YY_RULE_SETUP #line 6641 "hla.flx" { _return clTkn; } YY_BREAK case 666: YY_RULE_SETUP #line 6642 "hla.flx" { _return chTkn; } YY_BREAK case 667: YY_RULE_SETUP #line 6643 "hla.flx" { _return cxTkn; } YY_BREAK case 668: YY_RULE_SETUP #line 6644 "hla.flx" { _return ecxTkn; } YY_BREAK case 669: YY_RULE_SETUP #line 6645 "hla.flx" { _return dlTkn; } YY_BREAK case 670: YY_RULE_SETUP #line 6646 "hla.flx" { _return dhTkn; } YY_BREAK case 671: YY_RULE_SETUP #line 6647 "hla.flx" { _return dxTkn; } YY_BREAK case 672: YY_RULE_SETUP #line 6648 "hla.flx" { _return edxTkn; } YY_BREAK case 673: YY_RULE_SETUP #line 6649 "hla.flx" { _return siTkn; } YY_BREAK case 674: YY_RULE_SETUP #line 6650 "hla.flx" { _return esiTkn; } YY_BREAK case 675: YY_RULE_SETUP #line 6651 "hla.flx" { _return diTkn; } YY_BREAK case 676: YY_RULE_SETUP #line 6652 "hla.flx" { _return ediTkn; } YY_BREAK case 677: YY_RULE_SETUP #line 6653 "hla.flx" { _return bpTkn; } YY_BREAK case 678: YY_RULE_SETUP #line 6654 "hla.flx" { _return ebpTkn; } YY_BREAK case 679: YY_RULE_SETUP #line 6655 "hla.flx" { _return spTkn; } YY_BREAK case 680: YY_RULE_SETUP #line 6656 "hla.flx" { _return espTkn; } YY_BREAK case 681: YY_RULE_SETUP #line 6657 "hla.flx" { _return dxaxTkn; } YY_BREAK case 682: YY_RULE_SETUP #line 6658 "hla.flx" { _return edxeaxTkn;} YY_BREAK /* ** Flags and conditions */ case 683: YY_RULE_SETUP #line 6665 "hla.flx" { _return cTkn; } YY_BREAK case 684: YY_RULE_SETUP #line 6666 "hla.flx" { _return ncTkn; } YY_BREAK case 685: YY_RULE_SETUP #line 6667 "hla.flx" { _return sTkn; } YY_BREAK case 686: YY_RULE_SETUP #line 6668 "hla.flx" { _return nsTkn; } YY_BREAK case 687: YY_RULE_SETUP #line 6669 "hla.flx" { _return oTkn; } YY_BREAK case 688: YY_RULE_SETUP #line 6670 "hla.flx" { _return noTkn; } YY_BREAK case 689: YY_RULE_SETUP #line 6671 "hla.flx" { _return zTkn; } YY_BREAK case 690: YY_RULE_SETUP #line 6672 "hla.flx" { _return nzTkn; } YY_BREAK case 691: YY_RULE_SETUP #line 6673 "hla.flx" { _return aTkn; } YY_BREAK case 692: YY_RULE_SETUP #line 6674 "hla.flx" { _return naTkn; } YY_BREAK case 693: YY_RULE_SETUP #line 6675 "hla.flx" { _return aeTkn; } YY_BREAK case 694: YY_RULE_SETUP #line 6676 "hla.flx" { _return naeTkn; } YY_BREAK case 695: YY_RULE_SETUP #line 6677 "hla.flx" { _return bTkn; } YY_BREAK case 696: YY_RULE_SETUP #line 6678 "hla.flx" { _return nbTkn; } YY_BREAK case 697: YY_RULE_SETUP #line 6679 "hla.flx" { _return beTkn; } YY_BREAK case 698: YY_RULE_SETUP #line 6680 "hla.flx" { _return nbeTkn; } YY_BREAK case 699: YY_RULE_SETUP #line 6681 "hla.flx" { _return lTkn; } YY_BREAK case 700: YY_RULE_SETUP #line 6682 "hla.flx" { _return nlTkn; } YY_BREAK case 701: YY_RULE_SETUP #line 6683 "hla.flx" { _return leTkn; } YY_BREAK case 702: YY_RULE_SETUP #line 6684 "hla.flx" { _return nleTkn; } YY_BREAK case 703: YY_RULE_SETUP #line 6685 "hla.flx" { _return gTkn; } YY_BREAK case 704: YY_RULE_SETUP #line 6686 "hla.flx" { _return ngTkn; } YY_BREAK case 705: YY_RULE_SETUP #line 6687 "hla.flx" { _return geTkn; } YY_BREAK case 706: YY_RULE_SETUP #line 6688 "hla.flx" { _return ngeTkn; } YY_BREAK case 707: YY_RULE_SETUP #line 6689 "hla.flx" { _return eTkn; } YY_BREAK case 708: YY_RULE_SETUP #line 6690 "hla.flx" { _return neTkn; } YY_BREAK case 709: YY_RULE_SETUP #line 6691 "hla.flx" { _return peTkn; } YY_BREAK case 710: YY_RULE_SETUP #line 6692 "hla.flx" { _return poTkn; } YY_BREAK case 711: YY_RULE_SETUP #line 6693 "hla.flx" { _return pTkn; } YY_BREAK case 712: YY_RULE_SETUP #line 6694 "hla.flx" { _return npTkn; } YY_BREAK /* ** Machine instructions */ case 713: YY_RULE_SETUP #line 6701 "hla.flx" { testRW( aaaTkn ); } YY_BREAK case 714: YY_RULE_SETUP #line 6702 "hla.flx" { testRW( aadTkn ); } YY_BREAK case 715: YY_RULE_SETUP #line 6703 "hla.flx" { testRW( aamTkn ); } YY_BREAK case 716: YY_RULE_SETUP #line 6704 "hla.flx" { testRW( aasTkn ); } YY_BREAK case 717: YY_RULE_SETUP #line 6705 "hla.flx" { testRW( adcTkn ); } YY_BREAK case 718: YY_RULE_SETUP #line 6706 "hla.flx" { testRW( lockadcTkn ); } YY_BREAK case 719: YY_RULE_SETUP #line 6707 "hla.flx" { testRW( addTkn ); } YY_BREAK case 720: YY_RULE_SETUP #line 6708 "hla.flx" { testRW( lockaddTkn ); } YY_BREAK case 721: YY_RULE_SETUP #line 6709 "hla.flx" { testRW( andTkn ); } YY_BREAK case 722: YY_RULE_SETUP #line 6710 "hla.flx" { testRW( lockandTkn ); } YY_BREAK case 723: YY_RULE_SETUP #line 6711 "hla.flx" { testRW( arplTkn ); } YY_BREAK case 724: YY_RULE_SETUP #line 6712 "hla.flx" { testRW( boundTkn ); } YY_BREAK case 725: YY_RULE_SETUP #line 6713 "hla.flx" { testRW( bsfTkn ); } YY_BREAK case 726: YY_RULE_SETUP #line 6714 "hla.flx" { testRW( bsrTkn ); } YY_BREAK case 727: YY_RULE_SETUP #line 6715 "hla.flx" { testRW( bswapTkn ); } YY_BREAK case 728: YY_RULE_SETUP #line 6716 "hla.flx" { testRW( btTkn ); } YY_BREAK case 729: YY_RULE_SETUP #line 6717 "hla.flx" { testRW( btcTkn ); } YY_BREAK case 730: YY_RULE_SETUP #line 6718 "hla.flx" { testRW( lockbtcTkn ); } YY_BREAK case 731: YY_RULE_SETUP #line 6719 "hla.flx" { testRW( btrTkn ); } YY_BREAK case 732: YY_RULE_SETUP #line 6720 "hla.flx" { testRW( lockbtrTkn ); } YY_BREAK case 733: YY_RULE_SETUP #line 6721 "hla.flx" { testRW( btsTkn ); } YY_BREAK case 734: YY_RULE_SETUP #line 6722 "hla.flx" { testRW( lockbtsTkn ); } YY_BREAK case 735: YY_RULE_SETUP #line 6723 "hla.flx" { testRW( callTkn ); } YY_BREAK case 736: YY_RULE_SETUP #line 6724 "hla.flx" { testRW( cbwTkn ); } YY_BREAK case 737: YY_RULE_SETUP #line 6725 "hla.flx" { testRW( cdqTkn ); } YY_BREAK case 738: YY_RULE_SETUP #line 6726 "hla.flx" { testRW( clcTkn ); } YY_BREAK case 739: YY_RULE_SETUP #line 6727 "hla.flx" { testRW( cldTkn ); } YY_BREAK case 740: YY_RULE_SETUP #line 6728 "hla.flx" { testRW( cliTkn ); } YY_BREAK case 741: YY_RULE_SETUP #line 6729 "hla.flx" { testRW( cltsTkn ); } YY_BREAK case 742: YY_RULE_SETUP #line 6730 "hla.flx" { testRW( cmcTkn ); } YY_BREAK case 743: YY_RULE_SETUP #line 6733 "hla.flx" { testRW( cmovnbeTkn ); } YY_BREAK case 744: YY_RULE_SETUP #line 6734 "hla.flx" { testRW( cmovnbTkn ); } YY_BREAK case 745: YY_RULE_SETUP #line 6735 "hla.flx" { testRW( cmovbTkn ); } YY_BREAK case 746: YY_RULE_SETUP #line 6736 "hla.flx" { testRW( cmovbeTkn ); } YY_BREAK case 747: YY_RULE_SETUP #line 6737 "hla.flx" { testRW( cmovbTkn ); } YY_BREAK case 748: YY_RULE_SETUP #line 6738 "hla.flx" { testRW( cmoveTkn ); } YY_BREAK case 749: YY_RULE_SETUP #line 6739 "hla.flx" { testRW( cmovnleTkn ); } YY_BREAK case 750: YY_RULE_SETUP #line 6740 "hla.flx" { testRW( cmovnlTkn ); } YY_BREAK case 751: YY_RULE_SETUP #line 6741 "hla.flx" { testRW( cmovlTkn ); } YY_BREAK case 752: YY_RULE_SETUP #line 6742 "hla.flx" { testRW( cmovleTkn ); } YY_BREAK case 753: YY_RULE_SETUP #line 6743 "hla.flx" { testRW( cmovbeTkn ); } YY_BREAK case 754: YY_RULE_SETUP #line 6744 "hla.flx" { testRW( cmovbTkn ); } YY_BREAK case 755: YY_RULE_SETUP #line 6745 "hla.flx" { testRW( cmovnbTkn ); } YY_BREAK case 756: YY_RULE_SETUP #line 6746 "hla.flx" { testRW( cmovnbeTkn ); } YY_BREAK case 757: YY_RULE_SETUP #line 6747 "hla.flx" { testRW( cmovnbTkn ); } YY_BREAK case 758: YY_RULE_SETUP #line 6748 "hla.flx" { testRW( cmovneTkn ); } YY_BREAK case 759: YY_RULE_SETUP #line 6749 "hla.flx" { testRW( cmovleTkn ); } YY_BREAK case 760: YY_RULE_SETUP #line 6750 "hla.flx" { testRW( cmovlTkn ); } YY_BREAK case 761: YY_RULE_SETUP #line 6751 "hla.flx" { testRW( cmovnlTkn ); } YY_BREAK case 762: YY_RULE_SETUP #line 6752 "hla.flx" { testRW( cmovnleTkn ); } YY_BREAK case 763: YY_RULE_SETUP #line 6753 "hla.flx" { testRW( cmovnoTkn ); } YY_BREAK case 764: YY_RULE_SETUP #line 6754 "hla.flx" { testRW( cmovnpTkn ); } YY_BREAK case 765: YY_RULE_SETUP #line 6755 "hla.flx" { testRW( cmovnsTkn ); } YY_BREAK case 766: YY_RULE_SETUP #line 6756 "hla.flx" { testRW( cmovneTkn ); } YY_BREAK case 767: YY_RULE_SETUP #line 6757 "hla.flx" { testRW( cmovoTkn ); } YY_BREAK case 768: YY_RULE_SETUP #line 6758 "hla.flx" { testRW( cmovpTkn ); } YY_BREAK case 769: YY_RULE_SETUP #line 6759 "hla.flx" { testRW( cmovpTkn ); } YY_BREAK case 770: YY_RULE_SETUP #line 6760 "hla.flx" { testRW( cmovnpTkn ); } YY_BREAK case 771: YY_RULE_SETUP #line 6761 "hla.flx" { testRW( cmovsTkn ); } YY_BREAK case 772: YY_RULE_SETUP #line 6762 "hla.flx" { testRW( cmoveTkn ); } YY_BREAK case 773: YY_RULE_SETUP #line 6764 "hla.flx" { testRW( cmpTkn ); } YY_BREAK case 774: YY_RULE_SETUP #line 6765 "hla.flx" { testRW( cmpsbTkn ); } YY_BREAK case 775: YY_RULE_SETUP #line 6766 "hla.flx" { testRW( cmpsdTkn ); } YY_BREAK case 776: YY_RULE_SETUP #line 6767 "hla.flx" { testRW( cmpswTkn ); } YY_BREAK case 777: YY_RULE_SETUP #line 6768 "hla.flx" { testRW( cmpxchgTkn ); } YY_BREAK case 778: YY_RULE_SETUP #line 6769 "hla.flx" { testRW( lockcmpxchgTkn ); } YY_BREAK case 779: YY_RULE_SETUP #line 6770 "hla.flx" { testRW( cmpxchg8bTkn ); } YY_BREAK case 780: YY_RULE_SETUP #line 6771 "hla.flx" { testRW( cpuidTkn ); } YY_BREAK case 781: YY_RULE_SETUP #line 6772 "hla.flx" { testRW( cwdTkn ); } YY_BREAK case 782: YY_RULE_SETUP #line 6773 "hla.flx" { testRW( cwdeTkn ); } YY_BREAK case 783: YY_RULE_SETUP #line 6774 "hla.flx" { testRW( daaTkn ); } YY_BREAK case 784: YY_RULE_SETUP #line 6775 "hla.flx" { testRW( dasTkn ); } YY_BREAK case 785: YY_RULE_SETUP #line 6776 "hla.flx" { testRW( decTkn ); } YY_BREAK case 786: YY_RULE_SETUP #line 6777 "hla.flx" { testRW( lockdecTkn ); } YY_BREAK case 787: YY_RULE_SETUP #line 6778 "hla.flx" { testRW( divTkn ); } YY_BREAK case 788: YY_RULE_SETUP #line 6779 "hla.flx" { testRW( enterTkn ); } YY_BREAK case 789: YY_RULE_SETUP #line 6780 "hla.flx" { testRW( hltTkn ); } YY_BREAK case 790: YY_RULE_SETUP #line 6781 "hla.flx" { testRW( idivTkn ); } YY_BREAK case 791: YY_RULE_SETUP #line 6782 "hla.flx" { testRW( imodTkn ); } YY_BREAK case 792: YY_RULE_SETUP #line 6783 "hla.flx" { testRW( imulTkn ); } YY_BREAK case 793: YY_RULE_SETUP #line 6784 "hla.flx" { testRW( intmulTkn ); } YY_BREAK case 794: YY_RULE_SETUP #line 6785 "hla.flx" { testRW( inTkn ); } YY_BREAK case 795: YY_RULE_SETUP #line 6786 "hla.flx" { testRW( incTkn ); } YY_BREAK case 796: YY_RULE_SETUP #line 6787 "hla.flx" { testRW( lockincTkn ); } YY_BREAK case 797: YY_RULE_SETUP #line 6788 "hla.flx" { testRW( insbTkn ); } YY_BREAK case 798: YY_RULE_SETUP #line 6789 "hla.flx" { testRW( insdTkn ); } YY_BREAK case 799: YY_RULE_SETUP #line 6790 "hla.flx" { testRW( inswTkn ); } YY_BREAK case 800: YY_RULE_SETUP #line 6791 "hla.flx" { testRW( intTkn ); } YY_BREAK case 801: YY_RULE_SETUP #line 6792 "hla.flx" { testRW( intoTkn ); } YY_BREAK case 802: YY_RULE_SETUP #line 6793 "hla.flx" { testRW( invdTkn ); } YY_BREAK case 803: YY_RULE_SETUP #line 6794 "hla.flx" { testRW( invlpgTkn ); } YY_BREAK case 804: YY_RULE_SETUP #line 6795 "hla.flx" { testRW( iretTkn ); } YY_BREAK case 805: YY_RULE_SETUP #line 6796 "hla.flx" { testRW( iretdTkn ); } YY_BREAK case 806: YY_RULE_SETUP #line 6797 "hla.flx" { testRW( jcxzTkn ); } YY_BREAK case 807: YY_RULE_SETUP #line 6798 "hla.flx" { testRW( jecxzTkn ); } YY_BREAK case 808: YY_RULE_SETUP #line 6799 "hla.flx" { testRW( jaTkn ); } YY_BREAK case 809: YY_RULE_SETUP #line 6800 "hla.flx" { testRW( jaeTkn ); } YY_BREAK case 810: YY_RULE_SETUP #line 6801 "hla.flx" { testRW( jbTkn ); } YY_BREAK case 811: YY_RULE_SETUP #line 6802 "hla.flx" { testRW( jbeTkn ); } YY_BREAK case 812: YY_RULE_SETUP #line 6803 "hla.flx" { testRW( jcTkn ); } YY_BREAK case 813: YY_RULE_SETUP #line 6804 "hla.flx" { testRW( jeTkn ); } YY_BREAK case 814: YY_RULE_SETUP #line 6805 "hla.flx" { testRW( jgTkn ); } YY_BREAK case 815: YY_RULE_SETUP #line 6806 "hla.flx" { testRW( jgeTkn ); } YY_BREAK case 816: YY_RULE_SETUP #line 6807 "hla.flx" { testRW( jlTkn ); } YY_BREAK case 817: YY_RULE_SETUP #line 6808 "hla.flx" { testRW( jleTkn ); } YY_BREAK case 818: YY_RULE_SETUP #line 6809 "hla.flx" { testRW( jnaTkn ); } YY_BREAK case 819: YY_RULE_SETUP #line 6810 "hla.flx" { testRW( jnaeTkn ); } YY_BREAK case 820: YY_RULE_SETUP #line 6811 "hla.flx" { testRW( jnbTkn ); } YY_BREAK case 821: YY_RULE_SETUP #line 6812 "hla.flx" { testRW( jnbeTkn ); } YY_BREAK case 822: YY_RULE_SETUP #line 6813 "hla.flx" { testRW( jncTkn ); } YY_BREAK case 823: YY_RULE_SETUP #line 6814 "hla.flx" { testRW( jneTkn ); } YY_BREAK case 824: YY_RULE_SETUP #line 6815 "hla.flx" { testRW( jngTkn ); } YY_BREAK case 825: YY_RULE_SETUP #line 6816 "hla.flx" { testRW( jngeTkn ); } YY_BREAK case 826: YY_RULE_SETUP #line 6817 "hla.flx" { testRW( jnlTkn ); } YY_BREAK case 827: YY_RULE_SETUP #line 6818 "hla.flx" { testRW( jnleTkn ); } YY_BREAK case 828: YY_RULE_SETUP #line 6819 "hla.flx" { testRW( jnoTkn ); } YY_BREAK case 829: YY_RULE_SETUP #line 6820 "hla.flx" { testRW( jnpTkn ); } YY_BREAK case 830: YY_RULE_SETUP #line 6821 "hla.flx" { testRW( jnsTkn ); } YY_BREAK case 831: YY_RULE_SETUP #line 6822 "hla.flx" { testRW( jnzTkn ); } YY_BREAK case 832: YY_RULE_SETUP #line 6823 "hla.flx" { testRW( joTkn ); } YY_BREAK case 833: YY_RULE_SETUP #line 6824 "hla.flx" { testRW( jpTkn ); } YY_BREAK case 834: YY_RULE_SETUP #line 6825 "hla.flx" { testRW( jpeTkn ); } YY_BREAK case 835: YY_RULE_SETUP #line 6826 "hla.flx" { testRW( jpoTkn ); } YY_BREAK case 836: YY_RULE_SETUP #line 6827 "hla.flx" { testRW( jsTkn ); } YY_BREAK case 837: YY_RULE_SETUP #line 6828 "hla.flx" { testRW( jzTkn ); } YY_BREAK case 838: YY_RULE_SETUP #line 6829 "hla.flx" { testRW( jmpTkn ); } YY_BREAK case 839: YY_RULE_SETUP #line 6830 "hla.flx" { testRW( lahfTkn ); } YY_BREAK case 840: YY_RULE_SETUP #line 6831 "hla.flx" { testRW( larTkn ); } YY_BREAK case 841: YY_RULE_SETUP #line 6832 "hla.flx" { testRW( leaTkn ); } YY_BREAK case 842: YY_RULE_SETUP #line 6833 "hla.flx" { testRW( leaveTkn ); } YY_BREAK case 843: YY_RULE_SETUP #line 6834 "hla.flx" { testRW( ldsTkn ); } YY_BREAK case 844: YY_RULE_SETUP #line 6835 "hla.flx" { testRW( lesTkn ); } YY_BREAK case 845: YY_RULE_SETUP #line 6836 "hla.flx" { testRW( lfsTkn ); } YY_BREAK case 846: YY_RULE_SETUP #line 6837 "hla.flx" { testRW( lgsTkn ); } YY_BREAK case 847: YY_RULE_SETUP #line 6838 "hla.flx" { testRW( lssTkn ); } YY_BREAK case 848: YY_RULE_SETUP #line 6839 "hla.flx" { testRW( lslTkn ); } YY_BREAK case 849: YY_RULE_SETUP #line 6840 "hla.flx" { testRW( lgdtTkn ); } YY_BREAK case 850: YY_RULE_SETUP #line 6841 "hla.flx" { testRW( lidtTkn ); } YY_BREAK case 851: YY_RULE_SETUP #line 6842 "hla.flx" { testRW( sgdtTkn ); } YY_BREAK case 852: YY_RULE_SETUP #line 6843 "hla.flx" { testRW( sidtTkn ); } YY_BREAK case 853: YY_RULE_SETUP #line 6844 "hla.flx" { testRW( lldtTkn ); } YY_BREAK case 854: YY_RULE_SETUP #line 6845 "hla.flx" { testRW( sldtTkn ); } YY_BREAK case 855: YY_RULE_SETUP #line 6846 "hla.flx" { testRW( lodsbTkn ); } YY_BREAK case 856: YY_RULE_SETUP #line 6847 "hla.flx" { testRW( lodsdTkn ); } YY_BREAK case 857: YY_RULE_SETUP #line 6848 "hla.flx" { testRW( lodswTkn ); } YY_BREAK case 858: YY_RULE_SETUP #line 6849 "hla.flx" { testRW( loopTkn ); } YY_BREAK case 859: YY_RULE_SETUP #line 6850 "hla.flx" { testRW( loopeTkn ); } YY_BREAK case 860: YY_RULE_SETUP #line 6851 "hla.flx" { testRW( loopzTkn ); } YY_BREAK case 861: YY_RULE_SETUP #line 6852 "hla.flx" { testRW( loopneTkn ); } YY_BREAK case 862: YY_RULE_SETUP #line 6853 "hla.flx" { testRW( loopnzTkn ); } YY_BREAK case 863: YY_RULE_SETUP #line 6854 "hla.flx" { testRW( ltrTkn ); } YY_BREAK case 864: YY_RULE_SETUP #line 6855 "hla.flx" { testRW( strTkn ); } YY_BREAK case 865: YY_RULE_SETUP #line 6856 "hla.flx" { testRW( movTkn ); } YY_BREAK case 866: YY_RULE_SETUP #line 6857 "hla.flx" { testRW( movsbTkn ); } YY_BREAK case 867: YY_RULE_SETUP #line 6858 "hla.flx" { testRW( movsdTkn ); } YY_BREAK case 868: YY_RULE_SETUP #line 6859 "hla.flx" { testRW( movswTkn ); } YY_BREAK case 869: YY_RULE_SETUP #line 6860 "hla.flx" { testRW( movsxTkn ); } YY_BREAK case 870: YY_RULE_SETUP #line 6861 "hla.flx" { testRW( movzxTkn ); } YY_BREAK case 871: YY_RULE_SETUP #line 6862 "hla.flx" { testRW( mulTkn ); } YY_BREAK case 872: YY_RULE_SETUP #line 6863 "hla.flx" { testRW( negTkn ); } YY_BREAK case 873: YY_RULE_SETUP #line 6864 "hla.flx" { testRW( locknegTkn ); } YY_BREAK case 874: YY_RULE_SETUP #line 6865 "hla.flx" { testRW( nopTkn ); } YY_BREAK case 875: YY_RULE_SETUP #line 6866 "hla.flx" { testRW( notTkn ); } YY_BREAK case 876: YY_RULE_SETUP #line 6867 "hla.flx" { testRW( locknotTkn ); } YY_BREAK case 877: YY_RULE_SETUP #line 6868 "hla.flx" { testRW( orTkn ); } YY_BREAK case 878: YY_RULE_SETUP #line 6869 "hla.flx" { testRW( lockorTkn ); } YY_BREAK case 879: YY_RULE_SETUP #line 6870 "hla.flx" { testRW( outTkn ); } YY_BREAK case 880: YY_RULE_SETUP #line 6871 "hla.flx" { testRW( outsbTkn ); } YY_BREAK case 881: YY_RULE_SETUP #line 6872 "hla.flx" { testRW( outsdTkn ); } YY_BREAK case 882: YY_RULE_SETUP #line 6873 "hla.flx" { testRW( outswTkn ); } YY_BREAK case 883: YY_RULE_SETUP #line 6874 "hla.flx" { testRW( popTkn ); } YY_BREAK case 884: YY_RULE_SETUP #line 6875 "hla.flx" { testRW( popaTkn ); } YY_BREAK case 885: YY_RULE_SETUP #line 6876 "hla.flx" { testRW( popadTkn ); } YY_BREAK case 886: YY_RULE_SETUP #line 6877 "hla.flx" { testRW( popfTkn ); } YY_BREAK case 887: YY_RULE_SETUP #line 6878 "hla.flx" { testRW( popfdTkn ); } YY_BREAK case 888: YY_RULE_SETUP #line 6879 "hla.flx" { testRW( pushTkn ); } YY_BREAK case 889: YY_RULE_SETUP #line 6880 "hla.flx" { testRW( pushaTkn ); } YY_BREAK case 890: YY_RULE_SETUP #line 6881 "hla.flx" { testRW( pushadTkn ); } YY_BREAK case 891: YY_RULE_SETUP #line 6882 "hla.flx" { testRW( pushdTkn ); } YY_BREAK case 892: YY_RULE_SETUP #line 6883 "hla.flx" { testRW( pushfTkn ); } YY_BREAK case 893: YY_RULE_SETUP #line 6884 "hla.flx" { testRW( pushfdTkn ); } YY_BREAK case 894: YY_RULE_SETUP #line 6885 "hla.flx" { testRW( pushwTkn ); } YY_BREAK case 895: YY_RULE_SETUP #line 6886 "hla.flx" { testRW( rclTkn ); } YY_BREAK case 896: YY_RULE_SETUP #line 6887 "hla.flx" { testRW( rcrTkn ); } YY_BREAK case 897: YY_RULE_SETUP #line 6888 "hla.flx" { testRW( rdmsrTkn ); } YY_BREAK case 898: YY_RULE_SETUP #line 6889 "hla.flx" { testRW( rdpmcTkn ); } YY_BREAK case 899: YY_RULE_SETUP #line 6890 "hla.flx" { testRW( rdtscTkn ); } YY_BREAK case 900: YY_RULE_SETUP #line 6891 "hla.flx" { testRW( rsmTkn ); } YY_BREAK case 901: YY_RULE_SETUP #line 6892 "hla.flx" { testRW( smswTkn ); } YY_BREAK case 902: YY_RULE_SETUP #line 6893 "hla.flx" { testRW( lmswTkn ); } YY_BREAK case 903: YY_RULE_SETUP #line 6894 "hla.flx" { testRW( repmovsbTkn ); } YY_BREAK case 904: YY_RULE_SETUP #line 6895 "hla.flx" { testRW( repmovswTkn ); } YY_BREAK case 905: YY_RULE_SETUP #line 6896 "hla.flx" { testRW( repmovsdTkn ); } YY_BREAK case 906: YY_RULE_SETUP #line 6897 "hla.flx" { testRW( repinsbTkn ); } YY_BREAK case 907: YY_RULE_SETUP #line 6898 "hla.flx" { testRW( repinswTkn ); } YY_BREAK case 908: YY_RULE_SETUP #line 6899 "hla.flx" { testRW( repinsdTkn ); } YY_BREAK case 909: YY_RULE_SETUP #line 6900 "hla.flx" { testRW( repoutsbTkn ); } YY_BREAK case 910: YY_RULE_SETUP #line 6901 "hla.flx" { testRW( repoutswTkn ); } YY_BREAK case 911: YY_RULE_SETUP #line 6902 "hla.flx" { testRW( repoutsdTkn ); } YY_BREAK case 912: YY_RULE_SETUP #line 6903 "hla.flx" { testRW( repstosbTkn ); } YY_BREAK case 913: YY_RULE_SETUP #line 6904 "hla.flx" { testRW( repstoswTkn ); } YY_BREAK case 914: YY_RULE_SETUP #line 6905 "hla.flx" { testRW( repstosdTkn ); } YY_BREAK case 915: YY_RULE_SETUP #line 6906 "hla.flx" { testRW( repecmpsbTkn ); } YY_BREAK case 916: YY_RULE_SETUP #line 6907 "hla.flx" { testRW( repecmpswTkn ); } YY_BREAK case 917: YY_RULE_SETUP #line 6908 "hla.flx" { testRW( repecmpsdTkn ); } YY_BREAK case 918: YY_RULE_SETUP #line 6909 "hla.flx" { testRW( repescasbTkn ); } YY_BREAK case 919: YY_RULE_SETUP #line 6910 "hla.flx" { testRW( repescaswTkn ); } YY_BREAK case 920: YY_RULE_SETUP #line 6911 "hla.flx" { testRW( repescasdTkn ); } YY_BREAK case 921: YY_RULE_SETUP #line 6912 "hla.flx" { testRW( repecmpsbTkn ); } YY_BREAK case 922: YY_RULE_SETUP #line 6913 "hla.flx" { testRW( repecmpswTkn ); } YY_BREAK case 923: YY_RULE_SETUP #line 6914 "hla.flx" { testRW( repecmpsdTkn ); } YY_BREAK case 924: YY_RULE_SETUP #line 6915 "hla.flx" { testRW( repescasbTkn ); } YY_BREAK case 925: YY_RULE_SETUP #line 6916 "hla.flx" { testRW( repescaswTkn ); } YY_BREAK case 926: YY_RULE_SETUP #line 6917 "hla.flx" { testRW( repescasdTkn ); } YY_BREAK case 927: YY_RULE_SETUP #line 6918 "hla.flx" { testRW( repnecmpsbTkn ); } YY_BREAK case 928: YY_RULE_SETUP #line 6919 "hla.flx" { testRW( repnecmpswTkn ); } YY_BREAK case 929: YY_RULE_SETUP #line 6920 "hla.flx" { testRW( repnecmpsdTkn ); } YY_BREAK case 930: YY_RULE_SETUP #line 6921 "hla.flx" { testRW( repnescasbTkn ); } YY_BREAK case 931: YY_RULE_SETUP #line 6922 "hla.flx" { testRW( repnescaswTkn ); } YY_BREAK case 932: YY_RULE_SETUP #line 6923 "hla.flx" { testRW( repnescasdTkn ); } YY_BREAK case 933: YY_RULE_SETUP #line 6924 "hla.flx" { testRW( repnecmpsbTkn ); } YY_BREAK case 934: YY_RULE_SETUP #line 6925 "hla.flx" { testRW( repnecmpswTkn ); } YY_BREAK case 935: YY_RULE_SETUP #line 6926 "hla.flx" { testRW( repnecmpsdTkn ); } YY_BREAK case 936: YY_RULE_SETUP #line 6927 "hla.flx" { testRW( repnescasbTkn ); } YY_BREAK case 937: YY_RULE_SETUP #line 6928 "hla.flx" { testRW( repnescaswTkn ); } YY_BREAK case 938: YY_RULE_SETUP #line 6929 "hla.flx" { testRW( repnescasdTkn ); } YY_BREAK case 939: YY_RULE_SETUP #line 6930 "hla.flx" { testRW( retTkn ); } YY_BREAK case 940: YY_RULE_SETUP #line 6931 "hla.flx" { testRW( rolTkn ); } YY_BREAK case 941: YY_RULE_SETUP #line 6932 "hla.flx" { testRW( rorTkn ); } YY_BREAK case 942: YY_RULE_SETUP #line 6933 "hla.flx" { testRW( sahfTkn ); } YY_BREAK case 943: YY_RULE_SETUP #line 6934 "hla.flx" { testRW( salTkn ); } YY_BREAK case 944: YY_RULE_SETUP #line 6935 "hla.flx" { testRW( sarTkn ); } YY_BREAK case 945: YY_RULE_SETUP #line 6936 "hla.flx" { testRW( sbbTkn ); } YY_BREAK case 946: YY_RULE_SETUP #line 6937 "hla.flx" { testRW( locksbbTkn ); } YY_BREAK case 947: YY_RULE_SETUP #line 6938 "hla.flx" { testRW( scasbTkn ); } YY_BREAK case 948: YY_RULE_SETUP #line 6939 "hla.flx" { testRW( scasdTkn ); } YY_BREAK case 949: YY_RULE_SETUP #line 6940 "hla.flx" { testRW( scaswTkn ); } YY_BREAK case 950: YY_RULE_SETUP #line 6942 "hla.flx" { testRW( setnbeTkn ); } YY_BREAK case 951: YY_RULE_SETUP #line 6943 "hla.flx" { testRW( setnbTkn ); } YY_BREAK case 952: YY_RULE_SETUP #line 6944 "hla.flx" { testRW( setbTkn ); } YY_BREAK case 953: YY_RULE_SETUP #line 6945 "hla.flx" { testRW( setbeTkn ); } YY_BREAK case 954: YY_RULE_SETUP #line 6946 "hla.flx" { testRW( setbTkn ); } YY_BREAK case 955: YY_RULE_SETUP #line 6947 "hla.flx" { testRW( setzTkn ); } YY_BREAK case 956: YY_RULE_SETUP #line 6948 "hla.flx" { testRW( setnleTkn ); } YY_BREAK case 957: YY_RULE_SETUP #line 6949 "hla.flx" { testRW( setnlTkn ); } YY_BREAK case 958: YY_RULE_SETUP #line 6950 "hla.flx" { testRW( setlTkn ); } YY_BREAK case 959: YY_RULE_SETUP #line 6951 "hla.flx" { testRW( setleTkn ); } YY_BREAK case 960: YY_RULE_SETUP #line 6952 "hla.flx" { testRW( setbeTkn ); } YY_BREAK case 961: YY_RULE_SETUP #line 6953 "hla.flx" { testRW( setbTkn ); } YY_BREAK case 962: YY_RULE_SETUP #line 6954 "hla.flx" { testRW( setnbTkn ); } YY_BREAK case 963: YY_RULE_SETUP #line 6955 "hla.flx" { testRW( setnbeTkn ); } YY_BREAK case 964: YY_RULE_SETUP #line 6956 "hla.flx" { testRW( setnbTkn ); } YY_BREAK case 965: YY_RULE_SETUP #line 6957 "hla.flx" { testRW( setnzTkn ); } YY_BREAK case 966: YY_RULE_SETUP #line 6958 "hla.flx" { testRW( setleTkn ); } YY_BREAK case 967: YY_RULE_SETUP #line 6959 "hla.flx" { testRW( setlTkn ); } YY_BREAK case 968: YY_RULE_SETUP #line 6960 "hla.flx" { testRW( setnlTkn ); } YY_BREAK case 969: YY_RULE_SETUP #line 6961 "hla.flx" { testRW( setnleTkn ); } YY_BREAK case 970: YY_RULE_SETUP #line 6962 "hla.flx" { testRW( setnoTkn ); } YY_BREAK case 971: YY_RULE_SETUP #line 6963 "hla.flx" { testRW( setnpTkn ); } YY_BREAK case 972: YY_RULE_SETUP #line 6964 "hla.flx" { testRW( setnsTkn ); } YY_BREAK case 973: YY_RULE_SETUP #line 6965 "hla.flx" { testRW( setnzTkn ); } YY_BREAK case 974: YY_RULE_SETUP #line 6966 "hla.flx" { testRW( setoTkn ); } YY_BREAK case 975: YY_RULE_SETUP #line 6967 "hla.flx" { testRW( setpTkn ); } YY_BREAK case 976: YY_RULE_SETUP #line 6968 "hla.flx" { testRW( setpTkn ); } YY_BREAK case 977: YY_RULE_SETUP #line 6969 "hla.flx" { testRW( setnpTkn ); } YY_BREAK case 978: YY_RULE_SETUP #line 6970 "hla.flx" { testRW( setsTkn ); } YY_BREAK case 979: YY_RULE_SETUP #line 6971 "hla.flx" { testRW( setzTkn ); } YY_BREAK case 980: YY_RULE_SETUP #line 6973 "hla.flx" { testRW( shlTkn ); } YY_BREAK case 981: YY_RULE_SETUP #line 6974 "hla.flx" { testRW( shldTkn ); } YY_BREAK case 982: YY_RULE_SETUP #line 6975 "hla.flx" { testRW( shrTkn ); } YY_BREAK case 983: YY_RULE_SETUP #line 6976 "hla.flx" { testRW( shrdTkn ); } YY_BREAK case 984: YY_RULE_SETUP #line 6977 "hla.flx" { testRW( stcTkn ); } YY_BREAK case 985: YY_RULE_SETUP #line 6978 "hla.flx" { testRW( stdTkn ); } YY_BREAK case 986: YY_RULE_SETUP #line 6979 "hla.flx" { testRW( stiTkn ); } YY_BREAK case 987: YY_RULE_SETUP #line 6980 "hla.flx" { testRW( stosbTkn ); } YY_BREAK case 988: YY_RULE_SETUP #line 6981 "hla.flx" { testRW( stosdTkn ); } YY_BREAK case 989: YY_RULE_SETUP #line 6982 "hla.flx" { testRW( stoswTkn ); } YY_BREAK case 990: YY_RULE_SETUP #line 6983 "hla.flx" { testRW( subTkn ); } YY_BREAK case 991: YY_RULE_SETUP #line 6984 "hla.flx" { testRW( locksubTkn ); } YY_BREAK case 992: YY_RULE_SETUP #line 6985 "hla.flx" { testRW( testTkn ); } YY_BREAK case 993: YY_RULE_SETUP #line 6986 "hla.flx" { testRW( waitTkn ); } YY_BREAK case 994: YY_RULE_SETUP #line 6987 "hla.flx" { testRW( xaddTkn ); } YY_BREAK case 995: YY_RULE_SETUP #line 6988 "hla.flx" { testRW( lockxaddTkn ); } YY_BREAK case 996: YY_RULE_SETUP #line 6989 "hla.flx" { testRW( xchgTkn ); } YY_BREAK case 997: YY_RULE_SETUP #line 6990 "hla.flx" { testRW( lockxchgTkn ); } YY_BREAK case 998: YY_RULE_SETUP #line 6991 "hla.flx" { testRW( xlatTkn ); } YY_BREAK case 999: YY_RULE_SETUP #line 6992 "hla.flx" { testRW( xorTkn ); } YY_BREAK case 1000: YY_RULE_SETUP #line 6993 "hla.flx" { testRW( lockxorTkn ); } YY_BREAK case 1001: YY_RULE_SETUP #line 6994 "hla.flx" { testRW( ud2Tkn ); } YY_BREAK case 1002: YY_RULE_SETUP #line 6995 "hla.flx" { testRW( verrTkn ); } YY_BREAK case 1003: YY_RULE_SETUP #line 6996 "hla.flx" { testRW( verwTkn ); } YY_BREAK case 1004: YY_RULE_SETUP #line 6997 "hla.flx" { testRW( wbinvdTkn ); } YY_BREAK case 1005: YY_RULE_SETUP #line 6998 "hla.flx" { testRW( wrmsrTkn ); } YY_BREAK case 1006: YY_RULE_SETUP #line 7004 "hla.flx" { _return aaaTkn ; } YY_BREAK case 1007: YY_RULE_SETUP #line 7005 "hla.flx" { _return aadTkn ; } YY_BREAK case 1008: YY_RULE_SETUP #line 7006 "hla.flx" { _return aamTkn ; } YY_BREAK case 1009: YY_RULE_SETUP #line 7007 "hla.flx" { _return aasTkn ; } YY_BREAK case 1010: YY_RULE_SETUP #line 7008 "hla.flx" { _return adcTkn ; } YY_BREAK case 1011: YY_RULE_SETUP #line 7009 "hla.flx" { _return lockadcTkn ; } YY_BREAK case 1012: YY_RULE_SETUP #line 7010 "hla.flx" { _return addTkn ; } YY_BREAK case 1013: YY_RULE_SETUP #line 7011 "hla.flx" { _return lockaddTkn ; } YY_BREAK case 1014: YY_RULE_SETUP #line 7012 "hla.flx" { _return andTkn ; } YY_BREAK case 1015: YY_RULE_SETUP #line 7013 "hla.flx" { _return lockandTkn ; } YY_BREAK case 1016: YY_RULE_SETUP #line 7014 "hla.flx" { _return arplTkn ; } YY_BREAK case 1017: YY_RULE_SETUP #line 7015 "hla.flx" { _return boundTkn ; } YY_BREAK case 1018: YY_RULE_SETUP #line 7016 "hla.flx" { _return bsfTkn ; } YY_BREAK case 1019: YY_RULE_SETUP #line 7017 "hla.flx" { _return bsrTkn ; } YY_BREAK case 1020: YY_RULE_SETUP #line 7018 "hla.flx" { _return bswapTkn ; } YY_BREAK case 1021: YY_RULE_SETUP #line 7019 "hla.flx" { _return btTkn ; } YY_BREAK case 1022: YY_RULE_SETUP #line 7020 "hla.flx" { _return btcTkn ; } YY_BREAK case 1023: YY_RULE_SETUP #line 7021 "hla.flx" { _return lockbtcTkn ; } YY_BREAK case 1024: YY_RULE_SETUP #line 7022 "hla.flx" { _return btrTkn ; } YY_BREAK case 1025: YY_RULE_SETUP #line 7023 "hla.flx" { _return lockbtrTkn ; } YY_BREAK case 1026: YY_RULE_SETUP #line 7024 "hla.flx" { _return btsTkn ; } YY_BREAK case 1027: YY_RULE_SETUP #line 7025 "hla.flx" { _return lockbtsTkn ; } YY_BREAK case 1028: YY_RULE_SETUP #line 7026 "hla.flx" { _return callTkn ; } YY_BREAK case 1029: YY_RULE_SETUP #line 7027 "hla.flx" { _return cbwTkn ; } YY_BREAK case 1030: YY_RULE_SETUP #line 7028 "hla.flx" { _return cdqTkn ; } YY_BREAK case 1031: YY_RULE_SETUP #line 7029 "hla.flx" { _return clcTkn ; } YY_BREAK case 1032: YY_RULE_SETUP #line 7030 "hla.flx" { _return cldTkn ; } YY_BREAK case 1033: YY_RULE_SETUP #line 7031 "hla.flx" { _return cliTkn ; } YY_BREAK case 1034: YY_RULE_SETUP #line 7032 "hla.flx" { _return cltsTkn ; } YY_BREAK case 1035: YY_RULE_SETUP #line 7033 "hla.flx" { _return cmcTkn ; } YY_BREAK case 1036: YY_RULE_SETUP #line 7034 "hla.flx" { _return cmovnbeTkn ; } YY_BREAK case 1037: YY_RULE_SETUP #line 7035 "hla.flx" { _return cmovnbTkn ; } YY_BREAK case 1038: YY_RULE_SETUP #line 7036 "hla.flx" { _return cmovbTkn ; } YY_BREAK case 1039: YY_RULE_SETUP #line 7037 "hla.flx" { _return cmovbeTkn ; } YY_BREAK case 1040: YY_RULE_SETUP #line 7038 "hla.flx" { _return cmovbTkn ; } YY_BREAK case 1041: YY_RULE_SETUP #line 7039 "hla.flx" { _return cmoveTkn ; } YY_BREAK case 1042: YY_RULE_SETUP #line 7040 "hla.flx" { _return cmovnleTkn ; } YY_BREAK case 1043: YY_RULE_SETUP #line 7041 "hla.flx" { _return cmovnlTkn ; } YY_BREAK case 1044: YY_RULE_SETUP #line 7042 "hla.flx" { _return cmovlTkn ; } YY_BREAK case 1045: YY_RULE_SETUP #line 7043 "hla.flx" { _return cmovleTkn ; } YY_BREAK case 1046: YY_RULE_SETUP #line 7044 "hla.flx" { _return cmovbeTkn ; } YY_BREAK case 1047: YY_RULE_SETUP #line 7045 "hla.flx" { _return cmovbTkn ; } YY_BREAK case 1048: YY_RULE_SETUP #line 7046 "hla.flx" { _return cmovnbTkn ; } YY_BREAK case 1049: YY_RULE_SETUP #line 7047 "hla.flx" { _return cmovnbeTkn ; } YY_BREAK case 1050: YY_RULE_SETUP #line 7048 "hla.flx" { _return cmovnbTkn ; } YY_BREAK case 1051: YY_RULE_SETUP #line 7049 "hla.flx" { _return cmovneTkn ; } YY_BREAK case 1052: YY_RULE_SETUP #line 7050 "hla.flx" { _return cmovleTkn ; } YY_BREAK case 1053: YY_RULE_SETUP #line 7051 "hla.flx" { _return cmovlTkn ; } YY_BREAK case 1054: YY_RULE_SETUP #line 7052 "hla.flx" { _return cmovnlTkn ; } YY_BREAK case 1055: YY_RULE_SETUP #line 7053 "hla.flx" { _return cmovnleTkn ; } YY_BREAK case 1056: YY_RULE_SETUP #line 7054 "hla.flx" { _return cmovnoTkn ; } YY_BREAK case 1057: YY_RULE_SETUP #line 7055 "hla.flx" { _return cmovnpTkn ; } YY_BREAK case 1058: YY_RULE_SETUP #line 7056 "hla.flx" { _return cmovnsTkn ; } YY_BREAK case 1059: YY_RULE_SETUP #line 7057 "hla.flx" { _return cmovneTkn ; } YY_BREAK case 1060: YY_RULE_SETUP #line 7058 "hla.flx" { _return cmovoTkn ; } YY_BREAK case 1061: YY_RULE_SETUP #line 7059 "hla.flx" { _return cmovpTkn ; } YY_BREAK case 1062: YY_RULE_SETUP #line 7060 "hla.flx" { _return cmovpTkn ; } YY_BREAK case 1063: YY_RULE_SETUP #line 7061 "hla.flx" { _return cmovnpTkn ; } YY_BREAK case 1064: YY_RULE_SETUP #line 7062 "hla.flx" { _return cmovsTkn ; } YY_BREAK case 1065: YY_RULE_SETUP #line 7063 "hla.flx" { _return cmoveTkn ; } YY_BREAK case 1066: YY_RULE_SETUP #line 7064 "hla.flx" { _return cmpTkn ; } YY_BREAK case 1067: YY_RULE_SETUP #line 7065 "hla.flx" { _return cmpsbTkn ; } YY_BREAK case 1068: YY_RULE_SETUP #line 7066 "hla.flx" { _return cmpsdTkn ; } YY_BREAK case 1069: YY_RULE_SETUP #line 7067 "hla.flx" { _return cmpswTkn ; } YY_BREAK case 1070: YY_RULE_SETUP #line 7068 "hla.flx" { _return cmpxchgTkn ; } YY_BREAK case 1071: YY_RULE_SETUP #line 7069 "hla.flx" { _return lockcmpxchgTkn ; } YY_BREAK case 1072: YY_RULE_SETUP #line 7070 "hla.flx" { _return cmpxchg8bTkn ; } YY_BREAK case 1073: YY_RULE_SETUP #line 7071 "hla.flx" { _return cpuidTkn ; } YY_BREAK case 1074: YY_RULE_SETUP #line 7072 "hla.flx" { _return cwdTkn ; } YY_BREAK case 1075: YY_RULE_SETUP #line 7073 "hla.flx" { _return cwdeTkn ; } YY_BREAK case 1076: YY_RULE_SETUP #line 7074 "hla.flx" { _return daaTkn ; } YY_BREAK case 1077: YY_RULE_SETUP #line 7075 "hla.flx" { _return dasTkn ; } YY_BREAK case 1078: YY_RULE_SETUP #line 7076 "hla.flx" { _return decTkn ; } YY_BREAK case 1079: YY_RULE_SETUP #line 7077 "hla.flx" { _return lockdecTkn ; } YY_BREAK case 1080: YY_RULE_SETUP #line 7078 "hla.flx" { _return divTkn ; } YY_BREAK case 1081: YY_RULE_SETUP #line 7079 "hla.flx" { _return enterTkn ; } YY_BREAK case 1082: YY_RULE_SETUP #line 7080 "hla.flx" { _return hltTkn ; } YY_BREAK case 1083: YY_RULE_SETUP #line 7081 "hla.flx" { _return idivTkn ; } YY_BREAK case 1084: YY_RULE_SETUP #line 7082 "hla.flx" { _return imodTkn ; } YY_BREAK case 1085: YY_RULE_SETUP #line 7083 "hla.flx" { _return imulTkn ; } YY_BREAK case 1086: YY_RULE_SETUP #line 7084 "hla.flx" { _return intmulTkn ; } YY_BREAK case 1087: YY_RULE_SETUP #line 7085 "hla.flx" { _return inTkn ; } YY_BREAK case 1088: YY_RULE_SETUP #line 7086 "hla.flx" { _return incTkn ; } YY_BREAK case 1089: YY_RULE_SETUP #line 7087 "hla.flx" { _return lockincTkn ; } YY_BREAK case 1090: YY_RULE_SETUP #line 7088 "hla.flx" { _return insbTkn ; } YY_BREAK case 1091: YY_RULE_SETUP #line 7089 "hla.flx" { _return insdTkn ; } YY_BREAK case 1092: YY_RULE_SETUP #line 7090 "hla.flx" { _return inswTkn ; } YY_BREAK case 1093: YY_RULE_SETUP #line 7091 "hla.flx" { _return intTkn ; } YY_BREAK case 1094: YY_RULE_SETUP #line 7092 "hla.flx" { _return intoTkn ; } YY_BREAK case 1095: YY_RULE_SETUP #line 7093 "hla.flx" { _return invdTkn ; } YY_BREAK case 1096: YY_RULE_SETUP #line 7094 "hla.flx" { _return invlpgTkn ; } YY_BREAK case 1097: YY_RULE_SETUP #line 7095 "hla.flx" { _return iretTkn ; } YY_BREAK case 1098: YY_RULE_SETUP #line 7096 "hla.flx" { _return iretdTkn ; } YY_BREAK case 1099: YY_RULE_SETUP #line 7097 "hla.flx" { _return jcxzTkn ; } YY_BREAK case 1100: YY_RULE_SETUP #line 7098 "hla.flx" { _return jecxzTkn ; } YY_BREAK case 1101: YY_RULE_SETUP #line 7099 "hla.flx" { _return jaTkn ; } YY_BREAK case 1102: YY_RULE_SETUP #line 7100 "hla.flx" { _return jaeTkn ; } YY_BREAK case 1103: YY_RULE_SETUP #line 7101 "hla.flx" { _return jbTkn ; } YY_BREAK case 1104: YY_RULE_SETUP #line 7102 "hla.flx" { _return jbeTkn ; } YY_BREAK case 1105: YY_RULE_SETUP #line 7103 "hla.flx" { _return jcTkn ; } YY_BREAK case 1106: YY_RULE_SETUP #line 7104 "hla.flx" { _return jeTkn ; } YY_BREAK case 1107: YY_RULE_SETUP #line 7105 "hla.flx" { _return jgTkn ; } YY_BREAK case 1108: YY_RULE_SETUP #line 7106 "hla.flx" { _return jgeTkn ; } YY_BREAK case 1109: YY_RULE_SETUP #line 7107 "hla.flx" { _return jlTkn ; } YY_BREAK case 1110: YY_RULE_SETUP #line 7108 "hla.flx" { _return jleTkn ; } YY_BREAK case 1111: YY_RULE_SETUP #line 7109 "hla.flx" { _return jnaTkn ; } YY_BREAK case 1112: YY_RULE_SETUP #line 7110 "hla.flx" { _return jnaeTkn; } YY_BREAK case 1113: YY_RULE_SETUP #line 7111 "hla.flx" { _return jnbTkn ; } YY_BREAK case 1114: YY_RULE_SETUP #line 7112 "hla.flx" { _return jnbeTkn; } YY_BREAK case 1115: YY_RULE_SETUP #line 7113 "hla.flx" { _return jncTkn ; } YY_BREAK case 1116: YY_RULE_SETUP #line 7114 "hla.flx" { _return jneTkn ; } YY_BREAK case 1117: YY_RULE_SETUP #line 7115 "hla.flx" { _return jngTkn ; } YY_BREAK case 1118: YY_RULE_SETUP #line 7116 "hla.flx" { _return jngeTkn; } YY_BREAK case 1119: YY_RULE_SETUP #line 7117 "hla.flx" { _return jnlTkn ; } YY_BREAK case 1120: YY_RULE_SETUP #line 7118 "hla.flx" { _return jnleTkn; } YY_BREAK case 1121: YY_RULE_SETUP #line 7119 "hla.flx" { _return jnoTkn ; } YY_BREAK case 1122: YY_RULE_SETUP #line 7120 "hla.flx" { _return jnpTkn ; } YY_BREAK case 1123: YY_RULE_SETUP #line 7121 "hla.flx" { _return jnsTkn ; } YY_BREAK case 1124: YY_RULE_SETUP #line 7122 "hla.flx" { _return jnzTkn ; } YY_BREAK case 1125: YY_RULE_SETUP #line 7123 "hla.flx" { _return joTkn ; } YY_BREAK case 1126: YY_RULE_SETUP #line 7124 "hla.flx" { _return jpTkn ; } YY_BREAK case 1127: YY_RULE_SETUP #line 7125 "hla.flx" { _return jpeTkn ; } YY_BREAK case 1128: YY_RULE_SETUP #line 7126 "hla.flx" { _return jpoTkn ; } YY_BREAK case 1129: YY_RULE_SETUP #line 7127 "hla.flx" { _return jsTkn ; } YY_BREAK case 1130: YY_RULE_SETUP #line 7128 "hla.flx" { _return jzTkn ; } YY_BREAK case 1131: YY_RULE_SETUP #line 7129 "hla.flx" { _return jmpTkn ; } YY_BREAK case 1132: YY_RULE_SETUP #line 7130 "hla.flx" { _return lahfTkn; } YY_BREAK case 1133: YY_RULE_SETUP #line 7131 "hla.flx" { _return larTkn ; } YY_BREAK case 1134: YY_RULE_SETUP #line 7132 "hla.flx" { _return leaTkn ; } YY_BREAK case 1135: YY_RULE_SETUP #line 7133 "hla.flx" { _return leaveTkn ; } YY_BREAK case 1136: YY_RULE_SETUP #line 7134 "hla.flx" { _return ldsTkn ; } YY_BREAK case 1137: YY_RULE_SETUP #line 7135 "hla.flx" { _return lesTkn ; } YY_BREAK case 1138: YY_RULE_SETUP #line 7136 "hla.flx" { _return lfsTkn ; } YY_BREAK case 1139: YY_RULE_SETUP #line 7137 "hla.flx" { _return lgsTkn ; } YY_BREAK case 1140: YY_RULE_SETUP #line 7138 "hla.flx" { _return lssTkn ; } YY_BREAK case 1141: YY_RULE_SETUP #line 7139 "hla.flx" { _return lslTkn ; } YY_BREAK case 1142: YY_RULE_SETUP #line 7140 "hla.flx" { _return lgdtTkn ; } YY_BREAK case 1143: YY_RULE_SETUP #line 7141 "hla.flx" { _return lidtTkn ; } YY_BREAK case 1144: YY_RULE_SETUP #line 7142 "hla.flx" { _return sgdtTkn ; } YY_BREAK case 1145: YY_RULE_SETUP #line 7143 "hla.flx" { _return sidtTkn ; } YY_BREAK case 1146: YY_RULE_SETUP #line 7144 "hla.flx" { _return lldtTkn ; } YY_BREAK case 1147: YY_RULE_SETUP #line 7145 "hla.flx" { _return sldtTkn ; } YY_BREAK case 1148: YY_RULE_SETUP #line 7146 "hla.flx" { _return lodsbTkn ; } YY_BREAK case 1149: YY_RULE_SETUP #line 7147 "hla.flx" { _return lodsdTkn ; } YY_BREAK case 1150: YY_RULE_SETUP #line 7148 "hla.flx" { _return lodswTkn ; } YY_BREAK case 1151: YY_RULE_SETUP #line 7149 "hla.flx" { _return loopTkn ; } YY_BREAK case 1152: YY_RULE_SETUP #line 7150 "hla.flx" { _return loopeTkn ; } YY_BREAK case 1153: YY_RULE_SETUP #line 7151 "hla.flx" { _return loopzTkn ; } YY_BREAK case 1154: YY_RULE_SETUP #line 7152 "hla.flx" { _return loopneTkn ; } YY_BREAK case 1155: YY_RULE_SETUP #line 7153 "hla.flx" { _return loopnzTkn ; } YY_BREAK case 1156: YY_RULE_SETUP #line 7154 "hla.flx" { _return ltrTkn ; } YY_BREAK case 1157: YY_RULE_SETUP #line 7155 "hla.flx" { _return strTkn ; } YY_BREAK case 1158: YY_RULE_SETUP #line 7156 "hla.flx" { _return movTkn ; } YY_BREAK case 1159: YY_RULE_SETUP #line 7157 "hla.flx" { _return movsbTkn ; } YY_BREAK case 1160: YY_RULE_SETUP #line 7158 "hla.flx" { _return movsdTkn ; } YY_BREAK case 1161: YY_RULE_SETUP #line 7159 "hla.flx" { _return movswTkn ; } YY_BREAK case 1162: YY_RULE_SETUP #line 7160 "hla.flx" { _return movsxTkn ; } YY_BREAK case 1163: YY_RULE_SETUP #line 7161 "hla.flx" { _return movzxTkn ; } YY_BREAK case 1164: YY_RULE_SETUP #line 7162 "hla.flx" { _return mulTkn ; } YY_BREAK case 1165: YY_RULE_SETUP #line 7163 "hla.flx" { _return negTkn ; } YY_BREAK case 1166: YY_RULE_SETUP #line 7164 "hla.flx" { _return locknegTkn ; } YY_BREAK case 1167: YY_RULE_SETUP #line 7165 "hla.flx" { _return nopTkn ; } YY_BREAK case 1168: YY_RULE_SETUP #line 7166 "hla.flx" { _return notTkn ; } YY_BREAK case 1169: YY_RULE_SETUP #line 7167 "hla.flx" { _return locknotTkn ; } YY_BREAK case 1170: YY_RULE_SETUP #line 7168 "hla.flx" { _return orTkn ; } YY_BREAK case 1171: YY_RULE_SETUP #line 7169 "hla.flx" { _return lockorTkn ; } YY_BREAK case 1172: YY_RULE_SETUP #line 7170 "hla.flx" { _return outTkn ; } YY_BREAK case 1173: YY_RULE_SETUP #line 7171 "hla.flx" { _return outsbTkn ; } YY_BREAK case 1174: YY_RULE_SETUP #line 7172 "hla.flx" { _return outsdTkn ; } YY_BREAK case 1175: YY_RULE_SETUP #line 7173 "hla.flx" { _return outswTkn ; } YY_BREAK case 1176: YY_RULE_SETUP #line 7174 "hla.flx" { _return popTkn ; } YY_BREAK case 1177: YY_RULE_SETUP #line 7175 "hla.flx" { _return popaTkn ; } YY_BREAK case 1178: YY_RULE_SETUP #line 7176 "hla.flx" { _return popadTkn ; } YY_BREAK case 1179: YY_RULE_SETUP #line 7177 "hla.flx" { _return popfTkn ; } YY_BREAK case 1180: YY_RULE_SETUP #line 7178 "hla.flx" { _return popfdTkn ; } YY_BREAK case 1181: YY_RULE_SETUP #line 7179 "hla.flx" { _return pushTkn ; } YY_BREAK case 1182: YY_RULE_SETUP #line 7180 "hla.flx" { _return pushaTkn ; } YY_BREAK case 1183: YY_RULE_SETUP #line 7181 "hla.flx" { _return pushadTkn ; } YY_BREAK case 1184: YY_RULE_SETUP #line 7182 "hla.flx" { _return pushdTkn ; } YY_BREAK case 1185: YY_RULE_SETUP #line 7183 "hla.flx" { _return pushfTkn ; } YY_BREAK case 1186: YY_RULE_SETUP #line 7184 "hla.flx" { _return pushfdTkn ; } YY_BREAK case 1187: YY_RULE_SETUP #line 7185 "hla.flx" { _return pushwTkn ; } YY_BREAK case 1188: YY_RULE_SETUP #line 7186 "hla.flx" { _return rclTkn ; } YY_BREAK case 1189: YY_RULE_SETUP #line 7187 "hla.flx" { _return rcrTkn ; } YY_BREAK case 1190: YY_RULE_SETUP #line 7188 "hla.flx" { _return rdmsrTkn ; } YY_BREAK case 1191: YY_RULE_SETUP #line 7189 "hla.flx" { _return rdpmcTkn ; } YY_BREAK case 1192: YY_RULE_SETUP #line 7190 "hla.flx" { _return rdtscTkn ; } YY_BREAK case 1193: YY_RULE_SETUP #line 7191 "hla.flx" { _return rsmTkn ; } YY_BREAK case 1194: YY_RULE_SETUP #line 7192 "hla.flx" { _return smswTkn ; } YY_BREAK case 1195: YY_RULE_SETUP #line 7193 "hla.flx" { _return lmswTkn ; } YY_BREAK case 1196: YY_RULE_SETUP #line 7194 "hla.flx" { _return repmovsbTkn ; } YY_BREAK case 1197: YY_RULE_SETUP #line 7195 "hla.flx" { _return repmovswTkn ; } YY_BREAK case 1198: YY_RULE_SETUP #line 7196 "hla.flx" { _return repmovsdTkn ; } YY_BREAK case 1199: YY_RULE_SETUP #line 7197 "hla.flx" { _return repinsbTkn ; } YY_BREAK case 1200: YY_RULE_SETUP #line 7198 "hla.flx" { _return repinswTkn ; } YY_BREAK case 1201: YY_RULE_SETUP #line 7199 "hla.flx" { _return repinsdTkn ; } YY_BREAK case 1202: YY_RULE_SETUP #line 7200 "hla.flx" { _return repoutsbTkn ; } YY_BREAK case 1203: YY_RULE_SETUP #line 7201 "hla.flx" { _return repoutswTkn ; } YY_BREAK case 1204: YY_RULE_SETUP #line 7202 "hla.flx" { _return repoutsdTkn ; } YY_BREAK case 1205: YY_RULE_SETUP #line 7203 "hla.flx" { _return repstosbTkn ; } YY_BREAK case 1206: YY_RULE_SETUP #line 7204 "hla.flx" { _return repstoswTkn ; } YY_BREAK case 1207: YY_RULE_SETUP #line 7205 "hla.flx" { _return repstosdTkn ; } YY_BREAK case 1208: YY_RULE_SETUP #line 7206 "hla.flx" { _return repecmpsbTkn ; } YY_BREAK case 1209: YY_RULE_SETUP #line 7207 "hla.flx" { _return repecmpswTkn ; } YY_BREAK case 1210: YY_RULE_SETUP #line 7208 "hla.flx" { _return repecmpsdTkn ; } YY_BREAK case 1211: YY_RULE_SETUP #line 7209 "hla.flx" { _return repescasbTkn ; } YY_BREAK case 1212: YY_RULE_SETUP #line 7210 "hla.flx" { _return repescaswTkn ; } YY_BREAK case 1213: YY_RULE_SETUP #line 7211 "hla.flx" { _return repescasdTkn ; } YY_BREAK case 1214: YY_RULE_SETUP #line 7212 "hla.flx" { _return repecmpsbTkn ; } YY_BREAK case 1215: YY_RULE_SETUP #line 7213 "hla.flx" { _return repecmpswTkn ; } YY_BREAK case 1216: YY_RULE_SETUP #line 7214 "hla.flx" { _return repecmpsdTkn ; } YY_BREAK case 1217: YY_RULE_SETUP #line 7215 "hla.flx" { _return repescasbTkn ; } YY_BREAK case 1218: YY_RULE_SETUP #line 7216 "hla.flx" { _return repescaswTkn ; } YY_BREAK case 1219: YY_RULE_SETUP #line 7217 "hla.flx" { _return repescasdTkn ; } YY_BREAK case 1220: YY_RULE_SETUP #line 7218 "hla.flx" { _return repnecmpsbTkn ; } YY_BREAK case 1221: YY_RULE_SETUP #line 7219 "hla.flx" { _return repnecmpswTkn ; } YY_BREAK case 1222: YY_RULE_SETUP #line 7220 "hla.flx" { _return repnecmpsdTkn ; } YY_BREAK case 1223: YY_RULE_SETUP #line 7221 "hla.flx" { _return repnescasbTkn ; } YY_BREAK case 1224: YY_RULE_SETUP #line 7222 "hla.flx" { _return repnescaswTkn ; } YY_BREAK case 1225: YY_RULE_SETUP #line 7223 "hla.flx" { _return repnescasdTkn ; } YY_BREAK case 1226: YY_RULE_SETUP #line 7224 "hla.flx" { _return repnecmpsbTkn ; } YY_BREAK case 1227: YY_RULE_SETUP #line 7225 "hla.flx" { _return repnecmpswTkn ; } YY_BREAK case 1228: YY_RULE_SETUP #line 7226 "hla.flx" { _return repnecmpsdTkn ; } YY_BREAK case 1229: YY_RULE_SETUP #line 7227 "hla.flx" { _return repnescasbTkn ; } YY_BREAK case 1230: YY_RULE_SETUP #line 7228 "hla.flx" { _return repnescaswTkn ; } YY_BREAK case 1231: YY_RULE_SETUP #line 7229 "hla.flx" { _return repnescasdTkn ; } YY_BREAK case 1232: YY_RULE_SETUP #line 7230 "hla.flx" { _return retTkn ; } YY_BREAK case 1233: YY_RULE_SETUP #line 7231 "hla.flx" { _return rolTkn ; } YY_BREAK case 1234: YY_RULE_SETUP #line 7232 "hla.flx" { _return rorTkn ; } YY_BREAK case 1235: YY_RULE_SETUP #line 7233 "hla.flx" { _return sahfTkn ; } YY_BREAK case 1236: YY_RULE_SETUP #line 7234 "hla.flx" { _return salTkn ; } YY_BREAK case 1237: YY_RULE_SETUP #line 7235 "hla.flx" { _return sarTkn ; } YY_BREAK case 1238: YY_RULE_SETUP #line 7236 "hla.flx" { _return sbbTkn ; } YY_BREAK case 1239: YY_RULE_SETUP #line 7237 "hla.flx" { _return locksbbTkn ; } YY_BREAK case 1240: YY_RULE_SETUP #line 7238 "hla.flx" { _return scasbTkn ; } YY_BREAK case 1241: YY_RULE_SETUP #line 7239 "hla.flx" { _return scasdTkn ; } YY_BREAK case 1242: YY_RULE_SETUP #line 7240 "hla.flx" { _return scaswTkn ; } YY_BREAK case 1243: YY_RULE_SETUP #line 7242 "hla.flx" { _return setnbeTkn ; } YY_BREAK case 1244: YY_RULE_SETUP #line 7243 "hla.flx" { _return setnbTkn ; } YY_BREAK case 1245: YY_RULE_SETUP #line 7244 "hla.flx" { _return setbTkn ; } YY_BREAK case 1246: YY_RULE_SETUP #line 7245 "hla.flx" { _return setbeTkn ; } YY_BREAK case 1247: YY_RULE_SETUP #line 7246 "hla.flx" { _return setbTkn ; } YY_BREAK case 1248: YY_RULE_SETUP #line 7247 "hla.flx" { _return setzTkn ; } YY_BREAK case 1249: YY_RULE_SETUP #line 7248 "hla.flx" { _return setnleTkn ; } YY_BREAK case 1250: YY_RULE_SETUP #line 7249 "hla.flx" { _return setnlTkn ; } YY_BREAK case 1251: YY_RULE_SETUP #line 7250 "hla.flx" { _return setlTkn ; } YY_BREAK case 1252: YY_RULE_SETUP #line 7251 "hla.flx" { _return setleTkn ; } YY_BREAK case 1253: YY_RULE_SETUP #line 7252 "hla.flx" { _return setbeTkn ; } YY_BREAK case 1254: YY_RULE_SETUP #line 7253 "hla.flx" { _return setbTkn ; } YY_BREAK case 1255: YY_RULE_SETUP #line 7254 "hla.flx" { _return setnbTkn ; } YY_BREAK case 1256: YY_RULE_SETUP #line 7255 "hla.flx" { _return setnbeTkn ; } YY_BREAK case 1257: YY_RULE_SETUP #line 7256 "hla.flx" { _return setnbTkn ; } YY_BREAK case 1258: YY_RULE_SETUP #line 7257 "hla.flx" { _return setnzTkn ; } YY_BREAK case 1259: YY_RULE_SETUP #line 7258 "hla.flx" { _return setleTkn ; } YY_BREAK case 1260: YY_RULE_SETUP #line 7259 "hla.flx" { _return setlTkn ; } YY_BREAK case 1261: YY_RULE_SETUP #line 7260 "hla.flx" { _return setnlTkn ; } YY_BREAK case 1262: YY_RULE_SETUP #line 7261 "hla.flx" { _return setnleTkn ; } YY_BREAK case 1263: YY_RULE_SETUP #line 7262 "hla.flx" { _return setnoTkn ; } YY_BREAK case 1264: YY_RULE_SETUP #line 7263 "hla.flx" { _return setnpTkn ; } YY_BREAK case 1265: YY_RULE_SETUP #line 7264 "hla.flx" { _return setnsTkn ; } YY_BREAK case 1266: YY_RULE_SETUP #line 7265 "hla.flx" { _return setnzTkn ; } YY_BREAK case 1267: YY_RULE_SETUP #line 7266 "hla.flx" { _return setoTkn ; } YY_BREAK case 1268: YY_RULE_SETUP #line 7267 "hla.flx" { _return setpTkn ; } YY_BREAK case 1269: YY_RULE_SETUP #line 7268 "hla.flx" { _return setpTkn ; } YY_BREAK case 1270: YY_RULE_SETUP #line 7269 "hla.flx" { _return setnpTkn ; } YY_BREAK case 1271: YY_RULE_SETUP #line 7270 "hla.flx" { _return setsTkn ; } YY_BREAK case 1272: YY_RULE_SETUP #line 7271 "hla.flx" { _return setzTkn ; } YY_BREAK case 1273: YY_RULE_SETUP #line 7273 "hla.flx" { _return shlTkn ; } YY_BREAK case 1274: YY_RULE_SETUP #line 7274 "hla.flx" { _return shldTkn ; } YY_BREAK case 1275: YY_RULE_SETUP #line 7275 "hla.flx" { _return shrTkn ; } YY_BREAK case 1276: YY_RULE_SETUP #line 7276 "hla.flx" { _return shrdTkn ; } YY_BREAK case 1277: YY_RULE_SETUP #line 7277 "hla.flx" { _return stcTkn ; } YY_BREAK case 1278: YY_RULE_SETUP #line 7278 "hla.flx" { _return stdTkn ; } YY_BREAK case 1279: YY_RULE_SETUP #line 7279 "hla.flx" { _return stiTkn ; } YY_BREAK case 1280: YY_RULE_SETUP #line 7280 "hla.flx" { _return stosbTkn ; } YY_BREAK case 1281: YY_RULE_SETUP #line 7281 "hla.flx" { _return stosdTkn ; } YY_BREAK case 1282: YY_RULE_SETUP #line 7282 "hla.flx" { _return stoswTkn ; } YY_BREAK case 1283: YY_RULE_SETUP #line 7283 "hla.flx" { _return subTkn ; } YY_BREAK case 1284: YY_RULE_SETUP #line 7284 "hla.flx" { _return locksubTkn ; } YY_BREAK case 1285: YY_RULE_SETUP #line 7285 "hla.flx" { _return testTkn ; } YY_BREAK case 1286: YY_RULE_SETUP #line 7286 "hla.flx" { _return waitTkn ; } YY_BREAK case 1287: YY_RULE_SETUP #line 7287 "hla.flx" { _return xaddTkn ; } YY_BREAK case 1288: YY_RULE_SETUP #line 7288 "hla.flx" { _return lockxaddTkn ; } YY_BREAK case 1289: YY_RULE_SETUP #line 7289 "hla.flx" { _return xchgTkn ; } YY_BREAK case 1290: YY_RULE_SETUP #line 7290 "hla.flx" { _return lockxchgTkn ; } YY_BREAK case 1291: YY_RULE_SETUP #line 7291 "hla.flx" { _return xlatTkn ; } YY_BREAK case 1292: YY_RULE_SETUP #line 7292 "hla.flx" { _return xorTkn ; } YY_BREAK case 1293: YY_RULE_SETUP #line 7293 "hla.flx" { _return lockxorTkn ; } YY_BREAK case 1294: YY_RULE_SETUP #line 7294 "hla.flx" { _return ud2Tkn ; } YY_BREAK case 1295: YY_RULE_SETUP #line 7295 "hla.flx" { _return verrTkn ; } YY_BREAK case 1296: YY_RULE_SETUP #line 7296 "hla.flx" { _return verwTkn ; } YY_BREAK case 1297: YY_RULE_SETUP #line 7297 "hla.flx" { _return wbinvdTkn ; } YY_BREAK case 1298: YY_RULE_SETUP #line 7298 "hla.flx" { _return wrmsrTkn ; } YY_BREAK /* ** Floating point instructions. */ case 1299: YY_RULE_SETUP #line 7311 "hla.flx" { testRW( fldTkn ); } YY_BREAK case 1300: YY_RULE_SETUP #line 7312 "hla.flx" { testRW( fildTkn ); } YY_BREAK case 1301: YY_RULE_SETUP #line 7313 "hla.flx" { testRW( fbldTkn ); } YY_BREAK case 1302: YY_RULE_SETUP #line 7314 "hla.flx" { testRW( fstTkn ); } YY_BREAK case 1303: YY_RULE_SETUP #line 7315 "hla.flx" { testRW( fstpTkn ); } YY_BREAK case 1304: YY_RULE_SETUP #line 7316 "hla.flx" { testRW( fistTkn ); } YY_BREAK case 1305: YY_RULE_SETUP #line 7317 "hla.flx" { testRW( fistpTkn ); } YY_BREAK case 1306: YY_RULE_SETUP #line 7318 "hla.flx" { testRW( fisttpTkn ); } YY_BREAK case 1307: YY_RULE_SETUP #line 7319 "hla.flx" { testRW( fbstpTkn ); } YY_BREAK case 1308: YY_RULE_SETUP #line 7320 "hla.flx" { testRW( fxchTkn ); } YY_BREAK case 1309: YY_RULE_SETUP #line 7321 "hla.flx" { testRW( fxamTkn ); } YY_BREAK case 1310: YY_RULE_SETUP #line 7322 "hla.flx" { testRW( faddTkn ); } YY_BREAK case 1311: YY_RULE_SETUP #line 7323 "hla.flx" { testRW( faddpTkn ); } YY_BREAK case 1312: YY_RULE_SETUP #line 7324 "hla.flx" { testRW( fiaddTkn ); } YY_BREAK case 1313: YY_RULE_SETUP #line 7325 "hla.flx" { testRW( fmulTkn ); } YY_BREAK case 1314: YY_RULE_SETUP #line 7326 "hla.flx" { testRW( fmulpTkn ); } YY_BREAK case 1315: YY_RULE_SETUP #line 7327 "hla.flx" { testRW( fimulTkn ); } YY_BREAK case 1316: YY_RULE_SETUP #line 7328 "hla.flx" { testRW( fsubTkn ); } YY_BREAK case 1317: YY_RULE_SETUP #line 7329 "hla.flx" { testRW( fsubpTkn ); } YY_BREAK case 1318: YY_RULE_SETUP #line 7330 "hla.flx" { testRW( fsubrTkn ); } YY_BREAK case 1319: YY_RULE_SETUP #line 7331 "hla.flx" { testRW( fsubrpTkn ); } YY_BREAK case 1320: YY_RULE_SETUP #line 7332 "hla.flx" { testRW( fisubTkn ); } YY_BREAK case 1321: YY_RULE_SETUP #line 7333 "hla.flx" { testRW( fisubrTkn ); } YY_BREAK case 1322: YY_RULE_SETUP #line 7334 "hla.flx" { testRW( fdivTkn ); } YY_BREAK case 1323: YY_RULE_SETUP #line 7335 "hla.flx" { testRW( fdivpTkn ); } YY_BREAK case 1324: YY_RULE_SETUP #line 7336 "hla.flx" { testRW( fdivrTkn ); } YY_BREAK case 1325: YY_RULE_SETUP #line 7337 "hla.flx" { testRW( fdivrpTkn ); } YY_BREAK case 1326: YY_RULE_SETUP #line 7338 "hla.flx" { testRW( fidivTkn ); } YY_BREAK case 1327: YY_RULE_SETUP #line 7339 "hla.flx" { testRW( fidivrTkn ); } YY_BREAK case 1328: YY_RULE_SETUP #line 7340 "hla.flx" { testRW( fcomTkn ); } YY_BREAK case 1329: YY_RULE_SETUP #line 7341 "hla.flx" { testRW( fcompTkn ); } YY_BREAK case 1330: YY_RULE_SETUP #line 7342 "hla.flx" { testRW( fcomppTkn ); } YY_BREAK case 1331: YY_RULE_SETUP #line 7343 "hla.flx" { testRW( ficomTkn ); } YY_BREAK case 1332: YY_RULE_SETUP #line 7344 "hla.flx" { testRW( ficompTkn ); } YY_BREAK case 1333: YY_RULE_SETUP #line 7345 "hla.flx" { testRW( fucomTkn ); } YY_BREAK case 1334: YY_RULE_SETUP #line 7346 "hla.flx" { testRW( fucompTkn ); } YY_BREAK case 1335: YY_RULE_SETUP #line 7347 "hla.flx" { testRW( fucomppTkn ); } YY_BREAK case 1336: YY_RULE_SETUP #line 7348 "hla.flx" { testRW( fsqrtTkn ); } YY_BREAK case 1337: YY_RULE_SETUP #line 7349 "hla.flx" { testRW( fabsTkn ); } YY_BREAK case 1338: YY_RULE_SETUP #line 7350 "hla.flx" { testRW( fchsTkn ); } YY_BREAK case 1339: YY_RULE_SETUP #line 7351 "hla.flx" { testRW( ftstTkn ); } YY_BREAK case 1340: YY_RULE_SETUP #line 7352 "hla.flx" { testRW( fscaleTkn ); } YY_BREAK case 1341: YY_RULE_SETUP #line 7353 "hla.flx" { testRW( fpremTkn ); } YY_BREAK case 1342: YY_RULE_SETUP #line 7354 "hla.flx" { testRW( fprem1Tkn ); } YY_BREAK case 1343: YY_RULE_SETUP #line 7355 "hla.flx" { testRW( frndintTkn ); } YY_BREAK case 1344: YY_RULE_SETUP #line 7356 "hla.flx" { testRW( fxtractTkn ); } YY_BREAK case 1345: YY_RULE_SETUP #line 7357 "hla.flx" { testRW( fldzTkn ); } YY_BREAK case 1346: YY_RULE_SETUP #line 7358 "hla.flx" { testRW( fld1Tkn ); } YY_BREAK case 1347: YY_RULE_SETUP #line 7359 "hla.flx" { testRW( fldpiTkn ); } YY_BREAK case 1348: YY_RULE_SETUP #line 7360 "hla.flx" { testRW( fldl2tTkn ); } YY_BREAK case 1349: YY_RULE_SETUP #line 7361 "hla.flx" { testRW( fldl2eTkn ); } YY_BREAK case 1350: YY_RULE_SETUP #line 7362 "hla.flx" { testRW( fldlg2Tkn ); } YY_BREAK case 1351: YY_RULE_SETUP #line 7363 "hla.flx" { testRW( fldln2Tkn ); } YY_BREAK case 1352: YY_RULE_SETUP #line 7364 "hla.flx" { testRW( f2xm1Tkn ); } YY_BREAK case 1353: YY_RULE_SETUP #line 7365 "hla.flx" { testRW( fsinTkn ); } YY_BREAK case 1354: YY_RULE_SETUP #line 7366 "hla.flx" { testRW( fcosTkn ); } YY_BREAK case 1355: YY_RULE_SETUP #line 7367 "hla.flx" { testRW( fsincosTkn ); } YY_BREAK case 1356: YY_RULE_SETUP #line 7368 "hla.flx" { testRW( fptanTkn ); } YY_BREAK case 1357: YY_RULE_SETUP #line 7369 "hla.flx" { testRW( fpatanTkn ); } YY_BREAK case 1358: YY_RULE_SETUP #line 7370 "hla.flx" { testRW( fyl2xTkn ); } YY_BREAK case 1359: YY_RULE_SETUP #line 7371 "hla.flx" { testRW( fyl2xp1Tkn ); } YY_BREAK case 1360: YY_RULE_SETUP #line 7372 "hla.flx" { testRW( finitTkn ); } YY_BREAK case 1361: YY_RULE_SETUP #line 7373 "hla.flx" { testRW( fninitTkn ); } YY_BREAK case 1362: YY_RULE_SETUP #line 7374 "hla.flx" { testRW( fwaitTkn ); } YY_BREAK case 1363: YY_RULE_SETUP #line 7375 "hla.flx" { testRW( fldcwTkn ); } YY_BREAK case 1364: YY_RULE_SETUP #line 7376 "hla.flx" { testRW( fstcwTkn ); } YY_BREAK case 1365: YY_RULE_SETUP #line 7377 "hla.flx" { testRW( fnstcwTkn ); } YY_BREAK case 1366: YY_RULE_SETUP #line 7378 "hla.flx" { testRW( fclexTkn ); } YY_BREAK case 1367: YY_RULE_SETUP #line 7379 "hla.flx" { testRW( fnclexTkn ); } YY_BREAK case 1368: YY_RULE_SETUP #line 7380 "hla.flx" { testRW( fldenvTkn ); } YY_BREAK case 1369: YY_RULE_SETUP #line 7381 "hla.flx" { testRW( fstenvTkn ); } YY_BREAK case 1370: YY_RULE_SETUP #line 7382 "hla.flx" { testRW( fnstenvTkn ); } YY_BREAK case 1371: YY_RULE_SETUP #line 7383 "hla.flx" { testRW( fsaveTkn ); } YY_BREAK case 1372: YY_RULE_SETUP #line 7384 "hla.flx" { testRW( fnsaveTkn ); } YY_BREAK case 1373: YY_RULE_SETUP #line 7385 "hla.flx" { testRW( frstorTkn ); } YY_BREAK case 1374: YY_RULE_SETUP #line 7386 "hla.flx" { testRW( fstswTkn ); } YY_BREAK case 1375: YY_RULE_SETUP #line 7387 "hla.flx" { testRW( fnstswTkn ); } YY_BREAK case 1376: YY_RULE_SETUP #line 7388 "hla.flx" { testRW( fincstpTkn ); } YY_BREAK case 1377: YY_RULE_SETUP #line 7389 "hla.flx" { testRW( fdecstpTkn ); } YY_BREAK case 1378: YY_RULE_SETUP #line 7390 "hla.flx" { testRW( fnopTkn ); } YY_BREAK case 1379: YY_RULE_SETUP #line 7391 "hla.flx" { testRW( ffreeTkn ); } YY_BREAK case 1380: YY_RULE_SETUP #line 7392 "hla.flx" { testRW( fcmovaTkn ); } YY_BREAK case 1381: YY_RULE_SETUP #line 7393 "hla.flx" { testRW( fcmovaeTkn ); } YY_BREAK case 1382: YY_RULE_SETUP #line 7394 "hla.flx" { testRW( fcmovbTkn ); } YY_BREAK case 1383: YY_RULE_SETUP #line 7395 "hla.flx" { testRW( fcmovbeTkn ); } YY_BREAK case 1384: YY_RULE_SETUP #line 7396 "hla.flx" { testRW( fcmoveTkn ); } YY_BREAK case 1385: YY_RULE_SETUP #line 7397 "hla.flx" { testRW( fcmovnaTkn ); } YY_BREAK case 1386: YY_RULE_SETUP #line 7398 "hla.flx" { testRW( fcmovnaeTkn );} YY_BREAK case 1387: YY_RULE_SETUP #line 7399 "hla.flx" { testRW( fcmovnbTkn ); } YY_BREAK case 1388: YY_RULE_SETUP #line 7400 "hla.flx" { testRW( fcmovnbeTkn );} YY_BREAK case 1389: YY_RULE_SETUP #line 7401 "hla.flx" { testRW( fcmovneTkn ); } YY_BREAK case 1390: YY_RULE_SETUP #line 7402 "hla.flx" { testRW( fcmovnuTkn ); } YY_BREAK case 1391: YY_RULE_SETUP #line 7403 "hla.flx" { testRW( fcmovuTkn ); } YY_BREAK case 1392: YY_RULE_SETUP #line 7404 "hla.flx" { testRW( fcomiTkn ); } YY_BREAK case 1393: YY_RULE_SETUP #line 7405 "hla.flx" { testRW( fcomipTkn ); } YY_BREAK case 1394: YY_RULE_SETUP #line 7406 "hla.flx" { testRW( fucomiTkn ); } YY_BREAK case 1395: YY_RULE_SETUP #line 7407 "hla.flx" { testRW( fucomipTkn ); } YY_BREAK case 1396: YY_RULE_SETUP #line 7411 "hla.flx" { _return fldTkn ; } YY_BREAK case 1397: YY_RULE_SETUP #line 7412 "hla.flx" { _return fildTkn ; } YY_BREAK case 1398: YY_RULE_SETUP #line 7413 "hla.flx" { _return fbldTkn ; } YY_BREAK case 1399: YY_RULE_SETUP #line 7414 "hla.flx" { _return fstTkn ; } YY_BREAK case 1400: YY_RULE_SETUP #line 7415 "hla.flx" { _return fstpTkn ; } YY_BREAK case 1401: YY_RULE_SETUP #line 7416 "hla.flx" { _return fistTkn ; } YY_BREAK case 1402: YY_RULE_SETUP #line 7417 "hla.flx" { _return fistpTkn ; } YY_BREAK case 1403: YY_RULE_SETUP #line 7418 "hla.flx" { _return fisttpTkn ; } YY_BREAK case 1404: YY_RULE_SETUP #line 7419 "hla.flx" { _return fbstpTkn ; } YY_BREAK case 1405: YY_RULE_SETUP #line 7420 "hla.flx" { _return fxchTkn ; } YY_BREAK case 1406: YY_RULE_SETUP #line 7421 "hla.flx" { _return fxamTkn ; } YY_BREAK case 1407: YY_RULE_SETUP #line 7422 "hla.flx" { _return faddTkn ; } YY_BREAK case 1408: YY_RULE_SETUP #line 7423 "hla.flx" { _return faddpTkn ; } YY_BREAK case 1409: YY_RULE_SETUP #line 7424 "hla.flx" { _return fiaddTkn ; } YY_BREAK case 1410: YY_RULE_SETUP #line 7425 "hla.flx" { _return fmulTkn ; } YY_BREAK case 1411: YY_RULE_SETUP #line 7426 "hla.flx" { _return fmulpTkn ; } YY_BREAK case 1412: YY_RULE_SETUP #line 7427 "hla.flx" { _return fimulTkn ; } YY_BREAK case 1413: YY_RULE_SETUP #line 7428 "hla.flx" { _return fsubTkn ; } YY_BREAK case 1414: YY_RULE_SETUP #line 7429 "hla.flx" { _return fsubpTkn ; } YY_BREAK case 1415: YY_RULE_SETUP #line 7430 "hla.flx" { _return fsubrTkn ; } YY_BREAK case 1416: YY_RULE_SETUP #line 7431 "hla.flx" { _return fsubrpTkn ; } YY_BREAK case 1417: YY_RULE_SETUP #line 7432 "hla.flx" { _return fisubTkn ; } YY_BREAK case 1418: YY_RULE_SETUP #line 7433 "hla.flx" { _return fisubrTkn ; } YY_BREAK case 1419: YY_RULE_SETUP #line 7434 "hla.flx" { _return fdivTkn ; } YY_BREAK case 1420: YY_RULE_SETUP #line 7435 "hla.flx" { _return fdivpTkn ; } YY_BREAK case 1421: YY_RULE_SETUP #line 7436 "hla.flx" { _return fdivrTkn ; } YY_BREAK case 1422: YY_RULE_SETUP #line 7437 "hla.flx" { _return fdivrpTkn ; } YY_BREAK case 1423: YY_RULE_SETUP #line 7438 "hla.flx" { _return fidivTkn ; } YY_BREAK case 1424: YY_RULE_SETUP #line 7439 "hla.flx" { _return fidivrTkn ; } YY_BREAK case 1425: YY_RULE_SETUP #line 7440 "hla.flx" { _return fcomTkn ; } YY_BREAK case 1426: YY_RULE_SETUP #line 7441 "hla.flx" { _return fcompTkn ; } YY_BREAK case 1427: YY_RULE_SETUP #line 7442 "hla.flx" { _return fcomppTkn ; } YY_BREAK case 1428: YY_RULE_SETUP #line 7443 "hla.flx" { _return ficomTkn ; } YY_BREAK case 1429: YY_RULE_SETUP #line 7444 "hla.flx" { _return ficompTkn ; } YY_BREAK case 1430: YY_RULE_SETUP #line 7445 "hla.flx" { _return fucomTkn ; } YY_BREAK case 1431: YY_RULE_SETUP #line 7446 "hla.flx" { _return fucompTkn ; } YY_BREAK case 1432: YY_RULE_SETUP #line 7447 "hla.flx" { _return fucomppTkn ; } YY_BREAK case 1433: YY_RULE_SETUP #line 7448 "hla.flx" { _return fsqrtTkn ; } YY_BREAK case 1434: YY_RULE_SETUP #line 7449 "hla.flx" { _return fabsTkn ; } YY_BREAK case 1435: YY_RULE_SETUP #line 7450 "hla.flx" { _return fchsTkn ; } YY_BREAK case 1436: YY_RULE_SETUP #line 7451 "hla.flx" { _return ftstTkn ; } YY_BREAK case 1437: YY_RULE_SETUP #line 7452 "hla.flx" { _return fscaleTkn ; } YY_BREAK case 1438: YY_RULE_SETUP #line 7453 "hla.flx" { _return fpremTkn ; } YY_BREAK case 1439: YY_RULE_SETUP #line 7454 "hla.flx" { _return fprem1Tkn ; } YY_BREAK case 1440: YY_RULE_SETUP #line 7455 "hla.flx" { _return frndintTkn ; } YY_BREAK case 1441: YY_RULE_SETUP #line 7456 "hla.flx" { _return fxtractTkn ; } YY_BREAK case 1442: YY_RULE_SETUP #line 7457 "hla.flx" { _return fldzTkn ; } YY_BREAK case 1443: YY_RULE_SETUP #line 7458 "hla.flx" { _return fld1Tkn ; } YY_BREAK case 1444: YY_RULE_SETUP #line 7459 "hla.flx" { _return fldpiTkn ; } YY_BREAK case 1445: YY_RULE_SETUP #line 7460 "hla.flx" { _return fldl2tTkn ; } YY_BREAK case 1446: YY_RULE_SETUP #line 7461 "hla.flx" { _return fldl2eTkn ; } YY_BREAK case 1447: YY_RULE_SETUP #line 7462 "hla.flx" { _return fldlg2Tkn ; } YY_BREAK case 1448: YY_RULE_SETUP #line 7463 "hla.flx" { _return fldln2Tkn ; } YY_BREAK case 1449: YY_RULE_SETUP #line 7464 "hla.flx" { _return f2xm1Tkn ; } YY_BREAK case 1450: YY_RULE_SETUP #line 7465 "hla.flx" { _return fsinTkn ; } YY_BREAK case 1451: YY_RULE_SETUP #line 7466 "hla.flx" { _return fcosTkn ; } YY_BREAK case 1452: YY_RULE_SETUP #line 7467 "hla.flx" { _return fsincosTkn ; } YY_BREAK case 1453: YY_RULE_SETUP #line 7468 "hla.flx" { _return fptanTkn ; } YY_BREAK case 1454: YY_RULE_SETUP #line 7469 "hla.flx" { _return fpatanTkn ; } YY_BREAK case 1455: YY_RULE_SETUP #line 7470 "hla.flx" { _return fyl2xTkn ; } YY_BREAK case 1456: YY_RULE_SETUP #line 7471 "hla.flx" { _return fyl2xp1Tkn ; } YY_BREAK case 1457: YY_RULE_SETUP #line 7472 "hla.flx" { _return finitTkn ; } YY_BREAK case 1458: YY_RULE_SETUP #line 7473 "hla.flx" { _return fninitTkn ; } YY_BREAK case 1459: YY_RULE_SETUP #line 7474 "hla.flx" { _return fwaitTkn ; } YY_BREAK case 1460: YY_RULE_SETUP #line 7475 "hla.flx" { _return fldcwTkn ; } YY_BREAK case 1461: YY_RULE_SETUP #line 7476 "hla.flx" { _return fstcwTkn ; } YY_BREAK case 1462: YY_RULE_SETUP #line 7477 "hla.flx" { _return fnstcwTkn ; } YY_BREAK case 1463: YY_RULE_SETUP #line 7478 "hla.flx" { _return fclexTkn ; } YY_BREAK case 1464: YY_RULE_SETUP #line 7479 "hla.flx" { _return fnclexTkn ; } YY_BREAK case 1465: YY_RULE_SETUP #line 7480 "hla.flx" { _return fldenvTkn ; } YY_BREAK case 1466: YY_RULE_SETUP #line 7481 "hla.flx" { _return fstenvTkn ; } YY_BREAK case 1467: YY_RULE_SETUP #line 7482 "hla.flx" { _return fnstenvTkn ; } YY_BREAK case 1468: YY_RULE_SETUP #line 7483 "hla.flx" { _return fsaveTkn ; } YY_BREAK case 1469: YY_RULE_SETUP #line 7484 "hla.flx" { _return fnsaveTkn ; } YY_BREAK case 1470: YY_RULE_SETUP #line 7485 "hla.flx" { _return frstorTkn ; } YY_BREAK case 1471: YY_RULE_SETUP #line 7486 "hla.flx" { _return fstswTkn ; } YY_BREAK case 1472: YY_RULE_SETUP #line 7487 "hla.flx" { _return fnstswTkn ; } YY_BREAK case 1473: YY_RULE_SETUP #line 7488 "hla.flx" { _return fincstpTkn ; } YY_BREAK case 1474: YY_RULE_SETUP #line 7489 "hla.flx" { _return fdecstpTkn ; } YY_BREAK case 1475: YY_RULE_SETUP #line 7490 "hla.flx" { _return fnopTkn ; } YY_BREAK case 1476: YY_RULE_SETUP #line 7491 "hla.flx" { _return ffreeTkn ; } YY_BREAK case 1477: YY_RULE_SETUP #line 7492 "hla.flx" { _return fcmovaTkn ; } YY_BREAK case 1478: YY_RULE_SETUP #line 7493 "hla.flx" { _return fcmovaeTkn ; } YY_BREAK case 1479: YY_RULE_SETUP #line 7494 "hla.flx" { _return fcmovbTkn ; } YY_BREAK case 1480: YY_RULE_SETUP #line 7495 "hla.flx" { _return fcmovbeTkn ; } YY_BREAK case 1481: YY_RULE_SETUP #line 7496 "hla.flx" { _return fcmoveTkn ; } YY_BREAK case 1482: YY_RULE_SETUP #line 7497 "hla.flx" { _return fcmovnaTkn ; } YY_BREAK case 1483: YY_RULE_SETUP #line 7498 "hla.flx" { _return fcmovnaeTkn ;} YY_BREAK case 1484: YY_RULE_SETUP #line 7499 "hla.flx" { _return fcmovnbTkn ; } YY_BREAK case 1485: YY_RULE_SETUP #line 7500 "hla.flx" { _return fcmovnbeTkn ;} YY_BREAK case 1486: YY_RULE_SETUP #line 7501 "hla.flx" { _return fcmovneTkn ; } YY_BREAK case 1487: YY_RULE_SETUP #line 7502 "hla.flx" { _return fcmovnuTkn ; } YY_BREAK case 1488: YY_RULE_SETUP #line 7503 "hla.flx" { _return fcmovuTkn ; } YY_BREAK case 1489: YY_RULE_SETUP #line 7504 "hla.flx" { _return fcomiTkn ; } YY_BREAK case 1490: YY_RULE_SETUP #line 7505 "hla.flx" { _return fcomipTkn ; } YY_BREAK case 1491: YY_RULE_SETUP #line 7506 "hla.flx" { _return fucomiTkn ; } YY_BREAK case 1492: YY_RULE_SETUP #line 7507 "hla.flx" { _return fucomipTkn ; } YY_BREAK /* ** MMX Instructions: */ case 1493: YY_RULE_SETUP #line 7515 "hla.flx" { testRW( paddbTkn ); } YY_BREAK case 1494: YY_RULE_SETUP #line 7516 "hla.flx" { testRW( paddwTkn ); } YY_BREAK case 1495: YY_RULE_SETUP #line 7517 "hla.flx" { testRW( padddTkn ); } YY_BREAK case 1496: YY_RULE_SETUP #line 7518 "hla.flx" { testRW( paddqTkn ); } YY_BREAK case 1497: YY_RULE_SETUP #line 7519 "hla.flx" { testRW( paddsbTkn ); } YY_BREAK case 1498: YY_RULE_SETUP #line 7520 "hla.flx" { testRW( paddswTkn ); } YY_BREAK case 1499: YY_RULE_SETUP #line 7521 "hla.flx" { testRW( paddusbTkn ); } YY_BREAK case 1500: YY_RULE_SETUP #line 7522 "hla.flx" { testRW( padduswTkn ); } YY_BREAK case 1501: YY_RULE_SETUP #line 7523 "hla.flx" { testRW( psubbTkn ); } YY_BREAK case 1502: YY_RULE_SETUP #line 7524 "hla.flx" { testRW( psubwTkn ); } YY_BREAK case 1503: YY_RULE_SETUP #line 7525 "hla.flx" { testRW( psubdTkn ); } YY_BREAK case 1504: YY_RULE_SETUP #line 7526 "hla.flx" { testRW( psubqTkn ); } YY_BREAK case 1505: YY_RULE_SETUP #line 7527 "hla.flx" { testRW( psubsbTkn ); } YY_BREAK case 1506: YY_RULE_SETUP #line 7528 "hla.flx" { testRW( psubswTkn ); } YY_BREAK case 1507: YY_RULE_SETUP #line 7529 "hla.flx" { testRW( psubusbTkn ); } YY_BREAK case 1508: YY_RULE_SETUP #line 7530 "hla.flx" { testRW( psubuswTkn ); } YY_BREAK case 1509: YY_RULE_SETUP #line 7531 "hla.flx" { testRW( pmulhuwTkn ); } YY_BREAK case 1510: YY_RULE_SETUP #line 7532 "hla.flx" { testRW( pmulhwTkn ); } YY_BREAK case 1511: YY_RULE_SETUP #line 7533 "hla.flx" { testRW( pmullwTkn ); } YY_BREAK case 1512: YY_RULE_SETUP #line 7534 "hla.flx" { testRW( pmaddwdTkn ); } YY_BREAK case 1513: YY_RULE_SETUP #line 7535 "hla.flx" { testRW( pavgbTkn ); } YY_BREAK case 1514: YY_RULE_SETUP #line 7536 "hla.flx" { testRW( pavgwTkn ); } YY_BREAK case 1515: YY_RULE_SETUP #line 7537 "hla.flx" { testRW( pcmpeqbTkn ); } YY_BREAK case 1516: YY_RULE_SETUP #line 7538 "hla.flx" { testRW( pcmpeqwTkn ); } YY_BREAK case 1517: YY_RULE_SETUP #line 7539 "hla.flx" { testRW( pcmpeqdTkn ); } YY_BREAK case 1518: YY_RULE_SETUP #line 7540 "hla.flx" { testRW( pcmpgtbTkn ); } YY_BREAK case 1519: YY_RULE_SETUP #line 7541 "hla.flx" { testRW( pcmpgtwTkn ); } YY_BREAK case 1520: YY_RULE_SETUP #line 7542 "hla.flx" { testRW( pcmpgtdTkn ); } YY_BREAK case 1521: YY_RULE_SETUP #line 7543 "hla.flx" { testRW( packuswbTkn ); } YY_BREAK case 1522: YY_RULE_SETUP #line 7544 "hla.flx" { testRW( packsswbTkn ); } YY_BREAK case 1523: YY_RULE_SETUP #line 7545 "hla.flx" { testRW( packssdwTkn ); } YY_BREAK case 1524: YY_RULE_SETUP #line 7546 "hla.flx" { testRW( punpcklbwTkn ); } YY_BREAK case 1525: YY_RULE_SETUP #line 7547 "hla.flx" { testRW( punpcklwdTkn ); } YY_BREAK case 1526: YY_RULE_SETUP #line 7548 "hla.flx" { testRW( punpckldqTkn ); } YY_BREAK case 1527: YY_RULE_SETUP #line 7549 "hla.flx" { testRW( punpckhbwTkn ); } YY_BREAK case 1528: YY_RULE_SETUP #line 7550 "hla.flx" { testRW( punpckhwdTkn ); } YY_BREAK case 1529: YY_RULE_SETUP #line 7551 "hla.flx" { testRW( punpckhdqTkn ); } YY_BREAK case 1530: YY_RULE_SETUP #line 7552 "hla.flx" { testRW( pandTkn ); } YY_BREAK case 1531: YY_RULE_SETUP #line 7553 "hla.flx" { testRW( pandnTkn ); } YY_BREAK case 1532: YY_RULE_SETUP #line 7554 "hla.flx" { testRW( porTkn ); } YY_BREAK case 1533: YY_RULE_SETUP #line 7555 "hla.flx" { testRW( pxorTkn ); } YY_BREAK case 1534: YY_RULE_SETUP #line 7556 "hla.flx" { testRW( psllwTkn ); } YY_BREAK case 1535: YY_RULE_SETUP #line 7557 "hla.flx" { testRW( pslldTkn ); } YY_BREAK case 1536: YY_RULE_SETUP #line 7558 "hla.flx" { testRW( psllqTkn ); } YY_BREAK case 1537: YY_RULE_SETUP #line 7559 "hla.flx" { testRW( psrlwTkn ); } YY_BREAK case 1538: YY_RULE_SETUP #line 7560 "hla.flx" { testRW( psrldTkn ); } YY_BREAK case 1539: YY_RULE_SETUP #line 7561 "hla.flx" { testRW( psrlqTkn ); } YY_BREAK case 1540: YY_RULE_SETUP #line 7562 "hla.flx" { testRW( psrawTkn ); } YY_BREAK case 1541: YY_RULE_SETUP #line 7563 "hla.flx" { testRW( psradTkn ); } YY_BREAK case 1542: YY_RULE_SETUP #line 7564 "hla.flx" { testRW( pmaxswTkn ); } YY_BREAK case 1543: YY_RULE_SETUP #line 7565 "hla.flx" { testRW( pmaxubTkn ); } YY_BREAK case 1544: YY_RULE_SETUP #line 7566 "hla.flx" { testRW( pminswTkn ); } YY_BREAK case 1545: YY_RULE_SETUP #line 7567 "hla.flx" { testRW( pminubTkn ); } YY_BREAK case 1546: YY_RULE_SETUP #line 7568 "hla.flx" { testRW( psadbwTkn ); } YY_BREAK case 1547: YY_RULE_SETUP #line 7569 "hla.flx" { testRW( pextrwTkn ); } YY_BREAK case 1548: YY_RULE_SETUP #line 7570 "hla.flx" { testRW( pinsrwTkn ); } YY_BREAK case 1549: YY_RULE_SETUP #line 7571 "hla.flx" { testRW( pmovmskbTkn ); } YY_BREAK case 1550: YY_RULE_SETUP #line 7572 "hla.flx" { testRW( pshufwTkn ); } YY_BREAK case 1551: YY_RULE_SETUP #line 7573 "hla.flx" { testRW( movdTkn ); } YY_BREAK case 1552: YY_RULE_SETUP #line 7574 "hla.flx" { testRW( movqTkn ); } YY_BREAK case 1553: YY_RULE_SETUP #line 7575 "hla.flx" { testRW( emmsTkn ); } YY_BREAK case 1554: YY_RULE_SETUP #line 7577 "hla.flx" { _return paddbTkn ; } YY_BREAK case 1555: YY_RULE_SETUP #line 7578 "hla.flx" { _return paddwTkn ; } YY_BREAK case 1556: YY_RULE_SETUP #line 7579 "hla.flx" { _return padddTkn ; } YY_BREAK case 1557: YY_RULE_SETUP #line 7580 "hla.flx" { _return paddqTkn ; } YY_BREAK case 1558: YY_RULE_SETUP #line 7581 "hla.flx" { _return paddsbTkn ; } YY_BREAK case 1559: YY_RULE_SETUP #line 7582 "hla.flx" { _return paddswTkn ; } YY_BREAK case 1560: YY_RULE_SETUP #line 7583 "hla.flx" { _return paddusbTkn ; } YY_BREAK case 1561: YY_RULE_SETUP #line 7584 "hla.flx" { _return padduswTkn ; } YY_BREAK case 1562: YY_RULE_SETUP #line 7585 "hla.flx" { _return psubbTkn ; } YY_BREAK case 1563: YY_RULE_SETUP #line 7586 "hla.flx" { _return psubwTkn ; } YY_BREAK case 1564: YY_RULE_SETUP #line 7587 "hla.flx" { _return psubdTkn ; } YY_BREAK case 1565: YY_RULE_SETUP #line 7588 "hla.flx" { _return psubqTkn ; } YY_BREAK case 1566: YY_RULE_SETUP #line 7589 "hla.flx" { _return psubsbTkn ; } YY_BREAK case 1567: YY_RULE_SETUP #line 7590 "hla.flx" { _return psubswTkn ; } YY_BREAK case 1568: YY_RULE_SETUP #line 7591 "hla.flx" { _return psubusbTkn ; } YY_BREAK case 1569: YY_RULE_SETUP #line 7592 "hla.flx" { _return psubuswTkn ; } YY_BREAK case 1570: YY_RULE_SETUP #line 7593 "hla.flx" { _return pmulhuwTkn ; } YY_BREAK case 1571: YY_RULE_SETUP #line 7594 "hla.flx" { _return pmulhwTkn ; } YY_BREAK case 1572: YY_RULE_SETUP #line 7595 "hla.flx" { _return pmullwTkn ; } YY_BREAK case 1573: YY_RULE_SETUP #line 7596 "hla.flx" { _return pmaddwdTkn ; } YY_BREAK case 1574: YY_RULE_SETUP #line 7597 "hla.flx" { _return pavgbTkn ; } YY_BREAK case 1575: YY_RULE_SETUP #line 7598 "hla.flx" { _return pavgwTkn ; } YY_BREAK case 1576: YY_RULE_SETUP #line 7599 "hla.flx" { _return pcmpeqbTkn ; } YY_BREAK case 1577: YY_RULE_SETUP #line 7600 "hla.flx" { _return pcmpeqwTkn ; } YY_BREAK case 1578: YY_RULE_SETUP #line 7601 "hla.flx" { _return pcmpeqdTkn ; } YY_BREAK case 1579: YY_RULE_SETUP #line 7602 "hla.flx" { _return pcmpgtbTkn ; } YY_BREAK case 1580: YY_RULE_SETUP #line 7603 "hla.flx" { _return pcmpgtwTkn ; } YY_BREAK case 1581: YY_RULE_SETUP #line 7604 "hla.flx" { _return pcmpgtdTkn ; } YY_BREAK case 1582: YY_RULE_SETUP #line 7605 "hla.flx" { _return packuswbTkn ; } YY_BREAK case 1583: YY_RULE_SETUP #line 7606 "hla.flx" { _return packsswbTkn ; } YY_BREAK case 1584: YY_RULE_SETUP #line 7607 "hla.flx" { _return packssdwTkn ; } YY_BREAK case 1585: YY_RULE_SETUP #line 7608 "hla.flx" { _return punpcklbwTkn ; } YY_BREAK case 1586: YY_RULE_SETUP #line 7609 "hla.flx" { _return punpcklwdTkn ; } YY_BREAK case 1587: YY_RULE_SETUP #line 7610 "hla.flx" { _return punpckldqTkn ; } YY_BREAK case 1588: YY_RULE_SETUP #line 7611 "hla.flx" { _return punpckhbwTkn ; } YY_BREAK case 1589: YY_RULE_SETUP #line 7612 "hla.flx" { _return punpckhwdTkn ; } YY_BREAK case 1590: YY_RULE_SETUP #line 7613 "hla.flx" { _return punpckhdqTkn ; } YY_BREAK case 1591: YY_RULE_SETUP #line 7614 "hla.flx" { _return pandTkn ; } YY_BREAK case 1592: YY_RULE_SETUP #line 7615 "hla.flx" { _return pandnTkn ; } YY_BREAK case 1593: YY_RULE_SETUP #line 7616 "hla.flx" { _return porTkn ; } YY_BREAK case 1594: YY_RULE_SETUP #line 7617 "hla.flx" { _return pxorTkn ; } YY_BREAK case 1595: YY_RULE_SETUP #line 7618 "hla.flx" { _return psllwTkn ; } YY_BREAK case 1596: YY_RULE_SETUP #line 7619 "hla.flx" { _return pslldTkn ; } YY_BREAK case 1597: YY_RULE_SETUP #line 7620 "hla.flx" { _return psllqTkn ; } YY_BREAK case 1598: YY_RULE_SETUP #line 7621 "hla.flx" { _return psrlwTkn ; } YY_BREAK case 1599: YY_RULE_SETUP #line 7622 "hla.flx" { _return psrldTkn ; } YY_BREAK case 1600: YY_RULE_SETUP #line 7623 "hla.flx" { _return psrlqTkn ; } YY_BREAK case 1601: YY_RULE_SETUP #line 7624 "hla.flx" { _return psrawTkn ; } YY_BREAK case 1602: YY_RULE_SETUP #line 7625 "hla.flx" { _return psradTkn ; } YY_BREAK case 1603: YY_RULE_SETUP #line 7626 "hla.flx" { _return pmaxswTkn ; } YY_BREAK case 1604: YY_RULE_SETUP #line 7627 "hla.flx" { _return pmaxubTkn ; } YY_BREAK case 1605: YY_RULE_SETUP #line 7628 "hla.flx" { _return pminswTkn ; } YY_BREAK case 1606: YY_RULE_SETUP #line 7629 "hla.flx" { _return pminubTkn ; } YY_BREAK case 1607: YY_RULE_SETUP #line 7630 "hla.flx" { _return psadbwTkn ; } YY_BREAK case 1608: YY_RULE_SETUP #line 7631 "hla.flx" { _return pextrwTkn ; } YY_BREAK case 1609: YY_RULE_SETUP #line 7632 "hla.flx" { _return pinsrwTkn ; } YY_BREAK case 1610: YY_RULE_SETUP #line 7633 "hla.flx" { _return pmovmskbTkn ; } YY_BREAK case 1611: YY_RULE_SETUP #line 7634 "hla.flx" { _return pshufwTkn ; } YY_BREAK case 1612: YY_RULE_SETUP #line 7635 "hla.flx" { _return movdTkn ; } YY_BREAK case 1613: YY_RULE_SETUP #line 7636 "hla.flx" { _return movqTkn ; } YY_BREAK case 1614: YY_RULE_SETUP #line 7637 "hla.flx" { _return emmsTkn ; } YY_BREAK /* ** SSE Instructions: */ case 1615: YY_RULE_SETUP #line 7646 "hla.flx" { testRW( addsdTkn ); } YY_BREAK case 1616: YY_RULE_SETUP #line 7647 "hla.flx" { testRW( addpdTkn ); } YY_BREAK case 1617: YY_RULE_SETUP #line 7648 "hla.flx" { testRW( addpsTkn ); } YY_BREAK case 1618: YY_RULE_SETUP #line 7649 "hla.flx" { testRW( addssTkn ); } YY_BREAK case 1619: YY_RULE_SETUP #line 7650 "hla.flx" { testRW( addsubpdTkn ); } YY_BREAK case 1620: YY_RULE_SETUP #line 7651 "hla.flx" { testRW( addsubpsTkn ); } YY_BREAK case 1621: YY_RULE_SETUP #line 7652 "hla.flx" { testRW( andnpdTkn ); } YY_BREAK case 1622: YY_RULE_SETUP #line 7653 "hla.flx" { testRW( andnpsTkn ); } YY_BREAK case 1623: YY_RULE_SETUP #line 7654 "hla.flx" { testRW( andpdTkn ); } YY_BREAK case 1624: YY_RULE_SETUP #line 7655 "hla.flx" { testRW( andpsTkn ); } YY_BREAK case 1625: YY_RULE_SETUP #line 7656 "hla.flx" { testRW( clflushTkn ); } YY_BREAK case 1626: YY_RULE_SETUP #line 7657 "hla.flx" { testRW( cmppdTkn ); } YY_BREAK case 1627: YY_RULE_SETUP #line 7658 "hla.flx" { testRW( cmppsTkn ); } YY_BREAK case 1628: YY_RULE_SETUP #line 7659 "hla.flx" { testRW( cmpssTkn ); } YY_BREAK case 1629: YY_RULE_SETUP #line 7660 "hla.flx" { testRW( cmpeqssTkn ); } YY_BREAK case 1630: YY_RULE_SETUP #line 7661 "hla.flx" { testRW( cmpltssTkn ); } YY_BREAK case 1631: YY_RULE_SETUP #line 7662 "hla.flx" { testRW( cmplessTkn ); } YY_BREAK case 1632: YY_RULE_SETUP #line 7663 "hla.flx" { testRW( cmpneqssTkn ); } YY_BREAK case 1633: YY_RULE_SETUP #line 7664 "hla.flx" { testRW( cmpnltssTkn ); } YY_BREAK case 1634: YY_RULE_SETUP #line 7665 "hla.flx" { testRW( cmpnlessTkn ); } YY_BREAK case 1635: YY_RULE_SETUP #line 7666 "hla.flx" { testRW( cmpordssTkn ); } YY_BREAK case 1636: YY_RULE_SETUP #line 7667 "hla.flx" { testRW( cmpunordssTkn ); } YY_BREAK case 1637: YY_RULE_SETUP #line 7668 "hla.flx" { testRW( cmpeqsdTkn ); } YY_BREAK case 1638: YY_RULE_SETUP #line 7669 "hla.flx" { testRW( cmpltsdTkn ); } YY_BREAK case 1639: YY_RULE_SETUP #line 7670 "hla.flx" { testRW( cmplesdTkn ); } YY_BREAK case 1640: YY_RULE_SETUP #line 7671 "hla.flx" { testRW( cmpneqsdTkn ); } YY_BREAK case 1641: YY_RULE_SETUP #line 7672 "hla.flx" { testRW( cmpnltsdTkn ); } YY_BREAK case 1642: YY_RULE_SETUP #line 7673 "hla.flx" { testRW( cmpnlesdTkn ); } YY_BREAK case 1643: YY_RULE_SETUP #line 7674 "hla.flx" { testRW( cmpordsdTkn ); } YY_BREAK case 1644: YY_RULE_SETUP #line 7675 "hla.flx" { testRW( cmpunordsdTkn ); } YY_BREAK case 1645: YY_RULE_SETUP #line 7676 "hla.flx" { testRW( cmpeqpsTkn ); } YY_BREAK case 1646: YY_RULE_SETUP #line 7677 "hla.flx" { testRW( cmpltpsTkn ); } YY_BREAK case 1647: YY_RULE_SETUP #line 7678 "hla.flx" { testRW( cmplepsTkn ); } YY_BREAK case 1648: YY_RULE_SETUP #line 7679 "hla.flx" { testRW( cmpneqpsTkn ); } YY_BREAK case 1649: YY_RULE_SETUP #line 7680 "hla.flx" { testRW( cmpnltpsTkn ); } YY_BREAK case 1650: YY_RULE_SETUP #line 7681 "hla.flx" { testRW( cmpnlepsTkn ); } YY_BREAK case 1651: YY_RULE_SETUP #line 7682 "hla.flx" { testRW( cmpordpsTkn ); } YY_BREAK case 1652: YY_RULE_SETUP #line 7683 "hla.flx" { testRW( cmpunordpsTkn ); } YY_BREAK case 1653: YY_RULE_SETUP #line 7684 "hla.flx" { testRW( cmpeqpdTkn ); } YY_BREAK case 1654: YY_RULE_SETUP #line 7685 "hla.flx" { testRW( cmpltpdTkn ); } YY_BREAK case 1655: YY_RULE_SETUP #line 7686 "hla.flx" { testRW( cmplepdTkn ); } YY_BREAK case 1656: YY_RULE_SETUP #line 7687 "hla.flx" { testRW( cmpneqpdTkn ); } YY_BREAK case 1657: YY_RULE_SETUP #line 7688 "hla.flx" { testRW( cmpnltpdTkn ); } YY_BREAK case 1658: YY_RULE_SETUP #line 7689 "hla.flx" { testRW( cmpnlepdTkn ); } YY_BREAK case 1659: YY_RULE_SETUP #line 7690 "hla.flx" { testRW( cmpordpdTkn ); } YY_BREAK case 1660: YY_RULE_SETUP #line 7691 "hla.flx" { testRW( cmpunordpdTkn ); } YY_BREAK case 1661: YY_RULE_SETUP #line 7692 "hla.flx" { testRW( comisdTkn ); } YY_BREAK case 1662: YY_RULE_SETUP #line 7693 "hla.flx" { testRW( comissTkn ); } YY_BREAK case 1663: YY_RULE_SETUP #line 7694 "hla.flx" { testRW( cvtdq2pdTkn ); } YY_BREAK case 1664: YY_RULE_SETUP #line 7695 "hla.flx" { testRW( cvtdq2psTkn ); } YY_BREAK case 1665: YY_RULE_SETUP #line 7696 "hla.flx" { testRW( cvtpd2dqTkn ); } YY_BREAK case 1666: YY_RULE_SETUP #line 7697 "hla.flx" { testRW( cvtpd2piTkn ); } YY_BREAK case 1667: YY_RULE_SETUP #line 7698 "hla.flx" { testRW( cvtpd2psTkn ); } YY_BREAK case 1668: YY_RULE_SETUP #line 7699 "hla.flx" { testRW( cvtpi2pdTkn ); } YY_BREAK case 1669: YY_RULE_SETUP #line 7700 "hla.flx" { testRW( cvtpi2psTkn ); } YY_BREAK case 1670: YY_RULE_SETUP #line 7701 "hla.flx" { testRW( cvtps2dqTkn ); } YY_BREAK case 1671: YY_RULE_SETUP #line 7702 "hla.flx" { testRW( cvtps2pdTkn ); } YY_BREAK case 1672: YY_RULE_SETUP #line 7703 "hla.flx" { testRW( cvtps2piTkn ); } YY_BREAK case 1673: YY_RULE_SETUP #line 7704 "hla.flx" { testRW( cvtsd2siTkn ); } YY_BREAK case 1674: YY_RULE_SETUP #line 7705 "hla.flx" { testRW( cvtsi2sdTkn ); } YY_BREAK case 1675: YY_RULE_SETUP #line 7706 "hla.flx" { testRW( cvtsi2ssTkn ); } YY_BREAK case 1676: YY_RULE_SETUP #line 7707 "hla.flx" { testRW( cvtss2sdTkn ); } YY_BREAK case 1677: YY_RULE_SETUP #line 7708 "hla.flx" { testRW( cvtsd2ssTkn ); } YY_BREAK case 1678: YY_RULE_SETUP #line 7709 "hla.flx" { testRW( cvtss2siTkn ); } YY_BREAK case 1679: YY_RULE_SETUP #line 7710 "hla.flx" { testRW( cvttpd2piTkn ); } YY_BREAK case 1680: YY_RULE_SETUP #line 7711 "hla.flx" { testRW( cvttpd2dqTkn ); } YY_BREAK case 1681: YY_RULE_SETUP #line 7712 "hla.flx" { testRW( cvttps2dqTkn ); } YY_BREAK case 1682: YY_RULE_SETUP #line 7713 "hla.flx" { testRW( cvttps2piTkn ); } YY_BREAK case 1683: YY_RULE_SETUP #line 7714 "hla.flx" { testRW( cvttsd2siTkn ); } YY_BREAK case 1684: YY_RULE_SETUP #line 7715 "hla.flx" { testRW( cvttss2siTkn ); } YY_BREAK case 1685: YY_RULE_SETUP #line 7716 "hla.flx" { testRW( divpdTkn ); } YY_BREAK case 1686: YY_RULE_SETUP #line 7717 "hla.flx" { testRW( divpsTkn ); } YY_BREAK case 1687: YY_RULE_SETUP #line 7718 "hla.flx" { testRW( divsdTkn ); } YY_BREAK case 1688: YY_RULE_SETUP #line 7719 "hla.flx" { testRW( divssTkn ); } YY_BREAK case 1689: YY_RULE_SETUP #line 7720 "hla.flx" { testRW( fxsaveTkn ); } YY_BREAK case 1690: YY_RULE_SETUP #line 7721 "hla.flx" { testRW( fxrstorTkn ); } YY_BREAK case 1691: YY_RULE_SETUP #line 7722 "hla.flx" { testRW( haddpdTkn ); } YY_BREAK case 1692: YY_RULE_SETUP #line 7723 "hla.flx" { testRW( haddpsTkn ); } YY_BREAK case 1693: YY_RULE_SETUP #line 7724 "hla.flx" { testRW( hsubpdTkn ); } YY_BREAK case 1694: YY_RULE_SETUP #line 7725 "hla.flx" { testRW( hsubpsTkn ); } YY_BREAK case 1695: YY_RULE_SETUP #line 7726 "hla.flx" { testRW( ldmxcsrTkn ); } YY_BREAK case 1696: YY_RULE_SETUP #line 7727 "hla.flx" { testRW( lfenceTkn ); } YY_BREAK case 1697: YY_RULE_SETUP #line 7728 "hla.flx" { testRW( lddquTkn ); } YY_BREAK case 1698: YY_RULE_SETUP #line 7729 "hla.flx" { testRW( maskmovdquTkn ); } YY_BREAK case 1699: YY_RULE_SETUP #line 7730 "hla.flx" { testRW( maskmovqTkn ); } YY_BREAK case 1700: YY_RULE_SETUP #line 7731 "hla.flx" { testRW( maxpdTkn ); } YY_BREAK case 1701: YY_RULE_SETUP #line 7732 "hla.flx" { testRW( maxpsTkn ); } YY_BREAK case 1702: YY_RULE_SETUP #line 7733 "hla.flx" { testRW( maxsdTkn ); } YY_BREAK case 1703: YY_RULE_SETUP #line 7734 "hla.flx" { testRW( maxssTkn ); } YY_BREAK case 1704: YY_RULE_SETUP #line 7735 "hla.flx" { testRW( mfenceTkn ); } YY_BREAK case 1705: YY_RULE_SETUP #line 7736 "hla.flx" { testRW( minpdTkn ); } YY_BREAK case 1706: YY_RULE_SETUP #line 7737 "hla.flx" { testRW( minpsTkn ); } YY_BREAK case 1707: YY_RULE_SETUP #line 7738 "hla.flx" { testRW( minsdTkn ); } YY_BREAK case 1708: YY_RULE_SETUP #line 7739 "hla.flx" { testRW( minssTkn ); } YY_BREAK case 1709: YY_RULE_SETUP #line 7740 "hla.flx" { testRW( monitorTkn ); } YY_BREAK case 1710: YY_RULE_SETUP #line 7741 "hla.flx" { testRW( movapdTkn ); } YY_BREAK case 1711: YY_RULE_SETUP #line 7742 "hla.flx" { testRW( movapsTkn ); } YY_BREAK case 1712: YY_RULE_SETUP #line 7743 "hla.flx" { testRW( movddupTkn ); } YY_BREAK case 1713: YY_RULE_SETUP #line 7744 "hla.flx" { testRW( movdqaTkn ); } YY_BREAK case 1714: YY_RULE_SETUP #line 7745 "hla.flx" { testRW( movdquTkn ); } YY_BREAK case 1715: YY_RULE_SETUP #line 7746 "hla.flx" { testRW( movdq2qTkn ); } YY_BREAK case 1716: YY_RULE_SETUP #line 7747 "hla.flx" { testRW( movhlpsTkn ); } YY_BREAK case 1717: YY_RULE_SETUP #line 7748 "hla.flx" { testRW( movhpdTkn ); } YY_BREAK case 1718: YY_RULE_SETUP #line 7749 "hla.flx" { testRW( movhpsTkn ); } YY_BREAK case 1719: YY_RULE_SETUP #line 7750 "hla.flx" { testRW( movlpdTkn ); } YY_BREAK case 1720: YY_RULE_SETUP #line 7751 "hla.flx" { testRW( movlpsTkn ); } YY_BREAK case 1721: YY_RULE_SETUP #line 7752 "hla.flx" { testRW( movlhpsTkn ); } YY_BREAK case 1722: YY_RULE_SETUP #line 7753 "hla.flx" { testRW( movmskpdTkn ); } YY_BREAK case 1723: YY_RULE_SETUP #line 7754 "hla.flx" { testRW( movmskpsTkn ); } YY_BREAK case 1724: YY_RULE_SETUP #line 7755 "hla.flx" { testRW( movntiTkn ); } YY_BREAK case 1725: YY_RULE_SETUP #line 7756 "hla.flx" { testRW( movntpdTkn ); } YY_BREAK case 1726: YY_RULE_SETUP #line 7757 "hla.flx" { testRW( movntpsTkn ); } YY_BREAK case 1727: YY_RULE_SETUP #line 7758 "hla.flx" { testRW( movntqTkn ); } YY_BREAK case 1728: YY_RULE_SETUP #line 7759 "hla.flx" { testRW( movntdqTkn ); } YY_BREAK case 1729: YY_RULE_SETUP #line 7760 "hla.flx" { testRW( movq2dqTkn ); } YY_BREAK case 1730: YY_RULE_SETUP #line 7761 "hla.flx" { testRW( movshdupTkn ); } YY_BREAK case 1731: YY_RULE_SETUP #line 7762 "hla.flx" { testRW( movsldupTkn ); } YY_BREAK case 1732: YY_RULE_SETUP #line 7763 "hla.flx" { testRW( movssTkn ); } YY_BREAK case 1733: YY_RULE_SETUP #line 7764 "hla.flx" { testRW( movupdTkn ); } YY_BREAK case 1734: YY_RULE_SETUP #line 7765 "hla.flx" { testRW( movupsTkn ); } YY_BREAK case 1735: YY_RULE_SETUP #line 7766 "hla.flx" { testRW( mulpdTkn ); } YY_BREAK case 1736: YY_RULE_SETUP #line 7767 "hla.flx" { testRW( mulpsTkn ); } YY_BREAK case 1737: YY_RULE_SETUP #line 7768 "hla.flx" { testRW( mulssTkn ); } YY_BREAK case 1738: YY_RULE_SETUP #line 7769 "hla.flx" { testRW( mulsdTkn ); } YY_BREAK case 1739: YY_RULE_SETUP #line 7770 "hla.flx" { testRW( mwaitTkn ); } YY_BREAK case 1740: YY_RULE_SETUP #line 7771 "hla.flx" { testRW( orpdTkn ); } YY_BREAK case 1741: YY_RULE_SETUP #line 7772 "hla.flx" { testRW( orpsTkn ); } YY_BREAK case 1742: YY_RULE_SETUP #line 7773 "hla.flx" { testRW( pauseTkn ); } YY_BREAK case 1743: YY_RULE_SETUP #line 7774 "hla.flx" { testRW( pmuludqTkn ); } YY_BREAK case 1744: YY_RULE_SETUP #line 7775 "hla.flx" { testRW( pshufdTkn ); } YY_BREAK case 1745: YY_RULE_SETUP #line 7776 "hla.flx" { testRW( pshufhwTkn ); } YY_BREAK case 1746: YY_RULE_SETUP #line 7777 "hla.flx" { testRW( pshuflwTkn ); } YY_BREAK case 1747: YY_RULE_SETUP #line 7778 "hla.flx" { testRW( prefetcht0Tkn ); } YY_BREAK case 1748: YY_RULE_SETUP #line 7779 "hla.flx" { testRW( prefetcht1Tkn ); } YY_BREAK case 1749: YY_RULE_SETUP #line 7780 "hla.flx" { testRW( prefetcht2Tkn ); } YY_BREAK case 1750: YY_RULE_SETUP #line 7781 "hla.flx" { testRW( prefetchntaTkn ); } YY_BREAK case 1751: YY_RULE_SETUP #line 7782 "hla.flx" { testRW( pslldqTkn ); } YY_BREAK case 1752: YY_RULE_SETUP #line 7783 "hla.flx" { testRW( psrldqTkn ); } YY_BREAK case 1753: YY_RULE_SETUP #line 7784 "hla.flx" { testRW( punpckhqdqTkn ); } YY_BREAK case 1754: YY_RULE_SETUP #line 7785 "hla.flx" { testRW( punpcklqdqTkn ); } YY_BREAK case 1755: YY_RULE_SETUP #line 7786 "hla.flx" { testRW( rcppsTkn ); } YY_BREAK case 1756: YY_RULE_SETUP #line 7787 "hla.flx" { testRW( rcpssTkn ); } YY_BREAK case 1757: YY_RULE_SETUP #line 7788 "hla.flx" { testRW( rsqrtpsTkn ); } YY_BREAK case 1758: YY_RULE_SETUP #line 7789 "hla.flx" { testRW( rsqrtssTkn ); } YY_BREAK case 1759: YY_RULE_SETUP #line 7790 "hla.flx" { testRW( sfenceTkn ); } YY_BREAK case 1760: YY_RULE_SETUP #line 7791 "hla.flx" { testRW( shufpdTkn ); } YY_BREAK case 1761: YY_RULE_SETUP #line 7792 "hla.flx" { testRW( shufpsTkn ); } YY_BREAK case 1762: YY_RULE_SETUP #line 7793 "hla.flx" { testRW( sqrtpdTkn ); } YY_BREAK case 1763: YY_RULE_SETUP #line 7794 "hla.flx" { testRW( sqrtpsTkn ); } YY_BREAK case 1764: YY_RULE_SETUP #line 7795 "hla.flx" { testRW( sqrtsdTkn ); } YY_BREAK case 1765: YY_RULE_SETUP #line 7796 "hla.flx" { testRW( sqrtssTkn ); } YY_BREAK case 1766: YY_RULE_SETUP #line 7797 "hla.flx" { testRW( stmxcsrTkn ); } YY_BREAK case 1767: YY_RULE_SETUP #line 7798 "hla.flx" { testRW( subpsTkn ); } YY_BREAK case 1768: YY_RULE_SETUP #line 7799 "hla.flx" { testRW( subpdTkn ); } YY_BREAK case 1769: YY_RULE_SETUP #line 7800 "hla.flx" { testRW( subsdTkn ); } YY_BREAK case 1770: YY_RULE_SETUP #line 7801 "hla.flx" { testRW( subssTkn ); } YY_BREAK case 1771: YY_RULE_SETUP #line 7802 "hla.flx" { testRW( sysenterTkn ); } YY_BREAK case 1772: YY_RULE_SETUP #line 7803 "hla.flx" { testRW( sysexitTkn ); } YY_BREAK case 1773: YY_RULE_SETUP #line 7804 "hla.flx" { testRW( ucomisdTkn ); } YY_BREAK case 1774: YY_RULE_SETUP #line 7805 "hla.flx" { testRW( ucomissTkn ); } YY_BREAK case 1775: YY_RULE_SETUP #line 7806 "hla.flx" { testRW( unpckhpdTkn ); } YY_BREAK case 1776: YY_RULE_SETUP #line 7807 "hla.flx" { testRW( unpckhpsTkn ); } YY_BREAK case 1777: YY_RULE_SETUP #line 7808 "hla.flx" { testRW( unpcklpdTkn ); } YY_BREAK case 1778: YY_RULE_SETUP #line 7809 "hla.flx" { testRW( unpcklpsTkn ); } YY_BREAK case 1779: YY_RULE_SETUP #line 7810 "hla.flx" { testRW( xorpdTkn ); } YY_BREAK case 1780: YY_RULE_SETUP #line 7811 "hla.flx" { testRW( xorpsTkn ); } YY_BREAK case 1781: YY_RULE_SETUP #line 7815 "hla.flx" { _return addsdTkn ; } YY_BREAK case 1782: YY_RULE_SETUP #line 7816 "hla.flx" { _return addpdTkn ; } YY_BREAK case 1783: YY_RULE_SETUP #line 7817 "hla.flx" { _return addpsTkn ; } YY_BREAK case 1784: YY_RULE_SETUP #line 7818 "hla.flx" { _return addssTkn ; } YY_BREAK case 1785: YY_RULE_SETUP #line 7819 "hla.flx" { _return addsubpdTkn ; } YY_BREAK case 1786: YY_RULE_SETUP #line 7820 "hla.flx" { _return addsubpsTkn ; } YY_BREAK case 1787: YY_RULE_SETUP #line 7821 "hla.flx" { _return andnpdTkn ; } YY_BREAK case 1788: YY_RULE_SETUP #line 7822 "hla.flx" { _return andnpsTkn ; } YY_BREAK case 1789: YY_RULE_SETUP #line 7823 "hla.flx" { _return andpdTkn ; } YY_BREAK case 1790: YY_RULE_SETUP #line 7824 "hla.flx" { _return andpsTkn ; } YY_BREAK case 1791: YY_RULE_SETUP #line 7825 "hla.flx" { _return clflushTkn ; } YY_BREAK case 1792: YY_RULE_SETUP #line 7826 "hla.flx" { _return cmppdTkn ; } YY_BREAK case 1793: YY_RULE_SETUP #line 7827 "hla.flx" { _return cmppsTkn ; } YY_BREAK case 1794: YY_RULE_SETUP #line 7828 "hla.flx" { _return cmpssTkn ; } YY_BREAK case 1795: YY_RULE_SETUP #line 7829 "hla.flx" { _return cmpeqssTkn ; } YY_BREAK case 1796: YY_RULE_SETUP #line 7830 "hla.flx" { _return cmpltssTkn ; } YY_BREAK case 1797: YY_RULE_SETUP #line 7831 "hla.flx" { _return cmplessTkn ; } YY_BREAK case 1798: YY_RULE_SETUP #line 7832 "hla.flx" { _return cmpneqssTkn ; } YY_BREAK case 1799: YY_RULE_SETUP #line 7833 "hla.flx" { _return cmpnltssTkn ; } YY_BREAK case 1800: YY_RULE_SETUP #line 7834 "hla.flx" { _return cmpnlessTkn ; } YY_BREAK case 1801: YY_RULE_SETUP #line 7835 "hla.flx" { _return cmpordssTkn ; } YY_BREAK case 1802: YY_RULE_SETUP #line 7836 "hla.flx" { _return cmpunordssTkn ; } YY_BREAK case 1803: YY_RULE_SETUP #line 7837 "hla.flx" { _return cmpeqsdTkn ; } YY_BREAK case 1804: YY_RULE_SETUP #line 7838 "hla.flx" { _return cmpltsdTkn ; } YY_BREAK case 1805: YY_RULE_SETUP #line 7839 "hla.flx" { _return cmplesdTkn ; } YY_BREAK case 1806: YY_RULE_SETUP #line 7840 "hla.flx" { _return cmpneqsdTkn ; } YY_BREAK case 1807: YY_RULE_SETUP #line 7841 "hla.flx" { _return cmpnltsdTkn ; } YY_BREAK case 1808: YY_RULE_SETUP #line 7842 "hla.flx" { _return cmpnlesdTkn ; } YY_BREAK case 1809: YY_RULE_SETUP #line 7843 "hla.flx" { _return cmpordsdTkn ; } YY_BREAK case 1810: YY_RULE_SETUP #line 7844 "hla.flx" { _return cmpunordsdTkn ; } YY_BREAK case 1811: YY_RULE_SETUP #line 7845 "hla.flx" { _return cmpeqpsTkn ; } YY_BREAK case 1812: YY_RULE_SETUP #line 7846 "hla.flx" { _return cmpltpsTkn ; } YY_BREAK case 1813: YY_RULE_SETUP #line 7847 "hla.flx" { _return cmplepsTkn ; } YY_BREAK case 1814: YY_RULE_SETUP #line 7848 "hla.flx" { _return cmpneqpsTkn ; } YY_BREAK case 1815: YY_RULE_SETUP #line 7849 "hla.flx" { _return cmpnltpsTkn ; } YY_BREAK case 1816: YY_RULE_SETUP #line 7850 "hla.flx" { _return cmpnlepsTkn ; } YY_BREAK case 1817: YY_RULE_SETUP #line 7851 "hla.flx" { _return cmpordpsTkn ; } YY_BREAK case 1818: YY_RULE_SETUP #line 7852 "hla.flx" { _return cmpunordpsTkn ; } YY_BREAK case 1819: YY_RULE_SETUP #line 7853 "hla.flx" { _return cmpeqpdTkn ; } YY_BREAK case 1820: YY_RULE_SETUP #line 7854 "hla.flx" { _return cmpltpdTkn ; } YY_BREAK case 1821: YY_RULE_SETUP #line 7855 "hla.flx" { _return cmplepdTkn ; } YY_BREAK case 1822: YY_RULE_SETUP #line 7856 "hla.flx" { _return cmpneqpdTkn ; } YY_BREAK case 1823: YY_RULE_SETUP #line 7857 "hla.flx" { _return cmpnltpdTkn ; } YY_BREAK case 1824: YY_RULE_SETUP #line 7858 "hla.flx" { _return cmpnlepdTkn ; } YY_BREAK case 1825: YY_RULE_SETUP #line 7859 "hla.flx" { _return cmpordpdTkn ; } YY_BREAK case 1826: YY_RULE_SETUP #line 7860 "hla.flx" { _return cmpunordpdTkn ; } YY_BREAK case 1827: YY_RULE_SETUP #line 7861 "hla.flx" { _return comisdTkn ; } YY_BREAK case 1828: YY_RULE_SETUP #line 7862 "hla.flx" { _return comissTkn ; } YY_BREAK case 1829: YY_RULE_SETUP #line 7863 "hla.flx" { _return cvtdq2pdTkn ; } YY_BREAK case 1830: YY_RULE_SETUP #line 7864 "hla.flx" { _return cvtdq2psTkn ; } YY_BREAK case 1831: YY_RULE_SETUP #line 7865 "hla.flx" { _return cvtpd2dqTkn ; } YY_BREAK case 1832: YY_RULE_SETUP #line 7866 "hla.flx" { _return cvtpd2piTkn ; } YY_BREAK case 1833: YY_RULE_SETUP #line 7867 "hla.flx" { _return cvtpd2psTkn ; } YY_BREAK case 1834: YY_RULE_SETUP #line 7868 "hla.flx" { _return cvtpi2pdTkn ; } YY_BREAK case 1835: YY_RULE_SETUP #line 7869 "hla.flx" { _return cvtpi2psTkn ; } YY_BREAK case 1836: YY_RULE_SETUP #line 7870 "hla.flx" { _return cvtps2dqTkn ; } YY_BREAK case 1837: YY_RULE_SETUP #line 7871 "hla.flx" { _return cvtps2pdTkn ; } YY_BREAK case 1838: YY_RULE_SETUP #line 7872 "hla.flx" { _return cvtps2piTkn ; } YY_BREAK case 1839: YY_RULE_SETUP #line 7873 "hla.flx" { _return cvtsd2siTkn ; } YY_BREAK case 1840: YY_RULE_SETUP #line 7874 "hla.flx" { _return cvtsi2sdTkn ; } YY_BREAK case 1841: YY_RULE_SETUP #line 7875 "hla.flx" { _return cvtsi2ssTkn ; } YY_BREAK case 1842: YY_RULE_SETUP #line 7876 "hla.flx" { _return cvtss2sdTkn ; } YY_BREAK case 1843: YY_RULE_SETUP #line 7877 "hla.flx" { _return cvtsd2ssTkn ; } YY_BREAK case 1844: YY_RULE_SETUP #line 7878 "hla.flx" { _return cvtss2siTkn ; } YY_BREAK case 1845: YY_RULE_SETUP #line 7879 "hla.flx" { _return cvttpd2piTkn ; } YY_BREAK case 1846: YY_RULE_SETUP #line 7880 "hla.flx" { _return cvttpd2dqTkn ; } YY_BREAK case 1847: YY_RULE_SETUP #line 7881 "hla.flx" { _return cvttps2dqTkn ; } YY_BREAK case 1848: YY_RULE_SETUP #line 7882 "hla.flx" { _return cvttps2piTkn ; } YY_BREAK case 1849: YY_RULE_SETUP #line 7883 "hla.flx" { _return cvttsd2siTkn ; } YY_BREAK case 1850: YY_RULE_SETUP #line 7884 "hla.flx" { _return cvttss2siTkn ; } YY_BREAK case 1851: YY_RULE_SETUP #line 7885 "hla.flx" { _return divpdTkn ; } YY_BREAK case 1852: YY_RULE_SETUP #line 7886 "hla.flx" { _return divpsTkn ; } YY_BREAK case 1853: YY_RULE_SETUP #line 7887 "hla.flx" { _return divsdTkn ; } YY_BREAK case 1854: YY_RULE_SETUP #line 7888 "hla.flx" { _return divssTkn ; } YY_BREAK case 1855: YY_RULE_SETUP #line 7889 "hla.flx" { _return fxsaveTkn ; } YY_BREAK case 1856: YY_RULE_SETUP #line 7890 "hla.flx" { _return fxrstorTkn ; } YY_BREAK case 1857: YY_RULE_SETUP #line 7891 "hla.flx" { _return haddpdTkn ; } YY_BREAK case 1858: YY_RULE_SETUP #line 7892 "hla.flx" { _return haddpsTkn ; } YY_BREAK case 1859: YY_RULE_SETUP #line 7893 "hla.flx" { _return hsubpdTkn ; } YY_BREAK case 1860: YY_RULE_SETUP #line 7894 "hla.flx" { _return hsubpsTkn ; } YY_BREAK case 1861: YY_RULE_SETUP #line 7895 "hla.flx" { _return ldmxcsrTkn ; } YY_BREAK case 1862: YY_RULE_SETUP #line 7896 "hla.flx" { _return lfenceTkn ; } YY_BREAK case 1863: YY_RULE_SETUP #line 7897 "hla.flx" { _return lddquTkn ; } YY_BREAK case 1864: YY_RULE_SETUP #line 7898 "hla.flx" { _return maskmovdquTkn ; } YY_BREAK case 1865: YY_RULE_SETUP #line 7899 "hla.flx" { _return maskmovqTkn ; } YY_BREAK case 1866: YY_RULE_SETUP #line 7900 "hla.flx" { _return maxpdTkn ; } YY_BREAK case 1867: YY_RULE_SETUP #line 7901 "hla.flx" { _return maxpsTkn ; } YY_BREAK case 1868: YY_RULE_SETUP #line 7902 "hla.flx" { _return maxsdTkn ; } YY_BREAK case 1869: YY_RULE_SETUP #line 7903 "hla.flx" { _return maxssTkn ; } YY_BREAK case 1870: YY_RULE_SETUP #line 7904 "hla.flx" { _return mfenceTkn ; } YY_BREAK case 1871: YY_RULE_SETUP #line 7905 "hla.flx" { _return minpdTkn ; } YY_BREAK case 1872: YY_RULE_SETUP #line 7906 "hla.flx" { _return minpsTkn ; } YY_BREAK case 1873: YY_RULE_SETUP #line 7907 "hla.flx" { _return minsdTkn ; } YY_BREAK case 1874: YY_RULE_SETUP #line 7908 "hla.flx" { _return minssTkn ; } YY_BREAK case 1875: YY_RULE_SETUP #line 7909 "hla.flx" { _return monitorTkn ; } YY_BREAK case 1876: YY_RULE_SETUP #line 7910 "hla.flx" { _return movapdTkn ; } YY_BREAK case 1877: YY_RULE_SETUP #line 7911 "hla.flx" { _return movapsTkn ; } YY_BREAK case 1878: YY_RULE_SETUP #line 7912 "hla.flx" { _return movddupTkn ; } YY_BREAK case 1879: YY_RULE_SETUP #line 7913 "hla.flx" { _return movdqaTkn ; } YY_BREAK case 1880: YY_RULE_SETUP #line 7914 "hla.flx" { _return movdquTkn ; } YY_BREAK case 1881: YY_RULE_SETUP #line 7915 "hla.flx" { _return movdq2qTkn ; } YY_BREAK case 1882: YY_RULE_SETUP #line 7916 "hla.flx" { _return movhlpsTkn ; } YY_BREAK case 1883: YY_RULE_SETUP #line 7917 "hla.flx" { _return movhpdTkn ; } YY_BREAK case 1884: YY_RULE_SETUP #line 7918 "hla.flx" { _return movhpsTkn ; } YY_BREAK case 1885: YY_RULE_SETUP #line 7919 "hla.flx" { _return movlpdTkn ; } YY_BREAK case 1886: YY_RULE_SETUP #line 7920 "hla.flx" { _return movlpsTkn ; } YY_BREAK case 1887: YY_RULE_SETUP #line 7921 "hla.flx" { _return movlhpsTkn ; } YY_BREAK case 1888: YY_RULE_SETUP #line 7922 "hla.flx" { _return movmskpdTkn ; } YY_BREAK case 1889: YY_RULE_SETUP #line 7923 "hla.flx" { _return movmskpsTkn ; } YY_BREAK case 1890: YY_RULE_SETUP #line 7924 "hla.flx" { _return movntiTkn ; } YY_BREAK case 1891: YY_RULE_SETUP #line 7925 "hla.flx" { _return movntpdTkn ; } YY_BREAK case 1892: YY_RULE_SETUP #line 7926 "hla.flx" { _return movntpsTkn ; } YY_BREAK case 1893: YY_RULE_SETUP #line 7927 "hla.flx" { _return movntqTkn ; } YY_BREAK case 1894: YY_RULE_SETUP #line 7928 "hla.flx" { _return movntdqTkn ; } YY_BREAK case 1895: YY_RULE_SETUP #line 7929 "hla.flx" { _return movq2dqTkn ; } YY_BREAK case 1896: YY_RULE_SETUP #line 7930 "hla.flx" { _return movshdupTkn ; } YY_BREAK case 1897: YY_RULE_SETUP #line 7931 "hla.flx" { _return movsldupTkn ; } YY_BREAK case 1898: YY_RULE_SETUP #line 7932 "hla.flx" { _return movssTkn ; } YY_BREAK case 1899: YY_RULE_SETUP #line 7933 "hla.flx" { _return movupdTkn ; } YY_BREAK case 1900: YY_RULE_SETUP #line 7934 "hla.flx" { _return movupsTkn ; } YY_BREAK case 1901: YY_RULE_SETUP #line 7935 "hla.flx" { _return mulpdTkn ; } YY_BREAK case 1902: YY_RULE_SETUP #line 7936 "hla.flx" { _return mulpsTkn ; } YY_BREAK case 1903: YY_RULE_SETUP #line 7937 "hla.flx" { _return mulssTkn ; } YY_BREAK case 1904: YY_RULE_SETUP #line 7938 "hla.flx" { _return mulsdTkn ; } YY_BREAK case 1905: YY_RULE_SETUP #line 7939 "hla.flx" { _return mwaitTkn ; } YY_BREAK case 1906: YY_RULE_SETUP #line 7940 "hla.flx" { _return orpdTkn ; } YY_BREAK case 1907: YY_RULE_SETUP #line 7941 "hla.flx" { _return orpsTkn ; } YY_BREAK case 1908: YY_RULE_SETUP #line 7942 "hla.flx" { _return pauseTkn ; } YY_BREAK case 1909: YY_RULE_SETUP #line 7943 "hla.flx" { _return pmuludqTkn ; } YY_BREAK case 1910: YY_RULE_SETUP #line 7944 "hla.flx" { _return pshufdTkn ; } YY_BREAK case 1911: YY_RULE_SETUP #line 7945 "hla.flx" { _return pshufhwTkn ; } YY_BREAK case 1912: YY_RULE_SETUP #line 7946 "hla.flx" { _return pshuflwTkn ; } YY_BREAK case 1913: YY_RULE_SETUP #line 7947 "hla.flx" { _return prefetcht0Tkn ; } YY_BREAK case 1914: YY_RULE_SETUP #line 7948 "hla.flx" { _return prefetcht1Tkn ; } YY_BREAK case 1915: YY_RULE_SETUP #line 7949 "hla.flx" { _return prefetcht2Tkn ; } YY_BREAK case 1916: YY_RULE_SETUP #line 7950 "hla.flx" { _return prefetchntaTkn ; } YY_BREAK case 1917: YY_RULE_SETUP #line 7951 "hla.flx" { _return pslldqTkn ; } YY_BREAK case 1918: YY_RULE_SETUP #line 7952 "hla.flx" { _return psrldqTkn ; } YY_BREAK case 1919: YY_RULE_SETUP #line 7953 "hla.flx" { _return punpckhqdqTkn ; } YY_BREAK case 1920: YY_RULE_SETUP #line 7954 "hla.flx" { _return punpcklqdqTkn ; } YY_BREAK case 1921: YY_RULE_SETUP #line 7955 "hla.flx" { _return rcppsTkn ; } YY_BREAK case 1922: YY_RULE_SETUP #line 7956 "hla.flx" { _return rcpssTkn ; } YY_BREAK case 1923: YY_RULE_SETUP #line 7957 "hla.flx" { _return rsqrtpsTkn ; } YY_BREAK case 1924: YY_RULE_SETUP #line 7958 "hla.flx" { _return rsqrtssTkn ; } YY_BREAK case 1925: YY_RULE_SETUP #line 7959 "hla.flx" { _return sfenceTkn ; } YY_BREAK case 1926: YY_RULE_SETUP #line 7960 "hla.flx" { _return shufpdTkn ; } YY_BREAK case 1927: YY_RULE_SETUP #line 7961 "hla.flx" { _return shufpsTkn ; } YY_BREAK case 1928: YY_RULE_SETUP #line 7962 "hla.flx" { _return sqrtpdTkn ; } YY_BREAK case 1929: YY_RULE_SETUP #line 7963 "hla.flx" { _return sqrtpsTkn ; } YY_BREAK case 1930: YY_RULE_SETUP #line 7964 "hla.flx" { _return sqrtsdTkn ; } YY_BREAK case 1931: YY_RULE_SETUP #line 7965 "hla.flx" { _return sqrtssTkn ; } YY_BREAK case 1932: YY_RULE_SETUP #line 7966 "hla.flx" { _return stmxcsrTkn ; } YY_BREAK case 1933: YY_RULE_SETUP #line 7967 "hla.flx" { _return subpsTkn ; } YY_BREAK case 1934: YY_RULE_SETUP #line 7968 "hla.flx" { _return subpdTkn ; } YY_BREAK case 1935: YY_RULE_SETUP #line 7969 "hla.flx" { _return subsdTkn ; } YY_BREAK case 1936: YY_RULE_SETUP #line 7970 "hla.flx" { _return subssTkn ; } YY_BREAK case 1937: YY_RULE_SETUP #line 7971 "hla.flx" { _return sysenterTkn ; } YY_BREAK case 1938: YY_RULE_SETUP #line 7972 "hla.flx" { _return sysexitTkn ; } YY_BREAK case 1939: YY_RULE_SETUP #line 7973 "hla.flx" { _return ucomisdTkn ; } YY_BREAK case 1940: YY_RULE_SETUP #line 7974 "hla.flx" { _return ucomissTkn ; } YY_BREAK case 1941: YY_RULE_SETUP #line 7975 "hla.flx" { _return unpckhpdTkn ; } YY_BREAK case 1942: YY_RULE_SETUP #line 7976 "hla.flx" { _return unpckhpsTkn ; } YY_BREAK case 1943: YY_RULE_SETUP #line 7977 "hla.flx" { _return unpcklpdTkn ; } YY_BREAK case 1944: YY_RULE_SETUP #line 7978 "hla.flx" { _return unpcklpsTkn ; } YY_BREAK case 1945: YY_RULE_SETUP #line 7979 "hla.flx" { _return xorpdTkn ; } YY_BREAK case 1946: YY_RULE_SETUP #line 7980 "hla.flx" { _return xorpsTkn ; } YY_BREAK /* ** @debughla- ** This "reserved word" exists solely as an HLA ** debugging aid. It immediately stops the assembly ** with an assertion failure. */ case 1947: YY_RULE_SETUP #line 7991 "hla.flx" { // This assertion always fails: assert( ("debugHLA assertion", 0)); } YY_BREAK /* ** Assember function tokens */ case 1948: YY_RULE_SETUP #line 8001 "hla.flx" { _return absTkn; } YY_BREAK case 1949: YY_RULE_SETUP #line 8002 "hla.flx" { _return ceilTkn; } YY_BREAK case 1950: YY_RULE_SETUP #line 8003 "hla.flx" { _return cosTkn; } YY_BREAK case 1951: YY_RULE_SETUP #line 8004 "hla.flx" { _return dateTkn; } YY_BREAK case 1952: YY_RULE_SETUP #line 8005 "hla.flx" { _return envTkn; } YY_BREAK case 1953: YY_RULE_SETUP #line 8006 "hla.flx" { _return expTkn; } YY_BREAK case 1954: YY_RULE_SETUP #line 8007 "hla.flx" { _return extractTkn; } YY_BREAK case 1955: YY_RULE_SETUP #line 8008 "hla.flx" { _return floorTkn; } YY_BREAK case 1956: YY_RULE_SETUP #line 8009 "hla.flx" { _return isalphaTkn; } YY_BREAK case 1957: YY_RULE_SETUP #line 8010 "hla.flx" { _return isalphanumTkn; } YY_BREAK case 1958: YY_RULE_SETUP #line 8011 "hla.flx" { _return isdigitTkn; } YY_BREAK case 1959: YY_RULE_SETUP #line 8012 "hla.flx" { _return islowerTkn; } YY_BREAK case 1960: YY_RULE_SETUP #line 8013 "hla.flx" { _return isspaceTkn; } YY_BREAK case 1961: YY_RULE_SETUP #line 8014 "hla.flx" { _return isupperTkn; } YY_BREAK case 1962: YY_RULE_SETUP #line 8015 "hla.flx" { _return isxdigitTkn; } YY_BREAK case 1963: YY_RULE_SETUP #line 8016 "hla.flx" { _return logTkn; } YY_BREAK case 1964: YY_RULE_SETUP #line 8017 "hla.flx" { _return log10Tkn; } YY_BREAK case 1965: YY_RULE_SETUP #line 8018 "hla.flx" { _return maxTkn; } YY_BREAK case 1966: YY_RULE_SETUP #line 8019 "hla.flx" { _return minTkn; } YY_BREAK case 1967: YY_RULE_SETUP #line 8020 "hla.flx" { _return oddTkn; } YY_BREAK case 1968: YY_RULE_SETUP #line 8021 "hla.flx" { _return randomTkn; } YY_BREAK case 1969: YY_RULE_SETUP #line 8022 "hla.flx" { _return randomizeTkn; } YY_BREAK case 1970: YY_RULE_SETUP #line 8023 "hla.flx" { _return sinTkn; } YY_BREAK case 1971: YY_RULE_SETUP #line 8024 "hla.flx" { _return sortTkn; } YY_BREAK case 1972: YY_RULE_SETUP #line 8025 "hla.flx" { _return sqrtTkn; } YY_BREAK case 1973: YY_RULE_SETUP #line 8026 "hla.flx" { _return systemTkn; } YY_BREAK case 1974: YY_RULE_SETUP #line 8027 "hla.flx" { _return tanTkn; } YY_BREAK case 1975: YY_RULE_SETUP #line 8028 "hla.flx" { _return timeTkn; } YY_BREAK /* ** Assembler string functions. */ case 1976: YY_RULE_SETUP #line 8035 "hla.flx" { _return deleteTkn; } YY_BREAK case 1977: YY_RULE_SETUP #line 8036 "hla.flx" { _return indexTkn; } YY_BREAK case 1978: YY_RULE_SETUP #line 8037 "hla.flx" { _return insertTkn; } YY_BREAK case 1979: YY_RULE_SETUP #line 8038 "hla.flx" { _return lengthTkn; } YY_BREAK case 1980: YY_RULE_SETUP #line 8039 "hla.flx" { _return lowercaseTkn; } YY_BREAK case 1981: YY_RULE_SETUP #line 8040 "hla.flx" { _return rindexTkn; } YY_BREAK case 1982: YY_RULE_SETUP #line 8041 "hla.flx" { _return strbrkTkn; } YY_BREAK case 1983: YY_RULE_SETUP #line 8042 "hla.flx" { _return strsetTkn; } YY_BREAK case 1984: YY_RULE_SETUP #line 8043 "hla.flx" { _return strspanTkn; } YY_BREAK case 1985: YY_RULE_SETUP #line 8044 "hla.flx" { _return substrTkn; } YY_BREAK case 1986: YY_RULE_SETUP #line 8045 "hla.flx" { _return tokenizeTkn; } YY_BREAK case 1987: YY_RULE_SETUP #line 8046 "hla.flx" { _return trimTkn; } YY_BREAK case 1988: YY_RULE_SETUP #line 8047 "hla.flx" { _return uppercaseTkn; } YY_BREAK /* ** Pattern Matching Functions */ case 1989: YY_RULE_SETUP #line 8053 "hla.flx" { _return peekcsetTkn; } YY_BREAK case 1990: YY_RULE_SETUP #line 8054 "hla.flx" { _return onecsetTkn; } YY_BREAK case 1991: YY_RULE_SETUP #line 8055 "hla.flx" { _return onecsetTkn; } YY_BREAK case 1992: YY_RULE_SETUP #line 8056 "hla.flx" { _return uptocsetTkn; } YY_BREAK case 1993: YY_RULE_SETUP #line 8057 "hla.flx" { _return zerooronecsetTkn; } YY_BREAK case 1994: YY_RULE_SETUP #line 8058 "hla.flx" { _return zeroormorecsetTkn; } YY_BREAK case 1995: YY_RULE_SETUP #line 8059 "hla.flx" { _return oneormorecsetTkn; } YY_BREAK case 1996: YY_RULE_SETUP #line 8060 "hla.flx" { _return exactlyncsetTkn; } YY_BREAK case 1997: YY_RULE_SETUP #line 8061 "hla.flx" { _return firstncsetTkn; } YY_BREAK case 1998: YY_RULE_SETUP #line 8062 "hla.flx" { _return norlesscsetTkn; } YY_BREAK case 1999: YY_RULE_SETUP #line 8063 "hla.flx" { _return normorecsetTkn; } YY_BREAK case 2000: YY_RULE_SETUP #line 8064 "hla.flx" { _return ntomcsetTkn; } YY_BREAK case 2001: YY_RULE_SETUP #line 8065 "hla.flx" { _return exactlyntomcsetTkn; } YY_BREAK case 2002: YY_RULE_SETUP #line 8066 "hla.flx" { _return peekcharTkn; } YY_BREAK case 2003: YY_RULE_SETUP #line 8067 "hla.flx" { _return onecharTkn; } YY_BREAK case 2004: YY_RULE_SETUP #line 8068 "hla.flx" { _return onecharTkn; } YY_BREAK case 2005: YY_RULE_SETUP #line 8069 "hla.flx" { _return uptocharTkn; } YY_BREAK case 2006: YY_RULE_SETUP #line 8070 "hla.flx" { _return zerooronecharTkn; } YY_BREAK case 2007: YY_RULE_SETUP #line 8071 "hla.flx" { _return zeroormorecharTkn; } YY_BREAK case 2008: YY_RULE_SETUP #line 8072 "hla.flx" { _return oneormorecharTkn; } YY_BREAK case 2009: YY_RULE_SETUP #line 8073 "hla.flx" { _return exactlyncharTkn; } YY_BREAK case 2010: YY_RULE_SETUP #line 8074 "hla.flx" { _return firstncharTkn; } YY_BREAK case 2011: YY_RULE_SETUP #line 8075 "hla.flx" { _return norlesscharTkn; } YY_BREAK case 2012: YY_RULE_SETUP #line 8076 "hla.flx" { _return normorecharTkn; } YY_BREAK case 2013: YY_RULE_SETUP #line 8077 "hla.flx" { _return ntomcharTkn; } YY_BREAK case 2014: YY_RULE_SETUP #line 8078 "hla.flx" { _return exactlyntomcharTkn; } YY_BREAK case 2015: YY_RULE_SETUP #line 8079 "hla.flx" { _return peekicharTkn; } YY_BREAK case 2016: YY_RULE_SETUP #line 8080 "hla.flx" { _return oneicharTkn; } YY_BREAK case 2017: YY_RULE_SETUP #line 8081 "hla.flx" { _return oneicharTkn; } YY_BREAK case 2018: YY_RULE_SETUP #line 8082 "hla.flx" { _return uptoicharTkn; } YY_BREAK case 2019: YY_RULE_SETUP #line 8083 "hla.flx" { _return zerooroneicharTkn; } YY_BREAK case 2020: YY_RULE_SETUP #line 8084 "hla.flx" { _return zeroormoreicharTkn; } YY_BREAK case 2021: YY_RULE_SETUP #line 8085 "hla.flx" { _return oneormoreicharTkn; } YY_BREAK case 2022: YY_RULE_SETUP #line 8086 "hla.flx" { _return exactlynicharTkn; } YY_BREAK case 2023: YY_RULE_SETUP #line 8087 "hla.flx" { _return firstnicharTkn; } YY_BREAK case 2024: YY_RULE_SETUP #line 8088 "hla.flx" { _return norlessicharTkn; } YY_BREAK case 2025: YY_RULE_SETUP #line 8089 "hla.flx" { _return normoreicharTkn; } YY_BREAK case 2026: YY_RULE_SETUP #line 8090 "hla.flx" { _return ntomicharTkn; } YY_BREAK case 2027: YY_RULE_SETUP #line 8091 "hla.flx" { _return exactlyntomicharTkn; } YY_BREAK case 2028: YY_RULE_SETUP #line 8092 "hla.flx" { _return matchTkn; } YY_BREAK case 2029: YY_RULE_SETUP #line 8093 "hla.flx" { _return match2Tkn; } YY_BREAK case 2030: YY_RULE_SETUP #line 8094 "hla.flx" { _return matchstrTkn; } YY_BREAK case 2031: YY_RULE_SETUP #line 8095 "hla.flx" { _return matchistrTkn; } YY_BREAK case 2032: YY_RULE_SETUP #line 8096 "hla.flx" { _return uptostrTkn; } YY_BREAK case 2033: YY_RULE_SETUP #line 8097 "hla.flx" { _return uptoistrTkn; } YY_BREAK case 2034: YY_RULE_SETUP #line 8098 "hla.flx" { _return matchtostrTkn; } YY_BREAK case 2035: YY_RULE_SETUP #line 8099 "hla.flx" { _return matchtoistrTkn; } YY_BREAK case 2036: YY_RULE_SETUP #line 8100 "hla.flx" { _return zeroormorewsTkn; } YY_BREAK case 2037: YY_RULE_SETUP #line 8101 "hla.flx" { _return oneormorewsTkn; } YY_BREAK case 2038: YY_RULE_SETUP #line 8102 "hla.flx" { _return wsoreosTkn; } YY_BREAK case 2039: YY_RULE_SETUP #line 8103 "hla.flx" { _return wstheneosTkn; } YY_BREAK case 2040: YY_RULE_SETUP #line 8104 "hla.flx" { _return peekwsTkn; } YY_BREAK case 2041: YY_RULE_SETUP #line 8105 "hla.flx" { _return eosTkn; } YY_BREAK case 2042: YY_RULE_SETUP #line 8106 "hla.flx" { _return wsTkn; } YY_BREAK case 2043: YY_RULE_SETUP #line 8109 "hla.flx" { _return arbTkn; } YY_BREAK case 2044: YY_RULE_SETUP #line 8110 "hla.flx" { _return tabTkn; } YY_BREAK case 2045: YY_RULE_SETUP #line 8111 "hla.flx" { _return atTkn; } YY_BREAK case 2046: YY_RULE_SETUP #line 8112 "hla.flx" { _return posTkn; } YY_BREAK case 2047: YY_RULE_SETUP #line 8113 "hla.flx" { _return peekstrTkn; } YY_BREAK case 2048: YY_RULE_SETUP #line 8114 "hla.flx" { _return peekistrTkn; } YY_BREAK case 2049: YY_RULE_SETUP #line 8115 "hla.flx" { _return matchwordTkn; } YY_BREAK case 2050: YY_RULE_SETUP #line 8116 "hla.flx" { _return matchiwordTkn; } YY_BREAK case 2051: YY_RULE_SETUP #line 8117 "hla.flx" { _return matchidTkn; } YY_BREAK case 2052: YY_RULE_SETUP #line 8118 "hla.flx" { _return matchintconstTkn; } YY_BREAK case 2053: YY_RULE_SETUP #line 8119 "hla.flx" { _return matchrealconstTkn; } YY_BREAK case 2054: YY_RULE_SETUP #line 8120 "hla.flx" { _return matchnumericconstTkn; } YY_BREAK case 2055: YY_RULE_SETUP #line 8121 "hla.flx" { _return matchstrconstTkn; } YY_BREAK case 2056: YY_RULE_SETUP #line 8123 "hla.flx" { _return matchregTkn; } YY_BREAK case 2057: YY_RULE_SETUP #line 8124 "hla.flx" { _return matchreg8Tkn; } YY_BREAK case 2058: YY_RULE_SETUP #line 8125 "hla.flx" { _return matchreg16Tkn; } YY_BREAK case 2059: YY_RULE_SETUP #line 8126 "hla.flx" { _return matchreg32Tkn; } YY_BREAK case 2060: YY_RULE_SETUP #line 8127 "hla.flx" { _return matchfpuregTkn; } YY_BREAK case 2061: YY_RULE_SETUP #line 8128 "hla.flx" { _return matchmmxregTkn; } YY_BREAK case 2062: YY_RULE_SETUP #line 8129 "hla.flx" { _return matchxmmregTkn; } YY_BREAK /* ** Symbol table access functions. */ case 2063: YY_RULE_SETUP #line 8139 "hla.flx" { _return symNameTkn; } YY_BREAK case 2064: YY_RULE_SETUP #line 8140 "hla.flx" { _return symTypeTkn; } YY_BREAK case 2065: YY_RULE_SETUP #line 8141 "hla.flx" { _return symTypeNameTkn; } YY_BREAK case 2066: YY_RULE_SETUP #line 8142 "hla.flx" { _return sympTypeTkn; } YY_BREAK case 2067: YY_RULE_SETUP #line 8143 "hla.flx" { _return symBasepTypeTkn; } YY_BREAK case 2068: YY_RULE_SETUP #line 8144 "hla.flx" { _return symBaseTypeNameTkn; } YY_BREAK case 2069: YY_RULE_SETUP #line 8145 "hla.flx" { _return symClassTkn; } YY_BREAK case 2070: YY_RULE_SETUP #line 8146 "hla.flx" { _return symSizeTkn; } YY_BREAK case 2071: YY_RULE_SETUP #line 8147 "hla.flx" { _return symElementSizeTkn; } YY_BREAK case 2072: YY_RULE_SETUP #line 8148 "hla.flx" { _return symOffsetTkn; } YY_BREAK case 2073: YY_RULE_SETUP #line 8149 "hla.flx" { _return symLocalsymsTkn; } YY_BREAK case 2074: YY_RULE_SETUP #line 8150 "hla.flx" { _return symParmsTkn; } YY_BREAK case 2075: YY_RULE_SETUP #line 8151 "hla.flx" { _return symStaticNameTkn; } YY_BREAK case 2076: YY_RULE_SETUP #line 8152 "hla.flx" { _return symLexTkn; } YY_BREAK case 2077: YY_RULE_SETUP #line 8153 "hla.flx" { _return symIsExternalTkn; } YY_BREAK case 2078: YY_RULE_SETUP #line 8154 "hla.flx" { _return symArityTkn; } YY_BREAK case 2079: YY_RULE_SETUP #line 8155 "hla.flx" { _return symDimTkn; } YY_BREAK case 2080: YY_RULE_SETUP #line 8156 "hla.flx" { _return symNumelementsTkn; } YY_BREAK case 2081: YY_RULE_SETUP #line 8157 "hla.flx" { _return symDefinedTkn; } YY_BREAK case 2082: YY_RULE_SETUP #line 8158 "hla.flx" { _return sympClassTkn; } YY_BREAK case 2083: YY_RULE_SETUP #line 8159 "hla.flx" { _return symIsClassTkn; } YY_BREAK case 2084: YY_RULE_SETUP #line 8160 "hla.flx" { _return symIsMemTkn; } YY_BREAK case 2085: YY_RULE_SETUP #line 8161 "hla.flx" { _return symIsTypeTkn; } YY_BREAK case 2086: YY_RULE_SETUP #line 8162 "hla.flx" { _return symIsConstTkn; } YY_BREAK case 2087: YY_RULE_SETUP #line 8163 "hla.flx" { _return symIsRegTkn; } YY_BREAK case 2088: YY_RULE_SETUP #line 8164 "hla.flx" { _return symIsReg8Tkn; } YY_BREAK case 2089: YY_RULE_SETUP #line 8165 "hla.flx" { _return symIsReg16Tkn; } YY_BREAK case 2090: YY_RULE_SETUP #line 8166 "hla.flx" { _return symIsReg32Tkn; } YY_BREAK case 2091: YY_RULE_SETUP #line 8167 "hla.flx" { _return symIsfRegTkn; } YY_BREAK /* ** Special built-in constants. */ case 2092: YY_RULE_SETUP #line 8174 "hla.flx" { _return curLexTkn; } YY_BREAK case 2093: YY_RULE_SETUP #line 8175 "hla.flx" { _return curOffsetTkn; } YY_BREAK case 2094: YY_RULE_SETUP #line 8176 "hla.flx" { _return curDirTkn; } YY_BREAK case 2095: YY_RULE_SETUP #line 8177 "hla.flx" { _return lastMacroObjectTkn; } YY_BREAK case 2096: YY_RULE_SETUP #line 8178 "hla.flx" { _return curObjectNameTkn; } YY_BREAK case 2097: YY_RULE_SETUP #line 8179 "hla.flx" { _return lineNumberTkn; } YY_BREAK case 2098: YY_RULE_SETUP #line 8180 "hla.flx" { _return filenameTkn; } YY_BREAK case 2099: YY_RULE_SETUP #line 8181 "hla.flx" { _return sectionTkn; } YY_BREAK /* ** Special built-in variables (may appear on the ** left hand size of ":=" within a value section). */ case 2100: YY_RULE_SETUP #line 8188 "hla.flx" { _return startParmOfsTkn; } YY_BREAK case 2101: YY_RULE_SETUP #line 8189 "hla.flx" { _return startLclOfsTkn; } YY_BREAK case 2102: YY_RULE_SETUP #line 8190 "hla.flx" { _return enumSizeTkn; } YY_BREAK case 2103: YY_RULE_SETUP #line 8191 "hla.flx" { _return boundvarTkn; } YY_BREAK case 2104: YY_RULE_SETUP #line 8192 "hla.flx" { _return intovarTkn; } YY_BREAK case 2105: YY_RULE_SETUP #line 8193 "hla.flx" { _return traceTkn; } YY_BREAK case 2106: YY_RULE_SETUP #line 8194 "hla.flx" { _return exceptsTkn; } YY_BREAK case 2107: YY_RULE_SETUP #line 8195 "hla.flx" { _return optstringsTkn; } YY_BREAK case 2108: YY_RULE_SETUP #line 8196 "hla.flx" { _return baseregTkn; } YY_BREAK /* ** @text needs a little special handling. ** We have to make a recursive call to the parser ** to get the string that we are going to feed ** back through the lexer. We do this by pushing ** back a special character (\253) that will cause ** the parser to process the @text parameter list. */ case 2109: YY_RULE_SETUP #line 8207 "hla.flx" { _here; BEGIN 0; PushBackStr( "\xFD" ); yyparse(); BEGIN UnprocessedID; _here; } YY_BREAK case 2110: YY_RULE_SETUP #line 8216 "hla.flx" { _here; PushBackStr( "\xFD" ); yyparse(); _here; } YY_BREAK case 2111: YY_RULE_SETUP #line 8223 "hla.flx" { _here; _return TextParameters; } YY_BREAK /* ** UnprocessedID- ** ** This start state is activated by the parser when ** it wants IDs returned strictly as strings without ** further processing. These regular expressions ** override all the following ID-related REs. */ case 2112: YY_RULE_SETUP #line 8239 "hla.flx" { yylval->idStr = hlastrdup2( yytext + 8 ); _return UndefID; } YY_BREAK case 2113: YY_RULE_SETUP #line 8247 "hla.flx" { struct SymNode *s; s=ClassifyLookup( yytext, SymbolTable ); _if( s != NULL ) /* ** If this symbol is defined, see if it's a macro ** or a text object. We need to immediately expand ** those. */ _if( s->pType == tText ) PushBackStr( s->u.strval ); _elseif( s->pType == tMacro ) ProcessMacro( s ); _else /* ** Some other ID type, so return it. */ yylval->idStr = hlastrdup2( yytext ); _return UndefID; _endif _else /* ** It's an undefined identifier, so just return it. */ yylval->idStr = hlastrdup2( yytext ); _return UndefID; _endif } YY_BREAK /* ** @string:id is a special token that converts a text ID ** into a string constant. */ case 2114: YY_RULE_SETUP #line 8303 "hla.flx" { int LastWasGraph = 0; int CurIsGraph; char *s; char DestStr[ maxInputLineLen ]; char temp[ maxInputLineLen ]; struct SymNode *sym; _here; sym = lookup( yytext + 8, 1 ); _if( sym == NULL || sym->pType != tText ) ErrorNear ( "Expected TEXT constant identifier", yytext, __LINE__, __FILE__ ); s = " "; // Return one char to keep the parser happy. _else s = sym->u.strval; _endif DestStr[ 0 ] = '\0'; _while( *s != '\0' ) /* ** if the character is printable, go ahead and ** print it, if not, print it in hexadecimal ** notation. ** ** Note: this code prints the quotes as a hexadecimal value. */ CurIsGraph = ( isgraph( *s ) && *s != '"') || *s == ' '; _if( CurIsGraph && !LastWasGraph ) strcat( DestStr, " \"" ); _endif _if( CurIsGraph ) sprintf ( temp, "%c", *s ); strcat( DestStr, temp ); _else _if( LastWasGraph ) strcat( DestStr, "\" " ); _endif sprintf( temp, "#$%x", *s ); strcat( DestStr, temp ); _endif ++s; LastWasGraph = CurIsGraph; _endwhile _if( LastWasGraph ) strcat( DestStr, "\"" ); _endif PushBackStr( DestStr ); _here; } YY_BREAK /* ** @tostring:id is a special token that converts a TEXT ID to a string ID ** and then returns the ID. */ case 2115: YY_RULE_SETUP #line 8388 "hla.flx" { int CurIsGraph; char *s; char DestStr[ maxInputLineLen ]; char temp[ maxInputLineLen ]; struct SymNode *sym; _here; sym = lookup( yytext + 10, 1 ); _if( sym == NULL || sym->pType != tText ) ErrorNear ( "Expected TEXT constant identifier", yytext, __LINE__, __FILE__ ); _else sym->pType = tString; sym->Type = &string_ste; _endif PushBackStr( yytext + 10 ); _here; } YY_BREAK /* ** @global:identifier- tells lookup function to use ** NSGlobal as pointer to symbol table. */ case 2116: YY_RULE_SETUP #line 8423 "hla.flx" { /* ** Just ignore the @global: prefix if we're not in a namespace. */ _if( NSGlobal == NULL ) PushBackStr( yytext+8 ); _else // We're currently in a namespace. struct SymNode *symbol; int Token; int symLexLevel; int saveInNamespace = inNamespace; /* ** In the event we are processing a class ID, ** initialize the "ClassID" string to empty ** so we can capture the full "path" of the ** class identifier sequence (in case we have ** to push the name back onto the lexer ** input). */ _here; ClassID[0] = '\0'; /* ** Begin by assuming that this is *not* a ** class identifier. */ CurObject = NULL; /* ** Parser expects us to look up the symbol ** before returning the ID token. If we're ** currently in a namespace, search for the ** symbol outside that namespace. */ symbol = NULL; symLexLevel = 0; inNamespace = 0; symbol = lookupin( yytext+8, NSGlobal ); symLexLevel = NSGlobal->LexLevel; inNamespace = saveInNamespace; yylval->s = symbol; Token = ProcessID( yytext+8, symLexLevel, symbol, yylval ); /* ** Namespace, text, and macro symbols ** do not return control directly to the ** parser. ProcessID, above, returns -1/-2 ** for text/macro symbols, and -3 for namespace ** symbols. In the ** case of namespace and class symbols, ProcessID ** also sets the start condition to either ** allows the ** lexer to handle the rest of the identifier. ** For all other symbol types, the following ** statement returns control to the parser. */ _returnif( Token >= 0 ) Token; /* ** If this is a class object, CurObject ** needs to point at the leftmost name (the ** object name) in the "dot-path" (fully qualified) ** list of identifiers. Since this regular expression ** matches that leftmost identifier, save ** the address of this symbol before passing ** control to the regular ** expression. */ CurObject = symbol; _if( Token == -3 && symbol->SymClass != cNamespace ) LastRefdObject = symbol; _endif _endif _here; } YY_BREAK /* ** Here's a special token to trap any other identifiers ** that look like built-in functions. */ case 2117: YY_RULE_SETUP #line 8528 "hla.flx" { char msg[ 256 ]; sprintf ( msg, "Unknown HLA compiler ID (%s)", yytext ); yyerror( msg ); } YY_BREAK /* ** Here's a special token to trap any other identifiers ** that look like a reserved word. */ case 2118: YY_RULE_SETUP #line 8548 "hla.flx" { char msg[ 256 ]; sprintf ( msg, "Unknown HLA reserved word (%s)", yytext ); yyerror( msg ); } YY_BREAK /* ** This is a special symbol that will cause yyparse to ** process macro parameters on a recursive call to yyparse. */ case 2119: YY_RULE_SETUP #line 8569 "hla.flx" { _here; yylval->s = yySymbol; _return MacroID; } YY_BREAK /* ** This is a special symbol that will cause yyparse to process ** one VAL statement via a recursive call to yyparse. This ** handles the "?" operator. */ case 2120: YY_RULE_SETUP #line 8582 "hla.flx" { _here; PushBackStr( "\xFB" ); yyparse(); _here; } YY_BREAK case 2121: YY_RULE_SETUP #line 8589 "hla.flx" { _here; _return DoOneValStmt; } YY_BREAK /* ** This is a special symbol that will cause yyparse to process ** a constant expression enclosed within parentheses. ** This is used for conditional assembly and other places we need ** to process an expression inside the lexer. */ case 2122: YY_RULE_SETUP #line 8601 "hla.flx" { _here; _return DoOneConstExpr; } YY_BREAK /* ** If a 0xF5 byte comes along, we need to call the parse to ** process an HLA identifier (generally, a class/object reference). */ case 2123: YY_RULE_SETUP #line 8614 "hla.flx" { _here; yylval->s = CurObject; /* CurObject was set up by ProcessID */ _return parseHLAIDTkn; } YY_BREAK /* ** If a 0xF4 byte comes along, we need to call the parser to ** process an HLA identifier ( a class reference). */ case 2124: YY_RULE_SETUP #line 8627 "hla.flx" { _here; yylval->s = CurObject; /* CurObject was set up by ProcessID */ _return parseClassIDTkn; } YY_BREAK /* ** If a 0xF3 byte comes along, set the "InvisibleCode" string to NULL ** since we're done processing the _Initialize_ or _Finalize_ strings. */ case 2125: YY_RULE_SETUP #line 8638 "hla.flx" { InvisibleCode = NULL; } YY_BREAK /* ** If a 0xF2 byte comes along, we need to call the parser to ** process the #print parameter list. */ case 2126: YY_RULE_SETUP #line 8649 "hla.flx" { _here; _return parsePrintTkn; } YY_BREAK /* ** If a 0xF1 byte comes along, we need to call the parser to ** process the #text( ID ) .. #endtext block. */ case 2127: YY_RULE_SETUP #line 8660 "hla.flx" { _here; _return textblockTkn; } YY_BREAK /* ** If an 0xE0 byte comes along, we need to call the parser to ** process the #string( ID ) .. #endstring block. */ case 2128: YY_RULE_SETUP #line 8671 "hla.flx" { _here; _return stringblockTkn; } YY_BREAK /* ** If a 0xDF byte comes along, we need to call the parser to ** process the #match( ID ) .. #endmatch block. */ case 2129: YY_RULE_SETUP #line 8682 "hla.flx" { _here; _return matchblockTkn; } YY_BREAK /* ** If a 0xE2 byte comes along, we need to tell the ** parser to begin compiling a regular expression. */ case 2130: YY_RULE_SETUP #line 8693 "hla.flx" { _here; _return compileRegexTkn; } YY_BREAK /* ** E3 bytes mean that we've seen a #endregex, either at the ** end of a #regex definition (handled elsewhere) or while ** compiling a regex in memory (which is what this case handles). */ case 2131: YY_RULE_SETUP #line 8704 "hla.flx" { _here; _return endregexTkn; } YY_BREAK /* ** If an E1 byte comes along, then the lexer needs to grab everything up ** to the \xE3 byte and return all this as a string to the parser. ** This data is the #return expression for a regular expression. We need ** to have the lexer process everything in order to expand local regex ** symbols and parameters. */ case 2132: YY_RULE_SETUP #line 8717 "hla.flx" { int Token; int resultLen; char *resultStr; resultLen = 0; resultStr = hlastrdup( "" ); _do Token = yylex(yylval,yylloc ); _if( Token != endregexTkn ) resultStr = realloc( resultStr, resultLen+yyleng+2 ); resultStr[ resultLen ] = ' '; strncpy( resultStr+resultLen+1, yytext, yyleng ); resultLen += yyleng+1; resultStr[ resultLen ] = '\0'; _endif _until( Token == endregexTkn ); PushBackStr( "\xE3" ); // So the parser will see this, too. yylval->v.u.lwordval[0] = 0; yylval->v.u.lwordval[1] = 0; yylval->v.u.lwordval[2] = 0; yylval->v.u.lwordval[3] = 0; yylval->v.u.strval = resultStr; yylval->v.pType = tString; yylval->v.Type = &string_ste; yylval->v.SymClass = cConstant; ClrArray( yylval ); _return strconst; } YY_BREAK /* ** Identifiers */ /* ** Handle the "this" keyword here. "This" is valid only inside ** a method or class procedure. If we are inside such a program ** unit, then the "ThisPtr" variable will be non-null and will ** point at the class definition's symbol table entry. */ case 2133: YY_RULE_SETUP #line 8765 "hla.flx" { _here; _if( ThisPtr == NULL ) yyerror ( "Misuse of THIS reserved word outside class" ); _else CurSymTbl = ThisPtr; CurObject = ThisPtr; BEGIN ThisID; _endif _here; } YY_BREAK /* ** Handle fields of a class identifier down here. ** ** Hack: This code needs to expand TEXT and MACRO IDs ** directly but pass all other IDs to the parser for ** further processing. This code processes the field ** names down to the first field that is not a class type. ** If the specified object is a TEXT or MACRO object, then ** this code directly expands that object. If the first ** non-class field is a constant, then this code returns ** that constant (or value) object as though the lexer had ** only seen a single identifier (no fields). If we've got ** some sort of variable access, this code pushes the string ** it has scanned back onto the lexer input and leaves it ** up to the parser to extract each field from this string. ** This kludge is necessary in order to properly process ** text and macro objects. */ case 2134: YY_RULE_SETUP #line 8807 "hla.flx" { int Token; struct SymNode *SaveSym; struct SymNode *symbol; char msg[ 256 ]; /* ** Look up this field name in the local ** symbol table for the class. CurSymTbl ** points at the last fieldname we've processed. ** yytext (+1) is pointing at the current field name. */ _here; symbol = lookupin( yytext+1, CurSymTbl->Fields ); BEGIN 0; _if( symbol != NULL ) /* ** If this is a macro or text object, ** expand it here. If it is a constant, ** return a pointer to the constant's (or ** value's) symbol table entry. If it is ** not one of these classes, then reconstruct ** the id for reprocessing via the lexer. */ Token = ProcessID ( yytext+1, CurSymTbl->Fields->LexLevel, symbol, yylval ); _else Token = -1; // Arbitrary negative value to // signal an error. _endif _if( Token >= 0 ) /* ** If what we've got is a constant, ** value, procedure, iterator, or method object, ** just return that symbol. */ _if ( Token == LocalConstID || Token == NonLocalConstID ) yylval->s = symbol; _return Token; _elseif ( Token == LocalProcID || Token == ClassProcID || Token == ClassIterID || Token == LocalMethodID || Token == NonLocalProcID || Token == NonLocalMethodID ) /* ** If it's a procedure name ** following "this.", then ** emit "(type classname [esi])." ** in place of "this." */ sprintf ( msg, "(type %s [esi])%s", CurSymTbl->TrueName, yytext ); PushBackStr( msg ); _else /* ** Because this is a class object, the ** symbol is always non-local. Just check ** to see if it's a static, var, or other ** type object. */ yylval->s = symbol; _returnif ( symbol->SymClass == cVar || symbol->SymClass == cParm ) ClassVarID; _returnif( symbol->SymClass == cStatic ) ClassStaticID; _return NonLocalID; _endif _else /* ** We've got something unexpected if we ** get to this point. */ sprintf ( msg, "Unexpected symbol 'this.%s' at line %d in lexer", yytext+1, __LINE__, __FILE__ ); yyerror( msg ); _endif _here; } YY_BREAK /* ** If we get down here, something other than a fieldname followed ** the "this" keyword. */ case 2135: /* rule 2135 can match eol */ YY_RULE_SETUP #line 8946 "hla.flx" { ErrorNear ( "Illegal use of THIS keyword", yytext, __LINE__, __FILE__ ); PushBackStr( yytext ); BEGIN 0; } YY_BREAK /* ** Handle standard IDs here. */ case 2136: YY_RULE_SETUP #line 8968 "hla.flx" { int Token; Token = doID( yylval ); _returnif( Token >= 0 ) Token; } YY_BREAK case 2137: YY_RULE_SETUP #line 8976 "hla.flx" { int Token; Token = doID( yylval ); _returnif( Token >= 0 ) Token; } YY_BREAK case 2138: YY_RULE_SETUP #line 8983 "hla.flx" { int Token; Token = doID( yylval ); _returnif( Token >= 0 ) Token; } YY_BREAK /* ** Handle fields of a namespace identifier down here. */ case 2139: YY_RULE_SETUP #line 9000 "hla.flx" { int Token; int LexLevel; struct SymNode *symbol; struct SymNode *saveCurNS; struct SymNode *saveSymTbl; _here; saveCurNS = currentNS; currentNS = CurSymTbl; saveSymTbl = SymbolTable; SymbolTable = CurSymTbl->Fields; symbol = NSlookup( yytext + 1, 1, currentNS ); SymbolTable = saveSymTbl; currentNS = saveCurNS; LexLevel = CurSymTbl->Fields->LexLevel; /* ** If the symbol is not defined, see if we're constructing ** a namespace at this point. If we are, search in the ** global symbol table for this object. */ _if( symbol == NULL && NSGlobal != NULL ) symbol = lookupin( yytext+1, NSGlobal ); LexLevel = NSGlobal->LexLevel; _endif _if( symbol != NULL && symbol->pType == tNamespace ) CurSymTbl = symbol; _else BEGIN 0; Token = ProcessID ( yytext + 1, LexLevel, symbol, yylval ); _returnif( Token >= 0 ) Token; _endif _here; } YY_BREAK case 2140: /* rule 2140 can match eol */ YY_RULE_SETUP #line 9059 "hla.flx" { _here; PushBackStr( yytext ); BEGIN 0; _if( CurSymTbl->LexLevel == CurLexLevel ) yylval->s = CurSymTbl; _return LocalID; _else yylval->s = CurSymTbl; _return NonLocalID; _endif _here; } YY_BREAK /* ** Single digit integer constants (this definition is necessary in order ** to make it easy to differentiate floating point and integer literal ** constants). Note also the version that allows ".." afterwards. ** This is to differentiate the zero in "if( al in 0..10 ) then" from a ** floating point constant. */ case 2141: YY_RULE_SETUP #line 9091 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tUns8, &uns8_ste ); yylval->v.u.unsval = *yytext - '0'; yylval->v.ObjectSize = 1; yylval->v.MaxObjectSize = 1; _return intconst; } YY_BREAK case 2142: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 9105 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tUns8, &uns8_ste ); yylval->v.u.unsval = *yytext - '0'; yylval->v.ObjectSize = 1; yylval->v.MaxObjectSize = 1; _return intconst; } YY_BREAK /* ** Integer (unsigned) constants containing two or more digits. ** Interior characters may include underscores. See the note ** above about the version with "..". */ case 2143: YY_RULE_SETUP #line 9125 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tUns32, &uns32_ste ); strip_(); DecStrToInt ( numstr, yylval->v.u.lwordval, &yylval->v.Type, &yylval->v.pType ); yylval->v.ObjectSize = yylval->v.Type->ObjectSize; yylval->v.MaxObjectSize = yylval->v.Type->MaxObjectSize; _here; _return intconst; } YY_BREAK case 2144: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp -= 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 9147 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tUns8, &uns8_ste ); strip_(); DecStrToInt ( numstr, yylval->v.u.lwordval, &yylval->v.Type, &yylval->v.pType ); yylval->v.ObjectSize = yylval->v.Type->ObjectSize; yylval->v.MaxObjectSize = yylval->v.Type->MaxObjectSize; _here; _return intconst; } YY_BREAK /* ** Hexadecimal literal constants. ** Interior characters may include underscores. */ case 2145: YY_RULE_SETUP #line 9174 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tDWord, &dword_ste ); strip_(); HexStrToInt ( numstr, yylval->v.u.lwordval, &yylval->v.Type, &yylval->v.pType ); yylval->v.ObjectSize = yylval->v.Type->ObjectSize; yylval->v.MaxObjectSize = yylval->v.Type->MaxObjectSize; _here; _return hexconst; } YY_BREAK /* ** Binary literal constants. ** Interior characters may include underscores. */ case 2146: YY_RULE_SETUP #line 9202 "hla.flx" { ClrConst ( YYS &yylval->v, tDWord, &dword_ste ); strip_(); BinStrToInt ( numstr, yylval->v.u.lwordval, &yylval->v.Type, &yylval->v.pType ); yylval->v.ObjectSize = yylval->v.Type->ObjectSize; yylval->v.MaxObjectSize = yylval->v.Type->MaxObjectSize; _here; _return binconst; } YY_BREAK /* ** Floating point literal constants. ** Interior characters may include underscores. */ case 2147: YY_RULE_SETUP #line 9228 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tReal80, &real80_ste ); strip_(); atold( &yylval->v.u.fltval, numstr ); yylval->v.ObjectSize = 10; yylval->v.MaxObjectSize = 10; _here; _return fltconst; } YY_BREAK /* ** The apostrophe literal character constant (''''). */ case 2148: YY_RULE_SETUP #line 9249 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tChar, &char_ste ); yylval->v.u.charval = '\''; _return charconst; } YY_BREAK case 2149: YY_RULE_SETUP #line 9261 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tWChar, &wchar_ste ); yylval->v.u.charval = '\''; _return wcharconst; } YY_BREAK /* ** Single character literal constants. ** These come in two varieties: literal character constants surrounded by ** a pair of apostrophes and numeric character constants that consist of ** a "#" followed by a decimal, binary, or hexadecimal constant. ** Note that underscores are *not* allowed in the hex or decimal constants ** (because they are always three digits or less [ignoring leading zeros]) ** but they are allowed in binary constants. */ case 2150: YY_RULE_SETUP #line 9284 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tChar, &char_ste ); yylval->v.u.charval = yytext[1]; _return charconst; } YY_BREAK case 2151: YY_RULE_SETUP #line 9298 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tWChar, &wchar_ste ); yylval->v.u.charval = yytext[2]; _return wcharconst; } YY_BREAK /* ** Character literal constants that use binary numbers. */ case 2152: YY_RULE_SETUP #line 9316 "hla.flx" { unsigned long value = 0; char *s=yytext+2; _here; _while( *s != '\0' ) _if( *s != '_' ) value = ( value << 1 ) | ( *s & 1 ); _endif ++s; _endwhile _if( !IntRange( value, 0, 255 )) yyerror( "ASCII codes must be in the range 0..255" ); value &= 0xff; _endif ClrConst ( YYS &yylval->v, tChar, &char_ste ); yylval->v.u.charval = value; _here; _return charconst; } YY_BREAK case 2153: YY_RULE_SETUP #line 9351 "hla.flx" { unsigned long value = 0; char *s=yytext+3; _here; _while( *s != '\0' ) _if( *s != '_' ) value = ( value << 1 ) | ( *s & 1 ); _endif ++s; _endwhile _if( !IntRange( value, 0, 65535 )) yyerror( "Unicode must be in the range 0..65535" ); value &= 0xffff; _endif ClrConst ( YYS &yylval->v, tWChar, &wchar_ste ); yylval->v.u.unsval = value; _here; _return wcharconst; } YY_BREAK /* ** Handle character hexadecimal literal constants here. */ case 2154: YY_RULE_SETUP #line 9389 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tChar, &char_ste ); sscanf ( yytext+2, "%lx", &yylval->v.u.charval ); _if( !IntRange( yylval->v.u.charval, 0, 255 )) yyerror( "ASCII codes must be in the range 0..255" ); yylval->v.u.charval &= 0xff; _endif _here; _return charconst; } YY_BREAK case 2155: YY_RULE_SETUP #line 9415 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tWChar, &wchar_ste ); sscanf ( yytext+3, "%lx", &yylval->v.u.unsval ); _if( !IntRange( yylval->v.u.unsval, 0, 65535 )) yyerror( "Unicode values must be in the range 0..65535" ); yylval->v.u.unsval &= 0xffff; _endif _here; _return wcharconst; } YY_BREAK /* ** Handle character decimal literal constants here. Since only ** three digits are necessary to specify an eight-bit ASCII code, don't ** bother dealing with underscores. */ case 2156: YY_RULE_SETUP #line 9447 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tChar, &char_ste ); yylval->v.u.charval = atol( yytext+1 ); _if( !IntRange( yylval->v.u.charval, 0, 255 )) yyerror( "ASCII codes must be in the range 0..255" ); yylval->v.u.charval &= 0xff; _endif _here; _return charconst; } YY_BREAK case 2157: YY_RULE_SETUP #line 9468 "hla.flx" { _here; ClrConst ( YYS &yylval->v, tWChar, &wchar_ste ); yylval->v.u.unsval = atol( yytext+2 ); _if( !IntRange( yylval->v.u.unsval, 0, 65535 )) yyerror( "Unicode must be in the range 0..65535" ); yylval->v.u.unsval &= 0xffff; _endif _here; _return wcharconst; } YY_BREAK /* ** #{identifier} ** ** Handle illegal compiler directives here. */ case 2158: YY_RULE_SETUP #line 9495 "hla.flx" { ErrorNear ( "Illegal compiler directive", yytext , __LINE__, __FILE__ ); } YY_BREAK /* ** Literal string constants. */ case 2159: YY_RULE_SETUP #line 9511 "hla.flx" { _here; yylval->v.u.lwordval[0] = 0; yylval->v.u.lwordval[1] = 0; yylval->v.u.lwordval[2] = 0; yylval->v.u.lwordval[3] = 0; yylval->v.u.strval = MakeStr(); yylval->v.pType = tString; yylval->v.Type = &string_ste; yylval->v.SymClass = cConstant; ClrArray( yylval ); _return strconst; } YY_BREAK case 2160: YY_RULE_SETUP #line 9525 "hla.flx" { _here; yylval->v.u.lwordval[0] = 0; yylval->v.u.lwordval[1] = 0; yylval->v.u.lwordval[2] = 0; yylval->v.u.lwordval[3] = 0; yylval->v.u.strval = MakeUStr(); yylval->v.pType = tWString; yylval->v.Type = &wstring_ste; yylval->v.SymClass = cConstant; ClrArray( yylval ); _return wstrconst; } YY_BREAK /* ** Whitespace */ case 2161: YY_RULE_SETUP #line 9543 "hla.flx" {} YY_BREAK case 2162: /* rule 2162 can match eol */ YY_RULE_SETUP #line 9544 "hla.flx" { _here; ++LineCnt; ++TotalLines; } YY_BREAK case 2163: /* rule 2163 can match eol */ YY_RULE_SETUP #line 9551 "hla.flx" { _here; ++LineCnt; ++TotalLines; } YY_BREAK case 2164: YY_RULE_SETUP #line 9557 "hla.flx" { _here; ++LineCnt; ++TotalLines; } YY_BREAK /* ** End of file */ case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(comment): case YY_STATE_EOF(RMcomment): case YY_STATE_EOF(RRcomment): case YY_STATE_EOF(MPcomment): case YY_STATE_EOF(GetAllOfParm): case YY_STATE_EOF(GetAllOfParm2): case YY_STATE_EOF(EndMacroParm): case YY_STATE_EOF(GAoPcomment): case YY_STATE_EOF(SkippingELSEIFs): case YY_STATE_EOF(SIcomment): case YY_STATE_EOF(SEcomment): case YY_STATE_EOF(RWcomment): case YY_STATE_EOF(RWcmnt0): case YY_STATE_EOF(RWcmnt1): case YY_STATE_EOF(RWcmnt2): case YY_STATE_EOF(RWcmnt3): case YY_STATE_EOF(RWcmnt4): case YY_STATE_EOF(RWcmnt5): case YY_STATE_EOF(RWcmnt6): case YY_STATE_EOF(RWcmnt7): case YY_STATE_EOF(RWcmnt8): case YY_STATE_EOF(RWcmnt9): case YY_STATE_EOF(recASM): case YY_STATE_EOF(NameSpace): case YY_STATE_EOF(ThisID): case YY_STATE_EOF(InText): case YY_STATE_EOF(InString): case YY_STATE_EOF(InMatch): case YY_STATE_EOF(RecordWhileExpr): case YY_STATE_EOF(RecordWhileExpr2): case YY_STATE_EOF(RFcomment): case YY_STATE_EOF(poundID): case YY_STATE_EOF(poundRW): case YY_STATE_EOF(endIDRW): case YY_STATE_EOF(UnprocessedID): #line 9569 "hla.flx" { _returnif( BufSP < 0 ) -1; deleteSourceBuf(); } YY_BREAK /* ** End of macro expansion */ case 2165: YY_RULE_SETUP #line 9578 "hla.flx" { EndMacroExpansion(); } YY_BREAK /* ** Leftover characters not handled by the above regular expressions. */ case 2166: YY_RULE_SETUP #line 9591 "hla.flx" { sprintf ( numstr, "Illegal character in file: <%c>(%d/$%x)", *yytext, *yytext, *yytext ); yyerror( numstr ); } YY_BREAK case 2167: YY_RULE_SETUP #line 9603 "hla.flx" ECHO; YY_BREAK #line 23317 "lex.yy.c" case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart(yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { register yy_state_type yy_current_state; register char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 7228 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { register int yy_is_jam; register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 7228 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 7227); return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp ) { register char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up yytext */ *yy_cp = (yy_hold_char); if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register int number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart(yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_init_buffer(YY_CURRENT_BUFFER,input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree((void *) b->yy_ch_buf ); yyfree((void *) b ); } #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { int num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { return yy_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param line_number * */ void yyset_lineno (int line_number ) { yylineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * in_str ) { yyin = in_str ; } void yyset_out (FILE * out_str ) { yyout = out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int bdebug ) { yy_flex_debug = bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 9603 "hla.flx" int yywrap(void ) _begin( yywrap ) _return 1; _end( yywrap ) // prefixName - Returns a string containing the prefix // of a filename static void prefixName( char *filename, char *result ) _begin( prefixName ) char *root; int len; root = strrchr( filename, '\\' ); _if( root == NULL ) strcpy( result, "" ); _else len = root - filename + 1; strncpy( result, filename, len ); result[ len ] = '\0'; _endif _end( prefixName ) /* ** Add an include file to the IncFilesList array. ** Return false if the file was already in the list. ** Return true if we added the file to the list (because it wasn't ** already there). Raise an exception if we exceed 'maxNestedMacros' include ** files. */ int AddIncFilesList( char *filename ) _begin( AddIncFilesList ) int i; int Result = 0; assert( filename != NULL ); i = 0; _while ( ( i < IncFilesCnt ) && ( stricmp( filename, IncFilesList[ i ] ) != 0 ) ) ++i; _endwhile _if( i == IncFilesCnt ) IncFilesList[ i ] = hlastrdup2( filename ); Result = 1; ++IncFilesCnt; assert( IncFilesCnt < maxIncStack ); _endif _return( Result ); _end( AddIncFileList ) int lexInput( void ) _begin( lexInput ) _return input(); _end( lexInput ) /***********************************************/ /* */ /* startUnprocessedID- */ /* */ /* This function switches on the UnprocessedID */ /* state so that the lexer doesn't process IDs */ /* (by calling ProcessID) it encounters during */ /* scanning. */ /* */ /***********************************************/ void startUnprocessedID( void ) _begin( startUnprocessedID ) BEGIN UnprocessedID; _end( startUnprocessedID ) void Begin0( void ) _begin( Begin0 ) BEGIN 0; _end( Begin0 ) /*********************************************************/ /* */ /* startGetTextBlock- */ /* */ /* This function is used by the #text..#endtext sequence */ /* to enable capturing the text between the #text and */ /* the #endtext clauses. */ /* */ /*********************************************************/ void startGetTextBlock( void ) _begin( startGetTextBlock ) BEGIN InText; _end( startGetTextBlock ) /*************************************************************/ /* */ /* startGetStringBlock- */ /* */ /* This function is used by the #string..#endstring sequence */ /* to enable capturing the text between the #string and */ /* the #endstring clauses. */ /* */ /*************************************************************/ void startGetStringBlock( void ) _begin( startGetStringBlock ) BEGIN InString; _end( startGetStringBlock ) /*************************************************************/ /* */ /* startGetMatchBlock- */ /* */ /* This function is used by the #match..#endmatch sequence */ /* to enable capturing the text between the #match and */ /* the #endmatch clauses. */ /* */ /*************************************************************/ void startGetMatchBlock( void ) _begin( startGetMatchBlock ) BEGIN InMatch; _end( startGetMatchBlock ) /////////////////////////////////////////////////////////////////////////////// // // Regular Expression recording support: void doRecRegex( void ) _begin( doRecRegex ) _here; regexHead = NULL; // Shove 0xE2 at the beginning of the // regular expression text so that the // parser will know to compile the // regular expression. CurLine[ 0 ] = '\xE2'; RegexIndex = 1; BEGIN RecordRegex; _here; _end( doRecRegex ) static void AppendRegexLine( void ) _begin( AppendRegexLine ) struct MacroListType *NewLine; _here; _if( regexHead == NULL ) regexHead = malloc2( sizeof( MacroHead_t )); regexHead->text = malloc2( RegexIndex + 2 ); memcpy( regexHead->text, CurLine, RegexIndex ); regexHead->len = RegexIndex; regexHead->text[ RegexIndex ] = '\0'; regexHead->text[ RegexIndex + 1 ] = '\0'; RegexIndex = 0; _else regexHead->text = realloc2( regexHead->text, RegexIndex+regexHead->len + 2 ); memcpy( ®exHead->text[regexHead->len], CurLine, RegexIndex ); regexHead->len += RegexIndex; regexHead->text[ regexHead->len ] = '\0'; regexHead->text[ regexHead->len + 1 ] = '\0'; RegexIndex = 0; _endif _here; _end( AppendRegexLine ) /***********************************************/ /* */ /* doRecMac- */ /* */ /* This function enables recording of a macro. */ /* */ /***********************************************/ void doRecMac( void ) _begin( doRecMac ) _here; macroHead = NULL; MacroIndex = 0; BEGIN RecordMacro; NestedMacroCnt = 1; _here; _end( doRecMac ) static void AppendMacroLine( void ) _begin( AppendMacroLine ) struct MacroListType *NewLine; _here; _if( macroHead == NULL ) macroHead = malloc2( sizeof( MacroHead_t )); macroHead->text = malloc2( MacroIndex + 2 ); memcpy( macroHead->text, CurLine, MacroIndex ); macroHead->len = MacroIndex; macroHead->text[ MacroIndex ] = '\0'; macroHead->text[ MacroIndex + 1 ] = '\0'; MacroIndex = 0; _else macroHead->text = realloc2( macroHead->text, MacroIndex+macroHead->len + 2 ); memcpy( ¯oHead->text[macroHead->len], CurLine, MacroIndex ); macroHead->len += MacroIndex; macroHead->text[ macroHead->len ] = '\0'; macroHead->text[ macroHead->len + 1 ] = '\0'; MacroIndex = 0; _endif _here; _end( AppendMacroLine ) void doMacParm( void ) _begin( doMacParm ) ParmLine_t *prev; _here; prev = ParmLine; ParmLine = malloc2( sizeof( ParmLine_t )); BEGIN MacroParm; ParmLine->prev = prev; ParmLine->Line = NULL; ParmLine->LineSize = 0; ParmLine->Index = 0; ParmLine->ParenCnt = 0; ParmLine->BraceCnt = 0; ParmLine->BracketCnt = 0; _here; _end( doMacParm ) /* ** RmvActiveMacro- ** ** A macro has just terminated. This routine cleans up all the ** dynamically allocated storage associated with that macro. ** This, effectively, undoes the mess created by the ID regular ** expression when it encounters a macro symbol. ** ** mac2rmv- Symbol to remove from the active list. ** ** FreeMem- Controls whether we free the memory associated with ** this macro and whether we attempt to remove it from ** the active list. ** ** 0- Just remove from the active list, do not free memory. ** 1- Free memory and remove from the active list. ** 2- Just free the memory (already removed from list). */ void RmvActiveMacro( struct SymNode *mac2rmv ) _begin( RmvActiveMacro ) struct SymNode *LclSym; struct SymNode *tmp; struct SymNode **AList; assert( ActiveMacros != NULL ); assert( mac2rmv != NULL ); /* ** If this is a terminator, remove the parent macro as well. */ _here; _if( mac2rmv->SymClass == cTerminator ) assert( mac2rmv->u.MacroData.Parent != NULL ); RmvActiveMacro( mac2rmv->u.MacroData.Parent ); FileName = mac2rmv->u.MacroData.Parent->u.MacroData.Filename; LineCnt = mac2rmv->u.MacroData.Parent->u.MacroData.LineCnt; _endif /* ** Next, delete this entry from the ActiveMacros list, if this ** is not a recursive call to clean up the storage. */ AList = &ActiveMacros; LclSym = ActiveMacros; _while( LclSym != mac2rmv ) assert( LclSym != NULL ); AList = &LclSym->Next; LclSym = LclSym->Next; _endwhile *AList = LclSym->Next; /* ** Now, free up the storage associated with this symbol. */ LclSym = _ifx ( mac2rmv->u.MacroData.Terminator != NULL, mac2rmv->u.MacroData.Terminator, _ifx ( mac2rmv->u.MacroData.Locals != NULL, mac2rmv->u.MacroData.Locals, mac2rmv->u.MacroData.Parameters ) ); _while( LclSym != NULL ) tmp = LclSym; LclSym = LclSym->Next; _if( tmp->pType != tMacro ) FreeValue( YYS tmp ); _endif free2( vss tmp ); _endwhile free2( vss mac2rmv ); _here; _end( RmvActiveMacro ) /* ** pushBufStack - pushes an item onto the SourceBuffer stack. */ void pushBufStack( char *filename, int linecnt, FILE *theFile, char IncOrStr ) _begin( pushBufStack ) _here; ++BufSP; _if( BufSP < maxBuffers ) BufferStack[ BufSP ].LineCnt = linecnt; BufferStack[ BufSP ].PreviousBuffer = YY_CURRENT_BUFFER; BufferStack[ BufSP ].IncFile = theFile; BufferStack[ BufSP ].FileName = filename; BufferStack[ BufSP ].IncludeOrString = IncOrStr; _else yyerror( "HLA text buffer redirection stack overflow" ); exit( 1 ); _endif _here; _end( pushBufStack ) /* ** deleteSourceBuf - pops an input buffer from the input ** buffer stack. */ void deleteSourceBuf( void ) _begin( deleteSourceBuf ) assert( BufSP >= 0 ); yy_delete_buffer(YY_CURRENT_BUFFER ); yy_switch_to_buffer(BufferStack[ BufSP ].PreviousBuffer ); _if( BufferStack[ BufSP ].IncludeOrString ) fclose( BufferStack[ BufSP ].IncFile ); _endif LineCnt = BufferStack[ BufSP ].LineCnt; FileName = BufferStack[ BufSP ].FileName; --BufSP; _end( deleteSourceBuf ) /* ** EndMacroExpansion */ void EndMacroExpansion( void ) _begin( EndMacroExpansion ) _here; assert( MacroSP >= 0 ); _if( MacroStack[ MacroSP ].Macro->SymClass == cTerminator ) char msg[ 256 ]; struct SymNode *s; _if( W4TermSP < 0 ) /* ** This error should never happen (since terminators ** should be on the Wait4Term stack if they are in scope), ** but just in case... */ sprintf ( msg, "Unexpected terminator (%s)", MacroStack[ MacroSP ].Macro->u.MacroData.Terminator-> TrueName ); yyerror( msg ); RmvActiveMacro( MacroStack[ MacroSP ].Macro ); _elseif ( _strne ( MacroStack[ MacroSP ].Macro->TrueName, Wait4Term[ W4TermSP ]->TrueName ) ) sprintf ( msg, "Unexpected terminator \"%s\", was expecting \"%s\"", MacroStack[ MacroSP ].Macro->TrueName, Wait4Term[ W4TermSP ]->TrueName ); yyerror( msg ); --W4TermSP; RmvActiveMacro( MacroStack[ MacroSP ].Macro ); _else /* ** We've got a terminator that has just finished. ** Let's look up it's parent in the ActiveMacros ** list and change the parent field of any keywords ** (that could still be executing) to NULL so they ** cannot refer to free'd memory (since the RmvActiveMacro ** call below will free up memory associated with the ** parent). ** ** Admittedly, this is very ugly. Here's how it works: ** ** 1. The top of the MacroStack points at the terminator ** that we are shutting down. The ActiveMacros list ** also points at this terminator (actually, the top ** of the MacroStack and ActiveMacros point at the ** same malloc'd object). ** ** 2. The macro that requires this terminator has ** *probably* terminated already, but there is ** no guarantee that this has happened (the user ** could have invoked the terminator inside the ** macro, though this is unlikely). If the parent ** macro has not yet terminated, then we cannot ** free the storage associated with the parent macro. ** ** 3. It is possible that a keyword for this terminator's ** parent is still active (i.e., the keyword invoked ** the terminator), if this is the case then we must ** clear the keyword's Parent field since we are about ** to free the storage associated with the parent. ** ** 4. We begin by locating the parent of the current ** terminator macro and search through it's local ** symbols list for any keyword entries. The code ** sets the "Parent" field of any such keyword ** entries to NULL, effectively cutting off access ** to the parent's local symbols. */ struct SymNode *parent; struct SymNode *pLocals; struct SymNode *AMList; parent = MacroStack[ MacroSP ].Macro->u.MacroData.Parent; pLocals = parent->u.MacroData.Terminator->Next; _while ( pLocals != NULL && pLocals != parent->u.MacroData.Locals ) /* ** pLocals points at the first keyword entry for ** the parent macro (if such an item exists). ** The following loop compares each keyword associated ** with this parent against all the active macros. ** It bails if it discovers that the parent is still ** active (case [2] above or a recursive invocation) ** or if it encounters the current keyword. If it ** does encounter the keyword, it sets the Parent ** field to NULL. */ AMList = ActiveMacros; _forever _breakif( AMList == NULL ); _breakif ( _streq( AMList->TrueName, parent->TrueName ) ); _if( _streq( AMList->TrueName, pLocals->TrueName) ) AMList->u.MacroData.Parent = NULL; break; _endif AMList = AMList->Next; _endfor pLocals=pLocals->Next; _endwhile /* ** Okay, we just finished execution of a terminator ** that we were expecting. Pop the Wait4Term stack ** and remove the terminator from the active macro list. */ RmvActiveMacro( MacroStack[ MacroSP ].Macro ); --W4TermSP; _endif _elseif( MacroStack[ MacroSP ].Macro->u.MacroData.Terminator == NULL ) /* ** If this macro does not have a terminator ** associated with it, remove it from the ** active macro list and free its memory. ** */ RmvActiveMacro( MacroStack[ MacroSP ].Macro ); _else /* ** If this macro has a terminator, we'll leave it around ** in memory and make it the responsibility of the terminator ** to remove it later on. */ struct SymNode *CurMac; CurMac = ActiveMacros; _while( CurMac != NULL && CurMac != MacroStack[ MacroSP ].Macro ) CurMac = CurMac->Next; _endwhile _if( CurMac != NULL ) CurMac->u.MacroData.Text = NULL; _endif _endif /* ** Since we just concluded playing back this macro/keyword/terminator, ** pop the macro stack. */ --MacroSP; _here; _end( EndMacroExpansion ) /*******************************/ /* */ /* While loop support routines */ /* */ /*******************************/ static void AppendWhileLine( void ) _begin( AppendWhileLine ) _here; _if( WhileHead == NULL ) WhileHead = malloc2( WhileIndex + 3 ); // Sneak a 0xFA character into the first position to force // Bison to evaluate an expression: WhileHead[0] = '\xFA'; memcpy( WhileHead+1, CurLine, WhileIndex ); WhileLen = WhileIndex + 1; WhileHead[ WhileLen ] = '\0'; WhileHead[ WhileLen + 1 ] = '\0'; WhileIndex = 0; _else WhileHead = realloc2( WhileHead, WhileIndex + WhileLen + 2 ); memcpy( WhileHead+WhileLen, CurLine, WhileIndex ); WhileLen += WhileIndex; WhileHead[ WhileLen ] = '\0'; WhileHead[ WhileLen + 1 ] = '\0'; WhileIndex = 0; _endif _here; _end( AppendWhileLine ) static void CleanUpWhile( void ) _begin( CleanUpWhile ) _here; _if( WhileSP >= 0 ) deleteSourceBuf(); free2( vss WhileStack[ WhileSP ].line ); --WhileSP; _endif _here; _end( CleanUpWhile ) /*******************************/ /* */ /* For loop support routines */ /* */ /*******************************/ static void AppendForLine( void ) _begin( AppendForLine ) _here; _if( ForHead == NULL ) ForHead = malloc2( ForIndex + 2 ); // Sneak a 0xFA character into the first position to force // Bison to evaluate an expression: memcpy( ForHead, CurLine, ForIndex ); ForLen = ForIndex; ForHead[ ForLen ] = '\0'; ForHead[ ForLen + 1 ] = '\0'; ForIndex = 0; _else ForHead = realloc2( ForHead, ForIndex + ForLen + 2 ); memcpy( ForHead+ForLen, CurLine, ForIndex ); ForLen += ForIndex; ForHead[ ForLen ] = '\0'; ForHead[ ForLen + 1 ] = '\0'; ForIndex = 0; _endif _here; _end( AppendForLine ) static void CleanUpFor( void ) _begin( CleanUpFor ) _here; _if( ForSP >= 0 ) deleteSourceBuf(); // Probably should free inVal here, could be a memory leak. ForStack[ ForSP ].loopControlVar->pType = tBoolean; ForStack[ ForSP ].loopControlVar->Type = &boolean_ste; free2( vss ForStack[ ForSP ].line ); --ForSP; _endif _here; _end( CleanUpFor ) /**********************************************************************************/ /* */ /* strip_ */ /* */ /* This function removes any underscore characters appearing in the middle of */ /* a numeric constant (integer, hexadecimal, or float). HLA allows you to insert */ /* these characters in place of commas. Atoi, etc., however, do not allow */ /* embedded underscores; so this function removes them from the yytext string */ /* so we can use the string to number conversion functions. */ /* */ /* To avoid flex character backup programs, this function copies the converted */ /* string constant to the "numstr" global character array. */ /* */ /**********************************************************************************/ void strip_( void ) _begin( strip_ ) char *src, *dest; _here; src = yytext; dest = numstr; _while( *src != '\0' ) /* ** If not an underscore character, copy the source character from ** yytext to numstr. */ _if( *src != '_' ) *dest = *src; ++dest; _endif ++src; _endwhile *dest = '\0'; _here; _end( strip_ ) /*********************************************************************************/ /* */ /* MakeStr- */ /* */ /* This function converts the string matched by the Flex regular expression into */ /* a string suitable for use by HLA. Primarily, this consists of converting any */ /* internal "" pairs into a single quotation symbol. */ /* */ /*********************************************************************************/ char* MakeStr( void ) _begin( MakeStr ) char *src; char *dest; char *result; int len; int i; _here; len = strlen( yytext ); result = dest = src = malloc2( len + 1 ); memcpy( src, yytext + 1, len ); len = len - 2; i = 0; _while( iv.NumElements = src->NumElements; dest->v.Arity = src -> Arity; dest->v.Dimensions = src->Dimensions; dest->v.u.ArrayOfValues = src->u.ArrayOfValues; _here; _end( SetArray ) /*****************************************************************/ /* */ /* trim- */ /* */ /* Eliminates spaces at the beginning and end of the specified */ /* string and returns a pointer to a copy of the trimmed string. */ /* */ /*****************************************************************/ static char* trim( char *str, int LastPosn ) _begin( trim ) int fromBack = LastPosn; char *s; _here; _if( fromBack > 0 ) _while( fromBack > 0 && str[ fromBack ] <= ' ' ) --fromBack; _endwhile str[ fromBack + 1 ] = '\0'; _endif _while( *str != '\0' && *str <= ' ' ) ++str; _endwhile _here; s = hlastrdup2( str ); _return s; _end( trim ) /*****************************************************************/ /* */ /* RsvdWordErr - Misuse of MASM reserved word or special symbol. */ /* */ /*****************************************************************/ static void RsvdWordErr( char *RW ) _begin( RsvdWordErr ) char msg[256]; sprintf( msg, "'%s' is a special symbol that cannot be used", RW ); yyerror( msg ); _end( RsvdWordErr ) /*************************************************************/ /* */ /* processMacroID- */ /* */ /* Given a macro or regular expression symbol, the following */ /* function process an actual parameter list for that macro */ /* invocation. The resultant strings are returned in */ /* symbol->u.MacroData.Parameters (a linear list of SymNodes */ /* containing the text values). */ /* */ /*************************************************************/ void processMacroID( struct SymNode *symbol ) _begin( processMacroID ) yySymbol = symbol; PushBackStr( "\xFC" ); yyparse(); _end( processMacroID ) /**************************************************************/ /* */ /* ProcessMacro- */ /* */ /* Called by ProcessID whenever it encounters a macro symbol. */ /* The purpose of this procedure is to parse any necessary */ /* macro parameters and begin the expansion of the specified */ /* macro. */ /* */ /**************************************************************/ static int ProcessMacro( struct SymNode *symbol ) _begin( ProcessMacro ) /* ** Macros are like text objects. ** Expand their text in-line and then ** return to the lexer to process this ** newly expanded text. */ int CurMacCntr; int LocalVarMacParms; char ThisLbl[256]; struct SymNode *LocalIDs; struct SymNode v; struct SymNode *MacroListItem; struct SymNode *LclSym; struct SymNode *NewSym; struct SymNode *LastSym; struct SymNode *AMList; /* ** Save the global object VarMacParms ** in case there is a recursive macro ** invocation inside a parameter list. */ _here; LocalVarMacParms = VarMacParms; /* ** Create a deep copy of the current symbol ** so we can make assignments to the local ** values and the parameters. This prevents ** a recursive macro invocation from wiping ** out the local and parameter values of the ** calling macro. */ MacroListItem = malloc2( sizeofSymNode ); memcpy( MacroListItem, symbol, sizeofSymNode ); MacroListItem->u.MacroData.Terminator = NULL; MacroListItem->u.MacroData.Locals = NULL; MacroListItem->u.MacroData.Parameters = NULL; MacroListItem->u.MacroData.Filename = FileName; MacroListItem->u.MacroData.LineCnt = LineCnt; LclSym = _ifx ( symbol->u.MacroData.Terminator != NULL, symbol->u.MacroData.Terminator, _ifx ( symbol->u.MacroData.Locals != NULL, symbol->u.MacroData.Locals, symbol->u.MacroData.Parameters ) ); NewSym = NULL; _while( LclSym != NULL ) /* ** Allocate storage for a new symbol node ** and append the node to the end of the ** list we are creating (if the list already ** exists, that is). */ _if( NewSym != NULL ) NewSym->Next = malloc2( sizeofSymNode ); memcpy ( NewSym->Next, LclSym, sizeofSymNode ); NewSym = NewSym->Next; _else NewSym = malloc2( sizeofSymNode ); memcpy ( NewSym, LclSym, sizeofSymNode ); _endif /* ** If we've just hit the terminator symbol, ** the first Local symbol, or the first ** parameter, then set up the appropriate ** pointer in the Macro symbol we've just ** created. */ _if( LclSym == symbol->u.MacroData.Terminator ) MacroListItem->u.MacroData.Terminator = NewSym; _elseif ( LclSym == symbol->u.MacroData.Locals ) MacroListItem->u.MacroData.Locals = NewSym; _elseif ( LclSym == symbol->u.MacroData.Parameters ) MacroListItem->u.MacroData.Parameters = NewSym; _endif /* ** Okay, if the current symbol is a macro ** object, do a shallow copy on it. If ** it's not a macro object, just set the ** strval field (since this must be a tText ** object) to the empty string. */ _if( LclSym->pType == tMacro ) memcpy( NewSym, LclSym, sizeofSymNode ); NewSym->Next = NULL; /* ** If this is a Terminator symbol, ** then point the Parent field ** at the macro we are setting up. ** This will allow access to the parent's ** symbols during expansion and will give ** a terminator a handle by which it can ** delete the parent from the active macro ** list when the terminator is done. */ _if ( NewSym->SymClass == cTerminator || NewSym->SymClass == cKeyword ) NewSym->u.MacroData.Parent = MacroListItem; _else NewSym->u.MacroData.Parent = NULL; _endif _elseif( LclSym->pType == tArray ) /* ** This code kicks in if we have ** a variable number of parameters. ** It makes a copy of all the (empty) ** strings associated with the last ** (the variable) parameter. */ memcpy( NewSym, LclSym, sizeofSymNode ); DeepCopy( NewSym, LclSym ); _else /* ** This entry handles normal parameters, ** string parameters, and local symbols ** (which are always tText or tString objects). */ memcpy( NewSym, LclSym, sizeofSymNode ); NewSym->u.strval = hlastrdup2( "" ); NewSym->Next = NULL; _endif /* ** Okay, move on to the next symbol ** in the macro's local symbol table. */ LclSym = LclSym->Next; _endwhile /* ** If the current macro symbol is a keyword ** or a terminator, point its parent field ** at the original invocation of the parent ** macro in the active list. */ _if ( symbol->SymClass == cTerminator || symbol->SymClass == cKeyword ) AMList = ActiveMacros; assert( symbol->u.MacroData.Parent != NULL ); _forever _breakif( AMList == NULL ); _if ( _streq ( AMList->TrueName, symbol->u.MacroData.Parent->TrueName ) ) MacroListItem->u.MacroData.Parent = AMList; break; _endif AMList = AMList->Next; _endfor _else MacroListItem->u.MacroData.Parent = NULL; _endif /* ** Get the macro parameters and store their ** values into the copy of the macro object ** we just created. */ _if( MacroListItem->u.MacroData.Parameters != NULL ) processMacroID( MacroListItem ); _endif /* ** Define any local symbols associated with ** this macro. Remember, locals are just ** text objects. What this code does is to ** assign a unique ID to each local object's ** strval. */ LocalIDs = MacroListItem->u.MacroData.Locals; _while ( LocalIDs != NULL && LocalIDs != MacroListItem->u.MacroData.Parameters ) sprintf( ThisLbl, "_%04x_%s_", LblCntr++, LocalIDs->TrueName ); v.u.strval = hlastrdup2( ThisLbl ); SetSym ( LocalIDs, &text_ste, tText, 0, NULL, 0, YYS &v, 0, 0, NULL, NULL, NULL, 0, // FieldCnt NULL, // CurField 0 // CurIndex ); LocalIDs = LocalIDs->Next; _endwhile /* ** Set up the data structures so we ** can play back this macro. */ PushBackStr( "\xff" ); // Mark the end of the macro expansion. ++MacroSP; assert( MacroSP < maxNestedMacros ); CurMacCntr = ++MacroCntr; MacroListItem->Offset = CurMacCntr; MacroStack[ MacroSP ].Macro = MacroListItem; MacroStack[ MacroSP ].cnt = CurMacCntr; MacroStack[ MacroSP ].text = MacroListItem->u.MacroData.Text; MacroStack[ MacroSP].SourceBufIndex = BufSP; pushBufStack( FileName, LineCnt, NULL, 0 ); FileName = symbol->u.MacroData.Filename; LineCnt = symbol->u.MacroData.LineCnt - 1; /* ** If this macro has an associated terminator, ** then we need to append it to the ** Wait4Term list. */ _if ( symbol->u.MacroData.Terminator != NULL ) Wait4Term[ ++W4TermSP ] = symbol->u.MacroData.Terminator; _endif /* ** Now, add this macro to the active ** macros list so we can search its local ** symbol table during macro expansion. */ MacroListItem->Next = ActiveMacros; ActiveMacros = MacroListItem; /* ** Play back the text of the macro. */ assert( MacroStack[ MacroSP ].text != NULL ); yy_scan_string(MacroStack[ MacroSP ].text ); /* ** Restore the global VarMacParms object. */ VarMacParms = LocalVarMacParms; /* ** Continue processing via the lexer. */ _here; _return PIDMacro; _end( ProcessMacro ) /************************************************************************************************************/ /* */ /* ProcessRegex- */ /* */ /* Called by ProcessID whenever it encounters a Regex symbol. */ /* The purpose of this procedure is to parse any necessary */ /* regex parameters and compile the regular expression. */ /* */ /************************************************************************************************************/ int ProcessRegex( struct SymNode *symbol, union YYSTYPE *yylval ) _begin( ProcessRegex ) /* ** Regular expressions are different from macros. ** Rather than expanding the text in-place, we ** have to compile the regular expression into ** an in-memory data structure. */ int CurMacCntr; char ThisLbl[256]; struct SymNode *LocalIDs; struct SymNode v; struct SymNode *RegexListItem; struct SymNode *LclSym; struct SymNode *NewSym; struct SymNode *LastSym; struct SymNode *ARList; _here; // If we are compiling a regular expression, bail out // right now because recursive compilations would produce // an infinite loop. Defer the compilation until we actually // use the regex. _if( inRegex ) _return RegexID; _endif /* ** Create a deep copy of the current symbol ** so we can make assignments to the local ** values and the parameters. This prevents ** a recursive regex invocation from wiping ** out the local and parameter values of the ** calling regex. */ RegexListItem = malloc2( sizeofSymNode ); memcpy( RegexListItem, symbol, sizeofSymNode ); RegexListItem->u.MacroData.Terminator = NULL; RegexListItem->u.MacroData.Locals = NULL; RegexListItem->u.MacroData.Parameters = NULL; RegexListItem->u.MacroData.Filename = FileName; RegexListItem->u.MacroData.LineCnt = LineCnt; LclSym = _ifx ( symbol->u.MacroData.Locals !=NULL, symbol->u.MacroData.Locals, symbol->u.MacroData.Parameters ); NewSym = NULL; _while( LclSym != NULL ) /* ** Allocate storage for a new symbol node ** and append the node to the end of the ** list we are creating (if the list already ** exists, that is). */ _if( NewSym != NULL ) NewSym->Next = malloc2( sizeofSymNode ); memcpy ( NewSym->Next, LclSym, sizeofSymNode ); NewSym = NewSym->Next; _else NewSym = malloc2( sizeofSymNode ); memcpy ( NewSym, LclSym, sizeofSymNode ); _endif /* ** If we've just hit the first Local symbol, ** or the first parameter, then set up the ** appropriate pointer in the Macro symbol ** we've just created. */ _if ( LclSym == symbol->u.MacroData.Locals ) RegexListItem->u.MacroData.Locals = NewSym; _elseif ( LclSym == symbol->u.MacroData.Parameters ) RegexListItem->u.MacroData.Parameters = NewSym; _endif /* ** Okay, if the current symbol is a Regex ** object, do a shallow copy on it. If ** it's not a Regex object, just set the ** strval field (since this must be a tText ** object) to the empty string. */ _if( LclSym->pType == tRegexMac ) memcpy( NewSym, LclSym, sizeofSymNode ); NewSym->Next = NULL; _elseif( LclSym->pType == tArray ) /* ** This code kicks in if we have ** a variable number of parameters. ** It makes a copy of all the (empty) ** strings associated with the last ** (the variable) parameter. */ memcpy( NewSym, LclSym, sizeofSymNode ); DeepCopy( NewSym, LclSym ); _else /* ** This entry handles normal parameters ** and local symbols (which are always ** tText objects). */ memcpy( NewSym, LclSym, sizeofSymNode ); NewSym->u.strval = hlastrdup2( "" ); NewSym->Next = NULL; _endif /* ** Okay, move on to the next symbol ** in the Regex's local symbol table. */ LclSym = LclSym->Next; _endwhile // The parent field is only used by macros. // Set it to NULL for Regexes: RegexListItem->u.MacroData.Parent = NULL; /* ** Get the regex parameters and store their ** values into the copy of the regex object ** we just created. */ _if( RegexListItem->u.MacroData.Parameters != NULL ) processMacroID( RegexListItem ); _endif /* ** Define any local symbols associated with ** this regex. Remember, locals are just ** text objects. What this code does is to ** assign a unique ID to each local object's ** strval. */ LocalIDs = RegexListItem->u.MacroData.Locals; _while ( LocalIDs != NULL && LocalIDs != RegexListItem->u.MacroData.Parameters ) sprintf( ThisLbl, "_%04x_%s_", LblCntr++, LocalIDs->TrueName ); v.u.strval = hlastrdup2( ThisLbl ); SetSym ( LocalIDs, &text_ste, tText, 0, NULL, 0, YYS &v, 0, 0, NULL, NULL, NULL, 0, // FieldCnt NULL, // CurField 0 // CurIndex ); LocalIDs = LocalIDs->Next; _endwhile /* ** Set up the data structures so we ** can play back this regex while ** compiling it. */ PushBackStr( "\xff" ); // Mark the end of the regex expansion. // We have to push this guy onto the macro stack because // macros found in the regular expression need access to // our symbols. Also, we're redirecting the input to come // from the regex, and this code uses the macro stack for // that purpose. ++MacroSP; assert( MacroSP < maxNestedMacros ); CurMacCntr = ++MacroCntr; RegexListItem->Offset = CurMacCntr; MacroStack[ MacroSP ].Macro = RegexListItem; MacroStack[ MacroSP ].cnt = CurMacCntr; MacroStack[ MacroSP ].text = RegexListItem->u.MacroData.Text; MacroStack[ MacroSP].SourceBufIndex = BufSP; pushBufStack( FileName, LineCnt, NULL, 0 ); FileName = symbol->u.MacroData.Filename; LineCnt = symbol->u.MacroData.LineCnt - 1; /* ** Now, add this regex to the active ** macros list so we can search its local ** symbol table during regex compilation. */ RegexListItem->Next = ActiveMacros; ActiveMacros = RegexListItem; /* ** Play back the text of the regular expression. */ assert( MacroStack[ MacroSP ].text != NULL ); yy_scan_string(MacroStack[ MacroSP ].text ); yyparse(); _if( d1ceReturnVal.v.pType != tRegex ) yyerror( "Error compiling regular expression" ); FreeValue( &d1ceReturnVal ); _return PIDIgnore; _endif memcpy( yylval, &d1ceReturnVal, sizeof( d1ceReturnVal )); _return regexconst; _end( ProcessRegex ) /******************************************************************************** ** ** doID- ** Handles the work when the scanner discovers an identifier. */ static int doID( YYSTYPE *yylval ) _begin( doID ) struct SymNode *symbol; struct SymNode *temp; int Token; /* ** In the event we are processing a class ID, ** initialize the "ClassID" string to empty ** so we can capture the full "path" of the ** class identifier sequence (in case we have ** to push the name back onto the lexer ** input). */ _here; ClassID[0] = '\0'; /* ** Begin by assuming that this is *not* a ** class identifier. */ CurObject = NULL; /* ** Parser expects us to look up the symbol ** before returning the ID token. */ _if( (fastNamespace && fastLookup) || SkipLookup ) symbol = NULL; _else symbol = lookup( yytext, 0 ); _endif fastLookup = 0; yylval->s = symbol; Token = ProcessID ( yytext, CurLexLevel, symbol, yylval ); /* ** Namespace, text, and macro symbols ** do not return control directly to the ** parser. ProcessID, above, returns -1/-2 ** for text/macro symbols, and -3 for namespace ** symbols. In the ** case of namespace and class symbols, ProcessID ** also sets the start condition to either ** allows the ** lexer to handle the rest of the identifier. ** For all other symbol types, the following ** statement returns control to the parser. */ _returnif( Token >= 0 ) Token; /* ** If this is a class object, CurObject ** needs to point at the leftmost name (the ** object name) in the "dot-path" (fully qualified) ** list of identifiers. Since this regular expression ** matches that leftmost identifier, save ** the address of this symbol before passing ** control to the regular ** expression. */ CurObject = symbol; _if( Token == -3 && symbol->SymClass != cNamespace ) LastRefdObject = symbol; _endif _return Token; _end( doID ) /**********************************************************************/ /* */ /* ProcessID- */ /* */ /* Whenever the lexer encounters an ID, the following code determimes */ /* the type of the ID and figures out how to handle it (e.g., return */ /* info to the parser, process a macro, process a namespace, etc.) */ /* */ /* Entry: */ /* symbol- Pointer to symbol table entry of the identifier. */ /* This value is NULL if the symbol is undefined. */ /* */ /* IDlen- # of identifiers in qualified name (i.e., the number of */ /* identifiers between the periods in a qualified name). */ /* Normally zero unless processing additional names after */ /* a class, record, union, or namespace identifier. */ /* */ /* Exit- */ /* */ /* yylval- contains a pointer to appropriate symbol table */ /* entry if this is a "normal" symbol. */ /* */ /* Returns: */ /* */ /* The function returns a token value if this is a normal */ /* symbol and control should return to the bison code. It */ /* returns a negative value if this is a text, macro, namespace, or */ /* class object and further processing by the lexer is necessary. */ /* */ /* */ /* */ /* */ /* */ /* ProcessID return values: */ /* */ /* If positive: ID token to return to parser. */ /* If negative, this indicates that the lexer needs to */ /* do additional processing on the value. Here are */ /* the negative return results: */ /* */ /* PIDtext -1 */ /* PIDMacro -2 */ /* PIDNameSpace -3 */ /* PIDClassName -4 */ /* */ /**********************************************************************/ static int ProcessID ( char *ID, int symLexLevel, struct SymNode *symbol, YYSTYPE *yylval ) _begin( ProcessID ) /* ** If the current symbol is undefined, just return ** the UndefID token. */ _here; _if( symbol == NULL ) yylval->idStr = hlastrdup2( yytext ); _return UndefID; _endif // Check for case neutrality here (but only if checkCN is true; // it gets set false for recursive calls involving class objects). _if( _strne( ID, symbol->TrueName )) // Okay, the case is different. // Now, if the lex levels are different, return an undefined // identifier. If the lex levels are the same, then we've got an // error. _if( symLexLevel == symbol->LexLevel ) char msg[ 256 ]; sprintf ( msg, "Mispelled identifier, perhaps you meant << %s >>", symbol->TrueName ); yyerror( msg ); _endif yylval->idStr = hlastrdup2( yytext ); _return UndefID; _endif /* ** If the symbol was defined and it's a text constant or ** value object, expand the text in-line and then let ** the lexer operate on this text (do not return directly ** to the parser). */ _if ( symbol->pType == tText && !InAtString && ( symbol->SymClass == cConstant || symbol->SymClass == cValue ) ) PushBackStr( symbol->u.strval ); _return PIDtext; _endif _if( symbol->pType == tNamespace ) /* ** Namespace IDs have to be handled specially ** because we don't return the namespace ** identifier to the bison code. Instead, we ** locate the namespace field identifier and ** return that value to the bison code. */ CurSymTbl = symbol; BEGIN NameSpace; _return PIDNameSpace; _endif /* ** If we have a class name (type, not variable), then check ** to see if there is a constant or macro name following ** the class name (separating the two is a single period). */ _if ( symbol->pType == tClass && symbol->SymClass == cType && CurObject == NULL ) /* ** Like namespace IDs, class IDs have to be ** handled specially in order to process ** macro, text constant, and other objects ** directly. */ struct SymNode *SaveSymTbl; char *DotLocation; char msg[ 256 ]; #define cn d1dnReturnVal.dotName CurSymTbl = symbol; LastRefdObject = symbol; SaveSymTbl = symbol; PushBackStr( "\xF4" ); /* Process one dot name */ CurObject = symbol; yyparse(); /* ** If the type name appeared alone (no dotted name following ** it), then just return the class name. */ _if( cn.FullName == NULL || cn.Sym == NULL ) PushBackStr( yytext ); yylval->s = symbol; _returnif( symbol->LexLevel == CurLexLevel ) LocalID; _return NonLocalID; _endif yylval->s = cn.Sym; /* ** Okay, return if it's a constant, macro, class procedure, ** or class method. ** ** Note special case for text constants - we've got to ** expand them here in place. */ _if ( cn.Sym->pType == tText && !InAtString && ( cn.Sym->SymClass == cConstant || cn.Sym->SymClass == cValue ) ) PushBackStr( cn.Sym->u.strval ); _return PIDtext; _endif _returnif( IsConstant( cn.Sym->SymClass )) LocalConstID; _if( cn.Sym->pType == tMacro ) LastMacroObject = SaveSymTbl; _return ProcessMacro( cn.Sym ); _endif /* ** Handle class procedures and methods here. */ _if( cn.Sym->SymClass == cClassProc ) yylval->s->u.proc.BaseClass = SaveSymTbl; _return ClassProcID; _endif _if( cn.Sym->SymClass == cClassIter ) yylval->s->u.proc.BaseClass = SaveSymTbl; _return ClassIterID; _endif _if( cn.Sym->SymClass == cMethod ) yylval->s->u.proc.BaseClass = SaveSymTbl; _return ClassMethodID; _endif PushBackStr( yytext ); PushBackStr( "." ); yylval->s = symbol; _if( cn.Sym->SymClass == cStatic ) _return _ifx ( symbol->LexLevel == CurLexLevel, LocalStaticID, NonLocalStaticID ); _endif /* ** All the processing above has handled a single ** identifier after a class name. This special ** case deals with macros, methods, class procedures, ** and class static variables. If we get to this ** point, those cases don't apply here. However, it ** is possible that we have a record or class variable ** that contains class, macro, or static object fields ** that need processing like class variables. Deal with ** that here. */ PushBackStr( "\xF5" ); CurObject = symbol; yyparse(); PushBackStr( yytext ); /* Look ahead eats the next symbol */ yylval->s = cn.Sym; /* ** Okay, return if it's a constant or a macro. */ _returnif( IsConstant( cn.Sym->SymClass )) LocalConstID; _if( cn.Sym->pType == tMacro ) _return ProcessMacro( cn.Sym ); _endif /* ** If it's not a constant or a macro, we've got to ** push the fieldnames back onto the input and ** return only the object name as our attribute. */ yylval->s = CurObject; /* Retrieve ptr to original object */ /* ** Determine if this is a qualified name by searching for ** a dot in the full name that was parsed. If no dot is ** present, then this is just an object name. If a dot ** is present, then it's a qualified object name and we ** need to push the dot and everything beyond it back onto ** the input. */ DotLocation = strchr( cn.FullName, '.' ); _if( DotLocation != NULL ) PushBackStr( DotLocation ); _endif /* ** Because we know this is a variable (see the original _if ** that started all this), all we've got to do is differentiate ** between static and local objects. */ ErrorNear ( "Unexpected field class for object type", cn.FullName, __LINE__, __FILE__ ); yylval->s = &error_ste; _return LocalVarID; /* arbitrary return token */ /* ** If a class variable (object) is encountered, we have to ** check to see if it is a fully qualified name (i.e., has ** the appropriate dots and fieldnames), and if it is, we ** need to see if the fully qualified name is a constant, ** value, or a macro. If so, we've got to process the ** whole thing right here. Otherwise, we just pass the ** object name (without the fields) back to the parser. */ _elseif ( ( symbol->pType == tClass || ( symbol->pType == tPointer && symbol->Base != NULL && symbol->Base->pType == tClass ) ) && IsVar( symbol->SymClass ) ) struct SymNode *SaveObject; char *DotLocation; #define dn d1dnReturnVal.dotName PushBackStr( "\xF5" ); CurObject = symbol; LastRefdObject = symbol; SaveObject = symbol; yyparse(); PushBackStr( yytext ); /* Look ahead eats the next symbol */ /* ** Well, it could be that there is no sequence of ** fieldnames after the class variable. In that case, ** dn.Sym will contain NULL. Deal with that here. */ _if( dn.Sym == NULL ) yylval->s = SaveObject; _if ( SaveObject->SymClass == cVar || SaveObject->SymClass == cParm ) _returnif( SaveObject->LexLevel == CurLexLevel ) LocalVarID; _return NonLocalVarID; _endif _if( SaveObject->SymClass == cStatic ) _returnif( SaveObject->LexLevel == CurLexLevel ) LocalStaticID; _return NonLocalStaticID; _endif assert( ("Unexpected Symbol Class", 0 )); _endif yylval->s = dn.Sym; /* ** Okay, return if it's a constant or a macro. */ _if ( dn.Sym->pType == tText && !InAtString && ( dn.Sym->SymClass == cConstant || dn.Sym->SymClass == cValue ) ) PushBackStr( dn.Sym->u.strval ); _return PIDtext; _endif _returnif( IsConstant( dn.Sym->SymClass )) LocalConstID; _if( dn.Sym->pType == tMacro ) LastMacroObject = SaveObject; _return ProcessMacro( dn.Sym ); _endif /* ** If it's not a constant or a macro, we've got to ** push the fieldnames back onto the input and ** return only the object name as our attribute. */ yylval->s = SaveObject; /* Retrieve ptr to original object */ /* ** Determine if this is a qualified name by searching for ** a dot in the full name that was parsed. If no dot is ** present, then this is just an object name. If a dot ** is present, then it's a qualified object name and we ** need to push the dot and everything beyond it back onto ** the input. */ DotLocation = strchr( dn.FullName, '.' ); _if( DotLocation != NULL ) PushBackStr( DotLocation ); _endif /* ** Because we know this is a variable (see the original _if ** that started all this), all we've got to do is differentiate ** between static and local objects. */ _returnif ( SaveObject->SymClass == cVar || SaveObject->SymClass == cParm ) LocalVarID; _returnif( SaveObject->SymClass == cStatic ) LocalStaticID; /* ** Just in case the impossible happens, force an assert. ** The _return is there in case NDEBUG is defined. */ assert( ("Unexpected symbol class", 0) ); _return LocalID; _endif /* ** If it's a macro symbol, call ProcessMacro to begin ** the expansion of the macro. */ _if( symbol->pType == tMacro ) int i; i= ProcessMacro( symbol ); _return i; _endif /* ** If it's a regular expression, call ProcessRegex to begin ** compiling the regular expression. */ _if( symbol->pType == tRegexMac ) int i; i= ProcessRegex( symbol, yylval ); _return i; _endif // If the symbol is a parameter and the regnum field is not -1, // then we've got a parameter passed in a register. Convert that // symbol to text at this point and reprocess it. _if( symbol->regnum != -1 && parmLookup != 1 ) PushBackStr( symbol->StaticName ); _return PIDtext; _endif // Must be some regular type of identifier here: _if( symbol->LexLevel == CurLexLevel ) yylval->s = symbol; _returnif( IsConstant( symbol->SymClass )) LocalConstID; _returnif ( symbol->SymClass == cVar || symbol->SymClass == cParm ) LocalVarID; _returnif( symbol->SymClass == cStatic ) LocalStaticID; _returnif( symbol->SymClass == cProc ) LocalProcID; _returnif( symbol->SymClass == cIterator ) LocalIterID; _returnif( symbol->SymClass == cClassProc ) ClassProcID; _returnif( symbol->SymClass == cClassIter ) ClassIterID; _returnif( symbol->SymClass == cMethod ) LocalMethodID; _returnif( symbol->SymClass == cLabel ) LocalLabelID; _return LocalID; _endif yylval->s = symbol; _returnif( IsConstant( symbol->SymClass )) NonLocalConstID; _returnif ( symbol->SymClass == cVar || symbol->SymClass == cParm ) NonLocalVarID; _returnif( symbol->SymClass == cStatic ) NonLocalStaticID; _returnif( symbol->SymClass == cProc ) NonLocalProcID; _returnif( symbol->SymClass == cIterator ) NonLocalIterID; _returnif( symbol->SymClass == cClassProc ) ClassProcID; _returnif( symbol->SymClass == cClassIter ) ClassIterID; _returnif( symbol->SymClass == cMethod ) NonLocalMethodID; _returnif( symbol->SymClass == cLabel ) NonLocalLabelID; _return NonLocalID; _end( ProcessID ) void parseExpression( char *strToParse, union YYSTYPE *putValueHere ) _begin( parseExpression ) char *temp; int len; _here; len = strlen( strToParse ); temp = malloc2( len + 4 ); temp[0] = '\xFA'; temp[1] = '('; memcpy( &temp[2], strToParse, len ); temp[len+2] = ')'; temp[len+3] = '\0'; PushBackStr( temp ); yyparse(); memcpy( putValueHere, &d1ceReturnVal.v, sizeof( union YYSTYPE )); free2( vss temp ); _here; _end( parseExpression )