47 #define YYBISON_VERSION "3.0.4"
50 #define YYSKELETON_NAME "yacc.c"
69 # error needs pure parser
72 #define YYERROR_VERBOSE 1
73 #define YYSTACK_USE_ALLOCA 0
74 #define YYLTYPE rb_code_location_t
75 #define YYLTYPE_IS_DECLARED 1
90 #ifndef WARN_PAST_SCOPE
91 # define WARN_PAST_SCOPE 0
96 #define yydebug (p->debug)
98 #define YYMALLOC(size) rb_parser_malloc(p, (size))
99 #define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
100 #define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
101 #define YYFREE(ptr) rb_parser_free(p, (ptr))
102 #define YYFPRINTF rb_parser_printf
103 #define YYPRINT(out, tok, val) parser_token_value_print(p, (tok), &(val))
104 #define YY_LOCATION_PRINT(File, loc) \
105 rb_parser_printf(p, "%d.%d-%d.%d", \
106 (loc).beg_pos.lineno, (loc).beg_pos.column,\
107 (loc).end_pos.lineno, (loc).end_pos.column)
108 #define YYLLOC_DEFAULT(Current, Rhs, N) \
112 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
113 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
117 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
118 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
122 #define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
123 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
124 #define RUBY_SET_YYLLOC_OF_NONE(Current) \
125 rb_parser_set_location_of_none(p, &(Current))
126 #define RUBY_SET_YYLLOC(Current) \
127 rb_parser_set_location(p, &(Current))
128 #define RUBY_INIT_YYLLOC() \
130 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
131 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
152 #define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
172 #define IS_lex_state_for(x, ls) ((x) & (ls))
173 #define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
174 #define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
175 #define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
177 # define SET_LEX_STATE(ls) \
180 rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
181 (enum lex_state_e)(ls)))
187 # define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
188 # define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
189 # define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
190 # define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
191 # define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
195 #define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
196 #define COND_POP() BITSTACK_POP(cond_stack)
197 #define COND_P() BITSTACK_SET_P(cond_stack)
198 #define COND_SET(n) BITSTACK_SET(cond_stack, (n))
202 #define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
203 #define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
204 #define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
205 #define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
235 #define NUMPARAM_ID_P(id) numparam_id_p(id)
236 #define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
237 #define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
247 #define DVARS_INHERIT ((void*)1)
248 #define DVARS_TOPSCOPE NULL
249 #define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
330 unsigned int eofp: 1;
332 unsigned int debug: 1;
341 unsigned int past_scope_enabled: 1;
371 VALUE parsing_thread;
375 #define intern_cstr(n,l,en) rb_intern3(n,l,en)
377 #define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
378 #define STR_NEW0() rb_enc_str_new(0,0,p->enc)
379 #define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
380 #define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
381 #define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
414 #define yyerror0(msg) parser_yyerror(p, NULL, (msg))
415 #define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
416 #define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
417 #define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
420 #define compile_for_eval (0)
422 #define compile_for_eval (p->parent_iseq != 0)
425 #define token_column ((int)(p->lex.ptok - p->lex.pbeg))
427 #define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
428 #define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
429 #define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
431 #define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
459 #define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
473 set_line_body(
NODE *body,
int line)
483 #define yyparse ruby_yyparse
487 #define new_nil(loc) NEW_NIL(loc)
498 static NODE *remove_begin_all(
NODE*);
499 #define value_expr(node) value_expr_gen(p, (node) = remove_begin(node))
522 static bool args_info_empty_p(
struct rb_args_info *args);
567 #define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
587 #define get_id(id) (id)
588 #define get_value(val) (val)
589 #define get_num(num) (num)
591 #define NODE_RIPPER NODE_CDECL
593 static inline int ripper_is_node_yylval(
VALUE n);
598 if (ripper_is_node_yylval(c)) c =
RNODE(c)->nd_cval;
599 add_mark_object(p, b);
600 add_mark_object(p, c);
605 ripper_is_node_yylval(
VALUE n)
610 #define value_expr(node) ((void)(node))
611 #define remove_begin(node) (node)
612 #define void_stmts(p,x) (x)
613 #define rb_dvar_defined(id, base) 0
614 #define rb_local_defined(id, base) 0
615 static ID ripper_get_id(
VALUE);
616 #define get_id(id) ripper_get_id(id)
618 #define get_value(val) ripper_get_value(val)
619 #define get_num(num) (int)get_id(num)
623 #define method_cond(p,node,loc) (node)
624 #define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
625 #define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
626 #define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
627 #define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
629 #define new_nil(loc) Qnil
677 #define dyna_var(p, id) local_var(p, id)
688 # define METHOD_NOT idNOT
690 # define METHOD_NOT '!'
693 #define idFWD_REST '*'
694 #ifdef RUBY3_KEYWORDS
695 #define idFWD_KWREST idPow
697 #define idFWD_KWREST 0
699 #define idFWD_BLOCK '&'
701 #define RE_OPTION_ONCE (1<<16)
702 #define RE_OPTION_ENCODING_SHIFT 8
703 #define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
704 #define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
705 #define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
706 #define RE_OPTION_MASK 0xff
707 #define RE_OPTION_ARG_ENCODING_NONE 32
729 #define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
736 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
738 # define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
740 # define HERETERM_LENGTH_MAX UINT_MAX
743 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
753 #define STRTERM_HEREDOC IMEMO_FL_USER0
775 #define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
778 #define TOKEN2ID(tok) ( \
779 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
780 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
781 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
782 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
783 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
784 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
785 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
790 #define RIPPER_VERSION "0.1.0"
792 static inline VALUE intern_sym(
const char *
name);
806 #define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
807 #define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
808 #define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
809 #define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
810 #define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
811 #define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
812 #define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e), (f), (g))
814 #define yyparse ripper_yyparse
816 #define ID2VAL(id) STATIC_ID2SYM(id)
817 #define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
818 #define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
820 #define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
821 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
823 #define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
830 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
837 add_mark_object(p, kw_args);
838 add_mark_object(p, kw_rest_arg);
839 add_mark_object(p, block);
862 if (!
NIL_P(pre_arg)) {
888 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
897 #define new_hash(p,h,l) rb_ary_new_from_args(0)
910 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
918 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
925 add_mark_object(p, kw_args);
926 add_mark_object(p, kw_rest_arg);
930 #define new_defined(p,expr,loc) dispatch1(defined, (expr))
935 #define ID2VAL(id) (id)
936 #define TOKEN2VAL(t) ID2VAL(t)
937 #define KWD2EID(t, v) keyword_##t
943 # define ifndef_ripper(x) (x)
946 # define Qnull Qundef
947 # define ifndef_ripper(x)
950 # define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
951 # define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
952 # define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
953 # define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
954 # define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
955 # define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
956 # define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
957 # define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
958 # define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
959 # define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
960 # define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
961 # define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
962 # define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
963 # define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
964 # define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
965 # define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
966 # define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
967 # define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
968 # define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
969 # define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
971 static ID id_warn, id_warning, id_gets, id_assoc;
972 # define WARN_S_L(s,l) STR_NEW(s,l)
973 # define WARN_S(s) STR_NEW2(s)
974 # define WARN_I(i) INT2NUM(i)
975 # define WARN_ID(i) rb_id2str(i)
976 # define WARN_IVAL(i) i
977 # define PRIsWARN "s"
978 # define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
979 # define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
980 # ifdef HAVE_VA_ARGS_MACRO
981 # define WARN_CALL(...) rb_funcall(__VA_ARGS__)
983 # define WARN_CALL rb_funcall
985 # define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
986 # define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
987 # ifdef HAVE_VA_ARGS_MACRO
988 # define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
990 # define WARNING_CALL rb_funcall
993 # define compile_error ripper_compile_error
995 # define WARN_S_L(s,l) s
998 # define WARN_ID(i) rb_id2name(i)
999 # define WARN_IVAL(i) NUM2INT(i)
1000 # define PRIsWARN PRIsVALUE
1001 # define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1002 # define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1003 # define WARN_CALL rb_compile_warn
1004 # define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1005 # define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1006 # define WARNING_CALL rb_compile_warning
1008 # define compile_error parser_compile_error
1016 #define WARN_EOL(tok) \
1017 (looking_at_eol_p(p) ? \
1018 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1022 #line 1023 "parse.c"
1025 # if defined __cplusplus && 201103L <= __cplusplus
1026 # define YY_NULLPTR nullptr
1028 # define YY_NULLPTR 0
1033 #ifdef YYERROR_VERBOSE
1034 # undef YYERROR_VERBOSE
1035 # define YYERROR_VERBOSE 1
1037 # define YYERROR_VERBOSE 0
1042 #ifndef YY_YY_Y_TAB_H_INCLUDED
1043 # define YY_YY_Y_TAB_H_INCLUDED
1056 # define YYTOKENTYPE
1183 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1197 #line 1196 "parse.c"
1201 # define YYSTYPE_IS_TRIVIAL 1
1202 # define YYSTYPE_IS_DECLARED 1
1206 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1215 # define YYLTYPE_IS_DECLARED 1
1216 # define YYLTYPE_IS_TRIVIAL 1
1227 #line 1226 "parse.c"
1245 #ifdef YYTYPE_UINT16
1258 # ifdef __SIZE_TYPE__
1259 # define YYSIZE_T __SIZE_TYPE__
1260 # elif defined size_t
1261 # define YYSIZE_T size_t
1262 # elif ! defined YYSIZE_T
1263 # include <stddef.h>
1264 # define YYSIZE_T size_t
1266 # define YYSIZE_T unsigned int
1270 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
1273 # if defined YYENABLE_NLS && YYENABLE_NLS
1275 # include <libintl.h>
1276 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1280 # define YY_(Msgid) Msgid
1284 #ifndef YY_ATTRIBUTE
1285 # if (defined __GNUC__ \
1286 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
1287 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
1288 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
1290 # define YY_ATTRIBUTE(Spec)
1294 #ifndef YY_ATTRIBUTE_PURE
1295 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
1298 #ifndef YY_ATTRIBUTE_UNUSED
1299 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
1302 #if !defined _Noreturn \
1303 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
1304 # if defined _MSC_VER && 1200 <= _MSC_VER
1305 # define _Noreturn __declspec (noreturn)
1307 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
1312 #if ! defined lint || defined __GNUC__
1313 # define YYUSE(E) ((void) (E))
1318 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1320 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1321 _Pragma ("GCC diagnostic push") \
1322 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
1323 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1324 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1325 _Pragma ("GCC diagnostic pop")
1327 # define YY_INITIAL_VALUE(Value) Value
1329 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1330 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1331 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1333 #ifndef YY_INITIAL_VALUE
1334 # define YY_INITIAL_VALUE(Value)
1338 #if ! defined yyoverflow || YYERROR_VERBOSE
1342 # ifdef YYSTACK_USE_ALLOCA
1343 # if YYSTACK_USE_ALLOCA
1345 # define YYSTACK_ALLOC __builtin_alloca
1346 # elif defined __BUILTIN_VA_ARG_INCR
1347 # include <alloca.h>
1349 # define YYSTACK_ALLOC __alloca
1350 # elif defined _MSC_VER
1351 # include <malloc.h>
1352 # define alloca _alloca
1354 # define YYSTACK_ALLOC alloca
1355 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1356 # include <stdlib.h>
1358 # ifndef EXIT_SUCCESS
1359 # define EXIT_SUCCESS 0
1366 # ifdef YYSTACK_ALLOC
1368 # define YYSTACK_FREE(Ptr) do { ; } while (0)
1369 # ifndef YYSTACK_ALLOC_MAXIMUM
1374 # define YYSTACK_ALLOC_MAXIMUM 4032
1377 # define YYSTACK_ALLOC YYMALLOC
1378 # define YYSTACK_FREE YYFREE
1379 # ifndef YYSTACK_ALLOC_MAXIMUM
1380 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1382 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1383 && ! ((defined YYMALLOC || defined malloc) \
1384 && (defined YYFREE || defined free)))
1385 # include <stdlib.h>
1386 # ifndef EXIT_SUCCESS
1387 # define EXIT_SUCCESS 0
1391 # define YYMALLOC malloc
1392 # if ! defined malloc && ! defined EXIT_SUCCESS
1397 # define YYFREE free
1398 # if ! defined free && ! defined EXIT_SUCCESS
1406 #if (! defined yyoverflow \
1407 && (! defined __cplusplus \
1408 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
1409 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1420 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
1424 # define YYSTACK_BYTES(N) \
1425 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
1426 + 2 * YYSTACK_GAP_MAXIMUM)
1428 # define YYCOPY_NEEDED 1
1435 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1438 YYSIZE_T yynewbytes; \
1439 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1440 Stack = &yyptr->Stack_alloc; \
1441 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
1442 yyptr += yynewbytes / sizeof (*yyptr); \
1448 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1452 # if defined __GNUC__ && 1 < __GNUC__
1453 # define YYCOPY(Dst, Src, Count) \
1454 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
1456 # define YYCOPY(Dst, Src, Count) \
1460 for (yyi = 0; yyi < (Count); yyi++) \
1461 (Dst)[yyi] = (Src)[yyi]; \
1471 #define YYLAST 13766
1474 #define YYNTOKENS 154
1478 #define YYNRULES 759
1480 #define YYNSTATES 1243
1484 #define YYUNDEFTOK 2
1485 #define YYMAXUTOK 353
1487 #define YYTRANSLATE(YYX) \
1488 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1494 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
1495 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
1496 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1497 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
1498 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
1499 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
1500 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
1501 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1502 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1503 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
1504 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1505 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1506 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
1507 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
1508 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
1509 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1516 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1517 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1518 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1519 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1520 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1521 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1522 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1523 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1524 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1525 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1526 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
1527 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1528 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1536 0, 1176, 1176, 1176, 1202, 1208, 1215, 1222, 1229, 1235,
1537 1236, 1242, 1255, 1253, 1264, 1275, 1281, 1288, 1295, 1302,
1538 1308, 1313, 1312, 1322, 1322, 1329, 1336, 1346, 1354, 1361,
1539 1369, 1377, 1389, 1401, 1411, 1425, 1426, 1434, 1442, 1451,
1540 1458, 1461, 1468, 1475, 1483, 1490, 1497, 1505, 1512, 1522,
1541 1527, 1536, 1539, 1540, 1544, 1548, 1552, 1557, 1564, 1566,
1542 1556, 1574, 1577, 1584, 1584, 1584, 1590, 1591, 1594, 1595,
1543 1604, 1614, 1624, 1633, 1644, 1651, 1658, 1665, 1672, 1680,
1544 1688, 1695, 1702, 1711, 1712, 1721, 1722, 1731, 1738, 1745,
1545 1752, 1759, 1766, 1773, 1780, 1787, 1794, 1803, 1804, 1813,
1546 1820, 1829, 1836, 1845, 1852, 1859, 1866, 1876, 1883, 1893,
1547 1900, 1907, 1917, 1924, 1931, 1938, 1945, 1952, 1959, 1966,
1548 1973, 1983, 1990, 1993, 2000, 2007, 2016, 2017, 2018, 2019,
1549 2024, 2031, 2038, 2041, 2048, 2048, 2058, 2059, 2060, 2061,
1550 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071,
1551 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081,
1552 2082, 2083, 2084, 2085, 2086, 2087, 2090, 2090, 2090, 2091,
1553 2091, 2092, 2092, 2092, 2093, 2093, 2093, 2093, 2094, 2094,
1554 2094, 2094, 2095, 2095, 2095, 2096, 2096, 2096, 2096, 2097,
1555 2097, 2097, 2097, 2098, 2098, 2098, 2098, 2099, 2099, 2099,
1556 2099, 2100, 2100, 2100, 2100, 2101, 2101, 2104, 2111, 2118,
1557 2126, 2134, 2142, 2150, 2158, 2165, 2173, 2182, 2191, 2203,
1558 2215, 2227, 2239, 2243, 2247, 2251, 2255, 2259, 2263, 2267,
1559 2271, 2275, 2279, 2283, 2287, 2291, 2292, 2296, 2300, 2304,
1560 2308, 2312, 2316, 2320, 2324, 2328, 2332, 2336, 2336, 2341,
1561 2350, 2356, 2357, 2358, 2359, 2362, 2366, 2373, 2380, 2381,
1562 2385, 2392, 2401, 2406, 2417, 2424, 2453, 2454, 2457, 2458,
1563 2459, 2463, 2470, 2479, 2487, 2494, 2502, 2510, 2514, 2514,
1564 2551, 2560, 2564, 2570, 2577, 2584, 2591, 2600, 2601, 2604,
1565 2611, 2618, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634,
1566 2635, 2636, 2637, 2645, 2644, 2659, 2659, 2666, 2666, 2674,
1567 2682, 2689, 2696, 2703, 2711, 2718, 2725, 2732, 2739, 2739,
1568 2744, 2748, 2752, 2759, 2760, 2769, 2768, 2779, 2790, 2801,
1569 2811, 2822, 2821, 2838, 2837, 2852, 2861, 2909, 2908, 2932,
1570 2931, 2954, 2953, 2977, 2983, 2976, 3003, 3004, 3003, 3029,
1571 3036, 3043, 3050, 3059, 3066, 3072, 3089, 3095, 3101, 3107,
1572 3113, 3119, 3125, 3131, 3137, 3143, 3149, 3155, 3161, 3167,
1573 3182, 3189, 3195, 3202, 3203, 3204, 3207, 3208, 3211, 3212,
1574 3224, 3225, 3234, 3235, 3238, 3246, 3255, 3262, 3271, 3278,
1575 3285, 3292, 3299, 3308, 3316, 3325, 3329, 3333, 3337, 3341,
1576 3347, 3352, 3357, 3361, 3365, 3369, 3373, 3377, 3385, 3389,
1577 3393, 3397, 3401, 3405, 3409, 3413, 3417, 3423, 3424, 3430,
1578 3439, 3451, 3455, 3464, 3466, 3470, 3475, 3481, 3484, 3488,
1579 3492, 3496, 3481, 3520, 3528, 3538, 3543, 3549, 3559, 3573,
1580 3580, 3587, 3596, 3605, 3613, 3621, 3628, 3636, 3644, 3651,
1581 3658, 3671, 3679, 3689, 3690, 3694, 3689, 3711, 3712, 3716,
1582 3711, 3735, 3743, 3750, 3758, 3767, 3779, 3780, 3784, 3790,
1583 3791, 3793, 3794, 3795, 3783, 3808, 3809, 3812, 3813, 3821,
1584 3831, 3832, 3837, 3845, 3849, 3855, 3858, 3867, 3870, 3877,
1585 3880, 3881, 3883, 3884, 3893, 3902, 3907, 3916, 3925, 3930,
1586 3930, 3935, 3941, 3940, 3952, 3957, 3957, 3964, 3973, 3977,
1587 3986, 3990, 3994, 3998, 4002, 4005, 4009, 4018, 4022, 4026,
1588 4030, 4036, 4037, 4046, 4055, 4059, 4063, 4067, 4071, 4075,
1589 4081, 4083, 4092, 4100, 4114, 4115, 4138, 4142, 4148, 4154,
1590 4155, 4164, 4173, 4185, 4197, 4198, 4199, 4200, 4212, 4226,
1591 4227, 4228, 4229, 4230, 4231, 4232, 4233, 4234, 4242, 4241,
1592 4254, 4264, 4277, 4284, 4291, 4300, 4312, 4315, 4322, 4329,
1593 4332, 4336, 4339, 4346, 4349, 4350, 4353, 4370, 4371, 4372,
1594 4381, 4391, 4400, 4406, 4416, 4422, 4431, 4433, 4442, 4452,
1595 4458, 4467, 4476, 4486, 4492, 4502, 4508, 4518, 4528, 4547,
1596 4553, 4563, 4573, 4614, 4617, 4616, 4633, 4637, 4642, 4646,
1597 4650, 4632, 4671, 4678, 4685, 4692, 4695, 4696, 4699, 4709,
1598 4710, 4711, 4712, 4715, 4725, 4726, 4736, 4737, 4738, 4739,
1599 4742, 4743, 4744, 4745, 4746, 4749, 4750, 4751, 4752, 4753,
1600 4754, 4755, 4758, 4771, 4780, 4787, 4796, 4797, 4801, 4800,
1601 4810, 4818, 4827, 4842, 4842, 4856, 4860, 4864, 4868, 4872,
1602 4878, 4883, 4888, 4892, 4896, 4900, 4904, 4908, 4912, 4916,
1603 4920, 4924, 4928, 4932, 4936, 4940, 4945, 4951, 4960, 4968,
1604 4976, 4984, 4994, 4995, 5003, 5012, 5020, 5041, 5043, 5056,
1605 5066, 5074, 5084, 5091, 5100, 5107, 5117, 5124, 5133, 5134,
1606 5137, 5145, 5153, 5163, 5173, 5183, 5190, 5199, 5206, 5215,
1607 5216, 5219, 5227, 5237, 5238, 5241, 5251, 5255, 5261, 5266,
1608 5266, 5290, 5291, 5300, 5302, 5325, 5336, 5343, 5351, 5370,
1609 5371, 5372, 5375, 5376, 5377, 5378, 5381, 5382, 5383, 5386,
1610 5387, 5390, 5391, 5394, 5395, 5398, 5399, 5402, 5403, 5406,
1611 5409, 5412, 5415, 5416, 5417, 5420, 5421, 5424, 5425, 5429
1615 #if YYDEBUG || YYERROR_VERBOSE || 0
1618 static const char *
const yytname[] =
1620 "\"end-of-input\"",
"error",
"$undefined",
"\"`class'\"",
1621 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
1622 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
1623 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
1624 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
1625 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
1626 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
1627 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
1628 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
1629 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
1630 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
1631 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
1632 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
1633 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
1634 "\"constant\"",
"\"class variable\"",
"tLABEL",
"\"integer literal\"",
1635 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
1636 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
1637 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
1638 "\"escaped space\"",
"\"escaped horizontal tab\"",
1639 "\"escaped form feed\"",
"\"escaped carriage return\"",
1640 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
1641 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
1642 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
1643 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
1644 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
1645 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
1646 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
1647 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
1648 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
1649 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
1650 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
1651 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
1652 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
1653 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
1654 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
1655 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
1656 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"$@7",
1657 "expr_value",
"expr_value_do",
"$@8",
"$@9",
"command_call",
1658 "block_command",
"cmd_brace_block",
"fcall",
"command",
"mlhs",
1659 "mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
1660 "mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
"undef_list",
1661 "$@10",
"op",
"reswords",
"arg",
"$@11",
"relop",
"rel_expr",
1662 "arg_value",
"aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
1663 "opt_call_args",
"call_args",
"command_args",
"$@12",
"block_arg",
1664 "opt_block_arg",
"args",
"mrhs_arg",
"mrhs",
"primary",
"$@13",
"$@14",
1665 "$@15",
"$@16",
"$@17",
"@18",
"@19",
"$@20",
"@21",
"$@22",
"@23",
1666 "@24",
"@25",
"@26",
"primary_value",
"k_begin",
"k_if",
"k_unless",
1667 "k_while",
"k_until",
"k_case",
"k_for",
"k_class",
"k_module",
"k_def",
1668 "k_do",
"k_do_block",
"k_rescue",
"k_ensure",
"k_when",
"k_else",
1669 "k_elsif",
"k_end",
"k_return",
"then",
"do",
"if_tail",
"opt_else",
1670 "for_var",
"f_marg",
"f_marg_list",
"f_margs",
"f_rest_marg",
1671 "block_args_tail",
"opt_block_args_tail",
"block_param",
1672 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
1673 "lambda",
"@27",
"@28",
"@29",
"@30",
"$@31",
"f_larglist",
1674 "lambda_body",
"do_block",
"block_call",
"method_call",
"brace_block",
1675 "brace_body",
"@32",
"@33",
"@34",
"do_body",
"@35",
"@36",
"@37",
1676 "case_args",
"case_body",
"cases",
"p_case_body",
"@38",
"@39",
"@40",
1677 "$@41",
"$@42",
"$@43",
"p_cases",
"p_top_expr",
"p_top_expr_body",
1678 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
1679 "@44",
"@45",
"@46",
"p_args",
"p_args_head",
"p_args_tail",
1680 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
1681 "p_kwrest",
"p_kwnorest",
"p_value",
"p_primitive",
"$@47",
"p_variable",
1682 "p_var_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
1683 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
1684 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
1685 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
1686 "xstring_contents",
"regexp_contents",
"string_content",
"@48",
"$@49",
1687 "@50",
"@51",
"@52",
"@53",
"string_dvar",
"symbol",
"ssym",
"sym",
1688 "dsym",
"numeric",
"simple_numeric",
"user_variable",
"keyword_variable",
1689 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@54",
"f_arglist",
1690 "@55",
"args_tail",
"opt_args_tail",
"f_args",
"args_forward",
1691 "f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
1692 "f_label",
"f_kw",
"f_block_kw",
"f_block_kwarg",
"f_kwarg",
1693 "kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"f_opt",
"f_block_opt",
1694 "f_block_optarg",
"f_optarg",
"restarg_mark",
"f_rest_arg",
1695 "blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
"singleton",
"$@56",
1696 "assoc_list",
"assocs",
"assoc",
"operation",
"operation2",
"operation3",
1697 "dot_or_colon",
"call_op",
"call_op2",
"opt_terms",
"opt_nl",
"rparen",
1698 "rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none",
YY_NULLPTR
1707 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1708 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1709 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1710 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1711 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1712 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1713 315, 316, 317, 318, 319, 320, 321, 322, 46, 92,
1714 323, 9, 12, 13, 11, 132, 133, 134, 135, 140,
1715 141, 142, 139, 138, 148, 149, 143, 144, 128, 129,
1716 130, 131, 145, 146, 136, 137, 150, 147, 324, 325,
1717 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
1718 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
1719 346, 347, 348, 349, 350, 351, 61, 63, 58, 62,
1720 60, 124, 94, 38, 43, 45, 42, 47, 37, 352,
1721 33, 126, 353, 123, 125, 91, 44, 96, 40, 41,
1726 #define YYPACT_NINF -1028
1728 #define yypact_value_is_default(Yystate) \
1729 (!!((Yystate) == (-1028)))
1731 #define YYTABLE_NINF -760
1733 #define yytable_value_is_error(Yytable_value) \
1734 (!!((Yytable_value) == (-760)))
1740 -1028, 133, 3772, -1028, 9176, -1028, -1028, -1028, 8634, -1028,
1741 -1028, -1028, -1028, -1028, -1028, -1028, 9302, 9302, -1028, -1028,
1742 -1028, 5241, 4800, -1028, -1028, -1028, -1028, 533, 8489, 1,
1743 100, 124, -1028, -1028, -1028, 4065, 4947, -1028, -1028, 4212,
1744 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 10940, 10940,
1745 10940, 10940, 200, 6689, 9428, 9806, 10184, 8918, -1028, 8344,
1746 -1028, -1028, -1028, 155, 181, 247, 265, 1275, 11066, 10940,
1747 -1028, 232, -1028, 1140, -1028, 319, -1028, -1028, 14, 411,
1748 330, -1028, 332, 11318, -1028, 380, 2654, 644, 46, 425,
1749 -1028, 11192, 11192, -1028, -1028, 7671, 11440, 11562, 11684, 8198,
1750 9302, 819, 108, -1028, -1028, 456, -1028, -1028, -1028, -1028,
1751 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 717, 729,
1752 -1028, 420, 783, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1753 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1754 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1755 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1756 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1757 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1758 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1759 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1760 -1028, -1028, 432, -1028, -1028, -1028, 479, 10940, 524, 6840,
1761 10940, 10940, 10940, -1028, 10940, -1028, 503, 4337, 542, -1028,
1762 -1028, 513, 515, 267, 365, 614, 366, 545, -1028, -1028,
1763 7545, -1028, 9302, 9554, -1028, -1028, 7797, -1028, 11192, 858,
1764 -1028, 574, 6991, -1028, 7142, -1028, -1028, 598, 605, 14,
1765 -1028, 522, -1028, 718, 3380, 3380, 791, 9428, -1028, 6689,
1766 657, 232, -1028, 1140, 1, 682, -1028, 1140, 1, 665,
1767 371, 519, -1028, 542, 673, 519, -1028, 1, 763, 1275,
1768 11806, 677, -1028, 690, 708, 716, 724, -1028, -1028, -1028,
1769 -1028, -1028, 481, -1028, 580, 678, 953, -1028, -1028, -1028,
1770 -1028, 748, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 7923,
1771 11192, 11192, 11192, 11192, 9428, 11192, 11192, -1028, -1028, -1028,
1772 721, -1028, -1028, -1028, -1028, -1028, 10310, -1028, 6689, 9047,
1773 684, 10310, -1028, 10940, 10940, 10940, 10940, 10940, -1028, -1028,
1774 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, -1028,
1775 -1028, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940,
1776 10940, -1028, -1028, 12269, 9302, 12359, 5833, 319, 86, 86,
1777 7293, 11192, 7293, 232, -1028, 691, 777, -1028, -1028, 741,
1778 822, 53, 68, 69, 681, 956, 11192, 733, -1028, 714,
1779 891, -1028, -1028, -1028, -1028, 130, 291, 527, 572, 582,
1780 586, 608, 653, 663, -1028, -1028, -1028, 666, -1028, -1028,
1781 -1028, 13619, -1028, -1028, 11066, 11066, -1028, -1028, 374, -1028,
1782 -1028, -1028, 618, 10940, 10940, 9680, -1028, -1028, 12449, 9302,
1783 12539, 10940, 10940, 9932, -1028, 1, 710, -1028, -1028, 10940,
1784 1, -1028, 711, 1, 722, -1028, 107, -1028, -1028, -1028,
1785 -1028, -1028, 8634, -1028, 10940, 726, 728, 12449, 12539, 10940,
1786 1140, 100, 1, -1028, -1028, 8049, 732, 1, -1028, -1028,
1787 10058, -1028, -1028, 10184, -1028, -1028, -1028, 574, 893, -1028,
1788 -1028, 734, 11806, 12629, 9302, 12719, -1028, -1028, -1028, -1028,
1789 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 786, 101,
1790 988, 102, 10940, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1791 -1028, -1028, 757, -1028, -1028, -1028, 882, -1028, 882, 10940,
1792 -1028, 760, 767, 874, -1028, 1, 11806, 774, -1028, -1028,
1793 -1028, 880, 806, 4043, -1028, -1028, -1028, 963, 400, -1028,
1794 718, 3896, 3896, 3896, 3896, 4484, 3134, 3896, 3896, 3380,
1795 3380, 759, 759, 3267, 1222, 1222, 1464, 406, 406, 718,
1796 718, 718, 1115, 1115, 3482, 4359, 5535, 4506, -1028, 605,
1797 -1028, 1, 850, -1028, 1016, -1028, -1028, 5094, 882, 925,
1798 -1028, 5984, 922, 6437, 882, 60, 882, 914, 927, 76,
1799 12809, 9302, 12899, -1028, 319, -1028, 893, -1028, -1028, -1028,
1800 12989, 9302, 13079, 5833, 11192, -1028, -1028, -1028, -1028, -1028,
1801 -1028, 2683, -1028, 4190, -1028, -1028, -1028, 8634, 10940, -1028,
1802 10940, 542, -1028, 545, 3918, 4653, 1, 453, 458, -1028,
1803 -1028, -1028, -1028, 9680, -1028, 9932, -1028, -1028, 11192, 4337,
1804 -1028, -1028, 605, 605, -1028, -1028, -9, -1028, -1028, 519,
1805 11806, 734, 381, 686, 1, 362, 407, -1028, -1028, 1249,
1806 -1028, 566, -1028, 794, -1028, -1028, 568, 795, -1028, 718,
1807 -1028, -1028, 804, -1028, -1028, -1028, -1028, 812, 10436, 9428,
1808 -1028, 734, 11806, 9428, 11066, 10940, 13169, 9302, 13259, 12202,
1809 832, 11066, 11066, -1028, 721, 816, 1020, 11066, 11066, -1028,
1810 -1028, 721, -1028, -1028, -1028, 10562, 755, -1028, 825, -1028,
1811 950, -1028, -1028, -1028, -1028, -1028, -1028, 927, 882, -1028,
1812 10688, 882, 33, 278, 1, 77, 83, 7293, 232, 11192,
1813 5833, 995, 686, -1028, 1, 882, 107, 820, 8779, 108,
1814 411, -1028, -1028, -1028, -1028, 10940, 10940, 462, 10940, 10940,
1815 824, 107, -1028, -1028, 626, -1028, -1028, -1028, -1028, -1028,
1816 -1028, -1028, -1028, -1028, -1028, -1028, -1028, 843, -1028, 843,
1817 10940, 833, -1028, 734, -1028, 4337, 5388, 5682, 1, 466,
1818 470, -1028, -1028, 3091, 3091, 751, -1028, 616, 345, -1028,
1819 940, 899, -1028, 871, -1028, -1028, 815, -1028, -1028, 336,
1820 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 10940,
1821 -1028, -1028, -1028, -1028, -1028, -1028, 11066, -1028, -1028, -1028,
1822 -1028, -1028, 760, -1028, 904, -1028, -1028, -1028, 7293, -1028,
1823 -1028, -1028, -1028, 7293, 11192, 882, -1028, -1028, 882, -1028,
1824 -1028, 882, -1028, 10940, -1028, 54, -1028, 113, 882, 5833,
1825 232, 882, -1028, -1028, -1028, 1877, 5833, 1686, -1028, -1028,
1826 -1028, 10940, 9932, -1028, 1519, -1028, 1385, 7142, -1028, -1028,
1827 5833, 862, 538, -1028, -1028, -1028, -1028, 12202, 12083, -1028,
1828 257, 866, -1028, -1028, -1028, 964, -1028, 12202, 3091, 3091,
1829 751, 616, 547, 3621, 3621, 4337, -1028, -1028, 11928, 86,
1830 -1028, -1028, 6563, -1028, 86, -1028, -1028, -1028, -1028, -1028,
1831 10814, 6135, -1028, 882, -1028, -1028, -1028, -1028, -1028, -1028,
1832 -1028, -1028, -1028, -1028, 1537, -1028, -1028, -1028, -1028, -1028,
1833 -1028, 1, 1, -1028, -1028, 896, -1028, 877, 10940, -1028,
1834 883, 106, 887, 887, -1028, 894, 980, 895, 987, -1028,
1835 882, 232, 820, 1686, -1028, -1028, -1028, -1028, 1, 912,
1836 920, 901, 12050, -1028, 911, 887, 887, -1028, 916, 918,
1837 -1028, 929, -1028, -1028, 276, 27, 3, 1, 12169, -1028,
1838 919, -1028, -1028, 1, 932, -1028, 12202, -1028, -1028, 348,
1839 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1840 1, 1, 1, 1, 994, -1028, 1025, 118, 135, 179,
1841 5833, 1078, 5984, 3621, 10940, -1028, 92, -1028, 1537, 1208,
1842 -1028, 949, 1, 954, -1028, -1028, -1028, 10940, 1686, -1028,
1843 -1028, 1060, -1028, -1028, -1028, -1028, 216, -1028, -1028, 1686,
1844 -1028, -1028, 1096, -1028, -1028, -1028, -1028, 5833, 1, 63,
1845 7419, 972, -1028, 12050, 1686, -1028, 1049, 1030, 1060, -1028,
1846 -1028, -1028, 1686, -1028, 1096, -1028, 1424, -1028, 978, 12202,
1847 -1028, 43, 899, 982, -1028, 288, -1028, 257, 899, -1028,
1848 -1028, 1079, -1028, -1028, -1028, -1028, 222, 13349, 9302, 13439,
1849 925, -1028, 825, 86, 886, 255, -1028, -1028, -1028, -1028,
1850 -1028, -1028, 1, -1028, 1537, -1028, 1560, -1028, -1028, -1028,
1851 983, 986, -1028, 1082, 887, -1028, 989, -1028, 990, -1028,
1852 989, 882, 992, 5833, 7142, -1028, 1019, -1028, 1030, -1028,
1853 998, 1001, -1028, 13529, -1028, 887, 1003, -1028, 1011, 1003,
1854 -1028, 592, -1028, -1028, 12202, 1012, -1028, 1015, 12202, -1028,
1855 -1028, -1028, -1028, -1028, 134, 158, 1, 315, 318, -1028,
1856 -1028, -1028, 11192, 11192, 12083, -1028, -1028, 1017, 1021, 1686,
1857 -1028, 1096, -1028, -1028, 1096, -1028, 1096, -1028, -1028, -1028,
1858 -1028, 882, 1027, -1028, 1686, -1028, 1096, -1028, 1024, 1029,
1859 -1028, 1096, -1028, 1096, -1028, -1028, 1424, -1028, 1012, 12202,
1860 12202, 1012, 457, -1028, -1028, -1028, -1028, 1560, 1560, 989,
1861 1041, 989, 989, -1028, -1028, 1003, 1043, 1003, 1003, -1028,
1862 -1028, 1012, -1028, 1021, -1028, 1096, -1028, -1028, -1028, -1028,
1863 1096, -1028, -1028, -1028, 6286, 989, 1003, 150, -1028, -1028,
1872 2, 0, 0, 1, 0, 361, 362, 363, 0, 354,
1873 355, 356, 359, 357, 358, 360, 349, 350, 351, 352,
1874 372, 278, 278, 636, 635, 637, 638, 747, 0, 747,
1875 0, 0, 640, 639, 641, 729, 731, 632, 631, 730,
1876 634, 626, 627, 628, 629, 577, 646, 647, 0, 0,
1877 0, 0, 0, 0, 305, 759, 759, 95, 325, 597,
1878 597, 599, 601, 0, 0, 0, 0, 0, 0, 0,
1879 3, 745, 6, 9, 35, 40, 52, 67, 278, 66,
1880 0, 83, 0, 87, 97, 0, 61, 235, 250, 0,
1881 303, 0, 0, 63, 63, 745, 0, 0, 0, 0,
1882 314, 68, 323, 292, 293, 576, 578, 294, 295, 296,
1883 298, 297, 299, 575, 616, 617, 574, 624, 642, 643,
1884 300, 0, 301, 71, 5, 8, 176, 187, 177, 200,
1885 173, 193, 183, 182, 203, 204, 198, 181, 180, 175,
1886 201, 205, 206, 185, 174, 188, 192, 194, 186, 179,
1887 195, 202, 197, 196, 189, 199, 184, 172, 191, 190,
1888 171, 178, 169, 170, 166, 167, 168, 126, 128, 127,
1889 161, 162, 157, 139, 140, 141, 148, 145, 147, 142,
1890 143, 163, 164, 149, 150, 154, 158, 144, 146, 136,
1891 137, 138, 151, 152, 153, 155, 156, 159, 160, 165,
1892 131, 133, 28, 129, 130, 132, 0, 0, 0, 0,
1893 0, 0, 0, 597, 0, 273, 0, 257, 283, 81,
1894 277, 759, 0, 642, 643, 0, 301, 759, 723, 82,
1895 747, 79, 0, 759, 448, 78, 747, 748, 0, 0,
1896 23, 247, 0, 10, 0, 349, 350, 317, 449, 0,
1897 229, 0, 314, 230, 220, 221, 311, 0, 21, 0,
1898 0, 745, 17, 20, 747, 85, 16, 307, 747, 0,
1899 752, 752, 258, 0, 0, 752, 721, 747, 0, 0,
1900 0, 93, 353, 0, 103, 104, 111, 427, 621, 620,
1901 622, 619, 0, 618, 0, 0, 0, 584, 593, 589,
1902 595, 625, 56, 241, 242, 755, 756, 4, 757, 746,
1903 0, 0, 0, 0, 0, 0, 0, 364, 453, 442,
1904 72, 457, 322, 365, 457, 438, 0, 99, 0, 91,
1905 88, 0, 57, 0, 0, 0, 0, 0, 253, 254,
1906 0, 0, 0, 0, 218, 219, 0, 0, 0, 251,
1907 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908 0, 741, 742, 0, 759, 0, 0, 62, 0, 0,
1909 0, 0, 0, 745, 333, 746, 0, 383, 382, 0,
1910 0, 642, 643, 301, 121, 122, 0, 0, 124, 650,
1911 0, 642, 643, 301, 341, 196, 189, 199, 184, 166,
1912 167, 168, 126, 127, 719, 343, 718, 0, 80, 744,
1913 743, 0, 324, 579, 0, 0, 134, 726, 311, 284,
1914 728, 280, 0, 0, 0, 0, 274, 282, 0, 759,
1915 0, 0, 0, 0, 275, 747, 0, 316, 279, 677,
1916 747, 269, 759, 747, 759, 268, 747, 321, 55, 25,
1917 27, 26, 0, 318, 0, 0, 0, 0, 0, 0,
1918 19, 0, 747, 309, 15, 746, 84, 747, 306, 312,
1919 754, 753, 259, 754, 261, 313, 722, 0, 110, 625,
1920 101, 96, 0, 0, 759, 0, 326, 428, 603, 623,
1921 606, 604, 598, 580, 581, 600, 582, 602, 0, 0,
1922 0, 0, 0, 758, 7, 29, 30, 31, 32, 33,
1923 53, 54, 0, 454, 453, 73, 0, 458, 0, 0,
1924 36, 288, 0, 39, 287, 747, 0, 89, 100, 51,
1925 41, 49, 0, 262, 283, 207, 37, 0, 301, 58,
1926 227, 234, 236, 237, 238, 245, 246, 239, 240, 216,
1927 217, 243, 244, 747, 231, 232, 233, 222, 223, 224,
1928 225, 226, 255, 256, 732, 734, 733, 735, 447, 278,
1929 445, 747, 732, 734, 733, 735, 446, 278, 0, 759,
1930 374, 0, 373, 0, 0, 0, 0, 331, 0, 311,
1931 0, 759, 0, 63, 339, 121, 122, 123, 648, 337,
1932 0, 759, 0, 0, 0, 344, 739, 740, 346, 732,
1933 733, 278, 42, 262, 208, 48, 215, 0, 0, 725,
1934 0, 285, 281, 759, 732, 733, 747, 732, 733, 724,
1935 315, 749, 264, 270, 265, 272, 320, 24, 0, 248,
1936 11, 34, 0, 759, 214, 22, 86, 18, 308, 752,
1937 0, 94, 736, 109, 747, 732, 733, 429, 607, 0,
1938 583, 0, 586, 0, 591, 588, 0, 0, 592, 228,
1939 451, 455, 0, 371, 452, 459, 437, 291, 0, 0,
1940 98, 92, 0, 0, 0, 0, 0, 759, 0, 0,
1941 0, 0, 0, 444, 76, 0, 450, 0, 0, 267,
1942 443, 74, 266, 304, 366, 759, 759, 566, 759, 375,
1943 759, 329, 377, 64, 376, 330, 468, 0, 0, 368,
1944 0, 0, 736, 310, 747, 732, 733, 0, 0, 0,
1945 0, 121, 122, 125, 747, 0, 747, 653, 0, 439,
1946 69, 135, 727, 286, 276, 0, 0, 450, 0, 0,
1947 759, 747, 260, 102, 450, 430, 608, 612, 613, 614,
1948 605, 615, 585, 587, 594, 590, 596, 759, 70, 759,
1949 0, 289, 38, 90, 50, 263, 732, 733, 747, 732,
1950 733, 560, 564, 0, 0, 0, 505, 499, 502, 558,
1951 0, 59, 485, 487, 489, 492, 539, 544, 545, 546,
1952 549, 550, 551, 552, 553, 555, 554, 556, 557, 0,
1953 47, 212, 46, 213, 77, 750, 0, 44, 210, 45,
1954 211, 75, 567, 568, 759, 569, 367, 369, 0, 12,
1955 14, 573, 370, 0, 0, 0, 378, 380, 0, 65,
1956 469, 0, 335, 0, 461, 0, 334, 450, 0, 0,
1957 0, 0, 450, 342, 720, 676, 0, 676, 347, 440,
1958 441, 0, 271, 319, 676, 609, 747, 0, 418, 417,
1959 0, 290, 450, 547, 548, 122, 562, 0, 0, 501,
1960 0, 0, 504, 427, 561, 0, 60, 0, 542, 543,
1961 0, 491, 490, 0, 0, 249, 43, 209, 0, 0,
1962 571, 572, 0, 381, 0, 327, 328, 470, 332, 462,
1963 0, 0, 336, 0, 649, 338, 683, 680, 679, 678,
1964 681, 689, 698, 677, 0, 710, 699, 714, 713, 709,
1965 675, 747, 747, 682, 684, 685, 687, 661, 691, 696,
1966 759, 702, 759, 759, 707, 661, 712, 661, 0, 659,
1967 0, 0, 653, 676, 431, 434, 610, 416, 747, 0,
1968 685, 401, 693, 694, 759, 759, 759, 705, 401, 401,
1969 399, 421, 456, 460, 747, 519, 507, 747, 508, 514,
1970 0, 534, 597, 747, 525, 530, 533, 527, 529, 537,
1971 751, 559, 486, 488, 540, 541, 563, 498, 495, 597,
1972 747, 747, 747, 747, 0, 570, 0, 642, 643, 301,
1973 0, 759, 0, 0, 0, 463, 759, 340, 0, 394,
1974 386, 388, 747, 391, 384, 651, 652, 0, 0, 668,
1975 690, 0, 656, 717, 700, 701, 0, 658, 657, 0,
1976 671, 711, 0, 673, 715, 345, 654, 0, 747, 0,
1977 0, 0, 419, 0, 407, 409, 0, 692, 0, 396,
1978 398, 397, 0, 412, 0, 414, 0, 506, 517, 0,
1979 500, 512, 523, 509, 515, 0, 503, 526, 532, 538,
1980 536, 0, 493, 494, 496, 497, 311, 0, 759, 0,
1981 759, 13, 759, 0, 477, 480, 483, 484, 464, 466,
1982 467, 465, 747, 393, 0, 686, 0, 703, 660, 688,
1983 661, 661, 697, 702, 759, 716, 661, 708, 661, 685,
1984 661, 0, 0, 0, 0, 432, 0, 420, 704, 400,
1985 401, 401, 311, 0, 695, 759, 401, 706, 401, 401,
1986 425, 747, 423, 426, 0, 520, 521, 510, 0, 516,
1987 535, 531, 524, 528, 736, 310, 747, 732, 733, 565,
1988 379, 471, 0, 0, 481, 385, 387, 389, 392, 0,
1989 664, 0, 666, 655, 0, 672, 0, 669, 674, 348,
1990 433, 0, 0, 611, 0, 404, 0, 406, 736, 310,
1991 395, 0, 413, 0, 410, 415, 0, 422, 518, 0,
1992 0, 513, 450, 472, 478, 479, 482, 0, 0, 661,
1993 661, 661, 661, 436, 435, 401, 401, 401, 401, 424,
1994 522, 511, 473, 390, 665, 0, 662, 667, 670, 405,
1995 0, 402, 408, 411, 0, 661, 401, 759, 663, 403,
2002 -1028, -1028, -1028, 923, -1028, 62, 730, -552, -1028, -35,
2003 -1028, 731, -1028, 72, -1028, -212, -254, -66, -1028, -1028,
2004 -1028, -32, -88, -1028, -1028, -36, -1028, -260, 641, 25,
2005 1106, -141, -6, -68, -1028, -410, -19, 2212, -370, 1108,
2006 -40, -24, -1028, -1028, 5, -1028, 2954, -1028, 1121, -1028,
2007 1541, -1028, 652, 426, 601, -307, 94, -10, -1028, -360,
2008 -218, 66, -1028, -310, -52, -1028, -1028, -1028, -1028, -1028,
2009 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 32,
2010 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2011 -1028, -1028, -1028, -1028, -1028, 509, -1028, 210, 981, -368,
2012 -1028, 126, -700, -1028, -1024, -1001, 198, 116, 355, 317,
2013 -1028, 461, -1028, -860, -1028, 30, 350, -1028, -1028, -1028,
2014 -1028, -1028, -1028, -1028, 494, -1028, -1028, -95, 723, -1028,
2015 -1028, -1028, 915, -1028, -1028, -1028, -1028, -680, -1028, -1,
2016 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -526,
2017 -1028, -1028, -1028, -1028, 354, -1028, -1028, -1028, -824, -1028,
2018 230, -609, -594, -781, -1028, 177, -1028, 178, 190, -1028,
2019 -376, -1028, 373, -1028, -1028, 166, -1028, -1028, 263, 485,
2020 499, -1028, 1171, 747, 1110, 1394, -1028, 780, 1448, -1028,
2021 1612, 1744, -1028, -1028, -57, -1028, -1028, -199, -1028, -1028,
2022 -1028, -1028, -1028, -1028, -1028, 0, -1028, -1028, -1028, -1028,
2023 -37, 2020, 1174, 1178, 2236, 1512, -1028, -1028, 329, -1028,
2024 -705, 314, -773, 429, -1027, -785, -603, -908, 236, -200,
2025 258, 243, -1028, -1028, -503, -690, -213, -984, -987, 234,
2026 274, -1028, -846, -1028, -513, -379, -1028, -1028, -1028, 6,
2027 -417, -1028, -275, -1028, -1028, -87, -1028, -71, 23, 185,
2028 -583, 322, -194, -60, -44, -2
2034 -1, 1, 2, 70, 71, 72, 243, 578, 902, 579,
2035 261, 262, 461, 263, 452, 74, 530, 75, 539, 689,
2036 886, 368, 370, 371, 839, 76, 77, 515, 249, 79,
2037 80, 264, 81, 82, 83, 481, 84, 216, 388, 389,
2038 200, 201, 202, 617, 567, 204, 86, 454, 359, 87,
2039 218, 269, 535, 568, 700, 440, 441, 231, 232, 220,
2040 426, 442, 523, 524, 88, 366, 268, 467, 638, 287,
2041 717, 588, 730, 728, 603, 605, 737, 738, 952, 251,
2042 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
2043 321, 324, 705, 828, 720, 833, 834, 674, 252, 581,
2044 713, 835, 836, 380, 1020, 1021, 1022, 1023, 1129, 1055,
2045 958, 867, 868, 959, 1141, 1142, 486, 487, 657, 755,
2046 864, 1049, 954, 1125, 325, 101, 102, 322, 512, 513,
2047 671, 767, 516, 517, 675, 769, 845, 721, 1101, 718,
2048 840, 907, 1013, 1203, 1222, 1234, 1242, 1093, 1094, 1072,
2049 792, 793, 893, 894, 794, 878, 880, 877, 977, 978,
2050 979, 1145, 980, 983, 984, 985, 986, 987, 988, 795,
2051 796, 883, 797, 798, 799, 706, 824, 899, 830, 103,
2052 104, 105, 106, 107, 108, 109, 498, 661, 110, 500,
2053 111, 112, 499, 501, 292, 295, 296, 492, 659, 658,
2054 756, 865, 956, 1050, 760, 113, 114, 293, 115, 116,
2055 117, 223, 224, 120, 225, 226, 599, 729, 856, 857,
2056 1108, 1029, 931, 443, 933, 934, 1119, 936, 937, 938,
2057 939, 963, 964, 940, 941, 942, 943, 944, 967, 968,
2058 945, 946, 947, 948, 949, 1032, 407, 604, 274, 444,
2059 228, 123, 642, 570, 608, 602, 411, 307, 436, 437,
2060 696, 882, 472, 582, 375, 266
2068 124, 583, 365, 294, 240, 282, 372, 412, 205, 434,
2069 838, 308, 235, 203, 410, 330, 629, 597, 260, 291,
2070 969, 536, 227, 227, 374, 367, 367, 309, 205, 367,
2071 301, 282, 302, 203, 89, 308, 89, 841, 281, 1143,
2072 317, 215, 215, 747, 282, 282, 282, 265, 222, 222,
2073 238, 735, 241, 272, 276, 1117, 629, 571, -116, 405,
2074 369, 271, 275, 373, 203, 622, 125, 580, 320, 1000,
2075 1002, 754, 651, 622, 73, 1137, 73, 474, -112, 1068,
2076 1166, 476, 221, 221, 951, 89, 89, 712, 569, 283,
2077 577, 955, 1123, -113, -120, 1147, 495, 497, 1051, 580,
2078 222, -119, -115, 885, 203, 1168, 227, 827, -117, 719,
2079 219, 229, 1001, 1003, -353, 283, 681, -84, 462, 529,
2080 1109, 270, 626, 222, 222, 215, 267, 222, 379, 390,
2081 390, -112, 222, 3, 317, 430, 611, -98, -114, 1024,
2082 1034, 847, -353, -353, 315, 316, 1109, -116, -113, -523,
2083 930, 852, 930, 569, 237, 577, 422, 318, 1035, 930,
2084 612, 615, 233, 791, 458, 827, 221, 663, 667, 1143,
2085 446, -118, 448, 1069, 260, 716, 965, 654, 851, -107,
2086 1048, -732, 1111, 643, 1166, 1117, 1124, 525, 1122, 1148,
2087 464, -353, -120, 1118, 408, 872, 485, 1137, -636, -103,
2088 910, 308, 529, 529, 879, 305, 1223, 306, 1131, 456,
2089 643, 305, 480, 306, -104, -111, 1138, 465, 629, 427,
2090 664, 668, -110, -106, 260, 427, 434, -636, 282, -108,
2091 733, 445, 1097, 1024, 1103, -119, 227, 305, 227, 306,
2092 124, 89, 479, 242, 367, 367, 367, 367, 930, 510,
2093 511, 318, 935, 265, 935, 215, 256, 215, 215, -105,
2094 237, 935, 222, 960, 222, 222, 1109, 244, 222, -112,
2095 222, -112, 773, 622, 89, 622, 89, 282, 505, 506,
2096 507, 508, -732, 1109, 724, -116, -113, -116, -113, 89,
2097 520, 89, 592, 260, 734, 531, 221, 913, 221, 662,
2098 477, 662, 587, -118, 950, 367, -733, 297, 997, -118,
2099 527, -118, 283, 308, 73, 981, 1099, 643, 973, 1024,
2100 594, 1024, 265, 1210, 435, 927, 438, 643, -115, 460,
2101 -120, -117, -120, 298, 922, 584, 1100, 586, 1216, 585,
2102 1206, 89, 222, 222, 222, 222, 89, 222, 222, 928,
2103 935, 974, 976, 970, 488, 885, 315, 316, 222, -635,
2104 89, 283, 445, 537, 965, 926, -644, 976, 976, 982,
2105 575, 504, 965, -119, 965, -119, 885, 989, 531, 531,
2106 778, 73, 1079, 305, 1073, 306, 509, -106, -635, 215,
2107 989, 989, 522, -112, 1070, 823, 222, 522, 89, 299,
2108 1080, 1164, 89, 222, 89, 744, -107, 873, 874, 490,
2109 491, 569, 1150, 577, 480, 876, 575, 300, 222, 1084,
2110 1085, 447, 1024, 1024, -109, 935, -733, 445, 637, 237,
2111 282, 623, -108, 890, 814, 575, 935, 810, 812, 323,
2112 427, 821, 427, 817, 819, 629, 537, 537, 234, 466,
2113 688, 960, 205, 468, 215, 752, 326, 203, 480, 960,
2114 1078, 222, 763, 575, -645, 432, -115, 763, -115, -117,
2115 -114, -117, 529, 459, 282, 1146, 649, 911, 327, 529,
2116 529, 891, 445, 333, 892, 529, 529, 1095, -106, -747,
2117 575, -113, -120, 361, 965, 1121, 965, 89, 237, 415,
2118 -119, 965, 622, 965, 319, 727, 331, -107, -106, 215,
2119 989, -106, 994, 995, 283, -106, 222, 470, 1115, 414,
2120 996, 362, 363, 1115, 471, 714, -120, -107, 1113, -732,
2121 -107, 1010, 744, -108, -107, 1198, 1012, 1240, 736, 1201,
2122 965, 970, 356, 357, 358, 1115, 708, 488, 710, 970,
2123 1146, 970, 748, -108, 1146, 1113, -108, 749, 283, 694,
2124 -108, 861, 896, 1037, 1038, 697, 935, 701, 60, 698,
2125 364, 1181, 751, 1202, 989, 702, 690, 707, 416, -115,
2126 418, 960, 753, 361, -117, 1059, 1060, 1061, -114, 445,
2127 361, 1221, -115, 741, 695, -637, -117, 575, 282, 445,
2128 489, 740, 490, 491, 529, 1220, 1146, 575, -114, 702,
2129 -114, 362, 428, 89, 480, 89, 215, 205, 362, 457,
2130 630, 427, 203, 222, -637, 632, 215, 236, 634, 423,
2131 282, 636, 488, 222, 488, 89, 222, 816, 976, 750,
2132 -638, 702, 424, 78, 859, 78, 488, 646, 531, 695,
2133 -640, -105, 648, 966, -639, 531, 531, 78, 78, 425,
2134 429, 531, 531, 367, -114, 473, 962, 429, 849, -638,
2135 222, 970, 471, 970, 234, 319, -641, 695, 970, -640,
2136 970, 236, 283, -639, 488, 445, 237, 490, 491, 490,
2137 491, 433, 848, 575, 78, 78, -747, 850, 858, 493,
2138 237, 490, 491, 825, 831, -641, 837, -729, 837, 78,
2139 680, 89, 215, 431, 283, 89, 537, 970, 762, 222,
2140 765, -630, 453, 537, 537, 1161, 338, 339, 676, 537,
2141 537, -633, 78, 78, 606, 1173, 78, 493, 1196, 490,
2142 491, 78, 618, 203, 488, 237, 230, 695, 427, -630,
2143 -630, 772, -105, 233, -310, 774, 1190, 695, 361, 89,
2144 -633, 222, 89, 607, 826, 869, -747, 869, 367, 237,
2145 827, 522, -105, 349, 350, -105, -642, -630, -630, -105,
2146 531, 1156, -310, -310, -643, 595, 362, 483, 703, 596,
2147 914, 576, -301, 901, 711, 333, 715, 494, 903, 490,
2148 491, 695, 904, 595, -642, -642, 463, 875, -83, 361,
2149 695, 881, -643, -643, 643, 469, -644, 475, 1114, 478,
2150 -301, -301, 900, 482, -729, 502, -630, 514, -645, -729,
2151 528, -310, 972, 589, -733, 484, 333, 362, 590, 832,
2152 827, 966, 503, -112, 598, 1135, 282, 593, 537, 966,
2153 78, 966, 488, -642, 962, -113, 576, 633, 962, 631,
2154 89, -643, 962, -103, 962, 89, 222, 1011, 635, -301,
2155 640, 78, 641, 78, 78, -104, 1016, 78, -98, 78,
2156 650, 89, 415, 78, 576, 78, 591, 361, 89, 971,
2157 459, 1046, 673, 354, 355, 356, 357, 358, 78, 89,
2158 78, 670, 89, 888, 889, 660, -283, 490, 491, -120,
2159 282, 576, 449, 678, 695, 362, 409, -119, 679, 1089,
2160 682, 854, 450, 451, 683, 1075, 1162, 1163, 842, -111,
2161 1006, 846, 684, 704, 89, 709, 863, -110, 1033, 716,
2162 1033, 1033, 1081, 89, 719, 853, 764, 766, 768, 697,
2163 78, 78, 78, 78, 78, 78, 78, 78, -284, 361,
2164 809, -311, 1033, 1033, 1033, 827, 815, 78, 855, 78,
2165 862, 966, 78, 966, 866, 1090, -115, 1092, 966, -285,
2166 966, 971, -730, 100, 962, 100, 962, 362, 600, -311,
2167 -311, 962, 884, 962, 1057, 693, -106, 100, 100, 885,
2168 695, 282, 887, 699, 898, 78, 881, 78, -286, 831,
2169 990, 78, 78, 78, 837, 1126, 781, 966, 576, 488,
2170 496, -736, 1027, 1028, -633, 695, 695, 78, 576, 1031,
2171 962, 361, 1041, 1036, 100, 100, 601, 699, -311, 1044,
2172 1039, 1042, 89, 1052, 89, 905, 1053, 1054, 906, 100,
2173 1086, 908, -633, -633, 488, 78, 78, 1058, 912, 362,
2174 686, 915, 1062, -736, 1064, 1074, 614, 616, 693, 699,
2175 78, 971, 100, 100, 490, 491, 100, 998, 1077, 89,
2176 1066, 100, 89, 614, 616, 1128, 445, 826, 707, 1182,
2177 837, -736, -736, 361, 575, 1104, 367, 367, 361, -730,
2178 1106, -633, 961, 1127, -730, 1132, 78, 665, 687, 490,
2179 491, 644, 1033, 215, 576, 698, 1025, 1026, 921, 816,
2180 222, 362, 1087, 1017, 1144, 78, 362, 1133, 1149, 1169,
2181 1204, 1205, 1171, 1033, 1035, 1174, 1176, 922, -736, 1183,
2182 -736, 1180, -117, -732, 1184, 488, -114, 1186, 916, 1191,
2183 917, 918, 919, 920, 921, 89, 89, 1193, 1199, 1067,
2184 1045, 1200, -108, 1207, 1197, 455, -105, 1208, 926, 927,
2185 1088, 1214, -732, 922, 800, 601, 119, -733, 119, 695,
2186 310, 311, 312, 313, 314, 1082, 1083, 1225, 801, 1230,
2187 100, 645, 333, 928, 222, 222, 647, 924, 493, 1237,
2188 490, 491, 377, 1150, 926, 927, 394, 1105, 360, 346,
2189 347, 100, 739, 100, 100, 829, 1102, 100, 1160, 100,
2190 1167, 957, 78, 100, 78, 100, 1219, 119, 119, 928,
2191 870, 285, 78, 991, 860, 837, 1241, 672, 100, 518,
2192 100, 993, 78, 1096, 78, 78, 351, 352, 353, 354,
2193 355, 356, 357, 358, 1151, 1152, 1159, 285, 992, 1040,
2194 916, 1043, 917, 918, 919, 920, 89, 1153, 800, 800,
2195 382, 392, 392, 392, 1091, 1116, 413, 406, 1120, 78,
2196 666, 1047, 801, 801, 932, 1063, 1065, 1165, 1130, 1112,
2197 100, 100, 100, 100, 100, 100, 100, 100, 1136, 333,
2198 1139, 1134, 1110, 757, 758, 1076, 759, 100, 0, 100,
2199 0, 0, 100, 46, 47, 0, 346, 347, 0, 0,
2200 78, 0, 0, 0, 78, 78, 0, 0, 78, 0,
2201 0, 1179, 78, 78, 41, 42, 43, 44, 78, 78,
2202 0, 0, 0, 811, 813, 100, 0, 100, 0, 818,
2203 820, 100, 100, 100, 0, 353, 354, 355, 356, 357,
2204 358, 0, 800, 800, 0, 0, 0, 100, 78, 0,
2205 78, 78, 800, 800, 800, 0, 801, 801, 800, 800,
2206 0, 0, 0, 119, 0, 0, 801, 801, 801, 0,
2207 0, 1213, 801, 801, 0, 100, 100, 811, 813, 0,
2208 818, 820, 0, 0, 0, 1209, 0, 1211, 0, 0,
2209 100, 0, 1212, 0, 0, 0, 119, 0, 119, 0,
2210 1215, 0, 1217, 0, 1170, 1172, 0, 0, 0, 1218,
2211 1175, 119, 1177, 119, 1178, 0, 802, 916, 0, 917,
2212 918, 919, 920, 921, 0, 0, 100, 1185, 1187, 0,
2213 0, 0, 0, 1192, 285, 1194, 1195, 78, 0, 0,
2214 0, 1235, 922, 800, 0, 100, 1236, 0, 897, 78,
2215 0, 800, 0, 0, 78, 78, 1140, 801, 917, 918,
2216 919, 920, 0, 119, 0, 801, 924, 0, 119, 0,
2217 78, 0, 925, 926, 927, 0, 0, 78, 800, 0,
2218 0, 0, 119, 285, 0, 0, 0, 0, 78, 0,
2219 0, 78, 801, 897, 122, 576, 122, 0, 928, 0,
2220 0, 929, 0, 1224, 1226, 1227, 1228, 0, 0, 0,
2221 802, 802, 1229, 1231, 1232, 1233, 0, 0, 237, 0,
2222 119, 333, 0, 78, 119, 0, 119, 0, 0, 1238,
2223 0, 0, 78, 1239, 800, 0, 0, 0, 346, 347,
2224 0, 0, 100, 0, 100, 122, 122, 0, 801, 286,
2225 0, 916, 100, 917, 918, 919, 920, 921, 0, 0,
2226 0, 0, 100, 0, 100, 100, 0, 0, 0, 916,
2227 0, 917, 918, 919, 920, 286, 922, 273, 354, 355,
2228 356, 357, 358, 0, 0, 0, 0, 0, 383, 393,
2229 393, 0, 916, 0, 917, 918, 919, 920, 0, 100,
2230 924, 0, 0, 0, 802, 802, 925, 926, 927, 800,
2231 0, 0, 0, 800, 802, 802, 802, 0, 1018, 119,
2232 802, 802, 0, 801, 1019, 0, 0, 801, 0, 800,
2233 0, 78, 928, 78, 0, 929, 285, 0, 0, 0,
2234 100, 1018, 0, 801, 100, 100, 0, 953, 100, 0,
2235 0, 0, 100, 100, 0, 0, 0, 0, 100, 100,
2236 0, 0, 0, 0, 800, 800, 0, 0, 78, 0,
2237 0, 78, 0, 0, 0, 0, 0, 0, 801, 801,
2238 285, 0, 0, 0, 0, 0, 0, 0, 100, 0,
2239 100, 100, 0, 0, 0, 0, 0, 0, 0, 0,
2240 0, 122, 0, 0, 0, 802, 0, 0, 0, 78,
2241 0, 0, 0, 802, 0, 0, 0, 0, 916, 0,
2242 917, 918, 919, 920, 921, 0, 0, 0, 417, 0,
2243 0, 419, 420, 421, 122, 119, 122, 119, 0, 0,
2244 802, 0, 0, 922, 78, 78, 0, 0, 0, 122,
2245 0, 122, 0, 0, 0, 0, 0, 119, 0, 0,
2246 0, 0, 0, 0, 0, 0, 0, 924, 0, 0,
2247 0, 0, 286, 925, 926, 927, 0, 100, 0, 803,
2248 0, 0, 0, 78, 78, 0, 0, 0, 0, 100,
2249 0, 0, 0, 0, 100, 100, 802, 0, 0, 928,
2250 0, 122, 929, 0, 285, 0, 122, 0, 0, 0,
2251 100, 0, 0, 0, 0, 0, 0, 100, 0, 0,
2252 122, 286, 0, 538, 0, 0, 0, 0, 100, 0,
2253 0, 100, 0, 119, 0, 0, 285, 119, 0, 0,
2254 0, 0, 0, 808, 0, 0, 0, 521, 0, 0,
2255 0, 0, 534, 0, 0, 78, 0, 0, 122, 0,
2256 0, 0, 122, 100, 122, 0, 0, 0, 0, 0,
2257 0, 802, 100, 803, 803, 802, 0, 0, 0, 0,
2258 0, 119, 0, 0, 119, 0, 0, 0, 0, 0,
2259 0, 802, 0, 0, 0, 0, 0, 0, 0, 0,
2260 0, 0, 0, 0, 0, 0, 538, 538, 0, 916,
2261 0, 917, 918, 919, 920, 921, 0, 0, 0, 0,
2262 0, 0, 0, 0, 0, 0, 802, 802, 0, 0,
2263 0, 0, 0, 0, 922, 0, 0, 808, 808, 0,
2264 0, 0, 0, 0, 0, 619, 621, 0, 923, 0,
2265 0, 0, 0, 0, 273, 0, 0, 122, 924, 0,
2266 0, 0, 0, 0, 925, 926, 927, 803, 803, 0,
2267 0, 100, 0, 100, 286, 0, 0, 803, 803, 803,
2268 0, 0, 119, 803, 803, 0, 0, 119, 0, 0,
2269 928, 621, 0, 929, 273, 0, 0, 0, 0, 0,
2270 0, 0, 118, 119, 118, 0, 0, 0, 100, 0,
2271 119, 100, 0, 0, 0, 0, 0, 0, 286, 0,
2272 0, 119, 0, 0, 119, 0, 0, 0, 0, 0,
2273 0, 808, 808, 0, 0, 0, 0, 0, 0, 0,
2274 677, 808, 808, 808, 0, 0, 0, 808, 808, 100,
2275 0, 0, 1008, 118, 118, 0, 119, 284, 0, 0,
2276 0, 0, 0, 804, 0, 119, 0, 0, 803, 0,
2277 0, 0, 0, 122, 0, 122, 803, 0, 0, 0,
2278 0, 0, 0, 284, 100, 100, 0, 0, 0, 0,
2279 0, 0, 0, 0, 0, 122, 381, 391, 391, 391,
2280 0, 0, 0, 803, 0, 0, 0, 0, 0, 0,
2281 0, 0, 0, 0, 0, 0, 392, 805, 0, 0,
2282 0, 0, 0, 100, 100, 0, 0, 0, 0, 0,
2283 0, 0, 808, 0, 0, 0, 0, 0, 0, 742,
2284 808, 743, 286, 0, 0, 0, 0, 0, 0, 0,
2285 0, 761, 0, 0, 621, 0, 273, 804, 804, 803,
2286 0, 0, 0, 0, 119, 0, 119, 808, 0, 0,
2287 0, 122, 0, 0, 286, 122, 538, 0, 0, 0,
2288 0, 0, 0, 538, 538, 0, 0, 0, 0, 538,
2289 538, 0, 0, 0, 85, 100, 85, 0, 0, 771,
2290 0, 119, 0, 0, 119, 0, 0, 392, 0, 118,
2291 0, 805, 805, 0, 0, 0, 0, 0, 121, 122,
2292 121, 0, 122, 808, 0, 0, 822, 0, 0, 0,
2293 0, 0, 0, 0, 803, 0, 0, 0, 803, 0,
2294 0, 844, 118, 0, 118, 85, 85, 0, 0, 0,
2295 0, 804, 804, 0, 803, 0, 0, 118, 0, 118,
2296 0, 804, 804, 804, 0, 0, 0, 804, 804, 121,
2297 121, 0, 0, 0, 0, 0, 0, 119, 119, 0,
2298 284, 806, 0, 0, 0, 0, 0, 0, 378, 803,
2299 803, 871, 0, 0, 0, 0, 0, 0, 808, 0,
2300 0, 0, 808, 0, 0, 805, 805, 0, 538, 118,
2301 0, 0, 0, 0, 118, 805, 805, 805, 808, 0,
2302 122, 805, 805, 0, 0, 122, 0, 0, 118, 284,
2303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2304 0, 122, 0, 0, 0, 0, 0, 0, 122, 0,
2305 0, 0, 804, 808, 808, 0, 0, 0, 0, 122,
2306 804, 0, 122, 0, 909, 0, 118, 0, 0, 0,
2307 118, 0, 118, 0, 0, 806, 806, 0, 0, 0,
2308 0, 0, 0, 273, 0, 0, 0, 804, 119, 0,
2309 1009, 0, 0, 0, 122, 0, 0, 0, 0, 0,
2310 0, 85, 0, 122, 0, 0, 805, 0, 0, 0,
2311 0, 0, 0, 807, 805, 0, 0, 0, 0, 0,
2312 0, 0, 0, 0, 0, 121, 0, 0, 0, 0,
2313 0, 1015, 0, 0, 85, 0, 85, 0, 0, 0,
2314 0, 805, 0, 804, 0, 0, 0, 0, 0, 85,
2315 0, 85, 0, 0, 393, 0, 0, 0, 121, 1030,
2316 121, 0, 0, 0, 0, 118, 0, 0, 0, 806,
2317 806, 0, 0, 121, 0, 121, 0, 0, 0, 806,
2318 806, 806, 284, 0, 0, 806, 806, 0, 0, 0,
2319 0, 0, 0, 0, 0, 0, 0, 805, 0, 0,
2320 0, 85, 122, 0, 122, 0, 85, 807, 807, 0,
2321 0, 0, 0, 0, 0, 0, 0, 0, 804, 0,
2322 85, 0, 804, 532, 0, 121, 284, 0, 0, 0,
2323 121, 0, 0, 0, 0, 1098, 0, 0, 804, 122,
2324 0, 0, 122, 0, 121, 393, 0, 121, 1107, 0,
2325 0, 0, 0, 0, 0, 0, 0, 0, 85, 0,
2326 0, 0, 85, 0, 85, 0, 0, 0, 0, 0,
2327 806, 0, 805, 804, 804, 0, 805, 0, 806, 0,
2328 0, 118, 121, 118, 0, 0, 121, 0, 121, 0,
2329 0, 0, 805, 0, 0, 0, 0, 0, 0, 0,
2330 0, 807, 807, 118, 0, 806, 532, 532, 0, 0,
2331 0, 807, 807, 807, 0, 122, 122, 807, 807, 0,
2332 0, 0, 0, 0, 0, 0, 0, 805, 805, 0,
2333 121, 121, 0, 0, 0, 0, 0, 0, 0, 0,
2334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2335 284, 0, 0, 0, 0, 0, 0, 85, 0, 332,
2336 0, 806, 0, -759, 0, 0, 0, 0, 0, 0,
2337 0, -759, -759, -759, 0, 0, -759, -759, -759, 118,
2338 -759, 121, 284, 118, 0, 0, 0, 0, -759, -759,
2339 -759, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2340 -759, -759, 807, -759, -759, -759, -759, -759, 0, 0,
2341 807, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2342 342, 343, 344, 345, 0, 0, 122, 118, 346, 347,
2343 118, -759, 0, 0, 0, 0, 806, 807, 0, 0,
2344 806, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2345 0, 0, 0, 0, 0, 0, 806, 0, 0, -759,
2346 -759, 348, 0, 349, 350, 351, 352, 353, 354, 355,
2347 356, 357, 358, 85, 0, 85, 0, 0, 0, 0,
2348 0, 0, 0, -759, 0, 0, 0, 0, 0, 0,
2349 0, 806, 806, 807, 0, 85, 0, 121, 0, 121,
2350 0, 0, 0, 0, 0, 0, -759, -759, 0, 0,
2351 0, 233, -759, 0, -759, 0, -759, 0, 0, 121,
2352 0, 0, 0, 0, 0, 0, 0, 0, 118, 0,
2353 0, 0, 0, 118, 0, 0, 0, 0, 0, 0,
2354 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
2355 0, 0, 0, 0, 0, 0, 118, 0, 0, 0,
2356 0, 0, 0, 0, 0, 0, 0, 118, 807, 0,
2357 118, 85, 807, 0, 0, 85, 532, 0, 0, 0,
2358 0, 0, 0, 532, 532, 0, 0, 0, 807, 532,
2359 532, 0, 0, 0, 0, 121, 0, 0, 1007, 121,
2360 121, 0, 118, 0, 0, 0, 0, 121, 121, 0,
2361 0, 118, 0, 121, 121, 0, 0, 0, 0, 85,
2362 0, 0, 85, 807, 807, 0, 0, 0, 0, 0,
2363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2364 0, 0, 0, 121, 0, 0, 121, 0, 0, 0,
2365 217, 217, 0, 0, 0, 0, 0, 0, 0, 0,
2366 0, 0, 391, 0, 0, 0, 0, 0, 0, 0,
2367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2368 0, 0, 250, 253, 254, 255, 0, 0, 0, 217,
2369 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2370 0, 0, 303, 304, 0, 0, 0, 0, 532, 0,
2371 118, 0, 118, 0, 0, 0, 0, 0, 0, 0,
2372 85, 0, 0, 0, 0, 85, 0, 0, 0, 0,
2373 0, 0, 121, 0, 217, 0, 0, 0, 0, 0,
2374 0, 85, 0, 0, 121, 0, 0, 118, 85, 121,
2375 118, 0, 0, 391, 0, 0, 0, 0, 0, 85,
2376 0, 0, 85, 0, 0, 121, 0, 0, 0, 0,
2377 0, 0, 121, 0, 0, 0, 0, 0, 0, 0,
2378 0, 0, 0, 121, 0, 0, 121, 0, 0, 0,
2379 1005, 0, 0, 0, 85, 0, 0, 0, 0, 0,
2380 0, 0, 0, 85, 23, 24, 25, 26, 0, 0,
2381 0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
2382 32, 33, 34, 118, 118, 0, 0, 121, 0, 0,
2383 41, 42, 43, 44, 45, 0, 0, 0, 0, 0,
2384 0, 217, 0, 0, 217, 217, 217, 0, 303, 0,
2385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2386 0, 0, 0, 0, 217, 0, 217, 217, 0, 0,
2387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2388 0, 789, 59, 60, 61, 62, 63, 64, 65, 66,
2389 0, 333, 334, 335, 336, 337, 338, 339, 340, 0,
2390 342, 343, 85, 0, 85, 0, 0, 0, 346, 347,
2391 279, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2392 0, 0, 0, 0, 0, 0, 121, 0, 121, 0,
2393 0, 0, 0, 0, 118, 0, 0, 0, 0, 85,
2394 0, 0, 85, 349, 350, 351, 352, 353, 354, 355,
2395 356, 357, 358, 0, 0, 0, 0, 0, 0, 0,
2396 217, 0, 0, 121, 0, 533, 121, 540, 541, 542,
2397 543, 544, 0, 0, 545, 546, 547, 548, 549, 550,
2398 551, 552, 553, 0, 0, 554, 555, 556, 557, 558,
2399 559, 560, 561, 562, 563, 0, 0, 0, 217, 0,
2400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2401 0, 0, 0, 0, 0, 85, 85, 0, 0, 0,
2402 0, 0, 0, 0, 333, 334, 335, 336, 337, 338,
2403 339, 340, 341, 342, 343, 344, 345, 0, 0, 121,
2404 121, 346, 347, 0, 0, 0, 0, 0, 613, 613,
2405 0, 0, 0, 0, 0, 0, 0, 613, 217, 217,
2406 0, 0, 0, 217, 0, 613, 613, 217, 0, 0,
2407 0, 0, 0, 255, 348, 0, 349, 350, 351, 352,
2408 353, 354, 355, 356, 357, 358, 0, 0, 639, 0,
2409 0, 0, 0, 613, 0, 0, 0, 0, 0, 0,
2410 237, 0, 0, 0, 217, 0, 0, 217, 0, 0,
2411 0, 0, 0, 0, 0, 0, 0, 0, 217, 0,
2412 0, 0, 0, 0, 0, 0, 85, 0, 0, 0,
2413 0, 0, 0, 0, 0, 0, 669, 333, 334, 335,
2414 336, 337, 338, 339, 340, 341, 342, 343, -760, -760,
2415 121, 0, 0, 217, 346, 347, 0, 0, 0, 0,
2416 0, 0, -736, 0, 0, 0, 0, 0, 0, 0,
2417 -736, -736, -736, 0, 0, 0, -736, -736, 0, -736,
2418 0, 0, 0, 0, 0, 0, 0, -736, -736, 349,
2419 350, 351, 352, 353, 354, 355, 356, 357, 358, -736,
2420 -736, 0, -736, -736, -736, -736, -736, 0, 0, 0,
2421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2422 0, 0, 0, 0, 0, 217, 0, 0, 0, 0,
2423 -736, 0, 0, 0, 0, 217, 0, 0, 0, -736,
2424 -736, -736, -736, -736, -736, -736, -736, -736, -736, -736,
2425 -736, -736, 217, 0, 217, 0, -736, -736, -736, -736,
2426 0, 691, 0, 0, 0, 0, 0, 217, 0, 217,
2427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2428 0, 0, -736, 0, 0, 0, 0, 0, -116, -736,
2429 0, -736, -736, -736, -736, -736, -736, -736, -736, -736,
2430 -736, 0, 0, 0, 0, -736, -736, -736, -107, 0,
2431 0, -736, 217, -736, 0, -736, 0, 0, 613, 775,
2432 0, 217, 0, 0, 0, 613, 613, 0, 0, 0,
2433 0, 613, 613, 0, 23, 24, 25, 26, 0, 217,
2434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2435 32, 33, 34, 781, 217, 0, 0, 782, 0, 981,
2436 41, 42, 43, 44, 45, 0, 0, 0, 0, 0,
2437 0, 0, 0, 0, 0, 0, 0, 0, 922, 613,
2438 613, 0, 613, 613, 0, 0, 0, 0, 0, 0,
2439 0, 783, 784, 0, 0, 0, 0, 0, 0, 785,
2440 0, 0, 786, 0, 217, 787, 788, 0, 975, 926,
2441 0, 789, 59, 999, 61, 62, 63, 64, 65, 66,
2442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2443 0, 0, 0, 790, 0, 0, 0, 0, 0, 0,
2444 279, 0, 0, 895, 0, 0, 0, 0, 0, 0,
2445 613, 0, -759, 4, 0, 5, 6, 7, 8, 9,
2446 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
2447 13, 14, 15, 16, 17, 18, 19, 217, 0, 0,
2448 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2449 0, 27, 0, 0, 0, 613, 217, 28, 29, 30,
2450 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2451 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2452 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2454 0, 0, 50, 51, 217, 0, 0, 0, 0, 0,
2455 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2456 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2457 66, 0, 217, 0, 0, 0, 0, 0, 0, 0,
2458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2459 0, 67, 68, 69, 0, 0, 0, 0, -736, 0,
2460 0, 0, 0, -759, 0, -759, -736, -736, -736, 0,
2461 0, -736, -736, -736, 0, -736, 0, 0, 0, 0,
2462 0, 0, 0, -736, -736, -736, -736, -736, 0, 0,
2463 0, 0, 0, 0, 0, -736, -736, 0, -736, -736,
2464 -736, -736, -736, 0, 0, 0, 0, 0, 217, 0,
2465 0, 0, 0, 333, -760, -760, -760, -760, 338, 339,
2466 0, 217, -760, -760, 0, 0, -736, 0, 0, 0,
2467 346, 347, 0, 0, 0, -736, -736, -736, -736, -736,
2468 -736, -736, -736, -736, -736, -736, -736, -736, 0, 0,
2469 0, 0, -736, -736, -736, -736, 0, 745, -736, 0,
2470 0, 0, 0, 0, -736, 349, 350, 351, 352, 353,
2471 354, 355, 356, 357, 358, 0, 0, 0, -736, 0,
2472 0, -736, 217, 0, -116, -736, -736, -736, -736, -736,
2473 -736, -736, -736, -736, -736, -736, -736, 0, 0, 0,
2474 0, -736, -736, -736, -736, -630, 0, -736, -736, -736,
2475 0, -736, 0, -630, -630, -630, 0, 0, -630, -630,
2476 -630, 0, -630, 0, 0, 0, 0, 685, 0, 0,
2477 -630, 0, -630, -630, -630, 0, 0, 0, 0, 0,
2478 0, 0, -630, -630, 0, -630, -630, -630, -630, -630,
2479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2480 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
2481 343, 344, 345, -630, 0, 0, 0, 346, 347, 0,
2482 0, 0, -630, -630, -630, -630, -630, -630, -630, -630,
2483 -630, -630, -630, -630, -630, 0, 0, 0, 0, -630,
2484 -630, -630, -630, 0, -630, -630, 0, 0, 0, 0,
2485 348, -630, 349, 350, 351, 352, 353, 354, 355, 356,
2486 357, 358, 0, 0, 0, -630, 0, 0, -630, -257,
2487 0, -630, -630, -630, -630, -630, -630, -630, -630, -630,
2488 -630, -630, -630, -630, 0, 0, 0, 0, 0, -630,
2489 -630, -630, -633, 0, -630, -630, -630, 0, -630, 0,
2490 -633, -633, -633, 0, 0, -633, -633, -633, 0, -633,
2491 0, 0, 0, 0, 685, 0, 0, -633, 0, -633,
2492 -633, -633, 0, 0, 0, 0, 0, 0, 0, -633,
2493 -633, 0, -633, -633, -633, -633, -633, 0, 0, 0,
2494 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
2495 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2496 -633, 0, 0, 0, 346, 347, 0, 0, 0, -633,
2497 -633, -633, -633, -633, -633, -633, -633, -633, -633, -633,
2498 -633, -633, 0, 0, 0, 0, -633, -633, -633, -633,
2499 0, -633, -633, 0, 0, 0, 0, 348, -633, 349,
2500 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
2501 0, 0, -633, 0, 0, -633, 0, 0, -633, -633,
2502 -633, -633, -633, -633, -633, -633, -633, -633, -633, -633,
2503 -633, 0, 0, 0, 0, 0, -633, -633, -633, -737,
2504 0, -633, -633, -633, 0, -633, 0, -737, -737, -737,
2505 0, 0, -737, -737, -737, 0, -737, 0, 0, 0,
2506 0, 0, 0, 0, -737, -737, -737, -737, -737, 0,
2507 0, 0, 0, 0, 0, 0, -737, -737, 0, -737,
2508 -737, -737, -737, -737, 0, 0, 0, 0, 0, 0,
2509 0, 0, 0, 0, 333, 334, 335, 336, 337, 338,
2510 339, 340, 341, 342, 343, 344, 345, -737, 0, 0,
2511 0, 346, 347, 0, 0, 0, -737, -737, -737, -737,
2512 -737, -737, -737, -737, -737, -737, -737, -737, -737, 0,
2513 0, 0, 0, -737, -737, -737, -737, 0, 0, -737,
2514 0, 0, 0, 0, 348, -737, 349, 350, 351, 352,
2515 353, 354, 355, 356, 357, 358, 0, 0, 0, -737,
2516 0, 0, -737, 0, 0, 0, -737, -737, -737, -737,
2517 -737, -737, -737, -737, -737, -737, -737, -737, 0, 0,
2518 0, 0, -737, -737, -737, -737, -738, 0, -737, -737,
2519 -737, 0, -737, 0, -738, -738, -738, 0, 0, -738,
2520 -738, -738, 0, -738, 0, 0, 0, 0, 0, 0,
2521 0, -738, -738, -738, -738, -738, 0, 0, 0, 0,
2522 0, 0, 0, -738, -738, 0, -738, -738, -738, -738,
2523 -738, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2524 0, 333, 334, 335, 336, 337, 338, 339, 0, 0,
2525 342, 343, 0, 0, -738, 0, 0, 0, 346, 347,
2526 0, 0, 0, -738, -738, -738, -738, -738, -738, -738,
2527 -738, -738, -738, -738, -738, -738, 0, 0, 0, 0,
2528 -738, -738, -738, -738, 0, 0, -738, 0, 0, 0,
2529 0, 0, -738, 349, 350, 351, 352, 353, 354, 355,
2530 356, 357, 358, 0, 0, 0, -738, 0, 0, -738,
2531 0, 0, 0, -738, -738, -738, -738, -738, -738, -738,
2532 -738, -738, -738, -738, -738, 0, 0, 0, 0, -738,
2533 -738, -738, -738, -310, 0, -738, -738, -738, 0, -738,
2534 0, -310, -310, -310, 0, 0, -310, -310, -310, 0,
2535 -310, 0, 0, 0, 0, 0, 0, 0, -310, 0,
2536 -310, -310, -310, 0, 0, 0, 0, 0, 0, 0,
2537 -310, -310, 0, -310, -310, -310, -310, -310, 0, 0,
2538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2540 0, -310, 0, 0, 0, 0, 0, 0, 0, 0,
2541 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2542 -310, -310, -310, 0, 0, 0, 0, -310, -310, -310,
2543 -310, 0, 746, -310, 0, 0, 0, 0, 0, -310,
2544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2545 0, 0, 0, -310, 0, 0, -310, 0, 0, -118,
2546 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2547 -310, -310, 0, 0, 0, 0, 0, -310, -310, -310,
2548 -449, 0, -310, -310, -310, 0, -310, 0, -449, -449,
2549 -449, 0, 0, -449, -449, -449, 0, -449, 0, 0,
2550 0, 0, 0, 0, 0, -449, -449, -449, -449, 0,
2551 0, 0, 0, 0, 0, 0, 0, -449, -449, 0,
2552 -449, -449, -449, -449, -449, 0, 0, 0, 0, 0,
2553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2554 0, 0, 0, 0, 0, 0, 0, 0, -449, 0,
2555 0, 0, 0, 0, 0, 0, 0, -449, -449, -449,
2556 -449, -449, -449, -449, -449, -449, -449, -449, -449, -449,
2557 0, 0, 0, 0, -449, -449, -449, -449, 0, 0,
2558 -449, 0, 0, 0, 0, 0, -449, 0, 0, 0,
2559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2560 -449, 0, 0, 0, 0, 0, 0, -449, 0, -449,
2561 -449, -449, -449, -449, -449, -449, -449, -449, -449, 0,
2562 0, 0, 0, -449, -449, -449, -449, -302, 233, -449,
2563 -449, -449, 0, -449, 0, -302, -302, -302, 0, 0,
2564 -302, -302, -302, 0, -302, 0, 0, 0, 0, 0,
2565 0, 0, -302, 0, -302, -302, -302, 0, 0, 0,
2566 0, 0, 0, 0, -302, -302, 0, -302, -302, -302,
2567 -302, -302, 0, 0, 0, 0, 0, 0, 0, 0,
2568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2569 0, 0, 0, 0, 0, -302, 0, 0, 0, 0,
2570 0, 0, 0, 0, -302, -302, -302, -302, -302, -302,
2571 -302, -302, -302, -302, -302, -302, -302, 0, 0, 0,
2572 0, -302, -302, -302, -302, 0, 0, -302, 0, 0,
2573 0, 0, 0, -302, 0, 0, 0, 0, 0, 0,
2574 0, 0, 0, 0, 0, 0, 0, -302, 0, 0,
2575 -302, 0, 0, 0, -302, -302, -302, -302, -302, -302,
2576 -302, -302, -302, -302, -302, -302, 0, 0, 0, 0,
2577 0, -302, -302, -302, -759, 0, -302, -302, -302, 0,
2578 -302, 0, -759, -759, -759, 0, 0, -759, -759, -759,
2579 0, -759, 0, 0, 0, 0, 0, 0, 0, -759,
2580 -759, -759, -759, 0, 0, 0, 0, 0, 0, 0,
2581 0, -759, -759, 0, -759, -759, -759, -759, -759, 0,
2582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2584 0, 0, -759, 0, 0, 0, 0, 0, 0, 0,
2585 0, -759, -759, -759, -759, -759, -759, -759, -759, -759,
2586 -759, -759, -759, -759, 0, 0, 0, 0, -759, -759,
2587 -759, -759, 0, 0, -759, 0, 0, 0, 0, 0,
2588 -759, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2589 0, 0, 0, 0, -759, 0, 0, 0, 0, 0,
2590 0, -759, 0, -759, -759, -759, -759, -759, -759, -759,
2591 -759, -759, -759, 0, 0, 0, 0, -759, -759, -759,
2592 -759, -317, 233, -759, -759, -759, 0, -759, 0, -317,
2593 -317, -317, 0, 0, -317, -317, -317, 0, -317, 0,
2594 0, 0, 0, 0, 0, 0, -317, 0, -317, -317,
2595 0, 0, 0, 0, 0, 0, 0, 0, -317, -317,
2596 0, -317, -317, -317, -317, -317, 0, 0, 0, 0,
2597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2598 0, 0, 0, 0, 0, 0, 0, 0, 0, -317,
2599 0, 0, 0, 0, 0, 0, 0, 0, -317, -317,
2600 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
2601 -317, 0, 0, 0, 0, -317, -317, -317, -317, 0,
2602 0, -317, 0, 0, 0, 0, 0, -317, 0, 0,
2603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2604 0, -317, 0, 0, 0, 0, 0, 0, -317, 0,
2605 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
2606 0, 0, 0, 0, 0, -317, -317, -317, -736, 230,
2607 -317, -317, -317, 0, -317, 0, -736, -736, -736, 0,
2608 0, 0, -736, -736, 0, -736, 0, 0, 0, 0,
2609 0, 0, 0, -736, -736, 0, 0, 0, 0, 0,
2610 0, 0, 0, 0, 0, -736, -736, 0, -736, -736,
2611 -736, -736, -736, 0, 0, 0, 0, 0, 0, 0,
2612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2613 0, 0, 0, 0, 0, 0, -736, 0, 0, 0,
2614 0, 0, 0, 0, 0, -736, -736, -736, -736, -736,
2615 -736, -736, -736, -736, -736, -736, -736, -736, 0, 0,
2616 0, 0, -736, -736, -736, -736, 0, 691, 0, 0,
2617 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2618 0, 0, 0, 0, 0, 0, 0, 0, -736, 0,
2619 0, 0, 0, 0, -116, -736, 0, -736, -736, -736,
2620 -736, -736, -736, -736, -736, -736, -736, 0, 0, 0,
2621 0, -736, -736, -736, -736, -310, 0, -736, 0, -736,
2622 0, -736, 0, -310, -310, -310, 0, 0, 0, -310,
2623 -310, 0, -310, 0, 0, 0, 0, 0, 0, 0,
2624 -310, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2625 0, 0, -310, -310, 0, -310, -310, -310, -310, -310,
2626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2628 0, 0, 0, -310, 0, 0, 0, 0, 0, 0,
2629 0, 0, -310, -310, -310, -310, -310, -310, -310, -310,
2630 -310, -310, -310, -310, -310, 0, 0, 0, 0, -310,
2631 -310, -310, -310, 0, 692, 0, 0, 0, 0, 0,
2632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2633 0, 0, 0, 0, 0, -310, 0, 0, 0, 0,
2634 0, -118, -310, 0, -310, -310, -310, -310, -310, -310,
2635 -310, -310, -310, -310, 0, 0, 0, 0, 0, -310,
2636 -310, -109, -310, 0, -310, 0, -310, 0, -310, 0,
2637 -310, -310, -310, 0, 0, 0, -310, -310, 0, -310,
2638 0, 0, 0, 0, 0, 0, 0, -310, 0, 0,
2639 0, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2640 -310, 0, -310, -310, -310, -310, -310, 0, 0, 0,
2641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2643 -310, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2644 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2645 -310, -310, 0, 0, 0, 0, -310, -310, -310, -310,
2646 0, 692, 0, 0, 0, 0, 0, 0, 0, 0,
2647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2648 0, 0, -310, 0, 0, 0, 0, 0, -118, -310,
2649 0, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2650 -310, 0, 0, 0, 0, 0, -310, -310, -310, 0,
2651 0, -310, 0, -310, 257, -310, 5, 6, 7, 8,
2652 9, -759, -759, -759, 10, 11, 0, 0, -759, 12,
2653 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2654 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2655 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2656 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2657 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2658 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2660 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2661 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2662 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2663 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2665 0, 0, 67, 68, 69, 0, 0, 0, 0, 0,
2666 0, 0, 0, 0, -759, 257, -759, 5, 6, 7,
2667 8, 9, 0, 0, -759, 10, 11, 0, -759, -759,
2668 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2669 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2670 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2671 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
2672 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
2673 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
2674 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2675 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
2676 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
2677 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
2678 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
2679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2680 0, 0, 0, 67, 68, 69, 0, 0, 0, 0,
2681 0, 0, 0, 0, 0, -759, 257, -759, 5, 6,
2682 7, 8, 9, 0, 0, -759, 10, 11, 0, 0,
2683 -759, 12, -759, 13, 14, 15, 16, 17, 18, 19,
2684 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2685 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2686 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2687 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2688 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2689 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2690 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2691 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2692 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2693 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2695 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2696 0, 0, 0, 0, 0, 0, -759, 257, -759, 5,
2697 6, 7, 8, 9, 0, 0, -759, 10, 11, 0,
2698 0, -759, 12, 0, 13, 14, 15, 16, 17, 18,
2699 19, -759, 0, 0, 0, 0, 20, 21, 22, 23,
2700 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2701 0, 28, 29, 258, 31, 32, 33, 34, 35, 36,
2702 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
2703 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2704 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2705 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2706 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
2707 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
2708 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2710 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
2711 0, 0, 0, 0, 0, 0, 0, -759, 257, -759,
2712 5, 6, 7, 8, 9, 0, 0, -759, 10, 11,
2713 0, 0, -759, 12, 0, 13, 14, 15, 16, 17,
2714 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
2715 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2716 0, 0, 28, 29, 258, 31, 32, 33, 34, 35,
2717 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2718 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2719 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2720 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2721 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
2722 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
2723 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2724 0, 0, 0, 0, 257, 0, 5, 6, 7, 8,
2725 9, 0, -759, -759, 10, 11, 67, 68, 69, 12,
2726 0, 13, 14, 15, 16, 17, 18, 19, -759, 0,
2727 -759, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2728 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2729 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2730 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2731 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2733 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2734 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2735 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2736 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2737 257, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2738 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2739 16, 17, 18, 19, -759, 0, -759, 0, 0, 20,
2740 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2741 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2742 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2743 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2744 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2745 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2746 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2747 259, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2748 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2750 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
2751 69, 0, 0, 0, 0, 0, 0, 0, -759, 0,
2752 -759, 257, -759, 5, 6, 7, 8, 9, 0, 0,
2753 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
2754 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
2755 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2756 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
2757 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2758 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
2759 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
2760 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2761 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
2762 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
2763 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
2764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2765 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
2766 68, 69, 0, 0, 0, 0, 0, 0, 0, -759,
2767 0, -759, 4, -759, 5, 6, 7, 8, 9, 0,
2768 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
2769 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
2770 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2771 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
2772 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2773 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2774 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2776 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
2777 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
2778 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2781 67, 68, 69, 0, 0, -759, 0, 0, 0, 0,
2782 0, 0, -759, 257, -759, 5, 6, 7, 8, 9,
2783 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
2784 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2785 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2786 0, 27, 0, 0, 0, 0, 0, 28, 29, 258,
2787 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2788 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2789 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2791 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
2792 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2793 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2794 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2796 0, 67, 68, 69, 0, 0, -759, 0, 0, 0,
2797 0, 0, 0, -759, 257, -759, 5, 6, 7, 8,
2798 9, 0, 0, -759, 10, 11, 0, 0, 0, 12,
2799 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2800 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2801 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2802 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2803 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2804 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2806 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2807 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2808 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2809 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2810 257, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2811 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2812 16, 17, 18, 19, -759, 0, -759, 0, 0, 20,
2813 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2814 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2815 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2816 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2817 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2818 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2819 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2820 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2821 59, 60, 61, 62, 63, 64, 65, 66, 0, -759,
2822 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
2823 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
2824 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2825 -759, 0, -759, 0, 0, 20, 21, 22, 23, 24,
2826 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
2827 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
2828 38, 39, 40, 207, 41, 42, 43, 44, 45, 46,
2829 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2830 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2831 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2832 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
2833 56, 0, 210, 211, 212, 58, 59, 213, 61, 62,
2834 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2835 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2836 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
2837 14, 15, 16, 17, 18, 19, 0, 0, 237, 0,
2838 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2839 27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
2840 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2841 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2842 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2844 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
2845 0, 0, 209, 54, 0, 55, 56, 0, 0, 0,
2846 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2848 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
2849 67, 68, 69, 12, 0, 13, 14, 15, 16, 17,
2850 18, 19, 305, 0, 306, 0, 0, 20, 21, 22,
2851 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2852 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
2853 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2854 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2855 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2856 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2857 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
2858 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
2859 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2860 0, 0, 0, 0, 0, 0, 5, 6, 7, 8,
2861 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
2862 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2863 237, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2864 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2865 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2866 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2867 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2869 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2870 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2871 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2872 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2873 0, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2874 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2875 16, 17, 18, 19, 503, 0, 0, 0, 0, 20,
2876 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2877 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2878 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2879 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2880 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2881 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2882 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2883 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2884 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2886 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
2887 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2888 503, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2889 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
2890 145, 146, 147, 148, 149, 0, 0, 0, 150, 151,
2891 152, 395, 396, 397, 398, 157, 158, 159, 0, 0,
2892 0, 0, 0, 160, 161, 162, 163, 399, 400, 401,
2893 402, 168, 37, 38, 403, 40, 0, 0, 0, 0,
2894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2895 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
2896 177, 178, 0, 0, 179, 180, 0, 0, 0, 0,
2897 181, 182, 183, 184, 0, 0, 0, 0, 0, 0,
2898 0, 0, 0, 0, 0, 185, 186, 0, 0, 0,
2899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2900 0, 0, 0, 0, 0, 0, 0, 187, 188, 189,
2901 190, 191, 192, 193, 194, 195, 196, 0, 197, 198,
2902 0, 0, 0, 0, 0, 199, 404, 126, 127, 128,
2903 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2904 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2905 149, 0, 0, 0, 150, 151, 152, 153, 154, 155,
2906 156, 157, 158, 159, 0, 0, 0, 0, 0, 160,
2907 161, 162, 163, 164, 165, 166, 167, 168, 288, 289,
2908 169, 290, 0, 0, 0, 0, 0, 0, 0, 0,
2909 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
2910 171, 172, 173, 174, 175, 176, 177, 178, 0, 0,
2911 179, 180, 0, 0, 0, 0, 181, 182, 183, 184,
2912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2913 0, 185, 186, 0, 0, 0, 0, 0, 0, 0,
2914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2915 0, 0, 0, 187, 188, 189, 190, 191, 192, 193,
2916 194, 195, 196, 0, 197, 198, 0, 0, 0, 0,
2917 0, 199, 126, 127, 128, 129, 130, 131, 132, 133,
2918 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2919 144, 145, 146, 147, 148, 149, 0, 0, 0, 150,
2920 151, 152, 153, 154, 155, 156, 157, 158, 159, 0,
2921 0, 0, 0, 0, 160, 161, 162, 163, 164, 165,
2922 166, 167, 168, 239, 0, 169, 0, 0, 0, 0,
2923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2924 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
2925 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
2926 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
2927 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
2928 59, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2929 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
2930 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
2931 198, 0, 0, 0, 0, 0, 199, 126, 127, 128,
2932 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2933 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2934 149, 0, 0, 0, 150, 151, 152, 153, 154, 155,
2935 156, 157, 158, 159, 0, 0, 0, 0, 0, 160,
2936 161, 162, 163, 164, 165, 166, 167, 168, 0, 0,
2937 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2938 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
2939 171, 172, 173, 174, 175, 176, 177, 178, 0, 0,
2940 179, 180, 0, 0, 0, 0, 181, 182, 183, 184,
2941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2942 0, 185, 186, 0, 0, 59, 0, 0, 0, 0,
2943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2944 0, 0, 0, 187, 188, 189, 190, 191, 192, 193,
2945 194, 195, 196, 0, 197, 198, 0, 0, 0, 0,
2946 0, 199, 126, 127, 128, 129, 130, 131, 132, 133,
2947 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2948 144, 145, 146, 147, 148, 149, 0, 0, 0, 150,
2949 151, 152, 153, 154, 155, 156, 157, 158, 159, 0,
2950 0, 0, 0, 0, 160, 161, 162, 163, 164, 165,
2951 166, 167, 168, 0, 0, 169, 0, 0, 0, 0,
2952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2953 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
2954 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
2955 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
2956 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
2957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2958 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
2959 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
2960 198, 5, 6, 7, 0, 9, 199, 0, 0, 10,
2961 11, 0, 0, 0, 12, 0, 13, 14, 15, 245,
2962 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
2963 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
2964 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
2965 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2966 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
2967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2969 0, 0, 0, 0, 0, 0, 278, 0, 0, 209,
2970 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
2971 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2973 5, 6, 7, 0, 9, 0, 0, 279, 10, 11,
2974 0, 0, 0, 12, 280, 13, 14, 15, 245, 246,
2975 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
2976 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
2977 0, 0, 0, 277, 0, 0, 32, 33, 34, 35,
2978 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2979 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2982 0, 0, 0, 0, 0, 278, 0, 0, 209, 54,
2983 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
2984 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2985 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
2986 6, 7, 8, 9, 0, 0, 279, 10, 11, 0,
2987 0, 0, 12, 526, 13, 14, 15, 16, 17, 18,
2988 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
2989 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2990 0, 28, 29, 30, 31, 32, 33, 34, 35, 36,
2991 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
2992 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2993 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2994 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2995 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
2996 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
2997 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2998 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
2999 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3000 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3001 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3002 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3003 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3004 207, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3005 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3007 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3008 208, 0, 0, 209, 54, 0, 55, 56, 0, 210,
3009 211, 212, 58, 59, 213, 61, 62, 63, 64, 65,
3010 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3011 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3012 11, 67, 214, 69, 12, 0, 13, 14, 15, 16,
3013 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3014 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3015 0, 0, 0, 28, 29, 0, 31, 32, 33, 34,
3016 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3017 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3018 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3019 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3020 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3021 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3022 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3023 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3024 0, 9, 0, 0, 0, 10, 11, 67, 68, 69,
3025 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3026 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3027 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3028 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3029 39, 40, 207, 41, 42, 43, 44, 45, 46, 47,
3030 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3031 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3032 0, 0, 0, 0, 50, 439, 0, 0, 0, 0,
3033 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3034 0, 210, 211, 212, 58, 59, 213, 61, 62, 63,
3035 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3036 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3037 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3038 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3039 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3040 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3041 33, 34, 35, 36, 37, 38, 39, 40, 207, 41,
3042 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3043 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3045 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3046 0, 209, 54, 0, 55, 56, 0, 620, 211, 212,
3047 58, 59, 213, 61, 62, 63, 64, 65, 66, 0,
3048 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3049 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3050 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3051 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3052 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3053 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3054 37, 38, 39, 40, 207, 41, 42, 43, 44, 45,
3055 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3056 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3057 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3058 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3059 55, 56, 0, 210, 211, 0, 58, 59, 213, 61,
3060 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3061 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3062 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3063 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3064 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3065 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3066 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3067 207, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3068 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3070 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3071 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3072 211, 212, 58, 59, 213, 61, 62, 63, 64, 65,
3073 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3074 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3075 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3076 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3077 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3078 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3079 35, 36, 37, 38, 39, 40, 207, 41, 42, 43,
3080 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3081 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3082 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3083 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3084 54, 0, 55, 56, 0, 620, 211, 0, 58, 59,
3085 213, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3086 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3087 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3088 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3089 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3090 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3091 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3092 39, 40, 207, 41, 42, 43, 44, 45, 46, 47,
3093 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3094 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3095 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3096 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3097 0, 0, 211, 0, 58, 59, 213, 61, 62, 63,
3098 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3099 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3100 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3101 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
3102 20, 21, 22, 23, 24, 25, 26, 0, 0, 206,
3103 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3104 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3105 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3106 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3108 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3109 0, 209, 54, 0, 55, 56, 0, 519, 0, 0,
3110 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3111 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3112 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3113 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3114 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3115 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3116 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3117 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3118 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3119 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3120 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3121 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3122 55, 56, 0, 770, 0, 0, 58, 59, 60, 61,
3123 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3124 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3125 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3126 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3127 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3128 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3129 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3130 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3131 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3133 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3134 208, 0, 0, 209, 54, 0, 55, 56, 0, 519,
3135 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3136 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3137 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3138 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3139 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3140 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3141 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3142 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3143 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3144 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3145 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3146 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3147 54, 0, 55, 56, 0, 843, 0, 0, 58, 59,
3148 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3149 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3150 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3151 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3152 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3153 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3154 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3155 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3156 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3157 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3158 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3159 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3160 0, 1014, 0, 0, 58, 59, 60, 61, 62, 63,
3161 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3162 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3163 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3164 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3165 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3166 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3167 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3168 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3169 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3171 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3172 0, 209, 54, 0, 55, 56, 0, 0, 0, 0,
3173 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3174 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3175 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3176 214, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3177 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3178 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3179 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3180 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3181 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3182 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3183 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3184 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3185 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3186 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3187 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3188 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3189 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3190 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3191 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
3192 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3193 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3194 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3196 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3197 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3198 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3199 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3200 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3201 11, 67, 68, 69, 12, 0, 13, 14, 15, 245,
3202 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3203 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3204 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3205 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3206 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3209 0, 0, 0, 0, 0, 0, 278, 0, 0, 328,
3210 54, 0, 55, 56, 0, 329, 0, 0, 58, 59,
3211 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3212 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3213 0, 10, 11, 0, 0, 0, 12, 279, 13, 14,
3214 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3215 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3216 0, 0, 0, 0, 0, 0, 277, 0, 0, 32,
3217 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3218 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3221 0, 0, 0, 0, 0, 0, 0, 0, 376, 0,
3222 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3223 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3224 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3225 0, 0, 0, 10, 11, 0, 0, 0, 12, 279,
3226 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3227 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3228 0, 206, 0, 0, 0, 0, 0, 0, 277, 0,
3229 0, 32, 33, 34, 384, 36, 37, 38, 385, 40,
3230 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3233 0, 0, 0, 0, 0, 0, 386, 0, 0, 0,
3234 387, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3235 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3236 66, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3237 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
3238 12, 279, 13, 14, 15, 245, 246, 18, 19, 0,
3239 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3240 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3241 277, 0, 0, 32, 33, 34, 384, 36, 37, 38,
3242 385, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3246 0, 0, 387, 0, 0, 209, 54, 0, 55, 56,
3247 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
3248 64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
3249 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
3250 0, 0, 12, 279, 13, 14, 15, 245, 246, 18,
3251 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3252 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3253 0, 0, 277, 0, 0, 32, 33, 34, 35, 36,
3254 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3255 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3258 0, 0, 0, 0, 278, 0, 0, 328, 54, 0,
3259 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3260 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3261 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3262 11, 0, 0, 0, 12, 279, 13, 14, 15, 245,
3263 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3264 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3265 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3266 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3267 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3270 0, 0, 0, 0, 0, 0, 1004, 0, 0, 209,
3271 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3272 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3273 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3274 0, 10, 11, 0, 0, 0, 12, 279, 13, 14,
3275 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3276 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3277 0, 0, 0, 0, 0, 0, 277, 0, 0, 32,
3278 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3279 42, 43, 44, 45, 46, 47, 23, 24, 25, 26,
3280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3281 0, 0, 32, 33, 34, 781, 0, 0, 0, 782,
3282 0, 0, 41, 42, 43, 44, 45, 0, 1056, 0,
3283 0, 209, 54, 0, 55, 56, 0, 0, 0, 0,
3284 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3285 0, 0, 0, 783, 784, 0, 0, 0, 0, 0,
3286 0, 785, 0, 0, 786, 0, 0, 787, 788, 279,
3287 975, 0, 0, 789, 59, 60, 61, 62, 63, 64,
3288 65, 66, 23, 24, 25, 26, 0, 0, 0, 0,
3289 0, 0, 0, 0, 0, 790, 0, 0, 32, 33,
3290 34, 781, 279, 0, 0, 782, 0, 0, 41, 42,
3291 43, 44, 45, 0, 0, 23, 24, 25, 26, 0,
3292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3293 0, 32, 33, 34, 781, 0, 0, 0, 782, 783,
3294 784, 41, 42, 43, 44, 45, 0, 785, 0, 0,
3295 786, 0, 0, 787, 788, 0, 1071, 0, 0, 789,
3296 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3297 0, 0, 783, 784, 0, 0, 0, 0, 0, 0,
3298 785, 790, 0, 786, 0, 0, 787, 788, 279, 0,
3299 0, 0, 789, 59, 60, 61, 62, 63, 64, 65,
3300 66, 564, 565, 0, 0, 566, 0, 0, 0, 0,
3301 0, 0, 0, 0, 790, 0, 0, 0, 0, 0,
3302 0, 279, 0, 0, 170, 171, 172, 173, 174, 175,
3303 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3304 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3305 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3307 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3308 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3309 198, 572, 573, 0, 0, 574, 199, 233, 0, 0,
3310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3311 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3312 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3313 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3314 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3316 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3317 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3318 198, 624, 565, 0, 0, 625, 199, 233, 0, 0,
3319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3320 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3321 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3322 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3323 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3325 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3326 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3327 198, 627, 573, 0, 0, 628, 199, 233, 0, 0,
3328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3329 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3330 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3331 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3332 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3334 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3335 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3336 198, 652, 565, 0, 0, 653, 199, 233, 0, 0,
3337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3338 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3339 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3340 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3341 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3343 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3344 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3345 198, 655, 573, 0, 0, 656, 199, 233, 0, 0,
3346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3347 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3348 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3349 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3350 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3352 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3353 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3354 198, 722, 565, 0, 0, 723, 199, 233, 0, 0,
3355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3356 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3357 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3358 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3359 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3361 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3362 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3363 198, 725, 573, 0, 0, 726, 199, 233, 0, 0,
3364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3365 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3366 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3367 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3368 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3370 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3371 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3372 198, 731, 565, 0, 0, 732, 199, 233, 0, 0,
3373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3374 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3375 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3376 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3377 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3379 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3380 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3381 198, 609, 573, 0, 0, 610, 199, 233, 0, 0,
3382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3383 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3384 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3385 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3386 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3388 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3389 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3390 198, 776, 565, 0, 0, 777, 199, 233, 0, 0,
3391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3392 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3393 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3394 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3395 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3397 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3398 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3399 198, 779, 573, 0, 0, 780, 199, 233, 0, 0,
3400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3401 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3402 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3403 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3404 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3406 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3407 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3408 198, 1154, 565, 0, 0, 1155, 199, 233, 0, 0,
3409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3410 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3411 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3412 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3413 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3415 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3416 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3417 198, 1157, 573, 0, 0, 1158, 199, 233, 0, 0,
3418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3419 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3420 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3421 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3422 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3424 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3425 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3426 198, 1188, 565, 0, 0, 1189, 199, 233, 0, 0,
3427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3428 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3429 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3430 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3431 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3433 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3434 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3435 198, 609, 573, 0, 0, 610, 199, 233, 0, 0,
3436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3437 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3438 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3439 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3440 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3442 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3443 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3444 198, 0, 0, 0, 0, 0, 199
3449 2, 369, 89, 60, 28, 57, 94, 102, 8, 227,
3450 710, 71, 22, 8, 101, 83, 433, 387, 53, 59,
3451 866, 331, 16, 17, 95, 91, 92, 71, 28, 95,
3452 67, 83, 68, 28, 2, 95, 4, 717, 57, 1066,
3453 26, 16, 17, 626, 96, 97, 98, 53, 16, 17,
3454 27, 603, 29, 55, 56, 1039, 473, 364, 25, 99,
3455 92, 55, 56, 95, 59, 425, 4, 13, 78, 893,
3456 894, 654, 482, 433, 2, 1062, 4, 271, 25, 52,
3457 1104, 275, 16, 17, 857, 53, 54, 27, 363, 57,
3458 365, 864, 29, 25, 25, 52, 295, 296, 958, 13,
3459 68, 25, 25, 100, 99, 1106, 100, 15, 25, 17,
3460 16, 17, 893, 894, 68, 83, 526, 126, 259, 331,
3461 1028, 55, 429, 91, 92, 100, 54, 95, 96, 97,
3462 98, 13, 100, 0, 26, 222, 411, 146, 25, 924,
3463 34, 724, 96, 97, 37, 38, 1054, 13, 13, 146,
3464 855, 734, 857, 428, 153, 430, 213, 143, 52, 864,
3465 414, 415, 148, 689, 251, 15, 100, 66, 66, 1196,
3466 236, 13, 238, 146, 209, 25, 866, 484, 730, 146,
3467 953, 148, 1028, 458, 1208, 1169, 123, 328, 1048, 146,
3468 261, 145, 13, 1039, 100, 778, 283, 1184, 68, 146,
3469 146, 261, 414, 415, 787, 151, 1207, 153, 1054, 244,
3470 485, 151, 280, 153, 146, 146, 1062, 261, 635, 221,
3471 119, 119, 146, 146, 259, 227, 444, 97, 280, 146,
3472 600, 233, 1013, 1018, 1019, 13, 230, 151, 232, 153,
3473 242, 209, 279, 143, 310, 311, 312, 313, 953, 315,
3474 316, 143, 855, 259, 857, 230, 56, 232, 233, 146,
3475 153, 864, 230, 866, 232, 233, 1174, 143, 236, 151,
3476 238, 153, 682, 633, 242, 635, 244, 329, 310, 311,
3477 312, 313, 148, 1191, 591, 151, 151, 153, 153, 257,
3478 326, 259, 379, 328, 601, 331, 230, 849, 232, 498,
3479 277, 500, 373, 25, 856, 371, 148, 152, 891, 151,
3480 329, 153, 280, 373, 242, 58, 1016, 592, 870, 1104,
3481 386, 1106, 328, 1169, 230, 109, 232, 602, 13, 257,
3482 151, 13, 153, 152, 77, 370, 1016, 372, 1184, 371,
3483 1164, 309, 310, 311, 312, 313, 314, 315, 316, 133,
3484 953, 877, 878, 866, 66, 100, 37, 38, 326, 68,
3485 328, 329, 364, 331, 1054, 108, 99, 893, 894, 112,
3486 365, 309, 1062, 151, 1064, 153, 100, 880, 414, 415,
3487 687, 309, 34, 151, 978, 153, 314, 25, 97, 364,
3488 893, 894, 326, 126, 977, 705, 364, 331, 366, 152,
3489 52, 146, 370, 371, 372, 623, 25, 783, 784, 121,
3490 122, 686, 124, 688, 482, 785, 411, 152, 386, 1002,
3491 1003, 236, 1207, 1208, 146, 1028, 148, 429, 452, 153,
3492 482, 425, 25, 97, 694, 430, 1039, 691, 692, 28,
3493 442, 701, 444, 697, 698, 862, 414, 415, 22, 264,
3494 537, 1054, 452, 268, 429, 649, 126, 452, 526, 1062,
3495 986, 429, 661, 458, 99, 99, 151, 666, 153, 151,
3496 13, 153, 684, 99, 526, 1069, 470, 845, 146, 691,
3497 692, 145, 484, 77, 148, 697, 698, 1013, 126, 144,
3498 485, 126, 126, 68, 1184, 1047, 1186, 465, 153, 99,
3499 126, 1191, 862, 1193, 78, 593, 126, 126, 146, 484,
3500 1013, 149, 888, 889, 482, 153, 484, 146, 1031, 99,
3501 890, 96, 97, 1036, 153, 585, 126, 146, 1031, 148,
3502 149, 899, 750, 126, 153, 1144, 904, 1237, 604, 1148,
3503 1230, 1054, 136, 137, 138, 1058, 581, 66, 583, 1062,
3504 1144, 1064, 99, 146, 1148, 1058, 149, 99, 526, 569,
3505 153, 99, 816, 942, 943, 99, 1169, 577, 112, 99,
3506 145, 1123, 638, 1156, 1077, 577, 553, 579, 146, 126,
3507 56, 1184, 650, 68, 126, 964, 965, 966, 126, 591,
3508 68, 1200, 126, 617, 571, 68, 126, 592, 650, 601,
3509 119, 611, 121, 122, 816, 1199, 1200, 602, 151, 611,
3510 153, 96, 97, 581, 682, 583, 591, 617, 96, 97,
3511 435, 623, 617, 591, 97, 440, 601, 148, 443, 126,
3512 682, 446, 66, 601, 66, 603, 604, 99, 1164, 633,
3513 68, 643, 100, 2, 739, 4, 66, 462, 684, 626,
3514 68, 25, 467, 866, 68, 691, 692, 16, 17, 146,
3515 145, 697, 698, 729, 126, 146, 866, 145, 728, 97,
3516 638, 1184, 153, 1186, 248, 249, 68, 654, 1191, 97,
3517 1193, 148, 650, 97, 66, 687, 153, 121, 122, 121,
3518 122, 146, 727, 688, 53, 54, 149, 729, 738, 119,
3519 153, 121, 122, 705, 706, 97, 708, 26, 710, 68,
3520 525, 679, 687, 99, 682, 683, 684, 1230, 152, 687,
3521 152, 68, 148, 691, 692, 1093, 82, 83, 518, 697,
3522 698, 68, 91, 92, 68, 1114, 95, 119, 146, 121,
3523 122, 100, 124, 738, 66, 153, 148, 724, 750, 68,
3524 97, 679, 126, 148, 68, 683, 1135, 734, 68, 727,
3525 97, 729, 730, 97, 9, 767, 150, 769, 834, 153,
3526 15, 705, 146, 129, 130, 149, 68, 96, 97, 153,
3527 816, 1088, 96, 97, 68, 52, 96, 97, 578, 56,
3528 850, 365, 68, 828, 584, 77, 586, 119, 833, 121,
3529 122, 778, 834, 52, 96, 97, 149, 56, 126, 68,
3530 787, 788, 96, 97, 1089, 150, 99, 144, 1031, 56,
3531 96, 97, 824, 146, 143, 77, 145, 106, 99, 148,
3532 146, 145, 867, 56, 148, 145, 77, 96, 97, 14,
3533 15, 1054, 151, 126, 130, 1058, 898, 25, 816, 1062,
3534 209, 1064, 66, 145, 1054, 126, 430, 146, 1058, 149,
3535 828, 145, 1062, 146, 1064, 833, 834, 902, 146, 145,
3536 144, 230, 144, 232, 233, 146, 911, 236, 146, 238,
3537 146, 849, 99, 242, 458, 244, 145, 68, 856, 866,
3538 99, 951, 10, 134, 135, 136, 137, 138, 257, 867,
3539 259, 144, 870, 88, 89, 119, 146, 121, 122, 126,
3540 962, 485, 54, 146, 891, 96, 97, 126, 44, 1006,
3541 146, 736, 64, 65, 44, 982, 40, 41, 718, 146,
3542 898, 721, 126, 8, 902, 13, 751, 146, 940, 25,
3543 942, 943, 999, 911, 17, 735, 152, 152, 144, 99,
3544 309, 310, 311, 312, 313, 314, 315, 316, 146, 68,
3545 128, 68, 964, 965, 966, 15, 150, 326, 148, 328,
3546 146, 1184, 331, 1186, 131, 1010, 126, 1012, 1191, 146,
3547 1193, 958, 26, 2, 1184, 4, 1186, 96, 97, 96,
3548 97, 1191, 52, 1193, 962, 569, 146, 16, 17, 100,
3549 977, 1053, 131, 577, 100, 364, 983, 366, 146, 1011,
3550 144, 370, 371, 372, 1016, 1050, 52, 1230, 592, 66,
3551 67, 26, 126, 146, 68, 1002, 1003, 386, 602, 146,
3552 1230, 68, 52, 146, 53, 54, 145, 611, 145, 52,
3553 146, 146, 1010, 131, 1012, 835, 126, 146, 838, 68,
3554 56, 841, 96, 97, 66, 414, 415, 146, 848, 96,
3555 97, 851, 146, 68, 146, 146, 414, 415, 642, 643,
3556 429, 1048, 91, 92, 121, 122, 95, 892, 146, 1047,
3557 151, 100, 1050, 431, 432, 1053, 1088, 9, 1090, 1124,
3558 1092, 96, 97, 68, 1089, 146, 1162, 1163, 68, 143,
3559 146, 145, 866, 131, 148, 56, 465, 119, 145, 121,
3560 122, 459, 1114, 1088, 688, 99, 931, 932, 58, 99,
3561 1088, 96, 97, 913, 146, 484, 96, 97, 146, 146,
3562 1162, 1163, 146, 1135, 52, 146, 146, 77, 143, 120,
3563 145, 149, 126, 148, 146, 66, 126, 146, 52, 146,
3564 54, 55, 56, 57, 58, 1123, 1124, 146, 146, 974,
3565 950, 146, 146, 146, 1141, 242, 146, 146, 108, 109,
3566 145, 144, 148, 77, 689, 145, 2, 148, 4, 1156,
3567 40, 41, 42, 43, 44, 1000, 1001, 146, 689, 146,
3568 209, 461, 77, 133, 1162, 1163, 465, 101, 119, 1234,
3569 121, 122, 96, 124, 108, 109, 98, 1022, 87, 94,
3570 95, 230, 611, 232, 233, 706, 1018, 236, 1092, 238,
3571 1104, 866, 581, 242, 583, 244, 1196, 53, 54, 133,
3572 769, 57, 591, 883, 740, 1237, 1237, 514, 257, 324,
3573 259, 887, 601, 1013, 603, 604, 131, 132, 133, 134,
3574 135, 136, 137, 138, 1077, 1077, 1090, 83, 885, 945,
3575 52, 947, 54, 55, 56, 57, 1234, 1077, 783, 784,
3576 96, 97, 98, 99, 1011, 1039, 105, 99, 1042, 638,
3577 500, 952, 783, 784, 855, 968, 969, 1102, 1054, 1031,
3578 309, 310, 311, 312, 313, 314, 315, 316, 1062, 77,
3579 1064, 1058, 1028, 54, 55, 983, 57, 326, -1, 328,
3580 -1, -1, 331, 64, 65, -1, 94, 95, -1, -1,
3581 679, -1, -1, -1, 683, 684, -1, -1, 687, -1,
3582 -1, 1121, 691, 692, 59, 60, 61, 62, 697, 698,
3583 -1, -1, -1, 691, 692, 364, -1, 366, -1, 697,
3584 698, 370, 371, 372, -1, 133, 134, 135, 136, 137,
3585 138, -1, 877, 878, -1, -1, -1, 386, 727, -1,
3586 729, 730, 887, 888, 889, -1, 877, 878, 893, 894,
3587 -1, -1, -1, 209, -1, -1, 887, 888, 889, -1,
3588 -1, 1181, 893, 894, -1, 414, 415, 745, 746, -1,
3589 748, 749, -1, -1, -1, 1169, -1, 1171, -1, -1,
3590 429, -1, 1176, -1, -1, -1, 242, -1, 244, -1,
3591 1184, -1, 1186, -1, 1110, 1111, -1, -1, -1, 1193,
3592 1116, 257, 1118, 259, 1120, -1, 689, 52, -1, 54,
3593 55, 56, 57, 58, -1, -1, 465, 1130, 1131, -1,
3594 -1, -1, -1, 1136, 280, 1138, 1139, 816, -1, -1,
3595 -1, 1225, 77, 978, -1, 484, 1230, -1, 816, 828,
3596 -1, 986, -1, -1, 833, 834, 52, 978, 54, 55,
3597 56, 57, -1, 309, -1, 986, 101, -1, 314, -1,
3598 849, -1, 107, 108, 109, -1, -1, 856, 1013, -1,
3599 -1, -1, 328, 329, -1, -1, -1, -1, 867, -1,
3600 -1, 870, 1013, 861, 2, 1089, 4, -1, 133, -1,
3601 -1, 136, -1, 1209, 1210, 1211, 1212, -1, -1, -1,
3602 783, 784, 1215, 1216, 1217, 1218, -1, -1, 153, -1,
3603 366, 77, -1, 902, 370, -1, 372, -1, -1, 1235,
3604 -1, -1, 911, 1236, 1069, -1, -1, -1, 94, 95,
3605 -1, -1, 581, -1, 583, 53, 54, -1, 1069, 57,
3606 -1, 52, 591, 54, 55, 56, 57, 58, -1, -1,
3607 -1, -1, 601, -1, 603, 604, -1, -1, -1, 52,
3608 -1, 54, 55, 56, 57, 83, 77, 56, 134, 135,
3609 136, 137, 138, -1, -1, -1, -1, -1, 96, 97,
3610 98, -1, 52, -1, 54, 55, 56, 57, -1, 638,
3611 101, -1, -1, -1, 877, 878, 107, 108, 109, 1144,
3612 -1, -1, -1, 1148, 887, 888, 889, -1, 101, 465,
3613 893, 894, -1, 1144, 107, -1, -1, 1148, -1, 1164,
3614 -1, 1010, 133, 1012, -1, 136, 482, -1, -1, -1,
3615 679, 101, -1, 1164, 683, 684, -1, 148, 687, -1,
3616 -1, -1, 691, 692, -1, -1, -1, -1, 697, 698,
3617 -1, -1, -1, -1, 1199, 1200, -1, -1, 1047, -1,
3618 -1, 1050, -1, -1, -1, -1, -1, -1, 1199, 1200,
3619 526, -1, -1, -1, -1, -1, -1, -1, 727, -1,
3620 729, 730, -1, -1, -1, -1, -1, -1, -1, -1,
3621 -1, 209, -1, -1, -1, 978, -1, -1, -1, 1088,
3622 -1, -1, -1, 986, -1, -1, -1, -1, 52, -1,
3623 54, 55, 56, 57, 58, -1, -1, -1, 207, -1,
3624 -1, 210, 211, 212, 242, 581, 244, 583, -1, -1,
3625 1013, -1, -1, 77, 1123, 1124, -1, -1, -1, 257,
3626 -1, 259, -1, -1, -1, -1, -1, 603, -1, -1,
3627 -1, -1, -1, -1, -1, -1, -1, 101, -1, -1,
3628 -1, -1, 280, 107, 108, 109, -1, 816, -1, 689,
3629 -1, -1, -1, 1162, 1163, -1, -1, -1, -1, 828,
3630 -1, -1, -1, -1, 833, 834, 1069, -1, -1, 133,
3631 -1, 309, 136, -1, 650, -1, 314, -1, -1, -1,
3632 849, -1, -1, -1, -1, -1, -1, 856, -1, -1,
3633 328, 329, -1, 331, -1, -1, -1, -1, 867, -1,
3634 -1, 870, -1, 679, -1, -1, 682, 683, -1, -1,
3635 -1, -1, -1, 689, -1, -1, -1, 326, -1, -1,
3636 -1, -1, 331, -1, -1, 1234, -1, -1, 366, -1,
3637 -1, -1, 370, 902, 372, -1, -1, -1, -1, -1,
3638 -1, 1144, 911, 783, 784, 1148, -1, -1, -1, -1,
3639 -1, 727, -1, -1, 730, -1, -1, -1, -1, -1,
3640 -1, 1164, -1, -1, -1, -1, -1, -1, -1, -1,
3641 -1, -1, -1, -1, -1, -1, 414, 415, -1, 52,
3642 -1, 54, 55, 56, 57, 58, -1, -1, -1, -1,
3643 -1, -1, -1, -1, -1, -1, 1199, 1200, -1, -1,
3644 -1, -1, -1, -1, 77, -1, -1, 783, 784, -1,
3645 -1, -1, -1, -1, -1, 424, 425, -1, 91, -1,
3646 -1, -1, -1, -1, 433, -1, -1, 465, 101, -1,
3647 -1, -1, -1, -1, 107, 108, 109, 877, 878, -1,
3648 -1, 1010, -1, 1012, 482, -1, -1, 887, 888, 889,
3649 -1, -1, 828, 893, 894, -1, -1, 833, -1, -1,
3650 133, 470, -1, 136, 473, -1, -1, -1, -1, -1,
3651 -1, -1, 2, 849, 4, -1, -1, -1, 1047, -1,
3652 856, 1050, -1, -1, -1, -1, -1, -1, 526, -1,
3653 -1, 867, -1, -1, 870, -1, -1, -1, -1, -1,
3654 -1, 877, 878, -1, -1, -1, -1, -1, -1, -1,
3655 519, 887, 888, 889, -1, -1, -1, 893, 894, 1088,
3656 -1, -1, 898, 53, 54, -1, 902, 57, -1, -1,
3657 -1, -1, -1, 689, -1, 911, -1, -1, 978, -1,
3658 -1, -1, -1, 581, -1, 583, 986, -1, -1, -1,
3659 -1, -1, -1, 83, 1123, 1124, -1, -1, -1, -1,
3660 -1, -1, -1, -1, -1, 603, 96, 97, 98, 99,
3661 -1, -1, -1, 1013, -1, -1, -1, -1, -1, -1,
3662 -1, -1, -1, -1, -1, -1, 962, 689, -1, -1,
3663 -1, -1, -1, 1162, 1163, -1, -1, -1, -1, -1,
3664 -1, -1, 978, -1, -1, -1, -1, -1, -1, 618,
3665 986, 620, 650, -1, -1, -1, -1, -1, -1, -1,
3666 -1, 659, -1, -1, 633, -1, 635, 783, 784, 1069,
3667 -1, -1, -1, -1, 1010, -1, 1012, 1013, -1, -1,
3668 -1, 679, -1, -1, 682, 683, 684, -1, -1, -1,
3669 -1, -1, -1, 691, 692, -1, -1, -1, -1, 697,
3670 698, -1, -1, -1, 2, 1234, 4, -1, -1, 678,
3671 -1, 1047, -1, -1, 1050, -1, -1, 1053, -1, 209,
3672 -1, 783, 784, -1, -1, -1, -1, -1, 2, 727,
3673 4, -1, 730, 1069, -1, -1, 705, -1, -1, -1,
3674 -1, -1, -1, -1, 1144, -1, -1, -1, 1148, -1,
3675 -1, 720, 242, -1, 244, 53, 54, -1, -1, -1,
3676 -1, 877, 878, -1, 1164, -1, -1, 257, -1, 259,
3677 -1, 887, 888, 889, -1, -1, -1, 893, 894, 53,
3678 54, -1, -1, -1, -1, -1, -1, 1123, 1124, -1,
3679 280, 689, -1, -1, -1, -1, -1, -1, 96, 1199,
3680 1200, 770, -1, -1, -1, -1, -1, -1, 1144, -1,
3681 -1, -1, 1148, -1, -1, 877, 878, -1, 816, 309,
3682 -1, -1, -1, -1, 314, 887, 888, 889, 1164, -1,
3683 828, 893, 894, -1, -1, 833, -1, -1, 328, 329,
3684 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3685 -1, 849, -1, -1, -1, -1, -1, -1, 856, -1,
3686 -1, -1, 978, 1199, 1200, -1, -1, -1, -1, 867,
3687 986, -1, 870, -1, 843, -1, 366, -1, -1, -1,
3688 370, -1, 372, -1, -1, 783, 784, -1, -1, -1,
3689 -1, -1, -1, 862, -1, -1, -1, 1013, 1234, -1,
3690 898, -1, -1, -1, 902, -1, -1, -1, -1, -1,
3691 -1, 209, -1, 911, -1, -1, 978, -1, -1, -1,
3692 -1, -1, -1, 689, 986, -1, -1, -1, -1, -1,
3693 -1, -1, -1, -1, -1, 209, -1, -1, -1, -1,
3694 -1, 910, -1, -1, 242, -1, 244, -1, -1, -1,
3695 -1, 1013, -1, 1069, -1, -1, -1, -1, -1, 257,
3696 -1, 259, -1, -1, 962, -1, -1, -1, 242, 938,
3697 244, -1, -1, -1, -1, 465, -1, -1, -1, 877,
3698 878, -1, -1, 257, -1, 259, -1, -1, -1, 887,
3699 888, 889, 482, -1, -1, 893, 894, -1, -1, -1,
3700 -1, -1, -1, -1, -1, -1, -1, 1069, -1, -1,
3701 -1, 309, 1010, -1, 1012, -1, 314, 783, 784, -1,
3702 -1, -1, -1, -1, -1, -1, -1, -1, 1144, -1,
3703 328, -1, 1148, 331, -1, 309, 526, -1, -1, -1,
3704 314, -1, -1, -1, -1, 1014, -1, -1, 1164, 1047,
3705 -1, -1, 1050, -1, 328, 1053, -1, 331, 1027, -1,
3706 -1, -1, -1, -1, -1, -1, -1, -1, 366, -1,
3707 -1, -1, 370, -1, 372, -1, -1, -1, -1, -1,
3708 978, -1, 1144, 1199, 1200, -1, 1148, -1, 986, -1,
3709 -1, 581, 366, 583, -1, -1, 370, -1, 372, -1,
3710 -1, -1, 1164, -1, -1, -1, -1, -1, -1, -1,
3711 -1, 877, 878, 603, -1, 1013, 414, 415, -1, -1,
3712 -1, 887, 888, 889, -1, 1123, 1124, 893, 894, -1,
3713 -1, -1, -1, -1, -1, -1, -1, 1199, 1200, -1,
3714 414, 415, -1, -1, -1, -1, -1, -1, -1, -1,
3715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3716 650, -1, -1, -1, -1, -1, -1, 465, -1, 25,
3717 -1, 1069, -1, 0, -1, -1, -1, -1, -1, -1,
3718 -1, 8, 9, 10, -1, -1, 13, 14, 15, 679,
3719 17, 465, 682, 683, -1, -1, -1, -1, 25, 26,
3720 27, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3721 37, 38, 978, 40, 41, 42, 43, 44, -1, -1,
3722 986, 77, 78, 79, 80, 81, 82, 83, 84, 85,
3723 86, 87, 88, 89, -1, -1, 1234, 727, 94, 95,
3724 730, 68, -1, -1, -1, -1, 1144, 1013, -1, -1,
3725 1148, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3726 -1, -1, -1, -1, -1, -1, 1164, -1, -1, 96,
3727 97, 127, -1, 129, 130, 131, 132, 133, 134, 135,
3728 136, 137, 138, 581, -1, 583, -1, -1, -1, -1,
3729 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
3730 -1, 1199, 1200, 1069, -1, 603, -1, 581, -1, 583,
3731 -1, -1, -1, -1, -1, -1, 143, 144, -1, -1,
3732 -1, 148, 149, -1, 151, -1, 153, -1, -1, 603,
3733 -1, -1, -1, -1, -1, -1, -1, -1, 828, -1,
3734 -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
3735 -1, -1, -1, -1, -1, -1, -1, -1, -1, 849,
3736 -1, -1, -1, -1, -1, -1, 856, -1, -1, -1,
3737 -1, -1, -1, -1, -1, -1, -1, 867, 1144, -1,
3738 870, 679, 1148, -1, -1, 683, 684, -1, -1, -1,
3739 -1, -1, -1, 691, 692, -1, -1, -1, 1164, 697,
3740 698, -1, -1, -1, -1, 679, -1, -1, 898, 683,
3741 684, -1, 902, -1, -1, -1, -1, 691, 692, -1,
3742 -1, 911, -1, 697, 698, -1, -1, -1, -1, 727,
3743 -1, -1, 730, 1199, 1200, -1, -1, -1, -1, -1,
3744 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3745 -1, -1, -1, 727, -1, -1, 730, -1, -1, -1,
3746 16, 17, -1, -1, -1, -1, -1, -1, -1, -1,
3747 -1, -1, 962, -1, -1, -1, -1, -1, -1, -1,
3748 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3749 -1, -1, 48, 49, 50, 51, -1, -1, -1, 55,
3750 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3751 -1, -1, 68, 69, -1, -1, -1, -1, 816, -1,
3752 1010, -1, 1012, -1, -1, -1, -1, -1, -1, -1,
3753 828, -1, -1, -1, -1, 833, -1, -1, -1, -1,
3754 -1, -1, 816, -1, 100, -1, -1, -1, -1, -1,
3755 -1, 849, -1, -1, 828, -1, -1, 1047, 856, 833,
3756 1050, -1, -1, 1053, -1, -1, -1, -1, -1, 867,
3757 -1, -1, 870, -1, -1, 849, -1, -1, -1, -1,
3758 -1, -1, 856, -1, -1, -1, -1, -1, -1, -1,
3759 -1, -1, -1, 867, -1, -1, 870, -1, -1, -1,
3760 898, -1, -1, -1, 902, -1, -1, -1, -1, -1,
3761 -1, -1, -1, 911, 33, 34, 35, 36, -1, -1,
3762 -1, -1, -1, -1, -1, -1, -1, -1, 902, -1,
3763 49, 50, 51, 1123, 1124, -1, -1, 911, -1, -1,
3764 59, 60, 61, 62, 63, -1, -1, -1, -1, -1,
3765 -1, 207, -1, -1, 210, 211, 212, -1, 214, -1,
3766 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3767 -1, -1, -1, -1, 230, -1, 232, 233, -1, -1,
3768 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3769 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
3770 -1, 77, 78, 79, 80, 81, 82, 83, 84, -1,
3771 86, 87, 1010, -1, 1012, -1, -1, -1, 94, 95,
3772 139, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3773 -1, -1, -1, -1, -1, -1, 1010, -1, 1012, -1,
3774 -1, -1, -1, -1, 1234, -1, -1, -1, -1, 1047,
3775 -1, -1, 1050, 129, 130, 131, 132, 133, 134, 135,
3776 136, 137, 138, -1, -1, -1, -1, -1, -1, -1,
3777 326, -1, -1, 1047, -1, 331, 1050, 333, 334, 335,
3778 336, 337, -1, -1, 340, 341, 342, 343, 344, 345,
3779 346, 347, 348, -1, -1, 351, 352, 353, 354, 355,
3780 356, 357, 358, 359, 360, -1, -1, -1, 364, -1,
3781 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3782 -1, -1, -1, -1, -1, 1123, 1124, -1, -1, -1,
3783 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3784 83, 84, 85, 86, 87, 88, 89, -1, -1, 1123,
3785 1124, 94, 95, -1, -1, -1, -1, -1, 414, 415,
3786 -1, -1, -1, -1, -1, -1, -1, 423, 424, 425,
3787 -1, -1, -1, 429, -1, 431, 432, 433, -1, -1,
3788 -1, -1, -1, 439, 127, -1, 129, 130, 131, 132,
3789 133, 134, 135, 136, 137, 138, -1, -1, 454, -1,
3790 -1, -1, -1, 459, -1, -1, -1, -1, -1, -1,
3791 153, -1, -1, -1, 470, -1, -1, 473, -1, -1,
3792 -1, -1, -1, -1, -1, -1, -1, -1, 484, -1,
3793 -1, -1, -1, -1, -1, -1, 1234, -1, -1, -1,
3794 -1, -1, -1, -1, -1, -1, 502, 77, 78, 79,
3795 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3796 1234, -1, -1, 519, 94, 95, -1, -1, -1, -1,
3797 -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
3798 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
3799 -1, -1, -1, -1, -1, -1, -1, 25, 26, 129,
3800 130, 131, 132, 133, 134, 135, 136, 137, 138, 37,
3801 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3802 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3803 -1, -1, -1, -1, -1, 591, -1, -1, -1, -1,
3804 68, -1, -1, -1, -1, 601, -1, -1, -1, 77,
3805 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3806 88, 89, 618, -1, 620, -1, 94, 95, 96, 97,
3807 -1, 99, -1, -1, -1, -1, -1, 633, -1, 635,
3808 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3809 -1, -1, 120, -1, -1, -1, -1, -1, 126, 127,
3810 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3811 138, -1, -1, -1, -1, 143, 144, 145, 146, -1,
3812 -1, 149, 678, 151, -1, 153, -1, -1, 684, 685,
3813 -1, 687, -1, -1, -1, 691, 692, -1, -1, -1,
3814 -1, 697, 698, -1, 33, 34, 35, 36, -1, 705,
3815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3816 49, 50, 51, 52, 720, -1, -1, 56, -1, 58,
3817 59, 60, 61, 62, 63, -1, -1, -1, -1, -1,
3818 -1, -1, -1, -1, -1, -1, -1, -1, 77, 745,
3819 746, -1, 748, 749, -1, -1, -1, -1, -1, -1,
3820 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
3821 -1, -1, 101, -1, 770, 104, 105, -1, 107, 108,
3822 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
3823 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3824 -1, -1, -1, 132, -1, -1, -1, -1, -1, -1,
3825 139, -1, -1, 809, -1, -1, -1, -1, -1, -1,
3826 816, -1, 0, 1, -1, 3, 4, 5, 6, 7,
3827 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
3828 18, 19, 20, 21, 22, 23, 24, 843, -1, -1,
3829 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3830 -1, 39, -1, -1, -1, 861, 862, 45, 46, 47,
3831 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3832 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
3833 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
3834 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3835 -1, -1, 90, 91, 910, -1, -1, -1, -1, -1,
3836 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
3837 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
3838 118, -1, 938, -1, -1, -1, -1, -1, -1, -1,
3839 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3840 -1, 139, 140, 141, -1, -1, -1, -1, 0, -1,
3841 -1, -1, -1, 151, -1, 153, 8, 9, 10, -1,
3842 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
3843 -1, -1, -1, 25, 26, 27, 28, 29, -1, -1,
3844 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3845 42, 43, 44, -1, -1, -1, -1, -1, 1014, -1,
3846 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3847 -1, 1027, 86, 87, -1, -1, 68, -1, -1, -1,
3848 94, 95, -1, -1, -1, 77, 78, 79, 80, 81,
3849 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3850 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
3851 -1, -1, -1, -1, 106, 129, 130, 131, 132, 133,
3852 134, 135, 136, 137, 138, -1, -1, -1, 120, -1,
3853 -1, 123, 1088, -1, 126, 127, 128, 129, 130, 131,
3854 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3855 -1, 143, 144, 145, 146, 0, -1, 149, 150, 151,
3856 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
3857 15, -1, 17, -1, -1, -1, -1, 44, -1, -1,
3858 25, -1, 27, 28, 29, -1, -1, -1, -1, -1,
3859 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
3860 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3861 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3862 87, 88, 89, 68, -1, -1, -1, 94, 95, -1,
3863 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
3864 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
3865 95, 96, 97, -1, 99, 100, -1, -1, -1, -1,
3866 127, 106, 129, 130, 131, 132, 133, 134, 135, 136,
3867 137, 138, -1, -1, -1, 120, -1, -1, 123, 146,
3868 -1, 126, 127, 128, 129, 130, 131, 132, 133, 134,
3869 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
3870 145, 146, 0, -1, 149, 150, 151, -1, 153, -1,
3871 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
3872 -1, -1, -1, -1, 44, -1, -1, 25, -1, 27,
3873 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
3874 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3875 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3876 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3877 68, -1, -1, -1, 94, 95, -1, -1, -1, 77,
3878 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3879 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
3880 -1, 99, 100, -1, -1, -1, -1, 127, 106, 129,
3881 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3882 -1, -1, 120, -1, -1, 123, -1, -1, 126, 127,
3883 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3884 138, -1, -1, -1, -1, -1, 144, 145, 146, 0,
3885 -1, 149, 150, 151, -1, 153, -1, 8, 9, 10,
3886 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
3887 -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
3888 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
3889 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
3890 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3891 83, 84, 85, 86, 87, 88, 89, 68, -1, -1,
3892 -1, 94, 95, -1, -1, -1, 77, 78, 79, 80,
3893 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
3894 -1, -1, -1, 94, 95, 96, 97, -1, -1, 100,
3895 -1, -1, -1, -1, 127, 106, 129, 130, 131, 132,
3896 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
3897 -1, -1, 123, -1, -1, -1, 127, 128, 129, 130,
3898 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
3899 -1, -1, 143, 144, 145, 146, 0, -1, 149, 150,
3900 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
3901 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
3902 -1, 25, 26, 27, 28, 29, -1, -1, -1, -1,
3903 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
3904 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3905 -1, 77, 78, 79, 80, 81, 82, 83, -1, -1,
3906 86, 87, -1, -1, 68, -1, -1, -1, 94, 95,
3907 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3908 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
3909 94, 95, 96, 97, -1, -1, 100, -1, -1, -1,
3910 -1, -1, 106, 129, 130, 131, 132, 133, 134, 135,
3911 136, 137, 138, -1, -1, -1, 120, -1, -1, 123,
3912 -1, -1, -1, 127, 128, 129, 130, 131, 132, 133,
3913 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
3914 144, 145, 146, 0, -1, 149, 150, 151, -1, 153,
3915 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3916 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
3917 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
3918 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3919 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3920 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3921 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
3922 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3923 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
3924 97, -1, 99, 100, -1, -1, -1, -1, -1, 106,
3925 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3926 -1, -1, -1, 120, -1, -1, 123, -1, -1, 126,
3927 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
3928 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
3929 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
3930 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
3931 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
3932 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
3933 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
3934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3935 -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
3936 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3937 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3938 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
3939 100, -1, -1, -1, -1, -1, 106, -1, -1, -1,
3940 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3941 120, -1, -1, -1, -1, -1, -1, 127, -1, 129,
3942 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3943 -1, -1, -1, 143, 144, 145, 146, 0, 148, 149,
3944 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
3945 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
3946 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
3947 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
3948 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
3949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3950 -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
3951 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3952 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
3953 -1, 94, 95, 96, 97, -1, -1, 100, -1, -1,
3954 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
3955 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
3956 123, -1, -1, -1, 127, 128, 129, 130, 131, 132,
3957 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
3958 -1, 144, 145, 146, 0, -1, 149, 150, 151, -1,
3959 153, -1, 8, 9, 10, -1, -1, 13, 14, 15,
3960 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
3961 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
3962 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
3963 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3964 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3965 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
3966 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
3967 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
3968 96, 97, -1, -1, 100, -1, -1, -1, -1, -1,
3969 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3970 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
3971 -1, 127, -1, 129, 130, 131, 132, 133, 134, 135,
3972 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
3973 146, 0, 148, 149, 150, 151, -1, 153, -1, 8,
3974 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
3975 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
3976 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
3977 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
3978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3979 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
3980 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
3981 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
3982 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
3983 -1, 100, -1, -1, -1, -1, -1, 106, -1, -1,
3984 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3985 -1, 120, -1, -1, -1, -1, -1, -1, 127, -1,
3986 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3987 -1, -1, -1, -1, -1, 144, 145, 146, 0, 148,
3988 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
3989 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
3990 -1, -1, -1, 25, 26, -1, -1, -1, -1, -1,
3991 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3992 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
3993 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3994 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
3995 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
3996 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3997 -1, -1, 94, 95, 96, 97, -1, 99, -1, -1,
3998 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3999 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
4000 -1, -1, -1, -1, 126, 127, -1, 129, 130, 131,
4001 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4002 -1, 143, 144, 145, 146, 0, -1, 149, -1, 151,
4003 -1, 153, -1, 8, 9, 10, -1, -1, -1, 14,
4004 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4005 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4006 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4007 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4008 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4009 -1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
4010 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4011 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4012 95, 96, 97, -1, 99, -1, -1, -1, -1, -1,
4013 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4014 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
4015 -1, 126, 127, -1, 129, 130, 131, 132, 133, 134,
4016 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4017 145, 146, 0, -1, 149, -1, 151, -1, 153, -1,
4018 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
4019 -1, -1, -1, -1, -1, -1, -1, 25, -1, -1,
4020 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
4021 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4022 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4023 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4024 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4025 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4026 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4027 -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
4028 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4029 -1, -1, 120, -1, -1, -1, -1, -1, 126, 127,
4030 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4031 138, -1, -1, -1, -1, -1, 144, 145, 146, -1,
4032 -1, 149, -1, 151, 1, 153, 3, 4, 5, 6,
4033 7, 8, 9, 10, 11, 12, -1, -1, 15, 16,
4034 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4035 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4036 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4037 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4038 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4039 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4040 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4041 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4042 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4043 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4044 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4045 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4046 -1, -1, 139, 140, 141, -1, -1, -1, -1, -1,
4047 -1, -1, -1, -1, 151, 1, 153, 3, 4, 5,
4048 6, 7, -1, -1, 10, 11, 12, -1, 14, 15,
4049 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4050 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4051 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4052 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4053 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4054 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4055 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4056 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4057 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4058 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4059 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4060 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4061 -1, -1, -1, 139, 140, 141, -1, -1, -1, -1,
4062 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
4063 5, 6, 7, -1, -1, 10, 11, 12, -1, -1,
4064 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4065 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4066 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4067 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4068 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4069 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4070 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4071 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4072 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4073 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4074 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4075 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4076 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4077 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
4078 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
4079 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
4080 24, 25, -1, -1, -1, -1, 30, 31, 32, 33,
4081 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4082 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4083 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4084 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4085 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4086 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4087 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4088 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4089 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4090 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4091 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4092 -1, -1, -1, -1, -1, -1, -1, 151, 1, 153,
4093 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
4094 -1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
4095 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4096 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4097 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4098 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4099 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4100 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4101 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4102 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4103 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4104 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4105 -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
4106 7, -1, 9, 10, 11, 12, 139, 140, 141, 16,
4107 -1, 18, 19, 20, 21, 22, 23, 24, 151, -1,
4108 153, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4109 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4110 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4111 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4112 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4113 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4114 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4115 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4116 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4117 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4118 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4119 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4120 21, 22, 23, 24, 151, -1, 153, -1, -1, 30,
4121 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4122 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4123 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4124 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4125 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4126 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4127 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4128 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4129 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4130 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4131 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4132 141, -1, -1, -1, -1, -1, -1, -1, 149, -1,
4133 151, 1, 153, 3, 4, 5, 6, 7, -1, -1,
4134 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
4135 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4136 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4137 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4138 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4139 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4140 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4141 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4142 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4143 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4144 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4145 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4146 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4147 140, 141, -1, -1, -1, -1, -1, -1, -1, 149,
4148 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
4149 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
4150 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4151 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4152 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
4153 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4154 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4155 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4156 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4157 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4158 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
4159 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4161 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4162 139, 140, 141, -1, -1, 144, -1, -1, -1, -1,
4163 -1, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4164 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
4165 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4166 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4167 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4168 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4169 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4170 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4172 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4173 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4174 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4175 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4176 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4177 -1, 139, 140, 141, -1, -1, 144, -1, -1, -1,
4178 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4179 7, -1, -1, 10, 11, 12, -1, -1, -1, 16,
4180 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4181 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4182 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4183 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4184 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4185 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4186 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4187 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4188 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4189 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4190 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4191 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4192 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4193 21, 22, 23, 24, 151, -1, 153, -1, -1, 30,
4194 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4195 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4196 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4197 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4198 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4199 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4200 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4201 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4202 111, 112, 113, 114, 115, 116, 117, 118, -1, 120,
4203 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4204 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4205 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4206 151, -1, 153, -1, -1, 30, 31, 32, 33, 34,
4207 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4208 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4209 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
4210 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4211 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4212 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4213 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4214 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
4215 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4216 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4217 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4218 19, 20, 21, 22, 23, 24, -1, -1, 153, -1,
4219 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4220 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4221 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4222 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4223 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4224 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4225 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4226 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
4227 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4228 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4229 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4230 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4231 23, 24, 151, -1, 153, -1, -1, 30, 31, 32,
4232 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4233 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4234 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4235 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4236 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4237 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4238 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4239 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4240 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4241 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6,
4242 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4243 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4244 153, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4245 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4246 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4247 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4248 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4249 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4250 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4251 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4252 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4253 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4254 -1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4255 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4256 21, 22, 23, 24, 151, -1, -1, -1, -1, 30,
4257 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4258 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4259 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4260 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4261 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4262 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4263 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4264 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4265 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4266 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4267 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4268 141, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4269 151, 3, 4, 5, 6, 7, 8, 9, 10, 11,
4270 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
4271 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
4272 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
4273 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4274 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
4275 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4276 -1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
4277 82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
4278 92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
4279 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
4280 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4281 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131,
4282 132, 133, 134, 135, 136, 137, 138, -1, 140, 141,
4283 -1, -1, -1, -1, -1, 147, 148, 3, 4, 5,
4284 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4285 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4286 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4287 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
4288 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4289 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
4290 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4291 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4292 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
4293 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4294 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
4295 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4296 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
4297 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
4298 -1, 147, 3, 4, 5, 6, 7, 8, 9, 10,
4299 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
4300 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
4301 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
4302 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4303 51, 52, 53, 54, -1, 56, -1, -1, -1, -1,
4304 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4305 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4306 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4307 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4308 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4309 111, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4310 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4311 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4312 141, -1, -1, -1, -1, -1, 147, 3, 4, 5,
4313 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4314 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4315 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4316 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
4317 46, 47, 48, 49, 50, 51, 52, 53, -1, -1,
4318 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4319 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4320 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4321 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
4322 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4323 -1, 107, 108, -1, -1, 111, -1, -1, -1, -1,
4324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4325 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
4326 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
4327 -1, 147, 3, 4, 5, 6, 7, 8, 9, 10,
4328 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
4329 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
4330 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
4331 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4332 51, 52, 53, -1, -1, 56, -1, -1, -1, -1,
4333 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4334 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4335 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4336 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4337 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4338 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4339 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4340 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4341 141, 3, 4, 5, -1, 7, 147, -1, -1, 11,
4342 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
4343 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4344 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4345 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4346 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4347 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4348 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4350 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4351 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4352 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4353 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4354 3, 4, 5, -1, 7, -1, -1, 139, 11, 12,
4355 -1, -1, -1, 16, 146, 18, 19, 20, 21, 22,
4356 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4357 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4358 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4359 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4360 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4362 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4363 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4364 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4365 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4366 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4367 4, 5, 6, 7, -1, -1, 139, 11, 12, -1,
4368 -1, -1, 16, 146, 18, 19, 20, 21, 22, 23,
4369 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4370 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4371 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4372 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4373 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4374 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4375 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4376 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4377 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4378 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4379 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4380 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4381 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4382 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4383 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4384 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4385 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4386 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4387 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4388 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4389 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4390 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
4391 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4392 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
4393 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4394 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4395 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4396 -1, -1, -1, 45, 46, -1, 48, 49, 50, 51,
4397 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4398 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4399 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4400 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4401 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4402 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4403 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4404 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4405 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4406 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4407 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4408 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4409 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4410 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4411 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4412 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4413 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4414 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4415 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
4416 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4417 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4418 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4419 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4420 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4421 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4422 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
4423 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4424 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4425 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4426 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4427 -1, 101, 102, -1, 104, 105, -1, 107, 108, 109,
4428 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4429 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4430 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4431 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4432 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4433 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4434 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4435 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4436 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4437 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4438 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4439 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4440 104, 105, -1, 107, 108, -1, 110, 111, 112, 113,
4441 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4442 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4443 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4444 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4445 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4446 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4447 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4448 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4449 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4450 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4451 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4452 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4453 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
4454 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4455 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4456 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4457 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4458 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4459 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4460 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4461 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4462 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4463 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4464 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4465 102, -1, 104, 105, -1, 107, 108, -1, 110, 111,
4466 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4467 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4468 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4469 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4470 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4471 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4472 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4473 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4474 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4475 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4476 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4477 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4478 -1, -1, 108, -1, 110, 111, 112, 113, 114, 115,
4479 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4480 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4481 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4482 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4483 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4484 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4485 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4486 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4487 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4488 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4489 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4490 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4491 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4492 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4493 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4494 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4495 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4496 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4497 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4498 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4499 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4500 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4501 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4502 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4503 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4504 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4505 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4506 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4507 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4508 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4509 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4510 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4511 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4512 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4513 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4514 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4515 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4516 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4517 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4518 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4519 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4520 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4521 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4522 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4523 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4524 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4525 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4526 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4527 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4528 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4529 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4530 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4531 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4532 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4533 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4534 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4535 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4536 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4537 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4538 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4539 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4540 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4541 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4542 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4543 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4544 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4545 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4546 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4547 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4548 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4549 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4550 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4552 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4553 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4554 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4555 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4556 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4557 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4558 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4559 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4560 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4561 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4562 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4563 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4564 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4565 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4566 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
4567 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4568 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4569 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4570 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4571 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4572 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4573 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4574 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4575 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4576 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4577 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4578 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4579 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4580 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4581 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4582 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4583 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4584 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4585 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4586 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4587 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4589 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4590 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4591 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4592 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4593 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4594 -1, 11, 12, -1, -1, -1, 16, 139, 18, 19,
4595 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4596 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4597 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4598 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4599 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4600 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4601 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4602 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
4603 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4604 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4605 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4606 -1, -1, -1, 11, 12, -1, -1, -1, 16, 139,
4607 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4608 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4609 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4610 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4611 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4612 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4613 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4614 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1,
4615 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4616 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4617 118, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4618 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
4619 16, 139, 18, 19, 20, 21, 22, 23, 24, -1,
4620 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4621 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4622 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4623 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4624 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4626 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4627 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4628 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
4629 116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4630 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
4631 -1, -1, 16, 139, 18, 19, 20, 21, 22, 23,
4632 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4633 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4634 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4635 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4636 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4637 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4639 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4640 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
4641 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4642 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4643 12, -1, -1, -1, 16, 139, 18, 19, 20, 21,
4644 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4645 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4646 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4647 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4648 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4649 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4651 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4652 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4653 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4654 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4655 -1, 11, 12, -1, -1, -1, 16, 139, 18, 19,
4656 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4657 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4658 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4659 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4660 60, 61, 62, 63, 64, 65, 33, 34, 35, 36,
4661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4662 -1, -1, 49, 50, 51, 52, -1, -1, -1, 56,
4663 -1, -1, 59, 60, 61, 62, 63, -1, 98, -1,
4664 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4665 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4666 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4667 -1, 98, -1, -1, 101, -1, -1, 104, 105, 139,
4668 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4669 117, 118, 33, 34, 35, 36, -1, -1, -1, -1,
4670 -1, -1, -1, -1, -1, 132, -1, -1, 49, 50,
4671 51, 52, 139, -1, -1, 56, -1, -1, 59, 60,
4672 61, 62, 63, -1, -1, 33, 34, 35, 36, -1,
4673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4674 -1, 49, 50, 51, 52, -1, -1, -1, 56, 90,
4675 91, 59, 60, 61, 62, 63, -1, 98, -1, -1,
4676 101, -1, -1, 104, 105, -1, 107, -1, -1, 110,
4677 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4678 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4679 98, 132, -1, 101, -1, -1, 104, 105, 139, -1,
4680 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4681 118, 52, 53, -1, -1, 56, -1, -1, -1, -1,
4682 -1, -1, -1, -1, 132, -1, -1, -1, -1, -1,
4683 -1, 139, -1, -1, 75, 76, 77, 78, 79, 80,
4684 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4685 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4686 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4687 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4688 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4689 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4690 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4692 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4693 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4694 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4695 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4697 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4698 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4699 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4700 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4701 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4702 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4703 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4704 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4706 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4707 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4708 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4710 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4711 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4712 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4713 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4715 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4716 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4717 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4718 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4719 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4720 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4721 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4722 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4723 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4724 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4725 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4726 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4727 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4728 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4729 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4730 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4731 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4732 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4733 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4734 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4735 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4736 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4737 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4738 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4739 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4740 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4741 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4742 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4743 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4744 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4745 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4746 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4747 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4748 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4749 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4751 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4752 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4753 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4755 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4756 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4757 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4758 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4759 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4760 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4761 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4762 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4763 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4764 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4765 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4766 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4767 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4768 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4769 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4770 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4771 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4772 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4773 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4774 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4775 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4776 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4777 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4778 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4779 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4780 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4781 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4782 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4783 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4784 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4785 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4786 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4787 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4788 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4789 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4790 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4791 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4792 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4793 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4794 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4796 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4797 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4798 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4799 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4800 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4801 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4802 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4803 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4804 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4805 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4806 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4807 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4808 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4809 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4810 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4811 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4812 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4813 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4814 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4815 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4816 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4817 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4818 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4819 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4820 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4821 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4822 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4823 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4824 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4825 141, -1, -1, -1, -1, -1, 147
4832 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
4833 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
4834 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
4835 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4836 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
4837 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
4838 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
4839 157, 158, 159, 167, 169, 171, 179, 180, 182, 183,
4840 184, 186, 187, 188, 190, 191, 200, 203, 218, 233,
4841 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
4842 252, 279, 280, 333, 334, 335, 336, 337, 338, 339,
4843 342, 344, 345, 359, 360, 362, 363, 364, 365, 366,
4844 367, 368, 369, 405, 419, 159, 3, 4, 5, 6,
4845 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
4846 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
4847 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4848 45, 46, 47, 48, 49, 50, 51, 52, 53, 56,
4849 75, 76, 77, 78, 79, 80, 81, 82, 83, 86,
4850 87, 92, 93, 94, 95, 107, 108, 129, 130, 131,
4851 132, 133, 134, 135, 136, 137, 138, 140, 141, 147,
4852 194, 195, 196, 198, 199, 359, 39, 58, 98, 101,
4853 107, 108, 109, 112, 140, 183, 191, 200, 204, 210,
4854 213, 215, 233, 365, 366, 368, 369, 403, 404, 210,
4855 148, 211, 212, 148, 207, 211, 148, 153, 412, 54,
4856 195, 412, 143, 160, 143, 21, 22, 31, 32, 182,
4857 200, 233, 252, 200, 200, 200, 56, 1, 47, 101,
4858 163, 164, 165, 167, 185, 186, 419, 167, 220, 205,
4859 215, 403, 419, 204, 402, 403, 419, 46, 98, 139,
4860 146, 190, 218, 233, 365, 366, 369, 223, 54, 55,
4861 57, 194, 348, 361, 348, 349, 350, 152, 152, 152,
4862 152, 364, 179, 200, 200, 151, 153, 411, 417, 418,
4863 40, 41, 42, 43, 44, 37, 38, 26, 143, 207,
4864 211, 244, 281, 28, 245, 278, 126, 146, 101, 107,
4865 187, 126, 25, 77, 78, 79, 80, 81, 82, 83,
4866 84, 85, 86, 87, 88, 89, 94, 95, 127, 129,
4867 130, 131, 132, 133, 134, 135, 136, 137, 138, 202,
4868 202, 68, 96, 97, 145, 409, 219, 171, 175, 175,
4869 176, 177, 176, 175, 411, 418, 98, 184, 191, 233,
4870 257, 365, 366, 369, 52, 56, 94, 98, 192, 193,
4871 233, 365, 366, 369, 193, 33, 34, 35, 36, 49,
4872 50, 51, 52, 56, 148, 194, 367, 400, 210, 97,
4873 409, 410, 281, 336, 99, 99, 146, 204, 56, 204,
4874 204, 204, 348, 126, 100, 146, 214, 419, 97, 145,
4875 409, 99, 99, 146, 214, 210, 412, 413, 210, 91,
4876 209, 210, 215, 377, 403, 419, 171, 413, 171, 54,
4877 64, 65, 168, 148, 201, 157, 163, 97, 409, 99,
4878 167, 166, 185, 149, 411, 418, 413, 221, 413, 150,
4879 146, 153, 416, 146, 416, 144, 416, 412, 56, 364,
4880 187, 189, 146, 97, 145, 409, 270, 271, 66, 119,
4881 121, 122, 351, 119, 119, 351, 67, 351, 340, 346,
4882 343, 347, 77, 151, 159, 175, 175, 175, 175, 167,
4883 171, 171, 282, 283, 106, 181, 286, 287, 286, 107,
4884 179, 204, 215, 216, 217, 185, 146, 190, 146, 169,
4885 170, 179, 191, 200, 204, 206, 217, 233, 369, 172,
4886 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4887 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4888 200, 200, 200, 200, 52, 53, 56, 198, 207, 406,
4889 407, 209, 52, 53, 56, 198, 207, 406, 161, 163,
4890 13, 253, 417, 253, 163, 175, 163, 411, 225, 56,
4891 97, 145, 409, 25, 171, 52, 56, 192, 130, 370,
4892 97, 145, 409, 228, 401, 229, 68, 97, 408, 52,
4893 56, 406, 170, 200, 206, 170, 206, 197, 124, 204,
4894 107, 204, 213, 403, 52, 56, 209, 52, 56, 404,
4895 413, 149, 413, 146, 413, 146, 413, 195, 222, 200,
4896 144, 144, 406, 406, 206, 160, 413, 165, 413, 403,
4897 146, 189, 52, 56, 209, 52, 56, 272, 353, 352,
4898 119, 341, 351, 66, 119, 119, 341, 66, 119, 200,
4899 144, 284, 282, 10, 251, 288, 251, 204, 146, 44,
4900 413, 189, 146, 44, 126, 44, 97, 145, 409, 173,
4901 412, 99, 99, 207, 211, 412, 414, 99, 99, 207,
4902 208, 211, 419, 251, 8, 246, 329, 419, 163, 13,
4903 163, 251, 27, 254, 417, 251, 25, 224, 293, 17,
4904 248, 291, 52, 56, 209, 52, 56, 176, 227, 371,
4905 226, 52, 56, 192, 209, 161, 171, 230, 231, 208,
4906 211, 195, 204, 204, 214, 99, 99, 414, 99, 99,
4907 403, 171, 416, 187, 414, 273, 354, 54, 55, 57,
4908 358, 369, 152, 351, 152, 152, 152, 285, 144, 289,
4909 107, 204, 167, 189, 167, 200, 52, 56, 209, 52,
4910 56, 52, 56, 90, 91, 98, 101, 104, 105, 110,
4911 132, 303, 304, 305, 308, 323, 324, 326, 327, 328,
4912 333, 334, 337, 338, 339, 342, 344, 345, 366, 128,
4913 170, 206, 170, 206, 181, 150, 99, 170, 206, 170,
4914 206, 181, 204, 217, 330, 419, 9, 15, 247, 249,
4915 332, 419, 14, 249, 250, 255, 256, 419, 256, 178,
4916 294, 291, 251, 107, 204, 290, 251, 414, 163, 417,
4917 175, 161, 414, 251, 413, 148, 372, 373, 194, 281,
4918 278, 99, 146, 413, 274, 355, 131, 265, 266, 419,
4919 265, 204, 414, 324, 324, 56, 192, 311, 309, 414,
4920 310, 412, 415, 325, 52, 100, 174, 131, 88, 89,
4921 97, 145, 148, 306, 307, 200, 170, 206, 100, 331,
4922 419, 163, 162, 163, 175, 251, 251, 295, 251, 204,
4923 146, 253, 251, 161, 417, 251, 52, 54, 55, 56,
4924 57, 58, 77, 91, 101, 107, 108, 109, 133, 136,
4925 374, 376, 377, 378, 379, 380, 381, 382, 383, 384,
4926 387, 388, 389, 390, 391, 394, 395, 396, 397, 398,
4927 161, 376, 232, 148, 276, 376, 356, 262, 264, 267,
4928 380, 382, 383, 385, 386, 389, 390, 392, 393, 396,
4929 398, 412, 163, 161, 303, 107, 303, 312, 313, 314,
4930 316, 58, 112, 317, 318, 319, 320, 321, 322, 388,
4931 144, 270, 326, 308, 324, 324, 192, 414, 413, 112,
4932 312, 317, 312, 317, 98, 191, 233, 365, 366, 369,
4933 253, 163, 253, 296, 107, 204, 163, 251, 101, 107,
4934 258, 259, 260, 261, 379, 413, 413, 126, 146, 375,
4935 204, 146, 399, 419, 34, 52, 146, 399, 399, 146,
4936 375, 52, 146, 375, 52, 251, 417, 372, 376, 275,
4937 357, 267, 131, 126, 146, 263, 98, 233, 146, 399,
4938 399, 399, 146, 263, 146, 263, 151, 413, 52, 146,
4939 414, 107, 303, 316, 146, 348, 415, 146, 303, 34,
4940 52, 348, 413, 413, 414, 414, 56, 97, 145, 409,
4941 163, 332, 163, 301, 302, 303, 314, 317, 204, 256,
4942 291, 292, 260, 379, 146, 413, 146, 204, 374, 381,
4943 394, 396, 384, 388, 390, 398, 382, 391, 396, 380,
4944 382, 161, 267, 29, 123, 277, 163, 131, 233, 262,
4945 393, 396, 56, 97, 385, 390, 382, 392, 396, 382,
4946 52, 268, 269, 378, 146, 315, 316, 52, 146, 146,
4947 124, 319, 321, 322, 52, 56, 209, 52, 56, 329,
4948 255, 253, 40, 41, 146, 413, 258, 261, 259, 146,
4949 375, 146, 375, 399, 146, 375, 146, 375, 375, 251,
4950 149, 161, 163, 120, 146, 263, 146, 263, 52, 56,
4951 399, 146, 263, 146, 263, 263, 146, 412, 315, 146,
4952 146, 315, 414, 297, 175, 175, 312, 146, 146, 382,
4953 396, 382, 382, 251, 144, 382, 396, 382, 382, 269,
4954 316, 315, 298, 259, 375, 146, 375, 375, 375, 263,
4955 146, 263, 263, 263, 299, 382, 382, 163, 375, 263,
4962 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
4963 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
4964 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
4965 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
4966 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
4967 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
4968 171, 171, 175, 177, 178, 176, 179, 179, 180, 180,
4969 181, 182, 183, 183, 183, 183, 183, 183, 183, 183,
4970 183, 183, 183, 184, 184, 185, 185, 186, 186, 186,
4971 186, 186, 186, 186, 186, 186, 186, 187, 187, 188,
4972 188, 189, 189, 190, 190, 190, 190, 190, 190, 190,
4973 190, 190, 191, 191, 191, 191, 191, 191, 191, 191,
4974 191, 192, 192, 193, 193, 193, 194, 194, 194, 194,
4975 194, 195, 195, 196, 197, 196, 198, 198, 198, 198,
4976 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4977 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4978 198, 198, 198, 198, 198, 198, 199, 199, 199, 199,
4979 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4980 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4981 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4982 199, 199, 199, 199, 199, 199, 199, 200, 200, 200,
4983 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4984 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4985 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4986 200, 200, 200, 200, 200, 200, 200, 201, 200, 200,
4987 200, 202, 202, 202, 202, 203, 203, 204, 205, 205,
4988 205, 205, 206, 206, 207, 207, 208, 208, 209, 209,
4989 209, 209, 209, 210, 210, 210, 210, 210, 212, 211,
4990 213, 214, 214, 215, 215, 215, 215, 216, 216, 217,
4991 217, 217, 218, 218, 218, 218, 218, 218, 218, 218,
4992 218, 218, 218, 219, 218, 220, 218, 221, 218, 218,
4993 218, 218, 218, 218, 218, 218, 218, 218, 222, 218,
4994 218, 218, 218, 218, 218, 223, 218, 218, 218, 218,
4995 218, 224, 218, 225, 218, 218, 218, 226, 218, 227,
4996 218, 228, 218, 229, 230, 218, 231, 232, 218, 218,
4997 218, 218, 218, 233, 234, 235, 236, 237, 238, 239,
4998 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
4999 250, 251, 252, 253, 253, 253, 254, 254, 255, 255,
5000 256, 256, 257, 257, 258, 258, 259, 259, 260, 260,
5001 260, 260, 260, 261, 261, 262, 262, 262, 262, 262,
5002 263, 263, 264, 264, 264, 264, 264, 264, 264, 264,
5003 264, 264, 264, 264, 264, 264, 264, 265, 265, 266,
5004 266, 267, 267, 268, 268, 269, 269, 271, 272, 273,
5005 274, 275, 270, 276, 276, 277, 277, 278, 279, 279,
5006 279, 279, 280, 280, 280, 280, 280, 280, 280, 280,
5007 280, 281, 281, 283, 284, 285, 282, 287, 288, 289,
5008 286, 290, 290, 290, 290, 291, 292, 292, 294, 295,
5009 296, 297, 298, 299, 293, 300, 300, 301, 301, 301,
5010 302, 302, 302, 302, 302, 303, 304, 304, 305, 305,
5011 306, 307, 308, 308, 308, 308, 308, 308, 308, 309,
5012 308, 308, 310, 308, 308, 311, 308, 312, 312, 312,
5013 312, 312, 312, 312, 312, 313, 313, 314, 314, 314,
5014 314, 315, 315, 316, 317, 317, 317, 317, 317, 317,
5015 318, 318, 319, 319, 320, 320, 321, 321, 322, 323,
5016 323, 323, 323, 323, 323, 323, 323, 323, 323, 324,
5017 324, 324, 324, 324, 324, 324, 324, 324, 325, 324,
5018 326, 327, 328, 328, 328, 329, 329, 330, 330, 330,
5019 331, 331, 332, 332, 333, 333, 334, 335, 335, 335,
5020 336, 337, 338, 339, 340, 340, 341, 341, 342, 343,
5021 343, 344, 345, 346, 346, 347, 347, 348, 348, 349,
5022 349, 350, 350, 351, 352, 351, 353, 354, 355, 356,
5023 357, 351, 358, 358, 358, 358, 359, 359, 360, 361,
5024 361, 361, 361, 362, 363, 363, 364, 364, 364, 364,
5025 365, 365, 365, 365, 365, 366, 366, 366, 366, 366,
5026 366, 366, 367, 367, 368, 368, 369, 369, 371, 370,
5027 370, 372, 372, 373, 372, 374, 374, 374, 374, 374,
5028 375, 375, 376, 376, 376, 376, 376, 376, 376, 376,
5029 376, 376, 376, 376, 376, 376, 376, 377, 378, 378,
5030 378, 378, 379, 379, 380, 381, 381, 382, 382, 383,
5031 384, 384, 385, 385, 386, 386, 387, 387, 388, 388,
5032 389, 390, 390, 391, 392, 393, 393, 394, 394, 395,
5033 395, 396, 396, 397, 397, 398, 399, 399, 400, 401,
5034 400, 402, 402, 403, 403, 404, 404, 404, 404, 405,
5035 405, 405, 406, 406, 406, 406, 407, 407, 407, 408,
5036 408, 409, 409, 410, 410, 411, 411, 412, 412, 413,
5037 414, 415, 416, 416, 416, 417, 417, 418, 418, 419
5043 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5044 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5045 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5046 3, 3, 3, 3, 4, 1, 3, 3, 5, 3,
5047 1, 3, 3, 6, 5, 5, 5, 5, 3, 1,
5048 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5049 6, 1, 1, 0, 0, 4, 1, 1, 1, 4,
5050 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5051 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
5052 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
5053 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
5054 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
5055 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
5056 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
5057 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5058 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5059 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5060 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5061 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5062 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5063 1, 1, 1, 1, 1, 1, 1, 3, 3, 6,
5064 5, 5, 5, 5, 4, 3, 3, 3, 2, 2,
5065 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
5066 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
5067 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
5068 1, 1, 1, 1, 1, 3, 3, 1, 1, 2,
5069 4, 2, 1, 3, 3, 3, 1, 1, 1, 1,
5070 2, 4, 2, 1, 2, 2, 4, 1, 0, 2,
5071 2, 2, 1, 1, 2, 3, 4, 1, 1, 3,
5072 4, 2, 1, 1, 1, 1, 1, 1, 1, 1,
5073 1, 1, 1, 0, 4, 0, 3, 0, 4, 3,
5074 3, 2, 3, 3, 1, 4, 3, 1, 0, 6,
5075 4, 3, 2, 1, 2, 0, 3, 6, 6, 4,
5076 4, 0, 6, 0, 5, 5, 6, 0, 6, 0,
5077 7, 0, 5, 0, 0, 7, 0, 0, 9, 1,
5078 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5079 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5080 1, 1, 1, 1, 1, 2, 1, 1, 1, 5,
5081 1, 2, 1, 1, 1, 3, 1, 3, 1, 3,
5082 5, 1, 3, 2, 1, 4, 2, 2, 2, 1,
5083 2, 0, 6, 8, 4, 6, 4, 2, 6, 2,
5084 4, 6, 2, 4, 2, 4, 1, 1, 1, 3,
5085 4, 1, 4, 1, 3, 1, 1, 0, 0, 0,
5086 0, 0, 7, 4, 1, 3, 3, 3, 2, 4,
5087 5, 5, 2, 4, 4, 3, 3, 3, 2, 1,
5088 4, 3, 3, 0, 0, 0, 5, 0, 0, 0,
5089 5, 1, 2, 3, 4, 5, 1, 1, 0, 0,
5090 0, 0, 0, 0, 11, 1, 1, 1, 3, 3,
5091 1, 2, 3, 1, 1, 1, 3, 1, 3, 1,
5092 1, 1, 1, 4, 4, 3, 4, 4, 3, 0,
5093 4, 2, 0, 4, 2, 0, 4, 1, 1, 2,
5094 3, 5, 2, 4, 1, 2, 3, 2, 4, 1,
5095 3, 1, 3, 1, 3, 1, 2, 1, 3, 1,
5096 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
5097 3, 3, 2, 2, 1, 1, 1, 2, 2, 1,
5098 1, 1, 1, 1, 1, 1, 1, 1, 0, 3,
5099 1, 2, 2, 3, 1, 6, 1, 1, 1, 1,
5100 2, 1, 2, 1, 1, 1, 1, 1, 1, 2,
5101 3, 3, 3, 4, 0, 3, 1, 2, 4, 0,
5102 3, 4, 4, 0, 3, 0, 3, 0, 2, 0,
5103 2, 0, 2, 1, 0, 3, 0, 0, 0, 0,
5104 0, 8, 1, 1, 1, 1, 1, 1, 2, 1,
5105 1, 1, 1, 3, 1, 2, 1, 1, 1, 1,
5106 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5107 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
5108 0, 3, 3, 0, 3, 4, 2, 2, 2, 1,
5109 2, 0, 6, 8, 4, 6, 4, 6, 2, 4,
5110 6, 2, 4, 2, 4, 1, 0, 1, 1, 1,
5111 1, 1, 1, 1, 1, 1, 3, 1, 3, 1,
5112 2, 1, 2, 1, 1, 3, 1, 3, 1, 1,
5113 2, 2, 1, 3, 3, 1, 3, 1, 3, 1,
5114 1, 2, 1, 1, 1, 2, 2, 1, 1, 0,
5115 4, 1, 2, 1, 3, 3, 2, 4, 2, 1,
5116 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5117 1, 1, 1, 1, 1, 0, 1, 0, 1, 2,
5118 2, 2, 0, 1, 1, 1, 1, 1, 2, 0
5122 #define yyerrok (yyerrstatus = 0)
5123 #define yyclearin (yychar = YYEMPTY)
5124 #define YYEMPTY (-2)
5127 #define YYACCEPT goto yyacceptlab
5128 #define YYABORT goto yyabortlab
5129 #define YYERROR goto yyerrorlab
5132 #define YYRECOVERING() (!!yyerrstatus)
5134 #define YYBACKUP(Token, Value) \
5136 if (yychar == YYEMPTY) \
5140 YYPOPSTACK (yylen); \
5146 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5153 #define YYERRCODE 256
5160 #ifndef YYLLOC_DEFAULT
5161 # define YYLLOC_DEFAULT(Current, Rhs, N) \
5165 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5166 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5167 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5168 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5172 (Current).first_line = (Current).last_line = \
5173 YYRHSLOC (Rhs, 0).last_line; \
5174 (Current).first_column = (Current).last_column = \
5175 YYRHSLOC (Rhs, 0).last_column; \
5180 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
5188 # define YYFPRINTF fprintf
5191 # define YYDPRINTF(Args) \
5202 #ifndef YY_LOCATION_PRINT
5203 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5209 yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
5227 else if (0 <= end_col && yylocp->
first_column < end_col)
5233 # define YY_LOCATION_PRINT(File, Loc) \
5234 yy_location_print_ (File, &(Loc))
5237 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
5242 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
5246 YYFPRINTF (p, "%s ", Title); \
5247 yy_symbol_print (stderr, \
5248 Type, Value, Location, p); \
5249 YYFPRINTF (p, "\n"); \
5261 FILE *yyo = yyoutput;
5263 YYUSE (yylocationp);
5269 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
5283 yytype <
YYNTOKENS ?
"token" :
"nterm", yytname[yytype]);
5287 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, p);
5298 #define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
5301 for (; yybottom <= yytop; yybottom++)
5303 int yybot = *yybottom;
5309 # define YY_STACK_PRINT(Bottom, Top) \
5312 yy_stack_print ((Bottom), (Top)); \
5323 unsigned long int yylno = yyrline[yyrule];
5324 int yynrhs = yyr2[yyrule];
5326 YYFPRINTF (p,
"Reducing stack by rule %d (line %lu):\n",
5329 for (yyi = 0; yyi < yynrhs; yyi++)
5333 yystos[yyssp[yyi + 1 - yynrhs]],
5334 &(yyvsp[(yyi + 1) - (yynrhs)])
5335 , &(yylsp[(yyi + 1) - (yynrhs)]) , p);
5340 # define YY_REDUCE_PRINT(Rule) \
5343 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
5352 # define YYDPRINTF(Args)
5353 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
5354 # define YY_STACK_PRINT(Bottom, Top)
5355 # define YY_REDUCE_PRINT(Rule)
5361 # define YYINITDEPTH 200
5372 # define YYMAXDEPTH 10000
5379 # if defined __GLIBC__ && defined _STRING_H
5380 # define yystrlen strlen
5384 yystrlen (
const char *yystr)
5387 for (yylen = 0; yystr[yylen]; yylen++)
5395 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
5396 # define yystpcpy stpcpy
5401 yystpcpy (
char *yydest,
const char *yysrc)
5404 const char *yys = yysrc;
5406 while ((*yyd++ = *yys++) !=
'\0')
5423 yytnamerr (
char *yyres,
const char *yystr)
5428 char const *yyp = yystr;
5435 goto do_not_strip_quotes;
5439 goto do_not_strip_quotes;
5452 do_not_strip_quotes: ;
5456 return yystrlen (yystr);
5458 return yystpcpy (yyres, yystr) - yyres;
5476 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
5480 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
5510 int yyn = yypact[*yyssp];
5511 yyarg[yycount++] = yytname[yytoken];
5517 int yyxbegin = yyn < 0 ? -yyn : 0;
5519 int yychecklim =
YYLAST - yyn + 1;
5523 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
5524 if (yycheck[yyx + yyn] == yyx && yyx !=
YYTERROR
5527 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
5533 yyarg[yycount++] = yytname[yyx];
5536 if (! (yysize <= yysize1
5547 # define YYCASE_(N, S) \
5552 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
5553 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
5554 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
5555 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
5556 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
5561 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
5567 if (*yymsg_alloc < yysize)
5569 *yymsg_alloc = 2 * yysize;
5570 if (! (yysize <= *yymsg_alloc
5582 while ((*yyp = *yyformat) !=
'\0')
5583 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
5606 YYUSE (yylocationp);
5639 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5643 YYLTYPE yylloc = yyloc_default;
5692 char *yymsg = yymsgbuf;
5693 YYSIZE_T yymsg_alloc =
sizeof yymsgbuf;
5696 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
5702 yyssp = yyss = yyssa;
5703 yyvsp = yyvs = yyvsa;
5704 yylsp = yyls = yylsa;
5720 #line 5716 "parse.c"
5735 if (yyss + yystacksize - 1 <= yyssp)
5738 YYSIZE_T yysize = yyssp - yyss + 1;
5753 yyoverflow (
YY_(
"memory exhausted"),
5754 &yyss1, yysize *
sizeof (*yyssp),
5755 &yyvs1, yysize *
sizeof (*yyvsp),
5756 &yyls1, yysize *
sizeof (*yylsp),
5764 # ifndef YYSTACK_RELOCATE
5765 goto yyexhaustedlab;
5769 goto yyexhaustedlab;
5779 goto yyexhaustedlab;
5783 # undef YYSTACK_RELOCATE
5790 yyssp = yyss + yysize - 1;
5791 yyvsp = yyvs + yysize - 1;
5792 yylsp = yyls + yysize - 1;
5794 YYDPRINTF ((p,
"Stack size increased to %lu\n",
5795 (
unsigned long int) yystacksize));
5797 if (yyss + yystacksize - 1 <= yyssp)
5801 YYDPRINTF ((p,
"Entering state %d\n", yystate));
5817 yyn = yypact[yystate];
5827 yychar = yylex (&
yylval, &yylloc, p);
5830 if (yychar <=
YYEOF)
5832 yychar = yytoken =
YYEOF;
5833 YYDPRINTF ((p,
"Now at end of input.\n"));
5844 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
5878 yyn = yydefact[yystate];
5899 yyval = yyvsp[1-yylen];
5907 #line 1176 "parse.y"
5912 #line 5908 "parse.c"
5916 #line 1181 "parse.y"
5920 NODE *node = (yyvsp[0].node);
5923 while (node->nd_next) {
5924 node = node->nd_next;
5926 node = node->nd_head;
5928 node = remove_begin(node);
5936 #line 5932 "parse.c"
5940 #line 1203 "parse.y"
5942 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
5944 #line 5940 "parse.c"
5948 #line 1209 "parse.y"
5955 #line 5951 "parse.c"
5959 #line 1216 "parse.y"
5962 (yyval.
node) = newline_node((yyvsp[0].node));
5966 #line 5962 "parse.c"
5970 #line 1223 "parse.y"
5973 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
5977 #line 5973 "parse.c"
5981 #line 1230 "parse.y"
5983 (yyval.
node) = remove_begin((yyvsp[0].node));
5985 #line 5981 "parse.c"
5989 #line 1237 "parse.y"
5991 (yyval.
node) = (yyvsp[0].node);
5993 #line 5989 "parse.c"
5997 #line 1243 "parse.y"
6006 #line 6002 "parse.c"
6010 #line 1255 "parse.y"
6011 {
if (!(yyvsp[-1].node)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
6012 #line 6008 "parse.c"
6016 #line 1258 "parse.y"
6019 (yyval.
node) = new_bodystmt(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
6023 #line 6019 "parse.c"
6027 #line 1267 "parse.y"
6030 (yyval.
node) = new_bodystmt(p, (yyvsp[-2].node), (yyvsp[-1].node), 0, (yyvsp[0].node), &(yyloc));
6034 #line 6030 "parse.c"
6038 #line 1276 "parse.y"
6040 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
6042 #line 6038 "parse.c"
6046 #line 1282 "parse.y"
6053 #line 6049 "parse.c"
6057 #line 1289 "parse.y"
6060 (yyval.
node) = newline_node((yyvsp[0].node));
6064 #line 6060 "parse.c"
6068 #line 1296 "parse.y"
6071 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
6075 #line 6071 "parse.c"
6079 #line 1303 "parse.y"
6081 (yyval.
node) = remove_begin((yyvsp[0].node));
6083 #line 6079 "parse.c"
6087 #line 1309 "parse.y"
6089 (yyval.
node) = (yyvsp[0].node);
6091 #line 6087 "parse.c"
6095 #line 1313 "parse.y"
6097 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
6099 #line 6095 "parse.c"
6103 #line 1317 "parse.y"
6105 (yyval.
node) = (yyvsp[0].node);
6107 #line 6103 "parse.c"
6111 #line 1322 "parse.y"
6113 #line 6109 "parse.c"
6117 #line 1323 "parse.y"
6120 (yyval.
node) =
NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6124 #line 6120 "parse.c"
6128 #line 1330 "parse.y"
6131 (yyval.
node) =
NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc));
6135 #line 6131 "parse.c"
6139 #line 1337 "parse.y"
6144 buf[1] = (
char)(yyvsp[0].node)->nd_nth;
6149 #line 6145 "parse.c"
6153 #line 1347 "parse.y"
6156 yyerror1(&(yylsp[0]),
"can't make alias for the number variables");
6161 #line 6157 "parse.c"
6165 #line 1355 "parse.y"
6168 (yyval.
node) = (yyvsp[0].node);
6172 #line 6168 "parse.c"
6176 #line 1362 "parse.y"
6179 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
6180 fixpos((yyval.
node), (yyvsp[0].node));
6184 #line 6180 "parse.c"
6188 #line 1370 "parse.y"
6191 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
6192 fixpos((yyval.
node), (yyvsp[0].node));
6196 #line 6192 "parse.c"
6200 #line 1378 "parse.y"
6204 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->
nd_body, 0, &(yyloc));
6207 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
6212 #line 6208 "parse.c"
6216 #line 1390 "parse.y"
6220 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->
nd_body, 0, &(yyloc));
6223 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
6228 #line 6224 "parse.c"
6232 #line 1402 "parse.y"
6236 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6237 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
6238 (yyval.
node) =
NEW_RESCUE(remove_begin((yyvsp[-2].node)), resq, 0, &(yyloc));
6242 #line 6238 "parse.c"
6246 #line 1412 "parse.y"
6249 rb_warn0(
"END in method; use at_exit");
6254 NODE_SCOPE, 0 , (yyvsp[-1].node) , 0 , &(yyloc));
6260 #line 6256 "parse.c"
6264 #line 1427 "parse.y"
6268 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6272 #line 6268 "parse.c"
6276 #line 1435 "parse.y"
6280 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6284 #line 6280 "parse.c"
6288 #line 1443 "parse.y"
6291 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6293 (yyval.
node) = node_assign(p, (yyvsp[-4].node),
NEW_RESCUE((yyvsp[-2].node),
NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc)), &(yyloc));
6297 #line 6293 "parse.c"
6301 #line 1452 "parse.y"
6304 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6308 #line 6304 "parse.c"
6312 #line 1462 "parse.y"
6315 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6319 #line 6315 "parse.c"
6323 #line 1469 "parse.y"
6326 (yyval.
node) = new_op_assign(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6330 #line 6326 "parse.c"
6334 #line 1476 "parse.y"
6337 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-3]), &(yyloc));
6342 #line 6338 "parse.c"
6346 #line 1484 "parse.y"
6349 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6353 #line 6349 "parse.c"
6357 #line 1491 "parse.y"
6360 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6364 #line 6360 "parse.c"
6368 #line 1498 "parse.y"
6371 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
6372 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].node), (yyvsp[-2].
id), &loc), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
6376 #line 6372 "parse.c"
6380 #line 1506 "parse.y"
6383 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node),
ID2VAL(
idCOLON2), (yyvsp[-2].id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
6387 #line 6383 "parse.c"
6391 #line 1513 "parse.y"
6394 rb_backref_error(p, (yyvsp[-2].node));
6399 #line 6395 "parse.c"
6403 #line 1523 "parse.y"
6406 (yyval.
node) = (yyvsp[0].node);
6408 #line 6404 "parse.c"
6412 #line 1528 "parse.y"
6415 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6421 #line 6417 "parse.c"
6425 #line 1541 "parse.y"
6427 (yyval.
node) = logop(p,
idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
6429 #line 6425 "parse.c"
6433 #line 1545 "parse.y"
6435 (yyval.
node) = logop(p,
idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
6437 #line 6433 "parse.c"
6441 #line 1549 "parse.y"
6443 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
6445 #line 6441 "parse.c"
6449 #line 1553 "parse.y"
6451 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
6453 #line 6449 "parse.c"
6457 #line 1557 "parse.y"
6465 #line 6461 "parse.c"
6469 #line 1564 "parse.y"
6470 {(yyval.
tbl) = push_pvtbl(p);}
6471 #line 6467 "parse.c"
6475 #line 1566 "parse.y"
6476 {pop_pvtbl(p, (yyvsp[-1].tbl));}
6477 #line 6473 "parse.c"
6481 #line 1567 "parse.y"
6485 (yyval.
node) = new_case3(p, (yyvsp[-5].node),
NEW_IN((yyvsp[-1].node), 0, 0, &(yylsp[-1])), &(yyloc));
6489 #line 6485 "parse.c"
6493 #line 1578 "parse.y"
6496 (yyval.
node) = (yyvsp[0].node);
6498 #line 6494 "parse.c"
6502 #line 1584 "parse.y"
6504 #line 6500 "parse.c"
6508 #line 1584 "parse.y"
6510 #line 6506 "parse.c"
6514 #line 1585 "parse.y"
6516 (yyval.
node) = (yyvsp[-2].node);
6518 #line 6514 "parse.c"
6522 #line 1596 "parse.y"
6525 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
6529 #line 6525 "parse.c"
6533 #line 1605 "parse.y"
6535 (yyval.
node) = (yyvsp[-1].node);
6537 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
6541 #line 6537 "parse.c"
6545 #line 1615 "parse.y"
6553 #line 6549 "parse.c"
6557 #line 1625 "parse.y"
6560 (yyvsp[-1].node)->
nd_args = (yyvsp[0].node);
6562 (yyval.
node) = (yyvsp[-1].node);
6566 #line 6562 "parse.c"
6570 #line 1634 "parse.y"
6573 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
6574 (yyvsp[-2].node)->
nd_args = (yyvsp[-1].node);
6575 (yyval.
node) = method_add_block(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6576 fixpos((yyval.
node), (yyvsp[-2].node));
6581 #line 6577 "parse.c"
6585 #line 1645 "parse.y"
6588 (yyval.
node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node),
Qnull, &(yylsp[-1]), &(yyloc));
6592 #line 6588 "parse.c"
6596 #line 1652 "parse.y"
6599 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
6603 #line 6599 "parse.c"
6607 #line 1659 "parse.y"
6610 (yyval.
node) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node),
Qnull, &(yylsp[-1]), &(yyloc));
6614 #line 6610 "parse.c"
6618 #line 1666 "parse.y"
6621 (yyval.
node) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
6625 #line 6621 "parse.c"
6629 #line 1673 "parse.y"
6633 fixpos((yyval.
node), (yyvsp[0].node));
6637 #line 6633 "parse.c"
6641 #line 1681 "parse.y"
6644 (yyval.
node) = new_yield(p, (yyvsp[0].node), &(yyloc));
6645 fixpos((yyval.
node), (yyvsp[0].node));
6649 #line 6645 "parse.c"
6653 #line 1689 "parse.y"
6656 (yyval.
node) =
NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
6660 #line 6656 "parse.c"
6664 #line 1696 "parse.y"
6667 (yyval.
node) =
NEW_BREAK(ret_args(p, (yyvsp[0].node)), &(yyloc));
6671 #line 6667 "parse.c"
6675 #line 1703 "parse.y"
6678 (yyval.
node) =
NEW_NEXT(ret_args(p, (yyvsp[0].node)), &(yyloc));
6682 #line 6678 "parse.c"
6686 #line 1713 "parse.y"
6689 (yyval.
node) = (yyvsp[-1].node);
6693 #line 6689 "parse.c"
6697 #line 1723 "parse.y"
6704 #line 6700 "parse.c"
6708 #line 1732 "parse.y"
6715 #line 6711 "parse.c"
6719 #line 1739 "parse.y"
6722 (yyval.
node) =
NEW_MASGN(list_append(p, (yyvsp[-1].node),(yyvsp[0].node)), 0, &(yyloc));
6726 #line 6722 "parse.c"
6730 #line 1746 "parse.y"
6733 (yyval.
node) =
NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
6737 #line 6733 "parse.c"
6741 #line 1753 "parse.y"
6748 #line 6744 "parse.c"
6752 #line 1760 "parse.y"
6759 #line 6755 "parse.c"
6763 #line 1767 "parse.y"
6770 #line 6766 "parse.c"
6774 #line 1774 "parse.y"
6781 #line 6777 "parse.c"
6785 #line 1781 "parse.y"
6792 #line 6788 "parse.c"
6796 #line 1788 "parse.y"
6803 #line 6799 "parse.c"
6807 #line 1795 "parse.y"
6814 #line 6810 "parse.c"
6818 #line 1805 "parse.y"
6821 (yyval.
node) = (yyvsp[-1].node);
6825 #line 6821 "parse.c"
6829 #line 1814 "parse.y"
6832 (yyval.
node) =
NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
6836 #line 6832 "parse.c"
6840 #line 1821 "parse.y"
6843 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
6847 #line 6843 "parse.c"
6851 #line 1830 "parse.y"
6858 #line 6854 "parse.c"
6862 #line 1837 "parse.y"
6865 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
6869 #line 6865 "parse.c"
6873 #line 1846 "parse.y"
6876 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6880 #line 6876 "parse.c"
6884 #line 1853 "parse.y"
6887 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6891 #line 6887 "parse.c"
6895 #line 1860 "parse.y"
6898 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
6902 #line 6898 "parse.c"
6906 #line 1867 "parse.y"
6908 if ((yyvsp[-1].
id) ==
tANDDOT) {
6909 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6912 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
6916 #line 6912 "parse.c"
6920 #line 1877 "parse.y"
6923 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].id), &(yyloc));
6927 #line 6923 "parse.c"
6931 #line 1884 "parse.y"
6933 if ((yyvsp[-1].
id) ==
tANDDOT) {
6934 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6937 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
6941 #line 6937 "parse.c"
6945 #line 1894 "parse.y"
6948 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
6952 #line 6948 "parse.c"
6956 #line 1901 "parse.y"
6959 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
6963 #line 6959 "parse.c"
6967 #line 1908 "parse.y"
6970 rb_backref_error(p, (yyvsp[0].node));
6975 #line 6971 "parse.c"
6979 #line 1918 "parse.y"
6982 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6986 #line 6982 "parse.c"
6990 #line 1925 "parse.y"
6993 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
6997 #line 6993 "parse.c"
7001 #line 1932 "parse.y"
7004 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
7008 #line 7004 "parse.c"
7012 #line 1939 "parse.y"
7015 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
7019 #line 7015 "parse.c"
7023 #line 1946 "parse.y"
7026 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].id), &(yyloc));
7030 #line 7026 "parse.c"
7034 #line 1953 "parse.y"
7037 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
7041 #line 7037 "parse.c"
7045 #line 1960 "parse.y"
7048 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
7052 #line 7048 "parse.c"
7056 #line 1967 "parse.y"
7059 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
7063 #line 7059 "parse.c"
7067 #line 1974 "parse.y"
7070 rb_backref_error(p, (yyvsp[0].node));
7075 #line 7071 "parse.c"
7079 #line 1984 "parse.y"
7082 yyerror1(&(yylsp[0]),
"class/module name must be CONSTANT");
7086 #line 7082 "parse.c"
7090 #line 1994 "parse.y"
7097 #line 7093 "parse.c"
7101 #line 2001 "parse.y"
7108 #line 7104 "parse.c"
7112 #line 2008 "parse.y"
7115 (yyval.
node) =
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
7119 #line 7115 "parse.c"
7123 #line 2020 "parse.y"
7126 (yyval.
id) = (yyvsp[0].
id);
7128 #line 7124 "parse.c"
7132 #line 2025 "parse.y"
7135 (yyval.
id) = (yyvsp[0].
id);
7137 #line 7133 "parse.c"
7141 #line 2032 "parse.y"
7148 #line 7144 "parse.c"
7152 #line 2042 "parse.y"
7159 #line 7155 "parse.c"
7163 #line 2048 "parse.y"
7165 #line 7161 "parse.c"
7169 #line 2049 "parse.y"
7173 (yyval.
node) = block_append(p, (yyvsp[-3].node), undef);
7177 #line 7173 "parse.c"
7181 #line 2058 "parse.y"
7183 #line 7179 "parse.c"
7187 #line 2059 "parse.y"
7189 #line 7185 "parse.c"
7193 #line 2060 "parse.y"
7195 #line 7191 "parse.c"
7199 #line 2061 "parse.y"
7201 #line 7197 "parse.c"
7205 #line 2062 "parse.y"
7207 #line 7203 "parse.c"
7211 #line 2063 "parse.y"
7213 #line 7209 "parse.c"
7217 #line 2064 "parse.y"
7219 #line 7215 "parse.c"
7223 #line 2065 "parse.y"
7225 #line 7221 "parse.c"
7229 #line 2066 "parse.y"
7231 #line 7227 "parse.c"
7235 #line 2067 "parse.y"
7237 #line 7233 "parse.c"
7241 #line 2068 "parse.y"
7243 #line 7239 "parse.c"
7247 #line 2069 "parse.y"
7249 #line 7245 "parse.c"
7253 #line 2070 "parse.y"
7255 #line 7251 "parse.c"
7259 #line 2071 "parse.y"
7261 #line 7257 "parse.c"
7265 #line 2072 "parse.y"
7267 #line 7263 "parse.c"
7271 #line 2073 "parse.y"
7273 #line 7269 "parse.c"
7277 #line 2074 "parse.y"
7279 #line 7275 "parse.c"
7283 #line 2075 "parse.y"
7285 #line 7281 "parse.c"
7289 #line 2076 "parse.y"
7291 #line 7287 "parse.c"
7295 #line 2077 "parse.y"
7297 #line 7293 "parse.c"
7301 #line 2078 "parse.y"
7303 #line 7299 "parse.c"
7307 #line 2079 "parse.y"
7309 #line 7305 "parse.c"
7313 #line 2080 "parse.y"
7315 #line 7311 "parse.c"
7319 #line 2081 "parse.y"
7321 #line 7317 "parse.c"
7325 #line 2082 "parse.y"
7327 #line 7323 "parse.c"
7331 #line 2083 "parse.y"
7333 #line 7329 "parse.c"
7337 #line 2084 "parse.y"
7339 #line 7335 "parse.c"
7343 #line 2085 "parse.y"
7345 #line 7341 "parse.c"
7349 #line 2086 "parse.y"
7351 #line 7347 "parse.c"
7355 #line 2087 "parse.y"
7357 #line 7353 "parse.c"
7361 #line 2105 "parse.y"
7364 (yyval.
node) = node_assign(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7368 #line 7364 "parse.c"
7372 #line 2112 "parse.y"
7375 (yyval.
node) = new_op_assign(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7379 #line 7375 "parse.c"
7383 #line 2119 "parse.y"
7387 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-3]), &(yyloc));
7391 #line 7387 "parse.c"
7395 #line 2127 "parse.y"
7399 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7403 #line 7399 "parse.c"
7407 #line 2135 "parse.y"
7411 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7415 #line 7411 "parse.c"
7419 #line 2143 "parse.y"
7423 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-4].node),
ID2VAL(
idCOLON2), (yyvsp[-2].id), (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc));
7427 #line 7423 "parse.c"
7431 #line 2151 "parse.y"
7434 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
7435 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].node), (yyvsp[-2].
id), &loc), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7439 #line 7435 "parse.c"
7443 #line 2159 "parse.y"
7446 (yyval.
node) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-2].
id), &(yyloc)), (yyvsp[-1].id), (yyvsp[0].node), &(yyloc));
7450 #line 7446 "parse.c"
7454 #line 2166 "parse.y"
7457 rb_backref_error(p, (yyvsp[-2].node));
7462 #line 7458 "parse.c"
7466 #line 2174 "parse.y"
7471 (yyval.
node) =
NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7475 #line 7471 "parse.c"
7479 #line 2183 "parse.y"
7484 (yyval.
node) =
NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7488 #line 7484 "parse.c"
7492 #line 2192 "parse.y"
7496 loc.beg_pos = (yylsp[0]).end_pos;
7497 loc.end_pos = (yylsp[0]).end_pos;
7504 #line 7500 "parse.c"
7508 #line 2204 "parse.y"
7512 loc.beg_pos = (yylsp[0]).end_pos;
7513 loc.end_pos = (yylsp[0]).end_pos;
7520 #line 7516 "parse.c"
7524 #line 2216 "parse.y"
7528 loc.beg_pos = (yylsp[-1]).beg_pos;
7529 loc.end_pos = (yylsp[-1]).beg_pos;
7536 #line 7532 "parse.c"
7540 #line 2228 "parse.y"
7544 loc.beg_pos = (yylsp[-1]).beg_pos;
7545 loc.end_pos = (yylsp[-1]).beg_pos;
7552 #line 7548 "parse.c"
7556 #line 2240 "parse.y"
7558 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7560 #line 7556 "parse.c"
7564 #line 2244 "parse.y"
7566 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7568 #line 7564 "parse.c"
7572 #line 2248 "parse.y"
7574 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7576 #line 7572 "parse.c"
7580 #line 2252 "parse.y"
7582 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7584 #line 7580 "parse.c"
7588 #line 2256 "parse.y"
7590 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7592 #line 7588 "parse.c"
7596 #line 2260 "parse.y"
7598 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7600 #line 7596 "parse.c"
7604 #line 2264 "parse.y"
7606 (yyval.
node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
7608 #line 7604 "parse.c"
7612 #line 2268 "parse.y"
7614 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUPlus, &(yylsp[-1]), &(yyloc));
7616 #line 7612 "parse.c"
7620 #line 2272 "parse.y"
7622 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUMinus, &(yylsp[-1]), &(yyloc));
7624 #line 7620 "parse.c"
7628 #line 2276 "parse.y"
7630 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7632 #line 7628 "parse.c"
7636 #line 2280 "parse.y"
7638 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7640 #line 7636 "parse.c"
7644 #line 2284 "parse.y"
7646 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7648 #line 7644 "parse.c"
7652 #line 2288 "parse.y"
7654 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7656 #line 7652 "parse.c"
7660 #line 2293 "parse.y"
7662 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7664 #line 7660 "parse.c"
7668 #line 2297 "parse.y"
7670 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7672 #line 7668 "parse.c"
7676 #line 2301 "parse.y"
7678 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7680 #line 7676 "parse.c"
7684 #line 2305 "parse.y"
7686 (yyval.
node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7688 #line 7684 "parse.c"
7692 #line 2309 "parse.y"
7694 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7696 #line 7692 "parse.c"
7700 #line 2313 "parse.y"
7702 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7704 #line 7700 "parse.c"
7708 #line 2317 "parse.y"
7710 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
7712 #line 7708 "parse.c"
7716 #line 2321 "parse.y"
7718 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7720 #line 7716 "parse.c"
7724 #line 2325 "parse.y"
7726 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7728 #line 7724 "parse.c"
7732 #line 2329 "parse.y"
7734 (yyval.
node) = logop(p,
idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7736 #line 7732 "parse.c"
7740 #line 2333 "parse.y"
7742 (yyval.
node) = logop(p,
idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7744 #line 7740 "parse.c"
7748 #line 2336 "parse.y"
7750 #line 7746 "parse.c"
7754 #line 2337 "parse.y"
7757 (yyval.
node) = new_defined(p, (yyvsp[0].node), &(yyloc));
7759 #line 7755 "parse.c"
7763 #line 2342 "parse.y"
7767 (yyval.
node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
7768 fixpos((yyval.
node), (yyvsp[-5].node));
7772 #line 7768 "parse.c"
7776 #line 2351 "parse.y"
7778 (yyval.
node) = (yyvsp[0].node);
7780 #line 7776 "parse.c"
7784 #line 2356 "parse.y"
7786 #line 7782 "parse.c"
7790 #line 2357 "parse.y"
7792 #line 7788 "parse.c"
7796 #line 2358 "parse.y"
7798 #line 7794 "parse.c"
7802 #line 2359 "parse.y"
7804 #line 7800 "parse.c"
7808 #line 2363 "parse.y"
7810 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7812 #line 7808 "parse.c"
7816 #line 2367 "parse.y"
7819 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7821 #line 7817 "parse.c"
7825 #line 2374 "parse.y"
7828 (yyval.
node) = (yyvsp[0].node);
7830 #line 7826 "parse.c"
7834 #line 2382 "parse.y"
7836 (yyval.
node) = (yyvsp[-1].node);
7838 #line 7834 "parse.c"
7842 #line 2386 "parse.y"
7845 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
7849 #line 7845 "parse.c"
7853 #line 2393 "parse.y"
7856 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
7860 #line 7856 "parse.c"
7864 #line 2402 "parse.y"
7867 (yyval.
node) = (yyvsp[0].node);
7869 #line 7865 "parse.c"
7873 #line 2407 "parse.y"
7876 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7882 #line 7878 "parse.c"
7886 #line 2418 "parse.y"
7889 (yyval.
node) = (yyvsp[-1].node);
7893 #line 7889 "parse.c"
7897 #line 2425 "parse.y"
7915 (yyval.
node) = arg_append(p, splat, new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
7917 (yyval.
node) = splat;
7919 (yyval.
node) = arg_blk_pass((yyval.
node), block);
7924 #line 7920 "parse.c"
7928 #line 2460 "parse.y"
7930 (yyval.
node) = (yyvsp[-1].node);
7932 #line 7928 "parse.c"
7936 #line 2464 "parse.y"
7939 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
7943 #line 7939 "parse.c"
7947 #line 2471 "parse.y"
7950 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
7954 #line 7950 "parse.c"
7958 #line 2480 "parse.y"
7966 #line 7962 "parse.c"
7970 #line 2488 "parse.y"
7973 (yyval.
node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node));
7977 #line 7973 "parse.c"
7981 #line 2495 "parse.y"
7984 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
7985 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].node));
7989 #line 7985 "parse.c"
7993 #line 2503 "parse.y"
7996 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
7997 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].node));
8001 #line 7997 "parse.c"
8005 #line 2514 "parse.y"
8023 #line 8019 "parse.c"
8027 #line 2532 "parse.y"
8043 (yyval.
node) = (yyvsp[0].node);
8045 #line 8041 "parse.c"
8049 #line 2552 "parse.y"
8056 #line 8052 "parse.c"
8060 #line 2561 "parse.y"
8062 (yyval.
node) = (yyvsp[0].node);
8064 #line 8060 "parse.c"
8068 #line 2565 "parse.y"
8072 #line 8068 "parse.c"
8076 #line 2571 "parse.y"
8083 #line 8079 "parse.c"
8087 #line 2578 "parse.y"
8094 #line 8090 "parse.c"
8098 #line 2585 "parse.y"
8101 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
8105 #line 8101 "parse.c"
8109 #line 2592 "parse.y"
8112 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
8116 #line 8112 "parse.c"
8120 #line 2605 "parse.y"
8123 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
8127 #line 8123 "parse.c"
8131 #line 2612 "parse.y"
8134 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
8138 #line 8134 "parse.c"
8142 #line 2619 "parse.y"
8149 #line 8145 "parse.c"
8153 #line 2638 "parse.y"
8160 #line 8156 "parse.c"
8164 #line 2645 "parse.y"
8168 #line 8164 "parse.c"
8172 #line 2650 "parse.y"
8176 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
8182 #line 8178 "parse.c"
8186 #line 2659 "parse.y"
8188 #line 8184 "parse.c"
8192 #line 2660 "parse.y"
8199 #line 8195 "parse.c"
8203 #line 2666 "parse.y"
8205 #line 8201 "parse.c"
8209 #line 2667 "parse.y"
8213 (yyval.
node) = (yyvsp[-2].node);
8217 #line 8213 "parse.c"
8221 #line 2675 "parse.y"
8225 (yyval.
node) = (yyvsp[-1].node);
8229 #line 8225 "parse.c"
8233 #line 2683 "parse.y"
8236 (yyval.
node) =
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
8240 #line 8236 "parse.c"
8244 #line 2690 "parse.y"
8251 #line 8247 "parse.c"
8255 #line 2697 "parse.y"
8262 #line 8258 "parse.c"
8266 #line 2704 "parse.y"
8269 (yyval.
node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
8274 #line 8270 "parse.c"
8278 #line 2712 "parse.y"
8285 #line 8281 "parse.c"
8289 #line 2719 "parse.y"
8292 (yyval.
node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
8296 #line 8292 "parse.c"
8300 #line 2726 "parse.y"
8307 #line 8303 "parse.c"
8311 #line 2733 "parse.y"
8318 #line 8314 "parse.c"
8322 #line 2739 "parse.y"
8324 #line 8320 "parse.c"
8328 #line 2740 "parse.y"
8331 (yyval.
node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
8333 #line 8329 "parse.c"
8337 #line 2745 "parse.y"
8339 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
8341 #line 8337 "parse.c"
8345 #line 2749 "parse.y"
8347 (yyval.
node) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
8349 #line 8345 "parse.c"
8353 #line 2753 "parse.y"
8356 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
8360 #line 8356 "parse.c"
8364 #line 2761 "parse.y"
8367 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
8368 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
8372 #line 8368 "parse.c"
8376 #line 2769 "parse.y"
8378 token_info_push(p,
"->", &(yylsp[0]));
8380 #line 8376 "parse.c"
8384 #line 2773 "parse.y"
8386 (yyval.
node) = (yyvsp[0].node);
8391 #line 8387 "parse.c"
8395 #line 2783 "parse.y"
8398 (yyval.
node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
8399 fixpos((yyval.
node), (yyvsp[-4].node));
8403 #line 8399 "parse.c"
8407 #line 2794 "parse.y"
8410 (yyval.
node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
8411 fixpos((yyval.
node), (yyvsp[-4].node));
8415 #line 8411 "parse.c"
8419 #line 2804 "parse.y"
8422 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
8423 fixpos((yyval.
node), (yyvsp[-2].node));
8427 #line 8423 "parse.c"
8431 #line 2814 "parse.y"
8434 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
8435 fixpos((yyval.
node), (yyvsp[-2].node));
8439 #line 8435 "parse.c"
8443 #line 2822 "parse.y"
8448 #line 8444 "parse.c"
8452 #line 2828 "parse.y"
8457 (yyval.
node) =
NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
8458 fixpos((yyval.
node), (yyvsp[-4].node));
8462 #line 8458 "parse.c"
8466 #line 2838 "parse.y"
8471 #line 8467 "parse.c"
8475 #line 2844 "parse.y"
8484 #line 8480 "parse.c"
8488 #line 2855 "parse.y"
8491 (yyval.
node) = new_case3(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
8495 #line 8491 "parse.c"
8499 #line 2864 "parse.y"
8511 ID id = internal_id(p);
8513 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
8516 rb_imemo_tmpbuf_set_ptr(tmpbuf, tbl);
8517 tbl[0] = 1 ; tbl[1] =
id ;
8520 switch (
nd_type((yyvsp[-4].node))) {
8524 (yyvsp[-4].node)->
nd_value = internal_var;
8527 m->nd_next = (yyvsp[-4].node);
8530 m->nd_next = node_assign(p, (yyvsp[-4].node),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])), &(yylsp[-4]));
8533 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].node), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, &(yylsp[-4]));
8536 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
8539 (yyval.
node) =
NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
8540 fixpos((yyval.
node), (yyvsp[-4].node));
8544 #line 8540 "parse.c"
8548 #line 2909 "parse.y"
8551 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
8552 yyerror1(&loc,
"class definition in method body");
8558 #line 8554 "parse.c"
8562 #line 2920 "parse.y"
8565 (yyval.
node) =
NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc));
8567 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
8574 #line 8570 "parse.c"
8578 #line 2932 "parse.y"
8585 #line 8581 "parse.c"
8589 #line 2941 "parse.y"
8592 (yyval.
node) =
NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
8594 set_line_body((yyvsp[-1].node),
nd_line((yyvsp[-4].node)));
8595 fixpos((yyval.
node), (yyvsp[-4].node));
8599 p->
in_def = (yyvsp[-3].num) & 1;
8600 p->
in_class = ((yyvsp[-3].num) >> 1) & 1;
8602 #line 8598 "parse.c"
8606 #line 2954 "parse.y"
8609 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
8610 yyerror1(&loc,
"module definition in method body");
8616 #line 8612 "parse.c"
8620 #line 2965 "parse.y"
8623 (yyval.
node) =
NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
8625 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
8632 #line 8628 "parse.c"
8636 #line 2977 "parse.y"
8638 numparam_name(p,
get_id((yyvsp[0].
id)));
8643 #line 8639 "parse.c"
8647 #line 2983 "parse.y"
8652 #line 8648 "parse.c"
8656 #line 2990 "parse.y"
8659 NODE *body = remove_begin((yyvsp[-1].node));
8660 reduce_nodes(p, &body);
8661 (yyval.
node) =
NEW_DEFN((yyvsp[-5].
id), (yyvsp[-2].node), body, &(yyloc));
8663 set_line_body(body, (yylsp[-6]).beg_pos.lineno);
8667 p->
in_def = (yyvsp[-3].num) & 1;
8670 #line 8666 "parse.c"
8674 #line 3003 "parse.y"
8676 #line 8672 "parse.c"
8680 #line 3004 "parse.y"
8682 numparam_name(p,
get_id((yyvsp[0].
id)));
8683 (yyvsp[-1].num) = p->
in_def;
8690 #line 8686 "parse.c"
8694 #line 3016 "parse.y"
8697 NODE *body = remove_begin((yyvsp[-1].node));
8698 reduce_nodes(p, &body);
8699 (yyval.
node) =
NEW_DEFS((yyvsp[-7].node), (yyvsp[-4].id), (yyvsp[-2].node), body, &(yyloc));
8701 set_line_body(body, (yylsp[-8]).beg_pos.lineno);
8705 p->
in_def = (yyvsp[-5].num) & 1;
8708 #line 8704 "parse.c"
8712 #line 3030 "parse.y"
8719 #line 8715 "parse.c"
8723 #line 3037 "parse.y"
8730 #line 8726 "parse.c"
8734 #line 3044 "parse.y"
8741 #line 8737 "parse.c"
8745 #line 3051 "parse.y"
8752 #line 8748 "parse.c"
8756 #line 3060 "parse.y"
8759 (yyval.
node) = (yyvsp[0].node);
8761 #line 8757 "parse.c"
8765 #line 3067 "parse.y"
8767 token_info_push(p,
"begin", &(yyloc));
8769 #line 8765 "parse.c"
8773 #line 3073 "parse.y"
8776 token_info_push(p,
"if", &(yyloc));
8788 #line 8784 "parse.c"
8792 #line 3090 "parse.y"
8794 token_info_push(p,
"unless", &(yyloc));
8796 #line 8792 "parse.c"
8800 #line 3096 "parse.y"
8802 token_info_push(p,
"while", &(yyloc));
8804 #line 8800 "parse.c"
8808 #line 3102 "parse.y"
8810 token_info_push(p,
"until", &(yyloc));
8812 #line 8808 "parse.c"
8816 #line 3108 "parse.y"
8818 token_info_push(p,
"case", &(yyloc));
8820 #line 8816 "parse.c"
8824 #line 3114 "parse.y"
8826 token_info_push(p,
"for", &(yyloc));
8828 #line 8824 "parse.c"
8832 #line 3120 "parse.y"
8834 token_info_push(p,
"class", &(yyloc));
8836 #line 8832 "parse.c"
8840 #line 3126 "parse.y"
8842 token_info_push(p,
"module", &(yyloc));
8844 #line 8840 "parse.c"
8848 #line 3132 "parse.y"
8850 token_info_push(p,
"def", &(yyloc));
8852 #line 8848 "parse.c"
8856 #line 3138 "parse.y"
8858 token_info_push(p,
"do", &(yyloc));
8860 #line 8856 "parse.c"
8864 #line 3144 "parse.y"
8866 token_info_push(p,
"do", &(yyloc));
8868 #line 8864 "parse.c"
8872 #line 3150 "parse.y"
8874 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
8876 #line 8872 "parse.c"
8880 #line 3156 "parse.y"
8882 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
8884 #line 8880 "parse.c"
8888 #line 3162 "parse.y"
8890 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
8892 #line 8888 "parse.c"
8896 #line 3168 "parse.y"
8899 int same = ptinfo_beg &&
strcmp(ptinfo_beg->
token,
"case") != 0;
8900 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
8905 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
8906 if (!e.
nonspc) *ptinfo_beg = e;
8909 #line 8905 "parse.c"
8913 #line 3183 "parse.y"
8916 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
8918 #line 8914 "parse.c"
8922 #line 3190 "parse.y"
8924 token_info_pop(p,
"end", &(yyloc));
8926 #line 8922 "parse.c"
8930 #line 3196 "parse.y"
8933 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
8935 #line 8931 "parse.c"
8939 #line 3215 "parse.y"
8942 (yyval.
node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
8943 fixpos((yyval.
node), (yyvsp[-3].node));
8947 #line 8943 "parse.c"
8951 #line 3226 "parse.y"
8954 (yyval.
node) = (yyvsp[0].node);
8958 #line 8954 "parse.c"
8962 #line 3239 "parse.y"
8965 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8966 mark_lvar_used(p, (yyval.
node));
8970 #line 8966 "parse.c"
8974 #line 3247 "parse.y"
8977 (yyval.
node) = (yyvsp[-1].node);
8981 #line 8977 "parse.c"
8985 #line 3256 "parse.y"
8992 #line 8988 "parse.c"
8996 #line 3263 "parse.y"
8999 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
9003 #line 8999 "parse.c"
9007 #line 3272 "parse.y"
9014 #line 9010 "parse.c"
9018 #line 3279 "parse.y"
9021 (yyval.
node) =
NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9025 #line 9021 "parse.c"
9029 #line 3286 "parse.y"
9036 #line 9032 "parse.c"
9040 #line 3293 "parse.y"
9047 #line 9043 "parse.c"
9051 #line 3300 "parse.y"
9058 #line 9054 "parse.c"
9062 #line 3309 "parse.y"
9065 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
9066 mark_lvar_used(p, (yyval.
node));
9070 #line 9066 "parse.c"
9074 #line 3317 "parse.y"
9081 #line 9077 "parse.c"
9085 #line 3326 "parse.y"
9087 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
9089 #line 9085 "parse.c"
9093 #line 3330 "parse.y"
9095 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].id), &(yylsp[-1]));
9097 #line 9093 "parse.c"
9101 #line 3334 "parse.y"
9103 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
9105 #line 9101 "parse.c"
9109 #line 3338 "parse.y"
9113 #line 9109 "parse.c"
9117 #line 3342 "parse.y"
9119 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
9121 #line 9117 "parse.c"
9125 #line 3348 "parse.y"
9127 (yyval.
node) = (yyvsp[0].node);
9129 #line 9125 "parse.c"
9133 #line 3352 "parse.y"
9137 #line 9133 "parse.c"
9141 #line 3358 "parse.y"
9143 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
9145 #line 9141 "parse.c"
9149 #line 3362 "parse.y"
9151 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9153 #line 9149 "parse.c"
9157 #line 3366 "parse.y"
9159 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9161 #line 9157 "parse.c"
9165 #line 3370 "parse.y"
9167 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9169 #line 9165 "parse.c"
9173 #line 3374 "parse.y"
9175 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
9177 #line 9173 "parse.c"
9181 #line 3378 "parse.y"
9185 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
NODE_SPECIAL_EXCESSIVE_COMMA,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone, &(yylsp[-1])), &(yyloc));
9189 #line 9185 "parse.c"
9193 #line 3386 "parse.y"
9195 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9197 #line 9193 "parse.c"
9201 #line 3390 "parse.y"
9203 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9205 #line 9201 "parse.c"
9209 #line 3394 "parse.y"
9211 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
9213 #line 9209 "parse.c"
9217 #line 3398 "parse.y"
9219 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9221 #line 9217 "parse.c"
9225 #line 3402 "parse.y"
9227 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9229 #line 9225 "parse.c"
9233 #line 3406 "parse.y"
9235 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9237 #line 9233 "parse.c"
9241 #line 3410 "parse.y"
9243 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
9245 #line 9241 "parse.c"
9249 #line 3414 "parse.y"
9251 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9253 #line 9249 "parse.c"
9257 #line 3418 "parse.y"
9261 #line 9257 "parse.c"
9265 #line 3425 "parse.y"
9269 #line 9265 "parse.c"
9273 #line 3431 "parse.y"
9282 #line 9278 "parse.c"
9286 #line 3440 "parse.y"
9291 (yyval.
node) = (yyvsp[-2].node);
9295 #line 9291 "parse.c"
9299 #line 3452 "parse.y"
9303 #line 9299 "parse.c"
9307 #line 3456 "parse.y"
9314 #line 9310 "parse.c"
9318 #line 3471 "parse.y"
9320 new_bv(p,
get_id((yyvsp[0].
id)));
9323 #line 9319 "parse.c"
9327 #line 3476 "parse.y"
9331 #line 9327 "parse.c"
9335 #line 3481 "parse.y"
9337 (yyval.
vars) = dyna_push(p);
9339 #line 9335 "parse.c"
9343 #line 3484 "parse.y"
9348 #line 9344 "parse.c"
9352 #line 3488 "parse.y"
9357 #line 9353 "parse.c"
9361 #line 3492 "parse.y"
9363 (yyval.
node) = numparam_push(p);
9365 #line 9361 "parse.c"
9369 #line 3496 "parse.y"
9373 #line 9369 "parse.c"
9377 #line 3500 "parse.y"
9383 (yyvsp[-2].node) = args_with_numbered(p, (yyvsp[-2].node), max_numparam);
9386 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9387 (yyval.
node) =
NEW_LAMBDA((yyvsp[-2].node), (yyvsp[0].node), &loc);
9393 numparam_pop(p, (yyvsp[-3].node));
9394 dyna_pop(p, (yyvsp[-6].
vars));
9396 #line 9392 "parse.c"
9400 #line 3521 "parse.y"
9403 (yyval.
node) = (yyvsp[-2].node);
9408 #line 9404 "parse.c"
9412 #line 3529 "parse.y"
9415 if (!args_info_empty_p((yyvsp[0].node)->
nd_ainfo))
9418 (yyval.
node) = (yyvsp[0].node);
9420 #line 9416 "parse.c"
9424 #line 3539 "parse.y"
9426 token_info_pop(p,
"}", &(yylsp[0]));
9427 (yyval.
node) = (yyvsp[-1].node);
9429 #line 9425 "parse.c"
9433 #line 3544 "parse.y"
9435 (yyval.
node) = (yyvsp[-1].node);
9437 #line 9433 "parse.c"
9441 #line 3550 "parse.y"
9443 (yyval.
node) = (yyvsp[-1].node);
9445 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9449 #line 9445 "parse.c"
9453 #line 3560 "parse.y"
9460 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
9462 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9463 fixpos((yyval.
node), (yyvsp[-1].node));
9467 #line 9463 "parse.c"
9471 #line 3574 "parse.y"
9474 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9478 #line 9474 "parse.c"
9482 #line 3581 "parse.y"
9485 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
9489 #line 9485 "parse.c"
9493 #line 3588 "parse.y"
9496 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
9500 #line 9496 "parse.c"
9504 #line 3597 "parse.y"
9507 (yyval.
node) = (yyvsp[-1].node);
9513 #line 9509 "parse.c"
9517 #line 3606 "parse.y"
9520 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9525 #line 9521 "parse.c"
9529 #line 3614 "parse.y"
9532 (yyval.
node) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9537 #line 9533 "parse.c"
9541 #line 3622 "parse.y"
9548 #line 9544 "parse.c"
9552 #line 3629 "parse.y"
9555 (yyval.
node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node),
ID2VAL(
idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9560 #line 9556 "parse.c"
9564 #line 3637 "parse.y"
9572 #line 9568 "parse.c"
9576 #line 3645 "parse.y"
9583 #line 9579 "parse.c"
9587 #line 3652 "parse.y"
9594 #line 9590 "parse.c"
9598 #line 3659 "parse.y"
9605 fixpos((yyval.
node), (yyvsp[-3].node));
9609 #line 9605 "parse.c"
9613 #line 3672 "parse.y"
9615 (yyval.
node) = (yyvsp[-1].node);
9617 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9621 #line 9617 "parse.c"
9625 #line 3680 "parse.y"
9627 (yyval.
node) = (yyvsp[-1].node);
9629 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9633 #line 9629 "parse.c"
9637 #line 3689 "parse.y"
9638 {(yyval.
vars) = dyna_push(p);}
9639 #line 9635 "parse.c"
9643 #line 3690 "parse.y"
9648 #line 9644 "parse.c"
9652 #line 3694 "parse.y"
9654 (yyval.
node) = numparam_push(p);
9656 #line 9652 "parse.c"
9660 #line 3698 "parse.y"
9664 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
9666 (yyval.
node) =
NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9669 numparam_pop(p, (yyvsp[-2].node));
9670 dyna_pop(p, (yyvsp[-4].
vars));
9672 #line 9668 "parse.c"
9676 #line 3711 "parse.y"
9677 {(yyval.
vars) = dyna_push(p);}
9678 #line 9674 "parse.c"
9682 #line 3712 "parse.y"
9687 #line 9683 "parse.c"
9691 #line 3716 "parse.y"
9693 (yyval.
node) = numparam_push(p);
9696 #line 9692 "parse.c"
9700 #line 3721 "parse.y"
9704 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
9706 (yyval.
node) =
NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9710 numparam_pop(p, (yyvsp[-2].node));
9711 dyna_pop(p, (yyvsp[-4].
vars));
9713 #line 9709 "parse.c"
9717 #line 3736 "parse.y"
9720 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
9725 #line 9721 "parse.c"
9729 #line 3744 "parse.y"
9736 #line 9732 "parse.c"
9740 #line 3751 "parse.y"
9743 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
9744 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9748 #line 9744 "parse.c"
9752 #line 3759 "parse.y"
9755 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
9759 #line 9755 "parse.c"
9763 #line 3770 "parse.y"
9766 (yyval.
node) =
NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9767 fixpos((yyval.
node), (yyvsp[-3].node));
9771 #line 9767 "parse.c"
9775 #line 3784 "parse.y"
9782 #line 9778 "parse.c"
9786 #line 3790 "parse.y"
9787 {(yyval.
tbl) = push_pvtbl(p);}
9788 #line 9784 "parse.c"
9792 #line 3791 "parse.y"
9793 {(yyval.
tbl) = push_pktbl(p);}
9794 #line 9790 "parse.c"
9798 #line 3793 "parse.y"
9799 {pop_pktbl(p, (yyvsp[-2].tbl));}
9800 #line 9796 "parse.c"
9804 #line 3794 "parse.y"
9805 {pop_pvtbl(p, (yyvsp[-4].tbl));}
9806 #line 9802 "parse.c"
9810 #line 3795 "parse.y"
9814 #line 9810 "parse.c"
9818 #line 3800 "parse.y"
9821 (yyval.
node) =
NEW_IN((yyvsp[-6].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9825 #line 9821 "parse.c"
9829 #line 3814 "parse.y"
9832 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9833 fixpos((yyval.
node), (yyvsp[0].node));
9837 #line 9833 "parse.c"
9841 #line 3822 "parse.y"
9844 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9845 fixpos((yyval.
node), (yyvsp[0].node));
9849 #line 9845 "parse.c"
9853 #line 3833 "parse.y"
9855 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
9858 #line 9854 "parse.c"
9862 #line 3838 "parse.y"
9864 (yyval.
node) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
9870 #line 9866 "parse.c"
9874 #line 3846 "parse.y"
9876 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
9878 #line 9874 "parse.c"
9882 #line 3850 "parse.y"
9884 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[0].node), &(yyloc));
9886 #line 9882 "parse.c"
9890 #line 3859 "parse.y"
9894 n = list_append(p,
n, (yyvsp[0].node));
9895 (yyval.
node) = new_hash(p,
n, &(yyloc));
9899 #line 9895 "parse.c"
9903 #line 3871 "parse.y"
9910 #line 9906 "parse.c"
9914 #line 3880 "parse.y"
9915 {(yyval.
tbl) = push_pktbl(p);}
9916 #line 9912 "parse.c"
9920 #line 3881 "parse.y"
9921 {(yyval.
tbl) = push_pktbl(p);}
9922 #line 9918 "parse.c"
9926 #line 3885 "parse.y"
9928 pop_pktbl(p, (yyvsp[-2].tbl));
9929 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), &(yyloc));
9935 #line 9931 "parse.c"
9939 #line 3894 "parse.y"
9941 pop_pktbl(p, (yyvsp[-2].tbl));
9942 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
9948 #line 9944 "parse.c"
9952 #line 3903 "parse.y"
9954 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
9955 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
9957 #line 9953 "parse.c"
9961 #line 3908 "parse.y"
9963 pop_pktbl(p, (yyvsp[-2].tbl));
9964 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), &(yyloc));
9970 #line 9966 "parse.c"
9974 #line 3917 "parse.y"
9976 pop_pktbl(p, (yyvsp[-2].tbl));
9977 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
9983 #line 9979 "parse.c"
9987 #line 3926 "parse.y"
9989 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
9990 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
9992 #line 9988 "parse.c"
9996 #line 3930 "parse.y"
9997 {(yyval.
tbl) = push_pktbl(p);}
9998 #line 9994 "parse.c"
10002 #line 3931 "parse.y"
10004 pop_pktbl(p, (yyvsp[-2].tbl));
10005 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].node), &(yyloc));
10007 #line 10003 "parse.c"
10011 #line 3936 "parse.y"
10013 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10016 #line 10012 "parse.c"
10020 #line 3941 "parse.y"
10022 (yyval.
tbl) = push_pktbl(p);
10026 #line 10022 "parse.c"
10030 #line 3947 "parse.y"
10032 pop_pktbl(p, (yyvsp[-2].tbl));
10034 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[-1].node), &(yyloc));
10036 #line 10032 "parse.c"
10040 #line 3953 "parse.y"
10042 (yyval.
node) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
10043 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyval.
node), &(yyloc));
10045 #line 10041 "parse.c"
10049 #line 3957 "parse.y"
10050 {(yyval.
tbl) = push_pktbl(p);}
10051 #line 10047 "parse.c"
10055 #line 3958 "parse.y"
10057 pop_pktbl(p, (yyvsp[-2].tbl));
10058 (yyval.
node) = (yyvsp[-1].node);
10060 #line 10056 "parse.c"
10064 #line 3965 "parse.y"
10068 (yyval.
node) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10073 #line 10069 "parse.c"
10077 #line 3974 "parse.y"
10079 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0,
Qnone, &(yyloc));
10081 #line 10077 "parse.c"
10085 #line 3978 "parse.y"
10088 (yyval.
node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0,
Qnone, &(yyloc));
10094 #line 10090 "parse.c"
10098 #line 3987 "parse.y"
10100 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-2].node), 1, (yyvsp[0].id),
Qnone, &(yyloc));
10102 #line 10098 "parse.c"
10106 #line 3991 "parse.y"
10108 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-4].node), 1, (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
10110 #line 10106 "parse.c"
10114 #line 3995 "parse.y"
10116 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, 0,
Qnone, &(yyloc));
10118 #line 10114 "parse.c"
10122 #line 3999 "parse.y"
10124 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, 0, (yyvsp[0].node), &(yyloc));
10126 #line 10122 "parse.c"
10130 #line 4006 "parse.y"
10132 (yyval.
node) = (yyvsp[-1].node);
10134 #line 10130 "parse.c"
10138 #line 4010 "parse.y"
10141 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
10145 #line 10141 "parse.c"
10149 #line 4019 "parse.y"
10151 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].
id),
Qnone, &(yyloc));
10153 #line 10149 "parse.c"
10157 #line 4023 "parse.y"
10159 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
10161 #line 10157 "parse.c"
10165 #line 4027 "parse.y"
10167 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10169 #line 10165 "parse.c"
10173 #line 4031 "parse.y"
10175 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0, (yyvsp[0].node), &(yyloc));
10177 #line 10173 "parse.c"
10181 #line 4038 "parse.y"
10184 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
10188 #line 10184 "parse.c"
10192 #line 4047 "parse.y"
10199 #line 10195 "parse.c"
10203 #line 4056 "parse.y"
10205 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
10207 #line 10203 "parse.c"
10211 #line 4060 "parse.y"
10213 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
10215 #line 10211 "parse.c"
10219 #line 4064 "parse.y"
10221 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
10223 #line 10219 "parse.c"
10227 #line 4068 "parse.y"
10229 (yyval.
node) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
10231 #line 10227 "parse.c"
10235 #line 4072 "parse.y"
10237 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10239 #line 10235 "parse.c"
10243 #line 4076 "parse.y"
10245 (yyval.
node) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10247 #line 10243 "parse.c"
10251 #line 4084 "parse.y"
10254 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
10258 #line 10254 "parse.c"
10262 #line 4093 "parse.y"
10264 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].
id)), &(yylsp[-1]));
10270 #line 10266 "parse.c"
10274 #line 4101 "parse.y"
10276 error_duplicate_pattern_key(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
10278 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
10280 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
10282 (yyval.
node) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
10286 #line 10282 "parse.c"
10290 #line 4116 "parse.y"
10292 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10295 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
10296 (yyval.
id) =
SYM2ID(node->nd_lit);
10307 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
10311 #line 10307 "parse.c"
10315 #line 4139 "parse.y"
10317 (yyval.
id) = (yyvsp[0].
id);
10319 #line 10315 "parse.c"
10323 #line 4143 "parse.y"
10327 #line 10323 "parse.c"
10331 #line 4149 "parse.y"
10335 #line 10331 "parse.c"
10339 #line 4156 "parse.y"
10344 (yyval.
node) =
NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10348 #line 10344 "parse.c"
10352 #line 4165 "parse.y"
10357 (yyval.
node) =
NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10361 #line 10357 "parse.c"
10365 #line 4174 "parse.y"
10369 loc.beg_pos = (yylsp[0]).end_pos;
10370 loc.end_pos = (yylsp[0]).end_pos;
10377 #line 10373 "parse.c"
10381 #line 4186 "parse.y"
10385 loc.beg_pos = (yylsp[0]).end_pos;
10386 loc.end_pos = (yylsp[0]).end_pos;
10393 #line 10389 "parse.c"
10397 #line 4201 "parse.y"
10401 loc.beg_pos = (yylsp[-1]).beg_pos;
10402 loc.end_pos = (yylsp[-1]).beg_pos;
10409 #line 10405 "parse.c"
10413 #line 4213 "parse.y"
10417 loc.beg_pos = (yylsp[-1]).beg_pos;
10418 loc.end_pos = (yylsp[-1]).beg_pos;
10425 #line 10421 "parse.c"
10429 #line 4235 "parse.y"
10432 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
10436 #line 10432 "parse.c"
10440 #line 4242 "parse.y"
10442 token_info_push(p,
"->", &(yylsp[0]));
10444 #line 10440 "parse.c"
10448 #line 4246 "parse.y"
10450 (yyval.
node) = (yyvsp[0].node);
10455 #line 10451 "parse.c"
10459 #line 4255 "parse.y"
10462 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
10463 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10467 #line 10463 "parse.c"
10471 #line 4265 "parse.y"
10474 NODE *
n = gettable(p, (yyvsp[0].
id), &(yyloc));
10482 #line 10478 "parse.c"
10486 #line 4278 "parse.y"
10493 #line 10489 "parse.c"
10497 #line 4285 "parse.y"
10500 (yyval.
node) =
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
10504 #line 10500 "parse.c"
10508 #line 4292 "parse.y"
10511 (yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc));
10515 #line 10511 "parse.c"
10519 #line 4303 "parse.y"
10523 (yyvsp[-3].node) ? block_append(p, node_assign(p, (yyvsp[-3].node),
NEW_ERRINFO(&(yylsp[-3])), &(yylsp[-3])), (yyvsp[-1].node)) : (yyvsp[-1].node),
10524 (yyvsp[0].node), &(yyloc));
10525 fixpos((yyval.
node), (yyvsp[-4].node)?(yyvsp[-4].node):(yyvsp[-1].node));
10529 #line 10525 "parse.c"
10533 #line 4316 "parse.y"
10540 #line 10536 "parse.c"
10544 #line 4323 "parse.y"
10547 if (!((yyval.
node) = splat_array((yyvsp[0].node)))) (yyval.
node) = (yyvsp[0].node);
10551 #line 10547 "parse.c"
10555 #line 4333 "parse.y"
10557 (yyval.
node) = (yyvsp[0].node);
10559 #line 10555 "parse.c"
10563 #line 4340 "parse.y"
10566 (yyval.
node) = (yyvsp[0].node);
10570 #line 10566 "parse.c"
10574 #line 4354 "parse.y"
10577 NODE *node = (yyvsp[0].node);
10583 node = evstr2dstr(p, node);
10585 (yyval.
node) = node;
10589 #line 10585 "parse.c"
10593 #line 4373 "parse.y"
10596 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10600 #line 10596 "parse.c"
10604 #line 4382 "parse.y"
10607 (yyval.
node) = heredoc_dedent(p, (yyvsp[-1].node));
10608 if ((yyval.
node)) nd_set_loc((yyval.
node), &(yyloc));
10612 #line 10608 "parse.c"
10616 #line 4392 "parse.y"
10619 (yyval.
node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
10623 #line 10619 "parse.c"
10627 #line 4401 "parse.y"
10629 (yyval.
node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc));
10631 #line 10627 "parse.c"
10635 #line 4407 "parse.y"
10642 #line 10638 "parse.c"
10646 #line 4416 "parse.y"
10653 #line 10649 "parse.c"
10657 #line 4423 "parse.y"
10660 (yyval.
node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
10664 #line 10660 "parse.c"
10668 #line 4434 "parse.y"
10671 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10675 #line 10671 "parse.c"
10679 #line 4443 "parse.y"
10686 #line 10682 "parse.c"
10690 #line 4452 "parse.y"
10697 #line 10693 "parse.c"
10701 #line 4459 "parse.y"
10704 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
10708 #line 10704 "parse.c"
10712 #line 4468 "parse.y"
10719 #line 10715 "parse.c"
10723 #line 4477 "parse.y"
10730 #line 10726 "parse.c"
10734 #line 4486 "parse.y"
10741 #line 10737 "parse.c"
10745 #line 4493 "parse.y"
10748 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
10752 #line 10748 "parse.c"
10756 #line 4502 "parse.y"
10763 #line 10759 "parse.c"
10767 #line 4509 "parse.y"
10770 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
10774 #line 10770 "parse.c"
10778 #line 4518 "parse.y"
10789 #line 10785 "parse.c"
10793 #line 4529 "parse.y"
10796 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10809 #line 10805 "parse.c"
10813 #line 4547 "parse.y"
10820 #line 10816 "parse.c"
10824 #line 4554 "parse.y"
10827 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10831 #line 10827 "parse.c"
10835 #line 4563 "parse.y"
10846 #line 10842 "parse.c"
10850 #line 4574 "parse.y"
10853 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
10855 (yyval.
node) = tail;
10858 (yyval.
node) = head;
10868 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
10871 (yyval.
node) = list_append(p, head, tail);
10889 #line 10885 "parse.c"
10893 #line 4617 "parse.y"
10900 #line 10896 "parse.c"
10904 #line 4624 "parse.y"
10913 #line 10909 "parse.c"
10917 #line 4633 "parse.y"
10922 #line 10918 "parse.c"
10926 #line 4637 "parse.y"
10932 #line 10928 "parse.c"
10936 #line 4642 "parse.y"
10941 #line 10937 "parse.c"
10945 #line 4646 "parse.y"
10950 #line 10946 "parse.c"
10954 #line 4650 "parse.y"
10959 #line 10955 "parse.c"
10963 #line 4655 "parse.y"
10974 (yyval.
node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
10978 #line 10974 "parse.c"
10982 #line 4672 "parse.y"
10989 #line 10985 "parse.c"
10993 #line 4679 "parse.y"
11000 #line 10996 "parse.c"
11004 #line 4686 "parse.y"
11011 #line 11007 "parse.c"
11015 #line 4700 "parse.y"
11023 #line 11019 "parse.c"
11027 #line 4716 "parse.y"
11031 (yyval.
node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
11035 #line 11031 "parse.c"
11039 #line 4727 "parse.y"
11042 (yyval.
node) = (yyvsp[0].node);
11047 #line 11043 "parse.c"
11051 #line 4749 "parse.y"
11052 {(yyval.
id) =
KWD2EID(nil, (yyvsp[0].
id));}
11053 #line 11049 "parse.c"
11057 #line 4750 "parse.y"
11058 {(yyval.
id) =
KWD2EID(
self, (yyvsp[0].
id));}
11059 #line 11055 "parse.c"
11063 #line 4751 "parse.y"
11064 {(yyval.
id) =
KWD2EID(
true, (yyvsp[0].
id));}
11065 #line 11061 "parse.c"
11069 #line 4752 "parse.y"
11070 {(yyval.
id) =
KWD2EID(
false, (yyvsp[0].
id));}
11071 #line 11067 "parse.c"
11075 #line 4753 "parse.y"
11076 {(yyval.
id) =
KWD2EID(_FILE__, (yyvsp[0].
id));}
11077 #line 11073 "parse.c"
11081 #line 4754 "parse.y"
11082 {(yyval.
id) =
KWD2EID(_LINE__, (yyvsp[0].
id));}
11083 #line 11079 "parse.c"
11087 #line 4755 "parse.y"
11088 {(yyval.
id) =
KWD2EID(_ENCODING__, (yyvsp[0].
id));}
11089 #line 11085 "parse.c"
11093 #line 4759 "parse.y"
11096 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11106 #line 11102 "parse.c"
11110 #line 4772 "parse.y"
11113 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11117 #line 11113 "parse.c"
11121 #line 4781 "parse.y"
11124 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11128 #line 11124 "parse.c"
11132 #line 4788 "parse.y"
11135 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11139 #line 11135 "parse.c"
11143 #line 4801 "parse.y"
11148 #line 11144 "parse.c"
11152 #line 4806 "parse.y"
11154 (yyval.
node) = (yyvsp[-1].node);
11156 #line 11152 "parse.c"
11160 #line 4810 "parse.y"
11167 #line 11163 "parse.c"
11171 #line 4819 "parse.y"
11174 (yyval.
node) = (yyvsp[-1].node);
11180 #line 11176 "parse.c"
11184 #line 4828 "parse.y"
11199 #line 11195 "parse.c"
11203 #line 4842 "parse.y"
11209 #line 11205 "parse.c"
11213 #line 4848 "parse.y"
11216 (yyval.
node) = (yyvsp[-1].node);
11220 #line 11216 "parse.c"
11224 #line 4857 "parse.y"
11226 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
11228 #line 11224 "parse.c"
11232 #line 4861 "parse.y"
11234 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].id), &(yylsp[-1]));
11236 #line 11232 "parse.c"
11240 #line 4865 "parse.y"
11242 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
11244 #line 11240 "parse.c"
11248 #line 4869 "parse.y"
11252 #line 11248 "parse.c"
11256 #line 4873 "parse.y"
11258 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
11260 #line 11256 "parse.c"
11264 #line 4879 "parse.y"
11266 (yyval.
node) = (yyvsp[0].node);
11268 #line 11264 "parse.c"
11272 #line 4883 "parse.y"
11276 #line 11272 "parse.c"
11280 #line 4889 "parse.y"
11282 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
11284 #line 11280 "parse.c"
11288 #line 4893 "parse.y"
11290 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11292 #line 11288 "parse.c"
11296 #line 4897 "parse.y"
11298 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
11300 #line 11296 "parse.c"
11304 #line 4901 "parse.y"
11306 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11308 #line 11304 "parse.c"
11312 #line 4905 "parse.y"
11314 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
11316 #line 11312 "parse.c"
11320 #line 4909 "parse.y"
11322 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11324 #line 11320 "parse.c"
11328 #line 4913 "parse.y"
11330 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
11332 #line 11328 "parse.c"
11336 #line 4917 "parse.y"
11338 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].id),
Qnone, (yyvsp[0].node), &(yyloc));
11340 #line 11336 "parse.c"
11344 #line 4921 "parse.y"
11346 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11348 #line 11344 "parse.c"
11352 #line 4925 "parse.y"
11354 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-1].node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
11356 #line 11352 "parse.c"
11360 #line 4929 "parse.y"
11362 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11364 #line 11360 "parse.c"
11368 #line 4933 "parse.y"
11370 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
11372 #line 11368 "parse.c"
11376 #line 4937 "parse.y"
11378 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11380 #line 11376 "parse.c"
11384 #line 4941 "parse.y"
11388 #line 11384 "parse.c"
11392 #line 4945 "parse.y"
11397 #line 11393 "parse.c"
11401 #line 4952 "parse.y"
11408 #line 11404 "parse.c"
11412 #line 4961 "parse.y"
11415 yyerror1(&(yylsp[0]),
"formal argument cannot be a constant");
11420 #line 11416 "parse.c"
11424 #line 4969 "parse.y"
11427 yyerror1(&(yylsp[0]),
"formal argument cannot be an instance variable");
11432 #line 11428 "parse.c"
11436 #line 4977 "parse.y"
11439 yyerror1(&(yylsp[0]),
"formal argument cannot be a global variable");
11444 #line 11440 "parse.c"
11448 #line 4985 "parse.y"
11451 yyerror1(&(yylsp[0]),
"formal argument cannot be a class variable");
11456 #line 11452 "parse.c"
11460 #line 4996 "parse.y"
11462 formal_argument(p,
get_id((yyvsp[0].
id)));
11464 (yyval.
id) = (yyvsp[0].
id);
11466 #line 11462 "parse.c"
11470 #line 5004 "parse.y"
11475 (yyval.
id) = (yyvsp[0].
id);
11477 #line 11473 "parse.c"
11481 #line 5013 "parse.y"
11489 #line 11485 "parse.c"
11493 #line 5021 "parse.y"
11496 ID tid = internal_id(p);
11498 loc.beg_pos = (yylsp[-1]).beg_pos;
11499 loc.end_pos = (yylsp[-1]).beg_pos;
11501 if (dyna_in_block(p)) {
11512 #line 11508 "parse.c"
11516 #line 5044 "parse.y"
11519 (yyval.
node) = (yyvsp[-2].node);
11522 rb_discard_node(p, (yyvsp[0].node));
11526 #line 11522 "parse.c"
11530 #line 5057 "parse.y"
11533 arg_var(p, formal_argument(p,
id));
11536 (yyval.
id) = (yyvsp[0].
id);
11538 #line 11534 "parse.c"
11542 #line 5067 "parse.y"
11546 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11550 #line 11546 "parse.c"
11554 #line 5075 "parse.y"
11562 #line 11558 "parse.c"
11566 #line 5085 "parse.y"
11569 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11573 #line 11569 "parse.c"
11577 #line 5092 "parse.y"
11584 #line 11580 "parse.c"
11588 #line 5101 "parse.y"
11591 (yyval.
node) = (yyvsp[0].node);
11595 #line 11591 "parse.c"
11599 #line 5108 "parse.y"
11602 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
11606 #line 11602 "parse.c"
11610 #line 5118 "parse.y"
11613 (yyval.
node) = (yyvsp[0].node);
11617 #line 11613 "parse.c"
11621 #line 5125 "parse.y"
11624 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
11628 #line 11624 "parse.c"
11632 #line 5138 "parse.y"
11638 #line 11634 "parse.c"
11642 #line 5146 "parse.y"
11644 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
11646 (yyval.
id) = (yyvsp[0].
id);
11650 #line 11646 "parse.c"
11654 #line 5154 "parse.y"
11657 (yyval.
id) = internal_id(p);
11658 arg_var(p, (yyval.
id));
11662 #line 11658 "parse.c"
11666 #line 5164 "parse.y"
11670 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11674 #line 11670 "parse.c"
11678 #line 5174 "parse.y"
11682 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
11686 #line 11682 "parse.c"
11690 #line 5184 "parse.y"
11693 (yyval.
node) = (yyvsp[0].node);
11697 #line 11693 "parse.c"
11701 #line 5191 "parse.y"
11704 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
11708 #line 11704 "parse.c"
11712 #line 5200 "parse.y"
11715 (yyval.
node) = (yyvsp[0].node);
11719 #line 11715 "parse.c"
11723 #line 5207 "parse.y"
11726 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
11730 #line 11726 "parse.c"
11734 #line 5220 "parse.y"
11736 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
11738 (yyval.
id) = (yyvsp[0].
id);
11742 #line 11738 "parse.c"
11746 #line 5228 "parse.y"
11749 (yyval.
id) = internal_id(p);
11750 arg_var(p, (yyval.
id));
11754 #line 11750 "parse.c"
11758 #line 5242 "parse.y"
11760 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
11762 (yyval.
id) = (yyvsp[0].
id);
11766 #line 11762 "parse.c"
11770 #line 5252 "parse.y"
11772 (yyval.
id) = (yyvsp[0].
id);
11774 #line 11770 "parse.c"
11778 #line 5256 "parse.y"
11782 #line 11778 "parse.c"
11786 #line 5262 "parse.y"
11789 (yyval.
node) = (yyvsp[0].node);
11791 #line 11787 "parse.c"
11795 #line 5266 "parse.y"
11797 #line 11793 "parse.c"
11801 #line 5267 "parse.y"
11804 switch (
nd_type((yyvsp[-1].node))) {
11813 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
11819 (yyval.
node) = (yyvsp[-1].node);
11823 #line 11819 "parse.c"
11827 #line 5292 "parse.y"
11830 (yyval.
node) = (yyvsp[-1].node);
11834 #line 11830 "parse.c"
11838 #line 5303 "parse.y"
11841 NODE *assocs = (yyvsp[-2].node);
11842 NODE *tail = (yyvsp[0].node);
11847 if (assocs->nd_head &&
11851 tail = tail->nd_next->nd_head->nd_head;
11853 assocs = list_concat(assocs, tail);
11855 (yyval.
node) = assocs;
11859 #line 11855 "parse.c"
11863 #line 5326 "parse.y"
11870 (yyval.
node) = list_append(p,
NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
11874 #line 11870 "parse.c"
11878 #line 5337 "parse.y"
11885 #line 11881 "parse.c"
11889 #line 5344 "parse.y"
11892 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
11893 (yyval.
node) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
11897 #line 11893 "parse.c"
11901 #line 5352 "parse.y"
11905 !((yyvsp[0].node)->nd_head && (yyvsp[0].node)->
nd_head->nd_alen)) {
11906 static VALUE empty_hash;
11914 (yyval.
node) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
11918 #line 11914 "parse.c"
11922 #line 5420 "parse.y"
11924 #line 11920 "parse.c"
11928 #line 5421 "parse.y"
11930 #line 11926 "parse.c"
11934 #line 5425 "parse.y"
11936 #line 11932 "parse.c"
11940 #line 5429 "parse.y"
11944 #line 11940 "parse.c"
11948 #line 11944 "parse.c"
11977 yystate = yypgoto[yyn -
YYNTOKENS] + *yyssp;
11978 if (0 <= yystate && yystate <=
YYLAST && yycheck[yystate] == *yyssp)
11979 yystate = yytable[yystate];
11998 #if ! YYERROR_VERBOSE
12001 # define YYSYNTAX_ERROR yysyntax_error (p, &yymsg_alloc, &yymsg, \
12004 char const *yymsgp =
YY_(
"syntax error");
12005 int yysyntax_error_status;
12007 if (yysyntax_error_status == 0)
12009 else if (yysyntax_error_status == 1)
12011 if (yymsg != yymsgbuf)
12017 yymsg_alloc =
sizeof yymsgbuf;
12018 yysyntax_error_status = 2;
12026 yyerror (&yylloc, p, yymsgp);
12027 if (yysyntax_error_status == 2)
12028 goto yyexhaustedlab;
12030 # undef YYSYNTAX_ERROR
12034 yyerror_range[1] = yylloc;
12036 if (yyerrstatus == 3)
12041 if (yychar <=
YYEOF)
12044 if (yychar ==
YYEOF)
12049 yydestruct (
"Error: discarding",
12050 yytoken, &
yylval, &yylloc, p);
12071 yyerror_range[1] = yylsp[1-yylen];
12089 yyn = yypact[yystate];
12095 yyn = yytable[yyn];
12105 yyerror_range[1] = *yylsp;
12106 yydestruct (
"Error: popping",
12107 yystos[yystate], yyvsp, yylsp, p);
12117 yyerror_range[2] = yylloc;
12144 #if !defined yyoverflow || YYERROR_VERBOSE
12149 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
12160 yydestruct (
"Cleanup: discarding lookahead",
12161 yytoken, &
yylval, &yylloc, p);
12167 while (yyssp != yyss)
12169 yydestruct (
"Cleanup: popping",
12170 yystos[*yyssp], yyvsp, yylsp, p);
12177 #if YYERROR_VERBOSE
12178 if (yymsg != yymsgbuf)
12183 #line 5433 "parse.y"
12188 # define yylval (*p->lval)
12197 # define set_yylval_node(x) { \
12198 YYLTYPE _cur_loc; \
12199 rb_parser_set_location(p, &_cur_loc); \
12200 yylval.node = (x); \
12202 # define set_yylval_str(x) \
12204 set_yylval_node(NEW_STR(x, &_cur_loc)); \
12205 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12207 # define set_yylval_literal(x) \
12209 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
12210 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12212 # define set_yylval_num(x) (yylval.num = (x))
12213 # define set_yylval_id(x) (yylval.id = (x))
12214 # define set_yylval_name(x) (yylval.id = (x))
12215 # define yylval_id() (yylval.id)
12217 static inline VALUE
12220 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
12222 # define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
12223 # define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
12224 # define set_yylval_id(x) (void)(x)
12225 # define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
12226 # define set_yylval_literal(x) add_mark_object(p, (x))
12227 # define set_yylval_node(x) (void)(x)
12228 # define yylval_id() yylval.id
12229 # define _cur_loc NULL_LOC
12232 #define set_yylval_noname() set_yylval_id(keyword_nil)
12235 #define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
12236 #define dispatch_scan_event(p, t) ((void)0)
12237 #define dispatch_delayed_token(p, t) ((void)0)
12238 #define has_delayed_token(p) (0)
12240 #define literal_flush(p, ptr) ((void)(ptr))
12242 #define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
12244 static inline VALUE
12245 intern_sym(
const char *
name)
12262 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t),
str);
12270 if (!ripper_has_scan_event(p))
return;
12271 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
12273 #define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
12279 const char *saved_tokp = p->
lex.
ptok;
12281 if (
NIL_P(p->delayed.token))
return;
12284 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
12285 p->delayed.token =
Qnil;
12289 #define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
12290 #define has_delayed_token(p) (!NIL_P(p->delayed.token))
12317 int column = 1, nonspc = 0,
i;
12319 if (*
ptr ==
'\t') {
12323 if (*
ptr !=
' ' && *
ptr !=
'\t') {
12329 ptinfo->
indent = column;
12330 ptinfo->
nonspc = nonspc;
12342 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
12352 if (!ptinfo_beg)
return;
12356 token_info_warn(p,
token, ptinfo_beg, 1, loc);
12363 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
12365 if (!ptinfo_beg)
return;
12366 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
12370 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
12372 "mismatched indentations at '%s' with '%s' at %d",
12398 else if (yylloc->beg_pos.lineno == lineno) {
12417 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
12418 yylloc->beg_pos.column == yylloc->end_pos.column)) {
12422 parser_show_error_line(p, yylloc);
12430 const int max_line_margin = 30;
12431 const char *
ptr, *ptr_end, *pt, *pb;
12432 const char *pre =
"", *post =
"", *pend;
12433 const char *code =
"", *caret =
"";
12440 if (!yylloc)
return;
12442 if (pend > pbeg && pend[-1] ==
'\n') {
12443 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
12447 if (lineno == yylloc->end_pos.lineno &&
12448 (pend - pbeg) > yylloc->end_pos.column) {
12449 pt = pbeg + yylloc->end_pos.column;
12452 ptr = ptr_end = pt;
12453 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
12454 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
12456 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
12457 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
12463 if (
ptr > pbeg) pre =
"...";
12465 if (ptr_end < pend) {
12467 if (ptr_end < pend) post =
"...";
12471 if (lineno == yylloc->beg_pos.lineno) {
12472 pb += yylloc->beg_pos.column;
12473 if (pb > pt) pb = pt;
12476 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
12479 if (
RTEST(errbuf)) {
12488 #define CSI_BEGIN "\033["
12489 #define CSI_SGR "m"
12499 (
int)(pt - pb), pb,
12500 (
int)(ptr_end - pt), pt,
12507 lim = pt < pend ? pt : pend;
12514 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
12525 pre, (
int)
len, code, post,
12534 const char *pcur = 0, *ptok = 0;
12543 dispatch1(parse_error,
STR_NEW2(msg));
12560 vtable_size(
const struct vtable *tbl)
12586 #define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
12604 #define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
12620 if (
tbl->pos ==
tbl->capa) {
12621 tbl->capa =
tbl->capa * 2;
12626 #define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
12637 if (
tbl->pos <
n) {
12643 #define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
12647 vtable_included(
const struct vtable *
tbl,
ID id)
12652 for (
i = 0;
i <
tbl->pos;
i++) {
12653 if (
tbl->tbl[
i] ==
id) {
12667 debug_lines(
VALUE fname)
12670 CONST_ID(script_lines,
"SCRIPT_LINES__");
12706 if (!e_option_supplied(p)) {
12712 #define RUBY_DTRACE_PARSE_HOOK(name) \
12713 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
12714 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
12739 NODE *body = parser_append_options(p, tree->nd_body);
12743 tree->nd_body = prelude;
12755 if (
NIL_P(fname)) {
12775 must_be_ascii_compatible(
VALUE s)
12787 char *beg, *end, *start;
12799 if (end)
len = ++end - beg;
12808 if (
NIL_P(line))
return line;
12809 must_be_ascii_compatible(line);
12835 return yycompile(vparser, p, fname, line);
12847 must_be_ascii_compatible(s);
12848 return parser_compile_string(vparser,
f, s, line);
12870 return yycompile(vparser, p, fname, start);
12886 p->
lex.
gets = lex_generic_gets;
12891 return yycompile(vparser, p, fname, start);
12895 #define STR_FUNC_ESCAPE 0x01
12896 #define STR_FUNC_EXPAND 0x02
12897 #define STR_FUNC_REGEXP 0x04
12898 #define STR_FUNC_QWORDS 0x08
12899 #define STR_FUNC_SYMBOL 0x10
12900 #define STR_FUNC_INDENT 0x20
12901 #define STR_FUNC_LABEL 0x40
12902 #define STR_FUNC_LIST 0x4000
12903 #define STR_FUNC_TERM 0x8000
12934 #define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
12935 #define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
12936 #define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
12937 #define peek(p,c) peek_n(p, (c), 0)
12938 #define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
12939 #define peekc(p) peekc_n(p, 0)
12940 #define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
12958 #define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
13003 if (
peek(p,
'\n')) {
13010 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
13025 c = parser_cr(p, c);
13034 if (c == -1)
return;
13041 #define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
13043 #define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
13044 #define tok(p) (p)->tokenbuf
13045 #define toklen(p) (p)->tokidx
13051 while (ptr < p->
lex.pend) {
13052 int c = (
unsigned char)*
ptr++;
13053 int eol = (c ==
'\n' || c ==
'#');
13114 #define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
13117 escaped_control_code(
int c)
13143 #define WARN_SPACE_CHAR(c, prefix) \
13144 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
13148 int regexp_literal,
int wide)
13154 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
13155 yyerror0(
"invalid Unicode escape");
13156 return wide && numlen > 0;
13158 if (codepoint > 0x10ffff) {
13159 yyerror0(
"invalid Unicode codepoint (too large)");
13162 if ((codepoint & 0xfffff800) == 0xd800) {
13163 yyerror0(
"invalid Unicode codepoint");
13166 if (regexp_literal) {
13169 else if (codepoint >= 0x80) {
13171 if (*encp && utf8 != *encp) {
13174 parser_show_error_line(p, &loc);
13178 tokaddmbc(p, codepoint, *encp);
13181 tokadd(p, codepoint);
13189 int term,
int symbol_literal,
int regexp_literal)
13196 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
13198 const int open_brace =
'{', close_brace =
'}';
13200 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
13202 if (
peek(p, open_brace)) {
13203 const char *second =
NULL;
13204 int c,
last = nextc(p);
13207 while (c != close_brace) {
13208 if (c ==
term)
goto unterminated;
13209 if (second == multiple_codepoints)
13211 if (regexp_literal) tokadd(p,
last);
13212 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
13219 if (
term == -1 && !second)
13220 second = multiple_codepoints;
13223 if (c != close_brace) {
13226 yyerror0(
"unterminated Unicode escape");
13229 if (second && second != multiple_codepoints) {
13239 if (regexp_literal) tokadd(p, close_brace);
13243 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
13250 #define ESCAPE_CONTROL 1
13251 #define ESCAPE_META 2
13259 switch (c = nextc(p)) {
13284 case '0':
case '1':
case '2':
case '3':
13285 case '4':
case '5':
case '6':
case '7':
13292 c = tok_hex(p, &numlen);
13293 if (numlen == 0)
return 0;
13304 if ((c = nextc(p)) !=
'-') {
13307 if ((c = nextc(p)) ==
'\\') {
13308 if (
peek(p,
'u'))
goto eof;
13309 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
13311 else if (c == -1 || !
ISASCII(c))
goto eof;
13313 int c2 = escaped_control_code(c);
13322 else if (
ISCNTRL(c))
goto eof;
13323 return ((c & 0xff) | 0x80);
13327 if ((c = nextc(p)) !=
'-') {
13332 if ((c = nextc(p))==
'\\') {
13333 if (
peek(p,
'u'))
goto eof;
13338 else if (c == -1 || !
ISASCII(c))
goto eof;
13340 int c2 = escaped_control_code(c);
13359 else if (
ISCNTRL(c))
goto eof;
13365 yyerror0(
"Invalid escape character syntax");
13389 switch (c = nextc(p)) {
13393 case '0':
case '1':
case '2':
case '3':
13394 case '4':
case '5':
case '6':
case '7':
13397 if (numlen == 0)
goto eof;
13405 tok_hex(p, &numlen);
13406 if (numlen == 0)
return -1;
13413 if ((c = nextc(p)) !=
'-') {
13423 if ((c = nextc(p)) !=
'-') {
13435 if ((c = nextc(p)) ==
'\\') {
13438 else if (c == -1)
goto eof;
13444 yyerror0(
"Invalid escape character syntax");
13464 while (c = nextc(p),
ISALPHA(c)) {
13488 parser_show_error_line(p, &loc);
13496 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
13497 if (
len < 0)
return -1;
13505 simple_re_meta(
int c)
13508 case '$':
case '*':
case '+':
case '.':
13509 case '?':
case '^':
case '|':
13510 case ')':
case ']':
case '}':
case '>':
13518 parser_update_heredoc_indent(
struct parser_params *p,
int c)
13528 else if (c ==
'\t') {
13533 else if (c !=
'\n') {
13549 parser_show_error_line(p, &loc);
13555 const char *pos = p->
lex.
pcur;
13557 parser_mixed_error(p, enc1, enc2);
13563 int func,
int term,
int paren,
long *nest,
13567 bool erred =
false;
13569 #define mixed_error(enc1, enc2) \
13570 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
13571 #define mixed_escape(beg, enc1, enc2) \
13572 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
13574 while ((c = nextc(p)) != -1) {
13576 parser_update_heredoc_indent(p, c);
13579 if (paren && c == paren) {
13582 else if (c ==
term) {
13583 if (!nest || !*nest) {
13591 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
13596 else if (c ==
'\\') {
13628 if (c == -1)
return -1;
13634 if (c ==
term && !simple_re_meta(c)) {
13639 if ((c = tokadd_escape(p,
enc)) < 0)
13641 if (*
enc && *
enc != *encp) {
13649 c = read_escape(p, 0,
enc);
13654 else if (c !=
term && !(paren && c == paren)) {
13661 else if (!parser_isascii(p)) {
13666 else if (*
enc != *encp) {
13670 if (tokadd_mbchar(p, c) == -1)
return -1;
13681 else if (*
enc != *encp) {
13700 #define NEW_STRTERM(func, term, paren) \
13701 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
13708 if (!ripper_is_node_yylval(content))
13709 content = ripper_new_yylval(p, 0, 0, content);
13720 if (
yylval.val != content)
13725 #define flush_string_content(p, enc) ((void)(enc))
13732 #define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
13733 #define SPECIAL_PUNCT(idx) ( \
13734 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
13735 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
13736 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
13737 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
13738 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
13746 #undef SPECIAL_PUNCT
13759 if ((c = *
ptr) ==
'-') {
13763 else if (is_global_name_punct(c) ||
ISDIGIT(c)) {
13768 if ((c = *
ptr) ==
'@') {
13785 #define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
13786 #define IS_END() IS_lex_state(EXPR_END_ANY)
13787 #define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
13788 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
13789 #define IS_LABEL_POSSIBLE() (\
13790 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
13792 #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
13793 #define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
13833 do {c = nextc(p);}
while (
ISSPACE(c));
13847 return parser_string_term(p, func);
13856 int t = parser_peek_variable_name(p);
13862 if (tokadd_string(p, func,
term, paren, "e->
u0.
nest,
13863 &
enc, &base_enc) == -1) {
13866 # define unterminated_literal(mesg) yyerror0(mesg)
13868 # define unterminated_literal(mesg) compile_error(p, mesg)
13903 int c = nextc(p),
term, func = 0, quote = 0;
13912 else if (c ==
'~') {
13932 while ((c = nextc(p)) !=
term) {
13933 if (c == -1 || c ==
'\r' || c ==
'\n') {
13934 yyerror(
NULL, p,
"unterminated here document identifier");
13941 if (!parser_is_identchar(p)) {
13944 pushback(p, indent > 0 ?
'~' :
'-');
13950 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
13951 if (
n < 0)
return 0;
13953 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
13960 yyerror(
NULL, p,
"too long here document identifier");
13970 here->
quote = quote;
13998 dedent_string(
VALUE string,
int width)
14005 for (
i = 0;
i <
len && col < width;
i++) {
14006 if (
str[
i] ==
' ') {
14009 else if (
str[
i] ==
'\t') {
14011 if (
n > width)
break;
14032 NODE *node, *str_node, *prev_node;
14034 VALUE prev_lit = 0;
14036 if (indent <= 0)
return root;
14038 if (!root)
return root;
14040 prev_node = node = str_node = root;
14044 VALUE lit = str_node->nd_lit;
14046 dedent_string(lit, indent);
14051 else if (!literal_concat0(p, prev_lit, lit)) {
14055 NODE *end = node->nd_end;
14056 node = prev_node->nd_next = node->nd_next;
14062 node->nd_end = end;
14067 while ((node = (prev_node = node)->
nd_next) != 0) {
14070 if ((str_node = node->nd_head) != 0) {
14086 if (indent <= 0)
return array;
14088 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
14108 col = dedent_string(
input, wid);
14114 whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
14123 if (
n < 0)
return FALSE;
14124 if (
n > 0 &&
ptr[
len] !=
'\n') {
14139 case '\0':
case '\004':
case '\032':
return 1;
14144 #define NUM_SUFFIX_R (1<<0)
14145 #define NUM_SUFFIX_I (1<<1)
14146 #define NUM_SUFFIX_ALL 3
14152 const char *lastp = p->
lex.
pcur;
14154 while ((c = nextc(p)) != -1) {
14199 return set_number_literal(p,
v,
type, suffix);
14216 #define dispatch_heredoc_end(p) ((void)0)
14222 int c, func, indent = 0;
14223 const char *eos, *
ptr, *ptr_end;
14234 if ((c = nextc(p)) == -1) {
14258 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
14276 else if (whole_match_p(p, eos,
len, indent)) {
14290 if (ptr_end >
ptr) {
14291 switch (ptr_end[-1]) {
14293 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
14304 while (
ptr +
i < ptr_end && parser_update_heredoc_indent(p,
ptr[
i]))
14318 if (nextc(p) == -1) {
14324 }
while (!whole_match_p(p, eos,
len, indent));
14330 int t = parser_peek_variable_name(p);
14344 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
14360 tokadd(p, nextc(p));
14366 if ((c = nextc(p)) == -1)
goto error;
14367 }
while (!whole_match_p(p, eos,
len, indent));
14391 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
14401 switch (id_type(lhs)) {
14406 yyerror0(
"formal argument cannot be a constant");
14409 yyerror0(
"formal argument cannot be an instance variable");
14412 yyerror0(
"formal argument cannot be a global variable");
14415 yyerror0(
"formal argument cannot be a class variable");
14418 yyerror0(
"formal argument must be local variable");
14422 lhs = dispatch1(param_error, lhs);
14427 shadowing_lvar(p, lhs);
14434 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
14443 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
14447 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
14483 for (
i = 0;
i <
n; ++
i) {
14495 while (
ptr < ptr_end) {
14506 magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
14508 if (!comment_at_top(p)) {
14511 parser_set_encode(p, val);
14518 case 't':
case 'T':
14523 case 'f':
case 'F':
14534 parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
14536 int b = parser_get_bool(p,
name, val);
14541 parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
14550 b = parser_get_bool(p,
name, val);
14559 # if WARN_PAST_SCOPE
14561 parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
14563 int b = parser_get_bool(p,
name, val);
14564 if (b >= 0) p->past_scope_enabled = b;
14575 {
"coding", magic_comment_encoding, parser_encode_length},
14576 {
"encoding", magic_comment_encoding, parser_encode_length},
14577 {
"frozen_string_literal", parser_set_compile_option_flag},
14578 {
"warn_indent", parser_set_token_info},
14579 # if WARN_PAST_SCOPE
14580 {
"warn_past_scope", parser_set_past_scope},
14584 static const char *
14585 magic_comment_marker(
const char *
str,
long len)
14592 if (
str[
i-1] ==
'*' &&
str[
i-2] ==
'-') {
14593 return str +
i + 1;
14598 if (
i + 1 >=
len)
return 0;
14599 if (
str[
i+1] !=
'-') {
14602 else if (
str[
i-1] !=
'-') {
14606 return str +
i + 2;
14622 const char *beg, *end, *vbeg, *vend;
14623 #define str_copy(_s, _p, _n) ((_s) \
14624 ? (void)(rb_str_resize((_s), (_n)), \
14625 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
14626 : (void)((_s) = STR_NEW((_p), (_n))))
14629 if (!!(beg = magic_comment_marker(
str,
len))) {
14630 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
14634 len = end - beg - 3;
14646 case '\'':
case '"':
case ':':
case ';':
14653 case '\'':
case '"':
case ':':
case ';':
14664 if (!indicator)
return FALSE;
14672 if (*
str ==
'\\') {
14698 for (
i = 0;
i <
n; ++
i) {
14699 if (s[
i] ==
'-') s[
i] =
'_';
14711 }
while (++mc < magic_comments +
numberof(magic_comments));
14722 set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
14725 const char *beg =
str;
14729 if (send -
str <= 6)
return;
14731 case 'C':
case 'c':
str += 6;
continue;
14732 case 'O':
case 'o':
str += 5;
continue;
14733 case 'D':
case 'd':
str += 4;
continue;
14734 case 'I':
case 'i':
str += 3;
continue;
14735 case 'N':
case 'n':
str += 2;
continue;
14736 case 'G':
case 'g':
str += 1;
continue;
14737 case '=':
case ':':
14750 if (++
str >= send)
return;
14753 if (*
str !=
'=' && *
str !=
':')
return;
14759 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
14775 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
14776 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
14791 #define ambiguous_operator(tok, op, syn) ( \
14792 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
14793 rb_warning0("even though it seems like "syn""))
14795 #define ambiguous_operator(tok, op, syn) \
14796 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
14798 #define warn_balanced(tok, op, syn) ((void) \
14799 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
14800 space_seen && !ISSPACE(c) && \
14801 (ambiguous_operator(tok, op, syn), 0)), \
14802 (enum yytokentype)(tok))
14808 char *point = &
str[seen_point];
14809 size_t fraclen =
len-seen_point-1;
14810 memmove(point, point+1, fraclen+1);
14818 yyerror0(
"numeric literal without digits");
14819 if (
peek(p,
'_')) nextc(p);
14821 return set_integer_literal(p,
INT2FIX(0), 0);
14827 int is_float, seen_point, seen_e, nondigit;
14830 is_float = seen_point = seen_e = nondigit = 0;
14833 if (c ==
'-' || c ==
'+') {
14840 if (c ==
'x' || c ==
'X') {
14846 if (nondigit)
break;
14853 }
while ((c = nextc(p)) != -1);
14857 if (
toklen(p) == start) {
14858 return no_digits(p);
14860 else if (nondigit)
goto trailing_uc;
14864 if (c ==
'b' || c ==
'B') {
14867 if (c ==
'0' || c ==
'1') {
14870 if (nondigit)
break;
14874 if (c !=
'0' && c !=
'1')
break;
14877 }
while ((c = nextc(p)) != -1);
14881 if (
toklen(p) == start) {
14882 return no_digits(p);
14884 else if (nondigit)
goto trailing_uc;
14888 if (c ==
'd' || c ==
'D') {
14894 if (nondigit)
break;
14901 }
while ((c = nextc(p)) != -1);
14905 if (
toklen(p) == start) {
14906 return no_digits(p);
14908 else if (nondigit)
goto trailing_uc;
14916 if (c ==
'o' || c ==
'O') {
14919 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
14920 return no_digits(p);
14923 if (c >=
'0' && c <=
'7') {
14928 if (nondigit)
break;
14932 if (c < '0' || c >
'9')
break;
14933 if (c >
'7')
goto invalid_octal;
14936 }
while ((c = nextc(p)) != -1);
14937 if (
toklen(p) > start) {
14940 if (nondigit)
goto trailing_uc;
14949 if (c >
'7' && c <=
'9') {
14953 else if (c ==
'.' || c ==
'e' || c ==
'E') {
14959 return set_integer_literal(p,
INT2FIX(0), suffix);
14965 case '0':
case '1':
case '2':
case '3':
case '4':
14966 case '5':
case '6':
case '7':
case '8':
case '9':
14972 if (nondigit)
goto trailing_uc;
14973 if (seen_point || seen_e) {
14978 if (c0 == -1 || !
ISDIGIT(c0)) {
15003 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
15008 tokadd(p, nondigit);
15012 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
15016 if (nondigit)
goto decode_num;
15033 parser_show_error_line(p, &loc);
15043 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
15053 return set_number_literal(p,
v,
type, suffix);
15077 int c2 = escaped_control_code(c);
15089 if (!parser_isascii(p)) {
15090 if (tokadd_mbchar(p, c) == -1)
return 0;
15095 const char *start = p->
lex.
pcur - 1, *
ptr = start;
15097 int n = parser_precise_mbclen(p,
ptr);
15098 if (
n < 0)
return -1;
15101 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
15102 " a conditional operator, put a space after `?'",
15107 else if (c ==
'\\') {
15108 if (
peek(p,
'u')) {
15111 tokadd_utf8(p, &enc, -1, 0, 0);
15115 if (tokadd_mbchar(p, c) == -1)
return 0;
15118 c = read_escape(p, 0, &enc);
15136 const char *ptok = p->
lex.
pcur;
15144 if (c == -1 || !
ISALNUM(c)) {
15151 yyerror0(
"unknown type of %string");
15155 if (c == -1 ||
term == -1) {
15156 compile_error(p,
"unterminated quoted string meets end of file");
15206 yyerror0(
"unknown type of %string");
15210 if ((c = nextc(p)) ==
'=') {
15227 if (tokadd_mbchar(p, c) == -1)
return -1;
15229 }
while (parser_is_identchar(p));
15250 const unsigned long nth_ref_max =
15251 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
15255 if (overflow ||
n > nth_ref_max) {
15278 if (parser_is_identchar(p)) {
15310 if (parser_is_identchar(p)) {
15311 if (tokadd_mbchar(p, c) == -1)
return 0;
15334 case '1':
case '2':
case '3':
15335 case '4':
case '5':
case '6':
15336 case '7':
case '8':
case '9':
15341 }
while (c != -1 &&
ISDIGIT(c));
15349 if (!parser_is_identchar(p)) {
15352 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
15356 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
15358 parser_show_error_line(p, &loc);
15367 if (tokadd_ident(p, c))
return 0;
15369 tokenize_ident(p, last_state);
15377 if (
n < 0)
return false;
15390 while (
n > args->
pos) {
15402 register int c = nextc(p);
15414 if (c == -1 || !parser_is_identchar(p)) {
15417 if (result ==
tIVAR) {
15418 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
15421 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
15423 parser_show_error_line(p, &loc);
15431 if (result ==
tIVAR) {
15432 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
15435 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
15437 parser_show_error_line(p, &loc);
15443 if (tokadd_ident(p, c))
return 0;
15444 tokenize_ident(p, last_state);
15458 if (tokadd_mbchar(p, c) == -1)
return 0;
15460 }
while (parser_is_identchar(p));
15461 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
15512 if (kw->
id[0] != kw->
id[1])
15527 else if (p->
lex.
state == EXPR_FNAME) {
15534 ident = tokenize_ident(p, last_state);
15538 lvar_defined(p, ident)) {
15548 int space_seen = 0;
15552 int fallthru =
FALSE;
15572 switch (c = nextc(p)) {
15580 case ' ':
case '\t':
case '\f':
case '\r':
15584 while ((c = nextc(p))) {
15586 case ' ':
case '\t':
case '\f':
case '\r':
15603 if (comment_at_top(p)) {
15613 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
15621 goto normal_newline;
15626 switch (c = nextc(p)) {
15627 case ' ':
case '\t':
case '\f':
case '\r':
15638 if (
peek(p,
'.') == (c ==
'&')) {
15660 goto normal_newline;
15669 if ((c = nextc(p)) ==
'*') {
15670 if ((c = nextc(p)) ==
'=') {
15677 rb_warning0(
"`**' interpreted as argument prefix");
15695 rb_warning0(
"`*' interpreted as argument prefix");
15731 if (word_match_p(p,
"begin", 5)) {
15732 int first_p =
TRUE;
15747 if (c ==
'=' && word_match_p(p,
"end", 3)) {
15759 if ((c = nextc(p)) ==
'=') {
15760 if ((c = nextc(p)) ==
'=') {
15769 else if (c ==
'>') {
15781 int token = heredoc_identifier(p);
15793 if ((c = nextc(p)) ==
'>') {
15800 if ((c = nextc(p)) ==
'=') {
15813 if ((c = nextc(p)) ==
'=') {
15817 if ((c = nextc(p)) ==
'=') {
15856 return parse_qmark(p, space_seen);
15859 if ((c = nextc(p)) ==
'&') {
15861 if ((c = nextc(p)) ==
'=') {
15869 else if (c ==
'=') {
15874 else if (c ==
'.') {
15883 !(c ==
'\'' || c ==
'"' ||
15885 rb_warning0(
"`&' interpreted as argument prefix");
15899 if ((c = nextc(p)) ==
'|') {
15901 if ((c = nextc(p)) ==
'=') {
15942 return parse_numeric(p,
'+');
15984 if ((c = nextc(p)) ==
'.') {
15985 if ((c = nextc(p)) ==
'.') {
15987 rb_warn0(
"... at EOL, should be parenthesized?");
15997 parse_numeric(p,
'.');
15999 yyerror0(
"unexpected fraction part after numeric literal");
16002 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
16013 case '0':
case '1':
case '2':
case '3':
case '4':
16014 case '5':
case '6':
case '7':
case '8':
case '9':
16015 return parse_numeric(p, c);
16076 if ((c = nextc(p)) ==
'=') {
16083 arg_ambiguous(p,
'/');
16091 if ((c = nextc(p)) ==
'=') {
16111 if ((c = nextc(p)) !=
'@') {
16125 else if (!space_seen) {
16132 rb_warning0(
"parentheses after method name is interpreted as "
16133 "an argument list, not a decomposed argument");
16144 if ((c = nextc(p)) ==
']') {
16146 if ((c = nextc(p)) ==
'=') {
16198 if (c ==
' ')
return tSP;
16204 return parse_percent(p, space_seen, last_state);
16207 return parse_gvar(p, last_state);
16210 return parse_atmark(p, last_state);
16213 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
16228 if (!parser_is_identchar(p)) {
16229 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
16238 return parse_ident(p, c, cmd_state);
16248 t = parser_yylex(p);
16262 #define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
16271 nd_set_loc(
n, loc);
16286 nodetype(
NODE *node)
16292 nodeline(
NODE *node)
16298 newline_node(
NODE *node)
16301 node = remove_begin(node);
16330 NODE *end, *
h = head, *nd;
16332 if (tail == 0)
return head;
16334 if (
h == 0)
return tail;
16342 parser_warning(p,
h,
"unused literal ignored");
16362 parser_warning(p, tail,
"statement not reached");
16372 tail->nd_end = tail;
16374 end->nd_next = tail;
16375 h->nd_end = tail->nd_end;
16387 if (
list->nd_next) {
16394 list->nd_alen += 1;
16396 list->nd_next->nd_end =
last->nd_next;
16405 list_concat(
NODE *head,
NODE *tail)
16409 if (head->nd_next) {
16410 last = head->nd_next->nd_end;
16416 head->nd_alen += tail->nd_alen;
16417 last->nd_next = tail;
16418 if (tail->nd_next) {
16419 head->nd_next->nd_end = tail->nd_next->nd_end;
16422 head->nd_next->nd_end = tail;
16433 if (
NIL_P(tail))
return 1;
16435 compile_error(p,
"string literal encodings differ (%s / %s)",
16454 if (!head)
return tail;
16455 if (!tail)
return head;
16461 head = list_append(p, node, head);
16469 return list_append(p, head, tail);
16476 if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16479 lit = headlast->nd_lit;
16482 lit = head->nd_lit;
16485 if (!literal_concat0(p, lit, tail->nd_lit)) {
16487 rb_discard_node(p, head);
16488 rb_discard_node(p, tail);
16491 rb_discard_node(p, tail);
16494 list_append(p, head, tail);
16500 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
16502 tail->nd_lit = head->nd_lit;
16503 rb_discard_node(p, head);
16506 else if (
NIL_P(tail->nd_lit)) {
16508 head->nd_alen += tail->nd_alen - 1;
16509 head->nd_next->nd_end->nd_next = tail->nd_next;
16510 head->nd_next->nd_end = tail->nd_next->nd_end;
16511 rb_discard_node(p, tail);
16513 else if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16515 lit = headlast->nd_lit;
16516 if (!literal_concat0(p, lit, tail->nd_lit))
16518 tail->nd_lit =
Qnil;
16531 list_append(p, head, tail);
16543 node = list_append(p, dstr, node);
16596 if (block) block_dup_check(p, args, block);
16597 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
16598 if (block) ret = method_add_block(p, ret, block, loc);
16603 #define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
16608 int line = op_loc->beg_pos.lineno;
16623 const VALUE lit =
n->nd_lit;
16625 match->nd_args = reg_named_capture_assign(p, lit, loc);
16650 # if WARN_PAST_SCOPE
16656 if (vtable_included(past,
id))
return 1;
16665 #define WARN_LOCATION(type) do { \
16666 if (p->warn_location) { \
16668 VALUE file = rb_source_location(&line); \
16669 rb_warn3(type" in eval may not return location in binding;" \
16670 " use Binding#source_location instead\n" \
16671 "%"PRIsWARN":%d: warning: in `%"PRIsWARN"'", \
16672 file, WARN_I(line), rb_id2str(rb_frame_this_func())); \
16685 "%s:%d: %s block here",
16687 outer ?
"outer" :
"inner");
16688 parser_show_error_line(p, &
used->nd_loc);
16729 switch (id_type(
id)) {
16731 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
16741 if (local_id_ref(p,
id, &vidp)) {
16752 if (numparam_nested_p(p))
return 0;
16758 # if WARN_PAST_SCOPE
16779 opt_arg_append(
NODE *opt_list,
NODE *opt)
16781 NODE *opts = opt_list;
16784 while (opts->nd_next) {
16785 opts = opts->nd_next;
16788 opts->nd_next = opt;
16794 kwd_append(
NODE *kwlist,
NODE *kw)
16797 NODE *kws = kwlist;
16799 while (kws->nd_next) {
16800 kws = kws->nd_next;
16824 return list_append(p, symbols, symbol);
16843 nd_set_loc(node, loc);
16854 nd_set_loc(node, loc);
16856 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
16860 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
16862 if (!literal_concat0(p, lit, tail)) {
16867 rb_discard_node(p,
list->nd_head);
16868 rb_discard_node(p,
list);
16879 if (!node->nd_next) {
16911 nd_set_loc(node, loc);
16915 nd_set_loc(node, loc);
16932 if (lit ==
Qundef)
return;
16942 if (!
NIL_P(line)) {
16943 rb_warning1(
"duplicated `when' clause with line %d is ignored",
16960 if (dyna_in_block(p)) {
16963 if (local_id(p,
id))
return 1;
16977 if (ripper_is_node_yylval(re)) {
16979 re =
RNODE(re)->nd_rval;
16981 if (ripper_is_node_yylval(opt)) {
16982 options = (
int)
RNODE(opt)->nd_tag;
16983 opt =
RNODE(opt)->nd_rval;
16988 return dispatch2(regexp_literal, re, opt);
16994 static const char rb_parser_lex_state_names[][8] = {
16995 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
16996 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
16997 "LABEL",
"LABELED",
"FITEM",
17004 unsigned int mask = 1;
17005 static const char none[] =
"NONE";
17008 if ((
unsigned)state &
mask) {
17042 append_lex_state_name(from, mesg);
17044 append_lex_state_name(to, mesg);
17071 const char *
name,
int line)
17074 append_bitstack_value(stack, mesg);
17092 append_lex_state_name(p->
lex.
state, mesg);
17113 yylloc->beg_pos.lineno = sourceline;
17114 yylloc->beg_pos.column = beg_pos;
17115 yylloc->end_pos.lineno = sourceline;
17116 yylloc->end_pos.column = end_pos;
17152 v = valp->
node->nd_rval;
17159 v = valp->
node->nd_lit;
17187 if (!
id)
return -1;
17190 *
err =
"Can't change the value of self";
17193 *
err =
"Can't assign to nil";
17196 *
err =
"Can't assign to true";
17199 *
err =
"Can't assign to false";
17202 *
err =
"Can't assign to __FILE__";
17205 *
err =
"Can't assign to __LINE__";
17208 *
err =
"Can't assign to __ENCODING__";
17211 switch (id_type(
id)) {
17213 if (dyna_in_block(p)) {
17226 if (!local_id(p,
id)) local_var(p,
id);
17234 *
err =
"dynamic constant assignment";
17247 const char *
err = 0;
17265 const char *
err = 0;
17267 if (
err) lhs = assign_error(p, lhs);
17273 is_private_local_id(
ID name)
17286 if (is_private_local_id(
name))
return 1;
17287 if (dyna_in_block(p)) {
17288 if (dvar_curr(p,
name)) {
17289 yyerror0(
"duplicated argument name");
17291 else if (dvar_defined(p,
name) || local_id(p,
name)) {
17300 if (local_id(p,
name)) {
17301 yyerror0(
"duplicated argument name");
17310 shadowing_lvar_0(p,
name);
17323 if (!shadowing_lvar_0(p,
name))
return;
17357 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
17368 return list_append(p, node1, node2);
17370 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
17374 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
17380 node1->nd_body = list_append(p, node1->nd_body, node2);
17390 if (!node2)
return node1;
17393 if (node1->nd_head)
17394 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
17396 node1->nd_head =
NEW_LIST(node2, loc);
17400 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
17406 node1->nd_body = list_concat(node1->nd_body, node2);
17416 if ((n1 = splat_array(
args)) != 0) {
17417 return list_append(p, n1, last_arg);
17419 return arg_append(p,
args, last_arg, loc);
17427 return list_concat(n1, rest_arg);
17429 return arg_concat(p,
args, rest_arg, loc);
17433 splat_array(
NODE* node)
17447 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
17453 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
17459 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
17460 mark_lvar_used(p, rhs->nd_head);
17470 if (!lhs)
return 0;
17481 lhs->nd_value = rhs;
17482 nd_set_loc(lhs, loc);
17486 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
17487 nd_set_loc(lhs, loc);
17501 NODE *void_node = 0, *vn;
17513 return void_node ? void_node : node;
17520 if (node->nd_body->nd_body) {
17524 return void_node ? void_node : node;
17527 while (node->nd_next) {
17528 node = node->nd_next;
17530 node = node->nd_head;
17534 node = node->nd_body;
17539 if (!node->nd_body) {
17542 else if (!node->nd_else) {
17545 vn = value_expr_check(p, node->nd_body);
17546 if (!vn)
return NULL;
17547 if (!void_node) void_node = vn;
17548 node = node->nd_else;
17553 node = node->nd_1st;
17560 mark_lvar_used(p, node);
17574 NODE *void_node = value_expr_check(p, node);
17585 const char *useless = 0;
17592 switch (node->nd_mid) {
17623 useless =
"a variable";
17626 useless =
"a constant";
17632 useless =
"a literal";
17657 useless =
"defined?";
17669 NODE *
const n = node;
17671 if (!node)
return n;
17674 while (node->nd_next) {
17675 void_expr(p, node->nd_head);
17676 node = node->nd_next;
17682 remove_begin(
NODE *node)
17684 NODE **
n = &node, *n1 = node;
17686 *
n = n1 = n1->nd_body;
17692 remove_begin_all(
NODE *node)
17694 NODE **
n = &node, *n1 = node;
17696 *
n = n1 = n1->nd_body;
17704 NODE *node = *body;
17710 #define subnodes(n1, n2) \
17711 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
17712 (!node->n2) ? (body = &node->n1, 1) : \
17713 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
17723 *body = node = node->nd_stts;
17727 *body = node = node->nd_body;
17731 body = &node->nd_end->nd_head;
17738 body = &node->nd_body;
17747 if (node->nd_else) {
17748 body = &node->nd_resq;
17764 is_static_content(
NODE *node)
17766 if (!node)
return 1;
17769 if (!(node = node->nd_head))
break;
17772 if (!is_static_content(node->nd_head))
return 0;
17773 }
while ((node = node->nd_next) != 0);
17803 if (!node->nd_value)
return 1;
17804 if (is_static_content(node->nd_value)) {
17806 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
17817 #define SWITCH_BY_COND_TYPE(t, w, arg) \
17819 case COND_IN_OP: break; \
17820 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
17821 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
17831 if (node == 0)
return 0;
17836 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
17845 if (node == 0)
return 0;
17847 assign_in_cond(p, node);
17900 if (node == 0)
return 0;
17907 if (node == 0)
return 0;
17914 if (!
cc)
return right;
17916 return newline_node(
NEW_IF(
cc, left, right, loc));
17922 if (!
cc)
return right;
17924 return newline_node(
NEW_UNLESS(
cc, left, right, loc));
17935 NODE *node = left, *second;
17940 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
17961 no_blockarg(p, node);
17963 if (node->nd_next == 0) {
17964 node = node->nd_head;
17977 if (node) no_blockarg(p, node);
18021 arg_blk_pass(
NODE *node1,
NODE *node2)
18024 if (!node1)
return node2;
18025 node2->nd_head = node1;
18036 if (
args->pre_args_num)
return false;
18037 if (
args->post_args_num)
return false;
18038 if (
args->rest_arg)
return false;
18039 if (
args->opt_args)
return false;
18040 if (
args->block_arg)
return false;
18041 if (
args->kw_args)
return false;
18042 if (
args->kw_rest_arg)
return false;
18053 args->
pre_init = pre_args ? pre_args->nd_next : 0;
18056 args->
post_init = post_args ? post_args->nd_next : 0;
18066 nd_set_loc(tail, loc);
18078 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
18079 args->
imemo = tmpbuf;
18094 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
18096 NODE *kwn = kw_args;
18098 vtable_pop(vtargs, !!block + !!kw_rest_arg);
18099 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
18103 --required_kw_vars;
18104 kwn = kwn->nd_next;
18107 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
18108 ID vid = kwn->nd_body->nd_vid;
18110 *required_kw_vars++ = vid;
18117 arg_var(p, kw_bits);
18118 if (kw_rest_arg) arg_var(p, kw_rest_arg);
18119 if (block) arg_var(p, block);
18124 else if (kw_rest_arg ==
idNil) {
18127 else if (kw_rest_arg) {
18141 args = new_args_tail(p, 0, 0, 0, 0);
18142 nd_set_loc(args, &loc);
18144 args->nd_ainfo->pre_args_num = max_numparam;
18154 aryptn->nd_pconst = constant;
18175 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
18177 apinfo->
imemo = tmpbuf;
18203 hshptn->nd_pconst = constant;
18211 NODE *node, *kw_rest_arg_node;
18213 if (kw_rest_arg ==
idNil) {
18216 else if (kw_rest_arg) {
18217 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
18220 kw_rest_arg_node =
NULL;
18235 rb_warn0L(
nd_line(node),
"Pattern matching is experimental, and the behavior may change in future versions of Ruby!");
18251 nd_set_loc(node, loc);
18254 lit = node->nd_lit;
18257 nd_set_loc(node, loc);
18272 node->nd_next->nd_end = node->nd_next;
18273 node->nd_next->nd_next = 0;
18275 list_concat(*result, node);
18287 while (hash && hash->nd_head && hash->nd_next) {
18288 NODE *head = hash->nd_head;
18289 NODE *value = hash->nd_next;
18290 NODE *next = value->nd_next;
18294 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
18296 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
18297 head->nd_lit,
nd_line(head));
18298 head = ((
NODE *)data)->nd_next;
18299 head->nd_head = block_append(p, head->nd_head, value->nd_head);
18309 if (!result) result = hash;
18310 else list_concat(result, hash);
18319 if (hash) hash = remove_duplicate_keys(p, hash);
18327 if (is_private_local_id(
id)) {
18331 yyerror1(loc,
"duplicated variable name");
18345 yyerror1(loc,
"duplicated key name");
18366 ID vid = lhs->nd_vid;
18369 lhs->nd_value = rhs;
18370 nd_set_loc(lhs, loc);
18373 switch (id_type(vid)) {
18377 asgn->nd_aid = vid;
18381 else if (op ==
tANDOP) {
18382 lhs->nd_value = rhs;
18383 nd_set_loc(lhs, loc);
18389 nd_set_loc(asgn, loc);
18409 args = arg_concat(p, args, rhs, loc);
18446 yyerror1(loc,
"dynamic constant assignment");
18455 path = dispatch1(assign_error,
path);
18464 a = dispatch1(assign_error, a);
18472 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
18480 NODE *result = head;
18482 NODE *tmp = rescue_else ? rescue_else : rescue;
18485 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
18488 else if (rescue_else) {
18489 result = block_append(p, result, rescue_else);
18494 fixpos(result, head);
18504 if (!local->
used)
return;
18512 for (
int i = 0;
i <
cnt; ++
i) {
18514 if (is_private_local_id(
v[
i]))
continue;
18533 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
18540 # if WARN_PAST_SCOPE
18553 warn_unused_var(p, p->
lvtbl);
18556 # if WARN_PAST_SCOPE
18557 while (p->
lvtbl->past) {
18575 int cnt_args = vtable_size(p->
lvtbl->
args);
18576 int cnt_vars = vtable_size(p->
lvtbl->
vars);
18577 int cnt = cnt_args + cnt_vars;
18582 if (
cnt <= 0)
return 0;
18585 rb_imemo_tmpbuf_set_ptr(
tbl,
buf);
18588 for (
i = 0, j = cnt_args+1;
i < cnt_vars; ++
i) {
18590 if (!vtable_included(p->
lvtbl->
args,
id)) {
18596 rb_imemo_tmpbuf_set_ptr(
tbl,
buf);
18622 rb_warn1(
"`_%d' is reserved for numbered parameter; consider another name",
18629 numparam_name(p,
id);
18636 numparam_name(p,
id);
18655 if (used) used = used->
prev;
18661 else if (vtable_included(args,
id)) {
18665 int i = vtable_included(
vars,
id);
18666 if (
i && used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18674 return local_id_ref(p,
id,
NULL);
18719 static const struct vtable *
18733 struct vtable *tmp = *vtblp;
18734 *vtblp = tmp->
prev;
18735 # if WARN_PAST_SCOPE
18736 if (p->past_scope_enabled) {
18738 p->
lvtbl->past = tmp;
18751 warn_unused_var(p, p->
lvtbl);
18790 if (vtable_included(args,
id)) {
18793 if ((
i = vtable_included(
vars,
id)) != 0) {
18794 if (used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18799 if (!vidrefp) used = 0;
18800 if (used) used = used->
prev;
18813 return dvar_defined_ref(p,
id,
NULL);
18819 return (vtable_included(p->
lvtbl->
args,
id) ||
18827 "regexp encoding option '%c' differs from source encoding '%s'",
18873 if (c) reg_fragment_enc_error(p,
str, c);
18880 reg_fragment_setenc(p,
str, options);
18899 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
18905 const char *s = (
const char *)
name;
18917 succ =
arg->succ_block;
18919 succ = block_append(p, succ, node);
18920 arg->succ_block = succ;
18931 arg.succ_block = 0;
18935 if (!
arg.succ_block)
return 0;
18936 return arg.succ_block->nd_next;
18942 reg_fragment_setenc(p,
str, options);
18959 re = parser_reg_compile(p,
str, options);
18976 if (c) reg_fragment_enc_error(p,
str, c);
19009 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
19010 const YYLTYPE *
const LOC = &default_location;
19016 node = block_append(p, node, print);
19026 node = block_append(p, split, node);
19031 node = block_append(p, chomp, node);
19051 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
19067 p->delayed.token =
Qnil;
19069 p->parsing_thread =
Qnil;
19079 #define parser_mark ripper_parser_mark
19080 #define parser_free ripper_parser_free
19084 parser_mark(
void *
ptr)
19114 parser_free(
void *
ptr)
19122 for (local = p->
lvtbl; local; local =
prev) {
19138 parser_memsize(
const void *
ptr)
19142 size_t size =
sizeof(*p);
19145 for (local = p->
lvtbl; local; local = local->
prev) {
19146 size +=
sizeof(*local);
19167 #undef rb_reserved_word
19172 return reserved_word(
str,
len);
19180 &parser_data_type, p);
19181 parser_initialize(p);
19198 #define rb_parser_end_seen_p ripper_parser_end_seen_p
19199 #define rb_parser_encoding ripper_parser_encoding
19200 #define rb_parser_get_yydebug ripper_parser_get_yydebug
19201 #define rb_parser_set_yydebug ripper_parser_set_yydebug
19202 #define rb_parser_get_debug_output ripper_parser_get_debug_output
19203 #define rb_parser_set_debug_output ripper_parser_set_debug_output
19204 static VALUE ripper_parser_end_seen_p(
VALUE vparser);
19205 static VALUE ripper_parser_encoding(
VALUE vparser);
19206 static VALUE ripper_parser_get_yydebug(
VALUE self);
19208 static VALUE ripper_parser_get_debug_output(
VALUE self);
19209 static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
19218 ripper_error_p(
VALUE vparser)
19265 rb_parser_get_yydebug(
VALUE self)
19322 #define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
19325 #define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
19326 #define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
19327 (new)->cnt = (cnt), (ptr))
19357 if (
n->ptr ==
ptr) {
19359 if (
n->cnt)
n->cnt =
cnt;
19362 }
while ((
n =
n->next) !=
NULL);
19374 while ((
n = *prev) !=
NULL) {
19375 if (
n->ptr ==
ptr) {
19420 count_char(
const char *
str,
int c)
19423 while (
str[
n] == c) ++
n;
19437 if (*yystr ==
'"') {
19438 size_t yyn = 0, bquote = 0;
19439 const char *yyp = yystr;
19445 bquote = count_char(yyp+1,
'`') + 1;
19446 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
19454 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
19455 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
19461 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
19462 if (yyres)
memcpy(yyres + yyn, yyp, 3);
19467 goto do_not_strip_quotes;
19470 goto do_not_strip_quotes;
19473 if (*++yyp !=
'\\')
19474 goto do_not_strip_quotes;
19490 do_not_strip_quotes: ;
19493 if (!yyres)
return strlen(yystr);
19495 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
19500 #ifdef RIPPER_DEBUG
19505 if (x ==
Qfalse)
return x;
19506 if (x ==
Qtrue)
return x;
19507 if (x ==
Qnil)
return x;
19525 x = ((
NODE *)x)->nd_rval;
19539 #define validate(x) ((x) = get_value(x))
19568 return rb_funcall(p->value, mid, 3, a, b, c);
19578 return rb_funcall(p->value, mid, 4, a, b, c, d);
19589 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
19602 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f, g);
19611 if (
nd_type(nd) != NODE_RIPPER)
return 0;
19616 ripper_get_value(
VALUE v)
19623 return nd->nd_rval;
19651 "gets returned %"PRIsVALUE" (expected String or nil)",
19668 &parser_data_type, p);
19673 #define ripper_initialized_p(r) ((r)->lex.input != 0)
19694 p->
lex.
gets = ripper_lex_io_get;
19697 p->
lex.
gets = ripper_lex_get_generic;
19705 if (
NIL_P(fname)) {
19713 parser_initialize(p);
19723 ripper_parse0(
VALUE parser_v)
19730 ripper_yyparse((
void*)p);
19737 ripper_ensure(
VALUE parser_v)
19742 p->parsing_thread =
Qnil;
19753 ripper_parse(
VALUE self)
19758 if (!ripper_initialized_p(p)) {
19761 if (!
NIL_P(p->parsing_thread)) {
19768 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
19781 ripper_column(
VALUE self)
19787 if (!ripper_initialized_p(p)) {
19790 if (
NIL_P(p->parsing_thread))
return Qnil;
19802 ripper_filename(
VALUE self)
19807 if (!ripper_initialized_p(p)) {
19821 ripper_lineno(
VALUE self)
19826 if (!ripper_initialized_p(p)) {
19829 if (
NIL_P(p->parsing_thread))
return Qnil;
19840 ripper_state(
VALUE self)
19845 if (!ripper_initialized_p(p)) {
19848 if (
NIL_P(p->parsing_thread))
return Qnil;
19859 ripper_token(
VALUE self)
19865 if (!ripper_initialized_p(p)) {
19868 if (
NIL_P(p->parsing_thread))
return Qnil;
19874 #ifdef RIPPER_DEBUG
19909 ripper_init_eventids1();
19910 ripper_init_eventids2();
19922 InitVM_ripper(
void)
19944 #ifdef RIPPER_DEBUG
19955 <% @exprs.each
do |expr, desc| -%>
19959 ripper_init_eventids1_table(Ripper);
19960 ripper_init_eventids2_table(Ripper);