47 #define YYBISON_VERSION "2.5"
50 #define YYSKELETON_NAME "yacc.c"
62 #define YYLSP_NEEDED 0
73 #define YYERROR_VERBOSE 1
74 #define YYSTACK_USE_ALLOCA 0
88 #define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
90 #define YYMALLOC(size) rb_parser_malloc(parser, (size))
91 #define YYREALLOC(ptr, size) rb_parser_realloc(parser, (ptr), (size))
92 #define YYCALLOC(nelem, size) rb_parser_calloc(parser, (nelem), (size))
93 #define YYFREE(ptr) rb_parser_free(parser, (ptr))
94 #define malloc YYMALLOC
95 #define realloc YYREALLOC
96 #define calloc YYCALLOC
101 #define REGISTER_SYMID(id, name) register_symid((id), (name), strlen(name), enc)
105 #define is_notop_id(id) ((id)>tLAST_TOKEN)
106 #define is_local_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_LOCAL)
107 #define is_global_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_GLOBAL)
108 #define is_instance_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_INSTANCE)
109 #define is_attrset_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_ATTRSET)
110 #define is_const_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CONST)
111 #define is_class_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CLASS)
112 #define is_junk_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_JUNK)
114 #define is_asgn_or_id(id) ((is_notop_id(id)) && \
115 (((id)&ID_SCOPE_MASK) == ID_GLOBAL || \
116 ((id)&ID_SCOPE_MASK) == ID_INSTANCE || \
117 ((id)&ID_SCOPE_MASK) == ID_CLASS))
136 # define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
137 # define BITSTACK_POP(stack) ((stack) = (stack) >> 1)
138 # define BITSTACK_LEXPOP(stack) ((stack) = ((stack) >> 1) | ((stack) & 1))
139 # define BITSTACK_SET_P(stack) ((stack)&1)
141 #define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
142 #define COND_POP() BITSTACK_POP(cond_stack)
143 #define COND_LEXPOP() BITSTACK_LEXPOP(cond_stack)
144 #define COND_P() BITSTACK_SET_P(cond_stack)
146 #define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
147 #define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
148 #define CMDARG_LEXPOP() BITSTACK_LEXPOP(cmdarg_stack)
149 #define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
165 #define DVARS_INHERIT ((void*)1)
166 #define DVARS_TOPSCOPE NULL
167 #define DVARS_SPECIAL_P(tbl) (!POINTER_P(tbl))
168 #define POINTER_P(val) ((VALUE)(val) & ~(VALUE)3)
191 if (
VTBL_DEBUG) printf(
"vtable_alloc: %p\n", (
void *)tbl);
198 if (
VTBL_DEBUG)printf(
"vtable_free: %p\n", (
void *)tbl);
211 rb_bug(
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
228 for (i = 0; i < tbl->
pos; i++) {
229 if (tbl->
tbl[i] ==
id) {
313 VALUE parser_ruby_sourcefile_string;
321 VALUE parsing_thread;
326 #define UTF8_ENC() (parser->utf8 ? parser->utf8 : \
327 (parser->utf8 = rb_utf8_encoding()))
328 #define STR_NEW(p,n) rb_enc_str_new((p),(n),parser->enc)
329 #define STR_NEW0() rb_enc_str_new(0,0,parser->enc)
330 #define STR_NEW2(p) rb_enc_str_new((p),strlen(p),parser->enc)
331 #define STR_NEW3(p,n,e,func) parser_str_new((p),(n),(e),(func),parser->enc)
332 #define ENC_SINGLE(cr) ((cr)==ENC_CODERANGE_7BIT)
333 #define TOK_INTERN(mb) rb_intern3(tok(), toklen(), parser->enc)
336 #define yyerror(msg) parser_yyerror(parser, (msg))
338 #define lex_strterm (parser->parser_lex_strterm)
339 #define lex_state (parser->parser_lex_state)
340 #define cond_stack (parser->parser_cond_stack)
341 #define cmdarg_stack (parser->parser_cmdarg_stack)
342 #define class_nest (parser->parser_class_nest)
343 #define paren_nest (parser->parser_paren_nest)
344 #define lpar_beg (parser->parser_lpar_beg)
345 #define in_single (parser->parser_in_single)
346 #define in_def (parser->parser_in_def)
347 #define compile_for_eval (parser->parser_compile_for_eval)
348 #define cur_mid (parser->parser_cur_mid)
349 #define in_defined (parser->parser_in_defined)
350 #define tokenbuf (parser->parser_tokenbuf)
351 #define tokidx (parser->parser_tokidx)
352 #define toksiz (parser->parser_toksiz)
353 #define lex_input (parser->parser_lex_input)
354 #define lex_lastline (parser->parser_lex_lastline)
355 #define lex_nextline (parser->parser_lex_nextline)
356 #define lex_pbeg (parser->parser_lex_pbeg)
357 #define lex_p (parser->parser_lex_p)
358 #define lex_pend (parser->parser_lex_pend)
359 #define heredoc_end (parser->parser_heredoc_end)
360 #define command_start (parser->parser_command_start)
361 #define deferred_nodes (parser->parser_deferred_nodes)
362 #define lex_gets_ptr (parser->parser_lex_gets_ptr)
363 #define lex_gets (parser->parser_lex_gets)
364 #define lvtbl (parser->parser_lvtbl)
365 #define ruby__end__seen (parser->parser_ruby__end__seen)
366 #define ruby_sourceline (parser->parser_ruby_sourceline)
367 #define ruby_sourcefile (parser->parser_ruby_sourcefile)
368 #define current_enc (parser->enc)
369 #define yydebug (parser->parser_yydebug)
372 #define ruby_eval_tree (parser->parser_eval_tree)
373 #define ruby_eval_tree_begin (parser->parser_eval_tree_begin)
374 #define ruby_debug_lines (parser->debug_lines)
375 #define ruby_coverage (parser->coverage)
379 static int yylex(
void*,
void*);
381 static int yylex(
void*);
385 #define yyparse ruby_yyparse
388 #define rb_node_newnode(type, a1, a2, a3) node_newnode(parser, (type), (a1), (a2), (a3))
391 #define cond(node) cond_gen(parser, (node))
393 #define logop(type,node1,node2) logop_gen(parser, (type), (node1), (node2))
401 #define value_expr(node) value_expr_gen(parser, (node) = remove_begin(node))
402 #define void_expr0(node) void_expr_gen(parser, (node))
403 #define void_expr(node) void_expr0((node) = remove_begin(node))
405 #define void_stmts(node) void_stmts_gen(parser, (node))
407 #define reduce_nodes(n) reduce_nodes_gen(parser,(n))
409 #define block_dup_check(n1,n2) block_dup_check_gen(parser,(n1),(n2))
412 #define block_append(h,t) block_append_gen(parser,(h),(t))
414 #define list_append(l,i) list_append_gen(parser,(l),(i))
416 #define list_concat(h,t) list_concat_gen(parser,(h),(t))
418 #define arg_append(h,t) arg_append_gen(parser,(h),(t))
420 #define arg_concat(h,t) arg_concat_gen(parser,(h),(t))
422 #define literal_concat(h,t) literal_concat_gen(parser,(h),(t))
425 #define new_evstr(n) new_evstr_gen(parser,(n))
427 #define evstr2dstr(n) evstr2dstr_gen(parser,(n))
431 #define call_bin_op(recv,id,arg1) call_bin_op_gen(parser, (recv),(id),(arg1))
433 #define call_uni_op(recv,id) call_uni_op_gen(parser, (recv),(id))
436 #define new_args(f,o,r,p,b) new_args_gen(parser, (f),(o),(r),(p),(b))
440 #define ret_args(node) ret_args_gen(parser, (node))
443 #define new_yield(node) new_yield_gen(parser, (node))
446 #define gettable(id) gettable_gen(parser,(id))
448 #define assignable(id,node) assignable_gen(parser, (id), (node))
451 #define aryset(node1,node2) aryset_gen(parser, (node1), (node2))
453 #define attrset(node,id) attrset_gen(parser, (node), (id))
456 #define rb_backref_error(n) rb_backref_error_gen(parser,(n))
458 #define node_assign(node1, node2) node_assign_gen(parser, (node1), (node2))
461 #define match_op(node1,node2) match_op_gen(parser, (node1), (node2))
464 #define local_tbl() local_tbl_gen(parser)
469 #define reg_compile(str,options) reg_compile_gen(parser, (str), (options))
471 #define reg_fragment_setenc(str,options) reg_fragment_setenc_gen(parser, (str), (options))
473 #define reg_fragment_check(str,options) reg_fragment_check_gen(parser, (str), (options))
475 #define reg_named_capture_assign(regexp,match) reg_named_capture_assign_gen(parser,(regexp),(match))
477 #define get_id(id) (id)
478 #define get_value(val) (val)
480 #define remove_begin(node) (node)
481 #define rb_dvar_defined(id) 0
482 #define rb_local_defined(id) 0
483 static ID ripper_get_id(
VALUE);
484 #define get_id(id) ripper_get_id(id)
486 #define get_value(val) ripper_get_value(val)
488 #define assignable(lhs,node) assignable_gen(parser, (lhs))
490 #define id_is_var(id) id_is_var_gen(parser, (id))
494 #define formal_argument(id) formal_argument_gen(parser, (id))
496 #define shadowing_lvar(name) shadowing_lvar_gen(parser, (name))
498 #define new_bv(id) new_bv_gen(parser, (id))
501 #define local_push(top) local_push_gen(parser,(top))
503 #define local_pop() local_pop_gen(parser)
505 #define local_var(id) local_var_gen(parser, (id));
507 #define arg_var(id) arg_var_gen(parser, (id))
509 #define local_id(id) local_id_gen(parser, (id))
511 #define internal_id() internal_id_gen(parser)
514 #define dyna_push() dyna_push_gen(parser)
516 #define dyna_pop(node) dyna_pop_gen(parser, (node))
518 #define dyna_in_block() dyna_in_block_gen(parser)
519 #define dyna_var(id) local_var(id)
521 #define dvar_defined(id) dvar_defined_gen(parser, (id), 0)
522 #define dvar_defined_get(id) dvar_defined_gen(parser, (id), 1)
524 #define dvar_curr(id) dvar_curr_gen(parser, (id))
527 #define lvar_defined(id) lvar_defined_gen(parser, (id))
529 #define RE_OPTION_ONCE (1<<16)
530 #define RE_OPTION_ENCODING_SHIFT 8
531 #define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
532 #define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
533 #define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
534 #define RE_OPTION_MASK 0xff
535 #define RE_OPTION_ARG_ENCODING_NONE 32
537 #define NODE_STRTERM NODE_ZARRAY
538 #define NODE_HEREDOC NODE_ARRAY
539 #define SIGN_EXTEND(x,n) (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))
540 #define nd_func u1.id
541 #if SIZEOF_SHORT == 2
542 #define nd_term(node) ((signed short)(node)->u2.id)
544 #define nd_term(node) SIGN_EXTEND((node)->u2.id, CHAR_BIT*2)
546 #define nd_paren(node) (char)((node)->u2.id >> CHAR_BIT*2)
547 #define nd_nest u3.cnt
552 #define RIPPER_VERSION "0.1.0"
556 static ID ripper_id_gets;
565 #define dispatch0(n) ripper_dispatch0(parser, TOKEN_PASTE(ripper_id_, n))
566 #define dispatch1(n,a) ripper_dispatch1(parser, TOKEN_PASTE(ripper_id_, n), (a))
567 #define dispatch2(n,a,b) ripper_dispatch2(parser, TOKEN_PASTE(ripper_id_, n), (a), (b))
568 #define dispatch3(n,a,b,c) ripper_dispatch3(parser, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
569 #define dispatch4(n,a,b,c,d) ripper_dispatch4(parser, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
570 #define dispatch5(n,a,b,c,d,e) ripper_dispatch5(parser, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
572 #define yyparse ripper_yyparse
574 #define ripper_intern(s) ID2SYM(rb_intern(s))
577 #define ripper_id2sym(id) ((id) < 256 && rb_ispunct(id) ? \
578 ID2SYM(id) : ripper_id2sym(id))
581 #define arg_new() dispatch0(args_new)
582 #define arg_add(l,a) dispatch2(args_add, (l), (a))
583 #define arg_add_star(l,a) dispatch2(args_add_star, (l), (a))
584 #define arg_add_block(l,b) dispatch2(args_add_block, (l), (b))
585 #define arg_add_optblock(l,b) ((b)==Qundef? (l) : dispatch2(args_add_block, (l), (b)))
586 #define bare_assoc(v) dispatch1(bare_assoc_hash, (v))
587 #define arg_add_assocs(l,b) arg_add((l), bare_assoc(b))
589 #define args2mrhs(a) dispatch1(mrhs_new_from_args, (a))
590 #define mrhs_new() dispatch0(mrhs_new)
591 #define mrhs_add(l,a) dispatch2(mrhs_add, (l), (a))
592 #define mrhs_add_star(l,a) dispatch2(mrhs_add_star, (l), (a))
594 #define mlhs_new() dispatch0(mlhs_new)
595 #define mlhs_add(l,a) dispatch2(mlhs_add, (l), (a))
596 #define mlhs_add_star(l,a) dispatch2(mlhs_add_star, (l), (a))
598 #define params_new(pars, opts, rest, pars2, blk) \
599 dispatch5(params, (pars), (opts), (rest), (pars2), (blk))
601 #define blockvar_new(p,v) dispatch2(block_var, (p), (v))
602 #define blockvar_add_star(l,a) dispatch2(block_var_add_star, (l), (a))
603 #define blockvar_add_block(l,a) dispatch2(block_var_add_block, (l), (a))
605 #define method_optarg(m,a) ((a)==Qundef ? (m) : dispatch2(method_add_arg,(m),(a)))
606 #define method_arg(m,a) dispatch2(method_add_arg,(m),(a))
607 #define method_add_block(m,b) dispatch2(method_add_block, (m), (b))
609 #define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
616 # define ifndef_ripper(x) (x)
618 # define ifndef_ripper(x)
622 # define rb_warn0(fmt) rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt))
623 # define rb_warnI(fmt,a) rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt), (a))
624 # define rb_warnS(fmt,a) rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt), (a))
625 # define rb_warning0(fmt) rb_compile_warning(ruby_sourcefile, ruby_sourceline, (fmt))
626 # define rb_warningS(fmt,a) rb_compile_warning(ruby_sourcefile, ruby_sourceline, (fmt), (a))
628 # define rb_warn0(fmt) ripper_warn0(parser, (fmt))
629 # define rb_warnI(fmt,a) ripper_warnI(parser, (fmt), (a))
630 # define rb_warnS(fmt,a) ripper_warnS(parser, (fmt), (a))
631 # define rb_warning0(fmt) ripper_warning0(parser, (fmt))
632 # define rb_warningS(fmt,a) ripper_warningS(parser, (fmt), (a))
633 static void ripper_warn0(
struct parser_params*,
const char*);
634 static void ripper_warnI(
struct parser_params*,
const char*,
int);
636 static void ripper_warnS(
struct parser_params*,
const char*,
const char*);
638 static void ripper_warning0(
struct parser_params*,
const char*);
639 static void ripper_warningS(
struct parser_params*,
const char*,
const char*);
643 static void ripper_compile_error(
struct parser_params*,
const char *fmt, ...);
644 # define rb_compile_error ripper_compile_error
645 # define compile_error ripper_compile_error
646 # define PARSER_ARG parser,
648 # define rb_compile_error rb_compile_error_with_enc
649 # define compile_error parser->nerr++,rb_compile_error_with_enc
650 # define PARSER_ARG ruby_sourcefile, ruby_sourceline, current_enc,
658 #define YYMAXDEPTH 10000
665 #define token_info_push(token) (RTEST(ruby_verbose) ? token_info_push(parser, (token)) : (void)0)
666 #define token_info_pop(token) (RTEST(ruby_verbose) ? token_info_pop(parser, (token)) : (void)0)
668 #define token_info_push(token)
669 #define token_info_pop(token)
682 #ifdef YYERROR_VERBOSE
683 # undef YYERROR_VERBOSE
684 # define YYERROR_VERBOSE 1
686 # define YYERROR_VERBOSE 0
690 #ifndef YYTOKEN_TABLE
691 # define YYTOKEN_TABLE 0
824 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
842 # define YYSTYPE_IS_TRIVIAL 1
843 # define yystype YYSTYPE
844 # define YYSTYPE_IS_DECLARED 1
866 #elif (defined __STDC__ || defined __C99__FUNC__ \
867 || defined __cplusplus || defined _MSC_VER)
886 # ifdef __SIZE_TYPE__
887 # define YYSIZE_T __SIZE_TYPE__
888 # elif defined size_t
889 # define YYSIZE_T size_t
890 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
891 || defined __cplusplus || defined _MSC_VER)
893 # define YYSIZE_T size_t
895 # define YYSIZE_T unsigned int
899 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
902 # if defined YYENABLE_NLS && YYENABLE_NLS
904 # include <libintl.h>
905 # define YY_(msgid) dgettext ("bison-runtime", msgid)
909 # define YY_(msgid) msgid
914 #if ! defined lint || defined __GNUC__
915 # define YYUSE(e) ((void) (e))
924 #if (defined __STDC__ || defined __C99__FUNC__ \
925 || defined __cplusplus || defined _MSC_VER)
938 #if ! defined yyoverflow || YYERROR_VERBOSE
942 # ifdef YYSTACK_USE_ALLOCA
943 # if YYSTACK_USE_ALLOCA
945 # define YYSTACK_ALLOC __builtin_alloca
946 # elif defined __BUILTIN_VA_ARG_INCR
949 # define YYSTACK_ALLOC __alloca
950 # elif defined _MSC_VER
952 # define alloca _alloca
954 # define YYSTACK_ALLOC alloca
955 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
956 || defined __cplusplus || defined _MSC_VER)
958 # ifndef EXIT_SUCCESS
959 # define EXIT_SUCCESS 0
966 # ifdef YYSTACK_ALLOC
968 # define YYSTACK_FREE(Ptr) do { ; } while (YYID (0))
969 # ifndef YYSTACK_ALLOC_MAXIMUM
974 # define YYSTACK_ALLOC_MAXIMUM 4032
977 # define YYSTACK_ALLOC YYMALLOC
978 # define YYSTACK_FREE YYFREE
979 # ifndef YYSTACK_ALLOC_MAXIMUM
980 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
982 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
983 && ! ((defined YYMALLOC || defined malloc) \
984 && (defined YYFREE || defined free)))
986 # ifndef EXIT_SUCCESS
987 # define EXIT_SUCCESS 0
991 # define YYMALLOC malloc
992 # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
993 || defined __cplusplus || defined _MSC_VER)
999 # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1000 || defined __cplusplus || defined _MSC_VER)
1008 #if (! defined yyoverflow \
1009 && (! defined __cplusplus \
1010 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1020 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
1024 # define YYSTACK_BYTES(N) \
1025 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
1026 + YYSTACK_GAP_MAXIMUM)
1028 # define YYCOPY_NEEDED 1
1035 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1038 YYSIZE_T yynewbytes; \
1039 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1040 Stack = &yyptr->Stack_alloc; \
1041 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
1042 yyptr += yynewbytes / sizeof (*yyptr); \
1048 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1052 # if defined __GNUC__ && 1 < __GNUC__
1053 # define YYCOPY(To, From, Count) \
1054 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
1056 # define YYCOPY(To, From, Count) \
1060 for (yyi = 0; yyi < (Count); yyi++) \
1061 (To)[yyi] = (From)[yyi]; \
1071 #define YYLAST 10748
1074 #define YYNTOKENS 148
1078 #define YYNRULES 573
1080 #define YYNSTATES 991
1083 #define YYUNDEFTOK 2
1084 #define YYMAXUTOK 375
1086 #define YYTRANSLATE(YYX) \
1087 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1092 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1093 147, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1094 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1095 2, 2, 146, 123, 2, 2, 2, 121, 116, 2,
1096 142, 143, 119, 117, 140, 118, 139, 120, 2, 2,
1097 2, 2, 2, 2, 2, 2, 2, 2, 111, 145,
1098 113, 109, 112, 110, 2, 2, 2, 2, 2, 2,
1099 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1100 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1101 2, 138, 2, 144, 115, 2, 141, 2, 2, 2,
1102 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1103 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1104 2, 2, 2, 136, 114, 137, 124, 2, 2, 2,
1105 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1106 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1107 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1109 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1110 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1111 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1112 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1113 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1114 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1115 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1116 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1117 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1118 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1119 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1120 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1121 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1122 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1123 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1124 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1125 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1126 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1127 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1128 105, 106, 107, 108, 122, 125, 126, 127, 128, 129,
1129 130, 131, 132, 133, 134, 135
1137 0, 0, 3, 4, 7, 10, 12, 14, 18, 21,
1138 23, 24, 30, 35, 38, 40, 42, 46, 49, 50,
1139 55, 59, 63, 67, 70, 74, 78, 82, 86, 90,
1140 95, 97, 101, 105, 112, 118, 124, 130, 136, 140,
1141 144, 148, 152, 154, 158, 162, 164, 168, 172, 176,
1142 179, 181, 183, 185, 187, 189, 194, 199, 200, 206,
1143 209, 213, 218, 224, 229, 235, 238, 241, 244, 247,
1144 250, 252, 256, 258, 262, 264, 267, 271, 277, 280,
1145 285, 288, 293, 295, 299, 301, 305, 308, 312, 314,
1146 318, 320, 322, 327, 331, 335, 339, 343, 346, 348,
1147 350, 352, 357, 361, 365, 369, 373, 376, 378, 380,
1148 382, 385, 387, 391, 393, 395, 397, 399, 401, 403,
1149 405, 407, 409, 411, 412, 417, 419, 421, 423, 425,
1150 427, 429, 431, 433, 435, 437, 439, 441, 443, 445,
1151 447, 449, 451, 453, 455, 457, 459, 461, 463, 465,
1152 467, 469, 471, 473, 475, 477, 479, 481, 483, 485,
1153 487, 489, 491, 493, 495, 497, 499, 501, 503, 505,
1154 507, 509, 511, 513, 515, 517, 519, 521, 523, 525,
1155 527, 529, 531, 533, 535, 537, 539, 541, 543, 545,
1156 547, 549, 551, 553, 555, 557, 561, 567, 571, 577,
1157 584, 590, 596, 602, 608, 613, 617, 621, 625, 629,
1158 633, 637, 641, 645, 649, 654, 659, 662, 665, 669,
1159 673, 677, 681, 685, 689, 693, 697, 701, 705, 709,
1160 713, 717, 720, 723, 727, 731, 735, 739, 740, 745,
1161 752, 754, 756, 758, 761, 766, 769, 773, 775, 777,
1162 779, 781, 784, 789, 792, 794, 797, 800, 805, 807,
1163 808, 811, 814, 817, 819, 821, 824, 828, 833, 837,
1164 842, 845, 847, 849, 851, 853, 855, 857, 859, 861,
1165 863, 864, 869, 870, 875, 879, 883, 886, 890, 894,
1166 896, 901, 905, 907, 908, 915, 920, 924, 927, 929,
1167 932, 935, 942, 949, 950, 951, 959, 960, 961, 969,
1168 975, 980, 981, 982, 992, 993, 1000, 1001, 1002, 1011,
1169 1012, 1018, 1019, 1026, 1027, 1028, 1038, 1040, 1042, 1044,
1170 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064,
1171 1066, 1068, 1070, 1072, 1074, 1077, 1079, 1081, 1083, 1089,
1172 1091, 1094, 1096, 1098, 1100, 1104, 1106, 1110, 1112, 1117,
1173 1124, 1128, 1134, 1137, 1142, 1144, 1148, 1155, 1164, 1169,
1174 1176, 1181, 1184, 1191, 1194, 1199, 1206, 1209, 1214, 1217,
1175 1222, 1224, 1226, 1228, 1232, 1234, 1239, 1241, 1244, 1246,
1176 1250, 1252, 1254, 1255, 1256, 1261, 1266, 1268, 1272, 1276,
1177 1277, 1283, 1286, 1291, 1296, 1299, 1304, 1309, 1313, 1317,
1178 1321, 1324, 1326, 1331, 1332, 1338, 1339, 1345, 1351, 1353,
1179 1355, 1362, 1364, 1366, 1368, 1370, 1373, 1375, 1378, 1380,
1180 1382, 1384, 1386, 1388, 1390, 1392, 1395, 1399, 1403, 1407,
1181 1411, 1415, 1416, 1420, 1422, 1425, 1429, 1433, 1434, 1438,
1182 1439, 1442, 1443, 1446, 1447, 1450, 1452, 1453, 1457, 1458,
1183 1459, 1465, 1467, 1469, 1471, 1473, 1476, 1478, 1480, 1482,
1184 1484, 1488, 1490, 1492, 1495, 1498, 1500, 1502, 1504, 1506,
1185 1508, 1510, 1512, 1514, 1516, 1518, 1520, 1522, 1524, 1526,
1186 1528, 1530, 1532, 1534, 1536, 1537, 1542, 1545, 1549, 1552,
1187 1559, 1568, 1573, 1580, 1585, 1592, 1595, 1600, 1607, 1610,
1188 1615, 1618, 1623, 1625, 1626, 1628, 1630, 1632, 1634, 1636,
1189 1638, 1640, 1644, 1646, 1650, 1654, 1658, 1660, 1664, 1666,
1190 1670, 1672, 1674, 1677, 1679, 1681, 1683, 1686, 1689, 1691,
1191 1693, 1694, 1699, 1701, 1704, 1706, 1710, 1714, 1717, 1719,
1192 1721, 1723, 1725, 1727, 1729, 1731, 1733, 1735, 1737, 1739,
1193 1741, 1742, 1744, 1745, 1747, 1750, 1753, 1754, 1756, 1758,
1194 1760, 1762, 1764, 1767
1200 149, 0, -1, -1, 150, 151, -1, 152, 314, -1,
1201 321, -1, 153, -1, 152, 320, 153, -1, 1, 153,
1202 -1, 158, -1, -1, 47, 154, 136, 151, 137, -1,
1203 156, 256, 231, 259, -1, 157, 314, -1, 321, -1,
1204 158, -1, 157, 320, 158, -1, 1, 158, -1, -1,
1205 45, 180, 159, 180, -1, 45, 54, 54, -1, 45,
1206 54, 64, -1, 45, 54, 63, -1, 6, 181, -1,
1207 158, 40, 162, -1, 158, 41, 162, -1, 158, 42,
1208 162, -1, 158, 43, 162, -1, 158, 44, 158, -1,
1209 48, 136, 156, 137, -1, 160, -1, 168, 109, 163,
1210 -1, 286, 87, 163, -1, 216, 138, 191, 317, 87,
1211 163, -1, 216, 139, 52, 87, 163, -1, 216, 139,
1212 56, 87, 163, -1, 216, 85, 56, 87, 163, -1,
1213 216, 85, 52, 87, 163, -1, 287, 87, 163, -1,
1214 175, 109, 198, -1, 168, 109, 187, -1, 168, 109,
1215 198, -1, 161, -1, 175, 109, 163, -1, 175, 109,
1216 160, -1, 163, -1, 161, 37, 161, -1, 161, 38,
1217 161, -1, 39, 315, 161, -1, 123, 163, -1, 185,
1218 -1, 161, -1, 167, -1, 164, -1, 249, -1, 249,
1219 139, 311, 193, -1, 249, 85, 311, 193, -1, -1,
1220 94, 166, 237, 156, 137, -1, 310, 193, -1, 310,
1221 193, 165, -1, 216, 139, 311, 193, -1, 216, 139,
1222 311, 193, 165, -1, 216, 85, 311, 193, -1, 216,
1223 85, 311, 193, 165, -1, 32, 193, -1, 31, 193,
1224 -1, 30, 192, -1, 21, 192, -1, 22, 192, -1,
1225 170, -1, 89, 169, 316, -1, 170, -1, 89, 169,
1226 316, -1, 172, -1, 172, 171, -1, 172, 95, 174,
1227 -1, 172, 95, 174, 140, 173, -1, 172, 95, -1,
1228 172, 95, 140, 173, -1, 95, 174, -1, 95, 174,
1229 140, 173, -1, 95, -1, 95, 140, 173, -1, 174,
1230 -1, 89, 169, 316, -1, 171, 140, -1, 172, 171,
1231 140, -1, 171, -1, 173, 140, 171, -1, 283, -1,
1232 284, -1, 216, 138, 191, 317, -1, 216, 139, 52,
1233 -1, 216, 85, 52, -1, 216, 139, 56, -1, 216,
1234 85, 56, -1, 86, 56, -1, 287, -1, 283, -1,
1235 284, -1, 216, 138, 191, 317, -1, 216, 139, 52,
1236 -1, 216, 85, 52, -1, 216, 139, 56, -1, 216,
1237 85, 56, -1, 86, 56, -1, 287, -1, 52, -1,
1238 56, -1, 86, 176, -1, 176, -1, 216, 85, 176,
1239 -1, 52, -1, 56, -1, 53, -1, 183, -1, 184,
1240 -1, 178, -1, 279, -1, 179, -1, 281, -1, 180,
1241 -1, -1, 181, 140, 182, 180, -1, 114, -1, 115,
1242 -1, 116, -1, 69, -1, 70, -1, 71, -1, 77,
1243 -1, 78, -1, 112, -1, 73, -1, 113, -1, 74,
1244 -1, 72, -1, 83, -1, 84, -1, 117, -1, 118,
1245 -1, 119, -1, 95, -1, 120, -1, 121, -1, 68,
1246 -1, 123, -1, 124, -1, 66, -1, 67, -1, 81,
1247 -1, 82, -1, 141, -1, 49, -1, 50, -1, 51,
1248 -1, 47, -1, 48, -1, 45, -1, 37, -1, 7,
1249 -1, 21, -1, 16, -1, 3, -1, 5, -1, 46,
1250 -1, 26, -1, 15, -1, 14, -1, 10, -1, 9,
1251 -1, 36, -1, 20, -1, 25, -1, 4, -1, 22,
1252 -1, 34, -1, 39, -1, 38, -1, 23, -1, 8,
1253 -1, 24, -1, 30, -1, 33, -1, 32, -1, 13,
1254 -1, 35, -1, 6, -1, 17, -1, 31, -1, 11,
1255 -1, 12, -1, 18, -1, 19, -1, 175, 109, 185,
1256 -1, 175, 109, 185, 44, 185, -1, 286, 87, 185,
1257 -1, 286, 87, 185, 44, 185, -1, 216, 138, 191,
1258 317, 87, 185, -1, 216, 139, 52, 87, 185, -1,
1259 216, 139, 56, 87, 185, -1, 216, 85, 52, 87,
1260 185, -1, 216, 85, 56, 87, 185, -1, 86, 56,
1261 87, 185, -1, 287, 87, 185, -1, 185, 79, 185,
1262 -1, 185, 80, 185, -1, 185, 117, 185, -1, 185,
1263 118, 185, -1, 185, 119, 185, -1, 185, 120, 185,
1264 -1, 185, 121, 185, -1, 185, 68, 185, -1, 122,
1265 59, 68, 185, -1, 122, 60, 68, 185, -1, 66,
1266 185, -1, 67, 185, -1, 185, 114, 185, -1, 185,
1267 115, 185, -1, 185, 116, 185, -1, 185, 69, 185,
1268 -1, 185, 112, 185, -1, 185, 73, 185, -1, 185,
1269 113, 185, -1, 185, 74, 185, -1, 185, 70, 185,
1270 -1, 185, 71, 185, -1, 185, 72, 185, -1, 185,
1271 77, 185, -1, 185, 78, 185, -1, 123, 185, -1,
1272 124, 185, -1, 185, 83, 185, -1, 185, 84, 185,
1273 -1, 185, 75, 185, -1, 185, 76, 185, -1, -1,
1274 46, 315, 186, 185, -1, 185, 110, 185, 315, 111,
1275 185, -1, 199, -1, 185, -1, 321, -1, 197, 318,
1276 -1, 197, 140, 308, 318, -1, 308, 318, -1, 142,
1277 191, 316, -1, 321, -1, 189, -1, 321, -1, 192,
1278 -1, 197, 140, -1, 197, 140, 308, 140, -1, 308,
1279 140, -1, 167, -1, 197, 196, -1, 308, 196, -1,
1280 197, 140, 308, 196, -1, 195, -1, -1, 194, 192,
1281 -1, 96, 187, -1, 140, 195, -1, 321, -1, 187,
1282 -1, 95, 187, -1, 197, 140, 187, -1, 197, 140,
1283 95, 187, -1, 197, 140, 187, -1, 197, 140, 95,
1284 187, -1, 95, 187, -1, 260, -1, 261, -1, 264,
1285 -1, 265, -1, 266, -1, 269, -1, 285, -1, 287,
1286 -1, 53, -1, -1, 217, 200, 155, 227, -1, -1,
1287 90, 161, 201, 316, -1, 89, 156, 143, -1, 216,
1288 85, 56, -1, 86, 56, -1, 92, 188, 144, -1,
1289 93, 307, 137, -1, 30, -1, 31, 142, 192, 316,
1290 -1, 31, 142, 316, -1, 31, -1, -1, 46, 315,
1291 142, 202, 161, 316, -1, 39, 142, 161, 316, -1,
1292 39, 142, 316, -1, 310, 251, -1, 250, -1, 250,
1293 251, -1, 97, 242, -1, 218, 162, 228, 156, 230,
1294 227, -1, 219, 162, 228, 156, 231, 227, -1, -1,
1295 -1, 220, 203, 162, 229, 204, 156, 227, -1, -1,
1296 -1, 221, 205, 162, 229, 206, 156, 227, -1, 222,
1297 162, 314, 254, 227, -1, 222, 314, 254, 227, -1,
1298 -1, -1, 223, 232, 25, 207, 162, 229, 208, 156,
1299 227, -1, -1, 224, 177, 288, 209, 155, 227, -1,
1300 -1, -1, 224, 83, 161, 210, 319, 211, 155, 227,
1301 -1, -1, 225, 177, 212, 155, 227, -1, -1, 226,
1302 178, 213, 290, 155, 227, -1, -1, -1, 226, 305,
1303 313, 214, 178, 215, 290, 155, 227, -1, 21, -1,
1304 22, -1, 23, -1, 24, -1, 199, -1, 7, -1,
1305 11, -1, 12, -1, 18, -1, 19, -1, 16, -1,
1306 20, -1, 3, -1, 4, -1, 5, -1, 10, -1,
1307 319, -1, 13, -1, 319, 13, -1, 319, -1, 27,
1308 -1, 231, -1, 14, 162, 228, 156, 230, -1, 321,
1309 -1, 15, 156, -1, 175, -1, 168, -1, 293, -1,
1310 89, 235, 316, -1, 233, -1, 234, 140, 233, -1,
1311 234, -1, 234, 140, 95, 293, -1, 234, 140, 95,
1312 293, 140, 234, -1, 234, 140, 95, -1, 234, 140,
1313 95, 140, 234, -1, 95, 293, -1, 95, 293, 140,
1314 234, -1, 95, -1, 95, 140, 234, -1, 295, 140,
1315 298, 140, 301, 304, -1, 295, 140, 298, 140, 301,
1316 140, 295, 304, -1, 295, 140, 298, 304, -1, 295,
1317 140, 298, 140, 295, 304, -1, 295, 140, 301, 304,
1318 -1, 295, 140, -1, 295, 140, 301, 140, 295, 304,
1319 -1, 295, 304, -1, 298, 140, 301, 304, -1, 298,
1320 140, 301, 140, 295, 304, -1, 298, 304, -1, 298,
1321 140, 295, 304, -1, 301, 304, -1, 301, 140, 295,
1322 304, -1, 303, -1, 321, -1, 238, -1, 114, 239,
1323 114, -1, 76, -1, 114, 236, 239, 114, -1, 321,
1324 -1, 145, 240, -1, 241, -1, 240, 140, 241, -1,
1325 52, -1, 292, -1, -1, -1, 243, 244, 245, 246,
1326 -1, 142, 291, 239, 316, -1, 291, -1, 107, 156,
1327 137, -1, 29, 156, 10, -1, -1, 28, 248, 237,
1328 156, 10, -1, 167, 247, -1, 249, 139, 311, 190,
1329 -1, 249, 85, 311, 190, -1, 310, 189, -1, 216,
1330 139, 311, 190, -1, 216, 85, 311, 189, -1, 216,
1331 85, 312, -1, 216, 139, 189, -1, 216, 85, 189,
1332 -1, 32, 189, -1, 32, -1, 216, 138, 191, 317,
1333 -1, -1, 136, 252, 237, 156, 137, -1, -1, 26,
1334 253, 237, 156, 10, -1, 17, 197, 228, 156, 255,
1335 -1, 231, -1, 254, -1, 8, 257, 258, 228, 156,
1336 256, -1, 321, -1, 187, -1, 198, -1, 321, -1,
1337 88, 175, -1, 321, -1, 9, 156, -1, 321, -1,
1338 282, -1, 279, -1, 281, -1, 262, -1, 62, -1,
1339 263, -1, 262, 263, -1, 99, 271, 106, -1, 100,
1340 272, 106, -1, 101, 273, 65, -1, 102, 146, 106,
1341 -1, 102, 267, 106, -1, -1, 267, 268, 146, -1,
1342 274, -1, 268, 274, -1, 103, 146, 106, -1, 103,
1343 270, 106, -1, -1, 270, 61, 146, -1, -1, 271,
1344 274, -1, -1, 272, 274, -1, -1, 273, 274, -1,
1345 61, -1, -1, 105, 275, 278, -1, -1, -1, 104,
1346 276, 277, 156, 137, -1, 54, -1, 55, -1, 57,
1347 -1, 287, -1, 98, 280, -1, 178, -1, 55, -1,
1348 54, -1, 57, -1, 98, 272, 106, -1, 59, -1,
1349 60, -1, 122, 59, -1, 122, 60, -1, 52, -1,
1350 55, -1, 54, -1, 56, -1, 57, -1, 34, -1,
1351 33, -1, 35, -1, 36, -1, 50, -1, 49, -1,
1352 51, -1, 283, -1, 284, -1, 283, -1, 284, -1,
1353 63, -1, 64, -1, 319, -1, -1, 113, 289, 162,
1354 319, -1, 1, 319, -1, 142, 291, 316, -1, 291,
1355 319, -1, 295, 140, 299, 140, 301, 304, -1, 295,
1356 140, 299, 140, 301, 140, 295, 304, -1, 295, 140,
1357 299, 304, -1, 295, 140, 299, 140, 295, 304, -1,
1358 295, 140, 301, 304, -1, 295, 140, 301, 140, 295,
1359 304, -1, 295, 304, -1, 299, 140, 301, 304, -1,
1360 299, 140, 301, 140, 295, 304, -1, 299, 304, -1,
1361 299, 140, 295, 304, -1, 301, 304, -1, 301, 140,
1362 295, 304, -1, 303, -1, -1, 56, -1, 55, -1,
1363 54, -1, 57, -1, 292, -1, 52, -1, 293, -1,
1364 89, 235, 316, -1, 294, -1, 295, 140, 294, -1,
1365 52, 109, 187, -1, 52, 109, 216, -1, 297, -1,
1366 298, 140, 297, -1, 296, -1, 299, 140, 296, -1,
1367 119, -1, 95, -1, 300, 52, -1, 300, -1, 116,
1368 -1, 96, -1, 302, 52, -1, 140, 303, -1, 321,
1369 -1, 285, -1, -1, 142, 306, 161, 316, -1, 321,
1370 -1, 308, 318, -1, 309, -1, 308, 140, 309, -1,
1371 187, 88, 187, -1, 58, 187, -1, 52, -1, 56,
1372 -1, 53, -1, 52, -1, 56, -1, 53, -1, 183,
1373 -1, 52, -1, 53, -1, 183, -1, 139, -1, 85,
1374 -1, -1, 320, -1, -1, 147, -1, 315, 143, -1,
1375 315, 144, -1, -1, 147, -1, 140, -1, 145, -1,
1376 147, -1, 319, -1, 320, 145, -1, -1
1382 0, 785, 785, 785, 816, 827, 836, 844, 852, 858,
1383 860, 859, 883, 916, 927, 936, 944, 952, 958, 958,
1384 966, 974, 985, 995, 1003, 1012, 1021, 1034, 1047, 1056,
1385 1068, 1069, 1079, 1108, 1129, 1146, 1163, 1174, 1191, 1201,
1386 1210, 1219, 1228, 1231, 1240, 1252, 1253, 1261, 1269, 1277,
1387 1285, 1288, 1300, 1301, 1304, 1305, 1314, 1326, 1325, 1347,
1388 1356, 1368, 1377, 1389, 1398, 1410, 1419, 1428, 1436, 1444,
1389 1454, 1455, 1465, 1466, 1476, 1484, 1492, 1500, 1509, 1517,
1390 1526, 1534, 1543, 1551, 1562, 1563, 1573, 1581, 1591, 1599,
1391 1609, 1613, 1617, 1625, 1633, 1641, 1649, 1661, 1671, 1683,
1392 1692, 1701, 1709, 1717, 1725, 1733, 1746, 1759, 1770, 1778,
1393 1781, 1789, 1797, 1807, 1808, 1809, 1810, 1815, 1826, 1827,
1394 1830, 1838, 1841, 1849, 1849, 1859, 1860, 1861, 1862, 1863,
1395 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873,
1396 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883,
1397 1884, 1885, 1886, 1887, 1890, 1890, 1890, 1891, 1891, 1892,
1398 1892, 1892, 1893, 1893, 1893, 1893, 1894, 1894, 1894, 1894,
1399 1895, 1895, 1895, 1896, 1896, 1896, 1896, 1897, 1897, 1897,
1400 1897, 1898, 1898, 1898, 1898, 1899, 1899, 1899, 1899, 1900,
1401 1900, 1900, 1900, 1901, 1901, 1904, 1913, 1923, 1952, 1983,
1402 2009, 2026, 2043, 2060, 2071, 2082, 2093, 2107, 2121, 2129,
1403 2137, 2145, 2153, 2161, 2169, 2178, 2187, 2195, 2203, 2211,
1404 2219, 2227, 2235, 2243, 2251, 2259, 2267, 2275, 2283, 2291,
1405 2302, 2310, 2318, 2326, 2334, 2342, 2350, 2358, 2358, 2368,
1406 2378, 2384, 2396, 2397, 2401, 2409, 2419, 2429, 2430, 2433,
1407 2434, 2435, 2439, 2447, 2457, 2466, 2474, 2484, 2493, 2502,
1408 2502, 2514, 2524, 2528, 2534, 2542, 2550, 2564, 2580, 2594,
1409 2609, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, 2627,
1410 2636, 2635, 2660, 2660, 2669, 2677, 2685, 2693, 2706, 2714,
1411 2722, 2730, 2738, 2746, 2746, 2756, 2764, 2772, 2783, 2784,
1412 2795, 2799, 2811, 2823, 2823, 2823, 2834, 2834, 2834, 2845,
1413 2856, 2865, 2867, 2864, 2931, 2930, 2952, 2957, 2951, 2976,
1414 2975, 2997, 2996, 3019, 3020, 3019, 3040, 3048, 3056, 3064,
1415 3074, 3086, 3092, 3098, 3104, 3110, 3116, 3122, 3128, 3134,
1416 3140, 3150, 3156, 3161, 3162, 3169, 3174, 3177, 3178, 3191,
1417 3192, 3202, 3203, 3206, 3214, 3224, 3232, 3242, 3250, 3259,
1418 3268, 3276, 3284, 3293, 3305, 3313, 3323, 3331, 3339, 3347,
1419 3355, 3363, 3372, 3380, 3388, 3396, 3404, 3412, 3420, 3428,
1420 3436, 3446, 3447, 3453, 3462, 3471, 3482, 3483, 3493, 3500,
1421 3509, 3517, 3523, 3526, 3523, 3544, 3552, 3562, 3566, 3573,
1422 3572, 3593, 3609, 3618, 3629, 3638, 3648, 3658, 3666, 3677,
1423 3688, 3696, 3704, 3719, 3718, 3738, 3737, 3758, 3770, 3771,
1424 3774, 3793, 3796, 3804, 3812, 3815, 3819, 3822, 3830, 3833,
1425 3834, 3842, 3845, 3862, 3863, 3864, 3874, 3884, 3911, 3976,
1426 3985, 3996, 4003, 4013, 4021, 4031, 4040, 4051, 4058, 4069,
1427 4076, 4087, 4094, 4105, 4112, 4141, 4143, 4142, 4159, 4165,
1428 4158, 4184, 4192, 4200, 4208, 4211, 4222, 4223, 4224, 4225,
1429 4228, 4258, 4259, 4260, 4268, 4278, 4279, 4280, 4281, 4282,
1430 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4294, 4307, 4317,
1431 4325, 4335, 4336, 4339, 4348, 4347, 4355, 4367, 4377, 4385,
1432 4393, 4401, 4409, 4417, 4425, 4433, 4441, 4449, 4457, 4465,
1433 4473, 4481, 4489, 4498, 4507, 4516, 4525, 4534, 4545, 4546,
1434 4553, 4562, 4581, 4588, 4601, 4613, 4625, 4633, 4649, 4657,
1435 4673, 4674, 4677, 4690, 4701, 4702, 4705, 4722, 4726, 4736,
1436 4746, 4746, 4775, 4776, 4786, 4793, 4803, 4811, 4821, 4822,
1437 4823, 4826, 4827, 4828, 4829, 4832, 4833, 4834, 4837, 4842,
1438 4849, 4850, 4853, 4854, 4857, 4860, 4863, 4864, 4865, 4868,
1439 4869, 4872, 4873, 4877
1443 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1448 "$end",
"error",
"$undefined",
"keyword_class",
"keyword_module",
1449 "keyword_def",
"keyword_undef",
"keyword_begin",
"keyword_rescue",
1450 "keyword_ensure",
"keyword_end",
"keyword_if",
"keyword_unless",
1451 "keyword_then",
"keyword_elsif",
"keyword_else",
"keyword_case",
1452 "keyword_when",
"keyword_while",
"keyword_until",
"keyword_for",
1453 "keyword_break",
"keyword_next",
"keyword_redo",
"keyword_retry",
1454 "keyword_in",
"keyword_do",
"keyword_do_cond",
"keyword_do_block",
1455 "keyword_do_LAMBDA",
"keyword_return",
"keyword_yield",
"keyword_super",
1456 "keyword_self",
"keyword_nil",
"keyword_true",
"keyword_false",
1457 "keyword_and",
"keyword_or",
"keyword_not",
"modifier_if",
1458 "modifier_unless",
"modifier_while",
"modifier_until",
"modifier_rescue",
1459 "keyword_alias",
"keyword_defined",
"keyword_BEGIN",
"keyword_END",
1460 "keyword__LINE__",
"keyword__FILE__",
"keyword__ENCODING__",
1461 "tIDENTIFIER",
"tFID",
"tGVAR",
"tIVAR",
"tCONSTANT",
"tCVAR",
"tLABEL",
1462 "tINTEGER",
"tFLOAT",
"tSTRING_CONTENT",
"tCHAR",
"tNTH_REF",
1463 "tBACK_REF",
"tREGEXP_END",
"tUPLUS",
"tUMINUS",
"tPOW",
"tCMP",
"tEQ",
1464 "tEQQ",
"tNEQ",
"tGEQ",
"tLEQ",
"tANDOP",
"tOROP",
"tMATCH",
"tNMATCH",
1465 "tDOT2",
"tDOT3",
"tAREF",
"tASET",
"tLSHFT",
"tRSHFT",
"tCOLON2",
1466 "tCOLON3",
"tOP_ASGN",
"tASSOC",
"tLPAREN",
"tLPAREN_ARG",
"tRPAREN",
1467 "tLBRACK",
"tLBRACE",
"tLBRACE_ARG",
"tSTAR",
"tAMPER",
"tLAMBDA",
1468 "tSYMBEG",
"tSTRING_BEG",
"tXSTRING_BEG",
"tREGEXP_BEG",
"tWORDS_BEG",
1469 "tQWORDS_BEG",
"tSTRING_DBEG",
"tSTRING_DVAR",
"tSTRING_END",
"tLAMBEG",
1470 "tLOWEST",
"'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
1471 "'-'",
"'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
"idNULL",
1472 "idRespond_to",
"idIFUNC",
"idCFUNC",
"id_core_set_method_alias",
1473 "id_core_set_variable_alias",
"id_core_undef_method",
1474 "id_core_define_method",
"id_core_define_singleton_method",
1475 "id_core_set_postexe",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"'.'",
"','",
1476 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
1477 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"$@2",
"bodystmt",
1478 "compstmt",
"stmts",
"stmt",
"$@3",
"command_asgn",
"expr",
"expr_value",
1479 "command_call",
"block_command",
"cmd_brace_block",
"@4",
"command",
1480 "mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
1481 "mlhs_post",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fsym",
1482 "fitem",
"undef_list",
"$@5",
"op",
"reswords",
"arg",
"$@6",
1483 "arg_value",
"aref_args",
"paren_args",
"opt_paren_args",
1484 "opt_call_args",
"call_args",
"command_args",
"@7",
"block_arg",
1485 "opt_block_arg",
"args",
"mrhs",
"primary",
"@8",
"$@9",
"$@10",
"$@11",
1486 "$@12",
"$@13",
"$@14",
"$@15",
"$@16",
"@17",
"@18",
"@19",
"@20",
1487 "@21",
"$@22",
"$@23",
"primary_value",
"k_begin",
"k_if",
"k_unless",
1488 "k_while",
"k_until",
"k_case",
"k_for",
"k_class",
"k_module",
"k_def",
1489 "k_end",
"then",
"do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
1490 "f_marg_list",
"f_margs",
"block_param",
"opt_block_param",
1491 "block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
"lambda",
"@24",
1492 "@25",
"f_larglist",
"lambda_body",
"do_block",
"@26",
"block_call",
1493 "method_call",
"brace_block",
"@27",
"@28",
"case_body",
"cases",
1494 "opt_rescue",
"exc_list",
"exc_var",
"opt_ensure",
"literal",
"strings",
1495 "string",
"string1",
"xstring",
"regexp",
"words",
"word_list",
"word",
1496 "qwords",
"qword_list",
"string_contents",
"xstring_contents",
1497 "regexp_contents",
"string_content",
"@29",
"@30",
"@31",
"string_dvar",
1498 "symbol",
"sym",
"dsym",
"numeric",
"user_variable",
"keyword_variable",
1499 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@32",
"f_arglist",
1500 "f_args",
"f_bad_arg",
"f_norm_arg",
"f_arg_item",
"f_arg",
"f_opt",
1501 "f_block_opt",
"f_block_optarg",
"f_optarg",
"restarg_mark",
1502 "f_rest_arg",
"blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
1503 "singleton",
"$@33",
"assoc_list",
"assocs",
"assoc",
"operation",
1504 "operation2",
"operation3",
"dot_or_colon",
"opt_terms",
"opt_nl",
1505 "rparen",
"rbracket",
"trailer",
"term",
"terms",
"none", 0
1514 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1515 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1516 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1517 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1518 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1519 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1520 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1521 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1522 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1523 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1524 355, 356, 357, 358, 359, 360, 361, 362, 363, 61,
1525 63, 58, 62, 60, 124, 94, 38, 43, 45, 42,
1526 47, 37, 364, 33, 126, 365, 366, 367, 368, 369,
1527 370, 371, 372, 373, 374, 375, 123, 125, 91, 46,
1528 44, 96, 40, 41, 93, 59, 32, 10
1535 0, 148, 150, 149, 151, 152, 152, 152, 152, 153,
1536 154, 153, 155, 156, 157, 157, 157, 157, 159, 158,
1537 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
1538 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
1539 158, 158, 158, 160, 160, 161, 161, 161, 161, 161,
1540 161, 162, 163, 163, 164, 164, 164, 166, 165, 167,
1541 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
1542 168, 168, 169, 169, 170, 170, 170, 170, 170, 170,
1543 170, 170, 170, 170, 171, 171, 172, 172, 173, 173,
1544 174, 174, 174, 174, 174, 174, 174, 174, 174, 175,
1545 175, 175, 175, 175, 175, 175, 175, 175, 176, 176,
1546 177, 177, 177, 178, 178, 178, 178, 178, 179, 179,
1547 180, 180, 181, 182, 181, 183, 183, 183, 183, 183,
1548 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1549 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1550 183, 183, 183, 183, 184, 184, 184, 184, 184, 184,
1551 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1552 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1553 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1554 184, 184, 184, 184, 184, 185, 185, 185, 185, 185,
1555 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
1556 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
1557 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
1558 185, 185, 185, 185, 185, 185, 185, 186, 185, 185,
1559 185, 187, 188, 188, 188, 188, 189, 190, 190, 191,
1560 191, 191, 191, 191, 192, 192, 192, 192, 192, 194,
1561 193, 195, 196, 196, 197, 197, 197, 197, 198, 198,
1562 198, 199, 199, 199, 199, 199, 199, 199, 199, 199,
1563 200, 199, 201, 199, 199, 199, 199, 199, 199, 199,
1564 199, 199, 199, 202, 199, 199, 199, 199, 199, 199,
1565 199, 199, 199, 203, 204, 199, 205, 206, 199, 199,
1566 199, 207, 208, 199, 209, 199, 210, 211, 199, 212,
1567 199, 213, 199, 214, 215, 199, 199, 199, 199, 199,
1568 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
1569 226, 227, 228, 228, 228, 229, 229, 230, 230, 231,
1570 231, 232, 232, 233, 233, 234, 234, 235, 235, 235,
1571 235, 235, 235, 235, 235, 235, 236, 236, 236, 236,
1572 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1573 236, 237, 237, 238, 238, 238, 239, 239, 240, 240,
1574 241, 241, 243, 244, 242, 245, 245, 246, 246, 248,
1575 247, 249, 249, 249, 250, 250, 250, 250, 250, 250,
1576 250, 250, 250, 252, 251, 253, 251, 254, 255, 255,
1577 256, 256, 257, 257, 257, 258, 258, 259, 259, 260,
1578 260, 260, 261, 262, 262, 262, 263, 264, 265, 266,
1579 266, 267, 267, 268, 268, 269, 269, 270, 270, 271,
1580 271, 272, 272, 273, 273, 274, 275, 274, 276, 277,
1581 274, 278, 278, 278, 278, 279, 280, 280, 280, 280,
1582 281, 282, 282, 282, 282, 283, 283, 283, 283, 283,
1583 284, 284, 284, 284, 284, 284, 284, 285, 285, 286,
1584 286, 287, 287, 288, 289, 288, 288, 290, 290, 291,
1585 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
1586 291, 291, 291, 291, 292, 292, 292, 292, 293, 293,
1587 294, 294, 295, 295, 296, 297, 298, 298, 299, 299,
1588 300, 300, 301, 301, 302, 302, 303, 304, 304, 305,
1589 306, 305, 307, 307, 308, 308, 309, 309, 310, 310,
1590 310, 311, 311, 311, 311, 312, 312, 312, 313, 313,
1591 314, 314, 315, 315, 316, 317, 318, 318, 318, 319,
1598 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
1599 0, 5, 4, 2, 1, 1, 3, 2, 0, 4,
1600 3, 3, 3, 2, 3, 3, 3, 3, 3, 4,
1601 1, 3, 3, 6, 5, 5, 5, 5, 3, 3,
1602 3, 3, 1, 3, 3, 1, 3, 3, 3, 2,
1603 1, 1, 1, 1, 1, 4, 4, 0, 5, 2,
1604 3, 4, 5, 4, 5, 2, 2, 2, 2, 2,
1605 1, 3, 1, 3, 1, 2, 3, 5, 2, 4,
1606 2, 4, 1, 3, 1, 3, 2, 3, 1, 3,
1607 1, 1, 4, 3, 3, 3, 3, 2, 1, 1,
1608 1, 4, 3, 3, 3, 3, 2, 1, 1, 1,
1609 2, 1, 3, 1, 1, 1, 1, 1, 1, 1,
1610 1, 1, 1, 0, 4, 1, 1, 1, 1, 1,
1611 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1612 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1613 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1614 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1615 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1616 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1617 1, 1, 1, 1, 1, 3, 5, 3, 5, 6,
1618 5, 5, 5, 5, 4, 3, 3, 3, 3, 3,
1619 3, 3, 3, 3, 4, 4, 2, 2, 3, 3,
1620 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1621 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
1622 1, 1, 1, 2, 4, 2, 3, 1, 1, 1,
1623 1, 2, 4, 2, 1, 2, 2, 4, 1, 0,
1624 2, 2, 2, 1, 1, 2, 3, 4, 3, 4,
1625 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1626 0, 4, 0, 4, 3, 3, 2, 3, 3, 1,
1627 4, 3, 1, 0, 6, 4, 3, 2, 1, 2,
1628 2, 6, 6, 0, 0, 7, 0, 0, 7, 5,
1629 4, 0, 0, 9, 0, 6, 0, 0, 8, 0,
1630 5, 0, 6, 0, 0, 9, 1, 1, 1, 1,
1631 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1632 1, 1, 1, 1, 2, 1, 1, 1, 5, 1,
1633 2, 1, 1, 1, 3, 1, 3, 1, 4, 6,
1634 3, 5, 2, 4, 1, 3, 6, 8, 4, 6,
1635 4, 2, 6, 2, 4, 6, 2, 4, 2, 4,
1636 1, 1, 1, 3, 1, 4, 1, 2, 1, 3,
1637 1, 1, 0, 0, 4, 4, 1, 3, 3, 0,
1638 5, 2, 4, 4, 2, 4, 4, 3, 3, 3,
1639 2, 1, 4, 0, 5, 0, 5, 5, 1, 1,
1640 6, 1, 1, 1, 1, 2, 1, 2, 1, 1,
1641 1, 1, 1, 1, 1, 2, 3, 3, 3, 3,
1642 3, 0, 3, 1, 2, 3, 3, 0, 3, 0,
1643 2, 0, 2, 0, 2, 1, 0, 3, 0, 0,
1644 5, 1, 1, 1, 1, 2, 1, 1, 1, 1,
1645 3, 1, 1, 2, 2, 1, 1, 1, 1, 1,
1646 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1647 1, 1, 1, 1, 0, 4, 2, 3, 2, 6,
1648 8, 4, 6, 4, 6, 2, 4, 6, 2, 4,
1649 2, 4, 1, 0, 1, 1, 1, 1, 1, 1,
1650 1, 3, 1, 3, 3, 3, 1, 3, 1, 3,
1651 1, 1, 2, 1, 1, 1, 2, 2, 1, 1,
1652 0, 4, 1, 2, 1, 3, 3, 2, 1, 1,
1653 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1654 0, 1, 0, 1, 2, 2, 0, 1, 1, 1,
1663 2, 0, 0, 1, 0, 338, 339, 340, 0, 331,
1664 332, 333, 336, 334, 335, 337, 326, 327, 328, 329,
1665 289, 259, 259, 481, 480, 482, 483, 562, 0, 562,
1666 10, 0, 485, 484, 486, 475, 550, 477, 476, 478,
1667 479, 471, 472, 433, 491, 492, 0, 0, 0, 0,
1668 0, 573, 573, 82, 392, 451, 449, 451, 453, 441,
1669 447, 0, 0, 0, 3, 560, 6, 9, 30, 42,
1670 45, 53, 52, 0, 70, 0, 74, 84, 0, 50,
1671 240, 0, 280, 0, 0, 303, 306, 560, 0, 0,
1672 0, 0, 54, 298, 271, 272, 432, 434, 273, 274,
1673 275, 276, 430, 431, 429, 487, 488, 277, 0, 278,
1674 259, 5, 8, 164, 175, 165, 188, 161, 181, 171,
1675 170, 191, 192, 186, 169, 168, 163, 189, 193, 194,
1676 173, 162, 176, 180, 182, 174, 167, 183, 190, 185,
1677 184, 177, 187, 172, 160, 179, 178, 159, 166, 157,
1678 158, 154, 155, 156, 113, 115, 114, 149, 150, 146,
1679 128, 129, 130, 137, 134, 136, 131, 132, 151, 152,
1680 138, 139, 143, 133, 135, 125, 126, 127, 140, 141,
1681 142, 144, 145, 147, 148, 153, 118, 120, 122, 23,
1682 116, 117, 119, 121, 0, 0, 0, 0, 0, 0,
1683 0, 254, 0, 241, 264, 68, 258, 573, 0, 487,
1684 488, 0, 278, 573, 544, 69, 67, 562, 66, 0,
1685 573, 410, 65, 562, 563, 0, 0, 18, 237, 0,
1686 0, 326, 327, 289, 292, 411, 216, 0, 0, 217,
1687 286, 0, 0, 0, 560, 15, 562, 72, 14, 282,
1688 0, 566, 566, 242, 0, 0, 566, 542, 562, 0,
1689 0, 0, 80, 330, 0, 90, 91, 98, 300, 393,
1690 468, 467, 469, 466, 0, 465, 0, 0, 0, 0,
1691 0, 0, 0, 473, 474, 49, 231, 232, 569, 570,
1692 4, 571, 561, 0, 0, 0, 0, 0, 0, 0,
1693 399, 401, 0, 86, 0, 78, 75, 0, 0, 0,
1694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1695 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1696 0, 0, 0, 0, 0, 573, 0, 0, 51, 0,
1697 0, 0, 0, 560, 0, 561, 0, 352, 351, 0,
1698 0, 487, 488, 278, 108, 109, 0, 0, 111, 0,
1699 0, 487, 488, 278, 319, 184, 177, 187, 172, 154,
1700 155, 156, 113, 114, 540, 321, 539, 0, 0, 0,
1701 415, 413, 299, 435, 0, 0, 404, 59, 297, 123,
1702 547, 286, 265, 261, 0, 0, 0, 255, 263, 0,
1703 573, 0, 0, 0, 0, 256, 562, 0, 291, 260,
1704 562, 250, 573, 573, 249, 562, 296, 48, 20, 22,
1705 21, 0, 293, 0, 0, 0, 0, 0, 0, 17,
1706 562, 284, 13, 561, 71, 562, 287, 568, 567, 243,
1707 568, 245, 288, 543, 0, 97, 473, 474, 88, 83,
1708 0, 0, 573, 0, 513, 455, 458, 456, 470, 452,
1709 436, 450, 437, 438, 454, 439, 440, 0, 443, 445,
1710 0, 446, 0, 0, 572, 7, 24, 25, 26, 27,
1711 28, 46, 47, 573, 0, 31, 40, 0, 41, 562,
1712 0, 76, 87, 44, 43, 0, 195, 264, 39, 213,
1713 221, 226, 227, 228, 223, 225, 235, 236, 229, 230,
1714 206, 207, 233, 234, 562, 222, 224, 218, 219, 220,
1715 208, 209, 210, 211, 212, 551, 556, 552, 557, 409,
1716 259, 407, 562, 551, 553, 552, 554, 408, 259, 0,
1717 573, 343, 0, 342, 0, 0, 0, 0, 0, 0,
1718 286, 0, 573, 0, 311, 316, 108, 109, 110, 0,
1719 494, 314, 493, 0, 573, 0, 0, 0, 513, 559,
1720 558, 323, 551, 552, 259, 259, 573, 573, 32, 197,
1721 38, 205, 57, 60, 0, 195, 546, 0, 266, 262,
1722 573, 555, 552, 562, 551, 552, 545, 290, 564, 246,
1723 251, 253, 295, 19, 0, 238, 0, 29, 0, 573,
1724 204, 73, 16, 283, 566, 0, 81, 94, 96, 562,
1725 551, 552, 519, 516, 515, 514, 517, 0, 531, 535,
1726 534, 530, 513, 0, 396, 518, 520, 522, 573, 528,
1727 573, 533, 573, 0, 512, 459, 0, 442, 444, 448,
1728 214, 215, 384, 573, 0, 382, 381, 270, 0, 85,
1729 79, 0, 0, 0, 0, 0, 0, 406, 63, 0,
1730 412, 0, 0, 248, 405, 61, 247, 341, 281, 573,
1731 573, 421, 573, 344, 573, 346, 304, 345, 307, 0,
1732 0, 310, 555, 285, 562, 551, 552, 0, 0, 496,
1733 0, 0, 108, 109, 112, 562, 0, 562, 513, 0,
1734 0, 0, 403, 56, 402, 55, 0, 0, 0, 573,
1735 124, 267, 257, 0, 0, 412, 0, 0, 573, 562,
1736 11, 244, 89, 92, 0, 519, 0, 364, 355, 357,
1737 562, 353, 573, 0, 0, 394, 0, 505, 538, 0,
1738 508, 532, 0, 510, 536, 0, 461, 462, 463, 457,
1739 464, 519, 0, 573, 0, 573, 526, 573, 573, 380,
1740 386, 0, 0, 268, 77, 196, 0, 37, 202, 36,
1741 203, 64, 565, 0, 34, 200, 35, 201, 62, 422,
1742 423, 573, 424, 0, 573, 349, 0, 0, 347, 0,
1743 0, 0, 309, 0, 0, 412, 0, 317, 0, 0,
1744 412, 320, 541, 562, 0, 498, 324, 0, 0, 198,
1745 0, 0, 252, 294, 524, 562, 0, 362, 0, 521,
1746 562, 0, 0, 523, 573, 573, 537, 573, 529, 573,
1747 573, 0, 0, 390, 387, 388, 391, 0, 383, 371,
1748 373, 0, 376, 0, 378, 400, 269, 239, 33, 199,
1749 0, 0, 426, 350, 0, 12, 428, 0, 301, 302,
1750 0, 0, 266, 573, 312, 0, 495, 315, 497, 322,
1751 513, 416, 414, 0, 354, 365, 0, 360, 356, 395,
1752 398, 397, 0, 501, 0, 503, 0, 509, 0, 506,
1753 511, 460, 0, 525, 0, 385, 573, 573, 573, 527,
1754 573, 573, 0, 425, 0, 99, 100, 107, 0, 427,
1755 0, 305, 308, 418, 419, 417, 0, 0, 0, 58,
1756 0, 363, 0, 358, 573, 573, 573, 573, 286, 0,
1757 389, 0, 368, 0, 370, 377, 0, 374, 379, 106,
1758 0, 573, 0, 573, 573, 0, 318, 0, 361, 0,
1759 502, 0, 499, 504, 507, 555, 285, 573, 573, 573,
1760 573, 555, 105, 562, 551, 552, 420, 348, 313, 325,
1761 359, 573, 369, 0, 366, 372, 375, 412, 500, 573,
1768 -1, 1, 2, 64, 65, 66, 229, 539, 540, 244,
1769 245, 421, 68, 69, 339, 70, 71, 583, 719, 72,
1770 73, 246, 74, 75, 76, 449, 77, 202, 358, 359,
1771 186, 187, 188, 189, 584, 536, 191, 79, 423, 204,
1772 250, 529, 674, 410, 411, 218, 219, 206, 397, 412,
1773 488, 80, 337, 435, 604, 341, 800, 342, 801, 697,
1774 926, 701, 698, 875, 566, 568, 711, 880, 237, 82,
1775 83, 84, 85, 86, 87, 88, 89, 90, 91, 678,
1776 542, 686, 797, 798, 350, 738, 739, 740, 763, 654,
1777 655, 764, 844, 845, 268, 269, 454, 633, 745, 301,
1778 483, 92, 93, 388, 577, 576, 549, 925, 680, 791,
1779 861, 865, 94, 95, 96, 97, 98, 99, 100, 280,
1780 467, 101, 282, 276, 274, 278, 459, 646, 645, 755,
1781 759, 102, 275, 103, 104, 209, 210, 107, 211, 212,
1782 561, 700, 709, 710, 635, 636, 637, 638, 639, 766,
1783 767, 640, 641, 642, 643, 836, 747, 377, 567, 255,
1784 413, 214, 238, 608, 531, 571, 290, 407, 408, 670,
1790 #define YYPACT_NINF -747
1793 -747, 81, 2552, -747, 7102, -747, -747, -747, 6615, -747,
1794 -747, -747, -747, -747, -747, -747, 7320, 7320, -747, -747,
1795 7320, 3237, 2814, -747, -747, -747, -747, 100, 6476, -31,
1796 -747, -26, -747, -747, -747, 5715, 2955, -747, -747, 5842,
1797 -747, -747, -747, -747, -747, -747, 8519, 8519, 83, 4434,
1798 8628, 7538, 7865, 6878, -747, 6337, -747, -747, -747, -24,
1799 29, 252, 8737, 8519, -747, 193, -747, 1104, -747, 458,
1800 -747, -747, 129, 77, -747, 69, 8846, -747, 139, 2797,
1801 22, 41, -747, 8628, 8628, -747, -747, 5078, 8951, 9056,
1802 9161, 5588, 33, 46, -747, -747, 157, -747, -747, -747,
1803 -747, -747, -747, -747, -747, 25, 58, -747, 179, 613,
1804 51, -747, -747, -747, -747, -747, -747, -747, -747, -747,
1805 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
1806 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
1807 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
1808 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
1809 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
1810 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
1811 -747, -747, -747, -747, -747, -747, -747, -747, -747, 134,
1812 -747, -747, -747, -747, 182, 8519, 279, 4564, 8519, 8519,
1813 8519, -747, 263, 2797, 260, -747, -747, 237, 207, 43,
1814 206, 298, 254, 265, -747, -747, -747, 4969, -747, 7320,
1815 7320, -747, -747, 5208, -747, 8628, 661, -747, 272, 287,
1816 4694, -747, -747, -747, 295, 307, -747, 304, 51, 416,
1817 619, 7211, 4434, 384, 193, 1104, -31, 399, -747, 458,
1818 419, 221, 300, -747, 260, 430, 300, -747, -31, 497,
1819 501, 9266, 442, -747, 351, 366, 383, 409, -747, -747,
1820 -747, -747, -747, -747, 644, -747, 754, 813, 605, 464,
1821 819, 478, 68, 530, 532, -747, -747, -747, -747, -747,
1822 -747, -747, 5317, 8628, 8628, 8628, 8628, 7211, 8628, 8628,
1823 -747, -747, 7974, -747, 4434, 6990, 470, 7974, 8519, 8519,
1824 8519, 8519, 8519, 8519, 8519, 8519, 8519, 8519, 8519, 8519,
1825 8519, 8519, 8519, 8519, 8519, 8519, 8519, 8519, 8519, 8519,
1826 8519, 8519, 8519, 8519, 9548, 7320, 9625, 3609, 458, 86,
1827 86, 8628, 8628, 193, 597, 480, 562, -747, -747, 454,
1828 601, 54, 76, 99, 331, 349, 8628, 481, -747, 45,
1829 473, -747, -747, -747, -747, 217, 286, 305, 318, 321,
1830 347, 363, 376, 381, -747, -747, -747, 391, 10549, 10549,
1831 -747, -747, -747, -747, 8737, 8737, -747, 535, -747, -747,
1832 -747, 388, -747, -747, 8519, 8519, 7429, -747, -747, 9702,
1833 7320, 9779, 8519, 8519, 7647, -747, -31, 492, -747, -747,
1834 -31, -747, 506, 539, -747, 106, -747, -747, -747, -747,
1835 -747, 6615, -747, 8519, 4029, 508, 9702, 9779, 8519, 1104,
1836 -31, -747, -747, 5445, 541, -31, -747, 7756, -747, -747,
1837 7865, -747, -747, -747, 272, 510, -747, -747, -747, 543,
1838 9266, 9856, 7320, 9933, 774, -747, -747, -747, -747, -747,
1839 -747, -747, -747, -747, -747, -747, -747, 313, -747, -747,
1840 491, -747, 8519, 8519, -747, -747, -747, -747, -747, -747,
1841 -747, -747, -747, 32, 8519, -747, 545, 546, -747, -31,
1842 9266, 551, -747, -747, -747, 566, 9473, -747, -747, 416,
1843 2184, 2184, 2184, 2184, 781, 781, 2273, 2938, 2184, 2184,
1844 1364, 1364, 662, 662, 2656, 781, 781, 927, 927, 768,
1845 397, 397, 416, 416, 416, 3378, 6083, 3464, 6197, -747,
1846 307, -747, -31, 647, -747, 660, -747, -747, 3096, 650,
1847 688, -747, 3754, 685, 4174, 56, 56, 597, 8083, 650,
1848 112, 10010, 7320, 10087, -747, 458, -747, 510, -747, 193,
1849 -747, -747, -747, 10164, 7320, 10241, 3609, 8628, 1131, -747,
1850 -747, -747, -747, -747, 1739, 1739, 32, 32, -747, 10608,
1851 -747, 2797, -747, -747, 6615, 10627, -747, 8519, 260, -747,
1852 265, 5969, 2673, -31, 490, 500, -747, -747, -747, -747,
1853 7429, 7647, -747, -747, 8628, 2797, 570, -747, 307, 307,
1854 2797, 213, 1104, -747, 300, 9266, 543, 505, 282, -31,
1855 38, 261, 603, -747, -747, -747, -747, 972, -747, -747,
1856 -747, -747, 1223, 66, -747, -747, -747, -747, 580, -747,
1857 583, 683, 589, 687, -747, -747, 893, -747, -747, -747,
1858 416, 416, -747, 576, 4839, -747, -747, 604, 8192, -747,
1859 543, 9266, 8737, 8519, 630, 8737, 8737, -747, 535, 608,
1860 677, 8737, 8737, -747, -747, 535, -747, -747, -747, 8301,
1861 740, -747, 588, -747, 740, -747, -747, -747, -747, 650,
1862 44, -747, 239, 257, -31, 141, 145, 8628, 193, -747,
1863 8628, 3609, 505, 282, -747, -31, 650, 106, 1223, 3609,
1864 193, 6754, -747, -747, -747, -747, 4839, 4694, 8519, 32,
1865 -747, -747, -747, 8519, 8519, 507, 8519, 8519, 636, 106,
1866 -747, -747, -747, 291, 8519, -747, 972, 457, -747, 651,
1867 -31, -747, 639, 4839, 4694, -747, 1223, -747, -747, 1223,
1868 -747, -747, 598, -747, -747, 4694, -747, -747, -747, -747,
1869 -747, 681, 1017, 639, 679, 654, -747, 656, 657, -747,
1870 -747, 789, 8519, 664, 543, 2797, 8519, -747, 2797, -747,
1871 2797, -747, -747, 8737, -747, 2797, -747, 2797, -747, 545,
1872 -747, 713, -747, 4304, 796, -747, 8628, 650, -747, 650,
1873 4839, 4839, -747, 8410, 3899, 189, 56, -747, 193, 650,
1874 -747, -747, -747, -31, 650, -747, -747, 799, 673, 2797,
1875 4694, 8519, 7647, -747, -747, -31, 884, 671, 1079, -747,
1876 -31, 803, 686, -747, 676, 678, -747, 684, -747, 694,
1877 684, 690, 9371, -747, 699, -747, -747, 711, -747, 1251,
1878 -747, 1251, -747, 598, -747, -747, 700, 2797, -747, 2797,
1879 9476, 86, -747, -747, 4839, -747, -747, 86, -747, -747,
1880 650, 650, -747, 365, -747, 3609, -747, -747, -747, -747,
1881 1131, -747, -747, 706, -747, 707, 884, 716, -747, -747,
1882 -747, -747, 1223, -747, 598, -747, 598, -747, 598, -747,
1883 -747, -747, 790, 520, 1017, -747, 708, 715, 684, -747,
1884 717, 684, 797, -747, 523, 366, 383, 409, 3609, -747,
1885 3754, -747, -747, -747, -747, -747, 4839, 650, 3609, -747,
1886 884, 707, 884, 721, 684, 727, 684, 684, -747, 10318,
1887 -747, 1251, -747, 598, -747, -747, 598, -747, -747, 510,
1888 10395, 7320, 10472, 688, 588, 650, -747, 650, 707, 884,
1889 -747, 598, -747, -747, -747, 730, 731, 684, 735, 684,
1890 684, 55, 282, -31, 128, 158, -747, -747, -747, -747,
1891 707, 684, -747, 598, -747, -747, -747, 163, -747, 684,
1898 -747, -747, -747, 452, -747, 28, -747, -545, 277, -747,
1899 39, -747, -293, 184, -58, 71, -747, -169, -747, -7,
1900 791, -142, -13, -37, -747, -396, -29, 1623, -312, 788,
1901 -54, -747, -25, -747, -747, 20, -747, 1066, -747, -45,
1902 -747, 11, 47, -324, 115, 5, -747, -322, -196, 53,
1903 -295, 8, -747, -747, -747, -747, -747, -747, -747, -747,
1904 -747, -747, -747, -747, -747, -747, -747, -747, 2, -747,
1905 -747, -747, -747, -747, -747, -747, -747, -747, -747, 205,
1906 -338, -516, -72, -618, -747, -722, -671, 147, -747, -489,
1907 -747, -600, -747, -12, -747, -747, -747, -747, -747, -747,
1908 -747, -747, -747, 798, -747, -747, -531, -747, -50, -747,
1909 -747, -747, -747, -747, -747, 811, -747, -747, -747, -747,
1910 -747, -747, -747, -747, 856, -747, -140, -747, -747, -747,
1911 -747, 7, -747, 12, -747, 1268, 1605, 823, 1289, 1575,
1912 -747, -747, 35, -387, -697, -568, -690, 273, -696, -746,
1913 72, 181, -747, -526, -747, -449, 270, -747, -747, -747,
1914 97, -360, 758, -276, -747, -747, -56, -4, 278, -585,
1921 #define YYTABLE_NINF -574
1924 111, 273, 544, 227, 81, 644, 81, 254, 725, 201,
1925 201, 532, 498, 201, 493, 192, 689, 405, 208, 208,
1926 193, 706, 208, 225, 262, 228, 340, 222, 190, 343,
1927 688, 344, 112, 221, 733, 192, 247, 375, 441, 306,
1928 193, 67, 443, 67, 596, 558, 559, 292, 190, 253,
1929 257, 81, 208, 838, 616, 264, 833, 541, 530, 741,
1930 538, 263, 794, -93, 208, 846, 799, 634, -103, 207,
1931 207, 291, 380, 207, 589, 190, 593, 380, 264, -99,
1932 596, 3, 589, 685, 263, 208, 208, 716, 717, 208,
1933 349, 360, 360, 291, 660, 743, 263, 263, 263, 541,
1934 430, -100, 574, 575, 251, 909, 888, -330, 652, 805,
1935 230, 190, -489, 213, 213, 387, 224, 213, 378, 644,
1936 810, 386, 279, 530, -107, 538, 334, 768, 619, 470,
1937 -489, 205, 215, 285, -99, 216, 461, -106, 464, 240,
1938 468, -102, 830, 298, 299, -490, 653, -93, 252, 256,
1939 390, 609, -99, 392, 393, 885, 809, 300, 560, 833,
1940 -330, -330, 489, 847, 814, -90, -102, -100, 741, 827,
1941 -104, -104, 379, 744, 471, 281, -101, 609, -93, 335,
1942 336, -93, 381, 644, 803, -93, 302, 381, 432, 288,
1943 288, 289, 289, 220, -90, 909, 838, -551, -91, 81,
1944 -103, 288, -103, 289, 769, 398, 833, 846, 888, 303,
1945 201, 398, 201, 201, -101, 931, -91, 405, 414, 208,
1946 835, 208, 208, 839, 448, 208, 433, 208, 694, 247,
1947 820, 288, 81, 289, 249, 476, 477, 478, 479, -98,
1948 705, 596, 223, 81, 81, 742, 221, 224, 307, 386,
1949 291, 704, -97, 224, 444, 923, 56, 486, 741, 644,
1950 741, 958, 497, 264, -103, 774, 384, 338, 338, 263,
1951 207, 338, 207, -102, 389, -102, 491, 609, 589, 589,
1952 429, -93, -105, 545, 546, -95, -95, 547, 980, 609,
1953 874, 247, 399, -490, 81, 208, 208, 208, 208, 81,
1954 208, 208, -481, -104, 208, -104, 81, 264, -101, 208,
1955 -101, 283, 284, 263, 213, -100, 213, -412, 741, 933,
1956 475, 813, -71, 907, 223, 910, 243, 648, 201, -92,
1957 927, 67, 406, 414, 409, 391, 480, 208, 288, 81,
1958 289, 403, 924, 208, 208, 400, 401, 537, 395, 291,
1959 586, 588, 804, -85, 528, 487, -481, -548, 208, 254,
1960 487, 437, 741, -107, 741, 562, 935, -285, 438, 493,
1961 -95, -480, 394, 485, 455, -549, -412, 396, 494, -94,
1962 793, -551, 548, 957, 790, 402, 208, 208, 987, 426,
1963 -482, 741, 588, 201, 722, 254, 603, -96, 414, -552,
1964 731, -95, 208, -483, -95, 404, -485, 415, -95, 417,
1965 398, 398, 537, 448, 422, 968, -475, 456, 457, 528,
1966 -285, -285, 111, 424, -552, -480, 81, -412, 192, -412,
1967 -412, 644, -484, 193, -478, 81, 451, 217, 537, 657,
1968 440, 190, 400, 427, -482, 201, 528, 438, -486, 220,
1969 414, -487, 264, 448, 208, 578, 580, -483, 263, 647,
1970 -485, -475, 596, 67, 537, 308, -478, -548, -488, -475,
1971 -475, 528, 612, -548, 243, 428, 569, 338, 338, 338,
1972 338, 656, 481, 482, 308, -549, -484, -478, -478, 452,
1973 453, -549, 264, 590, -278, 298, 299, -106, 263, 781,
1974 589, 416, -486, 497, -487, -487, 788, 425, -70, 735,
1975 664, 623, 624, 625, 626, -475, 331, 332, 333, 243,
1976 -478, -488, -488, 918, 434, 338, 338, 431, 669, 920,
1977 570, -555, 722, 556, 614, 668, 676, 557, 681, 551,
1978 555, 667, 721, 675, 81, 201, 81, -278, -278, 673,
1979 414, 687, 687, 445, 208, 588, 254, 201, 563, 720,
1980 446, 447, 414, 436, 537, 699, 208, 442, 81, 208,
1981 465, 528, 676, 676, 656, 656, 537, 726, 732, 713,
1982 715, 243, 450, 528, 469, 673, 673, 727, 398, 669,
1983 -555, 192, 552, 553, 821, -286, 193, 826, 472, -102,
1984 473, 690, 796, 793, 190, 939, 208, 676, 950, -104,
1985 492, 564, 565, 773, 548, 669, -101, 264, 550, 667,
1986 673, 712, 714, 263, 448, 474, 554, 973, 761, 582,
1987 623, 624, 625, 626, 789, 598, 748, 649, 748, 806,
1988 748, -555, 808, -555, -555, 607, 600, -551, -286, -286,
1989 735, 770, 623, 624, 625, 626, 81, 816, 564, 565,
1990 677, 951, 952, 264, 208, 627, 455, 208, 208, 263,
1991 463, 628, 629, 208, 208, 662, 609, 792, 795, 601,
1992 795, -85, 795, 615, 597, -264, 658, 627, 599, 824,
1993 669, 661, 630, 602, 629, 631, 679, 728, 683, 208,
1994 385, 669, 208, 81, 807, 455, 428, 730, 611, 456,
1995 457, 81, 734, 613, 630, 418, 815, 656, 81, 81,
1996 746, 762, -107, 749, 419, 420, 398, 856, -106, 752,
1997 308, 190, 487, 494, 671, 751, 777, 779, 867, 754,
1998 770, 776, 784, 786, -265, 81, 81, 672, 456, 457,
1999 458, 707, 782, -98, 691, 793, -102, 81, 872, -97,
2000 110, 770, 110, 748, 783, 748, 748, 659, 735, -104,
2001 623, 624, 625, 626, 110, 110, 822, 254, 110, 329,
2002 330, 331, 332, 333, 762, 208, -101, -93, 729, 862,
2003 842, 828, 866, 848, 849, 81, 851, 853, 208, 855,
2004 -95, 860, 81, 81, -266, 864, 81, 110, 110, 881,
2005 882, 886, 687, 890, 876, 455, 892, -92, 894, 682,
2006 110, 684, 81, 891, 896, 905, 622, 901, 623, 624,
2007 625, 626, 748, 748, 898, 748, 308, 748, 748, 904,
2008 -267, 110, 110, 929, 903, 110, 938, 930, 941, 308,
2009 263, 321, 322, 949, 858, 943, 932, 946, 456, 457,
2010 460, 959, 914, 627, 321, 322, 81, 961, 263, 628,
2011 629, 795, -551, -552, 455, 983, 606, 81, 364, 347,
2012 455, 338, 977, 825, 338, 329, 330, 331, 332, 333,
2013 630, 382, 940, 631, 802, 326, 327, 328, 329, 330,
2014 331, 332, 333, 976, 748, 748, 748, 383, 748, 748,
2015 750, 811, 753, 277, 376, 928, 632, 456, 457, 462,
2016 81, 906, 81, 456, 457, 466, 765, 834, 81, 0,
2017 81, 771, 748, 748, 748, 748, 735, 0, 623, 624,
2018 625, 626, 0, 0, 201, 0, 0, 756, 757, 414,
2019 758, 681, 795, 208, 0, 110, 44, 45, 0, 528,
2020 0, 0, 0, 537, 0, 748, 748, 748, 748, 669,
2021 528, 0, 0, 736, 0, 110, 0, 110, 110, 748,
2022 338, 110, 0, 110, 0, 812, 0, 748, 110, 0,
2023 0, 0, 0, 817, 818, 308, 0, 0, 0, 110,
2024 110, 0, 868, 0, 869, 0, 0, 823, 0, 0,
2025 321, 322, 0, 0, 877, 0, 0, 0, 829, 879,
2026 831, 832, 837, 0, 735, 840, 623, 624, 625, 626,
2027 0, 0, 841, 0, 0, 850, 0, 852, 854, 0,
2028 0, 0, 0, 328, 329, 330, 331, 332, 333, 0,
2029 110, 110, 110, 110, 110, 110, 110, 110, 0, 0,
2030 110, 736, 110, 0, 0, 110, 0, 737, 0, 843,
2031 863, 623, 624, 625, 626, 921, 922, 870, 871, 0,
2032 0, 873, 203, 203, 0, 0, 203, 0, 0, 0,
2033 0, 878, 0, 110, 0, 110, 0, 883, 0, 110,
2034 110, 0, 0, 884, 893, 895, 0, 897, 889, 899,
2035 900, 0, 236, 239, 110, 0, 0, 203, 203, 0,
2036 0, 0, 0, 0, 908, 0, 911, 0, 286, 287,
2037 0, 735, 956, 623, 624, 625, 626, 0, 0, 0,
2038 0, 919, 110, 110, 293, 294, 295, 296, 297, 0,
2039 0, 0, 0, 0, 0, 0, 0, 0, 110, 0,
2040 978, 0, 979, 0, 0, 934, 0, 936, 736, 0,
2041 0, 937, 0, 0, 887, 0, 942, 944, 945, 0,
2042 947, 948, 110, 622, 0, 623, 624, 625, 626, 0,
2043 0, 110, 0, 0, 0, 953, 0, 954, 0, 0,
2044 0, 0, 0, 955, 960, 962, 963, 964, 0, 0,
2045 110, 0, 0, 0, 967, 0, 969, 0, 0, 970,
2046 627, 0, 0, 0, 0, 0, 628, 629, 0, 0,
2047 0, 0, 0, 0, 981, 0, 0, 982, 984, 985,
2048 986, 0, 0, 0, 0, 0, 0, 630, 0, 0,
2049 631, 988, 0, 0, 0, 0, 989, 0, 0, 990,
2050 0, 203, 0, 0, 203, 203, 286, 0, 0, 0,
2051 105, 0, 105, 708, 0, 622, 0, 623, 624, 625,
2052 626, 0, 0, 203, 0, 203, 203, 0, 0, 0,
2053 0, 108, 0, 108, 0, 0, 0, 0, 0, 0,
2054 110, 0, 110, 761, 0, 623, 624, 625, 626, 0,
2055 110, 0, 627, 0, 0, 0, 0, 105, 628, 629,
2056 0, 265, 110, 0, 110, 110, 0, 0, 0, 0,
2057 0, 0, 0, 0, 0, 0, 0, 0, 108, 630,
2058 627, 0, 631, 0, 265, 0, 628, 629, 0, 0,
2059 0, 0, 0, 0, 0, 0, 351, 361, 361, 361,
2060 0, 0, 110, 0, 0, 0, 0, 630, 203, 0,
2061 631, 0, 0, 496, 499, 500, 501, 502, 503, 504,
2062 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
2063 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
2064 0, 203, 0, 0, 0, 0, 0, 0, 0, 0,
2065 0, 0, 110, 0, 0, 0, 0, 0, 0, 0,
2066 110, 0, 0, 110, 110, 0, 0, 0, 0, 110,
2067 110, 0, 308, 309, 310, 311, 312, 313, 314, 315,
2068 316, 317, 318, -574, -574, 0, 0, 321, 322, 0,
2069 579, 581, 0, 0, 0, 110, 0, 0, 110, 110,
2070 585, 203, 203, 0, 0, 105, 203, 110, 579, 581,
2071 203, 0, 0, 0, 110, 110, 324, 325, 326, 327,
2072 328, 329, 330, 331, 332, 333, 108, 0, 0, 605,
2073 0, 0, 0, 0, 610, 0, 0, 0, 105, 0,
2074 0, 110, 110, 203, 0, 0, 203, 0, 0, 105,
2075 105, 0, 0, 110, 0, 0, 0, 0, 203, 108,
2076 0, 0, 0, 0, 0, 0, 0, 0, 0, 265,
2077 108, 108, 0, 0, 0, 0, 0, 0, 650, 651,
2078 0, 110, 0, 0, 0, 0, 0, 0, 0, 0,
2079 203, 110, 0, 0, 110, 0, 0, 0, 110, 110,
2080 105, 0, 110, 0, 0, 105, 0, 0, 0, 0,
2081 0, 0, 105, 265, 0, 0, 0, 109, 110, 109,
2082 0, 108, 0, 0, 0, 0, 108, 0, 0, 0,
2083 0, 0, 0, 108, 0, 0, 0, 0, 0, 0,
2084 0, 0, 0, 0, 0, 105, 0, 106, 0, 106,
2085 0, 0, 0, 0, 203, 0, 0, 0, 203, 0,
2086 0, 0, 110, 0, 109, 78, 108, 78, 267, 0,
2087 203, 0, 0, 110, 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 267, 0, 203, 106, 0, 0, 0, 266, 0,
2090 0, 0, 0, 353, 363, 363, 203, 203, 0, 0,
2091 0, 0, 78, 0, 0, 0, 110, 0, 110, 0,
2092 0, 266, 0, 0, 110, 0, 110, 0, 0, 0,
2093 0, 0, 105, 352, 362, 362, 362, 0, 0, 0,
2094 0, 105, 0, 0, 0, 0, 0, 0, 0, 110,
2095 0, 348, 0, 108, 0, 0, 0, 0, 265, 0,
2096 0, 0, 108, 0, 203, 0, 0, 0, 585, 775,
2097 0, 778, 780, 0, 0, 0, 0, 785, 787, -573,
2098 0, 0, 0, 0, 0, 203, 0, -573, -573, -573,
2099 0, 0, -573, -573, -573, 0, -573, 0, 265, 0,
2100 0, 0, 0, 0, 0, 0, -573, 0, 0, 0,
2101 0, 0, 109, 0, 0, 0, -573, -573, 0, -573,
2102 -573, -573, -573, -573, 819, 0, 0, 0, 0, 778,
2103 780, 0, 785, 787, 0, 0, 0, 0, 0, 0,
2104 203, 0, 106, 0, 0, 109, 0, 0, 0, 0,
2105 105, 0, 105, 0, 0, 0, 109, 109, 0, 0,
2106 78, 0, 0, 0, -573, 0, 0, 0, 0, 0,
2107 0, 108, 0, 108, 105, 106, 267, 0, 203, 0,
2108 0, 0, 857, 0, 0, 0, 106, 106, 0, 859,
2109 0, 0, 0, 78, 0, 108, 0, 0, 0, 0,
2110 0, 0, 0, 0, 78, 78, 266, 109, 0, 203,
2111 0, 0, 109, 0, 0, 0, -573, 0, -573, 109,
2112 267, 220, -573, 265, -573, 0, -573, 859, 203, 0,
2113 0, 0, 0, 0, 0, 0, 0, 106, 0, 0,
2114 0, 0, 106, 0, 0, 0, 0, 0, 0, 106,
2115 266, 0, 109, 0, 0, 78, 0, 0, 0, 0,
2116 78, 0, 105, 0, 0, 0, 0, 78, 0, 265,
2117 495, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2118 0, 0, 106, 108, 0, 0, 0, 0, 0, 0,
2119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2120 78, 0, 0, 0, 0, 0, 0, 0, 0, 105,
2121 0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
2122 0, 0, 0, 0, 105, 105, 0, 0, 0, 0,
2123 108, 0, 0, 0, 0, 0, 0, 0, 108, 109,
2124 0, 0, 0, 0, 0, 108, 108, 0, 109, 0,
2125 0, 105, 105, 0, 0, 0, 0, 203, 0, 0,
2126 0, 0, 0, 105, 0, 267, 0, 0, 0, 106,
2127 0, 0, 108, 108, 0, 0, 0, 0, 106, 0,
2128 0, 0, 0, 0, 108, 0, 0, 78, 0, 0,
2129 0, 0, 0, 0, 0, 266, 78, 0, 0, 0,
2130 0, 105, 0, 0, 0, 267, 0, 0, 105, 105,
2131 0, 0, 105, 0, 0, 0, 0, 0, 0, 0,
2132 0, 0, 108, 0, 0, 0, 0, 0, 105, 108,
2133 108, 0, 0, 108, 0, 266, 0, 0, 0, 0,
2134 0, 0, 0, 0, 0, 0, 0, 0, 0, 108,
2135 361, 0, 0, 0, 0, 0, 0, 109, 0, 109,
2136 0, 0, 0, 0, 0, 0, 0, 0, 915, 0,
2137 0, 0, 105, 0, 0, 0, 0, 0, 0, 0,
2138 0, 109, 0, 105, 0, 0, 0, 106, 0, 106,
2139 0, 0, 0, 108, 0, 0, 0, 0, 0, 0,
2140 0, 0, 0, 0, 108, 78, 0, 78, 0, 0,
2141 0, 106, 0, 0, 0, 0, 0, 0, 0, 0,
2142 0, 0, 0, 0, 0, 0, 105, 0, 105, 78,
2143 267, 0, 0, 0, 105, 0, 105, 0, 0, 0,
2144 0, 0, 0, 0, 0, 0, 0, 108, 0, 108,
2145 0, 0, 0, 0, 0, 108, 0, 108, 0, 0,
2146 266, 760, 0, 0, 0, 0, 0, 0, 0, 109,
2147 0, 0, 0, 0, 0, 0, 267, 0, 0, 0,
2148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2149 0, 0, 308, -574, -574, -574, -574, 313, 314, 106,
2150 0, -574, -574, 0, 0, 0, 266, 321, 322, 0,
2151 0, 0, 0, 0, 0, 0, 109, 78, 0, 0,
2152 0, 0, 0, 0, 109, 495, 0, 0, 0, 0,
2153 0, 109, 109, 0, 0, 0, 324, 325, 326, 327,
2154 328, 329, 330, 331, 332, 333, 106, 0, 0, 0,
2155 0, 0, 0, 0, 106, 0, 0, 0, 109, 109,
2156 0, 106, 106, 0, 78, 0, 0, 0, 0, 0,
2157 109, 0, 78, 0, 0, 0, 0, 0, 0, 78,
2158 78, 308, 309, 310, 311, 312, 313, 314, 106, 106,
2159 317, 318, 0, 0, 0, 0, 321, 322, 0, 0,
2160 106, 0, 0, 0, 0, 0, 78, 78, 109, 0,
2161 0, 0, 0, 0, 0, 109, 109, 0, 78, 109,
2162 0, 0, 0, 0, 0, 324, 325, 326, 327, 328,
2163 329, 330, 331, 332, 333, 109, 0, 0, 106, 0,
2164 0, 0, 0, 0, 0, 106, 106, 0, 0, 106,
2165 0, 0, 0, 0, 0, 0, 78, 363, 0, 0,
2166 0, 0, 0, 78, 78, 106, 0, 78, 0, 0,
2167 0, 0, 0, 0, 0, 917, 0, 0, 0, 109,
2168 0, 0, 0, 78, 0, 0, 0, 362, 0, 0,
2169 109, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170 0, 0, 0, 0, 0, 916, 0, 0, 0, 106,
2171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2172 106, 0, 0, 913, 0, 0, 0, 78, 0, 0,
2173 0, 0, 0, 109, 0, 109, 0, 0, 78, 0,
2174 0, 109, 0, 109, 0, 0, 0, 0, 0, 0,
2175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2176 0, 0, 0, 106, 0, 106, 0, 0, 0, 0,
2177 0, 106, 0, 106, 0, 0, 0, 0, 0, 0,
2178 0, 78, 0, 78, 0, 0, 0, 0, 0, 78,
2179 0, 78, -573, 4, 0, 5, 6, 7, 8, 9,
2180 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
2181 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2182 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2183 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
2184 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2185 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
2186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2187 0, 0, 0, 0, 0, 0, 0, 0, 48, 0,
2188 0, 49, 50, 0, 51, 52, 0, 53, 0, 54,
2189 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
2190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191 0, 0, 0, -285, 61, 62, 63, 0, 0, 0,
2192 0, -285, -285, -285, 0, 0, -285, -285, -285, 0,
2193 -285, 0, 0, 0, 0, 0, 0, -573, 0, -573,
2194 -285, -285, -285, 0, 0, 0, 0, 0, 0, 0,
2195 -285, -285, 0, -285, -285, -285, -285, -285, 0, 0,
2196 0, 0, 0, 0, 308, 309, 310, 311, 312, 313,
2197 314, 315, 316, 317, 318, 319, 320, 0, 0, 321,
2198 322, -285, -285, -285, -285, -285, -285, -285, -285, -285,
2199 -285, -285, -285, -285, 0, 0, -285, -285, -285, 0,
2200 724, -285, 0, 0, 0, 0, 323, -285, 324, 325,
2201 326, 327, 328, 329, 330, 331, 332, 333, 0, 0,
2202 -285, 0, -105, -285, -285, -285, -285, -285, -285, -285,
2203 -285, -285, -285, -285, -285, 0, 0, 0, 0, 0,
2204 0, 0, 0, 224, 0, 0, 0, 0, 0, 0,
2205 -285, -285, -285, -285, -411, 0, -285, -285, -285, 0,
2206 -285, 0, -411, -411, -411, 0, 0, -411, -411, -411,
2207 0, -411, 0, 0, 0, 0, 0, 0, 0, 0,
2208 -411, -411, -411, 0, 0, 0, 0, 0, 0, 0,
2209 0, -411, -411, 0, -411, -411, -411, -411, -411, 0,
2210 0, 0, 0, 0, 0, 308, 309, 310, 311, 312,
2211 313, 314, 315, 316, 317, 318, 319, 320, 0, 0,
2212 321, 322, -411, -411, -411, -411, -411, -411, -411, -411,
2213 -411, -411, -411, -411, -411, 0, 0, -411, -411, -411,
2214 0, 0, -411, 0, 0, 0, 0, 323, -411, 324,
2215 325, 326, 327, 328, 329, 330, 331, 332, 333, 0,
2216 0, 0, 0, 0, -411, 0, -411, -411, -411, -411,
2217 -411, -411, -411, -411, -411, -411, 0, 0, 0, 0,
2218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2219 -411, -411, -411, -411, -411, -279, 220, -411, -411, -411,
2220 0, -411, 0, -279, -279, -279, 0, 0, -279, -279,
2221 -279, 0, -279, 0, 0, 0, 0, 0, 0, 0,
2222 0, 0, -279, -279, -279, 0, 0, 0, 0, 0,
2223 0, 0, -279, -279, 0, -279, -279, -279, -279, -279,
2224 0, 0, 0, 0, 0, 0, 308, 309, 310, 311,
2225 312, 313, 314, 315, 0, 317, 318, 0, 0, 0,
2226 0, 321, 322, -279, -279, -279, -279, -279, -279, -279,
2227 -279, -279, -279, -279, -279, -279, 0, 0, -279, -279,
2228 -279, 0, 0, -279, 0, 0, 0, 0, 0, -279,
2229 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
2230 0, 0, -279, 0, 0, -279, -279, -279, -279, -279,
2231 -279, -279, -279, -279, -279, -279, -279, 0, 0, 0,
2232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2233 0, 0, -279, -279, -279, -279, -573, 0, -279, -279,
2234 -279, 0, -279, 0, -573, -573, -573, 0, 0, -573,
2235 -573, -573, 0, -573, 0, 0, 0, 0, 0, 0,
2236 0, 0, -573, -573, -573, 0, 0, 0, 0, 0,
2237 0, 0, 0, -573, -573, 0, -573, -573, -573, -573,
2238 -573, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2240 0, 0, 0, 0, -573, -573, -573, -573, -573, -573,
2241 -573, -573, -573, -573, -573, -573, -573, 0, 0, -573,
2242 -573, -573, 0, 0, -573, 0, 0, 0, 0, 0,
2243 -573, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2244 0, 0, 0, 0, 0, 0, -573, 0, -573, -573,
2245 -573, -573, -573, -573, -573, -573, -573, -573, 0, 0,
2246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2247 0, 0, -573, -573, -573, -573, -573, -292, 220, -573,
2248 -573, -573, 0, -573, 0, -292, -292, -292, 0, 0,
2249 -292, -292, -292, 0, -292, 0, 0, 0, 0, 0,
2250 0, 0, 0, 0, -292, -292, 0, 0, 0, 0,
2251 0, 0, 0, 0, -292, -292, 0, -292, -292, -292,
2252 -292, -292, 0, 0, 0, 0, 0, 0, 0, 0,
2253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2254 0, 0, 0, 0, 0, -292, -292, -292, -292, -292,
2255 -292, -292, -292, -292, -292, -292, -292, -292, 0, 0,
2256 -292, -292, -292, 0, 0, -292, 0, 0, 0, 0,
2257 0, -292, 0, 0, 0, 0, 0, 0, 0, 0,
2258 0, 0, 0, 0, 0, 0, 0, -292, 0, -292,
2259 -292, -292, -292, -292, -292, -292, -292, -292, -292, 0,
2260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2261 0, 0, 0, 0, -292, -292, -292, -292, -555, 217,
2262 -292, -292, -292, 0, -292, 0, -555, -555, -555, 0,
2263 0, 0, -555, -555, 0, -555, 0, 0, 0, 0,
2264 0, 0, 0, 0, -555, 0, 0, 0, 0, 0,
2265 0, 0, 0, 0, 0, -555, -555, 0, -555, -555,
2266 -555, -555, -555, 0, 0, 0, 0, 0, 0, 0,
2267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2268 0, 0, 0, 0, 0, 0, -555, -555, -555, -555,
2269 -555, -555, -555, -555, -555, -555, -555, -555, -555, 0,
2270 0, -555, -555, -555, -285, 665, 0, 0, 0, 0,
2271 0, 0, -285, -285, -285, 0, 0, 0, -285, -285,
2272 0, -285, 0, 0, 0, 0, 0, -103, -555, 0,
2273 -555, -555, -555, -555, -555, -555, -555, -555, -555, -555,
2274 0, -285, -285, 0, -285, -285, -285, -285, -285, 0,
2275 0, 0, 0, 0, -555, -555, -555, -555, -94, 0,
2276 0, -555, 0, -555, 0, -555, 0, 0, 0, 0,
2277 0, 0, -285, -285, -285, -285, -285, -285, -285, -285,
2278 -285, -285, -285, -285, -285, 0, 0, -285, -285, -285,
2279 0, 666, 0, 0, 0, 0, 0, 0, 0, 0,
2280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2281 0, 0, 0, -105, -285, 0, -285, -285, -285, -285,
2282 -285, -285, -285, -285, -285, -285, 0, 0, 0, 0,
2283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2284 0, -285, -285, -285, -96, 0, 0, -285, 0, -285,
2285 241, -285, 5, 6, 7, 8, 9, -573, -573, -573,
2286 10, 11, 0, 0, -573, 12, 0, 13, 14, 15,
2287 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2288 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2289 0, 0, 0, 0, 28, 29, 0, 31, 32, 33,
2290 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2291 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
2292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2293 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
2294 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
2295 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
2296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2297 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
2298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2299 0, 0, 0, 0, -573, 241, -573, 5, 6, 7,
2300 8, 9, 0, 0, -573, 10, 11, 0, -573, -573,
2301 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2302 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2303 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2304 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
2305 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
2306 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2308 48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
2309 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
2310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2311 0, 0, 0, 0, 0, 0, 61, 62, 63, 0,
2312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2313 0, 0, 0, 0, 0, 0, 0, 0, 0, -573,
2314 241, -573, 5, 6, 7, 8, 9, 0, 0, -573,
2315 10, 11, 0, 0, -573, 12, -573, 13, 14, 15,
2316 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2317 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2318 0, 0, 0, 0, 28, 29, 0, 31, 32, 33,
2319 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2320 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
2321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2322 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
2323 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
2324 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
2325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2326 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
2327 4, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2328 10, 11, 0, 0, -573, 12, -573, 13, 14, 15,
2329 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2330 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2331 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
2332 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2333 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
2334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2335 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
2336 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
2337 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
2338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2339 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
2340 0, 0, 0, 0, 0, 0, -573, 0, 0, 0,
2341 0, 0, 0, 0, -573, 241, -573, 5, 6, 7,
2342 8, 9, 0, 0, -573, 10, 11, 0, 0, -573,
2343 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2344 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2345 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2346 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
2347 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
2348 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2350 48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
2351 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
2352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2353 0, 0, 0, 0, 0, 0, 61, 62, 63, 0,
2354 0, 0, 0, 0, 0, 241, 0, 5, 6, 7,
2355 8, 9, 0, -573, -573, 10, 11, 0, 0, -573,
2356 12, -573, 13, 14, 15, 16, 17, 18, 19, 0,
2357 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2358 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2359 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
2360 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
2361 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2363 48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
2364 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
2365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2366 0, 0, 0, 0, 0, 0, 61, 62, 63, 0,
2367 0, 0, 0, 0, 0, 241, 0, 5, 6, 7,
2368 8, 9, 0, 0, 0, 10, 11, 0, 0, -573,
2369 12, -573, 13, 14, 15, 16, 17, 18, 19, 0,
2370 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2371 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2372 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
2373 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
2374 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2376 48, 0, 0, 242, 50, 0, 51, 52, 0, 53,
2377 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
2378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2379 0, 0, 0, 0, 0, 0, 61, 62, 63, 0,
2380 0, 0, 0, 0, 0, 241, 0, 5, 6, 7,
2381 8, 9, 0, 0, 0, 10, 11, -573, 0, -573,
2382 12, -573, 13, 14, 15, 16, 17, 18, 19, 0,
2383 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2384 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2385 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
2386 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
2387 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2389 48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
2390 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
2391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2392 0, 0, 0, 0, 0, 0, 61, 62, 63, 0,
2393 0, 0, 0, 0, 0, 241, 0, 5, 6, 7,
2394 8, 9, 0, 0, 0, 10, 11, -573, 0, -573,
2395 12, -573, 13, 14, 15, 16, 17, 18, 19, 0,
2396 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2397 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2398 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
2399 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
2400 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2402 48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
2403 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
2404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2405 0, 0, 0, 0, 0, 0, 61, 62, 63, 0,
2406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2407 0, -573, 0, 0, 0, 0, 0, 0, 0, -573,
2408 241, -573, 5, 6, 7, 8, 9, 0, 0, -573,
2409 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
2410 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2411 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2412 0, 0, 0, 0, 28, 29, 0, 31, 32, 33,
2413 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2414 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
2415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2416 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
2417 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
2418 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
2419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2420 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
2421 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2422 10, 11, 0, 0, -573, 12, -573, 13, 14, 15,
2423 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2424 21, 22, 23, 24, 25, 26, 0, 0, 194, 0,
2425 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2426 34, 35, 36, 37, 38, 39, 40, 195, 41, 42,
2427 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
2428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2429 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
2430 0, 51, 52, 0, 198, 199, 54, 55, 56, 57,
2431 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
2432 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
2433 11, 61, 200, 63, 12, 0, 13, 14, 15, 16,
2434 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
2435 22, 23, 24, 25, 26, 0, 224, 27, 0, 0,
2436 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
2437 35, 36, 37, 38, 39, 40, 0, 41, 42, 0,
2438 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
2439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2440 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
2441 51, 52, 0, 0, 0, 54, 55, 56, 57, 58,
2442 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
2443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2444 61, 62, 63, 0, 0, 0, 0, 0, 0, 0,
2445 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
2446 11, 0, 0, 288, 12, 289, 13, 14, 15, 16,
2447 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
2448 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
2449 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
2450 35, 36, 37, 38, 39, 40, 0, 41, 42, 0,
2451 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
2452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2453 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
2454 51, 52, 0, 0, 0, 54, 55, 56, 57, 58,
2455 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
2456 5, 6, 7, 8, 9, 0, 0, 0, 10, 11,
2457 61, 62, 63, 12, 0, 13, 14, 15, 16, 17,
2458 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
2459 23, 24, 25, 26, 0, 224, 27, 0, 0, 0,
2460 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
2461 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
2462 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
2463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2464 0, 0, 0, 48, 0, 0, 49, 50, 0, 51,
2465 52, 0, 53, 0, 54, 55, 56, 57, 58, 59,
2466 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2467 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
2468 62, 63, 0, 0, 0, 0, 0, 0, 5, 6,
2469 7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
2470 0, 12, 474, 13, 14, 15, 16, 17, 18, 19,
2471 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2472 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2473 28, 29, 0, 31, 32, 33, 34, 35, 36, 37,
2474 38, 39, 40, 0, 41, 42, 0, 43, 44, 45,
2475 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2477 0, 48, 0, 0, 49, 50, 0, 51, 52, 0,
2478 53, 0, 54, 55, 56, 57, 58, 59, 60, 0,
2479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2480 0, 0, 0, 0, 0, 0, 0, 61, 62, 63,
2481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2483 474, 113, 114, 115, 116, 117, 118, 119, 120, 121,
2484 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
2485 132, 133, 134, 135, 136, 0, 0, 0, 137, 138,
2486 139, 365, 366, 367, 368, 144, 145, 146, 0, 0,
2487 0, 0, 0, 147, 148, 149, 150, 369, 370, 371,
2488 372, 155, 37, 38, 373, 40, 0, 0, 0, 0,
2489 0, 0, 0, 0, 157, 158, 159, 160, 161, 162,
2490 163, 164, 165, 0, 0, 166, 167, 0, 0, 168,
2491 169, 170, 171, 0, 0, 0, 0, 0, 0, 0,
2492 0, 0, 0, 172, 0, 0, 0, 0, 0, 0,
2493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2494 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
2495 0, 183, 184, 0, 0, 0, 0, 0, -548, -548,
2496 -548, 0, -548, 0, 0, 0, -548, -548, 0, 185,
2497 374, -548, 0, -548, -548, -548, -548, -548, -548, -548,
2498 0, -548, 0, 0, 0, -548, -548, -548, -548, -548,
2499 -548, -548, 0, 0, -548, 0, 0, 0, 0, 0,
2500 0, -548, 0, 0, -548, -548, -548, -548, -548, -548,
2501 -548, -548, -548, -548, -548, -548, 0, -548, -548, -548,
2502 0, -548, -548, 0, 0, 0, 0, 0, 0, 0,
2503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2504 0, -548, 0, 0, -548, -548, 0, -548, -548, 0,
2505 -548, -548, -548, -548, -548, -548, -548, -548, -548, 0,
2506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2507 0, 0, 0, 0, 0, 0, 0, -548, -548, -548,
2508 0, 0, 0, 0, 0, -549, -549, -549, 0, -549,
2509 0, -548, 0, -549, -549, 0, 0, -548, -549, 0,
2510 -549, -549, -549, -549, -549, -549, -549, 0, -549, 0,
2511 0, 0, -549, -549, -549, -549, -549, -549, -549, 0,
2512 0, -549, 0, 0, 0, 0, 0, 0, -549, 0,
2513 0, -549, -549, -549, -549, -549, -549, -549, -549, -549,
2514 -549, -549, -549, 0, -549, -549, -549, 0, -549, -549,
2515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2516 0, 0, 0, 0, 0, 0, 0, 0, -549, 0,
2517 0, -549, -549, 0, -549, -549, 0, -549, -549, -549,
2518 -549, -549, -549, -549, -549, -549, 0, 0, 0, 0,
2519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2520 0, 0, 0, 0, -549, -549, -549, 0, 0, 0,
2521 0, 0, -551, -551, -551, 0, -551, 0, -549, 0,
2522 -551, -551, 0, 0, -549, -551, 0, -551, -551, -551,
2523 -551, -551, -551, -551, 0, 0, 0, 0, 0, -551,
2524 -551, -551, -551, -551, -551, -551, 0, 0, -551, 0,
2525 0, 0, 0, 0, 0, -551, 0, 0, -551, -551,
2526 -551, -551, -551, -551, -551, -551, -551, -551, -551, -551,
2527 0, -551, -551, -551, 0, -551, -551, 0, 0, 0,
2528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2529 0, 0, 0, 0, 0, -551, 723, 0, -551, -551,
2530 0, -551, -551, 0, -551, -551, -551, -551, -551, -551,
2531 -551, -551, -551, 0, 0, 0, 0, 0, -103, 0,
2532 0, 0, 0, 0, 0, 0, -553, -553, -553, 0,
2533 -553, -551, -551, -551, -553, -553, 0, 0, 0, -553,
2534 0, -553, -553, -553, -553, -553, -553, -553, 0, 0,
2535 0, -551, 0, -553, -553, -553, -553, -553, -553, -553,
2536 0, 0, -553, 0, 0, 0, 0, 0, 0, -553,
2537 0, 0, -553, -553, -553, -553, -553, -553, -553, -553,
2538 -553, -553, -553, -553, 0, -553, -553, -553, 0, -553,
2539 -553, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2540 0, 0, 0, 0, 0, 0, 0, 0, 0, -553,
2541 0, 0, -553, -553, 0, -553, -553, 0, -553, -553,
2542 -553, -553, -553, -553, -553, -553, -553, 0, 0, 0,
2543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2544 -554, -554, -554, 0, -554, -553, -553, -553, -554, -554,
2545 0, 0, 0, -554, 0, -554, -554, -554, -554, -554,
2546 -554, -554, 0, 0, 0, -553, 0, -554, -554, -554,
2547 -554, -554, -554, -554, 0, 0, -554, 0, 0, 0,
2548 0, 0, 0, -554, 0, 0, -554, -554, -554, -554,
2549 -554, -554, -554, -554, -554, -554, -554, -554, 0, -554,
2550 -554, -554, 0, -554, -554, 0, 0, 0, 0, 0,
2551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2552 0, 0, 0, -554, 0, 0, -554, -554, 0, -554,
2553 -554, 0, -554, -554, -554, -554, -554, -554, -554, -554,
2554 -554, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2555 0, 0, 0, 0, 0, 0, 0, 0, 0, -554,
2556 -554, -554, 0, 0, 0, 0, 0, 0, 0, 0,
2557 0, 0, 0, 0, 0, 0, 0, 0, 0, -554,
2558 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
2559 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
2560 133, 134, 135, 136, 0, 0, 0, 137, 138, 139,
2561 140, 141, 142, 143, 144, 145, 146, 0, 0, 0,
2562 0, 0, 147, 148, 149, 150, 151, 152, 153, 154,
2563 155, 270, 271, 156, 272, 0, 0, 0, 0, 0,
2564 0, 0, 0, 157, 158, 159, 160, 161, 162, 163,
2565 164, 165, 0, 0, 166, 167, 0, 0, 168, 169,
2566 170, 171, 0, 0, 0, 0, 0, 0, 0, 0,
2567 0, 0, 172, 0, 0, 0, 0, 0, 0, 0,
2568 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
2569 174, 175, 176, 177, 178, 179, 180, 181, 182, 0,
2570 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
2571 0, 0, 0, 0, 0, 0, 0, 0, 185, 113,
2572 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2573 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2574 134, 135, 136, 0, 0, 0, 137, 138, 139, 140,
2575 141, 142, 143, 144, 145, 146, 0, 0, 0, 0,
2576 0, 147, 148, 149, 150, 151, 152, 153, 154, 155,
2577 226, 0, 156, 0, 0, 0, 0, 0, 0, 0,
2578 0, 0, 157, 158, 159, 160, 161, 162, 163, 164,
2579 165, 0, 0, 166, 167, 0, 0, 168, 169, 170,
2580 171, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2581 0, 172, 0, 0, 55, 0, 0, 0, 0, 0,
2582 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
2583 175, 176, 177, 178, 179, 180, 181, 182, 0, 183,
2584 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2585 0, 0, 0, 0, 0, 0, 0, 185, 113, 114,
2586 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
2587 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2588 135, 136, 0, 0, 0, 137, 138, 139, 140, 141,
2589 142, 143, 144, 145, 146, 0, 0, 0, 0, 0,
2590 147, 148, 149, 150, 151, 152, 153, 154, 155, 0,
2591 0, 156, 0, 0, 0, 0, 0, 0, 0, 0,
2592 0, 157, 158, 159, 160, 161, 162, 163, 164, 165,
2593 0, 0, 166, 167, 0, 0, 168, 169, 170, 171,
2594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2595 172, 0, 0, 55, 0, 0, 0, 0, 0, 0,
2596 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
2597 176, 177, 178, 179, 180, 181, 182, 0, 183, 184,
2598 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2599 0, 0, 0, 0, 0, 0, 185, 113, 114, 115,
2600 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
2601 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
2602 136, 0, 0, 0, 137, 138, 139, 140, 141, 142,
2603 143, 144, 145, 146, 0, 0, 0, 0, 0, 147,
2604 148, 149, 150, 151, 152, 153, 154, 155, 0, 0,
2605 156, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2606 157, 158, 159, 160, 161, 162, 163, 164, 165, 0,
2607 0, 166, 167, 0, 0, 168, 169, 170, 171, 0,
2608 0, 0, 0, 0, 0, 0, 0, 0, 0, 172,
2609 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2610 0, 0, 0, 0, 0, 0, 173, 174, 175, 176,
2611 177, 178, 179, 180, 181, 182, 0, 183, 184, 0,
2612 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
2613 11, 0, 0, 0, 12, 185, 13, 14, 15, 231,
2614 232, 18, 19, 0, 0, 0, 0, 0, 233, 234,
2615 235, 23, 24, 25, 26, 0, 0, 194, 0, 0,
2616 0, 0, 0, 0, 258, 0, 0, 32, 33, 34,
2617 35, 36, 37, 38, 39, 40, 0, 41, 42, 0,
2618 43, 44, 45, 0, 0, 0, 0, 0, 0, 0,
2619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2620 0, 0, 0, 0, 259, 0, 0, 197, 50, 0,
2621 51, 52, 0, 0, 0, 54, 55, 56, 57, 58,
2622 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
2623 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
2624 260, 10, 11, 0, 0, 0, 12, 0, 13, 14,
2625 15, 231, 232, 18, 19, 0, 0, 0, 261, 0,
2626 233, 234, 235, 23, 24, 25, 26, 0, 0, 194,
2627 0, 0, 0, 0, 0, 0, 258, 0, 0, 32,
2628 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2629 42, 0, 43, 44, 45, 0, 0, 0, 0, 0,
2630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2631 0, 0, 0, 0, 0, 0, 259, 0, 0, 197,
2632 50, 0, 51, 52, 0, 0, 0, 54, 55, 56,
2633 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
2634 0, 0, 0, 0, 0, 5, 6, 7, 8, 9,
2635 0, 0, 260, 10, 11, 0, 0, 0, 12, 0,
2636 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2637 490, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2638 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
2639 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2640 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
2641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2642 0, 0, 0, 0, 0, 0, 0, 0, 48, 0,
2643 0, 49, 50, 0, 51, 52, 0, 53, 0, 54,
2644 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
2645 0, 0, 0, 0, 5, 6, 7, 8, 9, 0,
2646 0, 0, 10, 11, 61, 62, 63, 12, 0, 13,
2647 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
2648 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2649 27, 0, 0, 0, 0, 0, 28, 29, 0, 31,
2650 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2651 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
2652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2653 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
2654 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
2655 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
2656 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
2657 0, 10, 11, 61, 62, 63, 12, 0, 13, 14,
2658 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
2659 20, 21, 22, 23, 24, 25, 26, 0, 0, 194,
2660 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
2661 33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
2662 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
2663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2664 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
2665 50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
2666 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
2667 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2668 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
2669 231, 232, 18, 19, 0, 0, 0, 0, 0, 233,
2670 234, 235, 23, 24, 25, 26, 0, 0, 194, 0,
2671 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2672 34, 35, 36, 37, 38, 39, 40, 195, 41, 42,
2673 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
2674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2675 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
2676 0, 51, 52, 0, 587, 199, 54, 55, 56, 57,
2677 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
2678 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
2679 11, 61, 200, 63, 12, 0, 13, 14, 15, 231,
2680 232, 18, 19, 0, 0, 0, 0, 0, 233, 234,
2681 235, 23, 24, 25, 26, 0, 0, 194, 0, 0,
2682 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
2683 35, 36, 37, 38, 39, 40, 195, 41, 42, 0,
2684 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
2685 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2686 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
2687 51, 52, 0, 198, 0, 54, 55, 56, 57, 58,
2688 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
2689 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
2690 61, 200, 63, 12, 0, 13, 14, 15, 231, 232,
2691 18, 19, 0, 0, 0, 0, 0, 233, 234, 235,
2692 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
2693 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
2694 36, 37, 38, 39, 40, 195, 41, 42, 0, 43,
2695 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
2696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2697 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
2698 52, 0, 0, 199, 54, 55, 56, 57, 58, 59,
2699 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
2700 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
2701 200, 63, 12, 0, 13, 14, 15, 231, 232, 18,
2702 19, 0, 0, 0, 0, 0, 233, 234, 235, 23,
2703 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
2704 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
2705 37, 38, 39, 40, 195, 41, 42, 0, 43, 44,
2706 45, 0, 46, 47, 0, 0, 0, 0, 0, 0,
2707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2708 0, 0, 196, 0, 0, 197, 50, 0, 51, 52,
2709 0, 587, 0, 54, 55, 56, 57, 58, 59, 60,
2710 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
2711 7, 0, 9, 0, 0, 0, 10, 11, 61, 200,
2712 63, 12, 0, 13, 14, 15, 231, 232, 18, 19,
2713 0, 0, 0, 0, 0, 233, 234, 235, 23, 24,
2714 25, 26, 0, 0, 194, 0, 0, 0, 0, 0,
2715 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
2716 38, 39, 40, 195, 41, 42, 0, 43, 44, 45,
2717 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2719 0, 196, 0, 0, 197, 50, 0, 51, 52, 0,
2720 0, 0, 54, 55, 56, 57, 58, 59, 60, 0,
2721 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2722 0, 9, 0, 0, 0, 10, 11, 61, 200, 63,
2723 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2724 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2725 26, 0, 0, 194, 0, 0, 0, 0, 0, 0,
2726 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2727 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
2728 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2730 196, 0, 0, 197, 50, 0, 51, 52, 0, 484,
2731 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
2732 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
2733 9, 0, 0, 0, 10, 11, 61, 200, 63, 12,
2734 0, 13, 14, 15, 231, 232, 18, 19, 0, 0,
2735 0, 0, 0, 233, 234, 235, 23, 24, 25, 26,
2736 0, 0, 194, 0, 0, 0, 0, 0, 0, 29,
2737 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
2738 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
2739 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2740 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
2741 0, 0, 197, 50, 0, 51, 52, 0, 198, 0,
2742 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
2743 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
2744 0, 0, 0, 10, 11, 61, 200, 63, 12, 0,
2745 13, 14, 15, 231, 232, 18, 19, 0, 0, 0,
2746 0, 0, 233, 234, 235, 23, 24, 25, 26, 0,
2747 0, 194, 0, 0, 0, 0, 0, 0, 29, 0,
2748 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2749 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
2750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2751 0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
2752 0, 197, 50, 0, 51, 52, 0, 772, 0, 54,
2753 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
2754 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2755 0, 0, 10, 11, 61, 200, 63, 12, 0, 13,
2756 14, 15, 231, 232, 18, 19, 0, 0, 0, 0,
2757 0, 233, 234, 235, 23, 24, 25, 26, 0, 0,
2758 194, 0, 0, 0, 0, 0, 0, 29, 0, 0,
2759 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2760 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
2761 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2762 0, 0, 0, 0, 0, 0, 0, 196, 0, 0,
2763 197, 50, 0, 51, 52, 0, 484, 0, 54, 55,
2764 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
2765 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
2766 0, 10, 11, 61, 200, 63, 12, 0, 13, 14,
2767 15, 231, 232, 18, 19, 0, 0, 0, 0, 0,
2768 233, 234, 235, 23, 24, 25, 26, 0, 0, 194,
2769 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
2770 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2771 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
2772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2773 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
2774 50, 0, 51, 52, 0, 587, 0, 54, 55, 56,
2775 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
2776 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2777 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
2778 231, 232, 18, 19, 0, 0, 0, 0, 0, 233,
2779 234, 235, 23, 24, 25, 26, 0, 0, 194, 0,
2780 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2781 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2782 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
2783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2784 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
2785 0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
2786 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
2787 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
2788 11, 61, 200, 63, 12, 0, 13, 14, 15, 16,
2789 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
2790 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
2791 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
2792 35, 36, 37, 38, 39, 40, 0, 41, 42, 0,
2793 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
2794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2795 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
2796 51, 52, 0, 0, 0, 54, 55, 56, 57, 58,
2797 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
2798 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
2799 61, 62, 63, 12, 0, 13, 14, 15, 16, 17,
2800 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
2801 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
2802 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
2803 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
2804 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
2805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2806 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
2807 52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
2808 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
2809 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
2810 200, 63, 12, 0, 13, 14, 15, 231, 232, 18,
2811 19, 0, 0, 0, 0, 0, 233, 234, 235, 23,
2812 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
2813 0, 0, 258, 0, 0, 32, 33, 34, 35, 36,
2814 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
2815 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2817 0, 0, 259, 0, 0, 304, 50, 0, 51, 52,
2818 0, 305, 0, 54, 55, 56, 57, 58, 59, 60,
2819 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2820 0, 0, 10, 11, 0, 0, 0, 12, 260, 13,
2821 14, 15, 231, 232, 18, 19, 0, 0, 0, 0,
2822 0, 233, 234, 235, 23, 24, 25, 26, 0, 0,
2823 194, 0, 0, 0, 0, 0, 0, 258, 0, 0,
2824 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2825 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
2826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2827 0, 0, 0, 0, 0, 0, 0, 346, 0, 0,
2828 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
2829 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
2830 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
2831 0, 0, 12, 260, 13, 14, 15, 231, 232, 18,
2832 19, 0, 0, 0, 0, 0, 233, 234, 235, 23,
2833 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
2834 0, 0, 258, 0, 0, 32, 33, 34, 354, 36,
2835 37, 38, 355, 40, 0, 41, 42, 0, 43, 44,
2836 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2837 0, 0, 0, 0, 0, 0, 0, 0, 0, 356,
2838 0, 0, 357, 0, 0, 197, 50, 0, 51, 52,
2839 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
2840 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2841 0, 0, 10, 11, 0, 0, 0, 12, 260, 13,
2842 14, 15, 231, 232, 18, 19, 0, 0, 0, 0,
2843 0, 233, 234, 235, 23, 24, 25, 26, 0, 0,
2844 194, 0, 0, 0, 0, 0, 0, 258, 0, 0,
2845 32, 33, 34, 354, 36, 37, 38, 355, 40, 0,
2846 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
2847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2848 0, 0, 0, 0, 0, 0, 0, 357, 0, 0,
2849 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
2850 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
2851 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
2852 0, 0, 12, 260, 13, 14, 15, 231, 232, 18,
2853 19, 0, 0, 0, 0, 0, 233, 234, 235, 23,
2854 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
2855 0, 0, 258, 0, 0, 32, 33, 34, 35, 36,
2856 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
2857 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2859 0, 0, 259, 0, 0, 304, 50, 0, 51, 52,
2860 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
2861 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2862 0, 0, 10, 11, 0, 0, 0, 12, 260, 13,
2863 14, 15, 231, 232, 18, 19, 0, 0, 0, 0,
2864 0, 233, 234, 235, 23, 24, 25, 26, 0, 0,
2865 194, 0, 0, 0, 0, 0, 0, 258, 0, 0,
2866 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2867 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
2868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2869 0, 0, 0, 0, 0, 0, 0, 902, 0, 0,
2870 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
2871 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
2872 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
2873 0, 0, 12, 260, 13, 14, 15, 231, 232, 18,
2874 19, 0, 0, 0, 0, 0, 233, 234, 235, 23,
2875 24, 25, 26, 0, 0, 194, 0, 663, 0, 0,
2876 0, 0, 258, 0, 0, 32, 33, 34, 35, 36,
2877 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
2878 45, 308, 309, 310, 311, 312, 313, 314, 315, 316,
2879 317, 318, 319, 320, 0, 0, 321, 322, 0, 0,
2880 0, 0, 912, 0, 0, 197, 50, 0, 51, 52,
2881 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
2882 0, 0, 0, 323, 0, 324, 325, 326, 327, 328,
2883 329, 330, 331, 332, 333, 0, 0, 0, 260, 0,
2884 525, 526, 0, 0, 527, 0, 0, 0, 0, 0,
2885 0, 0, 0, -241, 157, 158, 159, 160, 161, 162,
2886 163, 164, 165, 0, 0, 166, 167, 0, 0, 168,
2887 169, 170, 171, 0, 0, 0, 0, 0, 0, 0,
2888 0, 0, 0, 172, 0, 0, 0, 0, 0, 0,
2889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2890 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
2891 0, 183, 184, 0, 0, 0, 0, 533, 534, 0,
2892 0, 535, 0, 0, 0, 0, 0, 0, 0, 185,
2893 220, 157, 158, 159, 160, 161, 162, 163, 164, 165,
2894 0, 0, 166, 167, 0, 0, 168, 169, 170, 171,
2895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2896 172, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2897 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
2898 176, 177, 178, 179, 180, 181, 182, 0, 183, 184,
2899 0, 0, 0, 0, 591, 526, 0, 0, 592, 0,
2900 0, 0, 0, 0, 0, 0, 185, 220, 157, 158,
2901 159, 160, 161, 162, 163, 164, 165, 0, 0, 166,
2902 167, 0, 0, 168, 169, 170, 171, 0, 0, 0,
2903 0, 0, 0, 0, 0, 0, 0, 172, 0, 0,
2904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2905 0, 0, 0, 0, 173, 174, 175, 176, 177, 178,
2906 179, 180, 181, 182, 0, 183, 184, 0, 0, 0,
2907 0, 594, 534, 0, 0, 595, 0, 0, 0, 0,
2908 0, 0, 0, 185, 220, 157, 158, 159, 160, 161,
2909 162, 163, 164, 165, 0, 0, 166, 167, 0, 0,
2910 168, 169, 170, 171, 0, 0, 0, 0, 0, 0,
2911 0, 0, 0, 0, 172, 0, 0, 0, 0, 0,
2912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2913 0, 173, 174, 175, 176, 177, 178, 179, 180, 181,
2914 182, 0, 183, 184, 0, 0, 0, 0, 617, 526,
2915 0, 0, 618, 0, 0, 0, 0, 0, 0, 0,
2916 185, 220, 157, 158, 159, 160, 161, 162, 163, 164,
2917 165, 0, 0, 166, 167, 0, 0, 168, 169, 170,
2918 171, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2919 0, 172, 0, 0, 0, 0, 0, 0, 0, 0,
2920 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
2921 175, 176, 177, 178, 179, 180, 181, 182, 0, 183,
2922 184, 0, 0, 0, 0, 620, 534, 0, 0, 621,
2923 0, 0, 0, 0, 0, 0, 0, 185, 220, 157,
2924 158, 159, 160, 161, 162, 163, 164, 165, 0, 0,
2925 166, 167, 0, 0, 168, 169, 170, 171, 0, 0,
2926 0, 0, 0, 0, 0, 0, 0, 0, 172, 0,
2927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2928 0, 0, 0, 0, 0, 173, 174, 175, 176, 177,
2929 178, 179, 180, 181, 182, 0, 183, 184, 0, 0,
2930 0, 0, 692, 526, 0, 0, 693, 0, 0, 0,
2931 0, 0, 0, 0, 185, 220, 157, 158, 159, 160,
2932 161, 162, 163, 164, 165, 0, 0, 166, 167, 0,
2933 0, 168, 169, 170, 171, 0, 0, 0, 0, 0,
2934 0, 0, 0, 0, 0, 172, 0, 0, 0, 0,
2935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2936 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
2937 181, 182, 0, 183, 184, 0, 0, 0, 0, 695,
2938 534, 0, 0, 696, 0, 0, 0, 0, 0, 0,
2939 0, 185, 220, 157, 158, 159, 160, 161, 162, 163,
2940 164, 165, 0, 0, 166, 167, 0, 0, 168, 169,
2941 170, 171, 0, 0, 0, 0, 0, 0, 0, 0,
2942 0, 0, 172, 0, 0, 0, 0, 0, 0, 0,
2943 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
2944 174, 175, 176, 177, 178, 179, 180, 181, 182, 0,
2945 183, 184, 0, 0, 0, 0, 702, 526, 0, 0,
2946 703, 0, 0, 0, 0, 0, 0, 0, 185, 220,
2947 157, 158, 159, 160, 161, 162, 163, 164, 165, 0,
2948 0, 166, 167, 0, 0, 168, 169, 170, 171, 0,
2949 0, 0, 0, 0, 0, 0, 0, 0, 0, 172,
2950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2951 0, 0, 0, 0, 0, 0, 173, 174, 175, 176,
2952 177, 178, 179, 180, 181, 182, 0, 183, 184, 0,
2953 0, 0, 0, 572, 534, 0, 0, 573, 0, 0,
2954 0, 0, 0, 0, 0, 185, 220, 157, 158, 159,
2955 160, 161, 162, 163, 164, 165, 0, 0, 166, 167,
2956 0, 0, 168, 169, 170, 171, 0, 0, 0, 0,
2957 0, 0, 0, 0, 0, 0, 172, 0, 0, 0,
2958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2959 0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
2960 180, 181, 182, 0, 183, 184, 0, 0, 0, 0,
2961 965, 526, 0, 0, 966, 0, 0, 0, 0, 0,
2962 0, 0, 185, 220, 157, 158, 159, 160, 161, 162,
2963 163, 164, 165, 0, 0, 166, 167, 0, 0, 168,
2964 169, 170, 171, 0, 0, 0, 0, 0, 0, 0,
2965 0, 0, 0, 172, 0, 0, 0, 0, 0, 0,
2966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2967 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
2968 0, 183, 184, 0, 0, 0, 0, 971, 526, 0,
2969 0, 972, 0, 0, 0, 0, 0, 0, 0, 185,
2970 220, 157, 158, 159, 160, 161, 162, 163, 164, 165,
2971 0, 0, 166, 167, 0, 0, 168, 169, 170, 171,
2972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2973 172, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2974 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
2975 176, 177, 178, 179, 180, 181, 182, 0, 183, 184,
2976 0, 0, 0, 0, 974, 534, 0, 0, 975, 0,
2977 0, 0, 0, 0, 0, 0, 185, 220, 157, 158,
2978 159, 160, 161, 162, 163, 164, 165, 0, 0, 166,
2979 167, 0, 0, 168, 169, 170, 171, 0, 0, 0,
2980 0, 0, 0, 0, 0, 0, 0, 172, 0, 0,
2981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2982 0, 0, 0, 0, 173, 174, 175, 176, 177, 178,
2983 179, 180, 181, 182, 0, 183, 184, 0, 0, 0,
2984 0, 572, 534, 0, 0, 573, 0, 0, 0, 0,
2985 0, 0, 0, 185, 220, 157, 158, 159, 160, 161,
2986 162, 163, 164, 165, 0, 0, 166, 167, 0, 0,
2987 168, 169, 170, 171, 0, 0, 0, 0, 0, 0,
2988 0, 0, 0, 0, 172, 0, 0, 0, 0, 0,
2989 0, 0, 718, 0, 0, 0, 0, 0, 0, 0,
2990 0, 173, 174, 175, 176, 177, 178, 179, 180, 181,
2991 182, 663, 183, 184, 0, 0, 308, 309, 310, 311,
2992 312, 313, 314, 315, 316, 317, 318, 319, 320, 0,
2993 185, 321, 322, 0, 0, 308, 309, 310, 311, 312,
2994 313, 314, 315, 316, 317, 318, 319, 320, 0, 0,
2995 321, 322, 0, 0, 0, 0, 0, 0, 323, 0,
2996 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
2997 0, 0, 0, 0, 0, 0, 0, 323, 0, 324,
2998 325, 326, 327, 328, 329, 330, 331, 332, 333
3001 #define yypact_value_is_default(yystate) \
3002 ((yystate) == (-747))
3004 #define yytable_value_is_error(yytable_value) \
3005 ((yytable_value) == (-574))
3009 2, 55, 340, 28, 2, 454, 4, 52, 593, 16,
3010 17, 335, 307, 20, 307, 8, 547, 213, 16, 17,
3011 8, 566, 20, 27, 53, 29, 84, 22, 8, 87,
3012 546, 87, 4, 22, 619, 28, 49, 91, 252, 76,
3013 28, 2, 256, 4, 404, 357, 1, 65, 28, 51,
3014 52, 49, 50, 749, 450, 53, 746, 13, 334, 627,
3015 336, 53, 680, 25, 62, 762, 684, 454, 13, 16,
3016 17, 65, 26, 20, 396, 55, 400, 26, 76, 25,
3017 440, 0, 404, 27, 76, 83, 84, 576, 577, 87,
3018 88, 89, 90, 87, 490, 29, 88, 89, 90, 13,
3019 242, 25, 378, 379, 51, 851, 828, 85, 76, 694,
3020 136, 91, 87, 16, 17, 110, 147, 20, 85, 568,
3021 705, 110, 146, 399, 25, 401, 85, 653, 452, 61,
3022 87, 16, 17, 62, 109, 20, 276, 25, 278, 56,
3023 280, 13, 742, 37, 38, 87, 114, 109, 51, 52,
3024 195, 427, 109, 198, 199, 826, 701, 28, 113, 849,
3025 138, 139, 304, 763, 709, 140, 25, 109, 736, 737,
3026 25, 13, 139, 107, 106, 146, 13, 453, 140, 138,
3027 139, 143, 136, 632, 140, 147, 109, 136, 244, 145,
3028 145, 147, 147, 142, 140, 941, 892, 142, 140, 197,
3029 145, 145, 147, 147, 653, 207, 896, 904, 930, 140,
3030 217, 213, 219, 220, 25, 886, 140, 413, 220, 217,
3031 746, 219, 220, 749, 261, 223, 244, 225, 552, 242,
3032 719, 145, 230, 147, 50, 293, 294, 295, 296, 140,
3033 564, 601, 142, 241, 242, 632, 235, 147, 109, 238,
3034 244, 563, 140, 147, 258, 873, 99, 302, 826, 708,
3035 828, 932, 307, 261, 25, 661, 87, 83, 84, 261,
3036 217, 87, 219, 145, 140, 147, 305, 553, 600, 601,
3037 241, 140, 25, 341, 342, 140, 25, 343, 959, 565,
3038 806, 304, 85, 87, 292, 293, 294, 295, 296, 297,
3039 298, 299, 85, 145, 302, 147, 304, 305, 145, 307,
3040 147, 59, 60, 305, 217, 109, 219, 26, 886, 887,
3041 292, 708, 109, 849, 142, 851, 49, 467, 335, 140,
3042 875, 292, 217, 335, 219, 56, 297, 335, 145, 337,
3043 147, 87, 873, 341, 342, 138, 139, 336, 88, 343,
3044 395, 396, 690, 140, 334, 302, 139, 26, 356, 404,
3045 307, 140, 930, 109, 932, 359, 892, 85, 147, 662,
3046 109, 85, 109, 302, 61, 26, 85, 140, 307, 140,
3047 15, 142, 17, 928, 679, 87, 384, 385, 973, 85,
3048 85, 959, 437, 400, 590, 440, 421, 140, 400, 142,
3049 614, 140, 400, 85, 143, 140, 85, 223, 147, 225,
3050 412, 413, 401, 450, 142, 941, 85, 104, 105, 399,
3051 138, 139, 424, 136, 142, 139, 424, 136, 421, 138,
3052 139, 880, 85, 421, 85, 433, 85, 142, 427, 484,
3053 140, 421, 138, 139, 139, 452, 426, 147, 85, 142,
3054 452, 85, 450, 490, 452, 384, 385, 139, 450, 146,
3055 139, 85, 822, 424, 453, 68, 85, 136, 85, 138,
3056 139, 451, 433, 142, 197, 87, 85, 293, 294, 295,
3057 296, 483, 298, 299, 68, 136, 139, 138, 139, 138,
3058 139, 142, 490, 396, 85, 37, 38, 109, 490, 668,
3059 822, 223, 139, 548, 138, 139, 675, 230, 109, 52,
3060 514, 54, 55, 56, 57, 139, 119, 120, 121, 242,
3061 139, 138, 139, 861, 246, 341, 342, 143, 532, 867,
3062 139, 26, 728, 52, 437, 530, 538, 56, 540, 85,
3063 356, 530, 587, 538, 542, 552, 544, 138, 139, 538,
3064 552, 545, 546, 56, 552, 600, 601, 564, 85, 584,
3065 59, 60, 564, 144, 553, 559, 564, 137, 566, 567,
3066 106, 551, 574, 575, 576, 577, 565, 87, 615, 574,
3067 575, 304, 140, 563, 106, 574, 575, 87, 590, 593,
3068 85, 584, 138, 139, 87, 85, 584, 140, 68, 109,
3069 68, 548, 14, 15, 584, 85, 604, 609, 85, 109,
3070 140, 138, 139, 658, 17, 619, 109, 615, 56, 608,
3071 609, 574, 575, 615, 661, 145, 25, 951, 52, 94,
3072 54, 55, 56, 57, 679, 143, 638, 146, 640, 697,
3073 642, 136, 700, 138, 139, 137, 140, 142, 138, 139,
3074 52, 653, 54, 55, 56, 57, 654, 711, 138, 139,
3075 10, 138, 139, 661, 662, 89, 61, 665, 666, 661,
3076 65, 95, 96, 671, 672, 109, 952, 679, 680, 140,
3077 682, 140, 684, 140, 406, 140, 140, 89, 410, 734,
3078 694, 140, 116, 415, 96, 119, 8, 600, 13, 697,
3079 87, 705, 700, 701, 698, 61, 87, 137, 430, 104,
3080 105, 709, 109, 435, 116, 54, 710, 719, 716, 717,
3081 140, 145, 109, 140, 63, 64, 728, 772, 109, 140,
3082 68, 711, 679, 662, 87, 52, 665, 666, 796, 52,
3083 742, 111, 671, 672, 140, 743, 744, 87, 104, 105,
3084 106, 567, 144, 140, 549, 15, 109, 755, 803, 140,
3085 2, 763, 4, 765, 87, 767, 768, 489, 52, 109,
3086 54, 55, 56, 57, 16, 17, 140, 822, 20, 117,
3087 118, 119, 120, 121, 145, 783, 109, 140, 604, 791,
3088 109, 140, 794, 114, 140, 793, 140, 140, 796, 10,
3089 140, 88, 800, 801, 140, 9, 804, 49, 50, 10,
3090 137, 140, 806, 10, 808, 61, 140, 140, 140, 542,
3091 62, 544, 820, 137, 140, 114, 52, 137, 54, 55,
3092 56, 57, 834, 835, 140, 837, 68, 839, 840, 140,
3093 140, 83, 84, 137, 842, 87, 56, 140, 140, 68,
3094 842, 83, 84, 56, 783, 140, 140, 140, 104, 105,
3095 106, 140, 860, 89, 83, 84, 864, 140, 860, 95,
3096 96, 873, 142, 142, 61, 140, 424, 875, 90, 88,
3097 61, 697, 954, 736, 700, 117, 118, 119, 120, 121,
3098 116, 93, 904, 119, 689, 114, 115, 116, 117, 118,
3099 119, 120, 121, 953, 906, 907, 908, 96, 910, 911,
3100 640, 706, 642, 57, 91, 880, 142, 104, 105, 106,
3101 918, 849, 920, 104, 105, 106, 653, 746, 926, -1,
3102 928, 654, 934, 935, 936, 937, 52, -1, 54, 55,
3103 56, 57, -1, -1, 951, -1, -1, 54, 55, 951,
3104 57, 953, 954, 951, -1, 197, 63, 64, -1, 939,
3105 -1, -1, -1, 952, -1, 967, 968, 969, 970, 973,
3106 950, -1, -1, 89, -1, 217, -1, 219, 220, 981,
3107 796, 223, -1, 225, -1, 707, -1, 989, 230, -1,
3108 -1, -1, -1, 716, 717, 68, -1, -1, -1, 241,
3109 242, -1, 797, -1, 799, -1, -1, 729, -1, -1,
3110 83, 84, -1, -1, 809, -1, -1, -1, 740, 814,
3111 743, 744, 749, -1, 52, 752, 54, 55, 56, 57,
3112 -1, -1, 755, -1, -1, 765, -1, 767, 768, -1,
3113 -1, -1, -1, 116, 117, 118, 119, 120, 121, -1,
3114 292, 293, 294, 295, 296, 297, 298, 299, -1, -1,
3115 302, 89, 304, -1, -1, 307, -1, 95, -1, 52,
3116 793, 54, 55, 56, 57, 870, 871, 800, 801, -1,
3117 -1, 804, 16, 17, -1, -1, 20, -1, -1, -1,
3118 -1, 813, -1, 335, -1, 337, -1, 820, -1, 341,
3119 342, -1, -1, 825, 834, 835, -1, 837, 830, 839,
3120 840, -1, 46, 47, 356, -1, -1, 51, 52, -1,
3121 -1, -1, -1, -1, 851, -1, 853, -1, 62, 63,
3122 -1, 52, 927, 54, 55, 56, 57, -1, -1, -1,
3123 -1, 864, 384, 385, 40, 41, 42, 43, 44, -1,
3124 -1, -1, -1, -1, -1, -1, -1, -1, 400, -1,
3125 955, -1, 957, -1, -1, 892, -1, 894, 89, -1,
3126 -1, 898, -1, -1, 95, -1, 906, 907, 908, -1,
3127 910, 911, 424, 52, -1, 54, 55, 56, 57, -1,
3128 -1, 433, -1, -1, -1, 918, -1, 920, -1, -1,
3129 -1, -1, -1, 926, 934, 935, 936, 937, -1, -1,
3130 452, -1, -1, -1, 941, -1, 943, -1, -1, 946,
3131 89, -1, -1, -1, -1, -1, 95, 96, -1, -1,
3132 -1, -1, -1, -1, 961, -1, -1, 967, 968, 969,
3133 970, -1, -1, -1, -1, -1, -1, 116, -1, -1,
3134 119, 981, -1, -1, -1, -1, 983, -1, -1, 989,
3135 -1, 195, -1, -1, 198, 199, 200, -1, -1, -1,
3136 2, -1, 4, 142, -1, 52, -1, 54, 55, 56,
3137 57, -1, -1, 217, -1, 219, 220, -1, -1, -1,
3138 -1, 2, -1, 4, -1, -1, -1, -1, -1, -1,
3139 542, -1, 544, 52, -1, 54, 55, 56, 57, -1,
3140 552, -1, 89, -1, -1, -1, -1, 49, 95, 96,
3141 -1, 53, 564, -1, 566, 567, -1, -1, -1, -1,
3142 -1, -1, -1, -1, -1, -1, -1, -1, 49, 116,
3143 89, -1, 119, -1, 76, -1, 95, 96, -1, -1,
3144 -1, -1, -1, -1, -1, -1, 88, 89, 90, 91,
3145 -1, -1, 604, -1, -1, -1, -1, 116, 302, -1,
3146 119, -1, -1, 307, 308, 309, 310, 311, 312, 313,
3147 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
3148 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
3149 -1, 335, -1, -1, -1, -1, -1, -1, -1, -1,
3150 -1, -1, 654, -1, -1, -1, -1, -1, -1, -1,
3151 662, -1, -1, 665, 666, -1, -1, -1, -1, 671,
3152 672, -1, 68, 69, 70, 71, 72, 73, 74, 75,
3153 76, 77, 78, 79, 80, -1, -1, 83, 84, -1,
3154 384, 385, -1, -1, -1, 697, -1, -1, 700, 701,
3155 394, 395, 396, -1, -1, 197, 400, 709, 402, 403,
3156 404, -1, -1, -1, 716, 717, 112, 113, 114, 115,
3157 116, 117, 118, 119, 120, 121, 197, -1, -1, 423,
3158 -1, -1, -1, -1, 428, -1, -1, -1, 230, -1,
3159 -1, 743, 744, 437, -1, -1, 440, -1, -1, 241,
3160 242, -1, -1, 755, -1, -1, -1, -1, 452, 230,
3161 -1, -1, -1, -1, -1, -1, -1, -1, -1, 261,
3162 241, 242, -1, -1, -1, -1, -1, -1, 472, 473,
3163 -1, 783, -1, -1, -1, -1, -1, -1, -1, -1,
3164 484, 793, -1, -1, 796, -1, -1, -1, 800, 801,
3165 292, -1, 804, -1, -1, 297, -1, -1, -1, -1,
3166 -1, -1, 304, 305, -1, -1, -1, 2, 820, 4,
3167 -1, 292, -1, -1, -1, -1, 297, -1, -1, -1,
3168 -1, -1, -1, 304, -1, -1, -1, -1, -1, -1,
3169 -1, -1, -1, -1, -1, 337, -1, 2, -1, 4,
3170 -1, -1, -1, -1, 548, -1, -1, -1, 552, -1,
3171 -1, -1, 864, -1, 49, 2, 337, 4, 53, -1,
3172 564, -1, -1, 875, -1, -1, -1, -1, -1, -1,
3173 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3174 -1, 76, -1, 587, 49, -1, -1, -1, 53, -1,
3175 -1, -1, -1, 88, 89, 90, 600, 601, -1, -1,
3176 -1, -1, 49, -1, -1, -1, 918, -1, 920, -1,
3177 -1, 76, -1, -1, 926, -1, 928, -1, -1, -1,
3178 -1, -1, 424, 88, 89, 90, 91, -1, -1, -1,
3179 -1, 433, -1, -1, -1, -1, -1, -1, -1, 951,
3180 -1, 88, -1, 424, -1, -1, -1, -1, 450, -1,
3181 -1, -1, 433, -1, 658, -1, -1, -1, 662, 663,
3182 -1, 665, 666, -1, -1, -1, -1, 671, 672, 0,
3183 -1, -1, -1, -1, -1, 679, -1, 8, 9, 10,
3184 -1, -1, 13, 14, 15, -1, 17, -1, 490, -1,
3185 -1, -1, -1, -1, -1, -1, 27, -1, -1, -1,
3186 -1, -1, 197, -1, -1, -1, 37, 38, -1, 40,
3187 41, 42, 43, 44, 718, -1, -1, -1, -1, 723,
3188 724, -1, 726, 727, -1, -1, -1, -1, -1, -1,
3189 734, -1, 197, -1, -1, 230, -1, -1, -1, -1,
3190 542, -1, 544, -1, -1, -1, 241, 242, -1, -1,
3191 197, -1, -1, -1, 85, -1, -1, -1, -1, -1,
3192 -1, 542, -1, 544, 566, 230, 261, -1, 772, -1,
3193 -1, -1, 776, -1, -1, -1, 241, 242, -1, 783,
3194 -1, -1, -1, 230, -1, 566, -1, -1, -1, -1,
3195 -1, -1, -1, -1, 241, 242, 261, 292, -1, 803,
3196 -1, -1, 297, -1, -1, -1, 137, -1, 139, 304,
3197 305, 142, 143, 615, 145, -1, 147, 821, 822, -1,
3198 -1, -1, -1, -1, -1, -1, -1, 292, -1, -1,
3199 -1, -1, 297, -1, -1, -1, -1, -1, -1, 304,
3200 305, -1, 337, -1, -1, 292, -1, -1, -1, -1,
3201 297, -1, 654, -1, -1, -1, -1, 304, -1, 661,
3202 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3203 -1, -1, 337, 654, -1, -1, -1, -1, -1, -1,
3204 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3205 337, -1, -1, -1, -1, -1, -1, -1, -1, 701,
3206 -1, -1, -1, -1, -1, -1, -1, 709, -1, -1,
3207 -1, -1, -1, -1, 716, 717, -1, -1, -1, -1,
3208 701, -1, -1, -1, -1, -1, -1, -1, 709, 424,
3209 -1, -1, -1, -1, -1, 716, 717, -1, 433, -1,
3210 -1, 743, 744, -1, -1, -1, -1, 951, -1, -1,
3211 -1, -1, -1, 755, -1, 450, -1, -1, -1, 424,
3212 -1, -1, 743, 744, -1, -1, -1, -1, 433, -1,
3213 -1, -1, -1, -1, 755, -1, -1, 424, -1, -1,
3214 -1, -1, -1, -1, -1, 450, 433, -1, -1, -1,
3215 -1, 793, -1, -1, -1, 490, -1, -1, 800, 801,
3216 -1, -1, 804, -1, -1, -1, -1, -1, -1, -1,
3217 -1, -1, 793, -1, -1, -1, -1, -1, 820, 800,
3218 801, -1, -1, 804, -1, 490, -1, -1, -1, -1,
3219 -1, -1, -1, -1, -1, -1, -1, -1, -1, 820,
3220 842, -1, -1, -1, -1, -1, -1, 542, -1, 544,
3221 -1, -1, -1, -1, -1, -1, -1, -1, 860, -1,
3222 -1, -1, 864, -1, -1, -1, -1, -1, -1, -1,
3223 -1, 566, -1, 875, -1, -1, -1, 542, -1, 544,
3224 -1, -1, -1, 864, -1, -1, -1, -1, -1, -1,
3225 -1, -1, -1, -1, 875, 542, -1, 544, -1, -1,
3226 -1, 566, -1, -1, -1, -1, -1, -1, -1, -1,
3227 -1, -1, -1, -1, -1, -1, 918, -1, 920, 566,
3228 615, -1, -1, -1, 926, -1, 928, -1, -1, -1,
3229 -1, -1, -1, -1, -1, -1, -1, 918, -1, 920,
3230 -1, -1, -1, -1, -1, 926, -1, 928, -1, -1,
3231 615, 646, -1, -1, -1, -1, -1, -1, -1, 654,
3232 -1, -1, -1, -1, -1, -1, 661, -1, -1, -1,
3233 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3234 -1, -1, 68, 69, 70, 71, 72, 73, 74, 654,
3235 -1, 77, 78, -1, -1, -1, 661, 83, 84, -1,
3236 -1, -1, -1, -1, -1, -1, 701, 654, -1, -1,
3237 -1, -1, -1, -1, 709, 662, -1, -1, -1, -1,
3238 -1, 716, 717, -1, -1, -1, 112, 113, 114, 115,
3239 116, 117, 118, 119, 120, 121, 701, -1, -1, -1,
3240 -1, -1, -1, -1, 709, -1, -1, -1, 743, 744,
3241 -1, 716, 717, -1, 701, -1, -1, -1, -1, -1,
3242 755, -1, 709, -1, -1, -1, -1, -1, -1, 716,
3243 717, 68, 69, 70, 71, 72, 73, 74, 743, 744,
3244 77, 78, -1, -1, -1, -1, 83, 84, -1, -1,
3245 755, -1, -1, -1, -1, -1, 743, 744, 793, -1,
3246 -1, -1, -1, -1, -1, 800, 801, -1, 755, 804,
3247 -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
3248 117, 118, 119, 120, 121, 820, -1, -1, 793, -1,
3249 -1, -1, -1, -1, -1, 800, 801, -1, -1, 804,
3250 -1, -1, -1, -1, -1, -1, 793, 842, -1, -1,
3251 -1, -1, -1, 800, 801, 820, -1, 804, -1, -1,
3252 -1, -1, -1, -1, -1, 860, -1, -1, -1, 864,
3253 -1, -1, -1, 820, -1, -1, -1, 842, -1, -1,
3254 875, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3255 -1, -1, -1, -1, -1, 860, -1, -1, -1, 864,
3256 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3257 875, -1, -1, 860, -1, -1, -1, 864, -1, -1,
3258 -1, -1, -1, 918, -1, 920, -1, -1, 875, -1,
3259 -1, 926, -1, 928, -1, -1, -1, -1, -1, -1,
3260 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3261 -1, -1, -1, 918, -1, 920, -1, -1, -1, -1,
3262 -1, 926, -1, 928, -1, -1, -1, -1, -1, -1,
3263 -1, 918, -1, 920, -1, -1, -1, -1, -1, 926,
3264 -1, 928, 0, 1, -1, 3, 4, 5, 6, 7,
3265 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
3266 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
3267 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3268 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
3269 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3270 -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
3271 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3272 -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
3273 -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
3274 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
3275 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3276 -1, -1, -1, 0, 122, 123, 124, -1, -1, -1,
3277 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3278 17, -1, -1, -1, -1, -1, -1, 145, -1, 147,
3279 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
3280 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3281 -1, -1, -1, -1, 68, 69, 70, 71, 72, 73,
3282 74, 75, 76, 77, 78, 79, 80, -1, -1, 83,
3283 84, 68, 69, 70, 71, 72, 73, 74, 75, 76,
3284 77, 78, 79, 80, -1, -1, 83, 84, 85, -1,
3285 87, 88, -1, -1, -1, -1, 110, 94, 112, 113,
3286 114, 115, 116, 117, 118, 119, 120, 121, -1, -1,
3287 107, -1, 109, 110, 111, 112, 113, 114, 115, 116,
3288 117, 118, 119, 120, 121, -1, -1, -1, -1, -1,
3289 -1, -1, -1, 147, -1, -1, -1, -1, -1, -1,
3290 137, 138, 139, 140, 0, -1, 143, 144, 145, -1,
3291 147, -1, 8, 9, 10, -1, -1, 13, 14, 15,
3292 -1, 17, -1, -1, -1, -1, -1, -1, -1, -1,
3293 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
3294 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
3295 -1, -1, -1, -1, -1, 68, 69, 70, 71, 72,
3296 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
3297 83, 84, 68, 69, 70, 71, 72, 73, 74, 75,
3298 76, 77, 78, 79, 80, -1, -1, 83, 84, 85,
3299 -1, -1, 88, -1, -1, -1, -1, 110, 94, 112,
3300 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
3301 -1, -1, -1, -1, 110, -1, 112, 113, 114, 115,
3302 116, 117, 118, 119, 120, 121, -1, -1, -1, -1,
3303 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3304 136, 137, 138, 139, 140, 0, 142, 143, 144, 145,
3305 -1, 147, -1, 8, 9, 10, -1, -1, 13, 14,
3306 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
3307 -1, -1, 27, 28, 29, -1, -1, -1, -1, -1,
3308 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
3309 -1, -1, -1, -1, -1, -1, 68, 69, 70, 71,
3310 72, 73, 74, 75, -1, 77, 78, -1, -1, -1,
3311 -1, 83, 84, 68, 69, 70, 71, 72, 73, 74,
3312 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
3313 85, -1, -1, 88, -1, -1, -1, -1, -1, 94,
3314 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
3315 -1, -1, 107, -1, -1, 110, 111, 112, 113, 114,
3316 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
3317 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3318 -1, -1, 137, 138, 139, 140, 0, -1, 143, 144,
3319 145, -1, 147, -1, 8, 9, 10, -1, -1, 13,
3320 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
3321 -1, -1, 26, 27, 28, -1, -1, -1, -1, -1,
3322 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
3323 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3325 -1, -1, -1, -1, 68, 69, 70, 71, 72, 73,
3326 74, 75, 76, 77, 78, 79, 80, -1, -1, 83,
3327 84, 85, -1, -1, 88, -1, -1, -1, -1, -1,
3328 94, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3329 -1, -1, -1, -1, -1, -1, 110, -1, 112, 113,
3330 114, 115, 116, 117, 118, 119, 120, 121, -1, -1,
3331 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3332 -1, -1, 136, 137, 138, 139, 140, 0, 142, 143,
3333 144, 145, -1, 147, -1, 8, 9, 10, -1, -1,
3334 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
3335 -1, -1, -1, -1, 27, 28, -1, -1, -1, -1,
3336 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
3337 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
3338 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3339 -1, -1, -1, -1, -1, 68, 69, 70, 71, 72,
3340 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
3341 83, 84, 85, -1, -1, 88, -1, -1, -1, -1,
3342 -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
3343 -1, -1, -1, -1, -1, -1, -1, 110, -1, 112,
3344 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
3345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3346 -1, -1, -1, -1, 137, 138, 139, 140, 0, 142,
3347 143, 144, 145, -1, 147, -1, 8, 9, 10, -1,
3348 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
3349 -1, -1, -1, -1, 26, -1, -1, -1, -1, -1,
3350 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3351 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
3352 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3353 -1, -1, -1, -1, -1, -1, 68, 69, 70, 71,
3354 72, 73, 74, 75, 76, 77, 78, 79, 80, -1,
3355 -1, 83, 84, 85, 0, 87, -1, -1, -1, -1,
3356 -1, -1, 8, 9, 10, -1, -1, -1, 14, 15,
3357 -1, 17, -1, -1, -1, -1, -1, 109, 110, -1,
3358 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
3359 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
3360 -1, -1, -1, -1, 136, 137, 138, 139, 140, -1,
3361 -1, 143, -1, 145, -1, 147, -1, -1, -1, -1,
3362 -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
3363 76, 77, 78, 79, 80, -1, -1, 83, 84, 85,
3364 -1, 87, -1, -1, -1, -1, -1, -1, -1, -1,
3365 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3366 -1, -1, -1, 109, 110, -1, 112, 113, 114, 115,
3367 116, 117, 118, 119, 120, 121, -1, -1, -1, -1,
3368 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3369 -1, 137, 138, 139, 140, -1, -1, 143, -1, 145,
3370 1, 147, 3, 4, 5, 6, 7, 8, 9, 10,
3371 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
3372 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3373 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3374 -1, -1, -1, -1, 45, 46, -1, 48, 49, 50,
3375 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
3376 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
3377 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3378 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
3379 -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
3380 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
3381 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3382 -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
3383 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3384 -1, -1, -1, -1, 145, 1, 147, 3, 4, 5,
3385 6, 7, -1, -1, 10, 11, 12, -1, 14, 15,
3386 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3387 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3388 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3389 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
3390 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
3391 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
3392 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3393 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
3394 -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
3395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3396 -1, -1, -1, -1, -1, -1, 122, 123, 124, -1,
3397 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3398 -1, -1, -1, -1, -1, -1, -1, -1, -1, 145,
3399 1, 147, 3, 4, 5, 6, 7, -1, -1, 10,
3400 11, 12, -1, -1, 15, 16, 17, 18, 19, 20,
3401 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3402 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3403 -1, -1, -1, -1, 45, 46, -1, 48, 49, 50,
3404 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
3405 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
3406 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3407 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
3408 -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
3409 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
3410 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3411 -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
3412 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
3413 11, 12, -1, -1, 145, 16, 147, 18, 19, 20,
3414 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3415 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3416 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
3417 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
3418 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
3419 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3420 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
3421 -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
3422 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
3423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3424 -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
3425 -1, -1, -1, -1, -1, -1, 137, -1, -1, -1,
3426 -1, -1, -1, -1, 145, 1, 147, 3, 4, 5,
3427 6, 7, -1, -1, 10, 11, 12, -1, -1, 15,
3428 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3429 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3430 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3431 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
3432 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
3433 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
3434 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3435 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
3436 -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
3437 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3438 -1, -1, -1, -1, -1, -1, 122, 123, 124, -1,
3439 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5,
3440 6, 7, -1, 9, 10, 11, 12, -1, -1, 145,
3441 16, 147, 18, 19, 20, 21, 22, 23, 24, -1,
3442 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3443 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3444 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
3445 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
3446 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
3447 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3448 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
3449 -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
3450 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3451 -1, -1, -1, -1, -1, -1, 122, 123, 124, -1,
3452 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5,
3453 6, 7, -1, -1, -1, 11, 12, -1, -1, 145,
3454 16, 147, 18, 19, 20, 21, 22, 23, 24, -1,
3455 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3456 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3457 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
3458 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
3459 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
3460 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3461 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
3462 -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
3463 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3464 -1, -1, -1, -1, -1, -1, 122, 123, 124, -1,
3465 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5,
3466 6, 7, -1, -1, -1, 11, 12, 143, -1, 145,
3467 16, 147, 18, 19, 20, 21, 22, 23, 24, -1,
3468 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3469 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3470 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
3471 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
3472 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
3473 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3474 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
3475 -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
3476 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3477 -1, -1, -1, -1, -1, -1, 122, 123, 124, -1,
3478 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5,
3479 6, 7, -1, -1, -1, 11, 12, 143, -1, 145,
3480 16, 147, 18, 19, 20, 21, 22, 23, 24, -1,
3481 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3482 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3483 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
3484 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
3485 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
3486 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3487 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
3488 -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
3489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3490 -1, -1, -1, -1, -1, -1, 122, 123, 124, -1,
3491 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3492 -1, 137, -1, -1, -1, -1, -1, -1, -1, 145,
3493 1, 147, 3, 4, 5, 6, 7, -1, -1, 10,
3494 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
3495 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3496 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3497 -1, -1, -1, -1, 45, 46, -1, 48, 49, 50,
3498 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
3499 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
3500 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3501 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
3502 -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
3503 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
3504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3505 -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
3506 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
3507 11, 12, -1, -1, 145, 16, 147, 18, 19, 20,
3508 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3509 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3510 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
3511 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
3512 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
3513 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3514 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
3515 -1, 92, 93, -1, 95, 96, 97, 98, 99, 100,
3516 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
3517 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
3518 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
3519 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
3520 32, 33, 34, 35, 36, -1, 147, 39, -1, -1,
3521 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
3522 52, 53, 54, 55, 56, 57, -1, 59, 60, -1,
3523 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
3524 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3525 -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
3526 92, 93, -1, -1, -1, 97, 98, 99, 100, 101,
3527 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
3528 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3529 122, 123, 124, -1, -1, -1, -1, -1, -1, -1,
3530 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
3531 12, -1, -1, 145, 16, 147, 18, 19, 20, 21,
3532 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
3533 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
3534 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
3535 52, 53, 54, 55, 56, 57, -1, 59, 60, -1,
3536 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
3537 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3538 -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
3539 92, 93, -1, -1, -1, 97, 98, 99, 100, 101,
3540 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
3541 3, 4, 5, 6, 7, -1, -1, -1, 11, 12,
3542 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
3543 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
3544 33, 34, 35, 36, -1, 147, 39, -1, -1, -1,
3545 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
3546 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
3547 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
3548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3549 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
3550 93, -1, 95, -1, 97, 98, 99, 100, 101, 102,
3551 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3552 -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
3553 123, 124, -1, -1, -1, -1, -1, -1, 3, 4,
3554 5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
3555 -1, 16, 145, 18, 19, 20, 21, 22, 23, 24,
3556 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
3557 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
3558 45, 46, -1, 48, 49, 50, 51, 52, 53, 54,
3559 55, 56, 57, -1, 59, 60, -1, 62, 63, 64,
3560 -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
3561 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3562 -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
3563 95, -1, 97, 98, 99, 100, 101, 102, 103, -1,
3564 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3565 -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
3566 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3567 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3568 145, 3, 4, 5, 6, 7, 8, 9, 10, 11,
3569 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
3570 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
3571 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
3572 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
3573 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
3574 -1, -1, -1, -1, 66, 67, 68, 69, 70, 71,
3575 72, 73, 74, -1, -1, 77, 78, -1, -1, 81,
3576 82, 83, 84, -1, -1, -1, -1, -1, -1, -1,
3577 -1, -1, -1, 95, -1, -1, -1, -1, -1, -1,
3578 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3579 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
3580 -1, 123, 124, -1, -1, -1, -1, -1, 3, 4,
3581 5, -1, 7, -1, -1, -1, 11, 12, -1, 141,
3582 142, 16, -1, 18, 19, 20, 21, 22, 23, 24,
3583 -1, 26, -1, -1, -1, 30, 31, 32, 33, 34,
3584 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
3585 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
3586 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
3587 -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
3588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3589 -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
3590 95, 96, 97, 98, 99, 100, 101, 102, 103, -1,
3591 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3592 -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
3593 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
3594 -1, 136, -1, 11, 12, -1, -1, 142, 16, -1,
3595 18, 19, 20, 21, 22, 23, 24, -1, 26, -1,
3596 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3597 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
3598 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3599 58, 59, 60, -1, 62, 63, 64, -1, 66, 67,
3600 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3601 -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
3602 -1, 89, 90, -1, 92, 93, -1, 95, 96, 97,
3603 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
3604 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3605 -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
3606 -1, -1, 3, 4, 5, -1, 7, -1, 136, -1,
3607 11, 12, -1, -1, 142, 16, -1, 18, 19, 20,
3608 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3609 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3610 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
3611 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
3612 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
3613 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3614 -1, -1, -1, -1, -1, 86, 87, -1, 89, 90,
3615 -1, 92, 93, -1, 95, 96, 97, 98, 99, 100,
3616 101, 102, 103, -1, -1, -1, -1, -1, 109, -1,
3617 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
3618 7, 122, 123, 124, 11, 12, -1, -1, -1, 16,
3619 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
3620 -1, 142, -1, 30, 31, 32, 33, 34, 35, 36,
3621 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
3622 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
3623 57, 58, 59, 60, -1, 62, 63, 64, -1, 66,
3624 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3625 -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
3626 -1, -1, 89, 90, -1, 92, 93, -1, 95, 96,
3627 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
3628 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3629 3, 4, 5, -1, 7, 122, 123, 124, 11, 12,
3630 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
3631 23, 24, -1, -1, -1, 142, -1, 30, 31, 32,
3632 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
3633 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
3634 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
3635 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
3636 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3637 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
3638 93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
3639 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3640 -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
3641 123, 124, -1, -1, -1, -1, -1, -1, -1, -1,
3642 -1, -1, -1, -1, -1, -1, -1, -1, -1, 142,
3643 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
3644 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
3645 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
3646 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
3647 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
3648 53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
3649 -1, -1, -1, 66, 67, 68, 69, 70, 71, 72,
3650 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
3651 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
3652 -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
3653 -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
3654 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
3655 123, 124, -1, -1, -1, -1, -1, -1, -1, -1,
3656 -1, -1, -1, -1, -1, -1, -1, -1, 141, 3,
3657 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
3658 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
3659 24, 25, 26, -1, -1, -1, 30, 31, 32, 33,
3660 34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
3661 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
3662 54, -1, 56, -1, -1, -1, -1, -1, -1, -1,
3663 -1, -1, 66, 67, 68, 69, 70, 71, 72, 73,
3664 74, -1, -1, 77, 78, -1, -1, 81, 82, 83,
3665 84, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3666 -1, 95, -1, -1, 98, -1, -1, -1, -1, -1,
3667 -1, -1, -1, -1, -1, -1, -1, -1, 112, 113,
3668 114, 115, 116, 117, 118, 119, 120, 121, -1, 123,
3669 124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3670 -1, -1, -1, -1, -1, -1, -1, 141, 3, 4,
3671 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3672 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3673 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
3674 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
3675 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
3676 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
3677 -1, 66, 67, 68, 69, 70, 71, 72, 73, 74,
3678 -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
3679 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3680 95, -1, -1, 98, -1, -1, -1, -1, -1, -1,
3681 -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
3682 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
3683 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3684 -1, -1, -1, -1, -1, -1, 141, 3, 4, 5,
3685 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
3686 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
3687 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3688 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
3689 46, 47, 48, 49, 50, 51, 52, 53, -1, -1,
3690 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3691 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
3692 -1, 77, 78, -1, -1, 81, 82, 83, 84, -1,
3693 -1, -1, -1, -1, -1, -1, -1, -1, -1, 95,
3694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3695 -1, -1, -1, -1, -1, -1, 112, 113, 114, 115,
3696 116, 117, 118, 119, 120, 121, -1, 123, 124, -1,
3697 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
3698 12, -1, -1, -1, 16, 141, 18, 19, 20, 21,
3699 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
3700 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
3701 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
3702 52, 53, 54, 55, 56, 57, -1, 59, 60, -1,
3703 62, 63, 64, -1, -1, -1, -1, -1, -1, -1,
3704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3705 -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
3706 92, 93, -1, -1, -1, 97, 98, 99, 100, 101,
3707 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
3708 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
3709 122, 11, 12, -1, -1, -1, 16, -1, 18, 19,
3710 20, 21, 22, 23, 24, -1, -1, -1, 140, -1,
3711 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
3712 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
3713 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
3714 60, -1, 62, 63, 64, -1, -1, -1, -1, -1,
3715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3716 -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
3717 90, -1, 92, 93, -1, -1, -1, 97, 98, 99,
3718 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
3719 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
3720 -1, -1, 122, 11, 12, -1, -1, -1, 16, -1,
3721 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
3722 140, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3723 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
3724 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3725 -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
3726 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3727 -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
3728 -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
3729 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
3730 -1, -1, -1, -1, 3, 4, 5, 6, 7, -1,
3731 -1, -1, 11, 12, 122, 123, 124, 16, -1, 18,
3732 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
3733 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
3734 39, -1, -1, -1, -1, -1, 45, 46, -1, 48,
3735 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
3736 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
3737 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3738 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
3739 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
3740 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
3741 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
3742 -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
3743 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
3744 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
3745 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
3746 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
3747 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
3748 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3749 -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
3750 90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
3751 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
3752 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
3753 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
3754 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3755 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3756 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
3757 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
3758 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
3759 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3760 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
3761 -1, 92, 93, -1, 95, 96, 97, 98, 99, 100,
3762 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
3763 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
3764 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
3765 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
3766 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
3767 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
3768 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
3769 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
3770 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3771 -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
3772 92, 93, -1, 95, -1, 97, 98, 99, 100, 101,
3773 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
3774 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
3775 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
3776 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
3777 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
3778 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
3779 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
3780 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
3781 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3782 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
3783 93, -1, -1, 96, 97, 98, 99, 100, 101, 102,
3784 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
3785 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
3786 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
3787 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
3788 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
3789 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
3790 54, 55, 56, 57, 58, 59, 60, -1, 62, 63,
3791 64, -1, 66, 67, -1, -1, -1, -1, -1, -1,
3792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3793 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
3794 -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
3795 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
3796 5, -1, 7, -1, -1, -1, 11, 12, 122, 123,
3797 124, 16, -1, 18, 19, 20, 21, 22, 23, 24,
3798 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
3799 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
3800 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
3801 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
3802 -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
3803 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3804 -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
3805 -1, -1, 97, 98, 99, 100, 101, 102, 103, -1,
3806 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
3807 -1, 7, -1, -1, -1, 11, 12, 122, 123, 124,
3808 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3809 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3810 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
3811 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
3812 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
3813 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
3814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3815 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
3816 -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
3817 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
3818 7, -1, -1, -1, 11, 12, 122, 123, 124, 16,
3819 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
3820 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
3821 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
3822 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
3823 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
3824 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3825 -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
3826 -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
3827 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
3828 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
3829 -1, -1, -1, 11, 12, 122, 123, 124, 16, -1,
3830 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
3831 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3832 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
3833 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3834 -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
3835 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3836 -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
3837 -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
3838 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
3839 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
3840 -1, -1, 11, 12, 122, 123, 124, 16, -1, 18,
3841 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
3842 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
3843 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
3844 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
3845 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
3846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3847 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
3848 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
3849 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
3850 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
3851 -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
3852 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
3853 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
3854 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
3855 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
3856 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
3857 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3858 -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
3859 90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
3860 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
3861 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
3862 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
3863 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3864 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3865 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
3866 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
3867 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
3868 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3869 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
3870 -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
3871 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
3872 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
3873 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
3874 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
3875 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
3876 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
3877 52, 53, 54, 55, 56, 57, -1, 59, 60, -1,
3878 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
3879 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3880 -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
3881 92, 93, -1, -1, -1, 97, 98, 99, 100, 101,
3882 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
3883 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
3884 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
3885 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
3886 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
3887 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
3888 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
3889 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
3890 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3891 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
3892 93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
3893 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
3894 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
3895 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
3896 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
3897 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
3898 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
3899 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
3900 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3901 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3902 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
3903 -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
3904 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
3905 -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
3906 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
3907 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
3908 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
3909 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
3910 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
3911 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3912 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
3913 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
3914 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
3915 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
3916 -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
3917 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
3918 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
3919 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
3920 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
3921 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3922 -1, -1, -1, -1, -1, -1, -1, -1, -1, 83,
3923 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
3924 -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
3925 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
3926 -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
3927 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
3928 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
3929 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
3930 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
3931 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
3932 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3933 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
3934 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
3935 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
3936 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
3937 -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
3938 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
3939 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
3940 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
3941 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
3942 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3943 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3944 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
3945 -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
3946 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
3947 -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
3948 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
3949 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
3950 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
3951 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
3952 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
3953 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3954 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
3955 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
3956 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
3957 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
3958 -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
3959 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
3960 34, 35, 36, -1, -1, 39, -1, 44, -1, -1,
3961 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
3962 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
3963 64, 68, 69, 70, 71, 72, 73, 74, 75, 76,
3964 77, 78, 79, 80, -1, -1, 83, 84, -1, -1,
3965 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
3966 -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
3967 -1, -1, -1, 110, -1, 112, 113, 114, 115, 116,
3968 117, 118, 119, 120, 121, -1, -1, -1, 122, -1,
3969 52, 53, -1, -1, 56, -1, -1, -1, -1, -1,
3970 -1, -1, -1, 140, 66, 67, 68, 69, 70, 71,
3971 72, 73, 74, -1, -1, 77, 78, -1, -1, 81,
3972 82, 83, 84, -1, -1, -1, -1, -1, -1, -1,
3973 -1, -1, -1, 95, -1, -1, -1, -1, -1, -1,
3974 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3975 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
3976 -1, 123, 124, -1, -1, -1, -1, 52, 53, -1,
3977 -1, 56, -1, -1, -1, -1, -1, -1, -1, 141,
3978 142, 66, 67, 68, 69, 70, 71, 72, 73, 74,
3979 -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
3980 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3981 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3982 -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
3983 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
3984 -1, -1, -1, -1, 52, 53, -1, -1, 56, -1,
3985 -1, -1, -1, -1, -1, -1, 141, 142, 66, 67,
3986 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
3987 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
3988 -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
3989 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3990 -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
3991 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
3992 -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
3993 -1, -1, -1, 141, 142, 66, 67, 68, 69, 70,
3994 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
3995 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
3996 -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
3997 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3998 -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
3999 121, -1, 123, 124, -1, -1, -1, -1, 52, 53,
4000 -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
4001 141, 142, 66, 67, 68, 69, 70, 71, 72, 73,
4002 74, -1, -1, 77, 78, -1, -1, 81, 82, 83,
4003 84, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4004 -1, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4005 -1, -1, -1, -1, -1, -1, -1, -1, 112, 113,
4006 114, 115, 116, 117, 118, 119, 120, 121, -1, 123,
4007 124, -1, -1, -1, -1, 52, 53, -1, -1, 56,
4008 -1, -1, -1, -1, -1, -1, -1, 141, 142, 66,
4009 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
4010 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
4011 -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
4012 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4013 -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
4014 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
4015 -1, -1, 52, 53, -1, -1, 56, -1, -1, -1,
4016 -1, -1, -1, -1, 141, 142, 66, 67, 68, 69,
4017 70, 71, 72, 73, 74, -1, -1, 77, 78, -1,
4018 -1, 81, 82, 83, 84, -1, -1, -1, -1, -1,
4019 -1, -1, -1, -1, -1, 95, -1, -1, -1, -1,
4020 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4021 -1, -1, 112, 113, 114, 115, 116, 117, 118, 119,
4022 120, 121, -1, 123, 124, -1, -1, -1, -1, 52,
4023 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
4024 -1, 141, 142, 66, 67, 68, 69, 70, 71, 72,
4025 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
4026 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
4027 -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
4028 -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
4029 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
4030 123, 124, -1, -1, -1, -1, 52, 53, -1, -1,
4031 56, -1, -1, -1, -1, -1, -1, -1, 141, 142,
4032 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
4033 -1, 77, 78, -1, -1, 81, 82, 83, 84, -1,
4034 -1, -1, -1, -1, -1, -1, -1, -1, -1, 95,
4035 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4036 -1, -1, -1, -1, -1, -1, 112, 113, 114, 115,
4037 116, 117, 118, 119, 120, 121, -1, 123, 124, -1,
4038 -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
4039 -1, -1, -1, -1, -1, 141, 142, 66, 67, 68,
4040 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
4041 -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
4042 -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
4043 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4044 -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
4045 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
4046 52, 53, -1, -1, 56, -1, -1, -1, -1, -1,
4047 -1, -1, 141, 142, 66, 67, 68, 69, 70, 71,
4048 72, 73, 74, -1, -1, 77, 78, -1, -1, 81,
4049 82, 83, 84, -1, -1, -1, -1, -1, -1, -1,
4050 -1, -1, -1, 95, -1, -1, -1, -1, -1, -1,
4051 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4052 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
4053 -1, 123, 124, -1, -1, -1, -1, 52, 53, -1,
4054 -1, 56, -1, -1, -1, -1, -1, -1, -1, 141,
4055 142, 66, 67, 68, 69, 70, 71, 72, 73, 74,
4056 -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
4057 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4058 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4059 -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
4060 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
4061 -1, -1, -1, -1, 52, 53, -1, -1, 56, -1,
4062 -1, -1, -1, -1, -1, -1, 141, 142, 66, 67,
4063 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
4064 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
4065 -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
4066 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4067 -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
4068 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
4069 -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
4070 -1, -1, -1, 141, 142, 66, 67, 68, 69, 70,
4071 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
4072 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
4073 -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
4074 -1, -1, 44, -1, -1, -1, -1, -1, -1, -1,
4075 -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
4076 121, 44, 123, 124, -1, -1, 68, 69, 70, 71,
4077 72, 73, 74, 75, 76, 77, 78, 79, 80, -1,
4078 141, 83, 84, -1, -1, 68, 69, 70, 71, 72,
4079 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
4080 83, 84, -1, -1, -1, -1, -1, -1, 110, -1,
4081 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
4082 -1, -1, -1, -1, -1, -1, -1, 110, -1, 112,
4083 113, 114, 115, 116, 117, 118, 119, 120, 121
4090 0, 149, 150, 0, 1, 3, 4, 5, 6, 7,
4091 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
4092 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
4093 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4094 57, 59, 60, 62, 63, 64, 66, 67, 86, 89,
4095 90, 92, 93, 95, 97, 98, 99, 100, 101, 102,
4096 103, 122, 123, 124, 151, 152, 153, 158, 160, 161,
4097 163, 164, 167, 168, 170, 171, 172, 174, 175, 185,
4098 199, 216, 217, 218, 219, 220, 221, 222, 223, 224,
4099 225, 226, 249, 250, 260, 261, 262, 263, 264, 265,
4100 266, 269, 279, 281, 282, 283, 284, 285, 286, 287,
4101 310, 321, 153, 3, 4, 5, 6, 7, 8, 9,
4102 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4103 20, 21, 22, 23, 24, 25, 26, 30, 31, 32,
4104 33, 34, 35, 36, 37, 38, 39, 45, 46, 47,
4105 48, 49, 50, 51, 52, 53, 56, 66, 67, 68,
4106 69, 70, 71, 72, 73, 74, 77, 78, 81, 82,
4107 83, 84, 95, 112, 113, 114, 115, 116, 117, 118,
4108 119, 120, 121, 123, 124, 141, 178, 179, 180, 181,
4109 183, 184, 279, 281, 39, 58, 86, 89, 95, 96,
4110 123, 167, 175, 185, 187, 192, 195, 197, 216, 283,
4111 284, 286, 287, 308, 309, 192, 192, 142, 193, 194,
4112 142, 189, 193, 142, 147, 315, 54, 180, 315, 154,
4113 136, 21, 22, 30, 31, 32, 185, 216, 310, 185,
4114 56, 1, 89, 156, 157, 158, 169, 170, 321, 161,
4115 188, 197, 308, 321, 187, 307, 308, 321, 46, 86,
4116 122, 140, 174, 199, 216, 283, 284, 287, 242, 243,
4117 54, 55, 57, 178, 272, 280, 271, 272, 273, 146,
4118 267, 146, 270, 59, 60, 163, 185, 185, 145, 147,
4119 314, 319, 320, 40, 41, 42, 43, 44, 37, 38,
4120 28, 247, 109, 140, 89, 95, 171, 109, 68, 69,
4121 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
4122 80, 83, 84, 110, 112, 113, 114, 115, 116, 117,
4123 118, 119, 120, 121, 85, 138, 139, 200, 161, 162,
4124 162, 203, 205, 162, 314, 320, 86, 168, 175, 216,
4125 232, 283, 284, 287, 52, 56, 83, 86, 176, 177,
4126 216, 283, 284, 287, 177, 33, 34, 35, 36, 49,
4127 50, 51, 52, 56, 142, 178, 285, 305, 85, 139,
4128 26, 136, 251, 263, 87, 87, 189, 193, 251, 140,
4129 187, 56, 187, 187, 109, 88, 140, 196, 321, 85,
4130 138, 139, 87, 87, 140, 196, 192, 315, 316, 192,
4131 191, 192, 197, 308, 321, 161, 316, 161, 54, 63,
4132 64, 159, 142, 186, 136, 156, 85, 139, 87, 158,
4133 169, 143, 314, 320, 316, 201, 144, 140, 147, 318,
4134 140, 318, 137, 318, 315, 56, 59, 60, 171, 173,
4135 140, 85, 138, 139, 244, 61, 104, 105, 106, 274,
4136 106, 274, 106, 65, 274, 106, 106, 268, 274, 106,
4137 61, 106, 68, 68, 145, 153, 162, 162, 162, 162,
4138 158, 161, 161, 248, 95, 163, 187, 197, 198, 169,
4139 140, 174, 140, 160, 163, 175, 185, 187, 198, 185,
4140 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
4141 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
4142 185, 185, 185, 185, 185, 52, 53, 56, 183, 189,
4143 311, 312, 191, 52, 53, 56, 183, 189, 311, 155,
4144 156, 13, 228, 319, 228, 162, 162, 314, 17, 254,
4145 56, 85, 138, 139, 25, 161, 52, 56, 176, 1,
4146 113, 288, 319, 85, 138, 139, 212, 306, 213, 85,
4147 139, 313, 52, 56, 311, 311, 253, 252, 163, 185,
4148 163, 185, 94, 165, 182, 185, 187, 95, 187, 195,
4149 308, 52, 56, 191, 52, 56, 309, 316, 143, 316,
4150 140, 140, 316, 180, 202, 185, 151, 137, 311, 311,
4151 185, 316, 158, 316, 308, 140, 173, 52, 56, 191,
4152 52, 56, 52, 54, 55, 56, 57, 89, 95, 96,
4153 116, 119, 142, 245, 291, 292, 293, 294, 295, 296,
4154 299, 300, 301, 302, 303, 276, 275, 146, 274, 146,
4155 185, 185, 76, 114, 237, 238, 321, 187, 140, 316,
4156 173, 140, 109, 44, 315, 87, 87, 189, 193, 315,
4157 317, 87, 87, 189, 190, 193, 321, 10, 227, 8,
4158 256, 321, 156, 13, 156, 27, 229, 319, 229, 254,
4159 197, 227, 52, 56, 191, 52, 56, 207, 210, 319,
4160 289, 209, 52, 56, 176, 191, 155, 161, 142, 290,
4161 291, 214, 190, 193, 190, 193, 237, 237, 44, 166,
4162 180, 187, 196, 87, 87, 317, 87, 87, 308, 161,
4163 137, 318, 171, 317, 109, 52, 89, 95, 233, 234,
4164 235, 293, 291, 29, 107, 246, 140, 304, 321, 140,
4165 304, 52, 140, 304, 52, 277, 54, 55, 57, 278,
4166 287, 52, 145, 236, 239, 295, 297, 298, 301, 303,
4167 321, 156, 95, 187, 173, 185, 111, 163, 185, 163,
4168 185, 165, 144, 87, 163, 185, 163, 185, 165, 187,
4169 198, 257, 321, 15, 231, 321, 14, 230, 231, 231,
4170 204, 206, 227, 140, 228, 317, 162, 319, 162, 155,
4171 317, 227, 316, 291, 155, 319, 178, 156, 156, 185,
4172 237, 87, 140, 316, 187, 235, 140, 293, 140, 316,
4173 239, 156, 156, 294, 299, 301, 303, 295, 296, 301,
4174 295, 156, 109, 52, 240, 241, 292, 239, 114, 140,
4175 304, 140, 304, 140, 304, 10, 187, 185, 163, 185,
4176 88, 258, 321, 156, 9, 259, 321, 162, 227, 227,
4177 156, 156, 187, 156, 229, 211, 319, 227, 316, 227,
4178 215, 10, 137, 156, 316, 234, 140, 95, 233, 316,
4179 10, 137, 140, 304, 140, 304, 140, 304, 140, 304,
4180 304, 137, 86, 216, 140, 114, 298, 301, 295, 297,
4181 301, 295, 86, 175, 216, 283, 284, 287, 228, 156,
4182 228, 227, 227, 231, 254, 255, 208, 155, 290, 137,
4183 140, 234, 140, 293, 295, 301, 295, 295, 56, 85,
4184 241, 140, 304, 140, 304, 304, 140, 304, 304, 56,
4185 85, 138, 139, 156, 156, 156, 227, 155, 234, 140,
4186 304, 140, 304, 304, 304, 52, 56, 295, 301, 295,
4187 295, 52, 56, 191, 52, 56, 256, 230, 227, 227,
4188 234, 295, 304, 140, 304, 304, 304, 317, 304, 295,
4192 #define yyerrok (yyerrstatus = 0)
4193 #define yyclearin (yychar = YYEMPTY)
4194 #define YYEMPTY (-2)
4197 #define YYACCEPT goto yyacceptlab
4198 #define YYABORT goto yyabortlab
4199 #define YYERROR goto yyerrorlab
4209 #define YYFAIL goto yyerrlab
4217 #define YYRECOVERING() (!!yyerrstatus)
4219 #define YYBACKUP(Token, Value) \
4221 if (yychar == YYEMPTY && yylen == 1) \
4230 parser_yyerror (parser, YY_("syntax error: cannot back up")); \
4237 #define YYERRCODE 256
4244 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
4245 #ifndef YYLLOC_DEFAULT
4246 # define YYLLOC_DEFAULT(Current, Rhs, N) \
4250 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
4251 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
4252 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
4253 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
4257 (Current).first_line = (Current).last_line = \
4258 YYRHSLOC (Rhs, 0).last_line; \
4259 (Current).first_column = (Current).last_column = \
4260 YYRHSLOC (Rhs, 0).last_column; \
4268 #ifndef YY_LOCATION_PRINT
4269 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
4276 # define YYLEX yylex (&yylval, YYLEX_PARAM)
4278 # define YYLEX yylex (&yylval, parser)
4286 # define YYFPRINTF fprintf
4289 # define YYDPRINTF(Args) \
4295 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
4299 YYFPRINTF (stderr, "%s ", Title); \
4300 yy_symbol_print (stderr, \
4301 Type, Value, parser); \
4302 YYFPRINTF (stderr, "\n"); \
4312 #if (defined __STDC__ || defined __C99__FUNC__ \
4313 || defined __cplusplus || defined _MSC_VER)
4330 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
4346 #if (defined __STDC__ || defined __C99__FUNC__ \
4347 || defined __cplusplus || defined _MSC_VER)
4360 YYFPRINTF (yyoutput,
"token %s (", yytname[yytype]);
4362 YYFPRINTF (yyoutput,
"nterm %s (", yytname[yytype]);
4373 #if (defined __STDC__ || defined __C99__FUNC__ \
4374 || defined __cplusplus || defined _MSC_VER)
4385 for (; yybottom <= yytop; yybottom++)
4387 int yybot = *yybottom;
4393 # define YY_STACK_PRINT(Bottom, Top) \
4396 yy_stack_print ((Bottom), (Top)); \
4404 #if (defined __STDC__ || defined __C99__FUNC__ \
4405 || defined __cplusplus || defined _MSC_VER)
4416 int yynrhs = yyr2[yyrule];
4418 unsigned long int yylno = yyrline[yyrule];
4419 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %lu):\n",
4422 for (yyi = 0; yyi < yynrhs; yyi++)
4426 &(yyvsp[(yyi + 1) - (yynrhs)])
4432 # define YY_REDUCE_PRINT(Rule) \
4435 yy_reduce_print (yyvsp, Rule, parser); \
4444 # define YYDPRINTF(Args)
4445 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
4446 # define YY_STACK_PRINT(Bottom, Top)
4447 # define YY_REDUCE_PRINT(Rule)
4453 # define YYINITDEPTH 200
4464 # define YYMAXDEPTH 10000
4471 # if defined __GLIBC__ && defined _STRING_H
4472 # define yystrlen strlen
4475 #if (defined __STDC__ || defined __C99__FUNC__ \
4476 || defined __cplusplus || defined _MSC_VER)
4486 for (yylen = 0; yystr[yylen]; yylen++)
4494 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
4495 # define yystpcpy stpcpy
4499 #if (defined __STDC__ || defined __C99__FUNC__ \
4500 || defined __cplusplus || defined _MSC_VER)
4502 yystpcpy (
char *yydest,
const char *yysrc)
4511 const char *yys = yysrc;
4513 while ((*yyd++ = *yys++) !=
'\0')
4535 char const *yyp = yystr;
4542 goto do_not_strip_quotes;
4546 goto do_not_strip_quotes;
4559 do_not_strip_quotes: ;
4565 return yystpcpy (yyres, yystr) - yyres;
4584 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
4586 const char *yyformat = 0;
4588 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
4622 int yyn = yypact[*yyssp];
4623 yyarg[yycount++] = yytname[yytoken];
4629 int yyxbegin = yyn < 0 ? -yyn : 0;
4631 int yychecklim =
YYLAST - yyn + 1;
4635 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
4636 if (yycheck[yyx + yyn] == yyx && yyx !=
YYTERROR
4639 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
4645 yyarg[yycount++] = yytname[yyx];
4646 yysize1 = yysize +
yytnamerr (0, yytname[yyx]);
4647 if (! (yysize <= yysize1
4657 # define YYCASE_(N, S) \
4662 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
4663 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
4664 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
4665 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
4666 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
4670 yysize1 = yysize +
yystrlen (yyformat);
4675 if (*yymsg_alloc < yysize)
4677 *yymsg_alloc = 2 * yysize;
4678 if (! (yysize <= *yymsg_alloc
4690 while ((*yyp = *yyformat) !=
'\0')
4691 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
4711 #if (defined __STDC__ || defined __C99__FUNC__ \
4712 || defined __cplusplus || defined _MSC_VER)
4741 #ifdef YYPARSE_PARAM
4742 #if defined __STDC__ || defined __cplusplus
4748 #if defined __STDC__ || defined __cplusplus
4760 #ifdef YYPARSE_PARAM
4761 #if (defined __STDC__ || defined __C99__FUNC__ \
4762 || defined __cplusplus || defined _MSC_VER)
4768 void *YYPARSE_PARAM;
4771 #if (defined __STDC__ || defined __C99__FUNC__ \
4772 || defined __cplusplus || defined _MSC_VER)
4825 char *yymsg = yymsgbuf;
4826 YYSIZE_T yymsg_alloc =
sizeof yymsgbuf;
4829 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
4840 YYDPRINTF ((stderr,
"Starting parse\n"));
4867 if (yyss + yystacksize - 1 <= yyssp)
4870 YYSIZE_T yysize = yyssp - yyss + 1;
4884 yyoverflow (
YY_(
"memory exhausted"),
4885 &yyss1, yysize *
sizeof (*yyssp),
4886 &yyvs1, yysize *
sizeof (*yyvsp),
4893 # ifndef YYSTACK_RELOCATE
4894 goto yyexhaustedlab;
4898 goto yyexhaustedlab;
4908 goto yyexhaustedlab;
4911 # undef YYSTACK_RELOCATE
4918 yyssp = yyss + yysize - 1;
4919 yyvsp = yyvs + yysize - 1;
4921 YYDPRINTF ((stderr,
"Stack size increased to %lu\n",
4922 (
unsigned long int) yystacksize));
4924 if (yyss + yystacksize - 1 <= yyssp)
4928 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
4944 yyn = yypact[yystate];
4953 YYDPRINTF ((stderr,
"Reading a token: "));
4957 if (yychar <=
YYEOF)
4959 yychar = yytoken =
YYEOF;
4960 YYDPRINTF ((stderr,
"Now at end of input.\n"));
4971 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
5003 yyn = yydefact[yystate];
5024 yyval = yyvsp[1-yylen];
5054 NODE *node = (yyvsp[(2) - (2)].
node);
5055 while (node->nd_next) {
5056 node = node->nd_next;
5080 (yyval.
node) = (yyvsp[(1) - (2)].node);
5155 (yyvsp[(4) - (5)].node));
5171 (yyval.
node) = (yyvsp[(1) - (4)].node);
5172 if ((yyvsp[(2) - (4)].node)) {
5173 (yyval.
node) =
NEW_RESCUE((yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].
node), (yyvsp[(3) - (4)].node));
5175 else if ((yyvsp[(3) - (4)].node)) {
5176 rb_warn0(
"else without rescue is useless");
5179 if ((yyvsp[(4) - (4)].node)) {
5208 (yyval.
node) = (yyvsp[(1) - (2)].node);
5302 buf[1] = (char)(yyvsp[(3) - (3)].node)->nd_nth;
5316 yyerror(
"can't make alias for the number variables");
5331 (yyval.
node) = (yyvsp[(2) - (2)].node);
5341 #line 1004 "parse.y"
5355 #line 1013 "parse.y"
5369 #line 1022 "parse.y"
5372 if ((yyvsp[(1) - (3)].node) &&
nd_type((yyvsp[(1) - (3)].node)) ==
NODE_BEGIN) {
5376 (yyval.
node) =
NEW_WHILE(
cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node), 1);
5387 #line 1035 "parse.y"
5390 if ((yyvsp[(1) - (3)].node) &&
nd_type((yyvsp[(1) - (3)].node)) ==
NODE_BEGIN) {
5391 (yyval.
node) =
NEW_UNTIL(
cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node)->nd_body, 0);
5394 (yyval.
node) =
NEW_UNTIL(
cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node), 1);
5405 #line 1048 "parse.y"
5419 #line 1057 "parse.y"
5422 rb_warn0(
"END in method; use at_exit");
5426 NODE_SCOPE, 0 , (yyvsp[(3) - (4)].node) , 0 ));
5436 #line 1070 "parse.y"
5440 (yyvsp[(1) - (3)].
node)->
nd_value = (yyvsp[(3) - (3)].node);
5441 (yyval.
node) = (yyvsp[(1) - (3)].node);
5451 #line 1080 "parse.y"
5455 if ((yyvsp[(1) - (3)].node)) {
5457 if ((yyvsp[(2) - (3)].
id) ==
tOROP) {
5458 (yyvsp[(1) - (3)].
node)->
nd_value = (yyvsp[(3) - (3)].node);
5464 else if ((yyvsp[(2) - (3)].
id) ==
tANDOP) {
5465 (yyvsp[(1) - (3)].
node)->
nd_value = (yyvsp[(3) - (3)].node);
5469 (yyval.
node) = (yyvsp[(1) - (3)].node);
5485 #line 1109 "parse.y"
5491 if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].
node) =
NEW_ZARRAY();
5492 args =
arg_concat((yyvsp[(3) - (6)].node), (yyvsp[(6) - (6)].node));
5493 if ((yyvsp[(5) - (6)].
id) ==
tOROP) {
5494 (yyvsp[(5) - (6)].
id) = 0;
5496 else if ((yyvsp[(5) - (6)].
id) ==
tANDOP) {
5497 (yyvsp[(5) - (6)].
id) = 1;
5511 #line 1130 "parse.y"
5515 if ((yyvsp[(4) - (5)].
id) ==
tOROP) {
5516 (yyvsp[(4) - (5)].
id) = 0;
5518 else if ((yyvsp[(4) - (5)].
id) ==
tANDOP) {
5519 (yyvsp[(4) - (5)].
id) = 1;
5521 (yyval.
node) =
NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
5533 #line 1147 "parse.y"
5537 if ((yyvsp[(4) - (5)].
id) ==
tOROP) {
5538 (yyvsp[(4) - (5)].
id) = 0;
5540 else if ((yyvsp[(4) - (5)].
id) ==
tANDOP) {
5541 (yyvsp[(4) - (5)].
id) = 1;
5543 (yyval.
node) =
NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
5555 #line 1164 "parse.y"
5558 yyerror(
"constant re-assignment");
5571 #line 1175 "parse.y"
5575 if ((yyvsp[(4) - (5)].
id) ==
tOROP) {
5576 (yyvsp[(4) - (5)].
id) = 0;
5578 else if ((yyvsp[(4) - (5)].
id) ==
tANDOP) {
5579 (yyvsp[(4) - (5)].
id) = 1;
5581 (yyval.
node) =
NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
5593 #line 1192 "parse.y"
5608 #line 1202 "parse.y"
5622 #line 1211 "parse.y"
5625 (yyvsp[(1) - (3)].
node)->
nd_value = (yyvsp[(3) - (3)].node);
5626 (yyval.
node) = (yyvsp[(1) - (3)].node);
5636 #line 1220 "parse.y"
5639 (yyvsp[(1) - (3)].
node)->
nd_value = (yyvsp[(3) - (3)].node);
5640 (yyval.
node) = (yyvsp[(1) - (3)].node);
5650 #line 1232 "parse.y"
5664 #line 1241 "parse.y"
5678 #line 1254 "parse.y"
5691 #line 1262 "parse.y"
5704 #line 1270 "parse.y"
5717 #line 1278 "parse.y"
5730 #line 1289 "parse.y"
5734 (yyval.
node) = (yyvsp[(1) - (1)].node);
5745 #line 1306 "parse.y"
5748 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
5759 #line 1315 "parse.y"
5762 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
5773 #line 1326 "parse.y"
5786 #line 1336 "parse.y"
5801 #line 1348 "parse.y"
5815 #line 1357 "parse.y"
5820 (yyval.
node) = (yyvsp[(3) - (3)].node);
5832 #line 1369 "parse.y"
5835 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
5846 #line 1378 "parse.y"
5850 (yyvsp[(5) - (5)].
node)->
nd_iter =
NEW_CALL((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].node));
5851 (yyval.
node) = (yyvsp[(5) - (5)].node);
5863 #line 1390 "parse.y"
5866 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
5877 #line 1399 "parse.y"
5881 (yyvsp[(5) - (5)].
node)->
nd_iter =
NEW_CALL((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].node));
5882 (yyval.
node) = (yyvsp[(5) - (5)].node);
5894 #line 1411 "parse.y"
5908 #line 1420 "parse.y"
5922 #line 1429 "parse.y"
5935 #line 1437 "parse.y"
5948 #line 1445 "parse.y"
5961 #line 1456 "parse.y"
5964 (yyval.
node) = (yyvsp[(2) - (3)].node);
5974 #line 1467 "parse.y"
5987 #line 1477 "parse.y"
6000 #line 1485 "parse.y"
6013 #line 1493 "parse.y"
6026 #line 1501 "parse.y"
6040 #line 1510 "parse.y"
6053 #line 1518 "parse.y"
6067 #line 1527 "parse.y"
6080 #line 1535 "parse.y"
6094 #line 1544 "parse.y"
6107 #line 1552 "parse.y"
6121 #line 1564 "parse.y"
6124 (yyval.
node) = (yyvsp[(2) - (3)].node);
6134 #line 1574 "parse.y"
6147 #line 1582 "parse.y"
6160 #line 1592 "parse.y"
6173 #line 1600 "parse.y"
6186 #line 1610 "parse.y"
6195 #line 1614 "parse.y"
6204 #line 1618 "parse.y"
6207 (yyval.
node) =
aryset((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
node));
6217 #line 1626 "parse.y"
6220 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6230 #line 1634 "parse.y"
6233 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6243 #line 1642 "parse.y"
6246 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6256 #line 1650 "parse.y"
6260 yyerror(
"dynamic constant assignment");
6273 #line 1662 "parse.y"
6277 yyerror(
"dynamic constant assignment");
6288 #line 1672 "parse.y"
6303 #line 1684 "parse.y"
6317 #line 1693 "parse.y"
6331 #line 1702 "parse.y"
6334 (yyval.
node) =
aryset((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
node));
6344 #line 1710 "parse.y"
6347 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6357 #line 1718 "parse.y"
6360 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6370 #line 1726 "parse.y"
6373 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6383 #line 1734 "parse.y"
6387 yyerror(
"dynamic constant assignment");
6401 #line 1747 "parse.y"
6405 yyerror(
"dynamic constant assignment");
6419 #line 1760 "parse.y"
6433 #line 1771 "parse.y"
6436 yyerror(
"class/module name must be CONSTANT");
6446 #line 1782 "parse.y"
6459 #line 1790 "parse.y"
6472 #line 1798 "parse.y"
6485 #line 1811 "parse.y"
6488 (yyval.
id) = (yyvsp[(1) - (1)].
id);
6495 #line 1816 "parse.y"
6499 (yyval.
id) = (yyvsp[(1) - (1)].
id);
6509 #line 1831 "parse.y"
6522 #line 1842 "parse.y"
6535 #line 1849 "parse.y"
6542 #line 1850 "parse.y"
6555 #line 1859 "parse.y"
6562 #line 1860 "parse.y"
6569 #line 1861 "parse.y"
6576 #line 1862 "parse.y"
6583 #line 1863 "parse.y"
6590 #line 1864 "parse.y"
6597 #line 1865 "parse.y"
6604 #line 1866 "parse.y"
6611 #line 1867 "parse.y"
6618 #line 1868 "parse.y"
6625 #line 1869 "parse.y"
6632 #line 1870 "parse.y"
6639 #line 1871 "parse.y"
6646 #line 1872 "parse.y"
6653 #line 1873 "parse.y"
6660 #line 1874 "parse.y"
6667 #line 1875 "parse.y"
6674 #line 1876 "parse.y"
6681 #line 1877 "parse.y"
6688 #line 1878 "parse.y"
6695 #line 1879 "parse.y"
6702 #line 1880 "parse.y"
6709 #line 1881 "parse.y"
6716 #line 1882 "parse.y"
6723 #line 1883 "parse.y"
6730 #line 1884 "parse.y"
6737 #line 1885 "parse.y"
6744 #line 1886 "parse.y"
6751 #line 1887 "parse.y"
6758 #line 1905 "parse.y"
6772 #line 1914 "parse.y"
6787 #line 1924 "parse.y"
6791 if ((yyvsp[(1) - (3)].node)) {
6793 if ((yyvsp[(2) - (3)].
id) ==
tOROP) {
6794 (yyvsp[(1) - (3)].
node)->
nd_value = (yyvsp[(3) - (3)].node);
6800 else if ((yyvsp[(2) - (3)].
id) ==
tANDOP) {
6801 (yyvsp[(1) - (3)].
node)->
nd_value = (yyvsp[(3) - (3)].node);
6805 (yyval.
node) = (yyvsp[(1) - (3)].node);
6821 #line 1953 "parse.y"
6826 if ((yyvsp[(1) - (5)].node)) {
6828 if ((yyvsp[(2) - (5)].
id) ==
tOROP) {
6829 (yyvsp[(1) - (5)].
node)->
nd_value = (yyvsp[(3) - (5)].node);
6835 else if ((yyvsp[(2) - (5)].
id) ==
tANDOP) {
6836 (yyvsp[(1) - (5)].
node)->
nd_value = (yyvsp[(3) - (5)].node);
6840 (yyval.
node) = (yyvsp[(1) - (5)].node);
6857 #line 1984 "parse.y"
6863 if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].
node) =
NEW_ZARRAY();
6865 args =
NEW_ARGSCAT((yyvsp[(3) - (6)].node), (yyvsp[(6) - (6)].node));
6868 args =
arg_concat((yyvsp[(3) - (6)].node), (yyvsp[(6) - (6)].node));
6870 if ((yyvsp[(5) - (6)].
id) ==
tOROP) {
6871 (yyvsp[(5) - (6)].
id) = 0;
6873 else if ((yyvsp[(5) - (6)].
id) ==
tANDOP) {
6874 (yyvsp[(5) - (6)].
id) = 1;
6888 #line 2010 "parse.y"
6892 if ((yyvsp[(4) - (5)].
id) ==
tOROP) {
6893 (yyvsp[(4) - (5)].
id) = 0;
6895 else if ((yyvsp[(4) - (5)].
id) ==
tANDOP) {
6896 (yyvsp[(4) - (5)].
id) = 1;
6898 (yyval.
node) =
NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
6910 #line 2027 "parse.y"
6914 if ((yyvsp[(4) - (5)].
id) ==
tOROP) {
6915 (yyvsp[(4) - (5)].
id) = 0;
6917 else if ((yyvsp[(4) - (5)].
id) ==
tANDOP) {
6918 (yyvsp[(4) - (5)].
id) = 1;
6920 (yyval.
node) =
NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
6932 #line 2044 "parse.y"
6936 if ((yyvsp[(4) - (5)].
id) ==
tOROP) {
6937 (yyvsp[(4) - (5)].
id) = 0;
6939 else if ((yyvsp[(4) - (5)].
id) ==
tANDOP) {
6940 (yyvsp[(4) - (5)].
id) = 1;
6942 (yyval.
node) =
NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
6954 #line 2061 "parse.y"
6957 yyerror(
"constant re-assignment");
6970 #line 2072 "parse.y"
6973 yyerror(
"constant re-assignment");
6986 #line 2083 "parse.y"
7002 #line 2094 "parse.y"
7021 #line 2108 "parse.y"
7040 #line 2122 "parse.y"
7053 #line 2130 "parse.y"
7066 #line 2138 "parse.y"
7079 #line 2146 "parse.y"
7092 #line 2154 "parse.y"
7105 #line 2162 "parse.y"
7118 #line 2170 "parse.y"
7132 #line 2179 "parse.y"
7146 #line 2188 "parse.y"
7159 #line 2196 "parse.y"
7172 #line 2204 "parse.y"
7185 #line 2212 "parse.y"
7198 #line 2220 "parse.y"
7211 #line 2228 "parse.y"
7224 #line 2236 "parse.y"
7237 #line 2244 "parse.y"
7250 #line 2252 "parse.y"
7263 #line 2260 "parse.y"
7276 #line 2268 "parse.y"
7289 #line 2276 "parse.y"
7302 #line 2284 "parse.y"
7315 #line 2292 "parse.y"
7331 #line 2303 "parse.y"
7344 #line 2311 "parse.y"
7357 #line 2319 "parse.y"
7370 #line 2327 "parse.y"
7383 #line 2335 "parse.y"
7396 #line 2343 "parse.y"
7409 #line 2351 "parse.y"
7422 #line 2358 "parse.y"
7429 #line 2359 "parse.y"
7444 #line 2369 "parse.y"
7448 (yyval.
node) =
NEW_IF(
cond((yyvsp[(1) - (6)].node)), (yyvsp[(3) - (6)].
node), (yyvsp[(6) - (6)].node));
7459 #line 2379 "parse.y"
7461 (yyval.
node) = (yyvsp[(1) - (1)].node);
7468 #line 2385 "parse.y"
7472 (yyval.
node) = (yyvsp[(1) - (1)].node);
7483 #line 2398 "parse.y"
7485 (yyval.
node) = (yyvsp[(1) - (2)].node);
7492 #line 2402 "parse.y"
7505 #line 2410 "parse.y"
7518 #line 2420 "parse.y"
7521 (yyval.
node) = (yyvsp[(2) - (3)].node);
7531 #line 2436 "parse.y"
7533 (yyval.
node) = (yyvsp[(1) - (2)].node);
7540 #line 2440 "parse.y"
7553 #line 2448 "parse.y"
7566 #line 2458 "parse.y"
7580 #line 2467 "parse.y"
7593 #line 2475 "parse.y"
7608 #line 2485 "parse.y"
7622 #line 2502 "parse.y"
7632 #line 2507 "parse.y"
7636 (yyval.
node) = (yyvsp[(2) - (2)].node);
7643 #line 2515 "parse.y"
7656 #line 2525 "parse.y"
7658 (yyval.
node) = (yyvsp[(2) - (2)].node);
7665 #line 2529 "parse.y"
7674 #line 2535 "parse.y"
7687 #line 2543 "parse.y"
7700 #line 2551 "parse.y"
7704 if ((n1 =
splat_array((yyvsp[(1) - (3)].node))) != 0) {
7719 #line 2565 "parse.y"
7738 #line 2581 "parse.y"
7742 if ((n1 =
splat_array((yyvsp[(1) - (3)].node))) != 0) {
7757 #line 2595 "parse.y"
7762 (n1 =
splat_array((yyvsp[(1) - (4)].node))) != 0) {
7777 #line 2610 "parse.y"
7790 #line 2628 "parse.y"
7803 #line 2636 "parse.y"
7815 #line 2644 "parse.y"
7818 if ((yyvsp[(3) - (4)].node) ==
NULL) {
7824 nd_set_line((yyvsp[(3) - (4)].node), (yyvsp[(2) - (4)].num));
7837 #line 2660 "parse.y"
7844 #line 2661 "parse.y"
7846 rb_warning0(
"(...) interpreted as grouped expression");
7848 (yyval.
node) = (yyvsp[(2) - (4)].node);
7858 #line 2670 "parse.y"
7861 (yyval.
node) = (yyvsp[(2) - (3)].node);
7871 #line 2678 "parse.y"
7884 #line 2686 "parse.y"
7897 #line 2694 "parse.y"
7900 if ((yyvsp[(2) - (3)].node) == 0) {
7904 (yyval.
node) = (yyvsp[(2) - (3)].node);
7915 #line 2707 "parse.y"
7928 #line 2715 "parse.y"
7941 #line 2723 "parse.y"
7954 #line 2731 "parse.y"
7967 #line 2739 "parse.y"
7980 #line 2746 "parse.y"
7987 #line 2747 "parse.y"
8002 #line 2757 "parse.y"
8015 #line 2765 "parse.y"
8028 #line 2773 "parse.y"
8032 (yyval.
node) = (yyvsp[(2) - (2)].node);
8033 fixpos((yyvsp[(2) - (2)].node)->
nd_iter, (yyvsp[(2) - (2)].node));
8044 #line 2785 "parse.y"
8048 (yyvsp[(2) - (2)].
node)->
nd_iter = (yyvsp[(1) - (2)].node);
8049 (yyval.
node) = (yyvsp[(2) - (2)].node);
8060 #line 2796 "parse.y"
8062 (yyval.
node) = (yyvsp[(2) - (2)].node);
8069 #line 2803 "parse.y"
8072 (yyval.
node) =
NEW_IF(
cond((yyvsp[(2) - (6)].node)), (yyvsp[(4) - (6)].node), (yyvsp[(5) - (6)].
node));
8083 #line 2815 "parse.y"
8086 (yyval.
node) =
NEW_UNLESS(
cond((yyvsp[(2) - (6)].node)), (yyvsp[(4) - (6)].
node), (yyvsp[(5) - (6)].node));
8097 #line 2823 "parse.y"
8104 #line 2823 "parse.y"
8111 #line 2826 "parse.y"
8125 #line 2834 "parse.y"
8132 #line 2834 "parse.y"
8139 #line 2837 "parse.y"
8153 #line 2848 "parse.y"
8167 #line 2857 "parse.y"
8180 #line 2865 "parse.y"
8187 #line 2867 "parse.y"
8194 #line 2870 "parse.y"
8239 m->nd_next = (yyvsp[(2) - (9)].
node);
8248 tbl[0] = 1; tbl[1] =
id;
8249 (yyval.
node) =
NEW_FOR(0, (yyvsp[(5) - (9)].node), scope);
8260 #line 2931 "parse.y"
8263 yyerror(
"class definition in method body");
8275 #line 2942 "parse.y"
8278 (yyval.
node) =
NEW_CLASS((yyvsp[(2) - (6)].node), (yyvsp[(5) - (6)].
node), (yyvsp[(3) - (6)].node));
8290 #line 2952 "parse.y"
8300 #line 2957 "parse.y"
8311 #line 2964 "parse.y"
8328 #line 2976 "parse.y"
8331 yyerror(
"module definition in method body");
8343 #line 2987 "parse.y"
8358 #line 2997 "parse.y"
8370 #line 3006 "parse.y"
8389 #line 3019 "parse.y"
8396 #line 3020 "parse.y"
8407 #line 3028 "parse.y"
8412 (yyval.
node) =
NEW_DEFS((yyvsp[(2) - (9)].node), (yyvsp[(5) - (9)].
id), (yyvsp[(7) - (9)].node), body);
8425 #line 3041 "parse.y"
8438 #line 3049 "parse.y"
8451 #line 3057 "parse.y"
8464 #line 3065 "parse.y"
8477 #line 3075 "parse.y"
8481 (yyval.
node) = (yyvsp[(1) - (1)].node);
8492 #line 3087 "parse.y"
8501 #line 3093 "parse.y"
8510 #line 3099 "parse.y"
8519 #line 3105 "parse.y"
8528 #line 3111 "parse.y"
8537 #line 3117 "parse.y"
8546 #line 3123 "parse.y"
8555 #line 3129 "parse.y"
8564 #line 3135 "parse.y"
8573 #line 3141 "parse.y"
8586 #line 3151 "parse.y"
8595 #line 3181 "parse.y"
8598 (yyval.
node) =
NEW_IF(
cond((yyvsp[(2) - (5)].node)), (yyvsp[(4) - (5)].
node), (yyvsp[(5) - (5)].node));
8609 #line 3193 "parse.y"
8612 (yyval.
node) = (yyvsp[(2) - (2)].node);
8622 #line 3207 "parse.y"
8635 #line 3215 "parse.y"
8638 (yyval.
node) = (yyvsp[(2) - (3)].node);
8648 #line 3225 "parse.y"
8661 #line 3233 "parse.y"
8674 #line 3243 "parse.y"
8687 #line 3251 "parse.y"
8701 #line 3260 "parse.y"
8715 #line 3269 "parse.y"
8728 #line 3277 "parse.y"
8741 #line 3285 "parse.y"
8755 #line 3294 "parse.y"
8772 #line 3306 "parse.y"
8785 #line 3314 "parse.y"
8798 #line 3324 "parse.y"
8801 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
node), (yyvsp[(5) - (6)].
id), 0, (yyvsp[(6) - (6)].
id));
8811 #line 3332 "parse.y"
8814 (yyval.
node) =
new_args((yyvsp[(1) - (8)].node), (yyvsp[(3) - (8)].
node), (yyvsp[(5) - (8)].
id), (yyvsp[(7) - (8)].
node), (yyvsp[(8) - (8)].
id));
8824 #line 3340 "parse.y"
8827 (yyval.
node) =
new_args((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
node), 0, 0, (yyvsp[(4) - (4)].
id));
8837 #line 3348 "parse.y"
8840 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
node), 0, (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
id));
8850 #line 3356 "parse.y"
8853 (yyval.
node) =
new_args((yyvsp[(1) - (4)].node), 0, (yyvsp[(3) - (4)].
id), 0, (yyvsp[(4) - (4)].
id));
8863 #line 3364 "parse.y"
8866 (yyval.
node) =
new_args((yyvsp[(1) - (2)].node), 0, 1, 0, 0);
8877 #line 3373 "parse.y"
8880 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), 0, (yyvsp[(3) - (6)].
id), (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
id));
8890 #line 3381 "parse.y"
8893 (yyval.
node) =
new_args((yyvsp[(1) - (2)].node), 0, 0, 0, (yyvsp[(2) - (2)].
id));
8903 #line 3389 "parse.y"
8906 (yyval.
node) =
new_args(0, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), 0, (yyvsp[(4) - (4)].
id));
8916 #line 3397 "parse.y"
8919 (yyval.
node) =
new_args(0, (yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
id), (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
id));
8929 #line 3405 "parse.y"
8932 (yyval.
node) =
new_args(0, (yyvsp[(1) - (2)].node), 0, 0, (yyvsp[(2) - (2)].
id));
8942 #line 3413 "parse.y"
8945 (yyval.
node) =
new_args(0, (yyvsp[(1) - (4)].node), 0, (yyvsp[(3) - (4)].
node), (yyvsp[(4) - (4)].
id));
8955 #line 3421 "parse.y"
8958 (yyval.
node) =
new_args(0, 0, (yyvsp[(1) - (2)].
id), 0, (yyvsp[(2) - (2)].
id));
8968 #line 3429 "parse.y"
8971 (yyval.
node) =
new_args(0, 0, (yyvsp[(1) - (4)].
id), (yyvsp[(3) - (4)].
node), (yyvsp[(4) - (4)].
id));
8981 #line 3437 "parse.y"
8984 (yyval.
node) =
new_args(0, 0, 0, 0, (yyvsp[(1) - (1)].
id));
8994 #line 3448 "parse.y"
9003 #line 3454 "parse.y"
9017 #line 3463 "parse.y"
9031 #line 3472 "parse.y"
9034 (yyval.
node) = (yyvsp[(2) - (4)].node);
9044 #line 3484 "parse.y"
9057 #line 3510 "parse.y"
9070 #line 3518 "parse.y"
9079 #line 3523 "parse.y"
9088 #line 3526 "parse.y"
9098 #line 3532 "parse.y"
9102 (yyval.
node) = (yyvsp[(3) - (4)].node);
9114 #line 3545 "parse.y"
9127 #line 3553 "parse.y"
9140 #line 3563 "parse.y"
9142 (yyval.
node) = (yyvsp[(2) - (3)].node);
9149 #line 3567 "parse.y"
9151 (yyval.
node) = (yyvsp[(2) - (3)].node);
9158 #line 3573 "parse.y"
9170 #line 3582 "parse.y"
9185 #line 3594 "parse.y"
9194 (yyvsp[(2) - (2)].
node)->
nd_iter = (yyvsp[(1) - (2)].node);
9195 (yyval.
node) = (yyvsp[(2) - (2)].node);
9206 #line 3610 "parse.y"
9209 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
9220 #line 3619 "parse.y"
9223 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
9234 #line 3630 "parse.y"
9248 #line 3639 "parse.y"
9251 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
9263 #line 3649 "parse.y"
9266 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
9278 #line 3659 "parse.y"
9281 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id), 0);
9291 #line 3667 "parse.y"
9307 #line 3678 "parse.y"
9323 #line 3689 "parse.y"
9336 #line 3697 "parse.y"
9349 #line 3705 "parse.y"
9352 if ((yyvsp[(1) - (4)].node) &&
nd_type((yyvsp[(1) - (4)].node)) ==
NODE_SELF)
9355 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node),
tAREF, (yyvsp[(3) - (4)].node));
9366 #line 3719 "parse.y"
9379 #line 3728 "parse.y"
9394 #line 3738 "parse.y"
9407 #line 3747 "parse.y"
9422 #line 3761 "parse.y"
9425 (yyval.
node) =
NEW_WHEN((yyvsp[(2) - (5)].node), (yyvsp[(4) - (5)].
node), (yyvsp[(5) - (5)].node));
9435 #line 3777 "parse.y"
9438 if ((yyvsp[(3) - (6)].node)) {
9442 (yyval.
node) =
NEW_RESBODY((yyvsp[(2) - (6)].node), (yyvsp[(5) - (6)].
node), (yyvsp[(6) - (6)].node));
9457 #line 3797 "parse.y"
9470 #line 3805 "parse.y"
9483 #line 3816 "parse.y"
9485 (yyval.
node) = (yyvsp[(2) - (2)].node);
9492 #line 3823 "parse.y"
9495 (yyval.
node) = (yyvsp[(2) - (2)].node);
9505 #line 3835 "parse.y"
9518 #line 3846 "parse.y"
9521 NODE *node = (yyvsp[(1) - (1)].
node);
9528 (yyval.
node) = node;
9538 #line 3865 "parse.y"
9551 #line 3875 "parse.y"
9554 (yyval.
node) = (yyvsp[(2) - (3)].node);
9564 #line 3885 "parse.y"
9567 NODE *node = (yyvsp[(2) - (3)].
node);
9584 (yyval.
node) = node;
9594 #line 3912 "parse.y"
9598 NODE *node = (yyvsp[(2) - (3)].
node);
9606 VALUE src = node->nd_lit;
9622 for (list = (prev = node)->
nd_next;
list; list = list->nd_next) {
9624 VALUE tail = list->nd_head->nd_lit;
9626 VALUE lit = prev == node ? prev->nd_lit : prev->nd_head->nd_lit;
9632 prev->nd_next = list->nd_next;
9645 if (!node->nd_next) {
9646 VALUE src = node->nd_lit;
9652 (yyval.
node) = node;
9662 #line 3977 "parse.y"
9676 #line 3986 "parse.y"
9679 (yyval.
node) = (yyvsp[(2) - (3)].node);
9689 #line 3996 "parse.y"
9702 #line 4004 "parse.y"
9715 #line 4022 "parse.y"
9728 #line 4032 "parse.y"
9742 #line 4041 "parse.y"
9745 (yyval.
node) = (yyvsp[(2) - (3)].node);
9755 #line 4051 "parse.y"
9768 #line 4059 "parse.y"
9781 #line 4069 "parse.y"
9794 #line 4077 "parse.y"
9807 #line 4087 "parse.y"
9820 #line 4095 "parse.y"
9833 #line 4105 "parse.y"
9846 #line 4113 "parse.y"
9849 NODE *head = (yyvsp[(1) - (2)].
node), *tail = (yyvsp[(2) - (2)].node);
9851 (yyval.
node) = tail;
9854 (yyval.
node) = head;
9878 #line 4143 "parse.y"
9889 #line 4149 "parse.y"
9904 #line 4159 "parse.y"
9916 #line 4165 "parse.y"
9927 #line 4171 "parse.y"
9933 if ((yyvsp[(4) - (5)].node)) (yyvsp[(4) - (5)].node)->flags &= ~
NODE_FL_NEWLINE;
9944 #line 4185 "parse.y"
9957 #line 4193 "parse.y"
9970 #line 4201 "parse.y"
9983 #line 4212 "parse.y"
9987 (yyval.
id) = (yyvsp[(2) - (2)].
id);
9997 #line 4229 "parse.y"
10001 if (!((yyval.
node) = (yyvsp[(2) - (3)].
node))) {
10030 #line 4261 "parse.y"
10043 #line 4269 "parse.y"
10056 #line 4285 "parse.y"
10063 #line 4286 "parse.y"
10070 #line 4287 "parse.y"
10077 #line 4288 "parse.y"
10084 #line 4289 "parse.y"
10091 #line 4290 "parse.y"
10098 #line 4291 "parse.y"
10105 #line 4295 "parse.y"
10123 #line 4308 "parse.y"
10136 #line 4318 "parse.y"
10149 #line 4326 "parse.y"
10162 #line 4340 "parse.y"
10175 #line 4348 "parse.y"
10184 #line 4352 "parse.y"
10186 (yyval.
node) = (yyvsp[(3) - (4)].node);
10193 #line 4356 "parse.y"
10208 #line 4368 "parse.y"
10211 (yyval.
node) = (yyvsp[(2) - (3)].node);
10223 #line 4378 "parse.y"
10225 (yyval.
node) = (yyvsp[(1) - (2)].node);
10234 #line 4386 "parse.y"
10237 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
node), (yyvsp[(5) - (6)].
id), 0, (yyvsp[(6) - (6)].
id));
10247 #line 4394 "parse.y"
10250 (yyval.
node) =
new_args((yyvsp[(1) - (8)].node), (yyvsp[(3) - (8)].
node), (yyvsp[(5) - (8)].
id), (yyvsp[(7) - (8)].
node), (yyvsp[(8) - (8)].
id));
10260 #line 4402 "parse.y"
10263 (yyval.
node) =
new_args((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
node), 0, 0, (yyvsp[(4) - (4)].
id));
10273 #line 4410 "parse.y"
10276 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
node), 0, (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
id));
10286 #line 4418 "parse.y"
10289 (yyval.
node) =
new_args((yyvsp[(1) - (4)].node), 0, (yyvsp[(3) - (4)].
id), 0, (yyvsp[(4) - (4)].
id));
10299 #line 4426 "parse.y"
10302 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), 0, (yyvsp[(3) - (6)].
id), (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
id));
10312 #line 4434 "parse.y"
10315 (yyval.
node) =
new_args((yyvsp[(1) - (2)].node), 0, 0, 0, (yyvsp[(2) - (2)].
id));
10325 #line 4442 "parse.y"
10328 (yyval.
node) =
new_args(0, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), 0, (yyvsp[(4) - (4)].
id));
10338 #line 4450 "parse.y"
10341 (yyval.
node) =
new_args(0, (yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
id), (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
id));
10351 #line 4458 "parse.y"
10354 (yyval.
node) =
new_args(0, (yyvsp[(1) - (2)].node), 0, 0, (yyvsp[(2) - (2)].
id));
10364 #line 4466 "parse.y"
10367 (yyval.
node) =
new_args(0, (yyvsp[(1) - (4)].node), 0, (yyvsp[(3) - (4)].
node), (yyvsp[(4) - (4)].
id));
10377 #line 4474 "parse.y"
10380 (yyval.
node) =
new_args(0, 0, (yyvsp[(1) - (2)].
id), 0, (yyvsp[(2) - (2)].
id));
10390 #line 4482 "parse.y"
10393 (yyval.
node) =
new_args(0, 0, (yyvsp[(1) - (4)].
id), (yyvsp[(3) - (4)].
node), (yyvsp[(4) - (4)].
id));
10403 #line 4490 "parse.y"
10406 (yyval.
node) =
new_args(0, 0, 0, 0, (yyvsp[(1) - (1)].
id));
10416 #line 4498 "parse.y"
10429 #line 4508 "parse.y"
10432 yyerror(
"formal argument cannot be a constant");
10443 #line 4517 "parse.y"
10446 yyerror(
"formal argument cannot be an instance variable");
10457 #line 4526 "parse.y"
10460 yyerror(
"formal argument cannot be a global variable");
10471 #line 4535 "parse.y"
10474 yyerror(
"formal argument cannot be a class variable");
10485 #line 4547 "parse.y"
10488 (yyval.
id) = (yyvsp[(1) - (1)].
id);
10495 #line 4554 "parse.y"
10509 #line 4563 "parse.y"
10531 #line 4589 "parse.y"
10534 (yyval.
node) = (yyvsp[(1) - (3)].node);
10547 #line 4602 "parse.y"
10562 #line 4614 "parse.y"
10577 #line 4626 "parse.y"
10580 (yyval.
node) = (yyvsp[(1) - (1)].node);
10590 #line 4634 "parse.y"
10593 NODE *opts = (yyvsp[(1) - (3)].
node);
10595 while (opts->nd_next) {
10596 opts = opts->nd_next;
10598 opts->nd_next = (yyvsp[(3) - (3)].
node);
10599 (yyval.
node) = (yyvsp[(1) - (3)].node);
10609 #line 4650 "parse.y"
10612 (yyval.
node) = (yyvsp[(1) - (1)].node);
10622 #line 4658 "parse.y"
10625 NODE *opts = (yyvsp[(1) - (3)].
node);
10627 while (opts->nd_next) {
10628 opts = opts->nd_next;
10630 opts->nd_next = (yyvsp[(3) - (3)].
node);
10631 (yyval.
node) = (yyvsp[(1) - (3)].node);
10641 #line 4678 "parse.y"
10645 yyerror(
"rest argument must be local variable");
10649 (yyval.
id) = (yyvsp[(2) - (2)].
id);
10659 #line 4691 "parse.y"
10673 #line 4706 "parse.y"
10677 yyerror(
"block argument must be local variable");
10679 yyerror(
"duplicated block argument name");
10683 (yyval.
id) = (yyvsp[(2) - (2)].
id);
10693 #line 4723 "parse.y"
10695 (yyval.
id) = (yyvsp[(2) - (2)].
id);
10702 #line 4727 "parse.y"
10715 #line 4737 "parse.y"
10719 (yyval.
node) = (yyvsp[(1) - (1)].node);
10730 #line 4746 "parse.y"
10737 #line 4747 "parse.y"
10740 if ((yyvsp[(3) - (4)].node) == 0) {
10741 yyerror(
"can't define singleton method for ().");
10744 switch (
nd_type((yyvsp[(3) - (4)].node))) {
10753 yyerror(
"can't define singleton method for literals");
10759 (yyval.
node) = (yyvsp[(3) - (4)].node);
10769 #line 4777 "parse.y"
10772 (yyval.
node) = (yyvsp[(1) - (2)].node);
10782 #line 4794 "parse.y"
10795 #line 4804 "parse.y"
10808 #line 4812 "parse.y"
10821 #line 4868 "parse.y"
10828 #line 4873 "parse.y"
10835 #line 4877 "parse.y"
10848 #line 10847 "parse.c"
10876 yystate = yypgoto[yyn -
YYNTOKENS] + *yyssp;
10877 if (0 <= yystate && yystate <=
YYLAST && yycheck[yystate] == *yyssp)
10878 yystate = yytable[yystate];
10897 #if ! YYERROR_VERBOSE
10900 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
10903 char const *yymsgp =
YY_(
"syntax error");
10904 int yysyntax_error_status;
10906 if (yysyntax_error_status == 0)
10908 else if (yysyntax_error_status == 1)
10910 if (yymsg != yymsgbuf)
10916 yymsg_alloc =
sizeof yymsgbuf;
10917 yysyntax_error_status = 2;
10926 if (yysyntax_error_status == 2)
10927 goto yyexhaustedlab;
10929 # undef YYSYNTAX_ERROR
10935 if (yyerrstatus == 3)
10940 if (yychar <=
YYEOF)
10943 if (yychar ==
YYEOF)
10949 yytoken, &yylval, parser);
10987 yyn = yypact[yystate];
10993 yyn = yytable[yyn];
11005 yystos[yystate], yyvsp, parser);
11035 #if !defined(yyoverflow) || YYERROR_VERBOSE
11051 yydestruct (
"Cleanup: discarding lookahead",
11052 yytoken, &yylval, parser);
11058 while (yyssp != yyss)
11061 yystos[*yyssp], yyvsp, parser);
11068 #if YYERROR_VERBOSE
11069 if (yymsg != yymsgbuf)
11073 return YYID (yyresult);
11079 #line 4885 "parse.y"
11084 # define yylval (*((YYSTYPE*)(parser->parser_yylval)))
11093 # define nextc() parser_nextc(parser)
11094 # define pushback(c) parser_pushback(parser, (c))
11095 # define newtok() parser_newtok(parser)
11096 # define tokspace(n) parser_tokspace(parser, (n))
11097 # define tokadd(c) parser_tokadd(parser, (c))
11098 # define tok_hex(numlen) parser_tok_hex(parser, (numlen))
11099 # define read_escape(flags,e) parser_read_escape(parser, (flags), (e))
11100 # define tokadd_escape(e) parser_tokadd_escape(parser, (e))
11101 # define regx_options() parser_regx_options(parser)
11102 # define tokadd_string(f,t,p,n,e) parser_tokadd_string(parser,(f),(t),(p),(n),(e))
11103 # define parse_string(n) parser_parse_string(parser,(n))
11104 # define tokaddmbc(c, enc) parser_tokaddmbc(parser, (c), (enc))
11105 # define here_document(n) parser_here_document(parser,(n))
11106 # define heredoc_identifier() parser_heredoc_identifier(parser)
11107 # define heredoc_restore(n) parser_heredoc_restore(parser,(n))
11108 # define whole_match_p(e,l,i) parser_whole_match_p(parser,(e),(l),(i))
11111 # define set_yylval_str(x) (yylval.node = NEW_STR(x))
11112 # define set_yylval_num(x) (yylval.num = (x))
11113 # define set_yylval_id(x) (yylval.id = (x))
11114 # define set_yylval_name(x) (yylval.id = (x))
11115 # define set_yylval_literal(x) (yylval.node = NEW_LIT(x))
11116 # define set_yylval_node(x) (yylval.node = (x))
11117 # define yylval_id() (yylval.id)
11119 static inline VALUE
11120 ripper_yylval_id(
ID x)
11124 # define set_yylval_str(x) (void)(x)
11125 # define set_yylval_num(x) (void)(x)
11126 # define set_yylval_id(x) (void)(x)
11127 # define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(x))
11128 # define set_yylval_literal(x) (void)(x)
11129 # define set_yylval_node(x) (void)(x)
11130 # define yylval_id() yylval.id
11134 #define ripper_flush(p) (void)(p)
11136 #define ripper_flush(p) ((p)->tokp = (p)->parser_lex_p)
11138 #define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
11145 return lex_p > parser->tokp;
11158 ripper_dispatch_scan_event(
struct parser_params *parser,
int t)
11160 if (!ripper_has_scan_event(parser))
return;
11161 yylval_rval = ripper_scan_event_val(parser, t);
11165 ripper_dispatch_ignored_scan_event(
struct parser_params *parser,
int t)
11167 if (!ripper_has_scan_event(parser))
return;
11168 (void)ripper_scan_event_val(parser, t);
11172 ripper_dispatch_delayed_token(
struct parser_params *parser,
int t)
11175 const char *saved_tokp = parser->tokp;
11178 parser->tokp =
lex_pbeg + parser->delayed_col;
11180 parser->delayed =
Qnil;
11182 parser->tokp = saved_tokp;
11193 #undef SIGN_EXTEND_CHAR
11195 # define SIGN_EXTEND_CHAR(c) ((signed char)(c))
11198 # define SIGN_EXTEND_CHAR(c) ((((unsigned char)(c)) ^ 128) - 128)
11201 #define parser_encoding_name() (parser->enc->name)
11202 #define parser_mbclen() mbclen((lex_p-1),lex_pend,parser->enc)
11203 #define parser_precise_mbclen() rb_enc_precise_mbclen((lex_p-1),lex_pend,parser->enc)
11204 #define is_identchar(p,e,enc) (rb_enc_isalnum(*(p),(enc)) || (*(p)) == '_' || !ISASCII(*(p)))
11205 #define parser_is_identchar() (!parser->eofp && is_identchar((lex_p-1),lex_pend,parser->enc))
11207 #define parser_isascii() ISASCII(*(lex_p-1))
11215 for (p =
lex_pbeg; p < pend; p++) {
11217 column = (((column - 1) / 8) + 1) * 8;
11228 for (p =
lex_pbeg; p < pend; p++) {
11229 if (*p !=
' ' && *p !=
'\t') {
11236 #undef token_info_push
11253 #undef token_info_pop
11260 if (!ptinfo)
return;
11266 if (linenum == ptinfo->
linenum) {
11274 "mismatched indentations at '%s' with '%s' at %d",
11287 const int max_line_margin = 30;
11288 const char *
p, *pe;
11296 if (*p ==
'\n')
break;
11303 if (*pe ==
'\n')
break;
11310 const char *pre =
"", *post =
"";
11312 if (len > max_line_margin * 2 + 10) {
11313 if (
lex_p - p > max_line_margin) {
11317 if (pe -
lex_p > max_line_margin) {
11324 MEMCPY(buf, p,
char, len);
11328 i = (int)(
lex_p - p);
11329 p2 =
buf; pe = buf +
len;
11332 if (*p2 !=
'\t') *p2 =
' ';
11340 dispatch1(parse_error,
STR_NEW2(msg));
11352 CONST_ID(script_lines,
"SCRIPT_LINES__");
11369 if (
RTEST(coverages) &&
RBASIC(coverages)->klass == 0) {
11373 RBASIC(lines)->klass = 0;
11375 RARRAY(lines)->as.heap.len = n;
11423 if (parser->
nerr) {
11433 return (
VALUE)tree;
11458 char *beg, *end, *pend;
11468 while (end < pend) {
11469 if (*end++ ==
'\n')
break;
11479 if (
NIL_P(line))
return line;
11503 volatile VALUE tmp;
11564 volatile VALUE tmp;
11580 #define STR_FUNC_ESCAPE 0x01
11581 #define STR_FUNC_EXPAND 0x02
11582 #define STR_FUNC_REGEXP 0x04
11583 #define STR_FUNC_QWORDS 0x08
11584 #define STR_FUNC_SYMBOL 0x10
11585 #define STR_FUNC_INDENT 0x20
11615 #define lex_goto_eol(parser) ((parser)->parser_lex_p = (parser)->parser_lex_pend)
11616 #define lex_eol_p() (lex_p >= lex_pend)
11617 #define peek(c) peek_n((c), 0)
11618 #define peek_n(c,n) (lex_p+(n) < lex_pend && (c) == (unsigned char)lex_p[n])
11641 if (
NIL_P(parser->delayed)) {
11645 parser->tokp,
lex_pend - parser->tokp);
11647 parser->delayed_col = (int)(parser->tokp -
lex_pbeg);
11651 parser->tokp,
lex_pend - parser->tokp);
11667 c = (
unsigned char)*
lex_p++;
11668 if (c ==
'\r' &&
peek(
'\n')) {
11679 if (c == -1)
return;
11686 #define was_bol() (lex_p == lex_pbeg + 1)
11688 #define tokfix() (tokenbuf[tokidx]='\0')
11689 #define tok() tokenbuf
11690 #define toklen() tokidx
11691 #define toklast() (tokidx>0?tokenbuf[tokidx-1]:0)
11737 yyerror(
"invalid hex escape");
11744 #define tokcopy(n) memcpy(tokspace(n), lex_p - (n), (n))
11748 int string_literal,
int symbol_literal,
int regexp_literal)
11768 yyerror(
"invalid Unicode escape");
11771 if (codepoint > 0x10ffff) {
11772 yyerror(
"invalid Unicode codepoint (too large)");
11776 if (regexp_literal) {
11779 else if (codepoint >= 0x80) {
11781 if (string_literal)
tokaddmbc(codepoint, *encp);
11783 else if (string_literal) {
11786 }
while (string_literal && (
peek(
' ') ||
peek(
'\t')));
11789 yyerror(
"unterminated Unicode escape");
11793 if (regexp_literal) {
tokadd(
'}'); }
11799 yyerror(
"invalid Unicode escape");
11803 if (regexp_literal) {
11806 else if (codepoint >= 0x80) {
11808 if (string_literal)
tokaddmbc(codepoint, *encp);
11810 else if (string_literal) {
11818 #define ESCAPE_CONTROL 1
11819 #define ESCAPE_META 2
11828 switch (c =
nextc()) {
11853 case '0':
case '1':
case '2':
case '3':
11854 case '4':
case '5':
case '6':
case '7':
11862 if (numlen == 0)
return 0;
11873 if ((c =
nextc()) !=
'-') {
11877 if ((c =
nextc()) ==
'\\') {
11878 if (
peek(
'u'))
goto eof;
11879 return read_escape(flags|ESCAPE_META, encp) | 0x80;
11881 else if (c == -1 || !
ISASCII(c))
goto eof;
11883 return ((c & 0xff) | 0x80);
11887 if ((c =
nextc()) !=
'-') {
11893 if ((c =
nextc())==
'\\') {
11894 if (
peek(
'u'))
goto eof;
11899 else if (c == -1 || !
ISASCII(c))
goto eof;
11904 yyerror(
"Invalid escape character syntax");
11927 switch (c =
nextc()) {
11931 case '0':
case '1':
case '2':
case '3':
11932 case '4':
case '5':
case '6':
case '7':
11935 if (numlen == 0)
goto eof;
11944 if (numlen == 0)
return -1;
11951 if ((c =
nextc()) !=
'-') {
11961 if ((c =
nextc()) !=
'-') {
11969 if (flags & ESCAPE_CONTROL)
goto eof;
11973 if ((c =
nextc()) ==
'\\') {
11976 else if (c == -1)
goto eof;
11982 yyerror(
"Invalid escape character syntax");
12051 #define tokadd_mbchar(c) parser_tokadd_mbchar(parser, (c))
12055 int func,
int term,
int paren,
long *nest,
12059 int has_nonascii = 0;
12062 static const char mixed_msg[] =
"%s mixed within %s source";
12064 #define mixed_error(enc1, enc2) if (!errbuf) { \
12065 size_t len = sizeof(mixed_msg) - 4; \
12066 len += strlen(rb_enc_name(enc1)); \
12067 len += strlen(rb_enc_name(enc2)); \
12068 errbuf = ALLOCA_N(char, len); \
12069 snprintf(errbuf, len, mixed_msg, \
12070 rb_enc_name(enc1), \
12071 rb_enc_name(enc2)); \
12074 #define mixed_escape(beg, enc1, enc2) do { \
12075 const char *pos = lex_p; \
12077 mixed_error((enc1), (enc2)); \
12081 while ((c =
nextc()) != -1) {
12082 if (paren && c == paren) {
12085 else if (c == term) {
12086 if (!nest || !*nest) {
12094 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
12099 else if (c ==
'\\') {
12100 const char *beg =
lex_p - 1;
12105 if (func & STR_FUNC_EXPAND)
continue;
12114 if ((func & STR_FUNC_EXPAND) == 0) {
12121 if (has_nonascii && enc != *encp) {
12127 if (c == -1)
return -1;
12129 if ((func & STR_FUNC_EXPAND) == 0)
tokadd(
'\\');
12132 if (func & STR_FUNC_REGEXP) {
12136 if (has_nonascii && enc != *encp) {
12141 else if (func & STR_FUNC_EXPAND) {
12143 if (func & STR_FUNC_ESCAPE)
tokadd(
'\\');
12146 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
12149 else if (c != term && !(paren && c == paren)) {
12159 if (enc != *encp) {
12172 if (enc != *encp) {
12183 #define NEW_STRTERM(func, term, paren) \
12184 rb_node_newnode(NODE_STRTERM, (func), (term) | ((paren) << (CHAR_BIT * 2)), 0)
12190 if (!
NIL_P(parser->delayed)) {
12191 ptrdiff_t
len =
lex_p - parser->tokp;
12196 parser->tokp =
lex_p;
12200 #define flush_string_content(enc) ripper_flush_string_content(parser, (enc))
12202 #define flush_string_content(enc) ((void)(enc))
12209 #define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
12210 #define SPECIAL_PUNCT(idx) ( \
12211 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
12212 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
12213 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
12214 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
12215 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
12223 #undef SPECIAL_PUNCT
12229 if (c <= 0x20 || 0x7e < c)
return 0;
12230 return (ruby_global_name_punct_bits[(c - 0x20) / 32] >> (c % 32)) & 1;
12243 if ((c = *p) ==
'-') {
12252 if ((c = *p) ==
'@') {
12272 int func = (int)quote->nd_func;
12284 if (c == term && !quote->nd_nest) {
12285 if (func & STR_FUNC_QWORDS) {
12286 quote->nd_func = -1;
12348 while ((c =
nextc()) != -1 && c != term) {
12395 line = here->nd_orig;
12409 const char *eos,
long len,
int indent)
12415 while (*p &&
ISSPACE(*p)) p++;
12418 if (n < 0 || (n > 0 && p[len] !=
'\n' && p[len] !=
'\r'))
return FALSE;
12419 return strncmp(eos, p, len) == 0;
12426 if (!
NIL_P(parser->delayed))
12429 ripper_dispatch_ignored_scan_event(parser,
tHEREDOC_END);
12432 #define dispatch_heredoc_end() ripper_dispatch_heredoc_end(parser)
12434 #define dispatch_heredoc_end() ((void)0)
12440 int c,
func, indent = 0;
12441 const char *eos, *
p, *pend;
12450 if ((c =
nextc()) == -1) {
12454 if (
NIL_P(parser->delayed)) {
12459 ((len =
lex_p - parser->tokp) > 0 &&
12460 (str =
STR_NEW3(parser->tokp, len, enc, func), 1))) {
12483 switch (pend[-1]) {
12485 if (--pend == p || pend[-1] !=
'\r') {
12499 if (
nextc() == -1) {
12517 if (parser->
eofp)
goto error;
12527 if ((c =
nextc()) == -1)
goto error;
12544 rb_warning0(
"ambiguous first argument; put parentheses or even spaces");
12549 #define arg_ambiguous() (arg_ambiguous_gen(parser), 1)
12556 yyerror(
"formal argument must be local variable");
12574 if (len > 5 && name[nlen = len - 5] ==
'-') {
12575 if (
rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
12578 if (len > 4 && name[nlen = len - 4] ==
'-') {
12581 if (
rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
12582 !(len == 8 &&
rb_memcicmp(name,
"utf8-mac", len) == 0))
12597 excargs[1] =
rb_sprintf(
"unknown encoding name: %s", name);
12614 for (i = 0; i < n; ++
i) {
12652 case 't':
case 'T':
12658 case 'f':
case 'F':
12681 static const char *
12689 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
12690 return str + i + 1;
12695 if (i + 1 >= len)
return 0;
12696 if (str[i+1] !=
'-') {
12699 else if (str[i-1] !=
'-') {
12703 return str + i + 2;
12717 VALUE name = 0, val = 0;
12718 const char *beg, *end, *vbeg, *vend;
12719 #define str_copy(_s, _p, _n) ((_s) \
12720 ? (void)(rb_str_resize((_s), (_n)), \
12721 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
12722 : (void)((_s) = STR_NEW((_p), (_n))))
12724 if (len <= 7)
return FALSE;
12728 len = end - beg - 3;
12739 for (; len > 0 && *str; str++, --
len) {
12741 case '\'':
case '"':
case ':':
case ';':
12746 for (beg = str; len > 0; str++, --
len) {
12748 case '\'':
case '"':
case ':':
case ';':
12756 for (end = str; len > 0 &&
ISSPACE(*str); str++, --
len);
12758 if (*str !=
':')
continue;
12760 do str++;
while (--len > 0 &&
ISSPACE(*str));
12763 for (vbeg = ++str; --len > 0 && *str !=
'"'; str++) {
12764 if (*str ==
'\\') {
12776 for (vbeg = str; len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
12779 while (len > 0 && (*str ==
';' ||
ISSPACE(*str))) --len, str++;
12784 for (i = 0; i < n; ++
i) {
12785 if (s[i] ==
'-') s[
i] =
'_';
12792 n = (*p->
length)(parser, vbeg, n);
12798 }
while (++p < magic_comments +
numberof(magic_comments));
12812 const char *beg = str;
12816 if (send - str <= 6)
return;
12818 case 'C':
case 'c': str += 6;
continue;
12819 case 'O':
case 'o': str += 5;
continue;
12820 case 'D':
case 'd': str += 4;
continue;
12821 case 'I':
case 'i': str += 3;
continue;
12822 case 'N':
case 'n': str += 2;
continue;
12823 case 'G':
case 'g': str += 1;
continue;
12824 case '=':
case ':':
12837 if (++str >= send)
return;
12840 if (*str !=
'=' && *str !=
':')
return;
12845 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
12861 (
unsigned char)
lex_p[0] == 0xbb &&
12862 (
unsigned char)
lex_p[1] == 0xbf) {
12876 #define IS_ARG() (lex_state == EXPR_ARG || lex_state == EXPR_CMDARG)
12877 #define IS_END() (lex_state == EXPR_END || lex_state == EXPR_ENDARG || lex_state == EXPR_ENDFN)
12878 #define IS_BEG() (lex_state == EXPR_BEG || lex_state == EXPR_MID || lex_state == EXPR_VALUE || lex_state == EXPR_CLASS)
12879 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
12880 #define IS_LABEL_POSSIBLE() ((lex_state == EXPR_BEG && !cmd_state) || IS_ARG())
12881 #define IS_LABEL_SUFFIX(n) (peek_n(':',(n)) && !peek_n(':', (n)+1))
12884 #define ambiguous_operator(op, syn) ( \
12885 rb_warning0("`"op"' after local variable is interpreted as binary operator"), \
12886 rb_warning0("even though it seems like "syn""))
12888 #define ambiguous_operator(op, syn) dispatch2(operator_ambiguous, ripper_intern(op), rb_str_new_cstr(syn))
12890 #define warn_balanced(op, syn) ((void) \
12891 (last_state != EXPR_CLASS && last_state != EXPR_DOT && \
12892 last_state != EXPR_FNAME && last_state != EXPR_ENDFN && \
12893 last_state != EXPR_ENDARG && \
12894 space_seen && !ISSPACE(c) && \
12895 (ambiguous_operator(op, syn), 0)))
12901 int space_seen = 0;
12907 int fallthru =
FALSE;
12933 switch (c =
nextc()) {
12941 case ' ':
case '\t':
case '\f':
case '\r':
12945 while ((c =
nextc())) {
12947 case ' ':
case '\t':
case '\f':
case '\r':
12956 ripper_dispatch_scan_event(parser,
tSP);
12969 ripper_dispatch_scan_event(parser,
tCOMMENT);
12990 while ((c =
nextc())) {
12992 case ' ':
case '\t':
case '\f':
case '\r':
12997 if ((c =
nextc()) !=
'.') {
13010 parser->tokp =
lex_p;
13013 goto normal_newline;
13022 if ((c =
nextc()) ==
'*') {
13023 if ((c =
nextc()) ==
'=') {
13039 rb_warning0(
"`*' interpreted as argument prefix");
13083 int first_p =
TRUE;
13092 ripper_dispatch_scan_event(parser,
tEMBDOC);
13101 if (c !=
'=')
continue;
13102 if (strncmp(
lex_p,
"end", 3) == 0 &&
13121 if ((c =
nextc()) ==
'=') {
13122 if ((c =
nextc()) ==
'=') {
13131 else if (c ==
'>') {
13144 (!
IS_ARG() || space_seen)) {
13146 if (token)
return token;
13155 if ((c =
nextc()) ==
'>') {
13162 if ((c =
nextc()) ==
'=') {
13181 if ((c =
nextc()) ==
'=') {
13185 if ((c =
nextc()) ==
'=') {
13253 rb_warnI(
"invalid character syntax; use ?\\%c", c2);
13270 else if (c ==
'\\') {
13299 if ((c =
nextc()) ==
'&') {
13301 if ((c =
nextc()) ==
'=') {
13309 else if (c ==
'=') {
13316 rb_warning0(
"`&' interpreted as argument prefix");
13335 if ((c =
nextc()) ==
'|') {
13337 if ((c =
nextc()) ==
'=') {
13422 if ((c =
nextc()) ==
'.') {
13423 if ((c =
nextc()) ==
'.') {
13431 yyerror(
"no .<digit> floating literal anymore; put 0 before dot");
13437 case '0':
case '1':
case '2':
case '3':
case '4':
13438 case '5':
case '6':
case '7':
case '8':
case '9':
13440 int is_float, seen_point, seen_e, nondigit;
13442 is_float = seen_point = seen_e = nondigit = 0;
13445 if (c ==
'-' || c ==
'+') {
13450 #define no_digits() do {yyerror("numeric literal without digits"); return 0;} while (0)
13453 if (c ==
'x' || c ==
'X') {
13459 if (nondigit)
break;
13466 }
while ((c =
nextc()) != -1);
13470 if (
toklen() == start) {
13473 else if (nondigit)
goto trailing_uc;
13477 if (c ==
'b' || c ==
'B') {
13480 if (c ==
'0' || c ==
'1') {
13483 if (nondigit)
break;
13487 if (c !=
'0' && c !=
'1')
break;
13490 }
while ((c =
nextc()) != -1);
13494 if (
toklen() == start) {
13497 else if (nondigit)
goto trailing_uc;
13501 if (c ==
'd' || c ==
'D') {
13507 if (nondigit)
break;
13514 }
while ((c =
nextc()) != -1);
13518 if (
toklen() == start) {
13521 else if (nondigit)
goto trailing_uc;
13529 if (c ==
'o' || c ==
'O') {
13532 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
13536 if (c >=
'0' && c <=
'7') {
13541 if (nondigit)
break;
13545 if (c < '0' || c >
'9')
break;
13546 if (c >
'7')
goto invalid_octal;
13549 }
while ((c =
nextc()) != -1);
13553 if (nondigit)
goto trailing_uc;
13562 if (c >
'7' && c <=
'9') {
13564 yyerror(
"Invalid octal digit");
13566 else if (c ==
'.' || c ==
'e' || c ==
'E') {
13578 case '0':
case '1':
case '2':
case '3':
case '4':
13579 case '5':
case '6':
case '7':
case '8':
case '9':
13585 if (nondigit)
goto trailing_uc;
13586 if (seen_point || seen_e) {
13591 if (c0 == -1 || !
ISDIGIT(c0)) {
13619 if (c !=
'-' && c !=
'+')
continue;
13625 if (nondigit)
goto decode_num;
13640 snprintf(tmp,
sizeof(tmp),
"trailing `%c' in number", nondigit);
13646 if (
errno == ERANGE) {
13704 if ((c =
nextc()) ==
'=') {
13725 if ((c =
nextc()) ==
'=') {
13750 if ((c =
nextc()) !=
'@') {
13777 if ((c =
nextc()) ==
']') {
13778 if ((c =
nextc()) ==
'=') {
13790 else if (
IS_ARG() && space_seen) {
13824 ripper_dispatch_scan_event(parser,
tSP);
13838 if (c == -1 || !
ISALNUM(c)) {
13845 yyerror(
"unknown type of %string");
13849 if (c == -1 || term == -1) {
13854 if (term ==
'(') term =
')';
13855 else if (term ==
'[') term =
']';
13856 else if (term ==
'{') term =
'}';
13857 else if (term ==
'<') term =
'>';
13895 yyerror(
"unknown type of %string");
13899 if ((c =
nextc()) ==
'=') {
13981 case '1':
case '2':
case '3':
13982 case '4':
case '5':
case '6':
13983 case '7':
case '8':
case '9':
13988 }
while (c != -1 &&
ISDIGIT(c));
14034 ripper_dispatch_scan_event(parser,
k__END__);
14057 switch (
tok()[0]) {
14058 case '@':
case '$':
14062 if ((c ==
'!' || c ==
'?') && !
peek(
'=')) {
14075 switch (
tok()[0]) {
14082 if (
tok()[1] ==
'@')
14149 if (kw->
id[0] != kw->
id[1])
14202 if (!
NIL_P(parser->delayed)) {
14203 ripper_dispatch_delayed_token(parser, t);
14207 ripper_dispatch_scan_event(parser, t);
14249 if (orig == (
NODE*)1)
return;
14258 #define parser_warning(node, mesg) parser_warning(parser, (node), (mesg))
14265 #define parser_warn(node, mesg) parser_warn(parser, (node), (mesg))
14270 NODE *end, *h = head, *nd;
14272 if (tail == 0)
return head;
14274 if (h == 0)
return tail;
14313 tail->nd_end = tail;
14315 end->nd_next = tail;
14316 h->nd_end = tail->nd_end;
14326 if (list == 0)
return NEW_LIST(item);
14327 if (list->nd_next) {
14328 last = list->nd_next->nd_end;
14334 list->nd_alen += 1;
14336 list->nd_next->nd_end = last->nd_next;
14346 if (head->nd_next) {
14347 last = head->nd_next->nd_end;
14353 head->nd_alen += tail->nd_alen;
14354 last->nd_next = tail;
14355 if (tail->nd_next) {
14356 head->nd_next->nd_end = tail->nd_next->nd_end;
14359 head->nd_next->nd_end = tail;
14368 if (
NIL_P(tail))
return 1;
14387 if (!head)
return tail;
14388 if (!tail)
return head;
14415 tail->nd_lit = head->nd_lit;
14419 else if (
NIL_P(tail->nd_lit)) {
14420 head->nd_alen += tail->nd_alen - 1;
14421 head->nd_next->nd_end->nd_next = tail->nd_next;
14422 head->nd_next->nd_end = tail->nd_next->nd_end;
14427 tail->nd_head =
NEW_STR(tail->nd_lit);
14566 switch (
id & ID_SCOPE_MASK) {
14591 # define assignable_result(x) get_value(lhs)
14592 # define parser_yyerror(parser, x) dispatch1(assign_error, lhs)
14594 # define assignable_result(x) (x)
14598 yyerror(
"Can't change the value of self");
14601 yyerror(
"Can't assign to nil");
14604 yyerror(
"Can't assign to true");
14607 yyerror(
"Can't assign to false");
14610 yyerror(
"Can't assign to __FILE__");
14613 yyerror(
"Can't assign to __LINE__");
14616 yyerror(
"Can't assign to __ENCODING__");
14650 yyerror(
"dynamic constant assignment");
14659 #undef assignable_result
14660 #undef parser_yyerror
14663 #define LVAR_USED ((int)1 << (sizeof(int) * CHAR_BIT - 1))
14668 if (idUScore == name)
return name;
14671 yyerror(
"duplicated argument name");
14683 yyerror(
"duplicated argument name");
14722 id &= ~ID_SCOPE_MASK;
14751 if (!node2)
return node1;
14754 if (node1->nd_head)
14755 node1->nd_head =
arg_concat(node1->nd_head, node2);
14767 node1->nd_body =
list_concat(node1->nd_body, node2);
14776 if (!node1)
return NEW_LIST(node2);
14781 node1->nd_head =
arg_append(node1->nd_head, node2);
14802 if (!lhs)
return 0;
14814 lhs->nd_value = rhs;
14819 lhs->nd_args =
arg_append(lhs->nd_args, rhs);
14850 if (!cond)
yyerror(
"void value expression");
14855 while (node->nd_next) {
14856 node = node->nd_next;
14858 node = node->nd_head;
14862 node = node->nd_body;
14866 if (!node->nd_body) {
14867 node = node->nd_else;
14870 else if (!node->nd_else) {
14871 node = node->nd_body;
14875 node = node->nd_else;
14881 node = node->nd_2nd;
14895 const char *useless = 0;
14902 switch (node->nd_mid) {
14933 useless =
"a variable";
14936 useless =
"a constant";
14943 useless =
"a literal";
14968 useless =
"defined?";
14976 rb_warnS(
"possibly useless use of %s in void context", useless);
14989 if (!node->nd_next)
return;
14991 node = node->nd_next;
14998 NODE **n = &node, *n1 = node;
15000 *n = n1 = n1->nd_body;
15008 NODE *node = *body;
15014 #define subnodes(n1, n2) \
15015 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
15016 (!node->n2) ? (body = &node->n1, 1) : \
15017 (reduce_nodes(&node->n1), body = &node->n2, 1))
15027 *body = node = node->nd_stts;
15031 *body = node = node->nd_body;
15035 body = &node->nd_end->nd_head;
15041 body = &node->nd_body;
15050 if (node->nd_else) {
15051 body = &node->nd_resq;
15071 yyerror(
"multiple assignment in conditional");
15085 if (!node->nd_value)
return 1;
15086 switch (
nd_type(node->nd_value)) {
15093 parser_warn(node->nd_value,
"found = in conditional, should be ==");
15122 NODE *node, *next, *head;
15124 for (node = *rootnode; node; node = next) {
15128 next = node->nd_next;
15129 head = node->nd_head;
15132 switch (type =
nd_type(head)) {
15135 val =
rb_range_new(head->nd_beg->nd_lit, head->nd_end->nd_lit,
15140 head->nd_lit = val;
15155 if (node == 0)
return 0;
15163 return cond0(parser, node);
15169 if (!node)
return 1;
15190 if (node == 0)
return 0;
15197 rb_warn0(
"string literal in condition");
15207 node->nd_1st =
cond0(parser, node->nd_1st);
15208 node->nd_2nd =
cond0(parser, node->nd_2nd);
15213 node->nd_beg =
range_op(parser, node->nd_beg);
15214 node->nd_end =
range_op(parser, node->nd_end);
15247 if (node == 0)
return 0;
15248 return cond0(parser, node);
15256 NODE *node = left, *second;
15257 while ((second = node->nd_2nd) != 0 && (
enum node_type)
nd_type(second) == type) {
15260 node->nd_2nd =
NEW_NODE(type, second, right, 0);
15263 return NEW_NODE(type, left, right, 0);
15280 if (node->nd_next == 0) {
15281 node = node->nd_head;
15311 switch (
TYPE(node->nd_lit)) {
15331 node2->nd_head = node1;
15344 node =
NEW_ARGS(m ? m->nd_plen : 0, o);
15345 i1 = m ? m->nd_next : 0;
15350 node->nd_next->nd_next =
NEW_ARGS_AUX(p->nd_pid, p->nd_plen);
15369 if (!local->
used)
return;
15373 if (cnt != local->
vars->
pos) {
15374 rb_bug(
"local->used->pos != local->vars->pos");
15376 for (i = 0; i <
cnt; ++
i) {
15377 if (!v[i] || (u[i] &
LVAR_USED))
continue;
15378 if (idUScore == v[i])
continue;
15418 for (i = 0; i <
cnt; i++) {
15419 buf[
i] = src->
tbl[
i];
15432 if (cnt <= 0)
return 0;
15463 vars =
lvtbl->vars;
15464 args =
lvtbl->args;
15465 used =
lvtbl->used;
15470 if (used) used = used->
prev;
15486 static const struct vtable *
15494 return lvtbl->args;
15502 if ((tmp =
lvtbl->used) != 0) {
15518 while (
lvtbl->args != lvargs) {
15520 if (!
lvtbl->args) {
15541 args =
lvtbl->args;
15542 vars =
lvtbl->vars;
15543 used =
lvtbl->used;
15556 if (used) used = used->
prev;
15609 "regexp encoding option '%c' differs from source encoding '%s'",
15638 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
15644 const char *s = (
const char *)name;
15661 rb_warningS(
"named capture conflicts a local variable - %s",
15741 NODE *scope = node;
15744 if (!node)
return node;
15748 node = node->nd_body;
15752 node = node->nd_body;
15759 prelude->nd_body = node;
15760 scope->nd_body = prelude;
15763 scope->nd_body = node;
15773 NODE *scope = node;
15776 if (!node)
return node;
15780 node = node->nd_body;
15784 node = node->nd_body;
15800 prelude->nd_body = node;
15801 scope->nd_body = prelude;
15804 scope->nd_body = node;
15810 static const struct {
15834 #define op_tbl_count numberof(op_tbl)
15836 #ifndef ENABLE_SELECTOR_NAMESPACE
15837 #define ENABLE_SELECTOR_NAMESPACE 0
15844 #if ENABLE_SELECTOR_NAMESPACE
15856 #if ENABLE_SELECTOR_NAMESPACE
15863 ivar2_cmp(
struct ivar2_key *key1,
struct ivar2_key *key2)
15865 if (key1->id == key2->id && key1->klass == key2->klass) {
15872 ivar2_hash(
struct ivar2_key *
key)
15874 return (key->id << 8) ^ (key->klass >> 2);
15888 #if ENABLE_SELECTOR_NAMESPACE
15919 if (m >= e)
return 0;
15923 else if (*m ==
'-') {
15937 return m == e ? mb + 1 : 0;
15955 const char *m =
name;
15956 const char *e = m +
len;
15957 int localid =
FALSE;
15959 if (!m || len <= 0)
return FALSE;
15969 if (*++m ==
'@') ++m;
15974 case '<': ++m;
break;
15975 case '=':
if (*++m ==
'>') ++m;
break;
15982 case '>':
case '=': ++m;
break;
15988 case '~': ++m;
break;
15989 case '=':
if (*++m ==
'=') ++m;
break;
15990 default:
return FALSE;
15995 if (*++m ==
'*') ++m;
15998 case '+':
case '-':
15999 if (*++m ==
'@') ++m;
16002 case '|':
case '^':
case '&':
case '/':
case '%':
case '~':
case '`':
16007 if (*++m !=
']')
return FALSE;
16008 if (*++m ==
'=') ++m;
16012 if (len == 1)
return TRUE;
16014 case '=':
case '~': ++m;
break;
16015 default:
return FALSE;
16027 case '!':
case '?':
case '=': ++m;
16048 const char *m =
name;
16049 const char *e = m +
len;
16060 fake_str.
as.
heap.ptr = (
char *)name;
16062 str = (
VALUE)&fake_str;
16108 if (*
op_tbl[i].name == *m &&
16109 strcmp(
op_tbl[i].name, m) == 0) {
16116 if (m[last] ==
'=') {
16146 if (m - name < len)
id =
ID_JUNK;
16153 for (; m <= name +
len; ++m) {
16154 if (!
ISASCII(*m))
goto mbstr;
16218 name[0] = (char)
id;
16241 if (
RBASIC(str)->klass == 0)
16252 id2 = (
id & ~ID_SCOPE_MASK) |
ID_CONST;
16259 if (
RBASIC(str)->klass == 0)
16272 if (!str)
return 0;
16374 parser->parser_ruby_sourcefile_string =
Qnil;
16375 parser->delayed =
Qnil;
16377 parser->result =
Qnil;
16378 parser->parsing_thread =
Qnil;
16379 parser->toplevel_p =
TRUE;
16388 #define parser_mark ripper_parser_mark
16389 #define parser_free ripper_parser_free
16407 rb_gc_mark(p->parser_ruby_sourcefile_string);
16429 prev = local->
prev;
16443 size_t size =
sizeof(*p);
16445 if (!ptr)
return 0;
16448 size +=
sizeof(*local);
16473 #undef rb_reserved_word
16557 yydebug =
RTEST(flag);
16562 #define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
16563 #define NEWHEAP() rb_node_newnode(NODE_ALLOCA, 0, (VALUE)parser->heap, 0)
16564 #define ADD2HEAP(n, c, p) ((parser->heap = (n))->u1.node = (p), \
16565 (n)->u3.cnt = (c), (p))
16582 void *ptr =
xcalloc(nelem, size);
16593 if (ptr && (n = parser->
heap) !=
NULL) {
16595 if (n->
u1.
node == ptr) {
16612 while ((n = *prev) !=
NULL) {
16613 if (n->u1.node == ptr) {
16626 #ifdef RIPPER_DEBUG
16627 extern int rb_is_pointer_to_heap(
VALUE);
16633 if (x ==
Qfalse)
return x;
16634 if (x ==
Qtrue)
return x;
16635 if (x ==
Qnil)
return x;
16640 if (!rb_is_pointer_to_heap(x))
16653 return ((
NODE *)x)->nd_rval;
16662 #define validate(x) ((x) = get_value(x))
16674 return rb_funcall(parser->value, mid, 1, a);
16682 return rb_funcall(parser->value, mid, 2, a, b);
16691 return rb_funcall(parser->value, mid, 3, a, b, c);
16701 return rb_funcall(parser->value, mid, 4, a, b, c, d);
16712 return rb_funcall(parser->value, mid, 5, a, b, c, d, e);
16715 static const struct kw_assoc {
16718 } keyword_to_name[] = {
16771 keyword_id_to_str(
ID id)
16773 const struct kw_assoc *a;
16775 for (a = keyword_to_name; a->id; a++) {
16782 #undef ripper_id2sym
16794 if ((name = keyword_id_to_str(
id))) {
16807 rb_bug(
"cannot convert ID to string: %ld", (
unsigned long)
id);
16825 ripper_get_value(
VALUE v)
16832 return nd->nd_rval;
16836 ripper_compile_error(
struct parser_params *parser,
const char *fmt, ...)
16841 va_start(args, fmt);
16848 ripper_warn0(
struct parser_params *parser,
const char *fmt)
16854 ripper_warnI(
struct parser_params *parser,
const char *fmt,
int a)
16862 ripper_warnS(
struct parser_params *parser,
const char *fmt,
const char *str)
16870 ripper_warning0(
struct parser_params *parser,
const char *fmt)
16876 ripper_warningS(
struct parser_params *parser,
const char *fmt,
const char *str)
16889 ripper_s_allocate(
VALUE klass)
16901 #define ripper_initialized_p(r) ((r)->parser_lex_input != 0)
16917 VALUE src, fname, lineno;
16920 rb_scan_args(argc, argv,
"12", &src, &fname, &lineno);
16930 if (
NIL_P(fname)) {
16938 parser->parser_ruby_sourcefile_string = fname;
16945 struct ripper_args {
16952 ripper_parse0(
VALUE parser_v)
16958 ripper_yyparse((
void*)parser);
16959 return parser->result;
16963 ripper_ensure(
VALUE parser_v)
16968 parser->parsing_thread =
Qnil;
16979 ripper_parse(
VALUE self)
16984 if (!ripper_initialized_p(parser)) {
16987 if (!
NIL_P(parser->parsing_thread)) {
16994 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
16996 return parser->result;
17007 ripper_column(
VALUE self)
17013 if (!ripper_initialized_p(parser)) {
17016 if (
NIL_P(parser->parsing_thread))
return Qnil;
17028 ripper_filename(
VALUE self)
17033 if (!ripper_initialized_p(parser)) {
17036 return parser->parser_ruby_sourcefile_string;
17047 ripper_lineno(
VALUE self)
17052 if (!ripper_initialized_p(parser)) {
17055 if (
NIL_P(parser->parsing_thread))
return Qnil;
17059 #ifdef RIPPER_DEBUG
17081 InitVM_ripper(
void)
17104 #ifdef RIPPER_DEBUG